@stigmer/runner 3.15.0 → 3.15.2-dev.20260913223433

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 (518) hide show
  1. package/README.md +2 -4
  2. package/dist/.build-fingerprint +1 -1
  3. package/dist/__test-utils__/execution-record-fixture.d.ts +14 -0
  4. package/dist/__test-utils__/execution-record-fixture.js +4 -0
  5. package/dist/__test-utils__/execution-record-fixture.js.map +1 -1
  6. package/dist/__test-utils__/file-review-projection.d.ts +40 -0
  7. package/dist/__test-utils__/file-review-projection.js +136 -0
  8. package/dist/__test-utils__/file-review-projection.js.map +1 -0
  9. package/dist/__test-utils__/harness-contract/types.d.ts +23 -1
  10. package/dist/__test-utils__/harness-contract/types.js +15 -0
  11. package/dist/__test-utils__/harness-contract/types.js.map +1 -1
  12. package/dist/__test-utils__/hermetic-activity.d.ts +44 -12
  13. package/dist/__test-utils__/hermetic-activity.js +52 -14
  14. package/dist/__test-utils__/hermetic-activity.js.map +1 -1
  15. package/dist/__test-utils__/model-registry-fixture.d.ts +32 -7
  16. package/dist/__test-utils__/model-registry-fixture.js +31 -7
  17. package/dist/__test-utils__/model-registry-fixture.js.map +1 -1
  18. package/dist/__test-utils__/turn-input-fixture.d.ts +1 -1
  19. package/dist/__test-utils__/turn-input-fixture.js +1 -1
  20. package/dist/__test-utils__/turn-input-fixture.js.map +1 -1
  21. package/dist/activities/call-agent.js +2 -2
  22. package/dist/activities/call-agent.js.map +1 -1
  23. package/dist/activities/execute-cursor/__test-utils__/contract-subject.js +45 -3
  24. package/dist/activities/execute-cursor/__test-utils__/contract-subject.js.map +1 -1
  25. package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.d.ts +0 -9
  26. package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js +2 -41
  27. package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js.map +1 -1
  28. package/dist/activities/execute-cursor/adapter.d.ts +7 -5
  29. package/dist/activities/execute-cursor/adapter.js +7 -5
  30. package/dist/activities/execute-cursor/adapter.js.map +1 -1
  31. package/dist/activities/execute-cursor/approval-policy.d.ts +5 -2
  32. package/dist/activities/execute-cursor/approval-policy.js +5 -2
  33. package/dist/activities/execute-cursor/approval-policy.js.map +1 -1
  34. package/dist/activities/execute-cursor/approval-state.d.ts +16 -8
  35. package/dist/activities/execute-cursor/approval-state.js +6 -3
  36. package/dist/activities/execute-cursor/approval-state.js.map +1 -1
  37. package/dist/activities/execute-cursor/cas-observations.d.ts +14 -2
  38. package/dist/activities/execute-cursor/cas-observations.js +19 -2
  39. package/dist/activities/execute-cursor/cas-observations.js.map +1 -1
  40. package/dist/activities/execute-cursor/cursor-capabilities.d.ts +8 -4
  41. package/dist/activities/execute-cursor/cursor-capabilities.js +21 -4
  42. package/dist/activities/execute-cursor/cursor-capabilities.js.map +1 -1
  43. package/dist/activities/execute-cursor/message-translator.d.ts +12 -20
  44. package/dist/activities/execute-cursor/message-translator.js +19 -32
  45. package/dist/activities/execute-cursor/message-translator.js.map +1 -1
  46. package/dist/activities/execute-cursor/prompt-builder.d.ts +48 -58
  47. package/dist/activities/execute-cursor/prompt-builder.js +76 -95
  48. package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
  49. package/dist/activities/execute-cursor/turn-boundary.d.ts +27 -55
  50. package/dist/activities/execute-cursor/turn-boundary.js +30 -90
  51. package/dist/activities/execute-cursor/turn-boundary.js.map +1 -1
  52. package/dist/activities/execute-cursor/turn-settle.d.ts +11 -7
  53. package/dist/activities/execute-cursor/turn-settle.js +37 -49
  54. package/dist/activities/execute-cursor/turn-settle.js.map +1 -1
  55. package/dist/activities/execute-cursor/turn-setup.d.ts +16 -24
  56. package/dist/activities/execute-cursor/turn-setup.js +29 -59
  57. package/dist/activities/execute-cursor/turn-setup.js.map +1 -1
  58. package/dist/activities/execute-cursor/turn-stream.d.ts +3 -8
  59. package/dist/activities/execute-cursor/turn-stream.js +9 -22
  60. package/dist/activities/execute-cursor/turn-stream.js.map +1 -1
  61. package/dist/activities/execute-cursor/turn.js +5 -1
  62. package/dist/activities/execute-cursor/turn.js.map +1 -1
  63. package/dist/activities/execute-deep-agent/__test-utils__/contract-subject.d.ts +93 -0
  64. package/dist/activities/execute-deep-agent/__test-utils__/contract-subject.js +348 -0
  65. package/dist/activities/execute-deep-agent/__test-utils__/contract-subject.js.map +1 -0
  66. package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.d.ts +170 -0
  67. package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.js +225 -0
  68. package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.js.map +1 -0
  69. package/dist/activities/execute-deep-agent/__test-utils__/hitl-script.d.ts +24 -0
  70. package/dist/activities/execute-deep-agent/__test-utils__/hitl-script.js +41 -0
  71. package/dist/activities/execute-deep-agent/__test-utils__/hitl-script.js.map +1 -0
  72. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.d.ts +54 -0
  73. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.js +72 -0
  74. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.js.map +1 -0
  75. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.d.ts +187 -23
  76. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js +238 -27
  77. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js.map +1 -1
  78. package/dist/activities/execute-deep-agent/adapter.d.ts +41 -0
  79. package/dist/activities/execute-deep-agent/adapter.js +78 -0
  80. package/dist/activities/execute-deep-agent/adapter.js.map +1 -0
  81. package/dist/activities/execute-deep-agent/cas-capture-observer.d.ts +8 -0
  82. package/dist/activities/execute-deep-agent/cas-capture-observer.js +9 -0
  83. package/dist/activities/execute-deep-agent/cas-capture-observer.js.map +1 -1
  84. package/dist/activities/execute-deep-agent/deep-agent-capabilities.d.ts +31 -0
  85. package/dist/activities/execute-deep-agent/deep-agent-capabilities.js +40 -0
  86. package/dist/activities/execute-deep-agent/deep-agent-capabilities.js.map +1 -0
  87. package/dist/activities/execute-deep-agent/execution-state.d.ts +4 -11
  88. package/dist/activities/execute-deep-agent/execution-state.js +4 -12
  89. package/dist/activities/execute-deep-agent/execution-state.js.map +1 -1
  90. package/dist/activities/execute-deep-agent/hitl.d.ts +49 -47
  91. package/dist/activities/execute-deep-agent/hitl.js +77 -103
  92. package/dist/activities/execute-deep-agent/hitl.js.map +1 -1
  93. package/dist/activities/execute-deep-agent/prompt-builder.d.ts +51 -23
  94. package/dist/activities/execute-deep-agent/prompt-builder.js +115 -76
  95. package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
  96. package/dist/activities/execute-deep-agent/status-builder-shared.d.ts +18 -32
  97. package/dist/activities/execute-deep-agent/status-builder-shared.js +10 -65
  98. package/dist/activities/execute-deep-agent/status-builder-shared.js.map +1 -1
  99. package/dist/activities/execute-deep-agent/streaming-side-effects.d.ts +10 -8
  100. package/dist/activities/execute-deep-agent/streaming-side-effects.js +12 -14
  101. package/dist/activities/execute-deep-agent/streaming-side-effects.js.map +1 -1
  102. package/dist/activities/execute-deep-agent/subagent-tracker.d.ts +36 -13
  103. package/dist/activities/execute-deep-agent/subagent-tracker.js +76 -39
  104. package/dist/activities/execute-deep-agent/subagent-tracker.js.map +1 -1
  105. package/dist/activities/execute-deep-agent/subagent-transformer.d.ts +25 -28
  106. package/dist/activities/execute-deep-agent/subagent-transformer.js +29 -82
  107. package/dist/activities/execute-deep-agent/subagent-transformer.js.map +1 -1
  108. package/dist/activities/execute-deep-agent/subagent-wiring.d.ts +3 -2
  109. package/dist/activities/execute-deep-agent/subagent-wiring.js +2 -2
  110. package/dist/activities/execute-deep-agent/subagent-wiring.js.map +1 -1
  111. package/dist/activities/execute-deep-agent/turn-settle.d.ts +42 -0
  112. package/dist/activities/execute-deep-agent/turn-settle.js +146 -0
  113. package/dist/activities/execute-deep-agent/turn-settle.js.map +1 -0
  114. package/dist/activities/execute-deep-agent/turn-setup.d.ts +212 -0
  115. package/dist/activities/execute-deep-agent/turn-setup.js +430 -0
  116. package/dist/activities/execute-deep-agent/turn-setup.js.map +1 -0
  117. package/dist/activities/execute-deep-agent/turn-stream.d.ts +97 -0
  118. package/dist/activities/execute-deep-agent/turn-stream.js +242 -0
  119. package/dist/activities/execute-deep-agent/turn-stream.js.map +1 -0
  120. package/dist/activities/execute-deep-agent/turn.d.ts +42 -0
  121. package/dist/activities/execute-deep-agent/turn.js +116 -0
  122. package/dist/activities/execute-deep-agent/turn.js.map +1 -0
  123. package/dist/activities/execute-deep-agent/v3-event-recorder.d.ts +6 -5
  124. package/dist/activities/execute-deep-agent/v3-event-recorder.js +6 -5
  125. package/dist/activities/execute-deep-agent/v3-event-recorder.js.map +1 -1
  126. package/dist/activities/execute-deep-agent/v3-events.d.ts +1 -1
  127. package/dist/activities/execute-deep-agent/v3-events.js +1 -1
  128. package/dist/activities/execute-deep-agent/v3-status-builder.d.ts +60 -17
  129. package/dist/activities/execute-deep-agent/v3-status-builder.js +72 -57
  130. package/dist/activities/execute-deep-agent/v3-status-builder.js.map +1 -1
  131. package/dist/harness/approval-decisions.d.ts +61 -0
  132. package/dist/harness/approval-decisions.js +102 -0
  133. package/dist/harness/approval-decisions.js.map +1 -0
  134. package/dist/harness/capabilities.d.ts +16 -5
  135. package/dist/harness/capabilities.js +9 -0
  136. package/dist/harness/capabilities.js.map +1 -1
  137. package/dist/harness/capture.d.ts +144 -0
  138. package/dist/harness/capture.js +219 -0
  139. package/dist/harness/capture.js.map +1 -0
  140. package/dist/harness/persist-chokepoint.d.ts +19 -4
  141. package/dist/harness/persist-chokepoint.js +17 -4
  142. package/dist/harness/persist-chokepoint.js.map +1 -1
  143. package/dist/harness/run-turn.js +115 -29
  144. package/dist/harness/run-turn.js.map +1 -1
  145. package/dist/harness/terminal-table.d.ts +40 -11
  146. package/dist/harness/terminal-table.js +58 -19
  147. package/dist/harness/terminal-table.js.map +1 -1
  148. package/dist/harness/turn-context.d.ts +141 -76
  149. package/dist/harness/turn-context.js +194 -99
  150. package/dist/harness/turn-context.js.map +1 -1
  151. package/dist/harness/types.d.ts +65 -12
  152. package/dist/harness/types.js +8 -2
  153. package/dist/harness/types.js.map +1 -1
  154. package/dist/harness-adapters.d.ts +12 -8
  155. package/dist/harness-adapters.js +17 -9
  156. package/dist/harness-adapters.js.map +1 -1
  157. package/dist/middleware/approval-gate.d.ts +1 -1
  158. package/dist/middleware/approval-gate.js +1 -1
  159. package/dist/middleware/approval-gate.js.map +1 -1
  160. package/dist/middleware/cost-advisory.d.ts +39 -0
  161. package/dist/middleware/{cost-cap.js → cost-advisory.js} +37 -55
  162. package/dist/middleware/cost-advisory.js.map +1 -0
  163. package/dist/middleware/index.d.ts +23 -12
  164. package/dist/middleware/index.js +26 -18
  165. package/dist/middleware/index.js.map +1 -1
  166. package/dist/middleware/types.d.ts +3 -2
  167. package/dist/runner-manager.js +1 -5
  168. package/dist/runner-manager.js.map +1 -1
  169. package/dist/runner.js +1 -5
  170. package/dist/runner.js.map +1 -1
  171. package/dist/shared/attachment-resolver.d.ts +41 -18
  172. package/dist/shared/attachment-resolver.js +178 -46
  173. package/dist/shared/attachment-resolver.js.map +1 -1
  174. package/dist/shared/attachment-zip.d.ts +85 -0
  175. package/dist/shared/attachment-zip.js +185 -0
  176. package/dist/shared/attachment-zip.js.map +1 -0
  177. package/dist/shared/connect-backfill.js +5 -4
  178. package/dist/shared/connect-backfill.js.map +1 -1
  179. package/dist/shared/cost-guard.d.ts +3 -3
  180. package/dist/shared/cost-guard.js +3 -3
  181. package/dist/shared/execution-status-writer.d.ts +5 -5
  182. package/dist/shared/execution-status-writer.js +5 -5
  183. package/dist/shared/extract-structured-output.d.ts +8 -7
  184. package/dist/shared/extract-structured-output.js +8 -7
  185. package/dist/shared/extract-structured-output.js.map +1 -1
  186. package/dist/shared/filereview/cas-progress.d.ts +1 -18
  187. package/dist/shared/filereview/cas-progress.js +4 -0
  188. package/dist/shared/filereview/cas-progress.js.map +1 -1
  189. package/dist/shared/filereview/cas-touched.d.ts +56 -0
  190. package/dist/shared/filereview/cas-touched.js +63 -0
  191. package/dist/shared/filereview/cas-touched.js.map +1 -0
  192. package/dist/shared/filereview/index.d.ts +2 -1
  193. package/dist/shared/filereview/index.js +2 -1
  194. package/dist/shared/filereview/index.js.map +1 -1
  195. package/dist/shared/mcp-resolver.d.ts +4 -5
  196. package/dist/shared/mcp-resolver.js +4 -5
  197. package/dist/shared/mcp-resolver.js.map +1 -1
  198. package/dist/shared/persist-decision.d.ts +3 -4
  199. package/dist/shared/persist-decision.js +3 -4
  200. package/dist/shared/persist-decision.js.map +1 -1
  201. package/dist/shared/plan-mode-permissions.d.ts +2 -2
  202. package/dist/shared/plan-mode-permissions.js +2 -2
  203. package/dist/shared/plan-mode-prompt.d.ts +1 -1
  204. package/dist/shared/plan-mode-prompt.js +1 -1
  205. package/dist/shared/prompt-sections.d.ts +163 -0
  206. package/dist/shared/prompt-sections.js +164 -0
  207. package/dist/shared/prompt-sections.js.map +1 -0
  208. package/dist/shared/skill-resolver.d.ts +4 -2
  209. package/dist/shared/skill-resolver.js +4 -2
  210. package/dist/shared/skill-resolver.js.map +1 -1
  211. package/dist/shared/tool-rounds.d.ts +32 -0
  212. package/dist/shared/tool-rounds.js +43 -0
  213. package/dist/shared/tool-rounds.js.map +1 -1
  214. package/dist/shared/tool-row.d.ts +34 -0
  215. package/dist/shared/tool-row.js +52 -0
  216. package/dist/shared/tool-row.js.map +1 -1
  217. package/dist/shared/workspace/session-provision.d.ts +3 -3
  218. package/dist/shared/workspace/session-provision.js +3 -3
  219. package/dist/shared/workspace/stigmer-link.d.ts +3 -3
  220. package/dist/shared/workspace/stigmer-link.js +3 -3
  221. package/dist/shared/workspace/writeback-coordinator.d.ts +15 -22
  222. package/dist/shared/workspace/writeback-coordinator.js +16 -53
  223. package/dist/shared/workspace/writeback-coordinator.js.map +1 -1
  224. package/dist/tools/index.d.ts +1 -1
  225. package/dist/tools/index.js +1 -1
  226. package/package.json +4 -4
  227. package/src/__test-utils__/__tests__/harness-contract-self-check.test.ts +1 -0
  228. package/src/__test-utils__/execution-record-fixture.ts +18 -2
  229. package/src/__test-utils__/file-review-projection.ts +156 -0
  230. package/src/__test-utils__/git-workspace-fixture.ts +58 -0
  231. package/src/__test-utils__/harness-boot-order-child.ts +7 -2
  232. package/src/__test-utils__/harness-contract/contract.ts +33 -20
  233. package/src/__test-utils__/harness-contract/recording-sink.ts +11 -1
  234. package/src/__test-utils__/harness-contract/runtime-contract.ts +328 -10
  235. package/src/__test-utils__/harness-contract/scripted-adapter.ts +38 -6
  236. package/src/__test-utils__/harness-contract/types.ts +27 -3
  237. package/src/__test-utils__/hermetic-activity.ts +52 -14
  238. package/src/__test-utils__/model-registry-fixture.ts +32 -7
  239. package/src/__test-utils__/module-specifiers.ts +24 -0
  240. package/src/__test-utils__/turn-input-fixture.ts +2 -2
  241. package/src/__tests__/harness-boot-order.test.ts +9 -2
  242. package/src/activities/call-agent.ts +2 -2
  243. package/src/activities/execute-cursor/__test-utils__/contract-subject.ts +47 -3
  244. package/src/activities/execute-cursor/__test-utils__/hermetic-cursor.ts +2 -48
  245. package/src/activities/execute-cursor/__tests__/approval-decisions-agree.test.ts +1 -1
  246. package/src/activities/execute-cursor/__tests__/approval-gate.test.ts +6 -1
  247. package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +52 -27
  248. package/src/activities/execute-cursor/__tests__/cas-observations.test.ts +25 -0
  249. package/src/activities/execute-cursor/__tests__/goldens/prompt.enhanced.everything.prompt.md +166 -0
  250. package/src/activities/execute-cursor/__tests__/goldens/prompt.enhanced.plan-mode.prompt.md +186 -0
  251. package/src/activities/execute-cursor/__tests__/goldens/prompt.hitl.recovery.prompt.md +191 -0
  252. package/src/activities/execute-cursor/__tests__/goldens/prompt.hitl.reinvocation.prompt.md +13 -0
  253. package/src/activities/execute-cursor/__tests__/goldens/prompt.resumed.prefixed.prompt.md +32 -0
  254. package/src/activities/execute-cursor/__tests__/goldens/prompt.resumed.raw.prompt.md +1 -0
  255. package/src/activities/execute-cursor/__tests__/hermetic/file-review-capture.test.ts +1 -2
  256. package/src/activities/execute-cursor/__tests__/hermetic/goldens/sdk-error-at-create.status.json +4 -0
  257. package/src/activities/execute-cursor/__tests__/hermetic/harness-contract.test.ts +24 -4
  258. package/src/activities/execute-cursor/__tests__/hermetic/stream-self-stop-arms.test.ts +6 -5
  259. package/src/activities/execute-cursor/__tests__/hermetic/thrown-error-arms.test.ts +9 -0
  260. package/src/activities/execute-cursor/__tests__/hitl-resume-history.test.ts +11 -8
  261. package/src/activities/execute-cursor/__tests__/prompt-goldens.test.ts +229 -0
  262. package/src/activities/execute-cursor/__tests__/same-identity-reproposal.test.ts +3 -3
  263. package/src/activities/execute-cursor/__tests__/sequential-gate-resume.test.ts +2 -2
  264. package/src/activities/execute-cursor/__tests__/turn-boundary.test.ts +78 -234
  265. package/src/activities/execute-cursor/__tests__/turn-stream.test.ts +1 -26
  266. package/src/activities/execute-cursor/adapter.ts +7 -5
  267. package/src/activities/execute-cursor/approval-policy.ts +5 -2
  268. package/src/activities/execute-cursor/approval-state.ts +16 -8
  269. package/src/activities/execute-cursor/cas-observations.ts +20 -2
  270. package/src/activities/execute-cursor/cursor-capabilities.ts +24 -5
  271. package/src/activities/execute-cursor/message-translator.ts +29 -41
  272. package/src/activities/execute-cursor/prompt-builder.ts +99 -157
  273. package/src/activities/execute-cursor/turn-boundary.ts +34 -140
  274. package/src/activities/execute-cursor/turn-settle.ts +37 -51
  275. package/src/activities/execute-cursor/turn-setup.ts +30 -70
  276. package/src/activities/execute-cursor/turn-stream.ts +8 -31
  277. package/src/activities/execute-cursor/turn.ts +5 -1
  278. package/src/activities/execute-deep-agent/__test-utils__/contract-subject.ts +391 -0
  279. package/src/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.ts +313 -0
  280. package/src/activities/execute-deep-agent/__test-utils__/hitl-script.ts +48 -0
  281. package/src/activities/execute-deep-agent/__test-utils__/scripted-model-module.ts +85 -0
  282. package/src/activities/execute-deep-agent/__test-utils__/scripted-model.ts +383 -36
  283. package/src/activities/execute-deep-agent/__tests__/adapter-graph-is-sdk-free.test.ts +76 -0
  284. package/src/activities/execute-deep-agent/__tests__/adapter-is-temporal-free.test.ts +47 -0
  285. package/src/activities/execute-deep-agent/__tests__/adapter.test.ts +80 -0
  286. package/src/activities/execute-deep-agent/__tests__/cas-capture-backend.test.ts +1 -1
  287. package/src/activities/execute-deep-agent/__tests__/execution-state-extended.test.ts +0 -2
  288. package/src/activities/execute-deep-agent/__tests__/execution-state.test.ts +0 -3
  289. package/src/activities/execute-deep-agent/__tests__/goldens/system-prompt.build-from-plan.prompt.md +172 -0
  290. package/src/activities/execute-deep-agent/__tests__/goldens/system-prompt.everything.prompt.md +167 -0
  291. package/src/activities/execute-deep-agent/__tests__/goldens/system-prompt.minimal.prompt.md +36 -0
  292. package/src/activities/execute-deep-agent/__tests__/goldens/system-prompt.plan-mode.prompt.md +178 -0
  293. package/src/activities/execute-deep-agent/__tests__/goldens/system-prompt.skills-below-threshold.prompt.md +158 -0
  294. package/src/activities/execute-deep-agent/__tests__/hermetic/file-review-capture.test.ts +210 -0
  295. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve-all-lease.turn1.status.json +74 -0
  296. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve-all-lease.turn2.status.json +104 -0
  297. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve.turn2.status.json +78 -0
  298. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/file-review-capture.status.json +138 -0
  299. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/gate.turn1.status.json +68 -0
  300. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/inline-artifact.turn1.status.json +154 -0
  301. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/inline-artifact.turn2.status.json +116 -0
  302. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.after-tool.status.json +69 -0
  303. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.mid-tool.status.json +67 -0
  304. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/plain-turn.status.json +47 -0
  305. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/platform-stop.status.json +68 -0
  306. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/recursion-limit.persisted.status.json +280 -0
  307. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/reject.turn2.status.json +77 -0
  308. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/resolution-error.status.json +18 -0
  309. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sequential-gates.turn2.status.json +99 -0
  310. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sequential-gates.turn3.status.json +109 -0
  311. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/skip.turn2.status.json +76 -0
  312. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/structured-output.text-fallback.status.json +51 -0
  313. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/structured-output.tier2.status.json +51 -0
  314. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/structured-output.tool-strategy.status.json +56 -0
  315. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sub-agent-delegation.status.json +90 -0
  316. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/tool-call.status.json +70 -0
  317. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/worker-shutdown.status.json +71 -0
  318. package/src/activities/execute-deep-agent/__tests__/hermetic/harness-contract.test.ts +144 -0
  319. package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-approve-all-lease.test.ts +184 -0
  320. package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-round-trips.test.ts +203 -0
  321. package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-sequential-gates.test.ts +170 -0
  322. package/src/activities/execute-deep-agent/__tests__/hermetic/inline-artifact-across-gate.test.ts +175 -0
  323. package/src/activities/execute-deep-agent/__tests__/hermetic/pause-vs-shutdown.test.ts +206 -0
  324. package/src/activities/execute-deep-agent/__tests__/hermetic/plain-turn.test.ts +142 -0
  325. package/src/activities/execute-deep-agent/__tests__/hermetic/platform-stop.test.ts +126 -0
  326. package/src/activities/execute-deep-agent/__tests__/hermetic/recursion-limit.test.ts +139 -0
  327. package/src/activities/execute-deep-agent/__tests__/hermetic/resolution-error.test.ts +122 -0
  328. package/src/activities/execute-deep-agent/__tests__/hermetic/structured-output.test.ts +236 -0
  329. package/src/activities/execute-deep-agent/__tests__/hermetic/sub-agent-delegation.test.ts +161 -0
  330. package/src/activities/execute-deep-agent/__tests__/hermetic/tool-call.test.ts +157 -0
  331. package/src/activities/execute-deep-agent/__tests__/hermetic/workspace-lock-timeout.test.ts +152 -0
  332. package/src/activities/execute-deep-agent/__tests__/hitl.test.ts +50 -122
  333. package/src/activities/execute-deep-agent/__tests__/inline-publisher.test.ts +8 -6
  334. package/src/activities/execute-deep-agent/__tests__/plan-mode-path-normalization.test.ts +2 -2
  335. package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +35 -35
  336. package/src/activities/execute-deep-agent/__tests__/prompt-goldens.test.ts +247 -0
  337. package/src/activities/execute-deep-agent/__tests__/scripted-model.test.ts +329 -0
  338. package/src/activities/execute-deep-agent/__tests__/status-builder-shared.test.ts +1 -20
  339. package/src/activities/execute-deep-agent/__tests__/streaming-side-effects.test.ts +78 -0
  340. package/src/activities/execute-deep-agent/__tests__/subagent-gitignored-capture.test.ts +1 -1
  341. package/src/activities/execute-deep-agent/__tests__/subagent-plan-mode-permissions.test.ts +2 -2
  342. package/src/activities/execute-deep-agent/__tests__/subagent-tracker.test.ts +57 -31
  343. package/src/activities/execute-deep-agent/__tests__/subagent-transformer.test.ts +19 -79
  344. package/src/activities/execute-deep-agent/__tests__/subagent-wiring.test.ts +15 -15
  345. package/src/activities/execute-deep-agent/__tests__/summarization-verification.test.ts +1 -1
  346. package/src/activities/execute-deep-agent/__tests__/turn-stream.test.ts +391 -0
  347. package/src/activities/execute-deep-agent/__tests__/v3-status-builder.test.ts +343 -38
  348. package/src/activities/execute-deep-agent/__tests__/vision-input.test.ts +5 -5
  349. package/src/activities/execute-deep-agent/adapter.ts +94 -0
  350. package/src/activities/execute-deep-agent/cas-capture-observer.ts +11 -0
  351. package/src/activities/execute-deep-agent/deep-agent-capabilities.ts +43 -0
  352. package/src/activities/execute-deep-agent/execution-state.ts +4 -13
  353. package/src/activities/execute-deep-agent/hitl.ts +100 -123
  354. package/src/activities/execute-deep-agent/prompt-builder.ts +141 -115
  355. package/src/activities/execute-deep-agent/status-builder-shared.ts +21 -84
  356. package/src/activities/execute-deep-agent/streaming-side-effects.ts +13 -19
  357. package/src/activities/execute-deep-agent/subagent-tracker.ts +77 -42
  358. package/src/activities/execute-deep-agent/subagent-transformer.ts +46 -105
  359. package/src/activities/execute-deep-agent/subagent-wiring.ts +5 -4
  360. package/src/activities/execute-deep-agent/turn-settle.ts +164 -0
  361. package/src/activities/execute-deep-agent/turn-setup.ts +541 -0
  362. package/src/activities/execute-deep-agent/turn-stream.ts +313 -0
  363. package/src/activities/execute-deep-agent/turn.ts +131 -0
  364. package/src/activities/execute-deep-agent/v3-event-recorder.ts +6 -5
  365. package/src/activities/execute-deep-agent/v3-events.ts +1 -1
  366. package/src/activities/execute-deep-agent/v3-status-builder.ts +84 -63
  367. package/src/harness/__tests__/approval-decisions.test.ts +116 -0
  368. package/src/harness/__tests__/capture.test.ts +268 -0
  369. package/src/harness/__tests__/mount-skills.test.ts +169 -0
  370. package/src/harness/__tests__/persist-chokepoint.test.ts +38 -2
  371. package/src/harness/__tests__/run-turn-deterministic.test.ts +94 -0
  372. package/src/harness/__tests__/run-turn.test.ts +39 -23
  373. package/src/harness/__tests__/turn-attachments-vision.test.ts +80 -0
  374. package/src/harness/__tests__/turn-context.test.ts +73 -26
  375. package/src/harness/approval-decisions.ts +104 -0
  376. package/src/harness/capabilities.ts +16 -5
  377. package/src/harness/capture.ts +301 -0
  378. package/src/harness/persist-chokepoint.ts +24 -4
  379. package/src/harness/run-turn.ts +120 -29
  380. package/src/harness/terminal-table.ts +61 -20
  381. package/src/harness/turn-context.ts +208 -111
  382. package/src/harness/types.ts +66 -12
  383. package/src/harness-adapters.ts +17 -9
  384. package/src/middleware/__tests__/approval-gate.test.ts +1 -1
  385. package/src/middleware/__tests__/cost-advisory.test.ts +113 -0
  386. package/src/middleware/approval-gate.ts +2 -2
  387. package/src/middleware/{cost-cap.ts → cost-advisory.ts} +40 -70
  388. package/src/middleware/index.ts +29 -29
  389. package/src/middleware/types.ts +3 -2
  390. package/src/runner-manager.ts +0 -8
  391. package/src/runner.ts +0 -8
  392. package/src/shared/__tests__/attachment-naming.test.ts +6 -19
  393. package/src/shared/__tests__/attachment-resolver.test.ts +158 -8
  394. package/src/shared/__tests__/attachment-zip.test.ts +236 -0
  395. package/src/shared/__tests__/bedrock-adapter.test.ts +1 -1
  396. package/src/shared/__tests__/blueprint-resolver.test.ts +43 -0
  397. package/src/shared/__tests__/cost-guard.test.ts +3 -3
  398. package/src/shared/__tests__/prompt-sections.test.ts +167 -0
  399. package/src/shared/__tests__/secret-leak-scan.test.ts +2 -2
  400. package/src/{activities/execute-deep-agent → shared}/__tests__/stamp-flowed-rows.test.ts +33 -10
  401. package/src/shared/__tests__/vertex-adapter.test.ts +1 -1
  402. package/src/shared/attachment-resolver.ts +218 -55
  403. package/src/shared/attachment-zip.ts +281 -0
  404. package/src/shared/connect-backfill.ts +9 -11
  405. package/src/shared/cost-guard.ts +3 -3
  406. package/src/shared/execution-status-writer.ts +5 -5
  407. package/src/shared/extract-structured-output.ts +8 -7
  408. package/src/shared/filereview/__tests__/capture.test.ts +86 -4
  409. package/src/shared/filereview/__tests__/cas-progress.test.ts +2 -1
  410. package/src/shared/filereview/cas-progress.ts +5 -19
  411. package/src/shared/filereview/cas-touched.ts +89 -0
  412. package/src/shared/filereview/index.ts +4 -2
  413. package/src/shared/mcp-resolver.ts +4 -5
  414. package/src/shared/persist-decision.ts +3 -4
  415. package/src/shared/plan-mode-permissions.ts +2 -2
  416. package/src/shared/plan-mode-prompt.ts +1 -1
  417. package/src/shared/prompt-sections.ts +256 -0
  418. package/src/shared/skill-resolver.ts +4 -2
  419. package/src/shared/tool-rounds.ts +48 -0
  420. package/src/shared/tool-row.ts +61 -0
  421. package/src/shared/workspace/__tests__/stigmer-link.test.ts +7 -22
  422. package/src/shared/workspace/__tests__/writeback-coordinator.test.ts +20 -61
  423. package/src/shared/workspace/session-provision.ts +3 -3
  424. package/src/shared/workspace/stigmer-link.ts +3 -3
  425. package/src/shared/workspace/writeback-coordinator.ts +16 -64
  426. package/src/tools/index.ts +1 -1
  427. package/dist/activities/execute-cursor/capture-flow.d.ts +0 -142
  428. package/dist/activities/execute-cursor/capture-flow.js +0 -285
  429. package/dist/activities/execute-cursor/capture-flow.js.map +0 -1
  430. package/dist/activities/execute-cursor/command-provenance.d.ts +0 -48
  431. package/dist/activities/execute-cursor/command-provenance.js +0 -38
  432. package/dist/activities/execute-cursor/command-provenance.js.map +0 -1
  433. package/dist/activities/execute-deep-agent/attachment-injector.d.ts +0 -134
  434. package/dist/activities/execute-deep-agent/attachment-injector.js +0 -386
  435. package/dist/activities/execute-deep-agent/attachment-injector.js.map +0 -1
  436. package/dist/activities/execute-deep-agent/command-provenance.d.ts +0 -61
  437. package/dist/activities/execute-deep-agent/command-provenance.js +0 -72
  438. package/dist/activities/execute-deep-agent/command-provenance.js.map +0 -1
  439. package/dist/activities/execute-deep-agent/environment.d.ts +0 -24
  440. package/dist/activities/execute-deep-agent/environment.js +0 -58
  441. package/dist/activities/execute-deep-agent/environment.js.map +0 -1
  442. package/dist/activities/execute-deep-agent/event-recorder.d.ts +0 -21
  443. package/dist/activities/execute-deep-agent/event-recorder.js +0 -67
  444. package/dist/activities/execute-deep-agent/event-recorder.js.map +0 -1
  445. package/dist/activities/execute-deep-agent/index.d.ts +0 -15
  446. package/dist/activities/execute-deep-agent/index.js +0 -918
  447. package/dist/activities/execute-deep-agent/index.js.map +0 -1
  448. package/dist/activities/execute-deep-agent/mcp-gate.d.ts +0 -28
  449. package/dist/activities/execute-deep-agent/mcp-gate.js +0 -22
  450. package/dist/activities/execute-deep-agent/mcp-gate.js.map +0 -1
  451. package/dist/activities/execute-deep-agent/post-stream.d.ts +0 -23
  452. package/dist/activities/execute-deep-agent/post-stream.js +0 -71
  453. package/dist/activities/execute-deep-agent/post-stream.js.map +0 -1
  454. package/dist/activities/execute-deep-agent/setup.d.ts +0 -136
  455. package/dist/activities/execute-deep-agent/setup.js +0 -767
  456. package/dist/activities/execute-deep-agent/setup.js.map +0 -1
  457. package/dist/activities/execute-deep-agent/stamp-flowed-rows.d.ts +0 -36
  458. package/dist/activities/execute-deep-agent/stamp-flowed-rows.js +0 -56
  459. package/dist/activities/execute-deep-agent/stamp-flowed-rows.js.map +0 -1
  460. package/dist/activities/execute-deep-agent/status-builder.d.ts +0 -93
  461. package/dist/activities/execute-deep-agent/status-builder.js +0 -365
  462. package/dist/activities/execute-deep-agent/status-builder.js.map +0 -1
  463. package/dist/activities/execute-deep-agent/streaming-terminal.d.ts +0 -21
  464. package/dist/activities/execute-deep-agent/streaming-terminal.js +0 -80
  465. package/dist/activities/execute-deep-agent/streaming-terminal.js.map +0 -1
  466. package/dist/activities/execute-deep-agent/streaming-v3.d.ts +0 -13
  467. package/dist/activities/execute-deep-agent/streaming-v3.js +0 -174
  468. package/dist/activities/execute-deep-agent/streaming-v3.js.map +0 -1
  469. package/dist/activities/execute-deep-agent/streaming.d.ts +0 -81
  470. package/dist/activities/execute-deep-agent/streaming.js +0 -160
  471. package/dist/activities/execute-deep-agent/streaming.js.map +0 -1
  472. package/dist/middleware/cost-cap.d.ts +0 -22
  473. package/dist/middleware/cost-cap.js.map +0 -1
  474. package/dist/middleware/graceful-stop.d.ts +0 -17
  475. package/dist/middleware/graceful-stop.js +0 -63
  476. package/dist/middleware/graceful-stop.js.map +0 -1
  477. package/dist/shared/skill-writer.d.ts +0 -75
  478. package/dist/shared/skill-writer.js +0 -207
  479. package/dist/shared/skill-writer.js.map +0 -1
  480. package/src/activities/execute-cursor/__tests__/capture-flow.test.ts +0 -1032
  481. package/src/activities/execute-cursor/__tests__/command-provenance.test.ts +0 -240
  482. package/src/activities/execute-cursor/__tests__/progress-substrate.test.ts +0 -169
  483. package/src/activities/execute-cursor/capture-flow.ts +0 -379
  484. package/src/activities/execute-cursor/command-provenance.ts +0 -73
  485. package/src/activities/execute-deep-agent/__tests__/attachment-injector.test.ts +0 -1161
  486. package/src/activities/execute-deep-agent/__tests__/command-provenance.test.ts +0 -252
  487. package/src/activities/execute-deep-agent/__tests__/environment.test.ts +0 -108
  488. package/src/activities/execute-deep-agent/__tests__/event-recorder.test.ts +0 -150
  489. package/src/activities/execute-deep-agent/__tests__/hitl-integration.test.ts +0 -226
  490. package/src/activities/execute-deep-agent/__tests__/hitl-reject.test.ts +0 -318
  491. package/src/activities/execute-deep-agent/__tests__/hitl-resume-approve-all.test.ts +0 -351
  492. package/src/activities/execute-deep-agent/__tests__/hitl-resume-history.test.ts +0 -293
  493. package/src/activities/execute-deep-agent/__tests__/index.test.ts +0 -99
  494. package/src/activities/execute-deep-agent/__tests__/mcp-gate.test.ts +0 -44
  495. package/src/activities/execute-deep-agent/__tests__/post-stream.test.ts +0 -112
  496. package/src/activities/execute-deep-agent/__tests__/sequential-gate-resume.test.ts +0 -358
  497. package/src/activities/execute-deep-agent/__tests__/status-builder.test.ts +0 -1933
  498. package/src/activities/execute-deep-agent/__tests__/streaming-terminal.test.ts +0 -40
  499. package/src/activities/execute-deep-agent/__tests__/streaming-v3.test.ts +0 -597
  500. package/src/activities/execute-deep-agent/__tests__/streaming.test.ts +0 -508
  501. package/src/activities/execute-deep-agent/attachment-injector.ts +0 -627
  502. package/src/activities/execute-deep-agent/command-provenance.ts +0 -102
  503. package/src/activities/execute-deep-agent/environment.ts +0 -76
  504. package/src/activities/execute-deep-agent/event-recorder.ts +0 -95
  505. package/src/activities/execute-deep-agent/index.ts +0 -1072
  506. package/src/activities/execute-deep-agent/mcp-gate.ts +0 -37
  507. package/src/activities/execute-deep-agent/post-stream.ts +0 -109
  508. package/src/activities/execute-deep-agent/setup.ts +0 -1081
  509. package/src/activities/execute-deep-agent/stamp-flowed-rows.ts +0 -64
  510. package/src/activities/execute-deep-agent/status-builder.ts +0 -481
  511. package/src/activities/execute-deep-agent/streaming-terminal.ts +0 -106
  512. package/src/activities/execute-deep-agent/streaming-v3.ts +0 -277
  513. package/src/activities/execute-deep-agent/streaming.ts +0 -313
  514. package/src/middleware/__tests__/cost-cap.test.ts +0 -192
  515. package/src/middleware/__tests__/graceful-stop.test.ts +0 -105
  516. package/src/middleware/graceful-stop.ts +0 -86
  517. package/src/shared/__tests__/skill-writer.test.ts +0 -372
  518. package/src/shared/skill-writer.ts +0 -266
