johns-harness 2026.9.35 → 2026.9.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/auth-profiles-5CHn7vq1.js +6 -0
- package/dist/channels/plugins/actions/telegram.js +1 -0
- package/dist/config-koj5M_EO.js +6 -0
- package/dist/daemon-cli.js +6 -0
- package/dist/model-selection-BGlGpPgM.js +6 -0
- package/dist/model-selection-BU6wl1le.js +6 -0
- package/dist/model-selection-L7RMwsG-.js +6 -0
- package/dist/plugin-sdk/config-4Fgm-yEH.js +6 -0
- package/dist/plugin-sdk/config-Di-lyCdh.js +6 -0
- package/dist/plugin-sdk/discord.js +6 -0
- package/dist/plugin-sdk/mattermost.js +1 -0
- package/dist/plugin-sdk/model-auth-CX9cPHdC.js +6 -0
- package/dist/plugin-sdk/model-auth-Ciehz0x5.js +6 -0
- package/dist/plugin-sdk/model-auth-DVyo6JSX.js +6 -0
- package/dist/plugin-sdk/model-auth-kiHYHGrs.js +6 -0
- package/dist/plugin-sdk/model-selection-Dbj4jDYM.js +6 -0
- package/dist/plugin-sdk/thinking-B-rIrY_n.js +1 -0
- package/dist/plugin-sdk/thinking-CopbP_Cn.js +1 -0
- package/dist/plugin-sdk/thinking-WQ4Zq8Nl.js +1 -0
- package/dist/plugin-sdk/thinking-WXqkGljb.js +1 -0
- package/dist/plugin-sdk/thinking-_uXqFaFO.js +1 -0
- package/dist/plugin-sdk/thinking-pTdxk2dr.js +1 -0
- package/dist/thinking-B5B36ffe.js +1 -0
- package/dist/thinking-BYwvlJ3S.js +1 -0
- package/dist/thinking-CAzdgmNV.js +1 -0
- package/dist/thinking-DykY2Fzj.js +1 -0
- package/docs/PATCHES.md +13 -0
- package/docs/PROVIDER-CATALOG.md +12 -6
- package/node_modules/@mariozechner/pi-ai/dist/models.generated.js +24 -0
- package/node_modules/@mariozechner/pi-ai/dist/models.js +1 -0
- package/node_modules/@mariozechner/pi-ai/dist/providers/anthropic.js +2 -2
- package/package.json +1 -1
- package/vendor/patched-deps/@mariozechner/pi-ai/dist/models.generated.js +24 -0
- package/vendor/patched-deps/@mariozechner/pi-ai/dist/models.js +1 -0
- package/vendor/patched-deps/@mariozechner/pi-ai/dist/providers/anthropic.js +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026.9.36
|
|
4
|
+
|
|
5
|
+
- Family 82 (daily model integration, 2026-09-29): Claude Sonnet 5.5 (`claude-sonnet-5-5`) ships on `anthropic`. Card data from the official model page checked 2026-09-29: $2/$10 per MTok, cache read $0.20, 5m write $2.50, 1h write $4, 1M native context and 128K max output, adaptive thinking on by default (effort `low` through `max`, default `high`; `between_tools` is the lowest setting), and non-default `temperature`/`top_p`/`top_k` are rejected. `contextWindow` stays the standing 175K Sonnet window (owner caps do not change). Live probe 2026-09-29: the default request and the `thinking: adaptive` + `output_config.effort: xhigh` request both returned 200.
|
|
6
|
+
- Aliases: `sonnet` now resolves to `anthropic/claude-sonnet-5-5`; `sonnet5` keeps Claude Sonnet 5. Everything else is unchanged. A user alias that pins Sonnet 5 under `sonnet` moves forward on the next config load (family 79) and keeps `sonnet5`.
|
|
7
|
+
- Exact replay `scripts/patch-sonnet-5-5-model.py` (29 files); verifier checks 82.1-82.12. Roll back with `npm i -g johns-harness@2026.9.35`.
|
|
8
|
+
|
|
3
9
|
## 2026.9.35
|
|
4
10
|
|
|
5
11
|
- Family 81 (session store memory, 2026-09-28): the gateway no longer runs out of memory every few days. `sessions.json` stops storing `skillsSnapshot` and `systemPromptReport` in every entry (they are rebuilt in memory on demand); existing stores shrink on the first write after the update (the live main store: 27 MB to 0.3 MB). Writes are compact JSON with one fewer full clone per load: 347 ms to 5 ms per session update on the live store copy.
|
|
@@ -5134,6 +5134,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
5134
5134
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
5135
5135
|
image: "openai-codex/gpt-image-2"
|
|
5136
5136
|
});
|
|
5137
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
5138
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
5139
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
5140
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
5141
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
5142
|
+
});
|
|
5137
5143
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
5138
5144
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
5139
5145
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -2110,6 +2110,7 @@ const XHIGH_MODEL_REFS = [
|
|
|
2110
2110
|
"anthropic/claude-fable-5-1",
|
|
2111
2111
|
"meta/muse-spark-1.3", // JOHNNESS_PATCH_MUSE_SPARK
|
|
2112
2112
|
"meta/muse-spark-1.2",
|
|
2113
|
+
"anthropic/claude-sonnet-5-5", // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
2113
2114
|
"anthropic/claude-opus-5-5", // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
2114
2115
|
"xai/grok-4.7", // JOHNNESS_PATCH_DAILY_MODELS_80
|
|
2115
2116
|
"openai/gpt-6-sol",
|
package/dist/config-koj5M_EO.js
CHANGED
|
@@ -1829,6 +1829,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
1829
1829
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
1830
1830
|
image: "openai-codex/gpt-image-2"
|
|
1831
1831
|
});
|
|
1832
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
1833
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
1834
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
1835
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
1836
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
1837
|
+
});
|
|
1832
1838
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
1833
1839
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
1834
1840
|
opus: "anthropic/claude-opus-5-5",
|
package/dist/daemon-cli.js
CHANGED
|
@@ -4981,6 +4981,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
4981
4981
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
4982
4982
|
image: "openai-codex/gpt-image-2"
|
|
4983
4983
|
});
|
|
4984
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
4985
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
4986
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
4987
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
4988
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
4989
|
+
});
|
|
4984
4990
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
4985
4991
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
4986
4992
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -1686,6 +1686,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
1686
1686
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
1687
1687
|
image: "openai-codex/gpt-image-2"
|
|
1688
1688
|
});
|
|
1689
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
1690
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
1691
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
1692
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
1693
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
1694
|
+
});
|
|
1689
1695
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
1690
1696
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
1691
1697
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -1661,6 +1661,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
1661
1661
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
1662
1662
|
image: "openai-codex/gpt-image-2"
|
|
1663
1663
|
});
|
|
1664
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
1665
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
1666
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
1667
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
1668
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
1669
|
+
});
|
|
1664
1670
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
1665
1671
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
1666
1672
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -1592,6 +1592,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
1592
1592
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
1593
1593
|
image: "openai-codex/gpt-image-2"
|
|
1594
1594
|
});
|
|
1595
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
1596
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
1597
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
1598
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
1599
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
1600
|
+
});
|
|
1595
1601
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
1596
1602
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
1597
1603
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -7079,6 +7079,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
7079
7079
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
7080
7080
|
image: "openai-codex/gpt-image-2"
|
|
7081
7081
|
});
|
|
7082
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
7083
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
7084
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
7085
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
7086
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
7087
|
+
});
|
|
7082
7088
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
7083
7089
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
7084
7090
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -8080,6 +8080,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
8080
8080
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
8081
8081
|
image: "openai-codex/gpt-image-2"
|
|
8082
8082
|
});
|
|
8083
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
8084
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
8085
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
8086
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
8087
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
8088
|
+
});
|
|
8083
8089
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
8084
8090
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
8085
8091
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -5209,6 +5209,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
5209
5209
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
5210
5210
|
image: "openai-codex/gpt-image-2"
|
|
5211
5211
|
});
|
|
5212
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
5213
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
5214
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
5215
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
5216
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
5217
|
+
});
|
|
5212
5218
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
5213
5219
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
5214
5220
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -3135,6 +3135,7 @@ const XHIGH_MODEL_REFS = [
|
|
|
3135
3135
|
"anthropic/claude-fable-5-1",
|
|
3136
3136
|
"meta/muse-spark-1.3", // JOHNNESS_PATCH_MUSE_SPARK
|
|
3137
3137
|
"meta/muse-spark-1.2",
|
|
3138
|
+
"anthropic/claude-sonnet-5-5", // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
3138
3139
|
"anthropic/claude-opus-5-5", // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
3139
3140
|
"xai/grok-4.7", // JOHNNESS_PATCH_DAILY_MODELS_80
|
|
3140
3141
|
"openai/gpt-6-sol",
|
|
@@ -6000,6 +6000,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
6000
6000
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
6001
6001
|
image: "openai-codex/gpt-image-2"
|
|
6002
6002
|
});
|
|
6003
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
6004
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
6005
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
6006
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
6007
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
6008
|
+
});
|
|
6003
6009
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
6004
6010
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
6005
6011
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -4969,6 +4969,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
4969
4969
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
4970
4970
|
image: "openai-codex/gpt-image-2"
|
|
4971
4971
|
});
|
|
4972
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
4973
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
4974
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
4975
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
4976
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
4977
|
+
});
|
|
4972
4978
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
4973
4979
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
4974
4980
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -4973,6 +4973,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
4973
4973
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
4974
4974
|
image: "openai-codex/gpt-image-2"
|
|
4975
4975
|
});
|
|
4976
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
4977
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
4978
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
4979
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
4980
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
4981
|
+
});
|
|
4976
4982
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
4977
4983
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
4978
4984
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -4973,6 +4973,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
4973
4973
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
4974
4974
|
image: "openai-codex/gpt-image-2"
|
|
4975
4975
|
});
|
|
4976
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
4977
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
4978
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
4979
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
4980
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
4981
|
+
});
|
|
4976
4982
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
4977
4983
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
4978
4984
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -4782,6 +4782,12 @@ Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
|
4782
4782
|
"nano-banana": "google/gemini-3-pro-image-preview",
|
|
4783
4783
|
image: "openai-codex/gpt-image-2"
|
|
4784
4784
|
});
|
|
4785
|
+
// JOHNNESS_PATCH_SONNET_55_MODEL: Claude Sonnet 5.5 is the newest Sonnet; `sonnet` moves to it and
|
|
4786
|
+
// Sonnet 5 keeps the versioned alias sonnet5.
|
|
4787
|
+
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
4788
|
+
sonnet: "anthropic/claude-sonnet-5-5",
|
|
4789
|
+
sonnet5: "anthropic/claude-sonnet-5"
|
|
4790
|
+
});
|
|
4785
4791
|
// JOHNNESS_PATCH_OPUS_55_MODEL: Claude Opus 5.5 is the newest Opus; `opus` moves to it, opus-5 stays in the catalog.
|
|
4786
4792
|
Object.assign(DEFAULT_MODEL_ALIASES, {
|
|
4787
4793
|
opus: "anthropic/claude-opus-5-5",
|
|
@@ -990,6 +990,7 @@ const XHIGH_MODEL_REFS = [
|
|
|
990
990
|
"anthropic/claude-fable-5-1",
|
|
991
991
|
"meta/muse-spark-1.3", // JOHNNESS_PATCH_MUSE_SPARK
|
|
992
992
|
"meta/muse-spark-1.2",
|
|
993
|
+
"anthropic/claude-sonnet-5-5", // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
993
994
|
"anthropic/claude-opus-5-5", // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
994
995
|
"xai/grok-4.7", // JOHNNESS_PATCH_DAILY_MODELS_80
|
|
995
996
|
"openai/gpt-6-sol",
|
|
@@ -990,6 +990,7 @@ const XHIGH_MODEL_REFS = [
|
|
|
990
990
|
"anthropic/claude-fable-5-1",
|
|
991
991
|
"meta/muse-spark-1.3", // JOHNNESS_PATCH_MUSE_SPARK
|
|
992
992
|
"meta/muse-spark-1.2",
|
|
993
|
+
"anthropic/claude-sonnet-5-5", // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
993
994
|
"anthropic/claude-opus-5-5", // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
994
995
|
"xai/grok-4.7", // JOHNNESS_PATCH_DAILY_MODELS_80
|
|
995
996
|
"openai/gpt-6-sol",
|
|
@@ -990,6 +990,7 @@ const XHIGH_MODEL_REFS = [
|
|
|
990
990
|
"anthropic/claude-fable-5-1",
|
|
991
991
|
"meta/muse-spark-1.3", // JOHNNESS_PATCH_MUSE_SPARK
|
|
992
992
|
"meta/muse-spark-1.2",
|
|
993
|
+
"anthropic/claude-sonnet-5-5", // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
993
994
|
"anthropic/claude-opus-5-5", // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
994
995
|
"xai/grok-4.7", // JOHNNESS_PATCH_DAILY_MODELS_80
|
|
995
996
|
"openai/gpt-6-sol",
|
|
@@ -990,6 +990,7 @@ const XHIGH_MODEL_REFS = [
|
|
|
990
990
|
"anthropic/claude-fable-5-1",
|
|
991
991
|
"meta/muse-spark-1.3", // JOHNNESS_PATCH_MUSE_SPARK
|
|
992
992
|
"meta/muse-spark-1.2",
|
|
993
|
+
"anthropic/claude-sonnet-5-5", // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
993
994
|
"anthropic/claude-opus-5-5", // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
994
995
|
"xai/grok-4.7", // JOHNNESS_PATCH_DAILY_MODELS_80
|
|
995
996
|
"openai/gpt-6-sol",
|
|
@@ -990,6 +990,7 @@ const XHIGH_MODEL_REFS = [
|
|
|
990
990
|
"anthropic/claude-fable-5-1",
|
|
991
991
|
"meta/muse-spark-1.3", // JOHNNESS_PATCH_MUSE_SPARK
|
|
992
992
|
"meta/muse-spark-1.2",
|
|
993
|
+
"anthropic/claude-sonnet-5-5", // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
993
994
|
"anthropic/claude-opus-5-5", // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
994
995
|
"xai/grok-4.7", // JOHNNESS_PATCH_DAILY_MODELS_80
|
|
995
996
|
"openai/gpt-6-sol",
|
|
@@ -1014,6 +1014,7 @@ const XHIGH_MODEL_REFS = [
|
|
|
1014
1014
|
"anthropic/claude-fable-5-1",
|
|
1015
1015
|
"meta/muse-spark-1.3", // JOHNNESS_PATCH_MUSE_SPARK
|
|
1016
1016
|
"meta/muse-spark-1.2",
|
|
1017
|
+
"anthropic/claude-sonnet-5-5", // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
1017
1018
|
"anthropic/claude-opus-5-5", // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
1018
1019
|
"xai/grok-4.7", // JOHNNESS_PATCH_DAILY_MODELS_80
|
|
1019
1020
|
"openai/gpt-6-sol",
|
|
@@ -991,6 +991,7 @@ const XHIGH_MODEL_REFS = [
|
|
|
991
991
|
"anthropic/claude-fable-5-1",
|
|
992
992
|
"meta/muse-spark-1.3", // JOHNNESS_PATCH_MUSE_SPARK
|
|
993
993
|
"meta/muse-spark-1.2",
|
|
994
|
+
"anthropic/claude-sonnet-5-5", // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
994
995
|
"anthropic/claude-opus-5-5", // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
995
996
|
"xai/grok-4.7", // JOHNNESS_PATCH_DAILY_MODELS_80
|
|
996
997
|
"openai/gpt-6-sol",
|
|
@@ -18,6 +18,7 @@ const XHIGH_MODEL_REFS = [
|
|
|
18
18
|
"anthropic/claude-fable-5-1",
|
|
19
19
|
"meta/muse-spark-1.3", // JOHNNESS_PATCH_MUSE_SPARK
|
|
20
20
|
"meta/muse-spark-1.2",
|
|
21
|
+
"anthropic/claude-sonnet-5-5", // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
21
22
|
"anthropic/claude-opus-5-5", // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
22
23
|
"xai/grok-4.7", // JOHNNESS_PATCH_DAILY_MODELS_80
|
|
23
24
|
"openai/gpt-6-sol",
|
|
@@ -990,6 +990,7 @@ const XHIGH_MODEL_REFS = [
|
|
|
990
990
|
"anthropic/claude-fable-5-1",
|
|
991
991
|
"meta/muse-spark-1.3", // JOHNNESS_PATCH_MUSE_SPARK
|
|
992
992
|
"meta/muse-spark-1.2",
|
|
993
|
+
"anthropic/claude-sonnet-5-5", // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
993
994
|
"anthropic/claude-opus-5-5", // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
994
995
|
"xai/grok-4.7", // JOHNNESS_PATCH_DAILY_MODELS_80
|
|
995
996
|
"openai/gpt-6-sol",
|
|
@@ -18,6 +18,7 @@ const XHIGH_MODEL_REFS = [
|
|
|
18
18
|
"anthropic/claude-fable-5-1",
|
|
19
19
|
"meta/muse-spark-1.3", // JOHNNESS_PATCH_MUSE_SPARK
|
|
20
20
|
"meta/muse-spark-1.2",
|
|
21
|
+
"anthropic/claude-sonnet-5-5", // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
21
22
|
"anthropic/claude-opus-5-5", // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
22
23
|
"xai/grok-4.7", // JOHNNESS_PATCH_DAILY_MODELS_80
|
|
23
24
|
"openai/gpt-6-sol",
|
package/docs/PATCHES.md
CHANGED
|
@@ -2848,3 +2848,16 @@ The gateway heap grew about 65 MB an hour and hit the Node default limit (about
|
|
|
2848
2848
|
- **Exact replay.** `scripts/patch-session-store-memory-81.py` with `patches/session-store-memory-81/changes.json` (11 files: the 10 session store copies and `dist/entry.js`; the `v8` import sits outside family 59's CLI hunk). Verifier 81.1-81.7. Tests: `tests/session-store-memory-81.test.mjs`.
|
|
2849
2849
|
- **Next family (not in this release):** swarm queue persistence. Queued `swarm_spawn` members live only in gateway memory, so a gateway restart drops them and the swarm never finishes launching.
|
|
2850
2850
|
- Roll back with `npm i -g johns-harness@2026.9.34`.
|
|
2851
|
+
|
|
2852
|
+
## 82 - sonnet-5-5 (2026-09-29)
|
|
2853
|
+
|
|
2854
|
+
Second run of the daily model integration. One new model appeared in the authenticated provider lists since the 2026-09-28 run (Anthropic 12 -> 13: `claude-sonnet-5-5`); it is registered from its official page (checked 2026-09-29) and was wire-probed live.
|
|
2855
|
+
|
|
2856
|
+
- **Claude Sonnet 5.5** (`claude-sonnet-5-5`, anthropic, native Messages). Source: <https://platform.claude.com/docs/en/models/sonnet-5-5/overview> (checked 2026-09-29). Fixed API id, no date suffix (Bedrock `anthropic.claude-sonnet-5-5`); released 2026-09-28. 1,000,000-token native context, 128,000 max output (300K on the Message Batches API with the `output-300k-2026-03-24` beta header), text + images in and text out, knowledge cutoff Jun 2026. Adaptive thinking is on by default: the manual-budget thinking type is not accepted, effort is `low|medium|high|xhigh|max` with default `high`, and `between_tools` is the lowest setting (turns up-front thinking off at high or below). Non-default `temperature`/`top_p`/`top_k` return 400. Pricing $2/$10 per MTok, cache reads $0.20, 5m cache writes $2.50, 1h cache writes $4, Batch API 50% off. The authenticated Models API list agrees (max_input_tokens 1,000,000; max_tokens 128,000; adaptive thinking with `enabled: false`; effort incl. xhigh/max).
|
|
2857
|
+
- **Context cap.** `contextWindow` ships at 175000, the standing Sonnet window (the Sonnet 5 value retained; owner caps do not change and a new model in a family keeps the latest cap of that family). `maxTokens` 128000. Sonnet 5's entry is untouched.
|
|
2858
|
+
- **Gates.** `supportsXhigh` gains an exact branch for `claude-sonnet-5-5` on anthropic; the Anthropic adapter's effort map accepts the id with 1:1 low/medium/high/xhigh/max (minimal -> low) and the temperature gate includes it, because non-default sampling params are 400s on this model. Adaptive thinking needs no new code: the existing `sonnet-5` substring gate already covers it. `XHIGH_MODEL_REFS` lists `anthropic/claude-sonnet-5-5` in all 12 copies, directly in front of the family 78 Opus 5.5 ref (families 78/80 refs stay contiguous).
|
|
2859
|
+
- **Aliases** (marker `JOHNNESS_PATCH_SONNET_55_MODEL`, a fourth `Object.assign(DEFAULT_MODEL_ALIASES, ...)` block in all 14 copies): `sonnet` -> `anthropic/claude-sonnet-5-5`, `sonnet5` -> `anthropic/claude-sonnet-5` (the previous version stays reachable). `opus`/`opus5`, the GPT-6/GPT-5.6 lines, `grok`, `astra`, `fable`, `sonnet46`, `deepseek` (Flash), `deepseek-pro`, `muse`, `gemini`, `banana`, `terra` and `image` are unchanged. On the next config load the family 79 migration moves a user alias that pins Sonnet 5 under `sonnet` to Sonnet 5.5 and gives the old model `sonnet5`; cross-line pins (e.g. `sonnet` on a Fable model) stay.
|
|
2860
|
+
- **Exact replay.** `scripts/patch-sonnet-5-5-model.py` with `patches/sonnet-5-5/changes.json` (29 files: catalog, `models.js`, the Anthropic adapter, 12 thinking copies, 14 alias copies). Preimage/postimage sha256, all-file preflight, `--check`, `--record`, `--dependency-only`, `--present-only`. Families 67, 78 and 80 reverse the family 82 edits before their historical hash checks (80 re-layers them after replaying its own edits); the family 67 replay fixture now replays 78, 79, 80 and 82 in order.
|
|
2861
|
+
- Verifier 82.1-82.12; 63.12 now expects four contract blocks. Tests: `tests/sonnet-5-5-model.test.mjs` (catalog in both the overlay and installed pi-ai, the adaptive effort/temperature wire path, 12 xhigh copies, 14 alias copies, the family 79 migration, exact replay and older-family replays). Counts pinned by `fable-51-model` (anthropic catalog 30 -> 31) and the family 79 migration fixture were updated.
|
|
2862
|
+
- Live probes 2026-09-29 (128 max tokens, "Answer with the single word: OK"): the default request and the harness-shaped `thinking: {type: "adaptive"}` + `output_config: {effort: "xhigh"}` request both returned HTTP 200 with `stop_reason: end_turn`.
|
|
2863
|
+
- Roll back with `npm i -g johns-harness@2026.9.35`.
|
package/docs/PROVIDER-CATALOG.md
CHANGED
|
@@ -12,7 +12,7 @@ pinned 2026.3.7 foundation, not an upstream upgrade or a default-model change.
|
|
|
12
12
|
| Meta | `muse-spark-1.3` (current), `muse-spark-1.2` (retained) | Responses, `https://api.meta.ai/v1` | text/image | 1,048,576 context; 131,072 output |
|
|
13
13
|
| Google | `gemini-3.8-flash`, `gemini-3.5-flash-lite`; `gemini-3.1-pro-preview` remains explicitly preview | native `generateContent` | text/image in pi-ai; native API also accepts other media | 1,048,576 input; 65,536 output |
|
|
14
14
|
| OpenAI | `gpt-6-astra`, `gpt-6-sol`, `gpt-6-luna` (Family 80), `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna` | Responses on API-key provider; Codex Responses on subscription | text/image | Native API 1,050,000 context / 922,000 input / 128,000 output; existing 272,000 effective harness context retained |
|
|
15
|
-
| Anthropic | `claude-fable-5-1`, `claude-opus-5`, `claude-sonnet-5` | native Messages | text/image | Native 1M context / 128,000 output; Fable/Opus 300K owner caps retained, Sonnet
|
|
15
|
+
| Anthropic | `claude-sonnet-5-5` (Family 82, current), `claude-opus-5-5` (Family 78), `claude-fable-5-1`, `claude-opus-5`, `claude-sonnet-5` | native Messages | text/image | Native 1M context / 128,000 output; Fable/Opus 300K owner caps and Opus 5.5's 500K cap retained, Sonnet 175K effective context retained (Sonnet 5.5 keeps it) |
|
|
16
16
|
| xAI | `grok-4.7` (Family 80, current), `grok-4.6` (retained) | Chat Completions | text/image | Native 500K context; exactly 200K owner cap retained; 64K output (4.7 does not publish a max output; the 4.6 value is kept) |
|
|
17
17
|
|
|
18
18
|
`deepseek-flash` is **DeepSeek V4.1 Flash**, not “V1-flash.” The authenticated
|
|
@@ -56,9 +56,9 @@ Registry presence does not promise account entitlement.
|
|
|
56
56
|
preserves its native minimal default. 3.8 Flash still maps minimal to LOW because
|
|
57
57
|
the live API rejects MINIMAL (Family 50). No synthetic thinkingBudget is sent.
|
|
58
58
|
Deprecated/ignored temperature is omitted on 3.8 Flash and 3.5 Flash-Lite.
|
|
59
|
-
- **Claude:** current Fable 5/5.1, Opus 5 and Sonnet 5 preserve native xhigh
|
|
60
|
-
than silently downgrading it to high or promoting it to max. Low-level max
|
|
61
|
-
distinct. Minimal maps to low. Adaptive thinking has no manual token budget.
|
|
59
|
+
- **Claude:** current Fable 5/5.1, Opus 5/5.5 and Sonnet 5/5.5 preserve native xhigh
|
|
60
|
+
rather than silently downgrading it to high or promoting it to max. Low-level max
|
|
61
|
+
remains distinct. Minimal maps to low. Adaptive thinking has no manual token budget.
|
|
62
62
|
Missing effort/thinking stays omitted (current provider defaults). Unsupported
|
|
63
63
|
sampling temperature is omitted even when the caller supplies no thinking field.
|
|
64
64
|
Earlier Claude mappings remain untouched. Fable is always-thinking; Opus 5 now
|
|
@@ -96,6 +96,7 @@ change global thinking semantics.
|
|
|
96
96
|
| GPT-5.6 Sol | 4 | 20 | 0.40 | 5 |
|
|
97
97
|
| GPT-5.6 Terra | 2 | 12 | 0.20 | 2.50 |
|
|
98
98
|
| GPT-5.6 Luna | 0.20 | 1.20 | 0.02 | 0.25 |
|
|
99
|
+
| Claude Sonnet 5.5 | 2 | 10 | 0.20 | 2.50 (5m) |
|
|
99
100
|
| Claude Sonnet 5 | 2 | 10 | 0.20 | 2.50 (5m) |
|
|
100
101
|
| Claude Opus 5 | 5 | 25 | 0.50 | 6.25 (5m) |
|
|
101
102
|
| Claude Fable 5.1 | 10 | 50 | 0.25 | 12.50 (5m) |
|
|
@@ -140,6 +141,7 @@ requests were sent only to the relevant official host, with redirects disabled.
|
|
|
140
141
|
<https://developers.openai.com/api/docs/models/gpt-5.5.md>;
|
|
141
142
|
authenticated `GET https://api.openai.com/v1/models`.
|
|
142
143
|
- Anthropic: <https://platform.claude.com/docs/en/models/overview>,
|
|
144
|
+
<https://platform.claude.com/docs/en/models/sonnet-5-5/overview> (2026-09-29),
|
|
143
145
|
<https://platform.claude.com/docs/en/models/fable-5-1/overview>,
|
|
144
146
|
<https://platform.claude.com/docs/en/build-with-claude/effort>,
|
|
145
147
|
<https://platform.claude.com/docs/en/models/opus-5/migration-guide>;
|
|
@@ -157,8 +159,12 @@ Harmless direct HTTP inference returned 200 on DeepSeek Flash/Pro, Astra API,
|
|
|
157
159
|
Gemini 3.8 Flash and 3.5 Flash-Lite, Grok 4.6, and Claude Fable 5.1/Opus 5/Sonnet 5.
|
|
158
160
|
On 2026-09-24 (Family 80) direct HTTP inference returned 200 on `gpt-6-sol` and
|
|
159
161
|
`gpt-6-luna` (OpenAI API key, Responses) and `grok-4.7` (xAI key, Chat Completions).
|
|
160
|
-
|
|
161
|
-
|
|
162
|
+
On 2026-09-29 (Family 82) direct HTTP inference returned 200 on `claude-sonnet-5-5`
|
|
163
|
+
(Anthropic API key, Messages): the default request and the harness-shaped
|
|
164
|
+
`thinking: {type: "adaptive"}` + `output_config.effort: "xhigh"` request both
|
|
165
|
+
completed with `stop_reason: end_turn`. The Codex subscription entries were not
|
|
166
|
+
probed directly; they share the Codex Responses transport already used by the
|
|
167
|
+
GPT-5.6 and Astra subscription entries.
|
|
162
168
|
Claude native xhigh and Gemini Lite MINIMAL were specifically exercised. Direct
|
|
163
169
|
provider probes are not represented as ChatGPT subscription entitlement checks.
|
|
164
170
|
Offline tests additionally cover actual local HTTP/SSE DeepSeek parsing, tool calls,
|
|
@@ -1666,6 +1666,30 @@ export const MODELS = {
|
|
|
1666
1666
|
contextWindow: 300000, // JOHNNESS_PATCH_FABLE_51_CONTEXT_300K
|
|
1667
1667
|
maxTokens: 128000,
|
|
1668
1668
|
},
|
|
1669
|
+
/* JOHNNESS_PATCH_SONNET_55_MODEL (family 82): Claude Sonnet 5.5. API id "claude-sonnet-5-5" (fixed id, no
|
|
1670
|
+
date suffix) confirmed against platform.claude.com/docs/en/models/sonnet-5-5/overview on
|
|
1671
|
+
2026-09-29: $2/$10 per MTok, cache reads $0.20, 5m cache writes $2.50, 1h writes $4,
|
|
1672
|
+
1M native context, 128K max output, adaptive thinking on by default (effort low through
|
|
1673
|
+
max, default high; between_tools turns up-front thinking off). temperature/top_p/top_k
|
|
1674
|
+
non-default values return 400. contextWindow capped at 175000, the standing Sonnet
|
|
1675
|
+
window (Sonnet 5 value retained; owner caps do not change). */
|
|
1676
|
+
"claude-sonnet-5-5": {
|
|
1677
|
+
id: "claude-sonnet-5-5",
|
|
1678
|
+
name: "Claude Sonnet 5.5",
|
|
1679
|
+
api: "anthropic-messages",
|
|
1680
|
+
provider: "anthropic",
|
|
1681
|
+
baseUrl: "https://api.anthropic.com",
|
|
1682
|
+
reasoning: true,
|
|
1683
|
+
input: ["text", "image"],
|
|
1684
|
+
cost: {
|
|
1685
|
+
input: 2,
|
|
1686
|
+
output: 10,
|
|
1687
|
+
cacheRead: 0.2,
|
|
1688
|
+
cacheWrite: 2.5,
|
|
1689
|
+
},
|
|
1690
|
+
contextWindow: 175000,
|
|
1691
|
+
maxTokens: 128000,
|
|
1692
|
+
},
|
|
1669
1693
|
/* JOHNNESS_PATCH_OPUS_55_MODEL (family 78): Claude Opus 5.5. API id "claude-opus-5-5" (fixed id, no
|
|
1670
1694
|
date suffix) confirmed against platform.claude.com/docs/en/models/opus-5-5 on
|
|
1671
1695
|
2026-09-23: $4/$20 per MTok, cache reads $0.20, 5m cache writes $5, 1M native
|
|
@@ -39,6 +39,7 @@ export function supportsXhigh(model) {
|
|
|
39
39
|
if (model.provider === "deepseek" && ["deepseek-flash", "deepseek-v4-pro"].includes(model.id)) return true;
|
|
40
40
|
if (model.provider === "anthropic" && ["claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-fable-5-1"].includes(model.id)) return true;
|
|
41
41
|
if (model.provider === "anthropic" && model.id === "claude-opus-5-5") return true; // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
42
|
+
if (model.provider === "anthropic" && model.id === "claude-sonnet-5-5") return true; // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
42
43
|
// JOHNNESS_PATCH_MUSE_SPARK
|
|
43
44
|
if (model.provider === "meta" && ["muse-spark-1.3", "muse-spark-1.2"].includes(model.id)) return true;
|
|
44
45
|
if (model.id.includes("gpt-5.2") || model.id.includes("gpt-5.3")) {
|
|
@@ -353,7 +353,7 @@ function supportsAdaptiveThinking(modelId) {
|
|
|
353
353
|
*/
|
|
354
354
|
function mapThinkingLevelToEffort(level, modelId) {
|
|
355
355
|
// JOHNNESS_PATCH_PROVIDER_CATALOG_67: modern Claude supports distinct xhigh/max.
|
|
356
|
-
if (["claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-fable-5-1", "claude-opus-5-5"].includes(modelId)) { // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
356
|
+
if (["claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-fable-5-1", "claude-opus-5-5", "claude-sonnet-5-5"].includes(modelId)) { // JOHNNESS_PATCH_OPUS_55_MODEL JOHNNESS_PATCH_SONNET_55_MODEL
|
|
357
357
|
if (["low", "medium", "high", "xhigh", "max"].includes(level)) return level;
|
|
358
358
|
return level === "minimal" ? "low" : "high";
|
|
359
359
|
}
|
|
@@ -533,7 +533,7 @@ function buildParams(model, context, isOAuthToken, options) {
|
|
|
533
533
|
}
|
|
534
534
|
// Temperature is incompatible with extended thinking (adaptive or budget-based).
|
|
535
535
|
if (options?.temperature !== undefined && !options?.thinkingEnabled &&
|
|
536
|
-
!["claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-fable-5-1", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-5-5"].includes(model.id)) { // JOHNNESS_PATCH_PROVIDER_CATALOG_67 JOHNNESS_PATCH_OPUS_55_MODEL
|
|
536
|
+
!["claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-fable-5-1", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-5-5", "claude-sonnet-5-5"].includes(model.id)) { // JOHNNESS_PATCH_PROVIDER_CATALOG_67 JOHNNESS_PATCH_OPUS_55_MODEL JOHNNESS_PATCH_SONNET_55_MODEL
|
|
537
537
|
params.temperature = options.temperature;
|
|
538
538
|
}
|
|
539
539
|
if (context.tools) {
|
package/package.json
CHANGED
|
@@ -1666,6 +1666,30 @@ export const MODELS = {
|
|
|
1666
1666
|
contextWindow: 300000, // JOHNNESS_PATCH_FABLE_51_CONTEXT_300K
|
|
1667
1667
|
maxTokens: 128000,
|
|
1668
1668
|
},
|
|
1669
|
+
/* JOHNNESS_PATCH_SONNET_55_MODEL (family 82): Claude Sonnet 5.5. API id "claude-sonnet-5-5" (fixed id, no
|
|
1670
|
+
date suffix) confirmed against platform.claude.com/docs/en/models/sonnet-5-5/overview on
|
|
1671
|
+
2026-09-29: $2/$10 per MTok, cache reads $0.20, 5m cache writes $2.50, 1h writes $4,
|
|
1672
|
+
1M native context, 128K max output, adaptive thinking on by default (effort low through
|
|
1673
|
+
max, default high; between_tools turns up-front thinking off). temperature/top_p/top_k
|
|
1674
|
+
non-default values return 400. contextWindow capped at 175000, the standing Sonnet
|
|
1675
|
+
window (Sonnet 5 value retained; owner caps do not change). */
|
|
1676
|
+
"claude-sonnet-5-5": {
|
|
1677
|
+
id: "claude-sonnet-5-5",
|
|
1678
|
+
name: "Claude Sonnet 5.5",
|
|
1679
|
+
api: "anthropic-messages",
|
|
1680
|
+
provider: "anthropic",
|
|
1681
|
+
baseUrl: "https://api.anthropic.com",
|
|
1682
|
+
reasoning: true,
|
|
1683
|
+
input: ["text", "image"],
|
|
1684
|
+
cost: {
|
|
1685
|
+
input: 2,
|
|
1686
|
+
output: 10,
|
|
1687
|
+
cacheRead: 0.2,
|
|
1688
|
+
cacheWrite: 2.5,
|
|
1689
|
+
},
|
|
1690
|
+
contextWindow: 175000,
|
|
1691
|
+
maxTokens: 128000,
|
|
1692
|
+
},
|
|
1669
1693
|
/* JOHNNESS_PATCH_OPUS_55_MODEL (family 78): Claude Opus 5.5. API id "claude-opus-5-5" (fixed id, no
|
|
1670
1694
|
date suffix) confirmed against platform.claude.com/docs/en/models/opus-5-5 on
|
|
1671
1695
|
2026-09-23: $4/$20 per MTok, cache reads $0.20, 5m cache writes $5, 1M native
|
|
@@ -39,6 +39,7 @@ export function supportsXhigh(model) {
|
|
|
39
39
|
if (model.provider === "deepseek" && ["deepseek-flash", "deepseek-v4-pro"].includes(model.id)) return true;
|
|
40
40
|
if (model.provider === "anthropic" && ["claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-fable-5-1"].includes(model.id)) return true;
|
|
41
41
|
if (model.provider === "anthropic" && model.id === "claude-opus-5-5") return true; // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
42
|
+
if (model.provider === "anthropic" && model.id === "claude-sonnet-5-5") return true; // JOHNNESS_PATCH_SONNET_55_MODEL
|
|
42
43
|
// JOHNNESS_PATCH_MUSE_SPARK
|
|
43
44
|
if (model.provider === "meta" && ["muse-spark-1.3", "muse-spark-1.2"].includes(model.id)) return true;
|
|
44
45
|
if (model.id.includes("gpt-5.2") || model.id.includes("gpt-5.3")) {
|
|
@@ -353,7 +353,7 @@ function supportsAdaptiveThinking(modelId) {
|
|
|
353
353
|
*/
|
|
354
354
|
function mapThinkingLevelToEffort(level, modelId) {
|
|
355
355
|
// JOHNNESS_PATCH_PROVIDER_CATALOG_67: modern Claude supports distinct xhigh/max.
|
|
356
|
-
if (["claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-fable-5-1", "claude-opus-5-5"].includes(modelId)) { // JOHNNESS_PATCH_OPUS_55_MODEL
|
|
356
|
+
if (["claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-fable-5-1", "claude-opus-5-5", "claude-sonnet-5-5"].includes(modelId)) { // JOHNNESS_PATCH_OPUS_55_MODEL JOHNNESS_PATCH_SONNET_55_MODEL
|
|
357
357
|
if (["low", "medium", "high", "xhigh", "max"].includes(level)) return level;
|
|
358
358
|
return level === "minimal" ? "low" : "high";
|
|
359
359
|
}
|
|
@@ -533,7 +533,7 @@ function buildParams(model, context, isOAuthToken, options) {
|
|
|
533
533
|
}
|
|
534
534
|
// Temperature is incompatible with extended thinking (adaptive or budget-based).
|
|
535
535
|
if (options?.temperature !== undefined && !options?.thinkingEnabled &&
|
|
536
|
-
!["claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-fable-5-1", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-5-5"].includes(model.id)) { // JOHNNESS_PATCH_PROVIDER_CATALOG_67 JOHNNESS_PATCH_OPUS_55_MODEL
|
|
536
|
+
!["claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-fable-5-1", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-5-5", "claude-sonnet-5-5"].includes(model.id)) { // JOHNNESS_PATCH_PROVIDER_CATALOG_67 JOHNNESS_PATCH_OPUS_55_MODEL JOHNNESS_PATCH_SONNET_55_MODEL
|
|
537
537
|
params.temperature = options.temperature;
|
|
538
538
|
}
|
|
539
539
|
if (context.tools) {
|