@substrate-ai/factory 0.19.54

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 (885) hide show
  1. package/dist/__tests__/config.test.d.ts +11 -0
  2. package/dist/__tests__/config.test.d.ts.map +1 -0
  3. package/dist/__tests__/config.test.js +215 -0
  4. package/dist/__tests__/config.test.js.map +1 -0
  5. package/dist/__tests__/factory-run-command.test.d.ts +12 -0
  6. package/dist/__tests__/factory-run-command.test.d.ts.map +1 -0
  7. package/dist/__tests__/factory-run-command.test.js +454 -0
  8. package/dist/__tests__/factory-run-command.test.js.map +1 -0
  9. package/dist/__tests__/factory-validate-command.test.d.ts +15 -0
  10. package/dist/__tests__/factory-validate-command.test.d.ts.map +1 -0
  11. package/dist/__tests__/factory-validate-command.test.js +339 -0
  12. package/dist/__tests__/factory-validate-command.test.js.map +1 -0
  13. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts +72 -0
  14. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts.map +1 -0
  15. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js +121 -0
  16. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js.map +1 -0
  17. package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts +28 -0
  18. package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts.map +1 -0
  19. package/dist/__tests__/fixtures/llm-edge-routing.dot.js +55 -0
  20. package/dist/__tests__/fixtures/llm-edge-routing.dot.js.map +1 -0
  21. package/dist/__tests__/fixtures/manager-loop.dot.d.ts +34 -0
  22. package/dist/__tests__/fixtures/manager-loop.dot.d.ts.map +1 -0
  23. package/dist/__tests__/fixtures/manager-loop.dot.js +61 -0
  24. package/dist/__tests__/fixtures/manager-loop.dot.js.map +1 -0
  25. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts +42 -0
  26. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts.map +1 -0
  27. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js +118 -0
  28. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js.map +1 -0
  29. package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts +35 -0
  30. package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts.map +1 -0
  31. package/dist/__tests__/fixtures/subgraph-parent.dot.js +69 -0
  32. package/dist/__tests__/fixtures/subgraph-parent.dot.js.map +1 -0
  33. package/dist/__tests__/integration/advanced-graph-events.test.d.ts +19 -0
  34. package/dist/__tests__/integration/advanced-graph-events.test.d.ts.map +1 -0
  35. package/dist/__tests__/integration/advanced-graph-events.test.js +288 -0
  36. package/dist/__tests__/integration/advanced-graph-events.test.js.map +1 -0
  37. package/dist/__tests__/integration/checkpoint-resume.test.d.ts +10 -0
  38. package/dist/__tests__/integration/checkpoint-resume.test.d.ts.map +1 -0
  39. package/dist/__tests__/integration/checkpoint-resume.test.js +125 -0
  40. package/dist/__tests__/integration/checkpoint-resume.test.js.map +1 -0
  41. package/dist/__tests__/integration/conditional-pipeline.test.d.ts +10 -0
  42. package/dist/__tests__/integration/conditional-pipeline.test.d.ts.map +1 -0
  43. package/dist/__tests__/integration/conditional-pipeline.test.js +106 -0
  44. package/dist/__tests__/integration/conditional-pipeline.test.js.map +1 -0
  45. package/dist/__tests__/integration/convergence-validation.test.d.ts +14 -0
  46. package/dist/__tests__/integration/convergence-validation.test.d.ts.map +1 -0
  47. package/dist/__tests__/integration/convergence-validation.test.js +449 -0
  48. package/dist/__tests__/integration/convergence-validation.test.js.map +1 -0
  49. package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts +12 -0
  50. package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts.map +1 -0
  51. package/dist/__tests__/integration/epic44-coverage-gate.test.js +58 -0
  52. package/dist/__tests__/integration/epic44-coverage-gate.test.js.map +1 -0
  53. package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts +11 -0
  54. package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts.map +1 -0
  55. package/dist/__tests__/integration/epic45-coverage-gate.test.js +64 -0
  56. package/dist/__tests__/integration/epic45-coverage-gate.test.js.map +1 -0
  57. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts +2 -0
  58. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts.map +1 -0
  59. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js +285 -0
  60. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js.map +1 -0
  61. package/dist/__tests__/integration/events.test.d.ts +8 -0
  62. package/dist/__tests__/integration/events.test.d.ts.map +1 -0
  63. package/dist/__tests__/integration/events.test.js +194 -0
  64. package/dist/__tests__/integration/events.test.js.map +1 -0
  65. package/dist/__tests__/integration/graphs.d.ts +59 -0
  66. package/dist/__tests__/integration/graphs.d.ts.map +1 -0
  67. package/dist/__tests__/integration/graphs.js +164 -0
  68. package/dist/__tests__/integration/graphs.js.map +1 -0
  69. package/dist/__tests__/integration/helpers.d.ts +127 -0
  70. package/dist/__tests__/integration/helpers.d.ts.map +1 -0
  71. package/dist/__tests__/integration/helpers.js +167 -0
  72. package/dist/__tests__/integration/helpers.js.map +1 -0
  73. package/dist/__tests__/integration/integrity.test.d.ts +8 -0
  74. package/dist/__tests__/integration/integrity.test.d.ts.map +1 -0
  75. package/dist/__tests__/integration/integrity.test.js +198 -0
  76. package/dist/__tests__/integration/integrity.test.js.map +1 -0
  77. package/dist/__tests__/integration/llm-edge-routing.test.d.ts +21 -0
  78. package/dist/__tests__/integration/llm-edge-routing.test.d.ts.map +1 -0
  79. package/dist/__tests__/integration/llm-edge-routing.test.js +341 -0
  80. package/dist/__tests__/integration/llm-edge-routing.test.js.map +1 -0
  81. package/dist/__tests__/integration/manager-loop.test.d.ts +24 -0
  82. package/dist/__tests__/integration/manager-loop.test.d.ts.map +1 -0
  83. package/dist/__tests__/integration/manager-loop.test.js +276 -0
  84. package/dist/__tests__/integration/manager-loop.test.js.map +1 -0
  85. package/dist/__tests__/integration/multi-type-graph.test.d.ts +10 -0
  86. package/dist/__tests__/integration/multi-type-graph.test.d.ts.map +1 -0
  87. package/dist/__tests__/integration/multi-type-graph.test.js +100 -0
  88. package/dist/__tests__/integration/multi-type-graph.test.js.map +1 -0
  89. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts +22 -0
  90. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts.map +1 -0
  91. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js +515 -0
  92. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js.map +1 -0
  93. package/dist/__tests__/integration/persistence.test.d.ts +8 -0
  94. package/dist/__tests__/integration/persistence.test.d.ts.map +1 -0
  95. package/dist/__tests__/integration/persistence.test.js +129 -0
  96. package/dist/__tests__/integration/persistence.test.js.map +1 -0
  97. package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts +16 -0
  98. package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts.map +1 -0
  99. package/dist/__tests__/integration/pipeline-templates-integration.test.js +171 -0
  100. package/dist/__tests__/integration/pipeline-templates-integration.test.js.map +1 -0
  101. package/dist/__tests__/integration/scenario-pipeline.test.d.ts +11 -0
  102. package/dist/__tests__/integration/scenario-pipeline.test.d.ts.map +1 -0
  103. package/dist/__tests__/integration/scenario-pipeline.test.js +243 -0
  104. package/dist/__tests__/integration/scenario-pipeline.test.js.map +1 -0
  105. package/dist/__tests__/integration/stylesheet-application.test.d.ts +12 -0
  106. package/dist/__tests__/integration/stylesheet-application.test.d.ts.map +1 -0
  107. package/dist/__tests__/integration/stylesheet-application.test.js +119 -0
  108. package/dist/__tests__/integration/stylesheet-application.test.js.map +1 -0
  109. package/dist/__tests__/integration/subgraph-execution.test.d.ts +24 -0
  110. package/dist/__tests__/integration/subgraph-execution.test.d.ts.map +1 -0
  111. package/dist/__tests__/integration/subgraph-execution.test.js +291 -0
  112. package/dist/__tests__/integration/subgraph-execution.test.js.map +1 -0
  113. package/dist/__tests__/integration/validation-errors.test.d.ts +8 -0
  114. package/dist/__tests__/integration/validation-errors.test.d.ts.map +1 -0
  115. package/dist/__tests__/integration/validation-errors.test.js +150 -0
  116. package/dist/__tests__/integration/validation-errors.test.js.map +1 -0
  117. package/dist/agent/__tests__/loop-detection.test.d.ts +2 -0
  118. package/dist/agent/__tests__/loop-detection.test.d.ts.map +1 -0
  119. package/dist/agent/__tests__/loop-detection.test.js +236 -0
  120. package/dist/agent/__tests__/loop-detection.test.js.map +1 -0
  121. package/dist/agent/__tests__/loop.test.d.ts +2 -0
  122. package/dist/agent/__tests__/loop.test.d.ts.map +1 -0
  123. package/dist/agent/__tests__/loop.test.js +868 -0
  124. package/dist/agent/__tests__/loop.test.js.map +1 -0
  125. package/dist/agent/__tests__/truncation.test.d.ts +2 -0
  126. package/dist/agent/__tests__/truncation.test.d.ts.map +1 -0
  127. package/dist/agent/__tests__/truncation.test.js +276 -0
  128. package/dist/agent/__tests__/truncation.test.js.map +1 -0
  129. package/dist/agent/index.d.ts +11 -0
  130. package/dist/agent/index.d.ts.map +1 -0
  131. package/dist/agent/index.js +13 -0
  132. package/dist/agent/index.js.map +1 -0
  133. package/dist/agent/loop-detection.d.ts +21 -0
  134. package/dist/agent/loop-detection.d.ts.map +1 -0
  135. package/dist/agent/loop-detection.js +61 -0
  136. package/dist/agent/loop-detection.js.map +1 -0
  137. package/dist/agent/loop.d.ts +88 -0
  138. package/dist/agent/loop.d.ts.map +1 -0
  139. package/dist/agent/loop.js +411 -0
  140. package/dist/agent/loop.js.map +1 -0
  141. package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts +6 -0
  142. package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts.map +1 -0
  143. package/dist/agent/tools/__tests__/anthropic-tools.test.js +49 -0
  144. package/dist/agent/tools/__tests__/anthropic-tools.test.js.map +1 -0
  145. package/dist/agent/tools/__tests__/environment.test.d.ts +6 -0
  146. package/dist/agent/tools/__tests__/environment.test.d.ts.map +1 -0
  147. package/dist/agent/tools/__tests__/environment.test.js +33 -0
  148. package/dist/agent/tools/__tests__/environment.test.js.map +1 -0
  149. package/dist/agent/tools/__tests__/gemini-tools.test.d.ts +6 -0
  150. package/dist/agent/tools/__tests__/gemini-tools.test.d.ts.map +1 -0
  151. package/dist/agent/tools/__tests__/gemini-tools.test.js +98 -0
  152. package/dist/agent/tools/__tests__/gemini-tools.test.js.map +1 -0
  153. package/dist/agent/tools/__tests__/openai-tools.test.d.ts +6 -0
  154. package/dist/agent/tools/__tests__/openai-tools.test.d.ts.map +1 -0
  155. package/dist/agent/tools/__tests__/openai-tools.test.js +53 -0
  156. package/dist/agent/tools/__tests__/openai-tools.test.js.map +1 -0
  157. package/dist/agent/tools/__tests__/patch.test.d.ts +6 -0
  158. package/dist/agent/tools/__tests__/patch.test.d.ts.map +1 -0
  159. package/dist/agent/tools/__tests__/patch.test.js +116 -0
  160. package/dist/agent/tools/__tests__/patch.test.js.map +1 -0
  161. package/dist/agent/tools/__tests__/profiles.test.d.ts +6 -0
  162. package/dist/agent/tools/__tests__/profiles.test.d.ts.map +1 -0
  163. package/dist/agent/tools/__tests__/profiles.test.js +125 -0
  164. package/dist/agent/tools/__tests__/profiles.test.js.map +1 -0
  165. package/dist/agent/tools/__tests__/registry.test.d.ts +6 -0
  166. package/dist/agent/tools/__tests__/registry.test.d.ts.map +1 -0
  167. package/dist/agent/tools/__tests__/registry.test.js +94 -0
  168. package/dist/agent/tools/__tests__/registry.test.js.map +1 -0
  169. package/dist/agent/tools/__tests__/shared.test.d.ts +6 -0
  170. package/dist/agent/tools/__tests__/shared.test.d.ts.map +1 -0
  171. package/dist/agent/tools/__tests__/shared.test.js +131 -0
  172. package/dist/agent/tools/__tests__/shared.test.js.map +1 -0
  173. package/dist/agent/tools/anthropic-tools.d.ts +15 -0
  174. package/dist/agent/tools/anthropic-tools.d.ts.map +1 -0
  175. package/dist/agent/tools/anthropic-tools.js +45 -0
  176. package/dist/agent/tools/anthropic-tools.js.map +1 -0
  177. package/dist/agent/tools/environment.d.ts +11 -0
  178. package/dist/agent/tools/environment.d.ts.map +1 -0
  179. package/dist/agent/tools/environment.js +35 -0
  180. package/dist/agent/tools/environment.js.map +1 -0
  181. package/dist/agent/tools/gemini-tools.d.ts +29 -0
  182. package/dist/agent/tools/gemini-tools.d.ts.map +1 -0
  183. package/dist/agent/tools/gemini-tools.js +112 -0
  184. package/dist/agent/tools/gemini-tools.js.map +1 -0
  185. package/dist/agent/tools/index.d.ts +13 -0
  186. package/dist/agent/tools/index.d.ts.map +1 -0
  187. package/dist/agent/tools/index.js +13 -0
  188. package/dist/agent/tools/index.js.map +1 -0
  189. package/dist/agent/tools/openai-tools.d.ts +18 -0
  190. package/dist/agent/tools/openai-tools.d.ts.map +1 -0
  191. package/dist/agent/tools/openai-tools.js +208 -0
  192. package/dist/agent/tools/openai-tools.js.map +1 -0
  193. package/dist/agent/tools/profiles.d.ts +66 -0
  194. package/dist/agent/tools/profiles.d.ts.map +1 -0
  195. package/dist/agent/tools/profiles.js +121 -0
  196. package/dist/agent/tools/profiles.js.map +1 -0
  197. package/dist/agent/tools/registry.d.ts +16 -0
  198. package/dist/agent/tools/registry.d.ts.map +1 -0
  199. package/dist/agent/tools/registry.js +55 -0
  200. package/dist/agent/tools/registry.js.map +1 -0
  201. package/dist/agent/tools/shared.d.ts +10 -0
  202. package/dist/agent/tools/shared.d.ts.map +1 -0
  203. package/dist/agent/tools/shared.js +207 -0
  204. package/dist/agent/tools/shared.js.map +1 -0
  205. package/dist/agent/tools/types.d.ts +55 -0
  206. package/dist/agent/tools/types.d.ts.map +1 -0
  207. package/dist/agent/tools/types.js +14 -0
  208. package/dist/agent/tools/types.js.map +1 -0
  209. package/dist/agent/truncation.d.ts +29 -0
  210. package/dist/agent/truncation.d.ts.map +1 -0
  211. package/dist/agent/truncation.js +76 -0
  212. package/dist/agent/truncation.js.map +1 -0
  213. package/dist/agent/types.d.ts +91 -0
  214. package/dist/agent/types.d.ts.map +1 -0
  215. package/dist/agent/types.js +45 -0
  216. package/dist/agent/types.js.map +1 -0
  217. package/dist/backend/__tests__/direct-backend.test.d.ts +14 -0
  218. package/dist/backend/__tests__/direct-backend.test.d.ts.map +1 -0
  219. package/dist/backend/__tests__/direct-backend.test.js +393 -0
  220. package/dist/backend/__tests__/direct-backend.test.js.map +1 -0
  221. package/dist/backend/__tests__/direct-bootstrap.test.d.ts +7 -0
  222. package/dist/backend/__tests__/direct-bootstrap.test.d.ts.map +1 -0
  223. package/dist/backend/__tests__/direct-bootstrap.test.js +177 -0
  224. package/dist/backend/__tests__/direct-bootstrap.test.js.map +1 -0
  225. package/dist/backend/__tests__/mock-backend.test.d.ts +7 -0
  226. package/dist/backend/__tests__/mock-backend.test.d.ts.map +1 -0
  227. package/dist/backend/__tests__/mock-backend.test.js +273 -0
  228. package/dist/backend/__tests__/mock-backend.test.js.map +1 -0
  229. package/dist/backend/__tests__/parity.test.d.ts +17 -0
  230. package/dist/backend/__tests__/parity.test.d.ts.map +1 -0
  231. package/dist/backend/__tests__/parity.test.js +411 -0
  232. package/dist/backend/__tests__/parity.test.js.map +1 -0
  233. package/dist/backend/direct-backend.d.ts +27 -0
  234. package/dist/backend/direct-backend.d.ts.map +1 -0
  235. package/dist/backend/direct-backend.js +76 -0
  236. package/dist/backend/direct-backend.js.map +1 -0
  237. package/dist/backend/direct-bootstrap.d.ts +29 -0
  238. package/dist/backend/direct-bootstrap.d.ts.map +1 -0
  239. package/dist/backend/direct-bootstrap.js +109 -0
  240. package/dist/backend/direct-bootstrap.js.map +1 -0
  241. package/dist/backend/index.d.ts +11 -0
  242. package/dist/backend/index.d.ts.map +1 -0
  243. package/dist/backend/index.js +8 -0
  244. package/dist/backend/index.js.map +1 -0
  245. package/dist/backend/mock-backend.d.ts +49 -0
  246. package/dist/backend/mock-backend.d.ts.map +1 -0
  247. package/dist/backend/mock-backend.js +87 -0
  248. package/dist/backend/mock-backend.js.map +1 -0
  249. package/dist/backend/types.d.ts +74 -0
  250. package/dist/backend/types.d.ts.map +1 -0
  251. package/dist/backend/types.js +12 -0
  252. package/dist/backend/types.js.map +1 -0
  253. package/dist/config.d.ts +196 -0
  254. package/dist/config.d.ts.map +1 -0
  255. package/dist/config.js +140 -0
  256. package/dist/config.js.map +1 -0
  257. package/dist/context/__tests__/auto-summarizer.test.d.ts +14 -0
  258. package/dist/context/__tests__/auto-summarizer.test.d.ts.map +1 -0
  259. package/dist/context/__tests__/auto-summarizer.test.js +189 -0
  260. package/dist/context/__tests__/auto-summarizer.test.js.map +1 -0
  261. package/dist/context/__tests__/context-cli-command.test.d.ts +7 -0
  262. package/dist/context/__tests__/context-cli-command.test.d.ts.map +1 -0
  263. package/dist/context/__tests__/context-cli-command.test.js +331 -0
  264. package/dist/context/__tests__/context-cli-command.test.js.map +1 -0
  265. package/dist/context/__tests__/pyramid-summary-integration.test.d.ts +2 -0
  266. package/dist/context/__tests__/pyramid-summary-integration.test.d.ts.map +1 -0
  267. package/dist/context/__tests__/pyramid-summary-integration.test.js +533 -0
  268. package/dist/context/__tests__/pyramid-summary-integration.test.js.map +1 -0
  269. package/dist/context/__tests__/summarizer.test.d.ts +2 -0
  270. package/dist/context/__tests__/summarizer.test.d.ts.map +1 -0
  271. package/dist/context/__tests__/summarizer.test.js +189 -0
  272. package/dist/context/__tests__/summarizer.test.js.map +1 -0
  273. package/dist/context/__tests__/summary-cache.test.d.ts +2 -0
  274. package/dist/context/__tests__/summary-cache.test.d.ts.map +1 -0
  275. package/dist/context/__tests__/summary-cache.test.js +214 -0
  276. package/dist/context/__tests__/summary-cache.test.js.map +1 -0
  277. package/dist/context/__tests__/summary-metrics.test.d.ts +2 -0
  278. package/dist/context/__tests__/summary-metrics.test.d.ts.map +1 -0
  279. package/dist/context/__tests__/summary-metrics.test.js +172 -0
  280. package/dist/context/__tests__/summary-metrics.test.js.map +1 -0
  281. package/dist/context/__tests__/summary-types.test.d.ts +2 -0
  282. package/dist/context/__tests__/summary-types.test.d.ts.map +1 -0
  283. package/dist/context/__tests__/summary-types.test.js +130 -0
  284. package/dist/context/__tests__/summary-types.test.js.map +1 -0
  285. package/dist/context/auto-summarizer.d.ts +120 -0
  286. package/dist/context/auto-summarizer.d.ts.map +1 -0
  287. package/dist/context/auto-summarizer.js +91 -0
  288. package/dist/context/auto-summarizer.js.map +1 -0
  289. package/dist/context/cli-command.d.ts +109 -0
  290. package/dist/context/cli-command.d.ts.map +1 -0
  291. package/dist/context/cli-command.js +382 -0
  292. package/dist/context/cli-command.js.map +1 -0
  293. package/dist/context/index.d.ts +8 -0
  294. package/dist/context/index.d.ts.map +1 -0
  295. package/dist/context/index.js +8 -0
  296. package/dist/context/index.js.map +1 -0
  297. package/dist/context/summarizer.d.ts +12 -0
  298. package/dist/context/summarizer.d.ts.map +1 -0
  299. package/dist/context/summarizer.js +105 -0
  300. package/dist/context/summarizer.js.map +1 -0
  301. package/dist/context/summary-cache.d.ts +41 -0
  302. package/dist/context/summary-cache.d.ts.map +1 -0
  303. package/dist/context/summary-cache.js +80 -0
  304. package/dist/context/summary-cache.js.map +1 -0
  305. package/dist/context/summary-engine.d.ts +46 -0
  306. package/dist/context/summary-engine.d.ts.map +1 -0
  307. package/dist/context/summary-engine.js +2 -0
  308. package/dist/context/summary-engine.js.map +1 -0
  309. package/dist/context/summary-metrics.d.ts +75 -0
  310. package/dist/context/summary-metrics.d.ts.map +1 -0
  311. package/dist/context/summary-metrics.js +160 -0
  312. package/dist/context/summary-metrics.js.map +1 -0
  313. package/dist/context/summary-types.d.ts +103 -0
  314. package/dist/context/summary-types.d.ts.map +1 -0
  315. package/dist/context/summary-types.js +39 -0
  316. package/dist/context/summary-types.js.map +1 -0
  317. package/dist/convergence/__tests__/budget.test.d.ts +6 -0
  318. package/dist/convergence/__tests__/budget.test.d.ts.map +1 -0
  319. package/dist/convergence/__tests__/budget.test.js +187 -0
  320. package/dist/convergence/__tests__/budget.test.js.map +1 -0
  321. package/dist/convergence/__tests__/controller.test.d.ts +9 -0
  322. package/dist/convergence/__tests__/controller.test.d.ts.map +1 -0
  323. package/dist/convergence/__tests__/controller.test.js +585 -0
  324. package/dist/convergence/__tests__/controller.test.js.map +1 -0
  325. package/dist/convergence/__tests__/dual-signal.test.d.ts +14 -0
  326. package/dist/convergence/__tests__/dual-signal.test.d.ts.map +1 -0
  327. package/dist/convergence/__tests__/dual-signal.test.js +123 -0
  328. package/dist/convergence/__tests__/dual-signal.test.js.map +1 -0
  329. package/dist/convergence/__tests__/epic46-integration.test.d.ts +15 -0
  330. package/dist/convergence/__tests__/epic46-integration.test.d.ts.map +1 -0
  331. package/dist/convergence/__tests__/epic46-integration.test.js +522 -0
  332. package/dist/convergence/__tests__/epic46-integration.test.js.map +1 -0
  333. package/dist/convergence/__tests__/plateau.test.d.ts +6 -0
  334. package/dist/convergence/__tests__/plateau.test.d.ts.map +1 -0
  335. package/dist/convergence/__tests__/plateau.test.js +163 -0
  336. package/dist/convergence/__tests__/plateau.test.js.map +1 -0
  337. package/dist/convergence/__tests__/remediation.test.d.ts +11 -0
  338. package/dist/convergence/__tests__/remediation.test.d.ts.map +1 -0
  339. package/dist/convergence/__tests__/remediation.test.js +209 -0
  340. package/dist/convergence/__tests__/remediation.test.js.map +1 -0
  341. package/dist/convergence/__tests__/scenario-primary.test.d.ts +13 -0
  342. package/dist/convergence/__tests__/scenario-primary.test.d.ts.map +1 -0
  343. package/dist/convergence/__tests__/scenario-primary.test.js +183 -0
  344. package/dist/convergence/__tests__/scenario-primary.test.js.map +1 -0
  345. package/dist/convergence/budget.d.ts +181 -0
  346. package/dist/convergence/budget.d.ts.map +1 -0
  347. package/dist/convergence/budget.js +218 -0
  348. package/dist/convergence/budget.js.map +1 -0
  349. package/dist/convergence/controller.d.ts +133 -0
  350. package/dist/convergence/controller.d.ts.map +1 -0
  351. package/dist/convergence/controller.js +102 -0
  352. package/dist/convergence/controller.js.map +1 -0
  353. package/dist/convergence/dual-signal.d.ts +73 -0
  354. package/dist/convergence/dual-signal.d.ts.map +1 -0
  355. package/dist/convergence/dual-signal.js +78 -0
  356. package/dist/convergence/dual-signal.js.map +1 -0
  357. package/dist/convergence/index.d.ts +17 -0
  358. package/dist/convergence/index.d.ts.map +1 -0
  359. package/dist/convergence/index.js +11 -0
  360. package/dist/convergence/index.js.map +1 -0
  361. package/dist/convergence/plateau.d.ts +99 -0
  362. package/dist/convergence/plateau.d.ts.map +1 -0
  363. package/dist/convergence/plateau.js +83 -0
  364. package/dist/convergence/plateau.js.map +1 -0
  365. package/dist/convergence/remediation.d.ts +105 -0
  366. package/dist/convergence/remediation.d.ts.map +1 -0
  367. package/dist/convergence/remediation.js +117 -0
  368. package/dist/convergence/remediation.js.map +1 -0
  369. package/dist/events.d.ts +331 -0
  370. package/dist/events.d.ts.map +1 -0
  371. package/dist/events.js +13 -0
  372. package/dist/events.js.map +1 -0
  373. package/dist/factory-command.d.ts +40 -0
  374. package/dist/factory-command.d.ts.map +1 -0
  375. package/dist/factory-command.js +626 -0
  376. package/dist/factory-command.js.map +1 -0
  377. package/dist/factory-command.test.d.ts +8 -0
  378. package/dist/factory-command.test.d.ts.map +1 -0
  379. package/dist/factory-command.test.js +304 -0
  380. package/dist/factory-command.test.js.map +1 -0
  381. package/dist/graph/__tests__/attractor-compliance.test.d.ts +10 -0
  382. package/dist/graph/__tests__/attractor-compliance.test.d.ts.map +1 -0
  383. package/dist/graph/__tests__/attractor-compliance.test.js +766 -0
  384. package/dist/graph/__tests__/attractor-compliance.test.js.map +1 -0
  385. package/dist/graph/__tests__/checkpoint.test.d.ts +8 -0
  386. package/dist/graph/__tests__/checkpoint.test.d.ts.map +1 -0
  387. package/dist/graph/__tests__/checkpoint.test.js +329 -0
  388. package/dist/graph/__tests__/checkpoint.test.js.map +1 -0
  389. package/dist/graph/__tests__/condition-parser.test.d.ts +14 -0
  390. package/dist/graph/__tests__/condition-parser.test.d.ts.map +1 -0
  391. package/dist/graph/__tests__/condition-parser.test.js +406 -0
  392. package/dist/graph/__tests__/condition-parser.test.js.map +1 -0
  393. package/dist/graph/__tests__/context.test.d.ts +14 -0
  394. package/dist/graph/__tests__/context.test.d.ts.map +1 -0
  395. package/dist/graph/__tests__/context.test.js +276 -0
  396. package/dist/graph/__tests__/context.test.js.map +1 -0
  397. package/dist/graph/__tests__/edge-selector-events.test.d.ts +11 -0
  398. package/dist/graph/__tests__/edge-selector-events.test.d.ts.map +1 -0
  399. package/dist/graph/__tests__/edge-selector-events.test.js +184 -0
  400. package/dist/graph/__tests__/edge-selector-events.test.js.map +1 -0
  401. package/dist/graph/__tests__/edge-selector.test.d.ts +6 -0
  402. package/dist/graph/__tests__/edge-selector.test.d.ts.map +1 -0
  403. package/dist/graph/__tests__/edge-selector.test.js +452 -0
  404. package/dist/graph/__tests__/edge-selector.test.js.map +1 -0
  405. package/dist/graph/__tests__/executor-convergence.test.d.ts +12 -0
  406. package/dist/graph/__tests__/executor-convergence.test.d.ts.map +1 -0
  407. package/dist/graph/__tests__/executor-convergence.test.js +432 -0
  408. package/dist/graph/__tests__/executor-convergence.test.js.map +1 -0
  409. package/dist/graph/__tests__/executor-fidelity.test.d.ts +13 -0
  410. package/dist/graph/__tests__/executor-fidelity.test.d.ts.map +1 -0
  411. package/dist/graph/__tests__/executor-fidelity.test.js +335 -0
  412. package/dist/graph/__tests__/executor-fidelity.test.js.map +1 -0
  413. package/dist/graph/__tests__/executor.test.d.ts +14 -0
  414. package/dist/graph/__tests__/executor.test.d.ts.map +1 -0
  415. package/dist/graph/__tests__/executor.test.js +901 -0
  416. package/dist/graph/__tests__/executor.test.js.map +1 -0
  417. package/dist/graph/__tests__/fidelity.test.d.ts +8 -0
  418. package/dist/graph/__tests__/fidelity.test.d.ts.map +1 -0
  419. package/dist/graph/__tests__/fidelity.test.js +135 -0
  420. package/dist/graph/__tests__/fidelity.test.js.map +1 -0
  421. package/dist/graph/__tests__/llm-evaluator.test.d.ts +7 -0
  422. package/dist/graph/__tests__/llm-evaluator.test.d.ts.map +1 -0
  423. package/dist/graph/__tests__/llm-evaluator.test.js +106 -0
  424. package/dist/graph/__tests__/llm-evaluator.test.js.map +1 -0
  425. package/dist/graph/__tests__/parser-chaining.test.d.ts +13 -0
  426. package/dist/graph/__tests__/parser-chaining.test.d.ts.map +1 -0
  427. package/dist/graph/__tests__/parser-chaining.test.js +215 -0
  428. package/dist/graph/__tests__/parser-chaining.test.js.map +1 -0
  429. package/dist/graph/__tests__/parser.test.d.ts +22 -0
  430. package/dist/graph/__tests__/parser.test.d.ts.map +1 -0
  431. package/dist/graph/__tests__/parser.test.js +452 -0
  432. package/dist/graph/__tests__/parser.test.js.map +1 -0
  433. package/dist/graph/__tests__/run-state.test.d.ts +13 -0
  434. package/dist/graph/__tests__/run-state.test.d.ts.map +1 -0
  435. package/dist/graph/__tests__/run-state.test.js +189 -0
  436. package/dist/graph/__tests__/run-state.test.js.map +1 -0
  437. package/dist/graph/__tests__/transformer.test.d.ts +16 -0
  438. package/dist/graph/__tests__/transformer.test.d.ts.map +1 -0
  439. package/dist/graph/__tests__/transformer.test.js +350 -0
  440. package/dist/graph/__tests__/transformer.test.js.map +1 -0
  441. package/dist/graph/__tests__/validator-errors.test.d.ts +15 -0
  442. package/dist/graph/__tests__/validator-errors.test.d.ts.map +1 -0
  443. package/dist/graph/__tests__/validator-errors.test.js +572 -0
  444. package/dist/graph/__tests__/validator-errors.test.js.map +1 -0
  445. package/dist/graph/__tests__/validator-warnings.test.d.ts +15 -0
  446. package/dist/graph/__tests__/validator-warnings.test.d.ts.map +1 -0
  447. package/dist/graph/__tests__/validator-warnings.test.js +363 -0
  448. package/dist/graph/__tests__/validator-warnings.test.js.map +1 -0
  449. package/dist/graph/checkpoint.d.ts +61 -0
  450. package/dist/graph/checkpoint.d.ts.map +1 -0
  451. package/dist/graph/checkpoint.js +80 -0
  452. package/dist/graph/checkpoint.js.map +1 -0
  453. package/dist/graph/condition-parser.d.ts +55 -0
  454. package/dist/graph/condition-parser.d.ts.map +1 -0
  455. package/dist/graph/condition-parser.js +213 -0
  456. package/dist/graph/condition-parser.js.map +1 -0
  457. package/dist/graph/context.d.ts +53 -0
  458. package/dist/graph/context.d.ts.map +1 -0
  459. package/dist/graph/context.js +90 -0
  460. package/dist/graph/context.js.map +1 -0
  461. package/dist/graph/edge-selector.d.ts +74 -0
  462. package/dist/graph/edge-selector.d.ts.map +1 -0
  463. package/dist/graph/edge-selector.js +178 -0
  464. package/dist/graph/edge-selector.js.map +1 -0
  465. package/dist/graph/executor.d.ts +133 -0
  466. package/dist/graph/executor.d.ts.map +1 -0
  467. package/dist/graph/executor.js +787 -0
  468. package/dist/graph/executor.js.map +1 -0
  469. package/dist/graph/fidelity.d.ts +27 -0
  470. package/dist/graph/fidelity.d.ts.map +1 -0
  471. package/dist/graph/fidelity.js +38 -0
  472. package/dist/graph/fidelity.js.map +1 -0
  473. package/dist/graph/index.d.ts +13 -0
  474. package/dist/graph/index.d.ts.map +1 -0
  475. package/dist/graph/index.js +9 -0
  476. package/dist/graph/index.js.map +1 -0
  477. package/dist/graph/llm-evaluator.d.ts +61 -0
  478. package/dist/graph/llm-evaluator.d.ts.map +1 -0
  479. package/dist/graph/llm-evaluator.js +106 -0
  480. package/dist/graph/llm-evaluator.js.map +1 -0
  481. package/dist/graph/parser.d.ts +28 -0
  482. package/dist/graph/parser.d.ts.map +1 -0
  483. package/dist/graph/parser.js +370 -0
  484. package/dist/graph/parser.js.map +1 -0
  485. package/dist/graph/rules/error-rules.d.ts +19 -0
  486. package/dist/graph/rules/error-rules.d.ts.map +1 -0
  487. package/dist/graph/rules/error-rules.js +264 -0
  488. package/dist/graph/rules/error-rules.js.map +1 -0
  489. package/dist/graph/rules/warning-rules.d.ts +7 -0
  490. package/dist/graph/rules/warning-rules.d.ts.map +1 -0
  491. package/dist/graph/rules/warning-rules.js +165 -0
  492. package/dist/graph/rules/warning-rules.js.map +1 -0
  493. package/dist/graph/run-state.d.ts +62 -0
  494. package/dist/graph/run-state.d.ts.map +1 -0
  495. package/dist/graph/run-state.js +79 -0
  496. package/dist/graph/run-state.js.map +1 -0
  497. package/dist/graph/transformer.d.ts +31 -0
  498. package/dist/graph/transformer.d.ts.map +1 -0
  499. package/dist/graph/transformer.js +64 -0
  500. package/dist/graph/transformer.js.map +1 -0
  501. package/dist/graph/types.d.ts +320 -0
  502. package/dist/graph/types.d.ts.map +1 -0
  503. package/dist/graph/types.js +6 -0
  504. package/dist/graph/types.js.map +1 -0
  505. package/dist/graph/validator.d.ts +16 -0
  506. package/dist/graph/validator.d.ts.map +1 -0
  507. package/dist/graph/validator.js +40 -0
  508. package/dist/graph/validator.js.map +1 -0
  509. package/dist/handlers/__tests__/codergen-handler.test.d.ts +14 -0
  510. package/dist/handlers/__tests__/codergen-handler.test.d.ts.map +1 -0
  511. package/dist/handlers/__tests__/codergen-handler.test.js +442 -0
  512. package/dist/handlers/__tests__/codergen-handler.test.js.map +1 -0
  513. package/dist/handlers/__tests__/fan-in.test.d.ts +14 -0
  514. package/dist/handlers/__tests__/fan-in.test.d.ts.map +1 -0
  515. package/dist/handlers/__tests__/fan-in.test.js +399 -0
  516. package/dist/handlers/__tests__/fan-in.test.js.map +1 -0
  517. package/dist/handlers/__tests__/join-policy.test.d.ts +9 -0
  518. package/dist/handlers/__tests__/join-policy.test.d.ts.map +1 -0
  519. package/dist/handlers/__tests__/join-policy.test.js +201 -0
  520. package/dist/handlers/__tests__/join-policy.test.js.map +1 -0
  521. package/dist/handlers/__tests__/manager-loop.test.d.ts +14 -0
  522. package/dist/handlers/__tests__/manager-loop.test.d.ts.map +1 -0
  523. package/dist/handlers/__tests__/manager-loop.test.js +322 -0
  524. package/dist/handlers/__tests__/manager-loop.test.js.map +1 -0
  525. package/dist/handlers/__tests__/parallel-events.test.d.ts +12 -0
  526. package/dist/handlers/__tests__/parallel-events.test.d.ts.map +1 -0
  527. package/dist/handlers/__tests__/parallel-events.test.js +252 -0
  528. package/dist/handlers/__tests__/parallel-events.test.js.map +1 -0
  529. package/dist/handlers/__tests__/parallel-handler.test.d.ts +14 -0
  530. package/dist/handlers/__tests__/parallel-handler.test.d.ts.map +1 -0
  531. package/dist/handlers/__tests__/parallel-handler.test.js +337 -0
  532. package/dist/handlers/__tests__/parallel-handler.test.js.map +1 -0
  533. package/dist/handlers/__tests__/parallel-join.test.d.ts +9 -0
  534. package/dist/handlers/__tests__/parallel-join.test.d.ts.map +1 -0
  535. package/dist/handlers/__tests__/parallel-join.test.js +267 -0
  536. package/dist/handlers/__tests__/parallel-join.test.js.map +1 -0
  537. package/dist/handlers/__tests__/registry.test.d.ts +14 -0
  538. package/dist/handlers/__tests__/registry.test.d.ts.map +1 -0
  539. package/dist/handlers/__tests__/registry.test.js +315 -0
  540. package/dist/handlers/__tests__/registry.test.js.map +1 -0
  541. package/dist/handlers/__tests__/subgraph-events.test.d.ts +10 -0
  542. package/dist/handlers/__tests__/subgraph-events.test.d.ts.map +1 -0
  543. package/dist/handlers/__tests__/subgraph-events.test.js +189 -0
  544. package/dist/handlers/__tests__/subgraph-events.test.js.map +1 -0
  545. package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts +14 -0
  546. package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts.map +1 -0
  547. package/dist/handlers/__tests__/subgraph-inheritance.test.js +267 -0
  548. package/dist/handlers/__tests__/subgraph-inheritance.test.js.map +1 -0
  549. package/dist/handlers/__tests__/subgraph.test.d.ts +14 -0
  550. package/dist/handlers/__tests__/subgraph.test.d.ts.map +1 -0
  551. package/dist/handlers/__tests__/subgraph.test.js +369 -0
  552. package/dist/handlers/__tests__/subgraph.test.js.map +1 -0
  553. package/dist/handlers/__tests__/tool-handler.test.d.ts +11 -0
  554. package/dist/handlers/__tests__/tool-handler.test.d.ts.map +1 -0
  555. package/dist/handlers/__tests__/tool-handler.test.js +184 -0
  556. package/dist/handlers/__tests__/tool-handler.test.js.map +1 -0
  557. package/dist/handlers/__tests__/tool-scenario.test.d.ts +12 -0
  558. package/dist/handlers/__tests__/tool-scenario.test.d.ts.map +1 -0
  559. package/dist/handlers/__tests__/tool-scenario.test.js +222 -0
  560. package/dist/handlers/__tests__/tool-scenario.test.js.map +1 -0
  561. package/dist/handlers/__tests__/wait-human-handler.test.d.ts +11 -0
  562. package/dist/handlers/__tests__/wait-human-handler.test.d.ts.map +1 -0
  563. package/dist/handlers/__tests__/wait-human-handler.test.js +251 -0
  564. package/dist/handlers/__tests__/wait-human-handler.test.js.map +1 -0
  565. package/dist/handlers/codergen-handler.d.ts +83 -0
  566. package/dist/handlers/codergen-handler.d.ts.map +1 -0
  567. package/dist/handlers/codergen-handler.js +152 -0
  568. package/dist/handlers/codergen-handler.js.map +1 -0
  569. package/dist/handlers/conditional.d.ts +15 -0
  570. package/dist/handlers/conditional.d.ts.map +1 -0
  571. package/dist/handlers/conditional.js +16 -0
  572. package/dist/handlers/conditional.js.map +1 -0
  573. package/dist/handlers/exit.d.ts +10 -0
  574. package/dist/handlers/exit.d.ts.map +1 -0
  575. package/dist/handlers/exit.js +11 -0
  576. package/dist/handlers/exit.js.map +1 -0
  577. package/dist/handlers/fan-in.d.ts +74 -0
  578. package/dist/handlers/fan-in.d.ts.map +1 -0
  579. package/dist/handlers/fan-in.js +191 -0
  580. package/dist/handlers/fan-in.js.map +1 -0
  581. package/dist/handlers/index.d.ts +29 -0
  582. package/dist/handlers/index.d.ts.map +1 -0
  583. package/dist/handlers/index.js +22 -0
  584. package/dist/handlers/index.js.map +1 -0
  585. package/dist/handlers/join-policy.d.ts +117 -0
  586. package/dist/handlers/join-policy.d.ts.map +1 -0
  587. package/dist/handlers/join-policy.js +129 -0
  588. package/dist/handlers/join-policy.js.map +1 -0
  589. package/dist/handlers/manager-loop.d.ts +54 -0
  590. package/dist/handlers/manager-loop.d.ts.map +1 -0
  591. package/dist/handlers/manager-loop.js +177 -0
  592. package/dist/handlers/manager-loop.js.map +1 -0
  593. package/dist/handlers/parallel.d.ts +31 -0
  594. package/dist/handlers/parallel.d.ts.map +1 -0
  595. package/dist/handlers/parallel.js +362 -0
  596. package/dist/handlers/parallel.js.map +1 -0
  597. package/dist/handlers/registry.d.ts +75 -0
  598. package/dist/handlers/registry.d.ts.map +1 -0
  599. package/dist/handlers/registry.js +132 -0
  600. package/dist/handlers/registry.js.map +1 -0
  601. package/dist/handlers/start.d.ts +10 -0
  602. package/dist/handlers/start.d.ts.map +1 -0
  603. package/dist/handlers/start.js +11 -0
  604. package/dist/handlers/start.js.map +1 -0
  605. package/dist/handlers/subgraph.d.ts +46 -0
  606. package/dist/handlers/subgraph.d.ts.map +1 -0
  607. package/dist/handlers/subgraph.js +178 -0
  608. package/dist/handlers/subgraph.js.map +1 -0
  609. package/dist/handlers/tool.d.ts +36 -0
  610. package/dist/handlers/tool.d.ts.map +1 -0
  611. package/dist/handlers/tool.js +99 -0
  612. package/dist/handlers/tool.js.map +1 -0
  613. package/dist/handlers/types.d.ts +98 -0
  614. package/dist/handlers/types.d.ts.map +1 -0
  615. package/dist/handlers/types.js +6 -0
  616. package/dist/handlers/types.js.map +1 -0
  617. package/dist/handlers/wait-human.d.ts +65 -0
  618. package/dist/handlers/wait-human.d.ts.map +1 -0
  619. package/dist/handlers/wait-human.js +124 -0
  620. package/dist/handlers/wait-human.js.map +1 -0
  621. package/dist/index.d.ts +24 -0
  622. package/dist/index.d.ts.map +1 -0
  623. package/dist/index.js +33 -0
  624. package/dist/index.js.map +1 -0
  625. package/dist/llm/__tests__/client.test.d.ts +2 -0
  626. package/dist/llm/__tests__/client.test.d.ts.map +1 -0
  627. package/dist/llm/__tests__/client.test.js +198 -0
  628. package/dist/llm/__tests__/client.test.js.map +1 -0
  629. package/dist/llm/__tests__/types.test.d.ts +2 -0
  630. package/dist/llm/__tests__/types.test.d.ts.map +1 -0
  631. package/dist/llm/__tests__/types.test.js +289 -0
  632. package/dist/llm/__tests__/types.test.js.map +1 -0
  633. package/dist/llm/client.d.ts +19 -0
  634. package/dist/llm/client.d.ts.map +1 -0
  635. package/dist/llm/client.js +50 -0
  636. package/dist/llm/client.js.map +1 -0
  637. package/dist/llm/index.d.ts +6 -0
  638. package/dist/llm/index.d.ts.map +1 -0
  639. package/dist/llm/index.js +6 -0
  640. package/dist/llm/index.js.map +1 -0
  641. package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts +2 -0
  642. package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts.map +1 -0
  643. package/dist/llm/middleware/__tests__/cost-tracking.test.js +73 -0
  644. package/dist/llm/middleware/__tests__/cost-tracking.test.js.map +1 -0
  645. package/dist/llm/middleware/__tests__/logging.test.d.ts +2 -0
  646. package/dist/llm/middleware/__tests__/logging.test.d.ts.map +1 -0
  647. package/dist/llm/middleware/__tests__/logging.test.js +127 -0
  648. package/dist/llm/middleware/__tests__/logging.test.js.map +1 -0
  649. package/dist/llm/middleware/__tests__/retry.test.d.ts +2 -0
  650. package/dist/llm/middleware/__tests__/retry.test.d.ts.map +1 -0
  651. package/dist/llm/middleware/__tests__/retry.test.js +126 -0
  652. package/dist/llm/middleware/__tests__/retry.test.js.map +1 -0
  653. package/dist/llm/middleware/cost-tracking.d.ts +8 -0
  654. package/dist/llm/middleware/cost-tracking.d.ts.map +1 -0
  655. package/dist/llm/middleware/cost-tracking.js +34 -0
  656. package/dist/llm/middleware/cost-tracking.js.map +1 -0
  657. package/dist/llm/middleware/index.d.ts +5 -0
  658. package/dist/llm/middleware/index.d.ts.map +1 -0
  659. package/dist/llm/middleware/index.js +6 -0
  660. package/dist/llm/middleware/index.js.map +1 -0
  661. package/dist/llm/middleware/logging.d.ts +6 -0
  662. package/dist/llm/middleware/logging.d.ts.map +1 -0
  663. package/dist/llm/middleware/logging.js +54 -0
  664. package/dist/llm/middleware/logging.js.map +1 -0
  665. package/dist/llm/middleware/retry.d.ts +14 -0
  666. package/dist/llm/middleware/retry.d.ts.map +1 -0
  667. package/dist/llm/middleware/retry.js +40 -0
  668. package/dist/llm/middleware/retry.js.map +1 -0
  669. package/dist/llm/middleware/types.d.ts +23 -0
  670. package/dist/llm/middleware/types.d.ts.map +1 -0
  671. package/dist/llm/middleware/types.js +24 -0
  672. package/dist/llm/middleware/types.js.map +1 -0
  673. package/dist/llm/model-registry.d.ts +14 -0
  674. package/dist/llm/model-registry.d.ts.map +1 -0
  675. package/dist/llm/model-registry.js +32 -0
  676. package/dist/llm/model-registry.js.map +1 -0
  677. package/dist/llm/providers/__tests__/anthropic.test.d.ts +2 -0
  678. package/dist/llm/providers/__tests__/anthropic.test.d.ts.map +1 -0
  679. package/dist/llm/providers/__tests__/anthropic.test.js +412 -0
  680. package/dist/llm/providers/__tests__/anthropic.test.js.map +1 -0
  681. package/dist/llm/providers/__tests__/gemini.test.d.ts +2 -0
  682. package/dist/llm/providers/__tests__/gemini.test.d.ts.map +1 -0
  683. package/dist/llm/providers/__tests__/gemini.test.js +591 -0
  684. package/dist/llm/providers/__tests__/gemini.test.js.map +1 -0
  685. package/dist/llm/providers/__tests__/openai.test.d.ts +2 -0
  686. package/dist/llm/providers/__tests__/openai.test.d.ts.map +1 -0
  687. package/dist/llm/providers/__tests__/openai.test.js +546 -0
  688. package/dist/llm/providers/__tests__/openai.test.js.map +1 -0
  689. package/dist/llm/providers/anthropic.d.ts +25 -0
  690. package/dist/llm/providers/anthropic.d.ts.map +1 -0
  691. package/dist/llm/providers/anthropic.js +315 -0
  692. package/dist/llm/providers/anthropic.js.map +1 -0
  693. package/dist/llm/providers/gemini.d.ts +28 -0
  694. package/dist/llm/providers/gemini.d.ts.map +1 -0
  695. package/dist/llm/providers/gemini.js +429 -0
  696. package/dist/llm/providers/gemini.js.map +1 -0
  697. package/dist/llm/providers/index.d.ts +7 -0
  698. package/dist/llm/providers/index.d.ts.map +1 -0
  699. package/dist/llm/providers/index.js +4 -0
  700. package/dist/llm/providers/index.js.map +1 -0
  701. package/dist/llm/providers/openai.d.ts +28 -0
  702. package/dist/llm/providers/openai.d.ts.map +1 -0
  703. package/dist/llm/providers/openai.js +426 -0
  704. package/dist/llm/providers/openai.js.map +1 -0
  705. package/dist/llm/types.d.ts +127 -0
  706. package/dist/llm/types.d.ts.map +1 -0
  707. package/dist/llm/types.js +21 -0
  708. package/dist/llm/types.js.map +1 -0
  709. package/dist/persistence/__tests__/factory-queries.test.d.ts +9 -0
  710. package/dist/persistence/__tests__/factory-queries.test.d.ts.map +1 -0
  711. package/dist/persistence/__tests__/factory-queries.test.js +372 -0
  712. package/dist/persistence/__tests__/factory-queries.test.js.map +1 -0
  713. package/dist/persistence/__tests__/factory-schema.test.d.ts +6 -0
  714. package/dist/persistence/__tests__/factory-schema.test.d.ts.map +1 -0
  715. package/dist/persistence/__tests__/factory-schema.test.js +105 -0
  716. package/dist/persistence/__tests__/factory-schema.test.js.map +1 -0
  717. package/dist/persistence/factory-queries.d.ts +204 -0
  718. package/dist/persistence/factory-queries.d.ts.map +1 -0
  719. package/dist/persistence/factory-queries.js +186 -0
  720. package/dist/persistence/factory-queries.js.map +1 -0
  721. package/dist/persistence/factory-schema.d.ts +16 -0
  722. package/dist/persistence/factory-schema.d.ts.map +1 -0
  723. package/dist/persistence/factory-schema.js +89 -0
  724. package/dist/persistence/factory-schema.js.map +1 -0
  725. package/dist/scenarios/__tests__/cli-command-list.test.d.ts +7 -0
  726. package/dist/scenarios/__tests__/cli-command-list.test.d.ts.map +1 -0
  727. package/dist/scenarios/__tests__/cli-command-list.test.js +237 -0
  728. package/dist/scenarios/__tests__/cli-command-list.test.js.map +1 -0
  729. package/dist/scenarios/__tests__/cli-command.test.d.ts +11 -0
  730. package/dist/scenarios/__tests__/cli-command.test.d.ts.map +1 -0
  731. package/dist/scenarios/__tests__/cli-command.test.js +275 -0
  732. package/dist/scenarios/__tests__/cli-command.test.js.map +1 -0
  733. package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts +15 -0
  734. package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts.map +1 -0
  735. package/dist/scenarios/__tests__/integrity-pipeline.test.js +318 -0
  736. package/dist/scenarios/__tests__/integrity-pipeline.test.js.map +1 -0
  737. package/dist/scenarios/__tests__/runner-twins.test.d.ts +13 -0
  738. package/dist/scenarios/__tests__/runner-twins.test.d.ts.map +1 -0
  739. package/dist/scenarios/__tests__/runner-twins.test.js +205 -0
  740. package/dist/scenarios/__tests__/runner-twins.test.js.map +1 -0
  741. package/dist/scenarios/__tests__/scorer.test.d.ts +11 -0
  742. package/dist/scenarios/__tests__/scorer.test.d.ts.map +1 -0
  743. package/dist/scenarios/__tests__/scorer.test.js +225 -0
  744. package/dist/scenarios/__tests__/scorer.test.js.map +1 -0
  745. package/dist/scenarios/__tests__/scoring-integration.test.d.ts +8 -0
  746. package/dist/scenarios/__tests__/scoring-integration.test.d.ts.map +1 -0
  747. package/dist/scenarios/__tests__/scoring-integration.test.js +178 -0
  748. package/dist/scenarios/__tests__/scoring-integration.test.js.map +1 -0
  749. package/dist/scenarios/__tests__/store.test.d.ts +5 -0
  750. package/dist/scenarios/__tests__/store.test.d.ts.map +1 -0
  751. package/dist/scenarios/__tests__/store.test.js +169 -0
  752. package/dist/scenarios/__tests__/store.test.js.map +1 -0
  753. package/dist/scenarios/cli-command.d.ts +20 -0
  754. package/dist/scenarios/cli-command.d.ts.map +1 -0
  755. package/dist/scenarios/cli-command.js +66 -0
  756. package/dist/scenarios/cli-command.js.map +1 -0
  757. package/dist/scenarios/index.d.ts +11 -0
  758. package/dist/scenarios/index.d.ts.map +1 -0
  759. package/dist/scenarios/index.js +11 -0
  760. package/dist/scenarios/index.js.map +1 -0
  761. package/dist/scenarios/runner.d.ts +64 -0
  762. package/dist/scenarios/runner.d.ts.map +1 -0
  763. package/dist/scenarios/runner.js +205 -0
  764. package/dist/scenarios/runner.js.map +1 -0
  765. package/dist/scenarios/scorer.d.ts +69 -0
  766. package/dist/scenarios/scorer.d.ts.map +1 -0
  767. package/dist/scenarios/scorer.js +66 -0
  768. package/dist/scenarios/scorer.js.map +1 -0
  769. package/dist/scenarios/store.d.ts +33 -0
  770. package/dist/scenarios/store.d.ts.map +1 -0
  771. package/dist/scenarios/store.js +92 -0
  772. package/dist/scenarios/store.js.map +1 -0
  773. package/dist/scenarios/types.d.ts +40 -0
  774. package/dist/scenarios/types.d.ts.map +1 -0
  775. package/dist/scenarios/types.js +5 -0
  776. package/dist/scenarios/types.js.map +1 -0
  777. package/dist/stylesheet/__tests__/stylesheet.test.d.ts +17 -0
  778. package/dist/stylesheet/__tests__/stylesheet.test.d.ts.map +1 -0
  779. package/dist/stylesheet/__tests__/stylesheet.test.js +368 -0
  780. package/dist/stylesheet/__tests__/stylesheet.test.js.map +1 -0
  781. package/dist/stylesheet/parser.d.ts +44 -0
  782. package/dist/stylesheet/parser.d.ts.map +1 -0
  783. package/dist/stylesheet/parser.js +190 -0
  784. package/dist/stylesheet/parser.js.map +1 -0
  785. package/dist/stylesheet/resolver.d.ts +38 -0
  786. package/dist/stylesheet/resolver.d.ts.map +1 -0
  787. package/dist/stylesheet/resolver.js +96 -0
  788. package/dist/stylesheet/resolver.js.map +1 -0
  789. package/dist/templates/__tests__/templates.test.d.ts +7 -0
  790. package/dist/templates/__tests__/templates.test.d.ts.map +1 -0
  791. package/dist/templates/__tests__/templates.test.js +92 -0
  792. package/dist/templates/__tests__/templates.test.js.map +1 -0
  793. package/dist/templates/index.d.ts +38 -0
  794. package/dist/templates/index.d.ts.map +1 -0
  795. package/dist/templates/index.js +153 -0
  796. package/dist/templates/index.js.map +1 -0
  797. package/dist/twins/__tests__/docker-compose.test.d.ts +13 -0
  798. package/dist/twins/__tests__/docker-compose.test.d.ts.map +1 -0
  799. package/dist/twins/__tests__/docker-compose.test.js +247 -0
  800. package/dist/twins/__tests__/docker-compose.test.js.map +1 -0
  801. package/dist/twins/__tests__/health-monitor.test.d.ts +19 -0
  802. package/dist/twins/__tests__/health-monitor.test.d.ts.map +1 -0
  803. package/dist/twins/__tests__/health-monitor.test.js +301 -0
  804. package/dist/twins/__tests__/health-monitor.test.js.map +1 -0
  805. package/dist/twins/__tests__/integration/e2e.test.d.ts +18 -0
  806. package/dist/twins/__tests__/integration/e2e.test.d.ts.map +1 -0
  807. package/dist/twins/__tests__/integration/e2e.test.js +146 -0
  808. package/dist/twins/__tests__/integration/e2e.test.js.map +1 -0
  809. package/dist/twins/__tests__/integration/health-monitor-integration.test.d.ts +16 -0
  810. package/dist/twins/__tests__/integration/health-monitor-integration.test.d.ts.map +1 -0
  811. package/dist/twins/__tests__/integration/health-monitor-integration.test.js +183 -0
  812. package/dist/twins/__tests__/integration/health-monitor-integration.test.js.map +1 -0
  813. package/dist/twins/__tests__/integration/helpers.d.ts +32 -0
  814. package/dist/twins/__tests__/integration/helpers.d.ts.map +1 -0
  815. package/dist/twins/__tests__/integration/helpers.js +67 -0
  816. package/dist/twins/__tests__/integration/helpers.js.map +1 -0
  817. package/dist/twins/__tests__/integration/lifecycle.test.d.ts +14 -0
  818. package/dist/twins/__tests__/integration/lifecycle.test.d.ts.map +1 -0
  819. package/dist/twins/__tests__/integration/lifecycle.test.js +127 -0
  820. package/dist/twins/__tests__/integration/lifecycle.test.js.map +1 -0
  821. package/dist/twins/__tests__/integration/persistence-integration.test.d.ts +14 -0
  822. package/dist/twins/__tests__/integration/persistence-integration.test.d.ts.map +1 -0
  823. package/dist/twins/__tests__/integration/persistence-integration.test.js +132 -0
  824. package/dist/twins/__tests__/integration/persistence-integration.test.js.map +1 -0
  825. package/dist/twins/__tests__/persistence.test.d.ts +10 -0
  826. package/dist/twins/__tests__/persistence.test.d.ts.map +1 -0
  827. package/dist/twins/__tests__/persistence.test.js +300 -0
  828. package/dist/twins/__tests__/persistence.test.js.map +1 -0
  829. package/dist/twins/__tests__/registry.test.d.ts +7 -0
  830. package/dist/twins/__tests__/registry.test.d.ts.map +1 -0
  831. package/dist/twins/__tests__/registry.test.js +282 -0
  832. package/dist/twins/__tests__/registry.test.js.map +1 -0
  833. package/dist/twins/__tests__/run-state.test.d.ts +9 -0
  834. package/dist/twins/__tests__/run-state.test.d.ts.map +1 -0
  835. package/dist/twins/__tests__/run-state.test.js +112 -0
  836. package/dist/twins/__tests__/run-state.test.js.map +1 -0
  837. package/dist/twins/__tests__/templates-cli.test.d.ts +10 -0
  838. package/dist/twins/__tests__/templates-cli.test.d.ts.map +1 -0
  839. package/dist/twins/__tests__/templates-cli.test.js +187 -0
  840. package/dist/twins/__tests__/templates-cli.test.js.map +1 -0
  841. package/dist/twins/__tests__/templates.test.d.ts +7 -0
  842. package/dist/twins/__tests__/templates.test.d.ts.map +1 -0
  843. package/dist/twins/__tests__/templates.test.js +87 -0
  844. package/dist/twins/__tests__/templates.test.js.map +1 -0
  845. package/dist/twins/__tests__/twins-cli.test.d.ts +11 -0
  846. package/dist/twins/__tests__/twins-cli.test.d.ts.map +1 -0
  847. package/dist/twins/__tests__/twins-cli.test.js +365 -0
  848. package/dist/twins/__tests__/twins-cli.test.js.map +1 -0
  849. package/dist/twins/docker-compose.d.ts +48 -0
  850. package/dist/twins/docker-compose.d.ts.map +1 -0
  851. package/dist/twins/docker-compose.js +172 -0
  852. package/dist/twins/docker-compose.js.map +1 -0
  853. package/dist/twins/health-monitor.d.ts +36 -0
  854. package/dist/twins/health-monitor.d.ts.map +1 -0
  855. package/dist/twins/health-monitor.js +114 -0
  856. package/dist/twins/health-monitor.js.map +1 -0
  857. package/dist/twins/index.d.ts +22 -0
  858. package/dist/twins/index.d.ts.map +1 -0
  859. package/dist/twins/index.js +19 -0
  860. package/dist/twins/index.js.map +1 -0
  861. package/dist/twins/persistence.d.ts +100 -0
  862. package/dist/twins/persistence.d.ts.map +1 -0
  863. package/dist/twins/persistence.js +120 -0
  864. package/dist/twins/persistence.js.map +1 -0
  865. package/dist/twins/registry.d.ts +40 -0
  866. package/dist/twins/registry.d.ts.map +1 -0
  867. package/dist/twins/registry.js +175 -0
  868. package/dist/twins/registry.js.map +1 -0
  869. package/dist/twins/run-state.d.ts +47 -0
  870. package/dist/twins/run-state.d.ts.map +1 -0
  871. package/dist/twins/run-state.js +70 -0
  872. package/dist/twins/run-state.js.map +1 -0
  873. package/dist/twins/schema.d.ts +40 -0
  874. package/dist/twins/schema.d.ts.map +1 -0
  875. package/dist/twins/schema.js +46 -0
  876. package/dist/twins/schema.js.map +1 -0
  877. package/dist/twins/templates.d.ts +27 -0
  878. package/dist/twins/templates.d.ts.map +1 -0
  879. package/dist/twins/templates.js +63 -0
  880. package/dist/twins/templates.js.map +1 -0
  881. package/dist/twins/types.d.ts +55 -0
  882. package/dist/twins/types.d.ts.map +1 -0
  883. package/dist/twins/types.js +26 -0
  884. package/dist/twins/types.js.map +1 -0
  885. package/package.json +28 -0
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Subgraph handler — executes a referenced .dot graph file as a nested sub-pipeline.
3
+ *
4
+ * Story 50-5.
5
+ *
6
+ * Reads: `node.attrs['graph_file']` — relative or absolute path to a .dot file
7
+ * Reads: `context.getNumber('subgraph._depth', 0)` — current nesting depth
8
+ * Writes: `subOutcome.contextUpdates` merged back into parent context
9
+ */
10
+ import type { NodeHandler, IHandlerRegistry } from './types.js';
11
+ import type { TypedEventBus } from '@substrate-ai/core';
12
+ import type { FactoryEvents } from '../events.js';
13
+ /**
14
+ * Configuration for `createSubgraphHandler`.
15
+ */
16
+ export interface SubgraphHandlerOptions {
17
+ /** Registry used to resolve node handlers inside the subgraph. */
18
+ handlerRegistry: IHandlerRegistry;
19
+ /** Base directory for resolving relative graph_file paths. */
20
+ baseDir: string;
21
+ /** Maximum nested subgraph depth (inclusive). Default: 5. */
22
+ maxDepth?: number;
23
+ /**
24
+ * Injectable file loader for testability.
25
+ * Defaults to `(fp) => readFile(fp, 'utf-8')`.
26
+ */
27
+ graphFileLoader?: (filePath: string) => Promise<string>;
28
+ /**
29
+ * Root directory for sub-executor checkpoint files.
30
+ * Defaults to `os.tmpdir()`.
31
+ */
32
+ logsRoot?: string;
33
+ /** Optional event bus for emitting subgraph lifecycle events (story 50-9). */
34
+ eventBus?: TypedEventBus<FactoryEvents>;
35
+ /** Optional run identifier threaded to event payloads (story 50-9). */
36
+ runId?: string;
37
+ }
38
+ /**
39
+ * Factory function that creates a handler for `type="subgraph"` nodes.
40
+ *
41
+ * Each subgraph node references an external `.dot` file, loads and validates
42
+ * it, then executes it as a nested sub-pipeline. Parent context is seeded into
43
+ * the sub-executor and context updates from the subgraph are propagated back.
44
+ */
45
+ export declare function createSubgraphHandler(options: SubgraphHandlerOptions): NodeHandler;
46
+ //# sourceMappingURL=subgraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subgraph.d.ts","sourceRoot":"","sources":["../../src/handlers/subgraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAMjD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,eAAe,EAAE,gBAAgB,CAAA;IACjC,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACvC,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAyBD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,WAAW,CA2IlF"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Subgraph handler — executes a referenced .dot graph file as a nested sub-pipeline.
3
+ *
4
+ * Story 50-5.
5
+ *
6
+ * Reads: `node.attrs['graph_file']` — relative or absolute path to a .dot file
7
+ * Reads: `context.getNumber('subgraph._depth', 0)` — current nesting depth
8
+ * Writes: `subOutcome.contextUpdates` merged back into parent context
9
+ */
10
+ import path from 'node:path';
11
+ import { readFile } from 'node:fs/promises';
12
+ import { tmpdir } from 'node:os';
13
+ import { randomUUID } from 'node:crypto';
14
+ import { parseGraph } from '../graph/parser.js';
15
+ import { createGraphExecutor } from '../graph/executor.js';
16
+ import { createValidator } from '../graph/validator.js';
17
+ import { parseStylesheet } from '../stylesheet/parser.js';
18
+ // ---------------------------------------------------------------------------
19
+ // Status conversion helper
20
+ // ---------------------------------------------------------------------------
21
+ /**
22
+ * Converts the sub-executor's `events.ts:StageStatus` back to the handler
23
+ * return type `types.ts:OutcomeStatus`.
24
+ *
25
+ * Mapping:
26
+ * 'SUCCESS' → 'SUCCESS'
27
+ * 'PARTIAL_SUCCESS'→ 'PARTIAL_SUCCESS'
28
+ * all others → 'FAILURE' (covers 'FAIL', 'RETRY', 'SKIPPED')
29
+ */
30
+ function denormalizeStatus(status) {
31
+ if (status === 'SUCCESS')
32
+ return 'SUCCESS';
33
+ if (status === 'PARTIAL_SUCCESS')
34
+ return 'PARTIAL_SUCCESS';
35
+ return 'FAILURE';
36
+ }
37
+ // ---------------------------------------------------------------------------
38
+ // createSubgraphHandler
39
+ // ---------------------------------------------------------------------------
40
+ /**
41
+ * Factory function that creates a handler for `type="subgraph"` nodes.
42
+ *
43
+ * Each subgraph node references an external `.dot` file, loads and validates
44
+ * it, then executes it as a nested sub-pipeline. Parent context is seeded into
45
+ * the sub-executor and context updates from the subgraph are propagated back.
46
+ */
47
+ export function createSubgraphHandler(options) {
48
+ return async (node, context, graph) => {
49
+ // Step 1: Validate graph_file attribute
50
+ const graphFile = node.attrs?.['graph_file'];
51
+ if (!graphFile) {
52
+ return {
53
+ status: 'FAILURE',
54
+ failureReason: `Subgraph node "${node.id}" is missing required attribute graph_file`,
55
+ };
56
+ }
57
+ // Step 2: Depth guard
58
+ const currentDepth = context.getNumber('subgraph._depth', 0);
59
+ const maxDepth = options.maxDepth ?? 5;
60
+ if (currentDepth >= maxDepth) {
61
+ return {
62
+ status: 'FAILURE',
63
+ failureReason: `Subgraph depth limit exceeded (max ${maxDepth}): node "${node.id}"`,
64
+ };
65
+ }
66
+ // Step 3: Resolve file path
67
+ const filePath = path.isAbsolute(graphFile)
68
+ ? graphFile
69
+ : path.join(options.baseDir, graphFile);
70
+ // Step 4: Load file
71
+ const loader = options.graphFileLoader ?? ((fp) => readFile(fp, 'utf-8'));
72
+ let dotSource;
73
+ try {
74
+ dotSource = await loader(filePath);
75
+ }
76
+ catch (err) {
77
+ const msg = err instanceof Error ? err.message : String(err);
78
+ return {
79
+ status: 'FAILURE',
80
+ failureReason: `Subgraph node "${node.id}": failed to load "${filePath}": ${msg}`,
81
+ };
82
+ }
83
+ // Step 5: Parse
84
+ let subgraph;
85
+ try {
86
+ subgraph = parseGraph(dotSource);
87
+ }
88
+ catch (err) {
89
+ const msg = err instanceof Error ? err.message : String(err);
90
+ return {
91
+ status: 'FAILURE',
92
+ failureReason: `Subgraph node "${node.id}": failed to parse "${filePath}": ${msg}`,
93
+ };
94
+ }
95
+ // Step 6: Validate
96
+ try {
97
+ createValidator().validateOrRaise(subgraph);
98
+ }
99
+ catch (err) {
100
+ const msg = err instanceof Error ? err.message : String(err);
101
+ return {
102
+ status: 'FAILURE',
103
+ failureReason: `Subgraph node "${node.id}": validation failed for "${filePath}": ${msg}`,
104
+ };
105
+ }
106
+ // Read runId from context (written by executor, story 50-9 AC4)
107
+ const runId = context.getString('__runId', options.runId ?? 'unknown');
108
+ // Emit graph:subgraph-started before sub-executor runs (story 50-9 AC2)
109
+ options.eventBus?.emit('graph:subgraph-started', {
110
+ runId,
111
+ nodeId: node.id,
112
+ graphFile: filePath,
113
+ depth: currentDepth,
114
+ });
115
+ const subgraphStart = Date.now();
116
+ // Step 7: Execute
117
+ // Parse the parent graph's stylesheet to pass as inherited rules to the sub-executor.
118
+ // `graph` here is the parent graph (third argument of the NodeHandler signature).
119
+ const parentStylesheet = graph.modelStylesheet
120
+ ? parseStylesheet(graph.modelStylesheet)
121
+ : undefined;
122
+ const subConfig = {
123
+ runId: randomUUID(),
124
+ logsRoot: options.logsRoot ?? tmpdir(),
125
+ handlerRegistry: options.handlerRegistry,
126
+ initialContext: { ...context.snapshot(), 'subgraph._depth': currentDepth + 1 },
127
+ // Pass eventBus through so nested graph events flow on the same bus (story 50-9 AC2)
128
+ ...(options.eventBus !== undefined ? { eventBus: options.eventBus } : {}),
129
+ // Only include inheritedStylesheet when defined (exactOptionalPropertyTypes: true)
130
+ ...(parentStylesheet !== undefined ? { inheritedStylesheet: parentStylesheet } : {}),
131
+ };
132
+ let subOutcome;
133
+ try {
134
+ subOutcome = await createGraphExecutor().run(subgraph, subConfig);
135
+ }
136
+ catch (err) {
137
+ const msg = err instanceof Error ? err.message : String(err);
138
+ const durationMs = Date.now() - subgraphStart;
139
+ // Emit subgraph-completed on the failure/exception path (story 50-9 AC2)
140
+ options.eventBus?.emit('graph:subgraph-completed', {
141
+ runId,
142
+ nodeId: node.id,
143
+ graphFile: filePath,
144
+ depth: currentDepth,
145
+ status: 'FAIL',
146
+ durationMs,
147
+ });
148
+ return {
149
+ status: 'FAILURE',
150
+ failureReason: `Subgraph node "${node.id}": executor threw: ${msg}`,
151
+ };
152
+ }
153
+ const durationMs = Date.now() - subgraphStart;
154
+ // Emit graph:subgraph-completed after sub-executor returns (story 50-9 AC2)
155
+ options.eventBus?.emit('graph:subgraph-completed', {
156
+ runId,
157
+ nodeId: node.id,
158
+ graphFile: filePath,
159
+ depth: currentDepth,
160
+ status: subOutcome.status === 'SUCCESS' ? 'SUCCESS'
161
+ : subOutcome.status === 'PARTIAL_SUCCESS' ? 'PARTIAL_SUCCESS'
162
+ : 'FAIL',
163
+ durationMs,
164
+ });
165
+ // Step 8: Merge context updates back to parent
166
+ if (subOutcome.contextUpdates) {
167
+ context.applyUpdates(subOutcome.contextUpdates);
168
+ }
169
+ // Step 9: Return translated outcome (only include optional fields when present)
170
+ return {
171
+ status: denormalizeStatus(subOutcome.status),
172
+ ...(subOutcome.contextUpdates !== undefined && { contextUpdates: subOutcome.contextUpdates }),
173
+ ...(subOutcome.notes !== undefined && { notes: subOutcome.notes }),
174
+ ...(subOutcome.failureReason !== undefined && { failureReason: subOutcome.failureReason }),
175
+ };
176
+ };
177
+ }
178
+ //# sourceMappingURL=subgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../src/handlers/subgraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAoCzD,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,MAAc;IACvC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC1C,IAAI,MAAM,KAAK,iBAAiB;QAAE,OAAO,iBAAiB,CAAA;IAC1D,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,OAAO,KAAK,EAAE,IAAe,EAAE,OAAsB,EAAE,KAAY,EAAoB,EAAE;QACvF,wCAAwC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAA;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,aAAa,EAAE,kBAAkB,IAAI,CAAC,EAAE,4CAA4C;aACrF,CAAA;QACH,CAAC;QAED,sBAAsB;QACtB,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;QAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAA;QACtC,IAAI,YAAY,IAAI,QAAQ,EAAE,CAAC;YAC7B,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,aAAa,EAAE,sCAAsC,QAAQ,YAAY,IAAI,CAAC,EAAE,GAAG;aACpF,CAAA;QACH,CAAC;QAED,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YACzC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAEzC,oBAAoB;QACpB,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;QACzE,IAAI,SAAiB,CAAA;QACrB,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC5D,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,aAAa,EAAE,kBAAkB,IAAI,CAAC,EAAE,sBAAsB,QAAQ,MAAM,GAAG,EAAE;aAClF,CAAA;QACH,CAAC;QAED,gBAAgB;QAChB,IAAI,QAAe,CAAA;QACnB,IAAI,CAAC;YACH,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;QAClC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC5D,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,aAAa,EAAE,kBAAkB,IAAI,CAAC,EAAE,uBAAuB,QAAQ,MAAM,GAAG,EAAE;aACnF,CAAA;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,CAAC;YACH,eAAe,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAC7C,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC5D,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,aAAa,EAAE,kBAAkB,IAAI,CAAC,EAAE,6BAA6B,QAAQ,MAAM,GAAG,EAAE;aACzF,CAAA;QACH,CAAC;QAED,gEAAgE;QAChE,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC,CAAA;QAEtE,wEAAwE;QACxE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,EAAE;YAC/C,KAAK;YACL,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,YAAY;SACpB,CAAC,CAAA;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEhC,kBAAkB;QAClB,sFAAsF;QACtF,kFAAkF;QAClF,MAAM,gBAAgB,GAAG,KAAK,CAAC,eAAe;YAC5C,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC;YACxC,CAAC,CAAC,SAAS,CAAA;QACb,MAAM,SAAS,GAAG;YAChB,KAAK,EAAE,UAAU,EAAE;YACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM,EAAE;YACtC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,iBAAiB,EAAE,YAAY,GAAG,CAAC,EAAE;YAC9E,qFAAqF;YACrF,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,mFAAmF;YACnF,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrF,CAAA;QAED,IAAI,UAAgH,CAAA;QACpH,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,mBAAmB,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QACnE,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAA;YAC7C,yEAAyE;YACzE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,0BAA0B,EAAE;gBACjD,KAAK;gBACL,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,SAAS,EAAE,QAAQ;gBACnB,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,MAAM;gBACd,UAAU;aACX,CAAC,CAAA;YACF,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,aAAa,EAAE,kBAAkB,IAAI,CAAC,EAAE,sBAAsB,GAAG,EAAE;aACpE,CAAA;QACH,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAA;QAE7C,4EAA4E;QAC5E,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,0BAA0B,EAAE;YACjD,KAAK;YACL,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;gBACjD,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,iBAAiB;oBAC7D,CAAC,CAAC,MAAM;YACV,UAAU;SACX,CAAC,CAAA;QAEF,+CAA+C;QAC/C,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;YAC9B,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;QACjD,CAAC;QAED,gFAAgF;QAChF,OAAO;YACL,MAAM,EAAE,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC;YAC5C,GAAG,CAAC,UAAU,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,cAAc,EAAE,CAAC;YAC7F,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;YAClE,GAAG,CAAC,UAAU,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,aAAa,EAAE,CAAC;SAC3F,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Tool handler — executes a shell command and returns stdout in context.
3
+ *
4
+ * AC1: Successful command → SUCCESS with stdout in context as `{node.id}.output`
5
+ * AC2: Failing command → FAILURE with stderr as failureReason
6
+ * AC3: Working directory resolved from context (falls back to defaultWorkingDir or cwd)
7
+ *
8
+ * Extended in story 44-5: if stdout is a valid ScenarioRunResult (detected via duck-typing),
9
+ * the handler computes a satisfaction score and writes `satisfaction_score` to context
10
+ * instead of `{node.id}.output`.
11
+ *
12
+ * Story 42-11, extended in story 44-5.
13
+ */
14
+ import type { NodeHandler } from './types.js';
15
+ /**
16
+ * Configuration options for the tool handler factory.
17
+ */
18
+ export interface ToolHandlerOptions {
19
+ /** Override the default working directory (used when `workingDirectory` is absent from context). */
20
+ defaultWorkingDir?: string;
21
+ /** Override the satisfaction threshold passed to computeSatisfactionScore() (default 0.8 when omitted). */
22
+ satisfactionThreshold?: number;
23
+ }
24
+ /**
25
+ * Create a tool node handler that executes a shell command specified in
26
+ * `node.toolCommand` and captures the output into context.
27
+ *
28
+ * @param options - Optional configuration (defaultWorkingDir for testing).
29
+ * @returns A `NodeHandler` that:
30
+ * 1. Resolves the working directory from context (or falls back to defaultWorkingDir/cwd).
31
+ * 2. Spawns the shell command from `node.toolCommand`.
32
+ * 3. Returns SUCCESS with stdout trimmed and stored as `{node.id}.output`.
33
+ * 4. Returns FAILURE with stderr as `failureReason` on non-zero exit code.
34
+ */
35
+ export declare function createToolHandler(options?: ToolHandlerOptions): NodeHandler;
36
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/handlers/tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AA6B7C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oGAAoG;IACpG,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,2GAA2G;IAC3G,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAqD3E"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Tool handler — executes a shell command and returns stdout in context.
3
+ *
4
+ * AC1: Successful command → SUCCESS with stdout in context as `{node.id}.output`
5
+ * AC2: Failing command → FAILURE with stderr as failureReason
6
+ * AC3: Working directory resolved from context (falls back to defaultWorkingDir or cwd)
7
+ *
8
+ * Extended in story 44-5: if stdout is a valid ScenarioRunResult (detected via duck-typing),
9
+ * the handler computes a satisfaction score and writes `satisfaction_score` to context
10
+ * instead of `{node.id}.output`.
11
+ *
12
+ * Story 42-11, extended in story 44-5.
13
+ */
14
+ import { spawn } from 'child_process';
15
+ import { computeSatisfactionScore } from '../scenarios/scorer.js';
16
+ // ---------------------------------------------------------------------------
17
+ // ScenarioRunResult detection
18
+ // ---------------------------------------------------------------------------
19
+ /**
20
+ * Duck-typing guard: returns true if `parsed` conforms to the ScenarioRunResult
21
+ * shape (has summary.total and summary.passed as numbers).
22
+ *
23
+ * Detection is intentionally command-agnostic — it operates on the JSON shape
24
+ * alone, not on the value of `node.toolCommand`.
25
+ */
26
+ function isScenarioRunResult(parsed) {
27
+ if (typeof parsed !== 'object' || parsed === null)
28
+ return false;
29
+ const p = parsed;
30
+ const summary = p['summary'];
31
+ return (typeof summary?.['total'] === 'number' &&
32
+ typeof summary?.['passed'] === 'number');
33
+ }
34
+ // ---------------------------------------------------------------------------
35
+ // Handler factory
36
+ // ---------------------------------------------------------------------------
37
+ /**
38
+ * Create a tool node handler that executes a shell command specified in
39
+ * `node.toolCommand` and captures the output into context.
40
+ *
41
+ * @param options - Optional configuration (defaultWorkingDir for testing).
42
+ * @returns A `NodeHandler` that:
43
+ * 1. Resolves the working directory from context (or falls back to defaultWorkingDir/cwd).
44
+ * 2. Spawns the shell command from `node.toolCommand`.
45
+ * 3. Returns SUCCESS with stdout trimmed and stored as `{node.id}.output`.
46
+ * 4. Returns FAILURE with stderr as `failureReason` on non-zero exit code.
47
+ */
48
+ export function createToolHandler(options) {
49
+ return (node, context, _graph) => {
50
+ const command = node.toolCommand;
51
+ const cwd = context.getString('workingDirectory', options?.defaultWorkingDir ?? process.cwd());
52
+ return new Promise((resolve) => {
53
+ const child = spawn(command, [], { cwd, shell: true });
54
+ let stdoutBuf = '';
55
+ let stderrBuf = '';
56
+ child.stdout.on('data', (chunk) => {
57
+ stdoutBuf += chunk.toString();
58
+ });
59
+ child.stderr.on('data', (chunk) => {
60
+ stderrBuf += chunk.toString();
61
+ });
62
+ child.on('close', (code) => {
63
+ if (code === 0) {
64
+ // Attempt to detect ScenarioRunResult JSON via duck-typing.
65
+ // If detected, write satisfaction_score to context (not {node.id}.output).
66
+ let parsed;
67
+ try {
68
+ parsed = JSON.parse(stdoutBuf.trim());
69
+ }
70
+ catch {
71
+ // Not JSON — fall through to default output handling
72
+ }
73
+ if (isScenarioRunResult(parsed)) {
74
+ const scored = computeSatisfactionScore(parsed, options?.satisfactionThreshold);
75
+ resolve({
76
+ status: 'SUCCESS',
77
+ contextUpdates: { satisfaction_score: scored.score },
78
+ });
79
+ }
80
+ else {
81
+ resolve({
82
+ status: 'SUCCESS',
83
+ contextUpdates: {
84
+ [`${node.id}.output`]: stdoutBuf.trim(),
85
+ },
86
+ });
87
+ }
88
+ }
89
+ else {
90
+ resolve({
91
+ status: 'FAILURE',
92
+ failureReason: stderrBuf.trim() || `Command exited with code ${code}`,
93
+ });
94
+ }
95
+ });
96
+ });
97
+ };
98
+ }
99
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/handlers/tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Core type definitions for the handler registry.
3
+ * Story 42-9.
4
+ */
5
+ import type { GraphNode, Graph, IGraphContext, Outcome } from '../graph/types.js';
6
+ import type { TypedEventBus } from '@substrate-ai/core';
7
+ import type { FactoryEvents } from '../events.js';
8
+ /**
9
+ * A function that handles a single graph node during execution.
10
+ * Must be async — the executor always awaits handlers.
11
+ */
12
+ export type NodeHandler = (node: GraphNode, context: IGraphContext, graph: Graph) => Promise<Outcome>;
13
+ /**
14
+ * Interface for the handler registry that maps node types and shapes to
15
+ * handler functions. The executor uses this to dispatch nodes without being
16
+ * coupled to individual handler implementations.
17
+ */
18
+ export interface IHandlerRegistry {
19
+ /**
20
+ * Register a handler for the given node type.
21
+ * Overwrites any previously registered handler for the same type.
22
+ */
23
+ register(type: string, handler: NodeHandler): void;
24
+ /**
25
+ * Register a shape-to-type mapping so that nodes lacking an explicit type
26
+ * can still be resolved via their DOT shape attribute.
27
+ * Overwrites any previously registered mapping for the same shape.
28
+ */
29
+ registerShape(shape: string, type: string): void;
30
+ /**
31
+ * Set the default handler, used when no type or shape match is found.
32
+ */
33
+ setDefault(handler: NodeHandler): void;
34
+ /**
35
+ * Resolve the handler for the given node using the 3-step priority chain:
36
+ * 1. Explicit type match
37
+ * 2. Shape-based fallback
38
+ * 3. Default handler (throws if not set)
39
+ */
40
+ resolve(node: GraphNode): NodeHandler;
41
+ }
42
+ /**
43
+ * Result of a single branch execution inside a parallel node.
44
+ * Written into `parallel.results` by the parallel handler; consumed by the
45
+ * fan-in handler (story 50-2) for candidate ranking.
46
+ */
47
+ export interface ParallelBranchResult {
48
+ /** The branch start node ID (outgoing edge target from the parallel node). */
49
+ nodeId: string;
50
+ /** Outcome status returned by the branch handler. */
51
+ status: string;
52
+ /** Snapshot of the branch's isolated context after execution. */
53
+ contextSnapshot: Record<string, unknown>;
54
+ /** Populated when status is 'FAILURE' (or a failure-class string). */
55
+ failureReason?: string;
56
+ }
57
+ /**
58
+ * Canonical result type stored in `parallel.results` by the parallel handler.
59
+ * This is the cross-story contract between parallel.ts (producer) and
60
+ * fan-in.ts (consumer). The parallel handler bridges from the internal
61
+ * join-policy BranchResult format into this shape.
62
+ *
63
+ * Fields branch_id, status, context_updates, score, failure_reason are the
64
+ * fan-in consumer interface. Fields index, outcome, contextSnapshot, error
65
+ * are the join-policy producer fields preserved through the bridge.
66
+ */
67
+ export interface FanInBranchResult {
68
+ /** Integer branch identifier assigned by the parallel handler. */
69
+ branch_id: number;
70
+ /** Terminal outcome status for this branch. */
71
+ status: string;
72
+ /** Context updates to merge when this branch wins. */
73
+ context_updates?: Record<string, unknown> | undefined;
74
+ /** Optional numeric quality score (higher is better). */
75
+ score?: number | undefined;
76
+ /** Human-readable failure description. */
77
+ failure_reason?: string | undefined;
78
+ /** Zero-based index (join-policy field, present when produced by parallel handler). */
79
+ index?: number | undefined;
80
+ /** Raw outcome from join-policy (present when produced by parallel handler). */
81
+ outcome?: string | undefined;
82
+ /** Shallow snapshot of branch context at completion. */
83
+ contextSnapshot?: Record<string, unknown> | undefined;
84
+ /** Error string from join-policy. */
85
+ error?: string | undefined;
86
+ }
87
+ /**
88
+ * Options for the parallel handler factory function.
89
+ */
90
+ export interface ParallelHandlerOptions {
91
+ /** Registry used to resolve and invoke branch node handlers. */
92
+ handlerRegistry: IHandlerRegistry;
93
+ /** Optional event bus for emitting parallel lifecycle events (story 50-9). */
94
+ eventBus?: TypedEventBus<FactoryEvents>;
95
+ /** Optional run identifier threaded to event payloads (story 50-9). */
96
+ runId?: string;
97
+ }
98
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/handlers/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAErG;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;IAClD;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAChD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;IACtC;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,CAAA;CACtC;AAMD;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAA;IACd,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAA;IACjB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IACrD,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IACrD,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,eAAe,EAAE,gBAAgB,CAAA;IACjC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACvC,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Core type definitions for the handler registry.
3
+ * Story 42-9.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/handlers/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * wait.human handler — pauses graph execution for human input at decision points.
3
+ *
4
+ * AC4: Accelerator key parsing from edge labels (`[Y] Yes` → `{ key: 'Y', label: 'Yes' }`)
5
+ * AC5: Returns SUCCESS with preferredLabel matching human selection and context update
6
+ *
7
+ * Story 42-11.
8
+ */
9
+ import type { GraphNode, Graph } from '../graph/types.js';
10
+ import type { NodeHandler } from './types.js';
11
+ /**
12
+ * A single choice presented to the human at a wait.human gate.
13
+ */
14
+ export interface Choice {
15
+ /** Single-character accelerator key (uppercased). */
16
+ key: string;
17
+ /** Human-readable label text (without the `[X]` prefix). */
18
+ label: string;
19
+ }
20
+ /**
21
+ * Configuration options for the wait.human handler factory.
22
+ */
23
+ export interface WaitHumanHandlerOptions {
24
+ /**
25
+ * Inject a custom prompt function for testability.
26
+ * Receives the node label (question header) and the list of choices.
27
+ * Must resolve with the full edge label string (e.g., `"[Y] Yes"`).
28
+ * Defaults to a readline-based CLI prompt.
29
+ */
30
+ promptFn?: (nodeLabel: string, choices: Choice[]) => Promise<string>;
31
+ }
32
+ /**
33
+ * Parse an edge label into a `Choice` with an accelerator key.
34
+ *
35
+ * - Labels matching `/^\[([A-Za-z0-9])\]\s*(.*)$/` use the bracketed char as key
36
+ * and the remaining text as the label.
37
+ * - Labels without the `[X]` prefix fall back to the first character of the label
38
+ * (uppercased) as the key, and the full label string as the label text.
39
+ *
40
+ * @param edgeLabel - The raw edge label string from the DOT graph.
41
+ * @returns `{ key, label }` — key is always uppercased.
42
+ */
43
+ export declare function parseAcceleratorKey(edgeLabel: string): Choice;
44
+ /**
45
+ * Derive the list of choices for a wait.human node by inspecting outgoing edges.
46
+ *
47
+ * Filters `graph.edges` where `edge.fromNode === node.id` and `edge.label` is
48
+ * non-empty, then maps each edge label through `parseAcceleratorKey`.
49
+ *
50
+ * @param node - The wait.human graph node.
51
+ * @param graph - The full graph (used to read edge labels).
52
+ * @returns Ordered array of choices derived from outgoing edge labels.
53
+ */
54
+ export declare function deriveChoices(node: GraphNode, graph: Graph): Choice[];
55
+ /**
56
+ * Create a wait.human node handler that pauses execution for human input.
57
+ *
58
+ * @param options - Optional configuration (inject `promptFn` for testing).
59
+ * @returns A `NodeHandler` that:
60
+ * 1. Derives choices from outgoing edge labels via `deriveChoices`.
61
+ * 2. Calls `promptFn(node.label, choices)` and awaits the selected label.
62
+ * 3. Returns `{ status: 'SUCCESS', preferredLabel, contextUpdates: { '{node.id}.choice': label } }`.
63
+ */
64
+ export declare function createWaitHumanHandler(options?: WaitHumanHandlerOptions): NodeHandler;
65
+ //# sourceMappingURL=wait-human.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-human.d.ts","sourceRoot":"","sources":["../../src/handlers/wait-human.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAqC,MAAM,mBAAmB,CAAA;AAC5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM7C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAA;IACX,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CACrE;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAY7D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAIrE;AAwDD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,WAAW,CAkBrF"}