@wjarka/cezarion 0.13.4 → 0.13.5-pr355.544
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/agent-config/catalog.d.ts +4 -1
- package/dist/agent-config/catalog.js +50 -3
- package/dist/agent-config/catalog.js.map +1 -1
- package/dist/agent-config/model-settings/pi.d.ts +0 -10
- package/dist/agent-config/model-settings/pi.js +28 -8
- package/dist/agent-config/model-settings/pi.js.map +1 -1
- package/dist/agent-config/model-settings/shared.d.ts +2 -0
- package/dist/agent-config/model-settings/shared.js +4 -0
- package/dist/agent-config/model-settings/shared.js.map +1 -1
- package/dist/contract/index.js +7 -1
- package/dist/contract/runs.d.ts +17 -0
- package/dist/contract/skills.d.ts +3 -0
- package/dist/core/agent-runner.d.ts +26 -0
- package/dist/core/agent-runner.js +22 -0
- package/dist/core/agent-runner.js.map +1 -1
- package/dist/core/claude-cli-runner.d.ts +9 -1
- package/dist/core/claude-cli-runner.js +23 -0
- package/dist/core/claude-cli-runner.js.map +1 -1
- package/dist/core/codex-app-server-runner.d.ts +11 -1
- package/dist/core/codex-app-server-runner.js +25 -0
- package/dist/core/codex-app-server-runner.js.map +1 -1
- package/dist/core/host-model-catalog.d.ts +14 -0
- package/dist/core/host-model-catalog.js +24 -0
- package/dist/core/host-model-catalog.js.map +1 -0
- package/dist/core/opencode-server-runner.d.ts +11 -1
- package/dist/core/opencode-server-runner.js +25 -0
- package/dist/core/opencode-server-runner.js.map +1 -1
- package/dist/core/pi-runner.d.ts +10 -1
- package/dist/core/pi-runner.js +34 -1
- package/dist/core/pi-runner.js.map +1 -1
- package/dist/core/pi-ui-mapper.d.ts +15 -0
- package/dist/core/pi-ui-mapper.js +29 -4
- package/dist/core/pi-ui-mapper.js.map +1 -1
- package/dist/core/process-usage.d.ts +3 -0
- package/dist/core/process-usage.js +5 -0
- package/dist/core/process-usage.js.map +1 -1
- package/dist/core/runner-model-catalog.js +7 -2
- package/dist/core/runner-model-catalog.js.map +1 -1
- package/dist/delegation/routes.d.ts +50 -50
- package/dist/delegation/transport.d.ts +50 -50
- package/dist/paths.d.ts +2 -1
- package/dist/paths.js +3 -1
- package/dist/paths.js.map +1 -1
- package/dist/runs/store.d.ts +7 -2
- package/dist/runs/store.js +6 -0
- package/dist/runs/store.js.map +1 -1
- package/dist/server/server.d.ts +1269 -1203
- package/dist/server/server.js +5 -13
- package/dist/server/server.js.map +1 -1
- package/dist/workflows/run.d.ts +13 -2
- package/dist/workflows/run.js +259 -38
- package/dist/workflows/run.js.map +1 -1
- package/package.json +3 -3
- package/scripts/mock-pi-rpc.mjs +10 -0
- package/web/dist/assets/agent-accounts-0XE1H17O.js +1 -0
- package/web/dist/assets/{alert-dialog-Duzl27Ie.js → alert-dialog-DFJbVtBQ.js} +12 -12
- package/web/dist/assets/{collapsible-O6Tjzyk-.js → collapsible-CY3Kzhe7.js} +1 -1
- package/web/dist/assets/{commit-list-B4XC1ODn.js → commit-list-DGa1MVRq.js} +1 -1
- package/web/dist/assets/{compare-variants-BVL8TqP9.js → compare-variants-CSpVrnYN.js} +1 -1
- package/web/dist/assets/{diff-BHmZWDtg2.js → diff-DDUpEMjA2.js} +2 -2
- package/web/dist/assets/{diff-controls-BoL-cEfC.js → diff-controls-C_7Ket1G.js} +1 -1
- package/web/dist/assets/{diff-stat-BinS5K0X.js → diff-stat-Cq4juy0u.js} +1 -1
- package/web/dist/assets/{diff-view-BogZS6qH.js → diff-view-Coyp_Kst.js} +1 -1
- package/web/dist/assets/{dropdown-menu-Da0G_FSk.js → dropdown-menu-D_AapbCA.js} +1 -1
- package/web/dist/assets/{git-toolbar-CYFkDz1s.js → git-toolbar-Ctck--gW.js} +1 -1
- package/web/dist/assets/github-D4F_Ux2B.js +1 -0
- package/web/dist/assets/github-DTIn5Tro.css +1 -0
- package/web/dist/assets/{image-preview-DpJkIJow.js → image-preview-DXIixdjJ.js} +1 -1
- package/web/dist/assets/index-1w-3-ebj.css +1 -0
- package/web/dist/assets/index-BWdizKd9.js +7 -0
- package/web/dist/assets/{markdown-Ni-GM0ra.js → markdown-zVtbO9Y3.js} +1 -1
- package/web/dist/assets/pill-D7x-JgPk.js +1 -0
- package/web/dist/assets/{project-router-B8sUN_Ka.js → project-router-_NlWrr1u.js} +1 -1
- package/web/dist/assets/prompt-templates-BAHuEV4s.js +15 -0
- package/web/dist/assets/repo-git-C9XN3mXu.js +1 -0
- package/web/dist/assets/{run-diff-DanadyNi.js → run-diff-BqNutNWV.js} +2 -2
- package/web/dist/assets/run-header-C3oNFHTw.js +1 -0
- package/web/dist/assets/{skills-Cyk33xfz.js → skills-DUsxmcGu.js} +1 -1
- package/web/dist/assets/{tab-link-DAMk-HDQ.js → tab-link-CjkLjjTf.js} +1 -1
- package/web/dist/assets/{task-changes-DI4_6Wp4.js → task-changes-Brwkn3tJ.js} +1 -1
- package/web/dist/assets/task-commits-DskL6rzX.js +1 -0
- package/web/dist/assets/{task-files-Bc1H59kO.js → task-files-BJD8fAX4.js} +2 -2
- package/web/dist/assets/task-thread-BaIlrXIF.js +9 -0
- package/web/dist/assets/task-thread-DMRD0IVt.css +1 -0
- package/web/dist/assets/{textarea-Bl6llqoA.js → textarea-DZV_YYw9.js} +1 -1
- package/web/dist/assets/thread-loading-Bet4X9Ow.js +1 -0
- package/web/dist/assets/{token-metrics-CWXw3O9q.js → token-metrics-C_zRfWAP.js} +1 -1
- package/web/dist/assets/{utils-9-zDpWwO.js → utils-B8qbBJrk.js} +1 -1
- package/web/dist/assets/{workflows-CfPTxrDw.js → workflows-C0RXiAAC.js} +4 -4
- package/web/dist/assets/{zoomable-image-CQuBDcJD.js → zoomable-image-Idq840Ej.js} +1 -1
- package/web/dist/index.html +14 -14
- package/web/dist/assets/github-BvQUJN1z.js +0 -1
- package/web/dist/assets/github-CSE-ePaX.css +0 -1
- package/web/dist/assets/index-CDG8WjQr.js +0 -7
- package/web/dist/assets/index-DZ8KZzHE.css +0 -1
- package/web/dist/assets/pill-Ba99DOJ9.js +0 -1
- package/web/dist/assets/popover-ClNt8Xa0.js +0 -1
- package/web/dist/assets/prompt-templates-BmXStVbF.js +0 -15
- package/web/dist/assets/repo-git-BKB_uTPT.js +0 -1
- package/web/dist/assets/run-header-BZ6IlgXy.js +0 -1
- package/web/dist/assets/task-commits-CGosUb8O.js +0 -1
- package/web/dist/assets/task-thread-C8ssWDxr.css +0 -1
- package/web/dist/assets/task-thread-CVJ8_hAS.js +0 -9
- package/web/dist/assets/thread-loading-L-UhMGht.js +0 -1
|
@@ -10,7 +10,8 @@ import type { RunnerId } from '../core/agent-runner.ts';
|
|
|
10
10
|
* and what the docs say; an unknown file is not shown rather than guessed at.
|
|
11
11
|
* A raw editor cannot drift on a vendor's *schema*; it can drift on *paths and
|
|
12
12
|
* precedence strings*, so every entry carries a `docsUrl` and this table is the
|
|
13
|
-
* single maintenance surface. Facts verified against primary docs 2026-07-16
|
|
13
|
+
* single maintenance surface. Facts verified against primary docs 2026-07-16;
|
|
14
|
+
* the Pi entries against Pi's README and docs/settings.md on 2026-09-15 (#322).
|
|
14
15
|
*/
|
|
15
16
|
export type ConfigFormat = 'json' | 'jsonc' | 'toml' | 'markdown';
|
|
16
17
|
export type ConfigScope = 'user' | 'project' | 'local';
|
|
@@ -29,6 +30,8 @@ export interface AgentHomePaths {
|
|
|
29
30
|
codex: string;
|
|
30
31
|
/** `$XDG_CONFIG_HOME/opencode` or `~/.config/opencode` */
|
|
31
32
|
opencodeConfig: string;
|
|
33
|
+
/** `$PI_CODING_AGENT_DIR` or `~/.pi/agent` */
|
|
34
|
+
pi: string;
|
|
32
35
|
}
|
|
33
36
|
export interface ConfigFileDef {
|
|
34
37
|
/** Stable, opaque, URL-safe. The ONLY thing a client may name (traversal-proof). */
|
|
@@ -6,6 +6,8 @@ const CODEX_CONFIG_DOCS = 'https://developers.openai.com/codex/config-reference'
|
|
|
6
6
|
const CODEX_AGENTS_DOCS = 'https://developers.openai.com/codex/guides/agents-md';
|
|
7
7
|
const OPENCODE_CONFIG_DOCS = 'https://opencode.ai/docs/config/';
|
|
8
8
|
const OPENCODE_RULES_DOCS = 'https://opencode.ai/docs/rules/';
|
|
9
|
+
const PI_SETTINGS_DOCS = 'https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/docs/settings.md';
|
|
10
|
+
const PI_CONTEXT_FILES_DOCS = 'https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/README.md#context-files';
|
|
9
11
|
/**
|
|
10
12
|
* The table. Order is presentation order: per runner, then user → project →
|
|
11
13
|
* local so each scope ladder reads top (broad) to bottom (specific).
|
|
@@ -198,17 +200,62 @@ export const CONFIG_FILES = [
|
|
|
198
200
|
precedence: 'Global rules. First match wins across scopes: if a project AGENTS.md exists, this global file is not read at all.',
|
|
199
201
|
docsUrl: OPENCODE_RULES_DOCS,
|
|
200
202
|
},
|
|
201
|
-
// ----
|
|
203
|
+
// ---- Pi ----
|
|
204
|
+
// Pi has no MCP file of its own: its README says "No MCP." — servers arrive only through a Pi
|
|
205
|
+
// extension, so nothing here carries `holdsMcp` and the cockpit's MCP group states that instead.
|
|
206
|
+
{
|
|
207
|
+
id: 'pi.user.settings',
|
|
208
|
+
runners: ['pi'],
|
|
209
|
+
kind: 'settings',
|
|
210
|
+
scope: 'user',
|
|
211
|
+
resolve: (_repo, home) => join(home.pi, 'settings.json'),
|
|
212
|
+
label: '~/.pi/agent/settings.json',
|
|
213
|
+
format: 'json',
|
|
214
|
+
tracked: 'outside-repo',
|
|
215
|
+
modelKey: 'defaultModel',
|
|
216
|
+
modelProviderKey: 'defaultProvider',
|
|
217
|
+
modelPriority: 1,
|
|
218
|
+
precedence: 'Global (all projects). Project settings override global settings — the two merge recursively, so nested objects combine rather than replace. Startup model: defaultProvider + defaultModel.',
|
|
219
|
+
docsUrl: PI_SETTINGS_DOCS,
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
id: 'pi.project.settings',
|
|
223
|
+
runners: ['pi'],
|
|
224
|
+
kind: 'settings',
|
|
225
|
+
scope: 'project',
|
|
226
|
+
resolve: (repo) => join(repo, '.pi', 'settings.json'),
|
|
227
|
+
label: '.pi/settings.json',
|
|
228
|
+
format: 'json',
|
|
229
|
+
tracked: 'tracked',
|
|
230
|
+
modelKey: 'defaultModel',
|
|
231
|
+
modelProviderKey: 'defaultProvider',
|
|
232
|
+
modelPriority: 2,
|
|
233
|
+
precedence: 'Overrides global settings (merged recursively). Loaded only once the project folder is trusted; non-interactive modes such as --mode rpc fall back to defaultProjectTrust in the global settings and ignore it under "ask" or "never" — cezar reads a native default model from it only when that value is "always". Runs read the committed copy.',
|
|
234
|
+
docsUrl: PI_SETTINGS_DOCS,
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
id: 'pi.user.memory',
|
|
238
|
+
runners: ['pi'],
|
|
239
|
+
kind: 'memory',
|
|
240
|
+
scope: 'user',
|
|
241
|
+
resolve: (_repo, home) => join(home.pi, 'AGENTS.md'),
|
|
242
|
+
label: '~/.pi/agent/AGENTS.md',
|
|
243
|
+
format: 'markdown',
|
|
244
|
+
tracked: 'outside-repo',
|
|
245
|
+
precedence: 'Global context file, loaded first. Every AGENTS.md (or CLAUDE.md) from the parent directories down to the current one is concatenated after it; an AGENTS.override.md replaces that directory’s file only.',
|
|
246
|
+
docsUrl: PI_CONTEXT_FILES_DOCS,
|
|
247
|
+
},
|
|
248
|
+
// ---- Shared: <repo>/AGENTS.md is read by Codex, OpenCode AND Pi ----
|
|
202
249
|
{
|
|
203
250
|
id: 'project.agents',
|
|
204
|
-
runners: ['codex', 'opencode'],
|
|
251
|
+
runners: ['codex', 'opencode', 'pi'],
|
|
205
252
|
kind: 'memory',
|
|
206
253
|
scope: 'project',
|
|
207
254
|
resolve: (repo) => join(repo, 'AGENTS.md'),
|
|
208
255
|
label: 'AGENTS.md',
|
|
209
256
|
format: 'markdown',
|
|
210
257
|
tracked: 'tracked',
|
|
211
|
-
precedence: 'Read by Codex and
|
|
258
|
+
precedence: 'Read by Codex, OpenCode and Pi (Claude ignores it). Codex concatenates it root-down; OpenCode uses the first match and prefers it over CLAUDE.md; Pi concatenates every AGENTS.md (or CLAUDE.md) from the parent directories down, after its global file. Runs read the committed copy.',
|
|
212
259
|
docsUrl: OPENCODE_RULES_DOCS,
|
|
213
260
|
},
|
|
214
261
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/agent-config/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/agent-config/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,2 @@
|
|
|
1
1
|
import type { AgentModelSettingsStrategy } from './types.ts';
|
|
2
|
-
/**
|
|
3
|
-
* pi's native-settings policy, expressed the same way every other runner's is.
|
|
4
|
-
*
|
|
5
|
-
* Nothing in the agent-config catalog (`catalog.ts`) names a pi-owned settings file yet, so
|
|
6
|
-
* `readNativeSettingsFiles` finds none and this reports "no native default" — which is the
|
|
7
|
-
* truthful answer, not a stub: the cockpit then falls back to cezar's own preset for pi exactly
|
|
8
|
-
* as it does for a runner whose config file the user has never written. Going through the shared
|
|
9
|
-
* reader rather than returning `{}` outright means the day a pi config file IS catalogued, this
|
|
10
|
-
* strategy starts honoring it with no change here.
|
|
11
|
-
*/
|
|
12
2
|
export declare const piModelSettingsStrategy: AgentModelSettingsStrategy;
|
|
@@ -1,18 +1,38 @@
|
|
|
1
|
-
import { firstConfiguredModel, readNativeSettingsFiles } from './shared.js';
|
|
1
|
+
import { configuredString, firstConfiguredModel, firstConfiguredProvider, readNativeSettingsFiles, } from './shared.js';
|
|
2
2
|
/**
|
|
3
3
|
* pi's native-settings policy, expressed the same way every other runner's is.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* `
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* Pi keeps its startup model as two keys — `defaultProvider` and `defaultModel` — in
|
|
6
|
+
* `~/.pi/agent/settings.json` and `.pi/settings.json` (project over global, per the catalog's
|
|
7
|
+
* `modelPriority`). Its `--model` flag accepts `provider/id`, which is also the shape cezar's own
|
|
8
|
+
* pi presets use, so the two keys compose into one id here; a bare `defaultModel` with no provider
|
|
9
|
+
* passes through unchanged rather than being guessed at. No file at all reports "no native
|
|
10
|
+
* default", and the cockpit falls back to cezar's preset for pi.
|
|
11
|
+
*
|
|
12
|
+
* The project file counts only when Pi itself would read it. cezar launches Pi in `--mode rpc`,
|
|
13
|
+
* which never prompts for project trust: without a saved decision Pi falls back to the global
|
|
14
|
+
* `defaultProjectTrust`, and `ask` (its default) or `never` ignore `.pi/settings.json` outright.
|
|
15
|
+
* The run engine passes the native default on as `--model`, so a model read from a file Pi
|
|
16
|
+
* ignores would be forced onto a run Pi would have started differently. Only the documented
|
|
17
|
+
* `"always"` value in the global file is treated as trust; Pi's saved per-folder decisions
|
|
18
|
+
* (`trust.json`) have no documented format and are not read, so a project trusted that way
|
|
19
|
+
* under-reports to the global default rather than guessing.
|
|
11
20
|
*/
|
|
21
|
+
function trustedByGlobalSettings(files) {
|
|
22
|
+
const global = files.find((file) => file.def.scope === 'user');
|
|
23
|
+
return global !== undefined && configuredString(global, 'defaultProjectTrust') === 'always';
|
|
24
|
+
}
|
|
12
25
|
export const piModelSettingsStrategy = {
|
|
13
26
|
runner: 'pi',
|
|
14
27
|
async read(repoRoot, env) {
|
|
15
|
-
|
|
28
|
+
const all = await readNativeSettingsFiles('pi', repoRoot, env);
|
|
29
|
+
const files = trustedByGlobalSettings(all) ? all : all.filter((file) => file.def.scope !== 'project');
|
|
30
|
+
const provider = firstConfiguredProvider(files);
|
|
31
|
+
const model = firstConfiguredModel(files);
|
|
32
|
+
return {
|
|
33
|
+
...(model ? { model: provider && !model.includes('/') ? `${provider}/${model}` : model } : {}),
|
|
34
|
+
...(provider ? { provider } : {}),
|
|
35
|
+
};
|
|
16
36
|
},
|
|
17
37
|
};
|
|
18
38
|
//# sourceMappingURL=pi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../src/agent-config/model-settings/pi.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../src/agent-config/model-settings/pi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EAEvB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,uBAAuB,CAAC,KAAoC;IACnE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IAC/D,OAAO,MAAM,KAAK,SAAS,IAAI,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,CAAC,KAAK,QAAQ,CAAC;AAC9F,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAA+B;IACjE,MAAM,EAAE,IAAI;IACZ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG;QACtB,MAAM,GAAG,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QACtG,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO;YACL,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -5,5 +5,7 @@ export interface NativeSettingsFile {
|
|
|
5
5
|
content: string;
|
|
6
6
|
}
|
|
7
7
|
export declare function readNativeSettingsFiles(runner: RunnerId, repoRoot: string, env: NodeJS.ProcessEnv): Promise<NativeSettingsFile[]>;
|
|
8
|
+
/** One string-valued key out of a native settings file, or undefined when absent, blank, or unparsable. */
|
|
9
|
+
export declare function configuredString(file: NativeSettingsFile, path: string): string | undefined;
|
|
8
10
|
export declare function firstConfiguredModel(files: readonly NativeSettingsFile[]): string | undefined;
|
|
9
11
|
export declare function firstConfiguredProvider(files: readonly NativeSettingsFile[]): string | undefined;
|
|
@@ -70,6 +70,10 @@ export async function readNativeSettingsFiles(runner, repoRoot, env) {
|
|
|
70
70
|
}
|
|
71
71
|
return files;
|
|
72
72
|
}
|
|
73
|
+
/** One string-valued key out of a native settings file, or undefined when absent, blank, or unparsable. */
|
|
74
|
+
export function configuredString(file, path) {
|
|
75
|
+
return stringAtPath(file.content, file.def.format, path);
|
|
76
|
+
}
|
|
73
77
|
export function firstConfiguredModel(files) {
|
|
74
78
|
for (const { def, content } of files) {
|
|
75
79
|
for (const key of def.modelKeys ?? [def.modelKey]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/agent-config/model-settings/shared.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/agent-config/model-settings/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/contract/index.js
CHANGED
|
@@ -823,6 +823,8 @@ var stepStateSchema = z9.object({
|
|
|
823
823
|
kind: z9.enum(["agent", "check"]),
|
|
824
824
|
status: stepStatusSchema,
|
|
825
825
|
iterations: z9.number(),
|
|
826
|
+
/** Durable count of onFail retry loops consumed by this check. */
|
|
827
|
+
retriesUsed: z9.number().int().nonnegative().optional(),
|
|
826
828
|
tokensUsed: z9.number(),
|
|
827
829
|
inputTokens: usageCounterSchema.optional(),
|
|
828
830
|
outputTokens: usageCounterSchema.optional(),
|
|
@@ -843,7 +845,9 @@ var stepStateSchema = z9.object({
|
|
|
843
845
|
* that created it, so resume and Continue read this rather than the project's current
|
|
844
846
|
* selection. Absent on records written before accounts existed. */
|
|
845
847
|
profileId: z9.string().optional(),
|
|
846
|
-
costUsd: z9.number().optional()
|
|
848
|
+
costUsd: z9.number().optional(),
|
|
849
|
+
/** Explicit provenance for engine-generated continuation steps. */
|
|
850
|
+
synthetic: z9.literal("continuation").optional()
|
|
847
851
|
});
|
|
848
852
|
var diffStatSchema = z9.object({
|
|
849
853
|
adds: z9.number(),
|
|
@@ -891,6 +895,8 @@ var runRecordSchema = z9.object({
|
|
|
891
895
|
stopping: z9.boolean().optional(),
|
|
892
896
|
/** Opening Continue message, retained until its first completed turn for crash recovery. */
|
|
893
897
|
continuationMessage: continuationMessageSchema.optional(),
|
|
898
|
+
/** The last turn carried a malformed explicit structured question. */
|
|
899
|
+
invalidAsk: z9.boolean().optional(),
|
|
894
900
|
/** Owned-run authority; absence is legacy, invalid is explicitly quarantined. */
|
|
895
901
|
delegation: delegationStateSchema.optional(),
|
|
896
902
|
/** Durable non-human input, kept separate from human prompt/answer queues. */
|
package/dist/contract/runs.d.ts
CHANGED
|
@@ -66,6 +66,7 @@ export declare const stepStateSchema: z.ZodObject<{
|
|
|
66
66
|
waiting: "waiting";
|
|
67
67
|
}>;
|
|
68
68
|
iterations: z.ZodNumber;
|
|
69
|
+
retriesUsed: z.ZodOptional<z.ZodNumber>;
|
|
69
70
|
tokensUsed: z.ZodNumber;
|
|
70
71
|
inputTokens: z.ZodOptional<z.ZodNumber>;
|
|
71
72
|
outputTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -86,6 +87,7 @@ export declare const stepStateSchema: z.ZodObject<{
|
|
|
86
87
|
}>>;
|
|
87
88
|
profileId: z.ZodOptional<z.ZodString>;
|
|
88
89
|
costUsd: z.ZodOptional<z.ZodNumber>;
|
|
90
|
+
synthetic: z.ZodOptional<z.ZodLiteral<"continuation">>;
|
|
89
91
|
}, z.core.$strip>;
|
|
90
92
|
export type StepState = z.infer<typeof stepStateSchema>;
|
|
91
93
|
/** Aggregate diff numbers of a run's worktree vs its base (#389). */
|
|
@@ -158,6 +160,7 @@ export declare const runRecordSchema: z.ZodObject<{
|
|
|
158
160
|
lifecycle: "lifecycle";
|
|
159
161
|
}>>;
|
|
160
162
|
}, z.core.$strip>>;
|
|
163
|
+
invalidAsk: z.ZodOptional<z.ZodBoolean>;
|
|
161
164
|
delegation: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
162
165
|
role: z.ZodLiteral<"root">;
|
|
163
166
|
conversation: z.ZodOptional<z.ZodObject<{
|
|
@@ -640,6 +643,7 @@ export declare const runRecordSchema: z.ZodObject<{
|
|
|
640
643
|
waiting: "waiting";
|
|
641
644
|
}>;
|
|
642
645
|
iterations: z.ZodNumber;
|
|
646
|
+
retriesUsed: z.ZodOptional<z.ZodNumber>;
|
|
643
647
|
tokensUsed: z.ZodNumber;
|
|
644
648
|
inputTokens: z.ZodOptional<z.ZodNumber>;
|
|
645
649
|
outputTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -660,6 +664,7 @@ export declare const runRecordSchema: z.ZodObject<{
|
|
|
660
664
|
}>>;
|
|
661
665
|
profileId: z.ZodOptional<z.ZodString>;
|
|
662
666
|
costUsd: z.ZodOptional<z.ZodNumber>;
|
|
667
|
+
synthetic: z.ZodOptional<z.ZodLiteral<"continuation">>;
|
|
663
668
|
}, z.core.$strip>>;
|
|
664
669
|
workflowDef: z.ZodOptional<z.ZodObject<{
|
|
665
670
|
name: z.ZodString;
|
|
@@ -726,6 +731,7 @@ export declare const apiRunSchema: z.ZodObject<{
|
|
|
726
731
|
lifecycle: "lifecycle";
|
|
727
732
|
}>>;
|
|
728
733
|
}, z.core.$strip>>;
|
|
734
|
+
invalidAsk: z.ZodOptional<z.ZodBoolean>;
|
|
729
735
|
delegation: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
730
736
|
role: z.ZodLiteral<"root">;
|
|
731
737
|
conversation: z.ZodOptional<z.ZodObject<{
|
|
@@ -1208,6 +1214,7 @@ export declare const apiRunSchema: z.ZodObject<{
|
|
|
1208
1214
|
waiting: "waiting";
|
|
1209
1215
|
}>;
|
|
1210
1216
|
iterations: z.ZodNumber;
|
|
1217
|
+
retriesUsed: z.ZodOptional<z.ZodNumber>;
|
|
1211
1218
|
tokensUsed: z.ZodNumber;
|
|
1212
1219
|
inputTokens: z.ZodOptional<z.ZodNumber>;
|
|
1213
1220
|
outputTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -1228,6 +1235,7 @@ export declare const apiRunSchema: z.ZodObject<{
|
|
|
1228
1235
|
}>>;
|
|
1229
1236
|
profileId: z.ZodOptional<z.ZodString>;
|
|
1230
1237
|
costUsd: z.ZodOptional<z.ZodNumber>;
|
|
1238
|
+
synthetic: z.ZodOptional<z.ZodLiteral<"continuation">>;
|
|
1231
1239
|
}, z.core.$strip>>;
|
|
1232
1240
|
workflowDef: z.ZodOptional<z.ZodObject<{
|
|
1233
1241
|
name: z.ZodString;
|
|
@@ -1522,6 +1530,7 @@ export declare const createRunResponseSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
1522
1530
|
lifecycle: "lifecycle";
|
|
1523
1531
|
}>>;
|
|
1524
1532
|
}, z.core.$strip>>;
|
|
1533
|
+
invalidAsk: z.ZodOptional<z.ZodBoolean>;
|
|
1525
1534
|
delegation: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
1526
1535
|
role: z.ZodLiteral<"root">;
|
|
1527
1536
|
conversation: z.ZodOptional<z.ZodObject<{
|
|
@@ -2004,6 +2013,7 @@ export declare const createRunResponseSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
2004
2013
|
waiting: "waiting";
|
|
2005
2014
|
}>;
|
|
2006
2015
|
iterations: z.ZodNumber;
|
|
2016
|
+
retriesUsed: z.ZodOptional<z.ZodNumber>;
|
|
2007
2017
|
tokensUsed: z.ZodNumber;
|
|
2008
2018
|
inputTokens: z.ZodOptional<z.ZodNumber>;
|
|
2009
2019
|
outputTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -2024,6 +2034,7 @@ export declare const createRunResponseSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
2024
2034
|
}>>;
|
|
2025
2035
|
profileId: z.ZodOptional<z.ZodString>;
|
|
2026
2036
|
costUsd: z.ZodOptional<z.ZodNumber>;
|
|
2037
|
+
synthetic: z.ZodOptional<z.ZodLiteral<"continuation">>;
|
|
2027
2038
|
}, z.core.$strip>>;
|
|
2028
2039
|
workflowDef: z.ZodOptional<z.ZodObject<{
|
|
2029
2040
|
name: z.ZodString;
|
|
@@ -2084,6 +2095,7 @@ export declare const createRunResponseSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
2084
2095
|
lifecycle: "lifecycle";
|
|
2085
2096
|
}>>;
|
|
2086
2097
|
}, z.core.$strip>>;
|
|
2098
|
+
invalidAsk: z.ZodOptional<z.ZodBoolean>;
|
|
2087
2099
|
delegation: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
2088
2100
|
role: z.ZodLiteral<"root">;
|
|
2089
2101
|
conversation: z.ZodOptional<z.ZodObject<{
|
|
@@ -2566,6 +2578,7 @@ export declare const createRunResponseSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
2566
2578
|
waiting: "waiting";
|
|
2567
2579
|
}>;
|
|
2568
2580
|
iterations: z.ZodNumber;
|
|
2581
|
+
retriesUsed: z.ZodOptional<z.ZodNumber>;
|
|
2569
2582
|
tokensUsed: z.ZodNumber;
|
|
2570
2583
|
inputTokens: z.ZodOptional<z.ZodNumber>;
|
|
2571
2584
|
outputTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -2586,6 +2599,7 @@ export declare const createRunResponseSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
2586
2599
|
}>>;
|
|
2587
2600
|
profileId: z.ZodOptional<z.ZodString>;
|
|
2588
2601
|
costUsd: z.ZodOptional<z.ZodNumber>;
|
|
2602
|
+
synthetic: z.ZodOptional<z.ZodLiteral<"continuation">>;
|
|
2589
2603
|
}, z.core.$strip>>;
|
|
2590
2604
|
workflowDef: z.ZodOptional<z.ZodObject<{
|
|
2591
2605
|
name: z.ZodString;
|
|
@@ -2853,6 +2867,7 @@ export declare const pickVariantResponseSchema: z.ZodObject<{
|
|
|
2853
2867
|
lifecycle: "lifecycle";
|
|
2854
2868
|
}>>;
|
|
2855
2869
|
}, z.core.$strip>>;
|
|
2870
|
+
invalidAsk: z.ZodOptional<z.ZodBoolean>;
|
|
2856
2871
|
delegation: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
2857
2872
|
role: z.ZodLiteral<"root">;
|
|
2858
2873
|
conversation: z.ZodOptional<z.ZodObject<{
|
|
@@ -3335,6 +3350,7 @@ export declare const pickVariantResponseSchema: z.ZodObject<{
|
|
|
3335
3350
|
waiting: "waiting";
|
|
3336
3351
|
}>;
|
|
3337
3352
|
iterations: z.ZodNumber;
|
|
3353
|
+
retriesUsed: z.ZodOptional<z.ZodNumber>;
|
|
3338
3354
|
tokensUsed: z.ZodNumber;
|
|
3339
3355
|
inputTokens: z.ZodOptional<z.ZodNumber>;
|
|
3340
3356
|
outputTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -3355,6 +3371,7 @@ export declare const pickVariantResponseSchema: z.ZodObject<{
|
|
|
3355
3371
|
}>>;
|
|
3356
3372
|
profileId: z.ZodOptional<z.ZodString>;
|
|
3357
3373
|
costUsd: z.ZodOptional<z.ZodNumber>;
|
|
3374
|
+
synthetic: z.ZodOptional<z.ZodLiteral<"continuation">>;
|
|
3358
3375
|
}, z.core.$strip>>;
|
|
3359
3376
|
workflowDef: z.ZodOptional<z.ZodObject<{
|
|
3360
3377
|
name: z.ZodString;
|
|
@@ -96,6 +96,7 @@ export declare const startTodoResponseSchema: z.ZodObject<{
|
|
|
96
96
|
lifecycle: "lifecycle";
|
|
97
97
|
}>>;
|
|
98
98
|
}, z.core.$strip>>;
|
|
99
|
+
invalidAsk: z.ZodOptional<z.ZodBoolean>;
|
|
99
100
|
delegation: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
100
101
|
role: z.ZodLiteral<"root">;
|
|
101
102
|
conversation: z.ZodOptional<z.ZodObject<{
|
|
@@ -578,6 +579,7 @@ export declare const startTodoResponseSchema: z.ZodObject<{
|
|
|
578
579
|
waiting: "waiting";
|
|
579
580
|
}>;
|
|
580
581
|
iterations: z.ZodNumber;
|
|
582
|
+
retriesUsed: z.ZodOptional<z.ZodNumber>;
|
|
581
583
|
tokensUsed: z.ZodNumber;
|
|
582
584
|
inputTokens: z.ZodOptional<z.ZodNumber>;
|
|
583
585
|
outputTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -598,6 +600,7 @@ export declare const startTodoResponseSchema: z.ZodObject<{
|
|
|
598
600
|
}>>;
|
|
599
601
|
profileId: z.ZodOptional<z.ZodString>;
|
|
600
602
|
costUsd: z.ZodOptional<z.ZodNumber>;
|
|
603
|
+
synthetic: z.ZodOptional<z.ZodLiteral<"continuation">>;
|
|
601
604
|
}, z.core.$strip>>;
|
|
602
605
|
workflowDef: z.ZodOptional<z.ZodObject<{
|
|
603
606
|
name: z.ZodString;
|
|
@@ -70,6 +70,30 @@ export interface AgentRunSpec {
|
|
|
70
70
|
*/
|
|
71
71
|
resume?: boolean;
|
|
72
72
|
}
|
|
73
|
+
export type AgentRunSpecField = keyof AgentRunSpec;
|
|
74
|
+
export declare const AGENT_RUN_SPEC_FIELDS: readonly AgentRunSpecField[];
|
|
75
|
+
/**
|
|
76
|
+
* What one runner does with one `AgentRunSpec` field. `honored` means setting
|
|
77
|
+
* the field changes what reaches the backend, and `via` names the flag, request
|
|
78
|
+
* field or process option it becomes. Not honored means the runner drops it,
|
|
79
|
+
* and `reason` says why the wire cannot carry it or which product decision left
|
|
80
|
+
* it unmapped — never "not implemented yet".
|
|
81
|
+
*/
|
|
82
|
+
export type SpecFieldSupport = {
|
|
83
|
+
readonly honored: true;
|
|
84
|
+
readonly via: string;
|
|
85
|
+
} | {
|
|
86
|
+
readonly honored: false;
|
|
87
|
+
readonly reason: string;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* A runner's declaration, one entry per `AgentRunSpec` field. The harness
|
|
91
|
+
* parity matrix drives each runner against its offline mock and fails any
|
|
92
|
+
* declaration the recorded boundary contradicts, in either direction
|
|
93
|
+
* (`harness-parity.test.ts`, #284) — so a caller reading `specSupport` reads
|
|
94
|
+
* what the backend actually receives, not what the adapter meant to send.
|
|
95
|
+
*/
|
|
96
|
+
export type AgentRunSpecSupport = Readonly<Record<AgentRunSpecField, SpecFieldSupport>>;
|
|
73
97
|
/**
|
|
74
98
|
* Backends without a dedicated system-prompt channel (codex app-server,
|
|
75
99
|
* opencode serve) deliver `spec.systemPrompt` as a leading block of the
|
|
@@ -232,6 +256,8 @@ export interface AgentSession {
|
|
|
232
256
|
}
|
|
233
257
|
export interface AgentRunner {
|
|
234
258
|
readonly backend: AgentBackend;
|
|
259
|
+
/** Which `AgentRunSpec` fields this runner honors, and how — see `AgentRunSpecSupport`. */
|
|
260
|
+
readonly specSupport: AgentRunSpecSupport;
|
|
235
261
|
run(spec: AgentRunSpec, onEvent?: (event: AgentEvent) => void): Promise<AgentRunResult>;
|
|
236
262
|
startSession(spec: AgentRunSpec, onEvent?: (event: AgentEvent) => void, opts?: SessionOptions): AgentSession;
|
|
237
263
|
interrupt(): Promise<void>;
|
|
@@ -23,6 +23,28 @@ export const RUNNER_IDS = ['claude', 'codex', 'opencode', 'pi'];
|
|
|
23
23
|
export function isRunnerId(value) {
|
|
24
24
|
return RUNNER_IDS.includes(value);
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Every `AgentRunSpec` field, as a runtime list. Typed as a full `Record` over
|
|
28
|
+
* `keyof AgentRunSpec`, so the interface gaining or losing a field is a compile
|
|
29
|
+
* error here — and, through `AgentRunSpecSupport`, in every runner (#284).
|
|
30
|
+
*/
|
|
31
|
+
const AGENT_RUN_SPEC_FIELD_SET = {
|
|
32
|
+
systemPrompt: true,
|
|
33
|
+
userPrompt: true,
|
|
34
|
+
images: true,
|
|
35
|
+
cwd: true,
|
|
36
|
+
allowedTools: true,
|
|
37
|
+
restrictNativeDelegation: true,
|
|
38
|
+
bashAllowlist: true,
|
|
39
|
+
additionalDirectories: true,
|
|
40
|
+
env: true,
|
|
41
|
+
model: true,
|
|
42
|
+
effort: true,
|
|
43
|
+
timeoutMs: true,
|
|
44
|
+
sessionId: true,
|
|
45
|
+
resume: true,
|
|
46
|
+
};
|
|
47
|
+
export const AGENT_RUN_SPEC_FIELDS = Object.keys(AGENT_RUN_SPEC_FIELD_SET);
|
|
26
48
|
/**
|
|
27
49
|
* Backends without a dedicated system-prompt channel (codex app-server,
|
|
28
50
|
* opencode serve) deliver `spec.systemPrompt` as a leading block of the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../src/core/agent-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAU,CAAC;AAQzE,gFAAgF;AAChF,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAQ,UAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AA+CD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAgC,EAAE,UAAkB;IACtF,OAAO,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,cAAc,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;AAC/E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAuB;IAC7D,OAAO,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,CAAC;AAClE,CAAC;AAUD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,KAAqB;IAClD,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;IAChE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QACtB,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../src/core/agent-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAU,CAAC;AAQzE,gFAAgF;AAChF,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAQ,UAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AA+CD;;;;GAIG;AACH,MAAM,wBAAwB,GAA+C;IAC3E,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,IAAI;IACT,YAAY,EAAE,IAAI;IAClB,wBAAwB,EAAE,IAAI;IAC9B,aAAa,EAAE,IAAI;IACnB,qBAAqB,EAAE,IAAI;IAC3B,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAiC,CAAC;AAsB3G;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAgC,EAAE,UAAkB;IACtF,OAAO,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,cAAc,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;AAC/E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAuB;IAC7D,OAAO,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,CAAC;AAClE,CAAC;AAUD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,KAAqB;IAClD,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;IAChE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QACtB,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC;AACtB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentEvent, AgentRunResult, AgentRunSpec, AgentRunner, AgentSession, SessionOptions } from './agent-runner.ts';
|
|
1
|
+
import type { AgentEvent, AgentRunResult, AgentRunSpec, AgentRunner, AgentSession, SessionOptions, AgentRunSpecSupport } from './agent-runner.ts';
|
|
2
2
|
export type { AgentSession, SessionOptions } from './agent-runner.ts';
|
|
3
3
|
export interface ClaudeCliRunnerOptions {
|
|
4
4
|
/** Override the binary name/path; defaults to `claude` on PATH. */
|
|
@@ -20,8 +20,16 @@ export declare function resolveClaudeExecutable(override?: string): string;
|
|
|
20
20
|
* github-janitor's `claudeRunner.ts`; the original single-turn adaptation
|
|
21
21
|
* came from @cezar/core's `ClaudeCodeCliRunner`.
|
|
22
22
|
*/
|
|
23
|
+
/**
|
|
24
|
+
* What the claude CLI receives from each `AgentRunSpec` field (#284). Every
|
|
25
|
+
* field has a native flag or a stdin/spawn channel — this is the runner the
|
|
26
|
+
* spec was shaped around. Held against `--allowedTools`/stdin recordings by
|
|
27
|
+
* the harness parity matrix; change a row only with the mapping in `buildArgs`.
|
|
28
|
+
*/
|
|
29
|
+
export declare const CLAUDE_SPEC_SUPPORT: AgentRunSpecSupport;
|
|
23
30
|
export declare class ClaudeCliRunner implements AgentRunner {
|
|
24
31
|
readonly backend: 'claude';
|
|
32
|
+
readonly specSupport: Readonly<Record<keyof AgentRunSpec, import("./agent-runner.ts").SpecFieldSupport>>;
|
|
25
33
|
private readonly bin;
|
|
26
34
|
private readonly timeoutMs;
|
|
27
35
|
private lastSession;
|
|
@@ -26,8 +26,31 @@ export function resolveClaudeExecutable(override) {
|
|
|
26
26
|
* github-janitor's `claudeRunner.ts`; the original single-turn adaptation
|
|
27
27
|
* came from @cezar/core's `ClaudeCodeCliRunner`.
|
|
28
28
|
*/
|
|
29
|
+
/**
|
|
30
|
+
* What the claude CLI receives from each `AgentRunSpec` field (#284). Every
|
|
31
|
+
* field has a native flag or a stdin/spawn channel — this is the runner the
|
|
32
|
+
* spec was shaped around. Held against `--allowedTools`/stdin recordings by
|
|
33
|
+
* the harness parity matrix; change a row only with the mapping in `buildArgs`.
|
|
34
|
+
*/
|
|
35
|
+
export const CLAUDE_SPEC_SUPPORT = {
|
|
36
|
+
systemPrompt: { honored: true, via: '--append-system-prompt' },
|
|
37
|
+
userPrompt: { honored: true, via: 'text block of the first stream-json user message on stdin' },
|
|
38
|
+
images: { honored: true, via: 'image blocks ahead of the text in the first stdin message' },
|
|
39
|
+
cwd: { honored: true, via: 'spawn cwd' },
|
|
40
|
+
allowedTools: { honored: true, via: '--allowedTools, through buildAllowedTools' },
|
|
41
|
+
restrictNativeDelegation: { honored: true, via: '--disallowedTools Agent,Task (D1)' },
|
|
42
|
+
bashAllowlist: { honored: true, via: 'Bash(<prefix>:*) entries in --allowedTools, one per prefix' },
|
|
43
|
+
additionalDirectories: { honored: true, via: '--add-dir, once per directory' },
|
|
44
|
+
env: { honored: true, via: 'merged over the child env through buildChildEnv' },
|
|
45
|
+
model: { honored: true, via: '--model' },
|
|
46
|
+
effort: { honored: true, via: '--effort, canonical level' },
|
|
47
|
+
timeoutMs: { honored: true, via: 'wall-clock kill switch on the child process' },
|
|
48
|
+
sessionId: { honored: true, via: '--session-id, or --resume when resume is set' },
|
|
49
|
+
resume: { honored: true, via: '--resume <sessionId> in place of --session-id' },
|
|
50
|
+
};
|
|
29
51
|
export class ClaudeCliRunner {
|
|
30
52
|
backend = 'claude';
|
|
53
|
+
specSupport = CLAUDE_SPEC_SUPPORT;
|
|
31
54
|
bin;
|
|
32
55
|
timeoutMs;
|
|
33
56
|
lastSession = null;
|