Skip to content

Commit ae3547c

Browse files
Zeph Gillenclaude
andcommitted
feat(openai): reconcile gpt-5.6 defs with upstream (cacheWrites + tiers)
Upstream independently shipped gpt-5.6 sol/terra/luna after the fork did, so the entries collide and differ. Adopt upstream's cacheWritesPrice and flex/priority service tiers (cost was under-counted without them); keep the fork's Luna 1.05M contextWindow + longContextPricing, reasoning-effort defaults (high/medium/low), and descriptions. All tier contextWindows pinned to 1_050_000 (upstream tied them to its 400K Luna figure, which is still unverified against OpenAI docs). - openai.ts: add cacheWritesPrice + tiers to the three gpt-5.6 entries - openai-native.spec: assert Sol cacheWritesPrice 6.25 + priority tier present - FORK.md: record the collision, the index.ts default-model divergence (openAiNativeDefaultModelId vs upstream hardcoded gpt-4o), next-sync guidance, and GPT-5.6 provider coverage (Bedrock GA-via-mantle deferred; Vertex not offered) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent ded8095 commit ae3547c

3 files changed

Lines changed: 45 additions & 12 deletions

File tree

FORK.md

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ across merges. `AGENTS.md` only points here.
3434
3535
## Divergence at a glance
3636

37-
| # | Local feature | Origin commit(s) | Nature |
38-
| --- | --------------------------------------------------------------- | ------------------------------------ | ---------------------------------- |
39-
| 1 | Effort-based Anthropic reasoning (Opus 4.6/4.7/4.8) | `fd93c5bde`, `64fc5fc98` | modifies shared provider logic |
40-
| 2 | OpenRouter effort-array mirroring + gpt-5.5 defs | `062657a7d`, `64fc5fc98` | modifies shared fetcher/registry |
41-
| 3 | Claude Fable 5 + safety-refusal handling | `811b5ca55` | modifies shared provider logic |
42-
| 4 | `"max"` reasoningEffort i18n label | `dd675fd3b` | mechanical i18n |
43-
| 5 | Workspace-scoped code-index config (`.roo/codebase-index.json`) | `3efa0728e``8f54e2274` (phases 1–5) | mostly new files + isolated wiring |
37+
| # | Local feature | Origin commit(s) | Nature |
38+
| --- | ---------------------------------------------------------------------------------- | ------------------------------------- | ---------------------------------- |
39+
| 1 | Effort-based Anthropic reasoning (Opus 4.6/4.7/4.8) | `fd93c5bde`, `64fc5fc98` | modifies shared provider logic |
40+
| 2 | OpenRouter effort mirroring + gpt-5.5/5.6 defs (5.6 now also upstream — collision) | `062657a7d`, `64fc5fc98`, `ded80951d` | modifies shared fetcher/registry |
41+
| 3 | Claude Fable 5 + safety-refusal handling | `811b5ca55` | modifies shared provider logic |
42+
| 4 | `"max"` reasoningEffort i18n label | `dd675fd3b` | mechanical i18n |
43+
| 5 | Workspace-scoped code-index config (`.roo/codebase-index.json`) | `3efa0728e``8f54e2274` (phases 1–5) | mostly new files + isolated wiring |
4444

4545
## Conflict-prone code paths (shared files we modified)
4646

@@ -88,11 +88,30 @@ for **Claude Sonnet 5** — upstream #778 shipped it budget/binary; the fork con
8888

8989
### Feature 2 — OpenRouter / OpenAI / Requesty effort
9090

