@substrate-ai/factory 0.20.1 → 0.20.3

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 (486) hide show
  1. package/README.md +39 -0
  2. package/package.json +6 -3
  3. package/dist/__tests__/config.test.d.ts +0 -11
  4. package/dist/__tests__/config.test.d.ts.map +0 -1
  5. package/dist/__tests__/config.test.js +0 -215
  6. package/dist/__tests__/config.test.js.map +0 -1
  7. package/dist/__tests__/factory-run-command.test.d.ts +0 -12
  8. package/dist/__tests__/factory-run-command.test.d.ts.map +0 -1
  9. package/dist/__tests__/factory-run-command.test.js +0 -454
  10. package/dist/__tests__/factory-run-command.test.js.map +0 -1
  11. package/dist/__tests__/factory-validate-command.test.d.ts +0 -15
  12. package/dist/__tests__/factory-validate-command.test.d.ts.map +0 -1
  13. package/dist/__tests__/factory-validate-command.test.js +0 -339
  14. package/dist/__tests__/factory-validate-command.test.js.map +0 -1
  15. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts +0 -72
  16. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts.map +0 -1
  17. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js +0 -121
  18. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js.map +0 -1
  19. package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts +0 -28
  20. package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts.map +0 -1
  21. package/dist/__tests__/fixtures/llm-edge-routing.dot.js +0 -55
  22. package/dist/__tests__/fixtures/llm-edge-routing.dot.js.map +0 -1
  23. package/dist/__tests__/fixtures/manager-loop.dot.d.ts +0 -34
  24. package/dist/__tests__/fixtures/manager-loop.dot.d.ts.map +0 -1
  25. package/dist/__tests__/fixtures/manager-loop.dot.js +0 -61
  26. package/dist/__tests__/fixtures/manager-loop.dot.js.map +0 -1
  27. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts +0 -42
  28. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts.map +0 -1
  29. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js +0 -118
  30. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js.map +0 -1
  31. package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts +0 -35
  32. package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts.map +0 -1
  33. package/dist/__tests__/fixtures/subgraph-parent.dot.js +0 -69
  34. package/dist/__tests__/fixtures/subgraph-parent.dot.js.map +0 -1
  35. package/dist/__tests__/integration/advanced-graph-events.test.d.ts +0 -19
  36. package/dist/__tests__/integration/advanced-graph-events.test.d.ts.map +0 -1
  37. package/dist/__tests__/integration/advanced-graph-events.test.js +0 -288
  38. package/dist/__tests__/integration/advanced-graph-events.test.js.map +0 -1
  39. package/dist/__tests__/integration/checkpoint-resume.test.d.ts +0 -10
  40. package/dist/__tests__/integration/checkpoint-resume.test.d.ts.map +0 -1
  41. package/dist/__tests__/integration/checkpoint-resume.test.js +0 -125
  42. package/dist/__tests__/integration/checkpoint-resume.test.js.map +0 -1
  43. package/dist/__tests__/integration/conditional-pipeline.test.d.ts +0 -10
  44. package/dist/__tests__/integration/conditional-pipeline.test.d.ts.map +0 -1
  45. package/dist/__tests__/integration/conditional-pipeline.test.js +0 -106
  46. package/dist/__tests__/integration/conditional-pipeline.test.js.map +0 -1
  47. package/dist/__tests__/integration/convergence-validation.test.d.ts +0 -14
  48. package/dist/__tests__/integration/convergence-validation.test.d.ts.map +0 -1
  49. package/dist/__tests__/integration/convergence-validation.test.js +0 -449
  50. package/dist/__tests__/integration/convergence-validation.test.js.map +0 -1
  51. package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts +0 -12
  52. package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts.map +0 -1
  53. package/dist/__tests__/integration/epic44-coverage-gate.test.js +0 -58
  54. package/dist/__tests__/integration/epic44-coverage-gate.test.js.map +0 -1
  55. package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts +0 -11
  56. package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts.map +0 -1
  57. package/dist/__tests__/integration/epic45-coverage-gate.test.js +0 -64
  58. package/dist/__tests__/integration/epic45-coverage-gate.test.js.map +0 -1
  59. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts +0 -2
  60. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts.map +0 -1
  61. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js +0 -285
  62. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js.map +0 -1
  63. package/dist/__tests__/integration/events.test.d.ts +0 -8
  64. package/dist/__tests__/integration/events.test.d.ts.map +0 -1
  65. package/dist/__tests__/integration/events.test.js +0 -194
  66. package/dist/__tests__/integration/events.test.js.map +0 -1
  67. package/dist/__tests__/integration/graphs.d.ts +0 -59
  68. package/dist/__tests__/integration/graphs.d.ts.map +0 -1
  69. package/dist/__tests__/integration/graphs.js +0 -164
  70. package/dist/__tests__/integration/graphs.js.map +0 -1
  71. package/dist/__tests__/integration/helpers.d.ts +0 -127
  72. package/dist/__tests__/integration/helpers.d.ts.map +0 -1
  73. package/dist/__tests__/integration/helpers.js +0 -167
  74. package/dist/__tests__/integration/helpers.js.map +0 -1
  75. package/dist/__tests__/integration/integrity.test.d.ts +0 -8
  76. package/dist/__tests__/integration/integrity.test.d.ts.map +0 -1
  77. package/dist/__tests__/integration/integrity.test.js +0 -198
  78. package/dist/__tests__/integration/integrity.test.js.map +0 -1
  79. package/dist/__tests__/integration/llm-edge-routing.test.d.ts +0 -21
  80. package/dist/__tests__/integration/llm-edge-routing.test.d.ts.map +0 -1
  81. package/dist/__tests__/integration/llm-edge-routing.test.js +0 -341
  82. package/dist/__tests__/integration/llm-edge-routing.test.js.map +0 -1
  83. package/dist/__tests__/integration/manager-loop.test.d.ts +0 -24
  84. package/dist/__tests__/integration/manager-loop.test.d.ts.map +0 -1
  85. package/dist/__tests__/integration/manager-loop.test.js +0 -276
  86. package/dist/__tests__/integration/manager-loop.test.js.map +0 -1
  87. package/dist/__tests__/integration/multi-type-graph.test.d.ts +0 -10
  88. package/dist/__tests__/integration/multi-type-graph.test.d.ts.map +0 -1
  89. package/dist/__tests__/integration/multi-type-graph.test.js +0 -100
  90. package/dist/__tests__/integration/multi-type-graph.test.js.map +0 -1
  91. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts +0 -22
  92. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts.map +0 -1
  93. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js +0 -515
  94. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js.map +0 -1
  95. package/dist/__tests__/integration/persistence.test.d.ts +0 -8
  96. package/dist/__tests__/integration/persistence.test.d.ts.map +0 -1
  97. package/dist/__tests__/integration/persistence.test.js +0 -129
  98. package/dist/__tests__/integration/persistence.test.js.map +0 -1
  99. package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts +0 -16
  100. package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts.map +0 -1
  101. package/dist/__tests__/integration/pipeline-templates-integration.test.js +0 -171
  102. package/dist/__tests__/integration/pipeline-templates-integration.test.js.map +0 -1
  103. package/dist/__tests__/integration/scenario-pipeline.test.d.ts +0 -11
  104. package/dist/__tests__/integration/scenario-pipeline.test.d.ts.map +0 -1
  105. package/dist/__tests__/integration/scenario-pipeline.test.js +0 -243
  106. package/dist/__tests__/integration/scenario-pipeline.test.js.map +0 -1
  107. package/dist/__tests__/integration/stylesheet-application.test.d.ts +0 -12
  108. package/dist/__tests__/integration/stylesheet-application.test.d.ts.map +0 -1
  109. package/dist/__tests__/integration/stylesheet-application.test.js +0 -119
  110. package/dist/__tests__/integration/stylesheet-application.test.js.map +0 -1
  111. package/dist/__tests__/integration/subgraph-execution.test.d.ts +0 -24
  112. package/dist/__tests__/integration/subgraph-execution.test.d.ts.map +0 -1
  113. package/dist/__tests__/integration/subgraph-execution.test.js +0 -291
  114. package/dist/__tests__/integration/subgraph-execution.test.js.map +0 -1
  115. package/dist/__tests__/integration/validation-errors.test.d.ts +0 -8
  116. package/dist/__tests__/integration/validation-errors.test.d.ts.map +0 -1
  117. package/dist/__tests__/integration/validation-errors.test.js +0 -150
  118. package/dist/__tests__/integration/validation-errors.test.js.map +0 -1
  119. package/dist/agent/__tests__/loop-detection.test.d.ts +0 -2
  120. package/dist/agent/__tests__/loop-detection.test.d.ts.map +0 -1
  121. package/dist/agent/__tests__/loop-detection.test.js +0 -236
  122. package/dist/agent/__tests__/loop-detection.test.js.map +0 -1
  123. package/dist/agent/__tests__/loop.test.d.ts +0 -2
  124. package/dist/agent/__tests__/loop.test.d.ts.map +0 -1
  125. package/dist/agent/__tests__/loop.test.js +0 -868
  126. package/dist/agent/__tests__/loop.test.js.map +0 -1
  127. package/dist/agent/__tests__/truncation.test.d.ts +0 -2
  128. package/dist/agent/__tests__/truncation.test.d.ts.map +0 -1
  129. package/dist/agent/__tests__/truncation.test.js +0 -276
  130. package/dist/agent/__tests__/truncation.test.js.map +0 -1
  131. package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts +0 -6
  132. package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts.map +0 -1
  133. package/dist/agent/tools/__tests__/anthropic-tools.test.js +0 -49
  134. package/dist/agent/tools/__tests__/anthropic-tools.test.js.map +0 -1
  135. package/dist/agent/tools/__tests__/environment.test.d.ts +0 -6
  136. package/dist/agent/tools/__tests__/environment.test.d.ts.map +0 -1
  137. package/dist/agent/tools/__tests__/environment.test.js +0 -33
  138. package/dist/agent/tools/__tests__/environment.test.js.map +0 -1
  139. package/dist/agent/tools/__tests__/gemini-tools.test.d.ts +0 -6
  140. package/dist/agent/tools/__tests__/gemini-tools.test.d.ts.map +0 -1
  141. package/dist/agent/tools/__tests__/gemini-tools.test.js +0 -98
  142. package/dist/agent/tools/__tests__/gemini-tools.test.js.map +0 -1
  143. package/dist/agent/tools/__tests__/openai-tools.test.d.ts +0 -6
  144. package/dist/agent/tools/__tests__/openai-tools.test.d.ts.map +0 -1
  145. package/dist/agent/tools/__tests__/openai-tools.test.js +0 -53
  146. package/dist/agent/tools/__tests__/openai-tools.test.js.map +0 -1
  147. package/dist/agent/tools/__tests__/patch.test.d.ts +0 -6
  148. package/dist/agent/tools/__tests__/patch.test.d.ts.map +0 -1
  149. package/dist/agent/tools/__tests__/patch.test.js +0 -116
  150. package/dist/agent/tools/__tests__/patch.test.js.map +0 -1
  151. package/dist/agent/tools/__tests__/profiles.test.d.ts +0 -6
  152. package/dist/agent/tools/__tests__/profiles.test.d.ts.map +0 -1
  153. package/dist/agent/tools/__tests__/profiles.test.js +0 -125
  154. package/dist/agent/tools/__tests__/profiles.test.js.map +0 -1
  155. package/dist/agent/tools/__tests__/registry.test.d.ts +0 -6
  156. package/dist/agent/tools/__tests__/registry.test.d.ts.map +0 -1
  157. package/dist/agent/tools/__tests__/registry.test.js +0 -94
  158. package/dist/agent/tools/__tests__/registry.test.js.map +0 -1
  159. package/dist/agent/tools/__tests__/shared.test.d.ts +0 -6
  160. package/dist/agent/tools/__tests__/shared.test.d.ts.map +0 -1
  161. package/dist/agent/tools/__tests__/shared.test.js +0 -131
  162. package/dist/agent/tools/__tests__/shared.test.js.map +0 -1
  163. package/dist/backend/__tests__/direct-backend.test.d.ts +0 -14
  164. package/dist/backend/__tests__/direct-backend.test.d.ts.map +0 -1
  165. package/dist/backend/__tests__/direct-backend.test.js +0 -393
  166. package/dist/backend/__tests__/direct-backend.test.js.map +0 -1
  167. package/dist/backend/__tests__/direct-bootstrap.test.d.ts +0 -7
  168. package/dist/backend/__tests__/direct-bootstrap.test.d.ts.map +0 -1
  169. package/dist/backend/__tests__/direct-bootstrap.test.js +0 -177
  170. package/dist/backend/__tests__/direct-bootstrap.test.js.map +0 -1
  171. package/dist/backend/__tests__/mock-backend.test.d.ts +0 -7
  172. package/dist/backend/__tests__/mock-backend.test.d.ts.map +0 -1
  173. package/dist/backend/__tests__/mock-backend.test.js +0 -273
  174. package/dist/backend/__tests__/mock-backend.test.js.map +0 -1
  175. package/dist/backend/__tests__/parity.test.d.ts +0 -17
  176. package/dist/backend/__tests__/parity.test.d.ts.map +0 -1
  177. package/dist/backend/__tests__/parity.test.js +0 -411
  178. package/dist/backend/__tests__/parity.test.js.map +0 -1
  179. package/dist/context/__tests__/auto-summarizer.test.d.ts +0 -14
  180. package/dist/context/__tests__/auto-summarizer.test.d.ts.map +0 -1
  181. package/dist/context/__tests__/auto-summarizer.test.js +0 -189
  182. package/dist/context/__tests__/auto-summarizer.test.js.map +0 -1
  183. package/dist/context/__tests__/context-cli-command.test.d.ts +0 -7
  184. package/dist/context/__tests__/context-cli-command.test.d.ts.map +0 -1
  185. package/dist/context/__tests__/context-cli-command.test.js +0 -331
  186. package/dist/context/__tests__/context-cli-command.test.js.map +0 -1
  187. package/dist/context/__tests__/pyramid-summary-integration.test.d.ts +0 -2
  188. package/dist/context/__tests__/pyramid-summary-integration.test.d.ts.map +0 -1
  189. package/dist/context/__tests__/pyramid-summary-integration.test.js +0 -533
  190. package/dist/context/__tests__/pyramid-summary-integration.test.js.map +0 -1
  191. package/dist/context/__tests__/summarizer.test.d.ts +0 -2
  192. package/dist/context/__tests__/summarizer.test.d.ts.map +0 -1
  193. package/dist/context/__tests__/summarizer.test.js +0 -189
  194. package/dist/context/__tests__/summarizer.test.js.map +0 -1
  195. package/dist/context/__tests__/summary-cache.test.d.ts +0 -2
  196. package/dist/context/__tests__/summary-cache.test.d.ts.map +0 -1
  197. package/dist/context/__tests__/summary-cache.test.js +0 -214
  198. package/dist/context/__tests__/summary-cache.test.js.map +0 -1
  199. package/dist/context/__tests__/summary-metrics.test.d.ts +0 -2
  200. package/dist/context/__tests__/summary-metrics.test.d.ts.map +0 -1
  201. package/dist/context/__tests__/summary-metrics.test.js +0 -172
  202. package/dist/context/__tests__/summary-metrics.test.js.map +0 -1
  203. package/dist/context/__tests__/summary-types.test.d.ts +0 -2
  204. package/dist/context/__tests__/summary-types.test.d.ts.map +0 -1
  205. package/dist/context/__tests__/summary-types.test.js +0 -130
  206. package/dist/context/__tests__/summary-types.test.js.map +0 -1
  207. package/dist/convergence/__tests__/budget.test.d.ts +0 -6
  208. package/dist/convergence/__tests__/budget.test.d.ts.map +0 -1
  209. package/dist/convergence/__tests__/budget.test.js +0 -187
  210. package/dist/convergence/__tests__/budget.test.js.map +0 -1
  211. package/dist/convergence/__tests__/controller.test.d.ts +0 -9
  212. package/dist/convergence/__tests__/controller.test.d.ts.map +0 -1
  213. package/dist/convergence/__tests__/controller.test.js +0 -585
  214. package/dist/convergence/__tests__/controller.test.js.map +0 -1
  215. package/dist/convergence/__tests__/dual-signal.test.d.ts +0 -14
  216. package/dist/convergence/__tests__/dual-signal.test.d.ts.map +0 -1
  217. package/dist/convergence/__tests__/dual-signal.test.js +0 -123
  218. package/dist/convergence/__tests__/dual-signal.test.js.map +0 -1
  219. package/dist/convergence/__tests__/epic46-integration.test.d.ts +0 -15
  220. package/dist/convergence/__tests__/epic46-integration.test.d.ts.map +0 -1
  221. package/dist/convergence/__tests__/epic46-integration.test.js +0 -522
  222. package/dist/convergence/__tests__/epic46-integration.test.js.map +0 -1
  223. package/dist/convergence/__tests__/plateau.test.d.ts +0 -6
  224. package/dist/convergence/__tests__/plateau.test.d.ts.map +0 -1
  225. package/dist/convergence/__tests__/plateau.test.js +0 -163
  226. package/dist/convergence/__tests__/plateau.test.js.map +0 -1
  227. package/dist/convergence/__tests__/remediation.test.d.ts +0 -11
  228. package/dist/convergence/__tests__/remediation.test.d.ts.map +0 -1
  229. package/dist/convergence/__tests__/remediation.test.js +0 -209
  230. package/dist/convergence/__tests__/remediation.test.js.map +0 -1
  231. package/dist/convergence/__tests__/scenario-primary.test.d.ts +0 -13
  232. package/dist/convergence/__tests__/scenario-primary.test.d.ts.map +0 -1
  233. package/dist/convergence/__tests__/scenario-primary.test.js +0 -183
  234. package/dist/convergence/__tests__/scenario-primary.test.js.map +0 -1
  235. package/dist/factory-command.test.d.ts +0 -8
  236. package/dist/factory-command.test.d.ts.map +0 -1
  237. package/dist/factory-command.test.js +0 -304
  238. package/dist/factory-command.test.js.map +0 -1
  239. package/dist/graph/__tests__/attractor-compliance.test.d.ts +0 -10
  240. package/dist/graph/__tests__/attractor-compliance.test.d.ts.map +0 -1
  241. package/dist/graph/__tests__/attractor-compliance.test.js +0 -766
  242. package/dist/graph/__tests__/attractor-compliance.test.js.map +0 -1
  243. package/dist/graph/__tests__/checkpoint.test.d.ts +0 -8
  244. package/dist/graph/__tests__/checkpoint.test.d.ts.map +0 -1
  245. package/dist/graph/__tests__/checkpoint.test.js +0 -329
  246. package/dist/graph/__tests__/checkpoint.test.js.map +0 -1
  247. package/dist/graph/__tests__/condition-parser.test.d.ts +0 -14
  248. package/dist/graph/__tests__/condition-parser.test.d.ts.map +0 -1
  249. package/dist/graph/__tests__/condition-parser.test.js +0 -406
  250. package/dist/graph/__tests__/condition-parser.test.js.map +0 -1
  251. package/dist/graph/__tests__/context.test.d.ts +0 -14
  252. package/dist/graph/__tests__/context.test.d.ts.map +0 -1
  253. package/dist/graph/__tests__/context.test.js +0 -276
  254. package/dist/graph/__tests__/context.test.js.map +0 -1
  255. package/dist/graph/__tests__/edge-selector-events.test.d.ts +0 -11
  256. package/dist/graph/__tests__/edge-selector-events.test.d.ts.map +0 -1
  257. package/dist/graph/__tests__/edge-selector-events.test.js +0 -184
  258. package/dist/graph/__tests__/edge-selector-events.test.js.map +0 -1
  259. package/dist/graph/__tests__/edge-selector.test.d.ts +0 -6
  260. package/dist/graph/__tests__/edge-selector.test.d.ts.map +0 -1
  261. package/dist/graph/__tests__/edge-selector.test.js +0 -452
  262. package/dist/graph/__tests__/edge-selector.test.js.map +0 -1
  263. package/dist/graph/__tests__/executor-convergence.test.d.ts +0 -12
  264. package/dist/graph/__tests__/executor-convergence.test.d.ts.map +0 -1
  265. package/dist/graph/__tests__/executor-convergence.test.js +0 -432
  266. package/dist/graph/__tests__/executor-convergence.test.js.map +0 -1
  267. package/dist/graph/__tests__/executor-fidelity.test.d.ts +0 -13
  268. package/dist/graph/__tests__/executor-fidelity.test.d.ts.map +0 -1
  269. package/dist/graph/__tests__/executor-fidelity.test.js +0 -335
  270. package/dist/graph/__tests__/executor-fidelity.test.js.map +0 -1
  271. package/dist/graph/__tests__/executor.test.d.ts +0 -14
  272. package/dist/graph/__tests__/executor.test.d.ts.map +0 -1
  273. package/dist/graph/__tests__/executor.test.js +0 -901
  274. package/dist/graph/__tests__/executor.test.js.map +0 -1
  275. package/dist/graph/__tests__/fidelity.test.d.ts +0 -8
  276. package/dist/graph/__tests__/fidelity.test.d.ts.map +0 -1
  277. package/dist/graph/__tests__/fidelity.test.js +0 -135
  278. package/dist/graph/__tests__/fidelity.test.js.map +0 -1
  279. package/dist/graph/__tests__/llm-evaluator.test.d.ts +0 -7
  280. package/dist/graph/__tests__/llm-evaluator.test.d.ts.map +0 -1
  281. package/dist/graph/__tests__/llm-evaluator.test.js +0 -106
  282. package/dist/graph/__tests__/llm-evaluator.test.js.map +0 -1
  283. package/dist/graph/__tests__/parser-chaining.test.d.ts +0 -13
  284. package/dist/graph/__tests__/parser-chaining.test.d.ts.map +0 -1
  285. package/dist/graph/__tests__/parser-chaining.test.js +0 -215
  286. package/dist/graph/__tests__/parser-chaining.test.js.map +0 -1
  287. package/dist/graph/__tests__/parser.test.d.ts +0 -22
  288. package/dist/graph/__tests__/parser.test.d.ts.map +0 -1
  289. package/dist/graph/__tests__/parser.test.js +0 -452
  290. package/dist/graph/__tests__/parser.test.js.map +0 -1
  291. package/dist/graph/__tests__/run-state.test.d.ts +0 -13
  292. package/dist/graph/__tests__/run-state.test.d.ts.map +0 -1
  293. package/dist/graph/__tests__/run-state.test.js +0 -189
  294. package/dist/graph/__tests__/run-state.test.js.map +0 -1
  295. package/dist/graph/__tests__/transformer.test.d.ts +0 -16
  296. package/dist/graph/__tests__/transformer.test.d.ts.map +0 -1
  297. package/dist/graph/__tests__/transformer.test.js +0 -350
  298. package/dist/graph/__tests__/transformer.test.js.map +0 -1
  299. package/dist/graph/__tests__/validator-errors.test.d.ts +0 -15
  300. package/dist/graph/__tests__/validator-errors.test.d.ts.map +0 -1
  301. package/dist/graph/__tests__/validator-errors.test.js +0 -572
  302. package/dist/graph/__tests__/validator-errors.test.js.map +0 -1
  303. package/dist/graph/__tests__/validator-warnings.test.d.ts +0 -15
  304. package/dist/graph/__tests__/validator-warnings.test.d.ts.map +0 -1
  305. package/dist/graph/__tests__/validator-warnings.test.js +0 -363
  306. package/dist/graph/__tests__/validator-warnings.test.js.map +0 -1
  307. package/dist/handlers/__tests__/codergen-handler.test.d.ts +0 -14
  308. package/dist/handlers/__tests__/codergen-handler.test.d.ts.map +0 -1
  309. package/dist/handlers/__tests__/codergen-handler.test.js +0 -442
  310. package/dist/handlers/__tests__/codergen-handler.test.js.map +0 -1
  311. package/dist/handlers/__tests__/fan-in.test.d.ts +0 -14
  312. package/dist/handlers/__tests__/fan-in.test.d.ts.map +0 -1
  313. package/dist/handlers/__tests__/fan-in.test.js +0 -399
  314. package/dist/handlers/__tests__/fan-in.test.js.map +0 -1
  315. package/dist/handlers/__tests__/join-policy.test.d.ts +0 -9
  316. package/dist/handlers/__tests__/join-policy.test.d.ts.map +0 -1
  317. package/dist/handlers/__tests__/join-policy.test.js +0 -201
  318. package/dist/handlers/__tests__/join-policy.test.js.map +0 -1
  319. package/dist/handlers/__tests__/manager-loop.test.d.ts +0 -14
  320. package/dist/handlers/__tests__/manager-loop.test.d.ts.map +0 -1
  321. package/dist/handlers/__tests__/manager-loop.test.js +0 -322
  322. package/dist/handlers/__tests__/manager-loop.test.js.map +0 -1
  323. package/dist/handlers/__tests__/parallel-events.test.d.ts +0 -12
  324. package/dist/handlers/__tests__/parallel-events.test.d.ts.map +0 -1
  325. package/dist/handlers/__tests__/parallel-events.test.js +0 -252
  326. package/dist/handlers/__tests__/parallel-events.test.js.map +0 -1
  327. package/dist/handlers/__tests__/parallel-handler.test.d.ts +0 -14
  328. package/dist/handlers/__tests__/parallel-handler.test.d.ts.map +0 -1
  329. package/dist/handlers/__tests__/parallel-handler.test.js +0 -337
  330. package/dist/handlers/__tests__/parallel-handler.test.js.map +0 -1
  331. package/dist/handlers/__tests__/parallel-join.test.d.ts +0 -9
  332. package/dist/handlers/__tests__/parallel-join.test.d.ts.map +0 -1
  333. package/dist/handlers/__tests__/parallel-join.test.js +0 -267
  334. package/dist/handlers/__tests__/parallel-join.test.js.map +0 -1
  335. package/dist/handlers/__tests__/registry.test.d.ts +0 -14
  336. package/dist/handlers/__tests__/registry.test.d.ts.map +0 -1
  337. package/dist/handlers/__tests__/registry.test.js +0 -315
  338. package/dist/handlers/__tests__/registry.test.js.map +0 -1
  339. package/dist/handlers/__tests__/subgraph-events.test.d.ts +0 -10
  340. package/dist/handlers/__tests__/subgraph-events.test.d.ts.map +0 -1
  341. package/dist/handlers/__tests__/subgraph-events.test.js +0 -189
  342. package/dist/handlers/__tests__/subgraph-events.test.js.map +0 -1
  343. package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts +0 -14
  344. package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts.map +0 -1
  345. package/dist/handlers/__tests__/subgraph-inheritance.test.js +0 -267
  346. package/dist/handlers/__tests__/subgraph-inheritance.test.js.map +0 -1
  347. package/dist/handlers/__tests__/subgraph.test.d.ts +0 -14
  348. package/dist/handlers/__tests__/subgraph.test.d.ts.map +0 -1
  349. package/dist/handlers/__tests__/subgraph.test.js +0 -369
  350. package/dist/handlers/__tests__/subgraph.test.js.map +0 -1
  351. package/dist/handlers/__tests__/tool-handler.test.d.ts +0 -11
  352. package/dist/handlers/__tests__/tool-handler.test.d.ts.map +0 -1
  353. package/dist/handlers/__tests__/tool-handler.test.js +0 -184
  354. package/dist/handlers/__tests__/tool-handler.test.js.map +0 -1
  355. package/dist/handlers/__tests__/tool-scenario.test.d.ts +0 -12
  356. package/dist/handlers/__tests__/tool-scenario.test.d.ts.map +0 -1
  357. package/dist/handlers/__tests__/tool-scenario.test.js +0 -222
  358. package/dist/handlers/__tests__/tool-scenario.test.js.map +0 -1
  359. package/dist/handlers/__tests__/wait-human-handler.test.d.ts +0 -11
  360. package/dist/handlers/__tests__/wait-human-handler.test.d.ts.map +0 -1
  361. package/dist/handlers/__tests__/wait-human-handler.test.js +0 -251
  362. package/dist/handlers/__tests__/wait-human-handler.test.js.map +0 -1
  363. package/dist/llm/__tests__/client.test.d.ts +0 -2
  364. package/dist/llm/__tests__/client.test.d.ts.map +0 -1
  365. package/dist/llm/__tests__/client.test.js +0 -198
  366. package/dist/llm/__tests__/client.test.js.map +0 -1
  367. package/dist/llm/__tests__/types.test.d.ts +0 -2
  368. package/dist/llm/__tests__/types.test.d.ts.map +0 -1
  369. package/dist/llm/__tests__/types.test.js +0 -289
  370. package/dist/llm/__tests__/types.test.js.map +0 -1
  371. package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts +0 -2
  372. package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts.map +0 -1
  373. package/dist/llm/middleware/__tests__/cost-tracking.test.js +0 -73
  374. package/dist/llm/middleware/__tests__/cost-tracking.test.js.map +0 -1
  375. package/dist/llm/middleware/__tests__/logging.test.d.ts +0 -2
  376. package/dist/llm/middleware/__tests__/logging.test.d.ts.map +0 -1
  377. package/dist/llm/middleware/__tests__/logging.test.js +0 -127
  378. package/dist/llm/middleware/__tests__/logging.test.js.map +0 -1
  379. package/dist/llm/middleware/__tests__/retry.test.d.ts +0 -2
  380. package/dist/llm/middleware/__tests__/retry.test.d.ts.map +0 -1
  381. package/dist/llm/middleware/__tests__/retry.test.js +0 -126
  382. package/dist/llm/middleware/__tests__/retry.test.js.map +0 -1
  383. package/dist/llm/providers/__tests__/anthropic.test.d.ts +0 -2
  384. package/dist/llm/providers/__tests__/anthropic.test.d.ts.map +0 -1
  385. package/dist/llm/providers/__tests__/anthropic.test.js +0 -412
  386. package/dist/llm/providers/__tests__/anthropic.test.js.map +0 -1
  387. package/dist/llm/providers/__tests__/gemini.test.d.ts +0 -2
  388. package/dist/llm/providers/__tests__/gemini.test.d.ts.map +0 -1
  389. package/dist/llm/providers/__tests__/gemini.test.js +0 -591
  390. package/dist/llm/providers/__tests__/gemini.test.js.map +0 -1
  391. package/dist/llm/providers/__tests__/openai.test.d.ts +0 -2
  392. package/dist/llm/providers/__tests__/openai.test.d.ts.map +0 -1
  393. package/dist/llm/providers/__tests__/openai.test.js +0 -546
  394. package/dist/llm/providers/__tests__/openai.test.js.map +0 -1
  395. package/dist/persistence/__tests__/factory-queries.test.d.ts +0 -9
  396. package/dist/persistence/__tests__/factory-queries.test.d.ts.map +0 -1
  397. package/dist/persistence/__tests__/factory-queries.test.js +0 -372
  398. package/dist/persistence/__tests__/factory-queries.test.js.map +0 -1
  399. package/dist/persistence/__tests__/factory-schema.test.d.ts +0 -6
  400. package/dist/persistence/__tests__/factory-schema.test.d.ts.map +0 -1
  401. package/dist/persistence/__tests__/factory-schema.test.js +0 -105
  402. package/dist/persistence/__tests__/factory-schema.test.js.map +0 -1
  403. package/dist/scenarios/__tests__/cli-command-list.test.d.ts +0 -7
  404. package/dist/scenarios/__tests__/cli-command-list.test.d.ts.map +0 -1
  405. package/dist/scenarios/__tests__/cli-command-list.test.js +0 -237
  406. package/dist/scenarios/__tests__/cli-command-list.test.js.map +0 -1
  407. package/dist/scenarios/__tests__/cli-command.test.d.ts +0 -11
  408. package/dist/scenarios/__tests__/cli-command.test.d.ts.map +0 -1
  409. package/dist/scenarios/__tests__/cli-command.test.js +0 -275
  410. package/dist/scenarios/__tests__/cli-command.test.js.map +0 -1
  411. package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts +0 -15
  412. package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts.map +0 -1
  413. package/dist/scenarios/__tests__/integrity-pipeline.test.js +0 -318
  414. package/dist/scenarios/__tests__/integrity-pipeline.test.js.map +0 -1
  415. package/dist/scenarios/__tests__/runner-twins.test.d.ts +0 -13
  416. package/dist/scenarios/__tests__/runner-twins.test.d.ts.map +0 -1
  417. package/dist/scenarios/__tests__/runner-twins.test.js +0 -205
  418. package/dist/scenarios/__tests__/runner-twins.test.js.map +0 -1
  419. package/dist/scenarios/__tests__/scorer.test.d.ts +0 -11
  420. package/dist/scenarios/__tests__/scorer.test.d.ts.map +0 -1
  421. package/dist/scenarios/__tests__/scorer.test.js +0 -225
  422. package/dist/scenarios/__tests__/scorer.test.js.map +0 -1
  423. package/dist/scenarios/__tests__/scoring-integration.test.d.ts +0 -8
  424. package/dist/scenarios/__tests__/scoring-integration.test.d.ts.map +0 -1
  425. package/dist/scenarios/__tests__/scoring-integration.test.js +0 -178
  426. package/dist/scenarios/__tests__/scoring-integration.test.js.map +0 -1
  427. package/dist/scenarios/__tests__/store.test.d.ts +0 -5
  428. package/dist/scenarios/__tests__/store.test.d.ts.map +0 -1
  429. package/dist/scenarios/__tests__/store.test.js +0 -169
  430. package/dist/scenarios/__tests__/store.test.js.map +0 -1
  431. package/dist/stylesheet/__tests__/stylesheet.test.d.ts +0 -17
  432. package/dist/stylesheet/__tests__/stylesheet.test.d.ts.map +0 -1
  433. package/dist/stylesheet/__tests__/stylesheet.test.js +0 -368
  434. package/dist/stylesheet/__tests__/stylesheet.test.js.map +0 -1
  435. package/dist/templates/__tests__/templates.test.d.ts +0 -7
  436. package/dist/templates/__tests__/templates.test.d.ts.map +0 -1
  437. package/dist/templates/__tests__/templates.test.js +0 -92
  438. package/dist/templates/__tests__/templates.test.js.map +0 -1
  439. package/dist/twins/__tests__/docker-compose.test.d.ts +0 -13
  440. package/dist/twins/__tests__/docker-compose.test.d.ts.map +0 -1
  441. package/dist/twins/__tests__/docker-compose.test.js +0 -247
  442. package/dist/twins/__tests__/docker-compose.test.js.map +0 -1
  443. package/dist/twins/__tests__/health-monitor.test.d.ts +0 -19
  444. package/dist/twins/__tests__/health-monitor.test.d.ts.map +0 -1
  445. package/dist/twins/__tests__/health-monitor.test.js +0 -301
  446. package/dist/twins/__tests__/health-monitor.test.js.map +0 -1
  447. package/dist/twins/__tests__/integration/e2e.test.d.ts +0 -18
  448. package/dist/twins/__tests__/integration/e2e.test.d.ts.map +0 -1
  449. package/dist/twins/__tests__/integration/e2e.test.js +0 -146
  450. package/dist/twins/__tests__/integration/e2e.test.js.map +0 -1
  451. package/dist/twins/__tests__/integration/helpers.d.ts +0 -32
  452. package/dist/twins/__tests__/integration/helpers.d.ts.map +0 -1
  453. package/dist/twins/__tests__/integration/helpers.js +0 -67
  454. package/dist/twins/__tests__/integration/helpers.js.map +0 -1
  455. package/dist/twins/__tests__/integration/lifecycle.test.d.ts +0 -14
  456. package/dist/twins/__tests__/integration/lifecycle.test.d.ts.map +0 -1
  457. package/dist/twins/__tests__/integration/lifecycle.test.js +0 -127
  458. package/dist/twins/__tests__/integration/lifecycle.test.js.map +0 -1
  459. package/dist/twins/__tests__/integration/persistence-integration.test.d.ts +0 -14
  460. package/dist/twins/__tests__/integration/persistence-integration.test.d.ts.map +0 -1
  461. package/dist/twins/__tests__/integration/persistence-integration.test.js +0 -132
  462. package/dist/twins/__tests__/integration/persistence-integration.test.js.map +0 -1
  463. package/dist/twins/__tests__/persistence.test.d.ts +0 -10
  464. package/dist/twins/__tests__/persistence.test.d.ts.map +0 -1
  465. package/dist/twins/__tests__/persistence.test.js +0 -300
  466. package/dist/twins/__tests__/persistence.test.js.map +0 -1
  467. package/dist/twins/__tests__/registry.test.d.ts +0 -7
  468. package/dist/twins/__tests__/registry.test.d.ts.map +0 -1
  469. package/dist/twins/__tests__/registry.test.js +0 -282
  470. package/dist/twins/__tests__/registry.test.js.map +0 -1
  471. package/dist/twins/__tests__/run-state.test.d.ts +0 -9
  472. package/dist/twins/__tests__/run-state.test.d.ts.map +0 -1
  473. package/dist/twins/__tests__/run-state.test.js +0 -112
  474. package/dist/twins/__tests__/run-state.test.js.map +0 -1
  475. package/dist/twins/__tests__/templates-cli.test.d.ts +0 -10
  476. package/dist/twins/__tests__/templates-cli.test.d.ts.map +0 -1
  477. package/dist/twins/__tests__/templates-cli.test.js +0 -187
  478. package/dist/twins/__tests__/templates-cli.test.js.map +0 -1
  479. package/dist/twins/__tests__/templates.test.d.ts +0 -7
  480. package/dist/twins/__tests__/templates.test.d.ts.map +0 -1
  481. package/dist/twins/__tests__/templates.test.js +0 -87
  482. package/dist/twins/__tests__/templates.test.js.map +0 -1
  483. package/dist/twins/__tests__/twins-cli.test.d.ts +0 -11
  484. package/dist/twins/__tests__/twins-cli.test.d.ts.map +0 -1
  485. package/dist/twins/__tests__/twins-cli.test.js +0 -365
  486. package/dist/twins/__tests__/twins-cli.test.js.map +0 -1
