@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.
Files changed (104) hide show
  1. package/dist/agent-config/catalog.d.ts +4 -1
  2. package/dist/agent-config/catalog.js +50 -3
  3. package/dist/agent-config/catalog.js.map +1 -1
  4. package/dist/agent-config/model-settings/pi.d.ts +0 -10
  5. package/dist/agent-config/model-settings/pi.js +28 -8
  6. package/dist/agent-config/model-settings/pi.js.map +1 -1
  7. package/dist/agent-config/model-settings/shared.d.ts +2 -0
  8. package/dist/agent-config/model-settings/shared.js +4 -0
  9. package/dist/agent-config/model-settings/shared.js.map +1 -1
  10. package/dist/contract/index.js +7 -1
  11. package/dist/contract/runs.d.ts +17 -0
  12. package/dist/contract/skills.d.ts +3 -0
  13. package/dist/core/agent-runner.d.ts +26 -0
  14. package/dist/core/agent-runner.js +22 -0
  15. package/dist/core/agent-runner.js.map +1 -1
  16. package/dist/core/claude-cli-runner.d.ts +9 -1
  17. package/dist/core/claude-cli-runner.js +23 -0
  18. package/dist/core/claude-cli-runner.js.map +1 -1
  19. package/dist/core/codex-app-server-runner.d.ts +11 -1
  20. package/dist/core/codex-app-server-runner.js +25 -0
  21. package/dist/core/codex-app-server-runner.js.map +1 -1
  22. package/dist/core/host-model-catalog.d.ts +14 -0
  23. package/dist/core/host-model-catalog.js +24 -0
  24. package/dist/core/host-model-catalog.js.map +1 -0
  25. package/dist/core/opencode-server-runner.d.ts +11 -1
  26. package/dist/core/opencode-server-runner.js +25 -0
  27. package/dist/core/opencode-server-runner.js.map +1 -1
  28. package/dist/core/pi-runner.d.ts +10 -1
  29. package/dist/core/pi-runner.js +34 -1
  30. package/dist/core/pi-runner.js.map +1 -1
  31. package/dist/core/pi-ui-mapper.d.ts +15 -0
  32. package/dist/core/pi-ui-mapper.js +29 -4
  33. package/dist/core/pi-ui-mapper.js.map +1 -1
  34. package/dist/core/process-usage.d.ts +3 -0
  35. package/dist/core/process-usage.js +5 -0
  36. package/dist/core/process-usage.js.map +1 -1
  37. package/dist/core/runner-model-catalog.js +7 -2
  38. package/dist/core/runner-model-catalog.js.map +1 -1
  39. package/dist/delegation/routes.d.ts +50 -50
  40. package/dist/delegation/transport.d.ts +50 -50
  41. package/dist/paths.d.ts +2 -1
  42. package/dist/paths.js +3 -1
  43. package/dist/paths.js.map +1 -1
  44. package/dist/runs/store.d.ts +7 -2
  45. package/dist/runs/store.js +6 -0
  46. package/dist/runs/store.js.map +1 -1
  47. package/dist/server/server.d.ts +1269 -1203
  48. package/dist/server/server.js +5 -13
  49. package/dist/server/server.js.map +1 -1
  50. package/dist/workflows/run.d.ts +13 -2
  51. package/dist/workflows/run.js +259 -38
  52. package/dist/workflows/run.js.map +1 -1
  53. package/package.json +3 -3
  54. package/scripts/mock-pi-rpc.mjs +10 -0
  55. package/web/dist/assets/agent-accounts-0XE1H17O.js +1 -0
  56. package/web/dist/assets/{alert-dialog-Duzl27Ie.js → alert-dialog-DFJbVtBQ.js} +12 -12
  57. package/web/dist/assets/{collapsible-O6Tjzyk-.js → collapsible-CY3Kzhe7.js} +1 -1
  58. package/web/dist/assets/{commit-list-B4XC1ODn.js → commit-list-DGa1MVRq.js} +1 -1
  59. package/web/dist/assets/{compare-variants-BVL8TqP9.js → compare-variants-CSpVrnYN.js} +1 -1
  60. package/web/dist/assets/{diff-BHmZWDtg2.js → diff-DDUpEMjA2.js} +2 -2
  61. package/web/dist/assets/{diff-controls-BoL-cEfC.js → diff-controls-C_7Ket1G.js} +1 -1
  62. package/web/dist/assets/{diff-stat-BinS5K0X.js → diff-stat-Cq4juy0u.js} +1 -1
  63. package/web/dist/assets/{diff-view-BogZS6qH.js → diff-view-Coyp_Kst.js} +1 -1
  64. package/web/dist/assets/{dropdown-menu-Da0G_FSk.js → dropdown-menu-D_AapbCA.js} +1 -1
  65. package/web/dist/assets/{git-toolbar-CYFkDz1s.js → git-toolbar-Ctck--gW.js} +1 -1
  66. package/web/dist/assets/github-D4F_Ux2B.js +1 -0
  67. package/web/dist/assets/github-DTIn5Tro.css +1 -0
  68. package/web/dist/assets/{image-preview-DpJkIJow.js → image-preview-DXIixdjJ.js} +1 -1
  69. package/web/dist/assets/index-1w-3-ebj.css +1 -0
  70. package/web/dist/assets/index-BWdizKd9.js +7 -0
  71. package/web/dist/assets/{markdown-Ni-GM0ra.js → markdown-zVtbO9Y3.js} +1 -1
  72. package/web/dist/assets/pill-D7x-JgPk.js +1 -0
  73. package/web/dist/assets/{project-router-B8sUN_Ka.js → project-router-_NlWrr1u.js} +1 -1
  74. package/web/dist/assets/prompt-templates-BAHuEV4s.js +15 -0
  75. package/web/dist/assets/repo-git-C9XN3mXu.js +1 -0
  76. package/web/dist/assets/{run-diff-DanadyNi.js → run-diff-BqNutNWV.js} +2 -2
  77. package/web/dist/assets/run-header-C3oNFHTw.js +1 -0
  78. package/web/dist/assets/{skills-Cyk33xfz.js → skills-DUsxmcGu.js} +1 -1
  79. package/web/dist/assets/{tab-link-DAMk-HDQ.js → tab-link-CjkLjjTf.js} +1 -1
  80. package/web/dist/assets/{task-changes-DI4_6Wp4.js → task-changes-Brwkn3tJ.js} +1 -1
  81. package/web/dist/assets/task-commits-DskL6rzX.js +1 -0
  82. package/web/dist/assets/{task-files-Bc1H59kO.js → task-files-BJD8fAX4.js} +2 -2
  83. package/web/dist/assets/task-thread-BaIlrXIF.js +9 -0
  84. package/web/dist/assets/task-thread-DMRD0IVt.css +1 -0
  85. package/web/dist/assets/{textarea-Bl6llqoA.js → textarea-DZV_YYw9.js} +1 -1
  86. package/web/dist/assets/thread-loading-Bet4X9Ow.js +1 -0
  87. package/web/dist/assets/{token-metrics-CWXw3O9q.js → token-metrics-C_zRfWAP.js} +1 -1
  88. package/web/dist/assets/{utils-9-zDpWwO.js → utils-B8qbBJrk.js} +1 -1
  89. package/web/dist/assets/{workflows-CfPTxrDw.js → workflows-C0RXiAAC.js} +4 -4
  90. package/web/dist/assets/{zoomable-image-CQuBDcJD.js → zoomable-image-Idq840Ej.js} +1 -1
  91. package/web/dist/index.html +14 -14
  92. package/web/dist/assets/github-BvQUJN1z.js +0 -1
  93. package/web/dist/assets/github-CSE-ePaX.css +0 -1
  94. package/web/dist/assets/index-CDG8WjQr.js +0 -7
  95. package/web/dist/assets/index-DZ8KZzHE.css +0 -1
  96. package/web/dist/assets/pill-Ba99DOJ9.js +0 -1
  97. package/web/dist/assets/popover-ClNt8Xa0.js +0 -1
  98. package/web/dist/assets/prompt-templates-BmXStVbF.js +0 -15
  99. package/web/dist/assets/repo-git-BKB_uTPT.js +0 -1
  100. package/web/dist/assets/run-header-BZ6IlgXy.js +0 -1
  101. package/web/dist/assets/task-commits-CGosUb8O.js +0 -1
  102. package/web/dist/assets/task-thread-C8ssWDxr.css +0 -1
  103. package/web/dist/assets/task-thread-CVJ8_hAS.js +0 -9
  104. 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
- // ---- Shared: <repo>/AGENTS.md is read by BOTH Codex and OpenCode ----
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 OpenCode (Claude ignores it). Codex concatenates it root-down; OpenCode uses the first match and prefers it over CLAUDE.md. Runs read the committed copy.',
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":"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"}
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
- * 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.
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
- return { model: firstConfiguredModel(await readNativeSettingsFiles('pi', repoRoot, env)) };
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,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG5E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA+B;IACjE,MAAM,EAAE,IAAI;IACZ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG;QACtB,OAAO,EAAE,KAAK,EAAE,oBAAoB,CAAC,MAAM,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IAC7F,CAAC;CACF,CAAC"}
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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"}
@@ -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. */
@@ -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;