@stigmer/runner 3.0.1

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 (904) hide show
  1. package/README.md +212 -0
  2. package/dist/.build-fingerprint +1 -0
  3. package/dist/activities/call-agent-status.d.ts +37 -0
  4. package/dist/activities/call-agent-status.js +91 -0
  5. package/dist/activities/call-agent-status.js.map +1 -0
  6. package/dist/activities/call-agent.d.ts +25 -0
  7. package/dist/activities/call-agent.js +233 -0
  8. package/dist/activities/call-agent.js.map +1 -0
  9. package/dist/activities/call-eval.d.ts +50 -0
  10. package/dist/activities/call-eval.js +244 -0
  11. package/dist/activities/call-eval.js.map +1 -0
  12. package/dist/activities/call-function.d.ts +21 -0
  13. package/dist/activities/call-function.js +54 -0
  14. package/dist/activities/call-function.js.map +1 -0
  15. package/dist/activities/call-grpc.d.ts +22 -0
  16. package/dist/activities/call-grpc.js +101 -0
  17. package/dist/activities/call-grpc.js.map +1 -0
  18. package/dist/activities/call-http.d.ts +32 -0
  19. package/dist/activities/call-http.js +134 -0
  20. package/dist/activities/call-http.js.map +1 -0
  21. package/dist/activities/call-llm.d.ts +39 -0
  22. package/dist/activities/call-llm.js +260 -0
  23. package/dist/activities/call-llm.js.map +1 -0
  24. package/dist/activities/call-transform.d.ts +20 -0
  25. package/dist/activities/call-transform.js +33 -0
  26. package/dist/activities/call-transform.js.map +1 -0
  27. package/dist/activities/call-validate.d.ts +41 -0
  28. package/dist/activities/call-validate.js +163 -0
  29. package/dist/activities/call-validate.js.map +1 -0
  30. package/dist/activities/classify-tool-approvals.d.ts +47 -0
  31. package/dist/activities/classify-tool-approvals.js +207 -0
  32. package/dist/activities/classify-tool-approvals.js.map +1 -0
  33. package/dist/activities/discover-mcp-server.d.ts +65 -0
  34. package/dist/activities/discover-mcp-server.js +269 -0
  35. package/dist/activities/discover-mcp-server.js.map +1 -0
  36. package/dist/activities/emit-event.d.ts +46 -0
  37. package/dist/activities/emit-event.js +125 -0
  38. package/dist/activities/emit-event.js.map +1 -0
  39. package/dist/activities/ensure-thread.d.ts +24 -0
  40. package/dist/activities/ensure-thread.js +44 -0
  41. package/dist/activities/ensure-thread.js.map +1 -0
  42. package/dist/activities/evaluate-expressions.d.ts +21 -0
  43. package/dist/activities/evaluate-expressions.js +39 -0
  44. package/dist/activities/evaluate-expressions.js.map +1 -0
  45. package/dist/activities/execute-cursor/approval-policy.d.ts +104 -0
  46. package/dist/activities/execute-cursor/approval-policy.js +193 -0
  47. package/dist/activities/execute-cursor/approval-policy.js.map +1 -0
  48. package/dist/activities/execute-cursor/approval-state.d.ts +157 -0
  49. package/dist/activities/execute-cursor/approval-state.js +223 -0
  50. package/dist/activities/execute-cursor/approval-state.js.map +1 -0
  51. package/dist/activities/execute-cursor/attachment-resolver.d.ts +19 -0
  52. package/dist/activities/execute-cursor/attachment-resolver.js +52 -0
  53. package/dist/activities/execute-cursor/attachment-resolver.js.map +1 -0
  54. package/dist/activities/execute-cursor/blueprint-resolver.d.ts +66 -0
  55. package/dist/activities/execute-cursor/blueprint-resolver.js +169 -0
  56. package/dist/activities/execute-cursor/blueprint-resolver.js.map +1 -0
  57. package/dist/activities/execute-cursor/connect-backfill.d.ts +18 -0
  58. package/dist/activities/execute-cursor/connect-backfill.js +27 -0
  59. package/dist/activities/execute-cursor/connect-backfill.js.map +1 -0
  60. package/dist/activities/execute-cursor/cursor-event-recorder.d.ts +24 -0
  61. package/dist/activities/execute-cursor/cursor-event-recorder.js +66 -0
  62. package/dist/activities/execute-cursor/cursor-event-recorder.js.map +1 -0
  63. package/dist/activities/execute-cursor/cursor-mode.d.ts +32 -0
  64. package/dist/activities/execute-cursor/cursor-mode.js +36 -0
  65. package/dist/activities/execute-cursor/cursor-mode.js.map +1 -0
  66. package/dist/activities/execute-cursor/delta-enricher.d.ts +87 -0
  67. package/dist/activities/execute-cursor/delta-enricher.js +265 -0
  68. package/dist/activities/execute-cursor/delta-enricher.js.map +1 -0
  69. package/dist/activities/execute-cursor/env-resolver.d.ts +19 -0
  70. package/dist/activities/execute-cursor/env-resolver.js +47 -0
  71. package/dist/activities/execute-cursor/env-resolver.js.map +1 -0
  72. package/dist/activities/execute-cursor/error-classifier.d.ts +73 -0
  73. package/dist/activities/execute-cursor/error-classifier.js +185 -0
  74. package/dist/activities/execute-cursor/error-classifier.js.map +1 -0
  75. package/dist/activities/execute-cursor/fetch-interceptor.d.ts +59 -0
  76. package/dist/activities/execute-cursor/fetch-interceptor.js +317 -0
  77. package/dist/activities/execute-cursor/fetch-interceptor.js.map +1 -0
  78. package/dist/activities/execute-cursor/hitl-diagnostics.d.ts +32 -0
  79. package/dist/activities/execute-cursor/hitl-diagnostics.js +73 -0
  80. package/dist/activities/execute-cursor/hitl-diagnostics.js.map +1 -0
  81. package/dist/activities/execute-cursor/hook-script.d.ts +47 -0
  82. package/dist/activities/execute-cursor/hook-script.js +156 -0
  83. package/dist/activities/execute-cursor/hook-script.js.map +1 -0
  84. package/dist/activities/execute-cursor/http2-interceptor.d.ts +94 -0
  85. package/dist/activities/execute-cursor/http2-interceptor.js +209 -0
  86. package/dist/activities/execute-cursor/http2-interceptor.js.map +1 -0
  87. package/dist/activities/execute-cursor/index.d.ts +67 -0
  88. package/dist/activities/execute-cursor/index.js +1176 -0
  89. package/dist/activities/execute-cursor/index.js.map +1 -0
  90. package/dist/activities/execute-cursor/mcp-config.d.ts +30 -0
  91. package/dist/activities/execute-cursor/mcp-config.js +39 -0
  92. package/dist/activities/execute-cursor/mcp-config.js.map +1 -0
  93. package/dist/activities/execute-cursor/mcp-resolver.d.ts +91 -0
  94. package/dist/activities/execute-cursor/mcp-resolver.js +178 -0
  95. package/dist/activities/execute-cursor/mcp-resolver.js.map +1 -0
  96. package/dist/activities/execute-cursor/message-translator.d.ts +211 -0
  97. package/dist/activities/execute-cursor/message-translator.js +786 -0
  98. package/dist/activities/execute-cursor/message-translator.js.map +1 -0
  99. package/dist/activities/execute-cursor/model-pricing-data.d.ts +40 -0
  100. package/dist/activities/execute-cursor/model-pricing-data.js +114 -0
  101. package/dist/activities/execute-cursor/model-pricing-data.js.map +1 -0
  102. package/dist/activities/execute-cursor/model-pricing.d.ts +42 -0
  103. package/dist/activities/execute-cursor/model-pricing.js +141 -0
  104. package/dist/activities/execute-cursor/model-pricing.js.map +1 -0
  105. package/dist/activities/execute-cursor/placeholder-resolver.d.ts +34 -0
  106. package/dist/activities/execute-cursor/placeholder-resolver.js +82 -0
  107. package/dist/activities/execute-cursor/placeholder-resolver.js.map +1 -0
  108. package/dist/activities/execute-cursor/prompt-builder.d.ts +80 -0
  109. package/dist/activities/execute-cursor/prompt-builder.js +280 -0
  110. package/dist/activities/execute-cursor/prompt-builder.js.map +1 -0
  111. package/dist/activities/execute-cursor/rejection-capture.d.ts +30 -0
  112. package/dist/activities/execute-cursor/rejection-capture.js +80 -0
  113. package/dist/activities/execute-cursor/rejection-capture.js.map +1 -0
  114. package/dist/activities/execute-cursor/session-lifecycle.d.ts +189 -0
  115. package/dist/activities/execute-cursor/session-lifecycle.js +285 -0
  116. package/dist/activities/execute-cursor/session-lifecycle.js.map +1 -0
  117. package/dist/activities/execute-cursor/skill-resolver.d.ts +29 -0
  118. package/dist/activities/execute-cursor/skill-resolver.js +134 -0
  119. package/dist/activities/execute-cursor/skill-resolver.js.map +1 -0
  120. package/dist/activities/execute-cursor/subagent-config.d.ts +34 -0
  121. package/dist/activities/execute-cursor/subagent-config.js +55 -0
  122. package/dist/activities/execute-cursor/subagent-config.js.map +1 -0
  123. package/dist/activities/execute-cursor/todo-tracker.d.ts +35 -0
  124. package/dist/activities/execute-cursor/todo-tracker.js +108 -0
  125. package/dist/activities/execute-cursor/todo-tracker.js.map +1 -0
  126. package/dist/activities/execute-cursor/usage-accumulator.d.ts +55 -0
  127. package/dist/activities/execute-cursor/usage-accumulator.js +89 -0
  128. package/dist/activities/execute-cursor/usage-accumulator.js.map +1 -0
  129. package/dist/activities/execute-cursor/workspace-provision.d.ts +22 -0
  130. package/dist/activities/execute-cursor/workspace-provision.js +37 -0
  131. package/dist/activities/execute-cursor/workspace-provision.js.map +1 -0
  132. package/dist/activities/execute-cursor/workspace-setup.d.ts +27 -0
  133. package/dist/activities/execute-cursor/workspace-setup.js +61 -0
  134. package/dist/activities/execute-cursor/workspace-setup.js.map +1 -0
  135. package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.d.ts +71 -0
  136. package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.js +182 -0
  137. package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.js.map +1 -0
  138. package/dist/activities/execute-deep-agent/attachment-injector.d.ts +67 -0
  139. package/dist/activities/execute-deep-agent/attachment-injector.js +306 -0
  140. package/dist/activities/execute-deep-agent/attachment-injector.js.map +1 -0
  141. package/dist/activities/execute-deep-agent/auto-publish.d.ts +17 -0
  142. package/dist/activities/execute-deep-agent/auto-publish.js +71 -0
  143. package/dist/activities/execute-deep-agent/auto-publish.js.map +1 -0
  144. package/dist/activities/execute-deep-agent/environment.d.ts +24 -0
  145. package/dist/activities/execute-deep-agent/environment.js +50 -0
  146. package/dist/activities/execute-deep-agent/environment.js.map +1 -0
  147. package/dist/activities/execute-deep-agent/event-recorder.d.ts +21 -0
  148. package/dist/activities/execute-deep-agent/event-recorder.js +67 -0
  149. package/dist/activities/execute-deep-agent/event-recorder.js.map +1 -0
  150. package/dist/activities/execute-deep-agent/execution-state.d.ts +61 -0
  151. package/dist/activities/execute-deep-agent/execution-state.js +76 -0
  152. package/dist/activities/execute-deep-agent/execution-state.js.map +1 -0
  153. package/dist/activities/execute-deep-agent/execution-status-writer.d.ts +17 -0
  154. package/dist/activities/execute-deep-agent/execution-status-writer.js +9 -0
  155. package/dist/activities/execute-deep-agent/execution-status-writer.js.map +1 -0
  156. package/dist/activities/execute-deep-agent/hitl.d.ts +58 -0
  157. package/dist/activities/execute-deep-agent/hitl.js +155 -0
  158. package/dist/activities/execute-deep-agent/hitl.js.map +1 -0
  159. package/dist/activities/execute-deep-agent/index.d.ts +14 -0
  160. package/dist/activities/execute-deep-agent/index.js +286 -0
  161. package/dist/activities/execute-deep-agent/index.js.map +1 -0
  162. package/dist/activities/execute-deep-agent/inline-publisher.d.ts +36 -0
  163. package/dist/activities/execute-deep-agent/inline-publisher.js +105 -0
  164. package/dist/activities/execute-deep-agent/inline-publisher.js.map +1 -0
  165. package/dist/activities/execute-deep-agent/post-stream.d.ts +23 -0
  166. package/dist/activities/execute-deep-agent/post-stream.js +71 -0
  167. package/dist/activities/execute-deep-agent/post-stream.js.map +1 -0
  168. package/dist/activities/execute-deep-agent/prompt-builder.d.ts +27 -0
  169. package/dist/activities/execute-deep-agent/prompt-builder.js +200 -0
  170. package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -0
  171. package/dist/activities/execute-deep-agent/setup.d.ts +55 -0
  172. package/dist/activities/execute-deep-agent/setup.js +411 -0
  173. package/dist/activities/execute-deep-agent/setup.js.map +1 -0
  174. package/dist/activities/execute-deep-agent/status-builder-shared.d.ts +39 -0
  175. package/dist/activities/execute-deep-agent/status-builder-shared.js +120 -0
  176. package/dist/activities/execute-deep-agent/status-builder-shared.js.map +1 -0
  177. package/dist/activities/execute-deep-agent/status-builder.d.ts +81 -0
  178. package/dist/activities/execute-deep-agent/status-builder.js +312 -0
  179. package/dist/activities/execute-deep-agent/status-builder.js.map +1 -0
  180. package/dist/activities/execute-deep-agent/streaming-scheduler.d.ts +60 -0
  181. package/dist/activities/execute-deep-agent/streaming-scheduler.js +114 -0
  182. package/dist/activities/execute-deep-agent/streaming-scheduler.js.map +1 -0
  183. package/dist/activities/execute-deep-agent/streaming-side-effects.d.ts +22 -0
  184. package/dist/activities/execute-deep-agent/streaming-side-effects.js +83 -0
  185. package/dist/activities/execute-deep-agent/streaming-side-effects.js.map +1 -0
  186. package/dist/activities/execute-deep-agent/streaming-terminal.d.ts +12 -0
  187. package/dist/activities/execute-deep-agent/streaming-terminal.js +71 -0
  188. package/dist/activities/execute-deep-agent/streaming-terminal.js.map +1 -0
  189. package/dist/activities/execute-deep-agent/streaming-v3.d.ts +13 -0
  190. package/dist/activities/execute-deep-agent/streaming-v3.js +170 -0
  191. package/dist/activities/execute-deep-agent/streaming-v3.js.map +1 -0
  192. package/dist/activities/execute-deep-agent/streaming.d.ts +66 -0
  193. package/dist/activities/execute-deep-agent/streaming.js +169 -0
  194. package/dist/activities/execute-deep-agent/streaming.js.map +1 -0
  195. package/dist/activities/execute-deep-agent/subagent-tracker.d.ts +90 -0
  196. package/dist/activities/execute-deep-agent/subagent-tracker.js +364 -0
  197. package/dist/activities/execute-deep-agent/subagent-tracker.js.map +1 -0
  198. package/dist/activities/execute-deep-agent/subagent-transformer.d.ts +150 -0
  199. package/dist/activities/execute-deep-agent/subagent-transformer.js +450 -0
  200. package/dist/activities/execute-deep-agent/subagent-transformer.js.map +1 -0
  201. package/dist/activities/execute-deep-agent/subagent-wiring.d.ts +28 -0
  202. package/dist/activities/execute-deep-agent/subagent-wiring.js +40 -0
  203. package/dist/activities/execute-deep-agent/subagent-wiring.js.map +1 -0
  204. package/dist/activities/execute-deep-agent/v3-event-recorder.d.ts +31 -0
  205. package/dist/activities/execute-deep-agent/v3-event-recorder.js +71 -0
  206. package/dist/activities/execute-deep-agent/v3-event-recorder.js.map +1 -0
  207. package/dist/activities/execute-deep-agent/v3-events.d.ts +102 -0
  208. package/dist/activities/execute-deep-agent/v3-events.js +35 -0
  209. package/dist/activities/execute-deep-agent/v3-events.js.map +1 -0
  210. package/dist/activities/execute-deep-agent/v3-protocol-normalizer.d.ts +15 -0
  211. package/dist/activities/execute-deep-agent/v3-protocol-normalizer.js +235 -0
  212. package/dist/activities/execute-deep-agent/v3-protocol-normalizer.js.map +1 -0
  213. package/dist/activities/execute-deep-agent/v3-status-builder.d.ts +68 -0
  214. package/dist/activities/execute-deep-agent/v3-status-builder.js +394 -0
  215. package/dist/activities/execute-deep-agent/v3-status-builder.js.map +1 -0
  216. package/dist/activities/execute-deep-agent/writeback-coordinator.d.ts +71 -0
  217. package/dist/activities/execute-deep-agent/writeback-coordinator.js +295 -0
  218. package/dist/activities/execute-deep-agent/writeback-coordinator.js.map +1 -0
  219. package/dist/activities/hydrate-workflow-execution.d.ts +32 -0
  220. package/dist/activities/hydrate-workflow-execution.js +212 -0
  221. package/dist/activities/hydrate-workflow-execution.js.map +1 -0
  222. package/dist/activities/notification.d.ts +19 -0
  223. package/dist/activities/notification.js +47 -0
  224. package/dist/activities/notification.js.map +1 -0
  225. package/dist/activities/promote-task-output.d.ts +38 -0
  226. package/dist/activities/promote-task-output.js +90 -0
  227. package/dist/activities/promote-task-output.js.map +1 -0
  228. package/dist/activities/run-command.d.ts +15 -0
  229. package/dist/activities/run-command.js +123 -0
  230. package/dist/activities/run-command.js.map +1 -0
  231. package/dist/activities/workflow-event-activities.d.ts +48 -0
  232. package/dist/activities/workflow-event-activities.js +415 -0
  233. package/dist/activities/workflow-event-activities.js.map +1 -0
  234. package/dist/bootstrap.d.ts +80 -0
  235. package/dist/bootstrap.js +114 -0
  236. package/dist/bootstrap.js.map +1 -0
  237. package/dist/budget/index.d.ts +1 -0
  238. package/dist/budget/index.js +2 -0
  239. package/dist/budget/index.js.map +1 -0
  240. package/dist/budget/tracker.d.ts +52 -0
  241. package/dist/budget/tracker.js +123 -0
  242. package/dist/budget/tracker.js.map +1 -0
  243. package/dist/claimcheck/compressor.d.ts +2 -0
  244. package/dist/claimcheck/compressor.js +8 -0
  245. package/dist/claimcheck/compressor.js.map +1 -0
  246. package/dist/claimcheck/config.d.ts +7 -0
  247. package/dist/claimcheck/config.js +10 -0
  248. package/dist/claimcheck/config.js.map +1 -0
  249. package/dist/claimcheck/index.d.ts +3 -0
  250. package/dist/claimcheck/index.js +4 -0
  251. package/dist/claimcheck/index.js.map +1 -0
  252. package/dist/claimcheck/payload-codec.d.ts +23 -0
  253. package/dist/claimcheck/payload-codec.js +81 -0
  254. package/dist/claimcheck/payload-codec.js.map +1 -0
  255. package/dist/client/server-contracts.d.ts +52 -0
  256. package/dist/client/server-contracts.js +72 -0
  257. package/dist/client/server-contracts.js.map +1 -0
  258. package/dist/client/stigmer-client.d.ts +131 -0
  259. package/dist/client/stigmer-client.js +239 -0
  260. package/dist/client/stigmer-client.js.map +1 -0
  261. package/dist/config.d.ts +64 -0
  262. package/dist/config.js +123 -0
  263. package/dist/config.js.map +1 -0
  264. package/dist/idle-watchdog.d.ts +11 -0
  265. package/dist/idle-watchdog.js +24 -0
  266. package/dist/idle-watchdog.js.map +1 -0
  267. package/dist/index.d.ts +43 -0
  268. package/dist/index.js +42 -0
  269. package/dist/index.js.map +1 -0
  270. package/dist/interceptors/workflow-metrics-sink.d.ts +11 -0
  271. package/dist/interceptors/workflow-metrics-sink.js +51 -0
  272. package/dist/interceptors/workflow-metrics-sink.js.map +1 -0
  273. package/dist/ipc-protocol-fixtures.d.ts +32 -0
  274. package/dist/ipc-protocol-fixtures.js +69 -0
  275. package/dist/ipc-protocol-fixtures.js.map +1 -0
  276. package/dist/ipc-protocol.d.ts +60 -0
  277. package/dist/ipc-protocol.js +19 -0
  278. package/dist/ipc-protocol.js.map +1 -0
  279. package/dist/main.d.ts +19 -0
  280. package/dist/main.js +292 -0
  281. package/dist/main.js.map +1 -0
  282. package/dist/middleware/approval-gate.d.ts +30 -0
  283. package/dist/middleware/approval-gate.js +125 -0
  284. package/dist/middleware/approval-gate.js.map +1 -0
  285. package/dist/middleware/cost-cap.d.ts +22 -0
  286. package/dist/middleware/cost-cap.js +159 -0
  287. package/dist/middleware/cost-cap.js.map +1 -0
  288. package/dist/middleware/error-hints.d.ts +27 -0
  289. package/dist/middleware/error-hints.js +116 -0
  290. package/dist/middleware/error-hints.js.map +1 -0
  291. package/dist/middleware/execution-budget.d.ts +20 -0
  292. package/dist/middleware/execution-budget.js +151 -0
  293. package/dist/middleware/execution-budget.js.map +1 -0
  294. package/dist/middleware/graceful-stop.d.ts +17 -0
  295. package/dist/middleware/graceful-stop.js +63 -0
  296. package/dist/middleware/graceful-stop.js.map +1 -0
  297. package/dist/middleware/index.d.ts +27 -0
  298. package/dist/middleware/index.js +45 -0
  299. package/dist/middleware/index.js.map +1 -0
  300. package/dist/middleware/loop-detection.d.ts +14 -0
  301. package/dist/middleware/loop-detection.js +156 -0
  302. package/dist/middleware/loop-detection.js.map +1 -0
  303. package/dist/middleware/otel-spans.d.ts +11 -0
  304. package/dist/middleware/otel-spans.js +177 -0
  305. package/dist/middleware/otel-spans.js.map +1 -0
  306. package/dist/middleware/think-tool.d.ts +23 -0
  307. package/dist/middleware/think-tool.js +33 -0
  308. package/dist/middleware/think-tool.js.map +1 -0
  309. package/dist/middleware/tool-truncation.d.ts +16 -0
  310. package/dist/middleware/tool-truncation.js +67 -0
  311. package/dist/middleware/tool-truncation.js.map +1 -0
  312. package/dist/middleware/types.d.ts +100 -0
  313. package/dist/middleware/types.js +9 -0
  314. package/dist/middleware/types.js.map +1 -0
  315. package/dist/notification/index.d.ts +2 -0
  316. package/dist/notification/index.js +6 -0
  317. package/dist/notification/index.js.map +1 -0
  318. package/dist/notification/provider.d.ts +29 -0
  319. package/dist/notification/provider.js +25 -0
  320. package/dist/notification/provider.js.map +1 -0
  321. package/dist/notification/webhook.d.ts +13 -0
  322. package/dist/notification/webhook.js +55 -0
  323. package/dist/notification/webhook.js.map +1 -0
  324. package/dist/otel-metrics.d.ts +21 -0
  325. package/dist/otel-metrics.js +54 -0
  326. package/dist/otel-metrics.js.map +1 -0
  327. package/dist/otel.d.ts +57 -0
  328. package/dist/otel.js +164 -0
  329. package/dist/otel.js.map +1 -0
  330. package/dist/runner-manager.d.ts +113 -0
  331. package/dist/runner-manager.js +412 -0
  332. package/dist/runner-manager.js.map +1 -0
  333. package/dist/runner-token-coordinator.d.ts +56 -0
  334. package/dist/runner-token-coordinator.js +84 -0
  335. package/dist/runner-token-coordinator.js.map +1 -0
  336. package/dist/runner.d.ts +104 -0
  337. package/dist/runner.js +234 -0
  338. package/dist/runner.js.map +1 -0
  339. package/dist/shared/approval-policy.d.ts +45 -0
  340. package/dist/shared/approval-policy.js +122 -0
  341. package/dist/shared/approval-policy.js.map +1 -0
  342. package/dist/shared/artifact-storage.d.ts +44 -0
  343. package/dist/shared/artifact-storage.js +162 -0
  344. package/dist/shared/artifact-storage.js.map +1 -0
  345. package/dist/shared/checkpointer/factory.d.ts +28 -0
  346. package/dist/shared/checkpointer/factory.js +55 -0
  347. package/dist/shared/checkpointer/factory.js.map +1 -0
  348. package/dist/shared/checkpointer/http-saver.d.ts +34 -0
  349. package/dist/shared/checkpointer/http-saver.js +274 -0
  350. package/dist/shared/checkpointer/http-saver.js.map +1 -0
  351. package/dist/shared/checkpointer/types.d.ts +12 -0
  352. package/dist/shared/checkpointer/types.js +2 -0
  353. package/dist/shared/checkpointer/types.js.map +1 -0
  354. package/dist/shared/connect-backfill.d.ts +58 -0
  355. package/dist/shared/connect-backfill.js +119 -0
  356. package/dist/shared/connect-backfill.js.map +1 -0
  357. package/dist/shared/extract-json.d.ts +26 -0
  358. package/dist/shared/extract-json.js +140 -0
  359. package/dist/shared/extract-json.js.map +1 -0
  360. package/dist/shared/grpc-retry.d.ts +35 -0
  361. package/dist/shared/grpc-retry.js +78 -0
  362. package/dist/shared/grpc-retry.js.map +1 -0
  363. package/dist/shared/heartbeat.d.ts +22 -0
  364. package/dist/shared/heartbeat.js +55 -0
  365. package/dist/shared/heartbeat.js.map +1 -0
  366. package/dist/shared/json-schema-to-zod.d.ts +13 -0
  367. package/dist/shared/json-schema-to-zod.js +49 -0
  368. package/dist/shared/json-schema-to-zod.js.map +1 -0
  369. package/dist/shared/llm-proxy.d.ts +57 -0
  370. package/dist/shared/llm-proxy.js +116 -0
  371. package/dist/shared/llm-proxy.js.map +1 -0
  372. package/dist/shared/mcp-manager.d.ts +47 -0
  373. package/dist/shared/mcp-manager.js +118 -0
  374. package/dist/shared/mcp-manager.js.map +1 -0
  375. package/dist/shared/mcp-resolver.d.ts +41 -0
  376. package/dist/shared/mcp-resolver.js +96 -0
  377. package/dist/shared/mcp-resolver.js.map +1 -0
  378. package/dist/shared/model-pricing-data.d.ts +18 -0
  379. package/dist/shared/model-pricing-data.js +78 -0
  380. package/dist/shared/model-pricing-data.js.map +1 -0
  381. package/dist/shared/model-pricing.d.ts +24 -0
  382. package/dist/shared/model-pricing.js +58 -0
  383. package/dist/shared/model-pricing.js.map +1 -0
  384. package/dist/shared/model-registry.d.ts +55 -0
  385. package/dist/shared/model-registry.js +178 -0
  386. package/dist/shared/model-registry.js.map +1 -0
  387. package/dist/shared/placeholder-resolver.d.ts +27 -0
  388. package/dist/shared/placeholder-resolver.js +75 -0
  389. package/dist/shared/placeholder-resolver.js.map +1 -0
  390. package/dist/shared/plan-artifact.d.ts +56 -0
  391. package/dist/shared/plan-artifact.js +98 -0
  392. package/dist/shared/plan-artifact.js.map +1 -0
  393. package/dist/shared/skill-relevance.d.ts +65 -0
  394. package/dist/shared/skill-relevance.js +175 -0
  395. package/dist/shared/skill-relevance.js.map +1 -0
  396. package/dist/shared/skill-writer.d.ts +73 -0
  397. package/dist/shared/skill-writer.js +230 -0
  398. package/dist/shared/skill-writer.js.map +1 -0
  399. package/dist/shared/status.d.ts +37 -0
  400. package/dist/shared/status.js +73 -0
  401. package/dist/shared/status.js.map +1 -0
  402. package/dist/shared/subagent-gate.d.ts +41 -0
  403. package/dist/shared/subagent-gate.js +93 -0
  404. package/dist/shared/subagent-gate.js.map +1 -0
  405. package/dist/shared/tool-kind.d.ts +22 -0
  406. package/dist/shared/tool-kind.js +79 -0
  407. package/dist/shared/tool-kind.js.map +1 -0
  408. package/dist/shared/workspace/file-tree.d.ts +13 -0
  409. package/dist/shared/workspace/file-tree.js +101 -0
  410. package/dist/shared/workspace/file-tree.js.map +1 -0
  411. package/dist/shared/workspace/local-backend.d.ts +41 -0
  412. package/dist/shared/workspace/local-backend.js +113 -0
  413. package/dist/shared/workspace/local-backend.js.map +1 -0
  414. package/dist/shared/workspace/platform-dir.d.ts +25 -0
  415. package/dist/shared/workspace/platform-dir.js +36 -0
  416. package/dist/shared/workspace/platform-dir.js.map +1 -0
  417. package/dist/shared/workspace/platform-mount.d.ts +95 -0
  418. package/dist/shared/workspace/platform-mount.js +157 -0
  419. package/dist/shared/workspace/platform-mount.js.map +1 -0
  420. package/dist/shared/workspace/provisioner.d.ts +47 -0
  421. package/dist/shared/workspace/provisioner.js +84 -0
  422. package/dist/shared/workspace/provisioner.js.map +1 -0
  423. package/dist/shared/workspace/sources/empty.d.ts +8 -0
  424. package/dist/shared/workspace/sources/empty.js +18 -0
  425. package/dist/shared/workspace/sources/empty.js.map +1 -0
  426. package/dist/shared/workspace/sources/git.d.ts +22 -0
  427. package/dist/shared/workspace/sources/git.js +207 -0
  428. package/dist/shared/workspace/sources/git.js.map +1 -0
  429. package/dist/shared/workspace/sources/local-path.d.ts +17 -0
  430. package/dist/shared/workspace/sources/local-path.js +57 -0
  431. package/dist/shared/workspace/sources/local-path.js.map +1 -0
  432. package/dist/shared/workspace/types.d.ts +58 -0
  433. package/dist/shared/workspace/types.js +25 -0
  434. package/dist/shared/workspace/types.js.map +1 -0
  435. package/dist/shared/zip-extract.d.ts +30 -0
  436. package/dist/shared/zip-extract.js +150 -0
  437. package/dist/shared/zip-extract.js.map +1 -0
  438. package/dist/worker.d.ts +27 -0
  439. package/dist/worker.js +65 -0
  440. package/dist/worker.js.map +1 -0
  441. package/dist/workflow-engine/clone.d.ts +11 -0
  442. package/dist/workflow-engine/clone.js +21 -0
  443. package/dist/workflow-engine/clone.js.map +1 -0
  444. package/dist/workflow-engine/do-executor.d.ts +27 -0
  445. package/dist/workflow-engine/do-executor.js +418 -0
  446. package/dist/workflow-engine/do-executor.js.map +1 -0
  447. package/dist/workflow-engine/duration.d.ts +12 -0
  448. package/dist/workflow-engine/duration.js +25 -0
  449. package/dist/workflow-engine/duration.js.map +1 -0
  450. package/dist/workflow-engine/error-utils.d.ts +42 -0
  451. package/dist/workflow-engine/error-utils.js +77 -0
  452. package/dist/workflow-engine/error-utils.js.map +1 -0
  453. package/dist/workflow-engine/errors.d.ts +46 -0
  454. package/dist/workflow-engine/errors.js +105 -0
  455. package/dist/workflow-engine/errors.js.map +1 -0
  456. package/dist/workflow-engine/expression-utils.d.ts +60 -0
  457. package/dist/workflow-engine/expression-utils.js +108 -0
  458. package/dist/workflow-engine/expression-utils.js.map +1 -0
  459. package/dist/workflow-engine/expression.d.ts +132 -0
  460. package/dist/workflow-engine/expression.js +366 -0
  461. package/dist/workflow-engine/expression.js.map +1 -0
  462. package/dist/workflow-engine/loader.d.ts +23 -0
  463. package/dist/workflow-engine/loader.js +429 -0
  464. package/dist/workflow-engine/loader.js.map +1 -0
  465. package/dist/workflow-engine/recovery.d.ts +53 -0
  466. package/dist/workflow-engine/recovery.js +46 -0
  467. package/dist/workflow-engine/recovery.js.map +1 -0
  468. package/dist/workflow-engine/resolve.d.ts +83 -0
  469. package/dist/workflow-engine/resolve.js +257 -0
  470. package/dist/workflow-engine/resolve.js.map +1 -0
  471. package/dist/workflow-engine/retry.d.ts +30 -0
  472. package/dist/workflow-engine/retry.js +97 -0
  473. package/dist/workflow-engine/retry.js.map +1 -0
  474. package/dist/workflow-engine/state.d.ts +26 -0
  475. package/dist/workflow-engine/state.js +49 -0
  476. package/dist/workflow-engine/state.js.map +1 -0
  477. package/dist/workflow-engine/task-factory.d.ts +20 -0
  478. package/dist/workflow-engine/task-factory.js +133 -0
  479. package/dist/workflow-engine/task-factory.js.map +1 -0
  480. package/dist/workflow-engine/task-status-accumulator.d.ts +59 -0
  481. package/dist/workflow-engine/task-status-accumulator.js +164 -0
  482. package/dist/workflow-engine/task-status-accumulator.js.map +1 -0
  483. package/dist/workflow-engine/tasks/call-agent-output.d.ts +26 -0
  484. package/dist/workflow-engine/tasks/call-agent-output.js +109 -0
  485. package/dist/workflow-engine/tasks/call-agent-output.js.map +1 -0
  486. package/dist/workflow-engine/tasks/call-agent.d.ts +31 -0
  487. package/dist/workflow-engine/tasks/call-agent.js +161 -0
  488. package/dist/workflow-engine/tasks/call-agent.js.map +1 -0
  489. package/dist/workflow-engine/tasks/call-function.d.ts +19 -0
  490. package/dist/workflow-engine/tasks/call-function.js +64 -0
  491. package/dist/workflow-engine/tasks/call-function.js.map +1 -0
  492. package/dist/workflow-engine/tasks/call-grpc.d.ts +15 -0
  493. package/dist/workflow-engine/tasks/call-grpc.js +27 -0
  494. package/dist/workflow-engine/tasks/call-grpc.js.map +1 -0
  495. package/dist/workflow-engine/tasks/call-http.d.ts +19 -0
  496. package/dist/workflow-engine/tasks/call-http.js +31 -0
  497. package/dist/workflow-engine/tasks/call-http.js.map +1 -0
  498. package/dist/workflow-engine/tasks/for.d.ts +39 -0
  499. package/dist/workflow-engine/tasks/for.js +154 -0
  500. package/dist/workflow-engine/tasks/for.js.map +1 -0
  501. package/dist/workflow-engine/tasks/fork.d.ts +42 -0
  502. package/dist/workflow-engine/tasks/fork.js +142 -0
  503. package/dist/workflow-engine/tasks/fork.js.map +1 -0
  504. package/dist/workflow-engine/tasks/human-input.d.ts +33 -0
  505. package/dist/workflow-engine/tasks/human-input.js +109 -0
  506. package/dist/workflow-engine/tasks/human-input.js.map +1 -0
  507. package/dist/workflow-engine/tasks/listen.d.ts +34 -0
  508. package/dist/workflow-engine/tasks/listen.js +119 -0
  509. package/dist/workflow-engine/tasks/listen.js.map +1 -0
  510. package/dist/workflow-engine/tasks/raise.d.ts +18 -0
  511. package/dist/workflow-engine/tasks/raise.js +60 -0
  512. package/dist/workflow-engine/tasks/raise.js.map +1 -0
  513. package/dist/workflow-engine/tasks/run.d.ts +39 -0
  514. package/dist/workflow-engine/tasks/run.js +114 -0
  515. package/dist/workflow-engine/tasks/run.js.map +1 -0
  516. package/dist/workflow-engine/tasks/set.d.ts +15 -0
  517. package/dist/workflow-engine/tasks/set.js +31 -0
  518. package/dist/workflow-engine/tasks/set.js.map +1 -0
  519. package/dist/workflow-engine/tasks/switch.d.ts +25 -0
  520. package/dist/workflow-engine/tasks/switch.js +76 -0
  521. package/dist/workflow-engine/tasks/switch.js.map +1 -0
  522. package/dist/workflow-engine/tasks/try.d.ts +49 -0
  523. package/dist/workflow-engine/tasks/try.js +189 -0
  524. package/dist/workflow-engine/tasks/try.js.map +1 -0
  525. package/dist/workflow-engine/tasks/wait.d.ts +24 -0
  526. package/dist/workflow-engine/tasks/wait.js +39 -0
  527. package/dist/workflow-engine/tasks/wait.js.map +1 -0
  528. package/dist/workflow-engine/types.d.ts +682 -0
  529. package/dist/workflow-engine/types.js +47 -0
  530. package/dist/workflow-engine/types.js.map +1 -0
  531. package/dist/workflows/call-agent-orchestrator.d.ts +31 -0
  532. package/dist/workflows/call-agent-orchestrator.js +214 -0
  533. package/dist/workflows/call-agent-orchestrator.js.map +1 -0
  534. package/dist/workflows/connect-mcp-server.d.ts +20 -0
  535. package/dist/workflows/connect-mcp-server.js +113 -0
  536. package/dist/workflows/connect-mcp-server.js.map +1 -0
  537. package/dist/workflows/engine-core.d.ts +36 -0
  538. package/dist/workflows/engine-core.js +272 -0
  539. package/dist/workflows/engine-core.js.map +1 -0
  540. package/dist/workflows/execute-from-execution.d.ts +32 -0
  541. package/dist/workflows/execute-from-execution.js +71 -0
  542. package/dist/workflows/execute-from-execution.js.map +1 -0
  543. package/dist/workflows/execute-serverless-workflow.d.ts +32 -0
  544. package/dist/workflows/execute-serverless-workflow.js +36 -0
  545. package/dist/workflows/execute-serverless-workflow.js.map +1 -0
  546. package/dist/workflows/human-input-orchestrator.d.ts +19 -0
  547. package/dist/workflows/human-input-orchestrator.js +59 -0
  548. package/dist/workflows/human-input-orchestrator.js.map +1 -0
  549. package/dist/workflows/index.d.ts +22 -0
  550. package/dist/workflows/index.js +23 -0
  551. package/dist/workflows/index.js.map +1 -0
  552. package/dist/workflows/listen-orchestrator.d.ts +29 -0
  553. package/dist/workflows/listen-orchestrator.js +143 -0
  554. package/dist/workflows/listen-orchestrator.js.map +1 -0
  555. package/dist/workflows/metrics-sink.d.ts +33 -0
  556. package/dist/workflows/metrics-sink.js +21 -0
  557. package/dist/workflows/metrics-sink.js.map +1 -0
  558. package/dist/workflows/run-orchestrator.d.ts +15 -0
  559. package/dist/workflows/run-orchestrator.js +27 -0
  560. package/dist/workflows/run-orchestrator.js.map +1 -0
  561. package/dist/workflows/types.d.ts +46 -0
  562. package/dist/workflows/types.js +15 -0
  563. package/dist/workflows/types.js.map +1 -0
  564. package/dist/workflows/workflow-signals.d.ts +29 -0
  565. package/dist/workflows/workflow-signals.js +46 -0
  566. package/dist/workflows/workflow-signals.js.map +1 -0
  567. package/package.json +108 -0
  568. package/src/__test-utils__/__tests__/replay-fetch.test.ts +155 -0
  569. package/src/__test-utils__/mock-client.ts +44 -0
  570. package/src/__test-utils__/mock-workspace.ts +28 -0
  571. package/src/__test-utils__/proto-helpers.ts +41 -0
  572. package/src/__test-utils__/replay-fetch.ts +523 -0
  573. package/src/__tests__/bootstrap.test.ts +221 -0
  574. package/src/__tests__/claimcheck-codec.test.ts +257 -0
  575. package/src/__tests__/config.test.ts +150 -0
  576. package/src/__tests__/deterministic-eval-llm.test.ts +269 -0
  577. package/src/__tests__/deterministic-mcp-hitl.test.ts +405 -0
  578. package/src/__tests__/golden-e2e.test.ts +250 -0
  579. package/src/__tests__/ipc-protocol-fixtures.test.ts +66 -0
  580. package/src/__tests__/ipc-protocol.test.ts +32 -0
  581. package/src/__tests__/otel-metrics.test.ts +40 -0
  582. package/src/__tests__/runner-manager.test.ts +55 -0
  583. package/src/__tests__/runner-token-coordinator.test.ts +166 -0
  584. package/src/__tests__/runner.test.ts +182 -0
  585. package/src/__tests__/worker.test.ts +18 -0
  586. package/src/activities/__tests__/call-agent-contracts.test.ts +483 -0
  587. package/src/activities/__tests__/call-agent.test.ts +263 -0
  588. package/src/activities/__tests__/call-function.test.ts +47 -0
  589. package/src/activities/__tests__/call-grpc.test.ts +39 -0
  590. package/src/activities/__tests__/call-http.test.ts +288 -0
  591. package/src/activities/__tests__/call-llm.test.ts +301 -0
  592. package/src/activities/__tests__/classify-tool-approvals.test.ts +430 -0
  593. package/src/activities/__tests__/discover-mcp-server.test.ts +641 -0
  594. package/src/activities/__tests__/ensure-thread.test.ts +96 -0
  595. package/src/activities/__tests__/error-classifier.test.ts +372 -0
  596. package/src/activities/__tests__/evaluate-expressions.test.ts +114 -0
  597. package/src/activities/__tests__/hydrate-workflow-execution.test.ts +321 -0
  598. package/src/activities/__tests__/notification.test.ts +151 -0
  599. package/src/activities/__tests__/workflow-event-activities.test.ts +664 -0
  600. package/src/activities/call-agent-status.ts +130 -0
  601. package/src/activities/call-agent.ts +302 -0
  602. package/src/activities/call-eval.ts +333 -0
  603. package/src/activities/call-function.ts +73 -0
  604. package/src/activities/call-grpc.ts +140 -0
  605. package/src/activities/call-http.ts +185 -0
  606. package/src/activities/call-llm.ts +379 -0
  607. package/src/activities/call-transform.ts +54 -0
  608. package/src/activities/call-validate.ts +223 -0
  609. package/src/activities/classify-tool-approvals.ts +319 -0
  610. package/src/activities/discover-mcp-server.ts +411 -0
  611. package/src/activities/emit-event.ts +195 -0
  612. package/src/activities/ensure-thread.ts +45 -0
  613. package/src/activities/evaluate-expressions.ts +47 -0
  614. package/src/activities/execute-cursor/__tests__/approval-gate.test.ts +188 -0
  615. package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +111 -0
  616. package/src/activities/execute-cursor/__tests__/cursor-baseurl-routing.test.ts +86 -0
  617. package/src/activities/execute-cursor/__tests__/cursor-fetch-interceptor-bypass.test.ts +64 -0
  618. package/src/activities/execute-cursor/__tests__/cursor-mode.test.ts +95 -0
  619. package/src/activities/execute-cursor/__tests__/cursor-sdk-auth-smoke.test.ts +90 -0
  620. package/src/activities/execute-cursor/__tests__/delta-enricher.test.ts +242 -0
  621. package/src/activities/execute-cursor/__tests__/error-classifier-introspection.test.ts +156 -0
  622. package/src/activities/execute-cursor/__tests__/fetch-interceptor.test.ts +211 -0
  623. package/src/activities/execute-cursor/__tests__/hitl-ledger.test.ts +298 -0
  624. package/src/activities/execute-cursor/__tests__/http2-interceptor.test.ts +360 -0
  625. package/src/activities/execute-cursor/__tests__/message-translator.test.ts +657 -0
  626. package/src/activities/execute-cursor/__tests__/model-pricing.test.ts +92 -0
  627. package/src/activities/execute-cursor/__tests__/prompt-builder-delegation.test.ts +101 -0
  628. package/src/activities/execute-cursor/__tests__/runner-error-regressions.test.ts +144 -0
  629. package/src/activities/execute-cursor/__tests__/session-lifecycle.test.ts +65 -0
  630. package/src/activities/execute-cursor/__tests__/skill-resolver.test.ts +265 -0
  631. package/src/activities/execute-cursor/__tests__/subagent-config.test.ts +107 -0
  632. package/src/activities/execute-cursor/__tests__/todo-tracker.test.ts +498 -0
  633. package/src/activities/execute-cursor/__tests__/workspace-provision.test.ts +283 -0
  634. package/src/activities/execute-cursor/approval-policy.ts +224 -0
  635. package/src/activities/execute-cursor/approval-state.ts +311 -0
  636. package/src/activities/execute-cursor/attachment-resolver.ts +78 -0
  637. package/src/activities/execute-cursor/blueprint-resolver.ts +234 -0
  638. package/src/activities/execute-cursor/connect-backfill.ts +49 -0
  639. package/src/activities/execute-cursor/cursor-event-recorder.ts +83 -0
  640. package/src/activities/execute-cursor/cursor-mode.ts +42 -0
  641. package/src/activities/execute-cursor/delta-enricher.ts +307 -0
  642. package/src/activities/execute-cursor/env-resolver.ts +64 -0
  643. package/src/activities/execute-cursor/error-classifier.ts +247 -0
  644. package/src/activities/execute-cursor/fetch-interceptor.ts +382 -0
  645. package/src/activities/execute-cursor/hitl-diagnostics.ts +82 -0
  646. package/src/activities/execute-cursor/hook-script.ts +159 -0
  647. package/src/activities/execute-cursor/http2-interceptor.ts +253 -0
  648. package/src/activities/execute-cursor/index.ts +1439 -0
  649. package/src/activities/execute-cursor/mcp-config.ts +66 -0
  650. package/src/activities/execute-cursor/mcp-resolver.ts +271 -0
  651. package/src/activities/execute-cursor/message-translator.ts +896 -0
  652. package/src/activities/execute-cursor/model-pricing-data.ts +167 -0
  653. package/src/activities/execute-cursor/model-pricing.ts +167 -0
  654. package/src/activities/execute-cursor/placeholder-resolver.ts +109 -0
  655. package/src/activities/execute-cursor/prompt-builder.ts +349 -0
  656. package/src/activities/execute-cursor/rejection-capture.ts +100 -0
  657. package/src/activities/execute-cursor/session-lifecycle.ts +429 -0
  658. package/src/activities/execute-cursor/skill-resolver.ts +176 -0
  659. package/src/activities/execute-cursor/subagent-config.ts +62 -0
  660. package/src/activities/execute-cursor/todo-tracker.ts +133 -0
  661. package/src/activities/execute-cursor/usage-accumulator.ts +126 -0
  662. package/src/activities/execute-cursor/workspace-provision.ts +55 -0
  663. package/src/activities/execute-cursor/workspace-setup.ts +75 -0
  664. package/src/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.ts +281 -0
  665. package/src/activities/execute-deep-agent/__tests__/attachment-injector.test.ts +720 -0
  666. package/src/activities/execute-deep-agent/__tests__/auto-publish.test.ts +146 -0
  667. package/src/activities/execute-deep-agent/__tests__/environment.test.ts +103 -0
  668. package/src/activities/execute-deep-agent/__tests__/event-recorder.test.ts +150 -0
  669. package/src/activities/execute-deep-agent/__tests__/execution-state-extended.test.ts +150 -0
  670. package/src/activities/execute-deep-agent/__tests__/execution-state.test.ts +157 -0
  671. package/src/activities/execute-deep-agent/__tests__/hitl-integration.test.ts +223 -0
  672. package/src/activities/execute-deep-agent/__tests__/hitl.test.ts +244 -0
  673. package/src/activities/execute-deep-agent/__tests__/index.test.ts +91 -0
  674. package/src/activities/execute-deep-agent/__tests__/inline-publisher.test.ts +240 -0
  675. package/src/activities/execute-deep-agent/__tests__/post-stream.test.ts +112 -0
  676. package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +208 -0
  677. package/src/activities/execute-deep-agent/__tests__/status-builder.test.ts +1771 -0
  678. package/src/activities/execute-deep-agent/__tests__/streaming-scheduler.test.ts +199 -0
  679. package/src/activities/execute-deep-agent/__tests__/streaming-v3.test.ts +527 -0
  680. package/src/activities/execute-deep-agent/__tests__/streaming.test.ts +508 -0
  681. package/src/activities/execute-deep-agent/__tests__/subagent-tracker.test.ts +474 -0
  682. package/src/activities/execute-deep-agent/__tests__/subagent-transformer.test.ts +734 -0
  683. package/src/activities/execute-deep-agent/__tests__/subagent-wiring.test.ts +71 -0
  684. package/src/activities/execute-deep-agent/__tests__/summarization-verification.test.ts +323 -0
  685. package/src/activities/execute-deep-agent/__tests__/v3-event-recorder.test.ts +186 -0
  686. package/src/activities/execute-deep-agent/__tests__/v3-protocol-normalizer.test.ts +324 -0
  687. package/src/activities/execute-deep-agent/__tests__/v3-status-builder.test.ts +504 -0
  688. package/src/activities/execute-deep-agent/__tests__/writeback-coordinator.test.ts +399 -0
  689. package/src/activities/execute-deep-agent/attachment-injector.ts +470 -0
  690. package/src/activities/execute-deep-agent/auto-publish.ts +80 -0
  691. package/src/activities/execute-deep-agent/environment.ts +67 -0
  692. package/src/activities/execute-deep-agent/event-recorder.ts +95 -0
  693. package/src/activities/execute-deep-agent/execution-state.ts +87 -0
  694. package/src/activities/execute-deep-agent/execution-status-writer.ts +19 -0
  695. package/src/activities/execute-deep-agent/hitl.ts +221 -0
  696. package/src/activities/execute-deep-agent/index.ts +342 -0
  697. package/src/activities/execute-deep-agent/inline-publisher.ts +134 -0
  698. package/src/activities/execute-deep-agent/post-stream.ts +109 -0
  699. package/src/activities/execute-deep-agent/prompt-builder.ts +264 -0
  700. package/src/activities/execute-deep-agent/setup.ts +599 -0
  701. package/src/activities/execute-deep-agent/status-builder-shared.ts +136 -0
  702. package/src/activities/execute-deep-agent/status-builder.ts +412 -0
  703. package/src/activities/execute-deep-agent/streaming-scheduler.ts +159 -0
  704. package/src/activities/execute-deep-agent/streaming-side-effects.ts +89 -0
  705. package/src/activities/execute-deep-agent/streaming-terminal.ts +96 -0
  706. package/src/activities/execute-deep-agent/streaming-v3.ts +272 -0
  707. package/src/activities/execute-deep-agent/streaming.ts +303 -0
  708. package/src/activities/execute-deep-agent/subagent-tracker.ts +445 -0
  709. package/src/activities/execute-deep-agent/subagent-transformer.ts +648 -0
  710. package/src/activities/execute-deep-agent/subagent-wiring.ts +56 -0
  711. package/src/activities/execute-deep-agent/v3-event-recorder.ts +111 -0
  712. package/src/activities/execute-deep-agent/v3-events.ts +153 -0
  713. package/src/activities/execute-deep-agent/v3-protocol-normalizer.ts +264 -0
  714. package/src/activities/execute-deep-agent/v3-status-builder.ts +490 -0
  715. package/src/activities/execute-deep-agent/writeback-coordinator.ts +420 -0
  716. package/src/activities/hydrate-workflow-execution.ts +306 -0
  717. package/src/activities/notification.ts +71 -0
  718. package/src/activities/promote-task-output.ts +126 -0
  719. package/src/activities/run-command.ts +148 -0
  720. package/src/activities/workflow-event-activities.ts +481 -0
  721. package/src/bootstrap.ts +173 -0
  722. package/src/budget/__tests__/tracker.test.ts +293 -0
  723. package/src/budget/index.ts +9 -0
  724. package/src/budget/tracker.ts +171 -0
  725. package/src/claimcheck/compressor.ts +9 -0
  726. package/src/claimcheck/config.ts +20 -0
  727. package/src/claimcheck/index.ts +3 -0
  728. package/src/claimcheck/payload-codec.ts +107 -0
  729. package/src/client/__tests__/server-contracts.test.ts +149 -0
  730. package/src/client/__tests__/stigmer-client.test.ts +142 -0
  731. package/src/client/server-contracts.ts +125 -0
  732. package/src/client/stigmer-client.ts +339 -0
  733. package/src/config.ts +185 -0
  734. package/src/idle-watchdog.ts +28 -0
  735. package/src/index.ts +48 -0
  736. package/src/interceptors/workflow-metrics-sink.ts +56 -0
  737. package/src/ipc-protocol-fixtures.ts +117 -0
  738. package/src/ipc-protocol.ts +113 -0
  739. package/src/main.ts +324 -0
  740. package/src/middleware/__tests__/approval-gate.test.ts +231 -0
  741. package/src/middleware/__tests__/cost-cap.test.ts +192 -0
  742. package/src/middleware/__tests__/error-hints.test.ts +90 -0
  743. package/src/middleware/__tests__/execution-budget.test.ts +138 -0
  744. package/src/middleware/__tests__/graceful-stop.test.ts +105 -0
  745. package/src/middleware/__tests__/loop-detection.test.ts +137 -0
  746. package/src/middleware/__tests__/otel-spans.test.ts +89 -0
  747. package/src/middleware/__tests__/think-tool.test.ts +26 -0
  748. package/src/middleware/__tests__/tool-truncation.test.ts +112 -0
  749. package/src/middleware/approval-gate.ts +179 -0
  750. package/src/middleware/cost-cap.ts +213 -0
  751. package/src/middleware/error-hints.ts +136 -0
  752. package/src/middleware/execution-budget.ts +176 -0
  753. package/src/middleware/graceful-stop.ts +86 -0
  754. package/src/middleware/index.ts +70 -0
  755. package/src/middleware/loop-detection.ts +192 -0
  756. package/src/middleware/otel-spans.ts +205 -0
  757. package/src/middleware/think-tool.ts +38 -0
  758. package/src/middleware/tool-truncation.ts +94 -0
  759. package/src/middleware/types.ts +114 -0
  760. package/src/notification/__tests__/provider.test.ts +85 -0
  761. package/src/notification/__tests__/webhook.test.ts +127 -0
  762. package/src/notification/index.ts +15 -0
  763. package/src/notification/provider.ts +52 -0
  764. package/src/notification/webhook.ts +61 -0
  765. package/src/otel-metrics.ts +73 -0
  766. package/src/otel.ts +194 -0
  767. package/src/runner-manager.ts +652 -0
  768. package/src/runner-token-coordinator.ts +135 -0
  769. package/src/runner.ts +380 -0
  770. package/src/shared/__tests__/approval-policy.test.ts +256 -0
  771. package/src/shared/__tests__/artifact-storage-extended.test.ts +208 -0
  772. package/src/shared/__tests__/artifact-storage.test.ts +365 -0
  773. package/src/shared/__tests__/connect-backfill.test.ts +346 -0
  774. package/src/shared/__tests__/extract-json.test.ts +153 -0
  775. package/src/shared/__tests__/grpc-retry-extended.test.ts +176 -0
  776. package/src/shared/__tests__/grpc-retry.test.ts +172 -0
  777. package/src/shared/__tests__/json-schema-to-zod.test.ts +227 -0
  778. package/src/shared/__tests__/llm-proxy.test.ts +179 -0
  779. package/src/shared/__tests__/mcp-manager.test.ts +154 -0
  780. package/src/shared/__tests__/model-pricing.test.ts +85 -0
  781. package/src/shared/__tests__/model-registry.test.ts +197 -0
  782. package/src/shared/__tests__/placeholder-resolver.test.ts +210 -0
  783. package/src/shared/__tests__/plan-artifact.test.ts +142 -0
  784. package/src/shared/__tests__/skill-relevance.test.ts +292 -0
  785. package/src/shared/__tests__/skill-writer.test.ts +349 -0
  786. package/src/shared/__tests__/status.test.ts +142 -0
  787. package/src/shared/__tests__/subagent-gate.test.ts +112 -0
  788. package/src/shared/__tests__/tool-kind.test.ts +58 -0
  789. package/src/shared/__tests__/zip-extract.test.ts +204 -0
  790. package/src/shared/approval-policy.ts +146 -0
  791. package/src/shared/artifact-storage.ts +207 -0
  792. package/src/shared/checkpointer/__tests__/factory.test.ts +42 -0
  793. package/src/shared/checkpointer/__tests__/http-saver.test.ts +176 -0
  794. package/src/shared/checkpointer/factory.ts +73 -0
  795. package/src/shared/checkpointer/http-saver.ts +349 -0
  796. package/src/shared/checkpointer/types.ts +12 -0
  797. package/src/shared/connect-backfill.ts +162 -0
  798. package/src/shared/extract-json.ts +153 -0
  799. package/src/shared/grpc-retry.ts +113 -0
  800. package/src/shared/heartbeat.ts +70 -0
  801. package/src/shared/json-schema-to-zod.ts +53 -0
  802. package/src/shared/llm-proxy.ts +138 -0
  803. package/src/shared/mcp-manager.ts +150 -0
  804. package/src/shared/mcp-resolver.ts +150 -0
  805. package/src/shared/model-pricing-data.ts +109 -0
  806. package/src/shared/model-pricing.ts +81 -0
  807. package/src/shared/model-registry.ts +214 -0
  808. package/src/shared/placeholder-resolver.ts +102 -0
  809. package/src/shared/plan-artifact.ts +120 -0
  810. package/src/shared/skill-relevance.ts +222 -0
  811. package/src/shared/skill-writer.ts +300 -0
  812. package/src/shared/status.ts +94 -0
  813. package/src/shared/subagent-gate.ts +117 -0
  814. package/src/shared/tool-kind.ts +91 -0
  815. package/src/shared/workspace/__tests__/file-tree.test.ts +210 -0
  816. package/src/shared/workspace/__tests__/git-source.test.ts +423 -0
  817. package/src/shared/workspace/__tests__/local-backend-platform.test.ts +259 -0
  818. package/src/shared/workspace/__tests__/local-backend.test.ts +154 -0
  819. package/src/shared/workspace/__tests__/platform-mount.test.ts +378 -0
  820. package/src/shared/workspace/__tests__/provisioner.test.ts +145 -0
  821. package/src/shared/workspace/file-tree.ts +116 -0
  822. package/src/shared/workspace/local-backend.ts +140 -0
  823. package/src/shared/workspace/platform-dir.ts +38 -0
  824. package/src/shared/workspace/platform-mount.ts +190 -0
  825. package/src/shared/workspace/provisioner.ts +150 -0
  826. package/src/shared/workspace/sources/empty.ts +20 -0
  827. package/src/shared/workspace/sources/git.ts +285 -0
  828. package/src/shared/workspace/sources/local-path.ts +89 -0
  829. package/src/shared/workspace/types.ts +69 -0
  830. package/src/shared/zip-extract.ts +193 -0
  831. package/src/worker.ts +98 -0
  832. package/src/workflow-engine/__tests__/do-executor-recovery.test.ts +382 -0
  833. package/src/workflow-engine/__tests__/do-executor.test.ts +963 -0
  834. package/src/workflow-engine/__tests__/errors.test.ts +174 -0
  835. package/src/workflow-engine/__tests__/expression.test.ts +776 -0
  836. package/src/workflow-engine/__tests__/for.test.ts +575 -0
  837. package/src/workflow-engine/__tests__/fork.test.ts +838 -0
  838. package/src/workflow-engine/__tests__/golden-execution.test.ts +1085 -0
  839. package/src/workflow-engine/__tests__/jq-wasm-spike.test.ts +90 -0
  840. package/src/workflow-engine/__tests__/loader.test.ts +1393 -0
  841. package/src/workflow-engine/__tests__/pause-resume.test.ts +267 -0
  842. package/src/workflow-engine/__tests__/recovery.test.ts +115 -0
  843. package/src/workflow-engine/__tests__/resolve.test.ts +432 -0
  844. package/src/workflow-engine/__tests__/retry.test.ts +306 -0
  845. package/src/workflow-engine/__tests__/state.test.ts +174 -0
  846. package/src/workflow-engine/__tests__/task-status-accumulator.test.ts +373 -0
  847. package/src/workflow-engine/__tests__/tasks/call-agent-output.test.ts +120 -0
  848. package/src/workflow-engine/__tests__/tasks/call-agent.test.ts +816 -0
  849. package/src/workflow-engine/__tests__/tasks/call-function.test.ts +205 -0
  850. package/src/workflow-engine/__tests__/tasks/call-grpc.test.ts +133 -0
  851. package/src/workflow-engine/__tests__/tasks/call-http.test.ts +150 -0
  852. package/src/workflow-engine/__tests__/tasks/emit-event.test.ts +322 -0
  853. package/src/workflow-engine/__tests__/tasks/human-input.test.ts +416 -0
  854. package/src/workflow-engine/__tests__/tasks/listen.test.ts +422 -0
  855. package/src/workflow-engine/__tests__/tasks/raise.test.ts +166 -0
  856. package/src/workflow-engine/__tests__/tasks/run.test.ts +272 -0
  857. package/src/workflow-engine/__tests__/tasks/set.test.ts +127 -0
  858. package/src/workflow-engine/__tests__/tasks/switch.test.ts +277 -0
  859. package/src/workflow-engine/__tests__/tasks/try.test.ts +590 -0
  860. package/src/workflow-engine/__tests__/tasks/wait.test.ts +173 -0
  861. package/src/workflow-engine/clone.ts +18 -0
  862. package/src/workflow-engine/do-executor.ts +569 -0
  863. package/src/workflow-engine/duration.ts +22 -0
  864. package/src/workflow-engine/error-utils.ts +97 -0
  865. package/src/workflow-engine/errors.ts +130 -0
  866. package/src/workflow-engine/expression-utils.ts +129 -0
  867. package/src/workflow-engine/expression.ts +430 -0
  868. package/src/workflow-engine/loader.ts +524 -0
  869. package/src/workflow-engine/recovery.ts +80 -0
  870. package/src/workflow-engine/resolve.ts +342 -0
  871. package/src/workflow-engine/retry.ts +109 -0
  872. package/src/workflow-engine/state.ts +56 -0
  873. package/src/workflow-engine/task-factory.ts +160 -0
  874. package/src/workflow-engine/task-status-accumulator.ts +204 -0
  875. package/src/workflow-engine/tasks/call-agent-output.ts +132 -0
  876. package/src/workflow-engine/tasks/call-agent.ts +221 -0
  877. package/src/workflow-engine/tasks/call-function.ts +107 -0
  878. package/src/workflow-engine/tasks/call-grpc.ts +47 -0
  879. package/src/workflow-engine/tasks/call-http.ts +51 -0
  880. package/src/workflow-engine/tasks/for.ts +244 -0
  881. package/src/workflow-engine/tasks/fork.ts +228 -0
  882. package/src/workflow-engine/tasks/human-input.ts +147 -0
  883. package/src/workflow-engine/tasks/listen.ts +166 -0
  884. package/src/workflow-engine/tasks/raise.ts +81 -0
  885. package/src/workflow-engine/tasks/run.ts +142 -0
  886. package/src/workflow-engine/tasks/set.ts +47 -0
  887. package/src/workflow-engine/tasks/switch.ts +102 -0
  888. package/src/workflow-engine/tasks/try.ts +274 -0
  889. package/src/workflow-engine/tasks/wait.ts +53 -0
  890. package/src/workflow-engine/types.ts +911 -0
  891. package/src/workflows/__tests__/connect-mcp-server.test.ts +359 -0
  892. package/src/workflows/__tests__/execute-serverless-workflow.test.ts +277 -0
  893. package/src/workflows/call-agent-orchestrator.ts +283 -0
  894. package/src/workflows/connect-mcp-server.ts +152 -0
  895. package/src/workflows/engine-core.ts +406 -0
  896. package/src/workflows/execute-from-execution.ts +101 -0
  897. package/src/workflows/execute-serverless-workflow.ts +60 -0
  898. package/src/workflows/human-input-orchestrator.ts +76 -0
  899. package/src/workflows/index.ts +32 -0
  900. package/src/workflows/listen-orchestrator.ts +200 -0
  901. package/src/workflows/metrics-sink.ts +48 -0
  902. package/src/workflows/run-orchestrator.ts +34 -0
  903. package/src/workflows/types.ts +64 -0
  904. package/src/workflows/workflow-signals.ts +55 -0
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Model registry — provider lookup and economy-tier model derivation.
3
+ *
4
+ * Fetches the model registry from the Stigmer API (same endpoint as
5
+ * model-pricing-data.ts) and uses `costTier` + `harness` fields to
6
+ * dynamically resolve economy-tier models for extraction/summarization.
7
+ */
8
+ /**
9
+ * Check whether a model identifier is known to the registry.
10
+ *
11
+ * Used to validate SubAgent model_override values. Returns false if the
12
+ * registry is empty (fetch failed) — callers should treat this as "unknown"
13
+ * and reject the override to avoid running on an unintended model.
14
+ */
15
+ export declare function isModelRegistered(modelId: string): Promise<boolean>;
16
+ /**
17
+ * Derive the recommended economy-tier model for summarization/classification
18
+ * tasks, given a primary model name.
19
+ *
20
+ * Resolution:
21
+ * 1. Look up the primary model's provider in the registry
22
+ * 2. Map provider → economy model (anthropic→claude-haiku-4.5, openai→gpt-4o-mini)
23
+ * 3. Fall back to the primary model itself if provider is unknown or unmapped
24
+ */
25
+ export declare function getSummarizationModel(primaryModel: string): Promise<string>;
26
+ /**
27
+ * Resolve the economy-tier model for a given primary model by querying
28
+ * the registry for costTier=economy + same provider + harness=native.
29
+ *
30
+ * Resolution order:
31
+ * 1. Find the primary model's provider in the registry
32
+ * 2. Find an economy-tier native model from that provider
33
+ * 3. Cross-provider fallback: any economy-tier native model
34
+ * 4. Last resort: return the primary model itself
35
+ */
36
+ export declare function getEconomyModel(primaryModel: string): Promise<string>;
37
+ export declare function getDefaultModel(): Promise<string>;
38
+ /**
39
+ * Resolve a Stigmer registry model ID to the provider's API model identifier.
40
+ *
41
+ * The registry maintains two identifiers per model:
42
+ * - `id`: Stigmer canonical ID (e.g., "claude-haiku-4.5")
43
+ * - `apiModelId`: Provider API identifier (e.g., "claude-haiku-4-5-20251001")
44
+ *
45
+ * This function performs the translation that the proto documentation promises:
46
+ * "Model reference resolved via the Stigmer model registry."
47
+ *
48
+ * Graceful degradation:
49
+ * - Registry unavailable → returns the original string unchanged
50
+ * - Model not found in registry → returns the original string unchanged
51
+ * - Model found but has no apiModelId → returns the registry `id` unchanged
52
+ */
53
+ export declare function resolveToApiModelId(registryId: string): Promise<string>;
54
+ /** Exposed for testing — resets the in-memory cache. */
55
+ export declare function _resetRegistryCache(): void;
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Model registry — provider lookup and economy-tier model derivation.
3
+ *
4
+ * Fetches the model registry from the Stigmer API (same endpoint as
5
+ * model-pricing-data.ts) and uses `costTier` + `harness` fields to
6
+ * dynamically resolve economy-tier models for extraction/summarization.
7
+ */
8
+ const DEFAULT_API_URL = "https://api.stigmer.ai";
9
+ const CACHE_TTL_MS = 3_600_000;
10
+ let cache = null;
11
+ let inflightFetch = null;
12
+ function parseRegistry(json) {
13
+ if (!json || typeof json !== "object")
14
+ return [];
15
+ const models = json.models;
16
+ if (!Array.isArray(models))
17
+ return [];
18
+ return models
19
+ .filter((m) => typeof m.id === "string" && typeof m.provider === "string")
20
+ .map((m) => ({
21
+ id: m.id,
22
+ apiModelId: typeof m.apiModelId === "string" ? m.apiModelId : undefined,
23
+ provider: m.provider,
24
+ costTier: m.costTier ?? "standard",
25
+ harness: m.harness ?? "native",
26
+ featured: !!m.featured,
27
+ }));
28
+ }
29
+ async function fetchRegistry() {
30
+ const url = `${process.env.STIGMER_CLOUD_API_URL ?? DEFAULT_API_URL}/v1/proxy/model-registry`;
31
+ const headers = {};
32
+ const token = process.env.STIGMER_TOKEN ?? process.env.STIGMER_AUTH_TOKEN;
33
+ if (token) {
34
+ headers["Authorization"] = `Bearer ${token}`;
35
+ }
36
+ const res = await fetch(url, { headers });
37
+ if (!res.ok)
38
+ throw new Error(`Model registry fetch failed: ${res.status}`);
39
+ const data = await res.json();
40
+ return parseRegistry(data);
41
+ }
42
+ async function getRegistry() {
43
+ if (cache && Date.now() < cache.expiresAt) {
44
+ return cache.models;
45
+ }
46
+ if (inflightFetch)
47
+ return inflightFetch;
48
+ inflightFetch = fetchRegistry()
49
+ .then((models) => {
50
+ cache = { models, expiresAt: Date.now() + CACHE_TTL_MS };
51
+ return models;
52
+ })
53
+ .catch((err) => {
54
+ console.warn(`Failed to fetch model registry for provider lookup: ${err}`);
55
+ cache = { models: [], expiresAt: Date.now() + CACHE_TTL_MS };
56
+ return [];
57
+ })
58
+ .finally(() => {
59
+ inflightFetch = null;
60
+ });
61
+ return inflightFetch;
62
+ }
63
+ /**
64
+ * Check whether a model identifier is known to the registry.
65
+ *
66
+ * Used to validate SubAgent model_override values. Returns false if the
67
+ * registry is empty (fetch failed) — callers should treat this as "unknown"
68
+ * and reject the override to avoid running on an unintended model.
69
+ */
70
+ export async function isModelRegistered(modelId) {
71
+ const registry = await getRegistry();
72
+ if (registry.length === 0)
73
+ return false;
74
+ return registry.some((m) => m.id === modelId);
75
+ }
76
+ /**
77
+ * Derive the recommended economy-tier model for summarization/classification
78
+ * tasks, given a primary model name.
79
+ *
80
+ * Resolution:
81
+ * 1. Look up the primary model's provider in the registry
82
+ * 2. Map provider → economy model (anthropic→claude-haiku-4.5, openai→gpt-4o-mini)
83
+ * 3. Fall back to the primary model itself if provider is unknown or unmapped
84
+ */
85
+ export async function getSummarizationModel(primaryModel) {
86
+ return getEconomyModel(primaryModel);
87
+ }
88
+ /**
89
+ * Resolve the economy-tier model for a given primary model by querying
90
+ * the registry for costTier=economy + same provider + harness=native.
91
+ *
92
+ * Resolution order:
93
+ * 1. Find the primary model's provider in the registry
94
+ * 2. Find an economy-tier native model from that provider
95
+ * 3. Cross-provider fallback: any economy-tier native model
96
+ * 4. Last resort: return the primary model itself
97
+ */
98
+ export async function getEconomyModel(primaryModel) {
99
+ const registry = await getRegistry();
100
+ if (registry.length === 0) {
101
+ // Registry unavailable: keep the caller's chosen model rather than
102
+ // switching to a hardcoded economy model on a possibly-unconfigured
103
+ // provider. Summarization degrades gracefully to the primary model.
104
+ console.warn(`Model registry empty — falling back to primary model "${primaryModel}" for economy tier`);
105
+ return primaryModel;
106
+ }
107
+ const primary = registry.find((m) => m.id === primaryModel);
108
+ const targetProvider = primary?.provider ?? "anthropic";
109
+ const sameProviderEconomy = registry.find((m) => m.provider === targetProvider && m.costTier === "economy" && m.harness === "native");
110
+ if (sameProviderEconomy)
111
+ return sameProviderEconomy.id;
112
+ const anyEconomy = registry.find((m) => m.costTier === "economy" && m.harness === "native");
113
+ if (anyEconomy)
114
+ return anyEconomy.id;
115
+ if (!primary) {
116
+ console.warn(`Model "${primaryModel}" not found in registry and no economy fallback available`);
117
+ }
118
+ return primaryModel;
119
+ }
120
+ /**
121
+ * Resolve the default agent execution model from the registry.
122
+ *
123
+ * Used when the user hasn't selected a model (no executionConfig.modelName).
124
+ * Returns the provider's API model identifier (e.g., "claude-sonnet-4-6"),
125
+ * not the Stigmer registry ID (e.g., "claude-sonnet-4.6").
126
+ *
127
+ * Resolution order:
128
+ * 1. Featured + standard + native (platform's curated default)
129
+ * 2. Any standard + native model
130
+ * 3. Hardcoded fallback (registry unavailable)
131
+ */
132
+ const FALLBACK_DEFAULT_MODEL = "claude-sonnet-4-6";
133
+ export async function getDefaultModel() {
134
+ const registry = await getRegistry();
135
+ if (registry.length === 0) {
136
+ console.warn(`Model registry empty — using fallback default model "${FALLBACK_DEFAULT_MODEL}"`);
137
+ return FALLBACK_DEFAULT_MODEL;
138
+ }
139
+ const featuredStandard = registry.find((m) => m.featured && m.costTier === "standard" && m.harness === "native");
140
+ if (featuredStandard)
141
+ return featuredStandard.apiModelId ?? featuredStandard.id;
142
+ const anyStandard = registry.find((m) => m.costTier === "standard" && m.harness === "native");
143
+ if (anyStandard)
144
+ return anyStandard.apiModelId ?? anyStandard.id;
145
+ return FALLBACK_DEFAULT_MODEL;
146
+ }
147
+ /**
148
+ * Resolve a Stigmer registry model ID to the provider's API model identifier.
149
+ *
150
+ * The registry maintains two identifiers per model:
151
+ * - `id`: Stigmer canonical ID (e.g., "claude-haiku-4.5")
152
+ * - `apiModelId`: Provider API identifier (e.g., "claude-haiku-4-5-20251001")
153
+ *
154
+ * This function performs the translation that the proto documentation promises:
155
+ * "Model reference resolved via the Stigmer model registry."
156
+ *
157
+ * Graceful degradation:
158
+ * - Registry unavailable → returns the original string unchanged
159
+ * - Model not found in registry → returns the original string unchanged
160
+ * - Model found but has no apiModelId → returns the registry `id` unchanged
161
+ */
162
+ export async function resolveToApiModelId(registryId) {
163
+ if (!registryId)
164
+ return registryId;
165
+ const registry = await getRegistry();
166
+ if (registry.length === 0)
167
+ return registryId;
168
+ const entry = registry.find((m) => m.id === registryId);
169
+ if (!entry)
170
+ return registryId;
171
+ return entry.apiModelId ?? registryId;
172
+ }
173
+ /** Exposed for testing — resets the in-memory cache. */
174
+ export function _resetRegistryCache() {
175
+ cache = null;
176
+ inflightFetch = null;
177
+ }
178
+ //# sourceMappingURL=model-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/shared/model-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Strict placeholder resolver for ${VAR_NAME} syntax in MCP server configs.
3
+ *
4
+ * Always raises on unresolved placeholders — sending literal ${VAR} as an
5
+ * HTTP header value produces cryptic auth failures from the remote server.
6
+ */
7
+ export declare class PlaceholderResolutionError extends Error {
8
+ readonly variableName: string;
9
+ readonly context?: string | undefined;
10
+ constructor(variableName: string, context?: string | undefined);
11
+ }
12
+ /**
13
+ * Resolve all ${VAR_NAME} placeholders in a template string.
14
+ *
15
+ * @throws PlaceholderResolutionError if any placeholder cannot be resolved.
16
+ */
17
+ export declare function resolvePlaceholders(template: string, envVars: Record<string, string>, context?: string): string;
18
+ /**
19
+ * Resolve placeholders in all values of a headers map.
20
+ */
21
+ export declare function resolveHeaders(headers: Record<string, string>, envVars: Record<string, string>): Record<string, string>;
22
+ /**
23
+ * Filter env vars to only keys declared in the MCP server's spec.env.
24
+ * Prevents secret over-sharing by restricting the environment to
25
+ * explicitly declared variables.
26
+ */
27
+ export declare function filterEnvToDeclaredKeys(declaredEnv: Record<string, unknown> | undefined, envVars: Record<string, string>, serverSlug: string): Record<string, string>;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Strict placeholder resolver for ${VAR_NAME} syntax in MCP server configs.
3
+ *
4
+ * Always raises on unresolved placeholders — sending literal ${VAR} as an
5
+ * HTTP header value produces cryptic auth failures from the remote server.
6
+ */
7
+ const PLACEHOLDER_RE = /\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;
8
+ export class PlaceholderResolutionError extends Error {
9
+ variableName;
10
+ context;
11
+ constructor(variableName, context) {
12
+ const where = context ? ` in ${context}` : "";
13
+ super(`Unresolved placeholder \${${variableName}}${where}: ` +
14
+ `variable is not present in the execution environment`);
15
+ this.variableName = variableName;
16
+ this.context = context;
17
+ this.name = "PlaceholderResolutionError";
18
+ }
19
+ }
20
+ /**
21
+ * Resolve all ${VAR_NAME} placeholders in a template string.
22
+ *
23
+ * @throws PlaceholderResolutionError if any placeholder cannot be resolved.
24
+ */
25
+ export function resolvePlaceholders(template, envVars, context) {
26
+ return template.replace(PLACEHOLDER_RE, (match, varName) => {
27
+ if (varName in envVars) {
28
+ return envVars[varName];
29
+ }
30
+ throw new PlaceholderResolutionError(varName, context);
31
+ });
32
+ }
33
+ /**
34
+ * Resolve placeholders in all values of a headers map.
35
+ */
36
+ export function resolveHeaders(headers, envVars) {
37
+ const resolved = {};
38
+ for (const [key, value] of Object.entries(headers)) {
39
+ resolved[key] = resolvePlaceholders(value, envVars, `header "${key}"`);
40
+ }
41
+ return resolved;
42
+ }
43
+ /**
44
+ * Filter env vars to only keys declared in the MCP server's spec.env.
45
+ * Prevents secret over-sharing by restricting the environment to
46
+ * explicitly declared variables.
47
+ */
48
+ export function filterEnvToDeclaredKeys(declaredEnv, envVars, serverSlug) {
49
+ if (!declaredEnv || Object.keys(declaredEnv).length === 0) {
50
+ if (Object.keys(envVars).length > 0) {
51
+ console.log(`MCP server '${serverSlug}' has no env declarations — ` +
52
+ `dropping ${Object.keys(envVars).length} env var(s)`);
53
+ }
54
+ return {};
55
+ }
56
+ const declaredKeys = new Set(Object.keys(declaredEnv));
57
+ const filtered = {};
58
+ for (const [key, value] of Object.entries(envVars)) {
59
+ if (declaredKeys.has(key)) {
60
+ filtered[key] = value;
61
+ }
62
+ }
63
+ const dropped = Object.keys(envVars).length - Object.keys(filtered).length;
64
+ if (dropped > 0) {
65
+ console.log(`MCP server '${serverSlug}': passing ${Object.keys(filtered).length} ` +
66
+ `declared env var(s), filtered out ${dropped} undeclared key(s)`);
67
+ }
68
+ const missing = [...declaredKeys].filter((k) => !(k in filtered));
69
+ if (missing.length > 0) {
70
+ console.warn(`MCP server '${serverSlug}': env declares [${missing.sort().join(", ")}] ` +
71
+ `but they are not present in the resolved environment`);
72
+ }
73
+ return filtered;
74
+ }
75
+ //# sourceMappingURL=placeholder-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeholder-resolver.js","sourceRoot":"","sources":["../../src/shared/placeholder-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Plan-mode artifact publishing.
3
+ *
4
+ * When an execution runs in Plan mode (InteractionMode.PLAN), the agent's final
5
+ * message IS the plan. We publish that text as a first-class `plan.md`
6
+ * ExecutionArtifact so the UI can render a reviewable Plan card with
7
+ * copy/download, and a follow-up "Implement" execution can reference it
8
+ * deterministically.
9
+ *
10
+ * This is deliberately a single, harness-agnostic helper:
11
+ * - The native (deepagents) harness already auto-publishes files an agent
12
+ * writes (InlinePublisher), but Plan mode is read-only, so there is no file to
13
+ * publish — the plan lives only in the final message.
14
+ * - The Cursor harness has no artifact pipeline at all.
15
+ *
16
+ * Publishing the final message here, at finalization, gives both harnesses an
17
+ * identical, durable plan artifact derived from the single source of truth (the
18
+ * final AI message). It mirrors the InlinePublisher "publish a derived artifact"
19
+ * pattern: one immutable artifact, published once, never a parallel copy that
20
+ * can drift.
21
+ *
22
+ * The plan content is NOT duplicated as a separate stored blob beyond this
23
+ * artifact — the chat message remains the live/streamed view; the artifact is
24
+ * the durable/exportable view, detected by convention (a FILE artifact named
25
+ * `plan.md`).
26
+ */
27
+ import type { AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
28
+ import type { ArtifactStorage } from "./artifact-storage.js";
29
+ /** Canonical filename for a plan artifact. UI detection keys on this name. */
30
+ export declare const PLAN_ARTIFACT_NAME = "plan.md";
31
+ /**
32
+ * Sandbox path recorded on the artifact. Routes under `.stigmer/` (the
33
+ * session platform dir), so it never pollutes the user's workspace, and a
34
+ * follow-up execution can reference it via workspace file refs if desired.
35
+ */
36
+ export declare const PLAN_ARTIFACT_SANDBOX_PATH = ".stigmer/plans/plan.md";
37
+ /**
38
+ * Returns the text of the last AI message in a completed status, trimmed.
39
+ * Returns `undefined` when there is no AI message with content — the plan was
40
+ * empty and nothing should be published.
41
+ */
42
+ export declare function extractFinalPlanText(status: AgentExecutionStatus): string | undefined;
43
+ /**
44
+ * Publishes `planText` as a `plan.md` ExecutionArtifact and registers it on
45
+ * `status.artifacts`. Idempotent: re-publishing replaces any existing `plan.md`
46
+ * rather than appending a duplicate, preserving a single source of truth.
47
+ *
48
+ * Fire-and-forget by contract: a plan that fails to upload must never fail the
49
+ * execution. Errors are logged and swallowed.
50
+ */
51
+ export declare function publishPlanArtifact(opts: {
52
+ readonly status: AgentExecutionStatus;
53
+ readonly executionId: string;
54
+ readonly planText: string;
55
+ readonly artifactStorage: ArtifactStorage;
56
+ }): Promise<void>;
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Plan-mode artifact publishing.
3
+ *
4
+ * When an execution runs in Plan mode (InteractionMode.PLAN), the agent's final
5
+ * message IS the plan. We publish that text as a first-class `plan.md`
6
+ * ExecutionArtifact so the UI can render a reviewable Plan card with
7
+ * copy/download, and a follow-up "Implement" execution can reference it
8
+ * deterministically.
9
+ *
10
+ * This is deliberately a single, harness-agnostic helper:
11
+ * - The native (deepagents) harness already auto-publishes files an agent
12
+ * writes (InlinePublisher), but Plan mode is read-only, so there is no file to
13
+ * publish — the plan lives only in the final message.
14
+ * - The Cursor harness has no artifact pipeline at all.
15
+ *
16
+ * Publishing the final message here, at finalization, gives both harnesses an
17
+ * identical, durable plan artifact derived from the single source of truth (the
18
+ * final AI message). It mirrors the InlinePublisher "publish a derived artifact"
19
+ * pattern: one immutable artifact, published once, never a parallel copy that
20
+ * can drift.
21
+ *
22
+ * The plan content is NOT duplicated as a separate stored blob beyond this
23
+ * artifact — the chat message remains the live/streamed view; the artifact is
24
+ * the durable/exportable view, detected by convention (a FILE artifact named
25
+ * `plan.md`).
26
+ */
27
+ import { createHash } from "node:crypto";
28
+ import { create } from "@bufbuild/protobuf";
29
+ import { ExecutionArtifactSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/artifact_pb";
30
+ import { ExecutionArtifactKind, MessageType, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
31
+ import { utcTimestamp } from "./status.js";
32
+ /** Canonical filename for a plan artifact. UI detection keys on this name. */
33
+ export const PLAN_ARTIFACT_NAME = "plan.md";
34
+ /**
35
+ * Sandbox path recorded on the artifact. Routes under `.stigmer/` (the
36
+ * session platform dir), so it never pollutes the user's workspace, and a
37
+ * follow-up execution can reference it via workspace file refs if desired.
38
+ */
39
+ export const PLAN_ARTIFACT_SANDBOX_PATH = ".stigmer/plans/plan.md";
40
+ /**
41
+ * Returns the text of the last AI message in a completed status, trimmed.
42
+ * Returns `undefined` when there is no AI message with content — the plan was
43
+ * empty and nothing should be published.
44
+ */
45
+ export function extractFinalPlanText(status) {
46
+ for (let i = status.messages.length - 1; i >= 0; i--) {
47
+ const msg = status.messages[i];
48
+ if (msg.type === MessageType.MESSAGE_AI && msg.content.trim().length > 0) {
49
+ return msg.content;
50
+ }
51
+ }
52
+ return undefined;
53
+ }
54
+ /**
55
+ * Publishes `planText` as a `plan.md` ExecutionArtifact and registers it on
56
+ * `status.artifacts`. Idempotent: re-publishing replaces any existing `plan.md`
57
+ * rather than appending a duplicate, preserving a single source of truth.
58
+ *
59
+ * Fire-and-forget by contract: a plan that fails to upload must never fail the
60
+ * execution. Errors are logged and swallowed.
61
+ */
62
+ export async function publishPlanArtifact(opts) {
63
+ const { status, executionId, planText, artifactStorage } = opts;
64
+ if (planText.trim().length === 0) {
65
+ return;
66
+ }
67
+ try {
68
+ const content = Buffer.from(planText, "utf-8");
69
+ const contentHash = createHash("sha256").update(content).digest("hex");
70
+ const storageKey = `artifacts/${executionId}/${PLAN_ARTIFACT_NAME}`;
71
+ await artifactStorage.upload(storageKey, content, "text/markdown");
72
+ const downloadUrl = await artifactStorage.getDownloadUrl(storageKey);
73
+ const artifact = create(ExecutionArtifactSchema, {
74
+ name: PLAN_ARTIFACT_NAME,
75
+ sandboxPath: PLAN_ARTIFACT_SANDBOX_PATH,
76
+ kind: ExecutionArtifactKind.FILE,
77
+ sizeBytes: BigInt(content.length),
78
+ storageKey,
79
+ downloadUrl,
80
+ createdAt: utcTimestamp(),
81
+ contentHash,
82
+ });
83
+ const existingIdx = status.artifacts.findIndex((a) => a.name === PLAN_ARTIFACT_NAME);
84
+ if (existingIdx >= 0) {
85
+ status.artifacts[existingIdx] = artifact;
86
+ }
87
+ else {
88
+ status.artifacts.push(artifact);
89
+ }
90
+ console.log(`[plan-artifact] execution=${executionId} — published ${PLAN_ARTIFACT_NAME} ` +
91
+ `(${content.length} bytes, hash=${contentHash.slice(0, 12)})`);
92
+ }
93
+ catch (err) {
94
+ console.warn(`[plan-artifact] execution=${executionId} — ` +
95
+ `failed to publish plan (non-fatal): ${err}`);
96
+ }
97
+ }
98
+ //# sourceMappingURL=plan-artifact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-artifact.js","sourceRoot":"","sources":["../../src/shared/plan-artifact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Skill relevance scoring for smart context filtering.
3
+ *
4
+ * Uses a BM25-inspired algorithm to score each skill's relevance
5
+ * against the user message. When an agent has many skills configured,
6
+ * low-relevance skills are excluded from the system prompt to improve
7
+ * signal quality.
8
+ *
9
+ * The progressive disclosure model means only skill metadata
10
+ * (~50-70 tokens per skill) lives in the prompt, so filtering
11
+ * primarily reduces noise rather than saving tokens.
12
+ *
13
+ * BM25 (Best Matching 25) is a lightweight, well-understood ranking
14
+ * function from information retrieval. It uses term frequency saturation
15
+ * and document length normalisation — both important when matching a
16
+ * short user message (query) against short skill metadata (documents of
17
+ * 5-20 tokens each).
18
+ *
19
+ * No external dependencies required.
20
+ */
21
+ /** Relevance filtering activates only when the agent has at least this many skills. */
22
+ export declare const SKILL_COUNT_THRESHOLD = 8;
23
+ /**
24
+ * Split text into lowercase tokens, dropping stop words and
25
+ * single-character fragments.
26
+ */
27
+ export declare function tokenize(text: string): string[];
28
+ export interface ScoredSkill {
29
+ readonly index: number;
30
+ readonly name: string;
31
+ readonly score: number;
32
+ }
33
+ export interface SkillFilterResult {
34
+ /** Indices of skills to include in the prompt (original order). */
35
+ readonly includedIndices: number[];
36
+ /** Indices of skills excluded from the prompt (original order). */
37
+ readonly excludedIndices: number[];
38
+ /** Names of excluded skills (sorted alphabetically). */
39
+ readonly excludedNames: string[];
40
+ }
41
+ /**
42
+ * Score each skill's relevance to the user message using BM25.
43
+ *
44
+ * Each skill's name and description are concatenated into a document
45
+ * and scored against the query terms extracted from the user message.
46
+ *
47
+ * Returns ScoredSkill list ordered by descending score (ties broken alphabetically).
48
+ */
49
+ export declare function scoreSkills(userMessage: string, skillNames: readonly string[], skillDescriptions: readonly string[], options?: {
50
+ k1?: number;
51
+ b?: number;
52
+ }): ScoredSkill[];
53
+ /**
54
+ * Partition skills into included / excluded based on relevance.
55
+ *
56
+ * Below the threshold, every skill is included unconditionally.
57
+ * Above the threshold, skills whose BM25 score is zero (no query
58
+ * term overlap at all) are moved to the excluded set.
59
+ *
60
+ * A safety floor guarantees that at least half the skills are
61
+ * always included, regardless of scores.
62
+ */
63
+ export declare function filterSkills(userMessage: string, skillNames: readonly string[], skillDescriptions: readonly string[], options?: {
64
+ threshold?: number;
65
+ }): SkillFilterResult;