@stigmer/runner 3.15.1 → 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
@@ -16,9 +16,9 @@
16
16
  * - Created per turn, under the workspace turn lock — the link is a
17
17
  * working-tree mutation, and re-pointing it while another session's turn is
18
18
  * running on a shared tree would redirect that turn's reads mid-flight.
19
- * Cursor creates it in its skill/attachment resolvers (which run after lock
20
- * acquisition); the native harness creates it right after acquiring the
21
- * lock (execute-deep-agent/index.ts).
19
+ * the turn runtime creates it in its skill and attachment phases (which
20
+ * run after lock acquisition), for both harnesses; until S3 M2a the native
21
+ * orchestrator created it unconditionally right after the lock.
22
22
  * - Removed at turn end ({@link removeStigmerSymlink} in the activity's
23
23
  * cleanup), so a real repo is left untouched once the turn ends; a
24
24
  * multi-turn session recreates the link on the next turn.
@@ -16,9 +16,9 @@
16
16
  * - Created per turn, under the workspace turn lock — the link is a
17
17
  * working-tree mutation, and re-pointing it while another session's turn is
18
18
  * running on a shared tree would redirect that turn's reads mid-flight.
19
- * Cursor creates it in its skill/attachment resolvers (which run after lock
20
- * acquisition); the native harness creates it right after acquiring the
21
- * lock (execute-deep-agent/index.ts).
19
+ * the turn runtime creates it in its skill and attachment phases (which
20
+ * run after lock acquisition), for both harnesses; until S3 M2a the native
21
+ * orchestrator created it unconditionally right after the lock.
22
22
  * - Removed at turn end ({@link removeStigmerSymlink} in the activity's
23
23
  * cleanup), so a real repo is left untouched once the turn ends; a
24
24
  * multi-turn session recreates the link on the next turn.
@@ -14,16 +14,18 @@
14
14
  * already exists (locally, or on the remote after a sandbox re-provision), and
15
15
  * an already-open PR for the branch is adopted instead of re-created.
16
16
  *
17
- * When this runs depends on the harness's file-review mode:
18
- * - Capture mode (apply-then-review every git workspace): the streaming
19
- * trigger is suppressed and `finalize()` runs exactly once on the APPROVED
20
- * tree, after review decisions reconcile (see processCaptureWriteback in
21
- * index.ts). Speculative mid-turn edits never reach GitHub.
22
- * - Legacy non-capture turns: `onFileModified(path)` triggers an incremental
23
- * commit/push per file-modifying tool call (DD-5), with `finalize()` as the
24
- * post-stream safety net.
17
+ * It runs ONCE per turn, at the end: the turn runtime calls `finalize()`
18
+ * (`harness/run-turn.ts`) in capture mode on the APPROVED tree after the
19
+ * review decisions reconcile, so speculative mid-turn edits never reach
20
+ * GitHub; on a non-capture git turn on whatever the turn left in the tree.
21
+ * Until S3 M2b (Q-M1-1) an incremental path also existed — `onFileModified`,
22
+ * a commit-and-push per file-modifying tool call on non-capture turns and
23
+ * was reachable in no supported posture (every git workspace with artifact
24
+ * storage is a capture workspace, `shared/filereview/capture.ts`
25
+ * `deriveCaptureMode`); it went with the native stream loop that called it.
25
26
  *
26
- * Concurrency: one mutex per workspace entry serializes git operations.
27
+ * Entries are written back in sequence, one cycle each; nothing here runs
28
+ * concurrently with itself.
27
29
  */
28
30
  import type { WorkspaceEntry } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
29
31
  import type { WorkspaceBackend, ProvisionResult } from "./types.js";
