@calliopelabs/cli 3.7.0 → 3.8.1

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 (259) hide show
  1. package/README.md +31 -0
  2. package/dist/acp.d.ts.map +1 -1
  3. package/dist/acp.js +2 -0
  4. package/dist/acp.js.map +1 -1
  5. package/dist/approvals/request.d.ts.map +1 -1
  6. package/dist/approvals/request.js +10 -0
  7. package/dist/approvals/request.js.map +1 -1
  8. package/dist/auth/chatgpt/fallback.d.ts +31 -0
  9. package/dist/auth/chatgpt/fallback.d.ts.map +1 -0
  10. package/dist/auth/chatgpt/fallback.js +111 -0
  11. package/dist/auth/chatgpt/fallback.js.map +1 -0
  12. package/dist/auth/chatgpt/index.d.ts +6 -0
  13. package/dist/auth/chatgpt/index.d.ts.map +1 -0
  14. package/dist/auth/chatgpt/index.js +6 -0
  15. package/dist/auth/chatgpt/index.js.map +1 -0
  16. package/dist/auth/chatgpt/login.d.ts +4 -0
  17. package/dist/auth/chatgpt/login.d.ts.map +1 -0
  18. package/dist/auth/chatgpt/login.js +82 -0
  19. package/dist/auth/chatgpt/login.js.map +1 -0
  20. package/dist/auth/chatgpt/protocol.d.ts +24 -0
  21. package/dist/auth/chatgpt/protocol.d.ts.map +1 -0
  22. package/dist/auth/chatgpt/protocol.js +71 -0
  23. package/dist/auth/chatgpt/protocol.js.map +1 -0
  24. package/dist/auth/chatgpt/session.d.ts +24 -0
  25. package/dist/auth/chatgpt/session.d.ts.map +1 -0
  26. package/dist/auth/chatgpt/session.js +101 -0
  27. package/dist/auth/chatgpt/session.js.map +1 -0
  28. package/dist/auth/chatgpt/store.d.ts +28 -0
  29. package/dist/auth/chatgpt/store.d.ts.map +1 -0
  30. package/dist/auth/chatgpt/store.js +75 -0
  31. package/dist/auth/chatgpt/store.js.map +1 -0
  32. package/dist/auth/cli.d.ts +2 -0
  33. package/dist/auth/cli.d.ts.map +1 -0
  34. package/dist/auth/cli.js +38 -0
  35. package/dist/auth/cli.js.map +1 -0
  36. package/dist/auth/index.d.ts +2 -0
  37. package/dist/auth/index.d.ts.map +1 -0
  38. package/dist/auth/index.js +2 -0
  39. package/dist/auth/index.js.map +1 -0
  40. package/dist/bin.d.ts.map +1 -1
  41. package/dist/bin.js +50 -3
  42. package/dist/bin.js.map +1 -1
  43. package/dist/brain/exchange.d.ts.map +1 -1
  44. package/dist/brain/exchange.js +3 -1
  45. package/dist/brain/exchange.js.map +1 -1
  46. package/dist/brain/kg-export.d.ts +1 -1
  47. package/dist/brain/kg.d.ts +1 -1
  48. package/dist/brain/kg.d.ts.map +1 -1
  49. package/dist/brain/kg.js +3 -1
  50. package/dist/brain/kg.js.map +1 -1
  51. package/dist/build-metadata.json +1 -1
  52. package/dist/config.d.ts +13 -0
  53. package/dist/config.d.ts.map +1 -1
  54. package/dist/config.js +10 -2
  55. package/dist/config.js.map +1 -1
  56. package/dist/delegation/claude.d.ts +28 -0
  57. package/dist/delegation/claude.d.ts.map +1 -0
  58. package/dist/delegation/claude.js +107 -0
  59. package/dist/delegation/claude.js.map +1 -0
  60. package/dist/delegation/index.d.ts +2 -0
  61. package/dist/delegation/index.d.ts.map +1 -0
  62. package/dist/delegation/index.js +2 -0
  63. package/dist/delegation/index.js.map +1 -0
  64. package/dist/execution/attribution.d.ts +3 -0
  65. package/dist/execution/attribution.d.ts.map +1 -1
  66. package/dist/execution/attribution.js.map +1 -1
  67. package/dist/execution/authority.d.ts +18 -4
  68. package/dist/execution/authority.d.ts.map +1 -1
  69. package/dist/execution/authority.js +66 -12
  70. package/dist/execution/authority.js.map +1 -1
  71. package/dist/execution/child-grants.js +4 -1
  72. package/dist/execution/child-grants.js.map +1 -1
  73. package/dist/execution/delegated.d.ts.map +1 -1
  74. package/dist/execution/delegated.js +5 -2
  75. package/dist/execution/delegated.js.map +1 -1
  76. package/dist/execution/guard.d.ts.map +1 -1
  77. package/dist/execution/guard.js +7 -3
  78. package/dist/execution/guard.js.map +1 -1
  79. package/dist/execution/ledger-cli.d.ts.map +1 -1
  80. package/dist/execution/ledger-cli.js +9 -7
  81. package/dist/execution/ledger-cli.js.map +1 -1
  82. package/dist/execution/ledger-protocol.d.ts +1 -1
  83. package/dist/execution/ledger-protocol.d.ts.map +1 -1
  84. package/dist/execution/ledger-protocol.js +1 -1
  85. package/dist/execution/ledger-protocol.js.map +1 -1
  86. package/dist/execution/ledger-server.d.ts +11 -1
  87. package/dist/execution/ledger-server.d.ts.map +1 -1
  88. package/dist/execution/ledger-server.js +65 -4
  89. package/dist/execution/ledger-server.js.map +1 -1
  90. package/dist/execution/ledger.d.ts +2 -0
  91. package/dist/execution/ledger.d.ts.map +1 -1
  92. package/dist/execution/ledger.js +46 -12
  93. package/dist/execution/ledger.js.map +1 -1
  94. package/dist/execution/parent-budget.d.ts +25 -3
  95. package/dist/execution/parent-budget.d.ts.map +1 -1
  96. package/dist/execution/parent-budget.js +126 -4
  97. package/dist/execution/parent-budget.js.map +1 -1
  98. package/dist/execution/parent-uncertainty.d.ts +3 -0
  99. package/dist/execution/parent-uncertainty.d.ts.map +1 -0
  100. package/dist/execution/parent-uncertainty.js +6 -0
  101. package/dist/execution/parent-uncertainty.js.map +1 -0
  102. package/dist/execution/portable-identity.d.ts +15 -0
  103. package/dist/execution/portable-identity.d.ts.map +1 -0
  104. package/dist/execution/portable-identity.js +80 -0
  105. package/dist/execution/portable-identity.js.map +1 -0
  106. package/dist/execution/quote.d.ts +1 -1
  107. package/dist/execution/quote.d.ts.map +1 -1
  108. package/dist/execution/quote.js +4 -2
  109. package/dist/execution/quote.js.map +1 -1
  110. package/dist/execution/remote-checkpoint.d.ts.map +1 -1
  111. package/dist/execution/remote-checkpoint.js +23 -16
  112. package/dist/execution/remote-checkpoint.js.map +1 -1
  113. package/dist/execution/remote-ledger.d.ts +20 -0
  114. package/dist/execution/remote-ledger.d.ts.map +1 -1
  115. package/dist/execution/remote-ledger.js +93 -14
  116. package/dist/execution/remote-ledger.js.map +1 -1
  117. package/dist/execution/types.d.ts +30 -2
  118. package/dist/execution/types.d.ts.map +1 -1
  119. package/dist/execution/types.js.map +1 -1
  120. package/dist/headless.d.ts +27 -1
  121. package/dist/headless.d.ts.map +1 -1
  122. package/dist/headless.js +107 -7
  123. package/dist/headless.js.map +1 -1
  124. package/dist/health/target.d.ts +11 -0
  125. package/dist/health/target.d.ts.map +1 -1
  126. package/dist/health/target.js +48 -21
  127. package/dist/health/target.js.map +1 -1
  128. package/dist/improvement/cli.d.ts +1 -1
  129. package/dist/improvement/cli.d.ts.map +1 -1
  130. package/dist/improvement/cli.js +4 -4
  131. package/dist/improvement/cli.js.map +1 -1
  132. package/dist/improvement/host-capabilities.d.ts +134 -1
  133. package/dist/improvement/host-capabilities.d.ts.map +1 -1
  134. package/dist/improvement/host-capabilities.js +8 -1
  135. package/dist/improvement/host-capabilities.js.map +1 -1
  136. package/dist/improvement/index.d.ts +2 -0
  137. package/dist/improvement/index.d.ts.map +1 -1
  138. package/dist/improvement/index.js +2 -0
  139. package/dist/improvement/index.js.map +1 -1
  140. package/dist/improvement/task-feedback-contract.d.ts +41 -0
  141. package/dist/improvement/task-feedback-contract.d.ts.map +1 -0
  142. package/dist/improvement/task-feedback-contract.js +83 -0
  143. package/dist/improvement/task-feedback-contract.js.map +1 -0
  144. package/dist/improvement/task-feedback.d.ts +149 -0
  145. package/dist/improvement/task-feedback.d.ts.map +1 -0
  146. package/dist/improvement/task-feedback.js +117 -0
  147. package/dist/improvement/task-feedback.js.map +1 -0
  148. package/dist/improvement/task-outcomes.d.ts +2 -2
  149. package/dist/improvement/task-outcomes.d.ts.map +1 -1
  150. package/dist/improvement/task-outcomes.js +2 -3
  151. package/dist/improvement/task-outcomes.js.map +1 -1
  152. package/dist/model-detection.d.ts +0 -5
  153. package/dist/model-detection.d.ts.map +1 -1
  154. package/dist/model-detection.js +5 -5
  155. package/dist/model-detection.js.map +1 -1
  156. package/dist/orchestration/coordinator-types.d.ts +15 -2
  157. package/dist/orchestration/coordinator-types.d.ts.map +1 -1
  158. package/dist/orchestration/coordinator.d.ts.map +1 -1
  159. package/dist/orchestration/coordinator.js +18 -3
  160. package/dist/orchestration/coordinator.js.map +1 -1
  161. package/dist/orchestration/execution-journal.d.ts.map +1 -1
  162. package/dist/orchestration/execution-journal.js +51 -6
  163. package/dist/orchestration/execution-journal.js.map +1 -1
  164. package/dist/orchestration/execution-store.js +1 -1
  165. package/dist/orchestration/execution-store.js.map +1 -1
  166. package/dist/orchestration/execution.d.ts +3 -1
  167. package/dist/orchestration/execution.d.ts.map +1 -1
  168. package/dist/orchestration/execution.js +1 -1
  169. package/dist/orchestration/execution.js.map +1 -1
  170. package/dist/orchestration/index.d.ts +1 -0
  171. package/dist/orchestration/index.d.ts.map +1 -1
  172. package/dist/orchestration/index.js +1 -0
  173. package/dist/orchestration/index.js.map +1 -1
  174. package/dist/orchestration/remote-task-capacity.d.ts +31 -0
  175. package/dist/orchestration/remote-task-capacity.d.ts.map +1 -0
  176. package/dist/orchestration/remote-task-capacity.js +83 -0
  177. package/dist/orchestration/remote-task-capacity.js.map +1 -0
  178. package/dist/orchestration/reviewed-ledger.d.ts +58 -0
  179. package/dist/orchestration/reviewed-ledger.d.ts.map +1 -1
  180. package/dist/orchestration/reviewed-ledger.js +66 -10
  181. package/dist/orchestration/reviewed-ledger.js.map +1 -1
  182. package/dist/orchestration/routing.d.ts +2 -0
  183. package/dist/orchestration/routing.d.ts.map +1 -1
  184. package/dist/orchestration/routing.js +10 -1
  185. package/dist/orchestration/routing.js.map +1 -1
  186. package/dist/orchestration/task-configuration.d.ts +8 -0
  187. package/dist/orchestration/task-configuration.d.ts.map +1 -0
  188. package/dist/orchestration/task-configuration.js +23 -0
  189. package/dist/orchestration/task-configuration.js.map +1 -0
  190. package/dist/providers/anthropic.d.ts.map +1 -1
  191. package/dist/providers/anthropic.js +17 -1
  192. package/dist/providers/anthropic.js.map +1 -1
  193. package/dist/providers/bedrock.d.ts.map +1 -1
  194. package/dist/providers/bedrock.js +16 -1
  195. package/dist/providers/bedrock.js.map +1 -1
  196. package/dist/providers/chatgpt.d.ts +11 -0
  197. package/dist/providers/chatgpt.d.ts.map +1 -0
  198. package/dist/providers/chatgpt.js +156 -0
  199. package/dist/providers/chatgpt.js.map +1 -0
  200. package/dist/providers/compat.d.ts.map +1 -1
  201. package/dist/providers/compat.js +33 -16
  202. package/dist/providers/compat.js.map +1 -1
  203. package/dist/providers/index.d.ts +0 -5
  204. package/dist/providers/index.d.ts.map +1 -1
  205. package/dist/providers/index.js +10 -2
  206. package/dist/providers/index.js.map +1 -1
  207. package/dist/providers/openai.d.ts +1 -1
  208. package/dist/providers/openai.d.ts.map +1 -1
  209. package/dist/providers/openai.js +24 -11
  210. package/dist/providers/openai.js.map +1 -1
  211. package/dist/providers/types.d.ts +5 -0
  212. package/dist/providers/types.d.ts.map +1 -1
  213. package/dist/providers/types.js.map +1 -1
  214. package/dist/routing/select.d.ts.map +1 -1
  215. package/dist/routing/select.js +20 -1
  216. package/dist/routing/select.js.map +1 -1
  217. package/dist/runlog.d.ts +3 -1
  218. package/dist/runlog.d.ts.map +1 -1
  219. package/dist/runlog.js.map +1 -1
  220. package/dist/runtime/permissions.d.ts.map +1 -1
  221. package/dist/runtime/permissions.js +1 -0
  222. package/dist/runtime/permissions.js.map +1 -1
  223. package/dist/runtime/turn.d.ts +12 -1
  224. package/dist/runtime/turn.d.ts.map +1 -1
  225. package/dist/runtime/turn.js +109 -19
  226. package/dist/runtime/turn.js.map +1 -1
  227. package/dist/sessions/execution-binding.d.ts +8 -3
  228. package/dist/sessions/execution-binding.d.ts.map +1 -1
  229. package/dist/sessions/execution-binding.js +13 -3
  230. package/dist/sessions/execution-binding.js.map +1 -1
  231. package/dist/supervision/runtime.d.ts.map +1 -1
  232. package/dist/supervision/runtime.js +10 -3
  233. package/dist/supervision/runtime.js.map +1 -1
  234. package/dist/types.d.ts +3 -0
  235. package/dist/types.d.ts.map +1 -1
  236. package/dist/types.js.map +1 -1
  237. package/dist/ui/agent.d.ts.map +1 -1
  238. package/dist/ui/agent.js +4 -0
  239. package/dist/ui/agent.js.map +1 -1
  240. package/dist/ui/components.d.ts.map +1 -1
  241. package/dist/ui/components.js +3 -5
  242. package/dist/ui/components.js.map +1 -1
  243. package/dist/ui/frame.js +3 -3
  244. package/dist/ui/frame.js.map +1 -1
  245. package/dist/ui/modals/tool-output.d.ts.map +1 -1
  246. package/dist/ui/modals/tool-output.js +5 -6
  247. package/dist/ui/modals/tool-output.js.map +1 -1
  248. package/dist/ui/state/use-terminal-width.d.ts.map +1 -1
  249. package/dist/ui/state/use-terminal-width.js +2 -13
  250. package/dist/ui/state/use-terminal-width.js.map +1 -1
  251. package/docs/chatgpt-plan.md +109 -0
  252. package/docs/claude-plan.md +58 -0
  253. package/docs/delegation-ledger.md +180 -5
  254. package/docs/improvement-cycles.md +5 -0
  255. package/docs/releases/3.8.0.md +65 -0
  256. package/docs/releases/3.8.1.md +40 -0
  257. package/docs/reviewed-provider-metadata.md +84 -0
  258. package/docs/task-feedback.md +77 -0
  259. package/package.json +20 -11
