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
5 changes: 4 additions & 1 deletion docs-site/src/content/docs/fr/guides/pi.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ d’exportation de la variable d’environnement et le nombre de modèles dotés
"api": "openai-completions",
"apiKey": "$OPENCODEX_API_KEY",
"compat": {
"sendSessionAffinityHeaders": true
"sendSessionAffinityHeaders": true,
"supportsDeveloperRole": false
},
"models": [
{
Expand All @@ -46,6 +47,8 @@ d’exportation de la variable d’environnement et le nombre de modèles dotés

Les fournisseurs Pi générés activent `compat.sendSessionAffinityHeaders`. Conservez ce réglage lors de la fusion ou de la modification manuelle du fournisseur : Pi transmet un identifiant de session stable, dont OpenCodex dérive l’affinité pour la destination canonique OpenCode Go. Pi peut omettre cet identifiant lorsque `cacheRetention` vaut `none`.

Les fournisseurs Pi générés définissent aussi `compat.supportsDeveloperRole` à `false` : Pi envoie alors son prompt système avec le rôle `system` au lieu de `developer`. OpenCodex transmet les rôles Chat Completions tels quels, et plusieurs amonts compatibles OpenAI refusent `developer` avec une erreur 400 ; tous acceptent `system`.

Les identifiants de modèle sont les sélecteurs canoniques du proxy : les modèles routés apparaissent donc sous la forme `provider/model`
(`anthropic/claude-opus-5`) et les slugs natifs OpenAI restent sans préfixe (`gpt-5.6-sol`). Le `name`
suffixe — `(anthropic)`, `(native)`, `(routed)` — permet de distinguer, dans le sélecteur de Pi, deux modèles de même nom
Expand Down
5 changes: 4 additions & 1 deletion docs-site/src/content/docs/guides/pi.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ export line, and how many models carry authoritative context limits.
"api": "openai-completions",
"apiKey": "$OPENCODEX_API_KEY",
"compat": {
"sendSessionAffinityHeaders": true
"sendSessionAffinityHeaders": true,
"supportsDeveloperRole": false
},
"models": [
{
Expand All @@ -46,6 +47,8 @@ export line, and how many models carry authoritative context limits.

Generated Pi providers enable `compat.sendSessionAffinityHeaders`. Keep this flag when merging or manually editing the provider: Pi supplies a stable session identity and OpenCodex derives canonical OpenCode Go affinity from it. Pi may omit the identity when `cacheRetention` is `none`.

Generated Pi providers also set `compat.supportsDeveloperRole` to `false`, so Pi sends its system prompt as `system` instead of `developer`. OpenCodex forwards Chat Completions roles as sent, and several OpenAI-compatible upstreams reject `developer` with a 400; every upstream accepts `system`.

Model ids are the proxy's canonical selectors, so routed models appear as `provider/model`
(`anthropic/claude-opus-5`) and native OpenAI slugs stay unprefixed (`gpt-5.6-sol`). The `name`
suffix — `(anthropic)`, `(native)`, `(routed)` — is what makes two same-named models from
Expand Down
5 changes: 4 additions & 1 deletion docs-site/src/content/docs/ja/guides/pi.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ ocx export --client pi
"api": "openai-completions",
"apiKey": "$OPENCODEX_API_KEY",
"compat": {
"sendSessionAffinityHeaders": true
"sendSessionAffinityHeaders": true,
"supportsDeveloperRole": false
},
"models": [
{
Expand All @@ -42,6 +43,8 @@ ocx export --client pi

生成される Pi プロバイダーでは `compat.sendSessionAffinityHeaders` が有効です。設定をマージしたり手動で編集したりする際も、このフラグを保持してください。Pi が送る安定したセッション識別子から、OpenCodex が正規の OpenCode Go 接続先用の affinity を生成します。`cacheRetention` が `none` の場合、Pi は識別子を送信しないことがあります。

生成される Pi プロバイダーでは `compat.supportsDeveloperRole` も `false` に設定され、Pi はシステムプロンプトを `developer` ではなく `system` ロールで送ります。OpenCodex は Chat Completions のロールを受け取ったまま転送しますが、OpenAI 互換のアップストリームの中には `developer` を 400 で拒否するものがあります。`system` はすべてのアップストリームが受け付けます。

モデル ID はプロキシの正規セレクターであるため、ルーティングされたモデルは `provider/model` (`anthropic/claude-opus-5`) として表示され、ネイティブ OpenAI スラグはプレフィックスなし (`gpt-5.6-sol`) のままになります。 `name` サフィックス (`(anthropic)`、`(native)`、`(routed)`) により、異なるアップストリームの 2 つの同じ名前のモデルが Pi のピッカーで区別できるようになります。

## どこへ行くのか
Expand Down
5 changes: 4 additions & 1 deletion docs-site/src/content/docs/ko/guides/pi.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ ocx export --client pi
"api": "openai-completions",
"apiKey": "$OPENCODEX_API_KEY",
"compat": {
"sendSessionAffinityHeaders": true
"sendSessionAffinityHeaders": true,
"supportsDeveloperRole": false
},
"models": [
{
Expand All @@ -46,6 +47,8 @@ ocx export --client pi

생성된 Pi provider에는 `compat.sendSessionAffinityHeaders`가 활성화됩니다. provider를 병합하거나 직접 수정할 때 이 설정을 유지하세요. Pi가 안정적인 세션 식별자를 보내면 OpenCodex가 이를 바탕으로 정규 OpenCode Go 대상의 affinity를 계산합니다. `cacheRetention`이 `none`이면 Pi가 식별자를 보내지 않을 수 있습니다.

생성된 Pi provider는 `compat.supportsDeveloperRole`도 `false`로 설정합니다. 그래서 Pi는 시스템 프롬프트를 `developer`가 아닌 `system` 역할로 보냅니다. OpenCodex는 Chat Completions 역할을 받은 그대로 전달하는데, OpenAI 호환 업스트림 중 일부는 `developer`를 400으로 거부합니다. `system`은 모든 업스트림이 받습니다.

모델 id는 프록시의 정규 선택자이므로, 라우팅된 모델은 `provider/model`
(`anthropic/claude-opus-5`) 형태로 나타나고, 네이티브 OpenAI slug는 접두사 없이
(`gpt-5.6-sol`) 유지됩니다. `name` 접미사인 `(anthropic)`, `(native)`, `(routed)`는
Expand Down
5 changes: 4 additions & 1 deletion docs-site/src/content/docs/ru/guides/pi.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ ocx export --client pi
"api": "openai-completions",
"apiKey": "$OPENCODEX_API_KEY",
"compat": {
"sendSessionAffinityHeaders": true
"sendSessionAffinityHeaders": true,
"supportsDeveloperRole": false
},
"models": [
{
Expand All @@ -46,6 +47,8 @@ ocx export --client pi

В создаваемой конфигурации Pi включён `compat.sendSessionAffinityHeaders`. Сохраняйте этот флаг при объединении или ручном редактировании провайдера: Pi передаёт стабильный идентификатор сессии, из которого OpenCodex формирует affinity для канонического OpenCode Go. При `cacheRetention: none` Pi может не передавать идентификатор.

Создаваемая конфигурация Pi также задаёт `compat.supportsDeveloperRole` равным `false`, поэтому Pi отправляет системный промпт с ролью `system`, а не `developer`. OpenCodex передаёт роли Chat Completions без изменений, а часть OpenAI-совместимых провайдеров отклоняет `developer` с ошибкой 400; роль `system` принимают все.

Id моделей — это канонические селекторы прокси, поэтому маршрутизируемые модели появляются как
`provider/model` (`anthropic/claude-opus-5`), а нативные slug OpenAI остаются без префикса
(`gpt-5.6-sol`). Суффикс в `name` — `(anthropic)`, `(native)`, `(routed)` — как раз и позволяет
Expand Down
5 changes: 4 additions & 1 deletion docs-site/src/content/docs/tr/guides/pi.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ export line, and how many models carry authoritative context limits.
"api": "openai-completions",
"apiKey": "$OPENCODEX_API_KEY",
"compat": {
"sendSessionAffinityHeaders": true
"sendSessionAffinityHeaders": true,
"supportsDeveloperRole": false
},
"models": [
{
Expand All @@ -50,6 +51,8 @@ export line, and how many models carry authoritative context limits.

Oluşturulan Pi sağlayıcılarında `compat.sendSessionAffinityHeaders` etkinleştirilir. Sağlayıcıyı birleştirirken veya elle düzenlerken bu ayarı koruyun: Pi sabit bir oturum kimliği gönderir ve OpenCodex bu kimlikten kanonik OpenCode Go hedefi için oturum yakınlığı üretir. `cacheRetention` değeri `none` olduğunda Pi kimliği göndermeyebilir.

Oluşturulan Pi sağlayıcıları ayrıca `compat.supportsDeveloperRole` değerini `false` yapar; böylece Pi sistem istemini `developer` yerine `system` rolüyle gönderir. OpenCodex Chat Completions rollerini olduğu gibi iletir ve OpenAI uyumlu bazı sağlayıcılar `developer` rolünü 400 hatasıyla reddeder; `system` rolünü hepsi kabul eder.

Model ids are the proxy's canonical selectors, so routed models appear as
`provider/model`
(`anthropic/claude-opus-5`) and native OpenAI slugs stay unprefixed
Expand Down
5 changes: 4 additions & 1 deletion docs-site/src/content/docs/zh-cn/guides/pi.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ ocx export --client pi
"api": "openai-completions",
"apiKey": "$OPENCODEX_API_KEY",
"compat": {
"sendSessionAffinityHeaders": true
"sendSessionAffinityHeaders": true,
"supportsDeveloperRole": false
},
"models": [
{
Expand All @@ -42,6 +43,8 @@ ocx export --client pi

生成的 Pi 提供方配置启用了 `compat.sendSessionAffinityHeaders`。合并或手动编辑提供方时请保留该设置:Pi 提供稳定的会话标识,OpenCodex 据此为规范的 OpenCode Go 目标生成会话亲和标识。`cacheRetention` 为 `none` 时,Pi 可能不发送会话标识。

生成的 Pi 提供方配置还会把 `compat.supportsDeveloperRole` 设为 `false`,使 Pi 以 `system` 而不是 `developer` 角色发送系统提示词。OpenCodex 按原样转发 Chat Completions 角色,而部分 OpenAI 兼容上游会以 400 拒绝 `developer`;所有上游都接受 `system`。

模型 id 是代理的规范选择器,因此已路由模型会显示为 `provider/model`(`anthropic/claude-opus-5`),而原生 OpenAI slug 会保持不带前缀(`gpt-5.6-sol`)。`name` 后缀 - `(anthropic)`、`(native)`、`(routed)` - 负责让两个同名但来自不同上游的模型在 Pi 的选择器中可区分。

## 放置位置
Expand Down
5 changes: 4 additions & 1 deletion docs-site/src/content/docs/zh-tw/guides/pi.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ ocx export --client pi
"api": "openai-completions",
"apiKey": "$OPENCODEX_API_KEY",
"compat": {
"sendSessionAffinityHeaders": true
"sendSessionAffinityHeaders": true,
"supportsDeveloperRole": false
},
"models": [
{
Expand All @@ -42,6 +43,8 @@ ocx export --client pi

產生的 Pi 供應商設定會啟用 `compat.sendSessionAffinityHeaders`。合併或手動編輯供應商時請保留此設定:Pi 提供穩定的工作階段識別碼,OpenCodex 據此為標準 OpenCode Go 目標產生工作階段親和識別碼。當 `cacheRetention` 為 `none` 時,Pi 可能不傳送識別碼。

產生的 Pi 供應商設定也會把 `compat.supportsDeveloperRole` 設為 `false`,讓 Pi 以 `system` 而非 `developer` 角色傳送系統提示詞。OpenCodex 會照原樣轉送 Chat Completions 角色,而部分 OpenAI 相容上游會以 400 拒絕 `developer`;所有上游都接受 `system`。

模型 id 是代理的規範選擇器,因此路由模型顯示為 `provider/model`(`anthropic/claude-opus-5`),而原生 OpenAI slug 保持無前綴(`gpt-5.6-sol`)。`name` 後綴 — `(anthropic)`、`(native)`、`(routed)` — 正是讓來自不同上游的兩個同名模型在 Pi 的 picker 中可區分的關鍵。

## 放置位置
Expand Down
4 changes: 4 additions & 0 deletions scripts/test-layout/layout.json
Original file line number Diff line number Diff line change
Expand Up @@ -1159,7 +1159,11 @@
"openai-chat-parallel-stream.test.ts": "adapters/openai",
"openai-chat-path-override.test.ts": "adapters/openai",
"openai-chat-reasoning-wire-policy.test.ts": "adapters/openai",
"openai-chat-sanitization-review-regressions.test.ts": "adapters/openai",
"openai-chat-serialized-tool-call-content.test.ts": "adapters/openai",
"openai-chat-serialized-tool-call-think.test.ts": "adapters/openai",
"openai-chat-system-order.test.ts": "adapters/openai",
"responses-chat-tool-call-content.test.ts": "responses",
"openai-chat-tool-result-images.test.ts": "adapters/openai",
"openai-chat-url.test.ts": "adapters/openai",
"openai-chat-video-part.test.ts": "adapters/openai",
Expand Down
Loading
Loading