@@ -0,0 +1,78 @@
1
+ /**
2
+ * The native deep-agent harness as a `HarnessAdapter` — the worker- and
3
+ * session-lifetime half of its LangGraph slice, behind the turn runtime's
4
+ * contract (`harness/types.ts`). One engine turn is `turn.ts`'s
5
+ * `runDeepAgentTurn`; this module boots and delegates.
6
+ *
7
+ * What this adapter owns: the deepagents harness profiles (worker lifetime,
8
+ * registered once before the first `createDeepAgent`), and one engine turn
9
+ * (`runTurn`, through `turn.ts`). Everything else about a turn is the
10
+ * runtime's (`harness/run-turn.ts`).
11
+ *
12
+ * THIS MODULE'S STATIC GRAPH IS SDK-FREE, ON PURPOSE. The composition roots
13
+ * import the harness table (`src/harness-adapters.ts`) BEFORE they boot it,
14
+ * and that table's static graph must stay connect- and SDK-free (the Cursor
15
+ * adapter's boot patches `node:http2` before anything dials the control
16
+ * plane). So `deepagents` and `@langchain/*` — this harness's whole engine —
17
+ * are loaded with a dynamic import INSIDE `boot`, after the profiles are
18
+ * registered; a worker that does not serve this harness never pays for
19
+ * LangChain. `__tests__/adapter-graph-is-sdk-free.test.ts` pins it.
20
+ *
21
+ * Nothing is parked per session, and the header says so where the contract
22
+ * asks: the sqlite saver is opened and closed per turn and the MCP
23
+ * subprocesses are connected and closed per turn (`turn.ts`), so
24
+ * `shutdown` and `releaseSession` resolve as no-ops.
25
+ *
26
+ * What this adapter never does: throw out of `runTurn` (an engine failure is
27
+ * `failed` on the `internal` surface; the recursion limit is
28
+ * `tool_call_limit`; a `CancelledFailure` never exists here), branch on why
29
+ * `stopSignal` aborted, write a phase or a terminal copy, bind a state id
30
+ * (the thread id is the runtime's, `deterministic`), or import
31
+ * `@temporalio/*` (`__tests__/adapter-is-temporal-free.test.ts`).
32
+ *
33
+ * Extracted from `index.ts` `createDeepAgentActivities` at S3 M2a on the
34
+ * Cursor adapter's layout (`execute-cursor/adapter.ts`).
35
+ */
36
+ import { DEEP_AGENT_CAPABILITIES } from "./deep-agent-capabilities.js";
37
+ /** The config slice this adapter reads per turn, taken at `boot`; a whole `Config` satisfies it. */
38
+ export function resolveDeepAgentConfig(config) {
39
+ return {
40
+ checkpointerType: config.checkpointerType,
41
+ checkpointerProxyEndpoint: config.checkpointerProxyEndpoint,
42
+ stigmerToken: config.stigmerToken,
43
+ proxyEndpoint: config.proxyEndpoint,
44
+ mode: config.mode,
45
+ };
46
+ }
47
+ export function createDeepAgentAdapter() {
48
+ let booted;
49
+ return {
50
+ name: "deep-agent",
51
+ capabilities: DEEP_AGENT_CAPABILITIES,
52
+ /**
53
+ * Register the harness profiles (deepagents would otherwise auto-inject
54
+ * an ungated `general-purpose` sub-agent into every graph), then load
55
+ * the engine slice. Idempotent: a re-boot re-reads the slice; the
56
+ * registration is once-guarded.
57
+ */
58
+ async boot(bootConfig) {
59
+ // `deepagents-profiles.ts` imports the SDK to register against it, so
60
+ // it too is loaded here and not at the top of this module.
61
+ const { registerStigmerDeepagentsProfiles } = await import("./deepagents-profiles.js");
62
+ registerStigmerDeepagentsProfiles();
63
+ const { runDeepAgentTurn } = await import("./turn.js");
64
+ booted = { config: resolveDeepAgentConfig(bootConfig), runDeepAgentTurn };
65
+ },
66
+ /** Nothing is held across turns (see the header). */
67
+ async shutdown() { },
68
+ /** Nothing is parked per session (see the header); an unknown id is a no-op by construction. */
69
+ async releaseSession(_sessionId) { },
70
+ async runTurn(input, sink) {
71
+ if (booted === undefined) {
72
+ throw new Error("deep-agent adapter: runTurn before boot (the registry boots every adapter before the worker polls)");
73
+ }
74
+ return booted.runDeepAgentTurn(input, sink, booted.config);
75
+ },
76
+ };
77
+ }
78
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAIH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,oGAAoG;AACpG,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,OAAO;QACL,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,yBAAyB,EAAE,MAAM,CAAC,yBAAyB;QAC3D,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,sBAAsB;IACpC,IAAI,MAA0C,CAAC;IAE/C,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,YAAY,EAAE,uBAAuB;QAErC;;;;;WAKG;QACH,KAAK,CAAC,IAAI,CAAC,UAAkB;YAC3B,sEAAsE;YACtE,2DAA2D;YAC3D,MAAM,EAAE,iCAAiC,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACvF,iCAAiC,EAAE,CAAC;YACpC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YACvD,MAAM,GAAG,EAAE,MAAM,EAAE,sBAAsB,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;QAC5E,CAAC;QAED,qDAAqD;QACrD,KAAK,CAAC,QAAQ,KAAmB,CAAC;QAElC,gGAAgG;QAChG,KAAK,CAAC,cAAc,CAAC,UAAkB,IAAkB,CAAC;QAE1D,KAAK,CAAC,OAAO,CAAC,KAAgB,EAAE,IAAc;YAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,oGAAoG,CAAC,CAAC;YACxH,CAAC;YACD,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -36,6 +36,7 @@
36
36
  * @since File-Change HITL Redesign (Phase 3 — CAS deep-agent wiring); sub-agent
