cli-jaw 2.17.41 → 2.17.42
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/README.md +3 -3
- package/dist/bin/commands/browser.js +52 -5
- package/dist/bin/commands/browser.js.map +1 -1
- package/dist/src/agent/args.js +69 -19
- package/dist/src/agent/args.js.map +1 -1
- package/dist/src/agent/codex-app-events.js +31 -1
- package/dist/src/agent/codex-app-events.js.map +1 -1
- package/dist/src/agent/cursor-model-inventory.js +140 -0
- package/dist/src/agent/cursor-model-inventory.js.map +1 -0
- package/dist/src/agent/grok-models.js +80 -0
- package/dist/src/agent/grok-models.js.map +1 -0
- package/dist/src/browser/actions.js +383 -20
- package/dist/src/browser/actions.js.map +1 -1
- package/dist/src/browser/grounding-candidate.js +272 -0
- package/dist/src/browser/grounding-candidate.js.map +1 -0
- package/dist/src/browser/grounding-eval.js +247 -0
- package/dist/src/browser/grounding-eval.js.map +1 -0
- package/dist/src/browser/image-size.js +63 -0
- package/dist/src/browser/image-size.js.map +1 -0
- package/dist/src/browser/index.js +1 -0
- package/dist/src/browser/index.js.map +1 -1
- package/dist/src/browser/occlusion.js +148 -0
- package/dist/src/browser/occlusion.js.map +1 -0
- package/dist/src/browser/verify-candidate.js +162 -0
- package/dist/src/browser/verify-candidate.js.map +1 -0
- package/dist/src/browser/vision-input.js +74 -0
- package/dist/src/browser/vision-input.js.map +1 -0
- package/dist/src/browser/vision-provider.js +75 -0
- package/dist/src/browser/vision-provider.js.map +1 -0
- package/dist/src/browser/vision.js +360 -47
- package/dist/src/browser/vision.js.map +1 -1
- package/dist/src/browser/web-ai/candidate-reconcile.js +14 -5
- package/dist/src/browser/web-ai/candidate-reconcile.js.map +1 -1
- package/dist/src/cli/claude-model-discovery.js +175 -0
- package/dist/src/cli/claude-model-discovery.js.map +1 -0
- package/dist/src/cli/claude-models.js +46 -0
- package/dist/src/cli/claude-models.js.map +1 -1
- package/dist/src/cli/registry-live.js +104 -1
- package/dist/src/cli/registry-live.js.map +1 -1
- package/dist/src/cli/registry.js +28 -5
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/code-mode/host.js +6 -0
- package/dist/src/code-mode/host.js.map +1 -1
- package/dist/src/code-mode/manager.js +37 -8
- package/dist/src/code-mode/manager.js.map +1 -1
- package/dist/src/code-mode/providers/catalog.js +53 -1
- package/dist/src/code-mode/providers/catalog.js.map +1 -1
- package/dist/src/code-mode/providers/codex-app.js +6 -0
- package/dist/src/code-mode/providers/codex-app.js.map +1 -1
- package/dist/src/code-mode/providers/live-models.js +85 -0
- package/dist/src/code-mode/providers/live-models.js.map +1 -0
- package/dist/src/code-mode/providers/provider-live-models.js +120 -0
- package/dist/src/code-mode/providers/provider-live-models.js.map +1 -0
- package/dist/src/code-mode/session.js +37 -0
- package/dist/src/code-mode/session.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +24 -14
- package/dist/src/prompt/templates/control-system.md +6 -11
- package/dist/src/prompt/templates/employee.md +5 -5
- package/dist/src/routes/browser.js +17 -5
- package/dist/src/routes/browser.js.map +1 -1
- package/package.json +1 -1
- package/public/css/activity.css +20 -1
- package/public/css/layout.css +7 -3
- package/public/dist/.vite/manifest.json +104 -105
- package/public/dist/assets/Agent-CQ4EBgY8.js +1 -0
- package/public/dist/assets/CodeCanvas-DWsx6sv5.js +2 -0
- package/public/dist/assets/DashboardMeta-Dh-tasbY.js +1 -0
- package/public/dist/assets/Display-NrqY_IaN.js +1 -0
- package/public/dist/assets/{Permissions-BzbnqenZ.js → Permissions-Bh947tUG.js} +1 -1
- package/public/dist/assets/Permissions-DzNJCt8K.js +1 -0
- package/public/dist/assets/app-BCBnxiGr.css +1 -0
- package/public/dist/assets/{app-x5Kray4W.js → app-Q0prKOFx.js} +4 -4
- package/public/dist/assets/{bgtask-badge-W9djRQVu.js → bgtask-badge-DAcWaUfS.js} +1 -1
- package/public/dist/assets/bgtask-badge-DHA2OQm8.js +1 -0
- package/public/dist/assets/{employees--_dmDw_a.js → employees-CWS3Juca.js} +1 -1
- package/public/dist/assets/{iframe-renderer-D4BmLtAq.js → iframe-renderer-DCDKBMb7.js} +2 -2
- package/public/dist/assets/iframe-renderer-RpvBly2x.js +1 -0
- package/public/dist/assets/manager-Nk7-RYPs.css +1 -0
- package/public/dist/assets/manager-XkR-DRaQ.js +5 -0
- package/public/dist/assets/manager-shortcuts-jsiX-zV6.js +1 -0
- package/public/dist/assets/memory-4YH8sz0L.js +1 -0
- package/public/dist/assets/{memory-DENQWzM8.js → memory-DhNdKZLO.js} +1 -1
- package/public/dist/assets/{message-history-BsrLcGJj.js → message-history-DbRTl1P0.js} +1 -1
- package/public/dist/assets/message-history-lVcLpAw8.js +1 -0
- package/public/dist/assets/{render-CF6Q1oIh.js → render-DP8SJtdZ.js} +1 -1
- package/public/dist/assets/settings--EGy3_B9.js +1 -0
- package/public/dist/assets/settings-85n9NjvX.js +1 -0
- package/public/dist/assets/{settings-B-C_jdZR.js → settings-C9_D-pn0.js} +32 -32
- package/public/dist/assets/settings-core-8wBl1mg-.js +1 -0
- package/public/dist/assets/{settings-core-BzAJLsKN.js → settings-core-BcVD2FgV.js} +1 -1
- package/public/dist/assets/{settings-embedding-dEMyByVi.js → settings-embedding-BSpq785l.js} +1 -1
- package/public/dist/assets/{settings-embedding-BSA42oKM.css → settings-embedding-LIMq5ebM.css} +1 -1
- package/public/dist/assets/{sidebar-fFEOpvJl.js → sidebar-BVhLb5Ft.js} +3 -3
- package/public/dist/assets/skills-6GFkHTlQ.js +1 -0
- package/public/dist/assets/{skills-Da_b06ci.js → skills-X7qxmHka.js} +1 -1
- package/public/dist/assets/{slash-commands-BbPUHHF4.js → slash-commands-BnDH4IU_.js} +1 -1
- package/public/dist/assets/slash-commands-qu8fPAZ3.js +1 -0
- package/public/dist/assets/{trace-drawer-B-QmzUfP.js → trace-drawer-DasaS1z4.js} +1 -1
- package/public/dist/assets/{ui-CkRUrIfp.js → ui-BtiBTXng.js} +1 -1
- package/public/dist/assets/ui-BucJ1zMA.js +1 -0
- package/public/dist/index.html +2 -2
- package/public/dist/manager/index.html +3 -3
- package/public/dist/settings/index.html +2 -2
- package/public/js/features/settings.ts +16 -0
- package/public/manager/src/App.tsx +10 -12
- package/public/manager/src/AppChrome.tsx +2 -3
- package/public/manager/src/InstancePreview.tsx +47 -0
- package/public/manager/src/SidebarRailRouter.tsx +34 -30
- package/public/manager/src/code/CodeComposer.tsx +31 -6
- package/public/manager/src/code/CodeSessionList.tsx +25 -7
- package/public/manager/src/code/CodeToastHost.tsx +49 -0
- package/public/manager/src/code/CodeTranscript.tsx +136 -26
- package/public/manager/src/code/CodeWorkbench.tsx +16 -2
- package/public/manager/src/code/ComposerFooter.tsx +130 -46
- package/public/manager/src/code/ContextUsageMeter.tsx +72 -0
- package/public/manager/src/code/ProviderGlyph.tsx +58 -0
- package/public/manager/src/code/code-composer.css +159 -175
- package/public/manager/src/code/code-controller-runtime.ts +3 -1
- package/public/manager/src/code/code-session-state.ts +7 -1
- package/public/manager/src/code/code-toasts.ts +73 -0
- package/public/manager/src/code/code-workbench.css +42 -1
- package/public/manager/src/code/code.css +130 -15
- package/public/manager/src/code/context-usage.ts +74 -0
- package/public/manager/src/code/pending-user-item.ts +46 -0
- package/public/manager/src/code/session-order.ts +70 -0
- package/public/manager/src/code/tool-summary.ts +101 -0
- package/public/manager/src/code/use-dictation.ts +130 -0
- package/public/manager/src/components/CommandCenter.tsx +4 -8
- package/public/manager/src/components/InstanceDetailPanel.tsx +0 -18
- package/public/manager/src/components/Workbench.tsx +6 -10
- package/public/manager/src/components/WorkbenchHeader.tsx +0 -11
- package/public/manager/src/dashboard-settings/dashboard-settings-ui.ts +3 -1
- package/public/manager/src/hooks/useDashboardView.ts +38 -38
- package/public/manager/src/manager-components.css +0 -8
- package/public/manager/src/manager-shortcut-runner.ts +0 -1
- package/public/manager/src/manager-shortcuts.ts +0 -2
- package/public/manager/src/settings/pages/Agent.tsx +5 -2
- package/public/manager/src/settings/pages/DashboardMeta.tsx +20 -1
- package/public/manager/src/settings/pages/Permissions.tsx +23 -4
- package/public/manager/src/settings/pages/components/agent/PermissionQuickSection.tsx +6 -2
- package/public/manager/src/settings/pages/components/agent/agent-save.ts +24 -1
- package/public/manager/src/settings/settings-icons.ts +3 -1
- package/public/manager/src/settings/settings-registry.ts +3 -3
- package/public/manager/src/settings-controls.css +0 -1
- package/public/manager/src/settings-standalone.tsx +8 -8
- package/public/manager/src/types.ts +0 -1
- package/scripts/check-private-boundary.mjs +101 -0
- package/scripts/grounding-eval.mjs +223 -0
- package/public/dist/assets/Agent-B8ZEWJ6B.js +0 -1
- package/public/dist/assets/CodeCanvas-Bj3lTSu6.js +0 -2
- package/public/dist/assets/DashboardMeta-CmZavI4H.js +0 -1
- package/public/dist/assets/Display-DFkjKcMk.js +0 -1
- package/public/dist/assets/Permissions-CJftCO6p.js +0 -1
- package/public/dist/assets/app-DVbrIl8f.css +0 -1
- package/public/dist/assets/bgtask-badge-CuAc8bAl.js +0 -1
- package/public/dist/assets/iframe-renderer-By2WO5bd.js +0 -1
- package/public/dist/assets/manager-CxLXWCGi.css +0 -1
- package/public/dist/assets/manager-DA3dF3eN.js +0 -5
- package/public/dist/assets/manager-shortcuts-CzGkE0ZG.js +0 -1
- package/public/dist/assets/memory-thjr2apY.js +0 -1
- package/public/dist/assets/message-history-CfU7_P5t.js +0 -1
- package/public/dist/assets/settings-DXA5L4DR.js +0 -1
- package/public/dist/assets/settings-Dy_IaNVH.js +0 -1
- package/public/dist/assets/settings-core-D7sAQqhC.js +0 -1
- package/public/dist/assets/skills-BcIievZp.js +0 -1
- package/public/dist/assets/slash-commands-B-5Shayl.js +0 -1
- package/public/dist/assets/ui-CJLdMfRx.js +0 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live Claude model catalog, read from the installed Claude Code bundle.
|
|
3
|
+
*
|
|
4
|
+
* Claude Code exposes no `--list-models` command and `claude models` does not
|
|
5
|
+
* exist, so the only observation available is the bundle itself. It carries the
|
|
6
|
+
* provider mapping table for every model it accepts (`first_party:"claude-..."`),
|
|
7
|
+
* the short-alias table it resolves `opus`/`sonnet`/`haiku`/`fable` through, and
|
|
8
|
+
* a literal `<id>[1m]` for each model whose 1M context window it enables.
|
|
9
|
+
*
|
|
10
|
+
* Reading a 190MB binary sounds expensive; measured against Claude Code 2.1.263 a
|
|
11
|
+
* streaming scan finishes in ~105ms, which fits the background-refresh pattern the
|
|
12
|
+
* Codex catalog already uses. This is a file read, so it does not violate the
|
|
13
|
+
* "catalogs must never execute a CLI" rule in code-mode/providers/catalog.ts.
|
|
14
|
+
*/
|
|
15
|
+
import { createReadStream } from 'node:fs';
|
|
16
|
+
import { stat } from 'node:fs/promises';
|
|
17
|
+
/**
|
|
18
|
+
* Generations old enough that the bundle keeps them only for compatibility. They
|
|
19
|
+
* are real ids the CLI would accept, but offering `claude-3-5-sonnet-20241022` in
|
|
20
|
+
* a picker is noise, so discovery keeps the modern families and lets the static
|
|
21
|
+
* seed decide anything older.
|
|
22
|
+
*/
|
|
23
|
+
const LEGACY_ID_PATTERN = /^claude-(?:3-|opus-4-(?:0|1|20|5)|sonnet-4-(?:0|20|5)|haiku-(?:3|4-5-2))/;
|
|
24
|
+
/**
|
|
25
|
+
* `mythos` ids appear in the bundle's provider table but are not offered as coding
|
|
26
|
+
* models by the CLI, so they are excluded rather than surfaced as selectable.
|
|
27
|
+
*/
|
|
28
|
+
const EXCLUDED_FAMILY_PATTERN = /^claude-mythos-/;
|
|
29
|
+
const FIRST_PARTY = /first_party:"(claude-[a-z0-9.-]+)"/g;
|
|
30
|
+
const ALIAS_TABLE = /\{fable:"([^"]+)",opus:"([^"]+)",sonnet:"([^"]+)",haiku:"([^"]+)"\}/;
|
|
31
|
+
const ONE_MILLION = /"(claude-[a-z0-9.-]+)\[1m\]"/g;
|
|
32
|
+
/** Longest pattern we must not split across chunk boundaries. */
|
|
33
|
+
const OVERLAP_BYTES = 512;
|
|
34
|
+
function isOfferable(id) {
|
|
35
|
+
return !LEGACY_ID_PATTERN.test(id) && !EXCLUDED_FAMILY_PATTERN.test(id);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Accumulate catalog evidence across a chunk sequence.
|
|
39
|
+
*
|
|
40
|
+
* Exported for tests: the parse is a pure fold over strings, so a fixture can
|
|
41
|
+
* exercise it without a 190MB binary. Callers must feed overlapping chunks (see
|
|
42
|
+
* `readClaudeBundleCatalog`) or a pattern spanning a boundary is missed.
|
|
43
|
+
*/
|
|
44
|
+
export function createClaudeCatalogScanner() {
|
|
45
|
+
const firstParty = new Set();
|
|
46
|
+
const oneMillion = new Set();
|
|
47
|
+
let aliases = null;
|
|
48
|
+
return {
|
|
49
|
+
push(chunk) {
|
|
50
|
+
FIRST_PARTY.lastIndex = 0;
|
|
51
|
+
for (let m = FIRST_PARTY.exec(chunk); m; m = FIRST_PARTY.exec(chunk)) {
|
|
52
|
+
if (m[1])
|
|
53
|
+
firstParty.add(m[1]);
|
|
54
|
+
}
|
|
55
|
+
ONE_MILLION.lastIndex = 0;
|
|
56
|
+
for (let m = ONE_MILLION.exec(chunk); m; m = ONE_MILLION.exec(chunk)) {
|
|
57
|
+
if (m[1])
|
|
58
|
+
oneMillion.add(m[1]);
|
|
59
|
+
}
|
|
60
|
+
if (!aliases) {
|
|
61
|
+
const table = ALIAS_TABLE.exec(chunk);
|
|
62
|
+
if (table) {
|
|
63
|
+
aliases = {
|
|
64
|
+
fable: table[1], opus: table[2],
|
|
65
|
+
sonnet: table[3], haiku: table[4],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
result() {
|
|
71
|
+
const offerable = [...firstParty].filter(isOfferable).sort();
|
|
72
|
+
return {
|
|
73
|
+
firstParty: offerable,
|
|
74
|
+
aliases: aliases ?? {},
|
|
75
|
+
// A 1M literal for a model we do not offer is not useful, and it would
|
|
76
|
+
// otherwise let a filtered legacy id back in through the variant list.
|
|
77
|
+
oneMillion: [...oneMillion].filter(isOfferable).sort(),
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/** @internal exported for unit tests */
|
|
83
|
+
export function parseClaudeBundleCatalog(chunks) {
|
|
84
|
+
const scanner = createClaudeCatalogScanner();
|
|
85
|
+
for (const chunk of chunks)
|
|
86
|
+
scanner.push(chunk);
|
|
87
|
+
return scanner.result();
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Expand a catalog into the model list cli-jaw offers.
|
|
91
|
+
*
|
|
92
|
+
* `[1m]` variants are derived from observation rather than listed by hand: the
|
|
93
|
+
* bundle carries the literal only for models whose 1M window it enables, which is
|
|
94
|
+
* why Haiku has no variant. Aliases come first because Claude Code resolves them
|
|
95
|
+
* to the current snapshot, then pinned ids for callers who want a stable cache
|
|
96
|
+
* prefix across CLI updates.
|
|
97
|
+
*/
|
|
98
|
+
export function claudeCatalogToChoices(catalog) {
|
|
99
|
+
const oneMillion = new Set(catalog.oneMillion);
|
|
100
|
+
const out = [];
|
|
101
|
+
const seen = new Set();
|
|
102
|
+
const push = (value) => {
|
|
103
|
+
if (!value || seen.has(value))
|
|
104
|
+
return;
|
|
105
|
+
seen.add(value);
|
|
106
|
+
out.push(value);
|
|
107
|
+
};
|
|
108
|
+
for (const alias of ['opus', 'sonnet', 'haiku', 'fable']) {
|
|
109
|
+
if (catalog.aliases[alias])
|
|
110
|
+
push(alias);
|
|
111
|
+
}
|
|
112
|
+
for (const id of catalog.firstParty) {
|
|
113
|
+
push(id);
|
|
114
|
+
if (oneMillion.has(id))
|
|
115
|
+
push(`${id}[1m]`);
|
|
116
|
+
}
|
|
117
|
+
return out;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Stream the bundle and extract its catalog. Returns null on any read failure so
|
|
121
|
+
* the caller keeps whatever it already had.
|
|
122
|
+
*/
|
|
123
|
+
export async function readClaudeBundleCatalog(binaryPath) {
|
|
124
|
+
if (!binaryPath)
|
|
125
|
+
return null;
|
|
126
|
+
try {
|
|
127
|
+
const scanner = createClaudeCatalogScanner();
|
|
128
|
+
const stream = createReadStream(binaryPath, { highWaterMark: 1 << 20 });
|
|
129
|
+
let tail = '';
|
|
130
|
+
for await (const chunk of stream) {
|
|
131
|
+
// latin1 keeps one byte per char, so a regex offset cannot desynchronize
|
|
132
|
+
// from the file the way a multi-byte decode would.
|
|
133
|
+
const text = tail + chunk.toString('latin1');
|
|
134
|
+
scanner.push(text);
|
|
135
|
+
tail = text.slice(-OVERLAP_BYTES);
|
|
136
|
+
}
|
|
137
|
+
const catalog = scanner.result();
|
|
138
|
+
// An empty scan means the bundle shape changed. Reporting null lets the
|
|
139
|
+
// static seed stand instead of emptying the picker.
|
|
140
|
+
return catalog.firstParty.length > 0 ? catalog : null;
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
let cached = null;
|
|
147
|
+
/**
|
|
148
|
+
* Cached read keyed on the bundle's size and mtime. Claude Code replaces the whole
|
|
149
|
+
* file on update, so that pair changes exactly when the catalog can change, and a
|
|
150
|
+
* steady-state install pays the scan once.
|
|
151
|
+
*/
|
|
152
|
+
export async function resolveClaudeBundleCatalog(binaryPath) {
|
|
153
|
+
if (!binaryPath)
|
|
154
|
+
return null;
|
|
155
|
+
let key;
|
|
156
|
+
try {
|
|
157
|
+
const info = await stat(binaryPath);
|
|
158
|
+
key = `${binaryPath}:${info.size}:${info.mtimeMs}`;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
if (cached && cached.key === key)
|
|
164
|
+
return cached.catalog;
|
|
165
|
+
const catalog = await readClaudeBundleCatalog(binaryPath);
|
|
166
|
+
if (!catalog)
|
|
167
|
+
return null;
|
|
168
|
+
cached = { key, catalog };
|
|
169
|
+
return catalog;
|
|
170
|
+
}
|
|
171
|
+
/** @internal exported for unit tests */
|
|
172
|
+
export function resetClaudeBundleCatalogCacheForTest() {
|
|
173
|
+
cached = null;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=claude-model-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-model-discovery.js","sourceRoot":"","sources":["../../../src/cli/claude-model-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,4 +87,50 @@ export function getClaudeModelKind(model) {
|
|
|
87
87
|
return 'legacy';
|
|
88
88
|
return 'explicit';
|
|
89
89
|
}
|
|
90
|
+
// ─── Effort ladder ────────────────────────────────────────────────
|
|
91
|
+
/**
|
|
92
|
+
* The efforts Claude Code's `--effort` flag accepts, verbatim from its help text:
|
|
93
|
+
* "Effort level for the current session (low, medium, high, xhigh, max)".
|
|
94
|
+
*/
|
|
95
|
+
export const CLAUDE_WIRE_EFFORTS = ['low', 'medium', 'high', 'xhigh', 'max'];
|
|
96
|
+
/**
|
|
97
|
+
* `ultracode` is offered as a sixth rung even though the flag does not accept it.
|
|
98
|
+
* The bundle resolves the tier from `settings.ultracode === true` and reports
|
|
99
|
+
* `xhigh`, so cli-jaw presents one choice and splits it at the wire (see
|
|
100
|
+
* `normalizeClaudeEffort` and `claudeSettingsArgs` in `src/agent/args.ts`).
|
|
101
|
+
*
|
|
102
|
+
* Claude Code refuses ultracode unless the model supports xhigh, dynamic workflows
|
|
103
|
+
* are enabled, and the organization permits xhigh. Only the model condition is
|
|
104
|
+
* knowable here, so that is the one this list encodes; the other two surface as a
|
|
105
|
+
* runtime message from Claude Code itself.
|
|
106
|
+
*/
|
|
107
|
+
export const CLAUDE_EFFORT_CHOICES = [...CLAUDE_WIRE_EFFORTS, 'ultracode'];
|
|
108
|
+
/**
|
|
109
|
+
* Families that predate extended reasoning. Claude Code reports "ultracode runs at
|
|
110
|
+
* xhigh effort, which <model> doesn't support" for these, so offering the rung
|
|
111
|
+
* would advertise a control that always fails.
|
|
112
|
+
*
|
|
113
|
+
* Matching is anchored on the family segment rather than the whole id so it covers
|
|
114
|
+
* both the full id and the short alias: `haiku` and `claude-haiku-4-5` are the same
|
|
115
|
+
* model, and only one of them carries the `claude-` prefix.
|
|
116
|
+
*/
|
|
117
|
+
const NO_XHIGH_PATTERN = /^(?:claude-)?(?:3-|haiku)/;
|
|
118
|
+
export function claudeModelSupportsXhigh(model) {
|
|
119
|
+
const value = (model || '').trim();
|
|
120
|
+
if (!value)
|
|
121
|
+
return false;
|
|
122
|
+
// The remaining short aliases (opus/sonnet/fable) resolve to current flagships,
|
|
123
|
+
// which all reach xhigh.
|
|
124
|
+
return !NO_XHIGH_PATTERN.test(value);
|
|
125
|
+
}
|
|
126
|
+
/** Per-model effort sets, narrowed so ultracode never appears where it cannot run. */
|
|
127
|
+
export function buildClaudeEffortsByModel(models) {
|
|
128
|
+
const out = {};
|
|
129
|
+
for (const model of models) {
|
|
130
|
+
out[model] = claudeModelSupportsXhigh(model)
|
|
131
|
+
? [...CLAUDE_EFFORT_CHOICES]
|
|
132
|
+
: [...CLAUDE_WIRE_EFFORTS];
|
|
133
|
+
}
|
|
134
|
+
return out;
|
|
135
|
+
}
|
|
90
136
|
//# sourceMappingURL=claude-models.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-models.js","sourceRoot":"","sources":["../../../src/cli/claude-models.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAErE,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,OAAO;CACC,CAAC;AAIX,yEAAyE;AACzE,0EAA0E;AAC1E,0EAA0E;AAC1E,4EAA4E;AAC5E,gEAAgE;AAChE,kCAAkC;AAElC,6CAA6C;AAE7C,8EAA8E;AAC9E,8EAA8E;AAC9E,2EAA2E;AAC3E,6EAA6E;AAC7E,yDAAyD;AAEzD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,oEAAoE;IACpE,oEAAoE;IACpE,kEAAkE;IAClE,sEAAsE;IACtE,yDAAyD;IACzD,kBAAkB;IAClB,gBAAgB;IAChB,oBAAoB;IACpB,iBAAiB;IACjB,qBAAqB;IACrB,eAAe;IACf,mBAAmB;IACnB,iBAAiB;IACjB,qBAAqB;IACrB,iBAAiB;IACjB,qBAAqB;IACrB,iBAAiB;IACjB,qBAAqB;IACrB,mBAAmB;IACnB,uBAAuB;IACvB,kBAAkB;CACV,CAAC;AAEX,yEAAyE;AACzE,sEAAsE;AACtE,oEAAoE;AACpE,sEAAsE;AACtE,oDAAoD;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC7D,iBAAiB,EAAE,iBAAiB;IACpC,iBAAiB,EAAE,iBAAiB;IACpC,iBAAiB,EAAE,iBAAiB;IACpC,mBAAmB,EAAE,mBAAmB;IACxC,mBAAmB,EAAE,mBAAmB;IACxC,kBAAkB,EAAE,kBAAkB;CACvC,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,UAAU,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,OAAQ,uBAA6C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,uBAAuB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,uEAAuE;IACvE,sEAAsE;IACtE,4CAA4C;IAC5C,OAAO,CAAC,GAAG,uBAAuB,EAAE,GAAG,sBAAsB,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,UAAU,CAAC;IAC9B,IAAI,sBAAsB,CAAC,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IACtD,IAAI,wBAAwB,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
1
|
+
{"version":3,"file":"claude-models.js","sourceRoot":"","sources":["../../../src/cli/claude-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { fetchKiroModelInventory } from '../agent/kiro-models.js';
|
|
2
|
+
import { fetchCursorModelInventory } from '../agent/cursor-model-inventory.js';
|
|
3
|
+
import { fetchGrokModelInventory } from '../agent/grok-models.js';
|
|
2
4
|
import { CLI_REGISTRY } from './registry.js';
|
|
5
|
+
import { claudeCatalogToChoices, resolveClaudeBundleCatalog } from './claude-model-discovery.js';
|
|
6
|
+
import { buildClaudeEffortsByModel } from './claude-models.js';
|
|
3
7
|
import { resolveOpenCodexCodexModelsDetailed } from './opencodex-models.js';
|
|
4
8
|
import { diagnoseOpenCodexExecution, resolveOpenCodexRuntime } from './opencodex-runtime.js';
|
|
5
9
|
import { readCodexRootOpenAiBaseUrl } from '../core/codex-config.js';
|
|
10
|
+
import { detectCli } from '../core/cli-detection.js';
|
|
6
11
|
/** Union of every per-model effort set, first-seen order preserved. */
|
|
7
12
|
function unionEfforts(effortsByModel) {
|
|
8
13
|
const seen = new Set();
|
|
@@ -19,9 +24,12 @@ function unionEfforts(effortsByModel) {
|
|
|
19
24
|
}
|
|
20
25
|
export async function buildLiveCliRegistry() {
|
|
21
26
|
const registry = structuredClone(CLI_REGISTRY);
|
|
22
|
-
const [kiroInventory, openCodexRuntime] = await Promise.all([
|
|
27
|
+
const [kiroInventory, openCodexRuntime, claudeCatalog, cursorInventory, grokInventory] = await Promise.all([
|
|
23
28
|
fetchKiroModelInventory(),
|
|
24
29
|
resolveOpenCodexRuntime(),
|
|
30
|
+
resolveClaudeCatalogForRegistry(),
|
|
31
|
+
fetchCursorModelInventory(),
|
|
32
|
+
fetchGrokModelInventory(),
|
|
25
33
|
]);
|
|
26
34
|
const codexResult = await resolveOpenCodexCodexModelsDetailed(openCodexRuntime);
|
|
27
35
|
const executionCoupling = diagnoseOpenCodexExecution(readCodexRootOpenAiBaseUrl(), openCodexRuntime);
|
|
@@ -94,6 +102,101 @@ export async function buildLiveCliRegistry() {
|
|
|
94
102
|
modelDetails: kiroInventory.entries,
|
|
95
103
|
};
|
|
96
104
|
}
|
|
105
|
+
if (cursorInventory?.baseModels.length) {
|
|
106
|
+
// The picker gets the derived base models, not the ~220 wire ids: effort is
|
|
107
|
+
// a separate control, and listing every suffixed id would ask the user to
|
|
108
|
+
// pick the same model a dozen times.
|
|
109
|
+
//
|
|
110
|
+
// `resolveCursorModelVariant` still resolves wire ids from its static set.
|
|
111
|
+
// It runs synchronously on the spawn path, so feeding it a discovered list
|
|
112
|
+
// would make spawning depend on a CLI probe.
|
|
113
|
+
registry['cursor'] = {
|
|
114
|
+
...registry['cursor'],
|
|
115
|
+
models: cursorInventory.baseModels,
|
|
116
|
+
modelSource: cursorInventory.source,
|
|
117
|
+
effortsByModel: cursorInventory.effortsByModel,
|
|
118
|
+
modelIds: cursorInventory.modelIds,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (grokInventory?.models.length) {
|
|
122
|
+
// `defaultModel` stays static even though the CLI names one, for the same
|
|
123
|
+
// buildDefaultPerCli() seeding reason as everywhere else; the observed
|
|
124
|
+
// default is reported separately for diagnostics.
|
|
125
|
+
registry['grok'] = {
|
|
126
|
+
...registry['grok'],
|
|
127
|
+
models: grokInventory.models,
|
|
128
|
+
modelSource: grokInventory.source,
|
|
129
|
+
...(grokInventory.defaultModel ? { observedDefaultModel: grokInventory.defaultModel } : {}),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
if (claudeCatalog) {
|
|
133
|
+
// `defaultModel` stays static for the same reason it does for Codex:
|
|
134
|
+
// buildDefaultPerCli() seeds user settings from it, so a bundle update must
|
|
135
|
+
// not silently repoint a user's default. The one exception is a default the
|
|
136
|
+
// live catalog no longer offers, which would be unselectable.
|
|
137
|
+
//
|
|
138
|
+
// Efforts are narrowed per model because `ultracode` needs xhigh support;
|
|
139
|
+
// the flat `efforts` union stays for legacy consumers.
|
|
140
|
+
const claudeEffortsByModel = buildClaudeEffortsByModel(claudeCatalog.models);
|
|
141
|
+
const claudePatch = {
|
|
142
|
+
models: claudeCatalog.models,
|
|
143
|
+
modelSource: 'claude-bundle',
|
|
144
|
+
modelAliases: claudeCatalog.aliases,
|
|
145
|
+
effortsByModel: claudeEffortsByModel,
|
|
146
|
+
};
|
|
147
|
+
for (const cli of ['claude', 'claude-e']) {
|
|
148
|
+
const entry = registry[cli];
|
|
149
|
+
if (!entry)
|
|
150
|
+
continue;
|
|
151
|
+
const staticDefault = entry['defaultModel'];
|
|
152
|
+
registry[cli] = {
|
|
153
|
+
...entry,
|
|
154
|
+
...claudePatch,
|
|
155
|
+
...(typeof staticDefault === 'string' && !claudeCatalog.models.includes(staticDefault)
|
|
156
|
+
? { defaultModel: claudeCatalog.models[0] }
|
|
157
|
+
: {}),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
const aiE = registry['ai-e'];
|
|
161
|
+
if (aiE) {
|
|
162
|
+
const modelsByProvider = {
|
|
163
|
+
...(aiE['modelsByProvider'] || {}),
|
|
164
|
+
claude: claudeCatalog.models,
|
|
165
|
+
};
|
|
166
|
+
const providers = Array.isArray(aiE['providers'])
|
|
167
|
+
? aiE['providers']
|
|
168
|
+
: Object.keys(modelsByProvider);
|
|
169
|
+
// Provider-scoped, never flat: `ai-e` shares model ids across providers
|
|
170
|
+
// and a flat map would offer Kiro an ultracode it cannot run.
|
|
171
|
+
const existingEffortsByModelByProvider = aiE['effortsByModelByProvider'] || {};
|
|
172
|
+
registry['ai-e'] = {
|
|
173
|
+
...aiE,
|
|
174
|
+
modelsByProvider,
|
|
175
|
+
effortsByModelByProvider: {
|
|
176
|
+
...existingEffortsByModelByProvider,
|
|
177
|
+
claude: claudeEffortsByModel,
|
|
178
|
+
},
|
|
179
|
+
models: providers.flatMap(provider => modelsByProvider[provider] || []),
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
97
183
|
return registry;
|
|
98
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Read the installed Claude Code bundle's catalog, if one is installed.
|
|
187
|
+
*
|
|
188
|
+
* A missing binary, an unreadable file or an unrecognized bundle shape all answer
|
|
189
|
+
* null, which leaves the static seed in `claude-models.ts` in place. Discovery
|
|
190
|
+
* never empties the picker.
|
|
191
|
+
*/
|
|
192
|
+
async function resolveClaudeCatalogForRegistry() {
|
|
193
|
+
const detection = detectCli('claude');
|
|
194
|
+
if (!detection.available || !detection.path)
|
|
195
|
+
return null;
|
|
196
|
+
const catalog = await resolveClaudeBundleCatalog(detection.path);
|
|
197
|
+
if (!catalog)
|
|
198
|
+
return null;
|
|
199
|
+
const models = claudeCatalogToChoices(catalog);
|
|
200
|
+
return models.length > 0 ? { models, aliases: catalog.aliases } : null;
|
|
201
|
+
}
|
|
99
202
|
//# sourceMappingURL=registry-live.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-live.js","sourceRoot":"","sources":["../../../src/cli/registry-live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry-live.js","sourceRoot":"","sources":["../../../src/cli/registry-live.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli/registry.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// ─── CLI Registry (single source of truth) ──────────
|
|
2
|
-
import { getDefaultClaudeChoices, getDefaultClaudeModel } from './claude-models.js';
|
|
2
|
+
import { CLAUDE_EFFORT_CHOICES, getDefaultClaudeChoices, getDefaultClaudeModel } from './claude-models.js';
|
|
3
3
|
import { CURSOR_EFFORT_CHOICES, CURSOR_REGISTRY_MODELS } from '../agent/cursor-runtime.js';
|
|
4
4
|
import { isSwitchableNativeCli } from '../agent/runtime/selection.js';
|
|
5
5
|
export const CODEX_MODEL_CHOICES = ['gpt-5.5', 'gpt-5.4', 'gpt-5.4-mini', 'gpt-5.3-codex-spark', 'gpt-5.6-sol', 'gpt-5.6-terra', 'gpt-5.6-luna'];
|
|
@@ -8,7 +8,23 @@ export const CODEX_MODEL_CHOICES = ['gpt-5.5', 'gpt-5.4', 'gpt-5.4-mini', 'gpt-5
|
|
|
8
8
|
* running, registry-live.ts replaces this with the live per-model sets, which
|
|
9
9
|
* can include `max` and `ultra`.
|
|
10
10
|
*/
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Static effort fallback for Codex when opencodex is not running. When ocx IS
|
|
13
|
+
* running, registry-live.ts replaces this with the live per-model sets, which
|
|
14
|
+
* narrow it per model — `gpt-5.6-sol` reaches `ultra` while `gpt-5.6-luna` stops
|
|
15
|
+
* at `max`.
|
|
16
|
+
*
|
|
17
|
+
* The fallback is deliberately the union rather than a per-model table. Its job is
|
|
18
|
+
* to keep the picker from emptying, not to be an accurate catalog, and a hand-kept
|
|
19
|
+
* table here would recreate exactly the manual sync debt live discovery removed.
|
|
20
|
+
* The rung that is wrong for a given model is also unreachable in practice: this
|
|
21
|
+
* list is only used when opencodex is absent, and Codex runs through that proxy.
|
|
22
|
+
*
|
|
23
|
+
* `minimal` is left out. It appears in the live union because some routed models
|
|
24
|
+
* advertise it, but none of the GPT ids in `CODEX_MODEL_CHOICES` were observed to
|
|
25
|
+
* take it, so offering it here would be a rung with nothing behind it.
|
|
26
|
+
*/
|
|
27
|
+
export const CODEX_EFFORT_CHOICES = ['low', 'medium', 'high', 'xhigh', 'max', 'ultra'];
|
|
12
28
|
export const CLI_REGISTRY = {
|
|
13
29
|
agy: {
|
|
14
30
|
label: 'Antigravity',
|
|
@@ -104,7 +120,11 @@ export const CLI_REGISTRY = {
|
|
|
104
120
|
},
|
|
105
121
|
effortsByProvider: {
|
|
106
122
|
claude: ['low', 'medium', 'high', 'xhigh', 'max'],
|
|
107
|
-
|
|
123
|
+
// Kept in step with CODEX_EFFORT_CHOICES by hand because this map is
|
|
124
|
+
// provider-scoped: ai-e forwards --effort directly (args.ts), so a
|
|
125
|
+
// narrower list here would hide max/ultra from the codex provider even
|
|
126
|
+
// when the top-level codex runtime offers them.
|
|
127
|
+
codex: [...CODEX_EFFORT_CHOICES],
|
|
108
128
|
grok: [],
|
|
109
129
|
copilot: ['low', 'medium', 'high'],
|
|
110
130
|
kiro: ['low', 'medium', 'high', 'xhigh'],
|
|
@@ -115,7 +135,10 @@ export const CLI_REGISTRY = {
|
|
|
115
135
|
binary: 'claude',
|
|
116
136
|
defaultModel: getDefaultClaudeModel(),
|
|
117
137
|
defaultEffort: 'medium',
|
|
118
|
-
|
|
138
|
+
// `ultracode` is a Claude Code session setting, not a wire effort; it is
|
|
139
|
+
// normalized to xhigh plus a settings flag in src/agent/args.ts. Live
|
|
140
|
+
// registry narrows it per model, since it needs xhigh support.
|
|
141
|
+
efforts: [...CLAUDE_EFFORT_CHOICES],
|
|
119
142
|
models: getDefaultClaudeChoices(),
|
|
120
143
|
},
|
|
121
144
|
'claude-e': {
|
|
@@ -124,7 +147,7 @@ export const CLI_REGISTRY = {
|
|
|
124
147
|
experimental: true,
|
|
125
148
|
defaultModel: getDefaultClaudeModel(),
|
|
126
149
|
defaultEffort: 'medium',
|
|
127
|
-
efforts: [
|
|
150
|
+
efforts: [...CLAUDE_EFFORT_CHOICES],
|
|
128
151
|
models: getDefaultClaudeChoices(),
|
|
129
152
|
},
|
|
130
153
|
codex: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/cli/registry.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/cli/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { join } from 'node:path';
|
|
|
4
4
|
import { publish } from '../core/event-bus.js';
|
|
5
5
|
import { CodeSessionManager } from './manager.js';
|
|
6
6
|
import { createCodeProviders } from './providers/catalog.js';
|
|
7
|
+
import { primeProviderLiveModels } from './providers/provider-live-models.js';
|
|
7
8
|
import { CodeStore } from './store.js';
|
|
8
9
|
/** No database, recovery or native runtime is opened until the service is used. */
|
|
9
10
|
export function createCodeHost(options) {
|
|
@@ -36,6 +37,11 @@ export function createCodeHost(options) {
|
|
|
36
37
|
service.recover();
|
|
37
38
|
database = candidate;
|
|
38
39
|
manager = service;
|
|
40
|
+
// Fill the Cursor and Grok snapshots once, here rather than on a
|
|
41
|
+
// catalog read: they are the two providers whose discovery spawns a
|
|
42
|
+
// CLI, and a catalog read must never do that. Failure is silent by
|
|
43
|
+
// design — the static registry list stands.
|
|
44
|
+
void primeProviderLiveModels().catch(() => { });
|
|
39
45
|
return service;
|
|
40
46
|
}
|
|
41
47
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/code-mode/host.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/code-mode/host.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,20 +62,44 @@ export class CodeSessionManager {
|
|
|
62
62
|
throw new CodeStoreError('unsupported_provider', 'Code provider is unsupported', 400);
|
|
63
63
|
return provider.describe();
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
/**
|
|
66
|
+
* `fixed` carries an existing session's stored capabilities. `accepted`
|
|
67
|
+
* names the values that session already runs with: a Codex catalog is live
|
|
68
|
+
* now, so its model list can shift under a running session, and rejecting a
|
|
69
|
+
* value that was legal at creation would break prompt, attach and patch for
|
|
70
|
+
* a reason the user can neither see nor act on. A value the caller is
|
|
71
|
+
* newly choosing is always checked against what the runtime serves today.
|
|
72
|
+
*/
|
|
73
|
+
validate(input, fixed, accepted) {
|
|
66
74
|
const catalog = this.catalog(input.provider);
|
|
67
75
|
if (!catalog.available)
|
|
68
76
|
throw new CodeServiceError('provider_unavailable', 'Code provider is unavailable');
|
|
69
|
-
|
|
77
|
+
const keptModel = accepted !== undefined && accepted.model === input.model;
|
|
78
|
+
if (!keptModel && !catalog.models.includes(input.model)) {
|
|
70
79
|
throw new CodeStoreError('unsupported_model', 'Code model is unsupported', 400);
|
|
80
|
+
}
|
|
81
|
+
const keptEffort = keptModel && accepted !== undefined && accepted.effort === input.effort;
|
|
71
82
|
for (const capabilities of fixed ? [fixed, catalog.capabilities] : [catalog.capabilities]) {
|
|
72
83
|
if (!capabilities.permissionModes.includes(input.permissionMode)) {
|
|
73
84
|
throw new CodeStoreError('unsupported_policy', 'Code permission mode is unsupported', 400);
|
|
74
85
|
}
|
|
75
|
-
|
|
86
|
+
// A kept effort skips the live union for the same reason a kept model
|
|
87
|
+
// skips the live model list: the catalog moves under a running session.
|
|
88
|
+
// The session's own stored capabilities still apply, since those are
|
|
89
|
+
// the contract the native runtime was opened with.
|
|
90
|
+
const live = capabilities === catalog.capabilities;
|
|
91
|
+
if (input.effort !== null && !(keptEffort && live) && !capabilities.efforts.includes(input.effort)) {
|
|
76
92
|
throw new CodeStoreError('unsupported_effort', 'Code effort is unsupported', 400);
|
|
77
93
|
}
|
|
78
94
|
}
|
|
95
|
+
// The union above is the widest legal set. When the runtime publishes a
|
|
96
|
+
// per-model set, narrow to it: routed models often accept no effort at
|
|
97
|
+
// all while a sibling model reaches `ultra`, and the chosen value is
|
|
98
|
+
// forwarded to the native wire.
|
|
99
|
+
const perModel = keptEffort ? undefined : catalog.effortsByModel?.[input.model];
|
|
100
|
+
if (input.effort !== null && perModel && !perModel.includes(input.effort)) {
|
|
101
|
+
throw new CodeStoreError('unsupported_effort', 'Code effort is unsupported', 400);
|
|
102
|
+
}
|
|
79
103
|
return catalog;
|
|
80
104
|
}
|
|
81
105
|
create(input) {
|
|
@@ -89,7 +113,10 @@ export class CodeSessionManager {
|
|
|
89
113
|
this.ready();
|
|
90
114
|
return this.storage(() => this.options.store.list(options)).map(row => {
|
|
91
115
|
try {
|
|
92
|
-
|
|
116
|
+
const service = this.sessions.get(row.sessionId);
|
|
117
|
+
const usage = service?.contextUsage() ?? null;
|
|
118
|
+
return { ...row, pendingPermissionCount: service?.pendingPermissions().length ?? 0,
|
|
119
|
+
...(usage ? { contextUsage: usage } : {}) };
|
|
93
120
|
}
|
|
94
121
|
catch {
|
|
95
122
|
return row;
|
|
@@ -104,7 +131,9 @@ export class CodeSessionManager {
|
|
|
104
131
|
const pendingPermissions = session?.pendingPermissions() ?? [];
|
|
105
132
|
const snapshot = this.storage(() => this.options.store.snapshot(id));
|
|
106
133
|
const current = pendingPermissions.filter(permission => permission.turnId === snapshot.session.turnId && permission.epoch === snapshot.session.epoch);
|
|
107
|
-
|
|
134
|
+
const usage = session?.contextUsage() ?? null;
|
|
135
|
+
return { ...snapshot, session: { ...snapshot.session, pendingPermissionCount: current.length,
|
|
136
|
+
...(usage ? { contextUsage: usage } : {}) }, pendingPermissions: current };
|
|
108
137
|
}
|
|
109
138
|
history(id, beforeSequence, limit) {
|
|
110
139
|
this.ready();
|
|
@@ -189,7 +218,7 @@ export class CodeSessionManager {
|
|
|
189
218
|
const duplicate = this.storage(() => this.options.store.admitTurn({ ...input, sessionId: id }));
|
|
190
219
|
return { receipt: duplicate.receipt, duplicate: true };
|
|
191
220
|
}
|
|
192
|
-
this.validate(record, record.capabilities);
|
|
221
|
+
this.validate(record, record.capabilities, record);
|
|
193
222
|
const session = this.reserve(record);
|
|
194
223
|
try {
|
|
195
224
|
const result = this.storage(() => this.options.store.admitTurn({ ...input, sessionId: id,
|
|
@@ -224,7 +253,7 @@ export class CodeSessionManager {
|
|
|
224
253
|
async attach(id) {
|
|
225
254
|
this.ready();
|
|
226
255
|
const record = this.record(id);
|
|
227
|
-
this.validate(record, record.capabilities);
|
|
256
|
+
this.validate(record, record.capabilities, record);
|
|
228
257
|
const session = this.reserve(record);
|
|
229
258
|
try {
|
|
230
259
|
const result = this.storage(() => this.options.store.beginAttach(id, record.revision));
|
|
@@ -249,7 +278,7 @@ export class CodeSessionManager {
|
|
|
249
278
|
|| (input.effort !== undefined && input.effort !== record.effort)
|
|
250
279
|
|| (input.permissionMode !== undefined && input.permissionMode !== record.permissionMode);
|
|
251
280
|
if (policy) {
|
|
252
|
-
this.validate({ ...record, ...input }, record.capabilities);
|
|
281
|
+
this.validate({ ...record, ...input }, record.capabilities, record);
|
|
253
282
|
if (policyChanged && record.nativeStarted && (!record.nativeCursor || !record.capabilities.resume)) {
|
|
254
283
|
throw new CodeStoreError('resume_unavailable', 'Code policy change requires resumable native history', 409);
|
|
255
284
|
}
|