@substrate-ai/factory 0.20.1 → 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 (486) hide show
  1. package/README.md +39 -0
  2. package/package.json +6 -3
  3. package/dist/__tests__/config.test.d.ts +0 -11
  4. package/dist/__tests__/config.test.d.ts.map +0 -1
  5. package/dist/__tests__/config.test.js +0 -215
  6. package/dist/__tests__/config.test.js.map +0 -1
  7. package/dist/__tests__/factory-run-command.test.d.ts +0 -12
  8. package/dist/__tests__/factory-run-command.test.d.ts.map +0 -1
  9. package/dist/__tests__/factory-run-command.test.js +0 -454
  10. package/dist/__tests__/factory-run-command.test.js.map +0 -1
  11. package/dist/__tests__/factory-validate-command.test.d.ts +0 -15
  12. package/dist/__tests__/factory-validate-command.test.d.ts.map +0 -1
  13. package/dist/__tests__/factory-validate-command.test.js +0 -339
  14. package/dist/__tests__/factory-validate-command.test.js.map +0 -1
  15. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts +0 -72
  16. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts.map +0 -1
  17. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js +0 -121
  18. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js.map +0 -1
  19. package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts +0 -28
  20. package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts.map +0 -1
  21. package/dist/__tests__/fixtures/llm-edge-routing.dot.js +0 -55
  22. package/dist/__tests__/fixtures/llm-edge-routing.dot.js.map +0 -1
  23. package/dist/__tests__/fixtures/manager-loop.dot.d.ts +0 -34
  24. package/dist/__tests__/fixtures/manager-loop.dot.d.ts.map +0 -1
  25. package/dist/__tests__/fixtures/manager-loop.dot.js +0 -61
  26. package/dist/__tests__/fixtures/manager-loop.dot.js.map +0 -1
  27. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts +0 -42
  28. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts.map +0 -1
  29. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js +0 -118
  30. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js.map +0 -1
  31. package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts +0 -35
  32. package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts.map +0 -1
  33. package/dist/__tests__/fixtures/subgraph-parent.dot.js +0 -69
  34. package/dist/__tests__/fixtures/subgraph-parent.dot.js.map +0 -1
  35. package/dist/__tests__/integration/advanced-graph-events.test.d.ts +0 -19
  36. package/dist/__tests__/integration/advanced-graph-events.test.d.ts.map +0 -1
  37. package/dist/__tests__/integration/advanced-graph-events.test.js +0 -288
  38. package/dist/__tests__/integration/advanced-graph-events.test.js.map +0 -1
  39. package/dist/__tests__/integration/checkpoint-resume.test.d.ts +0 -10
  40. package/dist/__tests__/integration/checkpoint-resume.test.d.ts.map +0 -1
  41. package/dist/__tests__/integration/checkpoint-resume.test.js +0 -125
  42. package/dist/__tests__/integration/checkpoint-resume.test.js.map +0 -1
  43. package/dist/__tests__/integration/conditional-pipeline.test.d.ts +0 -10
  44. package/dist/__tests__/integration/conditional-pipeline.test.d.ts.map +0 -1
  45. package/dist/__tests__/integration/conditional-pipeline.test.js +0 -106
  46. package/dist/__tests__/integration/conditional-pipeline.test.js.map +0 -1
  47. package/dist/__tests__/integration/convergence-validation.test.d.ts +0 -14
  48. package/dist/__tests__/integration/convergence-validation.test.d.ts.map +0 -1
  49. package/dist/__tests__/integration/convergence-validation.test.js +0 -449
  50. package/dist/__tests__/integration/convergence-validation.test.js.map +0 -1
  51. package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts +0 -12
  52. package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts.map +0 -1
  53. package/dist/__tests__/integration/epic44-coverage-gate.test.js +0 -58
  54. package/dist/__tests__/integration/epic44-coverage-gate.test.js.map +0 -1
  55. package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts +0 -11
  56. package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts.map +0 -1
  57. package/dist/__tests__/integration/epic45-coverage-gate.test.js +0 -64
  58. package/dist/__tests__/integration/epic45-coverage-gate.test.js.map +0 -1
  59. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts +0 -2
  60. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts.map +0 -1
  61. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js +0 -285
  62. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js.map +0 -1
  63. package/dist/__tests__/integration/events.test.d.ts +0 -8
  64. package/dist/__tests__/integration/events.test.d.ts.map +0 -1
  65. package/dist/__tests__/integration/events.test.js +0 -194
  66. package/dist/__tests__/integration/events.test.js.map +0 -1
  67. package/dist/__tests__/integration/graphs.d.ts +0 -59
  68. package/dist/__tests__/integration/graphs.d.ts.map +0 -1
  69. package/dist/__tests__/integration/graphs.js +0 -164
  70. package/dist/__tests__/integration/graphs.js.map +0 -1
  71. package/dist/__tests__/integration/helpers.d.ts +0 -127
  72. package/dist/__tests__/integration/helpers.d.ts.map +0 -1
  73. package/dist/__tests__/integration/helpers.js +0 -167
  74. package/dist/__tests__/integration/helpers.js.map +0 -1
  75. package/dist/__tests__/integration/integrity.test.d.ts +0 -8
  76. package/dist/__tests__/integration/integrity.test.d.ts.map +0 -1
  77. package/dist/__tests__/integration/integrity.test.js +0 -198
  78. package/dist/__tests__/integration/integrity.test.js.map +0 -1
  79. package/dist/__tests__/integration/llm-edge-routing.test.d.ts +0 -21
  80. package/dist/__tests__/integration/llm-edge-routing.test.d.ts.map +0 -1
  81. package/dist/__tests__/integration/llm-edge-routing.test.js +0 -341
  82. package/dist/__tests__/integration/llm-edge-routing.test.js.map +0 -1
  83. package/dist/__tests__/integration/manager-loop.test.d.ts +0 -24
  84. package/dist/__tests__/integration/manager-loop.test.d.ts.map +0 -1
  85. package/dist/__tests__/integration/manager-loop.test.js +0 -276
  86. package/dist/__tests__/integration/manager-loop.test.js.map +0 -1
  87. package/dist/__tests__/integration/multi-type-graph.test.d.ts +0 -10
  88. package/dist/__tests__/integration/multi-type-graph.test.d.ts.map +0 -1
  89. package/dist/__tests__/integration/multi-type-graph.test.js +0 -100
  90. package/dist/__tests__/integration/multi-type-graph.test.js.map +0 -1
  91. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts +0 -22
  92. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts.map +0 -1
  93. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js +0 -515
  94. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js.map +0 -1
  95. package/dist/__tests__/integration/persistence.test.d.ts +0 -8
  96. package/dist/__tests__/integration/persistence.test.d.ts.map +0 -1
  97. package/dist/__tests__/integration/persistence.test.js +0 -129
  98. package/dist/__tests__/integration/persistence.test.js.map +0 -1
  99. package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts +0 -16
  100. package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts.map +0 -1
  101. package/dist/__tests__/integration/pipeline-templates-integration.test.js +0 -171
  102. package/dist/__tests__/integration/pipeline-templates-integration.test.js.map +0 -1
  103. package/dist/__tests__/integration/scenario-pipeline.test.d.ts +0 -11
  104. package/dist/__tests__/integration/scenario-pipeline.test.d.ts.map +0 -1
  105. package/dist/__tests__/integration/scenario-pipeline.test.js +0 -243
  106. package/dist/__tests__/integration/scenario-pipeline.test.js.map +0 -1
  107. package/dist/__tests__/integration/stylesheet-application.test.d.ts +0 -12
  108. package/dist/__tests__/integration/stylesheet-application.test.d.ts.map +0 -1
  109. package/dist/__tests__/integration/stylesheet-application.test.js +0 -119
  110. package/dist/__tests__/integration/stylesheet-application.test.js.map +0 -1
  111. package/dist/__tests__/integration/subgraph-execution.test.d.ts +0 -24
  112. package/dist/__tests__/integration/subgraph-execution.test.d.ts.map +0 -1
  113. package/dist/__tests__/integration/subgraph-execution.test.js +0 -291
  114. package/dist/__tests__/integration/subgraph-execution.test.js.map +0 -1
  115. package/dist/__tests__/integration/validation-errors.test.d.ts +0 -8
  116. package/dist/__tests__/integration/validation-errors.test.d.ts.map +0 -1
  117. package/dist/__tests__/integration/validation-errors.test.js +0 -150
  118. package/dist/__tests__/integration/validation-errors.test.js.map +0 -1
  119. package/dist/agent/__tests__/loop-detection.test.d.ts +0 -2
  120. package/dist/agent/__tests__/loop-detection.test.d.ts.map +0 -1
  121. package/dist/agent/__tests__/loop-detection.test.js +0 -236
  122. package/dist/agent/__tests__/loop-detection.test.js.map +0 -1
  123. package/dist/agent/__tests__/loop.test.d.ts +0 -2
  124. package/dist/agent/__tests__/loop.test.d.ts.map +0 -1
  125. package/dist/agent/__tests__/loop.test.js +0 -868
  126. package/dist/agent/__tests__/loop.test.js.map +0 -1
  127. package/dist/agent/__tests__/truncation.test.d.ts +0 -2
  128. package/dist/agent/__tests__/truncation.test.d.ts.map +0 -1
  129. package/dist/agent/__tests__/truncation.test.js +0 -276
  130. package/dist/agent/__tests__/truncation.test.js.map +0 -1
  131. package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts +0 -6
  132. package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts.map +0 -1
  133. package/dist/agent/tools/__tests__/anthropic-tools.test.js +0 -49
  134. package/dist/agent/tools/__tests__/anthropic-tools.test.js.map +0 -1
  135. package/dist/agent/tools/__tests__/environment.test.d.ts +0 -6
  136. package/dist/agent/tools/__tests__/environment.test.d.ts.map +0 -1
  137. package/dist/agent/tools/__tests__/environment.test.js +0 -33
  138. package/dist/agent/tools/__tests__/environment.test.js.map +0 -1
  139. package/dist/agent/tools/__tests__/gemini-tools.test.d.ts +0 -6
  140. package/dist/agent/tools/__tests__/gemini-tools.test.d.ts.map +0 -1
  141. package/dist/agent/tools/__tests__/gemini-tools.test.js +0 -98
  142. package/dist/agent/tools/__tests__/gemini-tools.test.js.map +0 -1
  143. package/dist/agent/tools/__tests__/openai-tools.test.d.ts +0 -6
  144. package/dist/agent/tools/__tests__/openai-tools.test.d.ts.map +0 -1
  145. package/dist/agent/tools/__tests__/openai-tools.test.js +0 -53
  146. package/dist/agent/tools/__tests__/openai-tools.test.js.map +0 -1
  147. package/dist/agent/tools/__tests__/patch.test.d.ts +0 -6
  148. package/dist/agent/tools/__tests__/patch.test.d.ts.map +0 -1
  149. package/dist/agent/tools/__tests__/patch.test.js +0 -116
  150. package/dist/agent/tools/__tests__/patch.test.js.map +0 -1
  151. package/dist/agent/tools/__tests__/profiles.test.d.ts +0 -6
  152. package/dist/agent/tools/__tests__/profiles.test.d.ts.map +0 -1
  153. package/dist/agent/tools/__tests__/profiles.test.js +0 -125
  154. package/dist/agent/tools/__tests__/profiles.test.js.map +0 -1
  155. package/dist/agent/tools/__tests__/registry.test.d.ts +0 -6
  156. package/dist/agent/tools/__tests__/registry.test.d.ts.map +0 -1
  157. package/dist/agent/tools/__tests__/registry.test.js +0 -94
  158. package/dist/agent/tools/__tests__/registry.test.js.map +0 -1
  159. package/dist/agent/tools/__tests__/shared.test.d.ts +0 -6
  160. package/dist/agent/tools/__tests__/shared.test.d.ts.map +0 -1
  161. package/dist/agent/tools/__tests__/shared.test.js +0 -131
  162. package/dist/agent/tools/__tests__/shared.test.js.map +0 -1
  163. package/dist/backend/__tests__/direct-backend.test.d.ts +0 -14
  164. package/dist/backend/__tests__/direct-backend.test.d.ts.map +0 -1
  165. package/dist/backend/__tests__/direct-backend.test.js +0 -393
  166. package/dist/backend/__tests__/direct-backend.test.js.map +0 -1
  167. package/dist/backend/__tests__/direct-bootstrap.test.d.ts +0 -7
  168. package/dist/backend/__tests__/direct-bootstrap.test.d.ts.map +0 -1
  169. package/dist/backend/__tests__/direct-bootstrap.test.js +0 -177
  170. package/dist/backend/__tests__/direct-bootstrap.test.js.map +0 -1
  171. package/dist/backend/__tests__/mock-backend.test.d.ts +0 -7
  172. package/dist/backend/__tests__/mock-backend.test.d.ts.map +0 -1
  173. package/dist/backend/__tests__/mock-backend.test.js +0 -273
  174. package/dist/backend/__tests__/mock-backend.test.js.map +0 -1
  175. package/dist/backend/__tests__/parity.test.d.ts +0 -17
  176. package/dist/backend/__tests__/parity.test.d.ts.map +0 -1
  177. package/dist/backend/__tests__/parity.test.js +0 -411
  178. package/dist/backend/__tests__/parity.test.js.map +0 -1
  179. package/dist/context/__tests__/auto-summarizer.test.d.ts +0 -14
  180. package/dist/context/__tests__/auto-summarizer.test.d.ts.map +0 -1
  181. package/dist/context/__tests__/auto-summarizer.test.js +0 -189
  182. package/dist/context/__tests__/auto-summarizer.test.js.map +0 -1
  183. package/dist/context/__tests__/context-cli-command.test.d.ts +0 -7
  184. package/dist/context/__tests__/context-cli-command.test.d.ts.map +0 -1
  185. package/dist/context/__tests__/context-cli-command.test.js +0 -331
  186. package/dist/context/__tests__/context-cli-command.test.js.map +0 -1
  187. package/dist/context/__tests__/pyramid-summary-integration.test.d.ts +0 -2
  188. package/dist/context/__tests__/pyramid-summary-integration.test.d.ts.map +0 -1
  189. package/dist/context/__tests__/pyramid-summary-integration.test.js +0 -533
  190. package/dist/context/__tests__/pyramid-summary-integration.test.js.map +0 -1
  191. package/dist/context/__tests__/summarizer.test.d.ts +0 -2
  192. package/dist/context/__tests__/summarizer.test.d.ts.map +0 -1
  193. package/dist/context/__tests__/summarizer.test.js +0 -189
  194. package/dist/context/__tests__/summarizer.test.js.map +0 -1
  195. package/dist/context/__tests__/summary-cache.test.d.ts +0 -2
  196. package/dist/context/__tests__/summary-cache.test.d.ts.map +0 -1
  197. package/dist/context/__tests__/summary-cache.test.js +0 -214
  198. package/dist/context/__tests__/summary-cache.test.js.map +0 -1
  199. package/dist/context/__tests__/summary-metrics.test.d.ts +0 -2
  200. package/dist/context/__tests__/summary-metrics.test.d.ts.map +0 -1
  201. package/dist/context/__tests__/summary-metrics.test.js +0 -172
  202. package/dist/context/__tests__/summary-metrics.test.js.map +0 -1
  203. package/dist/context/__tests__/summary-types.test.d.ts +0 -2
  204. package/dist/context/__tests__/summary-types.test.d.ts.map +0 -1
  205. package/dist/context/__tests__/summary-types.test.js +0 -130
  206. package/dist/context/__tests__/summary-types.test.js.map +0 -1
  207. package/dist/convergence/__tests__/budget.test.d.ts +0 -6
  208. package/dist/convergence/__tests__/budget.test.d.ts.map +0 -1
  209. package/dist/convergence/__tests__/budget.test.js +0 -187
  210. package/dist/convergence/__tests__/budget.test.js.map +0 -1
  211. package/dist/convergence/__tests__/controller.test.d.ts +0 -9
  212. package/dist/convergence/__tests__/controller.test.d.ts.map +0 -1
  213. package/dist/convergence/__tests__/controller.test.js +0 -585
  214. package/dist/convergence/__tests__/controller.test.js.map +0 -1
  215. package/dist/convergence/__tests__/dual-signal.test.d.ts +0 -14
  216. package/dist/convergence/__tests__/dual-signal.test.d.ts.map +0 -1
  217. package/dist/convergence/__tests__/dual-signal.test.js +0 -123
  218. package/dist/convergence/__tests__/dual-signal.test.js.map +0 -1
  219. package/dist/convergence/__tests__/epic46-integration.test.d.ts +0 -15
  220. package/dist/convergence/__tests__/epic46-integration.test.d.ts.map +0 -1
  221. package/dist/convergence/__tests__/epic46-integration.test.js +0 -522
  222. package/dist/convergence/__tests__/epic46-integration.test.js.map +0 -1
  223. package/dist/convergence/__tests__/plateau.test.d.ts +0 -6
  224. package/dist/convergence/__tests__/plateau.test.d.ts.map +0 -1
  225. package/dist/convergence/__tests__/plateau.test.js +0 -163
  226. package/dist/convergence/__tests__/plateau.test.js.map +0 -1
  227. package/dist/convergence/__tests__/remediation.test.d.ts +0 -11
  228. package/dist/convergence/__tests__/remediation.test.d.ts.map +0 -1
  229. package/dist/convergence/__tests__/remediation.test.js +0 -209
  230. package/dist/convergence/__tests__/remediation.test.js.map +0 -1
  231. package/dist/convergence/__tests__/scenario-primary.test.d.ts +0 -13
  232. package/dist/convergence/__tests__/scenario-primary.test.d.ts.map +0 -1
  233. package/dist/convergence/__tests__/scenario-primary.test.js +0 -183
  234. package/dist/convergence/__tests__/scenario-primary.test.js.map +0 -1
  235. package/dist/factory-command.test.d.ts +0 -8
  236. package/dist/factory-command.test.d.ts.map +0 -1
  237. package/dist/factory-command.test.js +0 -304
  238. package/dist/factory-command.test.js.map +0 -1
  239. package/dist/graph/__tests__/attractor-compliance.test.d.ts +0 -10
  240. package/dist/graph/__tests__/attractor-compliance.test.d.ts.map +0 -1
  241. package/dist/graph/__tests__/attractor-compliance.test.js +0 -766
  242. package/dist/graph/__tests__/attractor-compliance.test.js.map +0 -1
  243. package/dist/graph/__tests__/checkpoint.test.d.ts +0 -8
  244. package/dist/graph/__tests__/checkpoint.test.d.ts.map +0 -1
  245. package/dist/graph/__tests__/checkpoint.test.js +0 -329
  246. package/dist/graph/__tests__/checkpoint.test.js.map +0 -1
  247. package/dist/graph/__tests__/condition-parser.test.d.ts +0 -14
  248. package/dist/graph/__tests__/condition-parser.test.d.ts.map +0 -1
  249. package/dist/graph/__tests__/condition-parser.test.js +0 -406
  250. package/dist/graph/__tests__/condition-parser.test.js.map +0 -1
  251. package/dist/graph/__tests__/context.test.d.ts +0 -14
  252. package/dist/graph/__tests__/context.test.d.ts.map +0 -1
  253. package/dist/graph/__tests__/context.test.js +0 -276
  254. package/dist/graph/__tests__/context.test.js.map +0 -1
  255. package/dist/graph/__tests__/edge-selector-events.test.d.ts +0 -11
  256. package/dist/graph/__tests__/edge-selector-events.test.d.ts.map +0 -1
  257. package/dist/graph/__tests__/edge-selector-events.test.js +0 -184
  258. package/dist/graph/__tests__/edge-selector-events.test.js.map +0 -1
  259. package/dist/graph/__tests__/edge-selector.test.d.ts +0 -6
  260. package/dist/graph/__tests__/edge-selector.test.d.ts.map +0 -1
  261. package/dist/graph/__tests__/edge-selector.test.js +0 -452
  262. package/dist/graph/__tests__/edge-selector.test.js.map +0 -1
  263. package/dist/graph/__tests__/executor-convergence.test.d.ts +0 -12
  264. package/dist/graph/__tests__/executor-convergence.test.d.ts.map +0 -1
  265. package/dist/graph/__tests__/executor-convergence.test.js +0 -432
  266. package/dist/graph/__tests__/executor-convergence.test.js.map +0 -1
  267. package/dist/graph/__tests__/executor-fidelity.test.d.ts +0 -13
  268. package/dist/graph/__tests__/executor-fidelity.test.d.ts.map +0 -1
  269. package/dist/graph/__tests__/executor-fidelity.test.js +0 -335
  270. package/dist/graph/__tests__/executor-fidelity.test.js.map +0 -1
  271. package/dist/graph/__tests__/executor.test.d.ts +0 -14
  272. package/dist/graph/__tests__/executor.test.d.ts.map +0 -1
  273. package/dist/graph/__tests__/executor.test.js +0 -901
  274. package/dist/graph/__tests__/executor.test.js.map +0 -1
  275. package/dist/graph/__tests__/fidelity.test.d.ts +0 -8
  276. package/dist/graph/__tests__/fidelity.test.d.ts.map +0 -1
  277. package/dist/graph/__tests__/fidelity.test.js +0 -135
  278. package/dist/graph/__tests__/fidelity.test.js.map +0 -1
  279. package/dist/graph/__tests__/llm-evaluator.test.d.ts +0 -7
  280. package/dist/graph/__tests__/llm-evaluator.test.d.ts.map +0 -1
  281. package/dist/graph/__tests__/llm-evaluator.test.js +0 -106
  282. package/dist/graph/__tests__/llm-evaluator.test.js.map +0 -1
  283. package/dist/graph/__tests__/parser-chaining.test.d.ts +0 -13
  284. package/dist/graph/__tests__/parser-chaining.test.d.ts.map +0 -1
  285. package/dist/graph/__tests__/parser-chaining.test.js +0 -215
  286. package/dist/graph/__tests__/parser-chaining.test.js.map +0 -1
  287. package/dist/graph/__tests__/parser.test.d.ts +0 -22
  288. package/dist/graph/__tests__/parser.test.d.ts.map +0 -1
  289. package/dist/graph/__tests__/parser.test.js +0 -452
  290. package/dist/graph/__tests__/parser.test.js.map +0 -1
  291. package/dist/graph/__tests__/run-state.test.d.ts +0 -13
  292. package/dist/graph/__tests__/run-state.test.d.ts.map +0 -1
  293. package/dist/graph/__tests__/run-state.test.js +0 -189
  294. package/dist/graph/__tests__/run-state.test.js.map +0 -1
  295. package/dist/graph/__tests__/transformer.test.d.ts +0 -16
  296. package/dist/graph/__tests__/transformer.test.d.ts.map +0 -1
  297. package/dist/graph/__tests__/transformer.test.js +0 -350
  298. package/dist/graph/__tests__/transformer.test.js.map +0 -1
  299. package/dist/graph/__tests__/validator-errors.test.d.ts +0 -15
  300. package/dist/graph/__tests__/validator-errors.test.d.ts.map +0 -1
  301. package/dist/graph/__tests__/validator-errors.test.js +0 -572
  302. package/dist/graph/__tests__/validator-errors.test.js.map +0 -1
  303. package/dist/graph/__tests__/validator-warnings.test.d.ts +0 -15
  304. package/dist/graph/__tests__/validator-warnings.test.d.ts.map +0 -1
  305. package/dist/graph/__tests__/validator-warnings.test.js +0 -363
  306. package/dist/graph/__tests__/validator-warnings.test.js.map +0 -1
  307. package/dist/handlers/__tests__/codergen-handler.test.d.ts +0 -14
  308. package/dist/handlers/__tests__/codergen-handler.test.d.ts.map +0 -1
  309. package/dist/handlers/__tests__/codergen-handler.test.js +0 -442
  310. package/dist/handlers/__tests__/codergen-handler.test.js.map +0 -1
  311. package/dist/handlers/__tests__/fan-in.test.d.ts +0 -14
  312. package/dist/handlers/__tests__/fan-in.test.d.ts.map +0 -1
  313. package/dist/handlers/__tests__/fan-in.test.js +0 -399
  314. package/dist/handlers/__tests__/fan-in.test.js.map +0 -1
  315. package/dist/handlers/__tests__/join-policy.test.d.ts +0 -9
  316. package/dist/handlers/__tests__/join-policy.test.d.ts.map +0 -1
  317. package/dist/handlers/__tests__/join-policy.test.js +0 -201
  318. package/dist/handlers/__tests__/join-policy.test.js.map +0 -1
  319. package/dist/handlers/__tests__/manager-loop.test.d.ts +0 -14
  320. package/dist/handlers/__tests__/manager-loop.test.d.ts.map +0 -1
  321. package/dist/handlers/__tests__/manager-loop.test.js +0 -322
  322. package/dist/handlers/__tests__/manager-loop.test.js.map +0 -1
  323. package/dist/handlers/__tests__/parallel-events.test.d.ts +0 -12
  324. package/dist/handlers/__tests__/parallel-events.test.d.ts.map +0 -1
  325. package/dist/handlers/__tests__/parallel-events.test.js +0 -252
  326. package/dist/handlers/__tests__/parallel-events.test.js.map +0 -1
  327. package/dist/handlers/__tests__/parallel-handler.test.d.ts +0 -14
  328. package/dist/handlers/__tests__/parallel-handler.test.d.ts.map +0 -1
  329. package/dist/handlers/__tests__/parallel-handler.test.js +0 -337
  330. package/dist/handlers/__tests__/parallel-handler.test.js.map +0 -1
  331. package/dist/handlers/__tests__/parallel-join.test.d.ts +0 -9
  332. package/dist/handlers/__tests__/parallel-join.test.d.ts.map +0 -1
  333. package/dist/handlers/__tests__/parallel-join.test.js +0 -267
  334. package/dist/handlers/__tests__/parallel-join.test.js.map +0 -1
  335. package/dist/handlers/__tests__/registry.test.d.ts +0 -14
  336. package/dist/handlers/__tests__/registry.test.d.ts.map +0 -1
  337. package/dist/handlers/__tests__/registry.test.js +0 -315
  338. package/dist/handlers/__tests__/registry.test.js.map +0 -1
  339. package/dist/handlers/__tests__/subgraph-events.test.d.ts +0 -10
  340. package/dist/handlers/__tests__/subgraph-events.test.d.ts.map +0 -1
  341. package/dist/handlers/__tests__/subgraph-events.test.js +0 -189
  342. package/dist/handlers/__tests__/subgraph-events.test.js.map +0 -1
  343. package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts +0 -14
  344. package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts.map +0 -1
  345. package/dist/handlers/__tests__/subgraph-inheritance.test.js +0 -267
  346. package/dist/handlers/__tests__/subgraph-inheritance.test.js.map +0 -1
  347. package/dist/handlers/__tests__/subgraph.test.d.ts +0 -14
  348. package/dist/handlers/__tests__/subgraph.test.d.ts.map +0 -1
  349. package/dist/handlers/__tests__/subgraph.test.js +0 -369
  350. package/dist/handlers/__tests__/subgraph.test.js.map +0 -1
  351. package/dist/handlers/__tests__/tool-handler.test.d.ts +0 -11
  352. package/dist/handlers/__tests__/tool-handler.test.d.ts.map +0 -1
  353. package/dist/handlers/__tests__/tool-handler.test.js +0 -184
  354. package/dist/handlers/__tests__/tool-handler.test.js.map +0 -1
  355. package/dist/handlers/__tests__/tool-scenario.test.d.ts +0 -12
  356. package/dist/handlers/__tests__/tool-scenario.test.d.ts.map +0 -1
  357. package/dist/handlers/__tests__/tool-scenario.test.js +0 -222
  358. package/dist/handlers/__tests__/tool-scenario.test.js.map +0 -1
  359. package/dist/handlers/__tests__/wait-human-handler.test.d.ts +0 -11
  360. package/dist/handlers/__tests__/wait-human-handler.test.d.ts.map +0 -1
  361. package/dist/handlers/__tests__/wait-human-handler.test.js +0 -251
  362. package/dist/handlers/__tests__/wait-human-handler.test.js.map +0 -1
  363. package/dist/llm/__tests__/client.test.d.ts +0 -2
  364. package/dist/llm/__tests__/client.test.d.ts.map +0 -1
  365. package/dist/llm/__tests__/client.test.js +0 -198
  366. package/dist/llm/__tests__/client.test.js.map +0 -1
  367. package/dist/llm/__tests__/types.test.d.ts +0 -2
  368. package/dist/llm/__tests__/types.test.d.ts.map +0 -1
  369. package/dist/llm/__tests__/types.test.js +0 -289
  370. package/dist/llm/__tests__/types.test.js.map +0 -1
  371. package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts +0 -2
  372. package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts.map +0 -1
  373. package/dist/llm/middleware/__tests__/cost-tracking.test.js +0 -73
  374. package/dist/llm/middleware/__tests__/cost-tracking.test.js.map +0 -1
  375. package/dist/llm/middleware/__tests__/logging.test.d.ts +0 -2
  376. package/dist/llm/middleware/__tests__/logging.test.d.ts.map +0 -1
  377. package/dist/llm/middleware/__tests__/logging.test.js +0 -127
  378. package/dist/llm/middleware/__tests__/logging.test.js.map +0 -1
  379. package/dist/llm/middleware/__tests__/retry.test.d.ts +0 -2
  380. package/dist/llm/middleware/__tests__/retry.test.d.ts.map +0 -1
  381. package/dist/llm/middleware/__tests__/retry.test.js +0 -126
  382. package/dist/llm/middleware/__tests__/retry.test.js.map +0 -1
  383. package/dist/llm/providers/__tests__/anthropic.test.d.ts +0 -2
  384. package/dist/llm/providers/__tests__/anthropic.test.d.ts.map +0 -1
  385. package/dist/llm/providers/__tests__/anthropic.test.js +0 -412
  386. package/dist/llm/providers/__tests__/anthropic.test.js.map +0 -1
  387. package/dist/llm/providers/__tests__/gemini.test.d.ts +0 -2
  388. package/dist/llm/providers/__tests__/gemini.test.d.ts.map +0 -1
  389. package/dist/llm/providers/__tests__/gemini.test.js +0 -591
  390. package/dist/llm/providers/__tests__/gemini.test.js.map +0 -1
  391. package/dist/llm/providers/__tests__/openai.test.d.ts +0 -2
  392. package/dist/llm/providers/__tests__/openai.test.d.ts.map +0 -1
  393. package/dist/llm/providers/__tests__/openai.test.js +0 -546
  394. package/dist/llm/providers/__tests__/openai.test.js.map +0 -1
  395. package/dist/persistence/__tests__/factory-queries.test.d.ts +0 -9
  396. package/dist/persistence/__tests__/factory-queries.test.d.ts.map +0 -1
  397. package/dist/persistence/__tests__/factory-queries.test.js +0 -372
  398. package/dist/persistence/__tests__/factory-queries.test.js.map +0 -1
  399. package/dist/persistence/__tests__/factory-schema.test.d.ts +0 -6
  400. package/dist/persistence/__tests__/factory-schema.test.d.ts.map +0 -1
  401. package/dist/persistence/__tests__/factory-schema.test.js +0 -105
  402. package/dist/persistence/__tests__/factory-schema.test.js.map +0 -1
  403. package/dist/scenarios/__tests__/cli-command-list.test.d.ts +0 -7
  404. package/dist/scenarios/__tests__/cli-command-list.test.d.ts.map +0 -1
  405. package/dist/scenarios/__tests__/cli-command-list.test.js +0 -237
  406. package/dist/scenarios/__tests__/cli-command-list.test.js.map +0 -1
  407. package/dist/scenarios/__tests__/cli-command.test.d.ts +0 -11
  408. package/dist/scenarios/__tests__/cli-command.test.d.ts.map +0 -1
  409. package/dist/scenarios/__tests__/cli-command.test.js +0 -275
  410. package/dist/scenarios/__tests__/cli-command.test.js.map +0 -1
  411. package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts +0 -15
  412. package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts.map +0 -1
  413. package/dist/scenarios/__tests__/integrity-pipeline.test.js +0 -318
  414. package/dist/scenarios/__tests__/integrity-pipeline.test.js.map +0 -1
  415. package/dist/scenarios/__tests__/runner-twins.test.d.ts +0 -13
  416. package/dist/scenarios/__tests__/runner-twins.test.d.ts.map +0 -1
  417. package/dist/scenarios/__tests__/runner-twins.test.js +0 -205
  418. package/dist/scenarios/__tests__/runner-twins.test.js.map +0 -1
  419. package/dist/scenarios/__tests__/scorer.test.d.ts +0 -11
  420. package/dist/scenarios/__tests__/scorer.test.d.ts.map +0 -1
  421. package/dist/scenarios/__tests__/scorer.test.js +0 -225
  422. package/dist/scenarios/__tests__/scorer.test.js.map +0 -1
  423. package/dist/scenarios/__tests__/scoring-integration.test.d.ts +0 -8
  424. package/dist/scenarios/__tests__/scoring-integration.test.d.ts.map +0 -1
  425. package/dist/scenarios/__tests__/scoring-integration.test.js +0 -178
  426. package/dist/scenarios/__tests__/scoring-integration.test.js.map +0 -1
  427. package/dist/scenarios/__tests__/store.test.d.ts +0 -5
  428. package/dist/scenarios/__tests__/store.test.d.ts.map +0 -1
  429. package/dist/scenarios/__tests__/store.test.js +0 -169
  430. package/dist/scenarios/__tests__/store.test.js.map +0 -1
  431. package/dist/stylesheet/__tests__/stylesheet.test.d.ts +0 -17
  432. package/dist/stylesheet/__tests__/stylesheet.test.d.ts.map +0 -1
  433. package/dist/stylesheet/__tests__/stylesheet.test.js +0 -368
  434. package/dist/stylesheet/__tests__/stylesheet.test.js.map +0 -1
  435. package/dist/templates/__tests__/templates.test.d.ts +0 -7
  436. package/dist/templates/__tests__/templates.test.d.ts.map +0 -1
  437. package/dist/templates/__tests__/templates.test.js +0 -92
  438. package/dist/templates/__tests__/templates.test.js.map +0 -1
  439. package/dist/twins/__tests__/docker-compose.test.d.ts +0 -13
  440. package/dist/twins/__tests__/docker-compose.test.d.ts.map +0 -1
  441. package/dist/twins/__tests__/docker-compose.test.js +0 -247
  442. package/dist/twins/__tests__/docker-compose.test.js.map +0 -1
  443. package/dist/twins/__tests__/health-monitor.test.d.ts +0 -19
  444. package/dist/twins/__tests__/health-monitor.test.d.ts.map +0 -1
  445. package/dist/twins/__tests__/health-monitor.test.js +0 -301
  446. package/dist/twins/__tests__/health-monitor.test.js.map +0 -1
  447. package/dist/twins/__tests__/integration/e2e.test.d.ts +0 -18
  448. package/dist/twins/__tests__/integration/e2e.test.d.ts.map +0 -1
  449. package/dist/twins/__tests__/integration/e2e.test.js +0 -146
  450. package/dist/twins/__tests__/integration/e2e.test.js.map +0 -1
  451. package/dist/twins/__tests__/integration/helpers.d.ts +0 -32
  452. package/dist/twins/__tests__/integration/helpers.d.ts.map +0 -1
  453. package/dist/twins/__tests__/integration/helpers.js +0 -67
  454. package/dist/twins/__tests__/integration/helpers.js.map +0 -1
  455. package/dist/twins/__tests__/integration/lifecycle.test.d.ts +0 -14
  456. package/dist/twins/__tests__/integration/lifecycle.test.d.ts.map +0 -1
  457. package/dist/twins/__tests__/integration/lifecycle.test.js +0 -127
  458. package/dist/twins/__tests__/integration/lifecycle.test.js.map +0 -1
  459. package/dist/twins/__tests__/integration/persistence-integration.test.d.ts +0 -14
  460. package/dist/twins/__tests__/integration/persistence-integration.test.d.ts.map +0 -1
  461. package/dist/twins/__tests__/integration/persistence-integration.test.js +0 -132
  462. package/dist/twins/__tests__/integration/persistence-integration.test.js.map +0 -1
  463. package/dist/twins/__tests__/persistence.test.d.ts +0 -10
  464. package/dist/twins/__tests__/persistence.test.d.ts.map +0 -1
  465. package/dist/twins/__tests__/persistence.test.js +0 -300
  466. package/dist/twins/__tests__/persistence.test.js.map +0 -1
  467. package/dist/twins/__tests__/registry.test.d.ts +0 -7
  468. package/dist/twins/__tests__/registry.test.d.ts.map +0 -1
  469. package/dist/twins/__tests__/registry.test.js +0 -282
  470. package/dist/twins/__tests__/registry.test.js.map +0 -1
  471. package/dist/twins/__tests__/run-state.test.d.ts +0 -9
  472. package/dist/twins/__tests__/run-state.test.d.ts.map +0 -1
  473. package/dist/twins/__tests__/run-state.test.js +0 -112
  474. package/dist/twins/__tests__/run-state.test.js.map +0 -1
  475. package/dist/twins/__tests__/templates-cli.test.d.ts +0 -10
  476. package/dist/twins/__tests__/templates-cli.test.d.ts.map +0 -1
  477. package/dist/twins/__tests__/templates-cli.test.js +0 -187
  478. package/dist/twins/__tests__/templates-cli.test.js.map +0 -1
  479. package/dist/twins/__tests__/templates.test.d.ts +0 -7
  480. package/dist/twins/__tests__/templates.test.d.ts.map +0 -1
  481. package/dist/twins/__tests__/templates.test.js +0 -87
  482. package/dist/twins/__tests__/templates.test.js.map +0 -1
  483. package/dist/twins/__tests__/twins-cli.test.d.ts +0 -11
  484. package/dist/twins/__tests__/twins-cli.test.d.ts.map +0 -1
  485. package/dist/twins/__tests__/twins-cli.test.js +0 -365
  486. package/dist/twins/__tests__/twins-cli.test.js.map +0 -1
