@sema-ai/core 1.275.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 (962) hide show
  1. package/CHANGELOG.md +5433 -0
  2. package/LICENSE +27 -0
  3. package/NOTICE.md +30 -0
  4. package/README.md +1040 -0
  5. package/dist/agents/agent-definition.d.ts +10 -0
  6. package/dist/agents/agent-definition.d.ts.map +1 -0
  7. package/dist/agents/agent-definition.js +18 -0
  8. package/dist/agents/agent-definition.js.map +1 -0
  9. package/dist/agents/builtin-agents.d.ts +69 -0
  10. package/dist/agents/builtin-agents.d.ts.map +1 -0
  11. package/dist/agents/builtin-agents.js +177 -0
  12. package/dist/agents/builtin-agents.js.map +1 -0
  13. package/dist/agents/cascade.d.ts +101 -0
  14. package/dist/agents/cascade.d.ts.map +1 -0
  15. package/dist/agents/cascade.js +189 -0
  16. package/dist/agents/cascade.js.map +1 -0
  17. package/dist/agents/observer.d.ts +209 -0
  18. package/dist/agents/observer.d.ts.map +1 -0
  19. package/dist/agents/observer.js +495 -0
  20. package/dist/agents/observer.js.map +1 -0
  21. package/dist/agents/repair-loop.d.ts +236 -0
  22. package/dist/agents/repair-loop.d.ts.map +1 -0
  23. package/dist/agents/repair-loop.js +293 -0
  24. package/dist/agents/repair-loop.js.map +1 -0
  25. package/dist/agents/session-util.d.ts +8 -0
  26. package/dist/agents/session-util.d.ts.map +1 -0
  27. package/dist/agents/session-util.js +9 -0
  28. package/dist/agents/session-util.js.map +1 -0
  29. package/dist/agents/subagent-steps.d.ts +93 -0
  30. package/dist/agents/subagent-steps.d.ts.map +1 -0
  31. package/dist/agents/subagent-steps.js +206 -0
  32. package/dist/agents/subagent-steps.js.map +1 -0
  33. package/dist/agents/subagent.d.ts +441 -0
  34. package/dist/agents/subagent.d.ts.map +1 -0
  35. package/dist/agents/subagent.js +2492 -0
  36. package/dist/agents/subagent.js.map +1 -0
  37. package/dist/agents/suspend-guard.d.ts +35 -0
  38. package/dist/agents/suspend-guard.d.ts.map +1 -0
  39. package/dist/agents/suspend-guard.js +48 -0
  40. package/dist/agents/suspend-guard.js.map +1 -0
  41. package/dist/agents/teacher.d.ts +137 -0
  42. package/dist/agents/teacher.d.ts.map +1 -0
  43. package/dist/agents/teacher.js +575 -0
  44. package/dist/agents/teacher.js.map +1 -0
  45. package/dist/agents/team.d.ts +211 -0
  46. package/dist/agents/team.d.ts.map +1 -0
  47. package/dist/agents/team.js +293 -0
  48. package/dist/agents/team.js.map +1 -0
  49. package/dist/agents/tool-filter.d.ts +29 -0
  50. package/dist/agents/tool-filter.d.ts.map +1 -0
  51. package/dist/agents/tool-filter.js +50 -0
  52. package/dist/agents/tool-filter.js.map +1 -0
  53. package/dist/agents/verify.d.ts +177 -0
  54. package/dist/agents/verify.d.ts.map +1 -0
  55. package/dist/agents/verify.js +305 -0
  56. package/dist/agents/verify.js.map +1 -0
  57. package/dist/bench/metrics.d.ts +714 -0
  58. package/dist/bench/metrics.d.ts.map +1 -0
  59. package/dist/bench/metrics.js +618 -0
  60. package/dist/bench/metrics.js.map +1 -0
  61. package/dist/bin/sema-tb.d.ts +3 -0
  62. package/dist/bin/sema-tb.d.ts.map +1 -0
  63. package/dist/bin/sema-tb.js +516 -0
  64. package/dist/bin/sema-tb.js.map +1 -0
  65. package/dist/bin/tb-env.d.ts +13 -0
  66. package/dist/bin/tb-env.d.ts.map +1 -0
  67. package/dist/bin/tb-env.js +26 -0
  68. package/dist/bin/tb-env.js.map +1 -0
  69. package/dist/brain/anthropic.d.ts +46 -0
  70. package/dist/brain/anthropic.d.ts.map +1 -0
  71. package/dist/brain/anthropic.js +830 -0
  72. package/dist/brain/anthropic.js.map +1 -0
  73. package/dist/brain/circuit-breaker.d.ts +46 -0
  74. package/dist/brain/circuit-breaker.d.ts.map +1 -0
  75. package/dist/brain/circuit-breaker.js +173 -0
  76. package/dist/brain/circuit-breaker.js.map +1 -0
  77. package/dist/brain/degrading.d.ts +98 -0
  78. package/dist/brain/degrading.d.ts.map +1 -0
  79. package/dist/brain/degrading.js +249 -0
  80. package/dist/brain/degrading.js.map +1 -0
  81. package/dist/brain/errors.d.ts +31 -0
  82. package/dist/brain/errors.d.ts.map +1 -0
  83. package/dist/brain/errors.js +58 -0
  84. package/dist/brain/errors.js.map +1 -0
  85. package/dist/brain/failover.d.ts +18 -0
  86. package/dist/brain/failover.d.ts.map +1 -0
  87. package/dist/brain/failover.js +118 -0
  88. package/dist/brain/failover.js.map +1 -0
  89. package/dist/brain/model-presets.d.ts +36 -0
  90. package/dist/brain/model-presets.d.ts.map +1 -0
  91. package/dist/brain/model-presets.js +54 -0
  92. package/dist/brain/model-presets.js.map +1 -0
  93. package/dist/brain/openai.d.ts +43 -0
  94. package/dist/brain/openai.d.ts.map +1 -0
  95. package/dist/brain/openai.js +784 -0
  96. package/dist/brain/openai.js.map +1 -0
  97. package/dist/brain/reasoning.d.ts +138 -0
  98. package/dist/brain/reasoning.d.ts.map +1 -0
  99. package/dist/brain/reasoning.js +146 -0
  100. package/dist/brain/reasoning.js.map +1 -0
  101. package/dist/brain/repetition.d.ts +60 -0
  102. package/dist/brain/repetition.d.ts.map +1 -0
  103. package/dist/brain/repetition.js +121 -0
  104. package/dist/brain/repetition.js.map +1 -0
  105. package/dist/brain/request-params.d.ts +29 -0
  106. package/dist/brain/request-params.d.ts.map +1 -0
  107. package/dist/brain/request-params.js +78 -0
  108. package/dist/brain/request-params.js.map +1 -0
  109. package/dist/brain/retry.d.ts +18 -0
  110. package/dist/brain/retry.d.ts.map +1 -0
  111. package/dist/brain/retry.js +42 -0
  112. package/dist/brain/retry.js.map +1 -0
  113. package/dist/brain/routing.d.ts +19 -0
  114. package/dist/brain/routing.d.ts.map +1 -0
  115. package/dist/brain/routing.js +44 -0
  116. package/dist/brain/routing.js.map +1 -0
  117. package/dist/brain/status-sink.d.ts +46 -0
  118. package/dist/brain/status-sink.d.ts.map +1 -0
  119. package/dist/brain/status-sink.js +36 -0
  120. package/dist/brain/status-sink.js.map +1 -0
  121. package/dist/brain/stream-engine.d.ts +85 -0
  122. package/dist/brain/stream-engine.d.ts.map +1 -0
  123. package/dist/brain/stream-engine.js +391 -0
  124. package/dist/brain/stream-engine.js.map +1 -0
  125. package/dist/brain/timeout.d.ts +44 -0
  126. package/dist/brain/timeout.d.ts.map +1 -0
  127. package/dist/brain/timeout.js +41 -0
  128. package/dist/brain/timeout.js.map +1 -0
  129. package/dist/brain/tool-call-repair.d.ts +15 -0
  130. package/dist/brain/tool-call-repair.d.ts.map +1 -0
  131. package/dist/brain/tool-call-repair.js +67 -0
  132. package/dist/brain/tool-call-repair.js.map +1 -0
  133. package/dist/brain/walltime.d.ts +14 -0
  134. package/dist/brain/walltime.d.ts.map +1 -0
  135. package/dist/brain/walltime.js +14 -0
  136. package/dist/brain/walltime.js.map +1 -0
  137. package/dist/core/arg-summary.d.ts +19 -0
  138. package/dist/core/arg-summary.d.ts.map +1 -0
  139. package/dist/core/arg-summary.js +96 -0
  140. package/dist/core/arg-summary.js.map +1 -0
  141. package/dist/core/ask-question.d.ts +113 -0
  142. package/dist/core/ask-question.d.ts.map +1 -0
  143. package/dist/core/ask-question.js +246 -0
  144. package/dist/core/ask-question.js.map +1 -0
  145. package/dist/core/auto-compaction.d.ts +341 -0
  146. package/dist/core/auto-compaction.d.ts.map +1 -0
  147. package/dist/core/auto-compaction.js +495 -0
  148. package/dist/core/auto-compaction.js.map +1 -0
  149. package/dist/core/auto-promote.d.ts +126 -0
  150. package/dist/core/auto-promote.d.ts.map +1 -0
  151. package/dist/core/auto-promote.js +171 -0
  152. package/dist/core/auto-promote.js.map +1 -0
  153. package/dist/core/background-shell.d.ts +128 -0
  154. package/dist/core/background-shell.d.ts.map +1 -0
  155. package/dist/core/background-shell.js +42 -0
  156. package/dist/core/background-shell.js.map +1 -0
  157. package/dist/core/cache-break-detector.d.ts +63 -0
  158. package/dist/core/cache-break-detector.d.ts.map +1 -0
  159. package/dist/core/cache-break-detector.js +0 -0
  160. package/dist/core/cache-break-detector.js.map +1 -0
  161. package/dist/core/canonical-json.d.ts +45 -0
  162. package/dist/core/canonical-json.d.ts.map +1 -0
  163. package/dist/core/canonical-json.js +132 -0
  164. package/dist/core/canonical-json.js.map +1 -0
  165. package/dist/core/checkpoint-store.d.ts +1101 -0
  166. package/dist/core/checkpoint-store.d.ts.map +1 -0
  167. package/dist/core/checkpoint-store.js +514 -0
  168. package/dist/core/checkpoint-store.js.map +1 -0
  169. package/dist/core/consolidate-scope.d.ts +94 -0
  170. package/dist/core/consolidate-scope.d.ts.map +1 -0
  171. package/dist/core/consolidate-scope.js +158 -0
  172. package/dist/core/consolidate-scope.js.map +1 -0
  173. package/dist/core/context-edit.d.ts +82 -0
  174. package/dist/core/context-edit.d.ts.map +1 -0
  175. package/dist/core/context-edit.js +149 -0
  176. package/dist/core/context-edit.js.map +1 -0
  177. package/dist/core/context-guard.d.ts +43 -0
  178. package/dist/core/context-guard.d.ts.map +1 -0
  179. package/dist/core/context-guard.js +171 -0
  180. package/dist/core/context-guard.js.map +1 -0
  181. package/dist/core/dynamic-recall.d.ts +100 -0
  182. package/dist/core/dynamic-recall.d.ts.map +1 -0
  183. package/dist/core/dynamic-recall.js +108 -0
  184. package/dist/core/dynamic-recall.js.map +1 -0
  185. package/dist/core/exec-gate.d.ts +74 -0
  186. package/dist/core/exec-gate.d.ts.map +1 -0
  187. package/dist/core/exec-gate.js +143 -0
  188. package/dist/core/exec-gate.js.map +1 -0
  189. package/dist/core/exec-output-tail.d.ts +37 -0
  190. package/dist/core/exec-output-tail.d.ts.map +1 -0
  191. package/dist/core/exec-output-tail.js +63 -0
  192. package/dist/core/exec-output-tail.js.map +1 -0
  193. package/dist/core/file-snapshot-store.d.ts +137 -0
  194. package/dist/core/file-snapshot-store.d.ts.map +1 -0
  195. package/dist/core/file-snapshot-store.js +319 -0
  196. package/dist/core/file-snapshot-store.js.map +1 -0
  197. package/dist/core/git-worktree-env.d.ts +41 -0
  198. package/dist/core/git-worktree-env.d.ts.map +1 -0
  199. package/dist/core/git-worktree-env.js +64 -0
  200. package/dist/core/git-worktree-env.js.map +1 -0
  201. package/dist/core/hooks.d.ts +372 -0
  202. package/dist/core/hooks.d.ts.map +1 -0
  203. package/dist/core/hooks.js +269 -0
  204. package/dist/core/hooks.js.map +1 -0
  205. package/dist/core/lsp-diagnostics.d.ts +74 -0
  206. package/dist/core/lsp-diagnostics.d.ts.map +1 -0
  207. package/dist/core/lsp-diagnostics.js +125 -0
  208. package/dist/core/lsp-diagnostics.js.map +1 -0
  209. package/dist/core/lsp-protocol.d.ts +28 -0
  210. package/dist/core/lsp-protocol.d.ts.map +1 -0
  211. package/dist/core/lsp-protocol.js +179 -0
  212. package/dist/core/lsp-protocol.js.map +1 -0
  213. package/dist/core/lsp-session.d.ts +56 -0
  214. package/dist/core/lsp-session.d.ts.map +1 -0
  215. package/dist/core/lsp-session.js +185 -0
  216. package/dist/core/lsp-session.js.map +1 -0
  217. package/dist/core/lsp.d.ts +132 -0
  218. package/dist/core/lsp.d.ts.map +1 -0
  219. package/dist/core/lsp.js +147 -0
  220. package/dist/core/lsp.js.map +1 -0
  221. package/dist/core/mcp.d.ts +294 -0
  222. package/dist/core/mcp.d.ts.map +1 -0
  223. package/dist/core/mcp.js +992 -0
  224. package/dist/core/mcp.js.map +1 -0
  225. package/dist/core/media-byte-cap.d.ts +34 -0
  226. package/dist/core/media-byte-cap.d.ts.map +1 -0
  227. package/dist/core/media-byte-cap.js +76 -0
  228. package/dist/core/media-byte-cap.js.map +1 -0
  229. package/dist/core/memory-engine/data-plane.d.ts +103 -0
  230. package/dist/core/memory-engine/data-plane.d.ts.map +1 -0
  231. package/dist/core/memory-engine/data-plane.js +272 -0
  232. package/dist/core/memory-engine/data-plane.js.map +1 -0
  233. package/dist/core/memory-engine/dual-root.d.ts +40 -0
  234. package/dist/core/memory-engine/dual-root.d.ts.map +1 -0
  235. package/dist/core/memory-engine/dual-root.js +95 -0
  236. package/dist/core/memory-engine/dual-root.js.map +1 -0
  237. package/dist/core/memory-engine/engine.d.ts +161 -0
  238. package/dist/core/memory-engine/engine.d.ts.map +1 -0
  239. package/dist/core/memory-engine/engine.js +1110 -0
  240. package/dist/core/memory-engine/engine.js.map +1 -0
  241. package/dist/core/memory-engine/file-backend.d.ts +162 -0
  242. package/dist/core/memory-engine/file-backend.d.ts.map +1 -0
  243. package/dist/core/memory-engine/file-backend.js +948 -0
  244. package/dist/core/memory-engine/file-backend.js.map +1 -0
  245. package/dist/core/memory-engine/frontmatter.d.ts +24 -0
  246. package/dist/core/memory-engine/frontmatter.d.ts.map +1 -0
  247. package/dist/core/memory-engine/frontmatter.js +135 -0
  248. package/dist/core/memory-engine/frontmatter.js.map +1 -0
  249. package/dist/core/memory-engine/index.d.ts +13 -0
  250. package/dist/core/memory-engine/index.d.ts.map +1 -0
  251. package/dist/core/memory-engine/index.js +28 -0
  252. package/dist/core/memory-engine/index.js.map +1 -0
  253. package/dist/core/memory-engine/layout.d.ts +123 -0
  254. package/dist/core/memory-engine/layout.d.ts.map +1 -0
  255. package/dist/core/memory-engine/layout.js +643 -0
  256. package/dist/core/memory-engine/layout.js.map +1 -0
  257. package/dist/core/memory-engine/memory-backend-contract.d.ts +22 -0
  258. package/dist/core/memory-engine/memory-backend-contract.d.ts.map +1 -0
  259. package/dist/core/memory-engine/memory-backend-contract.js +271 -0
  260. package/dist/core/memory-engine/memory-backend-contract.js.map +1 -0
  261. package/dist/core/memory-engine/migrate.d.ts +17 -0
  262. package/dist/core/memory-engine/migrate.d.ts.map +1 -0
  263. package/dist/core/memory-engine/migrate.js +35 -0
  264. package/dist/core/memory-engine/migrate.js.map +1 -0
  265. package/dist/core/memory-engine/scan.d.ts +20 -0
  266. package/dist/core/memory-engine/scan.d.ts.map +1 -0
  267. package/dist/core/memory-engine/scan.js +84 -0
  268. package/dist/core/memory-engine/scan.js.map +1 -0
  269. package/dist/core/memory-engine/scope-contract.d.ts +104 -0
  270. package/dist/core/memory-engine/scope-contract.d.ts.map +1 -0
  271. package/dist/core/memory-engine/scope-contract.js +288 -0
  272. package/dist/core/memory-engine/scope-contract.js.map +1 -0
  273. package/dist/core/memory-engine/sync-client.d.ts +100 -0
  274. package/dist/core/memory-engine/sync-client.d.ts.map +1 -0
  275. package/dist/core/memory-engine/sync-client.js +328 -0
  276. package/dist/core/memory-engine/sync-client.js.map +1 -0
  277. package/dist/core/memory-engine/sync.d.ts +97 -0
  278. package/dist/core/memory-engine/sync.d.ts.map +1 -0
  279. package/dist/core/memory-engine/sync.js +91 -0
  280. package/dist/core/memory-engine/sync.js.map +1 -0
  281. package/dist/core/memory-engine/types.d.ts +279 -0
  282. package/dist/core/memory-engine/types.d.ts.map +1 -0
  283. package/dist/core/memory-engine/types.js +9 -0
  284. package/dist/core/memory-engine/types.js.map +1 -0
  285. package/dist/core/memory-recall.d.ts +261 -0
  286. package/dist/core/memory-recall.d.ts.map +1 -0
  287. package/dist/core/memory-recall.js +600 -0
  288. package/dist/core/memory-recall.js.map +1 -0
  289. package/dist/core/memory-vector.d.ts +24 -0
  290. package/dist/core/memory-vector.d.ts.map +1 -0
  291. package/dist/core/memory-vector.js +51 -0
  292. package/dist/core/memory-vector.js.map +1 -0
  293. package/dist/core/memory.d.ts +502 -0
  294. package/dist/core/memory.d.ts.map +1 -0
  295. package/dist/core/memory.js +881 -0
  296. package/dist/core/memory.js.map +1 -0
  297. package/dist/core/message-utils.d.ts +7 -0
  298. package/dist/core/message-utils.d.ts.map +1 -0
  299. package/dist/core/message-utils.js +10 -0
  300. package/dist/core/message-utils.js.map +1 -0
  301. package/dist/core/oracle-isolation.d.ts +85 -0
  302. package/dist/core/oracle-isolation.d.ts.map +1 -0
  303. package/dist/core/oracle-isolation.js +121 -0
  304. package/dist/core/oracle-isolation.js.map +1 -0
  305. package/dist/core/permission-rules.d.ts +102 -0
  306. package/dist/core/permission-rules.d.ts.map +1 -0
  307. package/dist/core/permission-rules.js +357 -0
  308. package/dist/core/permission-rules.js.map +1 -0
  309. package/dist/core/present-plan-tool.d.ts +28 -0
  310. package/dist/core/present-plan-tool.d.ts.map +1 -0
  311. package/dist/core/present-plan-tool.js +119 -0
  312. package/dist/core/present-plan-tool.js.map +1 -0
  313. package/dist/core/pricing.d.ts +48 -0
  314. package/dist/core/pricing.d.ts.map +1 -0
  315. package/dist/core/pricing.js +46 -0
  316. package/dist/core/pricing.js.map +1 -0
  317. package/dist/core/property-harness.d.ts +126 -0
  318. package/dist/core/property-harness.d.ts.map +1 -0
  319. package/dist/core/property-harness.js +192 -0
  320. package/dist/core/property-harness.js.map +1 -0
  321. package/dist/core/push-queue.d.ts +10 -0
  322. package/dist/core/push-queue.d.ts.map +1 -0
  323. package/dist/core/push-queue.js +42 -0
  324. package/dist/core/push-queue.js.map +1 -0
  325. package/dist/core/remote-env.d.ts +432 -0
  326. package/dist/core/remote-env.d.ts.map +1 -0
  327. package/dist/core/remote-env.js +77 -0
  328. package/dist/core/remote-env.js.map +1 -0
  329. package/dist/core/roles.d.ts +74 -0
  330. package/dist/core/roles.d.ts.map +1 -0
  331. package/dist/core/roles.js +272 -0
  332. package/dist/core/roles.js.map +1 -0
  333. package/dist/core/runner/active-skill-scope.d.ts +64 -0
  334. package/dist/core/runner/active-skill-scope.d.ts.map +1 -0
  335. package/dist/core/runner/active-skill-scope.js +197 -0
  336. package/dist/core/runner/active-skill-scope.js.map +1 -0
  337. package/dist/core/runner/assemble-result.d.ts +191 -0
  338. package/dist/core/runner/assemble-result.d.ts.map +1 -0
  339. package/dist/core/runner/assemble-result.js +250 -0
  340. package/dist/core/runner/assemble-result.js.map +1 -0
  341. package/dist/core/runner/call-cap.d.ts +130 -0
  342. package/dist/core/runner/call-cap.d.ts.map +1 -0
  343. package/dist/core/runner/call-cap.js +151 -0
  344. package/dist/core/runner/call-cap.js.map +1 -0
  345. package/dist/core/runner/grounding-signal.d.ts +12 -0
  346. package/dist/core/runner/grounding-signal.d.ts.map +1 -0
  347. package/dist/core/runner/grounding-signal.js +94 -0
  348. package/dist/core/runner/grounding-signal.js.map +1 -0
  349. package/dist/core/runner/image.d.ts +23 -0
  350. package/dist/core/runner/image.d.ts.map +1 -0
  351. package/dist/core/runner/image.js +151 -0
  352. package/dist/core/runner/image.js.map +1 -0
  353. package/dist/core/runner/memory-consolidation.d.ts +112 -0
  354. package/dist/core/runner/memory-consolidation.d.ts.map +1 -0
  355. package/dist/core/runner/memory-consolidation.js +372 -0
  356. package/dist/core/runner/memory-consolidation.js.map +1 -0
  357. package/dist/core/runner/prepare-task.d.ts +583 -0
  358. package/dist/core/runner/prepare-task.d.ts.map +1 -0
  359. package/dist/core/runner/prepare-task.js +3612 -0
  360. package/dist/core/runner/prepare-task.js.map +1 -0
  361. package/dist/core/runner/prompt-suggestions.d.ts +33 -0
  362. package/dist/core/runner/prompt-suggestions.d.ts.map +1 -0
  363. package/dist/core/runner/prompt-suggestions.js +116 -0
  364. package/dist/core/runner/prompt-suggestions.js.map +1 -0
  365. package/dist/core/runner/runtask.d.ts +274 -0
  366. package/dist/core/runner/runtask.d.ts.map +1 -0
  367. package/dist/core/runner/runtask.js +4606 -0
  368. package/dist/core/runner/runtask.js.map +1 -0
  369. package/dist/core/runner/session-rule-policy.d.ts +28 -0
  370. package/dist/core/runner/session-rule-policy.d.ts.map +1 -0
  371. package/dist/core/runner/session-rule-policy.js +110 -0
  372. package/dist/core/runner/session-rule-policy.js.map +1 -0
  373. package/dist/core/runner/strict-output-schema.d.ts +36 -0
  374. package/dist/core/runner/strict-output-schema.d.ts.map +1 -0
  375. package/dist/core/runner/strict-output-schema.js +365 -0
  376. package/dist/core/runner/strict-output-schema.js.map +1 -0
  377. package/dist/core/runner/synthetic-tools.d.ts +72 -0
  378. package/dist/core/runner/synthetic-tools.d.ts.map +1 -0
  379. package/dist/core/runner/synthetic-tools.js +203 -0
  380. package/dist/core/runner/synthetic-tools.js.map +1 -0
  381. package/dist/core/runner/tool-disclosure.d.ts +117 -0
  382. package/dist/core/runner/tool-disclosure.d.ts.map +1 -0
  383. package/dist/core/runner/tool-disclosure.js +0 -0
  384. package/dist/core/runner/tool-disclosure.js.map +1 -0
  385. package/dist/core/runner/turn-attachments.d.ts +381 -0
  386. package/dist/core/runner/turn-attachments.d.ts.map +1 -0
  387. package/dist/core/runner/turn-attachments.js +596 -0
  388. package/dist/core/runner/turn-attachments.js.map +1 -0
  389. package/dist/core/runner/usage-accounting.d.ts +35 -0
  390. package/dist/core/runner/usage-accounting.d.ts.map +1 -0
  391. package/dist/core/runner/usage-accounting.js +45 -0
  392. package/dist/core/runner/usage-accounting.js.map +1 -0
  393. package/dist/core/runtime.d.ts +9 -0
  394. package/dist/core/runtime.d.ts.map +1 -0
  395. package/dist/core/runtime.js +17 -0
  396. package/dist/core/runtime.js.map +1 -0
  397. package/dist/core/safety-axis-vocab.d.ts +33 -0
  398. package/dist/core/safety-axis-vocab.d.ts.map +1 -0
  399. package/dist/core/safety-axis-vocab.js +35 -0
  400. package/dist/core/safety-axis-vocab.js.map +1 -0
  401. package/dist/core/safety-merge-corpus.d.ts +48 -0
  402. package/dist/core/safety-merge-corpus.d.ts.map +1 -0
  403. package/dist/core/safety-merge-corpus.js +203 -0
  404. package/dist/core/safety-merge-corpus.js.map +1 -0
  405. package/dist/core/scheduler.d.ts +126 -0
  406. package/dist/core/scheduler.d.ts.map +1 -0
  407. package/dist/core/scheduler.js +54 -0
  408. package/dist/core/scheduler.js.map +1 -0
  409. package/dist/core/secret-env.d.ts +23 -0
  410. package/dist/core/secret-env.d.ts.map +1 -0
  411. package/dist/core/secret-env.js +35 -0
  412. package/dist/core/secret-env.js.map +1 -0
  413. package/dist/core/select-model.d.ts +26 -0
  414. package/dist/core/select-model.d.ts.map +1 -0
  415. package/dist/core/select-model.js +58 -0
  416. package/dist/core/select-model.js.map +1 -0
  417. package/dist/core/sensitive-path-policy.d.ts +24 -0
  418. package/dist/core/sensitive-path-policy.d.ts.map +1 -0
  419. package/dist/core/sensitive-path-policy.js +96 -0
  420. package/dist/core/sensitive-path-policy.js.map +1 -0
  421. package/dist/core/session-policy-store.d.ts +102 -0
  422. package/dist/core/session-policy-store.d.ts.map +1 -0
  423. package/dist/core/session-policy-store.js +177 -0
  424. package/dist/core/session-policy-store.js.map +1 -0
  425. package/dist/core/session-reconcile.d.ts +63 -0
  426. package/dist/core/session-reconcile.d.ts.map +1 -0
  427. package/dist/core/session-reconcile.js +71 -0
  428. package/dist/core/session-reconcile.js.map +1 -0
  429. package/dist/core/session-store.d.ts +99 -0
  430. package/dist/core/session-store.d.ts.map +1 -0
  431. package/dist/core/session-store.js +298 -0
  432. package/dist/core/session-store.js.map +1 -0
  433. package/dist/core/session.d.ts +144 -0
  434. package/dist/core/session.d.ts.map +1 -0
  435. package/dist/core/session.js +56 -0
  436. package/dist/core/session.js.map +1 -0
  437. package/dist/core/spec-contract.d.ts +147 -0
  438. package/dist/core/spec-contract.d.ts.map +1 -0
  439. package/dist/core/spec-contract.js +340 -0
  440. package/dist/core/spec-contract.js.map +1 -0
  441. package/dist/core/strategy-store.d.ts +50 -0
  442. package/dist/core/strategy-store.d.ts.map +1 -0
  443. package/dist/core/strategy-store.js +100 -0
  444. package/dist/core/strategy-store.js.map +1 -0
  445. package/dist/core/stub-env.d.ts +35 -0
  446. package/dist/core/stub-env.d.ts.map +1 -0
  447. package/dist/core/stub-env.js +69 -0
  448. package/dist/core/stub-env.js.map +1 -0
  449. package/dist/core/task-notification.d.ts +115 -0
  450. package/dist/core/task-notification.d.ts.map +1 -0
  451. package/dist/core/task-notification.js +247 -0
  452. package/dist/core/task-notification.js.map +1 -0
  453. package/dist/core/task-outcome.d.ts +80 -0
  454. package/dist/core/task-outcome.d.ts.map +1 -0
  455. package/dist/core/task-outcome.js +40 -0
  456. package/dist/core/task-outcome.js.map +1 -0
  457. package/dist/core/task-registry.d.ts +349 -0
  458. package/dist/core/task-registry.d.ts.map +1 -0
  459. package/dist/core/task-registry.js +1751 -0
  460. package/dist/core/task-registry.js.map +1 -0
  461. package/dist/core/tighten-task-spec.d.ts +27 -0
  462. package/dist/core/tighten-task-spec.d.ts.map +1 -0
  463. package/dist/core/tighten-task-spec.js +95 -0
  464. package/dist/core/tighten-task-spec.js.map +1 -0
  465. package/dist/core/tool-detach.d.ts +31 -0
  466. package/dist/core/tool-detach.d.ts.map +1 -0
  467. package/dist/core/tool-detach.js +62 -0
  468. package/dist/core/tool-detach.js.map +1 -0
  469. package/dist/core/tool-errors.d.ts +72 -0
  470. package/dist/core/tool-errors.d.ts.map +1 -0
  471. package/dist/core/tool-errors.js +194 -0
  472. package/dist/core/tool-errors.js.map +1 -0
  473. package/dist/core/tool-name-aliases.d.ts +5 -0
  474. package/dist/core/tool-name-aliases.d.ts.map +1 -0
  475. package/dist/core/tool-name-aliases.js +130 -0
  476. package/dist/core/tool-name-aliases.js.map +1 -0
  477. package/dist/core/tool-policy.d.ts +295 -0
  478. package/dist/core/tool-policy.d.ts.map +1 -0
  479. package/dist/core/tool-policy.js +567 -0
  480. package/dist/core/tool-policy.js.map +1 -0
  481. package/dist/core/tool-result-budget.d.ts +44 -0
  482. package/dist/core/tool-result-budget.d.ts.map +1 -0
  483. package/dist/core/tool-result-budget.js +140 -0
  484. package/dist/core/tool-result-budget.js.map +1 -0
  485. package/dist/core/tool-result-store.d.ts +136 -0
  486. package/dist/core/tool-result-store.d.ts.map +1 -0
  487. package/dist/core/tool-result-store.js +219 -0
  488. package/dist/core/tool-result-store.js.map +1 -0
  489. package/dist/core/tools.d.ts +14 -0
  490. package/dist/core/tools.d.ts.map +1 -0
  491. package/dist/core/tools.js +98 -0
  492. package/dist/core/tools.js.map +1 -0
  493. package/dist/core/trace.d.ts +340 -0
  494. package/dist/core/trace.d.ts.map +1 -0
  495. package/dist/core/trace.js +12 -0
  496. package/dist/core/trace.js.map +1 -0
  497. package/dist/core/types.d.ts +2828 -0
  498. package/dist/core/types.d.ts.map +1 -0
  499. package/dist/core/types.js +2 -0
  500. package/dist/core/types.js.map +1 -0
  501. package/dist/core/untrusted-egress.d.ts +32 -0
  502. package/dist/core/untrusted-egress.d.ts.map +1 -0
  503. package/dist/core/untrusted-egress.js +49 -0
  504. package/dist/core/untrusted-egress.js.map +1 -0
  505. package/dist/core/untrusted-text.d.ts +64 -0
  506. package/dist/core/untrusted-text.d.ts.map +1 -0
  507. package/dist/core/untrusted-text.js +119 -0
  508. package/dist/core/untrusted-text.js.map +1 -0
  509. package/dist/core/warm-resume.d.ts +23 -0
  510. package/dist/core/warm-resume.d.ts.map +1 -0
  511. package/dist/core/warm-resume.js +28 -0
  512. package/dist/core/warm-resume.js.map +1 -0
  513. package/dist/core/with-retry.d.ts +43 -0
  514. package/dist/core/with-retry.d.ts.map +1 -0
  515. package/dist/core/with-retry.js +59 -0
  516. package/dist/core/with-retry.js.map +1 -0
  517. package/dist/core/workflow-journal-store.d.ts +44 -0
  518. package/dist/core/workflow-journal-store.d.ts.map +1 -0
  519. package/dist/core/workflow-journal-store.js +47 -0
  520. package/dist/core/workflow-journal-store.js.map +1 -0
  521. package/dist/core/workflow-run-store-contract.d.ts +31 -0
  522. package/dist/core/workflow-run-store-contract.d.ts.map +1 -0
  523. package/dist/core/workflow-run-store-contract.js +191 -0
  524. package/dist/core/workflow-run-store-contract.js.map +1 -0
  525. package/dist/core/workflow-run-store.d.ts +149 -0
  526. package/dist/core/workflow-run-store.d.ts.map +1 -0
  527. package/dist/core/workflow-run-store.js +110 -0
  528. package/dist/core/workflow-run-store.js.map +1 -0
  529. package/dist/engine/compaction/compaction.d.ts +139 -0
  530. package/dist/engine/compaction/compaction.d.ts.map +1 -0
  531. package/dist/engine/compaction/compaction.js +1030 -0
  532. package/dist/engine/compaction/compaction.js.map +1 -0
  533. package/dist/engine/compaction/utils.d.ts +45 -0
  534. package/dist/engine/compaction/utils.d.ts.map +1 -0
  535. package/dist/engine/compaction/utils.js +203 -0
  536. package/dist/engine/compaction/utils.js.map +1 -0
  537. package/dist/engine/execution-env/kill-tree.d.ts +20 -0
  538. package/dist/engine/execution-env/kill-tree.d.ts.map +1 -0
  539. package/dist/engine/execution-env/kill-tree.js +183 -0
  540. package/dist/engine/execution-env/kill-tree.js.map +1 -0
  541. package/dist/engine/execution-env/node-execution-env.d.ts +133 -0
  542. package/dist/engine/execution-env/node-execution-env.d.ts.map +1 -0
  543. package/dist/engine/execution-env/node-execution-env.js +1031 -0
  544. package/dist/engine/execution-env/node-execution-env.js.map +1 -0
  545. package/dist/engine/harness/agent-harness.d.ts +174 -0
  546. package/dist/engine/harness/agent-harness.d.ts.map +1 -0
  547. package/dist/engine/harness/agent-harness.js +1053 -0
  548. package/dist/engine/harness/agent-harness.js.map +1 -0
  549. package/dist/engine/harness/messages.d.ts +17 -0
  550. package/dist/engine/harness/messages.d.ts.map +1 -0
  551. package/dist/engine/harness/messages.js +122 -0
  552. package/dist/engine/harness/messages.js.map +1 -0
  553. package/dist/engine/harness/types.d.ts +713 -0
  554. package/dist/engine/harness/types.d.ts.map +1 -0
  555. package/dist/engine/harness/types.js +100 -0
  556. package/dist/engine/harness/types.js.map +1 -0
  557. package/dist/engine/llm/diagnostics.d.ts +23 -0
  558. package/dist/engine/llm/diagnostics.d.ts.map +1 -0
  559. package/dist/engine/llm/diagnostics.js +32 -0
  560. package/dist/engine/llm/diagnostics.js.map +1 -0
  561. package/dist/engine/llm/event-stream.d.ts +25 -0
  562. package/dist/engine/llm/event-stream.d.ts.map +1 -0
  563. package/dist/engine/llm/event-stream.js +103 -0
  564. package/dist/engine/llm/event-stream.js.map +1 -0
  565. package/dist/engine/llm/index.d.ts +12 -0
  566. package/dist/engine/llm/index.d.ts.map +1 -0
  567. package/dist/engine/llm/index.js +12 -0
  568. package/dist/engine/llm/index.js.map +1 -0
  569. package/dist/engine/llm/types.d.ts +753 -0
  570. package/dist/engine/llm/types.d.ts.map +1 -0
  571. package/dist/engine/llm/types.js +2 -0
  572. package/dist/engine/llm/types.js.map +1 -0
  573. package/dist/engine/llm/validation.d.ts +8 -0
  574. package/dist/engine/llm/validation.d.ts.map +1 -0
  575. package/dist/engine/llm/validation.js +318 -0
  576. package/dist/engine/llm/validation.js.map +1 -0
  577. package/dist/engine/loop/agent-loop.d.ts +74 -0
  578. package/dist/engine/loop/agent-loop.d.ts.map +1 -0
  579. package/dist/engine/loop/agent-loop.js +1490 -0
  580. package/dist/engine/loop/agent-loop.js.map +1 -0
  581. package/dist/engine/loop/runtime-deps.d.ts +17 -0
  582. package/dist/engine/loop/runtime-deps.d.ts.map +1 -0
  583. package/dist/engine/loop/runtime-deps.js +21 -0
  584. package/dist/engine/loop/runtime-deps.js.map +1 -0
  585. package/dist/engine/loop/types.d.ts +609 -0
  586. package/dist/engine/loop/types.d.ts.map +1 -0
  587. package/dist/engine/loop/types.js +2 -0
  588. package/dist/engine/loop/types.js.map +1 -0
  589. package/dist/engine/lsp/frame-decoder.d.ts +16 -0
  590. package/dist/engine/lsp/frame-decoder.d.ts.map +1 -0
  591. package/dist/engine/lsp/frame-decoder.js +53 -0
  592. package/dist/engine/lsp/frame-decoder.js.map +1 -0
  593. package/dist/engine/lsp/node-lsp-manager.d.ts +105 -0
  594. package/dist/engine/lsp/node-lsp-manager.d.ts.map +1 -0
  595. package/dist/engine/lsp/node-lsp-manager.js +343 -0
  596. package/dist/engine/lsp/node-lsp-manager.js.map +1 -0
  597. package/dist/engine/lsp/stdio-lsp-transport.d.ts +37 -0
  598. package/dist/engine/lsp/stdio-lsp-transport.d.ts.map +1 -0
  599. package/dist/engine/lsp/stdio-lsp-transport.js +185 -0
  600. package/dist/engine/lsp/stdio-lsp-transport.js.map +1 -0
  601. package/dist/engine/session/import-validate.d.ts +44 -0
  602. package/dist/engine/session/import-validate.d.ts.map +1 -0
  603. package/dist/engine/session/import-validate.js +92 -0
  604. package/dist/engine/session/import-validate.js.map +1 -0
  605. package/dist/engine/session/memory-repo.d.ts +25 -0
  606. package/dist/engine/session/memory-repo.d.ts.map +1 -0
  607. package/dist/engine/session/memory-repo.js +59 -0
  608. package/dist/engine/session/memory-repo.js.map +1 -0
  609. package/dist/engine/session/memory-storage.d.ts +14 -0
  610. package/dist/engine/session/memory-storage.d.ts.map +1 -0
  611. package/dist/engine/session/memory-storage.js +17 -0
  612. package/dist/engine/session/memory-storage.js.map +1 -0
  613. package/dist/engine/session/repo-utils.d.ts +11 -0
  614. package/dist/engine/session/repo-utils.d.ts.map +1 -0
  615. package/dist/engine/session/repo-utils.js +40 -0
  616. package/dist/engine/session/repo-utils.js.map +1 -0
  617. package/dist/engine/session/session.d.ts +34 -0
  618. package/dist/engine/session/session.d.ts.map +1 -0
  619. package/dist/engine/session/session.js +227 -0
  620. package/dist/engine/session/session.js.map +1 -0
  621. package/dist/engine/session/storage-base.d.ts +38 -0
  622. package/dist/engine/session/storage-base.d.ts.map +1 -0
  623. package/dist/engine/session/storage-base.js +157 -0
  624. package/dist/engine/session/storage-base.js.map +1 -0
  625. package/dist/engine/session/timestamps.d.ts +3 -0
  626. package/dist/engine/session/timestamps.d.ts.map +1 -0
  627. package/dist/engine/session/timestamps.js +15 -0
  628. package/dist/engine/session/timestamps.js.map +1 -0
  629. package/dist/engine/session/uuid.d.ts +2 -0
  630. package/dist/engine/session/uuid.d.ts.map +1 -0
  631. package/dist/engine/session/uuid.js +50 -0
  632. package/dist/engine/session/uuid.js.map +1 -0
  633. package/dist/index.d.ts +160 -0
  634. package/dist/index.d.ts.map +1 -0
  635. package/dist/index.js +374 -0
  636. package/dist/index.js.map +1 -0
  637. package/dist/internal/harness.d.ts +26 -0
  638. package/dist/internal/harness.d.ts.map +1 -0
  639. package/dist/internal/harness.js +24 -0
  640. package/dist/internal/harness.js.map +1 -0
  641. package/dist/internal/llm.d.ts +9 -0
  642. package/dist/internal/llm.d.ts.map +1 -0
  643. package/dist/internal/llm.js +8 -0
  644. package/dist/internal/llm.js.map +1 -0
  645. package/dist/orchestration/builtin-workflows.d.ts +44 -0
  646. package/dist/orchestration/builtin-workflows.d.ts.map +1 -0
  647. package/dist/orchestration/builtin-workflows.js +165 -0
  648. package/dist/orchestration/builtin-workflows.js.map +1 -0
  649. package/dist/orchestration/dev-vm-script-runner.d.ts +24 -0
  650. package/dist/orchestration/dev-vm-script-runner.d.ts.map +1 -0
  651. package/dist/orchestration/dev-vm-script-runner.js +106 -0
  652. package/dist/orchestration/dev-vm-script-runner.js.map +1 -0
  653. package/dist/orchestration/goal.d.ts +97 -0
  654. package/dist/orchestration/goal.d.ts.map +1 -0
  655. package/dist/orchestration/goal.js +248 -0
  656. package/dist/orchestration/goal.js.map +1 -0
  657. package/dist/orchestration/run-spec.d.ts +63 -0
  658. package/dist/orchestration/run-spec.d.ts.map +1 -0
  659. package/dist/orchestration/run-spec.js +274 -0
  660. package/dist/orchestration/run-spec.js.map +1 -0
  661. package/dist/orchestration/run-workflow-tool.d.ts +187 -0
  662. package/dist/orchestration/run-workflow-tool.d.ts.map +1 -0
  663. package/dist/orchestration/run-workflow-tool.js +612 -0
  664. package/dist/orchestration/run-workflow-tool.js.map +1 -0
  665. package/dist/orchestration/workflow-governance.d.ts +70 -0
  666. package/dist/orchestration/workflow-governance.d.ts.map +1 -0
  667. package/dist/orchestration/workflow-governance.js +176 -0
  668. package/dist/orchestration/workflow-governance.js.map +1 -0
  669. package/dist/orchestration/workflow-meta.d.ts +41 -0
  670. package/dist/orchestration/workflow-meta.d.ts.map +1 -0
  671. package/dist/orchestration/workflow-meta.js +426 -0
  672. package/dist/orchestration/workflow-meta.js.map +1 -0
  673. package/dist/orchestration/workflow-observe.d.ts +77 -0
  674. package/dist/orchestration/workflow-observe.d.ts.map +1 -0
  675. package/dist/orchestration/workflow-observe.js +177 -0
  676. package/dist/orchestration/workflow-observe.js.map +1 -0
  677. package/dist/orchestration/workflow-primitives.d.ts +31 -0
  678. package/dist/orchestration/workflow-primitives.d.ts.map +1 -0
  679. package/dist/orchestration/workflow-primitives.js +104 -0
  680. package/dist/orchestration/workflow-primitives.js.map +1 -0
  681. package/dist/orchestration/workflow-sandbox-conformance.d.ts +34 -0
  682. package/dist/orchestration/workflow-sandbox-conformance.d.ts.map +1 -0
  683. package/dist/orchestration/workflow-sandbox-conformance.js +301 -0
  684. package/dist/orchestration/workflow-sandbox-conformance.js.map +1 -0
  685. package/dist/orchestration/workflow-script-runner.d.ts +127 -0
  686. package/dist/orchestration/workflow-script-runner.d.ts.map +1 -0
  687. package/dist/orchestration/workflow-script-runner.js +48 -0
  688. package/dist/orchestration/workflow-script-runner.js.map +1 -0
  689. package/dist/orchestration/workflow-script-store.d.ts +99 -0
  690. package/dist/orchestration/workflow-script-store.d.ts.map +1 -0
  691. package/dist/orchestration/workflow-script-store.js +133 -0
  692. package/dist/orchestration/workflow-script-store.js.map +1 -0
  693. package/dist/orchestration/workflow-size-guideline.d.ts +50 -0
  694. package/dist/orchestration/workflow-size-guideline.d.ts.map +1 -0
  695. package/dist/orchestration/workflow-size-guideline.js +78 -0
  696. package/dist/orchestration/workflow-size-guideline.js.map +1 -0
  697. package/dist/orchestration/workflow.d.ts +624 -0
  698. package/dist/orchestration/workflow.d.ts.map +1 -0
  699. package/dist/orchestration/workflow.js +1596 -0
  700. package/dist/orchestration/workflow.js.map +1 -0
  701. package/dist/prompts/default.d.ts +474 -0
  702. package/dist/prompts/default.d.ts.map +1 -0
  703. package/dist/prompts/default.js +676 -0
  704. package/dist/prompts/default.js.map +1 -0
  705. package/dist/prompts/supervisor.d.ts +60 -0
  706. package/dist/prompts/supervisor.d.ts.map +1 -0
  707. package/dist/prompts/supervisor.js +162 -0
  708. package/dist/prompts/supervisor.js.map +1 -0
  709. package/dist/scenarios/env.d.ts +41 -0
  710. package/dist/scenarios/env.d.ts.map +1 -0
  711. package/dist/scenarios/env.js +65 -0
  712. package/dist/scenarios/env.js.map +1 -0
  713. package/dist/scenarios/full-body.d.ts +47 -0
  714. package/dist/scenarios/full-body.d.ts.map +1 -0
  715. package/dist/scenarios/full-body.js +36 -0
  716. package/dist/scenarios/full-body.js.map +1 -0
  717. package/dist/scenarios/scenario-registry.d.ts +107 -0
  718. package/dist/scenarios/scenario-registry.d.ts.map +1 -0
  719. package/dist/scenarios/scenario-registry.js +192 -0
  720. package/dist/scenarios/scenario-registry.js.map +1 -0
  721. package/dist/scenarios/teacher-quickstart.d.ts +41 -0
  722. package/dist/scenarios/teacher-quickstart.d.ts.map +1 -0
  723. package/dist/scenarios/teacher-quickstart.js +32 -0
  724. package/dist/scenarios/teacher-quickstart.js.map +1 -0
  725. package/dist/server/http.d.ts +36 -0
  726. package/dist/server/http.d.ts.map +1 -0
  727. package/dist/server/http.js +144 -0
  728. package/dist/server/http.js.map +1 -0
  729. package/dist/stores/file/checkpoint-store.d.ts +62 -0
  730. package/dist/stores/file/checkpoint-store.d.ts.map +1 -0
  731. package/dist/stores/file/checkpoint-store.js +250 -0
  732. package/dist/stores/file/checkpoint-store.js.map +1 -0
  733. package/dist/stores/file/file-snapshot-store.d.ts +43 -0
  734. package/dist/stores/file/file-snapshot-store.d.ts.map +1 -0
  735. package/dist/stores/file/file-snapshot-store.js +374 -0
  736. package/dist/stores/file/file-snapshot-store.js.map +1 -0
  737. package/dist/stores/file/fs-atomic.d.ts +95 -0
  738. package/dist/stores/file/fs-atomic.d.ts.map +1 -0
  739. package/dist/stores/file/fs-atomic.js +415 -0
  740. package/dist/stores/file/fs-atomic.js.map +1 -0
  741. package/dist/stores/file/index.d.ts +98 -0
  742. package/dist/stores/file/index.d.ts.map +1 -0
  743. package/dist/stores/file/index.js +109 -0
  744. package/dist/stores/file/index.js.map +1 -0
  745. package/dist/stores/file/memory-store.d.ts +95 -0
  746. package/dist/stores/file/memory-store.d.ts.map +1 -0
  747. package/dist/stores/file/memory-store.js +393 -0
  748. package/dist/stores/file/memory-store.js.map +1 -0
  749. package/dist/stores/file/session-policy-store.d.ts +24 -0
  750. package/dist/stores/file/session-policy-store.d.ts.map +1 -0
  751. package/dist/stores/file/session-policy-store.js +123 -0
  752. package/dist/stores/file/session-policy-store.js.map +1 -0
  753. package/dist/stores/file/session-store.d.ts +34 -0
  754. package/dist/stores/file/session-store.d.ts.map +1 -0
  755. package/dist/stores/file/session-store.js +175 -0
  756. package/dist/stores/file/session-store.js.map +1 -0
  757. package/dist/stores/file/tool-result-store.d.ts +23 -0
  758. package/dist/stores/file/tool-result-store.d.ts.map +1 -0
  759. package/dist/stores/file/tool-result-store.js +61 -0
  760. package/dist/stores/file/tool-result-store.js.map +1 -0
  761. package/dist/stores/file/workflow-journal-store.d.ts +36 -0
  762. package/dist/stores/file/workflow-journal-store.d.ts.map +1 -0
  763. package/dist/stores/file/workflow-journal-store.js +157 -0
  764. package/dist/stores/file/workflow-journal-store.js.map +1 -0
  765. package/dist/stores/file/workflow-run-store.d.ts +58 -0
  766. package/dist/stores/file/workflow-run-store.d.ts.map +1 -0
  767. package/dist/stores/file/workflow-run-store.js +178 -0
  768. package/dist/stores/file/workflow-run-store.js.map +1 -0
  769. package/dist/stores/pg.d.ts +210 -0
  770. package/dist/stores/pg.d.ts.map +1 -0
  771. package/dist/stores/pg.js +652 -0
  772. package/dist/stores/pg.js.map +1 -0
  773. package/dist/tools/fs/encoding.d.ts +51 -0
  774. package/dist/tools/fs/encoding.d.ts.map +1 -0
  775. package/dist/tools/fs/encoding.js +74 -0
  776. package/dist/tools/fs/encoding.js.map +1 -0
  777. package/dist/tools/fs/gh-rate-limit.d.ts +19 -0
  778. package/dist/tools/fs/gh-rate-limit.d.ts.map +1 -0
  779. package/dist/tools/fs/gh-rate-limit.js +35 -0
  780. package/dist/tools/fs/gh-rate-limit.js.map +1 -0
  781. package/dist/tools/fs/index.d.ts +246 -0
  782. package/dist/tools/fs/index.d.ts.map +1 -0
  783. package/dist/tools/fs/index.js +2130 -0
  784. package/dist/tools/fs/index.js.map +1 -0
  785. package/dist/tools/fs/pdf.d.ts +106 -0
  786. package/dist/tools/fs/pdf.d.ts.map +1 -0
  787. package/dist/tools/fs/pdf.js +178 -0
  788. package/dist/tools/fs/pdf.js.map +1 -0
  789. package/dist/tools/fs/repo-map.d.ts +15 -0
  790. package/dist/tools/fs/repo-map.d.ts.map +1 -0
  791. package/dist/tools/fs/repo-map.js +251 -0
  792. package/dist/tools/fs/repo-map.js.map +1 -0
  793. package/dist/tools/fs/safety.d.ts +168 -0
  794. package/dist/tools/fs/safety.d.ts.map +1 -0
  795. package/dist/tools/fs/safety.js +479 -0
  796. package/dist/tools/fs/safety.js.map +1 -0
  797. package/dist/tools/fs/search.d.ts +118 -0
  798. package/dist/tools/fs/search.d.ts.map +1 -0
  799. package/dist/tools/fs/search.js +650 -0
  800. package/dist/tools/fs/search.js.map +1 -0
  801. package/dist/tools/gitea-issue.d.ts +39 -0
  802. package/dist/tools/gitea-issue.d.ts.map +1 -0
  803. package/dist/tools/gitea-issue.js +91 -0
  804. package/dist/tools/gitea-issue.js.map +1 -0
  805. package/dist/tools/monitor.d.ts +64 -0
  806. package/dist/tools/monitor.d.ts.map +1 -0
  807. package/dist/tools/monitor.js +135 -0
  808. package/dist/tools/monitor.js.map +1 -0
  809. package/dist/tools/scheduler-tools.d.ts +48 -0
  810. package/dist/tools/scheduler-tools.d.ts.map +1 -0
  811. package/dist/tools/scheduler-tools.js +449 -0
  812. package/dist/tools/scheduler-tools.js.map +1 -0
  813. package/dist/tools/sql-adapters.d.ts +32 -0
  814. package/dist/tools/sql-adapters.d.ts.map +1 -0
  815. package/dist/tools/sql-adapters.js +31 -0
  816. package/dist/tools/sql-adapters.js.map +1 -0
  817. package/dist/tools/sql.d.ts +36 -0
  818. package/dist/tools/sql.d.ts.map +1 -0
  819. package/dist/tools/sql.js +131 -0
  820. package/dist/tools/sql.js.map +1 -0
  821. package/dist/tools/task-list.d.ts +26 -0
  822. package/dist/tools/task-list.d.ts.map +1 -0
  823. package/dist/tools/task-list.js +352 -0
  824. package/dist/tools/task-list.js.map +1 -0
  825. package/dist/tools/todo.d.ts +11 -0
  826. package/dist/tools/todo.d.ts.map +1 -0
  827. package/dist/tools/todo.js +126 -0
  828. package/dist/tools/todo.js.map +1 -0
  829. package/dist/tools/web.d.ts +59 -0
  830. package/dist/tools/web.d.ts.map +1 -0
  831. package/dist/tools/web.js +607 -0
  832. package/dist/tools/web.js.map +1 -0
  833. package/dist/tools/worktree.d.ts +88 -0
  834. package/dist/tools/worktree.d.ts.map +1 -0
  835. package/dist/tools/worktree.js +434 -0
  836. package/dist/tools/worktree.js.map +1 -0
  837. package/docs/A1-ATTRIBUTION-ROUND1-2026-07-09.md +181 -0
  838. package/docs/AB-ORACLE-GATE-VERDICT-2026-07-10.md +100 -0
  839. package/docs/ANCHOR-GAP-INVENTORY-2026-07-09.md +143 -0
  840. package/docs/ARCHITECTURE.md +125 -0
  841. package/docs/BUGHUNT-2026-07-05-NIGHT.md +98 -0
  842. package/docs/BUILD.md +63 -0
  843. package/docs/CANCEL-ASYNC-ATTRIBUTION-2026-07-09.md +98 -0
  844. package/docs/CC-198-VS-201-DRIFT-2026-07-09.md +70 -0
  845. package/docs/CC-BASELINE-FAKE-ZERO-AUDIT-2026-07-09.md +51 -0
  846. package/docs/CC-DRIFT-198-206-AGENT-TYPES-2026-07-10.md +82 -0
  847. package/docs/CC-DRIFT-198-206-CHANGELOG-2026-07-10.md +82 -0
  848. package/docs/CC-DRIFT-198-206-REMINDERS-2026-07-10.md +96 -0
  849. package/docs/CC-DRIFT-198-206-ROADMAP-2026-07-10.md +110 -0
  850. package/docs/CC-DRIFT-198-206-TOOL-INVENTORY-2026-07-10.md +53 -0
  851. package/docs/CC-DRIFT-198-206-USAGE-CONSTANTS-2026-07-10.md +64 -0
  852. package/docs/CC-DRIFT-198-206-WORKFLOW-2026-07-10.md +83 -0
  853. package/docs/CC-PARITY-CHECKLIST.md +220 -0
  854. package/docs/CC-PARITY-DEEP-SWEEP-2026-07-07.md +149 -0
  855. package/docs/CC-SUBAGENT-PROMPT-STUDY-2026-07-09.md +219 -0
  856. package/docs/CC-TASK-REMINDER-CADENCE-STUDY-2026-07-09.md +396 -0
  857. package/docs/CC-TOOL-PARITY-SWEEP-2026-07.md +56 -0
  858. package/docs/CC-TOOL-PROMPT-DEEP-DIFF-2026-07-08.md +274 -0
  859. package/docs/CC-TOOLSURFACE-DEEP-DIVE-2026-07-07.md +197 -0
  860. package/docs/CC206-OBSERVER-ANCHORS-2026-07-11.md +463 -0
  861. package/docs/CC207-CORE-SWEEP-BACKLOG-2026-07-12.md +155 -0
  862. package/docs/CENTER-CONTROL-PLANE-SEAM.md +86 -0
  863. package/docs/CLEANUP-CONTRACT-ANCHOR-2026-07-09.md +83 -0
  864. package/docs/COLD-START-RSI-2026-07-09.md +72 -0
  865. package/docs/COMPACTION-LIVE-AUDIT-2026-07-09.md +114 -0
  866. package/docs/CONTEXT-lifecycle-extension-points-and-stop-attribution.md +71 -0
  867. package/docs/COREWARS-POLYGLOT-TRIAGE-2026-07-09.md +85 -0
  868. package/docs/DEADTARGET-OVERFULL-HBOX-2026-07-10.md +92 -0
  869. package/docs/DEADTARGET-PATH-TRACING-REVERSE-2026-07-10.md +87 -0
  870. package/docs/DEADTARGET-WINNING-AVG-COREWARS-2026-07-10.md +96 -0
  871. package/docs/DEEPSEEK-API-LIMITS-PROBE-2026-07-09.md +118 -0
  872. package/docs/DESIGN-140-MOCK-VERIFY-2026-07-11.md +79 -0
  873. package/docs/DESIGN-140-VERIFICATION-2026-07-11.md +43 -0
  874. package/docs/DESIGN-DRAFT-workflow-collab-2026-07-11.md +56 -0
  875. package/docs/DESIGN-ORACLE-GROUNDING-GATE-2026-07-10.md +167 -0
  876. package/docs/DESIGN-TFRAG-RECONCILE-SCAFFOLD-2026-07-09.md +102 -0
  877. package/docs/EXP-PA2-PE-DESIGN-2026-07-11.md +220 -0
  878. package/docs/EXT-DOGFOOD-2026-07-12.md +50 -0
  879. package/docs/FINAL-VERIFY-SURFACE-AUDIT-2026-07-09.md +44 -0
  880. package/docs/FRAG-RECON-INVESTIGATION-2026-07-09.md +183 -0
  881. package/docs/HANDOFF.md +121 -0
  882. package/docs/KNOWN-ISSUES.md +96 -0
  883. package/docs/LEGW-WINDOW-TAX-2026-07-10.md +82 -0
  884. package/docs/LIVE-PROBE-BATCH-2026-07-11.md +207 -0
  885. package/docs/M2-CERT-ATTRIBUTION-2026-07-10.md +61 -0
  886. package/docs/M25-LEG-VARIANCE-ATTRIBUTION-2026-07-10.md +81 -0
  887. package/docs/MAILMAN-TIMEOUT-ATTRIBUTION-2026-07-10.md +88 -0
  888. package/docs/MEMORY-BACKEND-DIALECT-NOTES.md +69 -0
  889. package/docs/MTEB-ESCAPE-HATCH-ATTRIBUTION-2026-07-09.md +57 -0
  890. package/docs/MTEB-LEADERBOARD-ATTRIBUTION-2026-07-10.md +134 -0
  891. package/docs/ORACLE-GATE-NEGATIVE-SAMPLE-2026-07-11.md +28 -0
  892. package/docs/PARITY-CONTEXT-TRANSACTIONS-2026-07-10.md +67 -0
  893. package/docs/PARITY-PROGRESS-MATRIX-2026-07-10.md +37 -0
  894. package/docs/PARITY-SPOT-AGENT-TYPES-2026-07-10.md +70 -0
  895. package/docs/PARITY-SPOT-REMINDERS-2026-07-10.md +144 -0
  896. package/docs/PARITY-SPOT-TOOL-INVENTORY-2026-07-10.md +61 -0
  897. package/docs/PARITY-SPOT-USAGE-CONSTANTS-2026-07-10.md +95 -0
  898. package/docs/PARITY-SPOT-WORKFLOW-2026-07-10.md +93 -0
  899. package/docs/PASSWORD-RECOVERY-PANEL-VERDICT-2026-07-10.md +62 -0
  900. package/docs/R8-R9-FINALIZE-COORDINATION-2026-07-09.md +124 -0
  901. package/docs/REPL-CODE-MODE-EVALUATION-2026-07-10.md +187 -0
  902. package/docs/REPORT-1249-TARGETED.md +48 -0
  903. package/docs/RESEARCH-3P-MEMORY-SWAP-2026-07-12.md +273 -0
  904. package/docs/ROADMAP.md +111 -0
  905. package/docs/RSI-CLOUD-DEPLOY-2026-07-06.md +289 -0
  906. package/docs/RSI-PROCESS-AI-COLDSTART-2026-07-11.md +68 -0
  907. package/docs/S18-THOROUGHNESS-AUDIT-2026-07-09.md +113 -0
  908. package/docs/SERVICE-INTEGRATION-GUIDE.md +298 -0
  909. package/docs/SUBAGENT-STREAM-RESILIENCE-PARITY-2026-07-10.md +118 -0
  910. package/docs/SWEBENCH-PRO-RECON-2026-07-11.md +31 -0
  911. package/docs/TB-EFFICIENCY-TELEMETRY-2026-07-08.md +114 -0
  912. package/docs/TB-FAILURE-AUTOPSY-2026-07-05-RERUN.md +67 -0
  913. package/docs/TB-FAIRNESS-AUDIT-2026-07-08.md +141 -0
  914. package/docs/TB-FULL-1257-2026-07-08.md +77 -0
  915. package/docs/TB-LEG-GAP-ATTRIBUTION-1261-1263-2026-07-11.md +154 -0
  916. package/docs/TB-REGRESSION-DAEMON-KILL-2026-07-08.md +58 -0
  917. package/docs/TB-RSI-CROSSCHECK-2026-07-06.md +68 -0
  918. package/docs/TB-RSI-LEDGER.md +30 -0
  919. package/docs/TB-STABLE-SET-2026-07-08.md +127 -0
  920. package/docs/TB21-RECON-2026-07-11.md +28 -0
  921. package/docs/TEST-DESIGN-BATCH-1-2-3.md +97 -0
  922. package/docs/THIRD-PARTY-INTEGRATION.md +45 -0
  923. package/docs/TOKEN-ESTIMATE-CALIBRATION-LIVE-2026-07-09.md +102 -0
  924. package/docs/audit-2026-06-10-/347/254/254/344/272/214/350/275/256-/347/251/272/347/231/275/345/214/272/344/270/216/345/277/230/346/216/245/347/272/277.md +147 -0
  925. package/docs/audit-2026-06-10-/350/256/241/347/256/227bug/346/211/253/346/217/217.md +163 -0
  926. package/docs/audit-2026-06-11-/344/277/256/345/244/215/345/244/215/345/256/241/344/270/216/345/233/236/345/275/222/344/270/223/346/211/253.md +95 -0
  927. package/docs/audit-2026-06-12-design71-P1/346/275/234/344/274/217/351/235/242/350/243/201/345/206/263/344/270/216/345/220/236/351/224/231/345/256/241/350/256/241.md +45 -0
  928. package/docs/audit-2026-06-12-/345/205/254/345/274/200/346/227/213/351/222/256/346/264/273/346/200/247/344/270/216vendored/346/255/273/350/267/257.md +63 -0
  929. package/docs/audit-2026-06-15/ADDENDUM-second-pass.md +88 -0
  930. package/docs/audit-2026-06-15/ARCHITECTURE-AND-ROADMAP.md +187 -0
  931. package/docs/audit-2026-06-15/DOC-CORRECTIONS.md +105 -0
  932. package/docs/audit-2026-06-15/INDEX.md +49 -0
  933. package/docs/audit-2026-06-15/ORCHESTRATION-STATUS.md +98 -0
  934. package/docs/audit-2026-06-15/PRODUCTION-ISSUES.md +189 -0
  935. package/docs/audit-2026-06-15/REFERENCES-literature.md +139 -0
  936. package/docs/audit-2026-06-15/VENDOR-REFACTOR-PLAN.md +96 -0
  937. package/docs/cc-probe-198/README.md +72 -0
  938. package/docs/cc-probe-198/STABILITY-AUDIT.md +118 -0
  939. package/docs/cc-probe-198/live-schema-monitor-worktree-2026-07-09.json +56 -0
  940. package/docs/cc-probe-198/mount-variants.json +536 -0
  941. package/docs/cc-probe-198/plan-mode-run.json +1 -0
  942. package/docs/cc-probe-198/probe-bash-bg.json +224 -0
  943. package/docs/cc-probe-198/probe-edit-mismatch.json +120 -0
  944. package/docs/cc-probe-198/probe-read-missing.json +62 -0
  945. package/docs/cc-probe-198/probe-search-empty.json +127 -0
  946. package/docs/cc-probe-198/probe-task-family.json +227 -0
  947. package/docs/cc-probe-198/probes.status +6 -0
  948. package/docs/cc-probe-198/raw-capture-interactive.json +948 -0
  949. package/docs/cc-probe-198/raw-capture-print.json +787 -0
  950. package/docs/cc-probe-198/raw-capture2-interactive.json +948 -0
  951. package/docs/cc-probe-198/raw-capture2-print.json +787 -0
  952. package/docs/cc-probe-198/system-prompt.txt +135 -0
  953. package/docs/cc-probe-198/tools-array.json +962 -0
  954. package/docs/durability-boundary.md +63 -0
  955. package/docs/fix-2026-06-10-/350/256/241/347/256/227bug/344/277/256/345/244/215-search/346/211/271.md +75 -0
  956. package/docs/fix-2026-06-11-/347/254/254/344/272/214/350/275/256-/344/277/256/345/244/215-search/346/211/271.md +62 -0
  957. package/docs/parity-sweep/REPORT-DYNAMIC.md +97 -0
  958. package/docs/parity-sweep/REPORT-STATIC-GGB.md +127 -0
  959. package/docs/parity-sweep/REPORT-STATIC-RWE.md +133 -0
  960. package/docs/vendor-history.md +385 -0
  961. package/docs/vendored-upstream-diff-2026-07.md +83 -0
  962. package/package.json +70 -0
