@zhihaohong52/sonata 0.4.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/LICENSE +21 -0
- package/README.md +437 -0
- package/dist/adapters/claude.js +83 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/codex.js +382 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/index.js +21 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/opencode.js +104 -0
- package/dist/adapters/opencode.js.map +1 -0
- package/dist/adapters/pi.js +152 -0
- package/dist/adapters/pi.js.map +1 -0
- package/dist/adapters/reasonix.js +358 -0
- package/dist/adapters/reasonix.js.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/agent-markers.js +3 -0
- package/dist/agent-markers.js.map +1 -0
- package/dist/aipricing.js +109 -0
- package/dist/aipricing.js.map +1 -0
- package/dist/catalog.js +274 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cli.js +766 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/approve.js +23 -0
- package/dist/commands/approve.js.map +1 -0
- package/dist/commands/auth.js +41 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/catalog.js +172 -0
- package/dist/commands/catalog.js.map +1 -0
- package/dist/commands/code.js +113 -0
- package/dist/commands/code.js.map +1 -0
- package/dist/commands/dispatch.js +148 -0
- package/dist/commands/dispatch.js.map +1 -0
- package/dist/commands/doctor.js +545 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/gc.js +25 -0
- package/dist/commands/gc.js.map +1 -0
- package/dist/commands/init-log.js +83 -0
- package/dist/commands/init-log.js.map +1 -0
- package/dist/commands/init.js +157 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/log.js +24 -0
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/route.js +660 -0
- package/dist/commands/route.js.map +1 -0
- package/dist/commands/run.js +199 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/runs.js +37 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/serve.js +818 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/status.js +14 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.js +258 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/tail.js +229 -0
- package/dist/commands/tail.js.map +1 -0
- package/dist/commands/usage.js +85 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/verify.js +69 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/commands/wait.js +38 -0
- package/dist/commands/wait.js.map +1 -0
- package/dist/config.js +588 -0
- package/dist/config.js.map +1 -0
- package/dist/detect.js +445 -0
- package/dist/detect.js.map +1 -0
- package/dist/filelock.js +83 -0
- package/dist/filelock.js.map +1 -0
- package/dist/init/apply.js +96 -0
- package/dist/init/apply.js.map +1 -0
- package/dist/init/candidates.js +115 -0
- package/dist/init/candidates.js.map +1 -0
- package/dist/init/discover.js +216 -0
- package/dist/init/discover.js.map +1 -0
- package/dist/init/helpers.js +429 -0
- package/dist/init/helpers.js.map +1 -0
- package/dist/init/interactive-state.js +128 -0
- package/dist/init/interactive-state.js.map +1 -0
- package/dist/init/plan.js +225 -0
- package/dist/init/plan.js.map +1 -0
- package/dist/init/scripted-state.js +130 -0
- package/dist/init/scripted-state.js.map +1 -0
- package/dist/init/toml.js +83 -0
- package/dist/init/toml.js.map +1 -0
- package/dist/init/validate.js +149 -0
- package/dist/init/validate.js.map +1 -0
- package/dist/ledger.js +123 -0
- package/dist/ledger.js.map +1 -0
- package/dist/mcp/protocol.js +64 -0
- package/dist/mcp/protocol.js.map +1 -0
- package/dist/mcp/server.js +96 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.js +210 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mode.js +64 -0
- package/dist/mode.js.map +1 -0
- package/dist/native/claude-shim.js +228 -0
- package/dist/native/claude-shim.js.map +1 -0
- package/dist/native/codex-auth.js +177 -0
- package/dist/native/codex-auth.js.map +1 -0
- package/dist/native/copilot-auth.js +105 -0
- package/dist/native/copilot-auth.js.map +1 -0
- package/dist/native/credentials.js +83 -0
- package/dist/native/credentials.js.map +1 -0
- package/dist/native/hosts.js +60 -0
- package/dist/native/hosts.js.map +1 -0
- package/dist/native/litellm.js +103 -0
- package/dist/native/litellm.js.map +1 -0
- package/dist/native/models.js +96 -0
- package/dist/native/models.js.map +1 -0
- package/dist/native/oauth-login.js +112 -0
- package/dist/native/oauth-login.js.map +1 -0
- package/dist/native/router.js +469 -0
- package/dist/native/router.js.map +1 -0
- package/dist/native/tls.js +73 -0
- package/dist/native/tls.js.map +1 -0
- package/dist/native/usage.js +119 -0
- package/dist/native/usage.js.map +1 -0
- package/dist/normalize.js +98 -0
- package/dist/normalize.js.map +1 -0
- package/dist/pricing.js +86 -0
- package/dist/pricing.js.map +1 -0
- package/dist/roles.js +49 -0
- package/dist/roles.js.map +1 -0
- package/dist/sessions.js +62 -0
- package/dist/sessions.js.map +1 -0
- package/dist/settings.js +131 -0
- package/dist/settings.js.map +1 -0
- package/dist/store.js +70 -0
- package/dist/store.js.map +1 -0
- package/dist/tmux.js +89 -0
- package/dist/tmux.js.map +1 -0
- package/dist/tui-ink/app-state.js +340 -0
- package/dist/tui-ink/app-state.js.map +1 -0
- package/dist/tui-ink/app.js +156 -0
- package/dist/tui-ink/app.js.map +1 -0
- package/dist/tui-ink/components/byok-step.js +102 -0
- package/dist/tui-ink/components/byok-step.js.map +1 -0
- package/dist/tui-ink/components/login-screen.js +80 -0
- package/dist/tui-ink/components/login-screen.js.map +1 -0
- package/dist/tui-ink/components/models-step.js +92 -0
- package/dist/tui-ink/components/models-step.js.map +1 -0
- package/dist/tui-ink/components/multi-select-state.js +56 -0
- package/dist/tui-ink/components/multi-select-state.js.map +1 -0
- package/dist/tui-ink/components/multi-select.js +69 -0
- package/dist/tui-ink/components/multi-select.js.map +1 -0
- package/dist/tui-ink/components/providers-step.js +285 -0
- package/dist/tui-ink/components/providers-step.js.map +1 -0
- package/dist/tui-ink/components/ranked-select-state.js +41 -0
- package/dist/tui-ink/components/ranked-select-state.js.map +1 -0
- package/dist/tui-ink/components/ranked-select.js +61 -0
- package/dist/tui-ink/components/ranked-select.js.map +1 -0
- package/dist/tui-ink/components/search-select.js +47 -0
- package/dist/tui-ink/components/search-select.js.map +1 -0
- package/dist/tui-ink/components/text-input-state.js +42 -0
- package/dist/tui-ink/components/text-input-state.js.map +1 -0
- package/dist/tui-ink/components/text-input.js +48 -0
- package/dist/tui-ink/components/text-input.js.map +1 -0
- package/dist/tui-ink/run.js +38 -0
- package/dist/tui-ink/run.js.map +1 -0
- package/dist/tui-ink/test-compile.js +4 -0
- package/dist/tui-ink/test-compile.js.map +1 -0
- package/dist/tui-ink/types.js +2 -0
- package/dist/tui-ink/types.js.map +1 -0
- package/dist/tui.js +330 -0
- package/dist/tui.js.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/watchdog.js +85 -0
- package/dist/watchdog.js.map +1 -0
- package/hooks/capture-mode.mjs +56 -0
- package/hooks/ensure-serve.mjs +140 -0
- package/hooks/hooks.json +12 -0
- package/hooks/route-session.mjs +47 -0
- package/hooks/route-subagent.mjs +54 -0
- package/package.json +64 -0
- package/roles/code.md +13 -0
- package/roles/explore.md +9 -0
- package/roles/plan.md +10 -0
- package/roles/review.md +11 -0
- package/skills/loop/SKILL.md +43 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { readMeta, writeAnsweredPrompt } from '../store.js';
|
|
2
|
+
import { getAdapter } from '../adapters/index.js';
|
|
3
|
+
import { capturePane, hasSession, sendKeys } from '../tmux.js';
|
|
4
|
+
import { cleanPane } from '../normalize.js';
|
|
5
|
+
export async function cmdApprove(opts) {
|
|
6
|
+
const meta = readMeta(opts.cwd, opts.id);
|
|
7
|
+
const adapter = getAdapter(meta.harness);
|
|
8
|
+
if (!(await hasSession(meta.session))) {
|
|
9
|
+
throw new Error(`sonata: no live tmux session "${meta.session}" for run ${opts.id}. ` +
|
|
10
|
+
`The run has already ended; check its report instead.`);
|
|
11
|
+
}
|
|
12
|
+
const keys = opts.yes ? adapter.approveKeys.yes : adapter.approveKeys.no;
|
|
13
|
+
if (keys.length === 0) {
|
|
14
|
+
throw new Error(`sonata: the ${adapter.name} harness cannot be answered from outside. ` +
|
|
15
|
+
`Attach with \`tmux attach -t ${meta.session}\` to respond directly.`);
|
|
16
|
+
}
|
|
17
|
+
const prompt = adapter.describePrompt(cleanPane(await capturePane(meta.session)));
|
|
18
|
+
if (prompt !== null)
|
|
19
|
+
writeAnsweredPrompt(opts.cwd, opts.id, prompt);
|
|
20
|
+
for (const key of keys)
|
|
21
|
+
await sendKeys(meta.session, key);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=approve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approve.js","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAoB;IACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,iCAAiC,IAAI,CAAC,OAAO,aAAa,IAAI,CAAC,EAAE,IAAI;YACrE,sDAAsD,CACvD,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IACzE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,eAAe,OAAO,CAAC,IAAI,4CAA4C;YACvE,gCAAgC,IAAI,CAAC,OAAO,yBAAyB,CACtE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClF,IAAI,MAAM,KAAK,IAAI;QAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACpE,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { keyReport, removeSonataKey, writeSonataKey } from '../native/credentials.js';
|
|
2
|
+
import { loadConfig, isOauthGatewayAuth } from '../config.js';
|
|
3
|
+
import { credentialDir, loginGateway } from '../native/oauth-login.js';
|
|
4
|
+
export function cmdAuthList(opts) {
|
|
5
|
+
const text = keyReport(opts.gateways, opts.home)
|
|
6
|
+
.map(({ gateway, source }) => `${gateway}: ${source === null ? 'no key' : `key from ${source}`}`)
|
|
7
|
+
.join('\n');
|
|
8
|
+
return { text };
|
|
9
|
+
}
|
|
10
|
+
export function cmdAuthAdd(opts) {
|
|
11
|
+
writeSonataKey(opts.home, opts.gateway, opts.key);
|
|
12
|
+
}
|
|
13
|
+
export function cmdAuthRemove(opts) {
|
|
14
|
+
removeSonataKey(opts.home, opts.gateway);
|
|
15
|
+
}
|
|
16
|
+
export async function cmdAuthLogin(opts) {
|
|
17
|
+
const config = loadConfig(opts.cwd, opts.home);
|
|
18
|
+
const gateways = config.native?.gateways ?? {};
|
|
19
|
+
const gateway = gateways[opts.gateway];
|
|
20
|
+
if (!gateway) {
|
|
21
|
+
throw new Error(`sonata auth login: no native gateway "${opts.gateway}". ` +
|
|
22
|
+
`Configured: ${Object.keys(gateways).join(', ') || '(none)'}`);
|
|
23
|
+
}
|
|
24
|
+
if (!isOauthGatewayAuth(gateway.auth)) {
|
|
25
|
+
throw new Error(`sonata auth login: gateway "${opts.gateway}" is auth = "api-key" — ` +
|
|
26
|
+
`store a key instead: sonata auth add ${opts.gateway}`);
|
|
27
|
+
}
|
|
28
|
+
opts.out(`Logging in to ${opts.gateway}. A code appears below; enter it in your browser.`);
|
|
29
|
+
const result = await loginGateway({
|
|
30
|
+
home: opts.home,
|
|
31
|
+
gateway: opts.gateway,
|
|
32
|
+
auth: gateway.auth,
|
|
33
|
+
progress: { line: opts.out },
|
|
34
|
+
interpreter: opts.interpreter,
|
|
35
|
+
});
|
|
36
|
+
if (!result.ok)
|
|
37
|
+
throw new Error(`sonata auth login: ${result.problem}`);
|
|
38
|
+
opts.out(`Logged in. Credential stored in ${credentialDir(opts.home, opts.gateway)}`);
|
|
39
|
+
opts.out(`Record it in sonata.toml under [native.gateways.${opts.gateway}]: credential_source = "sonata"`);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEvE,MAAM,UAAU,WAAW,CAAC,IAA0C;IACpE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC;SAC7C,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,EAAE,CAAC;SAChG,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAoD;IAC7E,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAuC;IACnE,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAMlC;IACC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,yCAAyC,IAAI,CAAC,OAAO,KAAK;YAC1D,eAAe,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAC9D,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,+BAA+B,IAAI,CAAC,OAAO,0BAA0B;YACrE,wCAAwC,IAAI,CAAC,OAAO,EAAE,CACvD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,OAAO,mDAAmD,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;QAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAExE,IAAI,CAAC,GAAG,CAAC,mCAAmC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC,GAAG,CAAC,mDAAmD,IAAI,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAC7G,CAAC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
import { aaCatalogPath, normalizeModelName, } from '../catalog.js';
|
|
4
|
+
import { AI_PRICING_URL, aiPricingPath, normalizeAiPricingRows, } from '../aipricing.js';
|
|
5
|
+
import { resolveKeyFromSource } from '../native/credentials.js';
|
|
6
|
+
/**
|
|
7
|
+
* The free language-models endpoint, not `/data/llms/models`.
|
|
8
|
+
*
|
|
9
|
+
* It is the only one that publishes
|
|
10
|
+
* `artificial_analysis_intelligence_index_cost.cost_per_task` — the dollars to
|
|
11
|
+
* run one benchmark task, which prices the *work* rather than the tokens — and
|
|
12
|
+
* `artificial_analysis_agentic_index`, the closest published proxy to what a
|
|
13
|
+
* sonata subagent does. It is paginated, so every page is fetched.
|
|
14
|
+
*/
|
|
15
|
+
const AA_MODELS_URL = 'https://artificialanalysis.ai/api/v2/language/models/free';
|
|
16
|
+
/** Pages are 200 models; this bounds a malformed `total_pages` rather than looping forever. */
|
|
17
|
+
const AA_MAX_PAGES = 20;
|
|
18
|
+
const AA_GATEWAY = 'artificialanalysis';
|
|
19
|
+
function isRecord(value) {
|
|
20
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
21
|
+
}
|
|
22
|
+
function numberAt(value, ...path) {
|
|
23
|
+
let current = value;
|
|
24
|
+
for (const part of path) {
|
|
25
|
+
if (!isRecord(current))
|
|
26
|
+
return undefined;
|
|
27
|
+
current = current[part];
|
|
28
|
+
}
|
|
29
|
+
return typeof current === 'number' && Number.isFinite(current) ? current : undefined;
|
|
30
|
+
}
|
|
31
|
+
function modelName(entry) {
|
|
32
|
+
// Slugs are the stable provider/model spelling; display names are the fallback.
|
|
33
|
+
for (const field of ['slug', 'name']) {
|
|
34
|
+
if (typeof entry[field] === 'string' && entry[field].trim() !== '') {
|
|
35
|
+
return normalizeModelName(entry[field]);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
function nowIso(deps) {
|
|
41
|
+
return (deps.now ?? (() => new Date()))().toISOString();
|
|
42
|
+
}
|
|
43
|
+
async function updateAaCatalog(home, fetchFn, deps) {
|
|
44
|
+
const key = resolveKeyFromSource(AA_GATEWAY, home, 'sonata');
|
|
45
|
+
if (key === undefined) {
|
|
46
|
+
throw new Error('sonata catalog update: no key stored — run `sonata auth add artificialanalysis` ' +
|
|
47
|
+
'(free key at https://artificialanalysis.ai)');
|
|
48
|
+
}
|
|
49
|
+
const entries = [];
|
|
50
|
+
let indexVersion;
|
|
51
|
+
for (let page = 1; page <= AA_MAX_PAGES; page += 1) {
|
|
52
|
+
const response = await fetchFn(`${AA_MODELS_URL}?page=${page}`, { headers: { 'x-api-key': key } });
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
const reason = response.status === 401 || response.status === 403 ? 'key rejected' : 'request failed';
|
|
55
|
+
throw new Error(`sonata catalog update: ${reason} (HTTP ${response.status})`);
|
|
56
|
+
}
|
|
57
|
+
let body;
|
|
58
|
+
try {
|
|
59
|
+
body = await response.json();
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
throw new Error('sonata catalog update: malformed response body');
|
|
63
|
+
}
|
|
64
|
+
if (!isRecord(body) || !Array.isArray(body.data)) {
|
|
65
|
+
throw new Error('sonata catalog update: malformed response body (expected data array)');
|
|
66
|
+
}
|
|
67
|
+
entries.push(...body.data);
|
|
68
|
+
// Scores are only comparable within one index version, so a cache that
|
|
69
|
+
// silently mixed two would rank models against different scales.
|
|
70
|
+
const version = isRecord(body) && body.intelligence_index_version !== undefined
|
|
71
|
+
? String(body.intelligence_index_version)
|
|
72
|
+
: undefined;
|
|
73
|
+
if (version !== undefined) {
|
|
74
|
+
if (indexVersion !== undefined && indexVersion !== version) {
|
|
75
|
+
throw new Error(`sonata catalog update: response changed index version mid-fetch (${indexVersion} then ${version}) — ` +
|
|
76
|
+
'retry, rather than caching two incomparable scales');
|
|
77
|
+
}
|
|
78
|
+
indexVersion = version;
|
|
79
|
+
}
|
|
80
|
+
const pagination = isRecord(body) && isRecord(body.pagination) ? body.pagination : undefined;
|
|
81
|
+
if (pagination?.has_more !== true)
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
const models = {};
|
|
85
|
+
for (const value of entries) {
|
|
86
|
+
if (!isRecord(value))
|
|
87
|
+
continue;
|
|
88
|
+
const name = modelName(value);
|
|
89
|
+
const codingIndex = numberAt(value, 'evaluations', 'artificial_analysis_coding_index');
|
|
90
|
+
const intelligenceIndex = numberAt(value, 'evaluations', 'artificial_analysis_intelligence_index');
|
|
91
|
+
const agenticIndex = numberAt(value, 'evaluations', 'artificial_analysis_agentic_index');
|
|
92
|
+
const costPerTask = numberAt(value, 'artificial_analysis_intelligence_index_cost', 'cost_per_task', 'total_cost');
|
|
93
|
+
// This endpoint publishes per-token rates but no blended figure, so the
|
|
94
|
+
// 3:1 input:output blend the old endpoint served is computed here. It is
|
|
95
|
+
// the weaker cost measure — kept only for models AA has not costed per
|
|
96
|
+
// task — but every model needs *some* price or it cannot be ranked at all.
|
|
97
|
+
const input = numberAt(value, 'pricing', 'price_1m_input_tokens');
|
|
98
|
+
const output = numberAt(value, 'pricing', 'price_1m_output_tokens');
|
|
99
|
+
const blendedPriceUsd = input !== undefined && output !== undefined
|
|
100
|
+
? (input * 3 + output) / 4
|
|
101
|
+
: undefined;
|
|
102
|
+
// A model needs a capability score and a price to be rankable; anything
|
|
103
|
+
// else here is a bonus.
|
|
104
|
+
const capability = agenticIndex ?? codingIndex ?? intelligenceIndex;
|
|
105
|
+
const price = costPerTask ?? blendedPriceUsd;
|
|
106
|
+
if (name === undefined || capability === undefined || price === undefined)
|
|
107
|
+
continue;
|
|
108
|
+
models[name] = {
|
|
109
|
+
codingIndex: codingIndex ?? capability,
|
|
110
|
+
blendedPriceUsd: blendedPriceUsd ?? price,
|
|
111
|
+
...(intelligenceIndex === undefined ? {} : { intelligenceIndex }),
|
|
112
|
+
...(agenticIndex === undefined ? {} : { agenticIndex }),
|
|
113
|
+
...(costPerTask === undefined ? {} : { costPerTask }),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
// Do not silently replace a usable ranking cache with an unusable response.
|
|
117
|
+
if (Object.keys(models).length === 0) {
|
|
118
|
+
throw new Error('sonata catalog update: response carried no usable model — expected ' +
|
|
119
|
+
'an evaluations index and either a cost_per_task or per-token pricing ' +
|
|
120
|
+
'on at least one entry; leaving the existing cache untouched');
|
|
121
|
+
}
|
|
122
|
+
const fetchedAt = nowIso(deps);
|
|
123
|
+
const catalog = { fetchedAt, models };
|
|
124
|
+
const path = aaCatalogPath(home);
|
|
125
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
126
|
+
writeFileSync(path, `${JSON.stringify(catalog, null, 2)}\n`, { mode: 0o600 });
|
|
127
|
+
return { models: Object.keys(models).length, path, fetchedAt };
|
|
128
|
+
}
|
|
129
|
+
async function updateAiPricing(home, fetchFn, deps) {
|
|
130
|
+
const response = await fetchFn(AI_PRICING_URL);
|
|
131
|
+
if (!response.ok) {
|
|
132
|
+
throw new Error(`sonata catalog update: ai-pricing request failed (HTTP ${response.status})`);
|
|
133
|
+
}
|
|
134
|
+
let body;
|
|
135
|
+
try {
|
|
136
|
+
body = await response.json();
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
throw new Error('sonata catalog update: malformed ai-pricing response body');
|
|
140
|
+
}
|
|
141
|
+
if (!isRecord(body) || !Array.isArray(body.data)) {
|
|
142
|
+
throw new Error('sonata catalog update: malformed ai-pricing response body (expected data array)');
|
|
143
|
+
}
|
|
144
|
+
const models = normalizeAiPricingRows(body.data);
|
|
145
|
+
// A schema change that rejects every row must preserve the last known prices
|
|
146
|
+
// rather than silently turn every later ledger entry into an unpriced one.
|
|
147
|
+
if (Object.keys(models).length === 0) {
|
|
148
|
+
throw new Error('sonata catalog update: ai-pricing response contained no usable price rows; ' +
|
|
149
|
+
'leaving the existing cache untouched');
|
|
150
|
+
}
|
|
151
|
+
const fetchedAt = nowIso(deps);
|
|
152
|
+
const catalog = { fetchedAt, models };
|
|
153
|
+
const path = aiPricingPath(home);
|
|
154
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
155
|
+
writeFileSync(path, `${JSON.stringify(catalog, null, 2)}\n`, { mode: 0o600 });
|
|
156
|
+
return { models: Object.keys(models).length, path, fetchedAt };
|
|
157
|
+
}
|
|
158
|
+
function outcome(promise) {
|
|
159
|
+
return promise.catch((error) => ({
|
|
160
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
/** Fetch independent catalogs so an optional source never blocks the other cache. */
|
|
164
|
+
export async function cmdCatalogUpdate(home, deps = {}) {
|
|
165
|
+
const fetchFn = deps.fetch ?? fetch;
|
|
166
|
+
const [aa, aiPricing] = await Promise.all([
|
|
167
|
+
outcome(updateAaCatalog(home, fetchFn, deps)),
|
|
168
|
+
outcome(updateAiPricing(home, fetchFn, deps)),
|
|
169
|
+
]);
|
|
170
|
+
return { aa, aiPricing };
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { configPath as resolveSonataConfigPath, loadConfig } from '../config.js';
|
|
3
|
+
import { isSonataRouter, sonataRouterConfigPath, startServeDaemon } from './serve.js';
|
|
4
|
+
/**
|
|
5
|
+
* The env vars that route a Claude Code session through the sonata router.
|
|
6
|
+
*
|
|
7
|
+
* Shared by `planCode` (which spawns `claude` with them) and `sonata route`
|
|
8
|
+
* (which writes them into `.claude/settings.local.json`) so the two session
|
|
9
|
+
* paths cannot drift.
|
|
10
|
+
*/
|
|
11
|
+
export function nativeSessionEnv(config) {
|
|
12
|
+
if (!config.native)
|
|
13
|
+
return {};
|
|
14
|
+
const env = {
|
|
15
|
+
ANTHROPIC_BASE_URL: `http://localhost:${config.native.ports.router}`,
|
|
16
|
+
};
|
|
17
|
+
const windows = [
|
|
18
|
+
...Object.values(config.native.models).map((model) => model.contextWindow),
|
|
19
|
+
...Object.values(config.unifiedModels)
|
|
20
|
+
.map((model) => model.contextWindow)
|
|
21
|
+
.filter((window) => window !== undefined),
|
|
22
|
+
];
|
|
23
|
+
if (windows.length > 0) {
|
|
24
|
+
env.CLAUDE_CODE_MAX_CONTEXT_TOKENS = String(Math.min(...windows));
|
|
25
|
+
}
|
|
26
|
+
return env;
|
|
27
|
+
}
|
|
28
|
+
export function planCode(opts) {
|
|
29
|
+
const config = loadConfig(opts.cwd, opts.home);
|
|
30
|
+
if (!config.native)
|
|
31
|
+
throw new Error('sonata code: no [native] table');
|
|
32
|
+
return {
|
|
33
|
+
env: nativeSessionEnv(config),
|
|
34
|
+
argv: ['claude', ...opts.passthrough],
|
|
35
|
+
banner: 'Native Claude session started. Remote Control unavailable in sonata code.',
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export async function defaultEnsureServe(cwd, home) {
|
|
39
|
+
const config = loadConfig(cwd, home);
|
|
40
|
+
if (!config.native)
|
|
41
|
+
throw new Error('sonata code: no [native] table');
|
|
42
|
+
const port = config.native.ports.router;
|
|
43
|
+
const expectedConfigPath = resolveSonataConfigPath(cwd, home);
|
|
44
|
+
const running = await isSonataRouter(port);
|
|
45
|
+
if (running) {
|
|
46
|
+
// Two projects can share the same default router port; a router already
|
|
47
|
+
// answering here is not proof it is THIS project's — verify which
|
|
48
|
+
// sonata.toml actually started it before trusting it. A router that
|
|
49
|
+
// cannot or does not report its own configPath (an older sonata build,
|
|
50
|
+
// or one whose own resolution failed) is treated the same as a
|
|
51
|
+
// mismatch: unverifiable is not the same as compatible.
|
|
52
|
+
if (expectedConfigPath !== null) {
|
|
53
|
+
const actualConfigPath = await sonataRouterConfigPath(port);
|
|
54
|
+
if (actualConfigPath === null || actualConfigPath !== expectedConfigPath) {
|
|
55
|
+
throw new Error(actualConfigPath === null
|
|
56
|
+
? `sonata: router port ${port} answered but did not report which sonata configuration ` +
|
|
57
|
+
`it is running (too old, or its own config resolution failed) — refusing to trust it. ` +
|
|
58
|
+
`Restart it with \`sonata restart\` once confirmed to be this project's own router.`
|
|
59
|
+
: `sonata: router port ${port} is already serving a different sonata configuration ` +
|
|
60
|
+
`(${actualConfigPath}) than this project resolves to (${expectedConfigPath}). ` +
|
|
61
|
+
`Two projects cannot share one router port — set a different [native.ports].router ` +
|
|
62
|
+
`in one of the two configs.`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return port;
|
|
66
|
+
}
|
|
67
|
+
await startServeDaemon(home, ['sonata', 'serve', '--daemon'], {}, cwd);
|
|
68
|
+
// A concurrent launch in another project could have won the race to bind
|
|
69
|
+
// this same default port with ITS daemon between the probe above and this
|
|
70
|
+
// daemon spawn's poll completing — verify identity again now that
|
|
71
|
+
// something is confirmed to be listening.
|
|
72
|
+
if (expectedConfigPath !== null) {
|
|
73
|
+
const startedConfigPath = await sonataRouterConfigPath(port);
|
|
74
|
+
if (startedConfigPath === null || startedConfigPath !== expectedConfigPath) {
|
|
75
|
+
throw new Error(startedConfigPath === null
|
|
76
|
+
? `sonata: router port ${port} answered but did not report which sonata configuration ` +
|
|
77
|
+
`it is running (too old, or its own config resolution failed) — refusing to trust it. ` +
|
|
78
|
+
`Restart it with \`sonata restart\` once confirmed to be this project's own router.`
|
|
79
|
+
: `sonata: router port ${port} is already serving a different sonata configuration ` +
|
|
80
|
+
`(${startedConfigPath}) than this project resolves to (${expectedConfigPath}). ` +
|
|
81
|
+
`Two projects cannot share one router port — set a different [native.ports].router ` +
|
|
82
|
+
`in one of the two configs.`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return port;
|
|
86
|
+
}
|
|
87
|
+
export function execClaude(argv, env, deps = {}) {
|
|
88
|
+
const spawnFn = deps.spawn ?? spawn;
|
|
89
|
+
const exit = deps.exit ?? ((code) => process.exit(code));
|
|
90
|
+
const raise = deps.signal ?? ((sig) => process.kill(process.pid, sig));
|
|
91
|
+
const child = spawnFn(argv[0], argv.slice(1), { env: { ...process.env, ...env }, stdio: 'inherit' });
|
|
92
|
+
return new Promise((_resolve, reject) => {
|
|
93
|
+
child.on('error', (error) => {
|
|
94
|
+
reject(error.code === 'ENOENT'
|
|
95
|
+
? new Error(`sonata code: ${argv[0]} is not on PATH — install Claude Code, or run it by hand ` +
|
|
96
|
+
`with ANTHROPIC_BASE_URL=${env.ANTHROPIC_BASE_URL}`)
|
|
97
|
+
: error);
|
|
98
|
+
});
|
|
99
|
+
child.on('exit', (code, signal) => {
|
|
100
|
+
// Relay how claude ended, so a shell sees the status it would have seen.
|
|
101
|
+
if (signal)
|
|
102
|
+
raise(signal);
|
|
103
|
+
exit(code ?? 1);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
export async function cmdCode(opts) {
|
|
108
|
+
const plan = planCode(opts);
|
|
109
|
+
await (opts.ensureServe ?? (() => defaultEnsureServe(opts.cwd, opts.home)))();
|
|
110
|
+
console.log(plan.banner);
|
|
111
|
+
await (opts.exec ?? ((argv, env) => execClaude(argv, env)))(plan.argv, plan.env);
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/commands/code.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { randomBytes } from 'node:crypto';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { loadConfig, harnessModelFor, resolveTierAlias } from '../config.js';
|
|
5
|
+
import { cmdRun } from './run.js';
|
|
6
|
+
import { cmdWait } from './wait.js';
|
|
7
|
+
export const MAX_REPORT_CHARS = 40_000;
|
|
8
|
+
const PROVENANCE_MARKER = '\n\n— sonata ';
|
|
9
|
+
/**
|
|
10
|
+
* Truncates a report to `max` characters, but never at the cost of the
|
|
11
|
+
* closing `— sonata ...` provenance line `cmdTail` appends to every finished
|
|
12
|
+
* report: generated wrappers reject a result with no such line as evidence
|
|
13
|
+
* no dispatch happened, so losing it on a long-but-successful run would
|
|
14
|
+
* report a real run as invalid.
|
|
15
|
+
*/
|
|
16
|
+
export function truncateReport(report, id, max = MAX_REPORT_CHARS) {
|
|
17
|
+
if (report.length <= max)
|
|
18
|
+
return report;
|
|
19
|
+
const markerIndex = report.lastIndexOf(PROVENANCE_MARKER);
|
|
20
|
+
const provenance = markerIndex !== -1 ? report.slice(markerIndex) : '';
|
|
21
|
+
const bodyMax = Math.max(0, max - provenance.length);
|
|
22
|
+
return `${report.slice(0, bodyMax)}\n\n[truncated: full transcript at \`sonata log ${id}\`]${provenance}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* `Date.now()` alone collides under concurrent dispatch — two calls in the
|
|
26
|
+
* same millisecond would overwrite each other's task file before either
|
|
27
|
+
* launch reads it back. The random suffix makes the name unique regardless
|
|
28
|
+
* of timing.
|
|
29
|
+
*/
|
|
30
|
+
export function taskPath(cwd) {
|
|
31
|
+
const dir = join(cwd, '.sonata', 'tasks');
|
|
32
|
+
mkdirSync(dir, { recursive: true });
|
|
33
|
+
return join(dir, `${Date.now()}-${randomBytes(4).toString('hex')}.md`);
|
|
34
|
+
}
|
|
35
|
+
/** Run a ranked harness route, trying the next route only on a failed finish. */
|
|
36
|
+
export async function cmdDispatch(opts, deps = {}) {
|
|
37
|
+
const config = loadConfig(opts.cwd, opts.home);
|
|
38
|
+
const candidates = [];
|
|
39
|
+
let role = 'code';
|
|
40
|
+
if ((opts.tier === undefined) === (opts.model === undefined)) {
|
|
41
|
+
throw new Error('sonata dispatch requires exactly one of --tier or --model');
|
|
42
|
+
}
|
|
43
|
+
if (opts.tier !== undefined) {
|
|
44
|
+
const alias = opts.tier.startsWith('sonata-') ? opts.tier : `sonata-${opts.tier}`;
|
|
45
|
+
const resolved = resolveTierAlias(config, alias);
|
|
46
|
+
if (!resolved)
|
|
47
|
+
throw new Error(`sonata dispatch: unknown tier "${opts.tier}"`);
|
|
48
|
+
role = resolved.role;
|
|
49
|
+
for (const route of resolved.routes) {
|
|
50
|
+
if (route.harness !== undefined)
|
|
51
|
+
candidates.push(route.key);
|
|
52
|
+
}
|
|
53
|
+
if (candidates.length === 0) {
|
|
54
|
+
throw new Error(`sonata dispatch: tier "${opts.tier}" has no harness routes`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
if (!harnessModelFor(config, opts.model)
|
|
59
|
+
&& !config.models[opts.model]
|
|
60
|
+
&& !config.native?.models[opts.model]
|
|
61
|
+
&& !(config.unifiedModels[opts.model]?.gateway !== undefined && config.unifiedModels[opts.model]?.id !== undefined)) {
|
|
62
|
+
throw new Error(`sonata dispatch: model "${opts.model}" has no harness route`);
|
|
63
|
+
}
|
|
64
|
+
// Unlike --tier, a bare --model key carries no role of its own — a
|
|
65
|
+
// legacy config's review-<model>/explore-<model> wrapper depends on
|
|
66
|
+
// this being right, since running the wrong role's prompt under a
|
|
67
|
+
// read-only role's own permission policy would let it write.
|
|
68
|
+
role = opts.role ?? 'code';
|
|
69
|
+
candidates.push(opts.model);
|
|
70
|
+
}
|
|
71
|
+
const run = deps.run ?? cmdRun;
|
|
72
|
+
const wait = deps.wait ?? cmdWait;
|
|
73
|
+
const attempts = [];
|
|
74
|
+
let lastId = '';
|
|
75
|
+
for (const modelKey of candidates) {
|
|
76
|
+
const taskFile = taskPath(opts.cwd);
|
|
77
|
+
writeFileSync(taskFile, opts.task);
|
|
78
|
+
let launched;
|
|
79
|
+
try {
|
|
80
|
+
const runOpts = {
|
|
81
|
+
cwd: opts.cwd,
|
|
82
|
+
role,
|
|
83
|
+
model: modelKey,
|
|
84
|
+
taskFile,
|
|
85
|
+
rolesDir: opts.rolesDir,
|
|
86
|
+
sessionId: opts.sessionId,
|
|
87
|
+
};
|
|
88
|
+
launched = await run(runOpts);
|
|
89
|
+
lastId = launched.id;
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
attempts.push({
|
|
93
|
+
modelKey, state: 'FAILED', degraded: true,
|
|
94
|
+
error: err instanceof Error ? err.message : String(err),
|
|
95
|
+
});
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
let result;
|
|
99
|
+
try {
|
|
100
|
+
result = await wait({ cwd: opts.cwd, id: launched.id });
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
// The launch succeeded — the harness may still be running. Trying the
|
|
104
|
+
// next candidate here would race it on the same working tree, so this
|
|
105
|
+
// stops rather than falling through, surfacing the launched run's id
|
|
106
|
+
// instead of silently doubling up.
|
|
107
|
+
attempts.push({
|
|
108
|
+
modelKey, state: 'FAILED', degraded: true,
|
|
109
|
+
error: err instanceof Error ? err.message : String(err),
|
|
110
|
+
});
|
|
111
|
+
return { id: launched.id, state: 'FAILED', modelKey, attempts };
|
|
112
|
+
}
|
|
113
|
+
if (result.state === 'RUNNING') {
|
|
114
|
+
// The wait window elapsed with the run still in progress — not a
|
|
115
|
+
// failure, just unresolved. Return control to the caller (`sonata wait
|
|
116
|
+
// <id>` resumes it) rather than reopening another full wait window,
|
|
117
|
+
// which would block indefinitely and starve whatever invoked this.
|
|
118
|
+
attempts.push({ modelKey, state: 'RUNNING', degraded: false });
|
|
119
|
+
return { id: result.id, state: 'RUNNING', modelKey, attempts };
|
|
120
|
+
}
|
|
121
|
+
const degraded = result.degraded === true;
|
|
122
|
+
attempts.push({ modelKey, state: result.state, degraded });
|
|
123
|
+
const emptyReport = result.state === 'DONE' && !(result.report?.trim());
|
|
124
|
+
if (result.state === 'DONE' && (degraded || emptyReport)) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
id: result.id,
|
|
129
|
+
state: result.state,
|
|
130
|
+
modelKey,
|
|
131
|
+
report: result.report === undefined ? undefined : truncateReport(result.report, result.id),
|
|
132
|
+
prompt: result.prompt ?? (result.state === 'PAUSED' && result.lines.length > 0
|
|
133
|
+
? result.lines.join('\n')
|
|
134
|
+
: undefined),
|
|
135
|
+
lines: result.lines,
|
|
136
|
+
attempts,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
// Preserve the ranked failure history rather than surfacing one misleading
|
|
140
|
+
// error after every route has been tried.
|
|
141
|
+
return {
|
|
142
|
+
id: lastId,
|
|
143
|
+
state: 'FAILED',
|
|
144
|
+
modelKey: candidates[candidates.length - 1] ?? '',
|
|
145
|
+
attempts,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=dispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/commands/dispatch.ts"],"names":[],"mappings":"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"}
|