@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,585 +0,0 @@
1
- /**
2
- * Unit tests for ConvergenceController (story 42-16).
3
- *
4
- * Covers all goal gate evaluation ACs:
5
- * AC1 — PARTIAL_SUCCESS satisfies goal gates
6
- * AC4 — multiple goal gates with mixed SUCCESS/PARTIAL_SUCCESS are all satisfied
7
- */
8
- import { describe, it, expect, beforeEach } from 'vitest';
9
- import { createConvergenceController } from '../controller.js';
10
- import { TypedEventBusImpl } from '@substrate-ai/core';
11
- // ---------------------------------------------------------------------------
12
- // Test helpers
13
- // ---------------------------------------------------------------------------
14
- const minimalNode = {
15
- id: '',
16
- label: '',
17
- shape: '',
18
- type: '',
19
- prompt: '',
20
- maxRetries: 0,
21
- goalGate: false,
22
- retryTarget: '',
23
- fallbackRetryTarget: '',
24
- fidelity: '',
25
- threadId: '',
26
- class: '',
27
- timeout: 0,
28
- llmModel: '',
29
- llmProvider: '',
30
- reasoningEffort: '',
31
- autoStatus: false,
32
- allowPartial: false,
33
- toolCommand: '',
34
- backend: '',
35
- };
36
- /** Create a node with goalGate=true */
37
- function makeGateNode(id) {
38
- return { ...minimalNode, id, goalGate: true };
39
- }
40
- /** Create a node with goalGate=false */
41
- function makeNonGateNode(id) {
42
- return { ...minimalNode, id, goalGate: false };
43
- }
44
- /** Build a minimal Graph stub with the given nodes. evaluateGates only reads graph.nodes. */
45
- function makeGraph(nodeList) {
46
- const nodes = new Map(nodeList.map((n) => [n.id, n]));
47
- return {
48
- id: '',
49
- goal: '',
50
- label: '',
51
- modelStylesheet: '',
52
- defaultMaxRetries: 0,
53
- retryTarget: '',
54
- fallbackRetryTarget: '',
55
- defaultFidelity: '',
56
- nodes,
57
- edges: [],
58
- outgoingEdges: () => [],
59
- startNode: () => { throw new Error('not used in these tests'); },
60
- exitNode: () => { throw new Error('not used in these tests'); },
61
- };
62
- }
63
- // ---------------------------------------------------------------------------
64
- // Setup
65
- // ---------------------------------------------------------------------------
66
- let controller;
67
- beforeEach(() => {
68
- controller = createConvergenceController();
69
- });
70
- // ---------------------------------------------------------------------------
71
- // AC1: PARTIAL_SUCCESS satisfies goal gates
72
- // ---------------------------------------------------------------------------
73
- describe('AC1: PARTIAL_SUCCESS satisfies goal gates', () => {
74
- it('single goalGate=true node with PARTIAL_SUCCESS recorded → satisfied', () => {
75
- const gate = makeGateNode('gate-node');
76
- const graph = makeGraph([gate]);
77
- controller.recordOutcome('gate-node', 'PARTIAL_SUCCESS');
78
- const result = controller.evaluateGates(graph);
79
- expect(result.satisfied).toBe(true);
80
- expect(result.failingNodes).toEqual([]);
81
- });
82
- it('single goalGate=true node with SUCCESS recorded → satisfied', () => {
83
- const gate = makeGateNode('gate-node');
84
- const graph = makeGraph([gate]);
85
- controller.recordOutcome('gate-node', 'SUCCESS');
86
- const result = controller.evaluateGates(graph);
87
- expect(result.satisfied).toBe(true);
88
- expect(result.failingNodes).toEqual([]);
89
- });
90
- it('single goalGate=true node with FAILURE recorded → not satisfied', () => {
91
- const gate = makeGateNode('gate-node');
92
- const graph = makeGraph([gate]);
93
- controller.recordOutcome('gate-node', 'FAILURE');
94
- const result = controller.evaluateGates(graph);
95
- expect(result.satisfied).toBe(false);
96
- expect(result.failingNodes).toContain('gate-node');
97
- });
98
- });
99
- // ---------------------------------------------------------------------------
100
- // AC4: Multiple goal gates with mixed SUCCESS and PARTIAL_SUCCESS are all satisfied
101
- // ---------------------------------------------------------------------------
102
- describe('AC4: multiple goal gates with mixed outcomes', () => {
103
- it('two goalGate nodes — one SUCCESS, one PARTIAL_SUCCESS → both satisfied', () => {
104
- const gate1 = makeGateNode('gate1');
105
- const gate2 = makeGateNode('gate2');
106
- const graph = makeGraph([gate1, gate2]);
107
- controller.recordOutcome('gate1', 'SUCCESS');
108
- controller.recordOutcome('gate2', 'PARTIAL_SUCCESS');
109
- const result = controller.evaluateGates(graph);
110
- expect(result.satisfied).toBe(true);
111
- expect(result.failingNodes).toEqual([]);
112
- });
113
- it('two goalGate nodes — one SUCCESS, one FAILURE → not satisfied, failingNodes contains failing node', () => {
114
- const gate1 = makeGateNode('gate1');
115
- const gate2 = makeGateNode('gate2');
116
- const graph = makeGraph([gate1, gate2]);
117
- controller.recordOutcome('gate1', 'SUCCESS');
118
- controller.recordOutcome('gate2', 'FAILURE');
119
- const result = controller.evaluateGates(graph);
120
- expect(result.satisfied).toBe(false);
121
- expect(result.failingNodes).toContain('gate2');
122
- expect(result.failingNodes).not.toContain('gate1');
123
- });
124
- });
125
- // ---------------------------------------------------------------------------
126
- // Goal gate node with no recorded outcome → not satisfied
127
- // ---------------------------------------------------------------------------
128
- describe('goal gate node with no recorded outcome', () => {
129
- it('returns satisfied=false when a goalGate node has no recorded outcome', () => {
130
- const gate = makeGateNode('gate-node');
131
- const graph = makeGraph([gate]);
132
- // No recordOutcome call
133
- const result = controller.evaluateGates(graph);
134
- expect(result.satisfied).toBe(false);
135
- expect(result.failingNodes).toContain('gate-node');
136
- });
137
- });
138
- // ---------------------------------------------------------------------------
139
- // Graph with no goal gate nodes → vacuously satisfied
140
- // ---------------------------------------------------------------------------
141
- describe('graph with no goal gate nodes', () => {
142
- it('returns satisfied=true and empty failingNodes when no nodes have goalGate=true', () => {
143
- const nonGate1 = makeNonGateNode('node1');
144
- const nonGate2 = makeNonGateNode('node2');
145
- const graph = makeGraph([nonGate1, nonGate2]);
146
- controller.recordOutcome('node1', 'SUCCESS');
147
- controller.recordOutcome('node2', 'FAILURE'); // doesn't matter — no goal gates
148
- const result = controller.evaluateGates(graph);
149
- expect(result.satisfied).toBe(true);
150
- expect(result.failingNodes).toEqual([]);
151
- });
152
- it('returns satisfied=true for an empty graph (no nodes)', () => {
153
- const graph = makeGraph([]);
154
- const result = controller.evaluateGates(graph);
155
- expect(result.satisfied).toBe(true);
156
- expect(result.failingNodes).toEqual([]);
157
- });
158
- });
159
- // ---------------------------------------------------------------------------
160
- // recordOutcome / evaluateGates consistency
161
- // ---------------------------------------------------------------------------
162
- describe('recordOutcome updates are reflected in evaluateGates', () => {
163
- it('overwriting an outcome changes the evaluation result', () => {
164
- const gate = makeGateNode('gate-node');
165
- const graph = makeGraph([gate]);
166
- controller.recordOutcome('gate-node', 'FAILURE');
167
- expect(controller.evaluateGates(graph).satisfied).toBe(false);
168
- // Overwrite with SUCCESS
169
- controller.recordOutcome('gate-node', 'SUCCESS');
170
- expect(controller.evaluateGates(graph).satisfied).toBe(true);
171
- });
172
- });
173
- // ---------------------------------------------------------------------------
174
- // Non-goalGate nodes are ignored in evaluateGates
175
- // ---------------------------------------------------------------------------
176
- describe('non-goalGate nodes are ignored in evaluateGates', () => {
177
- it('FAILURE outcome on a non-goalGate node does not affect gate evaluation', () => {
178
- const gate = makeGateNode('gate-node');
179
- const nonGate = makeNonGateNode('work-node');
180
- const graph = makeGraph([gate, nonGate]);
181
- controller.recordOutcome('gate-node', 'SUCCESS');
182
- controller.recordOutcome('work-node', 'FAILURE'); // should be ignored
183
- const result = controller.evaluateGates(graph);
184
- expect(result.satisfied).toBe(true);
185
- expect(result.failingNodes).toEqual([]);
186
- });
187
- });
188
- // ---------------------------------------------------------------------------
189
- // resolveRetryTarget — 4-level priority chain (Story 45-2)
190
- // ---------------------------------------------------------------------------
191
- /** Build a node with specific retry fields; other fields default to minimalNode. */
192
- function makeNodeWithRetry(id, retryTarget, fallbackRetryTarget) {
193
- return { ...minimalNode, id, retryTarget, fallbackRetryTarget };
194
- }
195
- describe('resolveRetryTarget — AC1: node.retryTarget resolves (existing node)', () => {
196
- it('returns node.retryTarget when target node exists in graph', () => {
197
- const failedNode = makeNodeWithRetry('failing', 'dev_story', '');
198
- const targetNode = makeNonGateNode('dev_story');
199
- const graph = makeGraph([failedNode, targetNode]);
200
- const result = controller.resolveRetryTarget(failedNode, graph);
201
- expect(result).toBe('dev_story');
202
- });
203
- });
204
- describe('resolveRetryTarget — AC2: node.fallbackRetryTarget resolves when retryTarget absent', () => {
205
- it('returns node.fallbackRetryTarget when retryTarget is absent but fallback exists', () => {
206
- const failedNode = makeNodeWithRetry('failing', '', 'start_over');
207
- const targetNode = makeNonGateNode('start_over');
208
- const graph = makeGraph([failedNode, targetNode]);
209
- const result = controller.resolveRetryTarget(failedNode, graph);
210
- expect(result).toBe('start_over');
211
- });
212
- });
213
- describe('resolveRetryTarget — AC3: graph.retryTarget resolves when both node-level fields absent', () => {
214
- it('returns graph.retryTarget when both node-level fields are empty', () => {
215
- const failedNode = makeNodeWithRetry('failing', '', '');
216
- const targetNode = makeNonGateNode('global_retry');
217
- const graph = { ...makeGraph([failedNode, targetNode]), retryTarget: 'global_retry' };
218
- const result = controller.resolveRetryTarget(failedNode, graph);
219
- expect(result).toBe('global_retry');
220
- });
221
- });
222
- describe('resolveRetryTarget — AC4: graph.fallbackRetryTarget resolves at level 4', () => {
223
- it('returns graph.fallbackRetryTarget when levels 1–3 are absent', () => {
224
- const failedNode = makeNodeWithRetry('failing', '', '');
225
- const targetNode = makeNonGateNode('last_resort');
226
- const graph = { ...makeGraph([failedNode, targetNode]), retryTarget: '', fallbackRetryTarget: 'last_resort' };
227
- const result = controller.resolveRetryTarget(failedNode, graph);
228
- expect(result).toBe('last_resort');
229
- });
230
- });
231
- describe('resolveRetryTarget — AC5: returns null when no valid target exists at any level', () => {
232
- it('returns null when all four fields are empty', () => {
233
- const failedNode = makeNodeWithRetry('failing', '', '');
234
- const graph = makeGraph([failedNode]);
235
- const result = controller.resolveRetryTarget(failedNode, graph);
236
- expect(result).toBeNull();
237
- });
238
- it('returns null when all four fields reference non-existent nodes', () => {
239
- const failedNode = makeNodeWithRetry('failing', 'ghost1', 'ghost2');
240
- const graph = { ...makeGraph([failedNode]), retryTarget: 'ghost3', fallbackRetryTarget: 'ghost4' };
241
- const result = controller.resolveRetryTarget(failedNode, graph);
242
- expect(result).toBeNull();
243
- });
244
- });
245
- describe('resolveRetryTarget — AC6: non-existent node reference falls through to next level', () => {
246
- it('falls through ghost node.retryTarget to graph.retryTarget', () => {
247
- const failedNode = makeNodeWithRetry('failing', 'ghost_node', '');
248
- const targetNode = makeNonGateNode('global_retry');
249
- const graph = { ...makeGraph([failedNode, targetNode]), retryTarget: 'global_retry' };
250
- const result = controller.resolveRetryTarget(failedNode, graph);
251
- expect(result).toBe('global_retry');
252
- });
253
- });
254
- describe('resolveRetryTarget — AC7: empty string treated as "not set"', () => {
255
- it('AC7a: empty string in node.retryTarget skips to node.fallbackRetryTarget', () => {
256
- const failedNode = makeNodeWithRetry('failing', '', 'fallback_node');
257
- const targetNode = makeNonGateNode('fallback_node');
258
- const graph = makeGraph([failedNode, targetNode]);
259
- const result = controller.resolveRetryTarget(failedNode, graph);
260
- expect(result).toBe('fallback_node');
261
- });
262
- it('AC7b: empty string in ALL four fields → returns null', () => {
263
- const failedNode = makeNodeWithRetry('failing', '', '');
264
- const graph = { ...makeGraph([failedNode]), retryTarget: '', fallbackRetryTarget: '' };
265
- const result = controller.resolveRetryTarget(failedNode, graph);
266
- expect(result).toBeNull();
267
- });
268
- });
269
- describe('resolveRetryTarget — priority: only highest-priority valid target is returned', () => {
270
- it('returns level 1 (node.retryTarget) even when lower levels are also valid', () => {
271
- const failedNode = makeNodeWithRetry('failing', 'level1_target', 'level2_target');
272
- const level1 = makeNonGateNode('level1_target');
273
- const level2 = makeNonGateNode('level2_target');
274
- const level3 = makeNonGateNode('level3_target');
275
- const level4 = makeNonGateNode('level4_target');
276
- const graph = {
277
- ...makeGraph([failedNode, level1, level2, level3, level4]),
278
- retryTarget: 'level3_target',
279
- fallbackRetryTarget: 'level4_target',
280
- };
281
- const result = controller.resolveRetryTarget(failedNode, graph);
282
- expect(result).toBe('level1_target');
283
- });
284
- });
285
- // ---------------------------------------------------------------------------
286
- // checkGoalGates() — Story 45-1
287
- // ---------------------------------------------------------------------------
288
- describe('checkGoalGates()', () => {
289
- // AC1: SUCCESS outcome satisfies gate
290
- it('AC1: sole goalGate=true node with SUCCESS outcome → {satisfied: true, failedGates: []}', () => {
291
- const gate = makeGateNode('gate-node');
292
- const graph = makeGraph([gate]);
293
- controller.recordOutcome('gate-node', 'SUCCESS');
294
- const result = controller.checkGoalGates(graph, 'test-run');
295
- expect(result.satisfied).toBe(true);
296
- expect(result.failedGates).toEqual([]);
297
- });
298
- // AC2: FAILURE outcome fails gate
299
- it('AC2: sole goalGate=true node with FAILURE outcome → {satisfied: false, failedGates: ["gate-node"]}', () => {
300
- const gate = makeGateNode('gate-node');
301
- const graph = makeGraph([gate]);
302
- controller.recordOutcome('gate-node', 'FAILURE');
303
- const result = controller.checkGoalGates(graph, 'test-run');
304
- expect(result.satisfied).toBe(false);
305
- expect(result.failedGates).toContain('gate-node');
306
- });
307
- // AC3a: two goal gates, first SUCCESS, second FAILURE → satisfied false, only failing in failedGates
308
- it('AC3a: two gates — SUCCESS then FAILURE → satisfied: false, only failing node in failedGates', () => {
309
- const gate1 = makeGateNode('gate-pass');
310
- const gate2 = makeGateNode('gate-fail');
311
- const graph = makeGraph([gate1, gate2]);
312
- controller.recordOutcome('gate-pass', 'SUCCESS');
313
- controller.recordOutcome('gate-fail', 'FAILURE');
314
- const result = controller.checkGoalGates(graph, 'test-run');
315
- expect(result.satisfied).toBe(false);
316
- expect(result.failedGates).toContain('gate-fail');
317
- expect(result.failedGates).not.toContain('gate-pass');
318
- });
319
- // AC3b: two goal gates, first FAILURE, second SUCCESS → satisfied false, failing node in failedGates
320
- it('AC3b: two gates — FAILURE then SUCCESS → satisfied: false, failing node in failedGates, passing node absent', () => {
321
- const gate1 = makeGateNode('gate-fail');
322
- const gate2 = makeGateNode('gate-pass');
323
- const graph = makeGraph([gate1, gate2]);
324
- controller.recordOutcome('gate-fail', 'FAILURE');
325
- controller.recordOutcome('gate-pass', 'SUCCESS');
326
- const result = controller.checkGoalGates(graph, 'test-run');
327
- expect(result.satisfied).toBe(false);
328
- expect(result.failedGates).toContain('gate-fail');
329
- expect(result.failedGates).not.toContain('gate-pass');
330
- });
331
- // AC4: PARTIAL_SUCCESS satisfies gate
332
- it('AC4: PARTIAL_SUCCESS outcome on sole goalGate node → {satisfied: true, failedGates: []}', () => {
333
- const gate = makeGateNode('gate-node');
334
- const graph = makeGraph([gate]);
335
- controller.recordOutcome('gate-node', 'PARTIAL_SUCCESS');
336
- const result = controller.checkGoalGates(graph, 'test-run');
337
- expect(result.satisfied).toBe(true);
338
- expect(result.failedGates).toEqual([]);
339
- });
340
- // AC5a: one goalGate node → exactly one event emitted
341
- it('AC5a: one goalGate node → exactly one graph:goal-gate-checked event emitted', () => {
342
- const gate = makeGateNode('gate-node');
343
- const graph = makeGraph([gate]);
344
- const eventBus = new TypedEventBusImpl();
345
- const emitted = [];
346
- eventBus.on('graph:goal-gate-checked', (payload) => {
347
- emitted.push({ nodeId: payload.nodeId, satisfied: payload.satisfied });
348
- });
349
- controller.recordOutcome('gate-node', 'SUCCESS');
350
- controller.checkGoalGates(graph, 'test-run', eventBus);
351
- expect(emitted).toHaveLength(1);
352
- });
353
- // AC5b: event payload contains runId, nodeId, satisfied
354
- it('AC5b: event payload contains runId === "test-run", nodeId === "gate-node", satisfied === true', () => {
355
- const gate = makeGateNode('gate-node');
356
- const graph = makeGraph([gate]);
357
- const eventBus = new TypedEventBusImpl();
358
- const emitted = [];
359
- eventBus.on('graph:goal-gate-checked', (payload) => {
360
- emitted.push({ runId: payload.runId, nodeId: payload.nodeId, satisfied: payload.satisfied });
361
- });
362
- controller.recordOutcome('gate-node', 'SUCCESS');
363
- controller.checkGoalGates(graph, 'test-run', eventBus);
364
- expect(emitted[0]?.runId).toBe('test-run');
365
- expect(emitted[0]?.nodeId).toBe('gate-node');
366
- expect(emitted[0]?.satisfied).toBe(true);
367
- });
368
- // AC5c: FAILURE gate → event emitted with satisfied: false
369
- it('AC5c: FAILURE gate → graph:goal-gate-checked event emitted with satisfied: false', () => {
370
- const gate = makeGateNode('gate-node');
371
- const graph = makeGraph([gate]);
372
- const eventBus = new TypedEventBusImpl();
373
- const emitted = [];
374
- eventBus.on('graph:goal-gate-checked', (payload) => {
375
- emitted.push({ nodeId: payload.nodeId, satisfied: payload.satisfied });
376
- });
377
- controller.recordOutcome('gate-node', 'FAILURE');
378
- controller.checkGoalGates(graph, 'test-run', eventBus);
379
- expect(emitted).toHaveLength(1);
380
- expect(emitted[0]?.satisfied).toBe(false);
381
- });
382
- // AC5d: no eventBus argument → completes without throwing
383
- it('AC5d: no eventBus argument → method completes without throwing', () => {
384
- const gate = makeGateNode('gate-node');
385
- const graph = makeGraph([gate]);
386
- controller.recordOutcome('gate-node', 'SUCCESS');
387
- expect(() => controller.checkGoalGates(graph, 'test-run')).not.toThrow();
388
- });
389
- // AC6: graph with no goalGate nodes → vacuous satisfaction, zero events
390
- it('AC6: graph with no goalGate nodes → {satisfied: true, failedGates: []}, zero events', () => {
391
- const nonGate1 = makeNonGateNode('node1');
392
- const nonGate2 = makeNonGateNode('node2');
393
- const graph = makeGraph([nonGate1, nonGate2]);
394
- const eventBus = new TypedEventBusImpl();
395
- const emitted = [];
396
- eventBus.on('graph:goal-gate-checked', (payload) => {
397
- emitted.push({ nodeId: payload.nodeId, satisfied: payload.satisfied });
398
- });
399
- controller.recordOutcome('node1', 'SUCCESS');
400
- controller.recordOutcome('node2', 'FAILURE');
401
- const result = controller.checkGoalGates(graph, 'test-run', eventBus);
402
- expect(result.satisfied).toBe(true);
403
- expect(result.failedGates).toEqual([]);
404
- expect(emitted).toHaveLength(0);
405
- });
406
- // Additional: two goal gates both SUCCESS → both satisfied
407
- it('two goalGate nodes both with SUCCESS → satisfied: true, failedGates: []', () => {
408
- const gate1 = makeGateNode('gate1');
409
- const gate2 = makeGateNode('gate2');
410
- const graph = makeGraph([gate1, gate2]);
411
- controller.recordOutcome('gate1', 'SUCCESS');
412
- controller.recordOutcome('gate2', 'SUCCESS');
413
- const result = controller.checkGoalGates(graph, 'test-run');
414
- expect(result.satisfied).toBe(true);
415
- expect(result.failedGates).toEqual([]);
416
- });
417
- // Additional: two goal gates → two events emitted
418
- it('two goalGate nodes → exactly two graph:goal-gate-checked events emitted', () => {
419
- const gate1 = makeGateNode('gate1');
420
- const gate2 = makeGateNode('gate2');
421
- const graph = makeGraph([gate1, gate2]);
422
- const eventBus = new TypedEventBusImpl();
423
- const emitted = [];
424
- eventBus.on('graph:goal-gate-checked', (payload) => {
425
- emitted.push({ nodeId: payload.nodeId, satisfied: payload.satisfied });
426
- });
427
- controller.recordOutcome('gate1', 'SUCCESS');
428
- controller.recordOutcome('gate2', 'PARTIAL_SUCCESS');
429
- controller.checkGoalGates(graph, 'test-run', eventBus);
430
- expect(emitted).toHaveLength(2);
431
- });
432
- // Additional: gate with no recorded outcome → not satisfied
433
- it('goalGate node with no recorded outcome → satisfied: false', () => {
434
- const gate = makeGateNode('gate-node');
435
- const graph = makeGraph([gate]);
436
- const result = controller.checkGoalGates(graph, 'test-run');
437
- expect(result.satisfied).toBe(false);
438
- expect(result.failedGates).toContain('gate-node');
439
- });
440
- });
441
- // ---------------------------------------------------------------------------
442
- // checkGoalGates() — satisfaction threshold (story 46-2)
443
- // ---------------------------------------------------------------------------
444
- describe("checkGoalGates() — satisfaction threshold (story 46-2)", () => {
445
- /** Map-backed IGraphContext helper — avoids cross-package import of GraphContext class. */
446
- function makeContext(score) {
447
- const store = new Map([['satisfaction_score', score]]);
448
- return {
449
- get: (k) => store.get(k),
450
- set: (k, v) => { store.set(k, v); },
451
- getString: (k, d = '') => String(store.get(k) ?? d),
452
- getNumber: (k, d = 0) => Number(store.get(k) ?? d),
453
- getBoolean: (k, d = false) => Boolean(store.get(k) ?? d),
454
- applyUpdates: (u) => { for (const [k, v] of Object.entries(u))
455
- store.set(k, v); },
456
- snapshot: () => Object.fromEntries(store),
457
- clone: () => makeContext(score),
458
- };
459
- }
460
- // AC1: score below threshold fails gate
461
- it('AC1: score=0.79 below threshold=0.8 → satisfied: false, gate node in failedGates', () => {
462
- const gate = makeGateNode('gate-node');
463
- const graph = makeGraph([gate]);
464
- const ctx = makeContext(0.79);
465
- const result = controller.checkGoalGates(graph, 'run-1', undefined, {
466
- context: ctx,
467
- satisfactionThreshold: 0.8,
468
- });
469
- expect(result.satisfied).toBe(false);
470
- expect(result.failedGates).toContain('gate-node');
471
- });
472
- // AC2: score at threshold passes (>= not >)
473
- it('AC2: score=0.80 at threshold=0.8 → satisfied: true, failedGates: []', () => {
474
- const gate = makeGateNode('gate-node');
475
- const graph = makeGraph([gate]);
476
- const ctx = makeContext(0.80);
477
- const result = controller.checkGoalGates(graph, 'run-1', undefined, {
478
- context: ctx,
479
- satisfactionThreshold: 0.8,
480
- });
481
- expect(result.satisfied).toBe(true);
482
- expect(result.failedGates).toEqual([]);
483
- });
484
- // AC2b: score exactly equals threshold (0.5)
485
- it('AC2b: score=0.5 at threshold=0.5 → satisfied: true (inclusive boundary)', () => {
486
- const gate = makeGateNode('gate-node');
487
- const graph = makeGraph([gate]);
488
- const ctx = makeContext(0.5);
489
- const result = controller.checkGoalGates(graph, 'run-1', undefined, {
490
- context: ctx,
491
- satisfactionThreshold: 0.5,
492
- });
493
- expect(result.satisfied).toBe(true);
494
- expect(result.failedGates).toEqual([]);
495
- });
496
- // AC3: relaxed threshold passes with lower score
497
- it('AC3: score=0.6 above relaxed threshold=0.5 → satisfied: true', () => {
498
- const gate = makeGateNode('gate-node');
499
- const graph = makeGraph([gate]);
500
- const ctx = makeContext(0.6);
501
- const result = controller.checkGoalGates(graph, 'run-1', undefined, {
502
- context: ctx,
503
- satisfactionThreshold: 0.5,
504
- });
505
- expect(result.satisfied).toBe(true);
506
- expect(result.failedGates).toEqual([]);
507
- });
508
- // AC4: hot-reload — threshold read fresh on each call (no caching)
509
- it('AC4a: threshold=0.8 score=0.6 → satisfied: false', () => {
510
- const gate = makeGateNode('gate-node');
511
- const graph = makeGraph([gate]);
512
- const ctx = makeContext(0.6);
513
- const result = controller.checkGoalGates(graph, 'run-1', undefined, {
514
- context: ctx,
515
- satisfactionThreshold: 0.8,
516
- });
517
- expect(result.satisfied).toBe(false);
518
- });
519
- it('AC4b: same controller — threshold=0.5 score=0.6 → satisfied: true (no cached threshold)', () => {
520
- const gate = makeGateNode('gate-node');
521
- const graph = makeGraph([gate]);
522
- const ctx = makeContext(0.6);
523
- // First call with high threshold (fails)
524
- controller.checkGoalGates(graph, 'run-1', undefined, {
525
- context: ctx,
526
- satisfactionThreshold: 0.8,
527
- });
528
- // Second call with lower threshold (passes)
529
- const result = controller.checkGoalGates(graph, 'run-1', undefined, {
530
- context: ctx,
531
- satisfactionThreshold: 0.5,
532
- });
533
- expect(result.satisfied).toBe(true);
534
- });
535
- // AC6: backward compatibility — no options uses outcome-status path
536
- it('AC6a: no options, goalGate node with SUCCESS outcome → satisfied: true (outcome-status path)', () => {
537
- const gate = makeGateNode('gate-node');
538
- const graph = makeGraph([gate]);
539
- controller.recordOutcome('gate-node', 'SUCCESS');
540
- const result = controller.checkGoalGates(graph, 'run-1');
541
- expect(result.satisfied).toBe(true);
542
- expect(result.failedGates).toEqual([]);
543
- });
544
- it('AC6b: no options, goalGate node with FAILURE outcome → satisfied: false (outcome-status path preserved)', () => {
545
- const gate = makeGateNode('gate-node');
546
- const graph = makeGraph([gate]);
547
- controller.recordOutcome('gate-node', 'FAILURE');
548
- const result = controller.checkGoalGates(graph, 'run-1');
549
- expect(result.satisfied).toBe(false);
550
- expect(result.failedGates).toContain('gate-node');
551
- });
552
- // AC7: score included in event when threshold is used
553
- it('AC7: score=0.65, threshold=0.7 → event payload has score=0.65 and satisfied=false', () => {
554
- const gate = makeGateNode('gate-node');
555
- const graph = makeGraph([gate]);
556
- const eventBus = new TypedEventBusImpl();
557
- const emitted = [];
558
- eventBus.on('graph:goal-gate-checked', (payload) => {
559
- emitted.push({ runId: payload.runId, nodeId: payload.nodeId, satisfied: payload.satisfied, ...(payload.score !== undefined ? { score: payload.score } : {}) });
560
- });
561
- const ctx = makeContext(0.65);
562
- controller.checkGoalGates(graph, 'run-1', eventBus, {
563
- context: ctx,
564
- satisfactionThreshold: 0.7,
565
- });
566
- expect(emitted).toHaveLength(1);
567
- expect(emitted[0]?.score).toBe(0.65);
568
- expect(emitted[0]?.satisfied).toBe(false);
569
- });
570
- // AC7b: backward-compat path — event emitted without score field
571
- it('AC7b: no threshold (backward-compat) → event emitted without score (or score is undefined)', () => {
572
- const gate = makeGateNode('gate-node');
573
- const graph = makeGraph([gate]);
574
- const eventBus = new TypedEventBusImpl();
575
- const emitted = [];
576
- eventBus.on('graph:goal-gate-checked', (payload) => {
577
- emitted.push({ ...(payload.score !== undefined ? { score: payload.score } : {}) });
578
- });
579
- controller.recordOutcome('gate-node', 'SUCCESS');
580
- controller.checkGoalGates(graph, 'run-1', eventBus);
581
- expect(emitted).toHaveLength(1);
582
- expect(emitted[0]?.score).toBeUndefined();
583
- });
584
- });
585
- //# sourceMappingURL=controller.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller.test.js","sourceRoot":"","sources":["../../../src/convergence/__tests__/controller.test.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Unit tests for dual-signal coordinator (story 46-5).
3
- *
4
- * Covers all ACs:
5
- * AC1 — both signals pass → AGREE
6
- * AC2 — code review passes, scenario fails → DISAGREE
7
- * AC3 — code review fails, scenario passes → DISAGREE
8
- * AC4 — code review is always authoritative decision
9
- * AC5 — coordinator emits scenario:score-computed with full payload
10
- * AC6 — LGTM_WITH_NOTES treated as code review pass
11
- * AC7 — both signals fail → AGREE
12
- */
13
- export {};
14
- //# sourceMappingURL=dual-signal.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dual-signal.test.d.ts","sourceRoot":"","sources":["../../../src/convergence/__tests__/dual-signal.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}