37
37
  * gitignored capture parity (Session 26, DD-19)
38
38
  */
39
+ import type { CasTouchedSnapshot } from "../../shared/filereview/cas-touched.js";
39
40
  /**
40
41
  * Pre-turn bytes of each first-touched gitignored path, keyed by workspace-root-
41
42
  * relative path. `null` means the path did not exist before the turn (an ADD).
@@ -60,6 +61,13 @@ export declare class CasCaptureObserver {
60
61
  });
61
62
  /** Gitignored paths the gate refused as secret-like, read at the turn boundary. */
62
63
  get blockedSecretPaths(): ReadonlySet<string>;
64
+ /**
65
+ * An atomic copy of what has been observed so far — the shape the progress
66
+ * slice and the turn-boundary capture read (`shared/filereview/cas-touched.ts`).
67
+ * Copied synchronously, so a sub-agent's concurrent `recordBefore` landing
68
+ * mid-capture cannot mutate a snapshot a reader is walking.
69
+ */
70
+ snapshot(): CasTouchedSnapshot;
63
71
  /**
64
72
  * Record the pre-turn bytes of `rawPath` when it is a first-touched gitignored
65
73
  * path. First-touch-wins across ALL backends sharing this observer: the slot is
@@ -58,6 +58,15 @@ export class CasCaptureObserver {
58
58
  get blockedSecretPaths() {
59
59
  return this.blocked;
60
60
  }
61
+ /**
62
+ * An atomic copy of what has been observed so far — the shape the progress
63
+ * slice and the turn-boundary capture read (`shared/filereview/cas-touched.ts`).
64
+ * Copied synchronously, so a sub-agent's concurrent `recordBefore` landing
65
+ * mid-capture cannot mutate a snapshot a reader is walking.
66
+ */
67
+ snapshot() {
68
+ return { before: new Map(this.before), blockedSecretPaths: new Set(this.blocked) };
69
+ }
61
70
  /**
62
71
  * Record the pre-turn bytes of `rawPath` when it is a first-touched gitignored
63
72
  * path. First-touch-wins across ALL backends sharing this observer: the slot is
@@ -1 +1 @@
1
- {"version":3,"file":"cas-capture-observer.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/cas-capture-observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAQnE,MAAM,OAAO,kBAAkB;IACZ,OAAO,CAAS;IACjC,wFAAwF;IACvE,YAAY,CAAwC;IAErE,mFAAmF;IAC1E,MAAM,GAAiB,IAAI,GAAG,EAAE,CAAC;IAE1C,+EAA+E;IAC9D,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/C,kFAAkF;IACjE,YAAY,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC3D,oFAAoF;IACnE,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C,YAAY,IAIX;QACC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,CAAC;IAED,mFAAmF;IACnF,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1F,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO;QACpE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC;YACH,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAAE,OAAO;YACjD,qEAAqE;YACrE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,OAAO;YACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,OAAe;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAe;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,sEAAsE;AACtE,KAAK,UAAU,eAAe,CAAC,YAAoB;IACjD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cas-capture-observer.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/cas-capture-observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AASnE,MAAM,OAAO,kBAAkB;IACZ,OAAO,CAAS;IACjC,wFAAwF;IACvE,YAAY,CAAwC;IAErE,mFAAmF;IAC1E,MAAM,GAAiB,IAAI,GAAG,EAAE,CAAC;IAE1C,+EAA+E;IAC9D,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/C,kFAAkF;IACjE,YAAY,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC3D,oFAAoF;IACnE,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C,YAAY,IAIX;QACC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,CAAC;IAED,mFAAmF;IACnF,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,QAAQ;QACN,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACrF,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1F,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO;QACpE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC;YACH,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAAE,OAAO;YACjD,qEAAqE;YACrE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,OAAO;YACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,OAAe;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAe;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,sEAAsE;AACtE,KAAK,UAAU,eAAe,CAAC,YAAoB;IACjD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The native deep-agent harness's capability flags — the facts about the
3
+ * LangGraph engine the turn runtime branches on, declared once
4
+ * (`harness/capabilities.ts` has the matrix and the meaning of each flag).
5
+ *
6
+ * - `interrupt`: the approval gate (`middleware/approval-gate.ts`) calls
7
+ * LangGraph's `interrupt()` at a gated tool; the graph checkpoints and
8
+ * stops, and the adapter resumes it with a `Command(resume)` carrying
9
+ * the decisions (`hitl.ts`). No engine re-run, no exact-apply.
10
+ * - `deterministic`: the thread id is the runtime's, minted from the
11
+ * session before the first turn (`ensure-thread.ts`), so the adapter
12
+ * never binds a state id and the runtime's reinvocation fact is the
13
+ * persisted transcript.
14
+ * - A system prompt: instructions, skills, input files and standing context
15
+ * ride `createDeepAgent`'s `systemPrompt` (`prompt-builder.ts`).
16
+ * - Sub-agents as compiled sub-graphs (`subagent-transformer.ts`), each
17
+ * with its own mounted skills from the runtime (`TurnSkills.bySubAgent`).
18
+ * - Tool restriction by tool list: an MCP server's `enabled_tools` is
19
+ * honoured at connect time, so the engine never sees a disabled tool.
20
+ * - PNG, JPEG, WebP and GIF inline (`shared/attachment-vision.ts`).
21
+ * - File review under the `deep-agent` harness id with nothing excluded:
22
+ * this harness writes no transient file into the repo (the `.stigmer`
23
+ * link is the runtime's, created before its baseline pin and git-excluded
24
+ * at provision). The capture is the runtime's (`harness/capture.ts`, S3
25
+ * M4); this harness binds its `CasCaptureObserver`'s snapshot as the
26
+ * runtime's CAS observations (`turn.ts`).
27
+ */
28
+ import type { HarnessCapabilities } from "../../harness/capabilities.js";
29
+ /** The harness id stamped on the deep-agent's file-review ledger events. */
30
+ export declare const DEEP_AGENT_HARNESS_ID = "deep-agent";
31
+ export declare const DEEP_AGENT_CAPABILITIES: HarnessCapabilities;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * The native deep-agent harness's capability flags — the facts about the
3
+ * LangGraph engine the turn runtime branches on, declared once
4
+ * (`harness/capabilities.ts` has the matrix and the meaning of each flag).
5
+ *
6
+ * - `interrupt`: the approval gate (`middleware/approval-gate.ts`) calls
7
+ * LangGraph's `interrupt()` at a gated tool; the graph checkpoints and
8
+ * stops, and the adapter resumes it with a `Command(resume)` carrying
9
+ * the decisions (`hitl.ts`). No engine re-run, no exact-apply.
10
+ * - `deterministic`: the thread id is the runtime's, minted from the
11
+ * session before the first turn (`ensure-thread.ts`), so the adapter
12
+ * never binds a state id and the runtime's reinvocation fact is the
13
+ * persisted transcript.
14
+ * - A system prompt: instructions, skills, input files and standing context
15
+ * ride `createDeepAgent`'s `systemPrompt` (`prompt-builder.ts`).
16
+ * - Sub-agents as compiled sub-graphs (`subagent-transformer.ts`), each
17
+ * with its own mounted skills from the runtime (`TurnSkills.bySubAgent`).
18
+ * - Tool restriction by tool list: an MCP server's `enabled_tools` is
19
+ * honoured at connect time, so the engine never sees a disabled tool.
20
+ * - PNG, JPEG, WebP and GIF inline (`shared/attachment-vision.ts`).
21
+ * - File review under the `deep-agent` harness id with nothing excluded:
22
+ * this harness writes no transient file into the repo (the `.stigmer`
23
+ * link is the runtime's, created before its baseline pin and git-excluded
24
+ * at provision). The capture is the runtime's (`harness/capture.ts`, S3
25
+ * M4); this harness binds its `CasCaptureObserver`'s snapshot as the
26
+ * runtime's CAS observations (`turn.ts`).
27
+ */
28
+ import { DEEP_AGENT_VISION_PROFILE } from "../../shared/attachment-vision.js";
29
+ /** The harness id stamped on the deep-agent's file-review ledger events. */
30
+ export const DEEP_AGENT_HARNESS_ID = "deep-agent";
31
+ export const DEEP_AGENT_CAPABILITIES = {
32
+ pausePrimitive: "interrupt",
33
+ stateIdSource: "deterministic",
34
+ systemPrompt: true,
35
+ subAgents: true,
36
+ toolRestriction: true,
37
+ visionProfile: DEEP_AGENT_VISION_PROFILE,
38
+ fileReview: { harnessId: DEEP_AGENT_HARNESS_ID, excludePaths: [] },
39
+ };
40
+ //# sourceMappingURL=deep-agent-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-agent-capabilities.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/deep-agent-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAwB;IAC1D,cAAc,EAAE,WAAW;IAC3B,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,yBAAyB;IACxC,UAAU,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,YAAY,EAAE,EAAE,EAAE;CACnE,CAAC"}
@@ -1,13 +1,11 @@
1
1
  /**
2
- * Mutable execution state for the StatusBuilder.
2
+ * Mutable execution state for `V3StatusBuilder`.
3
3
  *
4
4
  * Holds the AgentExecutionStatus proto being progressively built and
5
5
  * O(1) lookup indexes into its repeated fields. Mutations to indexed
6
6
  * references (ToolCall, AgentMessage) propagate directly to the proto
7
- * because they share the same object reference.
8
- *
9
- * Phase 3b-i scope: core indexes for main-agent streaming.
10
- * Sub-agent routing maps and approval tracking are added in Phase 3c.
7
+ * because they share the same object reference. Sub-agent transcripts are
8
+ * `SubAgentTracker`'s, keyed by namespace beside this state.
11
9
  */