@@ -1,452 +0,0 @@
1
- /**
2
- * Unit tests for edge-selector.ts (story 42-12).
3
- * Covers all 7 acceptance criteria.
4
- */
5
- import { describe, it, expect, vi } from 'vitest';
6
- import { selectEdge, normalizeLabel, bestByWeightThenLexical } from '../edge-selector.js';
7
- import { GraphContext } from '../context.js';
8
- // ---------------------------------------------------------------------------
9
- // Helpers
10
- // ---------------------------------------------------------------------------
11
- function makeNode(id) {
12
- return {
13
- id,
14
- label: '',
15
- shape: '',
16
- type: '',
17
- prompt: '',
18
- maxRetries: 0,
19
- goalGate: false,
20
- retryTarget: '',
21
- fallbackRetryTarget: '',
22
- fidelity: '',
23
- threadId: '',
24
- class: '',
25
- timeout: 0,
26
- llmModel: '',
27
- llmProvider: '',
28
- reasoningEffort: '',
29
- autoStatus: false,
30
- allowPartial: false,
31
- toolCommand: '',
32
- backend: '',
33
- };
34
- }
35
- function makeEdge(fromNode, toNode, overrides) {
36
- return {
37
- fromNode,
38
- toNode,
39
- label: '',
40
- condition: '',
41
- weight: 0,
42
- fidelity: '',
43
- threadId: '',
44
- loopRestart: false,
45
- ...overrides,
46
- };
47
- }
48
- function makeGraph(edges) {
49
- return {
50
- id: '',
51
- goal: '',
52
- label: '',
53
- modelStylesheet: '',
54
- defaultMaxRetries: 0,
55
- retryTarget: '',
56
- fallbackRetryTarget: '',
57
- defaultFidelity: '',
58
- nodes: new Map(),
59
- edges,
60
- outgoingEdges: (nodeId) => edges.filter((e) => e.fromNode === nodeId),
61
- startNode: () => {
62
- throw new Error('not implemented');
63
- },
64
- exitNode: () => {
65
- throw new Error('not implemented');
66
- },
67
- };
68
- }
69
- const emptyOutcome = { status: 'SUCCESS' };
70
- // ---------------------------------------------------------------------------
71
- // AC6: normalizeLabel
72
- // ---------------------------------------------------------------------------
73
- describe('normalizeLabel (AC6)', () => {
74
- it('strips bracket accelerator prefix [Y] Yes → "yes"', () => {
75
- expect(normalizeLabel('[Y] Yes')).toBe('yes');
76
- });
77
- it('strips bracket accelerator prefix [y] yes (already lowercase)', () => {
78
- expect(normalizeLabel('[y] yes')).toBe('yes');
79
- });
80
- it('strips paren accelerator prefix y) No → "no"', () => {
81
- expect(normalizeLabel('y) No')).toBe('no');
82
- });
83
- it('strips dash accelerator prefix y - Maybe → "maybe"', () => {
84
- expect(normalizeLabel('y - Maybe')).toBe('maybe');
85
- });
86
- it('handles no accelerator prefix — lowercases and trims', () => {
87
- expect(normalizeLabel('Continue')).toBe('continue');
88
- });
89
- it('handles empty string → empty string', () => {
90
- expect(normalizeLabel('')).toBe('');
91
- });
92
- it('trims surrounding whitespace', () => {
93
- expect(normalizeLabel(' Continue ')).toBe('continue');
94
- });
95
- it('strips dash accelerator without spaces (y-maybe)', () => {
96
- expect(normalizeLabel('y-Maybe')).toBe('maybe');
97
- });
98
- });
99
- // ---------------------------------------------------------------------------
100
- // bestByWeightThenLexical helper
101
- // ---------------------------------------------------------------------------
102
- describe('bestByWeightThenLexical', () => {
103
- it('returns the single edge when given one', () => {
104
- const edge = makeEdge('a', 'b', { weight: 5 });
105
- expect(bestByWeightThenLexical([edge])).toBe(edge);
106
- });
107
- it('returns higher-weight edge', () => {
108
- const low = makeEdge('a', 'b', { weight: 2 });
109
- const high = makeEdge('a', 'c', { weight: 5 });
110
- expect(bestByWeightThenLexical([low, high])).toBe(high);
111
- });
112
- it('breaks ties by lexically-first target node ID', () => {
113
- const toZ = makeEdge('a', 'node_z', { weight: 3 });
114
- const toA = makeEdge('a', 'node_a', { weight: 3 });
115
- expect(bestByWeightThenLexical([toZ, toA])).toBe(toA);
116
- });
117
- it('does not mutate the input array', () => {
118
- const edges = [makeEdge('a', 'c', { weight: 1 }), makeEdge('a', 'b', { weight: 5 })];
119
- const original = [...edges];
120
- bestByWeightThenLexical(edges);
121
- expect(edges).toEqual(original);
122
- });
123
- it('treats missing weight as 0', () => {
124
- const noWeight = makeEdge('a', 'x');
125
- const weighted = makeEdge('a', 'y', { weight: 1 });
126
- expect(bestByWeightThenLexical([noWeight, weighted])).toBe(weighted);
127
- });
128
- });
129
- // ---------------------------------------------------------------------------
130
- // AC5: No outgoing edges → null
131
- // ---------------------------------------------------------------------------
132
- describe('selectEdge AC5 — no outgoing edges', () => {
133
- it('returns null when node has no outgoing edges', async () => {
134
- const node = makeNode('a');
135
- const graph = makeGraph([makeEdge('other', 'a')]); // edge FROM another node
136
- const ctx = new GraphContext();
137
- expect(await selectEdge(node, emptyOutcome, ctx, graph)).toBeNull();
138
- });
139
- it('returns null when edge list is empty', async () => {
140
- const node = makeNode('a');
141
- const graph = makeGraph([]);
142
- const ctx = new GraphContext();
143
- expect(await selectEdge(node, emptyOutcome, ctx, graph)).toBeNull();
144
- });
145
- });
146
- // ---------------------------------------------------------------------------
147
- // AC1: Step 1 — Condition-matched edges
148
- // ---------------------------------------------------------------------------
149
- describe('selectEdge AC1 — condition-matched edges', () => {
150
- it('returns a condition-matched edge (ignoring unconditional)', async () => {
151
- const node = makeNode('start');
152
- const conditional = makeEdge('start', 'conditional_target', {
153
- condition: 'status=success',
154
- weight: 0,
155
- });
156
- const unconditional = makeEdge('start', 'unconditional_target', {
157
- condition: '',
158
- weight: 10, // higher weight but should be ignored
159
- });
160
- const graph = makeGraph([conditional, unconditional]);
161
- const ctx = new GraphContext({ status: 'success' });
162
- const result = await selectEdge(node, emptyOutcome, ctx, graph);
163
- expect(result).toBe(conditional);
164
- });
165
- it('returns the higher-weight match when two conditions both match', async () => {
166
- const node = makeNode('start');
167
- const low = makeEdge('start', 'b', { condition: 'status=success', weight: 1 });
168
- const high = makeEdge('start', 'c', { condition: 'status=success', weight: 5 });
169
- const graph = makeGraph([low, high]);
170
- const ctx = new GraphContext({ status: 'success' });
171
- expect(await selectEdge(node, emptyOutcome, ctx, graph)).toBe(high);
172
- });
173
- it('uses lexically-first target as tiebreak on equal weights', async () => {
174
- const node = makeNode('start');
175
- const toZ = makeEdge('start', 'node_z', { condition: 'x=y', weight: 3 });
176
- const toA = makeEdge('start', 'node_a', { condition: 'x=y', weight: 3 });
177
- const graph = makeGraph([toZ, toA]);
178
- const ctx = new GraphContext({ x: 'y' });
179
- expect(await selectEdge(node, emptyOutcome, ctx, graph)).toBe(toA);
180
- });
181
- it('ignores condition-bearing edge when condition does not match', async () => {
182
- const node = makeNode('start');
183
- const nonMatching = makeEdge('start', 'b', { condition: 'status=failure', weight: 10 });
184
- const unconditional = makeEdge('start', 'c', { condition: '', weight: 0 });
185
- const graph = makeGraph([nonMatching, unconditional]);
186
- const ctx = new GraphContext({ status: 'success' });
187
- // Falls through to Step 4
188
- const result = await selectEdge(node, emptyOutcome, ctx, graph);
189
- expect(result).toBe(unconditional);
190
- });
191
- it('treats invalid condition syntax as non-matching (no throw)', async () => {
192
- const node = makeNode('start');
193
- const badCondition = makeEdge('start', 'b', { condition: 'invalid==syntax', weight: 10 });
194
- const fallback = makeEdge('start', 'c', { condition: '', weight: 0 });
195
- const graph = makeGraph([badCondition, fallback]);
196
- const ctx = new GraphContext();
197
- // Should not throw; falls through to Step 4
198
- const result = await selectEdge(node, emptyOutcome, ctx, graph);
199
- expect(result).toBe(fallback);
200
- });
201
- });
202
- // ---------------------------------------------------------------------------
203
- // AC7: Condition match supersedes preferredLabel and suggestedNextIds
204
- // ---------------------------------------------------------------------------
205
- describe('selectEdge AC7 — condition supersedes preferredLabel and suggestedNextIds', () => {
206
- it('returns conditional edge even when preferredLabel and suggestedNextIds point elsewhere', async () => {
207
- const node = makeNode('start');
208
- const conditional = makeEdge('start', 'cond_target', {
209
- condition: 'go=yes',
210
- label: 'Conditional Path',
211
- weight: 0,
212
- });
213
- const preferredTarget = makeEdge('start', 'preferred_target', {
214
- condition: '',
215
- label: 'preferred',
216
- weight: 5,
217
- });
218
- const suggestedTarget = makeEdge('start', 'suggested_target', {
219
- condition: '',
220
- label: 'suggested',
221
- weight: 0,
222
- });
223
- const graph = makeGraph([conditional, preferredTarget, suggestedTarget]);
224
- const ctx = new GraphContext({ go: 'yes' });
225
- const outcome = {
226
- status: 'SUCCESS',
227
- preferredLabel: 'preferred',
228
- suggestedNextIds: ['suggested_target'],
229
- };
230
- expect(await selectEdge(node, outcome, ctx, graph)).toBe(conditional);
231
- });
232
- });
233
- // ---------------------------------------------------------------------------
234
- // AC2: Step 2 — Preferred label match
235
- // ---------------------------------------------------------------------------
236
- describe('selectEdge AC2 — preferred label match', () => {
237
- it('matches unconditional edge by preferred label (exact after normalization)', async () => {
238
- const node = makeNode('start');
239
- const edgeYes = makeEdge('start', 'yes_node', { label: 'Yes', condition: '' });
240
- const edgeNo = makeEdge('start', 'no_node', { label: 'No', condition: '' });
241
- const graph = makeGraph([edgeYes, edgeNo]);
242
- const ctx = new GraphContext();
243
- const outcome = { status: 'SUCCESS', preferredLabel: 'Yes' };
244
- expect(await selectEdge(node, outcome, ctx, graph)).toBe(edgeYes);
245
- });
246
- it('matches with accelerator-prefix normalization', async () => {
247
- const node = makeNode('start');
248
- const edgeYes = makeEdge('start', 'yes_node', { label: '[Y] Yes', condition: '' });
249
- const graph = makeGraph([edgeYes]);
250
- const ctx = new GraphContext();
251
- const outcome = { status: 'SUCCESS', preferredLabel: 'Yes' };
252
- expect(await selectEdge(node, outcome, ctx, graph)).toBe(edgeYes);
253
- });
254
- it('falls through to Step 3/4 when preferred label does not match any edge', async () => {
255
- const node = makeNode('start');
256
- const edgeA = makeEdge('start', 'node_a', { label: 'Alpha', condition: '', weight: 5 });
257
- const edgeB = makeEdge('start', 'node_b', { label: 'Beta', condition: '', weight: 1 });
258
- const graph = makeGraph([edgeA, edgeB]);
259
- const ctx = new GraphContext();
260
- const outcome = { status: 'SUCCESS', preferredLabel: 'Gamma' }; // no match
261
- // Falls to Step 4: highest weight is node_a
262
- expect(await selectEdge(node, outcome, ctx, graph)).toBe(edgeA);
263
- });
264
- it('does not match conditional edge via preferred label', async () => {
265
- const node = makeNode('start');
266
- const conditional = makeEdge('start', 'cond_node', {
267
- label: 'yes',
268
- condition: 'x=y', // conditional — will not match because condition fails
269
- });
270
- const unconditional = makeEdge('start', 'uncond_node', {
271
- label: 'yes',
272
- condition: '',
273
- });
274
- const graph = makeGraph([conditional, unconditional]);
275
- const ctx = new GraphContext({ x: 'z' }); // condition does NOT match
276
- const outcome = { status: 'SUCCESS', preferredLabel: 'yes' };
277
- // Step 1: conditional edge's condition fails → no match
278
- // Step 2: unconditional edge label matches preferredLabel → returns it
279
- expect(await selectEdge(node, outcome, ctx, graph)).toBe(unconditional);
280
- });
281
- });
282
- // ---------------------------------------------------------------------------
283
- // AC3: Step 3 — Suggested next IDs
284
- // ---------------------------------------------------------------------------
285
- describe('selectEdge AC3 — suggested next IDs', () => {
286
- it('returns edge to first matching suggested ID', async () => {
287
- const node = makeNode('start');
288
- const edgeB = makeEdge('start', 'b', { condition: '', label: 'B' });
289
- const edgeC = makeEdge('start', 'c', { condition: '', label: 'C' });
290
- const graph = makeGraph([edgeC, edgeB]); // C listed first in edges, but order of suggestedNextIds wins
291
- const ctx = new GraphContext();
292
- const outcome = { status: 'SUCCESS', suggestedNextIds: ['b', 'c'] };
293
- // b is first in suggestedNextIds → should return edge to b
294
- expect(await selectEdge(node, outcome, ctx, graph)).toBe(edgeB);
295
- });
296
- it('skips first suggested ID if not in edges, returns second match', async () => {
297
- const node = makeNode('start');
298
- const edgeC = makeEdge('start', 'c', { condition: '', label: 'C' });
299
- const graph = makeGraph([edgeC]);
300
- const ctx = new GraphContext();
301
- const outcome = { status: 'SUCCESS', suggestedNextIds: ['missing', 'c'] };
302
- expect(await selectEdge(node, outcome, ctx, graph)).toBe(edgeC);
303
- });
304
- it('falls through to Step 4 when no suggested ID matches any edge', async () => {
305
- const node = makeNode('start');
306
- const edgeA = makeEdge('start', 'a', { condition: '', weight: 3 });
307
- const edgeB = makeEdge('start', 'b', { condition: '', weight: 1 });
308
- const graph = makeGraph([edgeA, edgeB]);
309
- const ctx = new GraphContext();
310
- const outcome = { status: 'SUCCESS', suggestedNextIds: ['nonexistent'] };
311
- // Falls to Step 4: highest weight is 'a'
312
- expect(await selectEdge(node, outcome, ctx, graph)).toBe(edgeA);
313
- });
314
- it('does not match conditional edge via suggestedNextIds', async () => {
315
- const node = makeNode('start');
316
- const conditional = makeEdge('start', 'x', { condition: 'a=b', weight: 0 });
317
- const unconditional = makeEdge('start', 'y', { condition: '', weight: 0 });
318
- const graph = makeGraph([conditional, unconditional]);
319
- const ctx = new GraphContext({ a: 'z' }); // condition fails
320
- const outcome = { status: 'SUCCESS', suggestedNextIds: ['x'] };
321
- // Step 1: conditional edge condition fails → no match
322
- // Step 3: 'x' is in suggestedNextIds BUT edge to 'x' has a condition → skip
323
- // Step 4: unconditional edge to 'y'
324
- expect(await selectEdge(node, outcome, ctx, graph)).toBe(unconditional);
325
- });
326
- });
327
- // ---------------------------------------------------------------------------
328
- // AC4: Steps 4 & 5 — Highest weight with lexical tiebreak
329
- // ---------------------------------------------------------------------------
330
- describe('selectEdge AC4 — highest weight with lexical tiebreak', () => {
331
- it('returns the edge with the highest weight', async () => {
332
- const node = makeNode('start');
333
- const low = makeEdge('start', 'x', { condition: '', weight: 2 });
334
- const high = makeEdge('start', 'y', { condition: '', weight: 5 });
335
- const graph = makeGraph([low, high]);
336
- const ctx = new GraphContext();
337
- expect(await selectEdge(node, emptyOutcome, ctx, graph)).toBe(high);
338
- });
339
- it('returns lexically-first target when weights are equal', async () => {
340
- const node = makeNode('start');
341
- const toB = makeEdge('start', 'node_b', { condition: '', weight: 3 });
342
- const toA = makeEdge('start', 'node_a', { condition: '', weight: 3 });
343
- const graph = makeGraph([toB, toA]);
344
- const ctx = new GraphContext();
345
- expect(await selectEdge(node, emptyOutcome, ctx, graph)).toBe(toA);
346
- });
347
- it('returns null when all outgoing edges are conditional and none match', async () => {
348
- const node = makeNode('start');
349
- const cond = makeEdge('start', 'x', { condition: 'a=b', weight: 5 });
350
- const graph = makeGraph([cond]);
351
- const ctx = new GraphContext({ a: 'z' }); // condition fails
352
- // Step 1: no match, Step 2: no preferredLabel, Step 3: no suggestedNextIds
353
- // Steps 4&5: no unconditional edges → null
354
- expect(await selectEdge(node, emptyOutcome, ctx, graph)).toBeNull();
355
- });
356
- it('treats default weight (0) correctly in comparison', async () => {
357
- const node = makeNode('start');
358
- const defaultW = makeEdge('start', 'a', { condition: '' }); // weight: 0
359
- const posW = makeEdge('start', 'b', { condition: '', weight: 1 });
360
- const graph = makeGraph([defaultW, posW]);
361
- const ctx = new GraphContext();
362
- expect(await selectEdge(node, emptyOutcome, ctx, graph)).toBe(posW);
363
- });
364
- });
365
- // ---------------------------------------------------------------------------
366
- // LLM condition tests (story 50-4)
367
- // ---------------------------------------------------------------------------
368
- describe('selectEdge — LLM conditions', () => {
369
- it('selects LLM-conditioned edge when llmCall returns "yes"', async () => {
370
- const node = makeNode('start');
371
- const llmEdge = makeEdge('start', 'llm_target', {
372
- condition: 'llm:Is this ready?',
373
- weight: 0,
374
- });
375
- const unconditional = makeEdge('start', 'fallback', { condition: '', weight: 0 });
376
- const graph = makeGraph([llmEdge, unconditional]);
377
- const ctx = new GraphContext();
378
- const mockLlmCall = vi.fn(async (_prompt) => 'yes');
379
- const result = await selectEdge(node, emptyOutcome, ctx, graph, { llmCall: mockLlmCall });
380
- expect(result).toBe(llmEdge);
381
- expect(mockLlmCall).toHaveBeenCalledOnce();
382
- });
383
- it('does not select LLM-conditioned edge when llmCall returns "no"; falls through to unconditional', async () => {
384
- const node = makeNode('start');
385
- const llmEdge = makeEdge('start', 'llm_target', {
386
- condition: 'llm:Is this ready?',
387
- weight: 0,
388
- });
389
- const unconditional = makeEdge('start', 'fallback', { condition: '', weight: 0 });
390
- const graph = makeGraph([llmEdge, unconditional]);
391
- const ctx = new GraphContext();
392
- const mockLlmCall = vi.fn(async (_prompt) => 'no');
393
- const result = await selectEdge(node, emptyOutcome, ctx, graph, { llmCall: mockLlmCall });
394
- expect(result).toBe(unconditional);
395
- });
396
- it('treats llmCall error as non-match; falls through to unconditional; populates llm.edge_eval_errors', async () => {
397
- const node = makeNode('start');
398
- const llmEdge = makeEdge('start', 'llm_target', {
399
- condition: 'llm:Is this ready?',
400
- weight: 0,
401
- });
402
- const unconditional = makeEdge('start', 'fallback', { condition: '', weight: 0 });
403
- const graph = makeGraph([llmEdge, unconditional]);
404
- const ctx = new GraphContext();
405
- const mockLlmCall = vi.fn(async (_prompt) => {
406
- throw new Error('LLM network failure');
407
- });
408
- const result = await selectEdge(node, emptyOutcome, ctx, graph, { llmCall: mockLlmCall });
409
- expect(result).toBe(unconditional);
410
- const errors = ctx.get('llm.edge_eval_errors');
411
- expect(Array.isArray(errors)).toBe(true);
412
- expect(errors.length).toBe(1);
413
- });
414
- it('selects regular condition edge when both regular and llm: conditions are present; llm: returns no', async () => {
415
- const node = makeNode('start');
416
- // Regular condition listed first — matches (outcome=success is in context)
417
- const regularEdge = makeEdge('start', 'regular_target', {
418
- condition: 'outcome=success',
419
- weight: 5,
420
- });
421
- // LLM condition listed second — returns "no" so does not match
422
- const llmEdge = makeEdge('start', 'llm_target', {
423
- condition: 'llm:Is this ready?',
424
- weight: 10, // higher weight, but won't match
425
- });
426
- const graph = makeGraph([regularEdge, llmEdge]);
427
- const ctx = new GraphContext({ outcome: 'success' });
428
- // LLM returns "no" → only regular condition matches → regular edge selected
429
- const mockLlmCall = vi.fn(async (_prompt) => 'no');
430
- const result = await selectEdge(node, emptyOutcome, ctx, graph, { llmCall: mockLlmCall });
431
- expect(result).toBe(regularEdge);
432
- });
433
- it('increments llm.edge_eval_count by 1 for each LLM evaluation (AC6)', async () => {
434
- const node = makeNode('start');
435
- const llmEdge1 = makeEdge('start', 'target1', {
436
- condition: 'llm:Is step 1 ready?',
437
- weight: 0,
438
- });
439
- const llmEdge2 = makeEdge('start', 'target2', {
440
- condition: 'llm:Is step 2 ready?',
441
- weight: 0,
442
- });
443
- const graph = makeGraph([llmEdge1, llmEdge2]);
444
- const ctx = new GraphContext();
445
- // Both return "no" so neither matches — both are evaluated, counting to 2
446
- const mockLlmCall = vi.fn(async (_prompt) => 'no');
447
- await selectEdge(node, emptyOutcome, ctx, graph, { llmCall: mockLlmCall });
448
- expect(ctx.get('llm.edge_eval_count')).toBe(2);
449
- expect(mockLlmCall).toHaveBeenCalledTimes(2);
450
- });
451
- });
452
- //# sourceMappingURL=edge-selector.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"edge-selector.test.js","sourceRoot":"","sources":["../../../src/graph/__tests__/edge-selector.test.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Convergence controller integration tests for the graph executor.
3
- * Story 45-8: tests that all convergence components are wired into the
4
- * execution loop (goal gate resolution, retry routing, budget enforcement,
5
- * plateau detection, and remediation context injection).
6
- *
7
- * DO NOT modify executor.test.ts — this file is the focused integration
8
- * test for the convergence loop wiring. The existing executor.test.ts
9
- * mocks out the convergence module entirely; these tests use real implementations.
10
- */
11
- export {};
12
- //# sourceMappingURL=executor-convergence.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor-convergence.test.d.ts","sourceRoot":"","sources":["../../../src/graph/__tests__/executor-convergence.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}