← Back to Main Contributing Guide
TypeScript SDK providing extension system, APIs, and type definitions for all Jan components.
/src/browser- Core APIs (events, extensions, file system)/src/browser/extensions- Built-in extensions (assistant, inference, conversational)/src/types- TypeScript type definitions/src/test- Testing utilities
- Platform Agnostic - Works everywhere (browser, Node.js)
- Extension-Based - New features = new extensions
- Type Everything - TypeScript required
- Event-Driven - Components communicate via events
# Build the SDK
yarn build
# Run tests
yarn test
# Watch mode
yarn test:watch// Emit events
events.emit('model:loaded', { modelId: 'llama-3' })
// Listen for events
events.on('model:loaded', (data) => {
console.log('Model loaded:', data.modelId)
})describe('MyFeature', () => {
it('should do something', () => {
const result = doSomething()
expect(result).toBe('expected')
})
})- Keep it simple
- Use TypeScript fully (no
any) - Write tests for critical features
- Follow existing patterns
- Export new modules in index files
- TypeScript - Type safety
- Rolldown - Bundling
- Vitest - Testing