@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
@@ -16,9 +16,9 @@
16
16
  * sequences them, and the adapter runs its own harness-specific steps after
17
17
  * the whole record exists.
18
18
  *
19
- * Shape, chosen against `execute-deep-agent/setup.ts`: a typed record built
20
- * from small functions (the `SetupResult` mold), never one 775-line
21
- * `performSetup`. The record is the adapter contract's `TurnInput`
19
+ * Shape, chosen against the native orchestrator's `setup.ts` (deleted at S3
20
+ * M2b): a typed record built from small functions (the `SetupResult` mold),
21
+ * never one 775-line `performSetup`. The record is the adapter contract's `TurnInput`
22
22
  * (`types.ts`): every phase returns a named slice of it, and
23
23
  * {@link resolveTurnContext} composes the whole. There is no wider
24
24
  * "runtime-private" record beside it — the lock release and the write-back
@@ -63,7 +63,7 @@
63
63
  * Every `index.ts` line reference below was read from `2c06bc7ea` on
64
64
  * 2026-09-11, before the orchestrator moved onto this module.
65
65
  */
66
- import type { AgentExecution, AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
66
+ import { type AgentExecution, type AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
67
67
  import type { AgentExecutionSpec } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/spec_pb";
68
68
  import { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
69
69
  import type { Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
@@ -75,10 +75,9 @@ import type { TimingRecorder } from "../shared/cold-start-timing.js";
75
75
  import { type ResolvedBlueprint } from "../shared/blueprint-resolver.js";
76
76
  import { WriteBackCoordinator } from "../shared/workspace/writeback-coordinator.js";
77
77
  import { WorkspaceLockTimeoutError, type ReleaseWorkspaceLock } from "../shared/workspace/workspace-lock.js";
78
- import { type SkillMetadata } from "../shared/skill-resolver.js";
79
78
  import { type VisionProfile } from "../shared/attachment-vision.js";
80
- import type { FileReviewIdentity, HarnessCapabilities, StateIdSource } from "./capabilities.js";
81
- import type { TurnAttachments, TurnEnvironment, TurnInput, TurnMcp, TurnModelPreferences, TurnStandingContext, TurnWorkspace } from "./types.js";
79
+ import type { FileReviewIdentity, HarnessCapabilities, PausePrimitive, StateIdSource } from "./capabilities.js";
80
+ import type { TurnAttachments, TurnEnvironment, TurnInput, TurnMcp, TurnModelPreferences, TurnSkills, TurnStandingContext, TurnWorkspace } from "./types.js";
82
81
  /**
83
82
  * What every phase reads from its caller. The activity's identity and the
84
83
  * runtime's own seams; nothing harness-specific. The four function members
@@ -124,9 +123,8 @@ export interface ResolutionDeps {
124
123
  * `TurnInput`: `isReinvocation` is the adapter's own derivation from
125
124
  * `threadId` (the contract carries no flag by design, `types.ts` header) and
126
125
  * the runtime reads it only inside {@link resolveTurnContext}; the decisions
127
- * ARE on the input. The seeded sub-agent rows are the adapter's to clone from
128
- * `execution.status` (its accumulator owns `status.subAgentExecutions` and
129
- * overwrites it on every flush), so they ride nothing here.
126
+ * ARE on the input. The seeded rows of every kind are on `sink.status`
127
+ * ({@link seedFromPersistedStatus}); an adapter wraps them by reference.
130
128
  */
131
129
  export interface TurnReinvocation {
132
130
  /** The engine already holds state for this execution (derived per {@link isReinvocation}). */
@@ -143,18 +141,17 @@ export interface TurnReinvocation {
143
141
  * - `workspace-lock-timeout`: another turn held the primary tree past
144
142
  * `Config.workspaceLockTimeoutMs`. FAILED, returned (a Temporal retry
145
143
  * would queue behind the same holder).
146
- * - `rejected-by-user`: an adjudicated irreversible action (shell / MCP)
147
- * was REJECTed. FAILED, returned.
148
144
  * - `file-review-resolved`: a pure file-review resume; the agent already
149
145
  * finished its turn during capture and the reconcile is the whole act.
150
146
  * COMPLETED, returned, with the write-back finalized first when the
151
147
  * reconcile held.
148
+ *
149
+ * A REJECTed tool is not a settlement: the run continues without it
150
+ * (`approval-decisions.ts`).
152
151
  */
153
152
  export type TurnSettlement = {
154
153
  readonly kind: "workspace-lock-timeout";
155
154
  readonly error: WorkspaceLockTimeoutError;
156
- } | {
157
- readonly kind: "rejected-by-user";
158
155
  } | {
159
156
  readonly kind: "file-review-resolved";
160
157
  readonly failed: boolean;
@@ -192,21 +189,23 @@ export type ReinvocationOutcome = {
192
189
  * and the legacy positional wire shape yields 0, so `turnSeq` cannot be
193
190
  * the signal (`index.ts` L402-407).
194
191
  * - `deterministic` (native: the runtime-minted thread id): the id exists
195
- * on the FIRST turn too, so the evidence is the persisted transcript
196
- * (pending approvals, DECIDED sets). That arm lands in S3 with the native
197
- * adapter; until then this function refuses rather than guess.
198
- */
199
- export declare function isReinvocation(stateIdSource: StateIdSource, input: NormalizedActivityInput): boolean;
200
- /**
201
- * The runtime's one reader of approval decisions: every top-level tool-call
202
- * row still WAITING_APPROVAL whose `approvalAction` the server has set,
203
- * keyed by tool-call id. Derived from the status on every invocation, never
204
- * stored, so it cannot drift from the rows. The same rows, in the same
205
- * order, that the Cursor adapter's `reconstructAdjudicatedApprovals` reads
206
- * for its own facts (the pending-approval protos and content digests); a
207
- * test pins the two readers' agreement.
192
+ * on the FIRST turn too, so the evidence is the persisted transcript.
193
+ * Whether the execution already has committed history is the ONE signal
194
+ * that behaves identically across the engine's checkpointer backends:
195
+ * a durable saver (sqlite locally, http in cloud) keeps the checkpoint
196
+ * and resumes from it, while the test-only memory saver recreates it
197
+ * empty and replays from scratch — so the live checkpoint cannot be the
198
+ * signal (native's `shouldSeedFromPersistedTranscript`, retired with its
199
+ * orchestrator). A first run has no persisted messages and starts from
200
+ * empty, as it always did.
201
+ *
202
+ * This is the runtime's own reading, for its phases (the seed, the reconcile,
203
+ * the exact-apply). An adapter that needs create-vs-resume for its ENGINE
204
+ * reads `input.threadId` itself for an engine-minted harness that is the
205
+ * same bit, for a deterministic one the engine's checkpoint is the adapter's
206
+ * to consult — so the contract carries no flag with two meanings (Q-M1-7).
208
207
  */
209
- export declare function approvalDecisionsOf(status: AgentExecutionStatus): ReadonlyMap<string, ApprovalAction>;
208
+ export declare function isReinvocation(stateIdSource: StateIdSource, input: NormalizedActivityInput, execution: AgentExecution): boolean;
210
209
  /** The facts the reinvocation decision reads; produced by {@link reconcileReinvocation}, exposed for the decision's own tests. */
211
210
  export interface ReinvocationFacts {
212
211
  readonly approvalDecisions: ReadonlyMap<string, ApprovalAction>;
@@ -218,45 +217,72 @@ export interface ReinvocationFacts {
218
217
  readonly discardedPaths: readonly string[];
219
218
  }
220
219
  /**
221
- * How a reinvocation proceeds, decided once from the facts (`index.ts`
222
- * L547-618): a REJECT of an irreversible action fails the turn; any other
223
- * adjudicated decision runs the agent (the approved shell/MCP proceeds and
224
- * may produce further edits); a resume that reconciled file review and
225
- * decided nothing else is complete, because keeping or discarding a file
226
- * never re-prompts the agent (Cursor-like). `undefined` means "run the
227
- * agent".
220
+ * How a reinvocation proceeds, decided once from the facts: any adjudicated
221
+ * decision runs the agent an approved shell/MCP proceeds and may produce
222
+ * further edits; a SKIP or REJECT denies its tool and the run continues
223
+ * without it (the row is settled SKIPPED after the turn,
224
+ * `approval-decisions.ts`); a resume that reconciled file review and decided
225
+ * nothing else is complete, because keeping or discarding a file never
226
+ * re-prompts the agent (Cursor-like). `undefined` means "run the agent".
227
+ *
228
+ * Until S3 M1 a REJECT failed the turn here with its own FAILED arm, Cursor's
229
+ * legacy; the proto (`APPROVAL_ACTION_REJECT`: "does NOT fail the run"), the
230
+ * conformance suite and the native harness said otherwise since stigmer#197,
231
+ * and the runtime now agrees (S2 M4 finding F1; Q-S3-2).
228
232
  */
229
233
  export declare function decideReinvocation(facts: ReinvocationFacts): Exclude<TurnSettlement, {
230
234
  kind: "workspace-lock-timeout";
231
235
  }> | undefined;
232
236
  /**
233
- * Seed an in-progress status from the persisted execution on a durable
234
- * resume (HITL approval, pause/resume, transient recovery) so the upcoming
235
- * turn APPENDS onto prior history instead of replacing it.
236
- *
237
- * Why it is required: a resumed engine re-issues the previously gated tool
238
- * calls with brand-new call ids. Without seeding, the harness's accumulator
239
- * would rebuild the transcript from empty and emit a status that drops the
240
- * already-committed tool-call ids. The backend's append-only-at-identity
241
- * guard rejects any non-terminal update that drops a committed tool-call id,
242
- * so the resumed progress would never persist: the run stalls in
243
- * WAITING_FOR_APPROVAL with no pending approvals and the workflow watchdog
244
- * fails it. Seeding makes the resume status a strict superset; the re-runs
245
- * are then reconciled in place onto these seeded calls by canonical identity
246
- * inside the accumulator.
247
- *
248
- * The persisted protos are cloned so the input execution stays immutable.
249
- * Messages are pushed into `status.messages` (which the accumulator wraps by
250
- * reference) BEFORE the accumulator is constructed. Sub-agent executions are
251
- * NOT seeded here: the Cursor accumulator owns `status.subAgentExecutions`
252
- * and overwrites it on every flush, so the adapter clones them itself from
253
- * `input.execution.status` under the same "left a transcript" test.
237
+ * Seed an in-progress status from the persisted execution on a resume (HITL
238
+ * approval, pause/resume, transient recovery) so the upcoming turn APPENDS
239
+ * onto prior history instead of replacing it.
240
+ *
241
+ * Why the transcript must be seeded: a resumed engine re-issues the
242
+ * previously gated tool calls with brand-new call ids. Without seeding, the
243
+ * harness's accumulator would rebuild the transcript from empty and emit a
244
+ * status that drops the already-committed tool-call ids. The backend's
245
+ * append-only-at-identity guard rejects any non-terminal update that drops a
246
+ * committed tool-call id, so the resumed progress would never persist: the
247
+ * run stalls in WAITING_FOR_APPROVAL with no pending approvals and the
248
+ * workflow watchdog fails it. Seeding makes the resume status a strict
249
+ * superset; the re-runs are then reconciled in place onto these seeded calls
250
+ * by canonical identity inside the accumulator.
251
+ *
252
+ * Why the OTHER collections must be seeded too — the server's merge rule
253
+ * (`stigmer-server/src/domain/agentexecution/update-status.ts`): every list
254
+ * and singleton the runner owns is PRESENCE-GUARDED and then REPLACED
255
+ * wholesale `subAgentExecutions`, `todos`, `artifacts`,
256
+ * `workspaceWriteBacks` when non-empty (L327-345); `streamingUsage`,
257
+ * `recalledMemoriesReport`, `structuredOutput` when defined (L492-526). So
258
+ * the loss an unseeded resume suffers is not "empty replaces full" (the
259
+ * guard covers that) but "PARTIAL replaces full": a resumed turn that
260
+ * publishes one artifact, delegates one sub-agent, or touches one to-do
261
+ * sends a list holding only that, and the server replaces the prior turn's
262
+ * whole list with it. Seeding every one makes each write a superset again.
263
+ *
264
+ * What is NOT seeded, and why: `fileChangeSets` and `pendingApprovals` are
265
+ * DERIVED by the server from its own ledgers on every write;
266
+ * `fileReviewEventStream` and `approvalEventStream` are server-owned ledgers
267
+ * the runner only APPENDS its own events to; `fileChangeProgress`,
268
+ * `setupProgress` and `contextInfo` are one turn's own or the server's; and
269
+ * `phase`, `startedAt`, `completedAt`, `error` are this turn's fresh
270
+ * terminal, written by the runtime.
271
+ *
272
+ * Every collection is mutated IN PLACE (pushed into, assigned into), never
273
+ * reassigned: the write-back coordinator already wraps this status through
274
+ * `statusProtoWriter`, and the harness's accumulator wraps `messages` and
275
+ * `subAgentExecutions` by reference after this runs, so a reassigned array
276
+ * would leave a wrapper holding the old one. The persisted protos are
277
+ * cloned so the input execution stays immutable.
254
278
  *
255
279
  * Moved from `execute-cursor/index.ts` `seedCursorTranscriptFromExecution`
256
- * (L2468-2478); the native twin is `execute-deep-agent/index.ts`
257
- * `seedStatusFromExecution` (S3 retires it).
280
+ * (messages only) and widened at S3 M1 to what native's whole-status clone
281
+ * (`execute-deep-agent/index.ts` `seedStatusFromExecution`, retired with its
282
+ * orchestrator) always carried, minus the fields above that it carried by
283
+ * accident (Q-S3-16).
258
284
  */
259
- export declare function seedTranscriptFromExecution(status: AgentExecutionStatus, execution: AgentExecution): void;
285
+ export declare function seedFromPersistedStatus(status: AgentExecutionStatus, execution: AgentExecution): void;
260
286
  /** Phase 1 (`index.ts` L325-330): hydrate the execution from the control plane. */
261
287
  export declare function fetchExecution(deps: ResolutionDeps): Promise<{
262
288
  readonly execution: AgentExecution;
@@ -334,7 +360,7 @@ export declare function bindTelemetryBaggage(deps: ResolutionDeps, args: {
334
360
  * whether this one runs the agent at all.
335
361
  *
336
362
  * On a reinvocation, first seed the in-progress status from the persisted
337
- * execution ({@link seedTranscriptFromExecution}), BEFORE the harness's
363
+ * execution ({@link seedFromPersistedStatus}), BEFORE the harness's
338
364
  * accumulator wraps `status.messages`. Then the file-review reconcile (the
339
365
  * dual-source half): every change set the server projected as DECIDED is
340
366
  * reconciled from the ledger decisions and the pinned git refs (approved
@@ -398,31 +424,53 @@ export declare function resolveMcpServersAndPolicies(deps: ResolutionDeps, args:
398
424
  }): Promise<TurnMcp>;
399
425
  /**
400
426
  * Phase 5 (`index.ts` L493-501, the orchestrator's position between the
401
- * tool surface and the attachments): mount the merged skills under the
402
- * session's platform dir, reachable from the workspace through its
403
- * `.stigmer` link, and return what a prompt renders (`shared/skill-
404
- * resolver.ts`). Reads the control plane, which is why it is the runtime's
405
- * and not a harness's; each harness places the returned metadata in its own
406
- * prompt shape. The `.stigmer` link this and the attachment phase create is
407
- * removed in the runtime's finally, after the harness's own teardown.
427
+ * tool surface and the attachments): mount the skills under the session's
428
+ * platform dir, reachable from the workspace through its `.stigmer` link,
429
+ * and return what a prompt renders, per owner (`shared/skill-resolver.ts`).
430
+ * Reads the control plane, which is why it is the runtime's and not a
431
+ * harness's; each harness places the returned metadata in its own prompt
432
+ * shapes the root's in its system prompt, a sub-agent's in that
433
+ * sub-agent's, client-free.
434
+ *
435
+ * The root's refs are the blueprint's merged set (agent plus session); a
436
+ * sub-agent's are its own `skillRefs`. Each ref resolves through the same
437
+ * resolver, so a skill the root and a sub-agent share is fetched per owner
438
+ * but MOUNTED once (the hash-keyed mount marker turns the second write into
439
+ * a no-op), and a ref that fails resolves to nothing for that owner alone,
440
+ * warned and never thrown, as the root's always did. Sub-agent refs are
441
+ * resolved only for a harness whose `capabilities.subAgents` is true: the
442
+ * blueprint's sub-agents are that harness's to compile, so their skills are
443
+ * its to render. One progress label for the whole phase, as before.
444
+ *
445
+ * The `.stigmer` link this and the attachment phase create is removed in
446
+ * the runtime's finally, after the harness's own teardown. Until S3 M1 the
447
+ * native orchestrator fetched and mounted sub-agent skills itself
448
+ * (`subagent-transformer.ts` with a client); this phase is where that read
449
+ * lives now (Q-S3-5).
408
450
  */
409
451
  export declare function mountSkills(deps: ResolutionDeps, args: {
410
452
  readonly blueprint: ResolvedBlueprint;
411
453
  readonly sessionId: string;
412
454
  readonly primaryDir: string;
413
- }): Promise<readonly SkillMetadata[]>;
455
+ readonly subAgents: boolean;
456
+ }): Promise<TurnSkills>;
414
457
  /**
415
458
  * Phase 5b (`index.ts` L803-838): resolve the turn's attachments, fail-hard
416
459
  * (they are explicit user inputs; see `shared/attachment-resolver.ts`).
417
460
  * Downloads by storage key through the same artifact storage resolved for
418
461
  * status offload. The vision budget rides along so image attachments are
419
462
  * selected for inline delivery while their bytes are already in hand
420
- * (`shared/attachment-vision.ts` owns all policy); it carries the requested
421
- * model's registry vision capability, looked up from the raw
422
- * executionConfig name, because full model validation isn't needed for
423
- * this and ""/"default" (the Auto pool) resolves to unknown, which the
424
- * policy treats as sighted. The vision profile is the harness's (each
425
- * engine accepts different image shapes), so it arrives as an argument.
463
+ * (`shared/attachment-vision.ts` owns all policy); it carries the vision
464
+ * capability of the model the turn will run on: the one the execution named,
465
+ * or the registry's default when it named none — the model the native
466
+ * harness builds in that case, so the budget asks about the model that will
467
+ * actually see the image. Full model validation is not needed for this. The
468
+ * Cursor harness with no model named builds its own catalog default instead
469
+ * (`resolveModelId("default")`), so for it this is an approximation: today
470
+ * both answers read as sighted, and the exact per-harness default is S4's
471
+ * to declare (S3 M1 finding F-M1-4). The vision profile is the harness's
472
+ * (each engine accepts different image shapes), so it arrives as an
473
+ * argument.
426
474
  */
427
475
  export declare function resolveTurnAttachments(deps: ResolutionDeps, args: {
428
476
  readonly spec: AgentExecutionSpec;
@@ -430,6 +478,21 @@ export declare function resolveTurnAttachments(deps: ResolutionDeps, args: {
430
478
  readonly primaryDir: string;
431
479
  readonly visionProfile: VisionProfile;
432
480
  }): Promise<TurnAttachments>;
481
+ /**
482
+ * Whether a harness performs an approved call by RE-RUNNING the model, so
483
+ * the bytes an approved whole-file write lands can differ from the bytes the
484
+ * user approved unless the runner pins them itself
485
+ * ({@link applyApprovedWrites}). Keyed on the pause primitive
486
+ * (`capabilities.ts`): `deny-and-retry` denies the call and re-prompts the
487
+ * model with grants; `callback` answers "deny, stop" and the resumed session
488
+ * re-attempts the call — both regenerate. An `interrupt` engine checkpoints
489
+ * AT the call and applies its exact args on `approve`, so a runner-side
490
+ * write would land the same bytes twice and pre-empt a row the engine is
491
+ * about to execute; `none` gates nothing. Until S3 M2a the phase ran for
492
+ * every harness — a deny-and-retry mechanism the native harness would have
493
+ * met on its first deny-gated file approval (F-M2a-2, Q-M2a-3).
494
+ */
495
+ export declare function regeneratesApprovedWrites(pausePrimitive: PausePrimitive): boolean;
433
496
  /**
434
497
  * Phase 5b3 (`index.ts` L849-867): exact-apply approved whole-file writes
435
498
  * (HITL "what you approve is what gets applied"). A deny-only harness
@@ -442,14 +505,16 @@ export declare function resolveTurnAttachments(deps: ResolutionDeps, args: {
442
505
  * uncertain case degrades to that path, so this can never corrupt a file
443
506
  * (see `shared/exact-apply.ts`).
444
507
  *
445
- * Scoped OUT of capture mode, which does not reinvoke the model for file
446
- * edits: it applies the exact captured bytes itself in the reconcile.
508
+ * Scoped to the harnesses that regenerate ({@link regeneratesApprovedWrites})
509
+ * and OUT of capture mode, which does not reinvoke the model for file edits:
510
+ * it applies the exact captured bytes itself in the reconcile.
447
511
  *
448
512
  * The caller persists when the returned set is non-empty (the applied state
449
513
  * must be durable before the continuation runs, and the UI reflects it at
450
514
  * once); this phase, like every phase, never persists.
451
515
  */
452
516
  export declare function applyApprovedWrites(deps: ResolutionDeps, args: {
517
+ readonly pausePrimitive: PausePrimitive;
453
518
  readonly workspace: TurnWorkspace;
454
519
  readonly reinvocation: TurnReinvocation;
455
520
  }): Promise<ReadonlySet<string>>;