@zhihaohong52/sonata 0.8.2 → 0.8.3

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/dist/init/toml.js CHANGED
@@ -148,4 +148,141 @@ existing) {
148
148
  lines.push('[run]', `tail_window_seconds = ${existingRun?.tailWindowSeconds ?? 20}`, `stall_timeout_seconds = ${existingRun?.stallTimeoutSeconds ?? 120}`, `run_timeout_seconds = ${existingRun?.runTimeoutSeconds ?? 1800}`, `dispatch_window_seconds = ${existingRun?.dispatchWindowSeconds ?? 1500}`, '');
149
149
  return lines.join('\n');
150
150
  }
151
+ /**
152
+ * Rewrite only the `[tiers]` tables of an existing config, byte-for-byte
153
+ * everywhere else.
154
+ *
155
+ * `sonata agents` re-ranks a tier, and that makes it the second writer of
156
+ * `sonata.toml`. The obvious route — round-trip the config back through
157
+ * `nativeTomlFor` — is the one to avoid: that function rebuilds the file from
158
+ * a reconstructed `NativeCandidate[]`, and anything the reconstruction cannot
159
+ * recover is deleted on write. That is exactly the shape of the bug that
160
+ * silently un-priced a gateway on every `sonata init`, and a *second* writer
161
+ * carrying the same hazard doubles the number of places it can recur.
162
+ *
163
+ * So this edits text instead. Preservation is not a list of fields that must
164
+ * be kept in step with `parseConfig` — it is the default, and the only thing
165
+ * that can be lost is a `[tiers.*]` table, which is what the caller is
166
+ * replacing. A table ends at the next line that opens one, which is the whole
167
+ * of TOML's block structure as this file uses it; the replacement lands where
168
+ * the first old table was, so a hand-ordered file keeps its shape.
169
+ *
170
+ * Two things stop the line scan from being naive about TOML. A multiline
171
+ * string can *contain* a line that looks like a table header, so the scanner
172
+ * tracks triple-quote state and reads nothing inside one as structure —
173
+ * without that, a `[tiers.code]` sitting in a prose value starts a drop that
174
+ * splices the replacement into the middle of the string. And a header may
175
+ * quote the segment (`["tiers".code]`), which names the same table; missing it
176
+ * would emit a second definition of it, and TOML refuses a redefined table.
177
+ * Neither shape is one sonata writes, but this reads files people edit, and
178
+ * both fail in a way that leaves the user unable to save at all.
179
+ */
180
+ /**
181
+ * The multiline-string delimiter this line leaves open, if any.
182
+ *
183
+ * Counting triple quotes was not enough: a comment such as
184
+ * `# TOML uses """ for multiline strings` opened a string that never closed,
185
+ * the scanner then read every real `[tiers.*]` header as content, and the new
186
+ * block was appended alongside the old ones — which `parseConfig` rejects as a
187
+ * redefined table, so the user simply could not save. A quoted value carrying
188
+ * the same characters is that trap from the other direction.
189
+ *
190
+ * So the line is walked rather than counted: a `#` reached outside a string
191
+ * ends it, single-line basic and literal strings are skipped whole (basic
192
+ * strings honour backslash escapes, literal ones do not — TOML has none inside
193
+ * single quotes), and only a triple quote met in value position toggles state.
194
+ */
195
+ function openDelimiterAfter(line) {
196
+ let open;
197
+ let i = 0;
198
+ while (i < line.length) {
199
+ if (open !== undefined) {
200
+ if (line.startsWith(open, i)) {
201
+ open = undefined;
202
+ i += 3;
203
+ }
204
+ else
205
+ i += 1;
206
+ continue;
207
+ }
208
+ // A `#` reached in value position starts a comment: nothing after it is
209
+ // structure, and nothing in it can open a string.
210
+ if (line[i] === '#')
211
+ return undefined;
212
+ if (line.startsWith('"""', i)) {
213
+ open = '"""';
214
+ i += 3;
215
+ continue;
216
+ }
217
+ if (line.startsWith("'''", i)) {
218
+ open = "'''";
219
+ i += 3;
220
+ continue;
221
+ }
222
+ if (line[i] === '"') {
223
+ i += 1;
224
+ while (i < line.length && line[i] !== '"')
225
+ i += line[i] === '\\' ? 2 : 1;
226
+ i += 1;
227
+ continue;
228
+ }
229
+ if (line[i] === "'") {
230
+ const end = line.indexOf("'", i + 1);
231
+ i = end === -1 ? line.length : end + 1;
232
+ continue;
233
+ }
234
+ i += 1;
235
+ }
236
+ return open;
237
+ }
238
+ export function replaceTiersBlock(toml, tiers) {
239
+ const lines = toml.split('\n');
240
+ const isHeader = (line) => /^\s*\[/.test(line);
241
+ // The segment may be bare or quoted; `["tiers".code]` names the same table.
242
+ const isTierHeader = (line) => /^\s*\[\s*(?:tiers|"tiers"|'tiers')\s*[.\]]/.test(line);
243
+ const kept = [];
244
+ let insertAt;
245
+ let dropping = false;
246
+ // The open multiline-string delimiter, while inside one. A line within a
247
+ // string is content, never structure — it neither opens a table nor ends
248
+ // the one being dropped.
249
+ let inString;
250
+ for (const line of lines) {
251
+ if (inString !== undefined) {
252
+ const closes = line.indexOf(inString);
253
+ // Content after the closing delimiter is ordinary TOML again, so the
254
+ // rest of the line is rescanned rather than assumed quiet.
255
+ inString = closes === -1 ? inString : openDelimiterAfter(line.slice(closes + inString.length));
256
+ if (!dropping)
257
+ kept.push(line);
258
+ else
259
+ insertAt ??= kept.length;
260
+ continue;
261
+ }
262
+ inString = openDelimiterAfter(line);
263
+ if (isHeader(line))
264
+ dropping = isTierHeader(line);
265
+ if (!dropping) {
266
+ kept.push(line);
267
+ continue;
268
+ }
269
+ // Remember where the first dropped table began, so the new block lands in
270
+ // the same place rather than at the end of a file someone has ordered.
271
+ insertAt ??= kept.length;
272
+ }
273
+ const block = Object.entries(tiers).flatMap(([role, lists]) => [
274
+ `[tiers.${tomlKey(role)}]`,
275
+ `simple = [${lists.simple.map(tomlKey).join(', ')}]`,
276
+ `complex = [${lists.complex.map(tomlKey).join(', ')}]`,
277
+ '',
278
+ ]);
279
+ if (insertAt === undefined) {
280
+ // No `[tiers]` at all. Appending is the only safe placement: these are
281
+ // table headers, so they cannot be inserted above one without capturing
282
+ // that table's keys.
283
+ const tail = kept.length > 0 && kept[kept.length - 1] !== '' ? [''] : [];
284
+ return [...kept, ...tail, ...block].join('\n');
285
+ }
286
+ return [...kept.slice(0, insertAt), ...block, ...kept.slice(insertAt)].join('\n');
287
+ }
151
288
  //# sourceMappingURL=toml.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toml.js","sourceRoot":"","sources":["../../src/init/toml.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toml.js","sourceRoot":"","sources":["../../src/init/toml.ts"],"names":[],"mappings":"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"}
package/dist/settings.js CHANGED
@@ -128,4 +128,32 @@ export function uninstallHook(settings, command, event = 'PreToolUse') {
128
128
  export function hookCommand(packageRoot) {
129
129
  return `node ${JSON.stringify(join(packageRoot, 'hooks', 'capture-mode.mjs'))}`;
130
130
  }
131
+ /**
132
+ * Removes the sonata tools from `permissions.allow`, and nothing else.
133
+ *
134
+ * The inverse of `allowSonataTools`, for `sonata reset`. Entries the user (or
135
+ * another tool) added stay, and an `allow` list left empty is dropped along
136
+ * with a `permissions` object that then holds nothing — so a settings file
137
+ * sonata was the only writer of comes back as close to untouched as a rewrite
138
+ * allows. A legacy `mcp__sonata__*` entry is swept too: it names a server this
139
+ * release no longer ships, so leaving it behind would keep granting a tool
140
+ * surface that does not exist.
141
+ */
142
+ export function revokeSonataTools(settings) {
143
+ const allow = settings.permissions?.allow;
144
+ if (allow === undefined)
145
+ return { settings, changed: false };
146
+ const kept = allow.filter((t) => !SONATA_TOOLS.includes(t) && !t.startsWith('mcp__sonata__'));
147
+ if (kept.length === allow.length)
148
+ return { settings, changed: false };
149
+ const permissions = { ...(settings.permissions ?? {}) };
150
+ if (kept.length === 0)
151
+ delete permissions.allow;
152
+ else
153
+ permissions.allow = kept;
154
+ const next = { ...settings, permissions: permissions };
155
+ if (Object.keys(permissions).length === 0)
156
+ delete next.permissions;
157
+ return { settings: next, changed: true };
158
+ }
131
159
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * The `sonata agents` browser: every tier agent, what it runs on, and a
4
+ * ranking editor one keystroke away.
5
+ *
6
+ * The list is role × tier rather than agent-shaped, even though two identical
7
+ * lists generate a single collapsed agent file. Editing is per-list — a
8
+ * collapsed pair has to be openable separately or there is no way to make the
9
+ * tiers differ again from here — so the rows are the things being edited, and
10
+ * a row whose pair collapses says which file it actually produces. That note
11
+ * comes from `tiersCollapse`, the same predicate `sync` writes by, so the
12
+ * screen cannot promise a file `sync` will not write.
13
+ */
14
+ import { useState } from 'react';
15
+ import { Box, Text, useInput } from 'ink';
16
+ import { RankedSelect } from './components/ranked-select.js';
17
+ import { TIER_NAMES, tiersCollapse } from '../config.js';
18
+ import { EXTENDED_CONTEXT_SUFFIX, tierQualifiesForExtendedContext } from '../extended-context.js';
19
+ /** One row per editable list, with the agent file each will land in. */
20
+ export function tierRows(config, tiers) {
21
+ return Object.entries(tiers).flatMap(([role, lists]) => {
22
+ const collapsed = tiersCollapse(lists);
23
+ return TIER_NAMES.map((tier) => ({
24
+ role,
25
+ tier,
26
+ keys: lists[tier],
27
+ agent: collapsed ? role : `${role}-${tier}`,
28
+ extendedContext: collapsed
29
+ ? tierQualifiesForExtendedContext(config, lists.simple)
30
+ && tierQualifiesForExtendedContext(config, lists.complex)
31
+ : tierQualifiesForExtendedContext(config, lists[tier]),
32
+ }));
33
+ });
34
+ }
35
+ export function AgentsApp(props) {
36
+ const { config, items, onDone } = props;
37
+ const [tiers, setTiers] = useState(props.initialTiers);
38
+ const [cursor, setCursor] = useState(0);
39
+ const [editing, setEditing] = useState(undefined);
40
+ const rows = tierRows(config, tiers);
41
+ const dirty = JSON.stringify(tiers) !== JSON.stringify(props.initialTiers);
42
+ useInput((input, key) => {
43
+ if (editing !== undefined)
44
+ return;
45
+ if (key.upArrow || input === 'k')
46
+ setCursor((c) => Math.max(0, c - 1));
47
+ else if (key.downArrow || input === 'j')
48
+ setCursor((c) => Math.min(rows.length - 1, c + 1));
49
+ else if (key.return)
50
+ setEditing(rows[cursor]);
51
+ else if (input === 'w')
52
+ onDone(dirty ? tiers : undefined);
53
+ else if (key.escape || input === 'q')
54
+ onDone(undefined);
55
+ }, { isActive: editing === undefined });
56
+ if (editing !== undefined) {
57
+ return _jsx(RankedSelect, { title: `${editing.role}: ${editing.tier} models — order is the fallback order`, items: items, initialRanked: editing.keys, footer: "enter confirms \u00B7 \u2190 back without changing this list", onSubmit: (ranked) => {
58
+ setTiers((current) => ({
59
+ ...current,
60
+ [editing.role]: { ...current[editing.role], [editing.tier]: ranked },
61
+ }));
62
+ setEditing(undefined);
63
+ }, onBack: () => setEditing(undefined), onCancel: () => setEditing(undefined) }, `${editing.role}-${editing.tier}`);
64
+ }
65
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "sonata agents" }), _jsx(Text, { dimColor: true, children: '↑↓ move · enter re-rank · w write · q quit without saving' }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: rows.map((row, index) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: index === cursor ? 'cyan' : undefined, children: [index === cursor ? '❯ ' : ' ', `${row.role}-${row.tier}`.padEnd(18), row.agent !== `${row.role}-${row.tier}` ? `→ ${row.agent}.md ` : '', row.extendedContext ? EXTENDED_CONTEXT_SUFFIX : ''] }), _jsxs(Text, { dimColor: true, children: [' ', row.keys.length === 0 ? '(empty — every dispatch falls through to sonata dispatch)' : row.keys.join(' → ')] })] }, `${row.role}-${row.tier}`))) }), dirty ? _jsx(Text, { color: "yellow", children: '\n unsaved changes — w writes them, q discards' }) : null] }));
66
+ }
67
+ //# sourceMappingURL=agents-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-app.js","sourceRoot":"","sources":["../../src/tui-ink/agents-app.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;AACH,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAqB,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AAalG,wEAAwE;AACxE,MAAM,UAAU,QAAQ,CAAC,MAAoB,EAAE,KAAY;IACzD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI;YACJ,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE;YAC3C,eAAe,EAAE,SAAS;gBACxB,CAAC,CAAC,+BAA+B,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;uBAClD,+BAA+B,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC3D,CAAC,CAAC,+BAA+B,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;SACzD,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACL,CAAC;AAWD,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAQ,KAAK,CAAC,YAAY,CAAC,CAAC;IAC9D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAsB,SAAS,CAAC,CAAC;IAEvE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAE3E,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO;QAClC,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,KAAK,GAAG;YAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAClE,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,KAAK,GAAG;YAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACvF,IAAI,GAAG,CAAC,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;aACzC,IAAI,KAAK,KAAK,GAAG;YAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aACrD,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,KAAK,GAAG;YAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC,CAAC;IAExC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,KAAC,YAAY,IAElB,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,uCAAuC,EAC9E,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,OAAO,CAAC,IAAI,EAC3B,MAAM,EAAC,8DAAoD,EAC3D,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;gBACnB,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACrB,GAAG,OAAO;oBACV,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE;iBACrE,CAAC,CAAC,CAAC;gBACJ,UAAU,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC,EACD,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EACnC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAbhC,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CActC,CAAC;IACL,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,oCAAqB,EAC/B,KAAC,IAAI,IAAC,QAAQ,kBAAE,2DAA2D,GAAQ,EACnF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACtC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACxB,MAAC,GAAG,IAAiC,aAAa,EAAC,QAAQ,aACzD,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,aAC/C,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAC9B,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EACpC,GAAG,CAAC,KAAK,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,EACpE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,IAC9C,EACP,MAAC,IAAI,IAAC,QAAQ,mBACX,QAAQ,EACR,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IACtG,KAVC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAW7B,CACP,CAAC,GACE,EACL,KAAK,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,iDAAiD,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC3F,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import { render } from 'ink';
3
+ import { AgentsApp } from './agents-app.js';
4
+ /**
5
+ * Render the agents browser and resolve only once Ink has released stdin.
6
+ *
7
+ * `waitUntilExit()` for the same reason `runInitTui` waits on it: `unmount()`
8
+ * starts a teardown that finishes asynchronously, and anything that reads
9
+ * stdin before it completes has the stream pulled out from under it.
10
+ */
11
+ export async function runAgentsTui(input) {
12
+ let outcome;
13
+ const instance = render(React.createElement(AgentsApp, {
14
+ ...input,
15
+ onDone: (tiers) => {
16
+ outcome = tiers;
17
+ instance.unmount();
18
+ },
19
+ }));
20
+ await instance.waitUntilExit();
21
+ return outcome;
22
+ }
23
+ //# sourceMappingURL=agents-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-run.js","sourceRoot":"","sources":["../../src/tui-ink/agents-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAC;AAGxD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAIlC;IACC,IAAI,OAA0B,CAAC;IAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE;QACrD,GAAG,KAAK;QACR,MAAM,EAAE,CAAC,KAAwB,EAAE,EAAE;YACnC,OAAO,GAAG,KAAK,CAAC;YAChB,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;KACF,CAAC,CAAC,CAAC;IACJ,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;IAC/B,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -89,6 +89,45 @@ export function providersForHarnesses(providers, harnesses) {
89
89
  const selected = new Set(harnesses);
