| name | add-provider |
| description | Scaffold a new LLM provider package for spaceduck |
Add Provider
Scaffolds a new LLM provider adapter under packages/providers/<name>/.
Steps
- Ask for the provider name (e.g., "openai", "ollama", "anthropic")
- Create the directory structure:
packages/providers/<name>/
package.json # @spaceduck/provider-<name>, depends on @spaceduck/core
src/
<name>.ts # <Name>Provider implements Provider interface
index.ts # barrel export
__tests__/
<name>.test.ts # unit tests with mocked SDK
- The provider must implement the
Provider interface from @spaceduck/core:
import type { Provider, Message, ProviderOptions } from "@spaceduck/core";
export class <Name>Provider implements Provider {
readonly name = "<name>";
async *chat(messages: Message[], options?: ProviderOptions): AsyncIterable<string> {
}
}
- Add the provider to
@spaceduck/gateway by importing and wiring it in the registry
- Map provider-specific exceptions to
ProviderErrorCode values
- Write unit tests using
spyOn to mock the SDK client