@stigmer/runner 3.15.3-dev.20260914121148 → 3.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (592) hide show
  1. package/README.md +2 -1
  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/activities/generate-session-subject.d.ts +25 -4
  119. package/dist/activities/generate-session-subject.js +17 -7
  120. package/dist/activities/generate-session-subject.js.map +1 -1
  121. package/dist/client/stigmer-client.d.ts +17 -6
  122. package/dist/client/stigmer-client.js +47 -14
  123. package/dist/client/stigmer-client.js.map +1 -1
  124. package/dist/config.d.ts +6 -3
  125. package/dist/config.js +4 -1
  126. package/dist/config.js.map +1 -1
  127. package/dist/harness/approval-decisions.d.ts +1 -1
  128. package/dist/harness/approval-decisions.js +1 -1
  129. package/dist/harness/capabilities.d.ts +21 -11
  130. package/dist/harness/capabilities.js +2 -2
  131. package/dist/harness/capture.d.ts +4 -4
  132. package/dist/harness/capture.js +4 -4
  133. package/dist/harness/persist-chokepoint.d.ts +3 -3
  134. package/dist/harness/persist-chokepoint.js +3 -3
  135. package/dist/harness/registry.d.ts +2 -2
  136. package/dist/harness/registry.js +2 -2
  137. package/dist/harness/run-turn.d.ts +6 -4
  138. package/dist/harness/run-turn.js +31 -9
  139. package/dist/harness/run-turn.js.map +1 -1
  140. package/dist/harness/stop-controller.d.ts +1 -1
  141. package/dist/harness/stop-controller.js +1 -1
  142. package/dist/harness/terminal-table.d.ts +7 -7
  143. package/dist/harness/terminal-table.js +7 -7
  144. package/dist/harness/transcript/builder.d.ts +182 -0
  145. package/dist/harness/transcript/builder.js +693 -0
  146. package/dist/harness/transcript/builder.js.map +1 -0
  147. package/dist/harness/transcript/events.d.ts +218 -0
  148. package/dist/harness/transcript/events.js +50 -0
  149. package/dist/harness/transcript/events.js.map +1 -0
  150. package/dist/harness/transcript/state.d.ts +110 -0
  151. package/dist/harness/transcript/state.js +148 -0
  152. package/dist/harness/transcript/state.js.map +1 -0
  153. package/dist/harness/turn-context.d.ts +54 -38
  154. package/dist/harness/turn-context.js +42 -43
  155. package/dist/harness/turn-context.js.map +1 -1
  156. package/dist/harness/types.d.ts +63 -22
  157. package/dist/harness/types.js +12 -11
  158. package/dist/harness/types.js.map +1 -1
  159. package/dist/harness/usage-accumulator.d.ts +2 -2
  160. package/dist/harness/usage-accumulator.js +2 -2
  161. package/dist/harness-adapters.d.ts +5 -4
  162. package/dist/harness-adapters.js +5 -4
  163. package/dist/harness-adapters.js.map +1 -1
  164. package/dist/interceptors/run-credential-activity.d.ts +28 -0
  165. package/dist/interceptors/run-credential-activity.js +56 -0
  166. package/dist/interceptors/run-credential-activity.js.map +1 -0
  167. package/dist/middleware/approval-gate.d.ts +6 -0
  168. package/dist/middleware/approval-gate.js +7 -57
  169. package/dist/middleware/approval-gate.js.map +1 -1
  170. package/dist/middleware/cost-advisory.d.ts +3 -3
  171. package/dist/middleware/cost-advisory.js +3 -3
  172. package/dist/middleware/index.d.ts +1 -1
  173. package/dist/middleware/index.js +1 -1
  174. package/dist/runner-manager.js +10 -4
  175. package/dist/runner-manager.js.map +1 -1
  176. package/dist/shared/activity-input.d.ts +9 -0
  177. package/dist/shared/activity-input.js +17 -0
  178. package/dist/shared/activity-input.js.map +1 -1
  179. package/dist/shared/approval-policy.d.ts +53 -0
  180. package/dist/shared/approval-policy.js +76 -0
  181. package/dist/shared/approval-policy.js.map +1 -1
  182. package/dist/shared/args-preview.d.ts +45 -22
  183. package/dist/shared/args-preview.js +51 -41
  184. package/dist/shared/args-preview.js.map +1 -1
  185. package/dist/shared/attachment-resolver.d.ts +4 -4
  186. package/dist/shared/attachment-resolver.js +4 -4
  187. package/dist/shared/attachment-zip.d.ts +2 -2
  188. package/dist/shared/attachment-zip.js +2 -2
  189. package/dist/shared/channel-attachment.d.ts +8 -5
  190. package/dist/shared/channel-attachment.js +10 -6
  191. package/dist/shared/channel-attachment.js.map +1 -1
  192. package/dist/shared/cost-guard.d.ts +2 -2
  193. package/dist/shared/cost-guard.js +2 -2
  194. package/dist/shared/exact-apply.d.ts +1 -1
  195. package/dist/shared/exact-apply.js +1 -1
  196. package/dist/shared/execution-context.d.ts +2 -2
  197. package/dist/shared/execution-context.js +2 -2
  198. package/dist/shared/extract-structured-output.d.ts +2 -2
  199. package/dist/shared/extract-structured-output.js +2 -2
  200. package/dist/shared/filereview/cas-touched.d.ts +2 -2
  201. package/dist/shared/filereview/cas-touched.js +2 -2
  202. package/dist/shared/filereview/progress.d.ts +13 -0
  203. package/dist/shared/filereview/progress.js +13 -0
  204. package/dist/shared/filereview/progress.js.map +1 -1
  205. package/dist/shared/heartbeat.d.ts +1 -1
  206. package/dist/shared/heartbeat.js +1 -1
  207. package/dist/shared/llm-backend.d.ts +0 -4
  208. package/dist/shared/llm-backend.js +0 -4
  209. package/dist/shared/llm-backend.js.map +1 -1
  210. package/dist/shared/memory-attachment.d.ts +16 -9
  211. package/dist/shared/memory-attachment.js +18 -10
  212. package/dist/shared/memory-attachment.js.map +1 -1
  213. package/dist/shared/model-error.d.ts +1 -2
  214. package/dist/shared/model-error.js +1 -2
  215. package/dist/shared/model-error.js.map +1 -1
  216. package/dist/shared/persist-decision.d.ts +18 -24
  217. package/dist/shared/persist-decision.js +19 -11
  218. package/dist/shared/persist-decision.js.map +1 -1
  219. package/dist/shared/prompt-sections.d.ts +4 -4
  220. package/dist/shared/prompt-sections.js +4 -4
  221. package/dist/shared/run-credential-store.d.ts +32 -0
  222. package/dist/shared/run-credential-store.js +39 -0
  223. package/dist/shared/run-credential-store.js.map +1 -0
  224. package/dist/shared/run-credential.d.ts +61 -0
  225. package/dist/shared/run-credential.js +68 -0
  226. package/dist/shared/run-credential.js.map +1 -0
  227. package/dist/shared/skill-resolver.d.ts +3 -3
  228. package/dist/shared/skill-resolver.js +3 -3
  229. package/dist/shared/status-offload.d.ts +1 -1
  230. package/dist/shared/status-offload.js +2 -2
  231. package/dist/shared/status-offload.js.map +1 -1
  232. package/dist/shared/streaming-scheduler.d.ts +2 -7
  233. package/dist/shared/streaming-scheduler.js +6 -14
  234. package/dist/shared/streaming-scheduler.js.map +1 -1
  235. package/dist/shared/subagent-rows.d.ts +2 -2
  236. package/dist/shared/subagent-rows.js +2 -2
  237. package/dist/shared/synthesized-attachment.d.ts +30 -3
  238. package/dist/shared/synthesized-attachment.js +26 -0
  239. package/dist/shared/synthesized-attachment.js.map +1 -1
  240. package/dist/shared/todos.d.ts +3 -3
  241. package/dist/shared/todos.js +3 -3
  242. package/dist/shared/tool-row.d.ts +19 -1
  243. package/dist/shared/tool-row.js +36 -2
  244. package/dist/shared/tool-row.js.map +1 -1
  245. package/dist/shared/worker-shutdown.d.ts +1 -1
  246. package/dist/shared/worker-shutdown.js +1 -1
  247. package/dist/shared/workspace/session-provision.d.ts +1 -1
  248. package/dist/shared/workspace/session-provision.js +1 -1
  249. package/dist/shared/workspace/sources/empty.d.ts +1 -1
  250. package/dist/shared/workspace/sources/empty.js +1 -2
  251. package/dist/shared/workspace/sources/empty.js.map +1 -1
  252. package/dist/shared/workspace/sources/git.js +4 -4
  253. package/dist/shared/workspace/sources/git.js.map +1 -1
  254. package/dist/shared/workspace/sources/local-path.js +6 -6
  255. package/dist/shared/workspace/sources/local-path.js.map +1 -1
  256. package/dist/shared/workspace/stigmer-link.d.ts +1 -1
  257. package/dist/shared/workspace/stigmer-link.js +1 -1
  258. package/dist/shared/workspace/types.d.ts +2 -5
  259. package/dist/shared/workspace/types.js +0 -6
  260. package/dist/shared/workspace/types.js.map +1 -1
  261. package/dist/shared/workspace/writeback-coordinator.d.ts +17 -4
  262. package/dist/shared/workspace/writeback-coordinator.js +7 -9
  263. package/dist/shared/workspace/writeback-coordinator.js.map +1 -1
  264. package/dist/worker.js +10 -3
  265. package/dist/worker.js.map +1 -1
  266. package/dist/workflow-source.d.ts +10 -0
  267. package/dist/workflow-source.js +12 -0
  268. package/dist/workflow-source.js.map +1 -1
  269. package/dist/workflows/execute-from-execution.d.ts +15 -0
  270. package/dist/workflows/execute-from-execution.js +11 -0
  271. package/dist/workflows/execute-from-execution.js.map +1 -1
  272. package/dist/workflows/index.d.ts +5 -3
  273. package/dist/workflows/index.js +5 -3
  274. package/dist/workflows/index.js.map +1 -1
  275. package/dist/workflows/interceptors/run-credential.d.ts +34 -0
  276. package/dist/workflows/interceptors/run-credential.js +71 -0
  277. package/dist/workflows/interceptors/run-credential.js.map +1 -0
  278. package/package.json +4 -4
  279. package/src/__test-utils__/__tests__/execution-record-barrier.test.ts +70 -0
  280. package/src/__test-utils__/__tests__/harness-contract-self-check.test.ts +35 -1
  281. package/src/__test-utils__/approval-contract/contract.ts +1 -1
  282. package/src/__test-utils__/approval-contract/types.ts +1 -1
  283. package/src/__test-utils__/harness-boot-order-child.ts +1 -1
  284. package/src/__test-utils__/harness-contract/contract.ts +8 -8
  285. package/src/__test-utils__/harness-contract/recording-sink.ts +11 -1
  286. package/src/__test-utils__/harness-contract/runtime-contract.ts +52 -16
  287. package/src/__test-utils__/harness-contract/scripted-adapter.ts +47 -43
  288. package/src/__test-utils__/hermetic-activity.ts +113 -9
  289. package/src/__test-utils__/model-registry-fixture.ts +31 -7
  290. package/src/__test-utils__/module-specifiers.ts +32 -3
  291. package/src/__tests__/harness-boot-order.test.ts +1 -1
  292. package/src/__tests__/harness-contract.test.ts +1 -1
  293. package/src/__tests__/run-credential-e2e.test.ts +233 -0
  294. package/src/__tests__/run-credential-registration.test.ts +80 -0
  295. package/src/__tests__/runner-manager.test.ts +1 -1
  296. package/src/activities/__tests__/generate-session-subject-wire.test.ts +119 -0
  297. package/src/activities/execute-cursor/__test-utils__/__tests__/scripted-double.test.ts +1 -1
  298. package/src/activities/execute-cursor/__test-utils__/contract-subject.ts +2 -2
  299. package/src/activities/execute-cursor/__test-utils__/fold.ts +116 -0
  300. package/src/activities/execute-cursor/__test-utils__/gateway-substrate.ts +1 -1
  301. package/src/activities/execute-cursor/__test-utils__/hermetic-cursor.ts +67 -17
  302. package/src/activities/execute-cursor/__test-utils__/scripted-agent.ts +19 -5
  303. package/src/activities/execute-cursor/__tests__/approval-gate.test.ts +2 -1
  304. package/src/activities/execute-cursor/__tests__/approval-state.test.ts +14 -21
  305. package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +3 -3
  306. package/src/activities/execute-cursor/__tests__/coarse-fingerprint.test.ts +2 -1
  307. package/src/activities/execute-cursor/__tests__/cursor-event-recorder.test.ts +142 -0
  308. package/src/activities/execute-cursor/__tests__/cursor-fetch-interceptor-bypass.test.ts +19 -8
  309. package/src/activities/execute-cursor/__tests__/cursor-sdk-auth-smoke.test.ts +10 -8
  310. package/src/activities/execute-cursor/__tests__/cursor-transcript-live.test.ts +298 -0
  311. package/src/activities/execute-cursor/__tests__/deny-gate-exact-apply.test.ts +4 -2
  312. package/src/activities/execute-cursor/__tests__/fetch-interceptor.test.ts +1 -1
  313. package/src/activities/execute-cursor/__tests__/hermetic/deny-and-retry.test.ts +1 -1
  314. package/src/activities/execute-cursor/__tests__/hermetic/file-review-capture.test.ts +1 -1
  315. package/src/activities/execute-cursor/__tests__/hermetic/goldens/mcp-tool-call.status.json +71 -0
  316. package/src/activities/execute-cursor/__tests__/hermetic/goldens/sdk-task-note.status.json +73 -0
  317. package/src/activities/execute-cursor/__tests__/hermetic/goldens/shell-output-delta.error-delta.status.json +78 -0
  318. package/src/activities/execute-cursor/__tests__/hermetic/goldens/shell-output-delta.output-first.status.json +72 -0
  319. package/src/activities/execute-cursor/__tests__/hermetic/goldens/shell-output-delta.status.json +72 -0
  320. package/src/activities/execute-cursor/__tests__/hermetic/goldens/sub-agent-delegation.status.json +109 -0
  321. package/src/activities/execute-cursor/__tests__/hermetic/goldens/thinking-turn.status.json +78 -0
  322. package/src/activities/execute-cursor/__tests__/hermetic/goldens/todo-write.status.json +119 -0
  323. package/src/activities/execute-cursor/__tests__/hermetic/goldens/tool-error.status.json +68 -0
  324. package/src/activities/execute-cursor/__tests__/hermetic/goldens/tool-only-step.status.json +67 -0
  325. package/src/activities/execute-cursor/__tests__/hermetic/goldens/unattributed-hook-block.status.json +1 -1
  326. package/src/activities/execute-cursor/__tests__/hermetic/harness-contract.test.ts +7 -7
  327. package/src/activities/execute-cursor/__tests__/hermetic/mcp-tool-call.test.ts +146 -0
  328. package/src/activities/execute-cursor/__tests__/hermetic/pause-vs-shutdown.test.ts +5 -5
  329. package/src/activities/execute-cursor/__tests__/hermetic/plain-turn.test.ts +2 -1
  330. package/src/activities/execute-cursor/__tests__/hermetic/run-wait-arms.test.ts +2 -1
  331. package/src/activities/execute-cursor/__tests__/hermetic/sdk-task-note.test.ts +122 -0
  332. package/src/activities/execute-cursor/__tests__/hermetic/shell-output-delta.test.ts +276 -0
  333. package/src/activities/execute-cursor/__tests__/hermetic/stream-self-stop-arms.test.ts +8 -8
  334. package/src/activities/execute-cursor/__tests__/hermetic/sub-agent-delegation.test.ts +196 -0
  335. package/src/activities/execute-cursor/__tests__/hermetic/thinking-turn.test.ts +145 -0
  336. package/src/activities/execute-cursor/__tests__/hermetic/thrown-error-arms.test.ts +1 -1
  337. package/src/activities/execute-cursor/__tests__/hermetic/todo-write.test.ts +165 -0
  338. package/src/activities/execute-cursor/__tests__/hermetic/tool-call.test.ts +3 -3
  339. package/src/activities/execute-cursor/__tests__/hermetic/tool-error.test.ts +138 -0
  340. package/src/activities/execute-cursor/__tests__/hermetic/tool-only-step.test.ts +130 -0
  341. package/src/activities/execute-cursor/__tests__/hermetic/unattributed-hook-block.test.ts +13 -1
  342. package/src/activities/execute-cursor/__tests__/hermetic/workspace-lock-timeout.test.ts +2 -2
  343. package/src/activities/execute-cursor/__tests__/hitl-ledger.test.ts +43 -60
  344. package/src/activities/execute-cursor/__tests__/hitl-resume-history.test.ts +23 -28
  345. package/src/activities/execute-cursor/__tests__/hook-script.test.ts +2 -1
  346. package/src/activities/execute-cursor/__tests__/http2-interceptor.test.ts +1 -1
  347. package/src/activities/execute-cursor/__tests__/prompt-goldens.test.ts +5 -5
  348. package/src/activities/execute-cursor/__tests__/same-identity-reproposal.test.ts +11 -13
  349. package/src/activities/execute-cursor/__tests__/sequential-gate-resume.test.ts +8 -11
  350. package/src/activities/execute-cursor/__tests__/tool-result-image.test.ts +8 -22
  351. package/src/activities/execute-cursor/__tests__/translator.test.ts +594 -0
  352. package/src/activities/execute-cursor/__tests__/turn-boundary.test.ts +8 -5
  353. package/src/activities/execute-cursor/__tests__/turn-stream.test.ts +87 -63
  354. package/src/activities/execute-cursor/adapter.ts +4 -4
  355. package/src/activities/execute-cursor/approval-policy.ts +12 -24
  356. package/src/activities/execute-cursor/approval-state.ts +66 -1
  357. package/src/activities/execute-cursor/boundary-rows.ts +1132 -0
  358. package/src/activities/execute-cursor/cursor-capabilities.ts +1 -1
  359. package/src/activities/execute-cursor/cursor-event-recorder.ts +57 -28
  360. package/src/activities/execute-cursor/fetch-interceptor.ts +1 -1
  361. package/src/activities/execute-cursor/http2-interceptor.ts +1 -1
  362. package/src/activities/execute-cursor/prompt-builder.ts +6 -6
  363. package/src/activities/execute-cursor/service-tier.ts +1 -2
  364. package/src/activities/execute-cursor/sub-agent-steps.ts +188 -0
  365. package/src/activities/execute-cursor/tool-result.ts +128 -0
  366. package/src/activities/execute-cursor/translator.ts +541 -0
  367. package/src/activities/execute-cursor/turn-boundary.ts +21 -14
  368. package/src/activities/execute-cursor/turn-settle.ts +46 -34
  369. package/src/activities/execute-cursor/turn-setup.ts +5 -5
  370. package/src/activities/execute-cursor/turn-stream.ts +49 -46
  371. package/src/activities/execute-cursor/turn.ts +5 -5
  372. package/src/activities/execute-cursor/usage-pricing.ts +2 -2
  373. package/src/activities/execute-deep-agent/__test-utils__/contract-subject.ts +2 -2
  374. package/src/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.ts +23 -11
  375. package/src/activities/execute-deep-agent/__test-utils__/hitl-script.ts +1 -1
  376. package/src/activities/execute-deep-agent/__test-utils__/scripted-model-module.ts +2 -3
  377. package/src/activities/execute-deep-agent/__test-utils__/scripted-model.ts +25 -4
  378. package/src/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.ts +25 -11
  379. package/src/activities/execute-deep-agent/__tests__/adapter-graph-is-sdk-free.test.ts +1 -1
  380. package/src/activities/execute-deep-agent/__tests__/adapter-is-temporal-free.test.ts +1 -1
  381. package/src/activities/execute-deep-agent/__tests__/approval-file-change.test.ts +6 -17
  382. package/src/activities/execute-deep-agent/__tests__/hermetic/file-review-capture.test.ts +25 -8
  383. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve-all-lease.turn1.status.json +2 -7
  384. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve-all-lease.turn2.status.json +4 -14
  385. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve.turn2.status.json +1 -5
  386. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/file-review-capture.status.json +4 -7
  387. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/gate.turn1.status.json +1 -5
  388. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/inline-artifact.turn1.status.json +2 -9
  389. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/inline-artifact.turn2.status.json +2 -9
  390. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.after-tool.status.json +1 -4
  391. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.mid-tool.status.json +1 -4
  392. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/platform-stop.status.json +1 -4
  393. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/recursion-limit.persisted.status.json +109 -76
  394. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/reject.turn2.status.json +1 -5
  395. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sequential-gates.turn2.status.json +2 -10
  396. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sequential-gates.turn3.status.json +2 -10
  397. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/skip.turn2.status.json +1 -5
  398. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sub-agent-delegation.status.json +3 -6
  399. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/tool-call.status.json +1 -4
  400. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/worker-shutdown.status.json +1 -4
  401. package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/write-todos.status.json +92 -0
  402. package/src/activities/execute-deep-agent/__tests__/hermetic/harness-contract.test.ts +3 -3
  403. package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-approve-all-lease.test.ts +9 -5
  404. package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-round-trips.test.ts +3 -3
  405. package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-sequential-gates.test.ts +3 -3
  406. package/src/activities/execute-deep-agent/__tests__/hermetic/inline-artifact-across-gate.test.ts +7 -6
  407. package/src/activities/execute-deep-agent/__tests__/hermetic/pause-vs-shutdown.test.ts +10 -11
  408. package/src/activities/execute-deep-agent/__tests__/hermetic/plain-turn.test.ts +4 -4
  409. package/src/activities/execute-deep-agent/__tests__/hermetic/platform-stop.test.ts +9 -8
  410. package/src/activities/execute-deep-agent/__tests__/hermetic/recursion-limit.test.ts +21 -13
  411. package/src/activities/execute-deep-agent/__tests__/hermetic/resolution-error.test.ts +2 -2
  412. package/src/activities/execute-deep-agent/__tests__/hermetic/structured-output.test.ts +7 -7
  413. package/src/activities/execute-deep-agent/__tests__/hermetic/sub-agent-delegation.test.ts +28 -12
  414. package/src/activities/execute-deep-agent/__tests__/hermetic/tool-call.test.ts +21 -21
  415. package/src/activities/execute-deep-agent/__tests__/hermetic/workspace-lock-timeout.test.ts +5 -5
  416. package/src/activities/execute-deep-agent/__tests__/hermetic/write-todos.test.ts +160 -0
  417. package/src/activities/execute-deep-agent/__tests__/inline-publisher.test.ts +35 -30
  418. package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +3 -4
  419. package/src/activities/execute-deep-agent/__tests__/prompt-goldens.test.ts +12 -10
  420. package/src/activities/execute-deep-agent/__tests__/scripted-model.test.ts +13 -3
  421. package/src/activities/execute-deep-agent/__tests__/streaming-side-effects.test.ts +26 -18
  422. package/src/activities/execute-deep-agent/__tests__/subagent-wiring.test.ts +1 -1
  423. package/src/activities/execute-deep-agent/__tests__/{subagent-tracker.test.ts → translator-subagents.test.ts} +76 -57
  424. package/src/activities/execute-deep-agent/__tests__/{v3-status-builder.test.ts → translator-through-builder.test.ts} +213 -299
  425. package/src/activities/execute-deep-agent/__tests__/translator.test.ts +505 -0
  426. package/src/activities/execute-deep-agent/__tests__/turn-stream.test.ts +11 -29
  427. package/src/activities/execute-deep-agent/adapter.ts +1 -1
  428. package/src/activities/execute-deep-agent/approval-file-change.ts +20 -22
  429. package/src/activities/execute-deep-agent/deep-agent-capabilities.ts +2 -2
  430. package/src/activities/execute-deep-agent/hitl.ts +2 -2
  431. package/src/activities/execute-deep-agent/inline-publisher.ts +16 -5
  432. package/src/activities/execute-deep-agent/prompt-builder.ts +6 -7
  433. package/src/activities/execute-deep-agent/streaming-side-effects.ts +22 -31
  434. package/src/activities/execute-deep-agent/subagent-transformer.ts +3 -3
  435. package/src/activities/execute-deep-agent/translator.ts +463 -0
  436. package/src/activities/execute-deep-agent/turn-settle.ts +35 -43
  437. package/src/activities/execute-deep-agent/turn-setup.ts +8 -8
  438. package/src/activities/execute-deep-agent/turn-stream.ts +53 -51
  439. package/src/activities/execute-deep-agent/turn.ts +3 -3
  440. package/src/activities/generate-session-subject.ts +29 -4
  441. package/src/client/__tests__/stigmer-client.test.ts +92 -0
  442. package/src/client/stigmer-client.ts +48 -14
  443. package/src/config.ts +6 -3
  444. package/src/harness/README.md +335 -0
  445. package/src/harness/__tests__/approval-decisions.test.ts +2 -2
  446. package/src/harness/__tests__/capture.test.ts +3 -3
  447. package/src/harness/__tests__/import-direction.test.ts +3 -2
  448. package/src/harness/__tests__/mount-skills.test.ts +4 -1
  449. package/src/harness/__tests__/readme-index.test.ts +339 -0
  450. package/src/harness/__tests__/run-turn.test.ts +131 -6
  451. package/src/harness/__tests__/transcript-is-engine-free.test.ts +83 -0
  452. package/src/harness/__tests__/transcript-writers.test.ts +191 -0
  453. package/src/harness/__tests__/turn-attachments-vision.test.ts +5 -2
  454. package/src/harness/__tests__/turn-context.test.ts +5 -5
  455. package/src/harness/approval-decisions.ts +1 -1
  456. package/src/harness/capabilities.ts +21 -11
  457. package/src/harness/capture.ts +4 -4
  458. package/src/harness/persist-chokepoint.ts +3 -3
  459. package/src/harness/registry.ts +2 -2
  460. package/src/harness/run-turn.ts +33 -9
  461. package/src/harness/stop-controller.ts +1 -1
  462. package/src/harness/terminal-table.ts +7 -7
  463. package/src/harness/transcript/__tests__/builder.test.ts +975 -0
  464. package/src/harness/transcript/__tests__/state.test.ts +143 -0
  465. package/src/harness/transcript/builder.ts +755 -0
  466. package/src/harness/transcript/events.ts +262 -0
  467. package/src/harness/transcript/state.ts +167 -0
  468. package/src/harness/turn-context.ts +61 -46
  469. package/src/harness/types.ts +64 -22
  470. package/src/harness/usage-accumulator.ts +2 -2
  471. package/src/harness-adapters.ts +5 -4
  472. package/src/interceptors/__tests__/run-credential-activity.test.ts +133 -0
  473. package/src/interceptors/run-credential-activity.ts +67 -0
  474. package/src/middleware/__tests__/cost-advisory.test.ts +2 -2
  475. package/src/middleware/approval-gate.ts +7 -74
  476. package/src/middleware/cost-advisory.ts +3 -3
  477. package/src/middleware/index.ts +1 -1
  478. package/src/runner-manager.ts +14 -4
  479. package/src/shared/__tests__/approval-policy.test.ts +45 -0
  480. package/src/shared/__tests__/args-preview.test.ts +40 -20
  481. package/src/shared/__tests__/attachment-naming.test.ts +1 -1
  482. package/src/shared/__tests__/attachment-resolver.test.ts +5 -5
  483. package/src/shared/__tests__/attachment-zip.test.ts +1 -1
  484. package/src/shared/__tests__/blueprint-resolver.test.ts +1 -1
  485. package/src/shared/__tests__/channel-attachment.test.ts +12 -0
  486. package/src/shared/__tests__/cost-guard.test.ts +1 -1
  487. package/src/shared/__tests__/exact-apply.test.ts +2 -1
  488. package/src/shared/__tests__/memory-attachment.test.ts +17 -0
  489. package/src/shared/__tests__/persist-decision.test.ts +19 -33
  490. package/src/shared/__tests__/prompt-sections.test.ts +1 -1
  491. package/src/shared/__tests__/run-credential.test.ts +111 -0
  492. package/src/shared/__tests__/stamp-flowed-rows.test.ts +1 -1
  493. package/src/shared/__tests__/status-offload.test.ts +1 -1
  494. package/src/shared/__tests__/streaming-scheduler.test.ts +8 -9
  495. package/src/shared/__tests__/todos.test.ts +1 -1
  496. package/src/shared/__tests__/tool-row.test.ts +1 -1
  497. package/src/shared/activity-input.ts +21 -0
  498. package/src/shared/approval-policy.ts +95 -0
  499. package/src/shared/args-preview.ts +51 -42
  500. package/src/shared/attachment-resolver.ts +4 -4
  501. package/src/shared/attachment-zip.ts +2 -2
  502. package/src/shared/channel-attachment.ts +14 -6
  503. package/src/shared/cost-guard.ts +2 -2
  504. package/src/shared/exact-apply.ts +1 -1
  505. package/src/shared/execution-context.ts +2 -2
  506. package/src/shared/extract-structured-output.ts +2 -2
  507. package/src/shared/filereview/__tests__/capture.test.ts +9 -5
  508. package/src/shared/filereview/__tests__/git-substrate.test.ts +4 -1
  509. package/src/shared/filereview/__tests__/proxy-reconcile.test.ts +3 -3
  510. package/src/shared/filereview/cas-touched.ts +2 -2
  511. package/src/shared/filereview/progress.ts +13 -0
  512. package/src/shared/heartbeat.ts +1 -1
  513. package/src/shared/llm-backend.ts +0 -4
  514. package/src/shared/memory-attachment.ts +22 -10
  515. package/src/shared/model-error.ts +1 -2
  516. package/src/shared/persist-decision.ts +19 -28
  517. package/src/shared/prompt-sections.ts +4 -4
  518. package/src/shared/run-credential-store.ts +45 -0
  519. package/src/shared/run-credential.ts +70 -0
  520. package/src/shared/skill-resolver.ts +3 -3
  521. package/src/shared/status-offload.ts +2 -2
  522. package/src/shared/streaming-scheduler.ts +8 -13
  523. package/src/shared/subagent-rows.ts +2 -2
  524. package/src/shared/synthesized-attachment.ts +38 -3
  525. package/src/shared/todos.ts +3 -3
  526. package/src/shared/tool-row.ts +38 -2
  527. package/src/shared/worker-shutdown.ts +1 -1
  528. package/src/shared/workspace/__tests__/git-source.test.ts +3 -3
  529. package/src/shared/workspace/__tests__/provisioner.test.ts +5 -5
  530. package/src/shared/workspace/__tests__/session-provision.test.ts +2 -2
  531. package/src/shared/workspace/__tests__/writeback-coordinator.integration.test.ts +8 -9
  532. package/src/shared/workspace/__tests__/writeback-coordinator.test.ts +25 -25
  533. package/src/shared/workspace/provisioner.ts +1 -1
  534. package/src/shared/workspace/session-provision.ts +1 -1
  535. package/src/shared/workspace/sources/empty.ts +2 -2
  536. package/src/shared/workspace/sources/git.ts +3 -4
  537. package/src/shared/workspace/sources/local-path.ts +5 -6
  538. package/src/shared/workspace/stigmer-link.ts +1 -1
  539. package/src/shared/workspace/types.ts +2 -5
  540. package/src/shared/workspace/writeback-coordinator.ts +23 -12
  541. package/src/worker.ts +15 -3
  542. package/src/workflow-source.ts +15 -0
  543. package/src/workflows/__tests__/run-credential-interceptor.test.ts +178 -0
  544. package/src/workflows/execute-from-execution.ts +17 -0
  545. package/src/workflows/index.ts +5 -3
  546. package/src/workflows/interceptors/run-credential.ts +101 -0
  547. package/dist/activities/execute-cursor/delta-enricher.d.ts +0 -87
  548. package/dist/activities/execute-cursor/delta-enricher.js +0 -265
  549. package/dist/activities/execute-cursor/delta-enricher.js.map +0 -1
  550. package/dist/activities/execute-cursor/message-translator.js +0 -2040
  551. package/dist/activities/execute-cursor/message-translator.js.map +0 -1
  552. package/dist/activities/execute-cursor/todo-tracker.d.ts +0 -40
  553. package/dist/activities/execute-cursor/todo-tracker.js +0 -80
  554. package/dist/activities/execute-cursor/todo-tracker.js.map +0 -1
  555. package/dist/activities/execute-deep-agent/execution-state.d.ts +0 -54
  556. package/dist/activities/execute-deep-agent/execution-state.js +0 -68
  557. package/dist/activities/execute-deep-agent/execution-state.js.map +0 -1
  558. package/dist/activities/execute-deep-agent/status-builder-shared.d.ts +0 -65
  559. package/dist/activities/execute-deep-agent/status-builder-shared.js +0 -90
  560. package/dist/activities/execute-deep-agent/status-builder-shared.js.map +0 -1
  561. package/dist/activities/execute-deep-agent/subagent-tracker.d.ts +0 -113
  562. package/dist/activities/execute-deep-agent/subagent-tracker.js +0 -400
  563. package/dist/activities/execute-deep-agent/subagent-tracker.js.map +0 -1
  564. package/dist/activities/execute-deep-agent/v3-events.d.ts +0 -102
  565. package/dist/activities/execute-deep-agent/v3-events.js +0 -35
  566. package/dist/activities/execute-deep-agent/v3-events.js.map +0 -1
  567. package/dist/activities/execute-deep-agent/v3-protocol-normalizer.d.ts +0 -15
  568. package/dist/activities/execute-deep-agent/v3-protocol-normalizer.js +0 -235
  569. package/dist/activities/execute-deep-agent/v3-protocol-normalizer.js.map +0 -1
  570. package/dist/activities/execute-deep-agent/v3-status-builder.d.ts +0 -111
  571. package/dist/activities/execute-deep-agent/v3-status-builder.js +0 -457
  572. package/dist/activities/execute-deep-agent/v3-status-builder.js.map +0 -1
  573. package/dist/shared/execution-status-writer.d.ts +0 -31
  574. package/dist/shared/execution-status-writer.js +0 -43
  575. package/dist/shared/execution-status-writer.js.map +0 -1
  576. package/src/activities/execute-cursor/__tests__/delta-enricher.test.ts +0 -310
  577. package/src/activities/execute-cursor/__tests__/message-translator.test.ts +0 -1033
  578. package/src/activities/execute-cursor/__tests__/todo-tracker.test.ts +0 -498
  579. package/src/activities/execute-cursor/delta-enricher.ts +0 -307
  580. package/src/activities/execute-cursor/message-translator.ts +0 -2319
  581. package/src/activities/execute-cursor/todo-tracker.ts +0 -91
  582. package/src/activities/execute-deep-agent/__tests__/execution-state-extended.test.ts +0 -148
  583. package/src/activities/execute-deep-agent/__tests__/execution-state.test.ts +0 -154
  584. package/src/activities/execute-deep-agent/__tests__/status-builder-shared.test.ts +0 -47
  585. package/src/activities/execute-deep-agent/__tests__/v3-protocol-normalizer.test.ts +0 -324
  586. package/src/activities/execute-deep-agent/execution-state.ts +0 -78
  587. package/src/activities/execute-deep-agent/status-builder-shared.ts +0 -142
  588. package/src/activities/execute-deep-agent/subagent-tracker.ts +0 -479
  589. package/src/activities/execute-deep-agent/v3-events.ts +0 -153
  590. package/src/activities/execute-deep-agent/v3-protocol-normalizer.ts +0 -264
  591. package/src/activities/execute-deep-agent/v3-status-builder.ts +0 -565
  592. package/src/shared/execution-status-writer.ts +0 -56