90
90
  return providers.filter((provider) => PSEUDO_HARNESSES.includes(provider.harness) || selected.has(provider.harness));
91
91
  }
92
+ /**
93
+ * Gateways added during this run, which `data.candidates` cannot contain.
94
+ *
95
+ * Named from state rather than inferred from the stored-key map, which also
96
+ * holds keys for gateways the user did not select this run. A gateway that is
97
+ * both a known BYOK provider and a custom one appears once.
98
+ */
99
+ export function addedGatewayNames(state) {
100
+ return [...new Set([
101
+ ...Object.keys(state.byokKeys ?? {}),
102
+ ...(state.customProviders ?? []).map((provider) => provider.name),
103
+ ])];
104
+ }
105
+ /**
106
+ * Whether the models step has anything to offer, and so whether it may be
107
+ * skipped.
108
+ *
109
+ * `candidates` alone is the wrong test. A custom or BYOK provider has no rows
110
+ * in `allNativeCandidates` *by design* — that set is computed at startup — so
111
+ * deciding from it meant the wizard skipped the models step entirely whenever
112
+ * such a provider was the only one selected. The gateway was then never asked
113
+ * what it serves, and no amount of wiring inside the step could help, because
114
+ * the step never ran.
115
+ */
116
+ export function hasModelsToPick(candidates, addedGateways) {
117
+ return candidates.length > 0 || addedGateways.length > 0;
118
+ }
119
+ /**
120
+ * Which step Back from the Roles screen returns to.
121
+ *
122
+ * Same question as `hasModelsToPick`, asked from the other direction, and kept
123
+ * beside it so the two cannot disagree: the wizard must not enter a step going
124
+ * forward that Back then steps over. It did — an added-only provider reached
125
+ * the models step and Back jumped past it to the providers screen, because
126
+ * this call site still compared `candidates.length` by hand.
127
+ */
128
+ export function stepBeforeRoles(candidates, addedGateways) {
129
+ return hasModelsToPick(candidates, addedGateways) ? 2 : 1;
130
+ }
92
131
  export function candidatesForProviders(candidates, providers, providerKeys) {
93
132
  const selectedKeys = new Set(providerKeys);
94
133
  const gateways = new Set(providers.filter((provider) => selectedKeys.has(provider.key)).map((provider) => provider.provider));
@@ -211,6 +250,45 @@ function gatewayIdKey(gateway, id) {
211
250
  * reconstructing it would silently deselect models the user had already
212
251
  * chosen. Only a genuinely new id mints a key.
213
252
  */
253
+ /**
254
+ * Every model the wizard currently knows about, startup set plus this run's
255
+ * additions.
256
+ *
257
+ * `data.candidates` is `allNativeCandidates`, computed once before the wizard
258
+ * draws anything, so a provider added during the run contributes nothing to
259
+ * it. Anything derived from it alone is therefore blind to exactly the models
260
+ * the user just chose — and two separate defects came from that single stale
261
+ * source: a provider added this run was never asked what it serves, and its
262
+ * models were mis-ranked.
263
+ *
264
+ * The ranking half is the quieter one. A model key is `<gateway>-<id>`, so
265
+ * recovering the upstream id needs the gateway names; without them
266
+ * `normalizeModelName` cannot strip the prefix, the model misses its catalog
267
+ * entry, and it scores as the `default` table row — capable, *not* cheap.
268
+ * When nothing then clears the cheap bar, `proposeTiers` falls back to making
269
+ * `simple` mirror `complex`, so the tier stops discriminating at all. Measured:
270
+ * with the gateway name absent, `simple` and `complex` come back identical.
271
+ *
272
+ * Keys are resolved, never guessed from prefixes: `byokModels` and
273
+ * `liveModels` are both keyed by gateway, so each model's gateway is known
274
+ * exactly. A key that a live refresh and a BYOK screen both produced appears
275
+ * once — a duplicate would be written to the config twice.
276
+ */
277
+ export function knownCandidates(candidates, state) {
278
+ const merged = mergeLiveCandidates(candidates, state.liveModels ?? {});
279
+ const seen = new Set(merged.map((candidate) => candidate.key));
280
+ const out = [...merged];
281
+ for (const [gateway, ids] of Object.entries(state.byokModels ?? {})) {
282
+ for (const id of ids) {
283
+ const key = byokCandidateKey(gateway, id);
284
+ if (seen.has(key))
285
+ continue;
286
+ seen.add(key);
287
+ out.push({ key, gateway, id, label: `${gateway}/${id}` });
288
+ }
289
+ }
290
+ return out;
291
+ }
214
292
  export function mergeLiveCandidates(candidates, liveByGateway) {
215
293
  const refreshed = new Set(Object.keys(liveByGateway));
216
294
  const existing = new Map(candidates.map((candidate) => [gatewayIdKey(candidate.gateway, candidate.id), candidate]));
@@ -1 +1 @@
1
- {"version":3,"file":"app-state.js","sourceRoot":"","sources":["../../src/tui-ink/app-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-state.js","sourceRoot":"","sources":["../../src/tui-ink/app-state.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { RankedSelect } from './components/ranked-select.js';
6
6
  import { ProvidersStep } from './components/providers-step.js';
7
7
  import { ModelsStep } from './components/models-step.js';
8
8
  import { loadAaCatalog, proposeTiers } from '../catalog.js';
9
- import { applyStep, candidatesForProviders, initialRankedFor, acceptRemainingTiers, tierPickerKeys, } from './app-state.js';
9
+ import { applyStep, candidatesForProviders, knownCandidates, addedGatewayNames, hasModelsToPick, stepBeforeRoles, initialRankedFor, acceptRemainingTiers, tierPickerKeys, } from './app-state.js';
10
10
  import { byokCandidateKey, fetchModels as defaultFetchModels } from '../native/models.js';
11
11
  import { ROLE_BLURB } from '../roles.js';
12
12
  export { applyStep, candidatesForProviders } from './app-state.js';
@@ -75,14 +75,26 @@ export function InitWizard({ data, onDone }) {
75
75
  const providers = data.providers;
76
76
  return _jsx(ProvidersStep, { home: data.home, harnesses: data.harnesses, providers: providers, byokProviders: data.byokProviders, credentialAvailability: data.credentialAvailability ?? {}, gatewayAuth: data.gatewayAuth ?? {}, storedKeys: data.storedKeys, fetchModels: data.fetchModels ?? defaultFetchModels, state: state, onChange: setState, onContinue: () => {
77
77
  const candidates = candidatesForProviders(data.candidates, providers, state.providerKeys);
78
- setStep(candidates.length > 0 ? 2 : 3);
78
+ // A provider added this run has no rows in `data.candidates` by
79
+ // design, so deciding from that set alone skipped the models step
80
+ // for exactly the provider whose key was just typed.
81
+ setStep(hasModelsToPick(candidates, addedGatewayNames(state)) ? 2 : 3);
79
82
  }, onBack: back, onCancel: cancel }, "providers-step");
80
83
  }
81
84
  case 2: {
82
85
  const candidates = candidatesForProviders(data.candidates, data.providers, state.providerKeys);
83
- if (candidates.length === 0)
86
+ // A provider added this run exists only in `state`: `data.candidates`
87
+ // and `data.gatewayBaseUrls` were both computed at startup. Without
88
+ // these two, the gateway whose key was just typed is never asked what it
89
+ // serves, and the models chosen on its own screen look discarded.
90
+ const addedGateways = addedGatewayNames(state);
91
+ // Computed *before* this guard, not after: deciding from `candidates`
92
+ // alone sent a BYOK-only run straight past the step.
93
+ if (!hasModelsToPick(candidates, addedGateways)) {
84
94
  return _jsx(Summary, { state: state, onDone: onDone, onBack: back });
85
- return _jsx(ModelsStep, { candidates: candidates, gatewayBaseUrls: data.gatewayBaseUrls ?? {}, gatewayAuth: data.gatewayAuth ?? {}, keys: { ...data.storedKeys, ...state.byokKeys }, fetchModels: data.fetchModels ?? defaultFetchModels, initialSelected: new Set(state.nativeKeys), onSubmit: (keys, live) => {
95
+ }
96
+ const addedBaseUrls = Object.fromEntries((state.customProviders ?? []).map((provider) => [provider.name, provider.url]));
97
+ return _jsx(ModelsStep, { candidates: candidates, addedGateways: addedGateways, gatewayBaseUrls: { ...data.gatewayBaseUrls, ...addedBaseUrls }, gatewayAuth: data.gatewayAuth ?? {}, keys: { ...data.storedKeys, ...state.byokKeys }, fetchModels: data.fetchModels ?? defaultFetchModels, initialSelected: new Set(state.nativeKeys), onSubmit: (keys, live) => {
86
98
  // Keep any BYOK/custom-provider keys already chosen: this step owns
87
99
  // the harness candidates only, and a plain overwrite would drop the
88
100
  // rest — they were already selected inside ProvidersStep.
@@ -103,7 +115,7 @@ export function InitWizard({ data, onDone }) {
103
115
  }
104
116
  case 3: {
105
117
  const candidates = candidatesForProviders(data.candidates, data.providers, state.providerKeys);
106
- return _jsx(MultiSelect, { title: "Roles", items: data.roles.map((role) => ({ value: role, label: role, hint: ROLE_BLURB[role] })), initialSelected: new Set(state.roles ?? data.roles), onSubmit: next, onBack: () => setStep(candidates.length > 0 ? 2 : 1), onCancel: cancel, filterable: false }, "roles");
118
+ return _jsx(MultiSelect, { title: "Roles", items: data.roles.map((role) => ({ value: role, label: role, hint: ROLE_BLURB[role] })), initialSelected: new Set(state.roles ?? data.roles), onSubmit: next, onBack: () => setStep(stepBeforeRoles(candidates, addedGatewayNames(state))), onCancel: cancel, filterable: false }, "roles");
107
119
  }
108
120
  case 4: {
109
121
  const roles = state.roles ?? [];
@@ -112,14 +124,19 @@ export function InitWizard({ data, onDone }) {
112
124
  if (!role)
113
125
  return _jsx(Summary, { state: state, onDone: onDone, onBack: back });
114
126
  const catalog = loadAaCatalog(data.home);
127
+ // Ranking runs over every model actually selected, not the startup set:
128
+ // `data.candidates` predates this run's additions, and a model whose
129
+ // gateway name is missing cannot have its id recovered, misses its
130
+ // catalog entry, and drops out of the simple tier — measured, `simple`
131
+ // and `complex` come back identical.
132
+ const known = knownCandidates(data.candidates, state);
115
133
  // Gateway names come from the candidate set: a model key is
116
- // `<gateway>-<id>`, and without them the id cannot be recovered, so the
117
- // model misses its catalog entry and drops out of the simple tier.
118
- const gateways = [...new Set(data.candidates.map((candidate) => candidate.gateway))];
134
+ // `<gateway>-<id>`, and without them the id cannot be recovered.
135
+ const gateways = [...new Set(known.map((candidate) => candidate.gateway))];
119
136
  // Resolved from the candidate set, not by matching key prefixes: a key
120
137
  // only looks like `<gateway>-<id>`.
121
138
  const avoid = new Set(data.avoidGateways ?? []);
122
- const avoided = new Set(data.candidates.filter((c) => avoid.has(c.gateway)).map((c) => c.key));
139
+ const avoided = new Set(known.filter((c) => avoid.has(c.gateway)).map((c) => c.key));
123
140
  const proposal = proposeTiers(state.nativeKeys ?? [], catalog, gateways, avoided);
124
141
  // A model native-selected this run that no prior run ever ranked for
125
142
  // this role/tier — the baseline is the wizard's own starting state for
@@ -133,7 +150,7 @@ export function InitWizard({ data, onDone }) {
133
150
  const footer = catalog
134
151
  ? `rankings: Artificial Analysis (fetched ${catalog.fetchedAt}) — artificialanalysis.ai`
135
152
  : 'rankings: built-in defaults — refresh with sonata catalog update';
136
- return _jsx(RankedSelect, { title: `${role}: ${tier} models`, items: tierPickerKeys(state.nativeKeys ?? [], initialRanked, data.candidates.map((c) => c.key)).map((key) => ({ value: key, label: key })), initialRanked: initialRanked, footer: footer, onSubmit: (ranked) => {
153
+ return _jsx(RankedSelect, { title: `${role}: ${tier} models`, items: tierPickerKeys(state.nativeKeys ?? [], initialRanked, known.map((c) => c.key)).map((key) => ({ value: key, label: key })), initialRanked: initialRanked, footer: footer, onSubmit: (ranked) => {
137
154
  setState((current) => applyStep(current, 4, { role, tier, ranked }));
138
155
  if (tierIndex + 1 < roles.length * 2)
139
156
  setTierIndex((current) => current + 1);
@@ -146,8 +163,12 @@ export function InitWizard({ data, onDone }) {
146
163
  setState((current) => acceptRemainingTiers(applyStep(current, 4, { role, tier, ranked }), roles, tierIndex + 1, proposal,
147
164
  // The same universe the picker builds its items from, so a
148
165
  // deselected-but-natively-routable key is withheld here exactly
149
- // as it would be on the screen this is standing in for.
150
- data.candidates.map((c) => c.key), addedKeys));
166
+ // as it would be on the screen this is standing in for. It has
167
+ // to be `known` for the same reason the screen uses it: with
168
+ // the startup set, bulk acceptance would withhold different
169
+ // keys from the screens it stands in for, and the two paths are
170
+ // required to write a byte-identical config.
171
+ known.map((c) => c.key), addedKeys));
151
172
  setStep(5);
152
173
  }
153
174
  : undefined, onBack: () => {