ti-code-providers
v0.1.14
Published
Effect v4 native provider implementations for ti
Maintainers
Readme
ti-code-providers
Effect-native provider adapters and opt-in provider plugins for ti-code.
The current package includes OpenAI streaming with an opt-in official
@effect/ai-openai Responses transport, OS-backed API-key storage with explicit file fallback, a local Obvious Responses SSE
adapter with model discovery, an experimental OpenAI Responses WebSocket
transport, an OpenCode Zen-only adapter and model helper, an opt-in Exa search
client and plugin factory, ChatGPT auth/model helpers with Codex Responses WebSocket
as the default transport, and the OpenAI Codex OAuth helper used by the CLI.
The official Effect transport is opt-in while the existing transports remain
available for compatibility. The Anthropic adapter remains deferred while the first vertical slice
stays focused on the OpenAI/ChatGPT path.
Exports
ti-code-providers- main provider surface.ti-code-providers/openai- OpenAI adapter with Chat Completions SSE by default plus optional Responses SSE viaTI_OPENAI_TRANSPORT=responses-sse, Responses WebSocket viaTI_OPENAI_TRANSPORT=responses-websocket, or official Effect Responses viaTI_OPENAI_TRANSPORT=official-responses.ti-code-providers/obvious- local Obvious Responses SSE adapter and/modelscatalog reader, defaulting to the Obvious default model. Runtime config prefersOBVIOUS_*variables but also accepts direct-mode aliases used by external launchers (CODEX_DIRECT_*,OBDEX_DIRECT_*, andOPENAI_*).ti-code-providers/chatgpt- ChatGPT model and request helpers. The default transport is Codex Responses WebSocket with pre-event SSE fallback; passtransport: "sse"to force HTTP SSE.ti-code-providers/opencode- OpenCode Zen-only adapter, configured forhttps://opencode.ai/zen/v1and theTI_OPENCODE_ZEN_*environment family.ti-code-providers/exa- Exa search client and opt-in plugin factory, wired only whenEXA_API_KEYis present and a consumer explicitly adds the plugin.ti-code-providers/auth-storage- credential storage boundary: OAuth metadata remains file-backed, while API-key values prefer macOS Keychain or Linux Secret Service and fall back to the permissions-restricted auth file when unavailable.ti-code-providers/auth- API-key backend and command-runner contracts for Keychain, Secret Service, and explicit file fallback.ti-code-providers/openai-codex-oauth- provider-neutral OAuth flow.ti-code-providers/openai-codex-oauth-node- Node-specific OAuth helper.
Runtime
The public npm package targets Node.js 20 or newer. Runtime-specific portable bundles are produced by the CLI release workflow rather than this package.
The default OpenAI transport remains HTTP SSE. Responses WebSocket mode requires
a runtime whose globalThis.WebSocket accepts handshake headers. Automatic
stream replay/reconnect is not implemented in the provider layer; the official
Effect transport supplies typed responses/errors while reconnect semantics need
a proven no-replay design upstream.
The ChatGPT/Codex Responses WebSocket path is now the default ChatGPT transport
and is covered by deterministic provider tests for URL normalization,
header/frame construction, event decoding, close errors, and pre-event SSE
fallback. A live gpt-5.5 probe passed on 2026-05-24, and the adapter strips
max_output_tokens from ChatGPT WebSocket frames because the live endpoint
rejected that field. Use the secret-safe probe when validating another account,
model, runtime, or header shape:
pnpm exec tsx packages/providers/scripts/probe-chatgpt-codex-wss.tsSee
docs/research/chatgpt-codex-wss-validation.md
for the evidence boundary and inferred details.
OpenCode Zen is the Zen endpoint only. The Go-based OpenCode client is not part of this package or its public surface.