@@ -1,12 +1,26 @@
1
1
  /**
2
- * V3 protocol event factories for normalizer and status builder tests.
2
+ * V3 protocol event factories for the translator's and the builder's arms.
3
3
  *
4
4
  * Shapes are derived from real recordings in /tmp/stigmer-v3-provider/
5
5
  * captured during Phase 1 validation with Claude claude-sonnet-4-6.
6
+ *
7
+ * Namespaces default to LangGraph 1.3.2's REAL shape (since #1097): a model
8
+ * event arrives under `["model_request:<uuid>"]` and a tool
9
+ * event under `["tools:<uuid>"]` — one segment each, a fresh uuid per LLM
10
+ * call / tool run. Until then the model factories defaulted to `[]`, so the
11
+ * arms never saw the namespace miss the hermetic goldens showed (found in
12
+ * #1096: the root builder filed text under the raw namespace and
13
+ * looked a tool's parent up under `""`). A sub-agent's events pass their own
14
+ * `namespace` (`["tools:<taskUuid>", "model_request:<inner>"]`).
6
15
  */
7
16
 
8
17
  import type { V3ProtocolEvent } from "../v3-event-recorder.js";
9
18
 
19
+ /** The namespace a root model event carries: the model node's segment, per LLM call. */
20
+ function modelNamespace(runId: string): string[] {
21
+ return [`model_request:${runId}`];
22
+ }
23
+
10
24
  let seqCounter = 0;