@@ -1,10 +0,0 @@
1
- /**
2
- * Unit tests for subgraph handler event emission (story 50-9).
3
- *
4
- * Covers AC2 / AC7:
5
- * - graph:subgraph-started emitted before sub-executor runs with graphFile and depth
6
- * - graph:subgraph-completed emitted after sub-executor returns with status and durationMs >= 0
7
- * - No-op when eventBus absent (no TypeError)
8
- */
9
- export {};
10
- //# sourceMappingURL=subgraph-events.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subgraph-events.test.d.ts","sourceRoot":"","sources":["../../../src/handlers/__tests__/subgraph-events.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -1,189 +0,0 @@
1
- /**
2
- * Unit tests for subgraph handler event emission (story 50-9).
3
- *
4
- * Covers AC2 / AC7:
5
- * - graph:subgraph-started emitted before sub-executor runs with graphFile and depth
6
- * - graph:subgraph-completed emitted after sub-executor returns with status and durationMs >= 0
7
- * - No-op when eventBus absent (no TypeError)
8
- */
9
- import { describe, it, expect, vi, beforeEach } from 'vitest';
10
- // vi.mock is hoisted automatically by Vitest so mocks are in place before imports
11
- vi.mock('../../graph/parser.js', () => ({
12
- parseGraph: vi.fn(),
13
- }));
14
- vi.mock('../../graph/executor.js', () => ({
15
- createGraphExecutor: vi.fn(),
16
- }));
17
- vi.mock('../../graph/validator.js', () => ({
18
- createValidator: vi.fn(),
19
- }));
20
- import { parseGraph } from '../../graph/parser.js';
21
- import { createGraphExecutor } from '../../graph/executor.js';
22
- import { createValidator } from '../../graph/validator.js';
23
- import { createSubgraphHandler } from '../subgraph.js';
24
- import { GraphContext } from '../../graph/context.js';
25
- // ---------------------------------------------------------------------------
26
- // Constants
27
- // ---------------------------------------------------------------------------
28
- const VALID_DOT = `digraph G { start [type="start"]; exit [type="exit"]; start -> exit; }`;
29
- const STUB_GRAPH = {};
30
- // ---------------------------------------------------------------------------
31
- // Test helpers
32
- // ---------------------------------------------------------------------------
33
- function makeNode(attrsOverride, id = 'sg-node') {
34
- const node = {
35
- id,
36
- label: '',
37
- shape: '',
38
- type: 'subgraph',
39
- prompt: '',
40
- maxRetries: 0,
41
- goalGate: false,
42
- retryTarget: '',
43
- fallbackRetryTarget: '',
44
- fidelity: '',
45
- threadId: '',
46
- class: '',
47
- timeout: 0,
48
- llmModel: '',
49
- llmProvider: '',
50
- reasoningEffort: '',
51
- autoStatus: false,
52
- allowPartial: false,
53
- toolCommand: '',
54
- backend: '',
55
- };
56
- if (attrsOverride !== undefined) {
57
- node.attrs = attrsOverride;
58
- }
59
- return node;
60
- }
61
- function makeCtx(snapshot) {
62
- return new GraphContext(snapshot);
63
- }
64
- function makeCtxWithRunId(runId = 'test-run-sg') {
65
- const ctx = new GraphContext();
66
- ctx.set('__runId', runId);
67
- return ctx;
68
- }
69
- function makeStubRegistry() {
70
- return {
71
- register: vi.fn(),
72
- registerShape: vi.fn(),
73
- setDefault: vi.fn(),
74
- resolve: vi.fn(),
75
- };
76
- }
77
- function makeMockEventBus() {
78
- return { emit: vi.fn() };
79
- }
80
- // Typed mock helpers
81
- const mockParseGraph = vi.mocked(parseGraph);
82
- const mockCreateGraphExecutor = vi.mocked(createGraphExecutor);
83
- const mockCreateValidator = vi.mocked(createValidator);
84
- // ---------------------------------------------------------------------------
85
- // Setup
86
- // ---------------------------------------------------------------------------
87
- beforeEach(() => {
88
- vi.clearAllMocks();
89
- mockParseGraph.mockReturnValue(STUB_GRAPH);
90
- mockCreateValidator.mockReturnValue({
91
- validate: vi.fn().mockReturnValue([]),
92
- validateOrRaise: vi.fn(),
93
- registerRule: vi.fn(),
94
- });
95
- mockCreateGraphExecutor.mockReturnValue({
96
- run: vi.fn().mockResolvedValue({
97
- status: 'SUCCESS',
98
- contextUpdates: { 'sub.result': 'done' },
99
- }),
100
- });
101
- });
102
- // ---------------------------------------------------------------------------
103
- // AC7 — Subgraph lifecycle events
104
- // ---------------------------------------------------------------------------
105
- describe('graph:subgraph-started', () => {
106
- it('is emitted before sub-executor runs with correct graphFile and depth=0', async () => {
107
- const mockBus = makeMockEventBus();
108
- const handler = createSubgraphHandler({
109
- handlerRegistry: makeStubRegistry(),
110
- baseDir: '/base',
111
- graphFileLoader: vi.fn().mockResolvedValue(VALID_DOT),
112
- eventBus: mockBus,
113
- });
114
- const node = makeNode({ graph_file: 'sub.dot' });
115
- const ctx = makeCtxWithRunId('sg-run-1');
116
- await handler(node, ctx, STUB_GRAPH);
117
- const startedCalls = mockBus.emit.mock.calls.filter((c) => c[0] === 'graph:subgraph-started');
118
- expect(startedCalls).toHaveLength(1);
119
- expect(startedCalls[0][1]).toMatchObject({
120
- runId: 'sg-run-1',
121
- nodeId: 'sg-node',
122
- graphFile: '/base/sub.dot',
123
- depth: 0,
124
- });
125
- });
126
- });
127
- describe('graph:subgraph-completed', () => {
128
- it('is emitted after sub-executor returns with status=SUCCESS and durationMs >= 0', async () => {
129
- const mockBus = makeMockEventBus();
130
- const handler = createSubgraphHandler({
131
- handlerRegistry: makeStubRegistry(),
132
- baseDir: '/base',
133
- graphFileLoader: vi.fn().mockResolvedValue(VALID_DOT),
134
- eventBus: mockBus,
135
- });
136
- const node = makeNode({ graph_file: 'sub.dot' });
137
- const ctx = makeCtxWithRunId('sg-run-2');
138
- await handler(node, ctx, STUB_GRAPH);
139
- const completedCalls = mockBus.emit.mock.calls.filter((c) => c[0] === 'graph:subgraph-completed');
140
- expect(completedCalls).toHaveLength(1);
141
- const payload = completedCalls[0][1];
142
- expect(payload.status).toBe('SUCCESS');
143
- expect(payload.durationMs).toBeGreaterThanOrEqual(0);
144
- });
145
- });
146
- describe('subgraph handler without eventBus', () => {
147
- it('executes successfully without TypeError when eventBus is absent', async () => {
148
- const handler = createSubgraphHandler({
149
- handlerRegistry: makeStubRegistry(),
150
- baseDir: '/base',
151
- graphFileLoader: vi.fn().mockResolvedValue(VALID_DOT),
152
- // No eventBus
153
- });
154
- const node = makeNode({ graph_file: 'sub.dot' });
155
- const ctx = makeCtxWithRunId('sg-run-3');
156
- const outcome = await handler(node, ctx, STUB_GRAPH);
157
- expect(outcome.status).toBe('SUCCESS');
158
- });
159
- });
160
- describe('subgraph event payload type conformance to FactoryEvents', () => {
161
- it('all emitted subgraph event payloads have field types matching FactoryEvents declarations', async () => {
162
- const mockBus = makeMockEventBus();
163
- const handler = createSubgraphHandler({
164
- handlerRegistry: makeStubRegistry(),
165
- baseDir: '/base',
166
- graphFileLoader: vi.fn().mockResolvedValue(VALID_DOT),
167
- eventBus: mockBus,
168
- });
169
- const node = makeNode({ graph_file: 'sub.dot' });
170
- const ctx = makeCtxWithRunId('sg-run-conf');
171
- await handler(node, ctx, STUB_GRAPH);
172
- const calls = mockBus.emit.mock.calls;
173
- // graph:subgraph-started payload: { runId: string; nodeId: string; graphFile: string; depth: number }
174
- const startedPayload = calls.find((c) => c[0] === 'graph:subgraph-started')?.[1];
175
- expect(typeof startedPayload['runId']).toBe('string');
176
- expect(typeof startedPayload['nodeId']).toBe('string');
177
- expect(typeof startedPayload['graphFile']).toBe('string');
178
- expect(typeof startedPayload['depth']).toBe('number');
179
- // graph:subgraph-completed payload: { runId: string; nodeId: string; graphFile: string; depth: number; status: StageStatus; durationMs: number }
180
- const completedPayload = calls.find((c) => c[0] === 'graph:subgraph-completed')?.[1];
181
- expect(typeof completedPayload['runId']).toBe('string');
182
- expect(typeof completedPayload['nodeId']).toBe('string');
183
- expect(typeof completedPayload['graphFile']).toBe('string');
184
- expect(typeof completedPayload['depth']).toBe('number');
185
- expect(typeof completedPayload['status']).toBe('string');
186
- expect(typeof completedPayload['durationMs']).toBe('number');
187
- });
188
- });
189
- //# sourceMappingURL=subgraph-events.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subgraph-events.test.js","sourceRoot":"","sources":["../../../src/handlers/__tests__/subgraph-events.test.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Integration tests for stylesheet inheritance through subgraph boundaries.
3
- *
4
- * Verifies that the subgraph handler correctly propagates a parent graph's
5
- * model_stylesheet to the sub-executor via the inheritedStylesheet config field.
6
- *
7
- * Story 50-6 (AC6, AC7).
8
- *
9
- * Covers:
10
- * AC6 — subgraph nodes inherit parent graph's stylesheet
11
- * AC7 — subgraph's own stylesheet overrides inherited parent rules
12
- */
13
- export {};
14
- //# sourceMappingURL=subgraph-inheritance.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subgraph-inheritance.test.d.ts","sourceRoot":"","sources":["../../../src/handlers/__tests__/subgraph-inheritance.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
@@ -1,267 +0,0 @@
1
- /**
2
- * Integration tests for stylesheet inheritance through subgraph boundaries.
3
- *
4
- * Verifies that the subgraph handler correctly propagates a parent graph's
5
- * model_stylesheet to the sub-executor via the inheritedStylesheet config field.
6
- *
7
- * Story 50-6 (AC6, AC7).
8
- *
9
- * Covers:
10
- * AC6 — subgraph nodes inherit parent graph's stylesheet
11
- * AC7 — subgraph's own stylesheet overrides inherited parent rules
12
- */
13
- import { describe, it, expect, vi, beforeEach } from 'vitest';
14
- // vi.mock is hoisted automatically by Vitest so the mocks are in place
15
- // before any module imports are resolved.
16
- vi.mock('../../graph/parser.js', () => ({
17
- parseGraph: vi.fn(),
18
- }));
19
- vi.mock('../../graph/executor.js', () => ({
20
- createGraphExecutor: vi.fn(),
21
- }));
22
- vi.mock('../../graph/validator.js', () => ({
23
- createValidator: vi.fn(),
24
- }));
25
- import { parseGraph } from '../../graph/parser.js';
26
- import { createGraphExecutor } from '../../graph/executor.js';
27
- import { createValidator } from '../../graph/validator.js';
28
- import { createSubgraphHandler } from '../subgraph.js';
29
- import { createDefaultRegistry } from '../registry.js';
30
- import { GraphContext } from '../../graph/context.js';
31
- import { parseStylesheet } from '../../stylesheet/parser.js';
32
- import { applyStylesheet } from '../../graph/transformer.js';
33
- // ---------------------------------------------------------------------------
34
- // Test helpers
35
- // ---------------------------------------------------------------------------
36
- /** Build a minimal GraphNode with defaults for all required fields. */
37
- function makeNode(overrides) {
38
- return {
39
- id: 'test_node',
40
- label: 'Test Node',
41
- shape: 'box',
42
- type: '',
43
- prompt: '',
44
- maxRetries: 0,
45
- goalGate: false,
46
- retryTarget: '',
47
- fallbackRetryTarget: '',
48
- fidelity: '',
49
- threadId: '',
50
- class: '',
51
- timeout: 0,
52
- llmModel: '',
53
- llmProvider: '',
54
- reasoningEffort: '',
55
- autoStatus: false,
56
- allowPartial: false,
57
- toolCommand: '',
58
- backend: '',
59
- ...overrides,
60
- };
61
- }
62
- /** Build a minimal subgraph node referencing a graph file. */
63
- function makeSubgraphNode(graphFile) {
64
- return makeNode({
65
- id: 'sg-node',
66
- type: 'subgraph',
67
- attrs: { graph_file: graphFile },
68
- });
69
- }
70
- /** Build a minimal parent Graph with optional modelStylesheet. */
71
- function makeParentGraph(modelStylesheet) {
72
- const nodeMap = new Map();
73
- nodeMap.set('start', makeNode({ id: 'start', shape: 'Mdiamond' }));
74
- nodeMap.set('exit', makeNode({ id: 'exit', shape: 'Msquare' }));
75
- nodeMap.set('sg-node', makeSubgraphNode('sub.dot'));
76
- const edges = [
77
- { fromNode: 'start', toNode: 'sg-node', label: '', condition: '', weight: 1, fidelity: '', threadId: '', loopRestart: false },
78
- { fromNode: 'sg-node', toNode: 'exit', label: '', condition: '', weight: 1, fidelity: '', threadId: '', loopRestart: false },
79
- ];
80
- return {
81
- id: 'parent',
82
- goal: '',
83
- label: '',
84
- modelStylesheet,
85
- defaultMaxRetries: 0,
86
- retryTarget: '',
87
- fallbackRetryTarget: '',
88
- defaultFidelity: '',
89
- nodes: nodeMap,
90
- edges,
91
- outgoingEdges(nodeId) { return edges.filter((e) => e.fromNode === nodeId); },
92
- startNode() { return nodeMap.get('start'); },
93
- exitNode() { return nodeMap.get('exit'); },
94
- };
95
- }
96
- /** Minimal stub graph returned by mocked parseGraph. */
97
- const STUB_SUBGRAPH = {};
98
- const VALID_DOT = `digraph G { start [shape=Mdiamond]; exit [shape=Msquare]; start -> exit; }`;
99
- // Typed mock helpers
100
- const mockParseGraph = vi.mocked(parseGraph);
101
- const mockCreateGraphExecutor = vi.mocked(createGraphExecutor);
102
- const mockCreateValidator = vi.mocked(createValidator);
103
- // ---------------------------------------------------------------------------
104
- // Default mock setup — reset before each test
105
- // ---------------------------------------------------------------------------
106
- beforeEach(() => {
107
- vi.clearAllMocks();
108
- // parseGraph: returns stub subgraph by default
109
- mockParseGraph.mockReturnValue(STUB_SUBGRAPH);
110
- // createValidator: returns a no-op validator by default
111
- mockCreateValidator.mockReturnValue({
112
- validate: vi.fn().mockReturnValue([]),
113
- validateOrRaise: vi.fn(),
114
- registerRule: vi.fn(),
115
- });
116
- // createGraphExecutor: returns executor that resolves SUCCESS by default
117
- mockCreateGraphExecutor.mockReturnValue({
118
- run: vi.fn().mockResolvedValue({ status: 'SUCCESS' }),
119
- });
120
- });
121
- // ---------------------------------------------------------------------------
122
- // AC6 — Subgraph nodes inherit parent graph's stylesheet
123
- // ---------------------------------------------------------------------------
124
- describe('subgraph stylesheet inheritance (AC6)', () => {
125
- it('AC6: passes parsed parent stylesheet as inheritedStylesheet to sub-executor config', async () => {
126
- let capturedConfig;
127
- const mockRun = vi.fn().mockImplementation((_subgraph, config) => {
128
- capturedConfig = config;
129
- return Promise.resolve({ status: 'SUCCESS' });
130
- });
131
- mockCreateGraphExecutor.mockReturnValue({ run: mockRun });
132
- const parentGraph = makeParentGraph('* { llm_model: parent-model; }');
133
- const handler = createSubgraphHandler({
134
- handlerRegistry: createDefaultRegistry(),
135
- baseDir: '/base',
136
- graphFileLoader: vi.fn().mockResolvedValue(VALID_DOT),
137
- });
138
- const ctx = new GraphContext();
139
- await handler(makeSubgraphNode('sub.dot'), ctx, parentGraph);
140
- // The sub-executor should receive an inheritedStylesheet derived from the parent's model_stylesheet
141
- expect(capturedConfig).toBeDefined();
142
- const inherited = capturedConfig.inheritedStylesheet;
143
- expect(inherited).toBeDefined();
144
- expect(Array.isArray(inherited)).toBe(true);
145
- expect(inherited.length).toBeGreaterThan(0);
146
- // The inherited stylesheet should be equivalent to parseStylesheet of the parent's modelStylesheet
147
- const expected = parseStylesheet('* { llm_model: parent-model; }');
148
- expect(inherited).toEqual(expected);
149
- });
150
- it('AC6: inherited stylesheet applies to subgraph nodes (transformer integration)', () => {
151
- // Simulate what the sub-executor would do: run applyStylesheet with inheritedStylesheet
152
- const subNode = makeNode({ id: 'work', shape: 'box' });
153
- const subNodeMap = new Map([['work', subNode]]);
154
- const subgraphWithNoStylesheet = {
155
- id: 'sub',
156
- goal: '',
157
- label: '',
158
- modelStylesheet: '', // no local stylesheet
159
- defaultMaxRetries: 0,
160
- retryTarget: '',
161
- fallbackRetryTarget: '',
162
- defaultFidelity: '',
163
- nodes: subNodeMap,
164
- edges: [],
165
- outgoingEdges() { return []; },
166
- startNode() { return subNode; },
167
- exitNode() { return subNode; },
168
- };
169
- const inheritedStylesheet = parseStylesheet('* { llm_model: parent-model; }');
170
- applyStylesheet(subgraphWithNoStylesheet, inheritedStylesheet);
171
- expect(subNode.llmModel).toBe('parent-model');
172
- });
173
- });
174
- // ---------------------------------------------------------------------------
175
- // AC7 — Subgraph's own stylesheet overrides inherited parent rules
176
- // ---------------------------------------------------------------------------
177
- describe('subgraph own stylesheet overrides parent (AC7)', () => {
178
- it('AC7: child model_stylesheet rules win over inherited parent rules at equal specificity', () => {
179
- // Simulate what the sub-executor does: applyStylesheet(subgraph, inheritedStylesheet)
180
- const subNode = makeNode({ id: 'work', shape: 'box' });
181
- const subNodeMap = new Map([['work', subNode]]);
182
- const subgraphWithOwnStylesheet = {
183
- id: 'sub',
184
- goal: '',
185
- label: '',
186
- modelStylesheet: '* { llm_model: child-model; }', // subgraph has its own rules
187
- defaultMaxRetries: 0,
188
- retryTarget: '',
189
- fallbackRetryTarget: '',
190
- defaultFidelity: '',
191
- nodes: subNodeMap,
192
- edges: [],
193
- outgoingEdges() { return []; },
194
- startNode() { return subNode; },
195
- exitNode() { return subNode; },
196
- };
197
- const inheritedStylesheet = parseStylesheet('* { llm_model: parent-model; }');
198
- applyStylesheet(subgraphWithOwnStylesheet, inheritedStylesheet);
199
- // Child rules appear after parent rules in effectiveStylesheet → child wins
200
- expect(subNode.llmModel).toBe('child-model');
201
- });
202
- });
203
- // ---------------------------------------------------------------------------
204
- // No parent stylesheet — inheritedStylesheet is undefined
205
- // ---------------------------------------------------------------------------
206
- describe('subgraph handler with no parent stylesheet', () => {
207
- it('passes undefined inheritedStylesheet when parent has no modelStylesheet', async () => {
208
- let capturedConfig;
209
- const mockRun = vi.fn().mockImplementation((_subgraph, config) => {
210
- capturedConfig = config;
211
- return Promise.resolve({ status: 'SUCCESS' });
212
- });
213
- mockCreateGraphExecutor.mockReturnValue({ run: mockRun });
214
- // Parent graph has empty modelStylesheet
215
- const parentGraph = makeParentGraph('');
216
- const handler = createSubgraphHandler({
217
- handlerRegistry: createDefaultRegistry(),
218
- baseDir: '/base',
219
- graphFileLoader: vi.fn().mockResolvedValue(VALID_DOT),
220
- });
221
- const ctx = new GraphContext();
222
- await handler(makeSubgraphNode('sub.dot'), ctx, parentGraph);
223
- // inheritedStylesheet should be undefined (no parent stylesheet)
224
- expect(capturedConfig).toBeDefined();
225
- expect(capturedConfig.inheritedStylesheet).toBeUndefined();
226
- });
227
- it('subgraph executes normally (SUCCESS) when parent has no modelStylesheet', async () => {
228
- const parentGraph = makeParentGraph('');
229
- const handler = createSubgraphHandler({
230
- handlerRegistry: createDefaultRegistry(),
231
- baseDir: '/base',
232
- graphFileLoader: vi.fn().mockResolvedValue(VALID_DOT),
233
- });
234
- const ctx = new GraphContext();
235
- const result = await handler(makeSubgraphNode('sub.dot'), ctx, parentGraph);
236
- expect(result.status).toBe('SUCCESS');
237
- });
238
- });
239
- // ---------------------------------------------------------------------------
240
- // Transformer: applyStylesheet with empty local + non-empty inherited
241
- // ---------------------------------------------------------------------------
242
- describe('applyStylesheet with empty local stylesheet and non-empty inheritedStylesheet', () => {
243
- it('populates nodes from inherited rules when graph has no local modelStylesheet', () => {
244
- const node = makeNode({ id: 'n1', shape: 'box' });
245
- const nodeMap = new Map([['n1', node]]);
246
- const graph = {
247
- id: 'sub',
248
- goal: '',
249
- label: '',
250
- modelStylesheet: '',
251
- defaultMaxRetries: 0,
252
- retryTarget: '',
253
- fallbackRetryTarget: '',
254
- defaultFidelity: '',
255
- nodes: nodeMap,
256
- edges: [],
257
- outgoingEdges() { return []; },
258
- startNode() { return node; },
259
- exitNode() { return node; },
260
- };
261
- const inherited = parseStylesheet('* { llm_model: inherited-model; llm_provider: openai; }');
262
- applyStylesheet(graph, inherited);
263
- expect(node.llmModel).toBe('inherited-model');
264
- expect(node.llmProvider).toBe('openai');
265
- });
266
- });
267
- //# sourceMappingURL=subgraph-inheritance.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subgraph-inheritance.test.js","sourceRoot":"","sources":["../../../src/handlers/__tests__/subgraph-inheritance.test.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Unit tests for the subgraph handler (story 50-5).
3
- *
4
- * Covers AC1–AC7:
5
- * AC1 – Subgraph node loads, validates, and executes referenced graph
6
- * AC2 – Parent context snapshot seeded into subgraph execution
7
- * AC3 – Subgraph contextUpdates merged into parent context
8
- * AC4 – Subgraph goal gates evaluated independently (executor isolation)
9
- * AC5 – Nested subgraph depth limit enforced
10
- * AC6 – Missing or unresolvable graph_file attribute produces FAILURE
11
- * AC7 – Unit tests cover all subgraph handler behaviours (this file)
12
- */
13
- export {};
14
- //# sourceMappingURL=subgraph.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subgraph.test.d.ts","sourceRoot":"","sources":["../../../src/handlers/__tests__/subgraph.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}