npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ti-code-providers

v0.1.14

Published

Effect v4 native provider implementations for ti

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 via TI_OPENAI_TRANSPORT=responses-sse, Responses WebSocket via TI_OPENAI_TRANSPORT=responses-websocket, or official Effect Responses via TI_OPENAI_TRANSPORT=official-responses.
  • ti-code-providers/obvious - local Obvious Responses SSE adapter and /models catalog reader, defaulting to the Obvious default model. Runtime config prefers OBVIOUS_* variables but also accepts direct-mode aliases used by external launchers (CODEX_DIRECT_*, OBDEX_DIRECT_*, and OPENAI_*).
  • ti-code-providers/chatgpt - ChatGPT model and request helpers. The default transport is Codex Responses WebSocket with pre-event SSE fallback; pass transport: "sse" to force HTTP SSE.
  • ti-code-providers/opencode - OpenCode Zen-only adapter, configured for https://opencode.ai/zen/v1 and the TI_OPENCODE_ZEN_* environment family.
  • ti-code-providers/exa - Exa search client and opt-in plugin factory, wired only when EXA_API_KEY is 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.ts

See 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.