@@ -1 +1 @@
1
- {"version":3,"file":"remote-ledger.d.ts","sourceRoot":"","sources":["../../src/execution/remote-ledger.ts"],"names":[],"mappings":"AASA,OAAO,EAAqB,KAAK,UAAU,EAAC,KAAK,iBAAiB,EAAC,KAAK,gBAAgB,EAAC,KAAK,kBAAkB,EAAC,KAAK,iBAAiB,EAAC,KAAK,qBAAqB,EAAC,MAAM,YAAY,CAAC;AAItL,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAC,MAAM,CAAC;IAAC,KAAK,EAAC,MAAM,CAAC;IACzB,0FAA0F;IAC1F,IAAI,EAAC,MAAM,CAAC;IACZ,8FAA8F;IAC9F,SAAS,CAAC,EAAC;QAAC,GAAG,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,MAAM,CAAA;KAAC,CAAC;IACvC,KAAK,CAAC,EAAC,OAAO,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAC,MAAM,CAAC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAC;CAC1D;AAGD,qBAAa,uBAAuB;IAMd,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL5C,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAC;IACrB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,OAAO,CAAC,CAAuD;IACvE,OAAO,eAGN;IAED,OAAa,OAAO,CAAC,OAAO,EAAC,mBAAmB,GAAE,OAAO,CAAC,uBAAuB,CAAC,CAQjF;IACD,IAAI,CAAC,GAAG,EAAC,MAAM,GAAE;QAAC,QAAQ,EAAC,iBAAiB,CAAC;QAAA,MAAM,EAAC,gBAAgB,EAAE,CAAC;QAAA,UAAU,EAAC,qBAAqB,CAAA;KAAC,CAGvG;IACD,gBAAgB,CAAC,GAAG,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,GAAE,iBAAiB,CAAC,SAAS,CAAC,CAIvE;IACD,sFAAsF;IAChF,gBAAgB,CAAC,GAAG,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,MAAM,CAAC,EAAC,WAAW,GAAE,OAAO,CAAC,IAAI,CAAC,CAOlF;IACK,OAAO,IAAG,OAAO,CAAC,IAAI,CAAC,CAA6E;IAC1G,2BAA2B,CAAC,KAAK,EAAC,OAAO,GAAE,OAAO,CAEjD;IACK,OAAO,CAAC,IAAI,EAAC,MAAM,EAAC,YAAY,EAAC,MAAM,EAAC,WAAW,EAAC,kBAAkB,EAAC,MAAM,CAAC,EAAC,WAAW,GAAE,OAAO,CAAC,qBAAqB,CAAC,CAE/H;IACK,MAAM,CAAC,IAAI,EAAC,MAAM,EAAC,YAAY,EAAC,MAAM,EAAC,UAAU,EAAC,iBAAiB,GAAE,OAAO,CAAC,qBAAqB,CAAC,CAExG;IACD,+FAA+F;IACzF,aAAa,CAAC,IAAI,EAAC,MAAM,EAAC,YAAY,EAAC,MAAM,EAAC,KAAK,EAAC,UAAU,EAAC,MAAM,CAAC,EAAC,WAAW,GAAE,OAAO,CAAC;QAAC,UAAU,EAAC,qBAAqB,CAAC;QAAA,KAAK,EAAC,MAAM,CAAA;KAAC,CAAC,CAGjJ;IAED;gGAC4F;YAC9E,KAAK;IAanB,OAAO,CAAC,UAAU;IAClB,+FAA+F;IAC/F,OAAO,CAAC,MAAM;YAKA,IAAI;CAenB"}
1
+ {"version":3,"file":"remote-ledger.d.ts","sourceRoot":"","sources":["../../src/execution/remote-ledger.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
+ import { validateRemoteTaskAdmission } from '../orchestration/remote-task-capacity.js';
1
2
  /** A child's view of a parent ledger served over delegation-ledger/v1 (#415).
2
3
  * It keeps a verified local replay so ExecutionGuard reads stay synchronous; the server decides
3
4
  * every reserve/settle. A server history that is not an append-only extension of what this child
4
5
  * already saw is refused, so a reset or rollback can never return spent capacity. */
5
6
  import { cancellableDelay, throwIfCancelled } from '../cancellation.js';
6
7
  import { canonicalJson, projectIdentity } from '../approvals/index.js';
7
- import { checkExecutionIdentity, shape, validateExecutionProject } from './authority.js';
8
+ import { checkExecutionIdentity, integer, shape, validateExecutionProject } from './authority.js';
9
+ import { validateRequestAttribution } from './attribution.js';
8
10
  import { executionProjectForAccount } from './child-grants.js';
9
11
  import { replayReservations } from './ledger.js';
10
12
  import { ExecutionLimitError } from './types.js';
@@ -14,10 +16,15 @@ const CODES = new Set(['invalid', 'authority', 'budget', 'deadline', 'unavailabl
14
16
  export class RemoteReservationLedger {
15
17
  options;
16
18
  root;
19
+ operations = [];
17
20
  journal;
18
21
  checkpoint;
19
22
  confirmedRejections = new WeakSet();
20
23
  binding;
24
+ executionOperation = 'execution';
25
+ taskBinding;
26
+ get supportsTaskCapacity() { return this.operations.includes('task-admit') && this.operations.includes('task-release'); }
27
+ get taskExecutionBinding() { return this.taskBinding ? structuredClone(this.taskBinding) : undefined; }
21
28
  constructor(options) {
22
29
  this.options = options;
23
30
  this.checkpoint = new RemoteLedgerCheckpoint(options.root);
@@ -30,13 +37,25 @@ export class RemoteReservationLedger {
30
37
  const ledger = new RemoteReservationLedger(options), hello = await ledger.call('hello', {});
31
38
  if (hello.protocol !== LEDGER_PROTOCOL)
32
39
  throw new ExecutionLimitError('unavailable', `Parent ledger speaks ${String(hello.protocol)}, not ${LEDGER_PROTOCOL}.`);
40
+ ledger.operations = Array.isArray(hello.operations) ? hello.operations : [];
41
+ if (options.reviewed && canonicalJson(hello.reviewed ?? null) !== canonicalJson(options.reviewed))
42
+ throw new ExecutionLimitError('authority', 'Parent reviewed authority changed.');
43
+ if (options.execution && options.reconciliation)
44
+ throw new ExecutionLimitError('invalid', 'Choose execution or reconciliation.');
33
45
  if (options.execution) {
34
- if (!Array.isArray(hello.operations) || !hello.operations.includes('execution'))
46
+ if (!Array.isArray(hello.operations) || !hello.operations.some(op => op === 'execution' || op === 'task-execution'))
35
47
  throw new ExecutionLimitError('unavailable', 'Parent ledger lacks workspace-bound execution; upgrade the parent CLI before starting this child.');
48
+ ledger.executionOperation = hello.operations.includes('task-execution') ? 'task-execution' : 'execution';
36
49
  await ledger.refreshAuthority(options.execution.cwd, options.execution.agentId);
37
50
  }
38
- else
39
- ledger.accept(await ledger.call('journal', {}));
51
+ else {
52
+ await ledger.accept(await ledger.call('journal', {}));
53
+ if (options.reconciliation) {
54
+ const { cwd, agentId } = options.reconciliation, { project, projectKey } = projectIdentity(cwd);
55
+ ledger.binding = { agentId, project: { root: project, key: projectKey } };
56
+ ledger.executionProject(cwd, agentId);
57
+ }
58
+ }
40
59
  return ledger;
41
60
  }
42
61
  read(cwd) {
@@ -55,22 +74,66 @@ export class RemoteReservationLedger {
55
74
  }
56
75
  /** A journal read is available for reconciliation even when its owner has stopped. */
57
76
  async refreshAuthority(cwd, agentId, signal) {
77
+ if (this.options.reconciliation)
78
+ throw new ExecutionLimitError('authority', 'Reconciliation does not authorize execution.');
58
79
  const { project, projectKey } = projectIdentity(cwd), expected = { agentId, project: { root: project, key: projectKey } };
59
80
  if (this.binding && canonicalJson(this.binding) !== canonicalJson(expected))
60
81
  throw new ExecutionLimitError('authority', 'Execution binding cannot be replaced.');
61
- const floor = this.journal, response = await this.call('execution', expected, signal);
62
- shape(response.binding, ['version', 'agentId', 'project']);
63
- if (response.binding.version !== 1 || response.binding.agentId !== expected.agentId || canonicalJson(validateExecutionProject(response.binding.project)) !== canonicalJson(expected.project))
82
+ const floor = this.journal, response = await this.call(this.executionOperation, expected, signal);
83
+ const isTask = this.executionOperation === 'task-execution';
84
+ shape(response.binding, isTask ? ['version', 'agentId', 'project', 'attribution', 'maxOutputTokens'] : ['version', 'agentId', 'project']);
85
+ if (response.binding.version !== (isTask ? 2 : 1) || response.binding.agentId !== expected.agentId || canonicalJson(validateExecutionProject(response.binding.project)) !== canonicalJson(expected.project))
64
86
  throw new ExecutionLimitError('authority', 'Parent returned a different execution binding.');
65
- this.accept(response, floor);
87
+ let taskBinding;
88
+ if (isTask) {
89
+ const attribution = validateRequestAttribution(response.binding.attribution);
90
+ if (attribution.kind !== 'task')
91
+ throw new ExecutionLimitError('authority', 'Parent returned a non-task execution binding.');
92
+ integer(response.binding.maxOutputTokens, 1, 100000000);
93
+ taskBinding = { attribution, maxOutputTokens: response.binding.maxOutputTokens };
94
+ if (this.taskBinding && canonicalJson(this.taskBinding) !== canonicalJson(taskBinding))
95
+ throw new ExecutionLimitError('authority', 'Native task execution binding cannot be replaced.');
96
+ }
97
+ await this.accept(response, floor, signal);
66
98
  this.binding = expected;
67
99
  this.executionProject(cwd, agentId);
100
+ this.taskBinding = taskBinding;
101
+ }
102
+ async admitTask(value, cwd, signal) {
103
+ if (this.options.reconciliation || !this.operations.includes('task-admit'))
104
+ throw new ExecutionLimitError('authority', 'Parent cannot admit remote execution.');
105
+ const admission = validateRemoteTaskAdmission(value), { project, projectKey } = projectIdentity(cwd);
106
+ while (true) {
107
+ throwIfCancelled(signal);
108
+ if (Date.now() >= admission.deadline)
109
+ throw new ExecutionLimitError('deadline', 'Remote task admission deadline expired.');
110
+ try {
111
+ const result = await this.call('task-admit', { admission, project: { root: project, key: projectKey } }, signal);
112
+ if (result.admissionId !== admission.id)
113
+ throw new ExecutionLimitError('authority', 'Parent returned another remote admission.');
114
+ return;
115
+ }
116
+ catch (error) {
117
+ if (!(error instanceof ExecutionLimitError) || !['limit', 'locked', 'unavailable'].includes(error.code))
118
+ throw error;
119
+ await cancellableDelay(100, signal);
120
+ }
121
+ }
122
+ }
123
+ async releaseTask(value, signal) {
124
+ if (!this.operations.includes('task-release'))
125
+ throw new ExecutionLimitError('unavailable', 'Parent cannot release remote execution.');
126
+ const admission = validateRemoteTaskAdmission(value), result = await this.call('task-release', { admission }, signal);
127
+ if (result.admissionId !== admission.id)
128
+ throw new ExecutionLimitError('authority', 'Parent acknowledged another remote admission.');
68
129
  }
69
- async refresh() { const floor = this.journal; this.accept(await this.call('journal', {}), floor); }
130
+ async refresh() { const floor = this.journal; await this.accept(await this.call('journal', {}), floor); }
70
131
  canReleaseFailedReservation(error) {
71
132
  return error instanceof Error && this.confirmedRejections.has(error);
72
133
  }
73
134
  async reserve(_cwd, manifestHash, reservation, signal) {
135
+ if (this.options.reconciliation)
136
+ throw new ExecutionLimitError('authority', 'Reconciliation cannot reserve.');
74
137
  return this.write('reserve', { manifestHash, reservation }, reservation.id, signal, 'Reservation outcome is unknown; no request was authorized.');
75
138
  }
76
139
  async settle(_cwd, manifestHash, settlement) {
@@ -78,8 +141,10 @@ export class RemoteReservationLedger {
78
141
  }
79
142
  /** Nested allocation from this child's own accounts; returns the grandchild's scoped token. */
80
143
  async grantChildren(_cwd, manifestHash, grant, signal) {
144
+ if (this.options.reconciliation)
145
+ throw new ExecutionLimitError('authority', 'Reconciliation cannot grant.');
81
146
  const floor = this.journal, result = await this.call('grant', { manifestHash, grant }, signal);
82
- this.accept(result, floor);
147
+ await this.accept(result, floor, signal);
83
148
  return { projection: replayReservations(this.journal.manifest, this.journal.events), token: result.token };
84
149
  }
85
150
  /** Retries reuse the same id (the server replays it). If every attempt is lost, inspect before
@@ -90,7 +155,7 @@ export class RemoteReservationLedger {
90
155
  throwIfCancelled(signal);
91
156
  try {
92
157
  const floor = this.journal;
93
- this.accept(await this.call(op, body, signal, lost === undefined), floor);
158
+ await this.accept(await this.call(op, body, signal, lost === undefined), floor, signal);
94
159
  return this.projection();
95
160
  }
96
161
  catch (error) {
@@ -111,20 +176,34 @@ export class RemoteReservationLedger {
111
176
  }
112
177
  projection() { return replayReservations(this.journal.manifest, this.journal.events); }
113
178
  /** Validate the hash chain and refuse anything but an append-only extension of what we saw. */
114
- accept(value, floor = this.journal) {
179
+ async accept(value, floor = this.journal, signal) {
115
180
  const next = verifiedJournal(value);
116
181
  if (floor && !extendsJournal(floor, next))
117
182
  throw new ExecutionLimitError('conflict', 'Parent ledger history was rewritten or rolled back; execution stopped.');
118
- this.journal = this.checkpoint.save(next, this.journal, this.options.execution ? projectIdentity(this.options.execution.cwd).project : undefined);
183
+ const deadline = Date.now() + Math.min(1000, this.options.timeoutMs ?? 1000);
184
+ while (true) {
185
+ throwIfCancelled(signal);
186
+ throwIfCancelled(this.options.signal);
187
+ try {
188
+ this.journal = this.checkpoint.save(next, this.journal, this.options.execution ? projectIdentity(this.options.execution.cwd).project : undefined);
189
+ return;
190
+ }
191
+ catch (error) {
192
+ if (!(error instanceof ExecutionLimitError) || error.code !== 'locked' || Date.now() >= deadline)
193
+ throw error;
194
+ await cancellableDelay(Math.min(25, Math.max(1, deadline - Date.now())), signal ?? this.options.signal);
195
+ }
196
+ }
119
197
  }
120
198
  async call(op, body, signal, firstAttempt = false) {
121
- const timeout = AbortSignal.timeout(this.options.timeoutMs ?? 10000), combined = signal ? AbortSignal.any([signal, timeout]) : timeout;
199
+ const timeout = AbortSignal.timeout(this.options.timeoutMs ?? 10000), combined = AbortSignal.any([timeout, ...(signal ? [signal] : []), ...(this.options.signal ? [this.options.signal] : [])]);
122
200
  let response;
123
201
  try {
124
202
  response = await (this.options.fetch ?? fetch)(`${this.options.url.replace(/\/$/, '')}/v1/${op}`, { method: 'POST', headers: { 'content-type': 'application/json', authorization: `Bearer ${this.options.token}` }, body: JSON.stringify(body), signal: combined });
125
203
  }
126
204
  catch (error) {
127
205
  throwIfCancelled(signal);
206
+ throwIfCancelled(this.options.signal);
128
207
  throw new ExecutionLimitError('unavailable', `Parent ledger unreachable: ${error.message}`);
129
208
  }
130
209
  let value;
@@ -1 +1 @@
1
- {"version":3,"file":"remote-ledger.js","sourceRoot":"","sources":["../../src/execution/remote-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-ledger.js","sourceRoot":"","sources":["../../src/execution/remote-ledger.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export interface ExecutionAccount {
12
12
  allowedTools: string[];
13
13
  allowedPaths: ExecutionPath[];
14
14
  }
15
- export interface ParentBudgetLink {
15
+ export interface LocalParentBudgetLink {
16
16
  version: 1;
17
17
  runsRoot: string;
18
18
  runId: string;
@@ -21,6 +21,32 @@ export interface ParentBudgetLink {
21
21
  budgetManifestHash: string;
22
22
  agentId: string;
23
23
  }
24
+ export interface ReviewedLedgerContext {
25
+ version: 1;
26
+ runId: string;
27
+ runManifestHash: string;
28
+ approvalRevision: string;
29
+ authority: string;
30
+ lineage: string[];
31
+ }
32
+ export interface RemoteParentBudgetLink {
33
+ version: 2;
34
+ url: string;
35
+ tokenFile: string;
36
+ checkpointRoot: string;
37
+ runId: string;
38
+ budgetManifestHash: string;
39
+ agentId: string;
40
+ accountMap: Record<string, string>;
41
+ reviewed: ReviewedLedgerContext;
42
+ }
43
+ export type ParentBudgetLink = LocalParentBudgetLink | RemoteParentBudgetLink;
44
+ /** Names a repository, not a checkout, and authenticates nothing. */
45
+ export interface PortableProjectIdentity {
46
+ version: 1;
47
+ roots: string[];
48
+ origin: string;
49
+ }
24
50
  export interface ExecutionManifest {
25
51
  version: 1 | 2;
26
52
  runId: string;
@@ -28,6 +54,7 @@ export interface ExecutionManifest {
28
54
  project: {
29
55
  root: string;
30
56
  key: string;
57
+ portable?: PortableProjectIdentity;
31
58
  };
32
59
  createdAt: number;
33
60
  deadline: number;
@@ -53,6 +80,7 @@ export interface RequestReservation {
53
80
  costNanos?: number;
54
81
  };
55
82
  quoteEvidence?: import('./billing.js').QuoteEvidence;
83
+ remoteAdmission?: import('../orchestration/remote-task-capacity.js').RemoteTaskAdmission;
56
84
  attribution?: import('./attribution.js').RequestAttribution;
57
85
  }
58
86
  export interface RequestSettlement {
@@ -88,7 +116,7 @@ export interface RecordedChildGrant {
88
116
  at: number;
89
117
  }
90
118
  export interface ReservationEvent {
91
- version: 1 | 2 | 3 | 4 | 5;
119
+ version: 1 | 2 | 3 | 4 | 5 | 6;
92
120
  id: string;
93
121
  at: number;
94
122
  previous: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/execution/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/execution/types.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;AACzE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAC/D,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,EAAE,aAAa,EAAE,CAAC;CACvD;AACD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAC,CAAC,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,eAAe,EAAC,MAAM,CAAC;IAC9D,gBAAgB,EAAC,MAAM,CAAC;IAAA,kBAAkB,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,MAAM,CAAC;CAClE;AACD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAC,CAAC,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,eAAe,EAAC,MAAM,CAAC;IAAA,gBAAgB,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,MAAM,EAAE,CAAC;CACzG;AACD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAC,CAAC,CAAC;IAAA,GAAG,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,CAAC;IAAA,cAAc,EAAC,MAAM,CAAC;IAC5D,KAAK,EAAC,MAAM,CAAC;IAAA,kBAAkB,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,MAAM,CAAC;IAAA,UAAU,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;IAAA,QAAQ,EAAC,qBAAqB,CAAC;CACvH;AACD,MAAM,MAAM,gBAAgB,GAAC,qBAAqB,GAAC,sBAAsB,CAAC;AAC1E,qEAAqE;AACrE,MAAM,WAAW,uBAAuB;IAAE,OAAO,EAAC,CAAC,CAAC;IAAA,KAAK,EAAC,MAAM,EAAE,CAAC;IAAA,MAAM,EAAC,MAAM,CAAA;CAAC;AACjF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,GAAC,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAC9C,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAA;KAAE,CAAC;IAC3E,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAC7C,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,yEAAyE;IACzE,MAAM,CAAC,EAAC,gBAAgB,CAAC;CAC1B;AACD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAC7E,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAC7D,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IACxC,MAAM,CAAC,EAAE;QAAC,MAAM,CAAC,EAAC,MAAM,CAAC;QAAA,SAAS,CAAC,EAAC,MAAM,CAAA;KAAC,CAAC;IAC5C,aAAa,CAAC,EAAC,OAAO,cAAc,EAAE,aAAa,CAAC;IACpD,eAAe,CAAC,EAAC,OAAO,0CAA0C,EAAE,mBAAmB,CAAC;IACxF,WAAW,CAAC,EAAC,OAAO,kBAAkB,EAAE,kBAAkB,CAAC;CAC5D;AACD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,eAAe,CAAC;IAChF,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD;AACD,4EAA4E;AAC5E,UAAU,gBAAgB;IACxB,EAAE,EAAC,MAAM,CAAC;IAAA,YAAY,EAAC,MAAM,CAAC;IAAA,iBAAiB,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IACvE,eAAe,EAAC,MAAM,CAAC;IAAA,gBAAgB,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,gBAAgB,EAAE,CAAC;CAC5F;AACD,wFAAwF;AACxF,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,CAAC;IAAC,OAAO,EAAC,CAAC,CAAA;CAAC,GAAC;IAAC,OAAO,EAAC,CAAC,CAAC;IAAA,OAAO,EAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;CAAC,CAAC,CAAC;AAC3G,MAAM,WAAW,kBAAkB;IAAE,KAAK,EAAC,UAAU,CAAC;IAAA,OAAO,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,CAAC;IAAA,EAAE,EAAC,MAAM,CAAA;CAAC;AAChG,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAC/D,MAAM,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,WAAW,EAAE,kBAAkB,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,iBAAiB,CAAA;KAAE,GAAG;QAAC,IAAI,EAAC,aAAa,CAAC;QAAA,KAAK,EAAC,UAAU,CAAA;KAAC,CAAC;IACzJ,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,YAAY;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AACnE,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IACxE,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC5D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,kBAAkB,CAAC;QAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;QAAC,SAAS,CAAC,EAAC,YAAY,CAAA;KAAE,CAAC,CAAC;IAC9I,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAC,kBAAkB,EAAE,CAAC;CACnC;AACD,qBAAa,mBAAoB,SAAQ,KAAK;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO;IAA5H,YAAqB,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAE5I;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/execution/types.ts"],"names":[],"mappings":"AAqDA,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACvB,IAAI;IAAzB,YAAqB,IAAuG,EAAE,OAAe;QAC3I,KAAK,CAAC,OAAO,CAAC,CAAC;oBADI,IAAI;QACP,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpD,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/execution/types.ts"],"names":[],"mappings":"AAgEA,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACvB,IAAI;IAAzB,YAAqB,IAAuG,EAAE,OAAe;QAC3I,KAAK,CAAC,OAAO,CAAC,CAAC;oBADI,IAAI;QACP,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpD,CAAC;CACF"}
@@ -7,11 +7,19 @@
7
7
  */
8
8
  import { type DelegatedExecutionOptions } from './execution/delegated.js';
9
9
  import type { LLMProvider } from './types.js';
10
+ import { type ReasoningEffort } from './models/index.js';
10
11
  export interface HeadlessEvent {
11
- type: 'message' | 'tool_call' | 'tool_result' | 'error' | 'status' | 'done';
12
+ type: 'message' | 'tool_call' | 'tool_result' | 'error' | 'status' | 'done' | 'budget_exceeded';
12
13
  timestamp: string;
14
+ /** Which hard cap stopped the run (budget_exceeded only). */
15
+ kind?: HeadlessCapKind;
13
16
  data: Record<string, unknown>;
14
17
  }
18
+ export type HeadlessCapKind = 'cost' | 'time';
19
+ /** Exit code when a hard cap stops the run; shared with configured budget caps. */
20
+ export declare const BUDGET_EXIT_CODE = 3;
21
+ /** A --max-cost or --max-time cap stopped the run (5 is planning-review). */
22
+ export declare const CAP_EXIT_CODE = 6;
15
23
  export type HeadlessOutputMode = 'json' | 'text';
16
24
  export interface HeadlessOptions {
17
25
  signal?: AbortSignal;
@@ -21,9 +29,27 @@ export interface HeadlessOptions {
21
29
  outputMode?: HeadlessOutputMode;
22
30
  maxIterations?: number;
23
31
  maxRetries?: number;
32
+ /** Hard spend cap in USD for this run (--max-cost / CALLIOPE_MAX_COST). */
33
+ maxCost?: number;
34
+ /** Hard wall-clock cap in seconds for this run (--max-time / CALLIOPE_MAX_TIME). */
35
+ maxTime?: number;
36
+ /** Explicit effort, subject to the provider's live capability checks. */
37
+ reasoningEffort?: ReasoningEffort;
24
38
  cwd?: string;
25
39
  /** Run as a delegated child admitted through a parent's served ledger (#415). */
26
40
  ledger?: DelegatedExecutionOptions;
27
41
  }
42
+ /**
43
+ * Parse `--max-cost <usd>` / `--max-time <seconds>`, falling back to
44
+ * CALLIOPE_MAX_COST / CALLIOPE_MAX_TIME. A flag wins over its env var; an empty
45
+ * env var is unset. Invalid values throw: silently dropping a cap would let a
46
+ * run overspend while the caller believes it is bounded.
47
+ */
48
+ export declare function parseHeadlessCaps(args: readonly string[], env?: NodeJS.ProcessEnv): {
49
+ maxCost?: number;
50
+ maxTime?: number;
51
+ };
52
+ /** A requested effort is never silently dropped; the flag wins over its environment default. */
53
+ export declare function parseHeadlessEffort(args: readonly string[], env?: NodeJS.ProcessEnv): ReasoningEffort | undefined;
28
54
  export declare function runHeadless(options: HeadlessOptions): Promise<number>;
29
55
  //# sourceMappingURL=headless.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../src/headless.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAA+C,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAevH,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,YAAY,CAAC;AAMvD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,MAAM,CAAC,EAAE,yBAAyB,CAAC;CACpC;AA0CD,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA4J3E"}
1
+ {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../src/headless.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAA+C,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAevH,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAwC,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAM/F,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,iBAAiB,CAAC;IAChG,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9C,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,6EAA6E;AAC7E,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,MAAM,CAAC,EAAE,yBAAyB,CAAC;CACpC;AAyCD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAavI;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,eAAe,GAAG,SAAS,CAS9H;AAQD,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ3E"}
package/dist/headless.js CHANGED
@@ -6,6 +6,7 @@
6
6
  * Designed for piping, CI, scripting, and multi-agent fleet coordination.
7
7
  */
8
8
  import { runTurn } from './runtime/index.js';
9
+ import { MAX_CONSECUTIVE_CONTINUATIONS } from './runtime/turn.js';
9
10
  import { connectDelegatedExecution, executionBinding } from './execution/delegated.js';
10
11
  import { ExecutionGuard } from './execution/guard.js';
11
12
  import { createSession, saveSessionConversation } from './storage.js';
@@ -20,6 +21,11 @@ import { resolveIterationLimit } from './iteration-limit.js';
20
21
  import { RunLog } from './runlog.js';
21
22
  import { formatBudgetHalt } from './budget.js';
22
23
  import { resolvePreferences } from './preferences/index.js';
24
+ import { isReasoningEffort, REASONING_EFFORTS } from './models/index.js';
25
+ /** Exit code when a hard cap stops the run; shared with configured budget caps. */
26
+ export const BUDGET_EXIT_CODE = 3;
27
+ /** A --max-cost or --max-time cap stopped the run (5 is planning-review). */
28
+ export const CAP_EXIT_CODE = 6;
23
29
  // ============================================================================
24
30
  // Output
25
31
  // ============================================================================
@@ -45,6 +51,9 @@ function emit(event, mode) {
45
51
  case 'status':
46
52
  process.stderr.write(`STATUS: ${event.data.message}\n`);
47
53
  break;
54
+ case 'budget_exceeded':
55
+ process.stderr.write(`BUDGET: ${event.data.message}\n`);
56
+ break;
48
57
  case 'done':
49
58
  // Silence
50
59
  break;
@@ -54,12 +63,78 @@ function emit(event, mode) {
54
63
  function now() {
55
64
  return new Date().toISOString();
56
65
  }
57
- // ============================================================================
58
- // Headless Runner
59
- // ============================================================================
66
+ /**
67
+ * Parse `--max-cost <usd>` / `--max-time <seconds>`, falling back to
68
+ * CALLIOPE_MAX_COST / CALLIOPE_MAX_TIME. A flag wins over its env var; an empty
69
+ * env var is unset. Invalid values throw: silently dropping a cap would let a
70
+ * run overspend while the caller believes it is bounded.
71
+ */
72
+ export function parseHeadlessCaps(args, env = process.env) {
73
+ const read = (flag, variable) => {
74
+ const index = args.indexOf(flag);
75
+ const source = index === -1 ? variable : flag;
76
+ const raw = index === -1 ? env[variable]?.trim() || undefined : args[index + 1];
77
+ if (index === -1 && raw === undefined)
78
+ return undefined;
79
+ const value = raw === undefined || raw.startsWith('--') ? NaN : Number(raw);
80
+ if (!Number.isFinite(value) || value <= 0)
81
+ throw new Error(`${source} must be a positive number (got ${raw === undefined ? 'no value' : JSON.stringify(raw)})`);
82
+ return value;
83
+ };
84
+ const maxCost = read('--max-cost', 'CALLIOPE_MAX_COST');
85
+ const maxTime = read('--max-time', 'CALLIOPE_MAX_TIME');
86
+ return { ...(maxCost !== undefined ? { maxCost } : {}), ...(maxTime !== undefined ? { maxTime } : {}) };
87
+ }
88
+ /** A requested effort is never silently dropped; the flag wins over its environment default. */
89
+ export function parseHeadlessEffort(args, env = process.env) {
90
+ const flag = '--reasoning-effort';
91
+ const found = args.map((value, index) => ({ value, index })).filter(({ value }) => value === flag || value.startsWith(flag + '='));
92
+ if (found.length > 1)
93
+ throw new Error(`${flag} may be specified only once`);
94
+ const item = found[0];
95
+ const raw = item ? (item.value === flag ? args[item.index + 1] : item.value.slice(flag.length + 1))?.trim() : env.CALLIOPE_REASONING_EFFORT?.trim();
96
+ if (!item && !raw)
97
+ return undefined;
98
+ if (!isReasoningEffort(raw))
99
+ throw new Error(`${item ? flag : 'CALLIOPE_REASONING_EFFORT'} must be one of ${REASONING_EFFORTS.join(', ')}`);
100
+ return raw;
101
+ }
60
102
  export async function runHeadless(options) {
61
- const signal = options.signal;
103
+ const clock = { started: Date.now(), timedOut: false };
104
+ if (options.maxTime === undefined)
105
+ return run(options, options.signal, clock);
106
+ // The time cap aborts like cancellation; `clock.timedOut` tells the two apart.
107
+ const deadline = new AbortController();
108
+ const timer = setTimeout(() => { clock.timedOut = true; deadline.abort(); }, Math.min(options.maxTime * 1000, 2 ** 31 - 1));
109
+ try {
110
+ return await run(options, options.signal ? AbortSignal.any([options.signal, deadline.signal]) : deadline.signal, clock);
111
+ }
112
+ finally {
113
+ clearTimeout(timer);
114
+ }
115
+ }
116
+ async function run(options, signal, clock) {
62
117
  const outputMode = options.outputMode || 'json';
118
+ if (options.reasoningEffort !== undefined && !isReasoningEffort(options.reasoningEffort)) {
119
+ emit({ type: 'error', timestamp: now(), data: { message: 'Invalid headless reasoning effort' } }, outputMode);
120
+ return 2;
121
+ }
122
+ const summary = (totals, stoppedBy) => ({
123
+ costUsd: totals?.cost ?? 0, inputTokens: totals?.inputTokens ?? 0, outputTokens: totals?.outputTokens ?? 0,
124
+ elapsedMs: Date.now() - clock.started, stoppedBy, limits: { maxCost: options.maxCost, maxTime: options.maxTime },
125
+ });
126
+ const timeCapHit = () => clock.timedOut && !options.signal?.aborted;
127
+ const capExceeded = (kind, totals, message) => {
128
+ const elapsedMs = Date.now() - clock.started;
129
+ emit({ type: 'budget_exceeded', kind, timestamp: now(), data: {
130
+ cap: kind === 'cost' ? options.maxCost : options.maxTime,
131
+ spent: kind === 'cost' ? totals?.cost ?? 0 : elapsedMs / 1000,
132
+ costUsd: totals?.cost ?? 0, elapsedMs, message
133
+ } }, outputMode);
134
+ if (outputMode === 'json')
135
+ process.stderr.write(message + '\n');
136
+ };
137
+ const timeMessage = () => `Time cap reached: ${((Date.now() - clock.started) / 1000).toFixed(1)}s of ${options.maxTime}s. Halting.`;
63
138
  const maxIterations = resolveIterationLimit(options.maxIterations ?? config.get('maxIterations'));
64
139
  const maxRetries = options.maxRetries ?? 3;
65
140
  const cwd = options.cwd || process.cwd();
@@ -102,6 +177,11 @@ export async function runHeadless(options) {
102
177
  }
103
178
  }
104
179
  catch (error) {
180
+ if (timeCapHit()) {
181
+ capExceeded('time', undefined, timeMessage());
182
+ emit({ type: 'done', timestamp: now(), data: { reason: 'budget', ...summary(undefined, 'time') } }, outputMode);
183
+ return CAP_EXIT_CODE;
184
+ }
105
185
  if (signal?.aborted || isCancellation(error)) {
106
186
  emit({ type: 'done', timestamp: now(), data: { reason: 'cancelled' } }, outputMode);
107
187
  return 130;
@@ -195,9 +275,17 @@ export async function runHeadless(options) {
195
275
  revision = saved.revision;
196
276
  runlog.sessionCheckpoint({ revision: saved.revision, status, messageCount: saved.messages.length, checksum: saved.checksum });
197
277
  },
278
+ continueOnLength: true,
279
+ onContinue: ({ reason, attempt, max }) => {
280
+ const message = `[continue ${attempt}/${max}] ${reason === 'length' ? 'output length limit reached' : 'empty model reply'}; asking the model to continue`;
281
+ emit({ type: 'status', timestamp: now(), data: { message, continuing: true, reason, attempt, max } }, outputMode);
282
+ process.stderr.write(message + '\n');
283
+ },
198
284
  sessionId, cwd, provider, model, prompt, execution,
285
+ ...(options.reasoningEffort !== undefined ? { reasoningEffort: options.reasoningEffort } : {}),
199
286
  preferenceSources: preference.sources,
200
287
  messages: { current: messages }, signal, maxIterations, maxRetries,
288
+ ...(options.maxCost !== undefined ? { maxCostPerRun: options.maxCost } : {}),
201
289
  runlog, confirmation: 'none', tools: getTools,
202
290
  onResponse: response => {
203
291
  if (!response.toolCalls?.length)
@@ -209,13 +297,25 @@ export async function runHeadless(options) {
209
297
  onWarning: message => emit({ type: 'status', timestamp: now(), data: { message } }, outputMode),
210
298
  onRoute: decision => emit({ type: 'status', timestamp: now(), data: { message: decision.reason, routing: decision, provider: decision.selected?.provider, model: decision.selected?.model } }, outputMode),
211
299
  });
212
- if (result.budget?.exceeded) {
300
+ // A configured budget cap tighter than --max-cost keeps its own (status) reporting.
301
+ const stoppedBy = result.reason === 'cancelled' && timeCapHit() ? 'time'
302
+ : result.reason === 'budget' && result.budget?.scope === 'run' && result.budget.kind === 'cost' && options.maxCost !== undefined && result.budget.cap === options.maxCost ? 'cost' : null;
303
+ if (stoppedBy)
304
+ capExceeded(stoppedBy, result.totals, stoppedBy === 'time' ? timeMessage() : formatBudgetHalt(result.budget));
305
+ else if (result.budget?.exceeded) {
213
306
  const message = formatBudgetHalt(result.budget);
214
307
  emit({ type: 'status', timestamp: now(), data: { message } }, outputMode);
215
308
  process.stderr.write(message + '\n');
216
309
  }
217
- emit({ type: 'done', timestamp: now(), data: { iterations: result.iterations, reason: result.reason } }, outputMode);
218
- return result.reason === 'cancelled' ? 130 : result.reason === 'budget' ? 3 : result.reason === 'completed' ? 0 : 4;
310
+ if (!stoppedBy && (result.reason === 'length' || result.reason === 'empty_response')) {
311
+ const message = `Run gave up: ${result.reason === 'length' ? 'output length limit reached' : 'empty model replies'} (${result.reason}) after ${MAX_CONSECUTIVE_CONTINUATIONS} consecutive continuations.`;
312
+ emit({ type: 'error', timestamp: now(), data: { message, reason: result.reason } }, outputMode);
313
+ process.stderr.write(message + '\n');
314
+ }
315
+ emit({ type: 'done', timestamp: now(), data: { iterations: result.iterations, reason: stoppedBy ? 'budget' : result.reason, ...summary(result.totals, stoppedBy) } }, outputMode);
316
+ if (stoppedBy)
317
+ return CAP_EXIT_CODE;
318
+ return result.reason === 'cancelled' ? 130 : result.reason === 'budget' ? BUDGET_EXIT_CODE : result.reason === 'completed' ? 0 : 4;
219
319
  }
220
320
  catch (error) {
221
321
  emit({ type: 'error', timestamp: now(), data: { message: error instanceof Error ? error.message : String(error) } }, outputMode);