@stigmer/runner 3.0.9-dev.20260615153829 → 3.1.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 (329) hide show
  1. package/dist/.build-fingerprint +1 -1
  2. package/dist/__test-utils__/approval-contract/types.d.ts +174 -0
  3. package/dist/__test-utils__/approval-contract/types.js +24 -0
  4. package/dist/__test-utils__/approval-contract/types.js.map +1 -0
  5. package/dist/activities/call-agent-status.d.ts +19 -1
  6. package/dist/activities/call-agent-status.js +64 -5
  7. package/dist/activities/call-agent-status.js.map +1 -1
  8. package/dist/activities/call-llm.js +19 -53
  9. package/dist/activities/call-llm.js.map +1 -1
  10. package/dist/activities/classify-tool-approvals.d.ts +24 -0
  11. package/dist/activities/classify-tool-approvals.js +69 -17
  12. package/dist/activities/classify-tool-approvals.js.map +1 -1
  13. package/dist/activities/discover-mcp-server.d.ts +7 -0
  14. package/dist/activities/discover-mcp-server.js +11 -1
  15. package/dist/activities/discover-mcp-server.js.map +1 -1
  16. package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.d.ts +140 -0
  17. package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.js +130 -0
  18. package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.js.map +1 -0
  19. package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.d.ts +18 -0
  20. package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.js +123 -0
  21. package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.js.map +1 -0
  22. package/dist/activities/execute-cursor/approval-policy.d.ts +17 -61
  23. package/dist/activities/execute-cursor/approval-policy.js +8 -120
  24. package/dist/activities/execute-cursor/approval-policy.js.map +1 -1
  25. package/dist/activities/execute-cursor/approval-state.d.ts +219 -9
  26. package/dist/activities/execute-cursor/approval-state.js +233 -17
  27. package/dist/activities/execute-cursor/approval-state.js.map +1 -1
  28. package/dist/activities/execute-cursor/capture-flow.d.ts +127 -0
  29. package/dist/activities/execute-cursor/capture-flow.js +234 -0
  30. package/dist/activities/execute-cursor/capture-flow.js.map +1 -0
  31. package/dist/activities/execute-cursor/cas-observations.d.ts +96 -0
  32. package/dist/activities/execute-cursor/cas-observations.js +184 -0
  33. package/dist/activities/execute-cursor/cas-observations.js.map +1 -0
  34. package/dist/activities/execute-cursor/command-provenance.d.ts +62 -0
  35. package/dist/activities/execute-cursor/command-provenance.js +128 -0
  36. package/dist/activities/execute-cursor/command-provenance.js.map +1 -0
  37. package/dist/activities/execute-cursor/exact-apply.d.ts +110 -0
  38. package/dist/activities/execute-cursor/exact-apply.js +204 -0
  39. package/dist/activities/execute-cursor/exact-apply.js.map +1 -0
  40. package/dist/activities/execute-cursor/hook-script.d.ts +53 -24
  41. package/dist/activities/execute-cursor/hook-script.js +310 -47
  42. package/dist/activities/execute-cursor/hook-script.js.map +1 -1
  43. package/dist/activities/execute-cursor/index.d.ts +8 -1
  44. package/dist/activities/execute-cursor/index.js +500 -64
  45. package/dist/activities/execute-cursor/index.js.map +1 -1
  46. package/dist/activities/execute-cursor/message-translator.d.ts +258 -11
  47. package/dist/activities/execute-cursor/message-translator.js +836 -90
  48. package/dist/activities/execute-cursor/message-translator.js.map +1 -1
  49. package/dist/activities/execute-cursor/prompt-builder.d.ts +20 -23
  50. package/dist/activities/execute-cursor/prompt-builder.js +74 -15
  51. package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
  52. package/dist/activities/execute-cursor/workspace-setup.d.ts +17 -0
  53. package/dist/activities/execute-cursor/workspace-setup.js +212 -33
  54. package/dist/activities/execute-cursor/workspace-setup.js.map +1 -1
  55. package/dist/activities/execute-deep-agent/__test-utils__/gateway-substrate.d.ts +19 -0
  56. package/dist/activities/execute-deep-agent/__test-utils__/gateway-substrate.js +143 -0
  57. package/dist/activities/execute-deep-agent/__test-utils__/gateway-substrate.js.map +1 -0
  58. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.d.ts +88 -0
  59. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js +81 -0
  60. package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js.map +1 -0
  61. package/dist/activities/execute-deep-agent/approval-file-change.d.ts +47 -0
  62. package/dist/activities/execute-deep-agent/approval-file-change.js +68 -0
  63. package/dist/activities/execute-deep-agent/approval-file-change.js.map +1 -0
  64. package/dist/activities/execute-deep-agent/attachment-injector.d.ts +8 -1
  65. package/dist/activities/execute-deep-agent/attachment-injector.js +7 -7
  66. package/dist/activities/execute-deep-agent/attachment-injector.js.map +1 -1
  67. package/dist/activities/execute-deep-agent/cas-capture-backend.d.ts +42 -0
  68. package/dist/activities/execute-deep-agent/cas-capture-backend.js +47 -0
  69. package/dist/activities/execute-deep-agent/cas-capture-backend.js.map +1 -0
  70. package/dist/activities/execute-deep-agent/cas-capture-observer.d.ts +79 -0
  71. package/dist/activities/execute-deep-agent/cas-capture-observer.js +112 -0
  72. package/dist/activities/execute-deep-agent/cas-capture-observer.js.map +1 -0
  73. package/dist/activities/execute-deep-agent/hitl.d.ts +16 -3
  74. package/dist/activities/execute-deep-agent/hitl.js +11 -3
  75. package/dist/activities/execute-deep-agent/hitl.js.map +1 -1
  76. package/dist/activities/execute-deep-agent/index.d.ts +2 -1
  77. package/dist/activities/execute-deep-agent/index.js +393 -33
  78. package/dist/activities/execute-deep-agent/index.js.map +1 -1
  79. package/dist/activities/execute-deep-agent/inline-publisher.d.ts +7 -1
  80. package/dist/activities/execute-deep-agent/inline-publisher.js +23 -2
  81. package/dist/activities/execute-deep-agent/inline-publisher.js.map +1 -1
  82. package/dist/activities/execute-deep-agent/setup.d.ts +53 -2
  83. package/dist/activities/execute-deep-agent/setup.js +149 -92
  84. package/dist/activities/execute-deep-agent/setup.js.map +1 -1
  85. package/dist/activities/execute-deep-agent/stamp-flowed-rows.d.ts +36 -0
  86. package/dist/activities/execute-deep-agent/stamp-flowed-rows.js +56 -0
  87. package/dist/activities/execute-deep-agent/stamp-flowed-rows.js.map +1 -0
  88. package/dist/activities/execute-deep-agent/status-builder-shared.d.ts +34 -1
  89. package/dist/activities/execute-deep-agent/status-builder-shared.js +26 -25
  90. package/dist/activities/execute-deep-agent/status-builder-shared.js.map +1 -1
  91. package/dist/activities/execute-deep-agent/status-builder.d.ts +17 -5
  92. package/dist/activities/execute-deep-agent/status-builder.js +44 -3
  93. package/dist/activities/execute-deep-agent/status-builder.js.map +1 -1
  94. package/dist/activities/execute-deep-agent/streaming-side-effects.js +2 -19
  95. package/dist/activities/execute-deep-agent/streaming-side-effects.js.map +1 -1
  96. package/dist/activities/execute-deep-agent/streaming.js +3 -15
  97. package/dist/activities/execute-deep-agent/streaming.js.map +1 -1
  98. package/dist/activities/execute-deep-agent/subagent-transformer.d.ts +25 -7
  99. package/dist/activities/execute-deep-agent/subagent-transformer.js +23 -7
  100. package/dist/activities/execute-deep-agent/subagent-transformer.js.map +1 -1
  101. package/dist/activities/execute-deep-agent/subagent-wiring.d.ts +30 -3
  102. package/dist/activities/execute-deep-agent/subagent-wiring.js +29 -3
  103. package/dist/activities/execute-deep-agent/subagent-wiring.js.map +1 -1
  104. package/dist/activities/execute-deep-agent/v3-status-builder.js +32 -2
  105. package/dist/activities/execute-deep-agent/v3-status-builder.js.map +1 -1
  106. package/dist/claimcheck/payload-codec.js +9 -5
  107. package/dist/claimcheck/payload-codec.js.map +1 -1
  108. package/dist/client/stigmer-client.d.ts +2 -0
  109. package/dist/client/stigmer-client.js +2 -0
  110. package/dist/client/stigmer-client.js.map +1 -1
  111. package/dist/middleware/approval-gate.d.ts +85 -4
  112. package/dist/middleware/approval-gate.js +165 -38
  113. package/dist/middleware/approval-gate.js.map +1 -1
  114. package/dist/middleware/types.d.ts +2 -5
  115. package/dist/shared/activity-input.d.ts +43 -0
  116. package/dist/shared/activity-input.js +17 -0
  117. package/dist/shared/activity-input.js.map +1 -0
  118. package/dist/shared/approval-canonicalize.d.ts +19 -0
  119. package/dist/shared/approval-canonicalize.js +119 -0
  120. package/dist/shared/approval-canonicalize.js.map +1 -0
  121. package/dist/shared/approval-fingerprint.d.ts +106 -0
  122. package/dist/shared/approval-fingerprint.js +113 -0
  123. package/dist/shared/approval-fingerprint.js.map +1 -0
  124. package/dist/shared/approval-policy.d.ts +182 -12
  125. package/dist/shared/approval-policy.js +213 -27
  126. package/dist/shared/approval-policy.js.map +1 -1
  127. package/dist/shared/args-preview.d.ts +52 -0
  128. package/dist/shared/args-preview.js +93 -0
  129. package/dist/shared/args-preview.js.map +1 -0
  130. package/dist/shared/artifact-storage.d.ts +19 -1
  131. package/dist/shared/artifact-storage.js +48 -11
  132. package/dist/shared/artifact-storage.js.map +1 -1
  133. package/dist/shared/file-change.d.ts +44 -0
  134. package/dist/shared/file-change.js +57 -0
  135. package/dist/shared/file-change.js.map +1 -0
  136. package/dist/shared/file-tools.d.ts +107 -0
  137. package/dist/shared/file-tools.js +168 -0
  138. package/dist/shared/file-tools.js.map +1 -0
  139. package/dist/shared/filereview/capture.d.ts +202 -0
  140. package/dist/shared/filereview/capture.js +498 -0
  141. package/dist/shared/filereview/capture.js.map +1 -0
  142. package/dist/shared/filereview/cas-substrate.d.ts +190 -0
  143. package/dist/shared/filereview/cas-substrate.js +284 -0
  144. package/dist/shared/filereview/cas-substrate.js.map +1 -0
  145. package/dist/shared/filereview/digest.d.ts +40 -0
  146. package/dist/shared/filereview/digest.js +66 -0
  147. package/dist/shared/filereview/digest.js.map +1 -0
  148. package/dist/shared/filereview/events.d.ts +170 -0
  149. package/dist/shared/filereview/events.js +298 -0
  150. package/dist/shared/filereview/events.js.map +1 -0
  151. package/dist/shared/filereview/git-substrate.d.ts +175 -0
  152. package/dist/shared/filereview/git-substrate.js +439 -0
  153. package/dist/shared/filereview/git-substrate.js.map +1 -0
  154. package/dist/shared/filereview/index.d.ts +11 -0
  155. package/dist/shared/filereview/index.js +12 -0
  156. package/dist/shared/filereview/index.js.map +1 -0
  157. package/dist/shared/filereview/secret-paths.d.ts +63 -0
  158. package/dist/shared/filereview/secret-paths.js +105 -0
  159. package/dist/shared/filereview/secret-paths.js.map +1 -0
  160. package/dist/shared/fingerprint-secret.d.ts +26 -0
  161. package/dist/shared/fingerprint-secret.js +47 -0
  162. package/dist/shared/fingerprint-secret.js.map +1 -0
  163. package/dist/shared/model-client.d.ts +51 -0
  164. package/dist/shared/model-client.js +77 -0
  165. package/dist/shared/model-client.js.map +1 -0
  166. package/dist/shared/plan-artifact.js +0 -2
  167. package/dist/shared/plan-artifact.js.map +1 -1
  168. package/dist/shared/status-offload.d.ts +83 -9
  169. package/dist/shared/status-offload.js +399 -79
  170. package/dist/shared/status-offload.js.map +1 -1
  171. package/dist/shared/status.js +14 -1
  172. package/dist/shared/status.js.map +1 -1
  173. package/dist/shared/tool-kind.d.ts +19 -0
  174. package/dist/shared/tool-kind.js +13 -0
  175. package/dist/shared/tool-kind.js.map +1 -1
  176. package/dist/shared/tool-row.d.ts +88 -0
  177. package/dist/shared/tool-row.js +127 -0
  178. package/dist/shared/tool-row.js.map +1 -0
  179. package/dist/shared/workspace/platform-dir.d.ts +25 -0
  180. package/dist/shared/workspace/platform-dir.js +38 -2
  181. package/dist/shared/workspace/platform-dir.js.map +1 -1
  182. package/dist/workflows/call-agent-orchestrator.js +56 -7
  183. package/dist/workflows/call-agent-orchestrator.js.map +1 -1
  184. package/dist/workflows/connect-mcp-server.d.ts +50 -0
  185. package/dist/workflows/connect-mcp-server.js +136 -15
  186. package/dist/workflows/connect-mcp-server.js.map +1 -1
  187. package/dist/workflows/types.d.ts +8 -0
  188. package/package.json +2 -2
  189. package/src/__test-utils__/approval-contract/contract.ts +224 -0
  190. package/src/__test-utils__/approval-contract/types.ts +179 -0
  191. package/src/__test-utils__/fake-artifact-storage.ts +72 -0
  192. package/src/__tests__/approval-gateway-contract.test.ts +29 -0
  193. package/src/__tests__/claimcheck-codec.test.ts +16 -53
  194. package/src/__tests__/golden-e2e.test.ts +2 -0
  195. package/src/__tests__/runner-token-coordinator.test.ts +3 -3
  196. package/src/activities/__tests__/call-agent-status.test.ts +135 -0
  197. package/src/activities/__tests__/call-llm.test.ts +1 -1
  198. package/src/activities/__tests__/classify-tool-approvals.test.ts +208 -1
  199. package/src/activities/__tests__/discover-mcp-server.test.ts +30 -0
  200. package/src/activities/__tests__/workflow-event-activities.test.ts +2 -1
  201. package/src/activities/call-agent-status.ts +74 -4
  202. package/src/activities/call-llm.ts +18 -63
  203. package/src/activities/classify-tool-approvals.ts +101 -19
  204. package/src/activities/discover-mcp-server.ts +29 -1
  205. package/src/activities/execute-cursor/__test-utils__/cursor-hook-harness.ts +216 -0
  206. package/src/activities/execute-cursor/__test-utils__/gateway-substrate.ts +148 -0
  207. package/src/activities/execute-cursor/__tests__/approval-gate.test.ts +41 -9
  208. package/src/activities/execute-cursor/__tests__/approval-state.test.ts +292 -0
  209. package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +68 -1
  210. package/src/activities/execute-cursor/__tests__/capture-flow.test.ts +1005 -0
  211. package/src/activities/execute-cursor/__tests__/cas-observations.test.ts +187 -0
  212. package/src/activities/execute-cursor/__tests__/coarse-fingerprint.test.ts +97 -0
  213. package/src/activities/execute-cursor/__tests__/command-provenance.test.ts +240 -0
  214. package/src/activities/execute-cursor/__tests__/deny-gate-exact-apply.test.ts +203 -0
  215. package/src/activities/execute-cursor/__tests__/exact-apply.test.ts +375 -0
  216. package/src/activities/execute-cursor/__tests__/hitl-ledger.test.ts +1294 -24
  217. package/src/activities/execute-cursor/__tests__/hitl-resume-history.test.ts +446 -0
  218. package/src/activities/execute-cursor/__tests__/hook-script.test.ts +384 -110
  219. package/src/activities/execute-cursor/__tests__/message-translator.test.ts +171 -25
  220. package/src/activities/execute-cursor/__tests__/sequential-gate-resume.test.ts +189 -0
  221. package/src/activities/execute-cursor/__tests__/tool-result-image.test.ts +44 -23
  222. package/src/activities/execute-cursor/__tests__/workspace-setup.test.ts +190 -10
  223. package/src/activities/execute-cursor/approval-policy.ts +28 -159
  224. package/src/activities/execute-cursor/approval-state.ts +366 -18
  225. package/src/activities/execute-cursor/capture-flow.ts +323 -0
  226. package/src/activities/execute-cursor/cas-observations.ts +204 -0
  227. package/src/activities/execute-cursor/command-provenance.ts +168 -0
  228. package/src/activities/execute-cursor/exact-apply.ts +253 -0
  229. package/src/activities/execute-cursor/hook-script.ts +317 -51
  230. package/src/activities/execute-cursor/index.ts +575 -67
  231. package/src/activities/execute-cursor/message-translator.ts +963 -89
  232. package/src/activities/execute-cursor/prompt-builder.ts +80 -14
  233. package/src/activities/execute-cursor/workspace-setup.ts +257 -42
  234. package/src/activities/execute-deep-agent/__test-utils__/gateway-substrate.ts +180 -0
  235. package/src/activities/execute-deep-agent/__test-utils__/scripted-model.ts +134 -0
  236. package/src/activities/execute-deep-agent/__tests__/approval-file-change.test.ts +84 -0
  237. package/src/activities/execute-deep-agent/__tests__/attachment-injector.test.ts +11 -24
  238. package/src/activities/execute-deep-agent/__tests__/cas-capture-backend.test.ts +64 -0
  239. package/src/activities/execute-deep-agent/__tests__/cas-capture-observer.test.ts +163 -0
  240. package/src/activities/execute-deep-agent/__tests__/hitl-integration.test.ts +8 -5
  241. package/src/activities/execute-deep-agent/__tests__/hitl-resume-approve-all.test.ts +342 -0
  242. package/src/activities/execute-deep-agent/__tests__/hitl-resume-history.test.ts +284 -0
  243. package/src/activities/execute-deep-agent/__tests__/hitl.test.ts +14 -36
  244. package/src/activities/execute-deep-agent/__tests__/inline-publisher.test.ts +31 -13
  245. package/src/activities/execute-deep-agent/__tests__/sequential-gate-resume.test.ts +349 -0
  246. package/src/activities/execute-deep-agent/__tests__/stamp-flowed-rows.test.ts +119 -0
  247. package/src/activities/execute-deep-agent/__tests__/status-builder.test.ts +91 -10
  248. package/src/activities/execute-deep-agent/__tests__/streaming-v3.test.ts +9 -9
  249. package/src/activities/execute-deep-agent/__tests__/subagent-approval-propagation.test.ts +160 -0
  250. package/src/activities/execute-deep-agent/__tests__/subagent-gitignored-capture.test.ts +213 -0
  251. package/src/activities/execute-deep-agent/__tests__/subagent-transformer.test.ts +3 -6
  252. package/src/activities/execute-deep-agent/__tests__/subagent-wiring.test.ts +84 -1
  253. package/src/activities/execute-deep-agent/__tests__/v3-status-builder.test.ts +4 -1
  254. package/src/activities/execute-deep-agent/approval-file-change.ts +80 -0
  255. package/src/activities/execute-deep-agent/attachment-injector.ts +20 -11
  256. package/src/activities/execute-deep-agent/cas-capture-backend.ts +66 -0
  257. package/src/activities/execute-deep-agent/cas-capture-observer.ts +125 -0
  258. package/src/activities/execute-deep-agent/hitl.ts +23 -7
  259. package/src/activities/execute-deep-agent/index.ts +463 -40
  260. package/src/activities/execute-deep-agent/inline-publisher.ts +27 -4
  261. package/src/activities/execute-deep-agent/setup.ts +223 -125
  262. package/src/activities/execute-deep-agent/stamp-flowed-rows.ts +64 -0
  263. package/src/activities/execute-deep-agent/status-builder-shared.ts +62 -23
  264. package/src/activities/execute-deep-agent/status-builder.ts +63 -8
  265. package/src/activities/execute-deep-agent/streaming-side-effects.ts +2 -16
  266. package/src/activities/execute-deep-agent/streaming.ts +3 -13
  267. package/src/activities/execute-deep-agent/subagent-transformer.ts +53 -13
  268. package/src/activities/execute-deep-agent/subagent-wiring.ts +50 -3
  269. package/src/activities/execute-deep-agent/v3-status-builder.ts +36 -2
  270. package/src/claimcheck/payload-codec.ts +8 -8
  271. package/src/client/stigmer-client.ts +9 -1
  272. package/src/middleware/__tests__/approval-gate.test.ts +488 -4
  273. package/src/middleware/approval-gate.ts +247 -38
  274. package/src/middleware/types.ts +5 -5
  275. package/src/shared/__tests__/activity-input.test.ts +78 -0
  276. package/src/shared/__tests__/approval-canonicalize.test.ts +106 -0
  277. package/src/shared/__tests__/approval-fingerprint.test.ts +115 -0
  278. package/src/shared/__tests__/approval-policy.test.ts +274 -40
  279. package/src/shared/__tests__/args-preview.test.ts +78 -0
  280. package/src/shared/__tests__/artifact-storage-extended.test.ts +62 -10
  281. package/src/shared/__tests__/artifact-storage.test.ts +123 -11
  282. package/src/shared/__tests__/file-change.test.ts +85 -0
  283. package/src/shared/__tests__/file-tools.test.ts +90 -0
  284. package/src/shared/__tests__/fingerprint-secret.test.ts +51 -0
  285. package/src/shared/__tests__/lease-scope-corpus.test.ts +56 -0
  286. package/src/shared/__tests__/model-client.test.ts +162 -0
  287. package/src/shared/__tests__/plan-artifact.test.ts +11 -26
  288. package/src/shared/__tests__/policy-source-corpus.test.ts +58 -0
  289. package/src/shared/__tests__/status-offload.test.ts +573 -16
  290. package/src/shared/__tests__/status.test.ts +4 -5
  291. package/src/shared/__tests__/tool-kind.test.ts +24 -1
  292. package/src/shared/__tests__/tool-row.test.ts +221 -0
  293. package/src/shared/activity-input.ts +57 -0
  294. package/src/shared/approval-canonicalize.ts +159 -0
  295. package/src/shared/approval-fingerprint.ts +148 -0
  296. package/src/shared/approval-policy.ts +303 -27
  297. package/src/shared/args-preview.ts +98 -0
  298. package/src/shared/artifact-storage.ts +62 -11
  299. package/src/shared/checkpointer/__tests__/http-saver.test.ts +1 -2
  300. package/src/shared/file-change.ts +64 -0
  301. package/src/shared/file-tools.ts +169 -0
  302. package/src/shared/filereview/__tests__/capture.test.ts +856 -0
  303. package/src/shared/filereview/__tests__/cas-substrate.test.ts +404 -0
  304. package/src/shared/filereview/__tests__/digest.test.ts +100 -0
  305. package/src/shared/filereview/__tests__/events.test.ts +245 -0
  306. package/src/shared/filereview/__tests__/git-substrate.test.ts +362 -0
  307. package/src/shared/filereview/__tests__/proxy-reconcile.test.ts +286 -0
  308. package/src/shared/filereview/__tests__/secret-paths.test.ts +121 -0
  309. package/src/shared/filereview/capture.ts +727 -0
  310. package/src/shared/filereview/cas-substrate.ts +401 -0
  311. package/src/shared/filereview/digest.ts +83 -0
  312. package/src/shared/filereview/events.ts +449 -0
  313. package/src/shared/filereview/git-substrate.ts +555 -0
  314. package/src/shared/filereview/index.ts +60 -0
  315. package/src/shared/filereview/secret-paths.ts +121 -0
  316. package/src/shared/fingerprint-secret.ts +53 -0
  317. package/src/shared/model-client.ts +122 -0
  318. package/src/shared/plan-artifact.ts +0 -2
  319. package/src/shared/status-offload.ts +433 -77
  320. package/src/shared/status.ts +13 -0
  321. package/src/shared/tool-kind.ts +33 -0
  322. package/src/shared/tool-row.ts +135 -0
  323. package/src/shared/workspace/platform-dir.ts +41 -2
  324. package/src/workflow-engine/__tests__/golden-execution.test.ts +35 -18
  325. package/src/workflow-engine/__tests__/tasks/try.test.ts +1 -1
  326. package/src/workflows/__tests__/connect-mcp-server.test.ts +304 -29
  327. package/src/workflows/call-agent-orchestrator.ts +53 -6
  328. package/src/workflows/connect-mcp-server.ts +179 -24
  329. package/src/workflows/types.ts +8 -0
