@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,14 +0,0 @@
1
- /**
2
- * Integration tests for TwinPersistenceCoordinator with real event bus and MemoryDatabaseAdapter.
3
- *
4
- * Verifies:
5
- * 1. twin:started event causes insertTwinRun row with status 'running'
6
- * 2. twin:stopped event updates row to status 'stopped' with non-null stopped_at
7
- * 3. ports are serialized and deserialized correctly
8
- * 4. health failures accumulate via recordTwinHealthFailure
9
- * 5. multiple twins in one run are each tracked separately
10
- *
11
- * Story 47-8, Task 4 (AC4, AC5).
12
- */
13
- export {};
14
- //# sourceMappingURL=persistence-integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistence-integration.test.d.ts","sourceRoot":"","sources":["../../../../src/twins/__tests__/integration/persistence-integration.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
@@ -1,132 +0,0 @@
1
- /**
2
- * Integration tests for TwinPersistenceCoordinator with real event bus and MemoryDatabaseAdapter.
3
- *
4
- * Verifies:
5
- * 1. twin:started event causes insertTwinRun row with status 'running'
6
- * 2. twin:stopped event updates row to status 'stopped' with non-null stopped_at
7
- * 3. ports are serialized and deserialized correctly
8
- * 4. health failures accumulate via recordTwinHealthFailure
9
- * 5. multiple twins in one run are each tracked separately
10
- *
11
- * Story 47-8, Task 4 (AC4, AC5).
12
- */
13
- import { describe, it, expect, beforeEach } from 'vitest';
14
- import { createDatabaseAdapter, TypedEventBusImpl } from '@substrate-ai/core';
15
- import { factorySchema } from '../../../persistence/factory-schema.js';
16
- import { createTwinPersistenceCoordinator, insertTwinRun, recordTwinHealthFailure, getTwinRunsForRun, } from '../../persistence.js';
17
- // ---------------------------------------------------------------------------
18
- // Helpers
19
- // ---------------------------------------------------------------------------
20
- /** Flush async event-bus handlers by yielding to the macrotask queue. */
21
- const nextTick = () => new Promise((resolve) => setTimeout(resolve, 0));
22
- // ---------------------------------------------------------------------------
23
- // Setup
24
- // ---------------------------------------------------------------------------
25
- let adapter;
26
- let eventBus;
27
- beforeEach(async () => {
28
- adapter = createDatabaseAdapter({ backend: 'memory' });
29
- await factorySchema(adapter);
30
- eventBus = new TypedEventBusImpl();
31
- createTwinPersistenceCoordinator(adapter, eventBus);
32
- });
33
- // ---------------------------------------------------------------------------
34
- // Tests
35
- // ---------------------------------------------------------------------------
36
- describe('TwinPersistenceCoordinator — event-driven persistence', () => {
37
- it('Test 1 — twin:started emits insertTwinRun row with status running', async () => {
38
- eventBus.emit('twin:started', {
39
- twinName: 'localstack',
40
- ports: [{ host: 4566, container: 4566 }],
41
- healthStatus: 'healthy',
42
- runId: 'run-001',
43
- });
44
- await nextTick();
45
- const summaries = await getTwinRunsForRun(adapter, 'run-001');
46
- expect(summaries).toHaveLength(1);
47
- expect(summaries[0].twin_name).toBe('localstack');
48
- expect(summaries[0].status).toBe('running');
49
- });
50
- it('Test 2 — twin:stopped updates row to stopped with non-null stopped_at', async () => {
51
- eventBus.emit('twin:started', {
52
- twinName: 'localstack',
53
- ports: [{ host: 4566, container: 4566 }],
54
- healthStatus: 'healthy',
55
- runId: 'run-002',
56
- });
57
- await nextTick();
58
- eventBus.emit('twin:stopped', { twinName: 'localstack' });
59
- await nextTick();
60
- const summaries = await getTwinRunsForRun(adapter, 'run-002');
61
- expect(summaries).toHaveLength(1);
62
- expect(summaries[0].status).toBe('stopped');
63
- expect(summaries[0].stopped_at).not.toBeNull();
64
- });
65
- it('Test 3 — ports are serialized and parsed correctly on read', async () => {
66
- eventBus.emit('twin:started', {
67
- twinName: 'localstack',
68
- ports: [{ host: 4566, container: 4566 }],
69
- healthStatus: 'healthy',
70
- runId: 'run-003',
71
- });
72
- await nextTick();
73
- const summaries = await getTwinRunsForRun(adapter, 'run-003');
74
- expect(summaries).toHaveLength(1);
75
- expect(summaries[0].ports).toHaveLength(1);
76
- expect(summaries[0].ports[0].host).toBe(4566);
77
- expect(summaries[0].ports[0].container).toBe(4566);
78
- });
79
- it('Test 4 — health failures accumulate via recordTwinHealthFailure', async () => {
80
- const runId = 'run-004';
81
- await insertTwinRun(adapter, {
82
- twin_name: 'localstack',
83
- ports: [{ host: 4566, container: 4566 }],
84
- run_id: runId,
85
- });
86
- await recordTwinHealthFailure(adapter, {
87
- twin_name: 'localstack',
88
- run_id: runId,
89
- error_message: 'failure 1',
90
- });
91
- await recordTwinHealthFailure(adapter, {
92
- twin_name: 'localstack',
93
- run_id: runId,
94
- error_message: 'failure 2',
95
- });
96
- await recordTwinHealthFailure(adapter, {
97
- twin_name: 'localstack',
98
- run_id: runId,
99
- error_message: 'failure 3',
100
- });
101
- const summaries = await getTwinRunsForRun(adapter, runId);
102
- expect(summaries).toHaveLength(1);
103
- expect(summaries[0].health_failure_count).toBe(3);
104
- });
105
- it('Test 5 — multiple twins in one run are each tracked separately', async () => {
106
- const runId = 'run-005';
107
- eventBus.emit('twin:started', {
108
- twinName: 'localstack',
109
- ports: [{ host: 4566, container: 4566 }],
110
- healthStatus: 'healthy',
111
- runId,
112
- });
113
- eventBus.emit('twin:started', {
114
- twinName: 'wiremock',
115
- ports: [{ host: 8080, container: 8080 }],
116
- healthStatus: 'healthy',
117
- runId,
118
- });
119
- await nextTick();
120
- eventBus.emit('twin:stopped', { twinName: 'localstack' });
121
- eventBus.emit('twin:stopped', { twinName: 'wiremock' });
122
- await nextTick();
123
- const summaries = await getTwinRunsForRun(adapter, runId);
124
- expect(summaries).toHaveLength(2);
125
- const names = summaries.map((s) => s.twin_name).sort();
126
- expect(names).toEqual(['localstack', 'wiremock']);
127
- for (const summary of summaries) {
128
- expect(summary.status).toBe('stopped');
129
- }
130
- });
131
- });
132
- //# sourceMappingURL=persistence-integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistence-integration.test.js","sourceRoot":"","sources":["../../../../src/twins/__tests__/integration/persistence-integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Unit tests for twin persistence — twin_runs, twin_health_failures tables and
3
- * the TwinPersistenceCoordinator.
4
- *
5
- * Story 47-7, Tasks 1–7.
6
- *
7
- * All tests use createDatabaseAdapter({ backend: 'memory' }) — no Dolt, no Docker, no network.
8
- */
9
- export {};
10
- //# sourceMappingURL=persistence.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistence.test.d.ts","sourceRoot":"","sources":["../../../src/twins/__tests__/persistence.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -1,300 +0,0 @@
1
- /**
2
- * Unit tests for twin persistence — twin_runs, twin_health_failures tables and
3
- * the TwinPersistenceCoordinator.
4
- *
5
- * Story 47-7, Tasks 1–7.
6
- *
7
- * All tests use createDatabaseAdapter({ backend: 'memory' }) — no Dolt, no Docker, no network.
8
- */
9
- import { describe, it, expect, beforeEach } from 'vitest';
10
- import { createDatabaseAdapter, TypedEventBusImpl } from '@substrate-ai/core';
11
- import { factorySchema } from '../../persistence/factory-schema.js';
12
- import { insertTwinRun, updateTwinRun, recordTwinHealthFailure, getTwinRunsForRun, TwinPersistenceCoordinator, createTwinPersistenceCoordinator, } from '../persistence.js';
13
- // ---------------------------------------------------------------------------
14
- // Test setup
15
- // ---------------------------------------------------------------------------
16
- let adapter;
17
- beforeEach(async () => {
18
- adapter = createDatabaseAdapter({ backend: 'memory' });
19
- await factorySchema(adapter);
20
- });
21
- // ---------------------------------------------------------------------------
22
- // AC1: twin_runs table is created by factorySchema
23
- // ---------------------------------------------------------------------------
24
- describe('AC1: twin_runs table', () => {
25
- it('exists after factorySchema — INSERT succeeds', async () => {
26
- await expect(adapter.query("INSERT INTO twin_runs (id, twin_name, started_at, status) VALUES ('t1', 'localstack', '2026-01-01T00:00:00.000Z', 'running')")).resolves.toBeDefined();
27
- });
28
- it('has ports_json column (nullable)', async () => {
29
- await adapter.query("INSERT INTO twin_runs (id, twin_name, started_at, status, ports_json) VALUES ('t2', 'wiremock', '2026-01-01T00:00:00.000Z', 'running', NULL)");
30
- const rows = await adapter.query("SELECT ports_json FROM twin_runs WHERE id = 't2'");
31
- expect(rows[0]?.ports_json).toBeNull();
32
- });
33
- });
34
- // ---------------------------------------------------------------------------
35
- // AC2: twin_health_failures table is created by factorySchema
36
- // ---------------------------------------------------------------------------
37
- describe('AC2: twin_health_failures table', () => {
38
- it('exists after factorySchema — INSERT succeeds', async () => {
39
- await expect(adapter.query("INSERT INTO twin_health_failures (twin_name, checked_at, error_message) VALUES ('localstack', '2026-01-01T00:00:00.000Z', 'connect ECONNREFUSED')")).resolves.toBeDefined();
40
- });
41
- it('supports querying by twin_name via idx_twin_health_failures_twin', async () => {
42
- await adapter.query("INSERT INTO twin_health_failures (twin_name, checked_at, error_message) VALUES ('wiremock', '2026-01-01T00:00:00.000Z', 'timeout')");
43
- const rows = await adapter.query("SELECT error_message FROM twin_health_failures WHERE twin_name = 'wiremock'");
44
- expect(rows).toHaveLength(1);
45
- expect(rows[0]?.error_message).toBe('timeout');
46
- });
47
- });
48
- // ---------------------------------------------------------------------------
49
- // AC1 + AC2: idempotency
50
- // ---------------------------------------------------------------------------
51
- describe('idempotency', () => {
52
- it('calling factorySchema twice does not throw', async () => {
53
- await expect(factorySchema(adapter)).resolves.toBeUndefined();
54
- });
55
- });
56
- // ---------------------------------------------------------------------------
57
- // AC3: insertTwinRun
58
- // ---------------------------------------------------------------------------
59
- describe('AC3: insertTwinRun', () => {
60
- it('inserts a row and returns a valid UUID-format id', async () => {
61
- const id = await insertTwinRun(adapter, {
62
- twin_name: 'localstack',
63
- ports: [{ host: 4566, container: 4566 }],
64
- });
65
- expect(typeof id).toBe('string');
66
- expect(id).toMatch(/^[0-9a-f-]{36}$/);
67
- });
68
- it('serializes ports correctly and row is readable', async () => {
69
- const id = await insertTwinRun(adapter, {
70
- twin_name: 'localstack',
71
- ports: [
72
- { host: 4566, container: 4566 },
73
- { host: 4572, container: 4572 },
74
- ],
75
- });
76
- const rows = await adapter.query('SELECT * FROM twin_runs WHERE id = ?', [id]);
77
- expect(rows).toHaveLength(1);
78
- const row = rows[0];
79
- expect(row.twin_name).toBe('localstack');
80
- expect(row.status).toBe('running');
81
- const ports = JSON.parse(row.ports_json);
82
- expect(ports).toHaveLength(2);
83
- expect(ports[0]?.host).toBe(4566);
84
- expect(ports[1]?.host).toBe(4572);
85
- });
86
- it('stores run_id when provided', async () => {
87
- const id = await insertTwinRun(adapter, {
88
- twin_name: 'wiremock',
89
- ports: [],
90
- run_id: 'factory-run-abc',
91
- });
92
- const rows = await adapter.query('SELECT * FROM twin_runs WHERE id = ?', [id]);
93
- expect(rows[0]?.run_id).toBe('factory-run-abc');
94
- });
95
- it('sets status to running by default', async () => {
96
- const id = await insertTwinRun(adapter, {
97
- twin_name: 'localstack',
98
- ports: [],
99
- });
100
- const rows = await adapter.query('SELECT status FROM twin_runs WHERE id = ?', [id]);
101
- expect(rows[0]?.status).toBe('running');
102
- });
103
- });
104
- // ---------------------------------------------------------------------------
105
- // AC4: updateTwinRun
106
- // ---------------------------------------------------------------------------
107
- describe('AC4: updateTwinRun', () => {
108
- it('sets stopped_at and status on an existing row', async () => {
109
- const id = await insertTwinRun(adapter, {
110
- twin_name: 'localstack',
111
- ports: [],
112
- });
113
- const stoppedAt = '2026-03-23T12:00:00.000Z';
114
- await updateTwinRun(adapter, id, { status: 'stopped', stopped_at: stoppedAt });
115
- const rows = await adapter.query('SELECT * FROM twin_runs WHERE id = ?', [id]);
116
- expect(rows[0]?.status).toBe('stopped');
117
- expect(rows[0]?.stopped_at).toBe(stoppedAt);
118
- });
119
- });
120
- // ---------------------------------------------------------------------------
121
- // AC5: recordTwinHealthFailure
122
- // ---------------------------------------------------------------------------
123
- describe('AC5: recordTwinHealthFailure', () => {
124
- it('inserts a row with checked_at and error_message', async () => {
125
- await recordTwinHealthFailure(adapter, {
126
- twin_name: 'localstack',
127
- run_id: 'run-123',
128
- error_message: 'connect ECONNREFUSED 127.0.0.1:4566',
129
- });
130
- const rows = await adapter.query("SELECT twin_name, error_message, run_id FROM twin_health_failures WHERE twin_name = 'localstack'");
131
- expect(rows).toHaveLength(1);
132
- expect(rows[0]?.twin_name).toBe('localstack');
133
- expect(rows[0]?.error_message).toBe('connect ECONNREFUSED 127.0.0.1:4566');
134
- expect(rows[0]?.run_id).toBe('run-123');
135
- });
136
- it('sets checked_at to current time when not provided', async () => {
137
- const before = new Date().toISOString();
138
- await recordTwinHealthFailure(adapter, {
139
- twin_name: 'wiremock',
140
- error_message: 'timeout',
141
- });
142
- const after = new Date().toISOString();
143
- const rows = await adapter.query("SELECT checked_at FROM twin_health_failures WHERE twin_name = 'wiremock'");
144
- expect(new Date(rows[0]?.checked_at ?? '').getTime()).toBeGreaterThanOrEqual(new Date(before).getTime());
145
- expect(new Date(rows[0]?.checked_at ?? '').getTime()).toBeLessThanOrEqual(new Date(after).getTime());
146
- });
147
- });
148
- // ---------------------------------------------------------------------------
149
- // AC6: getTwinRunsForRun
150
- // ---------------------------------------------------------------------------
151
- describe('AC6: getTwinRunsForRun', () => {
152
- it('returns empty array when run_id has no twins', async () => {
153
- const result = await getTwinRunsForRun(adapter, 'nonexistent-run-id');
154
- expect(result).toEqual([]);
155
- });
156
- it('returns summary with correct health_failure_count', async () => {
157
- const runId = 'run-abc-123';
158
- await insertTwinRun(adapter, {
159
- twin_name: 'localstack',
160
- ports: [{ host: 4566, container: 4566 }],
161
- run_id: runId,
162
- });
163
- // Record 2 health failures
164
- await recordTwinHealthFailure(adapter, {
165
- twin_name: 'localstack',
166
- run_id: runId,
167
- error_message: 'failure 1',
168
- });
169
- await recordTwinHealthFailure(adapter, {
170
- twin_name: 'localstack',
171
- run_id: runId,
172
- error_message: 'failure 2',
173
- });
174
- const summaries = await getTwinRunsForRun(adapter, runId);
175
- expect(summaries).toHaveLength(1);
176
- expect(summaries[0]?.twin_name).toBe('localstack');
177
- expect(summaries[0]?.health_failure_count).toBe(2);
178
- });
179
- it('parses ports_json back to PortMapping[]', async () => {
180
- const runId = 'run-ports-test';
181
- await insertTwinRun(adapter, {
182
- twin_name: 'localstack',
183
- ports: [
184
- { host: 4566, container: 4566 },
185
- { host: 4572, container: 4572 },
186
- ],
187
- run_id: runId,
188
- });
189
- const summaries = await getTwinRunsForRun(adapter, runId);
190
- expect(summaries).toHaveLength(1);
191
- const ports = summaries[0].ports;
192
- expect(ports).toHaveLength(2);
193
- expect(ports[0]).toEqual({ host: 4566, container: 4566 });
194
- expect(ports[1]).toEqual({ host: 4572, container: 4572 });
195
- });
196
- it('returns empty ports array when ports_json is null', async () => {
197
- const runId = 'run-no-ports';
198
- // Insert directly with null ports_json
199
- await adapter.query("INSERT INTO twin_runs (id, run_id, twin_name, started_at, status) VALUES ('no-ports-id', ?, 'no-ports-twin', '2026-01-01T00:00:00.000Z', 'running')", [runId]);
200
- const summaries = await getTwinRunsForRun(adapter, runId);
201
- expect(summaries[0]?.ports).toEqual([]);
202
- });
203
- it('returns health_failure_count=0 when no failures recorded', async () => {
204
- const runId = 'run-no-failures';
205
- await insertTwinRun(adapter, {
206
- twin_name: 'wiremock',
207
- ports: [],
208
- run_id: runId,
209
- });
210
- const summaries = await getTwinRunsForRun(adapter, runId);
211
- expect(summaries[0]?.health_failure_count).toBe(0);
212
- });
213
- });
214
- // ---------------------------------------------------------------------------
215
- // AC7: TwinPersistenceCoordinator
216
- // ---------------------------------------------------------------------------
217
- /**
218
- * Poll the DB until predicate returns true, up to maxAttempts * intervalMs.
219
- * This provides deterministic synchronization for async event-bus handlers that
220
- * fire void Promise chains — avoiding fragile fixed-delay timeouts.
221
- */
222
- async function pollUntil(predicate, maxAttempts = 100, intervalMs = 1) {
223
- for (let i = 0; i < maxAttempts; i++) {
224
- if (await predicate())
225
- return;
226
- await new Promise((r) => setTimeout(r, intervalMs));
227
- }
228
- throw new Error('pollUntil: timed out waiting for condition');
229
- }
230
- describe('AC7: TwinPersistenceCoordinator', () => {
231
- it('twin:started triggers insertTwinRun — row is present in DB', async () => {
232
- const bus = new TypedEventBusImpl();
233
- new TwinPersistenceCoordinator(adapter, bus);
234
- bus.emit('twin:started', {
235
- twinName: 'localstack',
236
- ports: [{ host: 4566, container: 4566 }],
237
- healthStatus: 'healthy',
238
- runId: 'run-coord-1',
239
- });
240
- // Poll until the row appears — deterministic, no fixed-delay timeout
241
- await pollUntil(async () => {
242
- const rows = await adapter.query("SELECT * FROM twin_runs WHERE twin_name = 'localstack'");
243
- return rows.length > 0;
244
- });
245
- const rows = await adapter.query("SELECT * FROM twin_runs WHERE twin_name = 'localstack'");
246
- expect(rows).toHaveLength(1);
247
- expect(rows[0]?.status).toBe('running');
248
- expect(rows[0]?.run_id).toBe('run-coord-1');
249
- });
250
- it('twin:stopped triggers updateTwinRun — status becomes stopped', async () => {
251
- const bus = new TypedEventBusImpl();
252
- new TwinPersistenceCoordinator(adapter, bus);
253
- bus.emit('twin:started', {
254
- twinName: 'localstack',
255
- ports: [{ host: 4566, container: 4566 }],
256
- healthStatus: 'healthy',
257
- runId: 'run-coord-2',
258
- });
259
- // Poll until insertTwinRun has completed and _rowIds is populated
260
- // (guards against twin:stopped firing before the row id is stored)
261
- await pollUntil(async () => {
262
- const rows = await adapter.query("SELECT * FROM twin_runs WHERE twin_name = 'localstack'");
263
- return rows.length > 0;
264
- });
265
- bus.emit('twin:stopped', { twinName: 'localstack' });
266
- // Poll until updateTwinRun has committed the stopped status
267
- await pollUntil(async () => {
268
- const rows = await adapter.query("SELECT status FROM twin_runs WHERE twin_name = 'localstack'");
269
- return rows[0]?.status === 'stopped';
270
- });
271
- const rows = await adapter.query("SELECT * FROM twin_runs WHERE twin_name = 'localstack'");
272
- expect(rows).toHaveLength(1);
273
- expect(rows[0]?.status).toBe('stopped');
274
- expect(rows[0]?.stopped_at).toBeTruthy();
275
- });
276
- it('twin:health-failed triggers recordTwinHealthFailure (47-7 AC2)', async () => {
277
- const bus = new TypedEventBusImpl();
278
- new TwinPersistenceCoordinator(adapter, bus);
279
- bus.emit('twin:health-failed', {
280
- twinName: 'wiremock',
281
- error: 'connection refused on port 8080',
282
- runId: 'run-health-1',
283
- });
284
- // Poll until the health failure record is persisted
285
- await pollUntil(async () => {
286
- const rows = await adapter.query("SELECT * FROM twin_health_failures WHERE twin_name = 'wiremock'");
287
- return rows.length > 0;
288
- });
289
- const rows = await adapter.query("SELECT * FROM twin_health_failures WHERE twin_name = 'wiremock'");
290
- expect(rows).toHaveLength(1);
291
- expect(rows[0]?.error_message).toBe('connection refused on port 8080');
292
- expect(rows[0]?.run_id).toBe('run-health-1');
293
- });
294
- it('createTwinPersistenceCoordinator factory function returns a coordinator instance', () => {
295
- const bus = new TypedEventBusImpl();
296
- const coordinator = createTwinPersistenceCoordinator(adapter, bus);
297
- expect(coordinator).toBeInstanceOf(TwinPersistenceCoordinator);
298
- });
299
- });
300
- //# sourceMappingURL=persistence.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistence.test.js","sourceRoot":"","sources":["../../../src/twins/__tests__/persistence.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Unit tests for TwinRegistry — discovery, validation, and health polling.
3
- *
4
- * Story 47-1.
5
- */
6
- export {};
7
- //# sourceMappingURL=registry.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../../src/twins/__tests__/registry.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}