@@ -0,0 +1,612 @@
1
+ /**
2
+ * design/98 §3.1 (S8c) — the `run_workflow` TOOL an LLM calls to author + run its own workflow. Mounted ONLY
3
+ * when self-orchestration is active (design/98 §1.2: opt-in + a HARD `WorkflowScriptRunner` + a governance
4
+ * baseline). Params are ONLY `{ script, args }` — it NEVER accepts `depth` (the nesting depth is a trusted
5
+ * internal channel, design/98 §0.1). `effect: "write"` (spawning agents is an irreversible side effect → it
6
+ * passes the design/37 policy gate; each spawned agent then passes its OWN governed gate).
7
+ *
8
+ * Flow: size-cap the script → statically validate `meta` (no eval) → `startWorkflow` with the GOVERNED
9
+ * primitives + hard caps → return `{ runId }` IMMEDIATELY → on completion, notify the originator via the
10
+ * {@link WorkflowCompletionNotifier} seam.
11
+ */
12
+ import { Type } from "typebox";
13
+ import { defineTool } from "../core/tools.js";
14
+ import { redactHostLeaks, boundedRedactedSummary } from "../core/untrusted-egress.js";
15
+ import { startWorkflow } from "./workflow.js";
16
+ import { buildWorkflowPrimitives } from "./workflow-primitives.js";
17
+ import { parseWorkflowMeta, splitWorkflowMeta, workflowScriptReadsClockOrRandom } from "./workflow-meta.js";
18
+ import { mergeWorkflowArgs, normalizeStringArg } from "./workflow-script-store.js";
19
+ import { builtinWorkflowListings, resolveBuiltinWorkflow } from "./builtin-workflows.js";
20
+ import { workflowSizeGuidelineSection } from "./workflow-size-guideline.js";
21
+ /** Reserved name of the injected self-orchestration tool. Audit [485]④ (2026-07-07): CC's primary
22
+ * name is `Workflow` with `RunWorkflow` as the alias — CC-trained prompts address "Workflow", so the
23
+ * primary flips to match; `RunWorkflow`/`run_workflow` remain callable via tool-name-aliases. */
24
+ export const RUN_WORKFLOW_TOOL_NAME = "Workflow";
25
+ /** Strip the surrounding markdown code fence a model commonly wraps a script in (```js … ```). Conservative:
26
+ * only when the WHOLE trimmed string is one fenced block; leaves an unfenced script untouched. */
27
+ function stripCodeFences(s) {
28
+ const t = s.trim();
29
+ const m = /^```[A-Za-z]*\r?\n([\s\S]*?)\r?\n?```$/.exec(t);
30
+ return m ? m[1] : s;
31
+ }
32
+ const DEFAULTS = {
33
+ maxScriptChars: 100_000,
34
+ maxAgents: 50,
35
+ totalTimeoutMs: 600_000,
36
+ perAgentTimeoutSec: 300,
37
+ maxResultChars: 100_000,
38
+ maxLogChars: 10_000,
39
+ };
40
+ // The summary handed to the notifier is REDACTED + bounded — never the raw result/host internals
41
+ // (design/98 §D.5 / IMPLEMENTER-SPEC §5). boundedSummary / redactSummary live in
42
+ // ../core/untrusted-egress.ts (design/97 CORE-2 — the single untrusted-text→human egress home).
43
+ /**
44
+ * 黑板 [405][S]: the COMPLETED-path `summary` is a bounded HUMAN-READABLE line (name + agent counts +
45
+ * elapsed), never the return value's escaped-JSON blob — clay 截图里模型收到一坨 `\n` blob 原样复述。
46
+ * The (bounded, redacted) return value still travels in `result`, and the full one via TaskOutput.
47
+ */
48
+ function completionSummary(name, run) {
49
+ // codex 复审 m: meta.name is MODEL-authored and flows to the raw notifier seam — neutralize to a
50
+ // conservative charset (no quotes/backticks/control chars can alter the summary line's framing).
51
+ const cleanName = name?.replace(/[^\p{L}\p{N} _.:/-]/gu, "").replace(/\s+/g, " ").trim().slice(0, 60);
52
+ const done = run.agents.filter((a) => a.status === "completed").length;
53
+ const failed = run.agents.filter((a) => a.status === "failed").length;
54
+ const secs = run.endedAt !== undefined ? Math.max(0, Math.round((run.endedAt - run.startedAt) / 1000)) : undefined;
55
+ const elapsed = secs === undefined ? "" : secs >= 60 ? ` in ${Math.floor(secs / 60)}m${secs % 60}s` : ` in ${secs}s`;
56
+ return (`workflow${cleanName ? ` "${cleanName}"` : ""} completed${elapsed} — agents ${done}/${run.agents.length} done` +
57
+ `${failed > 0 ? ` (${failed} failed)` : ""}; result via TaskOutput("${run.id}")`);
58
+ }
59
+ /** Codes for errors that are about the LLM's OWN SCRIPT (its fault, safe + actionable to surface so it can
60
+ * self-correct) — as opposed to a HOST runtime error (kept generic, may carry paths/tokens). */
61
+ const SCRIPT_ERROR_CODES = new Set([
62
+ "workflow.script_error",
63
+ "workflow.nesting",
64
+ "workflow.model_not_allowed",
65
+ "workflow.agent_schema",
66
+ "workflow.max_agents",
67
+ "workflow.result_too_large",
68
+ "workflow.budget_exceeded",
69
+ ]);
70
+ /** The FAILED-path summary. For a SCRIPT-level typed error (the model's own script — e.g. a compile error or
71
+ * a disallowed model) surface the bounded+redacted message so the model can FIX + retry. For a HOST runtime
72
+ * error (no `workflow.*` code, or one not in the script set) stay generic — NEVER the raw host message (it
73
+ * originates from `runner.runTask` etc. and can carry paths/tokens). The full error is always in the run
74
+ * store, queryable. */
75
+ function failureSummary(err) {
76
+ const e = err;
77
+ const code = typeof e?.code === "string" ? e.code : undefined;
78
+ if (code && SCRIPT_ERROR_CODES.has(code) && typeof e?.message === "string") {
79
+ const msg = redactHostLeaks(e.message);
80
+ return `workflow failed (${code}): ${msg.length > 200 ? `${msg.slice(0, 200)}…` : msg}`;
81
+ }
82
+ return code && code.startsWith("workflow.") ? `workflow failed (${code})` : "workflow failed";
83
+ }
84
+ /**
85
+ * design/140 §6 1b — pick the LLM-facing guidance text for one named workflow: `whenToUse` when declared,
86
+ * else the description (the agents-side `agentWhenToUseText`/CC `tIl` selection shape, workflows arm —
87
+ * workflows have no lean variant, so the fallback chain is just whenToUse → description).
88
+ */
89
+ export function workflowWhenToUseText(m) {
90
+ return (m.whenToUse || m.description) || undefined;
91
+ }
92
+ /**
93
+ * design/140 §6 1b — render the named-workflow roster block appended to the Workflow tool card (the
94
+ * consumption face `meta.whenToUse` previously lacked). Line shape mirrors the agent roster (CC `tIl`,
95
+ * subagent.ts precedent): `- name: whenToUse-or-description`. Returns undefined when nothing is registered
96
+ * (the card stays byte-identical to the pre-140 form).
97
+ */
98
+ export function renderNamedWorkflowListing(entries) {
99
+ if (entries.length === 0)
100
+ return undefined;
101
+ const lines = entries.map((e) => {
102
+ const w = workflowWhenToUseText(e);
103
+ return `- ${e.name}${w ? `: ${w}` : ""}`;
104
+ });
105
+ return ("Named workflows available via {name} (registered defaults merge UNDER your `args`; a top-level key you pass wins wholesale):\n" +
106
+ lines.join("\n"));
107
+ }
108
+ /** Collect the card's named-workflow roster with the SAME shadowing truth as the execute path (codex F3):
109
+ * a built-in name that the deployment registry RESOLVES is shadowed at execution — so the card must not
110
+ * advertise the built-in's metadata for it. Each built-in name is probed via `resolveName()` (the execute
111
+ * path's own source); a shadowed name keeps a line (the workflow exists) but with an honest deployment
112
+ * marker unless `list()` supplies the deployment's real metadata, which then overlays BY NAME. `list()` is
113
+ * awaited (async stores reach the card too); any probe/listing failure degrades to the advisory default —
114
+ * it must never block mounting the tool. */
115
+ async function collectNamedWorkflowListings(store, builtinsEnabled) {
116
+ const byName = new Map();
117
+ if (builtinsEnabled) {
118
+ for (const b of builtinWorkflowListings()) {
119
+ let shadowed = false;
120
+ if (store?.resolveName) {
121
+ try {
122
+ shadowed = (await store.resolveName(b.name)) !== undefined;
123
+ }
124
+ catch {
125
+ shadowed = false; // probe failure → card shows the built-in; execute-path errors surface on call
126
+ }
127
+ }
128
+ byName.set(b.name, shadowed ? { name: b.name, description: "deployment-registered workflow (shadows the built-in of the same name)" } : b);
129
+ }
130
+ }
131
+ try {
132
+ const listed = await store?.list?.();
133
+ if (Array.isArray(listed)) {
134
+ for (const e of listed) {
135
+ if (e && typeof e.name === "string" && e.name.length > 0)
136
+ byName.set(e.name, e);
137
+ }
138
+ }
139
+ }
140
+ catch {
141
+ /* a listing hiccup must never block mounting the tool — the roster block is advisory */
142
+ }
143
+ return [...byName.values()];
144
+ }
145
+ /**
146
+ * Build the `run_workflow` tool. ASSERTS the runner is a hard sandbox (defense in depth — prepare-task only
147
+ * mounts it under the same gate). Returns a structured error (not a throw) for an LLM-correctable problem
148
+ * (oversized / malformed-meta / nesting), so the model can fix and retry.
149
+ *
150
+ * Async since codex F3: the card's named-workflow roster is derived from the SAME sources the execute path
151
+ * resolves against (built-ins probed through `resolveName` shadowing + awaited `list()`), so the card can
152
+ * never advertise a workflow the call would resolve differently.
153
+ */
154
+ export async function createRunWorkflowTool(d) {
155
+ if (d.scriptRunner.safeForUntrustedScripts !== true) {
156
+ throw new Error("createRunWorkflowTool: refusing to mount run_workflow on a runner that is not safeForUntrustedScripts (design/98 fail-closed)");
157
+ }
158
+ const lim = d.limits ?? {};
159
+ const maxScriptChars = lim.maxScriptChars ?? DEFAULTS.maxScriptChars;
160
+ const childCaps = {
161
+ perAgentTimeoutSec: lim.perAgentTimeoutSec ?? DEFAULTS.perAgentTimeoutSec,
162
+ childMaxCostUsd: lim.childMaxCostUsd,
163
+ childMaxTokens: lim.childMaxTokens,
164
+ childMaxTurns: lim.childMaxTurns,
165
+ };
166
+ const governance = { baseline: d.governanceBaseline, models: d.models, caps: childCaps };
167
+ // design/140 §6 1b/1c: the named-workflow roster on the card (built-ins + sync deployment listing) and the
168
+ // execute-path built-in fallback share ONE flag (default ON — the builtinAgents GA-default-on posture).
169
+ const builtinsEnabled = d.builtinWorkflows !== false;
170
+ const namedWorkflowSection = renderNamedWorkflowListing(await collectNamedWorkflowListings(d.scriptStore, builtinsEnabled));
171
+ // 黑板 [663]③ (CC 2.1.206 :17593321 — `Bvs + Wvs(Tt().workflowSizeGuideline)` on both prompt() and
172
+ // description()): the advisory size-guideline section, appended to the card. "unrestricted"/unset ⇒ ""
173
+ // (byte-identical card). Snapshot at mount time = CC's session-start `pbd` snapshot semantics; the
174
+ // mid-session change reminder lane is a TODO (see workflow-size-guideline.ts module doc).
175
+ const sizeGuidelineSection = workflowSizeGuidelineSection(d.sizeGuideline ?? lim.sizeGuideline);
176
+ const structuredError = (message) => ({ content: JSON.stringify({ error: message }) });
177
+ return defineTool({
178
+ name: RUN_WORKFLOW_TOOL_NAME,
179
+ // Pre-[485]④ primary + snake_case stay callable (old model calls / resumed sessions).
180
+ aliases: ["RunWorkflow", "run_workflow"],
181
+ description: "Author and run your own deterministic JS WORKFLOW that spawns and coordinates sub-agents. Pass `script` " +
182
+ "(begins with `export const meta = {...}`, then an async body) and optional `args` (a JSON value). Returns a " +
183
+ "runId immediately; the workflow runs asynchronously and you are notified on completion. Use for a " +
184
+ "SUBSTANTIAL task that genuinely decomposes.\n" +
185
+ // CC 198 semantic port (deep-diff HIGH-1): CC gates this tool on EXPLICIT opt-in — scale must be
186
+ // requested, never inferred. sema has no ultracode keyword, so the opt-in list is translated to
187
+ // deployment-neutral equivalents; the negative fallback is the load-bearing line (a merely
188
+ // parallelizable task is NOT authorization — that inference is exactly what burns tokens unasked).
189
+ "ONLY call this tool when multi-agent orchestration was explicitly opted into: the user/operator asked " +
190
+ "for a workflow or fan-out in their own words, a skill or task directive requests it, or your standing " +
191
+ "instructions authorize self-orchestration. For any other task — even one that would clearly benefit " +
192
+ "from parallelism — do NOT call this tool: delegate individual sub-agents instead, or briefly describe " +
193
+ "what a workflow could do and ask first. A task merely LOOKING decomposable does not count.\n" +
194
+ "Pick the MINIMAL primitive that fits — do NOT reach for parallel by default:\n" +
195
+ "• agent(spec): ONE sub-agent (sequential when awaited). The DEFAULT — use it for any single coherent task. " +
196
+ "Both forms work: agent({ objective: '…', label: '…' }) and agent('prompt string', opts?). " +
197
+ "Do NOT split a task into parallel agents unless its parts are GENUINELY INDEPENDENT.\n" +
198
+ "• parallel(thunks): run agents concurrently with a BARRIER (await ALL). ONLY for INDEPENDENT fan-out whose " +
199
+ "results you need together. If the parts share state, depend on each other, or just 'feel like multiple " +
200
+ "things', it is NOT parallel. A flat independent fan-out IS parallel — not workflow (and if those agents " +
201
+ "WRITE the same repo, it is isolation, below).\n" +
202
+ "• pipeline(items, ...stages): each item flows through the stages on its own chain (no barrier). Use for " +
203
+ "per-item STAGED processing of many items (e.g. for each file: lint → test → report).\n" +
204
+ // PARITY-SPOT-WORKFLOW F1 (design/98 §6.3): the card previously claimed `workflow(body)` nesting and an
205
+ // `agentStream(spec)` handle — neither hook exists in the script isolate (WorkflowPrimitives is exactly
206
+ // agent/parallel/pipeline/phase/log/budget + args). A card must never promise a capability the task does
207
+ // not have; both claims are removed until the corresponding primitive actually ships.
208
+ "• agent(spec, { isolation: \"worktree\" }): run the agent in an ISOLATED git worktree. Use specifically when " +
209
+ "concurrent agents WRITE THE SAME FILES/REPO and must not clobber each other — even as a parallel fan-out " +
210
+ "(plain parallel would clobber); this takes precedence over plain parallel. A separate-working-copy need, " +
211
+ "NOT merely 'several agents'.\n" +
212
+ "• resumeFromRunId (this tool's arg): RESUME a prior/crashed run — replay its completed agents, run only new work.\n" +
213
+ // B5/F2 (CC card): the iterate-by-file calling surface (needs a deployment script store; the runtime
214
+ // error is honest when none is wired).
215
+ "• scriptPath / name (this tool's args): when a script store is wired, every run persists its script and " +
216
+ "returns its scriptPath — to iterate, EDIT that file and re-invoke with {scriptPath} instead of resending " +
217
+ "the full script; {name} runs a saved workflow.\n" +
218
+ // F9/B6: the Infinity trap (CC card + D0m teaching) — the single most common runaway-loop cause.
219
+ "• budget: SCALE the number/depth of agents to a token/cost CEILING — use whenever the task names a budget. " +
220
+ "Guard budget-driven loops on budget.total: with no budget set, budget.remaining() returns Infinity and a " +
221
+ "while-loop runs straight into the agent cap — add a hard iteration cap or pass a budget.\n" +
222
+ // Environment facts (blackboard 2026-07-03, clay dogfood: a five-round trial-and-error chain
223
+ // happened ONLY because the tool never stated these boundaries — say them up front):
224
+ "\n" +
225
+ "Environment facts (read before writing the script):\n" +
226
+ "• Sub-agents may run in an isolated working directory — when a task concerns specific files/repos, put " +
227
+ "ABSOLUTE paths in the agent's objective; never assume it sees your cwd.\n" +
228
+ "• The script itself has NO host APIs: no require/import, no process/fs/fetch, no setTimeout (schedule " +
229
+ "time-based work outside the workflow). Only agent/parallel/pipeline/phase/log/budget/args exist.\n" +
230
+ // B2/F3 (CC card :448059 verbatim, adapted list form): the determinism ban is ENFORCED (static check at
231
+ // submit + runtime shim), not advisory — say it before the model writes a timestamped script.
232
+ "• Scripts must be DETERMINISTIC: `Date.now()`/`Math.random()`/argless `new Date()` throw (they would " +
233
+ "break resume) — pass timestamps in via `args`, stamp results after the workflow returns, and for " +
234
+ "randomness vary the agent prompt/label by index.\n" +
235
+ // 黑板 [406]: LLMs with the CC mental model wrote bare phase() (which used to throw), then dropped
236
+ // phase() entirely → whole runs rendered unphased in the monitor. State BOTH forms with examples.
237
+ "• schema: if an agent's result is consumed by CODE or a downstream stage (a scorer, a file writer, the " +
238
+ "next pipeline stage, your own JSON.parse), pass opts.schema to FORCE structured output — prose transfer " +
239
+ "silently loses fields. Only results a human/LLM reads as narrative may omit schema.\n" +
240
+ "• phase (two forms, both fine): bare marker — phase('Scan'); groups every later agent() under 'Scan' " +
241
+ "until the next phase() call. Scoped — await phase('Fix', async () => { ...agents... }); groups just the " +
242
+ "body. Give each stage a phase so progress renders as stage groups.\n" +
243
+ "• spec.modelName works only when the deployment configured a workflow model allowlist; if unsure, omit " +
244
+ "modelName and the agent runs on the deployment's default role.\n" +
245
+ // design/116 W4: CC AgentTool/prompt.ts:94 "Don't race" verbatim (adapted fork→workflow) — guards the
246
+ // observed failure of narrating/fabricating a still-running workflow's results (the sema-async symptom).
247
+ "\n" +
248
+ "Don't race. After launching, you know nothing about what the workflow found. Never fabricate or predict its " +
249
+ "results in any format — not as prose, summary, or structured output. When a completion notifier is wired " +
250
+ "(the launch note will say so) END YOUR TURN and wait — the notification carries the result; poll " +
251
+ "TaskOutput(task_id) only when the user asks for progress. If the user asks a follow-up before it lands, " +
252
+ "give status, not a guess." +
253
+ // design/140 §6 1b: the named-workflow roster (whenToUse projection) — appended ONLY when something is
254
+ // registered, so a roster-less deployment's card is byte-identical to the pre-140 form.
255
+ (namedWorkflowSection !== undefined ? `\n\n${namedWorkflowSection}` : "") +
256
+ // [663]③ CC parity: the advisory size-guideline section last (CC appends Wvs to the whole card).
257
+ sizeGuidelineSection,
258
+ parameters: Type.Object({
259
+ // B5/F2 (CC pretty.js:449105 strictObject): `script` is now one of THREE calling surfaces —
260
+ // script ∨ name ∨ scriptPath (validated in execute; typebox has no refine).
261
+ script: Type.Optional(Type.String({
262
+ description: "Self-contained workflow script. Must begin with `export const meta = { name, description, phases }` " +
263
+ "(pure literal, no computed values) followed by the script body using agent()/parallel()/pipeline()/phase().",
264
+ })),
265
+ name: Type.Optional(Type.String({
266
+ description: "Name of a predefined workflow (a saved script in the deployment's workflow store, or a built-in — " +
267
+ "see the named-workflow list in this tool's description). Resolves to a self-contained script; the " +
268
+ "registration's default args merge under your `args`.",
269
+ })),
270
+ scriptPath: Type.Optional(Type.String({
271
+ description: "Path to a workflow script file persisted by a prior invocation (each run's tool result carries its " +
272
+ "scriptPath when the deployment wires a script store). To iterate, edit that file and re-invoke with the " +
273
+ "same `scriptPath` instead of re-sending the full script. Takes precedence over `script` and `name`.",
274
+ })),
275
+ args: Type.Optional(Type.Unknown()),
276
+ resumeFromRunId: Type.Optional(Type.String({
277
+ description: "design/97 CORE-9: resume a PRIOR run of the SAME script — replays the longest unchanged prefix of " +
278
+ "its agent results from the journal and runs only the first changed/new call + everything after live. " +
279
+ "Requires a journal-backed deployment; omit for a fresh run.",
280
+ })),
281
+ }),
282
+ effect: "write",
283
+ execute: async (rawArgs, ctx) => {
284
+ const rawScript = rawArgs.script;
285
+ const rawName = rawArgs.name;
286
+ const rawScriptPath = rawArgs.scriptPath;
287
+ const scriptArgs = rawArgs.args;
288
+ const rawResume = rawArgs.resumeFromRunId;
289
+ const resumeFromRunId = typeof rawResume === "string" && rawResume.length > 0 ? rawResume : undefined;
290
+ const sourceTaskId = ctx.taskId ?? d.sourceTaskId;
291
+ const principal = ctx.principal ?? d.principal;
292
+ const taskScope = ctx.principal ?? d.scope;
293
+ // 0. B5/F2 — resolve the script from the three-way calling surface (CC refine: "Must provide script,
294
+ // name, or scriptPath"; scriptPath > script > name). scriptPath needs the deployment's store; name
295
+ // resolves deployment store FIRST (SHADOW), then the built-in registry (design/140 §6 1c).
296
+ let script;
297
+ // design/140 §6 1a — the registration's defaultArgs layer (only the `name` surface has a registry entry).
298
+ let registeredDefaultArgs;
299
+ // 团队通道 [426] CORE-1 — the registration's declared bare-string key (default "topic"): when a `{name}`
300
+ // call passes a raw string args AND the registry carries object defaultArgs, the string is normalized to
301
+ // `{ [key]: string }` BEFORE the merge, so the ergonomic "裸 string = topic" entry composes with the
302
+ // registered defaults instead of wiping them wholesale.
303
+ let registeredStringArgKey;
304
+ if (typeof rawScriptPath === "string" && rawScriptPath.length > 0) {
305
+ if (!d.scriptStore)
306
+ return structuredError("scriptPath requires a deployment workflow script store — none is wired; pass `script` inline");
307
+ try {
308
+ script = await d.scriptStore.load(rawScriptPath);
309
+ }
310
+ catch (err) {
311
+ return structuredError(`failed to read workflow script at scriptPath: ${redactHostLeaks(err instanceof Error ? err.message : String(err)).slice(0, 300)}`);
312
+ }
313
+ }
314
+ else if (typeof rawScript === "string" && rawScript.length > 0) {
315
+ // Normalize a common model habit: a whole-script markdown code fence (```js … ```).
316
+ script = stripCodeFences(rawScript);
317
+ }
318
+ else if (typeof rawName === "string" && rawName.length > 0) {
319
+ if (!d.scriptStore?.resolveName && !builtinsEnabled) {
320
+ return structuredError("named workflows require a deployment workflow script store — none is wired (and built-in workflows are disabled); pass `script` inline");
321
+ }
322
+ let resolved;
323
+ if (d.scriptStore?.resolveName) {
324
+ try {
325
+ resolved = await d.scriptStore.resolveName(rawName);
326
+ }
327
+ catch (err) {
328
+ return structuredError(`failed to resolve workflow name: ${redactHostLeaks(err instanceof Error ? err.message : String(err)).slice(0, 300)}`);
329
+ }
330
+ }
331
+ // Built-in fallback (design/140 §6 1c): consulted ONLY when the deployment registry does not resolve
332
+ // the name — a same-name deployment entry shadows the built-in; `builtinWorkflows:false` removes it.
333
+ if (resolved === undefined && builtinsEnabled) {
334
+ resolved = resolveBuiltinWorkflow(rawName); // built-ins carry no registry defaultArgs layer
335
+ }
336
+ if (resolved === undefined)
337
+ return structuredError(`unknown workflow name: ${JSON.stringify(rawName)}`);
338
+ script = typeof resolved === "string" ? resolved : resolved.script;
339
+ if (typeof resolved !== "string" && "defaultArgs" in resolved)
340
+ registeredDefaultArgs = resolved.defaultArgs;
341
+ // [426] CORE-1: honor a registry-declared bare-string key (缺省 "topic"); only the `name` surface has
342
+ // a registry entry, so a `{script}`/`{scriptPath}` call never normalizes (registeredDefaultArgs stays
343
+ // undefined there → normalizeStringArg is a no-op regardless).
344
+ if (typeof resolved !== "string" && typeof resolved.stringArgKey === "string" && resolved.stringArgKey.length > 0) {
345
+ registeredStringArgKey = resolved.stringArgKey;
346
+ }
347
+ }
348
+ else {
349
+ return structuredError("Must provide script, name, or scriptPath");
350
+ }
351
+ // design/140 §6 1a — the merge chain, resolved ONCE here (parse-time snapshot discipline, design/140 §2):
352
+ // call-time args > registered defaultArgs > script-internal fallbacks (the script's own job). The run —
353
+ // including a `resumeFromRunId` replay — receives the merged VALUE and never re-queries the registry;
354
+ // a post-launch registry change reaches only FUTURE invocations (a changed default on a resume
355
+ // re-invocation diverges via the journal's callKey identity, exactly like a changed script).
356
+ // 团队通道 [426] CORE-1 — normalization happens BEFORE the merge: a bare-string call arg + object
357
+ // defaultArgs would otherwise hit mergeWorkflowArgs' non-object branch and wipe the registered defaults
358
+ // wholesale (the published "裸 string = topic" ergonomic entry colliding with center-配的 defaults —
359
+ // the collab template silently degrading to generic advocate/skeptic). Normalizing the string to
360
+ // `{ [stringArgKey ?? "topic"]: <string> }` first lets both conventions compose; with no object
361
+ // defaults the string passes through untouched. The effectiveArgs snapshot below (and the value handed
362
+ // to the script runner) is therefore the NORMALIZED+MERGED final value.
363
+ const effectiveArgs = mergeWorkflowArgs(normalizeStringArg(scriptArgs, registeredDefaultArgs, registeredStringArgKey), registeredDefaultArgs);
364
+ // 1. size cap — fail fast before any parse.
365
+ if (script.length > maxScriptChars) {
366
+ return structuredError(`script too large: ${script.length} chars > max ${maxScriptChars}`);
367
+ }
368
+ // 2. STATIC meta validation (no eval) — early, structured feedback the model can fix. Capture the meta so
369
+ // the run records its name/description for the MF-W /workflows monitor header (design/99).
370
+ let meta;
371
+ try {
372
+ meta = parseWorkflowMeta(script);
373
+ }
374
+ catch (err) {
375
+ return structuredError(err instanceof Error ? err.message : String(err));
376
+ }
377
+ // 2b. SYNC precompile fail-fast (CC 198 `Ubt` parity, pretty.js:449293-449307): a BODY syntax error
378
+ // returns a structured error THIS turn — the model fixes it immediately — instead of surfacing only
379
+ // through the async completion notification (PARITY-SPOT-WORKFLOW F8/B3). Compile-only: the same
380
+ // wrapper shape the script runners use, built via the Function constructor and NEVER invoked, so
381
+ // error line offsets match the real execution and no script code runs here.
382
+ try {
383
+ const { body } = splitWorkflowMeta(script);
384
+ new Function(`return (async function(agent, parallel, pipeline, phase, log, budget, args) {\n${body}\n})`);
385
+ // 2c. STATIC determinism check (CC `wxl` → errorCode 4, pretty.js:446005/:449214, B2/F3): a clock or
386
+ // randomness read busts the resume prefix cache SILENTLY — teach at authoring time, this turn. The
387
+ // runtime shim in the runner is the backstop (strings/comments are lexed out here, so a prompt that
388
+ // merely mentions Date.now() does not trip).
389
+ if (workflowScriptReadsClockOrRandom(body)) {
390
+ return structuredError("Workflow scripts must be deterministic: Date.now()/Math.random()/new Date() are unavailable (breaks resume). " +
391
+ "Stamp results after the workflow returns, or pass timestamps via args.");
392
+ }
393
+ }
394
+ catch (err) {
395
+ return structuredError(`workflow script failed to compile: ${err instanceof Error ? err.message : String(err)}`);
396
+ }
397
+ // 3. start — GOVERNED primitives + hard caps. A sync nesting throw becomes a structured error.
398
+ const scriptFn = (wfCtx) => {
399
+ // `principal` (resolved above: ctx.principal ?? d.principal) also threads into every spawned
400
+ // agent (fable impl-review F1 — design/62 verbatim inheritance; the notify/registry scope and
401
+ // the children now agree on the SAME principal, so tool-result-store scoping lines up).
402
+ const primitives = buildWorkflowPrimitives(wfCtx, governance, d.onAgentSpawn, d.parentThinking, principal); // CORE-9 Part B steer sink + thinking/principal inheritance
403
+ // Pass the WORKFLOW signal (caller + cancel + totalTimeout), not the tool-context signal, so a
404
+ // cancel/timeout aborts the script body itself — not just the agents it spawns (workflow review).
405
+ // design/140 §6 1a: the script receives the MERGED effective args (call-time > registered defaults).
406
+ return d.scriptRunner.run({ scriptSource: script, primitives, scriptArgs: effectiveArgs, signal: wfCtx.signal }).then((r) => r.result);
407
+ };
408
+ let handle;
409
+ const workflowTaskId = d.taskRegistry?.mintTaskId("workflow");
410
+ try {
411
+ handle = startWorkflow(d.runner, scriptFn, {
412
+ store: d.store,
413
+ // F4 agentType: thread the deployment registry into the run's spawn lanes.
414
+ ...(d.agents !== undefined ? { agents: d.agents } : {}),
415
+ ...(d.builtinAgents !== undefined ? { builtinAgents: d.builtinAgents } : {}),
416
+ // design/99 MF-W: record the script's meta name/description on the run for the /workflows header.
417
+ name: meta.name,
418
+ ...(meta.description !== undefined ? { description: meta.description } : {}),
419
+ // B7/F7 (CC :446478): pre-register the plan's phases as pending progress groups.
420
+ ...(meta.phases !== undefined ? { phases: meta.phases } : {}),
421
+ // design/140 §6 1a: snapshot the MERGED effective args onto the run (parse-time discipline,
422
+ // design/140 §2 — observability/recovery read the value the script actually received; nothing
423
+ // downstream ever re-queries the registry).
424
+ ...(effectiveArgs !== undefined ? { effectiveArgs } : {}),
425
+ // design/114 #3: thread the host task id onto the WorkflowRun (was only on the notify path) so a
426
+ // crash-recovered consumer rebuilding from getWorkflowRun can re-associate the run with its initiator.
427
+ ...(sourceTaskId !== undefined ? { sourceTaskId } : {}),
428
+ ...(d.originatingSessionId !== undefined ? { originatingSessionId: d.originatingSessionId } : {}), // service [371]②: recovery 与 live 对称
429
+ ...(workflowTaskId !== undefined ? { runId: workflowTaskId } : {}),
430
+ // CORE-9 Part A: durable resume for tool-launched workflows. journalStore records; resumeFromRunId
431
+ // (a tool arg) replays the prior run's unchanged prefix. startWorkflow throws (→ structured error) if
432
+ // resumeFromRunId is set without a journalStore.
433
+ journalStore: d.journalStore,
434
+ ...(resumeFromRunId !== undefined ? { resumeFromRunId } : {}),
435
+ scope: d.scope,
436
+ signal: ctx.signal,
437
+ budget: lim.budget,
438
+ maxAgents: lim.maxAgents ?? DEFAULTS.maxAgents,
439
+ totalTimeoutMs: lim.totalTimeoutMs ?? DEFAULTS.totalTimeoutMs,
440
+ maxResultChars: lim.maxResultChars ?? DEFAULTS.maxResultChars,
441
+ maxLogChars: lim.maxLogChars ?? DEFAULTS.maxLogChars,
442
+ ...(d.parentCwd !== undefined ? { parentCwd: d.parentCwd } : {}),
443
+ }, { workflowDepth: d.workflowDepth });
444
+ }
445
+ catch (err) {
446
+ // design/98 §0.1: a workflow started INSIDE a workflow (nesting) throws here → structured error.
447
+ return structuredError(err instanceof Error ? err.message : String(err));
448
+ }
449
+ const runId = handle.runId;
450
+ // B5/F2 (CC `Pqi` :449309): persist THIS invocation's resolved script (best-effort — a store hiccup must
451
+ // never block the launch) and report the path so the model iterates via {scriptPath} instead of resending.
452
+ let persistedScriptPath;
453
+ if (d.scriptStore) {
454
+ try {
455
+ persistedScriptPath = await d.scriptStore.persist(runId, script);
456
+ }
457
+ catch {
458
+ /* best-effort persistence — the run itself is unaffected */
459
+ }
460
+ }
461
+ if (d.taskRegistry) {
462
+ const taskOwner = ctx.taskId ?? d.taskOwner ?? d.sourceTaskId;
463
+ d.taskRegistry.registerWorkflow({
464
+ runId,
465
+ handle,
466
+ store: d.store,
467
+ description: meta.name ?? meta.description,
468
+ toolUseId: ctx.toolCallId,
469
+ ...(taskOwner !== undefined ? { owner: taskOwner } : {}),
470
+ ...(taskScope !== undefined ? { scope: taskScope } : {}),
471
+ // 黑板 [405]: the originating session polled this run to TERMINAL in-band → tell the deployment
472
+ // to drop the (session, runId) completion-inbox entry (durable half; the shell's same-process
473
+ // seed Set is the belt). Fire-and-forget, swallow-guarded.
474
+ onServedTerminal: () => {
475
+ void Promise.resolve()
476
+ .then(() => d.notifier?.ackServed?.({
477
+ runId,
478
+ ...(d.originatingSessionId !== undefined ? { originatingSessionId: d.originatingSessionId } : {}),
479
+ ...(sourceTaskId !== undefined ? { sourceTaskId } : {}),
480
+ ...(principal !== undefined ? { principal } : {}),
481
+ }))
482
+ .catch(() => { });
483
+ },
484
+ });
485
+ }
486
+ // 4. fire-and-forget completion notify (at most once per runId; notifier errors swallowed).
487
+ if (d.notifier) {
488
+ let notified = false;
489
+ const fire = (notification) => {
490
+ if (notified)
491
+ return;
492
+ notified = true;
493
+ try {
494
+ d.taskNotification?.(notification);
495
+ }
496
+ catch {
497
+ /* best-effort live notification; deployment notifier below is still attempted */
498
+ }
499
+ // Funnel notify() THROUGH a then() so a SYNCHRONOUS throw (the seam allows `void` returns) is caught
500
+ // by the `.catch` rather than escaping as an unhandled rejection (workflow review, tool-flow).
501
+ void Promise.resolve()
502
+ .then(() => d.notifier.notify({
503
+ runId,
504
+ task_id: notification.task_id,
505
+ task_type: "workflow",
506
+ ...(notification.toolUseId !== undefined ? { toolUseId: notification.toolUseId } : {}),
507
+ sourceTaskId,
508
+ ...(d.originatingSessionId !== undefined ? { originatingSessionId: d.originatingSessionId } : {}),
509
+ principal,
510
+ status: notification.status === "completed" ? "completed" : "failed",
511
+ summary: notification.summary,
512
+ ...(notification.result !== undefined ? { result: notification.result } : {}),
513
+ ...(notification.usage !== undefined ? { usage: notification.usage } : {}),
514
+ }))
515
+ .catch(() => { });
516
+ };
517
+ handle.done
518
+ .then((res) => fire({
519
+ task_id: runId,
520
+ task_type: "workflow",
521
+ ...(ctx.toolCallId !== undefined ? { toolUseId: ctx.toolCallId } : {}),
522
+ status: "completed",
523
+ summary: completionSummary(meta.name, res.run),
524
+ result: boundedRedactedSummary(res.result, 4000),
525
+ usage: res.run.stats,
526
+ }), (err) => fire({
527
+ task_id: runId,
528
+ task_type: "workflow",
529
+ ...(ctx.toolCallId !== undefined ? { toolUseId: ctx.toolCallId } : {}),
530
+ status: "failed",
531
+ summary: failureSummary(err),
532
+ }))
533
+ // Belt: a throw inside either callback (e.g. summary building) must not become an unhandled rejection.
534
+ .catch(() => { });
535
+ }
536
+ else {
537
+ let notified = false;
538
+ const fire = (notification) => {
539
+ if (notified)
540
+ return;
541
+ notified = true;
542
+ try {
543
+ d.taskNotification?.(notification);
544
+ }
545
+ catch {
546
+ /* best-effort live notification */
547
+ }
548
+ };
549
+ handle.done
550
+ .then((res) => fire({
551
+ task_id: runId,
552
+ task_type: "workflow",
553
+ ...(ctx.toolCallId !== undefined ? { toolUseId: ctx.toolCallId } : {}),
554
+ status: "completed",
555
+ summary: completionSummary(meta.name, res.run),
556
+ result: boundedRedactedSummary(res.result, 4000),
557
+ usage: res.run.stats,
558
+ }), (err) => fire({
559
+ task_id: runId,
560
+ task_type: "workflow",
561
+ ...(ctx.toolCallId !== undefined ? { toolUseId: ctx.toolCallId } : {}),
562
+ status: "failed",
563
+ summary: failureSummary(err),
564
+ }))
565
+ .catch(() => { });
566
+ }
567
+ // 5. return the runId IMMEDIATELY (the workflow runs asynchronously). The `note` is HONEST about how to
568
+ // learn the outcome: when a task registry is wired (the Runner mount path always passes one) point at
569
+ // the reliable TaskOutput POLL path; the push completion-notify is a deployment-optional seam
570
+ // (`workflowCompletionNotifier`), so we say
571
+ // "may also be notified … if the deployment wires it" rather than the old unconditional over-promise (a
572
+ // deployment whose notify sink only logs would leave the model waiting forever — the observed sema symptom).
573
+ // [378] flywheel ask (monitor #5): a machine-checkable "backgrounded" marker so the shell renders
574
+ // the CC-shaped "Running in background · /workflows to monitor" line without parsing free text.
575
+ return {
576
+ details: { type: "workflow-run", status: "backgrounded", workflowRunId: runId },
577
+ content: JSON.stringify({
578
+ runId,
579
+ task_id: runId,
580
+ status: "started",
581
+ // B5/F2: where this invocation's script was persisted — edit it + re-invoke with {scriptPath} to iterate.
582
+ ...(persistedScriptPath !== undefined ? { scriptPath: persistedScriptPath } : {}),
583
+ // 黑板 [409]② + 复审 r2: honest note by capability tier (clay 截图: 旧文案主动教轮询 →
584
+ // TaskOutput×5 连刷). The poll tool named must ACTUALLY be mounted (registry→TaskOutput, else
585
+ // none — design/136 §2.3: WorkflowStatus retired; a directly-constructed SDK consumer that wants
586
+ // a poll path must pass `taskRegistry`). Only a DURABLE `notifier` earns "end your turn and
587
+ // wait"; a bare SDK `taskNotification` may not reach an idle session → hedge, don't over-promise.
588
+ note: (() => {
589
+ const pollExpr = d.taskRegistry ? `TaskOutput({ task_id: "${runId}" })` : undefined;
590
+ const carries = pollExpr ? ` A terminal ${pollExpr} reply carries its result.` : "";
591
+ if (d.notifier) {
592
+ return `The workflow runs asynchronously. You will be NOTIFIED when it completes (the notification carries the result). End your turn and wait — do not poll unless the user asks for progress.${carries}`;
593
+ }
594
+ if (d.taskNotification) {
595
+ return `The workflow runs asynchronously. Its completion is injected into THIS session if it is still active; if you have ended your turn and hear nothing, ${pollExpr ? `poll ${pollExpr}` : "there is no poll path wired"}.${carries}`;
596
+ }
597
+ return pollExpr
598
+ ? `The workflow runs asynchronously and no completion notifier is wired. Poll ${pollExpr}.${carries}`
599
+ : "The workflow runs asynchronously; no completion notifier is wired and no status/poll path is available.";
600
+ })(),
601
+ }),
602
+ };
603
+ },
604
+ });
605
+ }
606
+ // design/136 §2.3 (BREAKING 去超集批): the standalone `WorkflowStatus` poll tool was retired — poll capability
607
+ // is fully carried by `TaskOutput` (field superset via formatWorkflowRun + delimitUntrusted fencing + the
608
+ // cross-replica `workflowStore` fallback; the legacy `runId` argument was already accepted). "WorkflowStatus"
609
+ // remains a live alias of TaskOutput (old calls run verbatim) and an OLD_TO_NEW entry (durable-state
610
+ // normalization). CC shape: a single Workflow tool, status via /workflows + task notifications — no status
611
+ // query tool.
612
+ //# sourceMappingURL=run-workflow-tool.js.map