feat: add ClaudeCodeProvider for subscription users #10
Reference in New Issue
Block a user
Delete Branch "feat/claude-code-provider"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wraps @anthropic-ai/claude-agent-sdk so Claude Pro/Max subscribers (who
do not have a console API key) can use this library by authenticating
through the local
claudeCLI. Subscribers runclaude loginonce andthe provider picks up the credentials automatically.
Provider behavior:
to behave as plain text completion by default. Both knobs are
configurable for agentic use cases.
messages. doComplete() accumulates and returns the final result.
rate_limit, model_not_found, ...) map to AIErrorType variants.
to ANTHROPIC_API_KEY or local subscription credentials. The base
validator is overridden to allow this.
Tradeoffs:
claudeCLI installed and logged in on the host. Thisis not suitable for typical server-side production deployments; it is
the official path for subscription accounts.
--target node so the SDK's Node built-in imports resolve correctly.
Wired into PROVIDER_REGISTRY ('claude-code'), createClaudeCodeProvider,
SUPPORTED_PROVIDERS, and re-exported from the package entry.
Wraps @anthropic-ai/claude-agent-sdk so Claude Pro/Max subscribers (who do not have a console API key) can use this library by authenticating through the local `claude` CLI. Subscribers run `claude login` once and the provider picks up the credentials automatically. Provider behavior: - query() is invoked in single-turn mode (maxTurns: 1, allowedTools: []) to behave as plain text completion by default. Both knobs are configurable for agentic use cases. - Conversation history is flattened to a single prompt with role labels. - doStream() emits text deltas as the SDK yields successive assistant messages. doComplete() accumulates and returns the final result. - SDKAssistantMessageError codes (authentication_failed, billing_error, rate_limit, model_not_found, ...) map to AIErrorType variants. - ClaudeCodeConfig.apiKey is optional — when omitted the SDK falls back to ANTHROPIC_API_KEY or local subscription credentials. The base validator is overridden to allow this. Tradeoffs: - Requires the `claude` CLI installed and logged in on the host. This is not suitable for typical server-side production deployments; it is the official path for subscription accounts. - Higher latency (CLI process spawn) than the direct Anthropic API. - The agent SDK is heavy. Bundle grows ~750KB; bun build now uses --target node so the SDK's Node built-in imports resolve correctly. Wired into PROVIDER_REGISTRY ('claude-code'), createClaudeCodeProvider, SUPPORTED_PROVIDERS, and re-exported from the package entry.