@@ -43,7 +45,6 @@ export declare class WriteBackCoordinator {
43
45
  private readonly githubToken;
44
46
  private readonly eligible;
45
47
  private readonly state;
46
- private readonly locks;
47
48
  constructor(opts: {
48
49
  statusWriter: ExecutionStatusWriter;
49
50
  executionId: string;
@@ -56,20 +57,13 @@ export declare class WriteBackCoordinator {
56
57
  });
57
58
  get hasEligibleEntries(): boolean;
58
59
  /**
59
- * Called after a file-modifying tool completes (legacy non-capture turns
60
- * only). Resolves the path to a workspace entry and runs an incremental
61
- * commit/push cycle. Fire-and-forget: errors are logged, never thrown.
62
- */
63
- onFileModified(path: string): Promise<void>;
64
- /**
65
- * Commits and pushes every eligible workspace entry's remaining uncommitted
66
- * changes. In capture mode this is THE write-back — invoked once on the
67
- * approved tree after review reconcile; on legacy turns it is the
68
- * post-stream safety net.
60
+ * Commits and pushes every eligible workspace entry's uncommitted changes —
61
+ * THE write-back, once per turn (see the header). An entry's failure is
62
+ * recorded on its own write-back row and logged; it never throws, and it
63
+ * never stops the next entry.
69
64
  */
70
65
  finalize(): Promise<void>;
71
66
  private initEligibleEntries;
72
- private resolveEntry;
73
67
  /**
74
68
  * One write-back cycle for an entry: branch → commit → push → PR → status.
75
69
  *
@@ -108,7 +102,6 @@ export declare class WriteBackCoordinator {
108
102
  private findOpenPr;
109
103
  private githubHeaders;
110
104
  private updateStatus;
111
- private withLock;
112
105
  }
113
106
  /**
114
107
  * Extract GitHub owner and repo from a clone URL.
@@ -14,16 +14,18 @@
14
14
  * already exists (locally, or on the remote after a sandbox re-provision), and
15
15
  * an already-open PR for the branch is adopted instead of re-created.
16
16
  *
17
- * When this runs depends on the harness's file-review mode:
18
- * - Capture mode (apply-then-review every git workspace): the streaming
19
- * trigger is suppressed and `finalize()` runs exactly once on the APPROVED
20
- * tree, after review decisions reconcile (see processCaptureWriteback in
21
- * index.ts). Speculative mid-turn edits never reach GitHub.
22
- * - Legacy non-capture turns: `onFileModified(path)` triggers an incremental
23
- * commit/push per file-modifying tool call (DD-5), with `finalize()` as the
24
- * post-stream safety net.
17
+ * It runs ONCE per turn, at the end: the turn runtime calls `finalize()`
18
+ * (`harness/run-turn.ts`) in capture mode on the APPROVED tree after the
19
+ * review decisions reconcile, so speculative mid-turn edits never reach
20
+ * GitHub; on a non-capture git turn on whatever the turn left in the tree.
21
+ * Until S3 M2b (Q-M1-1) an incremental path also existed — `onFileModified`,
22
+ * a commit-and-push per file-modifying tool call on non-capture turns and
23
+ * was reachable in no supported posture (every git workspace with artifact
24
+ * storage is a capture workspace, `shared/filereview/capture.ts`
25
+ * `deriveCaptureMode`); it went with the native stream loop that called it.
25
26
  *
26
- * Concurrency: one mutex per workspace entry serializes git operations.
27
+ * Entries are written back in sequence, one cycle each; nothing here runs
28
+ * concurrently with itself.
27
29
  */
28
30
  import { create } from "@bufbuild/protobuf";
29
31
  import { WorkspaceWriteBackSchema, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/writeback_pb";
@@ -51,7 +53,6 @@ export class WriteBackCoordinator {
51
53
  githubToken;
52
54
  eligible = new Map();
53
55
  state = new Map();
54
- locks = new Map();
55
56
  constructor(opts) {
56
57
  this.statusWriter = opts.statusWriter;
57
58
  this.executionId = opts.executionId;
@@ -66,32 +67,15 @@ export class WriteBackCoordinator {
66
67
  return this.eligible.size > 0;
67
68
  }
68
69
  /**
69
- * Called after a file-modifying tool completes (legacy non-capture turns
70
- * only). Resolves the path to a workspace entry and runs an incremental
71
- * commit/push cycle. Fire-and-forget: errors are logged, never thrown.
72
- */
73
- async onFileModified(path) {
74
- try {
75
- const entryName = this.resolveEntry(path);
76
- if (!entryName)
77
- return;
78
- await this.withLock(entryName, () => this.writeBackEntry(entryName));
79
- }
80
- catch (err) {
81
- console.warn(`[WriteBack] execution=${this.executionId} — ` +
82
- `onFileModified error for '${path}': ${err}`);
83
- }
84
- }
85
- /**
86
- * Commits and pushes every eligible workspace entry's remaining uncommitted
87
- * changes. In capture mode this is THE write-back — invoked once on the
88
- * approved tree after review reconcile; on legacy turns it is the
89
- * post-stream safety net.
70
+ * Commits and pushes every eligible workspace entry's uncommitted changes —
71
+ * THE write-back, once per turn (see the header). An entry's failure is
72
+ * recorded on its own write-back row and logged; it never throws, and it
73
+ * never stops the next entry.
90
74
  */
91
75
  async finalize() {
92
76
  for (const entryName of this.eligible.keys()) {
93
77
  try {
94
- await this.withLock(entryName, () => this.writeBackEntry(entryName));
78
+ await this.writeBackEntry(entryName);
95
79
  }
96
80
  catch (err) {
97
81
  console.warn(`[WriteBack] execution=${this.executionId} entry=${entryName} — ` +
@@ -140,20 +124,6 @@ export class WriteBackCoordinator {
140
124
  `${this.eligible.size} eligible workspace(s): ${[...this.eligible.keys()].join(", ")}`);
141
125
  }
142
126
  }
143
- // ── Path Resolution ─────────────────────────────────────────────────
144
- resolveEntry(path) {
145
- if (this.eligible.size === 0)
146
- return null;
147
- if (this.eligible.size === 1)
148
- return this.eligible.keys().next().value;
149
- const normalized = path.replace(/^\/+/, "");
150
- for (const entryName of this.eligible.keys()) {
151
- if (normalized.startsWith(entryName + "/") || normalized === entryName) {
152
- return entryName;
153
- }
154
- }
155
- return null;
156
- }
157
127
  // ── Core Write-Back Cycle ───────────────────────────────────────────
158
128
  /**
159
129
  * One write-back cycle for an entry: branch → commit → push → PR → status.
@@ -370,13 +340,6 @@ export class WriteBackCoordinator {
370
340
  });
371
341
  this.statusWriter.addWriteBack(wb);
372
342
  }
373
- // ── Concurrency ─────────────────────────────────────────────────────
374
- async withLock(entryName, fn) {
375
- const existing = this.locks.get(entryName) ?? Promise.resolve();
376
- const next = existing.then(fn, fn);
377
- this.locks.set(entryName, next);
378
- await next;
379
- }
380
343
  }
381
344
  // ── Helpers ───────────────────────────────────────────────────────────
382
345
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"writeback-coordinator.js","sourceRoot":"","sources":["../../../src/shared/workspace/writeback-coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writeback-coordinator.js","sourceRoot":"","sources":["../../../src/shared/workspace/writeback-coordinator.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Native built-in tools for the deep-agent harness.
3
3
  *
4
4
  * These are Stigmer-authored capabilities appended to the agent's tool list
5
- * in execute-deep-agent/setup.ts (and mirrored for sub-agents in
5
+ * in execute-deep-agent/turn-setup.ts (and mirrored for sub-agents in
6
6
  * subagent-transformer.ts) — distinct from deepagents' backend tools
7
7
  * (ls/read_file/execute/…) and from MCP tools, which arrive via the
8
8
  * connection layer.
@@ -2,7 +2,7 @@
2
2
  * Native built-in tools for the deep-agent harness.
3
3
  *
4
4
  * These are Stigmer-authored capabilities appended to the agent's tool list
5
- * in execute-deep-agent/setup.ts (and mirrored for sub-agents in
5
+ * in execute-deep-agent/turn-setup.ts (and mirrored for sub-agents in
6
6
  * subagent-transformer.ts) — distinct from deepagents' backend tools
7
7
  * (ls/read_file/execute/…) and from MCP tools, which arrive via the
8
8
  * connection layer.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stigmer/runner",
3
- "version": "3.15.1",
3
+ "version": "3.15.2-dev.20260913223433",
4
4
  "description": "Embeddable Temporal worker for the Stigmer AI agent platform — handles agent execution, workflow orchestration, and MCP server management",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -104,9 +104,9 @@
104
104
  "@opentelemetry/sdk-metrics": "^2.0.0",
105
105
  "@opentelemetry/sdk-trace-base": "^2.0.0",
106
106
  "@opentelemetry/sdk-trace-node": "^2.0.0",
107
- "@stigmer/protos": "3.15.1",
108
- "@stigmer/temporal-codecs": "3.15.1",
109
- "@stigmer/zip-structure": "3.15.1",
107
+ "@stigmer/protos": "3.15.2-dev.20260913223433",
108
+ "@stigmer/temporal-codecs": "3.15.2-dev.20260913223433",
109
+ "@stigmer/zip-structure": "3.15.2-dev.20260913223433",
110
110
  "@temporalio/activity": "1.16.2",
111
111
  "@temporalio/common": "1.16.2",
112
112
  "@temporalio/interceptors-opentelemetry": "1.16.2",
@@ -82,6 +82,7 @@ function sinkOver(inner: TurnSink, patch: Partial<TurnSink>): TurnSink {
82
82
  reportUsage: (delta) => inner.reportUsage(delta),
83
83
  reportProgress: (label) => inner.reportProgress(label),
84
84
  bindHarnessState: (id) => inner.bindHarnessState(id),
85
+ bindCasObservations: (read) => inner.bindCasObservations(read),
85
86
  ...patch,
86
87
  };
87
88
  }
@@ -12,14 +12,14 @@
12
12
  * byte-stable.
13
13
  */
14
14
 
15
- import { create } from "@bufbuild/protobuf";
15
+ import { create, type JsonObject } from "@bufbuild/protobuf";
16
16
  import { AgentExecutionSchema, type AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
17
17
  import { AgentExecutionSpecSchema, ExecutionConfigSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/spec_pb";
18
18
  import { SessionSchema, type Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
19
19
  import { SessionSpecSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/spec_pb";
20
20
  import type { WorkspaceEntry } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
21
21
  import { AgentSchema, type Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
22
- import { AgentSpecSchema } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/spec_pb";
22
+ import { AgentSpecSchema, type SubAgent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/spec_pb";
23
23
  import { AgentInstanceSchema, type AgentInstance } from "@stigmer/protos/ai/stigmer/agentic/agentinstance/v1/api_pb";
24
24
  import { AgentInstanceSpecSchema } from "@stigmer/protos/ai/stigmer/agentic/agentinstance/v1/spec_pb";
25
25
  import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
@@ -63,6 +63,18 @@ export interface ExecutionRecordOptions {
63
63
  * a scenario can state its overrun exactly (600 000 input tokens = $0.60).
64
64
  */
65
65
  readonly maxCostUsd?: number;
66
+ /**
67
+ * `ExecutionConfig.max_tool_rounds`: the hard tool-round budget the engine
68
+ * enforces (native: LangGraph's `recursionLimit`, `shared/tool-rounds.ts`).
69
+ * Omitted or 0 = unlimited, the proto's default. Clamped to the floor of 10
70
+ * by the runner, so a scenario that wants the limit reached scripts a model
71
+ * that keeps calling tools (`repeatLast`).
72
+ */
73
+ readonly maxToolRounds?: number;
74
+ /** `ExecutionConfig.structured_output_schema`: a JSON schema the agent's answer must match. */
75
+ readonly structuredOutputSchema?: JsonObject;
76
+ /** The agent's declared sub-agents (`AgentSpec.sub_agents`). */
77
+ readonly subAgents?: SubAgent[];
66
78
  /** The control plane's STOP lever; see `ExecutionRecordInput.controlSignal`. */
67
79
  readonly controlSignal?: ExecutionRecordInput["controlSignal"];
68
80
  readonly ids?: ExecutionRecordIds;
@@ -79,6 +91,9 @@ export function executionRecordFixture(options: ExecutionRecordOptions): Executi
79
91
  executionConfig: create(ExecutionConfigSchema, {
80
92
  modelName: options.modelName ?? FIXTURE_MODEL,
81
93
  maxCostUsd: options.maxCostUsd ?? 0,
94
+ maxToolRounds: options.maxToolRounds ?? 0,
95
+ // A `google.protobuf.Struct` field is a plain `JsonObject` in protobuf-es.
96
+ structuredOutputSchema: options.structuredOutputSchema,
82
97
  }),
83
98
  }),
84
99
  });
@@ -98,6 +113,7 @@ export function executionRecordFixture(options: ExecutionRecordOptions): Executi
98
113
  spec: create(AgentSpecSchema, {
99
114
  description: "Hermetic fixture agent",
100
115
  instructions: options.instructions ?? "You are the hermetic fixture agent. Answer briefly.",
116
+ subAgents: options.subAgents ?? [],
101
117
  }),
102
118
  });
103
119
  return new ExecutionRecord({ execution, session, agentInstance, agent, controlSignal: options.controlSignal });
@@ -0,0 +1,156 @@
1
+ /**
2
+ * The server's `file_change_sets` projection, mirrored for the hermetic
3
+ * record — the ONE place a runner test stands in for the control plane's
4
+ * fold of the file-review ledger.
5
+ *
6
+ * Production: the runner authors BASELINE_CAPTURED and CANDIDATE_CAPTURED
7
+ * onto `status.file_review_event_stream`; the server folds the stream into
8
+ * `status.file_change_sets` (`stigmer-server/src/domain/agentexecution/
9
+ * filereview/project.ts` `applyEvent` and `deriveStatusAfterCandidate`);
10
+ * `SubmitFileDecision` appends FILE_DECIDED events and re-folds; the runtime's
11
+ * reinvocation reads the DECIDED sets back and reconciles the tree
12
+ * (`harness/turn-context.ts` `reconcileReinvocation`). The hermetic
13
+ * `ExecutionRecord` is the server here, so it must fold the same way — and
14
+ * only for the fields the reconcile reads: `id`, `status`, `decisions`,
15
+ * `changes` (their `id`, `beforeSha256`, `afterSha256`), `candidateSnapshot`.
16
+ *
17
+ * Mirrored, not imported: the runner is a standalone package and cannot
18
+ * reach the server's source. If `project.ts` changes the fold, THIS file is
19
+ * the one to change beside it; the conformance suite's file-review files
20
+ * (`test/conformance/src/suites-execution/agentexecution-file-review*`) are
21
+ * the arbiter that the two still agree, through the real server.
22
+ */
23
+
24
+ import { create } from "@bufbuild/protobuf";
25
+ import type { AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
26
+ import {
27
+ FileChangeSetStatus,
28
+ FileDecisionAction,
29
+ FileDecisionOrigin,
30
+ FileDecisionScope,
31
+ FileReviewEventType,
32
+ } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
33
+ import {
34
+ FileChangeSetSchema,
35
+ FileDecisionSchema,
36
+ type FileChangeSet,
37
+ type FileReviewEvent,
38
+ } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/filereview_pb";
39
+
40
+ /** Fold the ledger into change sets, in first-seen order (`project.ts` `projectFileChangeSets`). */
41
+ export function projectFileChangeSets(events: readonly FileReviewEvent[]): FileChangeSet[] {
42
+ const order: string[] = [];
43
+ const byId = new Map<string, FileChangeSet>();
44
+ for (const ev of events) {
45
+ if (ev.changeSetId === "") continue;
46
+ let cs = byId.get(ev.changeSetId);
47
+ if (!cs) {
48
+ cs = create(FileChangeSetSchema, { id: ev.changeSetId });
49
+ byId.set(ev.changeSetId, cs);
50
+ order.push(ev.changeSetId);
51
+ }
52
+ applyEvent(cs, ev);
53
+ }
54
+ return order.map((id) => byId.get(id)!);
55
+ }
56
+
57
+ /** One event into one set (`project.ts` `applyEvent`); terminal statuses are never downgraded. */
58
+ function applyEvent(cs: FileChangeSet, ev: FileReviewEvent): void {
59
+ switch (ev.eventType) {
60
+ case FileReviewEventType.BASELINE_CAPTURED:
61
+ if (ev.payload.case === "baselineCaptured") {
62
+ cs.turnId = ev.payload.value.turnId;
63
+ cs.harnessId = ev.payload.value.harnessId;
64
+ cs.baselineSnapshot = ev.payload.value.baselineSnapshot;
65
+ }
66
+ cs.status = FileChangeSetStatus.CAPTURING;
67
+ break;
68
+ case FileReviewEventType.CANDIDATE_CAPTURED:
69
+ if (ev.payload.case === "candidateCaptured") {
70
+ cs.candidateSnapshot = ev.payload.value.candidateSnapshot;
71
+ cs.changes = ev.payload.value.changes;
72
+ cs.aggregateDigest = ev.payload.value.aggregateDigest;
73
+ cs.diffCompleteness = ev.payload.value.diffCompleteness;
74
+ }
75
+ cs.status = deriveStatusAfterCandidate(cs);
76
+ break;
77
+ case FileReviewEventType.FILE_DECIDED:
78
+ if (ev.payload.case === "fileDecided") cs.decisions.push(ev.payload.value);
79
+ cs.status = deriveStatusAfterCandidate(cs);
80
+ break;
81
+ case FileReviewEventType.RECONCILED:
82
+ if (ev.payload.case === "reconciled") cs.approvedSnapshot = ev.payload.value.approvedSnapshot;
83
+ cs.status = FileChangeSetStatus.RECONCILED;
84
+ break;
85
+ case FileReviewEventType.FAILED:
86
+ cs.status = FileChangeSetStatus.FAILED;
87
+ break;
88
+ default:
89
+ break;
90
+ }
91
+ }
92
+
93
+ function deriveStatusAfterCandidate(cs: FileChangeSet): FileChangeSetStatus {
94
+ if (cs.status === FileChangeSetStatus.RECONCILED || cs.status === FileChangeSetStatus.FAILED) return cs.status;
95
+ return isFullyDecided(cs) ? FileChangeSetStatus.DECIDED : FileChangeSetStatus.AWAITING_REVIEW;
96
+ }
97
+
98
+ function isFullyDecided(cs: FileChangeSet): boolean {
99
+ if (cs.changes.length === 0) return false;
100
+ const decided = new Set<string>();
101
+ for (const d of cs.decisions) {
102
+ if (d.scope === FileDecisionScope.CHANGE_SET) return true;
103
+ if (d.scope === FileDecisionScope.FILE) decided.add(d.fileChangeId);
104
+ }
105
+ return cs.changes.every((c) => decided.has(c.id));
106
+ }
107
+
108
+ /** The paths a reviewer decides, by workspace-relative path (the change's `path_after || path_before`). */
109
+ export interface FileReviewVerdicts {
110
+ readonly approve?: readonly string[];
111
+ readonly reject?: readonly string[];
112
+ }
113
+
114
+ /**
115
+ * What the server's `SubmitFileDecision` leaves on the status once every
116
+ * change of every captured set has a per-file verdict: the sets projected
117
+ * from the ledger the runner persisted, each DECIDED, with one FILE-scoped
118
+ * decision per change. A path in neither list is a test bug and throws
119
+ * (the reconcile treats an undecided change as rejected, which would hide
120
+ * the mistake). Returns the number of decisions written.
121
+ */
122
+ export function decideCapturedFileChanges(
123
+ status: AgentExecutionStatus,
124
+ verdicts: FileReviewVerdicts,
125
+ decidedAt: string,
126
+ ): number {
127
+ const approve = new Set(verdicts.approve ?? []);
128
+ const reject = new Set(verdicts.reject ?? []);
129
+ const sets = projectFileChangeSets(status.fileReviewEventStream?.events ?? []);
130
+ let decisions = 0;
131
+ for (const cs of sets) {
132
+ if (cs.status !== FileChangeSetStatus.AWAITING_REVIEW) continue;
133
+ for (const change of cs.changes) {
134
+ const path = change.pathAfter || change.pathBefore;
135
+ const action = approve.has(path) ? FileDecisionAction.APPROVE : reject.has(path) ? FileDecisionAction.REJECT : undefined;
136
+ if (action === undefined) throw new Error(`decideCapturedFileChanges: no verdict for '${path}' in change set '${cs.id}' (test bug)`);
137
+ cs.decisions.push(
138
+ create(FileDecisionSchema, {
139
+ id: `${cs.id}:decision:${decisions}`,
140
+ changeSetId: cs.id,
141
+ scope: FileDecisionScope.FILE,
142
+ fileChangeId: change.id,
143
+ action,
144
+ expectedDigest: change.fileDigest,
145
+ reviewerId: "kit-reviewer",
146
+ decidedAt,
147
+ origin: FileDecisionOrigin.USER,
148
+ }),
149
+ );
150
+ decisions += 1;
151
+ }
152
+ cs.status = deriveStatusAfterCandidate(cs);
153
+ }
154
+ status.fileChangeSets = sets;
155
+ return decisions;
156
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * A hermetic git work tree and the session workspace entry that mounts it —
3
+ * the substrate every file-review (capture-mode) scenario stands on, whatever
4
+ * harness runs the turn.
5
+ *
6
+ * Harness-agnostic: the runtime's capture reads a git tree the same way for
7
+ * every engine, so the fixture lives beside `hermetic-activity.ts` and is
8
+ * imported by each harness's driver (`execute-cursor/__test-utils__/
9
+ * hermetic-cursor.ts`, `execute-deep-agent/__test-utils__/hermetic-deep-
10
+ * agent.ts`). Author, committer and both dates are pinned so the commit AND
11
+ * tree object ids are byte-stable — a file-review golden may carry them.
12
+ */
13
+
14
+ import { execFileSync } from "node:child_process";
15
+ import { mkdirSync, writeFileSync } from "node:fs";
16
+ import { dirname, join } from "node:path";
17
+ import { create } from "@bufbuild/protobuf";
18
+ import {
19
+ LocalPathSourceSchema,
20
+ WorkspaceEntrySchema,
21
+ WorkspaceSourceSchema,
22
+ type WorkspaceEntry,
23
+ } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
24
+
25
+ /** A git work tree with the given files committed once, on `main`. */
26
+ export function initGitWorkspace(root: string, files: Record<string, string>): void {
27
+ mkdirSync(root, { recursive: true });
28
+ const gitEnv = {
29
+ ...process.env,
30
+ GIT_AUTHOR_NAME: "hermetic",
31
+ GIT_AUTHOR_EMAIL: "hermetic@stigmer.test",
32
+ GIT_COMMITTER_NAME: "hermetic",
33
+ GIT_COMMITTER_EMAIL: "hermetic@stigmer.test",
34
+ GIT_AUTHOR_DATE: "2026-01-01T00:00:00Z",
35
+ GIT_COMMITTER_DATE: "2026-01-01T00:00:00Z",
36
+ };
37
+ const git = (args: string[]): void => {
38
+ execFileSync("git", args, { cwd: root, env: gitEnv, stdio: "ignore" });
39
+ };
40
+ git(["init", "-q", "-b", "main"]);
41
+ for (const [rel, content] of Object.entries(files)) {
42
+ const abs = join(root, rel);
43
+ mkdirSync(dirname(abs), { recursive: true });
44
+ writeFileSync(abs, content, "utf-8");
45
+ }
46
+ git(["add", "-A"]);
47
+ git(["commit", "-q", "-m", "initial"]);
48
+ }
49
+
50
+ /** A session workspace entry mounting an absolute local path (local mode only). */
51
+ export function localPathEntry(name: string, path: string): WorkspaceEntry {
52
+ return create(WorkspaceEntrySchema, {
53
+ name,
54
+ source: create(WorkspaceSourceSchema, {
55
+ source: { case: "localPath", value: create(LocalPathSourceSchema, { path }) },
56
+ }),
57
+ });
58
+ }
@@ -13,8 +13,13 @@
13
13
  * Arms (argv[2]):
14
14
  * - `boot`: import the two pre-boot modules, boot with a proxy endpoint and
15
15
  * a bound token ref. Success means the pre-boot graph was connect-free,
16
- * both interceptors installed, `assertHttp2ConnectPatched` passed, and the
17
- * SDK slice loaded from inside `boot`.
16
+ * both interceptors installed, `assertHttp2ConnectPatched` passed, the
17
+ * Cursor SDK slice loaded from inside its `boot`, and the native
18
+ * deep-agent adapter (the table's second row since S3 M2b) registered its
19
+ * profiles and loaded LangChain after the patch. That neither engine is
20
+ * on the table's STATIC graph is each adapter's own fence
21
+ * (`adapter-graph-is-sdk-free.test.ts`); this child proves the boot
22
+ * ORDER in a real process.
18
23
  * - `boot-after-connect-node`: the same, after importing the Stigmer client
19
24
  * (connect-node) FIRST. Must fail with the facade sentence: proves the
20
25
  * guard is live inside `boot`, so a future regression is loud.