@substrate-ai/factory 0.19.54 → 0.20.2

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 (491) hide show
  1. package/README.md +39 -0
  2. package/dist/config.d.ts +4 -4
  3. package/package.json +12 -3
  4. package/dist/__tests__/config.test.d.ts +0 -11
  5. package/dist/__tests__/config.test.d.ts.map +0 -1
  6. package/dist/__tests__/config.test.js +0 -215
  7. package/dist/__tests__/config.test.js.map +0 -1
  8. package/dist/__tests__/factory-run-command.test.d.ts +0 -12
  9. package/dist/__tests__/factory-run-command.test.d.ts.map +0 -1
  10. package/dist/__tests__/factory-run-command.test.js +0 -454
  11. package/dist/__tests__/factory-run-command.test.js.map +0 -1
  12. package/dist/__tests__/factory-validate-command.test.d.ts +0 -15
  13. package/dist/__tests__/factory-validate-command.test.d.ts.map +0 -1
  14. package/dist/__tests__/factory-validate-command.test.js +0 -339
  15. package/dist/__tests__/factory-validate-command.test.js.map +0 -1
  16. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts +0 -72
  17. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts.map +0 -1
  18. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js +0 -121
  19. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js.map +0 -1
  20. package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts +0 -28
  21. package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts.map +0 -1
  22. package/dist/__tests__/fixtures/llm-edge-routing.dot.js +0 -55
  23. package/dist/__tests__/fixtures/llm-edge-routing.dot.js.map +0 -1
  24. package/dist/__tests__/fixtures/manager-loop.dot.d.ts +0 -34
  25. package/dist/__tests__/fixtures/manager-loop.dot.d.ts.map +0 -1
  26. package/dist/__tests__/fixtures/manager-loop.dot.js +0 -61
  27. package/dist/__tests__/fixtures/manager-loop.dot.js.map +0 -1
  28. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts +0 -42
  29. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts.map +0 -1
  30. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js +0 -118
  31. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js.map +0 -1
  32. package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts +0 -35
  33. package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts.map +0 -1
  34. package/dist/__tests__/fixtures/subgraph-parent.dot.js +0 -69
  35. package/dist/__tests__/fixtures/subgraph-parent.dot.js.map +0 -1
  36. package/dist/__tests__/integration/advanced-graph-events.test.d.ts +0 -19
  37. package/dist/__tests__/integration/advanced-graph-events.test.d.ts.map +0 -1
  38. package/dist/__tests__/integration/advanced-graph-events.test.js +0 -288
  39. package/dist/__tests__/integration/advanced-graph-events.test.js.map +0 -1
  40. package/dist/__tests__/integration/checkpoint-resume.test.d.ts +0 -10
  41. package/dist/__tests__/integration/checkpoint-resume.test.d.ts.map +0 -1
  42. package/dist/__tests__/integration/checkpoint-resume.test.js +0 -125
  43. package/dist/__tests__/integration/checkpoint-resume.test.js.map +0 -1
  44. package/dist/__tests__/integration/conditional-pipeline.test.d.ts +0 -10
  45. package/dist/__tests__/integration/conditional-pipeline.test.d.ts.map +0 -1
  46. package/dist/__tests__/integration/conditional-pipeline.test.js +0 -106
  47. package/dist/__tests__/integration/conditional-pipeline.test.js.map +0 -1
  48. package/dist/__tests__/integration/convergence-validation.test.d.ts +0 -14
  49. package/dist/__tests__/integration/convergence-validation.test.d.ts.map +0 -1
  50. package/dist/__tests__/integration/convergence-validation.test.js +0 -449
  51. package/dist/__tests__/integration/convergence-validation.test.js.map +0 -1
  52. package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts +0 -12
  53. package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts.map +0 -1
  54. package/dist/__tests__/integration/epic44-coverage-gate.test.js +0 -58
  55. package/dist/__tests__/integration/epic44-coverage-gate.test.js.map +0 -1
  56. package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts +0 -11
  57. package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts.map +0 -1
  58. package/dist/__tests__/integration/epic45-coverage-gate.test.js +0 -64
  59. package/dist/__tests__/integration/epic45-coverage-gate.test.js.map +0 -1
  60. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts +0 -2
  61. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts.map +0 -1
  62. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js +0 -285
  63. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js.map +0 -1
  64. package/dist/__tests__/integration/events.test.d.ts +0 -8
  65. package/dist/__tests__/integration/events.test.d.ts.map +0 -1
  66. package/dist/__tests__/integration/events.test.js +0 -194
  67. package/dist/__tests__/integration/events.test.js.map +0 -1
  68. package/dist/__tests__/integration/graphs.d.ts +0 -59
  69. package/dist/__tests__/integration/graphs.d.ts.map +0 -1
  70. package/dist/__tests__/integration/graphs.js +0 -164
  71. package/dist/__tests__/integration/graphs.js.map +0 -1
  72. package/dist/__tests__/integration/helpers.d.ts +0 -127
  73. package/dist/__tests__/integration/helpers.d.ts.map +0 -1
  74. package/dist/__tests__/integration/helpers.js +0 -167
  75. package/dist/__tests__/integration/helpers.js.map +0 -1
  76. package/dist/__tests__/integration/integrity.test.d.ts +0 -8
  77. package/dist/__tests__/integration/integrity.test.d.ts.map +0 -1
  78. package/dist/__tests__/integration/integrity.test.js +0 -198
  79. package/dist/__tests__/integration/integrity.test.js.map +0 -1
  80. package/dist/__tests__/integration/llm-edge-routing.test.d.ts +0 -21
  81. package/dist/__tests__/integration/llm-edge-routing.test.d.ts.map +0 -1
  82. package/dist/__tests__/integration/llm-edge-routing.test.js +0 -341
  83. package/dist/__tests__/integration/llm-edge-routing.test.js.map +0 -1
  84. package/dist/__tests__/integration/manager-loop.test.d.ts +0 -24
  85. package/dist/__tests__/integration/manager-loop.test.d.ts.map +0 -1
  86. package/dist/__tests__/integration/manager-loop.test.js +0 -276
  87. package/dist/__tests__/integration/manager-loop.test.js.map +0 -1
  88. package/dist/__tests__/integration/multi-type-graph.test.d.ts +0 -10
  89. package/dist/__tests__/integration/multi-type-graph.test.d.ts.map +0 -1
  90. package/dist/__tests__/integration/multi-type-graph.test.js +0 -100
  91. package/dist/__tests__/integration/multi-type-graph.test.js.map +0 -1
  92. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts +0 -22
  93. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts.map +0 -1
  94. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js +0 -515
  95. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js.map +0 -1
  96. package/dist/__tests__/integration/persistence.test.d.ts +0 -8
  97. package/dist/__tests__/integration/persistence.test.d.ts.map +0 -1
  98. package/dist/__tests__/integration/persistence.test.js +0 -129
  99. package/dist/__tests__/integration/persistence.test.js.map +0 -1
  100. package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts +0 -16
  101. package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts.map +0 -1
  102. package/dist/__tests__/integration/pipeline-templates-integration.test.js +0 -171
  103. package/dist/__tests__/integration/pipeline-templates-integration.test.js.map +0 -1
  104. package/dist/__tests__/integration/scenario-pipeline.test.d.ts +0 -11
  105. package/dist/__tests__/integration/scenario-pipeline.test.d.ts.map +0 -1
  106. package/dist/__tests__/integration/scenario-pipeline.test.js +0 -243
  107. package/dist/__tests__/integration/scenario-pipeline.test.js.map +0 -1
  108. package/dist/__tests__/integration/stylesheet-application.test.d.ts +0 -12
  109. package/dist/__tests__/integration/stylesheet-application.test.d.ts.map +0 -1
  110. package/dist/__tests__/integration/stylesheet-application.test.js +0 -119
  111. package/dist/__tests__/integration/stylesheet-application.test.js.map +0 -1
  112. package/dist/__tests__/integration/subgraph-execution.test.d.ts +0 -24
  113. package/dist/__tests__/integration/subgraph-execution.test.d.ts.map +0 -1
  114. package/dist/__tests__/integration/subgraph-execution.test.js +0 -291
  115. package/dist/__tests__/integration/subgraph-execution.test.js.map +0 -1
  116. package/dist/__tests__/integration/validation-errors.test.d.ts +0 -8
  117. package/dist/__tests__/integration/validation-errors.test.d.ts.map +0 -1
  118. package/dist/__tests__/integration/validation-errors.test.js +0 -150
  119. package/dist/__tests__/integration/validation-errors.test.js.map +0 -1
  120. package/dist/agent/__tests__/loop-detection.test.d.ts +0 -2
  121. package/dist/agent/__tests__/loop-detection.test.d.ts.map +0 -1
  122. package/dist/agent/__tests__/loop-detection.test.js +0 -236
  123. package/dist/agent/__tests__/loop-detection.test.js.map +0 -1
  124. package/dist/agent/__tests__/loop.test.d.ts +0 -2
  125. package/dist/agent/__tests__/loop.test.d.ts.map +0 -1
  126. package/dist/agent/__tests__/loop.test.js +0 -868
  127. package/dist/agent/__tests__/loop.test.js.map +0 -1
  128. package/dist/agent/__tests__/truncation.test.d.ts +0 -2
  129. package/dist/agent/__tests__/truncation.test.d.ts.map +0 -1
  130. package/dist/agent/__tests__/truncation.test.js +0 -276
  131. package/dist/agent/__tests__/truncation.test.js.map +0 -1
  132. package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts +0 -6
  133. package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts.map +0 -1
  134. package/dist/agent/tools/__tests__/anthropic-tools.test.js +0 -49
  135. package/dist/agent/tools/__tests__/anthropic-tools.test.js.map +0 -1
  136. package/dist/agent/tools/__tests__/environment.test.d.ts +0 -6
  137. package/dist/agent/tools/__tests__/environment.test.d.ts.map +0 -1
  138. package/dist/agent/tools/__tests__/environment.test.js +0 -33
  139. package/dist/agent/tools/__tests__/environment.test.js.map +0 -1
  140. package/dist/agent/tools/__tests__/gemini-tools.test.d.ts +0 -6
  141. package/dist/agent/tools/__tests__/gemini-tools.test.d.ts.map +0 -1
  142. package/dist/agent/tools/__tests__/gemini-tools.test.js +0 -98
  143. package/dist/agent/tools/__tests__/gemini-tools.test.js.map +0 -1
  144. package/dist/agent/tools/__tests__/openai-tools.test.d.ts +0 -6
  145. package/dist/agent/tools/__tests__/openai-tools.test.d.ts.map +0 -1
  146. package/dist/agent/tools/__tests__/openai-tools.test.js +0 -53
  147. package/dist/agent/tools/__tests__/openai-tools.test.js.map +0 -1
  148. package/dist/agent/tools/__tests__/patch.test.d.ts +0 -6
  149. package/dist/agent/tools/__tests__/patch.test.d.ts.map +0 -1
  150. package/dist/agent/tools/__tests__/patch.test.js +0 -116
  151. package/dist/agent/tools/__tests__/patch.test.js.map +0 -1
  152. package/dist/agent/tools/__tests__/profiles.test.d.ts +0 -6
  153. package/dist/agent/tools/__tests__/profiles.test.d.ts.map +0 -1
  154. package/dist/agent/tools/__tests__/profiles.test.js +0 -125
  155. package/dist/agent/tools/__tests__/profiles.test.js.map +0 -1
  156. package/dist/agent/tools/__tests__/registry.test.d.ts +0 -6
  157. package/dist/agent/tools/__tests__/registry.test.d.ts.map +0 -1
  158. package/dist/agent/tools/__tests__/registry.test.js +0 -94
  159. package/dist/agent/tools/__tests__/registry.test.js.map +0 -1
  160. package/dist/agent/tools/__tests__/shared.test.d.ts +0 -6
  161. package/dist/agent/tools/__tests__/shared.test.d.ts.map +0 -1
  162. package/dist/agent/tools/__tests__/shared.test.js +0 -131
  163. package/dist/agent/tools/__tests__/shared.test.js.map +0 -1
  164. package/dist/backend/__tests__/direct-backend.test.d.ts +0 -14
  165. package/dist/backend/__tests__/direct-backend.test.d.ts.map +0 -1
  166. package/dist/backend/__tests__/direct-backend.test.js +0 -393
  167. package/dist/backend/__tests__/direct-backend.test.js.map +0 -1
  168. package/dist/backend/__tests__/direct-bootstrap.test.d.ts +0 -7
  169. package/dist/backend/__tests__/direct-bootstrap.test.d.ts.map +0 -1
  170. package/dist/backend/__tests__/direct-bootstrap.test.js +0 -177
  171. package/dist/backend/__tests__/direct-bootstrap.test.js.map +0 -1
  172. package/dist/backend/__tests__/mock-backend.test.d.ts +0 -7
  173. package/dist/backend/__tests__/mock-backend.test.d.ts.map +0 -1
  174. package/dist/backend/__tests__/mock-backend.test.js +0 -273
  175. package/dist/backend/__tests__/mock-backend.test.js.map +0 -1
  176. package/dist/backend/__tests__/parity.test.d.ts +0 -17
  177. package/dist/backend/__tests__/parity.test.d.ts.map +0 -1
  178. package/dist/backend/__tests__/parity.test.js +0 -411
  179. package/dist/backend/__tests__/parity.test.js.map +0 -1
  180. package/dist/context/__tests__/auto-summarizer.test.d.ts +0 -14
  181. package/dist/context/__tests__/auto-summarizer.test.d.ts.map +0 -1
  182. package/dist/context/__tests__/auto-summarizer.test.js +0 -189
  183. package/dist/context/__tests__/auto-summarizer.test.js.map +0 -1
  184. package/dist/context/__tests__/context-cli-command.test.d.ts +0 -7
  185. package/dist/context/__tests__/context-cli-command.test.d.ts.map +0 -1
  186. package/dist/context/__tests__/context-cli-command.test.js +0 -331
  187. package/dist/context/__tests__/context-cli-command.test.js.map +0 -1
  188. package/dist/context/__tests__/pyramid-summary-integration.test.d.ts +0 -2
  189. package/dist/context/__tests__/pyramid-summary-integration.test.d.ts.map +0 -1
  190. package/dist/context/__tests__/pyramid-summary-integration.test.js +0 -533
  191. package/dist/context/__tests__/pyramid-summary-integration.test.js.map +0 -1
  192. package/dist/context/__tests__/summarizer.test.d.ts +0 -2
  193. package/dist/context/__tests__/summarizer.test.d.ts.map +0 -1
  194. package/dist/context/__tests__/summarizer.test.js +0 -189
  195. package/dist/context/__tests__/summarizer.test.js.map +0 -1
  196. package/dist/context/__tests__/summary-cache.test.d.ts +0 -2
  197. package/dist/context/__tests__/summary-cache.test.d.ts.map +0 -1
  198. package/dist/context/__tests__/summary-cache.test.js +0 -214
  199. package/dist/context/__tests__/summary-cache.test.js.map +0 -1
  200. package/dist/context/__tests__/summary-metrics.test.d.ts +0 -2
  201. package/dist/context/__tests__/summary-metrics.test.d.ts.map +0 -1
  202. package/dist/context/__tests__/summary-metrics.test.js +0 -172
  203. package/dist/context/__tests__/summary-metrics.test.js.map +0 -1
  204. package/dist/context/__tests__/summary-types.test.d.ts +0 -2
  205. package/dist/context/__tests__/summary-types.test.d.ts.map +0 -1
  206. package/dist/context/__tests__/summary-types.test.js +0 -130
  207. package/dist/context/__tests__/summary-types.test.js.map +0 -1
  208. package/dist/convergence/__tests__/budget.test.d.ts +0 -6
  209. package/dist/convergence/__tests__/budget.test.d.ts.map +0 -1
  210. package/dist/convergence/__tests__/budget.test.js +0 -187
  211. package/dist/convergence/__tests__/budget.test.js.map +0 -1
  212. package/dist/convergence/__tests__/controller.test.d.ts +0 -9
  213. package/dist/convergence/__tests__/controller.test.d.ts.map +0 -1
  214. package/dist/convergence/__tests__/controller.test.js +0 -585
  215. package/dist/convergence/__tests__/controller.test.js.map +0 -1
  216. package/dist/convergence/__tests__/dual-signal.test.d.ts +0 -14
  217. package/dist/convergence/__tests__/dual-signal.test.d.ts.map +0 -1
  218. package/dist/convergence/__tests__/dual-signal.test.js +0 -123
  219. package/dist/convergence/__tests__/dual-signal.test.js.map +0 -1
  220. package/dist/convergence/__tests__/epic46-integration.test.d.ts +0 -15
  221. package/dist/convergence/__tests__/epic46-integration.test.d.ts.map +0 -1
  222. package/dist/convergence/__tests__/epic46-integration.test.js +0 -522
  223. package/dist/convergence/__tests__/epic46-integration.test.js.map +0 -1
  224. package/dist/convergence/__tests__/plateau.test.d.ts +0 -6
  225. package/dist/convergence/__tests__/plateau.test.d.ts.map +0 -1
  226. package/dist/convergence/__tests__/plateau.test.js +0 -163
  227. package/dist/convergence/__tests__/plateau.test.js.map +0 -1
  228. package/dist/convergence/__tests__/remediation.test.d.ts +0 -11
  229. package/dist/convergence/__tests__/remediation.test.d.ts.map +0 -1
  230. package/dist/convergence/__tests__/remediation.test.js +0 -209
  231. package/dist/convergence/__tests__/remediation.test.js.map +0 -1
  232. package/dist/convergence/__tests__/scenario-primary.test.d.ts +0 -13
  233. package/dist/convergence/__tests__/scenario-primary.test.d.ts.map +0 -1
  234. package/dist/convergence/__tests__/scenario-primary.test.js +0 -183
  235. package/dist/convergence/__tests__/scenario-primary.test.js.map +0 -1
  236. package/dist/factory-command.test.d.ts +0 -8
  237. package/dist/factory-command.test.d.ts.map +0 -1
  238. package/dist/factory-command.test.js +0 -304
  239. package/dist/factory-command.test.js.map +0 -1
  240. package/dist/graph/__tests__/attractor-compliance.test.d.ts +0 -10
  241. package/dist/graph/__tests__/attractor-compliance.test.d.ts.map +0 -1
  242. package/dist/graph/__tests__/attractor-compliance.test.js +0 -766
  243. package/dist/graph/__tests__/attractor-compliance.test.js.map +0 -1
  244. package/dist/graph/__tests__/checkpoint.test.d.ts +0 -8
  245. package/dist/graph/__tests__/checkpoint.test.d.ts.map +0 -1
  246. package/dist/graph/__tests__/checkpoint.test.js +0 -329
  247. package/dist/graph/__tests__/checkpoint.test.js.map +0 -1
  248. package/dist/graph/__tests__/condition-parser.test.d.ts +0 -14
  249. package/dist/graph/__tests__/condition-parser.test.d.ts.map +0 -1
  250. package/dist/graph/__tests__/condition-parser.test.js +0 -406
  251. package/dist/graph/__tests__/condition-parser.test.js.map +0 -1
  252. package/dist/graph/__tests__/context.test.d.ts +0 -14
  253. package/dist/graph/__tests__/context.test.d.ts.map +0 -1
  254. package/dist/graph/__tests__/context.test.js +0 -276
  255. package/dist/graph/__tests__/context.test.js.map +0 -1
  256. package/dist/graph/__tests__/edge-selector-events.test.d.ts +0 -11
  257. package/dist/graph/__tests__/edge-selector-events.test.d.ts.map +0 -1
  258. package/dist/graph/__tests__/edge-selector-events.test.js +0 -184
  259. package/dist/graph/__tests__/edge-selector-events.test.js.map +0 -1
  260. package/dist/graph/__tests__/edge-selector.test.d.ts +0 -6
  261. package/dist/graph/__tests__/edge-selector.test.d.ts.map +0 -1
  262. package/dist/graph/__tests__/edge-selector.test.js +0 -452
  263. package/dist/graph/__tests__/edge-selector.test.js.map +0 -1
  264. package/dist/graph/__tests__/executor-convergence.test.d.ts +0 -12
  265. package/dist/graph/__tests__/executor-convergence.test.d.ts.map +0 -1
  266. package/dist/graph/__tests__/executor-convergence.test.js +0 -432
  267. package/dist/graph/__tests__/executor-convergence.test.js.map +0 -1
  268. package/dist/graph/__tests__/executor-fidelity.test.d.ts +0 -13
  269. package/dist/graph/__tests__/executor-fidelity.test.d.ts.map +0 -1
  270. package/dist/graph/__tests__/executor-fidelity.test.js +0 -335
  271. package/dist/graph/__tests__/executor-fidelity.test.js.map +0 -1
  272. package/dist/graph/__tests__/executor.test.d.ts +0 -14
  273. package/dist/graph/__tests__/executor.test.d.ts.map +0 -1
  274. package/dist/graph/__tests__/executor.test.js +0 -901
  275. package/dist/graph/__tests__/executor.test.js.map +0 -1
  276. package/dist/graph/__tests__/fidelity.test.d.ts +0 -8
  277. package/dist/graph/__tests__/fidelity.test.d.ts.map +0 -1
  278. package/dist/graph/__tests__/fidelity.test.js +0 -135
  279. package/dist/graph/__tests__/fidelity.test.js.map +0 -1
  280. package/dist/graph/__tests__/llm-evaluator.test.d.ts +0 -7
  281. package/dist/graph/__tests__/llm-evaluator.test.d.ts.map +0 -1
  282. package/dist/graph/__tests__/llm-evaluator.test.js +0 -106
  283. package/dist/graph/__tests__/llm-evaluator.test.js.map +0 -1
  284. package/dist/graph/__tests__/parser-chaining.test.d.ts +0 -13
  285. package/dist/graph/__tests__/parser-chaining.test.d.ts.map +0 -1
  286. package/dist/graph/__tests__/parser-chaining.test.js +0 -215
  287. package/dist/graph/__tests__/parser-chaining.test.js.map +0 -1
  288. package/dist/graph/__tests__/parser.test.d.ts +0 -22
  289. package/dist/graph/__tests__/parser.test.d.ts.map +0 -1
  290. package/dist/graph/__tests__/parser.test.js +0 -452
  291. package/dist/graph/__tests__/parser.test.js.map +0 -1
  292. package/dist/graph/__tests__/run-state.test.d.ts +0 -13
  293. package/dist/graph/__tests__/run-state.test.d.ts.map +0 -1
  294. package/dist/graph/__tests__/run-state.test.js +0 -189
  295. package/dist/graph/__tests__/run-state.test.js.map +0 -1
  296. package/dist/graph/__tests__/transformer.test.d.ts +0 -16
  297. package/dist/graph/__tests__/transformer.test.d.ts.map +0 -1
  298. package/dist/graph/__tests__/transformer.test.js +0 -350
  299. package/dist/graph/__tests__/transformer.test.js.map +0 -1
  300. package/dist/graph/__tests__/validator-errors.test.d.ts +0 -15
  301. package/dist/graph/__tests__/validator-errors.test.d.ts.map +0 -1
  302. package/dist/graph/__tests__/validator-errors.test.js +0 -572
  303. package/dist/graph/__tests__/validator-errors.test.js.map +0 -1
  304. package/dist/graph/__tests__/validator-warnings.test.d.ts +0 -15
  305. package/dist/graph/__tests__/validator-warnings.test.d.ts.map +0 -1
  306. package/dist/graph/__tests__/validator-warnings.test.js +0 -363
  307. package/dist/graph/__tests__/validator-warnings.test.js.map +0 -1
  308. package/dist/handlers/__tests__/codergen-handler.test.d.ts +0 -14
  309. package/dist/handlers/__tests__/codergen-handler.test.d.ts.map +0 -1
  310. package/dist/handlers/__tests__/codergen-handler.test.js +0 -442
  311. package/dist/handlers/__tests__/codergen-handler.test.js.map +0 -1
  312. package/dist/handlers/__tests__/fan-in.test.d.ts +0 -14
  313. package/dist/handlers/__tests__/fan-in.test.d.ts.map +0 -1
  314. package/dist/handlers/__tests__/fan-in.test.js +0 -399
  315. package/dist/handlers/__tests__/fan-in.test.js.map +0 -1
  316. package/dist/handlers/__tests__/join-policy.test.d.ts +0 -9
  317. package/dist/handlers/__tests__/join-policy.test.d.ts.map +0 -1
  318. package/dist/handlers/__tests__/join-policy.test.js +0 -201
  319. package/dist/handlers/__tests__/join-policy.test.js.map +0 -1
  320. package/dist/handlers/__tests__/manager-loop.test.d.ts +0 -14
  321. package/dist/handlers/__tests__/manager-loop.test.d.ts.map +0 -1
  322. package/dist/handlers/__tests__/manager-loop.test.js +0 -322
  323. package/dist/handlers/__tests__/manager-loop.test.js.map +0 -1
  324. package/dist/handlers/__tests__/parallel-events.test.d.ts +0 -12
  325. package/dist/handlers/__tests__/parallel-events.test.d.ts.map +0 -1
  326. package/dist/handlers/__tests__/parallel-events.test.js +0 -252
  327. package/dist/handlers/__tests__/parallel-events.test.js.map +0 -1
  328. package/dist/handlers/__tests__/parallel-handler.test.d.ts +0 -14
  329. package/dist/handlers/__tests__/parallel-handler.test.d.ts.map +0 -1
  330. package/dist/handlers/__tests__/parallel-handler.test.js +0 -337
  331. package/dist/handlers/__tests__/parallel-handler.test.js.map +0 -1
  332. package/dist/handlers/__tests__/parallel-join.test.d.ts +0 -9
  333. package/dist/handlers/__tests__/parallel-join.test.d.ts.map +0 -1
  334. package/dist/handlers/__tests__/parallel-join.test.js +0 -267
  335. package/dist/handlers/__tests__/parallel-join.test.js.map +0 -1
  336. package/dist/handlers/__tests__/registry.test.d.ts +0 -14
  337. package/dist/handlers/__tests__/registry.test.d.ts.map +0 -1
  338. package/dist/handlers/__tests__/registry.test.js +0 -315
  339. package/dist/handlers/__tests__/registry.test.js.map +0 -1
  340. package/dist/handlers/__tests__/subgraph-events.test.d.ts +0 -10
  341. package/dist/handlers/__tests__/subgraph-events.test.d.ts.map +0 -1
  342. package/dist/handlers/__tests__/subgraph-events.test.js +0 -189
  343. package/dist/handlers/__tests__/subgraph-events.test.js.map +0 -1
  344. package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts +0 -14
  345. package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts.map +0 -1
  346. package/dist/handlers/__tests__/subgraph-inheritance.test.js +0 -267
  347. package/dist/handlers/__tests__/subgraph-inheritance.test.js.map +0 -1
  348. package/dist/handlers/__tests__/subgraph.test.d.ts +0 -14
  349. package/dist/handlers/__tests__/subgraph.test.d.ts.map +0 -1
  350. package/dist/handlers/__tests__/subgraph.test.js +0 -369
  351. package/dist/handlers/__tests__/subgraph.test.js.map +0 -1
  352. package/dist/handlers/__tests__/tool-handler.test.d.ts +0 -11
  353. package/dist/handlers/__tests__/tool-handler.test.d.ts.map +0 -1
  354. package/dist/handlers/__tests__/tool-handler.test.js +0 -184
  355. package/dist/handlers/__tests__/tool-handler.test.js.map +0 -1
  356. package/dist/handlers/__tests__/tool-scenario.test.d.ts +0 -12
  357. package/dist/handlers/__tests__/tool-scenario.test.d.ts.map +0 -1
  358. package/dist/handlers/__tests__/tool-scenario.test.js +0 -222
  359. package/dist/handlers/__tests__/tool-scenario.test.js.map +0 -1
  360. package/dist/handlers/__tests__/wait-human-handler.test.d.ts +0 -11
  361. package/dist/handlers/__tests__/wait-human-handler.test.d.ts.map +0 -1
  362. package/dist/handlers/__tests__/wait-human-handler.test.js +0 -251
  363. package/dist/handlers/__tests__/wait-human-handler.test.js.map +0 -1
  364. package/dist/llm/__tests__/client.test.d.ts +0 -2
  365. package/dist/llm/__tests__/client.test.d.ts.map +0 -1
  366. package/dist/llm/__tests__/client.test.js +0 -198
  367. package/dist/llm/__tests__/client.test.js.map +0 -1
  368. package/dist/llm/__tests__/types.test.d.ts +0 -2
  369. package/dist/llm/__tests__/types.test.d.ts.map +0 -1
  370. package/dist/llm/__tests__/types.test.js +0 -289
  371. package/dist/llm/__tests__/types.test.js.map +0 -1
  372. package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts +0 -2
  373. package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts.map +0 -1
  374. package/dist/llm/middleware/__tests__/cost-tracking.test.js +0 -73
  375. package/dist/llm/middleware/__tests__/cost-tracking.test.js.map +0 -1
  376. package/dist/llm/middleware/__tests__/logging.test.d.ts +0 -2
  377. package/dist/llm/middleware/__tests__/logging.test.d.ts.map +0 -1
  378. package/dist/llm/middleware/__tests__/logging.test.js +0 -127
  379. package/dist/llm/middleware/__tests__/logging.test.js.map +0 -1
  380. package/dist/llm/middleware/__tests__/retry.test.d.ts +0 -2
  381. package/dist/llm/middleware/__tests__/retry.test.d.ts.map +0 -1
  382. package/dist/llm/middleware/__tests__/retry.test.js +0 -126
  383. package/dist/llm/middleware/__tests__/retry.test.js.map +0 -1
  384. package/dist/llm/providers/__tests__/anthropic.test.d.ts +0 -2
  385. package/dist/llm/providers/__tests__/anthropic.test.d.ts.map +0 -1
  386. package/dist/llm/providers/__tests__/anthropic.test.js +0 -412
  387. package/dist/llm/providers/__tests__/anthropic.test.js.map +0 -1
  388. package/dist/llm/providers/__tests__/gemini.test.d.ts +0 -2
  389. package/dist/llm/providers/__tests__/gemini.test.d.ts.map +0 -1
  390. package/dist/llm/providers/__tests__/gemini.test.js +0 -591
  391. package/dist/llm/providers/__tests__/gemini.test.js.map +0 -1
  392. package/dist/llm/providers/__tests__/openai.test.d.ts +0 -2
  393. package/dist/llm/providers/__tests__/openai.test.d.ts.map +0 -1
  394. package/dist/llm/providers/__tests__/openai.test.js +0 -546
  395. package/dist/llm/providers/__tests__/openai.test.js.map +0 -1
  396. package/dist/persistence/__tests__/factory-queries.test.d.ts +0 -9
  397. package/dist/persistence/__tests__/factory-queries.test.d.ts.map +0 -1
  398. package/dist/persistence/__tests__/factory-queries.test.js +0 -372
  399. package/dist/persistence/__tests__/factory-queries.test.js.map +0 -1
  400. package/dist/persistence/__tests__/factory-schema.test.d.ts +0 -6
  401. package/dist/persistence/__tests__/factory-schema.test.d.ts.map +0 -1
  402. package/dist/persistence/__tests__/factory-schema.test.js +0 -105
  403. package/dist/persistence/__tests__/factory-schema.test.js.map +0 -1
  404. package/dist/scenarios/__tests__/cli-command-list.test.d.ts +0 -7
  405. package/dist/scenarios/__tests__/cli-command-list.test.d.ts.map +0 -1
  406. package/dist/scenarios/__tests__/cli-command-list.test.js +0 -237
  407. package/dist/scenarios/__tests__/cli-command-list.test.js.map +0 -1
  408. package/dist/scenarios/__tests__/cli-command.test.d.ts +0 -11
  409. package/dist/scenarios/__tests__/cli-command.test.d.ts.map +0 -1
  410. package/dist/scenarios/__tests__/cli-command.test.js +0 -275
  411. package/dist/scenarios/__tests__/cli-command.test.js.map +0 -1
  412. package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts +0 -15
  413. package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts.map +0 -1
  414. package/dist/scenarios/__tests__/integrity-pipeline.test.js +0 -318
  415. package/dist/scenarios/__tests__/integrity-pipeline.test.js.map +0 -1
  416. package/dist/scenarios/__tests__/runner-twins.test.d.ts +0 -13
  417. package/dist/scenarios/__tests__/runner-twins.test.d.ts.map +0 -1
  418. package/dist/scenarios/__tests__/runner-twins.test.js +0 -205
  419. package/dist/scenarios/__tests__/runner-twins.test.js.map +0 -1
  420. package/dist/scenarios/__tests__/scorer.test.d.ts +0 -11
  421. package/dist/scenarios/__tests__/scorer.test.d.ts.map +0 -1
  422. package/dist/scenarios/__tests__/scorer.test.js +0 -225
  423. package/dist/scenarios/__tests__/scorer.test.js.map +0 -1
  424. package/dist/scenarios/__tests__/scoring-integration.test.d.ts +0 -8
  425. package/dist/scenarios/__tests__/scoring-integration.test.d.ts.map +0 -1
  426. package/dist/scenarios/__tests__/scoring-integration.test.js +0 -178
  427. package/dist/scenarios/__tests__/scoring-integration.test.js.map +0 -1
  428. package/dist/scenarios/__tests__/store.test.d.ts +0 -5
  429. package/dist/scenarios/__tests__/store.test.d.ts.map +0 -1
  430. package/dist/scenarios/__tests__/store.test.js +0 -169
  431. package/dist/scenarios/__tests__/store.test.js.map +0 -1
  432. package/dist/stylesheet/__tests__/stylesheet.test.d.ts +0 -17
  433. package/dist/stylesheet/__tests__/stylesheet.test.d.ts.map +0 -1
  434. package/dist/stylesheet/__tests__/stylesheet.test.js +0 -368
  435. package/dist/stylesheet/__tests__/stylesheet.test.js.map +0 -1
  436. package/dist/templates/__tests__/templates.test.d.ts +0 -7
  437. package/dist/templates/__tests__/templates.test.d.ts.map +0 -1
  438. package/dist/templates/__tests__/templates.test.js +0 -92
  439. package/dist/templates/__tests__/templates.test.js.map +0 -1
  440. package/dist/twins/__tests__/docker-compose.test.d.ts +0 -13
  441. package/dist/twins/__tests__/docker-compose.test.d.ts.map +0 -1
  442. package/dist/twins/__tests__/docker-compose.test.js +0 -247
  443. package/dist/twins/__tests__/docker-compose.test.js.map +0 -1
  444. package/dist/twins/__tests__/health-monitor.test.d.ts +0 -19
  445. package/dist/twins/__tests__/health-monitor.test.d.ts.map +0 -1
  446. package/dist/twins/__tests__/health-monitor.test.js +0 -301
  447. package/dist/twins/__tests__/health-monitor.test.js.map +0 -1
  448. package/dist/twins/__tests__/integration/e2e.test.d.ts +0 -18
  449. package/dist/twins/__tests__/integration/e2e.test.d.ts.map +0 -1
  450. package/dist/twins/__tests__/integration/e2e.test.js +0 -146
  451. package/dist/twins/__tests__/integration/e2e.test.js.map +0 -1
  452. package/dist/twins/__tests__/integration/health-monitor-integration.test.d.ts +0 -16
  453. package/dist/twins/__tests__/integration/health-monitor-integration.test.d.ts.map +0 -1
  454. package/dist/twins/__tests__/integration/health-monitor-integration.test.js +0 -183
  455. package/dist/twins/__tests__/integration/health-monitor-integration.test.js.map +0 -1
  456. package/dist/twins/__tests__/integration/helpers.d.ts +0 -32
  457. package/dist/twins/__tests__/integration/helpers.d.ts.map +0 -1
  458. package/dist/twins/__tests__/integration/helpers.js +0 -67
  459. package/dist/twins/__tests__/integration/helpers.js.map +0 -1
  460. package/dist/twins/__tests__/integration/lifecycle.test.d.ts +0 -14
  461. package/dist/twins/__tests__/integration/lifecycle.test.d.ts.map +0 -1
  462. package/dist/twins/__tests__/integration/lifecycle.test.js +0 -127
  463. package/dist/twins/__tests__/integration/lifecycle.test.js.map +0 -1
  464. package/dist/twins/__tests__/integration/persistence-integration.test.d.ts +0 -14
  465. package/dist/twins/__tests__/integration/persistence-integration.test.d.ts.map +0 -1
  466. package/dist/twins/__tests__/integration/persistence-integration.test.js +0 -132
  467. package/dist/twins/__tests__/integration/persistence-integration.test.js.map +0 -1
  468. package/dist/twins/__tests__/persistence.test.d.ts +0 -10
  469. package/dist/twins/__tests__/persistence.test.d.ts.map +0 -1
  470. package/dist/twins/__tests__/persistence.test.js +0 -300
  471. package/dist/twins/__tests__/persistence.test.js.map +0 -1
  472. package/dist/twins/__tests__/registry.test.d.ts +0 -7
  473. package/dist/twins/__tests__/registry.test.d.ts.map +0 -1
  474. package/dist/twins/__tests__/registry.test.js +0 -282
  475. package/dist/twins/__tests__/registry.test.js.map +0 -1
  476. package/dist/twins/__tests__/run-state.test.d.ts +0 -9
  477. package/dist/twins/__tests__/run-state.test.d.ts.map +0 -1
  478. package/dist/twins/__tests__/run-state.test.js +0 -112
  479. package/dist/twins/__tests__/run-state.test.js.map +0 -1
  480. package/dist/twins/__tests__/templates-cli.test.d.ts +0 -10
  481. package/dist/twins/__tests__/templates-cli.test.d.ts.map +0 -1
  482. package/dist/twins/__tests__/templates-cli.test.js +0 -187
  483. package/dist/twins/__tests__/templates-cli.test.js.map +0 -1
  484. package/dist/twins/__tests__/templates.test.d.ts +0 -7
  485. package/dist/twins/__tests__/templates.test.d.ts.map +0 -1
  486. package/dist/twins/__tests__/templates.test.js +0 -87
  487. package/dist/twins/__tests__/templates.test.js.map +0 -1
  488. package/dist/twins/__tests__/twins-cli.test.d.ts +0 -11
  489. package/dist/twins/__tests__/twins-cli.test.d.ts.map +0 -1
  490. package/dist/twins/__tests__/twins-cli.test.js +0 -365
  491. 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"}