looply-cli 0.0.0-stage → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (793) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +137 -3
  3. package/dist/.src-hash +1 -0
  4. package/dist/acceptance-observe.d.ts +108 -0
  5. package/dist/acceptance-observe.d.ts.map +1 -0
  6. package/dist/acceptance-observe.js +152 -0
  7. package/dist/acceptance-observe.js.map +1 -0
  8. package/dist/agent-cmd.d.ts +131 -0
  9. package/dist/agent-cmd.d.ts.map +1 -0
  10. package/dist/agent-cmd.js +154 -0
  11. package/dist/agent-cmd.js.map +1 -0
  12. package/dist/agent-contained.d.ts +114 -0
  13. package/dist/agent-contained.d.ts.map +1 -0
  14. package/dist/agent-contained.js +292 -0
  15. package/dist/agent-contained.js.map +1 -0
  16. package/dist/agent-driver.d.ts +130 -0
  17. package/dist/agent-driver.d.ts.map +1 -0
  18. package/dist/agent-driver.js +170 -0
  19. package/dist/agent-driver.js.map +1 -0
  20. package/dist/agent-envelope.d.ts +94 -0
  21. package/dist/agent-envelope.d.ts.map +1 -0
  22. package/dist/agent-envelope.js +214 -0
  23. package/dist/agent-envelope.js.map +1 -0
  24. package/dist/agent-exec.d.ts +182 -0
  25. package/dist/agent-exec.d.ts.map +1 -0
  26. package/dist/agent-exec.js +125 -0
  27. package/dist/agent-exec.js.map +1 -0
  28. package/dist/agent-runtime.d.ts +23 -0
  29. package/dist/agent-runtime.d.ts.map +1 -0
  30. package/dist/agent-runtime.js +143 -0
  31. package/dist/agent-runtime.js.map +1 -0
  32. package/dist/approval-gate-read.d.ts +66 -0
  33. package/dist/approval-gate-read.d.ts.map +1 -0
  34. package/dist/approval-gate-read.js +138 -0
  35. package/dist/approval-gate-read.js.map +1 -0
  36. package/dist/approval-resolution.d.ts +87 -0
  37. package/dist/approval-resolution.d.ts.map +1 -0
  38. package/dist/approval-resolution.js +100 -0
  39. package/dist/approval-resolution.js.map +1 -0
  40. package/dist/approval-resumes.d.ts +102 -0
  41. package/dist/approval-resumes.d.ts.map +1 -0
  42. package/dist/approval-resumes.js +167 -0
  43. package/dist/approval-resumes.js.map +1 -0
  44. package/dist/ask-brain.d.ts +167 -0
  45. package/dist/ask-brain.d.ts.map +1 -0
  46. package/dist/ask-brain.js +355 -0
  47. package/dist/ask-brain.js.map +1 -0
  48. package/dist/autonomy-authority.d.ts +80 -0
  49. package/dist/autonomy-authority.d.ts.map +1 -0
  50. package/dist/autonomy-authority.js +82 -0
  51. package/dist/autonomy-authority.js.map +1 -0
  52. package/dist/autonomy-controller.d.ts +321 -0
  53. package/dist/autonomy-controller.d.ts.map +1 -0
  54. package/dist/autonomy-controller.js +517 -0
  55. package/dist/autonomy-controller.js.map +1 -0
  56. package/dist/autonomy-store.d.ts +327 -0
  57. package/dist/autonomy-store.d.ts.map +1 -0
  58. package/dist/autonomy-store.js +581 -0
  59. package/dist/autonomy-store.js.map +1 -0
  60. package/dist/autonomy-tick.d.ts +257 -0
  61. package/dist/autonomy-tick.d.ts.map +1 -0
  62. package/dist/autonomy-tick.js +616 -0
  63. package/dist/autonomy-tick.js.map +1 -0
  64. package/dist/bin.d.ts +3 -0
  65. package/dist/bin.d.ts.map +1 -0
  66. package/dist/bin.js +2727 -0
  67. package/dist/bin.js.map +1 -0
  68. package/dist/brain-advice.d.ts +21 -0
  69. package/dist/brain-advice.d.ts.map +1 -0
  70. package/dist/brain-advice.js +51 -0
  71. package/dist/brain-advice.js.map +1 -0
  72. package/dist/candidate-replay-runtime.d.ts +125 -0
  73. package/dist/candidate-replay-runtime.d.ts.map +1 -0
  74. package/dist/candidate-replay-runtime.js +188 -0
  75. package/dist/candidate-replay-runtime.js.map +1 -0
  76. package/dist/checkout-carry.d.ts +76 -0
  77. package/dist/checkout-carry.d.ts.map +1 -0
  78. package/dist/checkout-carry.js +125 -0
  79. package/dist/checkout-carry.js.map +1 -0
  80. package/dist/citation-readers.d.ts +26 -0
  81. package/dist/citation-readers.d.ts.map +1 -0
  82. package/dist/citation-readers.js +102 -0
  83. package/dist/citation-readers.js.map +1 -0
  84. package/dist/command-receipts.d.ts +79 -0
  85. package/dist/command-receipts.d.ts.map +1 -0
  86. package/dist/command-receipts.js +143 -0
  87. package/dist/command-receipts.js.map +1 -0
  88. package/dist/command-runner.d.ts +32 -0
  89. package/dist/command-runner.d.ts.map +1 -0
  90. package/dist/command-runner.js +108 -0
  91. package/dist/command-runner.js.map +1 -0
  92. package/dist/compatible-sets.d.ts +67 -0
  93. package/dist/compatible-sets.d.ts.map +1 -0
  94. package/dist/compatible-sets.js +81 -0
  95. package/dist/compatible-sets.js.map +1 -0
  96. package/dist/compile-check.d.ts +31 -0
  97. package/dist/compile-check.d.ts.map +1 -0
  98. package/dist/compile-check.js +34 -0
  99. package/dist/compile-check.js.map +1 -0
  100. package/dist/compile-store.d.ts +16 -0
  101. package/dist/compile-store.d.ts.map +1 -0
  102. package/dist/compile-store.js +21 -0
  103. package/dist/compile-store.js.map +1 -0
  104. package/dist/completion.d.ts +106 -0
  105. package/dist/completion.d.ts.map +1 -0
  106. package/dist/completion.js +131 -0
  107. package/dist/completion.js.map +1 -0
  108. package/dist/config.d.ts +549 -0
  109. package/dist/config.d.ts.map +1 -0
  110. package/dist/config.js +763 -0
  111. package/dist/config.js.map +1 -0
  112. package/dist/control-file.d.ts +142 -0
  113. package/dist/control-file.d.ts.map +1 -0
  114. package/dist/control-file.js +144 -0
  115. package/dist/control-file.js.map +1 -0
  116. package/dist/coordinator-state.d.ts +131 -0
  117. package/dist/coordinator-state.d.ts.map +1 -0
  118. package/dist/coordinator-state.js +380 -0
  119. package/dist/coordinator-state.js.map +1 -0
  120. package/dist/coordinator.d.ts +95 -0
  121. package/dist/coordinator.d.ts.map +1 -0
  122. package/dist/coordinator.js +97 -0
  123. package/dist/coordinator.js.map +1 -0
  124. package/dist/cursor-store.d.ts +53 -0
  125. package/dist/cursor-store.d.ts.map +1 -0
  126. package/dist/cursor-store.js +98 -0
  127. package/dist/cursor-store.js.map +1 -0
  128. package/dist/daemon-cmd.d.ts +239 -0
  129. package/dist/daemon-cmd.d.ts.map +1 -0
  130. package/dist/daemon-cmd.js +1751 -0
  131. package/dist/daemon-cmd.js.map +1 -0
  132. package/dist/daemon-lock.d.ts +140 -0
  133. package/dist/daemon-lock.d.ts.map +1 -0
  134. package/dist/daemon-lock.js +352 -0
  135. package/dist/daemon-lock.js.map +1 -0
  136. package/dist/daemon-recovery.d.ts +78 -0
  137. package/dist/daemon-recovery.d.ts.map +1 -0
  138. package/dist/daemon-recovery.js +161 -0
  139. package/dist/daemon-recovery.js.map +1 -0
  140. package/dist/daemon.d.ts +368 -0
  141. package/dist/daemon.d.ts.map +1 -0
  142. package/dist/daemon.js +601 -0
  143. package/dist/daemon.js.map +1 -0
  144. package/dist/declared-response-shape.d.ts +93 -0
  145. package/dist/declared-response-shape.d.ts.map +1 -0
  146. package/dist/declared-response-shape.js +200 -0
  147. package/dist/declared-response-shape.js.map +1 -0
  148. package/dist/declared-surfaces.d.ts +16 -0
  149. package/dist/declared-surfaces.d.ts.map +1 -0
  150. package/dist/declared-surfaces.js +19 -0
  151. package/dist/declared-surfaces.js.map +1 -0
  152. package/dist/depends-review.d.ts +113 -0
  153. package/dist/depends-review.d.ts.map +1 -0
  154. package/dist/depends-review.js +110 -0
  155. package/dist/depends-review.js.map +1 -0
  156. package/dist/doctor.d.ts +91 -0
  157. package/dist/doctor.d.ts.map +1 -0
  158. package/dist/doctor.js +71 -0
  159. package/dist/doctor.js.map +1 -0
  160. package/dist/edge-approval.d.ts +105 -0
  161. package/dist/edge-approval.d.ts.map +1 -0
  162. package/dist/edge-approval.js +100 -0
  163. package/dist/edge-approval.js.map +1 -0
  164. package/dist/evidence-cache.d.ts +45 -0
  165. package/dist/evidence-cache.d.ts.map +1 -0
  166. package/dist/evidence-cache.js +90 -0
  167. package/dist/evidence-cache.js.map +1 -0
  168. package/dist/evidence-cmd.d.ts +133 -0
  169. package/dist/evidence-cmd.d.ts.map +1 -0
  170. package/dist/evidence-cmd.js +347 -0
  171. package/dist/evidence-cmd.js.map +1 -0
  172. package/dist/evidence-facts.d.ts +40 -0
  173. package/dist/evidence-facts.d.ts.map +1 -0
  174. package/dist/evidence-facts.js +114 -0
  175. package/dist/evidence-facts.js.map +1 -0
  176. package/dist/exclusive-lock.d.ts +52 -0
  177. package/dist/exclusive-lock.d.ts.map +1 -0
  178. package/dist/exclusive-lock.js +150 -0
  179. package/dist/exclusive-lock.js.map +1 -0
  180. package/dist/exec-domains.d.ts +140 -0
  181. package/dist/exec-domains.d.ts.map +1 -0
  182. package/dist/exec-domains.js +287 -0
  183. package/dist/exec-domains.js.map +1 -0
  184. package/dist/exemption-store.d.ts +197 -0
  185. package/dist/exemption-store.d.ts.map +1 -0
  186. package/dist/exemption-store.js +266 -0
  187. package/dist/exemption-store.js.map +1 -0
  188. package/dist/explicit-start-gate.d.ts +96 -0
  189. package/dist/explicit-start-gate.d.ts.map +1 -0
  190. package/dist/explicit-start-gate.js +103 -0
  191. package/dist/explicit-start-gate.js.map +1 -0
  192. package/dist/fs-trouble.d.ts +70 -0
  193. package/dist/fs-trouble.d.ts.map +1 -0
  194. package/dist/fs-trouble.js +98 -0
  195. package/dist/fs-trouble.js.map +1 -0
  196. package/dist/gate.d.ts +278 -0
  197. package/dist/gate.d.ts.map +1 -0
  198. package/dist/gate.js +278 -0
  199. package/dist/gate.js.map +1 -0
  200. package/dist/git-driver.d.ts +519 -0
  201. package/dist/git-driver.d.ts.map +1 -0
  202. package/dist/git-driver.js +900 -0
  203. package/dist/git-driver.js.map +1 -0
  204. package/dist/git-push-executor.d.ts +41 -0
  205. package/dist/git-push-executor.d.ts.map +1 -0
  206. package/dist/git-push-executor.js +142 -0
  207. package/dist/git-push-executor.js.map +1 -0
  208. package/dist/glob.d.ts +26 -0
  209. package/dist/glob.d.ts.map +1 -0
  210. package/dist/glob.js +93 -0
  211. package/dist/glob.js.map +1 -0
  212. package/dist/goal-adaptive.d.ts +295 -0
  213. package/dist/goal-adaptive.d.ts.map +1 -0
  214. package/dist/goal-adaptive.js +393 -0
  215. package/dist/goal-adaptive.js.map +1 -0
  216. package/dist/goal-compile.d.ts +342 -0
  217. package/dist/goal-compile.d.ts.map +1 -0
  218. package/dist/goal-compile.js +444 -0
  219. package/dist/goal-compile.js.map +1 -0
  220. package/dist/goal-depends-executor.d.ts +55 -0
  221. package/dist/goal-depends-executor.d.ts.map +1 -0
  222. package/dist/goal-depends-executor.js +202 -0
  223. package/dist/goal-depends-executor.js.map +1 -0
  224. package/dist/goal-execution-evidence.d.ts +135 -0
  225. package/dist/goal-execution-evidence.d.ts.map +1 -0
  226. package/dist/goal-execution-evidence.js +159 -0
  227. package/dist/goal-execution-evidence.js.map +1 -0
  228. package/dist/goal-gap.d.ts +140 -0
  229. package/dist/goal-gap.d.ts.map +1 -0
  230. package/dist/goal-gap.js +197 -0
  231. package/dist/goal-gap.js.map +1 -0
  232. package/dist/goal-met-target.d.ts +98 -0
  233. package/dist/goal-met-target.d.ts.map +1 -0
  234. package/dist/goal-met-target.js +92 -0
  235. package/dist/goal-met-target.js.map +1 -0
  236. package/dist/goal-ownership.d.ts +416 -0
  237. package/dist/goal-ownership.d.ts.map +1 -0
  238. package/dist/goal-ownership.js +576 -0
  239. package/dist/goal-ownership.js.map +1 -0
  240. package/dist/goal-runs.d.ts +82 -0
  241. package/dist/goal-runs.d.ts.map +1 -0
  242. package/dist/goal-runs.js +120 -0
  243. package/dist/goal-runs.js.map +1 -0
  244. package/dist/goal-store.d.ts +146 -0
  245. package/dist/goal-store.d.ts.map +1 -0
  246. package/dist/goal-store.js +294 -0
  247. package/dist/goal-store.js.map +1 -0
  248. package/dist/goal-view.d.ts +156 -0
  249. package/dist/goal-view.d.ts.map +1 -0
  250. package/dist/goal-view.js +499 -0
  251. package/dist/goal-view.js.map +1 -0
  252. package/dist/governed-approvals.d.ts +152 -0
  253. package/dist/governed-approvals.d.ts.map +1 -0
  254. package/dist/governed-approvals.js +246 -0
  255. package/dist/governed-approvals.js.map +1 -0
  256. package/dist/governed-broker.d.ts +169 -0
  257. package/dist/governed-broker.d.ts.map +1 -0
  258. package/dist/governed-broker.js +196 -0
  259. package/dist/governed-broker.js.map +1 -0
  260. package/dist/governed-run.d.ts +220 -0
  261. package/dist/governed-run.d.ts.map +1 -0
  262. package/dist/governed-run.js +406 -0
  263. package/dist/governed-run.js.map +1 -0
  264. package/dist/grant-reconcile.d.ts +63 -0
  265. package/dist/grant-reconcile.d.ts.map +1 -0
  266. package/dist/grant-reconcile.js +121 -0
  267. package/dist/grant-reconcile.js.map +1 -0
  268. package/dist/index-for-head.d.ts +56 -0
  269. package/dist/index-for-head.d.ts.map +1 -0
  270. package/dist/index-for-head.js +103 -0
  271. package/dist/index-for-head.js.map +1 -0
  272. package/dist/index.d.ts +39 -0
  273. package/dist/index.d.ts.map +1 -0
  274. package/dist/index.js +55 -0
  275. package/dist/index.js.map +1 -0
  276. package/dist/init-detect.d.ts +39 -0
  277. package/dist/init-detect.d.ts.map +1 -0
  278. package/dist/init-detect.js +188 -0
  279. package/dist/init-detect.js.map +1 -0
  280. package/dist/integration-deps.d.ts +62 -0
  281. package/dist/integration-deps.d.ts.map +1 -0
  282. package/dist/integration-deps.js +251 -0
  283. package/dist/integration-deps.js.map +1 -0
  284. package/dist/integration-runtime.d.ts +458 -0
  285. package/dist/integration-runtime.d.ts.map +1 -0
  286. package/dist/integration-runtime.js +681 -0
  287. package/dist/integration-runtime.js.map +1 -0
  288. package/dist/integration.d.ts +45 -0
  289. package/dist/integration.d.ts.map +1 -0
  290. package/dist/integration.js +87 -0
  291. package/dist/integration.js.map +1 -0
  292. package/dist/integrator.d.ts +84 -0
  293. package/dist/integrator.d.ts.map +1 -0
  294. package/dist/integrator.js +193 -0
  295. package/dist/integrator.js.map +1 -0
  296. package/dist/lane-claims.d.ts +174 -0
  297. package/dist/lane-claims.d.ts.map +1 -0
  298. package/dist/lane-claims.js +218 -0
  299. package/dist/lane-claims.js.map +1 -0
  300. package/dist/lane-coverage.d.ts +87 -0
  301. package/dist/lane-coverage.d.ts.map +1 -0
  302. package/dist/lane-coverage.js +129 -0
  303. package/dist/lane-coverage.js.map +1 -0
  304. package/dist/ledger-replay.d.ts +115 -0
  305. package/dist/ledger-replay.d.ts.map +1 -0
  306. package/dist/ledger-replay.js +155 -0
  307. package/dist/ledger-replay.js.map +1 -0
  308. package/dist/ledger-store.d.ts +68 -0
  309. package/dist/ledger-store.d.ts.map +1 -0
  310. package/dist/ledger-store.js +111 -0
  311. package/dist/ledger-store.js.map +1 -0
  312. package/dist/loop-safety-observer.d.ts +132 -0
  313. package/dist/loop-safety-observer.d.ts.map +1 -0
  314. package/dist/loop-safety-observer.js +76 -0
  315. package/dist/loop-safety-observer.js.map +1 -0
  316. package/dist/loop-safety-store.d.ts +339 -0
  317. package/dist/loop-safety-store.d.ts.map +1 -0
  318. package/dist/loop-safety-store.js +800 -0
  319. package/dist/loop-safety-store.js.map +1 -0
  320. package/dist/machine-store.d.ts +54 -0
  321. package/dist/machine-store.d.ts.map +1 -0
  322. package/dist/machine-store.js +149 -0
  323. package/dist/machine-store.js.map +1 -0
  324. package/dist/mcp-main.d.ts +2 -0
  325. package/dist/mcp-main.d.ts.map +1 -0
  326. package/dist/mcp-main.js +116 -0
  327. package/dist/mcp-main.js.map +1 -0
  328. package/dist/mcp-server.d.ts +72 -0
  329. package/dist/mcp-server.d.ts.map +1 -0
  330. package/dist/mcp-server.js +259 -0
  331. package/dist/mcp-server.js.map +1 -0
  332. package/dist/model-routing.d.ts +75 -0
  333. package/dist/model-routing.d.ts.map +1 -0
  334. package/dist/model-routing.js +108 -0
  335. package/dist/model-routing.js.map +1 -0
  336. package/dist/model-transport.d.ts +188 -0
  337. package/dist/model-transport.d.ts.map +1 -0
  338. package/dist/model-transport.js +625 -0
  339. package/dist/model-transport.js.map +1 -0
  340. package/dist/notify-cadence.d.ts +55 -0
  341. package/dist/notify-cadence.d.ts.map +1 -0
  342. package/dist/notify-cadence.js +68 -0
  343. package/dist/notify-cadence.js.map +1 -0
  344. package/dist/notify-channel.d.ts +69 -0
  345. package/dist/notify-channel.d.ts.map +1 -0
  346. package/dist/notify-channel.js +151 -0
  347. package/dist/notify-channel.js.map +1 -0
  348. package/dist/notify.d.ts +71 -0
  349. package/dist/notify.d.ts.map +1 -0
  350. package/dist/notify.js +125 -0
  351. package/dist/notify.js.map +1 -0
  352. package/dist/observation-inventory.d.ts +65 -0
  353. package/dist/observation-inventory.d.ts.map +1 -0
  354. package/dist/observation-inventory.js +139 -0
  355. package/dist/observation-inventory.js.map +1 -0
  356. package/dist/owned-children.d.ts +45 -0
  357. package/dist/owned-children.d.ts.map +1 -0
  358. package/dist/owned-children.js +64 -0
  359. package/dist/owned-children.js.map +1 -0
  360. package/dist/packet-for-goal.d.ts +19 -0
  361. package/dist/packet-for-goal.d.ts.map +1 -0
  362. package/dist/packet-for-goal.js +32 -0
  363. package/dist/packet-for-goal.js.map +1 -0
  364. package/dist/pair-cmd.d.ts +85 -0
  365. package/dist/pair-cmd.d.ts.map +1 -0
  366. package/dist/pair-cmd.js +205 -0
  367. package/dist/pair-cmd.js.map +1 -0
  368. package/dist/partial-asker.d.ts +96 -0
  369. package/dist/partial-asker.d.ts.map +1 -0
  370. package/dist/partial-asker.js +117 -0
  371. package/dist/partial-asker.js.map +1 -0
  372. package/dist/pdf-text-lines.d.ts +17 -0
  373. package/dist/pdf-text-lines.d.ts.map +1 -0
  374. package/dist/pdf-text-lines.js +70 -0
  375. package/dist/pdf-text-lines.js.map +1 -0
  376. package/dist/pdf-text-worker.d.ts +2 -0
  377. package/dist/pdf-text-worker.d.ts.map +1 -0
  378. package/dist/pdf-text-worker.js +81 -0
  379. package/dist/pdf-text-worker.js.map +1 -0
  380. package/dist/pdf-text.d.ts +56 -0
  381. package/dist/pdf-text.d.ts.map +1 -0
  382. package/dist/pdf-text.js +64 -0
  383. package/dist/pdf-text.js.map +1 -0
  384. package/dist/pending-action.d.ts +154 -0
  385. package/dist/pending-action.d.ts.map +1 -0
  386. package/dist/pending-action.js +148 -0
  387. package/dist/pending-action.js.map +1 -0
  388. package/dist/preemptor.d.ts +40 -0
  389. package/dist/preemptor.d.ts.map +1 -0
  390. package/dist/preemptor.js +49 -0
  391. package/dist/preemptor.js.map +1 -0
  392. package/dist/programme-mode.d.ts +29 -0
  393. package/dist/programme-mode.d.ts.map +1 -0
  394. package/dist/programme-mode.js +50 -0
  395. package/dist/programme-mode.js.map +1 -0
  396. package/dist/progress-view.d.ts +14 -0
  397. package/dist/progress-view.d.ts.map +1 -0
  398. package/dist/progress-view.js +114 -0
  399. package/dist/progress-view.js.map +1 -0
  400. package/dist/project-graph-builder.d.ts +81 -0
  401. package/dist/project-graph-builder.d.ts.map +1 -0
  402. package/dist/project-graph-builder.js +246 -0
  403. package/dist/project-graph-builder.js.map +1 -0
  404. package/dist/project-graph-runtime.d.ts +86 -0
  405. package/dist/project-graph-runtime.d.ts.map +1 -0
  406. package/dist/project-graph-runtime.js +112 -0
  407. package/dist/project-graph-runtime.js.map +1 -0
  408. package/dist/project-index-builder.d.ts +96 -0
  409. package/dist/project-index-builder.d.ts.map +1 -0
  410. package/dist/project-index-builder.js +298 -0
  411. package/dist/project-index-builder.js.map +1 -0
  412. package/dist/project-index-facts.d.ts +51 -0
  413. package/dist/project-index-facts.d.ts.map +1 -0
  414. package/dist/project-index-facts.js +117 -0
  415. package/dist/project-index-facts.js.map +1 -0
  416. package/dist/project-index-store.d.ts +97 -0
  417. package/dist/project-index-store.d.ts.map +1 -0
  418. package/dist/project-index-store.js +140 -0
  419. package/dist/project-index-store.js.map +1 -0
  420. package/dist/project-memory-store.d.ts +127 -0
  421. package/dist/project-memory-store.d.ts.map +1 -0
  422. package/dist/project-memory-store.js +302 -0
  423. package/dist/project-memory-store.js.map +1 -0
  424. package/dist/proposal-store.d.ts +14 -0
  425. package/dist/proposal-store.d.ts.map +1 -0
  426. package/dist/proposal-store.js +19 -0
  427. package/dist/proposal-store.js.map +1 -0
  428. package/dist/prover.d.ts +80 -0
  429. package/dist/prover.d.ts.map +1 -0
  430. package/dist/prover.js +137 -0
  431. package/dist/prover.js.map +1 -0
  432. package/dist/provider-identity-store.d.ts +34 -0
  433. package/dist/provider-identity-store.d.ts.map +1 -0
  434. package/dist/provider-identity-store.js +72 -0
  435. package/dist/provider-identity-store.js.map +1 -0
  436. package/dist/provider-identity.d.ts +104 -0
  437. package/dist/provider-identity.d.ts.map +1 -0
  438. package/dist/provider-identity.js +167 -0
  439. package/dist/provider-identity.js.map +1 -0
  440. package/dist/provider-limit.d.ts +79 -0
  441. package/dist/provider-limit.d.ts.map +1 -0
  442. package/dist/provider-limit.js +148 -0
  443. package/dist/provider-limit.js.map +1 -0
  444. package/dist/provider-preflight.d.ts +171 -0
  445. package/dist/provider-preflight.d.ts.map +1 -0
  446. package/dist/provider-preflight.js +395 -0
  447. package/dist/provider-preflight.js.map +1 -0
  448. package/dist/provider-state.d.ts +120 -0
  449. package/dist/provider-state.d.ts.map +1 -0
  450. package/dist/provider-state.js +182 -0
  451. package/dist/provider-state.js.map +1 -0
  452. package/dist/providers.d.ts +132 -0
  453. package/dist/providers.d.ts.map +1 -0
  454. package/dist/providers.js +161 -0
  455. package/dist/providers.js.map +1 -0
  456. package/dist/publication-recorder.d.ts +117 -0
  457. package/dist/publication-recorder.d.ts.map +1 -0
  458. package/dist/publication-recorder.js +124 -0
  459. package/dist/publication-recorder.js.map +1 -0
  460. package/dist/pursuit-delivery.d.ts +24 -0
  461. package/dist/pursuit-delivery.d.ts.map +1 -0
  462. package/dist/pursuit-delivery.js +38 -0
  463. package/dist/pursuit-delivery.js.map +1 -0
  464. package/dist/queue-store.d.ts +132 -0
  465. package/dist/queue-store.d.ts.map +1 -0
  466. package/dist/queue-store.js +185 -0
  467. package/dist/queue-store.js.map +1 -0
  468. package/dist/queue-summary.d.ts +14 -0
  469. package/dist/queue-summary.d.ts.map +1 -0
  470. package/dist/queue-summary.js +82 -0
  471. package/dist/queue-summary.js.map +1 -0
  472. package/dist/queue-view.d.ts +20 -0
  473. package/dist/queue-view.d.ts.map +1 -0
  474. package/dist/queue-view.js +163 -0
  475. package/dist/queue-view.js.map +1 -0
  476. package/dist/queue-write-lease.d.ts +106 -0
  477. package/dist/queue-write-lease.d.ts.map +1 -0
  478. package/dist/queue-write-lease.js +282 -0
  479. package/dist/queue-write-lease.js.map +1 -0
  480. package/dist/rails-home.d.ts +162 -0
  481. package/dist/rails-home.d.ts.map +1 -0
  482. package/dist/rails-home.js +452 -0
  483. package/dist/rails-home.js.map +1 -0
  484. package/dist/rails-migrations.d.ts +75 -0
  485. package/dist/rails-migrations.d.ts.map +1 -0
  486. package/dist/rails-migrations.js +199 -0
  487. package/dist/rails-migrations.js.map +1 -0
  488. package/dist/rails-stores.d.ts +49 -0
  489. package/dist/rails-stores.d.ts.map +1 -0
  490. package/dist/rails-stores.js +100 -0
  491. package/dist/rails-stores.js.map +1 -0
  492. package/dist/reaper.d.ts +69 -0
  493. package/dist/reaper.d.ts.map +1 -0
  494. package/dist/reaper.js +152 -0
  495. package/dist/reaper.js.map +1 -0
  496. package/dist/record-store.d.ts +36 -0
  497. package/dist/record-store.d.ts.map +1 -0
  498. package/dist/record-store.js +78 -0
  499. package/dist/record-store.js.map +1 -0
  500. package/dist/recovery-io.d.ts +50 -0
  501. package/dist/recovery-io.d.ts.map +1 -0
  502. package/dist/recovery-io.js +122 -0
  503. package/dist/recovery-io.js.map +1 -0
  504. package/dist/recovery.d.ts +146 -0
  505. package/dist/recovery.d.ts.map +1 -0
  506. package/dist/recovery.js +110 -0
  507. package/dist/recovery.js.map +1 -0
  508. package/dist/redraw.d.ts +34 -0
  509. package/dist/redraw.d.ts.map +1 -0
  510. package/dist/redraw.js +62 -0
  511. package/dist/redraw.js.map +1 -0
  512. package/dist/rejected-evidence.d.ts +255 -0
  513. package/dist/rejected-evidence.d.ts.map +1 -0
  514. package/dist/rejected-evidence.js +324 -0
  515. package/dist/rejected-evidence.js.map +1 -0
  516. package/dist/report-cmd.d.ts +32 -0
  517. package/dist/report-cmd.d.ts.map +1 -0
  518. package/dist/report-cmd.js +201 -0
  519. package/dist/report-cmd.js.map +1 -0
  520. package/dist/repos-cmd.d.ts +80 -0
  521. package/dist/repos-cmd.d.ts.map +1 -0
  522. package/dist/repos-cmd.js +240 -0
  523. package/dist/repos-cmd.js.map +1 -0
  524. package/dist/request-body-shape.d.ts +93 -0
  525. package/dist/request-body-shape.d.ts.map +1 -0
  526. package/dist/request-body-shape.js +407 -0
  527. package/dist/request-body-shape.js.map +1 -0
  528. package/dist/requirement-claims.d.ts +89 -0
  529. package/dist/requirement-claims.d.ts.map +1 -0
  530. package/dist/requirement-claims.js +92 -0
  531. package/dist/requirement-claims.js.map +1 -0
  532. package/dist/retention-apply-runtime.d.ts +105 -0
  533. package/dist/retention-apply-runtime.d.ts.map +1 -0
  534. package/dist/retention-apply-runtime.js +269 -0
  535. package/dist/retention-apply-runtime.js.map +1 -0
  536. package/dist/reverify.d.ts +41 -0
  537. package/dist/reverify.d.ts.map +1 -0
  538. package/dist/reverify.js +69 -0
  539. package/dist/reverify.js.map +1 -0
  540. package/dist/round-records.d.ts +65 -0
  541. package/dist/round-records.d.ts.map +1 -0
  542. package/dist/round-records.js +61 -0
  543. package/dist/round-records.js.map +1 -0
  544. package/dist/round-runner.d.ts +924 -0
  545. package/dist/round-runner.d.ts.map +1 -0
  546. package/dist/round-runner.js +1693 -0
  547. package/dist/round-runner.js.map +1 -0
  548. package/dist/run-approval.d.ts +180 -0
  549. package/dist/run-approval.d.ts.map +1 -0
  550. package/dist/run-approval.js +199 -0
  551. package/dist/run-approval.js.map +1 -0
  552. package/dist/run-cmd.d.ts +359 -0
  553. package/dist/run-cmd.d.ts.map +1 -0
  554. package/dist/run-cmd.js +4418 -0
  555. package/dist/run-cmd.js.map +1 -0
  556. package/dist/run-delivery.d.ts +71 -0
  557. package/dist/run-delivery.d.ts.map +1 -0
  558. package/dist/run-delivery.js +104 -0
  559. package/dist/run-delivery.js.map +1 -0
  560. package/dist/run-ended.d.ts +75 -0
  561. package/dist/run-ended.d.ts.map +1 -0
  562. package/dist/run-ended.js +27 -0
  563. package/dist/run-ended.js.map +1 -0
  564. package/dist/run-ending-locator.d.ts +125 -0
  565. package/dist/run-ending-locator.d.ts.map +1 -0
  566. package/dist/run-ending-locator.js +133 -0
  567. package/dist/run-ending-locator.js.map +1 -0
  568. package/dist/run-launcher.d.ts +459 -0
  569. package/dist/run-launcher.d.ts.map +1 -0
  570. package/dist/run-launcher.js +652 -0
  571. package/dist/run-launcher.js.map +1 -0
  572. package/dist/run-lease.d.ts +208 -0
  573. package/dist/run-lease.d.ts.map +1 -0
  574. package/dist/run-lease.js +301 -0
  575. package/dist/run-lease.js.map +1 -0
  576. package/dist/run-refusal-marks.d.ts +189 -0
  577. package/dist/run-refusal-marks.d.ts.map +1 -0
  578. package/dist/run-refusal-marks.js +249 -0
  579. package/dist/run-refusal-marks.js.map +1 -0
  580. package/dist/run-start-marks.d.ts +153 -0
  581. package/dist/run-start-marks.d.ts.map +1 -0
  582. package/dist/run-start-marks.js +269 -0
  583. package/dist/run-start-marks.js.map +1 -0
  584. package/dist/scan-cmd.d.ts +14 -0
  585. package/dist/scan-cmd.d.ts.map +1 -0
  586. package/dist/scan-cmd.js +270 -0
  587. package/dist/scan-cmd.js.map +1 -0
  588. package/dist/scan-events.d.ts +50 -0
  589. package/dist/scan-events.d.ts.map +1 -0
  590. package/dist/scan-events.js +91 -0
  591. package/dist/scan-events.js.map +1 -0
  592. package/dist/scan.d.ts +191 -0
  593. package/dist/scan.d.ts.map +1 -0
  594. package/dist/scan.js +417 -0
  595. package/dist/scan.js.map +1 -0
  596. package/dist/scope-rule.d.ts +148 -0
  597. package/dist/scope-rule.d.ts.map +1 -0
  598. package/dist/scope-rule.js +121 -0
  599. package/dist/scope-rule.js.map +1 -0
  600. package/dist/self-repo-id.d.ts +18 -0
  601. package/dist/self-repo-id.d.ts.map +1 -0
  602. package/dist/self-repo-id.js +70 -0
  603. package/dist/self-repo-id.js.map +1 -0
  604. package/dist/serve-cmd.d.ts +115 -0
  605. package/dist/serve-cmd.d.ts.map +1 -0
  606. package/dist/serve-cmd.js +505 -0
  607. package/dist/serve-cmd.js.map +1 -0
  608. package/dist/serve.d.ts +167 -0
  609. package/dist/serve.d.ts.map +1 -0
  610. package/dist/serve.js +336 -0
  611. package/dist/serve.js.map +1 -0
  612. package/dist/server-client.d.ts +766 -0
  613. package/dist/server-client.d.ts.map +1 -0
  614. package/dist/server-client.js +475 -0
  615. package/dist/server-client.js.map +1 -0
  616. package/dist/session-adapter-runtime.d.ts +195 -0
  617. package/dist/session-adapter-runtime.d.ts.map +1 -0
  618. package/dist/session-adapter-runtime.js +373 -0
  619. package/dist/session-adapter-runtime.js.map +1 -0
  620. package/dist/session-checkpoint-runtime.d.ts +62 -0
  621. package/dist/session-checkpoint-runtime.d.ts.map +1 -0
  622. package/dist/session-checkpoint-runtime.js +268 -0
  623. package/dist/session-checkpoint-runtime.js.map +1 -0
  624. package/dist/session-control-transport.d.ts +106 -0
  625. package/dist/session-control-transport.d.ts.map +1 -0
  626. package/dist/session-control-transport.js +232 -0
  627. package/dist/session-control-transport.js.map +1 -0
  628. package/dist/session-observation-store.d.ts +98 -0
  629. package/dist/session-observation-store.d.ts.map +1 -0
  630. package/dist/session-observation-store.js +155 -0
  631. package/dist/session-observation-store.js.map +1 -0
  632. package/dist/session-observe-runtime.d.ts +123 -0
  633. package/dist/session-observe-runtime.d.ts.map +1 -0
  634. package/dist/session-observe-runtime.js +317 -0
  635. package/dist/session-observe-runtime.js.map +1 -0
  636. package/dist/session-store.d.ts +98 -0
  637. package/dist/session-store.d.ts.map +1 -0
  638. package/dist/session-store.js +116 -0
  639. package/dist/session-store.js.map +1 -0
  640. package/dist/sessions-cmd.d.ts +202 -0
  641. package/dist/sessions-cmd.d.ts.map +1 -0
  642. package/dist/sessions-cmd.js +609 -0
  643. package/dist/sessions-cmd.js.map +1 -0
  644. package/dist/settings-overlay.d.ts +53 -0
  645. package/dist/settings-overlay.d.ts.map +1 -0
  646. package/dist/settings-overlay.js +175 -0
  647. package/dist/settings-overlay.js.map +1 -0
  648. package/dist/setup-prompt.d.ts +34 -0
  649. package/dist/setup-prompt.d.ts.map +1 -0
  650. package/dist/setup-prompt.js +92 -0
  651. package/dist/setup-prompt.js.map +1 -0
  652. package/dist/setup.d.ts +103 -0
  653. package/dist/setup.d.ts.map +1 -0
  654. package/dist/setup.js +283 -0
  655. package/dist/setup.js.map +1 -0
  656. package/dist/shared-grants.d.ts +164 -0
  657. package/dist/shared-grants.d.ts.map +1 -0
  658. package/dist/shared-grants.js +242 -0
  659. package/dist/shared-grants.js.map +1 -0
  660. package/dist/signals.d.ts +55 -0
  661. package/dist/signals.d.ts.map +1 -0
  662. package/dist/signals.js +85 -0
  663. package/dist/signals.js.map +1 -0
  664. package/dist/source-cmd.d.ts +201 -0
  665. package/dist/source-cmd.d.ts.map +1 -0
  666. package/dist/source-cmd.js +684 -0
  667. package/dist/source-cmd.js.map +1 -0
  668. package/dist/source-verdict.d.ts +99 -0
  669. package/dist/source-verdict.d.ts.map +1 -0
  670. package/dist/source-verdict.js +182 -0
  671. package/dist/source-verdict.js.map +1 -0
  672. package/dist/spend-ledger.d.ts +350 -0
  673. package/dist/spend-ledger.d.ts.map +1 -0
  674. package/dist/spend-ledger.js +546 -0
  675. package/dist/spend-ledger.js.map +1 -0
  676. package/dist/stale-run-sweep.d.ts +79 -0
  677. package/dist/stale-run-sweep.d.ts.map +1 -0
  678. package/dist/stale-run-sweep.js +116 -0
  679. package/dist/stale-run-sweep.js.map +1 -0
  680. package/dist/start-attempts.d.ts +385 -0
  681. package/dist/start-attempts.d.ts.map +1 -0
  682. package/dist/start-attempts.js +613 -0
  683. package/dist/start-attempts.js.map +1 -0
  684. package/dist/status-cmd.d.ts +28 -0
  685. package/dist/status-cmd.d.ts.map +1 -0
  686. package/dist/status-cmd.js +116 -0
  687. package/dist/status-cmd.js.map +1 -0
  688. package/dist/stop-follow-up.d.ts +107 -0
  689. package/dist/stop-follow-up.d.ts.map +1 -0
  690. package/dist/stop-follow-up.js +172 -0
  691. package/dist/stop-follow-up.js.map +1 -0
  692. package/dist/surface-lease.d.ts +118 -0
  693. package/dist/surface-lease.d.ts.map +1 -0
  694. package/dist/surface-lease.js +485 -0
  695. package/dist/surface-lease.js.map +1 -0
  696. package/dist/sync.d.ts +54 -0
  697. package/dist/sync.d.ts.map +1 -0
  698. package/dist/sync.js +93 -0
  699. package/dist/sync.js.map +1 -0
  700. package/dist/syncing-ledger.d.ts +45 -0
  701. package/dist/syncing-ledger.d.ts.map +1 -0
  702. package/dist/syncing-ledger.js +53 -0
  703. package/dist/syncing-ledger.js.map +1 -0
  704. package/dist/temp-fixtures.d.ts +68 -0
  705. package/dist/temp-fixtures.d.ts.map +1 -0
  706. package/dist/temp-fixtures.js +38 -0
  707. package/dist/temp-fixtures.js.map +1 -0
  708. package/dist/token-window.d.ts +84 -0
  709. package/dist/token-window.d.ts.map +1 -0
  710. package/dist/token-window.js +143 -0
  711. package/dist/token-window.js.map +1 -0
  712. package/dist/tool-bridge.d.ts +177 -0
  713. package/dist/tool-bridge.d.ts.map +1 -0
  714. package/dist/tool-bridge.js +329 -0
  715. package/dist/tool-bridge.js.map +1 -0
  716. package/dist/tool-call-record.d.ts +197 -0
  717. package/dist/tool-call-record.d.ts.map +1 -0
  718. package/dist/tool-call-record.js +276 -0
  719. package/dist/tool-call-record.js.map +1 -0
  720. package/dist/tool-protocol.d.ts +135 -0
  721. package/dist/tool-protocol.d.ts.map +1 -0
  722. package/dist/tool-protocol.js +104 -0
  723. package/dist/tool-protocol.js.map +1 -0
  724. package/dist/tool-worker.d.ts +3 -0
  725. package/dist/tool-worker.d.ts.map +1 -0
  726. package/dist/tool-worker.js +478 -0
  727. package/dist/tool-worker.js.map +1 -0
  728. package/dist/toolchain-mirror.d.ts +86 -0
  729. package/dist/toolchain-mirror.d.ts.map +1 -0
  730. package/dist/toolchain-mirror.js +307 -0
  731. package/dist/toolchain-mirror.js.map +1 -0
  732. package/dist/trusted-git.d.ts +243 -0
  733. package/dist/trusted-git.d.ts.map +1 -0
  734. package/dist/trusted-git.js +920 -0
  735. package/dist/trusted-git.js.map +1 -0
  736. package/dist/ui.d.ts +76 -0
  737. package/dist/ui.d.ts.map +1 -0
  738. package/dist/ui.js +118 -0
  739. package/dist/ui.js.map +1 -0
  740. package/dist/untrusted-exec.d.ts +275 -0
  741. package/dist/untrusted-exec.d.ts.map +1 -0
  742. package/dist/untrusted-exec.js +479 -0
  743. package/dist/untrusted-exec.js.map +1 -0
  744. package/dist/untrusted-gate.d.ts +73 -0
  745. package/dist/untrusted-gate.d.ts.map +1 -0
  746. package/dist/untrusted-gate.js +226 -0
  747. package/dist/untrusted-gate.js.map +1 -0
  748. package/dist/uploader.d.ts +153 -0
  749. package/dist/uploader.d.ts.map +1 -0
  750. package/dist/uploader.js +204 -0
  751. package/dist/uploader.js.map +1 -0
  752. package/dist/verifier.d.ts +66 -0
  753. package/dist/verifier.d.ts.map +1 -0
  754. package/dist/verifier.js +170 -0
  755. package/dist/verifier.js.map +1 -0
  756. package/dist/verify-apply.d.ts +26 -0
  757. package/dist/verify-apply.d.ts.map +1 -0
  758. package/dist/verify-apply.js +36 -0
  759. package/dist/verify-apply.js.map +1 -0
  760. package/dist/verify-cmd.d.ts +44 -0
  761. package/dist/verify-cmd.d.ts.map +1 -0
  762. package/dist/verify-cmd.js +125 -0
  763. package/dist/verify-cmd.js.map +1 -0
  764. package/dist/verify-pass.d.ts +73 -0
  765. package/dist/verify-pass.d.ts.map +1 -0
  766. package/dist/verify-pass.js +103 -0
  767. package/dist/verify-pass.js.map +1 -0
  768. package/dist/welcome.d.ts +43 -0
  769. package/dist/welcome.d.ts.map +1 -0
  770. package/dist/welcome.js +116 -0
  771. package/dist/welcome.js.map +1 -0
  772. package/dist/workspace-provisioner.d.ts +65 -0
  773. package/dist/workspace-provisioner.d.ts.map +1 -0
  774. package/dist/workspace-provisioner.js +66 -0
  775. package/dist/workspace-provisioner.js.map +1 -0
  776. package/dist/workspace-quarantine.d.ts +64 -0
  777. package/dist/workspace-quarantine.d.ts.map +1 -0
  778. package/dist/workspace-quarantine.js +156 -0
  779. package/dist/workspace-quarantine.js.map +1 -0
  780. package/dist/workspace-residue-sweep.d.ts +113 -0
  781. package/dist/workspace-residue-sweep.d.ts.map +1 -0
  782. package/dist/workspace-residue-sweep.js +158 -0
  783. package/dist/workspace-residue-sweep.js.map +1 -0
  784. package/dist/workspace.d.ts +639 -0
  785. package/dist/workspace.d.ts.map +1 -0
  786. package/dist/workspace.js +2026 -0
  787. package/dist/workspace.js.map +1 -0
  788. package/package.json +52 -4
  789. package/win/CredProbe.cs +64 -0
  790. package/win/FakeClaude.cs +56 -0
  791. package/win/HandleProbe.cs +116 -0
  792. package/win/TokenProbe.cs +53 -0
  793. package/win/appcontainer.ps1 +500 -0