@@ -1 +1 @@
1
- {"hash":"2b309c83fe956c6b","builtAt":"2026-06-15T15:40:04.205Z","fileCount":198}
1
+ {"hash":"cdec4dda6bfadae6","builtAt":"2026-07-02T20:57:56.801Z","fileCount":229}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * The substrate-agnostic seam for the HITL gateway Contract Test Kit.
3
+ *
4
+ * Stigmer enforces tool approval through two real substrates with very different
5
+ * mechanics:
6
+ * - the in-process deep-agent gate (a LangGraph middleware that IS the side
7
+ * effect), and
8
+ * - the out-of-process Cursor deny-oracle (a bash preToolUse hook that allows or
9
+ * denies a tool the agent runs inside cursor-agent).
10
+ *
11
+ * The safety invariants they must uphold are identical, so the contract describes
12
+ * them once and runs them against anything that implements {@link GatewaySubstrate}.
13
+ * A future substrate (e.g. the T04 TS server's runner) joins the safety net by
14
+ * implementing this one interface — it does not get to redefine the invariants.
15
+ *
16
+ * This seam intentionally does NOT carry raw, harness-specific tool names. The
17
+ * two substrates name the same operation differently (the Cursor hook says
18
+ * `Write`/`Shell`/`Delete`; the deep-agent stream says `edit`/`shell`/`delete`),
19
+ * so the contract speaks in the abstract {@link ProposedAction} and each adapter
20
+ * translates it into its own taxonomy. Keeping the contract taxonomy-free is what
21
+ * makes "both substrates agree on the same logical action" a meaningful assertion.
22
+ */
23
+ /**
24
+ * A logical action a model proposes, expressed independently of any harness
25
+ * taxonomy. Each adapter maps it to its substrate's concrete tool name and args.
26
+ */
27
+ export interface ProposedAction {
28
+ /**
29
+ * The action's approval-relevant kind. `write`/`shell`/`delete` are the gated
30
+ * mutating categories; `read` is any non-mutating built-in; `mcp` is an
31
+ * MCP-server tool.
32
+ */
33
+ readonly kind: "write" | "shell" | "delete" | "read" | "mcp";
34
+ /**
35
+ * The resource the action acts on — the absolute file path for file actions,
36
+ * the command string for shell. Empty for `mcp` (MCP identity is name-scoped).
37
+ * This is the "salient" value the exact-resource lease binds to.
38
+ */
39
+ readonly resource: string;
40
+ /**
41
+ * The edit content for a `write` action — the body whose digest the
42
+ * content-exact grant binds to. Two `write`s to the same `resource` with
43
+ * DIFFERENT `content` are distinct identities (the sibling-isolation probe);
44
+ * omitted, a substrate uses a fixed placeholder. Ignored for non-write kinds.
45
+ */
46
+ readonly content?: string;
47
+ /** MCP server slug — required for `kind: "mcp"`, ignored otherwise. */
48
+ readonly mcpServerSlug?: string;
49
+ /** MCP tool name — required for `kind: "mcp"`, ignored otherwise. */
50
+ readonly mcpToolName?: string;
51
+ }
52
+ /**
53
+ * The decision applied to a proposed action.
54
+ * - `none` — no decision yet: run the action up to the gate and stop (the
55
+ * "what happens with no backing authorization" probe).
56
+ * - `approve`— authorize THIS action.
57
+ * - `skip` / `reject` / `unknown` — every non-approving outcome; none may execute.
58
+ */
59
+ export type GatewayDecision = "none" | "approve" | "skip" | "reject" | "unknown";
60
+ /**
61
+ * The observable result of putting one proposed action through a substrate.
62
+ */
63
+ export interface GatewayOutcome {
64
+ /**
65
+ * Whether the side effect ran (or, for an out-of-process substrate, whether
66
+ * the substrate ALLOWED it to run). This is the safety-critical observable and
67
+ * is comparable across substrates.
68
+ */
69
+ readonly executed: boolean;
70
+ /**
71
+ * Whether the substrate withheld the action pending approval. Note the precise
72
+ * meaning is substrate-specific (the in-process gate "paused at an interrupt";
73
+ * the deny-oracle "denied this call"), so it is only compared across substrates
74
+ * for `none`-decision probes, where both mean "withheld".
75
+ */
76
+ readonly gated: boolean;
77
+ /**
78
+ * Exact number of times the side effect ran. Populated only when
79
+ * {@link SubstrateCapabilities.observesExecution} is true (an in-process
80
+ * substrate can count; an out-of-process one cannot observe execution at all).
81
+ */
82
+ readonly executionCount?: number;
83
+ /**
84
+ * The authorization provenance the gate attached when it withheld the action —
85
+ * the PolicySource union string (e.g. "builtin_category", "agent_override").
86
+ * Populated only when {@link SubstrateCapabilities.surfacesGatePolicySource} is
87
+ * true; empty/undefined otherwise. Lets the contract assert every gated side
88
+ * effect is provenance-tagged.
89
+ */
90
+ readonly policySource?: string;
91
+ }
92
+ /**
93
+ * Capability flags for invariants that legitimately differ by substrate, gated
94
+ * rather than forked — mirroring the conformance suite's `CapabilityFlags`.
95
+ */
96
+ export interface SubstrateCapabilities {
97
+ /**
98
+ * True when the runner executes the tool in-process and can therefore observe
99
+ * (and count) the side effect directly. The deep-agent gate is in-process
100
+ * (`true`); the Cursor hook authorizes a tool that runs in another process
101
+ * (`false`, receipts are best-effort).
102
+ */
103
+ readonly observesExecution: boolean;
104
+ /**
105
+ * True when an approval is bound to the exact resource it was granted for, so
106
+ * approving one resource never authorizes another. The Cursor grant token binds
107
+ * the resource (`true`); the deep-agent gate re-checks every distinct call and
108
+ * relies on checkpoint replay for sameness, so per-resource lease isolation is
109
+ * not a property of that gate (`false`).
110
+ */
111
+ readonly enforcesExactResource: boolean;
112
+ /**
113
+ * True when an approval is bound to the exact CONTENT of the action, not just
114
+ * its resource — so approving one edit to a file never authorizes a DIFFERENT
115
+ * edit to the SAME file. The Cursor grant binds (category, path, contentDigest)
116
+ * (`true`); the deep-agent gate relies on checkpoint replay for sameness, so
117
+ * content isolation is not a property of that gate (`false`).
118
+ */
119
+ readonly enforcesExactContent: boolean;
120
+ /**
121
+ * True when the substrate honors a run-lifetime CLASS lease: an APPROVE_ALL on
122
+ * one action auto-approves later actions of the SAME class (built-in category)
123
+ * for the rest of the run, while a DIFFERENT class stays gated. Both production
124
+ * substrates enforce this (the deep-agent gate clears leased categories; the
125
+ * Cursor hook reads `leasedCategories` from its state file), so both set `true`
126
+ * and implement {@link GatewaySubstrate.authorizeUnderClassLease}.
127
+ */
128
+ readonly appliesRunLifetimeLease: boolean;
129
+ /**
130
+ * True when the substrate attaches authorization provenance
131
+ * (approval_policy_source) at the gate, so a withheld action's
132
+ * {@link GatewayOutcome.policySource} is populated. The deep-agent gate decides
133
+ * and stamps the source at interrupt time (`true`); the Cursor substrate's
134
+ * provenance is a reconstruction-time projection over the persisted tool call,
135
+ * not a property of the hook's deny decision, so it is `false` here and is
136
+ * covered instead by the message-translator and corpus suites.
137
+ */
138
+ readonly surfacesGatePolicySource: boolean;
139
+ }
140
+ /**
141
+ * A real enforcement substrate, wired to its production code. Adapters translate
142
+ * abstract actions/decisions into substrate-specific drives and report a uniform
143
+ * {@link GatewayOutcome}; they never reimplement enforcement logic.
144
+ */
145
+ export interface GatewaySubstrate {
146
+ /** Stable substrate name, used in suite titles and diagnostics. */
147
+ readonly name: string;
148
+ /** Honest per-substrate capability flags. */
149
+ readonly capabilities: SubstrateCapabilities;
150
+ /**
151
+ * Whether this substrate can run in the current environment (e.g. the Cursor
152
+ * deny-oracle needs `bash`). The contract skips its suite when `false`.
153
+ */
154
+ readonly available: boolean;
155
+ /**
156
+ * Put a single proposed action through the substrate under a decision and
157
+ * report what happened.
158
+ */
159
+ authorize(action: ProposedAction, decision: GatewayDecision): Promise<GatewayOutcome>;
160
+ /**
161
+ * Approve `granted`, then probe `probe` against that standing authorization —
162
+ * the lease-isolation drive. Implemented only when
163
+ * {@link SubstrateCapabilities.enforcesExactResource} is true.
164
+ */
165
+ authorizeAfterGrant?(granted: ProposedAction, probe: ProposedAction): Promise<GatewayOutcome>;
166
+ /**
167
+ * Grant a run-lifetime CLASS lease by choosing APPROVE_ALL on `leased`, then
168
+ * probe `probe` against that standing lease — the scoped-lease drive that
169
+ * proves "approving all of class A never auto-approves class B." `leased` must
170
+ * be a gated built-in (write/shell/delete). Implemented only when
171
+ * {@link SubstrateCapabilities.appliesRunLifetimeLease} is true.
172
+ */
173
+ authorizeUnderClassLease?(leased: ProposedAction, probe: ProposedAction): Promise<GatewayOutcome>;
174
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The substrate-agnostic seam for the HITL gateway Contract Test Kit.
3
+ *
4
+ * Stigmer enforces tool approval through two real substrates with very different
5
+ * mechanics:
6
+ * - the in-process deep-agent gate (a LangGraph middleware that IS the side
7
+ * effect), and
8
+ * - the out-of-process Cursor deny-oracle (a bash preToolUse hook that allows or
9
+ * denies a tool the agent runs inside cursor-agent).
10
+ *
11
+ * The safety invariants they must uphold are identical, so the contract describes
12
+ * them once and runs them against anything that implements {@link GatewaySubstrate}.
13
+ * A future substrate (e.g. the T04 TS server's runner) joins the safety net by
14
+ * implementing this one interface — it does not get to redefine the invariants.
15
+ *
16
+ * This seam intentionally does NOT carry raw, harness-specific tool names. The
17
+ * two substrates name the same operation differently (the Cursor hook says
18
+ * `Write`/`Shell`/`Delete`; the deep-agent stream says `edit`/`shell`/`delete`),
19
+ * so the contract speaks in the abstract {@link ProposedAction} and each adapter
20
+ * translates it into its own taxonomy. Keeping the contract taxonomy-free is what
21
+ * makes "both substrates agree on the same logical action" a meaningful assertion.
22
+ */
23
+ export {};
24
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/__test-utils__/approval-contract/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG"}
@@ -13,7 +13,23 @@
13
13
  */
14
14
  import type { ChildApprovalNotification } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/approval_pb";
15
15
  export declare function updateWorkflowTaskApprovalStatus(executionId: string, _taskName: string, notification: ChildApprovalNotification): Promise<void>;
16
- export declare function clearWorkflowApprovalStatus(executionId: string): Promise<void>;
16
+ export declare function clearWorkflowApprovalStatus(executionId: string, childExecutionId: string): Promise<void>;
17
+ /**
18
+ * Surfaces (or clears) a child agent's file-review gate on the parent workflow.
19
+ *
20
+ * Reference-only: writes a single WorkflowPendingFileReview naming the child and
21
+ * the change_set ids it currently has AWAITING_REVIEW — never the diffs, which
22
+ * stay single-sourced on the child. Passing an empty changeSetIds clears this
23
+ * child's entry (per-child merge, so parallel siblings are never disturbed).
24
+ */
25
+ export declare function updateWorkflowFileReviewStatus(executionId: string, childExecutionId: string, changeSetIds: string[]): Promise<void>;
26
+ /**
27
+ * Reads the child agent execution and returns the ids of its change sets that
28
+ * are currently AWAITING_REVIEW. The gated child is non-terminal, so its last
29
+ * status write stored a populated file_change_sets projection; GET returns it
30
+ * (the same reason getAgentExecutionProgress reads status.messages).
31
+ */
32
+ export declare function getAwaitingFileReviewChangeSetIds(childExecutionId: string): Promise<string[]>;
17
33
  /**
18
34
  * Queries the child AgentExecution for progress data that can be
19
35
  * emitted as an `agent_call_progress` event on the parent workflow.
@@ -33,5 +49,7 @@ export declare function getAgentExecutionProgress(childExecutionId: string): Pro
33
49
  export declare function createCallAgentStatusActivities(): {
34
50
  UpdateWorkflowTaskApprovalStatus: typeof updateWorkflowTaskApprovalStatus;
35
51
  ClearWorkflowApprovalStatus: typeof clearWorkflowApprovalStatus;
52
+ UpdateWorkflowFileReviewStatus: typeof updateWorkflowFileReviewStatus;
53
+ GetAwaitingFileReviewChangeSetIds: typeof getAwaitingFileReviewChangeSetIds;
36
54
  GetAgentExecutionProgress: typeof getAgentExecutionProgress;
37
55
  };
@@ -14,8 +14,8 @@
14
14
  import { StigmerClient } from "../client/stigmer-client.js";
15
15
  import { loadConfig } from "../config.js";
16
16
  import { create } from "@bufbuild/protobuf";
17
- import { WorkflowExecutionStatusSchema, WorkflowPendingApprovalSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
18
- import { ToolCallStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
17
+ import { WorkflowExecutionStatusSchema, WorkflowPendingApprovalSchema, WorkflowPendingFileReviewSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
18
+ import { ToolCallStatus, FileChangeSetStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
19
19
  function buildClient() {
20
20
  const config = loadConfig();
21
21
  return new StigmerClient({
@@ -26,29 +26,86 @@ function buildClient() {
26
26
  export async function updateWorkflowTaskApprovalStatus(executionId, _taskName, notification) {
27
27
  if (!executionId)
28
28
  return;
29
+ const childExecId = notification.executionId;
29
30
  const client = buildClient();
30
31
  const pendingApprovals = (notification.pendingApprovals ?? []).map((approval) => create(WorkflowPendingApprovalSchema, {
31
32
  approval,
32
- childAgentExecutionId: notification.executionId,
33
+ childAgentExecutionId: childExecId,
33
34
  }));
34
35
  const status = create(WorkflowExecutionStatusSchema, {
35
36
  pendingApprovals,
36
37
  });
38
+ // Per-child merge scoped to this child: the write replaces only this child's
39
+ // approvals and preserves every parallel sibling's entries.
37
40
  await client.updateWorkflowExecutionStatus(executionId, status, {
38
41
  updatePendingApprovals: true,
42
+ pendingUpdateChildAgentExecutionId: childExecId,
39
43
  });
40
44
  }
41
- export async function clearWorkflowApprovalStatus(executionId) {
42
- if (!executionId)
45
+ export async function clearWorkflowApprovalStatus(executionId, childExecutionId) {
46
+ if (!executionId || !childExecutionId)
43
47
  return;
44
48
  const client = buildClient();
45
49
  const status = create(WorkflowExecutionStatusSchema, {
46
50
  pendingApprovals: [],
47
51
  });
52
+ // Scoped clear: empty list for this child clears only its approvals; sibling
53
+ // children still awaiting approval are untouched.
48
54
  await client.updateWorkflowExecutionStatus(executionId, status, {
49
55
  updatePendingApprovals: true,
56
+ pendingUpdateChildAgentExecutionId: childExecutionId,
57
+ });
58
+ }
59
+ /**
60
+ * Surfaces (or clears) a child agent's file-review gate on the parent workflow.
61
+ *
62
+ * Reference-only: writes a single WorkflowPendingFileReview naming the child and
63
+ * the change_set ids it currently has AWAITING_REVIEW — never the diffs, which
64
+ * stay single-sourced on the child. Passing an empty changeSetIds clears this
65
+ * child's entry (per-child merge, so parallel siblings are never disturbed).
66
+ */
67
+ export async function updateWorkflowFileReviewStatus(executionId, childExecutionId, changeSetIds) {
68
+ if (!executionId || !childExecutionId)
69
+ return;
70
+ const client = buildClient();
71
+ const pendingFileReviews = changeSetIds.length > 0
72
+ ? [
73
+ create(WorkflowPendingFileReviewSchema, {
74
+ childAgentExecutionId: childExecutionId,
75
+ changeSetId: changeSetIds,
76
+ }),
77
+ ]
78
+ : [];
79
+ const status = create(WorkflowExecutionStatusSchema, {
80
+ pendingFileReviews,
81
+ });
82
+ await client.updateWorkflowExecutionStatus(executionId, status, {
83
+ updatePendingFileReviews: true,
84
+ pendingUpdateChildAgentExecutionId: childExecutionId,
50
85
  });
51
86
  }
87
+ /**
88
+ * Reads the child agent execution and returns the ids of its change sets that
89
+ * are currently AWAITING_REVIEW. The gated child is non-terminal, so its last
90
+ * status write stored a populated file_change_sets projection; GET returns it
91
+ * (the same reason getAgentExecutionProgress reads status.messages).
92
+ */
93
+ export async function getAwaitingFileReviewChangeSetIds(childExecutionId) {
94
+ if (!childExecutionId)
95
+ return [];
96
+ try {
97
+ const client = buildClient();
98
+ const execution = await client.getExecution(childExecutionId);
99
+ const changeSets = execution?.status?.fileChangeSets ?? [];
100
+ return changeSets
101
+ .filter((cs) => cs.status === FileChangeSetStatus.AWAITING_REVIEW)
102
+ .map((cs) => cs.id);
103
+ }
104
+ catch (err) {
105
+ console.warn("Failed to fetch child file-review state (non-fatal):", String(err));
106
+ return [];
107
+ }
108
+ }
52
109
  export async function getAgentExecutionProgress(childExecutionId) {
53
110
  if (!childExecutionId)
54
111
  return null;
@@ -85,6 +142,8 @@ export function createCallAgentStatusActivities() {
85
142
  return {
86
143
  UpdateWorkflowTaskApprovalStatus: updateWorkflowTaskApprovalStatus,
87
144
  ClearWorkflowApprovalStatus: clearWorkflowApprovalStatus,
145
+ UpdateWorkflowFileReviewStatus: updateWorkflowFileReviewStatus,
146
+ GetAwaitingFileReviewChangeSetIds: getAwaitingFileReviewChangeSetIds,
88
147
  GetAgentExecutionProgress: getAgentExecutionProgress,
89
148
  };
90
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"call-agent-status.js","sourceRoot":"","sources":["../../src/activities/call-agent-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-agent-status.js","sourceRoot":"","sources":["../../src/activities/call-agent-status.ts"],"names":[],"mappings":"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"}
@@ -15,53 +15,14 @@
15
15
  * Input: (config: LlmCallConfig, runtimeEnv: Record<string, unknown>, executionId: string)
16
16
  * Output: LlmCallResult
17
17
  */
18
- import { ChatAnthropic } from "@langchain/anthropic";
19
- import { ChatOpenAI } from "@langchain/openai";
20
18
  import { HumanMessage, SystemMessage } from "@langchain/core/messages";
21
19
  import { z } from "zod";
22
20
  import { ApplicationFailure } from "@temporalio/activity";
23
21
  import { jsonSchemaToZod } from "../shared/json-schema-to-zod.js";
24
- import { inferProvider, stripProviderPrefix, resolveProxyBaseUrl, buildProxyHeaders, } from "../shared/llm-proxy.js";
22
+ import { inferProvider, stripProviderPrefix, } from "../shared/llm-proxy.js";
25
23
  import { computeLlmCostMicros, ensureLoaded as ensurePricingLoaded } from "../shared/model-pricing.js";
26
24
  import { resolveToApiModelId } from "../shared/model-registry.js";
27
- function constructModel(provider, modelId, config, baseUrl, headers) {
28
- if (provider === "openai") {
29
- const apiKey = baseUrl
30
- ? (headers?.Authorization?.replace("Bearer ", "") ?? "proxy-managed")
31
- : (process.env.OPENAI_API_KEY ?? "");
32
- return new ChatOpenAI({
33
- model: modelId,
34
- temperature: config.temperature ?? 0,
35
- maxTokens: config.max_tokens,
36
- ...(baseUrl || headers
37
- ? {
38
- configuration: {
39
- ...(baseUrl ? { baseURL: baseUrl } : {}),
40
- ...(headers ? { defaultHeaders: headers } : {}),
41
- },
42
- }
43
- : {}),
44
- apiKey,
45
- });
46
- }
47
- const apiKey = baseUrl
48
- ? (headers?.Authorization?.replace("Bearer ", "") ?? "proxy-managed")
49
- : (process.env.ANTHROPIC_API_KEY ?? "");
50
- return new ChatAnthropic({
51
- model: modelId,
52
- temperature: config.temperature ?? 0,
53
- maxTokens: config.max_tokens ?? 4096,
54
- ...(baseUrl || headers
55
- ? {
56
- clientOptions: {
57
- ...(baseUrl ? { baseURL: baseUrl } : {}),
58
- ...(headers ? { defaultHeaders: headers } : {}),
59
- },
60
- }
61
- : {}),
62
- apiKey,
63
- });
64
- }
25
+ import { buildChatModel } from "../shared/model-client.js";
65
26
  /**
66
27
  * Stream a chat model invocation and collect the response.
67
28
  *
@@ -171,25 +132,30 @@ export async function callLlmAction(config, runtimeEnv, executionId) {
171
132
  const proxyActive = !!(proxyEndpoint && stigmerToken);
172
133
  console.log(`[call-llm] model=${modelId} provider=${provider} proxy=${proxyActive} ` +
173
134
  `structured=${!!config.response_schema} execution=${executionId}`);
174
- let baseUrl;
175
- let headers;
176
- if (proxyActive) {
177
- baseUrl = resolveProxyBaseUrl(proxyEndpoint, provider);
178
- headers = buildProxyHeaders(stigmerToken, { workflowExecutionId: executionId });
179
- }
180
- else if (provider === "openai") {
181
- if (!process.env.OPENAI_API_KEY) {
135
+ // Direct mode (no proxy) requires the provider's own API key. Validated here
136
+ // rather than in buildChatModel so the shared module stays free of Temporal
137
+ // failure types.
138
+ if (!proxyActive) {
139
+ if (provider === "openai" && !process.env.OPENAI_API_KEY) {
182
140
  throw ApplicationFailure.nonRetryable(`OPENAI_API_KEY is not set and no proxy is configured. ` +
183
141
  `Set the API key in your environment or connect to a Stigmer Cloud deployment.`, "LLM_MISSING_API_KEY");
184
142
  }
185
- }
186
- else {
187
- if (!process.env.ANTHROPIC_API_KEY) {
143
+ if (provider === "anthropic" && !process.env.ANTHROPIC_API_KEY) {
188
144
  throw ApplicationFailure.nonRetryable(`ANTHROPIC_API_KEY is not set and no proxy is configured. ` +
189
145
  `Set the API key in your environment or connect to a Stigmer Cloud deployment.`, "LLM_MISSING_API_KEY");
190
146
  }
191
147
  }
192
- const model = constructModel(provider, modelId, config, baseUrl, headers);
148
+ // Anthropic requires an explicit maxTokens; preserve the 4096 default here
149
+ // (buildChatModel intentionally imposes none). resolvedModel is already an
150
+ // API id, so buildChatModel's resolve step is a no-op for it.
151
+ const { model } = await buildChatModel({
152
+ modelName: resolvedModel,
153
+ proxyEndpoint: proxyActive ? proxyEndpoint : undefined,
154
+ stigmerToken: proxyActive ? stigmerToken : undefined,
155
+ headerScope: { workflowExecutionId: executionId },
156
+ temperature: config.temperature,
157
+ maxTokens: provider === "anthropic" ? (config.max_tokens ?? 4096) : config.max_tokens,
158
+ });
193
159
  const messages = [];
194
160
  if (config.system_prompt) {
195
161
  messages.push(new SystemMessage(config.system_prompt));
@@ -1 +1 @@
1
- {"version":3,"file":"call-llm.js","sourceRoot":"","sources":["../../src/activities/call-llm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-llm.js","sourceRoot":"","sources":["../../src/activities/call-llm.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,15 @@ export interface ToolApprovalResult {
33
33
  tool_name: string;
34
34
  requires_approval: boolean;
35
35
  message: string;
36
+ /**
37
+ * True when the connect-time fail-closed tightener force-gated this tool from
38
+ * its destructiveHint annotation (see applyDestructiveHintTightener), not the
39
+ * classifier. Persisted on ToolApprovalPolicy.from_destructive_hint so the
40
+ * runner attributes the gate to the annotation
41
+ * (ApprovalPolicySource.ANNOTATION_DESTRUCTIVE_TIGHTEN) instead of the
42
+ * classifier default. Absent/false on classifier and human-pinned entries.
43
+ */
44
+ from_destructive_hint?: boolean;
36
45
  }
37
46
  export interface ClassifyToolsOptions {
38
47
  proxyEndpoint: string;
@@ -40,6 +49,21 @@ export interface ClassifyToolsOptions {
40
49
  primaryModel: string;
41
50
  }
42
51
  export declare function classifyTools(input: ClassifyToolApprovalsInput, options: ClassifyToolsOptions): Promise<ToolApprovalResult[]>;
52
+ /**
53
+ * Reconcile a batch's LLM classifications against the tools that were actually
54
+ * sent. The canonical result is built from the INPUT batch, never the raw model
55
+ * output, so the classifier can never silently disarm a gate by omission:
56
+ *
57
+ * - A tool the model classified is kept as-is (its requires_approval + message).
58
+ * - A tool the model OMITTED fails closed (requires_approval=true) — a missing
59
+ * decision is treated exactly like an outage for that one tool.
60
+ * - A name the model returned that was never in the batch (a hallucinated or
61
+ * duplicated entry) is dropped — only real tools earn a policy.
62
+ */
63
+ export declare function reconcileBatchClassifications(batch: ToolDescriptor[], llmResults: ToolApprovalResult[]): {
64
+ reconciled: ToolApprovalResult[];
65
+ failedClosedCount: number;
66
+ };
43
67
  export declare function fallbackApprovals(tools: ToolDescriptor[]): ToolApprovalResult[];
44
68
  export declare function buildToolsPayload(tools: ToolDescriptor[]): string;
45
69
  export declare function createClassifyToolApprovalsActivities(config: Config): {