11
25
  export function resetSeq(): void { seqCounter = 0; }
12
26
  function nextSeq(): number { return seqCounter++; }
@@ -61,7 +75,7 @@ export function makeMessageStart(
61
75
  id: opts?.messageId ?? `msg_${runId}`,
62
76
  usage: opts?.usage,
63
77
  run_id: runId,
64
- }, { namespace: opts?.namespace, node: opts?.node ?? "model_request" });
78
+ }, { namespace: opts?.namespace ?? modelNamespace(runId), node: opts?.node ?? "model_request" });
65
79
  }
66
80
 
67
81
  export function makeMessageFinish(
@@ -81,7 +95,7 @@ export function makeMessageFinish(
81
95
  metadata: opts?.metadata,
82
96
  responseMetadata: opts?.metadata,
83
97
  run_id: runId,
84
- }, { namespace: opts?.namespace, node: opts?.node ?? "model_request" });
98
+ }, { namespace: opts?.namespace ?? modelNamespace(runId), node: opts?.node ?? "model_request" });
85
99
  }
86
100
 
87
101
  // ── Messages: content-block-start/delta/finish ────────────────────
@@ -96,7 +110,7 @@ export function makeContentBlockStartText(
96
110
  index,
97
111
  content: { type: "text", text: "" },
98
112
  run_id: runId,
99
- }, { namespace: opts?.namespace, node: "model_request" });
113
+ }, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
100
114
  }
