Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions packages/ai/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ Unified LLM API with provider collections, automatic auth resolution, token and
- **B.AI** (credential-scoped multi-provider catalog)
- **Ant Ling**
- **Azure OpenAI (Responses)**
- **OpenAI Codex** (ChatGPT Plus/Pro subscription, requires OAuth, see below)
- **ChatGPT Subscription** (ChatGPT Plus/Pro subscription, requires OAuth, see below)
- **DeepSeek**
- **NVIDIA NIM**
- **Anthropic**
Expand Down Expand Up @@ -1532,7 +1532,7 @@ Use this when one process needs different provider settings per request, or when
Several providers support OAuth authentication instead of static API keys:

- **Anthropic** (Claude Pro/Max subscription)
- **OpenAI Codex** (ChatGPT Plus/Pro subscription, access to GPT-5.x Codex models)
- **ChatGPT Subscription** (ChatGPT Plus/Pro subscription, access to GPT-5.x Codex models)
- **GitHub Copilot** (Copilot subscription)
- **OpenRouter** (OAuth PKCE that mints a user-controlled API key)
- **Cursor** (Pro/Ultra/Teams subscription; browser deep-link + poll flow. After login, the per-account model catalog is discovered through `GetUsableModels` and chat streams over the native `cursor-agent` protocol with in-band tool execution — hosts supply `CursorAgentOptions.execHandlers` to bridge Cursor's server-driven tool calls onto local tools)
Expand Down Expand Up @@ -1613,7 +1613,7 @@ Built-in login and refresh flows are private provider implementations. Use provi

Provider notes:

**OpenAI Codex**: Requires a ChatGPT Plus or Pro subscription. Provides access to GPT-5.x Codex models with extended context windows and reasoning capabilities. The library automatically handles session-based prompt caching when `sessionId` is provided in stream options unless `cacheRetention` is `"none"`. You can set `transport` in stream options to `"sse"`, `"websocket"`, or `"auto"` for Codex Responses transport selection. When using WebSocket with a `sessionId` and cache retention enabled, connections are reused per session and expire after 5 minutes of inactivity.
**ChatGPT Subscription**: Requires a ChatGPT Plus or Pro subscription. Provides access to GPT-5.x Codex models with extended context windows and reasoning capabilities. The library automatically handles session-based prompt caching when `sessionId` is provided in stream options unless `cacheRetention` is `"none"`. You can set `transport` in stream options to `"sse"`, `"websocket"`, or `"auto"` for Codex Responses transport selection. When using WebSocket with a `sessionId` and cache retention enabled, connections are reused per session and expire after 5 minutes of inactivity.

**Azure OpenAI (Responses)**: Uses the Responses API only. Set `AZURE_OPENAI_API_KEY` and either `AZURE_OPENAI_BASE_URL` or `AZURE_OPENAI_RESOURCE_NAME`. `AZURE_OPENAI_BASE_URL` supports both `https://<resource>.openai.azure.com` and `https://<resource>.cognitiveservices.azure.com`; root endpoints are normalized to `.../openai/v1` automatically. Use `AZURE_OPENAI_API_VERSION` (defaults to `v1`) to override the API version if needed. Deployment names are treated as model IDs by default, override with `azureDeploymentName` or `AZURE_OPENAI_DEPLOYMENT_NAME_MAP` using comma-separated `model-id=deployment` pairs (for example `gpt-4o-mini=my-deployment,gpt-4o=prod`). Legacy deployment-based URLs are intentionally unsupported.

Expand Down
6 changes: 3 additions & 3 deletions packages/coding-agent/docs/providers.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Use `/login` in interactive mode, then select a provider:

Use `/logout` to clear credentials. Tokens are stored in `~/.senpi/agent/auth.json` and auto-refresh when expired. OpenRouter instead mints a user-controlled API key that does not expire automatically.

### OpenAI Codex
### ChatGPT Subscription

- Requires ChatGPT Plus or Pro subscription
- Officially endorsed by OpenAI: [Codex for OSS](https://developers.openai.com/community/codex-for-oss)
Expand All @@ -41,7 +41,7 @@ Anthropic subscription auth is active for Claude Pro/Max accounts. Third-party h
- If the browser lands on a page saying the login belongs to a different session or an earlier attempt, that page's address was sent to another login's listener: paste the full address from the address bar into the session whose prompt is still waiting, or run the login again from that session.
- A login that receives neither the browser callback nor a pasted redirect URL for 10 minutes fails with a timeout and releases its port; run `/login anthropic` again.

### Claude SDK OAuth
### Anthropic Subscription

The `anthropic-subscription` provider routes LLM calls through the official [Claude Agent SDK](https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk) - it spawns the real Claude Code engine - while senpi executes every tool itself. Subscription usage flows through Anthropic's official Claude Code surface.

Expand Down Expand Up @@ -101,7 +101,7 @@ If your Claude Pro/Max subscription usage through `anthropic-subscription` feels

| Lane | Effective TTL | Who controls it | How to override |
| --- | --- | --- | --- |
| Claude SDK OAuth (subscription, `anthropic-subscription`) | 5 minutes | The Claude SDK owns `cache_control`; senpi cannot add breakpoints. senpi reports 300s for this lane so cache-aware budgets (tool waits, goal timing) size themselves correctly. | Not overridable |
| Anthropic Subscription (subscription, `anthropic-subscription`) | 5 minutes | The Claude SDK owns `cache_control`; senpi cannot add breakpoints. senpi reports 300s for this lane so cache-aware budgets (tool waits, goal timing) size themselves correctly. | Not overridable |
| Direct Anthropic API (`api.anthropic.com`, API key or OAuth token) | 5 minutes | senpi follows Anthropic's default cache retention. Opting into 1h retention makes cache writes cost 2x base input vs 1.25x for 5m ([Anthropic prompt caching](https://docs.claude.com/en/docs/build-with-claude/prompt-caching)). | Set `PI_CACHE_RETENTION=long` or `cacheRetention: "long"` |
| Anthropic-compatible providers (kimi-coding, fireworks, gateways) | 5 minutes | The 1h TTL is gated on the native `api.anthropic.com` base URL, so these lanes stay short. | `cacheRetention` |

Expand Down
8 changes: 4 additions & 4 deletions packages/coding-agent/docs/rpc.md
Original file line number Diff line number Diff line change
Expand Up @@ -1338,7 +1338,7 @@ Response:

#### set_fast_mode

Turn fast mode (the OpenAI Codex `priority` service tier) on or off for the active model. The choice is remembered
Turn fast mode (the ChatGPT Subscription `priority` service tier) on or off for the active model. The choice is remembered
per model, so a later session on the same model starts the same way; `enabled: false` records an explicit `"auto"`
so it also overrides a tier inherited from the model catalog.

Expand All @@ -1355,7 +1355,7 @@ Response:
"data": {
"enabled": true,
"serviceTier": "priority",
"provider": "openai-codex",
"provider": "chatgpt-subscription",
"modelId": "gpt-5.6-sol"
}
}
Expand All @@ -1369,7 +1369,7 @@ The command returns an error instead of a silent no-op when the request cannot b

| Situation | `error` |
|-----------|---------|
| Active model is not an OpenAI Codex model | `Fast mode is only available for OpenAI Codex models.` |
| Active model is not a ChatGPT Subscription model | `Fast mode is only available for ChatGPT Subscription models.` |
| `enabled: false` while the model selection pins `:priority` | `Fast mode is fixed by the active model selection's priority tier.` |
| `enabled` is not a boolean | `set_fast_mode requires a boolean 'enabled' field.` |

Expand Down Expand Up @@ -2221,7 +2221,7 @@ command, a retry fallback, or a session restore.
```json
{
"type": "model_changed",
"model": {"provider": "openai-codex", "id": "gpt-5.6-sol", "...": "..."},
"model": {"provider": "chatgpt-subscription", "id": "gpt-5.6-sol", "...": "..."},
"thinkingLevel": "xhigh",
"source": "cycle"
}
Expand Down
2 changes: 1 addition & 1 deletion packages/coding-agent/docs/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -605,7 +605,7 @@ The service tier on outgoing requests is resolved as:
2. The model catalog's `compat.serviceTier`
3. `openai.serviceTier` (the global OpenAI setting)

The per-model `modelServiceTiers` memory is not part of that resolution: it applies to OpenAI Codex
The per-model `modelServiceTiers` memory is not part of that resolution: it applies to ChatGPT Subscription
models only, through fast mode. It acts as the session-start default for `/fast` (a remembered
`"priority"` starts the session fast) and as an explicit `"auto"` opt-out of a catalog-inherited
priority tier, which keeps `service_tier` off the wire. Under a `:priority` pin the memory has no
Expand Down
4 changes: 2 additions & 2 deletions packages/coding-agent/docs/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Type `/` in the editor to open command completion. Extensions can register custo
| `/scoped-models` | Enable/disable models for Ctrl+P cycling |
| `/reasoning [on\|off]` | Show or toggle reasoning for the current model |
| `/efforts [level]` | Show or set reasoning effort (graded models only) |
| `/fast [on\|off]` | Toggle fast mode (OpenAI Codex models, persisted per model) |
| `/fast [on\|off]` | Toggle fast mode (ChatGPT Subscription models, persisted per model) |
| `/settings` | Theme, message delivery, transport, and other preferences |
| `/resume` | Pick from previous sessions |
| `/new` | Start a new session |
Expand Down Expand Up @@ -81,7 +81,7 @@ Type `/` in the editor to open command completion. Extensions can register custo

**`/efforts [minimal|low|medium|high|xhigh|max]`** sets the reasoning effort ladder for graded models. On/off-only models are directed to use `/reasoning` instead. `xhigh` and `max` appear only when the model supports them. No-arg shows current effort and available levels.

**`/fast [on|off]`** toggles OpenAI Codex fast mode (`service_tier: "priority"`). The choice is remembered per model and survives restarts. No-arg toggles. Non-Codex models are told fast mode is unavailable. If the active model selection pins `:priority` via a favorite decorator, `/fast off` is blocked and explains why.
**`/fast [on|off]`** toggles ChatGPT Subscription fast mode (`service_tier: "priority"`). The choice is remembered per model and survives restarts. No-arg toggles. Non-Codex models are told fast mode is unavailable. If the active model selection pins `:priority` via a favorite decorator, `/fast off` is blocked and explains why.

All three commands work over RPC and headless (no selector opened, status sent as text notifications).

Expand Down
Loading