@stigmer/runner 3.15.3-dev.20260914121148 → 3.15.3-dev.20260916211208

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 (522) hide show
  1. package/README.md +1 -0
  2. package/dist/.build-fingerprint +1 -1
  3. package/dist/__test-utils__/approval-contract/types.d.ts +1 -1
  4. package/dist/__test-utils__/hermetic-activity.d.ts +61 -7
  5. package/dist/__test-utils__/hermetic-activity.js +100 -9
  6. package/dist/__test-utils__/hermetic-activity.js.map +1 -1
  7. package/dist/__test-utils__/model-registry-fixture.d.ts +22 -3
  8. package/dist/__test-utils__/model-registry-fixture.js +22 -7
  9. package/dist/__test-utils__/model-registry-fixture.js.map +1 -1
  10. package/dist/activities/execute-cursor/__test-utils__/contract-subject.d.ts +2 -2
  11. package/dist/activities/execute-cursor/__test-utils__/contract-subject.js +2 -2
  12. package/dist/activities/execute-cursor/__test-utils__/fold.d.ts +61 -0
  13. package/dist/activities/execute-cursor/__test-utils__/fold.js +94 -0
  14. package/dist/activities/execute-cursor/__test-utils__/fold.js.map +1 -0
  15. package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.js +1 -1
  16. package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.js.map +1 -1
  17. package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.d.ts +47 -12
  18. package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js +41 -10
  19. package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js.map +1 -1
  20. package/dist/activities/execute-cursor/__test-utils__/scripted-agent.d.ts +15 -6
  21. package/dist/activities/execute-cursor/__test-utils__/scripted-agent.js +17 -4
  22. package/dist/activities/execute-cursor/__test-utils__/scripted-agent.js.map +1 -1
  23. package/dist/activities/execute-cursor/adapter.d.ts +4 -4
  24. package/dist/activities/execute-cursor/adapter.js +4 -4
  25. package/dist/activities/execute-cursor/approval-policy.d.ts +10 -10
  26. package/dist/activities/execute-cursor/approval-policy.js +12 -23
  27. package/dist/activities/execute-cursor/approval-policy.js.map +1 -1
  28. package/dist/activities/execute-cursor/approval-state.d.ts +35 -1
  29. package/dist/activities/execute-cursor/approval-state.js +65 -0
  30. package/dist/activities/execute-cursor/approval-state.js.map +1 -1
  31. package/dist/activities/execute-cursor/{message-translator.d.ts → boundary-rows.d.ts} +45 -341
  32. package/dist/activities/execute-cursor/boundary-rows.js +1018 -0
  33. package/dist/activities/execute-cursor/boundary-rows.js.map +1 -0
  34. package/dist/activities/execute-cursor/cursor-capabilities.d.ts +1 -1
  35. package/dist/activities/execute-cursor/cursor-capabilities.js +1 -1
  36. package/dist/activities/execute-cursor/cursor-event-recorder.d.ts +33 -14
  37. package/dist/activities/execute-cursor/cursor-event-recorder.js +43 -21
  38. package/dist/activities/execute-cursor/cursor-event-recorder.js.map +1 -1
  39. package/dist/activities/execute-cursor/prompt-builder.d.ts +3 -3
  40. package/dist/activities/execute-cursor/prompt-builder.js +4 -4
  41. package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
  42. package/dist/activities/execute-cursor/service-tier.js +1 -2
  43. package/dist/activities/execute-cursor/service-tier.js.map +1 -1
  44. package/dist/activities/execute-cursor/sub-agent-steps.d.ts +79 -0
  45. package/dist/activities/execute-cursor/sub-agent-steps.js +180 -0
  46. package/dist/activities/execute-cursor/sub-agent-steps.js.map +1 -0
  47. package/dist/activities/execute-cursor/tool-result.d.ts +49 -0
  48. package/dist/activities/execute-cursor/tool-result.js +130 -0
  49. package/dist/activities/execute-cursor/tool-result.js.map +1 -0
  50. package/dist/activities/execute-cursor/translator.d.ts +178 -0
  51. package/dist/activities/execute-cursor/translator.js +485 -0
  52. package/dist/activities/execute-cursor/translator.js.map +1 -0
  53. package/dist/activities/execute-cursor/turn-boundary.d.ts +15 -5
  54. package/dist/activities/execute-cursor/turn-boundary.js +10 -14
  55. package/dist/activities/execute-cursor/turn-boundary.js.map +1 -1
  56. package/dist/activities/execute-cursor/turn-settle.d.ts +11 -7
  57. package/dist/activities/execute-cursor/turn-settle.js +47 -34
  58. package/dist/activities/execute-cursor/turn-settle.js.map +1 -1
  59. package/dist/activities/execute-cursor/turn-setup.d.ts +2 -2
  60. package/dist/activities/execute-cursor/turn-setup.js +5 -5
  61. package/dist/activities/execute-cursor/turn-setup.js.map +1 -1
  62. package/dist/activities/execute-cursor/turn-stream.d.ts +23 -14
  63. package/dist/activities/execute-cursor/turn-stream.js +41 -28
  64. package/dist/activities/execute-cursor/turn-stream.js.map +1 -1
  65. package/dist/activities/execute-cursor/turn.d.ts +4 -4
  66. package/dist/activities/execute-cursor/turn.js +5 -5
  67. package/dist/activities/execute-cursor/usage-pricing.d.ts +2 -2
  68. package/dist/activities/execute-cursor/usage-pricing.js +2 -2
  69. package/dist/activities/execute-deep-agent/__test-utils__/contract-subject.d.ts +2 -2
  70. package/dist/activities/execute-deep-agent/__test-utils__/contract-subject.js +2 -2
  71. package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.d.ts +16 -11
  72. package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.js +22 -10
  73. package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.js.map +1 -1
  74. package/dist/activities/execute-deep-agent/__test-utils__/hitl-script.js +1 -1
  75. package/dist/activities/execute-deep-agent/__test-utils__/hitl-script.js.map +1 -1
  76. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.d.ts +2 -3
  77. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.js +2 -3
  78. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.js.map +1 -1
  79. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.d.ts +12 -3
  80. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js +18 -4
  81. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js.map +1 -1
  82. package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.d.ts +10 -1
  83. package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.js +24 -11
  84. package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.js.map +1 -1
  85. package/dist/activities/execute-deep-agent/adapter.d.ts +1 -1
  86. package/dist/activities/execute-deep-agent/adapter.js +1 -1
  87. package/dist/activities/execute-deep-agent/approval-file-change.d.ts +19 -19
  88. package/dist/activities/execute-deep-agent/approval-file-change.js +16 -15
  89. package/dist/activities/execute-deep-agent/approval-file-change.js.map +1 -1
  90. package/dist/activities/execute-deep-agent/deep-agent-capabilities.d.ts +2 -2
  91. package/dist/activities/execute-deep-agent/deep-agent-capabilities.js +2 -2
  92. package/dist/activities/execute-deep-agent/hitl.d.ts +2 -2
  93. package/dist/activities/execute-deep-agent/hitl.js +2 -2
  94. package/dist/activities/execute-deep-agent/inline-publisher.d.ts +13 -3
  95. package/dist/activities/execute-deep-agent/inline-publisher.js +3 -3
  96. package/dist/activities/execute-deep-agent/inline-publisher.js.map +1 -1
  97. package/dist/activities/execute-deep-agent/prompt-builder.d.ts +3 -3
  98. package/dist/activities/execute-deep-agent/prompt-builder.js +6 -7
  99. package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
  100. package/dist/activities/execute-deep-agent/streaming-side-effects.d.ts +16 -8
  101. package/dist/activities/execute-deep-agent/streaming-side-effects.js +20 -33
  102. package/dist/activities/execute-deep-agent/streaming-side-effects.js.map +1 -1
  103. package/dist/activities/execute-deep-agent/subagent-transformer.d.ts +3 -3
  104. package/dist/activities/execute-deep-agent/subagent-transformer.js +1 -1
  105. package/dist/activities/execute-deep-agent/translator.d.ts +134 -0
  106. package/dist/activities/execute-deep-agent/translator.js +418 -0
  107. package/dist/activities/execute-deep-agent/translator.js.map +1 -0
  108. package/dist/activities/execute-deep-agent/turn-settle.d.ts +13 -7
  109. package/dist/activities/execute-deep-agent/turn-settle.js +34 -45
  110. package/dist/activities/execute-deep-agent/turn-settle.js.map +1 -1
  111. package/dist/activities/execute-deep-agent/turn-setup.d.ts +8 -8
  112. package/dist/activities/execute-deep-agent/turn-setup.js +7 -7
  113. package/dist/activities/execute-deep-agent/turn-stream.d.ts +13 -10
  114. package/dist/activities/execute-deep-agent/turn-stream.js +44 -41
  115. package/dist/activities/execute-deep-agent/turn-stream.js.map +1 -1
  116. package/dist/activities/execute-deep-agent/turn.d.ts +3 -3
  117. package/dist/activities/execute-deep-agent/turn.js +3 -3
  118. package/dist/config.d.ts +2 -2
  119. package/dist/harness/approval-decisions.d.ts +1 -1
  120. package/dist/harness/approval-decisions.js +1 -1
  121. package/dist/harness/capabilities.d.ts +21 -11
  122. package/dist/harness/capabilities.js +2 -2
  123. package/dist/harness/capture.d.ts +4 -4
  124. package/dist/harness/capture.js +4 -4
  125. package/dist/harness/persist-chokepoint.d.ts +3 -3
  126. package/dist/harness/persist-chokepoint.js +3 -3
  127. package/dist/harness/registry.d.ts +2 -2
  128. package/dist/harness/registry.js +2 -2
  129. package/dist/harness/run-turn.d.ts +6 -4
  130. package/dist/harness/run-turn.js +31 -9
  131. package/dist/harness/run-turn.js.map +1 -1
  132. package/dist/harness/stop-controller.d.ts +1 -1
  133. package/dist/harness/stop-controller.js +1 -1
  134. package/dist/harness/terminal-table.d.ts +7 -7
  135. package/dist/harness/terminal-table.js +7 -7
  136. package/dist/harness/transcript/builder.d.ts +182 -0
  137. package/dist/harness/transcript/builder.js +693 -0
  138. package/dist/harness/transcript/builder.js.map +1 -0
  139. package/dist/harness/transcript/events.d.ts +218 -0
  140. package/dist/harness/transcript/events.js +50 -0
  141. package/dist/harness/transcript/events.js.map +1 -0
  142. package/dist/harness/transcript/state.d.ts +110 -0
  143. package/dist/harness/transcript/state.js +148 -0
  144. package/dist/harness/transcript/state.js.map +1 -0
  145. package/dist/harness/turn-context.d.ts +54 -38
  146. package/dist/harness/turn-context.js +42 -43
  147. package/dist/harness/turn-context.js.map +1 -1
  148. package/dist/harness/types.d.ts +63 -22
  149. package/dist/harness/types.js +12 -11
  150. package/dist/harness/types.js.map +1 -1
  151. package/dist/harness/usage-accumulator.d.ts +2 -2
  152. package/dist/harness/usage-accumulator.js +2 -2
  153. package/dist/harness-adapters.d.ts +5 -4
  154. package/dist/harness-adapters.js +5 -4
  155. package/dist/harness-adapters.js.map +1 -1
  156. package/dist/middleware/approval-gate.d.ts +6 -0
  157. package/dist/middleware/approval-gate.js +7 -57
  158. package/dist/middleware/approval-gate.js.map +1 -1
  159. package/dist/middleware/cost-advisory.d.ts +3 -3
  160. package/dist/middleware/cost-advisory.js +3 -3
  161. package/dist/middleware/index.d.ts +1 -1
  162. package/dist/middleware/index.js +1 -1
  163. package/dist/runner-manager.js +1 -1
  164. package/dist/runner-manager.js.map +1 -1
  165. package/dist/shared/approval-policy.d.ts +53 -0
  166. package/dist/shared/approval-policy.js +76 -0
  167. package/dist/shared/approval-policy.js.map +1 -1
  168. package/dist/shared/args-preview.d.ts +45 -22
  169. package/dist/shared/args-preview.js +51 -41
  170. package/dist/shared/args-preview.js.map +1 -1
  171. package/dist/shared/attachment-resolver.d.ts +4 -4
  172. package/dist/shared/attachment-resolver.js +4 -4
  173. package/dist/shared/attachment-zip.d.ts +2 -2
  174. package/dist/shared/attachment-zip.js +2 -2
  175. package/dist/shared/cost-guard.d.ts +2 -2
  176. package/dist/shared/cost-guard.js +2 -2
  177. package/dist/shared/exact-apply.d.ts +1 -1
  178. package/dist/shared/exact-apply.js +1 -1
  179. package/dist/shared/execution-context.d.ts +2 -2
  180. package/dist/shared/execution-context.js +2 -2
  181. package/dist/shared/extract-structured-output.d.ts +2 -2
  182. package/dist/shared/extract-structured-output.js +2 -2
  183. package/dist/shared/filereview/cas-touched.d.ts +2 -2
  184. package/dist/shared/filereview/cas-touched.js +2 -2
  185. package/dist/shared/heartbeat.d.ts +1 -1
  186. package/dist/shared/heartbeat.js +1 -1
  187. package/dist/shared/llm-backend.d.ts +0 -4
  188. package/dist/shared/llm-backend.js +0 -4
  189. package/dist/shared/llm-backend.js.map +1 -1
  190. package/dist/shared/model-error.d.ts +1 -2
  191. package/dist/shared/model-error.js +1 -2
  192. package/dist/shared/model-error.js.map +1 -1
  193. package/dist/shared/persist-decision.d.ts +18 -24
  194. package/dist/shared/persist-decision.js +19 -11
  195. package/dist/shared/persist-decision.js.map +1 -1
  196. package/dist/shared/prompt-sections.d.ts +4 -4
  197. package/dist/shared/prompt-sections.js +4 -4
  198. package/dist/shared/skill-resolver.d.ts +3 -3
  199. package/dist/shared/skill-resolver.js +3 -3
  200. package/dist/shared/status-offload.d.ts +1 -1
  201. package/dist/shared/status-offload.js +2 -2
  202. package/dist/shared/status-offload.js.map +1 -1
  203. package/dist/shared/streaming-scheduler.d.ts +2 -7
  204. package/dist/shared/streaming-scheduler.js +6 -14
  205. package/dist/shared/streaming-scheduler.js.map +1 -1
  206. package/dist/shared/subagent-rows.d.ts +2 -2
  207. package/dist/shared/subagent-rows.js +2 -2
  208. package/dist/shared/todos.d.ts +3 -3
  209. package/dist/shared/todos.js +3 -3
  210. package/dist/shared/tool-row.d.ts +19 -1
  211. package/dist/shared/tool-row.js +36 -2
  212. package/dist/shared/tool-row.js.map +1 -1
  213. package/dist/shared/worker-shutdown.d.ts +1 -1
  214. package/dist/shared/worker-shutdown.js +1 -1
  215. package/dist/shared/workspace/session-provision.d.ts +1 -1
  216. package/dist/shared/workspace/session-provision.js +1 -1
  217. package/dist/shared/workspace/sources/empty.d.ts +1 -1
  218. package/dist/shared/workspace/sources/empty.js +1 -2
  219. package/dist/shared/workspace/sources/empty.js.map +1 -1
  220. package/dist/shared/workspace/sources/git.js +4 -4
  221. package/dist/shared/workspace/sources/git.js.map +1 -1
  222. package/dist/shared/workspace/sources/local-path.js +6 -6
  223. package/dist/shared/workspace/sources/local-path.js.map +1 -1
  224. package/dist/shared/workspace/stigmer-link.d.ts +1 -1
  225. package/dist/shared/workspace/stigmer-link.js +1 -1
  226. package/dist/shared/workspace/types.d.ts +2 -5
  227. package/dist/shared/workspace/types.js +0 -6
  228. package/dist/shared/workspace/types.js.map +1 -1
  229. package/dist/shared/workspace/writeback-coordinator.d.ts +17 -4
  230. package/dist/shared/workspace/writeback-coordinator.js +7 -9
  231. package/dist/shared/workspace/writeback-coordinator.js.map +1 -1
  232. package/package.json +4 -4
  233. package/src/__test-utils__/__tests__/execution-record-barrier.test.ts +70 -0
  234. package/src/__test-utils__/__tests__/harness-contract-self-check.test.ts +35 -1
  235. package/src/__test-utils__/approval-contract/contract.ts +1 -1
  236. package/src/__test-utils__/approval-contract/types.ts +1 -1
  237. package/src/__test-utils__/harness-boot-order-child.ts +1 -1
  238. package/src/__test-utils__/harness-contract/contract.ts +8 -8
  239. package/src/__test-utils__/harness-contract/recording-sink.ts +11 -1
  240. package/src/__test-utils__/harness-contract/runtime-contract.ts +52 -16
  241. package/src/__test-utils__/harness-contract/scripted-adapter.ts +47 -43
  242. package/src/__test-utils__/hermetic-activity.ts +113 -9
  243. package/src/__test-utils__/model-registry-fixture.ts +31 -7
  244. package/src/__test-utils__/module-specifiers.ts +32 -3
  245. package/src/__tests__/harness-boot-order.test.ts +1 -1
  246. package/src/__tests__/harness-contract.test.ts +1 -1
  247. package/src/__tests__/runner-manager.test.ts +1 -1
  248. package/src/activities/execute-cursor/__test-utils__/__tests__/scripted-double.test.ts +1 -1
  249. package/src/activities/execute-cursor/__test-utils__/contract-subject.ts +2 -2
  250. package/src/activities/execute-cursor/__test-utils__/fold.ts +116 -0
  251. package/src/activities/execute-cursor/__test-utils__/gateway-substrate.ts +1 -1
  252. package/src/activities/execute-cursor/__test-utils__/hermetic-cursor.ts +67 -17
  253. package/src/activities/execute-cursor/__test-utils__/scripted-agent.ts +19 -5
  254. package/src/activities/execute-cursor/__tests__/approval-gate.test.ts +2 -1
  255. package/src/activities/execute-cursor/__tests__/approval-state.test.ts +14 -21
  256. package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +3 -3
  257. package/src/activities/execute-cursor/__tests__/coarse-fingerprint.test.ts +2 -1
  258. package/src/activities/execute-cursor/__tests__/cursor-event-recorder.test.ts +142 -0
  259. package/src/activities/execute-cursor/__tests__/cursor-fetch-interceptor-bypass.test.ts +19 -8
  260. package/src/activities/execute-cursor/__tests__/cursor-sdk-auth-smoke.test.ts +10 -8
  261. package/src/activities/execute-cursor/__tests__/cursor-transcript-live.test.ts +298 -0
  262. package/src/activities/execute-cursor/__tests__/deny-gate-exact-apply.test.ts +4 -2
  263. package/src/activities/execute-cursor/__tests__/fetch-interceptor.test.ts +1 -1
  264. package/src/activities/execute-cursor/__tests__/hermetic/deny-and-retry.test.ts +1 -1
  265. package/src/activities/execute-cursor/__tests__/hermetic/file-review-capture.test.ts +1 -1
  266. package/src/activities/execute-cursor/__tests__/hermetic/goldens/mcp-tool-call.status.json +71 -0
  267. package/src/activities/execute-cursor/__tests__/hermetic/goldens/sdk-task-note.status.json +73 -0
  268. package/src/activities/execute-cursor/__tests__/hermetic/goldens/shell-output-delta.error-delta.status.json +78 -0
  269. package/src/activities/execute-cursor/__tests__/hermetic/goldens/shell-output-delta.output-first.status.json +72 -0
  270. package/src/activities/execute-cursor/__tests__/hermetic/goldens/shell-output-delta.status.json +72 -0
  271. package/src/activities/execute-cursor/__tests__/hermetic/goldens/sub-agent-delegation.status.json +109 -0
  272. package/src/activities/execute-cursor/__tests__/hermetic/goldens/thinking-turn.status.json +78 -0
  273. package/src/activities/execute-cursor/__tests__/hermetic/goldens/todo-write.status.json +119 -0
  274. package/src/activities/execute-cursor/__tests__/hermetic/goldens/tool-error.status.json +68 -0
  275. package/src/activities/execute-cursor/__tests__/hermetic/goldens/tool-only-step.status.json +67 -0
  276. package/src/activities/execute-cursor/__tests__/hermetic/goldens/unattributed-hook-block.status.json +1 -1
  277. package/src/activities/execute-cursor/__tests__/hermetic/harness-contract.test.ts +7 -7
  278. package/src/activities/execute-cursor/__tests__/hermetic/mcp-tool-call.test.ts +146 -0
  279. package/src/activities/execute-cursor/__tests__/hermetic/pause-vs-shutdown.test.ts +5 -5
  280. package/src/activities/execute-cursor/__tests__/hermetic/plain-turn.test.ts +2 -1
  281. package/src/activities/execute-cursor/__tests__/hermetic/run-wait-arms.test.ts +2 -1
  282. package/src/activities/execute-cursor/__tests__/hermetic/sdk-task-note.test.ts +122 -0
  283. package/src/activities/execute-cursor/__tests__/hermetic/shell-output-delta.test.ts +276 -0
  284. package/src/activities/execute-cursor/__tests__/hermetic/stream-self-stop-arms.test.ts +8 -8
  285. package/src/activities/execute-cursor/__tests__/hermetic/sub-agent-delegation.test.ts +196 -0
  286. package/src/activities/execute-cursor/__tests__/hermetic/thinking-turn.test.ts +145 -0
  287. package/src/activities/execute-cursor/__tests__/hermetic/thrown-error-arms.test.ts +1 -1
  288. package/src/activities/execute-cursor/__tests__/hermetic/todo-write.test.ts +165 -0
  289. package/src/activities/execute-cursor/__tests__/hermetic/tool-call.test.ts +3 -3
  290. package/src/activities/execute-cursor/__tests__/hermetic/tool-error.test.ts +138 -0
  291. package/src/activities/execute-cursor/__tests__/hermetic/tool-only-step.test.ts +130 -0
  292. package/src/activities/execute-cursor/__tests__/hermetic/unattributed-hook-block.test.ts +13 -1
  293. package/src/activities/execute-cursor/__tests__/hermetic/workspace-lock-timeout.test.ts +2 -2
  294. package/src/activities/execute-cursor/__tests__/hitl-ledger.test.ts +43 -60
  295. package/src/activities/execute-cursor/__tests__/hitl-resume-history.test.ts +23 -28
  296. package/src/activities/execute-cursor/__tests__/hook-script.test.ts +2 -1
  297. package/src/activities/execute-cursor/__tests__/http2-interceptor.test.ts +1 -1
  298. package/src/activities/execute-cursor/__tests__/prompt-goldens.test.ts +5 -5
  299. package/src/activities/execute-cursor/__tests__/same-identity-reproposal.test.ts +11 -13
  300. package/src/activities/execute-cursor/__tests__/sequential-gate-resume.test.ts +8 -11
  301. package/src/activities/execute-cursor/__tests__/tool-result-image.test.ts +8 -22
  302. package/src/activities/execute-cursor/__tests__/translator.test.ts +594 -0
  303. package/src/activities/execute-cursor/__tests__/turn-boundary.test.ts +8 -5
  304. package/src/activities/execute-cursor/__tests__/turn-stream.test.ts +87 -63
  305. package/src/activities/execute-cursor/adapter.ts +4 -4
  306. package/src/activities/execute-cursor/approval-policy.ts +12 -24
  307. package/src/activities/execute-cursor/approval-state.ts +66 -1
  308. package/src/activities/execute-cursor/boundary-rows.ts +1132 -0
  309. package/src/activities/execute-cursor/cursor-capabilities.ts +1 -1
  310. package/src/activities/execute-cursor/cursor-event-recorder.ts +57 -28
  311. package/src/activities/execute-cursor/fetch-interceptor.ts +1 -1
  312. package/src/activities/execute-cursor/http2-interceptor.ts +1 -1
  313. package/src/activities/execute-cursor/prompt-builder.ts +6 -6
  314. package/src/activities/execute-cursor/service-tier.ts +1 -2
  315. package/src/activities/execute-cursor/sub-agent-steps.ts +188 -0
  316. package/src/activities/execute-cursor/tool-result.ts +128 -0
  317. package/src/activities/execute-cursor/translator.ts +541 -0
  318. package/src/activities/execute-cursor/turn-boundary.ts +21 -14
  319. package/src/activities/execute-cursor/turn-settle.ts +46 -34
  320. package/src/activities/execute-cursor/turn-setup.ts +5 -5
  321. package/src/activities/execute-cursor/turn-stream.ts +49 -46
  322. package/src/activities/execute-cursor/turn.ts +5 -5
  323. package/src/activities/execute-cursor/usage-pricing.ts +2 -2
  324. package/src/activities/execute-deep-agent/__test-utils__/contract-subject.ts +2 -2
  325. package/src/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.ts +23 -11
  326. package/src/activities/execute-deep-agent/__test-utils__/hitl-script.ts +1 -1
  327. package/src/activities/execute-deep-agent/__test-utils__/scripted-model-module.ts +2 -3
  328. package/src/activities/execute-deep-agent/__test-utils__/scripted-model.ts +25 -4
  329. package/src/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.ts +25 -11
  330. package/src/activities/execute-deep-agent/__tests__/adapter-graph-is-sdk-free.test.ts +1 -1
  331. package/src/activities/execute-deep-agent/__tests__/adapter-is-temporal-free.test.ts +1 -1
  332. package/src/activities/execute-deep-agent/__tests__/approval-file-change.test.ts +6 -17
  333. package/src/activities/execute-deep-agent/__tests__/hermetic/file-review-capture.test.ts +25 -8
  334. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve-all-lease.turn1.status.json +2 -7
  335. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve-all-lease.turn2.status.json +4 -14
  336. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve.turn2.status.json +1 -5
  337. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/file-review-capture.status.json +4 -7
  338. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/gate.turn1.status.json +1 -5
  339. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/inline-artifact.turn1.status.json +2 -9
  340. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/inline-artifact.turn2.status.json +2 -9
  341. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.after-tool.status.json +1 -4
  342. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.mid-tool.status.json +1 -4
  343. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/platform-stop.status.json +1 -4
  344. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/recursion-limit.persisted.status.json +109 -76
  345. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/reject.turn2.status.json +1 -5
  346. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sequential-gates.turn2.status.json +2 -10
  347. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sequential-gates.turn3.status.json +2 -10
  348. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/skip.turn2.status.json +1 -5
  349. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sub-agent-delegation.status.json +3 -6
  350. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/tool-call.status.json +1 -4
  351. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/worker-shutdown.status.json +1 -4
  352. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/write-todos.status.json +92 -0
  353. package/src/activities/execute-deep-agent/__tests__/hermetic/harness-contract.test.ts +3 -3
  354. package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-approve-all-lease.test.ts +9 -5
  355. package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-round-trips.test.ts +3 -3
  356. package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-sequential-gates.test.ts +3 -3
  357. package/src/activities/execute-deep-agent/__tests__/hermetic/inline-artifact-across-gate.test.ts +7 -6
  358. package/src/activities/execute-deep-agent/__tests__/hermetic/pause-vs-shutdown.test.ts +10 -11
  359. package/src/activities/execute-deep-agent/__tests__/hermetic/plain-turn.test.ts +4 -4
  360. package/src/activities/execute-deep-agent/__tests__/hermetic/platform-stop.test.ts +9 -8
  361. package/src/activities/execute-deep-agent/__tests__/hermetic/recursion-limit.test.ts +21 -13
  362. package/src/activities/execute-deep-agent/__tests__/hermetic/resolution-error.test.ts +2 -2
  363. package/src/activities/execute-deep-agent/__tests__/hermetic/structured-output.test.ts +7 -7
  364. package/src/activities/execute-deep-agent/__tests__/hermetic/sub-agent-delegation.test.ts +28 -12
  365. package/src/activities/execute-deep-agent/__tests__/hermetic/tool-call.test.ts +21 -21
  366. package/src/activities/execute-deep-agent/__tests__/hermetic/workspace-lock-timeout.test.ts +5 -5
  367. package/src/activities/execute-deep-agent/__tests__/hermetic/write-todos.test.ts +160 -0
  368. package/src/activities/execute-deep-agent/__tests__/inline-publisher.test.ts +35 -30
  369. package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +3 -4
  370. package/src/activities/execute-deep-agent/__tests__/prompt-goldens.test.ts +12 -10
  371. package/src/activities/execute-deep-agent/__tests__/scripted-model.test.ts +13 -3
  372. package/src/activities/execute-deep-agent/__tests__/streaming-side-effects.test.ts +26 -18
  373. package/src/activities/execute-deep-agent/__tests__/subagent-wiring.test.ts +1 -1
  374. package/src/activities/execute-deep-agent/__tests__/{subagent-tracker.test.ts → translator-subagents.test.ts} +76 -57
  375. package/src/activities/execute-deep-agent/__tests__/{v3-status-builder.test.ts → translator-through-builder.test.ts} +213 -299
  376. package/src/activities/execute-deep-agent/__tests__/translator.test.ts +505 -0
  377. package/src/activities/execute-deep-agent/__tests__/turn-stream.test.ts +11 -29
  378. package/src/activities/execute-deep-agent/adapter.ts +1 -1
  379. package/src/activities/execute-deep-agent/approval-file-change.ts +20 -22
  380. package/src/activities/execute-deep-agent/deep-agent-capabilities.ts +2 -2
  381. package/src/activities/execute-deep-agent/hitl.ts +2 -2
  382. package/src/activities/execute-deep-agent/inline-publisher.ts +16 -5
  383. package/src/activities/execute-deep-agent/prompt-builder.ts +6 -7
  384. package/src/activities/execute-deep-agent/streaming-side-effects.ts +22 -31
  385. package/src/activities/execute-deep-agent/subagent-transformer.ts +3 -3
  386. package/src/activities/execute-deep-agent/translator.ts +463 -0
  387. package/src/activities/execute-deep-agent/turn-settle.ts +35 -43
  388. package/src/activities/execute-deep-agent/turn-setup.ts +8 -8
  389. package/src/activities/execute-deep-agent/turn-stream.ts +53 -51
  390. package/src/activities/execute-deep-agent/turn.ts +3 -3
  391. package/src/config.ts +2 -2
  392. package/src/harness/README.md +335 -0
  393. package/src/harness/__tests__/approval-decisions.test.ts +2 -2
  394. package/src/harness/__tests__/capture.test.ts +3 -3
  395. package/src/harness/__tests__/import-direction.test.ts +3 -2
  396. package/src/harness/__tests__/mount-skills.test.ts +4 -1
  397. package/src/harness/__tests__/readme-index.test.ts +339 -0
  398. package/src/harness/__tests__/run-turn.test.ts +131 -6
  399. package/src/harness/__tests__/transcript-is-engine-free.test.ts +83 -0
  400. package/src/harness/__tests__/transcript-writers.test.ts +191 -0
  401. package/src/harness/__tests__/turn-attachments-vision.test.ts +5 -2
  402. package/src/harness/__tests__/turn-context.test.ts +5 -5
  403. package/src/harness/approval-decisions.ts +1 -1
  404. package/src/harness/capabilities.ts +21 -11
  405. package/src/harness/capture.ts +4 -4
  406. package/src/harness/persist-chokepoint.ts +3 -3
  407. package/src/harness/registry.ts +2 -2
  408. package/src/harness/run-turn.ts +33 -9
  409. package/src/harness/stop-controller.ts +1 -1
  410. package/src/harness/terminal-table.ts +7 -7
  411. package/src/harness/transcript/__tests__/builder.test.ts +975 -0
  412. package/src/harness/transcript/__tests__/state.test.ts +143 -0
  413. package/src/harness/transcript/builder.ts +755 -0
  414. package/src/harness/transcript/events.ts +262 -0
  415. package/src/harness/transcript/state.ts +167 -0
  416. package/src/harness/turn-context.ts +61 -46
  417. package/src/harness/types.ts +64 -22
  418. package/src/harness/usage-accumulator.ts +2 -2
  419. package/src/harness-adapters.ts +5 -4
  420. package/src/middleware/__tests__/cost-advisory.test.ts +2 -2
  421. package/src/middleware/approval-gate.ts +7 -74
  422. package/src/middleware/cost-advisory.ts +3 -3
  423. package/src/middleware/index.ts +1 -1
  424. package/src/runner-manager.ts +1 -1
  425. package/src/shared/__tests__/approval-policy.test.ts +45 -0
  426. package/src/shared/__tests__/args-preview.test.ts +40 -20
  427. package/src/shared/__tests__/attachment-naming.test.ts +1 -1
  428. package/src/shared/__tests__/attachment-resolver.test.ts +5 -5
  429. package/src/shared/__tests__/attachment-zip.test.ts +1 -1
  430. package/src/shared/__tests__/blueprint-resolver.test.ts +1 -1
  431. package/src/shared/__tests__/cost-guard.test.ts +1 -1
  432. package/src/shared/__tests__/exact-apply.test.ts +2 -1
  433. package/src/shared/__tests__/persist-decision.test.ts +19 -33
  434. package/src/shared/__tests__/prompt-sections.test.ts +1 -1
  435. package/src/shared/__tests__/stamp-flowed-rows.test.ts +1 -1
  436. package/src/shared/__tests__/status-offload.test.ts +1 -1
  437. package/src/shared/__tests__/streaming-scheduler.test.ts +8 -9
  438. package/src/shared/__tests__/todos.test.ts +1 -1
  439. package/src/shared/__tests__/tool-row.test.ts +1 -1
  440. package/src/shared/approval-policy.ts +95 -0
  441. package/src/shared/args-preview.ts +51 -42
  442. package/src/shared/attachment-resolver.ts +4 -4
  443. package/src/shared/attachment-zip.ts +2 -2
  444. package/src/shared/cost-guard.ts +2 -2
  445. package/src/shared/exact-apply.ts +1 -1
  446. package/src/shared/execution-context.ts +2 -2
  447. package/src/shared/extract-structured-output.ts +2 -2
  448. package/src/shared/filereview/__tests__/capture.test.ts +9 -5
  449. package/src/shared/filereview/__tests__/git-substrate.test.ts +4 -1
  450. package/src/shared/filereview/__tests__/proxy-reconcile.test.ts +3 -3
  451. package/src/shared/filereview/cas-touched.ts +2 -2
  452. package/src/shared/heartbeat.ts +1 -1
  453. package/src/shared/llm-backend.ts +0 -4
  454. package/src/shared/model-error.ts +1 -2
  455. package/src/shared/persist-decision.ts +19 -28
  456. package/src/shared/prompt-sections.ts +4 -4
  457. package/src/shared/skill-resolver.ts +3 -3
  458. package/src/shared/status-offload.ts +2 -2
  459. package/src/shared/streaming-scheduler.ts +8 -13
  460. package/src/shared/subagent-rows.ts +2 -2
  461. package/src/shared/todos.ts +3 -3
  462. package/src/shared/tool-row.ts +38 -2
  463. package/src/shared/worker-shutdown.ts +1 -1
  464. package/src/shared/workspace/__tests__/git-source.test.ts +3 -3
  465. package/src/shared/workspace/__tests__/provisioner.test.ts +5 -5
  466. package/src/shared/workspace/__tests__/session-provision.test.ts +2 -2
  467. package/src/shared/workspace/__tests__/writeback-coordinator.integration.test.ts +8 -9
  468. package/src/shared/workspace/__tests__/writeback-coordinator.test.ts +25 -25
  469. package/src/shared/workspace/provisioner.ts +1 -1
  470. package/src/shared/workspace/session-provision.ts +1 -1
  471. package/src/shared/workspace/sources/empty.ts +2 -2
  472. package/src/shared/workspace/sources/git.ts +3 -4
  473. package/src/shared/workspace/sources/local-path.ts +5 -6
  474. package/src/shared/workspace/stigmer-link.ts +1 -1
  475. package/src/shared/workspace/types.ts +2 -5
  476. package/src/shared/workspace/writeback-coordinator.ts +23 -12
  477. package/dist/activities/execute-cursor/delta-enricher.d.ts +0 -87
  478. package/dist/activities/execute-cursor/delta-enricher.js +0 -265
  479. package/dist/activities/execute-cursor/delta-enricher.js.map +0 -1
  480. package/dist/activities/execute-cursor/message-translator.js +0 -2040
  481. package/dist/activities/execute-cursor/message-translator.js.map +0 -1
  482. package/dist/activities/execute-cursor/todo-tracker.d.ts +0 -40
  483. package/dist/activities/execute-cursor/todo-tracker.js +0 -80
  484. package/dist/activities/execute-cursor/todo-tracker.js.map +0 -1
  485. package/dist/activities/execute-deep-agent/execution-state.d.ts +0 -54
  486. package/dist/activities/execute-deep-agent/execution-state.js +0 -68
  487. package/dist/activities/execute-deep-agent/execution-state.js.map +0 -1
  488. package/dist/activities/execute-deep-agent/status-builder-shared.d.ts +0 -65
  489. package/dist/activities/execute-deep-agent/status-builder-shared.js +0 -90
  490. package/dist/activities/execute-deep-agent/status-builder-shared.js.map +0 -1
  491. package/dist/activities/execute-deep-agent/subagent-tracker.d.ts +0 -113
  492. package/dist/activities/execute-deep-agent/subagent-tracker.js +0 -400
  493. package/dist/activities/execute-deep-agent/subagent-tracker.js.map +0 -1
  494. package/dist/activities/execute-deep-agent/v3-events.d.ts +0 -102
  495. package/dist/activities/execute-deep-agent/v3-events.js +0 -35
  496. package/dist/activities/execute-deep-agent/v3-events.js.map +0 -1
  497. package/dist/activities/execute-deep-agent/v3-protocol-normalizer.d.ts +0 -15
  498. package/dist/activities/execute-deep-agent/v3-protocol-normalizer.js +0 -235
  499. package/dist/activities/execute-deep-agent/v3-protocol-normalizer.js.map +0 -1
  500. package/dist/activities/execute-deep-agent/v3-status-builder.d.ts +0 -111
  501. package/dist/activities/execute-deep-agent/v3-status-builder.js +0 -457
  502. package/dist/activities/execute-deep-agent/v3-status-builder.js.map +0 -1
  503. package/dist/shared/execution-status-writer.d.ts +0 -31
  504. package/dist/shared/execution-status-writer.js +0 -43
  505. package/dist/shared/execution-status-writer.js.map +0 -1
  506. package/src/activities/execute-cursor/__tests__/delta-enricher.test.ts +0 -310
  507. package/src/activities/execute-cursor/__tests__/message-translator.test.ts +0 -1033
  508. package/src/activities/execute-cursor/__tests__/todo-tracker.test.ts +0 -498
  509. package/src/activities/execute-cursor/delta-enricher.ts +0 -307
  510. package/src/activities/execute-cursor/message-translator.ts +0 -2319
  511. package/src/activities/execute-cursor/todo-tracker.ts +0 -91
  512. package/src/activities/execute-deep-agent/__tests__/execution-state-extended.test.ts +0 -148
  513. package/src/activities/execute-deep-agent/__tests__/execution-state.test.ts +0 -154
  514. package/src/activities/execute-deep-agent/__tests__/status-builder-shared.test.ts +0 -47
  515. package/src/activities/execute-deep-agent/__tests__/v3-protocol-normalizer.test.ts +0 -324
  516. package/src/activities/execute-deep-agent/execution-state.ts +0 -78
  517. package/src/activities/execute-deep-agent/status-builder-shared.ts +0 -142
  518. package/src/activities/execute-deep-agent/subagent-tracker.ts +0 -479
  519. package/src/activities/execute-deep-agent/v3-events.ts +0 -153
  520. package/src/activities/execute-deep-agent/v3-protocol-normalizer.ts +0 -264
  521. package/src/activities/execute-deep-agent/v3-status-builder.ts +0 -565
  522. package/src/shared/execution-status-writer.ts +0 -56
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Drive Cursor SDK events through the REAL pair the harness runs in production
3
+ * — `CursorTranslator` into `TranscriptBuilder` over an `AgentExecutionStatus`
4
+ * — and hand back what they built. The unit-test seam that replaced
5
+ * `new <accumulator>(messages, options)` in #1097 (the accumulator folded
6
+ * rows itself; now the translator emits events and the shared builder folds
7
+ * them), so the arms that read a row's shape after a sequence of SDK events
8
+ * keep their shape while the module under them changed.
9
+ *
10
+ * The same shape as the native translator's local `feedAll` in
11
+ * `execute-deep-agent/__tests__/translator-through-builder.test.ts`, shared
12
+ * here because seven Cursor test files read through it.
13
+ *
14
+ * Deltas follow the loop's discipline (`turn-stream.ts`): `observeDelta`
15
+ * queues, and the queue is drained into the builder after the NEXT stream
16
+ * event — or at {@link CursorFold.drain} for a caller that wants them applied
17
+ * now, the settle's own last drain before `finalize()`.
18
+ */
19
+ import { create } from "@bufbuild/protobuf";
20
+ import { AgentExecutionStatusSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
21
+ import { TranscriptBuilder } from "../../../harness/transcript/builder.js";
22
+ import { CursorTranslator } from "../translator.js";
23
+ export class CursorFold {
24
+ status;
25
+ translator;
26
+ builder;
27
+ constructor(options = {}) {
28
+ this.status = options.status ?? create(AgentExecutionStatusSchema, {});
29
+ if (options.messages)
30
+ this.status.messages = options.messages;
31
+ this.translator = new CursorTranslator({
32
+ policies: options.policies ?? new Map(),
33
+ leases: options.leases ?? { global: false, categories: new Set() },
34
+ seeded: this.status.messages,
35
+ });
36
+ this.builder = new TranscriptBuilder("exec-fold", this.status);
37
+ }
38
+ /** One stream event, translated and folded, then the deltas queued so far — the loop's order. */
39
+ event(event) {
40
+ for (const e of this.translator.translate(event))
41
+ this.builder.apply(e);
42
+ this.drain();
43
+ return this;
44
+ }
45
+ events(...events) {
46
+ for (const e of events)
47
+ this.event(e);
48
+ return this;
49
+ }
50
+ /** One delta, queued — applied at the next {@link event} or {@link drain}. */
51
+ delta(update) {
52
+ this.translator.observeDelta(update);
53
+ return this;
54
+ }
55
+ drain() {
56
+ for (const e of this.translator.drainDeltas())
57
+ this.builder.apply(e);
58
+ return this;
59
+ }
60
+ finalize() {
61
+ this.drain();
62
+ this.builder.finalize();
63
+ return this;
64
+ }
65
+ get messages() {
66
+ return this.status.messages;
67
+ }
68
+ /** Every root row, in transcript order. */
69
+ rows() {
70
+ return this.status.messages.flatMap((m) => m.toolCalls);
71
+ }
72
+ row(callId) {
73
+ const found = this.rows().find((tc) => tc.id === callId);
74
+ if (!found)
75
+ throw new Error(`CursorFold: no row ${callId}`);
76
+ return found;
77
+ }
78
+ }
79
+ /** Fold a sequence of stream events into a fresh transcript; the common one-liner. */
80
+ export function foldCursorEvents(events, options = {}) {
81
+ return new CursorFold(options).events(...events);
82
+ }
83
+ /**
84
+ * A builder over an existing `messages` array, kept BY REFERENCE (the status
85
+ * is given the array itself, never a copy), so a boundary test that built its
86
+ * rows by hand can hand them to `reconcileDeniedToolCalls` and keep asserting
87
+ * on the same objects.
88
+ */
89
+ export function builderOver(messages, executionId = "exec-boundary") {
90
+ const status = create(AgentExecutionStatusSchema, {});
91
+ status.messages = messages;
92
+ return new TranscriptBuilder(executionId, status);
93
+ }
94
+ //# sourceMappingURL=fold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fold.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/fold.ts"],"names":[],"mappings":"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"}
@@ -68,7 +68,7 @@ export function createCursorSubstrate() {
68
68
  enforcesExactContent: true,
69
69
  appliesRunLifetimeLease: true,
70
70
  // The Cursor hook's deny decision does not carry approval_policy_source;
71
- // provenance is projected at message-reconstruction time (message-translator)
71
+ // provenance is projected at translation time (the Cursor translator)
72
72
  // and asserted by the corpus + resolveApprovalProvenance suites instead.
73
73
  surfacesGatePolicySource: false,
74
74
  },
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-substrate.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/gateway-substrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-substrate.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/gateway-substrate.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,18 @@
42
42
  * the SDK double (`ScriptedSdkOptions`); an SDK-side cancel or a mid-stream
43
43
  * wedge as an `effect` step on the run. Nothing here is a switch in production
44
44
  * code — every knob is a value the production path already reads.
45
+ *
46
+ * Two postures, two entries, one turn runner. `beginCursorScenario` is the
47
+ * hermetic posture: the SDK doubled by the scenario file's `vi.mock`, the
48
+ * clock scripted, goldens byte-stable. `beginLiveCursorScenario` is the live
49
+ * posture (#1097's live-run gate): the scenario file mocks ONLY the
50
+ * client, the real `@cursor/sdk` runs under the real activity on the real
51
+ * clock with a real member key, and what the activity persists is read back
52
+ * from the same record. A live scenario therefore has no `sdk` and no `clock`
53
+ * — the type says which posture a file is in — and `runCursorTurn` reads only
54
+ * what both have. The registry fixture's `live` pass-through and the
55
+ * environment's `eventRecordingDir` are the live posture's two other
56
+ * seams, each on the module that owns the concern.
45
57
  */
46
58
  import type { ModelListItem } from "@cursor/sdk";
47
59
  import type { StigmerClient } from "../../../client/stigmer-client.js";
@@ -97,19 +109,24 @@ export declare function runWorkspaceHook(workspaceRoot: string, hookInput: objec
97
109
  * as it does in a live worker.
98
110
  */
99
111
  export declare function resetCursorModuleState(): void;
100
- export interface CursorScenario {
112
+ /** What both postures share: the environment, the record the activity persists into, the runner's `Config`. */
113
+ export interface CursorScenarioBase {
101
114
  readonly env: HermeticEnvironment;
102
- readonly clock: ScriptedClock;
103
115
  readonly record: ExecutionRecord;
104
- readonly sdk: ScriptedCursorSdk;
105
116
  /** The runner this scenario runs on: the OSS posture plus the scenario's knobs. */
106
117
  readonly config: Config;
107
118
  }
108
- export interface CursorScenarioOptions {
109
- readonly env: HermeticEnvironment;
119
+ /** The hermetic posture: the SDK double and the scripted clock beside the shared three. */
120
+ export interface CursorScenario extends CursorScenarioBase {
110
121
  readonly clock: ScriptedClock;
122
+ readonly sdk: ScriptedCursorSdk;
123
+ }
124
+ /** The live posture (header): the shared three and nothing doubled but the client. */
125
+ export type LiveCursorScenario = CursorScenarioBase;
126
+ /** The options both postures take. */
127
+ interface CursorScenarioBaseOptions {
128
+ readonly env: HermeticEnvironment;
111
129
  readonly record: ExecutionRecord;
112
- readonly sdk: ScriptedSdkOptions;
113
130
  /**
114
131
  * Control-plane facets the scenario opts INTO, or faults it injects, over
115
132
  * the record's everyday answers (`ExecutionRecord.client`): a rejecting
@@ -124,8 +141,23 @@ export interface CursorScenarioOptions {
124
141
  */
125
142
  readonly config?: Partial<Config>;
126
143
  }
127
- /** Bind the record and the SDK for a scenario; resets the harness caches first. */
144
+ export interface CursorScenarioOptions extends CursorScenarioBaseOptions {
145
+ readonly clock: ScriptedClock;
146
+ readonly sdk: ScriptedSdkOptions;
147
+ }
148
+ export interface LiveCursorScenarioOptions extends CursorScenarioBaseOptions {
149
+ /** The real member key the real SDK authenticates with; becomes `config.cursorApiKey`. */
150
+ readonly apiKey: string;
151
+ }
152
+ /** Bind the record and the SDK double for a hermetic scenario; resets the harness caches first. */
128
153
  export declare function beginCursorScenario(options: CursorScenarioOptions): CursorScenario;
154
+ /**
155
+ * Bind the record for a live scenario; resets the harness caches first. No
156
+ * SDK double is built or bound — the scenario file must NOT mock `@cursor/sdk`
157
+ * — and no clock is installed. The key lands on the `Config` exactly where
158
+ * the OSS runner's direct mode reads it (`turn-setup.ts`, `config.cursorApiKey`).
159
+ */
160
+ export declare function beginLiveCursorScenario(options: LiveCursorScenarioOptions): LiveCursorScenario;
129
161
  export interface CursorTurnOptions {
130
162
  /** Empty for a first invocation; the agent id for a HITL reinvocation. */
131
163
  readonly threadId?: string;
@@ -134,9 +166,12 @@ export interface CursorTurnOptions {
134
166
  readonly onControls?: (controls: InvocationControls) => void;
135
167
  }
136
168
  /**
137
- * Run ONE `ExecuteCursor` invocation for the scenario: the real Cursor
138
- * adapter under the real turn runtime, as the composition roots wire them.
139
- * Built per invocation (the registry constructs its client, which is the one
140
- * bound at `beginCursorScenario`; the adapter boots on the scenario's config).
169
+ * Run ONE `ExecuteCursor` invocation for the scenario — either posture: the
170
+ * real Cursor adapter under the real turn runtime, as the composition roots
171
+ * wire them. Built per invocation (the registry constructs its client, which
172
+ * is the one bound at `begin*CursorScenario`; the adapter boots on the
173
+ * scenario's config). Reads only the record and the config, which both
174
+ * postures have.
141
175
  */
142
- export declare function runCursorTurn(scenario: CursorScenario, options?: CursorTurnOptions): Promise<ActivityInvocation>;
176
+ export declare function runCursorTurn(scenario: CursorScenarioBase, options?: CursorTurnOptions): Promise<ActivityInvocation>;
177
+ export {};
@@ -42,6 +42,18 @@
42
42
  * the SDK double (`ScriptedSdkOptions`); an SDK-side cancel or a mid-stream
43
43
  * wedge as an `effect` step on the run. Nothing here is a switch in production
44
44
  * code — every knob is a value the production path already reads.
45
+ *
46
+ * Two postures, two entries, one turn runner. `beginCursorScenario` is the
47
+ * hermetic posture: the SDK doubled by the scenario file's `vi.mock`, the
48
+ * clock scripted, goldens byte-stable. `beginLiveCursorScenario` is the live
49
+ * posture (#1097's live-run gate): the scenario file mocks ONLY the
50
+ * client, the real `@cursor/sdk` runs under the real activity on the real
51
+ * clock with a real member key, and what the activity persists is read back
52
+ * from the same record. A live scenario therefore has no `sdk` and no `clock`
53
+ * — the type says which posture a file is in — and `runCursorTurn` reads only
54
+ * what both have. The registry fixture's `live` pass-through and the
55
+ * environment's `eventRecordingDir` are the live posture's two other
56
+ * seams, each on the module that owns the concern.
45
57
  */
46
58
  import { execFileSync } from "node:child_process";
47
59
  import { readFileSync } from "node:fs";
@@ -178,25 +190,44 @@ export function resetCursorModuleState() {
178
190
  _resetPricingCache();
179
191
  _resetRegistryCache();
180
192
  }
181
- /** Bind the record and the SDK for a scenario; resets the harness caches first. */
182
- export function beginCursorScenario(options) {
193
+ /**
194
+ * What every scenario begins with: the harness caches dropped, the record
195
+ * bound as the control plane the activity will talk to, the OSS `Config`
196
+ * over the environment with the scenario's knobs laid on top.
197
+ */
198
+ function beginScenarioBase(options) {
183
199
  resetCursorModuleState();
184
- const sdk = new ScriptedCursorSdk(options.sdk);
185
- bindScriptedSdk(sdk);
186
200
  bindHermeticClient(options.record.client(options.clientOverrides));
187
201
  return {
188
202
  env: options.env,
189
- clock: options.clock,
190
203
  record: options.record,
191
- sdk,
192
204
  config: { ...hermeticCursorConfig(options.env), ...options.config },
193
205
  };
194
206
  }
207
+ /** Bind the record and the SDK double for a hermetic scenario; resets the harness caches first. */
208
+ export function beginCursorScenario(options) {
209
+ const base = beginScenarioBase(options);
210
+ const sdk = new ScriptedCursorSdk(options.sdk);
211
+ bindScriptedSdk(sdk);
212
+ return { ...base, clock: options.clock, sdk };
213
+ }
214
+ /**
215
+ * Bind the record for a live scenario; resets the harness caches first. No
216
+ * SDK double is built or bound — the scenario file must NOT mock `@cursor/sdk`
217
+ * — and no clock is installed. The key lands on the `Config` exactly where
218
+ * the OSS runner's direct mode reads it (`turn-setup.ts`, `config.cursorApiKey`).
219
+ */
220
+ export function beginLiveCursorScenario(options) {
221
+ const base = beginScenarioBase(options);
222
+ return { ...base, config: { ...base.config, cursorApiKey: options.apiKey } };
223
+ }
195
224
  /**
196
- * Run ONE `ExecuteCursor` invocation for the scenario: the real Cursor
197
- * adapter under the real turn runtime, as the composition roots wire them.
198
- * Built per invocation (the registry constructs its client, which is the one
199
- * bound at `beginCursorScenario`; the adapter boots on the scenario's config).
225
+ * Run ONE `ExecuteCursor` invocation for the scenario — either posture: the
226
+ * real Cursor adapter under the real turn runtime, as the composition roots
227
+ * wire them. Built per invocation (the registry constructs its client, which
228
+ * is the one bound at `begin*CursorScenario`; the adapter boots on the
229
+ * scenario's config). Reads only the record and the config, which both
230
+ * postures have.
200
231
  */
201
232
  export async function runCursorTurn(scenario, options = {}) {
202
233
  // Imported lazily so the scenario file's `vi.mock` declarations are in
@@ -1 +1 @@
1
- {"version":3,"file":"hermetic-cursor.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/hermetic-cursor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hermetic-cursor.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/hermetic-cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,OAAO,EAGL,kBAAkB,EAClB,uBAAuB,GAIxB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAA+B,MAAM,qDAAqD,CAAC;AAC1H,OAAO,EAAE,aAAa,EAAE,MAAM,mDAAmD,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAA2B,MAAM,mBAAmB,CAAC;AAEhG,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAE9E,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,GAAG,EAAE,cAAc;IACnB,WAAW,EAAE,mBAAmB;IAChC,SAAS,EAAE,mBAAmB;IAC9B,eAAe,EAAE,mBAAmB;IACpC,OAAO,EAAE,mBAAmB;IAC5B,SAAS,EAAE,gBAAgB;IAC3B,2EAA2E;IAC3E,KAAK,EAAE,aAAa;IACpB,YAAY,EAAE,yBAAyB;CAC/B,CAAC;AASX,mGAAmG;AACnG,MAAM,UAAU,qBAAqB,CAAC,OAA4B;IAChE,OAAO,sBAAsB,CAAC;QAC5B,GAAG,OAAO;QACV,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK;QAC7C,GAAG,EAAE;YACH,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B;KACF,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,kFAAkF;AAClF,MAAM,CAAC,MAAM,WAAW,GAA6B;IACnD;QACE,EAAE,EAAE,OAAO,CAAC,KAAK;QACjB,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;YAC/D,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;SACpE;KACF;CACF,CAAC;AAEF,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,iFAAiF;AACjF,MAAM,UAAU,oBAAoB,CAAC,GAAwB;IAC3D,OAAO;QACL,SAAS,EAAE,qBAAqB;QAChC,eAAe,EAAE,gBAAgB;QACjC,iBAAiB,EAAE,SAAS;QAC5B,sBAAsB,EAAE,uBAAuB;QAC/C,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,IAAI,EAAE,OAAO;QACb,aAAa,EAAE,IAAI;QACnB,uBAAuB,EAAE,CAAC;QAC1B,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,KAAK;QACvB,gBAAgB,EAAE,QAAQ;QAC1B,yBAAyB,EAAE,IAAI;QAC/B,qBAAqB,EAAE,IAAI;QAC3B,YAAY,EAAE,OAAO,CAAC,KAAK;QAC3B,0BAA0B,EAAE,OAAO;QACnC,qBAAqB,EAAE,OAAO;QAC9B,sBAAsB,EAAE,OAAO;KAChC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAwB;IAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAC9B,aAAqB,EACrB,SAAiB;IAEjB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAE7D,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qDAAqD,aAAa,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7F,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACpD,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACpC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,GAAG,CAAC;IACV,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,+BAA+B,EAAE,CAAC;IAClC,yBAAyB,EAAE,CAAC;IAC5B,kBAAkB,EAAE,CAAC;IACrB,mBAAmB,EAAE,CAAC;AACxB,CAAC;AAgDD;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,OAAkC;IAC3D,sBAAsB,EAAE,CAAC;IACzB,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IACnE,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE;KACpE,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,mBAAmB,CAAC,OAA8B;IAChE,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;IACrB,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAkC;IACxE,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AAC/E,CAAC;AAUD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAA4B,EAC5B,UAA6B,EAAE;IAE/B,uEAAuE;IACvE,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAC9D,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpG,+EAA+E;IAC/E,MAAM,KAAK,GAAyB;QAClC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW;QACzC,SAAS,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;QACjC,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC;KAC/B,CAAC;IACF,OAAO,uBAAuB,CAAC,UAAU,CAAC,aAAc,EAAE,CAAC,KAAK,CAAC,EAAE;QACjE,SAAS,EAAE,qBAAqB;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAC;AACL,CAAC"}
@@ -15,7 +15,12 @@
15
15
  * So a turn is a SCRIPT of ordered steps, one of four kinds:
16
16
  *
17
17
  * - `event(SDKMessage)` — yielded from `stream()`
18
- * - `delta(update)` — fired through `onDelta` (usage, `turn-ended`)
18
+ * - `delta(update)` — fired through `onDelta`: any `InteractionUpdate`
19
+ * (the `turn-ended` usage the loop prices; the
20
+ * tool-call timings, shell output and completion
21
+ * status the transcript folds — #1097 widened
22
+ * the step from `turn-ended` alone so the delta
23
+ * channel has an end-to-end net)
19
24
  * - `effect(fn)` — the side effect the SDK would have performed
20
25
  * (run the real hook, write a workspace file,
21
26
  * cancel the activity from the outside)
@@ -25,10 +30,10 @@
25
30
  * (`ScriptStep`, driven in order), applied to the SDK's event surface.
26
31
  *
27
32
  * Typing: `SDKMessage`, `Run`, `RunResult`, `SDKAgent` and the delta channel's
28
- * `TurnEndedUpdate` are the SDK's own types (`@cursor/sdk` 1.0.31, concrete in
29
- * `messages.d.ts` / `run.d.ts` / `agent.d.ts` / the vendored `delta-types`),
33
+ * `InteractionUpdate` are the SDK's own types (`@cursor/sdk` 1.0.31, concrete
34
+ * in `messages.d.ts` / `run.d.ts` / `agent.d.ts` / the vendored `delta-types`),
30
35
  * so a script that drifts from the real event shape fails `tsc`. (At 1.0.13
31
- * the delta types resolved to `any` and the one delta this double emits was
36
+ * the delta types resolved to `any` and the one delta this double emitted was
32
37
  * typed locally; stigmer/stigmer#1053 closed that gap.)
33
38
  *
34
39
  * Cancellation: `run.cancel()` is how the harness stops a turn (first denial,
@@ -44,7 +49,7 @@
44
49
  * {@link ScriptedCursorAgent.arrangeNextTurn}, which REPLACES the slot the
45
50
  * next `send()` will consume.
46
51
  */
47
- import type { AgentUsage, GetUsageOptions, ModelSelection, Run, RunOperation, RunResult, RunStatus, SDKAgent, SDKMessage, SDKUserMessage, SendOptions, TurnEndedUpdate } from "@cursor/sdk";
52
+ import type { AgentUsage, GetUsageOptions, InteractionUpdate, ModelSelection, Run, RunOperation, RunResult, RunStatus, SDKAgent, SDKMessage, SDKUserMessage, SendOptions, TurnEndedUpdate } from "@cursor/sdk";
48
53
  import type { ConversationTurn } from "@cursor/sdk";
49
54
  /** What an `effect` step can reach: the run it is part of. */
50
55
  export interface EffectContext {
@@ -56,7 +61,7 @@ export type ScriptStep = {
56
61
  readonly event: SDKMessage;
57
62
  } | {
58
63
  readonly kind: "delta";
59
- readonly update: TurnEndedUpdate;
64
+ readonly update: InteractionUpdate;
60
65
  } | {
61
66
  readonly kind: "effect";
62
67
  readonly label: string;
@@ -70,6 +75,8 @@ export type TurnScript = readonly ScriptStep[];
70
75
  /** Step builders — the vocabulary a scenario file reads as. */
71
76
  export declare const step: {
72
77
  readonly event: (event: SDKMessage) => ScriptStep;
78
+ /** Any delta the SDK fires through `onDelta` between stream events: tool-call timings, shell output, a completion's status. */
79
+ readonly delta: (update: InteractionUpdate) => ScriptStep;
73
80
  /** The `turn-ended` delta `turn-stream.ts` prices; the SDK's shape, all four counts stated. */
74
81
  readonly turnEnded: (usage: NonNullable<TurnEndedUpdate["usage"]>) => ScriptStep;
75
82
  readonly effect: (label: string, run: (ctx: EffectContext) => void | Promise<void>) => ScriptStep;
@@ -88,6 +95,8 @@ export declare function sdkEvents(agentId: string, runId: string): {
88
95
  thinking(text: string): SDKMessage;
89
96
  toolCall(callId: string, name: string, status: "running" | "completed" | "error", args?: unknown, result?: unknown): SDKMessage;
90
97
  status(status: "CREATING" | "RUNNING" | "FINISHED" | "ERROR" | "CANCELLED" | "EXPIRED", message?: string): SDKMessage;
98
+ /** The SDK's `task` event: a status line about the run in the agent's own voice, which the transcript shows as a SYSTEM message. */
99
+ task(text: string, status?: string): SDKMessage;
91
100
  };
92
101
  /** Called once per step so the driver's clock can tick. */
93
102
  export type StepObserver = (step: ScriptStep, index: number) => void;
@@ -15,7 +15,12 @@
15
15
  * So a turn is a SCRIPT of ordered steps, one of four kinds:
16
16
  *
17
17
  * - `event(SDKMessage)` — yielded from `stream()`
18
- * - `delta(update)` — fired through `onDelta` (usage, `turn-ended`)
18
+ * - `delta(update)` — fired through `onDelta`: any `InteractionUpdate`
19
+ * (the `turn-ended` usage the loop prices; the
20
+ * tool-call timings, shell output and completion
21
+ * status the transcript folds — #1097 widened
22
+ * the step from `turn-ended` alone so the delta
23
+ * channel has an end-to-end net)
19
24
  * - `effect(fn)` — the side effect the SDK would have performed
20
25
  * (run the real hook, write a workspace file,
21
26
  * cancel the activity from the outside)
@@ -25,10 +30,10 @@
25
30
  * (`ScriptStep`, driven in order), applied to the SDK's event surface.
26
31
  *
27
32
  * Typing: `SDKMessage`, `Run`, `RunResult`, `SDKAgent` and the delta channel's
28
- * `TurnEndedUpdate` are the SDK's own types (`@cursor/sdk` 1.0.31, concrete in
29
- * `messages.d.ts` / `run.d.ts` / `agent.d.ts` / the vendored `delta-types`),
33
+ * `InteractionUpdate` are the SDK's own types (`@cursor/sdk` 1.0.31, concrete
34
+ * in `messages.d.ts` / `run.d.ts` / `agent.d.ts` / the vendored `delta-types`),
30
35
  * so a script that drifts from the real event shape fails `tsc`. (At 1.0.13
31
- * the delta types resolved to `any` and the one delta this double emits was
36
+ * the delta types resolved to `any` and the one delta this double emitted was
32
37
  * typed locally; stigmer/stigmer#1053 closed that gap.)
33
38
  *
34
39
  * Cancellation: `run.cancel()` is how the harness stops a turn (first denial,
@@ -49,6 +54,10 @@ export const step = {
49
54
  event(event) {
50
55
  return { kind: "event", event };
51
56
  },
57
+ /** Any delta the SDK fires through `onDelta` between stream events: tool-call timings, shell output, a completion's status. */
58
+ delta(update) {
59
+ return { kind: "delta", update };
60
+ },
52
61
  /** The `turn-ended` delta `turn-stream.ts` prices; the SDK's shape, all four counts stated. */
53
62
  turnEnded(usage) {
54
63
  return { kind: "delta", update: { type: "turn-ended", usage } };
@@ -87,6 +96,10 @@ export function sdkEvents(agentId, runId) {
87
96
  status(status, message) {
88
97
  return { type: "status", ...base, status, message };
89
98
  },
99
+ /** The SDK's `task` event: a status line about the run in the agent's own voice, which the transcript shows as a SYSTEM message. */
100
+ task(text, status) {
101
+ return { type: "task", ...base, text, status };
102
+ },
90
103
  };
91
104
  }
92
105
  export class ScriptedRun {
@@ -1 +1 @@
1
- {"version":3,"file":"scripted-agent.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/scripted-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scripted-agent.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/scripted-agent.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@
28
28
  * The interceptors read the proxy credential from `Config.proxyTokenRef` per
29
29
  * request; which credential that is (the static root's control-plane token,
30
30
  * the manager's minted runner token) is the root's decision, not this
31
- * module's (Q-S2-7).
31
+ * module's.
32
32
  *
33
33
  * What this adapter never does: throw out of `runTurn` (an SDK failure is
34
34
  * `failed` with the classifier's sentence; an unexpected exception is
@@ -40,14 +40,14 @@
40
40
  *
41
41
  * The turn boundary (`turn-boundary.ts`) runs inside `turn.ts` and reads
42
42
  * this harness's deny-and-retry evidence — the denial ledger — into WAITING
43
- * rows and settled rows. The file-review capture is NOT here since S3 M4:
43
+ * rows and settled rows. The file-review capture is NOT here since #1096:
44
44
  * the runtime pins the baseline before this adapter runs and captures the
45
45
  * whole turn's tree after it returns (`harness/capture.ts`); what this
46
46
  * adapter contributes is the hook sidecar it binds as the runtime's CAS
47
47
  * observations (`turn-setup.ts` `installGate`).
48
48
  *
49
- * Extracted from `index.ts` `createCursorActivities` at S2 M3b; split from
50
- * the turn body at S2 M5. The seventeen hermetic goldens under
49
+ * Extracted from `index.ts` `createCursorActivities` in #1070, which also
50
+ * split it from the turn body. The seventeen hermetic goldens under
51
51
  * `__tests__/hermetic/` pin the result byte for byte.
52
52
  */
53
53
  import type { Config } from "../../config.js";
@@ -28,7 +28,7 @@
28
28
  * The interceptors read the proxy credential from `Config.proxyTokenRef` per
29
29
  * request; which credential that is (the static root's control-plane token,
30
30
  * the manager's minted runner token) is the root's decision, not this
31
- * module's (Q-S2-7).
31
+ * module's.
32
32
  *
33
33
  * What this adapter never does: throw out of `runTurn` (an SDK failure is
34
34
  * `failed` with the classifier's sentence; an unexpected exception is
@@ -40,14 +40,14 @@
40
40
  *
41
41
  * The turn boundary (`turn-boundary.ts`) runs inside `turn.ts` and reads
42
42
  * this harness's deny-and-retry evidence — the denial ledger — into WAITING
43
- * rows and settled rows. The file-review capture is NOT here since S3 M4:
43
+ * rows and settled rows. The file-review capture is NOT here since #1096:
44
44
  * the runtime pins the baseline before this adapter runs and captures the
45
45
  * whole turn's tree after it returns (`harness/capture.ts`); what this
46
46
  * adapter contributes is the hook sidecar it binds as the runtime's CAS
47
47
  * observations (`turn-setup.ts` `installGate`).
48
48
  *
49
- * Extracted from `index.ts` `createCursorActivities` at S2 M3b; split from
50
- * the turn body at S2 M5. The seventeen hermetic goldens under
49
+ * Extracted from `index.ts` `createCursorActivities` in #1070, which also
50
+ * split it from the turn body. The seventeen hermetic goldens under
51
51
  * `__tests__/hermetic/` pin the result byte for byte.
52
52
  */
53
53
  import { markBoot } from "../../shared/cold-start-timing.js";
@@ -37,16 +37,14 @@ export type { MergedToolPolicy, PolicySource } from "../../shared/approval-polic
37
37
  export type ApprovalCategory = ToolApprovalCategory;
38
38
  export declare const approvalCategory: typeof toolApprovalCategory;
39
39
  /**
40
- * Top-level tool-argument fields, in priority order, that identify the specific
41
- * resource a built-in tool acts on. The list deliberately spans BOTH taxonomies'
42
- * arg shapes: the hook input names a file `file_path` and the stream names it
43
- * `path`; both name a shell command `command`. Extracting the same resource
44
- * VALUE on both sides (the absolute path / the command string) is what lets the
45
- * hook-recorded denial token equal the stream-computed token. Authored here once
46
- * and injected into the generated preToolUse hook script so the runner and the
47
- * hook never disagree on which field to match.
40
+ * The salient argument fields — the resource a built-in acts on — are the
41
+ * platform's one list, `shared/args-preview.ts` `SALIENT_ARG_FIELDS` (moved
42
+ * there in #1097: the transcript builder previews every row over it for
43
+ * both harnesses). Re-exported here for this harness's identity code and the
44
+ * generated hook script, which inject it so the runner and the hook never
45
+ * disagree on which field to match.
48
46
  */
49
- export declare const SALIENT_ARG_FIELDS: readonly ["file_path", "path", "target_notebook", "command"];
47
+ export { SALIENT_ARG_FIELDS } from "../../shared/args-preview.js";
50
48
  /**
51
49
  * Check whether a built-in (non-MCP) Cursor tool requires user approval.
52
50
  *
@@ -88,7 +86,9 @@ export declare function getBuiltInGatedCategories(): Array<[string, ApprovalCate
88
86
  * Approval-message template for a gated built-in tool (either taxonomy), or
89
87
  * undefined when the tool is not gated. Resolved via {@link approvalCategory}
90
88
  * so stream-side names (`edit`/`shell`/`delete`) and hook-side names
91
- * (`Write`/`Shell`/`Delete`) both map to the same template. Callers resolve the
89
+ * (`Write`/`Shell`/`Delete`) both map to the same template — the platform's
90
+ * ONE table, `shared/approval-policy.ts` `CATEGORY_APPROVAL_MESSAGE`, shared
91
+ * with the native gate since #1097. Callers resolve the
92
92
  * placeholders against the tool args via resolveApprovalMessage.
93
93
  */
94
94
  export declare function getBuiltInApprovalMessage(toolName: string): string | undefined;
@@ -22,6 +22,7 @@ import { toolApprovalCategory } from "../../shared/tool-kind.js";
22
22
  // (`from "./approval-policy.js"`) keep working unchanged. This module now owns
23
23
  // only the Cursor-specific built-in-tool gating helpers below.
24
24
  export { mergeApprovalPolicies, lookupMcpToolPolicy, resolveApprovalMessage, POLICY_ENGINE_VERSION, } from "../../shared/approval-policy.js";
25
+ import { CATEGORY_APPROVAL_MESSAGE } from "../../shared/approval-policy.js";
25
26
  /**
26
27
  * Built-in Cursor tools the preToolUse hook gates, named as the hook receives
27
28
  * them.
@@ -43,29 +44,15 @@ const BUILT_IN_GATED = new Set([
43
44
  ]);
44
45
  export const approvalCategory = toolApprovalCategory;
45
46
  /**
46
- * Human-readable approval-message template per canonical category. Keyed by
47
- * category (not raw tool name) so a denial surfaced from either taxonomy renders
48
- * the same message. Placeholders resolve against the tool args via
49
- * {@link resolveApprovalMessage}; `{{args.path}}` and `{{args.command}}` are the
50
- * stream-side field names (the runner builds the approval surface from the
51
- * streamed tool call, whose args use `path`/`command`).
47
+ * The salient argument fields — the resource a built-in acts on — are the
48
+ * platform's one list, `shared/args-preview.ts` `SALIENT_ARG_FIELDS` (moved
49
+ * there in #1097: the transcript builder previews every row over it for
50
+ * both harnesses). Re-exported here for this harness's identity code and the
51
+ * generated hook script, which inject it so the runner and the hook never
52
+ * disagree on which field to match.
52
53
  */
53
- const CATEGORY_APPROVAL_MESSAGE = {
54
- write: "Write file: {{args.path}}",
55
- delete: "Delete: {{args.path}}",
56
- shell: "Run command: {{args.command}}",
57
- };
58
- /**
59
- * Top-level tool-argument fields, in priority order, that identify the specific
60
- * resource a built-in tool acts on. The list deliberately spans BOTH taxonomies'
61
- * arg shapes: the hook input names a file `file_path` and the stream names it
62
- * `path`; both name a shell command `command`. Extracting the same resource
63
- * VALUE on both sides (the absolute path / the command string) is what lets the
64
- * hook-recorded denial token equal the stream-computed token. Authored here once
65
- * and injected into the generated preToolUse hook script so the runner and the
66
- * hook never disagree on which field to match.
67
- */
68
- export const SALIENT_ARG_FIELDS = ["file_path", "path", "target_notebook", "command"];
54
+ export { SALIENT_ARG_FIELDS } from "../../shared/args-preview.js";
55
+ import { SALIENT_ARG_FIELDS } from "../../shared/args-preview.js";
69
56
  /**
70
57
  * Check whether a built-in (non-MCP) Cursor tool requires user approval.
71
58
  *
@@ -119,7 +106,9 @@ export function getBuiltInGatedCategories() {
119
106
  * Approval-message template for a gated built-in tool (either taxonomy), or
120
107
  * undefined when the tool is not gated. Resolved via {@link approvalCategory}
121
108
  * so stream-side names (`edit`/`shell`/`delete`) and hook-side names
122
- * (`Write`/`Shell`/`Delete`) both map to the same template. Callers resolve the
109
+ * (`Write`/`Shell`/`Delete`) both map to the same template — the platform's
110
+ * ONE table, `shared/approval-policy.ts` `CATEGORY_APPROVAL_MESSAGE`, shared
111
+ * with the native gate since #1097. Callers resolve the
123
112
  * placeholders against the tool args via resolveApprovalMessage.
124
113
  */
125
114
  export function getBuiltInApprovalMessage(toolName) {