Contributing
Overview
Repository layout, commands, and where to find design notes.
pnpm install
pnpm test # offline tests against local fake servers
pnpm check-types
pnpm lint
pnpm buildRepository layout
packages/core @swungstudent/voice — the shared interface
packages/test-kit fake servers and shared contract assertions
packages/internal helpers shared between providers, not published
providers/* one package per provider
examples/* runnable programs, typechecked in CI
apps/web this site
docs/ design notesProvider package structure
Every provider package uses the same file layout, one file per concern:
src/
├── config.ts API key, defaults, and option resolution
├── format.ts AudioFormat translation
├── tts.ts speak() and speakStream()
├── tts-session.ts openTTSSession()
├── stt.ts transcribe()
├── stt-session.ts openSTTSession()
├── provider.ts the VoiceProvider implementation
└── index.ts public exportsprovider.ts should contain little more than delegation to the other modules.
Design notes
Two documents in the repository record how the core types were designed. They describe the reasoning behind decisions rather than how to use the SDK: