@zhihaohong52/sonata 0.9.0 → 0.10.0
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 +27 -15
- package/dist/build-info.js +54 -0
- package/dist/build-info.js.map +1 -0
- package/dist/catalog.js +123 -132
- package/dist/catalog.js.map +1 -1
- package/dist/cli.js +19 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/agents.js +30 -6
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/catalog.js +7 -1
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/doctor.js +69 -16
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/serve.js +116 -44
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/sync.js +149 -12
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/usage.js +1 -1
- package/dist/commands/usage.js.map +1 -1
- package/dist/config.js +28 -7
- package/dist/config.js.map +1 -1
- package/dist/init/guidance.js +34 -5
- package/dist/init/guidance.js.map +1 -1
- package/dist/init/plan.js +13 -3
- package/dist/init/plan.js.map +1 -1
- package/dist/init/toml.js +2 -1
- package/dist/init/toml.js.map +1 -1
- package/dist/ledger.js +89 -25
- package/dist/ledger.js.map +1 -1
- package/dist/native/router.js +19 -2
- package/dist/native/router.js.map +1 -1
- package/dist/native/ui-detail.js +174 -0
- package/dist/native/ui-detail.js.map +1 -0
- package/dist/native/ui-runs.js +258 -0
- package/dist/native/ui-runs.js.map +1 -0
- package/dist/native/ui-sessions.js +56 -0
- package/dist/native/ui-sessions.js.map +1 -0
- package/dist/native/ui-usage.js +56 -0
- package/dist/native/ui-usage.js.map +1 -0
- package/dist/native/ui.js +199 -0
- package/dist/native/ui.js.map +1 -0
- package/dist/tui-ink/agents-app.js +16 -10
- package/dist/tui-ink/agents-app.js.map +1 -1
- package/dist/tui-ink/app-state.js +5 -4
- package/dist/tui-ink/app-state.js.map +1 -1
- package/dist/tui-ink/app.js +41 -13
- package/dist/tui-ink/app.js.map +1 -1
- package/dist/tui-ink/components/models-step.js +12 -3
- package/dist/tui-ink/components/models-step.js.map +1 -1
- package/hooks/ensure-serve.mjs +0 -1
- package/package.json +5 -3
- package/skills/loop/SKILL.md +22 -13
- package/ui/index.html +275 -0
package/README.md
CHANGED
|
@@ -17,8 +17,9 @@ Two ways to run it:
|
|
|
17
17
|
- **Native** — the foreign model runs *inside Claude Code's own loop*: its
|
|
18
18
|
tools, its permission modes, no separate TUI. A local routing proxy
|
|
19
19
|
(`sonata serve`) makes this possible; see the [Native path guide](docs/guide/native-path.md).
|
|
20
|
-
This is the default: `sonata init` generates one
|
|
21
|
-
backed by a ranked list of models the router tries in
|
|
20
|
+
This is the default: `sonata init` generates one agent per role and present tier
|
|
21
|
+
(up to 12 agents), each backed by a ranked list of models the router tries in
|
|
22
|
+
order.
|
|
22
23
|
- **Harness** — the foreign model runs in *its own* CLI (OpenCode, Codex, Pi,
|
|
23
24
|
Reasonix), launched in a detached tmux session and driven through
|
|
24
25
|
`sonata dispatch`. No proxy required — this is the fallback lane: when
|
|
@@ -192,13 +193,17 @@ Picking a harness-catalogued provider then shows its models to select from:
|
|
|
192
193
|
2 of 13 · space toggle · type to filter · enter confirm · esc cancel
|
|
193
194
|
```
|
|
194
195
|
|
|
195
|
-
Then it asks you to rank your selected models into `simple
|
|
196
|
-
role — pre-sorted by a cached Artificial Analysis catalog
|
|
196
|
+
Then it asks you to rank your selected models into `simple`, `normal` and
|
|
197
|
+
`complex` tiers per role — pre-sorted by a cached Artificial Analysis catalog
|
|
198
|
+
(`sonata catalog
|
|
197
199
|
update`, with a free key from [artificialanalysis.ai](https://artificialanalysis.ai))
|
|
198
200
|
when one exists, or built-in defaults otherwise. `complex` is ordered by raw
|
|
199
|
-
capability
|
|
200
|
-
|
|
201
|
-
|
|
201
|
+
capability. `normal` is ordered by capability **per task-dollar** without a cost
|
|
202
|
+
cap, while `simple` uses that same value order under a cost cap of 12 times the
|
|
203
|
+
best-value model's cost per task. Thus `simple` is a cost-capped prefix of
|
|
204
|
+
`normal`: demanding work goes to the strongest model you picked, ordinary work
|
|
205
|
+
gets the best value, and grunt work stays within the cheaper fallback chain. Set
|
|
206
|
+
`avoid_gateways` in
|
|
202
207
|
`sonata.toml` to rank a particular gateway's models last without dropping them
|
|
203
208
|
as fallbacks. It then asks whether the config
|
|
204
209
|
applies to this project or the whole machine, writes `sonata.toml`, generates
|
|
@@ -283,21 +288,28 @@ that suits it:
|
|
|
283
288
|
|
|
284
289
|
> "Use code-simple to convert these callbacks to async/await."
|
|
285
290
|
|
|
291
|
+
> "Use code-normal to add this flag and its tests."
|
|
292
|
+
|
|
286
293
|
> "Get review-complex to look at the auth refactor."
|
|
287
294
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
`
|
|
292
|
-
|
|
293
|
-
|
|
295
|
+
Choose a tier by the task, not its size: `simple` is specified closely enough
|
|
296
|
+
that the diff can be written without asking a question; `normal` is the default
|
|
297
|
+
when you know what to change but need to fit it into the surrounding code;
|
|
298
|
+
`complex` needs a design decision or the meaning of done is ambiguous. Size is
|
|
299
|
+
not difficulty: a large mechanical change is `simple`, while a three-line
|
|
300
|
+
interface decision is `complex`. When unsure, use `-normal`; a task that fails
|
|
301
|
+
review twice is re-run one tier up. The `sonata-loop` skill `sonata init` installs
|
|
302
|
+
(`skills/loop/SKILL.md`) drives this across a whole feature: plan, route each task
|
|
303
|
+
to a tier, gate behind review, and escalate `simple` to `normal` to `complex`
|
|
304
|
+
after repeated failures.
|
|
294
305
|
|
|
295
306
|
They compose with everything Claude Code already does — parallel fan-out,
|
|
296
307
|
workflows, and `isolation: "worktree"`.
|
|
297
308
|
|
|
298
309
|
## How it works
|
|
299
310
|
|
|
300
|
-
`sonata init` generates one agent per role ×
|
|
311
|
+
`sonata init` generates one agent per role × present tier — up to 12 agents
|
|
312
|
+
across `simple`, `normal` and `complex` — such as `code-simple`, `code-normal`,
|
|
301
313
|
`code-complex`, `review-simple`, and so on. Each agent's frontmatter names a
|
|
302
314
|
router alias (`model: sonata-code-simple`), not a specific model:
|
|
303
315
|
|
|
@@ -376,7 +388,7 @@ killed and the run is reported `DONE`, `degraded`, with a report beginning
|
|
|
376
388
|
| `sonata auth` | Manage native-path gateway keys (`list`, `add <gateway>`, `remove <gateway>`, `login <gateway>`) |
|
|
377
389
|
| `sonata catalog [update]` | Show the cached Artificial Analysis catalog's age, or refresh it (needs a stored `artificialanalysis` key). `sonata doctor` warns when it goes stale |
|
|
378
390
|
| `sonata litellm install\|status` | Install or report sonata's own pinned LiteLLM venv. `status` answering `not-required` is healthy — it means no gateway in this config routes through it |
|
|
379
|
-
| `sonata serve` | Run the native router and its managed LiteLLM child (`--daemon` detaches) |
|
|
391
|
+
| `sonata serve` | Run the native router and its managed LiteLLM child (`--daemon` detaches); UI: `http://localhost:4100/` |
|
|
380
392
|
| `sonata restart` | Kill whatever sonata router currently holds the port and start a fresh daemon |
|
|
381
393
|
| `sonata code` | Launch a Claude Code session routed through the local proxy (passes `claude` args through) |
|
|
382
394
|
| `sonata route on\|off\|status [--global]` | Route every plain `claude` session in the project (or, with `--global`, every project) through the proxy via settings.local.json/settings.json |
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* The version string a build reports.
|
|
5
|
+
*
|
|
6
|
+
* A published install has no stamp and reports the manifest version unchanged
|
|
7
|
+
* — that number is the truth there, and appending anything to it would make
|
|
8
|
+
* `sonata --version` disagree with npm. A local build reports
|
|
9
|
+
* `<version>+dev.<timestamp>`, because the manifest version of a development
|
|
10
|
+
* install is whatever the last release set and says nothing about the code
|
|
11
|
+
* actually running: two clones at different commits both claim `0.9.1`.
|
|
12
|
+
*
|
|
13
|
+
* **Build metadata, not a prerelease.** The first version of this emitted
|
|
14
|
+
* `<version>-dev-<timestamp>`, which is a valid semver *prerelease* — and a
|
|
15
|
+
* prerelease sorts *below* its release, so a build made from code newer than
|
|
16
|
+
* 0.9.1 announced itself as older than 0.9.1. Anything that compared them
|
|
17
|
+
* would have got the answer backwards, which is the one question the stamp
|
|
18
|
+
* exists to answer. Metadata after `+` is ignored for precedence entirely, so
|
|
19
|
+
* the string says "0.9.1 plus these local changes" and claims nothing about
|
|
20
|
+
* what version is coming next.
|
|
21
|
+
*
|
|
22
|
+
* `.dirty` rides on the end when the worktree was not clean, since that is
|
|
23
|
+
* exactly the build whose commit does not describe it.
|
|
24
|
+
*/
|
|
25
|
+
export function stampedVersion(version, info) {
|
|
26
|
+
if (info === undefined)
|
|
27
|
+
return version;
|
|
28
|
+
return `${version}+dev.${info.builtAt}${info.dirty ? '.dirty' : ''}`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Read the stamp sitting beside the executing file, or `undefined`.
|
|
32
|
+
*
|
|
33
|
+
* Absent is the normal case twice over: a published install never has one, and
|
|
34
|
+
* neither does `npm run dev`, which runs `src/` through tsx and was never
|
|
35
|
+
* built. So an unreadable or malformed stamp degrades to "no stamp" rather
|
|
36
|
+
* than throwing — a version command that fails tells you less than a version
|
|
37
|
+
* command that omits one field.
|
|
38
|
+
*/
|
|
39
|
+
export function readBuildInfo(dir) {
|
|
40
|
+
try {
|
|
41
|
+
const parsed = JSON.parse(readFileSync(join(dir, 'build-info.json'), 'utf8'));
|
|
42
|
+
if (typeof parsed.builtAt !== 'string' || parsed.builtAt === '')
|
|
43
|
+
return undefined;
|
|
44
|
+
return {
|
|
45
|
+
builtAt: parsed.builtAt,
|
|
46
|
+
commit: typeof parsed.commit === 'string' && parsed.commit !== '' ? parsed.commit : 'unknown',
|
|
47
|
+
dirty: parsed.dirty === true,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=build-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-info.js","sourceRoot":"","sources":["../src/build-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAmBjC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,IAAgB;IAC9D,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACvC,OAAO,GAAG,OAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACvE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAuB,CAAC;QACpG,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,EAAE;YAAE,OAAO,SAAS,CAAC;QAClF,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC7F,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI;SAC7B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/dist/catalog.js
CHANGED
|
@@ -15,14 +15,6 @@ export const AA_ATTRIBUTION = 'Model rankings by Artificial Analysis — https:/
|
|
|
15
15
|
/** Coding Index at or above this ⇒ complex-eligible. Chosen so today's
|
|
16
16
|
* mid-tier coders (deepseek-v4-flash class) sit just above the line. */
|
|
17
17
|
export const AA_CAPABLE_CODING_INDEX = 40;
|
|
18
|
-
/**
|
|
19
|
-
* Blended $/1M tokens at or below this ⇒ cheap enough for the simple tier.
|
|
20
|
-
*
|
|
21
|
-
* Only reaches the simple tier for a model AA has **not** costed per task;
|
|
22
|
-
* `SIMPLE_COST_CEILING` decides the ones it has. Kept because a per-1M rate is
|
|
23
|
-
* the only price such a model has.
|
|
24
|
-
*/
|
|
25
|
-
export const AA_CHEAP_BLENDED_PRICE_USD = 1.0;
|
|
26
18
|
/**
|
|
27
19
|
* A model may cost at most this multiple of the cheapest *selected* model's
|
|
28
20
|
* per-task cost and still be eligible for a simple tier.
|
|
@@ -39,7 +31,7 @@ export const AA_CHEAP_BLENDED_PRICE_USD = 1.0;
|
|
|
39
31
|
* at $1.50/1M while costing $0.577/task — less per unit of work than five
|
|
40
32
|
* models that got in, and a sixth of the way to the $1/1M bar it failed.
|
|
41
33
|
*
|
|
42
|
-
* **Relative**,
|
|
34
|
+
* **Relative**, because an absolute bar
|
|
43
35
|
* is wrong in both directions. A user whose whole selection is expensive gets
|
|
44
36
|
* an empty simple tier and falls back to mirroring complex, which stops the
|
|
45
37
|
* tier discriminating at all; one whose selection is uniformly cheap gets
|
|
@@ -79,39 +71,6 @@ export const AA_CAPABILITY_TIE_MARGIN = 1.0;
|
|
|
79
71
|
export function capabilityOf(entry) {
|
|
80
72
|
return entry.agenticIndex ?? entry.codingIndex ?? entry.intelligenceIndex ?? 0;
|
|
81
73
|
}
|
|
82
|
-
/**
|
|
83
|
-
* What one unit of work costs, best available measure first.
|
|
84
|
-
*
|
|
85
|
-
* `costPerTask` prices the work; the blended per-1M rate only prices tokens
|
|
86
|
-
* and is a weaker proxy, kept for models AA has not costed.
|
|
87
|
-
*/
|
|
88
|
-
export function costOfEntry(entry) {
|
|
89
|
-
return entry.costPerTask ?? entry.blendedPriceUsd;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* A model must reach this fraction of the best score among the *selected*
|
|
93
|
-
* models to be eligible for a simple tier.
|
|
94
|
-
*
|
|
95
|
-
* Relative, not absolute: an absolute floor is wrong in both directions —
|
|
96
|
-
* it excludes everything when a user's whole selection is modest, and admits
|
|
97
|
-
* junk when their selection is strong. The simple tier optimises
|
|
98
|
-
* capability-per-dollar, and without a floor a very cheap, very weak model
|
|
99
|
-
* wins on ratio alone.
|
|
100
|
-
*
|
|
101
|
-
* Set where it is to keep the tier *deep* as well as good. A tier is a ranked
|
|
102
|
-
* fallback list, so a floor strict enough to admit one model leaves the router
|
|
103
|
-
* nothing to fall through to and sends the first failure straight to 529 and
|
|
104
|
-
* the dispatch lane. Measured on a real 17-model config, 0.85 admitted exactly
|
|
105
|
-
* one model where 0.75 admits four.
|
|
106
|
-
*
|
|
107
|
-
* The floor is not only a depth control: it also decides the *leader*, because
|
|
108
|
-
* a model it admits can outrank the others on value. On that same config,
|
|
109
|
-
* raising it to 0.85 excludes the cheapest model and promotes a stronger,
|
|
110
|
-
* dearer one. So it trades capability against both cost and resilience, and
|
|
111
|
-
* moving it changes what grunt work actually runs on — not merely what stands
|
|
112
|
-
* behind that choice.
|
|
113
|
-
*/
|
|
114
|
-
export const SIMPLE_CAPABILITY_FLOOR = 0.75;
|
|
115
74
|
/**
|
|
116
75
|
* The key an AA score is stored and looked up under.
|
|
117
76
|
*
|
|
@@ -255,8 +214,16 @@ function familiesOf(aa) {
|
|
|
255
214
|
return index;
|
|
256
215
|
}
|
|
257
216
|
/**
|
|
258
|
-
* The effort family a normalized model name belongs to
|
|
259
|
-
*
|
|
217
|
+
* The effort family a normalized model name belongs to.
|
|
218
|
+
*
|
|
219
|
+
* A family of one is still a family: AA's only DeepSeek V4.1 Flash row is
|
|
220
|
+
* "(Reasoning, Max Effort)", and that is a level to pin, not a level-less
|
|
221
|
+
* model — offered bare, the key ranks on the max-effort score and runs at
|
|
222
|
+
* whatever the gateway defaults to. A row stating no level is recorded at
|
|
223
|
+
* `none` for the same reason, so it too is a singleton family and
|
|
224
|
+
* `expandCandidates` emits `<key>@none`. Only a model the catalog does not
|
|
225
|
+
* hold, or a cache written before families were recorded, has none — which
|
|
226
|
+
* is the state `loadConfig` cannot check and skips on.
|
|
260
227
|
*
|
|
261
228
|
* Resolved through the same spellings `aaEntryFor` tries, so a name that finds
|
|
262
229
|
* its score also finds its family.
|
|
@@ -270,10 +237,9 @@ export function catalogFamily(normalized, aa) {
|
|
|
270
237
|
for (const spelling of [name, aaMatchKey(name)]) {
|
|
271
238
|
const entry = aa.models[spelling];
|
|
272
239
|
const fam = entry?.family !== undefined ? families.get(entry.family) : families.get(spelling);
|
|
273
|
-
// The first spelling that identifies a model wins, even if it has no
|
|
274
|
-
if (entry !== undefined || fam !== undefined)
|
|
275
|
-
return fam
|
|
276
|
-
}
|
|
240
|
+
// The first spelling that identifies a model wins, even if it has no family.
|
|
241
|
+
if (entry !== undefined || fam !== undefined)
|
|
242
|
+
return fam;
|
|
277
243
|
}
|
|
278
244
|
}
|
|
279
245
|
}
|
|
@@ -367,18 +333,18 @@ function aaEntryFor(normalized, aa, effort) {
|
|
|
367
333
|
* anything unlisted is capable-not-cheap, the direction that never silently
|
|
368
334
|
* hands hard work to a weak model. */
|
|
369
335
|
const CURATED = {
|
|
370
|
-
'deepseek-v4-flash': { capable: true
|
|
371
|
-
'deepseek-v4-pro': { capable: true
|
|
372
|
-
'gpt-5.6-luna': { capable: true
|
|
373
|
-
'gpt-5.6-terra': { capable: true
|
|
374
|
-
'gpt-5.6-sol': { capable: true
|
|
375
|
-
'kimi-k3': { capable: true
|
|
376
|
-
'kimi-k3-free': { capable: false
|
|
377
|
-
'glm-5.3': { capable: true
|
|
378
|
-
'grok-4.6': { capable: true
|
|
379
|
-
'gemini-3.7-flash': { capable: true
|
|
380
|
-
'qwen3.8-max': { capable: true
|
|
381
|
-
'ox-alpha-free': { capable: false
|
|
336
|
+
'deepseek-v4-flash': { capable: true },
|
|
337
|
+
'deepseek-v4-pro': { capable: true },
|
|
338
|
+
'gpt-5.6-luna': { capable: true },
|
|
339
|
+
'gpt-5.6-terra': { capable: true },
|
|
340
|
+
'gpt-5.6-sol': { capable: true },
|
|
341
|
+
'kimi-k3': { capable: true },
|
|
342
|
+
'kimi-k3-free': { capable: false },
|
|
343
|
+
'glm-5.3': { capable: true },
|
|
344
|
+
'grok-4.6': { capable: true },
|
|
345
|
+
'gemini-3.7-flash': { capable: true },
|
|
346
|
+
'qwen3.8-max': { capable: true },
|
|
347
|
+
'ox-alpha-free': { capable: false },
|
|
382
348
|
};
|
|
383
349
|
export function lookupModel(name, aa, providers = [], upstreamFor = identityUpstream) {
|
|
384
350
|
const { key, effort } = splitCandidate(name);
|
|
@@ -387,7 +353,6 @@ export function lookupModel(name, aa, providers = [], upstreamFor = identityUpst
|
|
|
387
353
|
if (scored !== undefined) {
|
|
388
354
|
return {
|
|
389
355
|
capable: scored.codingIndex >= AA_CAPABLE_CODING_INDEX,
|
|
390
|
-
cheap: scored.blendedPriceUsd <= AA_CHEAP_BLENDED_PRICE_USD,
|
|
391
356
|
source: 'aa',
|
|
392
357
|
};
|
|
393
358
|
}
|
|
@@ -395,13 +360,28 @@ export function lookupModel(name, aa, providers = [], upstreamFor = identityUpst
|
|
|
395
360
|
const curated = normalized.map((spelling) => CURATED[spelling]).find((entry) => entry !== undefined);
|
|
396
361
|
if (curated !== undefined)
|
|
397
362
|
return { ...curated, source: 'curated' };
|
|
398
|
-
return { capable: true,
|
|
363
|
+
return { capable: true, source: 'default' };
|
|
399
364
|
}
|
|
400
365
|
/** The AA row behind a candidate (`key` or `key@effort`), joined through the match key. */
|
|
401
366
|
function scoreFor(candidate, aa, providers = [], upstreamFor = identityUpstream) {
|
|
402
367
|
const { key, effort } = splitCandidate(candidate);
|
|
403
368
|
return aaEntryFor(normalizedFor(key, providers, upstreamFor), aa, effort);
|
|
404
369
|
}
|
|
370
|
+
/** Whether AA supplies the per-task cost required for init ranking. */
|
|
371
|
+
export function hasTaskCost(candidate, aa, providers = [], upstreamFor = identityUpstream) {
|
|
372
|
+
// Without a cache there is no exclusion data; preserve the built-in path.
|
|
373
|
+
if (aa === undefined)
|
|
374
|
+
return true;
|
|
375
|
+
// Finite, not merely present: a hand-edited or foreign-written cache can
|
|
376
|
+
// carry `null`, a string or a NaN, and `.toFixed(3)` on the ranking label
|
|
377
|
+
// throws on the first two while the third ranks on a meaningless number.
|
|
378
|
+
const cost = scoreFor(candidate, aa, providers, upstreamFor)?.costPerTask;
|
|
379
|
+
return typeof cost === 'number' && Number.isFinite(cost);
|
|
380
|
+
}
|
|
381
|
+
/** Keep only candidates AA can compare on its dollars-per-task scale. */
|
|
382
|
+
export function taskCostedCandidates(candidates, aa, providers = [], upstreamFor = identityUpstream) {
|
|
383
|
+
return candidates.filter((candidate) => hasTaskCost(candidate, aa, providers, upstreamFor));
|
|
384
|
+
}
|
|
405
385
|
/**
|
|
406
386
|
* Each key as the candidates a ranking may choose between: one per scored
|
|
407
387
|
* level for a model the catalog knows by level, the bare key otherwise. A
|
|
@@ -418,8 +398,18 @@ export function expandCandidates(keys, aa, providers = [], upstreamFor = identit
|
|
|
418
398
|
return fam === undefined ? [candidate] : [...fam.variants.keys()].map((level) => joinCandidate(key, level));
|
|
419
399
|
});
|
|
420
400
|
}
|
|
401
|
+
/**
|
|
402
|
+
* Whether the catalog turns this bare key into pinned candidates at all.
|
|
403
|
+
*
|
|
404
|
+
* Counted by *difference*, not by how many levels came back: a family of one
|
|
405
|
+
* expands to a single candidate that is not the bare key, and the whole point
|
|
406
|
+
* is that the bare key must not survive. Counting `> 1` dropped exactly that
|
|
407
|
+
* model, which is how a single-level saved key was silently deleted from a
|
|
408
|
+
* tier rather than re-proposed.
|
|
409
|
+
*/
|
|
421
410
|
export function hasEffortVariants(key, aa, providers = [], upstreamFor = identityUpstream) {
|
|
422
|
-
|
|
411
|
+
const expanded = expandCandidates([key], aa, providers, upstreamFor);
|
|
412
|
+
return expanded.length > 1 || expanded[0] !== key;
|
|
423
413
|
}
|
|
424
414
|
/**
|
|
425
415
|
* The variants of every *bare* saved candidate whose model has effort levels.
|
|
@@ -437,7 +427,10 @@ export function unpinnedVariants(saved, aa, providers = [], upstreamFor = identi
|
|
|
437
427
|
if (effort !== undefined)
|
|
438
428
|
return [];
|
|
439
429
|
const expanded = expandCandidates([candidate], aa, providers, upstreamFor);
|
|
440
|
-
|
|
430
|
+
// Difference, not count: a family of one yields a single *pinned*
|
|
431
|
+
// candidate, and the saved bare key it replaces is the thing being
|
|
432
|
+
// repaired. A `> 1` test dropped it from the tier instead.
|
|
433
|
+
return expanded.length > 1 || expanded[0] !== candidate ? expanded : [];
|
|
441
434
|
});
|
|
442
435
|
}
|
|
443
436
|
/**
|
|
@@ -452,10 +445,9 @@ export function candidateLabel(candidate, aa, providers = [], upstreamFor = iden
|
|
|
452
445
|
const entry = scoreFor(candidate, aa, providers, upstreamFor);
|
|
453
446
|
if (entry === undefined)
|
|
454
447
|
return head;
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
return `${head.padEnd(32)} ${capabilityOf(entry).toFixed(1).padStart(4)} ${cost}`;
|
|
448
|
+
if (entry.costPerTask === undefined)
|
|
449
|
+
return `${head} (AA publishes no cost-per-task — add by hand to sonata.toml)`;
|
|
450
|
+
return `${head.padEnd(32)} ${capabilityOf(entry).toFixed(1).padStart(4)} $${entry.costPerTask.toFixed(3)}/task`;
|
|
459
451
|
}
|
|
460
452
|
/**
|
|
461
453
|
* Which of `modelKeys` the ranking catalog can actually score.
|
|
@@ -480,8 +472,8 @@ export function catalogCoverage(modelKeys, aa, providers = [], upstreamFor = ide
|
|
|
480
472
|
function rank(key, aa, providers = [], upstreamFor = identityUpstream) {
|
|
481
473
|
const scored = scoreFor(key, aa, providers, upstreamFor);
|
|
482
474
|
return scored !== undefined
|
|
483
|
-
? { index: capabilityOf(scored), price:
|
|
484
|
-
: { index: AA_CAPABLE_CODING_INDEX, price:
|
|
475
|
+
? { index: capabilityOf(scored), price: scored.costPerTask ?? 0 }
|
|
476
|
+
: { index: AA_CAPABLE_CODING_INDEX, price: 0 };
|
|
485
477
|
}
|
|
486
478
|
/**
|
|
487
479
|
* Capability per dollar — how a simple tier is ordered.
|
|
@@ -495,13 +487,37 @@ function rank(key, aa, providers = [], upstreamFor = identityUpstream) {
|
|
|
495
487
|
function valueOf(r) {
|
|
496
488
|
return r.index / Math.max(r.price, 0.01);
|
|
497
489
|
}
|
|
490
|
+
/**
|
|
491
|
+
* Rank a role's selected models into the three tiers.
|
|
492
|
+
*
|
|
493
|
+
* Each tier is one sort key over the two quantities AA publishes — a coding
|
|
494
|
+
* index and a cost per task. `complex` takes capability, cost breaking a
|
|
495
|
+
* near-tie; `normal` takes capability per task-dollar; `simple` is `normal`
|
|
496
|
+
* filtered to a cost cap, so it never sorts independently and cannot disagree
|
|
497
|
+
* with `normal` about order.
|
|
498
|
+
*
|
|
499
|
+
* Only candidates AA prices per task are considered (`taskCostedCandidates`),
|
|
500
|
+
* because capability-per-token and capability-per-task are different units and
|
|
501
|
+
* ranking across them is an arithmetic error, not a judgement.
|
|
502
|
+
*
|
|
503
|
+
* Three properties are deliberate and easy to undo by accident:
|
|
504
|
+
* `simple` is a *subsequence* of `normal`, not a prefix — value is not
|
|
505
|
+
* monotonic in cost; the cap is anchored to the best-value model, which
|
|
506
|
+
* therefore always clears it, so `simple` is never empty on any config; and
|
|
507
|
+
* there is no capability floor, because a floor makes the value ranking
|
|
508
|
+
* collapse into the cost ranking and `normal` becomes a copy of `simple`.
|
|
509
|
+
*
|
|
510
|
+
* Avoided gateways are demoted rather than excluded, and never set either bar.
|
|
511
|
+
*/
|
|
498
512
|
export function proposeTiers(modelKeys, aa, providers = [], avoided = new Set(), upstreamFor = identityUpstream) {
|
|
499
513
|
// Rank over every scored level of every selected model. A model AA scores
|
|
500
514
|
// at several efforts is several candidates here - luna@high and luna@max
|
|
501
515
|
// are different capability/cost points, and which one a tier wants is the
|
|
502
516
|
// whole question. Identity without families, so a catalog-less run (and
|
|
503
517
|
// every existing caller) sees exactly the keys it passed.
|
|
504
|
-
|
|
518
|
+
// With a catalog, only AA's per-task scale is valid. Without one, keep the
|
|
519
|
+
// built-in proposal path usable because there is no exclusion data yet.
|
|
520
|
+
const candidates = taskCostedCandidates(expandCandidates(modelKeys, aa, providers, upstreamFor), aa, providers, upstreamFor);
|
|
505
521
|
const bareKey = (candidate) => splitCandidate(candidate).key;
|
|
506
522
|
const rankOf = (k) => rank(k, aa, providers, upstreamFor);
|
|
507
523
|
// An avoided model sorts after every non-avoided one, whatever it scores.
|
|
@@ -528,12 +544,16 @@ export function proposeTiers(modelKeys, aa, providers = [], avoided = new Set(),
|
|
|
528
544
|
const ra = rankOf(a);
|
|
529
545
|
const rb = rankOf(b);
|
|
530
546
|
const gap = Math.abs(rb.index - ra.index) <= AA_CAPABILITY_TIE_MARGIN ? 0 : rb.index - ra.index;
|
|
531
|
-
|
|
547
|
+
const byPrice = ra.price - rb.price;
|
|
548
|
+
return avoidance(a, b) || gap || byPrice || byLevel(a, b);
|
|
532
549
|
};
|
|
533
550
|
// Simple work wants the most capability per dollar, capability breaking
|
|
534
551
|
// ties. At one price, value *is* capability, so a score inside the tie
|
|
535
552
|
// margin is the same noise it is above — a lower level scoring 0.3 higher
|
|
536
553
|
// is not an edge, and the level decides as it does there.
|
|
554
|
+
//
|
|
555
|
+
// Every candidate left here has an AA per-task cost, so capability per
|
|
556
|
+
// dollar is one comparable unit rather than a mix of work and token prices.
|
|
537
557
|
const byValue = (a, b) => {
|
|
538
558
|
const ra = rankOf(a);
|
|
539
559
|
const rb = rankOf(b);
|
|
@@ -542,67 +562,33 @@ export function proposeTiers(modelKeys, aa, providers = [], avoided = new Set(),
|
|
|
542
562
|
}
|
|
543
563
|
return avoidance(a, b) || valueOf(rb) - valueOf(ra) || rb.index - ra.index || byLevel(a, b);
|
|
544
564
|
};
|
|
545
|
-
const
|
|
546
|
-
// The floor is relative to the best model actually selected, so it adapts to
|
|
547
|
-
// the user's own set rather than to an absolute score that is wrong whenever
|
|
548
|
-
// their selection is uniformly strong or uniformly modest.
|
|
549
|
-
// Measured over the models that can actually lead the tier: including an
|
|
550
|
-
// avoided model here could raise the bar high enough to exclude everything
|
|
551
|
-
// preferred, inverting the setting's intent.
|
|
552
|
-
const preferred = candidates.filter((k) => !avoided.has(bareKey(k)));
|
|
553
|
-
const leaders = preferred.length > 0 ? preferred : candidates;
|
|
554
|
-
const best = Math.max(0, ...leaders.map((k) => rankOf(k).index));
|
|
555
|
-
// The cost bar is relative to the cheapest model that can actually *enter*
|
|
556
|
-
// the tier — not merely the cheapest one selected. `best` gets away with
|
|
557
|
-
// reading every leader because it is a `Math.max`, which a weak model cannot
|
|
558
|
-
// drag down; the ceiling is a `Math.min`, which one absolutely can. A very
|
|
559
|
-
// cheap, very weak model would set a bar so low that nothing eligible clears
|
|
560
|
-
// it, `simple` would come back empty, and the fallback would mirror the
|
|
561
|
-
// complex set — the tier silently ceasing to discriminate, which is the whole
|
|
562
|
-
// failure the floor exists to prevent. So the same two predicates that decide
|
|
563
|
-
// membership below also decide who is allowed to set the bar.
|
|
564
|
-
//
|
|
565
|
-
// Avoided models are already out (`leaders`), for the same reason the
|
|
566
|
-
// capability floor is measured over `preferred`: an avoided model setting the
|
|
567
|
-
// bar would move it for models the user asked to demote, which is not what
|
|
568
|
-
// avoidance means.
|
|
569
|
-
//
|
|
570
|
-
// Measured over per-task costs only. `rankOf().price` falls back to a per-1M
|
|
571
|
-
// rate when AA has not costed a model, and the two are different units by
|
|
572
|
-
// two orders of magnitude — a ratio that mixes them would read an uncosted
|
|
573
|
-
// model as ~30x dearer than it is and refuse it on a unit error.
|
|
565
|
+
const capable = (k) => lookupModel(k, aa, providers, upstreamFor).capable;
|
|
574
566
|
const perTask = (k) => scoreFor(k, aa, providers, upstreamFor)?.costPerTask;
|
|
575
|
-
const
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
const ceiling =
|
|
582
|
-
//
|
|
583
|
-
//
|
|
584
|
-
//
|
|
585
|
-
//
|
|
586
|
-
|
|
567
|
+
const complex = candidates.filter(capable).sort(byCapability);
|
|
568
|
+
const normal = candidates.filter(capable).sort(byValue);
|
|
569
|
+
// Anchor the cap to the best-value model that can actually lead. Avoided
|
|
570
|
+
// models remain fallbacks but must not raise the price paid by preferred ones.
|
|
571
|
+
const anchor = normal.find((k) => !avoided.has(bareKey(k))) ?? normal[0];
|
|
572
|
+
const anchorCost = anchor === undefined ? undefined : perTask(anchor);
|
|
573
|
+
const ceiling = anchorCost === undefined ? undefined : anchorCost * SIMPLE_COST_CEILING;
|
|
574
|
+
// Filtering `normal` rather than sorting again is what stops `simple`
|
|
575
|
+
// disagreeing with it about order: it never does its own sort.
|
|
576
|
+
//
|
|
577
|
+
// The result is a **subsequence, not a prefix**. `normal` is ordered by
|
|
578
|
+
// value, and value is not monotonic in cost — a dearer model with a much
|
|
579
|
+
// better score outranks a cheap weak one — so an over-ceiling candidate can
|
|
580
|
+
// sit ahead of an under-ceiling one and the filter skips past it.
|
|
581
|
+
// Truncating at the first over-ceiling candidate would make it a true
|
|
582
|
+
// prefix and would drop the qualifying cheap models behind it, which is the
|
|
583
|
+
// opposite of what a cheap tier is for.
|
|
584
|
+
const simple = ceiling === undefined ? [] : normal.filter((k) => {
|
|
587
585
|
const cost = perTask(k);
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
return cost <= ceiling;
|
|
591
|
-
};
|
|
592
|
-
// Same `eligible` the ceiling is measured over, so who sets the bar and who
|
|
593
|
-
// is judged against it cannot drift apart.
|
|
594
|
-
const simple = candidates.filter((k) => eligible(k) && isCheap(k)).sort(byValue);
|
|
595
|
-
// A tier must always resolve to something: with no capable model, everything
|
|
596
|
-
// is complex-eligible; with no cheap-capable model, simple mirrors complex.
|
|
597
|
-
// The fallback is sorted too — raw input order would break the documented
|
|
598
|
-
// "index descending, price ascending" ordering on exactly the path where no
|
|
599
|
-
// model cleared the threshold.
|
|
586
|
+
return cost !== undefined && cost <= ceiling;
|
|
587
|
+
});
|
|
600
588
|
const complexFinal = complex.length > 0 ? complex : [...candidates].sort(byCapability);
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
const simpleFinal = simple.length > 0 ? simple : [...complexFinal].sort(byValue);
|
|
605
|
-
return { simple: simpleFinal, complex: complexFinal };
|
|
589
|
+
const normalFinal = normal.length > 0 ? normal : [...complexFinal].sort(byValue);
|
|
590
|
+
const simpleFinal = simple.length > 0 ? simple : normalFinal;
|
|
591
|
+
return { simple: simpleFinal, normal: normalFinal, complex: complexFinal };
|
|
606
592
|
}
|
|
607
593
|
/**
|
|
608
594
|
* How long a ranking cache stays trustworthy.
|
|
@@ -646,8 +632,13 @@ export function loadAaCatalog(home) {
|
|
|
646
632
|
Number.isFinite(entry.blendedPriceUsd)) {
|
|
647
633
|
// An unknown level is a hand-edit or a foreign writer; the score is
|
|
648
634
|
// still good, so keep the row and drop only the field.
|
|
649
|
-
const { effort, ...rest } = entry;
|
|
650
|
-
|
|
635
|
+
const { effort, costPerTask, ...rest } = entry;
|
|
636
|
+
// Same treatment as `effort`: the row's score is still good, so drop
|
|
637
|
+
// only the malformed field and let the model read as uncosted.
|
|
638
|
+
const kept = typeof costPerTask === 'number' && Number.isFinite(costPerTask)
|
|
639
|
+
? { ...rest, costPerTask }
|
|
640
|
+
: rest;
|
|
641
|
+
models[name] = effort !== undefined && isEffort(effort) ? { ...kept, effort } : kept;
|
|
651
642
|
}
|
|
652
643
|
}
|
|
653
644
|
if (Object.keys(models).length === 0)
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|