12
10
  import type { AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
13
11
  import type { AgentMessage, ToolCall } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
@@ -36,11 +34,6 @@ export declare class ExecutionState {
36
34
  * is created rather than appending to the existing one.
37
35
  */
38
36
  readonly lastLlmRunId: Map<string, string>;
39
- /**
40
- * Tool run_id -> monotonic start time (ms) for duration calculation.
41
- * Set on on_tool_start, consumed and removed on on_tool_end.
42
- */
43
- readonly toolStartTimes: Map<string, number>;
44
37
  constructor(proto: AgentExecutionStatus);
45
38
  /**
46
39
  * Reset all ephemeral indexes. The proto itself is not cleared —
@@ -52,7 +45,7 @@ export declare class ExecutionState {
52
45
  /**
53
46
  * Rebuild the toolCalls index from the proto's messages.
54
47
  *
55
- * Used on the resume path where the StatusBuilder is initialized
48
+ * Used on the resume path where the V3StatusBuilder is initialized
56
49
  * with a persisted AgentExecutionStatus that already contains
57
50
  * messages and tool calls. Only proto-derivable indexes are rebuilt;
58
51
  * ephemeral runtime state starts fresh.
@@ -1,13 +1,11 @@
1
1
  /**
2
- * Mutable execution state for the StatusBuilder.
2
+ * Mutable execution state for `V3StatusBuilder`.
3
3
  *
4
4
  * Holds the AgentExecutionStatus proto being progressively built and
5
5
  * O(1) lookup indexes into its repeated fields. Mutations to indexed
6
6
  * references (ToolCall, AgentMessage) propagate directly to the proto
7
- * because they share the same object reference.
8
- *
9
- * Phase 3b-i scope: core indexes for main-agent streaming.
10
- * Sub-agent routing maps and approval tracking are added in Phase 3c.
7
+ * because they share the same object reference. Sub-agent transcripts are
8
+ * `SubAgentTracker`'s, keyed by namespace beside this state.
11
9
  */
12
10
  export class ExecutionState {
13
11
  /** The protobuf projection being built. */
@@ -34,11 +32,6 @@ export class ExecutionState {
34
32
  * is created rather than appending to the existing one.
35
33
  */
36
34
  lastLlmRunId = new Map();
37
- /**
38
- * Tool run_id -> monotonic start time (ms) for duration calculation.
39
- * Set on on_tool_start, consumed and removed on on_tool_end.
40
- */
41
- toolStartTimes = new Map();
42
35
  constructor(proto) {
43
36
  this.proto = proto;
44
37
  }
@@ -52,12 +45,11 @@ export class ExecutionState {
52
45
  this.messagesByRun.clear();
53
46
  this.currentAiMessage.clear();
54
47
  this.lastLlmRunId.clear();
55
- this.toolStartTimes.clear();
56
48
  }
57
49
  /**
58
50
  * Rebuild the toolCalls index from the proto's messages.
59
51
  *
60
- * Used on the resume path where the StatusBuilder is initialized
52
+ * Used on the resume path where the V3StatusBuilder is initialized
61
53
  * with a persisted AgentExecutionStatus that already contains
62
54
  * messages and tool calls. Only proto-derivable indexes are rebuilt;
63
55
  * ephemeral runtime state starts fresh.
@@ -1 +1 @@
1
- {"version":3,"file":"execution-state.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/execution-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,OAAO,cAAc;IACzB,2CAA2C;IAClC,KAAK,CAAuB;IAErC;;;OAGG;IACM,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;IAEtD;;;OAGG;IACM,aAAa,GAA8B,IAAI,GAAG,EAAE,CAAC;IAE9D;;;;OAIG;IACM,gBAAgB,GAA8B,IAAI,GAAG,EAAE,CAAC;IAEjE;;;;OAIG;IACM,YAAY,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEvD;;;OAGG;IACM,cAAc,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEzD,YAAY,KAA2B;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,mBAAmB;QACjB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,oBAAoB;QAClB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1C,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACnC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBACV,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"execution-state.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/execution-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,OAAO,cAAc;IACzB,2CAA2C;IAClC,KAAK,CAAuB;IAErC;;;OAGG;IACM,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;IAEtD;;;OAGG;IACM,aAAa,GAA8B,IAAI,GAAG,EAAE,CAAC;IAE9D;;;;OAIG;IACM,gBAAgB,GAA8B,IAAI,GAAG,EAAE,CAAC;IAEjE;;;;OAIG;IACM,YAAY,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEvD,YAAY,KAA2B;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,mBAAmB;QACjB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;;;OAOG;IACH,oBAAoB;QAClB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1C,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACnC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBACV,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -1,24 +1,31 @@
1
1
  /**
2
- * HITL (human-in-the-loop) resume infrastructure for ExecuteDeepAgent.
2
+ * HITL (human-in-the-loop) resume infrastructure for the native deep-agent
3
+ * harness — the LangGraph side of an approval round trip.
3
4
  *
4
- * On reinvocation after an approval signal, this module:
5
- * 1. Reads the persisted execution status from the database
6
- * 2. Queries the LangGraph checkpoint for pending interrupts
7
- * 3. Matches each interrupt's tool_call_id to the user's approval decision
8
- * 4. Builds a `Command(resume={...})` payload for LangGraph
9
- * 5. Reconciles tool call statuses in the StatusBuilder
5
+ * The runtime reads the user's decisions off the persisted rows
6
+ * (`harness/approval-decisions.ts` `approvalDecisionsOf`, on `TurnInput`)
7
+ * and settles the rows that never run (SKIP, REJECT) after the turn; what is
8
+ * this harness's is how those decisions reach the ENGINE: the graph
9
+ * checkpoint's un-resumed interrupts, keyed by the interrupt's own id, become
10
+ * a `Command(resume)` map ({@link resolveResumeInput}), and after a stream the
11
+ * interrupts still pending become WAITING_APPROVAL rows
12
+ * ({@link detectPendingInterrupts}). {@link reconcileUnattendedSkips} is the
13
+ * one settlement that stays here because its evidence — the gate's registry
14
+ * of auto-skipped call ids — exists only inside this harness.
10
15
  *
11
- * DB-driven resume: Approval decisions are read from the persisted
12
- * execution status (via `client.getExecution()`), NOT passed as Temporal
13
- * activity arguments. This matches the Go workflow contract.
16
+ * Until S3 M2a this module also read the decisions from the execution itself
17
+ * and carried the SKIP/REJECT settlement; both are the runtime's now, one
18
+ * copy for every harness (S3 M1, Q-S3-2).
14
19
  */
15
20
  import { Command } from "@langchain/langgraph";
16
- import type { AgentExecution, AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
21
+ import type { AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
22
+ import { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
23
+ import { type PolicySource } from "../../shared/approval-policy.js";
17
24
  /**
18
25
  * Either a genuine approval resume carrying the `Command(resume)` payload, or
19
- * not one — in which case the caller uses `setup.langgraphInput` (the single
20
- * construction site of the turn's user message; this module deliberately does
21
- * NOT build a second copy that could drift from it).
26
+ * not one — in which case the caller sends the turn's user message (its
27
+ * single construction site; this module deliberately does NOT build a second
28
+ * copy that could drift from it).
22
29
  */
23
30
  export type ResumeResult = {
24
31
  readonly isResumeFromApproval: true;
@@ -53,43 +60,20 @@ export interface InterruptValue {
53
60
  *
54
61
  * Returns a `Command(resume=...)` if there are pending interrupts with
55
62
  * matching approval decisions; otherwise reports "not a resume" and the
56
- * caller falls back to `setup.langgraphInput`.
63
+ * caller sends the turn's user message.
57
64
  *
58
- * The graph checkpoint snapshot is read once by the caller and passed in: the
59
- * same snapshot also decides whether status must be seeded from the persisted
60
- * transcript (see `index.ts`), and on the durable (http) saver an extra
61
- * `getState` is a network round-trip best avoided.
65
+ * `decisions` is the runtime's reading of the adjudicated rows
66
+ * (`TurnInput.approvalDecisions`, keyed by tool-call id) the one
67
+ * projection both harnesses agree on; this module never re-derives the
68
+ * verdict from the rows. The graph checkpoint snapshot is read once by the
69
+ * caller and passed in: on the durable (http) saver an extra `getState` is a
70
+ * network round-trip best avoided.
62
71
  */
63
- export declare function resolveResumeInput(execution: AgentExecution, graphState: GraphStateSnapshot): ResumeResult;
64
- /**
65
- * Terminalize tool calls whose approval decision is non-executing — SKIP or
66
- * REJECT — so a denied or skipped call is never left stuck at WAITING_APPROVAL.
67
- *
68
- * This is the single, authoritative, checkpointer-independent reconciliation of
69
- * the two decisions that never run the tool: their outcome is fully determined
70
- * by the recorded decision (ToolCall.approval_action), not by any graph event.
71
- * APPROVE / APPROVE_ALL are intentionally NOT handled here — the tool actually
72
- * executes, and real tool events (v3 tool_started → tool_finished) terminalize
73
- * it in place.
74
- *
75
- * Why a decision-derived reconciler rather than the resumed stream: on the
76
- * durable path (sqlite local / http cloud) the gate returns a denial/skip
77
- * ToolMessage WITHOUT an on_tool_start/on_tool_end pair, and on the memory path
78
- * the graph replays without ever re-driving the gate — so in both cases the
79
- * seeded WAITING_APPROVAL row is never flipped by the stream and would persist
80
- * on a COMPLETED execution. Folding the recorded decision into a terminal status
81
- * makes every checkpointer backend behave identically by construction.
82
- *
83
- * REJECT and SKIP share TOOL_CALL_SKIPPED as the terminal status (the tool did
84
- * not run); they stay distinguishable by ToolCall.approval_action and by the
85
- * append-only approval-event stream (REJECTED vs SKIPPED). Idempotent: a row
86
- * already resolved carries the same decision and re-resolves identically.
87
- */
88
- export declare function reconcileNonExecutingDecisions(status: AgentExecutionStatus): void;
72
+ export declare function resolveResumeInput(decisions: ReadonlyMap<string, ApprovalAction>, graphState: GraphStateSnapshot): ResumeResult;
89
73
  /**
90
74
  * Terminalize every tool call the approval gate auto-skipped under UNATTENDED
91
- * approval mode — the sibling of {@link reconcileNonExecutingDecisions} for
92
- * skips that have no human decision behind them.
75
+ * approval mode — the sibling of the runtime's `terminalizeNonExecutingDecisions`
76
+ * for skips that have no human decision behind them.
93
77
  *
94
78
  * The gate (the single writer of the registry) records each auto-skipped
95
79
  * tool-call id at the moment it returns the skip ToolMessage; this reconciler
@@ -111,3 +95,21 @@ export declare function reconcileNonExecutingDecisions(status: AgentExecutionSta
111
95
  * the parent's registry instance.
112
96
  */
113
97
  export declare function reconcileUnattendedSkips(status: AgentExecutionStatus, unattendedSkips: ReadonlySet<string> | undefined): void;
98
+ /** A pending LangGraph approval interrupt, normalized from the graph checkpoint. */
99
+ export interface PendingInterrupt {
100
+ readonly toolCallId: string;
101
+ readonly toolName: string;
102
+ readonly mcpServerSlug: string;
103
+ readonly message: string;
104
+ /** Gate provenance carried through the interrupt; undefined → UNSPECIFIED. */
105
+ readonly policySource: PolicySource | undefined;
106
+ }
107
+ /**
108
+ * Normalize the graph checkpoint's un-resumed interrupts into pending
109
+ * approvals — what a stream that ended on a gate left for the user. The
110
+ * caller seeds one WAITING_APPROVAL row per entry and ends the turn awaiting
111
+ * approval; the interrupt carries only `tool_call_id` and `message` beside
112
+ * the gate's own facts, so the row's args are read from the AI message in
113
+ * graph state, never from a second copy here.
114
+ */
115
+ export declare function detectPendingInterrupts(graphState: GraphStateSnapshot): PendingInterrupt[];