101
115
 
102
116
  export function makeTextDelta(
@@ -109,7 +123,7 @@ export function makeTextDelta(
109
123
  index: opts?.index ?? 0,
110
124
  delta: { type: "text-delta", text },
111
125
  run_id: runId,
112
- }, { namespace: opts?.namespace, node: "model_request" });
126
+ }, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
113
127
  }
114
128
 
115
129
  export function makeReasoningDelta(
@@ -122,7 +136,7 @@ export function makeReasoningDelta(
122
136
  index: opts?.index ?? 0,
123
137
  delta: { type: "reasoning-delta", reasoning: text },
124
138
  run_id: runId,
125
- }, { namespace: opts?.namespace, node: "model_request" });
139
+ }, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
126
140
  }
127
141
 
128
142
  export function makeToolCallArgDelta(
@@ -139,7 +153,7 @@ export function makeToolCallArgDelta(
139
153
  fields: { type: "tool_call_chunk", id: callId, args },
140
154
  },
141
155
  run_id: runId,
142
- }, { namespace: opts?.namespace, node: "model_request" });
156
+ }, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
143
157
  }
144
158
 
145
159
  export function makeContentBlockFinish(
@@ -152,7 +166,7 @@ export function makeContentBlockFinish(
152
166
  index,
153
167
  content: opts?.content ?? { type: "text", text: "" },
154
168
  run_id: runId,
155
- }, { namespace: opts?.namespace, node: "model_request" });
169
+ }, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
156
170
  }