91-
| File | Upstream churn (6mo) | Our change | Change nature | Risk |
92-
| ------------------------------------------ | -------------------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------- |
93-
| `packages/types/src/providers/openai.ts` | 8 | gpt-5.5 defs + static effort arrays | modifies registry | **MED** |
94-
| `src/api/providers/fetchers/openrouter.ts` | 6 | Dynamic fetcher patches known IDs (`anthropic/claude-opus-4.7`, `4.8`, `claude-sonnet-5`, `claude-fable-5`, gpt-5.5 family) to mirror the static effort arrays so `xhigh`/`max` stay reachable from the UI | modifies shared fetcher | **MED** |
95-
| `src/api/providers/fetchers/requesty.ts` | low | Same effort-array mirroring as openrouter for `anthropic/claude-fable-5` + `claude-sonnet-5` (sets `supportsReasoningBudget:false`). Upstream's Sonnet 5 (#778) patches the same block → conflict-prone. **Was missing from this map before the v3.68.0 sync.** | modifies shared fetcher | **MED** |
91+
| File | Upstream churn (6mo) | Our change | Change nature | Risk |
92+
| ------------------------------------------ | -------------------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | ------- |
93+
| `packages/types/src/providers/openai.ts` | 8 | gpt-5.5 + gpt-5.6 (sol/terra/luna) defs + static effort arrays. gpt-5.6 now shared with upstream (collision): fork keeps Luna 1.05M + longContextPricing + effort defaults (high/med/low) + descriptions, adopts upstream cacheWrites + flex/priority tiers; default pinned `gpt-5.6-sol` | modifies registry | **MED** |
94+
| `packages/types/src/providers/index.ts` | 14 | `getProviderDefaultModelId("openai-native")` returns `openAiNativeDefaultModelId` (import added) vs upstream's hardcoded `"gpt-4o"`; fork-only default fix — silent-revert risk on merge | modifies shared registry | **MED** |
95+
| `src/api/providers/fetchers/openrouter.ts` | 6 | Dynamic fetcher patches known IDs (`anthropic/claude-opus-4.7`, `4.8`, `claude-sonnet-5`, `claude-fable-5`, gpt-5.5 family) to mirror the static effort arrays so `xhigh`/`max` stay reachable from the UI | modifies shared fetcher | **MED** |
96+
| `src/api/providers/fetchers/requesty.ts` | low | Same effort-array mirroring as openrouter for `anthropic/claude-fable-5` + `claude-sonnet-5` (sets `supportsReasoningBudget:false`). Upstream's Sonnet 5 (#778) patches the same block → conflict-prone. **Was missing from this map before the v3.68.0 sync.** | modifies shared fetcher | **MED** |
97+
98+
**Next-sync note (gpt-5.6):** upstream independently shipped `gpt-5.6-sol/terra/luna` after the fork
99+
did, so these entries WILL conflict on the next merge. Resolution baked in here: keep the fork's Luna
100+
`contextWindow: 1_050_000` + `longContextPricing` + effort defaults + descriptions; take upstream's
101+
`cacheWritesPrice` + flex/priority `tiers` (with every tier `contextWindow` at `1_050_000`, not
102+
upstream's 400K). Luna's 1.05M (fork) vs 400K (upstream) is still unverified against OpenAI's own
103+
docs — confirm when possible.
104+
105+
**GPT-5.6 provider coverage (verified 2026-07-14):**
106+
107+
- OpenAI-native + OpenRouter — supported here.
108+
- Amazon Bedrock — GA on Bedrock 2026-07-13, but **Responses-API-only via the `bedrock-mantle`
109+
endpoint**. The fork's Bedrock provider is Converse/`bedrock-runtime`-only, so a `bedrockModels`
110+
entry would 400 at request time. Real support needs a separate OpenAI-Responses-on-`bedrock-mantle`
111+
transport — **deferred** (do not add `openai.gpt-5.6-*` to `bedrock.ts`).
112+
- Google Vertex — **not offered** by Vertex Model Garden (proprietary GPT ships to Azure Foundry +
113+
Bedrock, not Google). Claude on Vertex (Opus 4.8, Fable 5, Sonnet 5) is already wired — see the
114+
Feature 1+3 `vertex.ts` row.
96115

97116
### Feature 5 — Workspace-scoped code-index (modified shared files)
98117

packages/types/src/providers/openai.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export const openAiNativeModels = {
1717
reasoningEffort: "high",
1818
inputPrice: 5.0,
1919
outputPrice: 30.0,
20+
cacheWritesPrice: 6.25,
2021
cacheReadsPrice: 0.5,
2122
longContextPricing: {
2223
thresholdTokens: 272_000,
@@ -26,6 +27,10 @@ export const openAiNativeModels = {
2627
},
2728
supportsVerbosity: true,
2829
supportsTemperature: false,
30+
tiers: [
31+
{ name: "flex", contextWindow: 1_050_000, inputPrice: 2.5, outputPrice: 15.0, cacheReadsPrice: 0.25 },
32+
{ name: "priority", contextWindow: 1_050_000, inputPrice: 12.5, outputPrice: 75.0, cacheReadsPrice: 1.25 },
33+
],
2934
description:
3035
"GPT-5.6 Sol: OpenAI's flagship model for frontier reasoning, complex coding, and multi-step agentic tasks",
3136
},
@@ -40,6 +45,7 @@ export const openAiNativeModels = {
4045
reasoningEffort: "medium",
4146
inputPrice: 2.5,
4247
outputPrice: 15.0,
48+
cacheWritesPrice: 3.125,
4349
cacheReadsPrice: 0.25,
4450
longContextPricing: {
4551
thresholdTokens: 272_000,
@@ -49,6 +55,10 @@ export const openAiNativeModels = {
4955
},
5056
supportsVerbosity: true,
5157
supportsTemperature: false,
58+
tiers: [
59+
{ name: "flex", contextWindow: 1_050_000, inputPrice: 1.25, outputPrice: 7.5, cacheReadsPrice: 0.125 },
60+
{ name: "priority", contextWindow: 1_050_000, inputPrice: 6.25, outputPrice: 37.5, cacheReadsPrice: 0.625 },
61+
],
5262
description: "GPT-5.6 Terra: Balanced model for everyday coding, reasoning, and agentic tasks",
5363
},
5464
"gpt-5.6-luna": {
@@ -62,6 +72,7 @@ export const openAiNativeModels = {
6272
reasoningEffort: "low",
6373
inputPrice: 1.0,
6474
outputPrice: 6.0,
75+
cacheWritesPrice: 1.25,
6576
cacheReadsPrice: 0.1,
6677
longContextPricing: {
6778
thresholdTokens: 272_000,
@@ -71,6 +82,7 @@ export const openAiNativeModels = {
7182
},
7283
supportsVerbosity: true,
7384
supportsTemperature: false,
85+
tiers: [{ name: "flex", contextWindow: 1_050_000, inputPrice: 0.5, outputPrice: 3.0, cacheReadsPrice: 0.05 }],
7486
description: "GPT-5.6 Luna: Fast, cost-efficient model optimized for speed and everyday use",
7587
},
7688
"gpt-5.1-codex-max": {

src/api/providers/__tests__/openai-native.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,9 @@ describe("OpenAiNativeHandler", () => {
299299
expect(modelInfo.info.reasoningEffort).toBe("high")
300300
expect(modelInfo.info.inputPrice).toBe(5.0)
301301
expect(modelInfo.info.outputPrice).toBe(30.0)
302+
expect(modelInfo.info.cacheWritesPrice).toBe(6.25)
302303
expect(modelInfo.info.cacheReadsPrice).toBe(0.5)
304+
expect(modelInfo.info.tiers?.some((t) => t.name === "priority")).toBe(true)
303305
})
304306

305307
it("should return GPT-5.4 model info when selected", () => {

0 commit comments

Comments
 (0)