@@ -0,0 +1,130 @@
1
+ import type { AgentInvoke } from './agent-exec';
2
+ import { type PendingActionDeclaration, type ReadDeclaration } from './pending-action';
3
+ /**
4
+ * The agent driver: spawns the coding agent, captures the transcript, and parses
5
+ * the structured implementer result out of it.
6
+ *
7
+ * The one rule here is DESIGN §2.4 / §12 case 4: the round's outcome comes from
8
+ * the implementer's structured result and from nothing else. A missing or
9
+ * unparseable result is `abandoned` — the driver never inspects the working tree
10
+ * to guess whether "something happened", because deciding that from `git status`
11
+ * is exactly how the previous harness made its no-op branch unreachable. The
12
+ * exit code decides nothing either (§12 case 3): an agent that exits non-zero
13
+ * but returned a valid result still goes to the gate, and the gate decides.
14
+ */
15
+ /**
16
+ * `implemented` and the `blocked` flow are DESIGN §2.2 / §8; `no-op` exists so
17
+ * "there was nothing to do" is a statement the agent makes, never an inference
18
+ * the runner draws from an unchanged tree (§2.4).
19
+ */
20
+ export type ImplementerOutcome = 'implemented' | 'no-op' | 'blocked';
21
+ export interface ImplementerBlocked {
22
+ path: string;
23
+ reason: string;
24
+ }
25
+ /** The structured result of DESIGN §2.2 — the only thing the runner trusts. */
26
+ export interface ImplementerResult {
27
+ itemId: string;
28
+ outcome: ImplementerOutcome;
29
+ filesTouched: string[];
30
+ testsAdded: number;
31
+ note: string;
32
+ blocked: ImplementerBlocked | null;
33
+ }
34
+ export interface ImplementerInvocation {
35
+ /** The item this round is implementing; a result for any other item is not a result. */
36
+ itemId: string;
37
+ /** The prompt. It goes to the agent's stdin, never onto a command line. */
38
+ prompt: string;
39
+ timeoutMs: number;
40
+ }
41
+ /**
42
+ * WHAT A ROUND CAN BE TOLD ABOUT A TURN.
43
+ *
44
+ * Unchanged, and that is load-bearing. The round protocol understands work that
45
+ * happened and work that did not, and a request for human authority is neither
46
+ * — so it is not in this union, and `RoundRunner` cannot come to have an
47
+ * opinion about one. The composition root reads the wider {@link ImplementerTurn}
48
+ * and decides; the runner is handed one of these two either way.
49
+ */
50
+ export type ImplementerRunResult = {
51
+ kind: 'result';
52
+ result: ImplementerResult;
53
+ transcript: string;
54
+ ms: number;
55
+ exitOk: boolean;
56
+ timedOut: boolean;
57
+ } | {
58
+ kind: 'abandoned';
59
+ reason: string;
60
+ transcript: string;
61
+ ms: number;
62
+ exitOk: boolean;
63
+ timedOut: boolean;
64
+ };
65
+ /**
66
+ * The turn asked for something only a person may authorise.
67
+ *
68
+ * Carries the model's DECLARATION and not a built request: this file has no
69
+ * project, no actor and no pursuit, and inventing a context here so the shape
70
+ * looked finished is exactly the mistake the whole design is arranged against.
71
+ * Building it belongs where the trusted values live.
72
+ */
73
+ export interface ImplementerPendingAction {
74
+ kind: 'pending-action';
75
+ declaration: PendingActionDeclaration;
76
+ transcript: string;
77
+ ms: number;
78
+ exitOk: boolean;
79
+ timedOut: boolean;
80
+ }
81
+ /**
82
+ * Everything one model turn can produce.
83
+ *
84
+ * Wider than what a round consumes, on purpose. Narrowing happens once, in the
85
+ * composition root, which is the only place that knows what a pending action
86
+ * means — and the only place with the authority to say so.
87
+ */
88
+ export type ImplementerTurn = ImplementerRunResult | ImplementerPendingAction;
89
+ export declare function runImplementer(invoke: AgentInvoke, inv: ImplementerInvocation): Promise<ImplementerTurn>;
90
+ /**
91
+ * The FIRST declaration in the transcript, not the last.
92
+ *
93
+ * The opposite of `extractImplementerResult`, and for the opposite reason. A
94
+ * result is an answer, so the newest one is the intended one. A request for
95
+ * authority is a BOUNDARY: the turn should have ended at the first, so the
96
+ * first is the only one that can honestly be said to have arisen. Taking the
97
+ * last would let a model that asked for two consequential actions choose which
98
+ * one the person gets shown.
99
+ *
100
+ * `jsonCandidates` sorts newest-first for the result parser's sake, so this
101
+ * walks it backwards rather than scanning the transcript a second way.
102
+ */
103
+ export declare function extractPendingAction(transcript: string): ReadDeclaration;
104
+ export type ExtractResult = {
105
+ ok: true;
106
+ result: ImplementerResult;
107
+ } | {
108
+ ok: false;
109
+ reason: string;
110
+ };
111
+ /**
112
+ * Find the implementer result in a transcript: the last JSON candidate (a fenced
113
+ * ```json block or a whole line of JSON) that validates against the §2.2 shape
114
+ * for this item. Scanning from the end and requiring full validation means an
115
+ * echo of the example result in the prompt, or tool output that happens to be
116
+ * JSON, can never be mistaken for the agent's answer.
117
+ */
118
+ export declare function extractImplementerResult(transcript: string, expectedItemId: string): ExtractResult;
119
+ export interface Candidate {
120
+ at: number;
121
+ value: Record<string, unknown>;
122
+ }
123
+ /**
124
+ * Shared by the prover's verdict parser (prover.ts): both transcripts embed an
125
+ * example of the expected JSON in their prompt, so both must scan from the end
126
+ * and require full validation — one scan implementation keeps the two parsers
127
+ * from drifting apart in what they consider a candidate.
128
+ */
129
+ export declare function jsonCandidates(transcript: string): Candidate[];
130
+ //# sourceMappingURL=agent-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-driver.d.ts","sourceRoot":"","sources":["../src/agent-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAErE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+EAA+E;AAC/E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,kBAAkB,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,wFAAwF;IACxF,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEN;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,wBAAwB,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,wBAAwB,CAAC;AAE9E,wBAAsB,cAAc,CAClC,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,qBAAqB,GACzB,OAAO,CAAC,eAAe,CAAC,CA4B1B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAOxE;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GACvC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,aAAa,CAUlG;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,CAoB9D"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runImplementer = runImplementer;
4
+ exports.extractPendingAction = extractPendingAction;
5
+ exports.extractImplementerResult = extractImplementerResult;
6
+ exports.jsonCandidates = jsonCandidates;
7
+ const pending_action_1 = require("./pending-action");
8
+ async function runImplementer(invoke, inv) {
9
+ const r = await invoke(inv.prompt, inv.timeoutMs);
10
+ const transcript = r.output ?? '';
11
+ const base = { transcript, ms: r.ms, exitOk: r.ok, timedOut: r.timedOut };
12
+ // BEFORE the result, and it is not a preference. A turn that asked for
13
+ // authority and also filed a result has done the second thing on the far side
14
+ // of a line it should have stopped at; gating and committing that work would
15
+ // be carrying on past the request instead of stopping at it.
16
+ const pending = extractPendingAction(transcript);
17
+ if (pending.kind === 'declared') {
18
+ return { kind: 'pending-action', declaration: pending.declaration, ...base };
19
+ }
20
+ if (pending.kind === 'malformed') {
21
+ // Never the ordinary path. Something asked for a consequential act in a
22
+ // shape nobody can identify, and reading past it to whatever else the
23
+ // transcript holds would be answering a different question than the one
24
+ // that was asked.
25
+ return { kind: 'abandoned', reason: `a pending action was declared and could not be read: ${pending.because}`, ...base };
26
+ }
27
+ const extracted = extractImplementerResult(transcript, inv.itemId);
28
+ if (extracted.ok)
29
+ return { kind: 'result', result: extracted.result, ...base };
30
+ const reason = r.timedOut
31
+ ? `${extracted.reason}; the agent hit its ${inv.timeoutMs}ms timeout and was killed`
32
+ : extracted.reason;
33
+ return { kind: 'abandoned', reason, ...base };
34
+ }
35
+ /**
36
+ * The FIRST declaration in the transcript, not the last.
37
+ *
38
+ * The opposite of `extractImplementerResult`, and for the opposite reason. A
39
+ * result is an answer, so the newest one is the intended one. A request for
40
+ * authority is a BOUNDARY: the turn should have ended at the first, so the
41
+ * first is the only one that can honestly be said to have arisen. Taking the
42
+ * last would let a model that asked for two consequential actions choose which
43
+ * one the person gets shown.
44
+ *
45
+ * `jsonCandidates` sorts newest-first for the result parser's sake, so this
46
+ * walks it backwards rather than scanning the transcript a second way.
47
+ */
48
+ function extractPendingAction(transcript) {
49
+ const candidates = jsonCandidates(transcript);
50
+ for (let i = candidates.length - 1; i >= 0; i -= 1) {
51
+ const read = (0, pending_action_1.readPendingActionDeclaration)(candidates[i].value);
52
+ if (read.kind !== 'none')
53
+ return read;
54
+ }
55
+ return { kind: 'none' };
56
+ }
57
+ /**
58
+ * Find the implementer result in a transcript: the last JSON candidate (a fenced
59
+ * ```json block or a whole line of JSON) that validates against the §2.2 shape
60
+ * for this item. Scanning from the end and requiring full validation means an
61
+ * echo of the example result in the prompt, or tool output that happens to be
62
+ * JSON, can never be mistaken for the agent's answer.
63
+ */
64
+ function extractImplementerResult(transcript, expectedItemId) {
65
+ let why;
66
+ for (const candidate of jsonCandidates(transcript)) {
67
+ const v = validate(candidate.value, expectedItemId);
68
+ if (v.ok)
69
+ return v;
70
+ // Keep the failure closest to the end: that candidate is the most likely to
71
+ // be the intended result, so its error is the one worth reporting.
72
+ if (why === undefined)
73
+ why = `the last result-shaped JSON is not a valid implementer result: ${v.why}`;
74
+ }
75
+ return { ok: false, reason: why ?? 'no structured implementer result in the transcript' };
76
+ }
77
+ /**
78
+ * Shared by the prover's verdict parser (prover.ts): both transcripts embed an
79
+ * example of the expected JSON in their prompt, so both must scan from the end
80
+ * and require full validation — one scan implementation keeps the two parsers
81
+ * from drifting apart in what they consider a candidate.
82
+ */
83
+ function jsonCandidates(transcript) {
84
+ const out = [];
85
+ const fence = /```(?:json)?[ \t]*\n([\s\S]*?)```/g;
86
+ for (let m = fence.exec(transcript); m !== null; m = fence.exec(transcript)) {
87
+ const parsed = tryParseObject(m[1] ?? '');
88
+ if (parsed)
89
+ out.push({ at: m.index, value: parsed });
90
+ }
91
+ let offset = 0;
92
+ for (const line of transcript.split('\n')) {
93
+ const trimmed = line.trim();
94
+ if (trimmed.startsWith('{')) {
95
+ const parsed = tryParseObject(trimmed);
96
+ if (parsed)
97
+ out.push({ at: offset, value: parsed });
98
+ }
99
+ offset += line.length + 1;
100
+ }
101
+ return out.sort((a, b) => b.at - a.at);
102
+ }
103
+ function tryParseObject(text) {
104
+ try {
105
+ const v = JSON.parse(text);
106
+ if (typeof v === 'object' && v !== null && !Array.isArray(v))
107
+ return v;
108
+ return null;
109
+ }
110
+ catch {
111
+ return null;
112
+ }
113
+ }
114
+ const OUTCOMES = ['implemented', 'no-op', 'blocked'];
115
+ function validate(v, expectedItemId) {
116
+ const itemId = v['itemId'];
117
+ if (typeof itemId !== 'string' || !itemId)
118
+ return { ok: false, why: 'itemId must be a non-empty string' };
119
+ if (itemId !== expectedItemId) {
120
+ return {
121
+ ok: false,
122
+ why: `the result is for item ${JSON.stringify(itemId)}, not ${JSON.stringify(expectedItemId)}`,
123
+ };
124
+ }
125
+ const outcome = v['outcome'];
126
+ if (typeof outcome !== 'string' || !OUTCOMES.includes(outcome)) {
127
+ return { ok: false, why: `outcome must be one of ${OUTCOMES.join(' | ')}` };
128
+ }
129
+ const filesTouched = v['filesTouched'];
130
+ if (!Array.isArray(filesTouched) || filesTouched.some((p) => typeof p !== 'string')) {
131
+ return { ok: false, why: 'filesTouched must be a list of strings' };
132
+ }
133
+ const testsAdded = v['testsAdded'];
134
+ if (typeof testsAdded !== 'number' || !Number.isInteger(testsAdded) || testsAdded < 0) {
135
+ return { ok: false, why: 'testsAdded must be a non-negative integer' };
136
+ }
137
+ const note = v['note'];
138
+ if (typeof note !== 'string')
139
+ return { ok: false, why: 'note must be a string' };
140
+ const blocked = parseBlocked(v['blocked']);
141
+ if (blocked === undefined)
142
+ return { ok: false, why: 'blocked must be null or { path, reason }' };
143
+ if ((outcome === 'blocked') !== (blocked !== null)) {
144
+ return { ok: false, why: 'a blocked outcome and blocked details must appear together' };
145
+ }
146
+ return {
147
+ ok: true,
148
+ result: {
149
+ itemId,
150
+ outcome: outcome,
151
+ filesTouched: filesTouched,
152
+ testsAdded,
153
+ note,
154
+ blocked,
155
+ },
156
+ };
157
+ }
158
+ function parseBlocked(v) {
159
+ if (v === null)
160
+ return null;
161
+ if (typeof v !== 'object' || Array.isArray(v))
162
+ return undefined;
163
+ const o = v;
164
+ const path = o['path'];
165
+ const reason = o['reason'];
166
+ if (typeof path !== 'string' || !path || typeof reason !== 'string' || !reason)
167
+ return undefined;
168
+ return { path, reason };
169
+ }
170
+ //# sourceMappingURL=agent-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-driver.js","sourceRoot":"","sources":["../src/agent-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import type { AgentInvoke } from './agent-exec';
2
+ import type { CommandResult, InvocationCost } from './gate';
3
+ /**
4
+ * Reading `claude -p --output-format json`.
5
+ *
6
+ * The envelope was read off the installed CLI rather than guessed. A success is
7
+ *
8
+ * {"type":"result","subtype":"success","is_error":false,"duration_ms":0,
9
+ * "duration_api_ms":0,"num_turns":0,"result":"…the final message…",
10
+ * "stop_reason":null,"total_cost_usd":0,"usage":{…},"modelUsage":{},
11
+ * "permission_denials":[],"session_id":"…","uuid":"…"}
12
+ *
13
+ * and a failure replaces `result` with `errors: string[]` under one of
14
+ * `subtype: "error_during_execution" | "error_max_turns"`.
15
+ *
16
+ * Two things this buys that scraping `--output-format text` cannot:
17
+ *
18
+ * 1. **A delimited answer.** The command runner merges stdout and stderr (one
19
+ * stream, so a missing tool reads differently from a failing test), so a
20
+ * single warning line from the agent's own startup lands in the middle of
21
+ * what we then try to `JSON.parse` as one document. The envelope's `result`
22
+ * is the final message and nothing else.
23
+ * 2. **A verdict that is not the exit code.** A run truncated at its turn limit
24
+ * can still exit zero; `is_error` is the only thing that says so. Reading a
25
+ * truncation as a completed answer is how a lens reports "nothing found" for
26
+ * a pass that never finished looking.
27
+ */
28
+ export interface AgentEnvelope {
29
+ /** `is_error` — the run produced an answer rather than a failure report. */
30
+ ok: boolean;
31
+ /** The final message: `result` when there is one, the errors otherwise. */
32
+ text: string;
33
+ /** `success`, `error_during_execution`, `error_max_turns`, … — a label, not the verdict. */
34
+ subtype: string;
35
+ errors: string[];
36
+ /**
37
+ * F35: `api_error_status` — the HTTP status of the API error whose text is in `result`, when
38
+ * there was one. Written by the CLI, never by the model: 429 is the provider's usage limit.
39
+ * Absent when the envelope does not carry a number there.
40
+ */
41
+ apiErrorStatus?: number;
42
+ /**
43
+ * WHAT THIS TURN COST, WHICH WAS BEING PARSED AWAY.
44
+ *
45
+ * 🔴 `total_cost_usd`, `usage`, `session_id` AND `num_turns` ARRIVE IN EVERY
46
+ * ENVELOPE AND WERE DISCARDED. So the machine could spend all night and
47
+ * nothing on it could say how much — and a budget over numbers nobody counts
48
+ * is theatre, which is why the envelope has to be read before an envelope
49
+ * ceiling can mean anything.
50
+ *
51
+ * ⚠️ EVERY FIELD IS OPTIONAL, and absent means "this provider did not say",
52
+ * never zero. A configured provider emits none of these, and recording a
53
+ * missing cost as $0 would make an unmeasured night look like a free one —
54
+ * exactly the direction a ceiling must never fail in.
55
+ */
56
+ cost?: InvocationCost;
57
+ }
58
+ /**
59
+ * Pull the envelope out of a captured stream, or null when there is not one.
60
+ *
61
+ * Null is a normal answer, not a fault: an older CLI, `--output-format text`,
62
+ * and a pass killed before it could write its last line all produce output with
63
+ * no envelope in it, and every one of them must fall through to the raw stream
64
+ * rather than be reported as an agent failure.
65
+ */
66
+ export declare function parseAgentEnvelope(output: string): AgentEnvelope | null;
67
+ /**
68
+ * Turn a raw invocation into one whose `output` is the agent's answer.
69
+ *
70
+ * Composes with the exit code rather than replacing it: a non-zero exit stays a
71
+ * failure whatever the envelope claims, because the process falling over after
72
+ * writing its result is still a run that fell over.
73
+ */
74
+ export declare function unwrapEnvelope(r: CommandResult): CommandResult;
75
+ /**
76
+ * An invoke whose callers see the model's final message, not the envelope.
77
+ *
78
+ * 🔴 THE ROUND RAN ON `--output-format text` AND SO RECORDED NO USAGE. Every
79
+ * invocation was written to the spend ledger with `usd` absent — honest, but
80
+ * it meant the most expensive path in the system could never report what it
81
+ * cost, and the previous trial's report had to say "no actual usage captured".
82
+ * The JSON path carries `total_cost_usd`, `num_turns`, `usage` and
83
+ * `session_id`; the transport records them at the invocation, and this strips
84
+ * the envelope on the way to the round so `extractImplementerResult` and the
85
+ * verifier's verdict parser read the same final message they always did.
86
+ *
87
+ * ⚠️ THE TWO ARE KEPT APART BY CONSTRUCTION. The transport's `record()` reads
88
+ * the metadata off the envelope BEFORE this runs; what comes out of here is the
89
+ * result text and the parsed cost, and nothing parses the model's prose for a
90
+ * dollar figure. A model that writes "this cost $0.00" in its answer has said
91
+ * something, not recorded anything.
92
+ */
93
+ export declare function unwrapping(invoke: AgentInvoke): AgentInvoke;
94
+ //# sourceMappingURL=agent-envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-envelope.d.ts","sourceRoot":"","sources":["../src/agent-envelope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,EAAE,EAAE,OAAO,CAAC;IACZ,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAmCvE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,GAAG,aAAa,CAoB9D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAE3D"}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseAgentEnvelope = parseAgentEnvelope;
4
+ exports.unwrapEnvelope = unwrapEnvelope;
5
+ exports.unwrapping = unwrapping;
6
+ /**
7
+ * Pull the envelope out of a captured stream, or null when there is not one.
8
+ *
9
+ * Null is a normal answer, not a fault: an older CLI, `--output-format text`,
10
+ * and a pass killed before it could write its last line all produce output with
11
+ * no envelope in it, and every one of them must fall through to the raw stream
12
+ * rather than be reported as an agent failure.
13
+ */
14
+ function parseAgentEnvelope(output) {
15
+ // From the end: the envelope is the last thing written, and anything earlier
16
+ // that happens to be JSON — a tool log, the findings object the lens prompt
17
+ // asked for — is not it.
18
+ for (const start of objectStarts(output).reverse()) {
19
+ const slice = balanced(output, start);
20
+ if (slice === null)
21
+ continue;
22
+ let parsed;
23
+ try {
24
+ parsed = JSON.parse(slice);
25
+ }
26
+ catch {
27
+ continue;
28
+ }
29
+ if (typeof parsed !== 'object' || parsed === null)
30
+ continue;
31
+ const o = parsed;
32
+ if (o['type'] !== 'result')
33
+ continue;
34
+ const errors = Array.isArray(o['errors'])
35
+ ? o['errors'].filter((e) => typeof e === 'string')
36
+ : [];
37
+ const result = typeof o['result'] === 'string' ? o['result'] : '';
38
+ return {
39
+ // `is_error`, not the subtype. The CLI emits `subtype:"success"` with
40
+ // `is_error:true` when an API error's text is what landed in `result`, so
41
+ // the subtype names the reason and this field carries the verdict.
42
+ ok: o['is_error'] !== true,
43
+ text: result || errors.join('\n'),
44
+ subtype: typeof o['subtype'] === 'string' ? o['subtype'] : '',
45
+ errors,
46
+ ...(typeof o['api_error_status'] === 'number' ? { apiErrorStatus: o['api_error_status'] } : {}),
47
+ ...(costOf(o) === null ? {} : { cost: costOf(o) }),
48
+ };
49
+ }
50
+ return null;
51
+ }
52
+ /**
53
+ * Turn a raw invocation into one whose `output` is the agent's answer.
54
+ *
55
+ * Composes with the exit code rather than replacing it: a non-zero exit stays a
56
+ * failure whatever the envelope claims, because the process falling over after
57
+ * writing its result is still a run that fell over.
58
+ */
59
+ function unwrapEnvelope(r) {
60
+ const env = parseAgentEnvelope(r.output ?? '');
61
+ if (!env)
62
+ return r;
63
+ return {
64
+ ...r,
65
+ ok: r.ok && env.ok,
66
+ // An envelope with nothing in it — no result, no errors — keeps the raw
67
+ // stream. That case is the one where the only diagnosis left is whatever
68
+ // the agent printed on its way to saying nothing.
69
+ output: env.text || r.output,
70
+ /**
71
+ * 🔴 AND THE COST SURVIVES THE UNWRAP. It did not: every production reader
72
+ * goes through this function, and this function built a fresh object with
73
+ * no room for it, so `total_cost_usd` was parsed once per invocation and
74
+ * thrown away three times. Spread rather than defaulted — an envelope that
75
+ * reported no cost must leave the field absent, because absent is what
76
+ * `withinEnvelope` refuses on and zero is what it would wave through.
77
+ */
78
+ ...(env.cost === undefined ? {} : { cost: env.cost }),
79
+ };
80
+ }
81
+ /**
82
+ * An invoke whose callers see the model's final message, not the envelope.
83
+ *
84
+ * 🔴 THE ROUND RAN ON `--output-format text` AND SO RECORDED NO USAGE. Every
85
+ * invocation was written to the spend ledger with `usd` absent — honest, but
86
+ * it meant the most expensive path in the system could never report what it
87
+ * cost, and the previous trial's report had to say "no actual usage captured".
88
+ * The JSON path carries `total_cost_usd`, `num_turns`, `usage` and
89
+ * `session_id`; the transport records them at the invocation, and this strips
90
+ * the envelope on the way to the round so `extractImplementerResult` and the
91
+ * verifier's verdict parser read the same final message they always did.
92
+ *
93
+ * ⚠️ THE TWO ARE KEPT APART BY CONSTRUCTION. The transport's `record()` reads
94
+ * the metadata off the envelope BEFORE this runs; what comes out of here is the
95
+ * result text and the parsed cost, and nothing parses the model's prose for a
96
+ * dollar figure. A model that writes "this cost $0.00" in its answer has said
97
+ * something, not recorded anything.
98
+ */
99
+ function unwrapping(invoke) {
100
+ return async (prompt, timeoutMs) => unwrapEnvelope(await invoke(prompt, timeoutMs));
101
+ }
102
+ /**
103
+ * 🔴 THE PARSE IS QUADRATIC, AND A MODEL CHOOSES ITS INPUT.
104
+ *
105
+ * `objectStarts` finds every `{` that opens a line and `balanced` scans
106
+ * forward from each one for a matching brace. When a brace NEVER closes —
107
+ * which is what model prose looks like — every candidate scans to the end of
108
+ * the whole stream, so the cost is O(starts x length).
109
+ *
110
+ * MEASURED against a stream of unclosed braces, on this machine:
111
+ *
112
+ * 0.25 MB (5,699 starts) 3,361 ms
113
+ * 0.50 MB (11,398 starts) 6,338 ms
114
+ * 1.00 MB (22,795 starts) 22,819 ms
115
+ * 2.00 MB (45,590 starts) 110,687 ms <- 110 SECONDS, one core, blocking
116
+ *
117
+ * Four times the work for twice the input, which is the signature. A 4 MB
118
+ * transcript is roughly seven minutes of a pegged core, and the transcript is
119
+ * written by the model.
120
+ *
121
+ * TWO BOUNDS, and both of them are also true statements about where an
122
+ * envelope actually is:
123
+ *
124
+ * TAIL The envelope is the LAST thing a provider writes. Nothing earlier
125
+ * in the stream can be it, so nothing earlier needs scanning.
126
+ * COUNT Only the last few line-opening braces can be the envelope. If
127
+ * hundreds of them follow it, the stream is not envelope-terminated
128
+ * and there is nothing here to find.
129
+ *
130
+ * ⚠️ NEITHER IS A HEURISTIC ABOUT CONTENT. They are bounds on WHERE to look,
131
+ * and the answer for a real envelope is unchanged: it is the first candidate
132
+ * from the end, on every provider this reads.
133
+ */
134
+ const ENVELOPE_TAIL_BYTES = 1_000_000;
135
+ const MAX_ENVELOPE_CANDIDATES = 40;
136
+ /** Offsets of the last few `{` that open a line, which is where an envelope starts. */
137
+ function objectStarts(text) {
138
+ const from = Math.max(0, text.length - ENVELOPE_TAIL_BYTES);
139
+ const out = [];
140
+ let offset = from;
141
+ for (const line of text.slice(from).split('\n')) {
142
+ const lead = line.length - line.trimStart().length;
143
+ if (line.trimStart().startsWith('{'))
144
+ out.push(offset + lead);
145
+ offset += line.length + 1;
146
+ }
147
+ // The tail of the list: `parseAgentEnvelope` reverses it and takes the last
148
+ // document first, so these are the candidates closest to the end.
149
+ return out.slice(-MAX_ENVELOPE_CANDIDATES);
150
+ }
151
+ /**
152
+ * The substring from `start` to its matching brace, or null when it never
153
+ * closes. String-aware: a `}` inside a quoted review — and the agent's final
154
+ * message is full of them — must not end the document early.
155
+ */
156
+ function balanced(text, start) {
157
+ let depth = 0;
158
+ let inString = false;
159
+ let escaped = false;
160
+ for (let i = start; i < text.length; i++) {
161
+ const c = text[i];
162
+ if (escaped) {
163
+ escaped = false;
164
+ continue;
165
+ }
166
+ if (inString) {
167
+ if (c === '\\')
168
+ escaped = true;
169
+ else if (c === '"')
170
+ inString = false;
171
+ continue;
172
+ }
173
+ if (c === '"')
174
+ inString = true;
175
+ else if (c === '{')
176
+ depth++;
177
+ else if (c === '}' && --depth === 0)
178
+ return text.slice(start, i + 1);
179
+ }
180
+ return null;
181
+ }
182
+ /**
183
+ * What the envelope says this turn cost, or null when it says nothing.
184
+ *
185
+ * ⚠️ NULL RATHER THAN ZEROES. A provider that reports no cost has not reported
186
+ * a cost of nothing, and an unmeasured night must never look like a free one —
187
+ * that is the one direction a ceiling can fail in without anybody noticing.
188
+ *
189
+ * ⚠️ AND EVERY FIELD IS CHECKED FOR ITS TYPE. These reach an envelope ceiling
190
+ * and a Decision Record; a string where a number belongs would propagate into
191
+ * arithmetic and produce a budget that silently stopped bounding anything.
192
+ */
193
+ function costOf(o) {
194
+ const num = (v) => typeof v === 'number' && Number.isFinite(v) && v >= 0 ? v : undefined;
195
+ const usage = o['usage'];
196
+ const u = usage !== null && typeof usage === 'object' ? usage : {};
197
+ const cost = {
198
+ ...(num(o['total_cost_usd']) === undefined ? {} : { usd: num(o['total_cost_usd']) }),
199
+ ...(num(o['num_turns']) === undefined ? {} : { turns: num(o['num_turns']) }),
200
+ ...(typeof o['session_id'] === 'string' && o['session_id'] !== ''
201
+ ? { sessionId: o['session_id'] }
202
+ : {}),
203
+ ...(num(u['input_tokens']) === undefined ? {} : { inputTokens: num(u['input_tokens']) }),
204
+ ...(num(u['output_tokens']) === undefined ? {} : { outputTokens: num(u['output_tokens']) }),
205
+ ...(num(u['cache_read_input_tokens']) === undefined
206
+ ? {}
207
+ : { cacheReadTokens: num(u['cache_read_input_tokens']) }),
208
+ ...(num(u['cache_creation_input_tokens']) === undefined
209
+ ? {}
210
+ : { cacheWriteTokens: num(u['cache_creation_input_tokens']) }),
211
+ };
212
+ return Object.keys(cost).length === 0 ? null : cost;
213
+ }
214
+ //# sourceMappingURL=agent-envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-envelope.js","sourceRoot":"","sources":["../src/agent-envelope.ts"],"names":[],"mappings":"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"}