157
171
 
158
172
  // ── Messages: usage / provider ────────────────────────────────────
@@ -166,7 +180,7 @@ export function makeUsageEvent(
166
180
  event: "usage",
167
181
  usage,
168
182
  run_id: runId,
169
- }, { namespace: opts?.namespace, node: "model_request" });
183
+ }, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
170
184
  }
171
185
 
172
186
  export function makeProviderEvent(
@@ -181,7 +195,7 @@ export function makeProviderEvent(
181
195
  name: "message_start",
182
196
  payload: { model, id: `msg_${runId}` },
183
197
  run_id: runId,
184
- }, { namespace: opts?.namespace, node: "model_request" });
198
+ }, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
185
199
  }
186
200
 
187
201
  // ── Tools ─────────────────────────────────────────────────────────
@@ -244,7 +258,7 @@ export function makeToolOutputDelta(
244
258
  }, { namespace: opts?.namespace ?? [`tools:${callId}`] });
245
259
  }
246
260
 
247
- // ── Ignored channels (for normalizer completeness tests) ──────────
261
+ // ── Ignored channels (for translator completeness tests) ──────────
248
262
 
249
263
  export function makeCheckpointEvent(): V3ProtocolEvent {
250
264
  return makeProtocolEvent("checkpoints", {
@@ -9,7 +9,7 @@
9
9
  * connect- and SDK-free (the Cursor adapter's boot patches `node:http2`
10
10
  * before anything dials the control plane; `harness-adapters.ts` states the
11
11
  * rule). An adapter that imported its SDK at the top of its module would
12
- * defeat it: this adapter's row is the table's second (S3 M2b, 2026-09-13).
12
+ * defeat it: this adapter's row is the table's second (#1096, 2026-09-13).
13
13
  * This fence is THE proof that the engine is not on the static graph — it
14
14
  * walks every relative module transitively and records every package the
15
15
  * graph names; the boot ORDER (native's `boot` runs after the Cursor patch)
@@ -14,7 +14,7 @@
14
14
  * (`execute-cursor/__tests__/adapter-is-temporal-free.test.ts`) is the
15
15
  * precedent; this is its native twin.
16
16
  *
17
- * Until S3 M2b (2026-09-13) one module was tolerated here: `index.ts`, the
17
+ * Until #1096 (2026-09-13) one module was tolerated here: `index.ts`, the
18
18
  * orchestrator the adapter replaced, which imported `@temporalio/activity`
19
19
  * while it still served production. It is deleted; the list is empty and
20
20
  * stays empty.
@@ -52,20 +52,9 @@ describe("findAiMessageToolCallArgs", () => {
52
52
  });
53
53
 
54
54
  describe("captureApprovalArtifacts", () => {
55
- it("returns a sanitized args preview for a correlated tool call", () => {
56
- const messages = [
57
- aiMessage([
58
- { id: "call-1", name: "write_file", args: { file_path: "a.txt", content: "hi", token: "sk-secret" } },
59
- ]),
60
- ];
61
- const { argsPreview } = captureApprovalArtifacts({ toolCallId: "call-1", messages });
62
-
63
- expect(argsPreview).toBeDefined();
64
- expect(argsPreview).toContain("a.txt");
65
- expect(argsPreview).toContain("[REDACTED]");
66
- expect(argsPreview).not.toContain("sk-secret");
67
- });
68
-
55
+ // The row's `args_preview` is the builder's to render from these args since
56
+ // #1097 (`harness/transcript/__tests__/builder.test.ts`); this module
57
+ // contributes the redacted args and nothing else.
69
58
  it("returns nothing when the interrupt cannot be correlated", () => {
70
59
  const result = captureApprovalArtifacts({
71
60
  toolCallId: "missing",
@@ -74,12 +63,12 @@ describe("captureApprovalArtifacts", () => {
74
63
  expect(result).toEqual({});
75
64
  });
76
65
 
77
- it("returns a preview for a correlated non-file tool", () => {
66
+ it("returns the args of a correlated non-file tool too", () => {
78
67
  const messages = [
79
68
  aiMessage([{ id: "call-1", name: "search", args: { query: "needle" } }]),
80
69
  ];
81
- const { argsPreview } = captureApprovalArtifacts({ toolCallId: "call-1", messages });
82
- expect(argsPreview).toContain("needle");
70
+ const { args } = captureApprovalArtifacts({ toolCallId: "call-1", messages });
71
+ expect(args).toEqual({ query: "needle" });
83
72
  });
84
73
 
85
74
  it("returns the redacted args object for stamping the placeholder row (issue #754)", () => {
@@ -11,11 +11,11 @@
11
11
  * file, stamps the flowed edit row with the change-set id
12
12
  * (`stampFlowedFileEditRows`), and the activity persists
13
13
  * WAITING_FOR_APPROVAL and RETURNS. The change-set id is the deterministic
14
- * `executionId:turnSeq`. The ledger shape is what M4's capture lift must
14
+ * `executionId:turnSeq`. The ledger shape is what the runtime's capture must
15
15
  * reproduce, beside Cursor's `file-review-capture.status.json`.
16
16
  *
17
- * Why this arm has a golden file since S3 M2a (Q-M2a-8; S3 M0 finding F-M0-9
18
- * closed): the orchestrator created the workspace's `.stigmer` symlink
17
+ * Why this arm has a golden file since #1096: the orchestrator created the
18
+ * workspace's `.stigmer` symlink
19
19
  * unconditionally BEFORE the baseline snapshot, and the link's TARGET is the
20
20
  * platform dir under `HOME`, so the baseline and candidate tree OIDs the
21
21
  * ledger carries were per-host — and per-run here, where `HOME` is a temp
@@ -23,7 +23,7 @@
23
23
  * needs it (the same rule that makes Cursor's golden byte-stable); this
24
24
  * scenario mounts neither, so no link enters either tree and both OIDs are
25
25
  * content-derived. Every content-derived byte is still asserted in code
26
- * (the owner's lock-timeout ruling, entry 20260911.03 M0, is the shape for
26
+ * (the lock-timeout arm's rule, #1070, is the shape for
27
27
  * a status the host could reach), and `goldens/file-review-capture.status.json`
28
28
  * pins the whole ledger beside Cursor's.
29
29
  *
@@ -33,16 +33,33 @@
33
33
  * pin; the turn boundary's candidate capture and row stamping; the pause for
34
34
  * review with file cards.
35
35
  *
36
- * Scope, recorded: this arm records turn 1 to parity with Cursor's S0 golden.
36
+ * Scope, recorded: this arm records turn 1 to parity with Cursor's first golden.
37
37
  * The second invocation that reconciles a DECIDED change set needs the
38
38
  * server's `file_change_sets` projection staged on the record; staging that by
39
- * hand would pin a hand-built shape, so the reconcile arm rides M4's own net
40
- * with both harnesses in view.
39
+ * hand would pin a hand-built shape, so the reconcile arm rides the runtime's
40
+ * own net with both harnesses in view.
41
41
  *
42
42
  * Determinism: the fixture repo's commit and tree ids are byte-stable because
43
43
  * `initGitWorkspace` pins author, committer and both dates; the script's path
44
44
  * is virtual-absolute (`/notes.md`) so no temp directory can reach the golden.
45
45
  *
46
+ * The first turn's stamps are `:01` (#1097, 2026-09-15): until then the
47
+ * golden held `:02` for message 1, its row's `startedAt`/`completedAt`, and
48
+ * the flip to `:01` in CI was a producer/consumer race, not a change of rule.
49
+ * This is the one native scenario whose first mid-stream persist shells out
50
+ * (the capture substrate's `file_change_progress`), and while the loop awaited
51
+ * it LangGraph's producer ran the tool and called the scripted model's second
52
+ * turn, whose tick landed before message 1 was stamped — on a fast machine;
53
+ * on a slow one the consumer won. The scripted model now waits for the
54
+ * previous turn's tool results to be persisted settled before it ticks
55
+ * (`ExecutionRecord.whenToolCallsSettled`, the ground a real model's latency
56
+ * gives for free), so turn 1's stamps precede turn 2's instant every run, as
57
+ * they do in `tool-call.status.json`. The artifact's `createdAt` stays `:02`:
58
+ * the inline publisher stamps it when its upload lands, after the tick, and
59
+ * the persist that releases the barrier is the fast one (progress capture is
60
+ * throttled by its floor within the same second). Message 2, `capturedAt`,
61
+ * the ledger events and `fileChangeProgress` are the boundary's, after turn 2.
62
+ *
46
63
  * Regenerate ONLY after a deliberate behavior change:
47
64
  * npx vitest run src/activities/execute-deep-agent/__tests__/hermetic -u
48
65
  */
@@ -181,7 +198,7 @@ describe("ExecuteDeepAgent hermetic — file-review capture", () => {
181
198
  expect(final.fileChangeProgress?.linesAdded).toBe(1);
182
199
 
183
200
  // The two tree OIDs are content-derived now that no host path enters the
184
- // trees (F-M0-9 closed at M2a, Q-M2a-8): well-formed, distinct, and pinned
201
+ // trees (since #1096): well-formed, distinct, and pinned
185
202
  // byte for byte by the golden below.
186
203
  const baselineOid = baseline.value.baselineSnapshot?.git?.treeOid ?? "";
187
204
  const candidateOid = candidate.value.candidateSnapshot?.git?.treeOid ?? "";
@@ -3,16 +3,11 @@
3
3
  {
4
4
  "type": "MESSAGE_THINKING",
5
5
  "content": "Two commands are needed; I will run them in order.",
6
- "timestamp": "2026-01-01T00:00:01.000Z",
7
- "isStreaming": true
8
- },
9
- {
10
- "type": "MESSAGE_AI",
11
- "content": "I will run the two commands.",
12
6
  "timestamp": "2026-01-01T00:00:01.000Z"
13
7
  },
14
8
  {
15
9
  "type": "MESSAGE_AI",
10
+ "content": "I will run the two commands.",
16
11
  "timestamp": "2026-01-01T00:00:01.000Z",
17
12
  "toolCalls": [
18
13
  {
@@ -24,7 +19,7 @@
24
19
  "status": "TOOL_CALL_WAITING_APPROVAL",
25
20
  "startedAt": "2026-01-01T00:00:01.000Z",
26
21
  "requiresApproval": true,
27
- "approvalMessage": "Execute command: echo hermetic-a",
22
+ "approvalMessage": "Run command: echo hermetic-a",
28
23
  "approvalRequestedAt": "2026-01-01T00:00:01.000Z",
29
24
  "argsPreview": "{\"command\":\"echo hermetic-a\"}",
30
25
  "toolKind": "TOOL_KIND_SHELL",
@@ -3,16 +3,11 @@
3
3
  {
4
4
  "type": "MESSAGE_THINKING",
5
5
  "content": "Two commands are needed; I will run them in order.",
6
- "timestamp": "2026-01-01T00:00:01.000Z",
7
- "isStreaming": true
8
- },
9
- {
10
- "type": "MESSAGE_AI",
11
- "content": "I will run the two commands.",
12
6
  "timestamp": "2026-01-01T00:00:01.000Z"
13
7
  },
14
8
  {
15
9
  "type": "MESSAGE_AI",
10
+ "content": "I will run the two commands.",
16
11
  "timestamp": "2026-01-01T00:00:01.000Z",
17
12
  "toolCalls": [
18
13
  {
@@ -26,7 +21,7 @@
26
21
  "startedAt": "2026-01-01T00:00:01.000Z",
27
22
  "completedAt": "2026-01-01T00:00:01.000Z",
28
23
  "requiresApproval": true,
29
- "approvalMessage": "Execute command: echo hermetic-a",
24
+ "approvalMessage": "Run command: echo hermetic-a",
30
25
  "approvalRequestedAt": "2026-01-01T00:00:01.000Z",
31
26
  "approvalDecidedAt": "2026-01-01T00:00:30.000Z",
32
27
  "approvalAction": "APPROVAL_ACTION_APPROVE_ALL",
@@ -34,13 +29,7 @@
34
29
  "toolKind": "TOOL_KIND_SHELL",
35
30
  "approvalPolicySource": "APPROVAL_POLICY_SOURCE_BUILTIN_CATEGORY",
36
31
  "policyEngineVersion": "phase-7"
37
- }
38
- ]
39
- },
40
- {
41
- "type": "MESSAGE_AI",
42
- "timestamp": "2026-01-01T00:00:02.000Z",
43
- "toolCalls": [
32
+ },
44
33
  {
45
34
  "id": "call-hermetic-exec-0002",
46
35
  "name": "execute",
@@ -51,6 +40,7 @@
51
40
  "status": "TOOL_CALL_COMPLETED",
52
41
  "startedAt": "2026-01-01T00:00:02.000Z",
53
42
  "completedAt": "2026-01-01T00:00:02.000Z",
43
+ "argsPreview": "{\"command\":\"echo hermetic-b\"}",
54
44
  "toolKind": "TOOL_KIND_SHELL",
55
45
  "approvalPolicySource": "APPROVAL_POLICY_SOURCE_APPROVAL_LEASE",
56
46
  "policyEngineVersion": "phase-7"
@@ -3,10 +3,6 @@
3
3
  {
4
4
  "type": "MESSAGE_AI",
5
5
  "content": "I will run the command.",
6
- "timestamp": "2026-01-01T00:00:01.000Z"
7
- },
8
- {
9
- "type": "MESSAGE_AI",
10
6
  "timestamp": "2026-01-01T00:00:01.000Z",
11
7
  "toolCalls": [
12
8
  {
@@ -20,7 +16,7 @@
20
16
  "startedAt": "2026-01-01T00:00:01.000Z",
21
17
  "completedAt": "2026-01-01T00:00:01.000Z",
22
18
  "requiresApproval": true,
23
- "approvalMessage": "Execute command: echo hermetic-a",
19
+ "approvalMessage": "Run command: echo hermetic-a",
24
20
  "approvalRequestedAt": "2026-01-01T00:00:01.000Z",
25
21
  "approvalDecidedAt": "2026-01-01T00:00:30.000Z",
26
22
  "approvalAction": "APPROVAL_ACTION_APPROVE",
@@ -3,11 +3,7 @@
3
3
  {
4
4
  "type": "MESSAGE_AI",
5
5
  "content": "Appending the line.",
6
- "timestamp": "2026-01-01T00:00:02.000Z"
7
- },
8
- {
9
- "type": "MESSAGE_AI",
10
- "timestamp": "2026-01-01T00:00:02.000Z",
6
+ "timestamp": "2026-01-01T00:00:01.000Z",
11
7
  "toolCalls": [
12
8
  {
13
9
  "id": "call-hermetic-edit-0001",
@@ -19,8 +15,9 @@
19
15
  },
20
16
  "result": "Successfully replaced 1 occurrence(s) in '/notes.md'",
21
17
  "status": "TOOL_CALL_COMPLETED",
22
- "startedAt": "2026-01-01T00:00:02.000Z",
23
- "completedAt": "2026-01-01T00:00:02.000Z",
18
+ "startedAt": "2026-01-01T00:00:01.000Z",
19
+ "completedAt": "2026-01-01T00:00:01.000Z",
20
+ "argsPreview": "{\"file_path\":\"/notes.md\",\"old_string\":\"first\\n\",\"new_string\":\"first\\nsecond\\n\"}",
24
21
  "toolKind": "TOOL_KIND_FILE_EDIT",
25
22
  "approvalPolicySource": "APPROVAL_POLICY_SOURCE_BUILTIN_CATEGORY",
26
23
  "policyEngineVersion": "phase-7",
@@ -3,10 +3,6 @@
3
3
  {
4
4
  "type": "MESSAGE_AI",
5
5
  "content": "I will run the command.",
6
- "timestamp": "2026-01-01T00:00:01.000Z"
7
- },
8
- {
9
- "type": "MESSAGE_AI",
10
6
  "timestamp": "2026-01-01T00:00:01.000Z",
11
7
  "toolCalls": [
12
8
  {
@@ -18,7 +14,7 @@
18
14
  "status": "TOOL_CALL_WAITING_APPROVAL",
19
15
  "startedAt": "2026-01-01T00:00:01.000Z",
20
16
  "requiresApproval": true,
21
- "approvalMessage": "Execute command: echo hermetic-a",
17
+ "approvalMessage": "Run command: echo hermetic-a",
22
18
  "approvalRequestedAt": "2026-01-01T00:00:01.000Z",
23
19
  "argsPreview": "{\"command\":\"echo hermetic-a\"}",
24
20
  "toolKind": "TOOL_KIND_SHELL",
@@ -3,10 +3,6 @@
3
3
  {
4
4
  "type": "MESSAGE_AI",
5
5
  "content": "Writing the report.",
6
- "timestamp": "2026-01-01T00:00:01.000Z"
7
- },
8
- {
9
- "type": "MESSAGE_AI",
10
6
  "timestamp": "2026-01-01T00:00:01.000Z",
11
7
  "toolCalls": [
12
8
  {
@@ -20,6 +16,7 @@
20
16
  "status": "TOOL_CALL_COMPLETED",
21
17
  "startedAt": "2026-01-01T00:00:01.000Z",
22
18
  "completedAt": "2026-01-01T00:00:01.000Z",
19
+ "argsPreview": "{\"file_path\":\"/report.md\",\"content\":\"# Report\\n\\nAll fixtures nominal.\\n\"}",
23
20
  "toolKind": "TOOL_KIND_FILE_WRITE",
24
21
  "approvalPolicySource": "APPROVAL_POLICY_SOURCE_BUILTIN_CATEGORY",
25
22
  "policyEngineVersion": "phase-7",
@@ -30,10 +27,6 @@
30
27
  {
31
28
  "type": "MESSAGE_AI",
32
29
  "content": "Now the command.",
33
- "timestamp": "2026-01-01T00:00:02.000Z"
34
- },
35
- {
36
- "type": "MESSAGE_AI",
37
30
  "timestamp": "2026-01-01T00:00:02.000Z",
38
31
  "toolCalls": [
39
32
  {
@@ -45,7 +38,7 @@
45
38
  "status": "TOOL_CALL_WAITING_APPROVAL",
46
39
  "startedAt": "2026-01-01T00:00:02.000Z",
47
40
  "requiresApproval": true,
48
- "approvalMessage": "Execute command: echo hermetic-a",
41
+ "approvalMessage": "Run command: echo hermetic-a",
49
42
  "approvalRequestedAt": "2026-01-01T00:00:02.000Z",
50
43
  "argsPreview": "{\"command\":\"echo hermetic-a\"}",
51
44
  "toolKind": "TOOL_KIND_SHELL",
@@ -3,10 +3,6 @@
3
3
  {
4
4
  "type": "MESSAGE_AI",
5
5
  "content": "Writing the report.",
6
- "timestamp": "2026-01-01T00:00:01.000Z"
7
- },
8
- {
9
- "type": "MESSAGE_AI",
10
6
  "timestamp": "2026-01-01T00:00:01.000Z",
11
7
  "toolCalls": [
12
8
  {
@@ -20,6 +16,7 @@
20
16
  "status": "TOOL_CALL_COMPLETED",
21
17
  "startedAt": "2026-01-01T00:00:01.000Z",
22
18
  "completedAt": "2026-01-01T00:00:01.000Z",
19
+ "argsPreview": "{\"file_path\":\"/report.md\",\"content\":\"# Report\\n\\nAll fixtures nominal.\\n\"}",
23
20
  "toolKind": "TOOL_KIND_FILE_WRITE",
24
21
  "approvalPolicySource": "APPROVAL_POLICY_SOURCE_BUILTIN_CATEGORY",
25
22
  "policyEngineVersion": "phase-7",
@@ -30,10 +27,6 @@
30
27
  {
31
28
  "type": "MESSAGE_AI",
32
29
  "content": "Now the command.",
33
- "timestamp": "2026-01-01T00:00:02.000Z"
34
- },
35
- {
36
- "type": "MESSAGE_AI",
37
30
  "timestamp": "2026-01-01T00:00:02.000Z",
38
31
  "toolCalls": [
39
32
  {
@@ -47,7 +40,7 @@
47
40
  "startedAt": "2026-01-01T00:00:02.000Z",
48
41
  "completedAt": "2026-01-01T00:00:02.000Z",
49
42
  "requiresApproval": true,
50
- "approvalMessage": "Execute command: echo hermetic-a",
43
+ "approvalMessage": "Run command: echo hermetic-a",
51
44
  "approvalRequestedAt": "2026-01-01T00:00:02.000Z",
52
45
  "approvalDecidedAt": "2026-01-01T00:00:30.000Z",
53
46
  "approvalAction": "APPROVAL_ACTION_APPROVE",
@@ -3,10 +3,6 @@
3
3
  {
4
4
  "type": "MESSAGE_AI",
5
5
  "content": "Let me look.",
6
- "timestamp": "2026-01-01T00:00:01.000Z"
7
- },
8
- {
9
- "type": "MESSAGE_AI",
10
6
  "timestamp": "2026-01-01T00:00:01.000Z",
11
7
  "toolCalls": [
12
8
  {
@@ -19,6 +15,7 @@
19
15
  "status": "TOOL_CALL_COMPLETED",
20
16
  "startedAt": "2026-01-01T00:00:01.000Z",
21
17
  "completedAt": "2026-01-01T00:00:01.000Z",
18
+ "argsPreview": "{\"file_path\":\"/notes.md\"}",
22
19
  "toolKind": "TOOL_KIND_FILE_READ"
23
20
  }
24
21
  ]
@@ -3,10 +3,6 @@
3
3
  {
4
4
  "type": "MESSAGE_AI",
5
5
  "content": "Let me look.",
6
- "timestamp": "2026-01-01T00:00:01.000Z"
7
- },
8
- {
9
- "type": "MESSAGE_AI",
10
6
  "timestamp": "2026-01-01T00:00:01.000Z",
11
7
  "toolCalls": [
12
8
  {
@@ -17,6 +13,7 @@
17
13
  },
18
14
  "status": "TOOL_CALL_RUNNING",
19
15
  "startedAt": "2026-01-01T00:00:01.000Z",
16
+ "argsPreview": "{\"file_path\":\"/notes.md\"}",
20
17
  "toolKind": "TOOL_KIND_FILE_READ"
21
18
  }
22
19
  ]
@@ -3,10 +3,6 @@
3
3
  {
4
4
  "type": "MESSAGE_AI",
5
5
  "content": "Let me look.",
6
- "timestamp": "2026-01-01T00:00:01.000Z"
7
- },
8
- {
9
- "type": "MESSAGE_AI",
10
6
  "timestamp": "2026-01-01T00:00:01.000Z",
11
7
  "toolCalls": [
12
8
  {
@@ -17,6 +13,7 @@
17
13
  },
18
14
  "status": "TOOL_CALL_RUNNING",
19
15
  "startedAt": "2026-01-01T00:00:01.000Z",
16
+ "argsPreview": "{\"file_path\":\"/notes.md\"}",
20
17
  "toolKind": "TOOL_KIND_FILE_READ"
21
18
  }
22
19
  ]