@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,339 +0,0 @@
1
- /**
2
- * Unit tests for `substrate factory validate` CLI subcommand.
3
- *
4
- * AC1 — Valid graph → "13/13 rules passed, 0 errors, 0 warnings", exit 0
5
- * AC2 — Error diagnostic → summary shows failing rule, lists diagnostic, exit 1
6
- * AC3 — Warning-only → lists warning, summary, exit 0
7
- * AC4 — --output-format json → JSON array of ValidationDiagnostic[], no summary
8
- * AC5 — Missing file → stderr "file not found", exit 2
9
- * AC6 — Malformed DOT → stderr "failed to parse graph", exit 2
10
- * AC7 — 2 diagnostics from 1 ruleId + 1 from another → correct unique-rule pass count
11
- *
12
- * Story 46-7.
13
- */
14
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
15
- import { Command } from 'commander';
16
- import { registerFactoryCommand } from '../factory-command.js';
17
- // ---------------------------------------------------------------------------
18
- // Module mocks (hoisted before imports in vitest)
19
- // ---------------------------------------------------------------------------
20
- vi.mock('node:fs/promises', () => ({
21
- readFile: vi.fn(),
22
- }));
23
- vi.mock('../graph/parser.js', () => ({
24
- parseGraph: vi.fn(),
25
- }));
26
- vi.mock('../graph/validator.js', () => ({
27
- createValidator: vi.fn(() => ({
28
- validate: vi.fn().mockReturnValue([]),
29
- validateOrRaise: vi.fn(),
30
- registerRule: vi.fn(),
31
- })),
32
- }));
33
- vi.mock('../graph/executor.js', () => ({
34
- createGraphExecutor: vi.fn(),
35
- }));
36
- vi.mock('../handlers/index.js', () => ({
37
- createDefaultRegistry: vi.fn(),
38
- HandlerRegistry: vi.fn(),
39
- }));
40
- vi.mock('../config.js', () => ({
41
- loadFactoryConfig: vi.fn(),
42
- }));
43
- vi.mock('../scenarios/cli-command.js', () => ({
44
- registerScenariosCommand: vi.fn(),
45
- }));
46
- vi.mock('../graph/run-state.js', () => ({
47
- RunStateManager: vi.fn().mockImplementation(() => ({
48
- initRun: vi.fn().mockResolvedValue(undefined),
49
- writeNodeArtifacts: vi.fn().mockResolvedValue(undefined),
50
- writeScenarioIteration: vi.fn().mockResolvedValue(undefined),
51
- })),
52
- }));
53
- // ---------------------------------------------------------------------------
54
- // Helpers
55
- // ---------------------------------------------------------------------------
56
- /** Minimal mock graph */
57
- const mockGraph = {
58
- nodes: new Map([
59
- ['start', { id: 'start', type: 'start', label: 'Start' }],
60
- ['exit', { id: 'exit', type: 'exit', label: 'Exit' }],
61
- ]),
62
- edges: [],
63
- startNode: () => ({ id: 'start', type: 'start', label: 'Start' }),
64
- exitNode: () => ({ id: 'exit', type: 'exit', label: 'Exit' }),
65
- };
66
- /**
67
- * Run `substrate factory validate <graphFile> [...extraArgs]`
68
- * via a fresh Commander program instance.
69
- */
70
- async function runValidateCmd(graphFile, extraArgs = []) {
71
- const program = new Command();
72
- program.exitOverride();
73
- registerFactoryCommand(program);
74
- await program.parseAsync(['node', 'substrate', 'factory', 'validate', graphFile, ...extraArgs]);
75
- }
76
- // ---------------------------------------------------------------------------
77
- // Tests
78
- // ---------------------------------------------------------------------------
79
- describe('substrate factory validate command', () => {
80
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
81
- let stderrSpy;
82
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
- let stdoutSpy;
84
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
- let exitSpy;
86
- beforeEach(async () => {
87
- vi.clearAllMocks();
88
- stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
89
- stdoutSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
90
- exitSpy = vi.spyOn(process, 'exit').mockImplementation((() => {
91
- throw new Error('process.exit called');
92
- }));
93
- // Default happy-path: file reads successfully, graph parses, no diagnostics
94
- const { readFile } = await import('node:fs/promises');
95
- vi.mocked(readFile).mockResolvedValue('digraph G { start -> exit }');
96
- const { parseGraph } = await import('../graph/parser.js');
97
- vi.mocked(parseGraph).mockReturnValue(mockGraph);
98
- const { createValidator } = await import('../graph/validator.js');
99
- vi.mocked(createValidator).mockReturnValue({
100
- validate: vi.fn().mockReturnValue([]),
101
- validateOrRaise: vi.fn(),
102
- registerRule: vi.fn(),
103
- });
104
- });
105
- afterEach(() => {
106
- vi.restoreAllMocks();
107
- });
108
- // -------------------------------------------------------------------------
109
- // AC1: Valid graph reports full pass
110
- // -------------------------------------------------------------------------
111
- it('AC1: valid graph prints "13/13 rules passed, 0 errors, 0 warnings" and exits 0', async () => {
112
- await runValidateCmd('pipeline.dot');
113
- const output = vi
114
- .mocked(process.stdout.write)
115
- .mock.calls.map((args) => String(args[0]))
116
- .join('');
117
- expect(output).toContain('13/13 rules passed, 0 errors, 0 warnings');
118
- expect(exitSpy).not.toHaveBeenCalled();
119
- });
120
- // -------------------------------------------------------------------------
121
- // AC2: Error diagnostics reported with non-zero exit
122
- // -------------------------------------------------------------------------
123
- it('AC2: error diagnostic — lists diagnostic with ruleId and exits with code 1', async () => {
124
- const { createValidator } = await import('../graph/validator.js');
125
- vi.mocked(createValidator).mockReturnValue({
126
- validate: vi.fn().mockReturnValue([
127
- {
128
- ruleId: 'start_node',
129
- severity: 'error',
130
- message: 'Expected exactly one start node, found 2',
131
- },
132
- ]),
133
- validateOrRaise: vi.fn(),
134
- registerRule: vi.fn(),
135
- });
136
- await expect(runValidateCmd('pipeline.dot')).rejects.toThrow('process.exit called');
137
- const output = vi
138
- .mocked(process.stdout.write)
139
- .mock.calls.map((args) => String(args[0]))
140
- .join('');
141
- expect(output).toContain('error');
142
- expect(output).toContain('start_node');
143
- expect(output).toContain('12/13 rules passed, 1 error, 0 warnings');
144
- expect(exitSpy).toHaveBeenCalledWith(1);
145
- });
146
- // -------------------------------------------------------------------------
147
- // AC3: Warning-only graphs exit 0
148
- // -------------------------------------------------------------------------
149
- it('AC3: warning-only graph lists warning, shows summary, and exits 0', async () => {
150
- const { createValidator } = await import('../graph/validator.js');
151
- vi.mocked(createValidator).mockReturnValue({
152
- validate: vi.fn().mockReturnValue([
153
- {
154
- ruleId: 'prompt_on_llm_nodes',
155
- severity: 'warning',
156
- message: "Codergen node 'generate' has no prompt or label",
157
- nodeId: 'generate',
158
- },
159
- ]),
160
- validateOrRaise: vi.fn(),
161
- registerRule: vi.fn(),
162
- });
163
- await runValidateCmd('pipeline.dot');
164
- const output = vi
165
- .mocked(process.stdout.write)
166
- .mock.calls.map((args) => String(args[0]))
167
- .join('');
168
- expect(output).toContain('warning');
169
- expect(output).toContain('prompt_on_llm_nodes');
170
- expect(output).toContain('12/13 rules passed');
171
- expect(output).toContain('0 errors');
172
- expect(output).toContain('1 warning');
173
- expect(exitSpy).not.toHaveBeenCalled();
174
- });
175
- // -------------------------------------------------------------------------
176
- // AC4: JSON output format emits ValidationDiagnostic array
177
- // -------------------------------------------------------------------------
178
- it('AC4: --output-format json with error diagnostic emits JSON array', async () => {
179
- const diagnostic = {
180
- ruleId: 'start_node',
181
- severity: 'error',
182
- message: 'Expected exactly one start node, found 2',
183
- };
184
- const { createValidator } = await import('../graph/validator.js');
185
- vi.mocked(createValidator).mockReturnValue({
186
- validate: vi.fn().mockReturnValue([diagnostic]),
187
- validateOrRaise: vi.fn(),
188
- registerRule: vi.fn(),
189
- });
190
- await expect(runValidateCmd('pipeline.dot', ['--output-format', 'json'])).rejects.toThrow('process.exit called');
191
- const output = vi
192
- .mocked(process.stdout.write)
193
- .mock.calls.map((args) => String(args[0]))
194
- .join('');
195
- const parsed = JSON.parse(output);
196
- expect(Array.isArray(parsed)).toBe(true);
197
- expect(parsed).toHaveLength(1);
198
- expect(parsed[0]).toMatchObject({
199
- ruleId: 'start_node',
200
- severity: 'error',
201
- message: 'Expected exactly one start node, found 2',
202
- });
203
- });
204
- it('AC4: --output-format json with valid graph emits empty array []', async () => {
205
- await runValidateCmd('pipeline.dot', ['--output-format', 'json']);
206
- const output = vi
207
- .mocked(process.stdout.write)
208
- .mock.calls.map((args) => String(args[0]))
209
- .join('');
210
- const parsed = JSON.parse(output);
211
- expect(Array.isArray(parsed)).toBe(true);
212
- expect(parsed).toHaveLength(0);
213
- expect(exitSpy).not.toHaveBeenCalled();
214
- });
215
- it('AC4: --output-format json does not print summary line', async () => {
216
- await runValidateCmd('pipeline.dot', ['--output-format', 'json']);
217
- const output = vi
218
- .mocked(process.stdout.write)
219
- .mock.calls.map((args) => String(args[0]))
220
- .join('');
221
- expect(output).not.toContain('rules passed');
222
- });
223
- // -------------------------------------------------------------------------
224
- // AC5: Missing file exits with code 2
225
- // -------------------------------------------------------------------------
226
- it('AC5: file not found prints error to stderr and exits with code 2', async () => {
227
- const { readFile } = await import('node:fs/promises');
228
- vi.mocked(readFile).mockRejectedValue(Object.assign(new Error('ENOENT: no such file'), { code: 'ENOENT' }));
229
- await expect(runValidateCmd('missing.dot')).rejects.toThrow('process.exit called');
230
- const stderrOutput = vi
231
- .mocked(process.stderr.write)
232
- .mock.calls.map((args) => String(args[0]))
233
- .join('');
234
- expect(stderrOutput).toContain('file not found: missing.dot');
235
- expect(exitSpy).toHaveBeenCalledWith(2);
236
- });
237
- // -------------------------------------------------------------------------
238
- // AC6: Malformed DOT file parse error exits with code 2
239
- // -------------------------------------------------------------------------
240
- it('AC6: malformed DOT file prints parse error to stderr and exits with code 2', async () => {
241
- const { parseGraph } = await import('../graph/parser.js');
242
- vi.mocked(parseGraph).mockImplementation(() => {
243
- throw new Error('unexpected token at line 3');
244
- });
245
- await expect(runValidateCmd('bad.dot')).rejects.toThrow('process.exit called');
246
- const stderrOutput = vi
247
- .mocked(process.stderr.write)
248
- .mock.calls.map((args) => String(args[0]))
249
- .join('');
250
- expect(stderrOutput).toContain('failed to parse graph: unexpected token at line 3');
251
- expect(exitSpy).toHaveBeenCalledWith(2);
252
- });
253
- // -------------------------------------------------------------------------
254
- // AC7: Summary counts reflect unique fired rules
255
- // -------------------------------------------------------------------------
256
- it('AC7: 2 diagnostics from 1 ruleId + 1 from another → "11/13 rules passed, 1 error, 1 warning"', async () => {
257
- const { createValidator } = await import('../graph/validator.js');
258
- vi.mocked(createValidator).mockReturnValue({
259
- validate: vi.fn().mockReturnValue([
260
- // Two diagnostics from the same ruleId 'reachability' (1 unique rule)
261
- {
262
- ruleId: 'reachability',
263
- severity: 'error',
264
- message: 'Node "orphan1" is unreachable',
265
- nodeId: 'orphan1',
266
- },
267
- {
268
- ruleId: 'reachability',
269
- severity: 'error',
270
- message: 'Node "orphan2" is unreachable',
271
- nodeId: 'orphan2',
272
- },
273
- // One diagnostic from 'fidelity_valid' (1 unique rule)
274
- {
275
- ruleId: 'fidelity_valid',
276
- severity: 'warning',
277
- message: "Node 'x' has unrecognised fidelity value",
278
- nodeId: 'x',
279
- },
280
- ]),
281
- validateOrRaise: vi.fn(),
282
- registerRule: vi.fn(),
283
- });
284
- await expect(runValidateCmd('pipeline.dot')).rejects.toThrow('process.exit called');
285
- const output = vi
286
- .mocked(process.stdout.write)
287
- .mock.calls.map((args) => String(args[0]))
288
- .join('');
289
- // 13 - 2 unique ruleIds = 11 passed
290
- expect(output).toContain('11/13 rules passed, 2 errors, 1 warning');
291
- expect(exitSpy).toHaveBeenCalledWith(1);
292
- });
293
- // -------------------------------------------------------------------------
294
- // Additional: node/edge annotation in text output
295
- // -------------------------------------------------------------------------
296
- it('text output includes [node: <id>] annotation when nodeId is present', async () => {
297
- const { createValidator } = await import('../graph/validator.js');
298
- vi.mocked(createValidator).mockReturnValue({
299
- validate: vi.fn().mockReturnValue([
300
- {
301
- ruleId: 'prompt_on_llm_nodes',
302
- severity: 'warning',
303
- message: 'Missing prompt',
304
- nodeId: 'generate',
305
- },
306
- ]),
307
- validateOrRaise: vi.fn(),
308
- registerRule: vi.fn(),
309
- });
310
- await runValidateCmd('pipeline.dot');
311
- const output = vi
312
- .mocked(process.stdout.write)
313
- .mock.calls.map((args) => String(args[0]))
314
- .join('');
315
- expect(output).toContain('[node: generate]');
316
- });
317
- it('text output includes [edge: <index>] annotation when edgeIndex is present', async () => {
318
- const { createValidator } = await import('../graph/validator.js');
319
- vi.mocked(createValidator).mockReturnValue({
320
- validate: vi.fn().mockReturnValue([
321
- {
322
- ruleId: 'some_edge_rule',
323
- severity: 'warning',
324
- message: 'Edge condition problem',
325
- edgeIndex: 3,
326
- },
327
- ]),
328
- validateOrRaise: vi.fn(),
329
- registerRule: vi.fn(),
330
- });
331
- await runValidateCmd('pipeline.dot');
332
- const output = vi
333
- .mocked(process.stdout.write)
334
- .mock.calls.map((args) => String(args[0]))
335
- .join('');
336
- expect(output).toContain('[edge: 3]');
337
- });
338
- });
339
- //# sourceMappingURL=factory-validate-command.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory-validate-command.test.js","sourceRoot":"","sources":["../../src/__tests__/factory-validate-command.test.ts"],"names":[],"mappings":"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"}
@@ -1,72 +0,0 @@
1
- /**
2
- * DOT fixture strings for the advanced cross-project validation test.
3
- * Story 50-12.
4
- *
5
- * Node type strings verified via:
6
- * grep -rn "registry.register" packages/factory/src/handlers/registry.ts
7
- *
8
- * Registered types used here:
9
- * 'stack.manager_loop' – outer supervisor (story 50-8)
10
- * 'parallel' – fan-out node (story 50-1)
11
- * 'parallel.fan_in' – fan-in/merge node (story 50-2)
12
- * 'subgraph' – nested subgraph execution node (story 50-5)
13
- * 'codergen' – branch execution nodes
14
- * 'start' – start node
15
- * 'exit' – exit node
16
- *
17
- * Architecture note:
18
- * The manager_loop handler requires a `graph_file` attribute pointing to a
19
- * separate body DOT file. `parseGraph` does NOT populate `node.attrs`, so tests
20
- * must post-process the parsed graph:
21
- * outerGraph.nodes.get('manager_loop')!.attrs = {
22
- * graph_file: 'body.dot',
23
- * max_cycles: '3',
24
- * stop_condition: 'llm:has the implementation satisfied the acceptance criteria?',
25
- * }
26
- *
27
- * Similarly, subgraph nodes require:
28
- * bodyGraph.nodes.get('subgraph_node')!.attrs = { graph_file: 'child.dot' }
29
- * (handled by mock subgraph handler in tests — no post-processing needed).
30
- */
31
- import { parseGraph } from '../../graph/parser.js';
32
- /**
33
- * Outer graph: start → manager_loop → exit [condition="llm:..."]
34
- *
35
- * The manager_loop acts as the outermost supervisor. Its body (BODY_GRAPH_DOT)
36
- * is loaded via a mock graphFileLoader and contains the parallel fan-out/fan-in
37
- * with subgraph integration.
38
- *
39
- * Post-process after parseGraph:
40
- * graph.nodes.get('manager_loop')!.attrs = {
41
- * graph_file: 'body.dot',
42
- * max_cycles: '3',
43
- * stop_condition: 'llm:has the implementation satisfied the acceptance criteria?',
44
- * }
45
- */
46
- export declare const ADVANCED_VALIDATION_DOT = "\ndigraph advanced_cross_project {\n start [type=\"start\"];\n manager_loop [type=\"stack.manager_loop\", label=\"Supervised Loop\"];\n exit [type=\"exit\"];\n\n start -> manager_loop;\n manager_loop -> exit [condition=\"llm:has the implementation satisfied the acceptance criteria?\"];\n}\n";
47
- /**
48
- * Body graph: parallel fan-out/fan-in with subgraph integration.
49
- *
50
- * start → parallel_node fans out to [branch_a, branch_b]
51
- * branch_a runs, then main executor traverses branch_a → subgraph_node → fan_in
52
- * branch_b result is collected by fan_in
53
- * fan_in → exit [condition="llm:..."] — LLM-evaluated exit edge
54
- *
55
- * Handler types present: parallel, codergen, subgraph, parallel.fan_in
56
- */
57
- export declare const BODY_GRAPH_DOT = "\ndigraph manager_body {\n start [type=\"start\"];\n parallel_node [type=\"parallel\", label=\"Fan-out Branches\"];\n branch_a [type=\"codergen\", label=\"Implement approach A\"];\n subgraph_node [type=\"subgraph\", label=\"Run child pipeline\"];\n branch_b [type=\"codergen\", label=\"Implement approach B\"];\n fan_in [type=\"parallel.fan_in\", label=\"Best Candidate\"];\n exit [type=\"exit\"];\n\n start -> parallel_node;\n parallel_node -> branch_a;\n parallel_node -> branch_b;\n branch_a -> subgraph_node;\n subgraph_node -> fan_in;\n branch_b -> fan_in;\n fan_in -> exit [condition=\"llm:has the implementation satisfied the acceptance criteria?\"];\n}\n";
58
- /**
59
- * Minimal child graph: child_start → child_work → child_exit
60
- * Returned by mock graphFileLoader when subgraph_node requests 'child.dot'.
61
- */
62
- export declare const CHILD_GRAPH_DOT = "\ndigraph child_branch {\n child_start [type=\"start\"];\n child_work [type=\"codergen\", label=\"Implement in child context\"];\n child_exit [type=\"exit\"];\n\n child_start -> child_work;\n child_work -> child_exit;\n}\n";
63
- /**
64
- * Parse all three fixture DOT strings and throw if any parse fails.
65
- * Returns the three parsed graphs for downstream assertions.
66
- */
67
- export declare function validateFixtures(): {
68
- outerGraph: ReturnType<typeof parseGraph>;
69
- bodyGraph: ReturnType<typeof parseGraph>;
70
- childGraph: ReturnType<typeof parseGraph>;
71
- };
72
- //# sourceMappingURL=advanced-cross-project-validation.dot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"advanced-cross-project-validation.dot.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/advanced-cross-project-validation.dot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAMlD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,mUASnC,CAAA;AAMD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,ouBAkB1B,CAAA;AAMD;;;GAGG;AACH,eAAO,MAAM,eAAe,2OAS3B,CAAA;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,UAAU,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IACzC,SAAS,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IACxC,UAAU,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;CAC1C,CAKA"}
@@ -1,121 +0,0 @@
1
- /**
2
- * DOT fixture strings for the advanced cross-project validation test.
3
- * Story 50-12.
4
- *
5
- * Node type strings verified via:
6
- * grep -rn "registry.register" packages/factory/src/handlers/registry.ts
7
- *
8
- * Registered types used here:
9
- * 'stack.manager_loop' – outer supervisor (story 50-8)
10
- * 'parallel' – fan-out node (story 50-1)
11
- * 'parallel.fan_in' – fan-in/merge node (story 50-2)
12
- * 'subgraph' – nested subgraph execution node (story 50-5)
13
- * 'codergen' – branch execution nodes
14
- * 'start' – start node
15
- * 'exit' – exit node
16
- *
17
- * Architecture note:
18
- * The manager_loop handler requires a `graph_file` attribute pointing to a
19
- * separate body DOT file. `parseGraph` does NOT populate `node.attrs`, so tests
20
- * must post-process the parsed graph:
21
- * outerGraph.nodes.get('manager_loop')!.attrs = {
22
- * graph_file: 'body.dot',
23
- * max_cycles: '3',
24
- * stop_condition: 'llm:has the implementation satisfied the acceptance criteria?',
25
- * }
26
- *
27
- * Similarly, subgraph nodes require:
28
- * bodyGraph.nodes.get('subgraph_node')!.attrs = { graph_file: 'child.dot' }
29
- * (handled by mock subgraph handler in tests — no post-processing needed).
30
- */
31
- import { parseGraph } from '../../graph/parser.js';
32
- // ---------------------------------------------------------------------------
33
- // ADVANCED_VALIDATION_DOT — outer graph (manager_loop wrapper)
34
- // ---------------------------------------------------------------------------
35
- /**
36
- * Outer graph: start → manager_loop → exit [condition="llm:..."]
37
- *
38
- * The manager_loop acts as the outermost supervisor. Its body (BODY_GRAPH_DOT)
39
- * is loaded via a mock graphFileLoader and contains the parallel fan-out/fan-in
40
- * with subgraph integration.
41
- *
42
- * Post-process after parseGraph:
43
- * graph.nodes.get('manager_loop')!.attrs = {
44
- * graph_file: 'body.dot',
45
- * max_cycles: '3',
46
- * stop_condition: 'llm:has the implementation satisfied the acceptance criteria?',
47
- * }
48
- */
49
- export const ADVANCED_VALIDATION_DOT = `
50
- digraph advanced_cross_project {
51
- start [type="start"];
52
- manager_loop [type="stack.manager_loop", label="Supervised Loop"];
53
- exit [type="exit"];
54
-
55
- start -> manager_loop;
56
- manager_loop -> exit [condition="llm:has the implementation satisfied the acceptance criteria?"];
57
- }
58
- `;
59
- // ---------------------------------------------------------------------------
60
- // BODY_GRAPH_DOT — body graph executed by manager_loop each cycle
61
- // ---------------------------------------------------------------------------
62
- /**
63
- * Body graph: parallel fan-out/fan-in with subgraph integration.
64
- *
65
- * start → parallel_node fans out to [branch_a, branch_b]
66
- * branch_a runs, then main executor traverses branch_a → subgraph_node → fan_in
67
- * branch_b result is collected by fan_in
68
- * fan_in → exit [condition="llm:..."] — LLM-evaluated exit edge
69
- *
70
- * Handler types present: parallel, codergen, subgraph, parallel.fan_in
71
- */
72
- export const BODY_GRAPH_DOT = `
73
- digraph manager_body {
74
- start [type="start"];
75
- parallel_node [type="parallel", label="Fan-out Branches"];
76
- branch_a [type="codergen", label="Implement approach A"];
77
- subgraph_node [type="subgraph", label="Run child pipeline"];
78
- branch_b [type="codergen", label="Implement approach B"];
79
- fan_in [type="parallel.fan_in", label="Best Candidate"];
80
- exit [type="exit"];
81
-
82
- start -> parallel_node;
83
- parallel_node -> branch_a;
84
- parallel_node -> branch_b;
85
- branch_a -> subgraph_node;
86
- subgraph_node -> fan_in;
87
- branch_b -> fan_in;
88
- fan_in -> exit [condition="llm:has the implementation satisfied the acceptance criteria?"];
89
- }
90
- `;
91
- // ---------------------------------------------------------------------------
92
- // CHILD_GRAPH_DOT — minimal child graph executed by subgraph handler
93
- // ---------------------------------------------------------------------------
94
- /**
95
- * Minimal child graph: child_start → child_work → child_exit
96
- * Returned by mock graphFileLoader when subgraph_node requests 'child.dot'.
97
- */
98
- export const CHILD_GRAPH_DOT = `
99
- digraph child_branch {
100
- child_start [type="start"];
101
- child_work [type="codergen", label="Implement in child context"];
102
- child_exit [type="exit"];
103
-
104
- child_start -> child_work;
105
- child_work -> child_exit;
106
- }
107
- `;
108
- // ---------------------------------------------------------------------------
109
- // validateFixtures — test helper for AC1
110
- // ---------------------------------------------------------------------------
111
- /**
112
- * Parse all three fixture DOT strings and throw if any parse fails.
113
- * Returns the three parsed graphs for downstream assertions.
114
- */
115
- export function validateFixtures() {
116
- const outerGraph = parseGraph(ADVANCED_VALIDATION_DOT);
117
- const bodyGraph = parseGraph(BODY_GRAPH_DOT);
118
- const childGraph = parseGraph(CHILD_GRAPH_DOT);
119
- return { outerGraph, bodyGraph, childGraph };
120
- }
121
- //# sourceMappingURL=advanced-cross-project-validation.dot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"advanced-cross-project-validation.dot.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/advanced-cross-project-validation.dot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,8EAA8E;AAC9E,+DAA+D;AAC/D,8EAA8E;AAE9E;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;CAStC,CAAA;AAED,8EAA8E;AAC9E,kEAAkE;AAClE,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;CAkB7B,CAAA;AAED,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;CAS9B,CAAA;AAED,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAK9B,MAAM,UAAU,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAA;IACtD,MAAM,SAAS,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IAC5C,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC,CAAA;IAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;AAC9C,CAAC"}
@@ -1,28 +0,0 @@
1
- /**
2
- * DOT fixture strings for LLM-evaluated edge integration tests.
3
- * Story 50-11.
4
- *
5
- * The `condition` DOT edge attribute maps to `GraphEdge.condition`.
6
- * Edges with `condition="llm:..."` are evaluated by `selectEdge` via the
7
- * LLM evaluator (`evaluateLlmCondition`).
8
- *
9
- * Graph structure: start → decision → exit
10
- * decision has two outgoing edges:
11
- * 1. condition="llm:should we iterate?" — LLM-evaluated (to refine node)
12
- * 2. label="done" — plain unconditional edge (to exit)
13
- *
14
- * The LLM edge is tested using `selectEdge` directly with a mock `llmCall`.
15
- */
16
- /**
17
- * Decision graph with one LLM-evaluated edge and one plain forward edge.
18
- * start → decision → exit (via done edge)
19
- * → refine (via llm:should we iterate? edge)
20
- * refine → exit
21
- */
22
- export declare const LLM_EDGE_ROUTING_DOT = "\ndigraph llm_edge_test {\n start [type=\"start\"];\n decision [type=\"codergen\", label=\"Evaluate Progress\"];\n refine [type=\"codergen\", label=\"Refine\"];\n exit [type=\"exit\"];\n\n start -> decision;\n decision -> refine [condition=\"llm:should we iterate?\"];\n decision -> exit [label=\"done\"];\n refine -> exit;\n}\n";
23
- /**
24
- * Graph with multiple static label edges and one LLM edge.
25
- * Used to verify that static label matching still works alongside LLM edges.
26
- */
27
- export declare const MIXED_EDGE_TYPES_DOT = "\ndigraph mixed_edges {\n start [type=\"start\"];\n router [type=\"codergen\", label=\"Route Decision\"];\n path_a [type=\"codergen\", label=\"Path A\"];\n path_b [type=\"codergen\", label=\"Path B\"];\n exit [type=\"exit\"];\n\n start -> router;\n router -> path_a [label=\"approved\"];\n router -> path_b [label=\"revision_needed\"];\n router -> exit [condition=\"llm:is this complete?\"];\n path_a -> exit;\n path_b -> exit;\n}\n";
28
- //# sourceMappingURL=llm-edge-routing.dot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm-edge-routing.dot.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/llm-edge-routing.dot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,qWAYhC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,gdAehC,CAAA"}
@@ -1,55 +0,0 @@
1
- /**
2
- * DOT fixture strings for LLM-evaluated edge integration tests.
3
- * Story 50-11.
4
- *
5
- * The `condition` DOT edge attribute maps to `GraphEdge.condition`.
6
- * Edges with `condition="llm:..."` are evaluated by `selectEdge` via the
7
- * LLM evaluator (`evaluateLlmCondition`).
8
- *
9
- * Graph structure: start → decision → exit
10
- * decision has two outgoing edges:
11
- * 1. condition="llm:should we iterate?" — LLM-evaluated (to refine node)
12
- * 2. label="done" — plain unconditional edge (to exit)
13
- *
14
- * The LLM edge is tested using `selectEdge` directly with a mock `llmCall`.
15
- */
16
- /**
17
- * Decision graph with one LLM-evaluated edge and one plain forward edge.
18
- * start → decision → exit (via done edge)
19
- * → refine (via llm:should we iterate? edge)
20
- * refine → exit
21
- */
22
- export const LLM_EDGE_ROUTING_DOT = `
23
- digraph llm_edge_test {
24
- start [type="start"];
25
- decision [type="codergen", label="Evaluate Progress"];
26
- refine [type="codergen", label="Refine"];
27
- exit [type="exit"];
28
-
29
- start -> decision;
30
- decision -> refine [condition="llm:should we iterate?"];
31
- decision -> exit [label="done"];
32
- refine -> exit;
33
- }
34
- `;
35
- /**
36
- * Graph with multiple static label edges and one LLM edge.
37
- * Used to verify that static label matching still works alongside LLM edges.
38
- */
39
- export const MIXED_EDGE_TYPES_DOT = `
40
- digraph mixed_edges {
41
- start [type="start"];
42
- router [type="codergen", label="Route Decision"];
43
- path_a [type="codergen", label="Path A"];
44
- path_b [type="codergen", label="Path B"];
45
- exit [type="exit"];
46
-
47
- start -> router;
48
- router -> path_a [label="approved"];
49
- router -> path_b [label="revision_needed"];
50
- router -> exit [condition="llm:is this complete?"];
51
- path_a -> exit;
52
- path_b -> exit;
53
- }
54
- `;
55
- //# sourceMappingURL=llm-edge-routing.dot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm-edge-routing.dot.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/llm-edge-routing.dot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;CAYnC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;CAenC,CAAA"}