jeo-code 0.11.4 → 0.11.5
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 +17 -0
- package/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +1 -1
- package/README.zh.md +1 -1
- package/package.json +1 -1
- package/src/agent/web-search.ts +1 -1
- package/src/ai/model-catalog-compat.ts +2 -2
- package/src/ai/model-catalog.ts +7 -1
- package/src/ai/model-registry.ts +6 -0
- package/src/ai/pricing.ts +4 -0
- package/src/ai/providers/anthropic.ts +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,23 @@ The README mirrors the latest 5 entries — regenerate with `bun run changelog:s
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.11.5] - 2026-10-04
|
|
13
|
+
_Anthropic login now runs Opus 5.5 and Sonnet 5.5 as the selected models: the OAuth client version gate and incompatible fast-mode temperature are fixed, with real request and streaming responses verified._
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- **Anthropic 5.5 model selection** — `opus5.5` / `opus-5.5` select `claude-opus-5-5`; `sonnet5.5` / `sonnet-5.5` select `claude-sonnet-5-5`. Catalog metadata reflects the official 1M context, 128K output and adaptive-thinking support; Opus 5.5 pricing is $4 input / $20 output per million tokens.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- **Opus 5.5 rejected after OAuth login** — update the shared request User-Agent and billing-header client version from 2.1.63 to 2.1.289, satisfying Anthropic's observed 2.1.280 minimum. The companion Anthropic web-search OAuth path uses the same supported version.
|
|
20
|
+
- **Fast-mode 5.5 requests rejected on temperature** — omit custom temperature for Opus/Sonnet 5.5 and newer before the first request; retain the selected wire model and existing older-model recovery behavior.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- **Anthropic setup recommendation and automatic routing** — Sonnet 5.5 is the recommended setup model and high-tier automatic pick; the complex-tier automatic pick moves from Fable 5 to Opus 5.5 under the existing catalog ranking. Explicit model pins and the legacy bare `opus` / `sonnet` aliases remain unchanged.
|
|
24
|
+
|
|
25
|
+
### Verified
|
|
26
|
+
- Real Anthropic OAuth requests returned HTTP 200 with exact `claude-opus-5-5` and `claude-sonnet-5-5` response identities in both low-effort and fast mode. Both models also completed real streaming requests with matching `message_start.model` and `message_stop`.
|
|
27
|
+
- Modified behavioral regressions: 292 pass, 0 fail across 11 files; `bun run typecheck` passed. Regression coverage enforces OAuth client version eligibility, first-request sampling compatibility, exact model preservation, setup defaults, pricing and web-search headers.
|
|
28
|
+
|
|
12
29
|
## [0.11.4] - 2026-10-01
|
|
13
30
|
_The release pipeline could not actually release: 13 tests failed on Linux CI only, and the stored npm token no longer authenticated. Both are fixed at the root — the suite is order-independent, and publishing no longer depends on a secret that can expire._
|
|
14
31
|
|
package/README.ja.md
CHANGED
|
@@ -348,10 +348,10 @@ CI は `.github/workflows/npm-publish.yml` で公開します — GitHub リリ
|
|
|
348
348
|
|
|
349
349
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
350
350
|
- **[Unreleased]**
|
|
351
|
+
- **[0.11.5]** (2026-10-04) — Anthropic login now runs Opus 5.5 and Sonnet 5.5 as the selected models: the OAuth client version gate and incompatible fast-mode temperature are fixed, with real request and streaming responses verified.
|
|
351
352
|
- **[0.11.4]** (2026-10-01) — The release pipeline could not actually release: 13 tests failed on Linux CI only, and the stored npm token no longer authenticated. Both are fixed at the root — the suite is order-independent, and publishing no longer depends on a secret that can expire.
|
|
352
353
|
- **[0.11.3]** (2026-10-01) — Remote control grew from one Telegram bot into one shared daemon serving Telegram, Discord, and Slack — and the workflow gates that were meant to block unverified work (`approve`/`team` plan identity, `done` re-checks, the autopilot ratchet) now actually block it.
|
|
353
354
|
- **[0.11.2]** (2026-09-30) — OpenAI model pickers now follow the authenticated API and Codex catalogs, including subscription-only models, without hidden or stale entries.
|
|
354
|
-
- **[0.11.1]** (2026-08-25) — Every non-interactive `jeo` run hung forever once Telegram notifications were configured — `echo "..." | jeo`, `jeo -p "..."` in CI, any scripted use. The work completed and the command returned; the process just never exited.
|
|
355
355
|
|
|
356
356
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
357
357
|
<!-- CHANGELOG:END -->
|
package/README.ko.md
CHANGED
|
@@ -350,10 +350,10 @@ CI는 `.github/workflows/npm-publish.yml`로 배포합니다 — GitHub 릴리
|
|
|
350
350
|
|
|
351
351
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
352
352
|
- **[Unreleased]**
|
|
353
|
+
- **[0.11.5]** (2026-10-04) — Anthropic login now runs Opus 5.5 and Sonnet 5.5 as the selected models: the OAuth client version gate and incompatible fast-mode temperature are fixed, with real request and streaming responses verified.
|
|
353
354
|
- **[0.11.4]** (2026-10-01) — The release pipeline could not actually release: 13 tests failed on Linux CI only, and the stored npm token no longer authenticated. Both are fixed at the root — the suite is order-independent, and publishing no longer depends on a secret that can expire.
|
|
354
355
|
- **[0.11.3]** (2026-10-01) — Remote control grew from one Telegram bot into one shared daemon serving Telegram, Discord, and Slack — and the workflow gates that were meant to block unverified work (`approve`/`team` plan identity, `done` re-checks, the autopilot ratchet) now actually block it.
|
|
355
356
|
- **[0.11.2]** (2026-09-30) — OpenAI model pickers now follow the authenticated API and Codex catalogs, including subscription-only models, without hidden or stale entries.
|
|
356
|
-
- **[0.11.1]** (2026-08-25) — Every non-interactive `jeo` run hung forever once Telegram notifications were configured — `echo "..." | jeo`, `jeo -p "..."` in CI, any scripted use. The work completed and the command returned; the process just never exited.
|
|
357
357
|
|
|
358
358
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
359
359
|
<!-- CHANGELOG:END -->
|
package/README.md
CHANGED
|
@@ -356,10 +356,10 @@ Huge thanks to [gajae-code](https://github.com/Yeachan-Heo/gajae-code) for the i
|
|
|
356
356
|
|
|
357
357
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
358
358
|
- **[Unreleased]**
|
|
359
|
+
- **[0.11.5]** (2026-10-04) — Anthropic login now runs Opus 5.5 and Sonnet 5.5 as the selected models: the OAuth client version gate and incompatible fast-mode temperature are fixed, with real request and streaming responses verified.
|
|
359
360
|
- **[0.11.4]** (2026-10-01) — The release pipeline could not actually release: 13 tests failed on Linux CI only, and the stored npm token no longer authenticated. Both are fixed at the root — the suite is order-independent, and publishing no longer depends on a secret that can expire.
|
|
360
361
|
- **[0.11.3]** (2026-10-01) — Remote control grew from one Telegram bot into one shared daemon serving Telegram, Discord, and Slack — and the workflow gates that were meant to block unverified work (`approve`/`team` plan identity, `done` re-checks, the autopilot ratchet) now actually block it.
|
|
361
362
|
- **[0.11.2]** (2026-09-30) — OpenAI model pickers now follow the authenticated API and Codex catalogs, including subscription-only models, without hidden or stale entries.
|
|
362
|
-
- **[0.11.1]** (2026-08-25) — Every non-interactive `jeo` run hung forever once Telegram notifications were configured — `echo "..." | jeo`, `jeo -p "..."` in CI, any scripted use. The work completed and the command returned; the process just never exited.
|
|
363
363
|
|
|
364
364
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
365
365
|
<!-- CHANGELOG:END -->
|
package/README.zh.md
CHANGED
|
@@ -346,10 +346,10 @@ CI 通过 `.github/workflows/npm-publish.yml` 发布 — GitHub 发布 release
|
|
|
346
346
|
|
|
347
347
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
348
348
|
- **[Unreleased]**
|
|
349
|
+
- **[0.11.5]** (2026-10-04) — Anthropic login now runs Opus 5.5 and Sonnet 5.5 as the selected models: the OAuth client version gate and incompatible fast-mode temperature are fixed, with real request and streaming responses verified.
|
|
349
350
|
- **[0.11.4]** (2026-10-01) — The release pipeline could not actually release: 13 tests failed on Linux CI only, and the stored npm token no longer authenticated. Both are fixed at the root — the suite is order-independent, and publishing no longer depends on a secret that can expire.
|
|
350
351
|
- **[0.11.3]** (2026-10-01) — Remote control grew from one Telegram bot into one shared daemon serving Telegram, Discord, and Slack — and the workflow gates that were meant to block unverified work (`approve`/`team` plan identity, `done` re-checks, the autopilot ratchet) now actually block it.
|
|
351
352
|
- **[0.11.2]** (2026-09-30) — OpenAI model pickers now follow the authenticated API and Codex catalogs, including subscription-only models, without hidden or stale entries.
|
|
352
|
-
- **[0.11.1]** (2026-08-25) — Every non-interactive `jeo` run hung forever once Telegram notifications were configured — `echo "..." | jeo`, `jeo -p "..."` in CI, any scripted use. The work completed and the command returned; the process just never exited.
|
|
353
353
|
|
|
354
354
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
355
355
|
<!-- CHANGELOG:END -->
|
package/package.json
CHANGED
package/src/agent/web-search.ts
CHANGED
|
@@ -76,7 +76,7 @@ const SEARCH_SYSTEM_PROMPT =
|
|
|
76
76
|
|
|
77
77
|
// Claude Code OAuth request shape (mirrors src/ai/providers/anthropic.ts —
|
|
78
78
|
// Anthropic OAuth tokens are scoped to Claude Code-shaped requests).
|
|
79
|
-
const CLAUDE_CODE_VERSION = "2.1.
|
|
79
|
+
const CLAUDE_CODE_VERSION = "2.1.289";
|
|
80
80
|
const CLAUDE_CODE_SYSTEM_INSTRUCTION = "You are a Claude agent, built on Anthropic's Claude Agent SDK.";
|
|
81
81
|
const ANTHROPIC_OAUTH_BETA = [
|
|
82
82
|
"claude-code-20250219",
|
|
@@ -27,10 +27,10 @@ export interface ModelCatalogEntry {
|
|
|
27
27
|
/** Canonical ids surfaced as a provider's recommended default — the current
|
|
28
28
|
* (2026-07 deep-research verified) general-availability flagship per provider,
|
|
29
29
|
* NOT necessarily the single most expensive/most-capable model (e.g. Anthropic's
|
|
30
|
-
* actual top tier, claude-fable-5, is pricier than the "recommended" sonnet-5 —
|
|
30
|
+
* actual top tier, claude-fable-5, is pricier than the "recommended" sonnet-5-5 —
|
|
31
31
|
* recommended means "solid everyday default", not "strongest"). Re-verify and
|
|
32
32
|
* update whenever a provider ships a new default-tier release. */
|
|
33
|
-
const RECOMMENDED: Record<string, true> = { "claude-sonnet-5": true, "gpt-5.5": true, "gemini-3-flash": true, "antigravity/gemini-pro-agent": true, "qwen2.5": true };
|
|
33
|
+
const RECOMMENDED: Record<string, true> = { "claude-sonnet-5-5": true, "gpt-5.5": true, "gemini-3-flash": true, "antigravity/gemini-pro-agent": true, "qwen2.5": true };
|
|
34
34
|
|
|
35
35
|
export function normalizeModelId(id: string): string {
|
|
36
36
|
return (id ?? "").trim().toLowerCase();
|
package/src/ai/model-catalog.ts
CHANGED
|
@@ -80,7 +80,13 @@ const STD: ThinkLevel[] = ["low", "medium", "high"];
|
|
|
80
80
|
* (`cheapestCredentialed`/`strongestCredentialed`/`compareStrengthAscending`)
|
|
81
81
|
* now tiebreak on `releaseDate` directly rather than relying on position. */
|
|
82
82
|
export const MODEL_CATALOG: readonly CatalogModel[] = [
|
|
83
|
-
// Anthropic (newest first: sonnet-5 > fable-5 > opus-4-8 > opus-4-7 > sonnet-4-6 > opus-4-6). 4.5-and-below dropped from jeo's exposed model list per user direction.
|
|
83
|
+
// Anthropic (newest first: sonnet-5-5 > opus-5-5 > sonnet-5 > fable-5 > opus-4-8 > opus-4-7 > sonnet-4-6 > opus-4-6). 4.5-and-below dropped from jeo's exposed model list per user direction.
|
|
84
|
+
// 5.5 generation (platform.claude.com/docs/en/models/{opus-5-5,sonnet-5-5}/overview): dateless pinned wire ids
|
|
85
|
+
// `claude-opus-5-5` (released 2026-09-22) / `claude-sonnet-5-5` (2026-09-28), 1M ctx / 128k sync max output, adaptive
|
|
86
|
+
// thinking (Opus 5.5 always on; Sonnet 5.5 on by default), text+image input. Canonical == wire id; anthropic.ts already
|
|
87
|
+
// classifies major >= 5 as adaptive + display:"summarized".
|
|
88
|
+
{ canonical: "claude-sonnet-5-5", provider: "anthropic", providerModel: "claude-sonnet-5-5", contextTokens: 1_000_000, maxOutputTokens: 128_000, thinking: FULL, images: true, releaseDate: "2026-09" },
|
|
89
|
+
{ canonical: "claude-opus-5-5", provider: "anthropic", providerModel: "claude-opus-5-5", contextTokens: 1_000_000, maxOutputTokens: 128_000, thinking: FULL, images: true, releaseDate: "2026-09" },
|
|
84
90
|
{ canonical: "claude-sonnet-5", provider: "anthropic", providerModel: "claude-sonnet-5", contextTokens: 1_000_000, maxOutputTokens: 128_000, thinking: FULL, images: true, releaseDate: "2026-06" },
|
|
85
91
|
// Fable 5 = Anthropic's most capable widely-released model (adaptive thinking always on);
|
|
86
92
|
// Mythos 5 is limited-availability (Project Glasswing) but callable by id for approved accounts.
|
package/src/ai/model-registry.ts
CHANGED
|
@@ -15,6 +15,12 @@ export const BUILTIN_ALIASES: ModelAliases = {
|
|
|
15
15
|
flash: "gemini-2.5-flash",
|
|
16
16
|
grok: "grok-4.3",
|
|
17
17
|
kimi: "kimi-k2-0711-preview",
|
|
18
|
+
// Anthropic 5.5 generation: spellings that name the version. Bare `opus`/`sonnet` above stay on the
|
|
19
|
+
// 4.6 ids (pinned backward-compat); users opt into 5.5 by naming the version.
|
|
20
|
+
"opus-5.5": "claude-opus-5-5",
|
|
21
|
+
"sonnet-5.5": "claude-sonnet-5-5",
|
|
22
|
+
"opus5.5": "claude-opus-5-5",
|
|
23
|
+
"sonnet5.5": "claude-sonnet-5-5",
|
|
18
24
|
// Antigravity's backend DEPRECATED this wire id (deprecatedModelIds:
|
|
19
25
|
// { "gemini-3.1-pro-high": { newModelId: "gemini-pro-agent" } }) — keep
|
|
20
26
|
// existing configs/roles pinned to the old id working on the successor.
|
package/src/ai/pricing.ts
CHANGED
|
@@ -30,6 +30,10 @@ const PRICE_TABLE: ReadonlyArray<readonly [pattern: string, price: ModelPrice]>
|
|
|
30
30
|
["claude-opus-4-8", { inPerM: 5, outPerM: 25 }],
|
|
31
31
|
["claude-fable", { inPerM: 10, outPerM: 50 }],
|
|
32
32
|
["claude-mythos", { inPerM: 10, outPerM: 50 }],
|
|
33
|
+
// Opus 5.5 = $4/$20 (Anthropic pricing page). MUST precede the generic `claude-opus` row or the
|
|
34
|
+
// substring match prices it at the legacy $15/$75 and skews cost-ranked routing. Sonnet 5.5 shares
|
|
35
|
+
// Sonnet 5's $2/$10 and is already covered by the `claude-sonnet-5` row below.
|
|
36
|
+
["claude-opus-5-5", { inPerM: 4, outPerM: 20 }],
|
|
33
37
|
["claude-opus", { inPerM: 15, outPerM: 75 }],
|
|
34
38
|
["claude-sonnet-5", { inPerM: 2, outPerM: 10 }],
|
|
35
39
|
["claude-sonnet", { inPerM: 3, outPerM: 15 }],
|
|
@@ -10,7 +10,7 @@ import { jeoEnv } from "../../util/env";
|
|
|
10
10
|
const ANTHROPIC_URL = "https://api.anthropic.com/v1/messages";
|
|
11
11
|
|
|
12
12
|
const DEPRECATED_TEMPERATURE = "`temperature` is deprecated for this model.";
|
|
13
|
-
const CLAUDE_CODE_VERSION = "2.1.
|
|
13
|
+
const CLAUDE_CODE_VERSION = "2.1.289";
|
|
14
14
|
const CLAUDE_CODE_SYSTEM_INSTRUCTION = "You are a Claude agent, built on Anthropic's Claude Agent SDK.";
|
|
15
15
|
const CLAUDE_BILLING_HEADER_PREFIX = "x-anthropic-billing-header:";
|
|
16
16
|
/** Betas needed for API-key requests: interleaved-thinking enables thinking+tools,
|
|
@@ -324,7 +324,11 @@ export function anthropicPayload(
|
|
|
324
324
|
if (thinkingMode === "budget-effort" && !disableEffort) payload.output_config = { effort: anthropicAdaptiveEffort(effort) };
|
|
325
325
|
}
|
|
326
326
|
} else if (includeTemperature && options.temperature !== undefined) {
|
|
327
|
-
|
|
327
|
+
// Opus/Sonnet 5.5 reject custom sampling even without explicit thinking.
|
|
328
|
+
const version = parseAnthropicVersion(model);
|
|
329
|
+
const fixedSampling = version && (version.kind === "opus" || version.kind === "sonnet")
|
|
330
|
+
&& (version.major > 5 || (version.major === 5 && version.minor >= 5));
|
|
331
|
+
if (!fixedSampling) payload.temperature = options.temperature;
|
|
328
332
|
}
|
|
329
333
|
if (options.tools?.length) {
|
|
330
334
|
// NATIVE tool-calling: declare jeo's tools as Anthropic functions. tool_choice
|