@substrate-ai/factory 0.20.1 → 0.20.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/README.md +39 -0
  2. package/package.json +6 -3
  3. package/dist/__tests__/config.test.d.ts +0 -11
  4. package/dist/__tests__/config.test.d.ts.map +0 -1
  5. package/dist/__tests__/config.test.js +0 -215
  6. package/dist/__tests__/config.test.js.map +0 -1
  7. package/dist/__tests__/factory-run-command.test.d.ts +0 -12
  8. package/dist/__tests__/factory-run-command.test.d.ts.map +0 -1
  9. package/dist/__tests__/factory-run-command.test.js +0 -454
  10. package/dist/__tests__/factory-run-command.test.js.map +0 -1
  11. package/dist/__tests__/factory-validate-command.test.d.ts +0 -15
  12. package/dist/__tests__/factory-validate-command.test.d.ts.map +0 -1
  13. package/dist/__tests__/factory-validate-command.test.js +0 -339
  14. package/dist/__tests__/factory-validate-command.test.js.map +0 -1
  15. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts +0 -72
  16. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts.map +0 -1
  17. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js +0 -121
  18. package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js.map +0 -1
  19. package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts +0 -28
  20. package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts.map +0 -1
  21. package/dist/__tests__/fixtures/llm-edge-routing.dot.js +0 -55
  22. package/dist/__tests__/fixtures/llm-edge-routing.dot.js.map +0 -1
  23. package/dist/__tests__/fixtures/manager-loop.dot.d.ts +0 -34
  24. package/dist/__tests__/fixtures/manager-loop.dot.d.ts.map +0 -1
  25. package/dist/__tests__/fixtures/manager-loop.dot.js +0 -61
  26. package/dist/__tests__/fixtures/manager-loop.dot.js.map +0 -1
  27. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts +0 -42
  28. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts.map +0 -1
  29. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js +0 -118
  30. package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js.map +0 -1
  31. package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts +0 -35
  32. package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts.map +0 -1
  33. package/dist/__tests__/fixtures/subgraph-parent.dot.js +0 -69
  34. package/dist/__tests__/fixtures/subgraph-parent.dot.js.map +0 -1
  35. package/dist/__tests__/integration/advanced-graph-events.test.d.ts +0 -19
  36. package/dist/__tests__/integration/advanced-graph-events.test.d.ts.map +0 -1
  37. package/dist/__tests__/integration/advanced-graph-events.test.js +0 -288
  38. package/dist/__tests__/integration/advanced-graph-events.test.js.map +0 -1
  39. package/dist/__tests__/integration/checkpoint-resume.test.d.ts +0 -10
  40. package/dist/__tests__/integration/checkpoint-resume.test.d.ts.map +0 -1
  41. package/dist/__tests__/integration/checkpoint-resume.test.js +0 -125
  42. package/dist/__tests__/integration/checkpoint-resume.test.js.map +0 -1
  43. package/dist/__tests__/integration/conditional-pipeline.test.d.ts +0 -10
  44. package/dist/__tests__/integration/conditional-pipeline.test.d.ts.map +0 -1
  45. package/dist/__tests__/integration/conditional-pipeline.test.js +0 -106
  46. package/dist/__tests__/integration/conditional-pipeline.test.js.map +0 -1
  47. package/dist/__tests__/integration/convergence-validation.test.d.ts +0 -14
  48. package/dist/__tests__/integration/convergence-validation.test.d.ts.map +0 -1
  49. package/dist/__tests__/integration/convergence-validation.test.js +0 -449
  50. package/dist/__tests__/integration/convergence-validation.test.js.map +0 -1
  51. package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts +0 -12
  52. package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts.map +0 -1
  53. package/dist/__tests__/integration/epic44-coverage-gate.test.js +0 -58
  54. package/dist/__tests__/integration/epic44-coverage-gate.test.js.map +0 -1
  55. package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts +0 -11
  56. package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts.map +0 -1
  57. package/dist/__tests__/integration/epic45-coverage-gate.test.js +0 -64
  58. package/dist/__tests__/integration/epic45-coverage-gate.test.js.map +0 -1
  59. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts +0 -2
  60. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts.map +0 -1
  61. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js +0 -285
  62. package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js.map +0 -1
  63. package/dist/__tests__/integration/events.test.d.ts +0 -8
  64. package/dist/__tests__/integration/events.test.d.ts.map +0 -1
  65. package/dist/__tests__/integration/events.test.js +0 -194
  66. package/dist/__tests__/integration/events.test.js.map +0 -1
  67. package/dist/__tests__/integration/graphs.d.ts +0 -59
  68. package/dist/__tests__/integration/graphs.d.ts.map +0 -1
  69. package/dist/__tests__/integration/graphs.js +0 -164
  70. package/dist/__tests__/integration/graphs.js.map +0 -1
  71. package/dist/__tests__/integration/helpers.d.ts +0 -127
  72. package/dist/__tests__/integration/helpers.d.ts.map +0 -1
  73. package/dist/__tests__/integration/helpers.js +0 -167
  74. package/dist/__tests__/integration/helpers.js.map +0 -1
  75. package/dist/__tests__/integration/integrity.test.d.ts +0 -8
  76. package/dist/__tests__/integration/integrity.test.d.ts.map +0 -1
  77. package/dist/__tests__/integration/integrity.test.js +0 -198
  78. package/dist/__tests__/integration/integrity.test.js.map +0 -1
  79. package/dist/__tests__/integration/llm-edge-routing.test.d.ts +0 -21
  80. package/dist/__tests__/integration/llm-edge-routing.test.d.ts.map +0 -1
  81. package/dist/__tests__/integration/llm-edge-routing.test.js +0 -341
  82. package/dist/__tests__/integration/llm-edge-routing.test.js.map +0 -1
  83. package/dist/__tests__/integration/manager-loop.test.d.ts +0 -24
  84. package/dist/__tests__/integration/manager-loop.test.d.ts.map +0 -1
  85. package/dist/__tests__/integration/manager-loop.test.js +0 -276
  86. package/dist/__tests__/integration/manager-loop.test.js.map +0 -1
  87. package/dist/__tests__/integration/multi-type-graph.test.d.ts +0 -10
  88. package/dist/__tests__/integration/multi-type-graph.test.d.ts.map +0 -1
  89. package/dist/__tests__/integration/multi-type-graph.test.js +0 -100
  90. package/dist/__tests__/integration/multi-type-graph.test.js.map +0 -1
  91. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts +0 -22
  92. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts.map +0 -1
  93. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js +0 -515
  94. package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js.map +0 -1
  95. package/dist/__tests__/integration/persistence.test.d.ts +0 -8
  96. package/dist/__tests__/integration/persistence.test.d.ts.map +0 -1
  97. package/dist/__tests__/integration/persistence.test.js +0 -129
  98. package/dist/__tests__/integration/persistence.test.js.map +0 -1
  99. package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts +0 -16
  100. package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts.map +0 -1
  101. package/dist/__tests__/integration/pipeline-templates-integration.test.js +0 -171
  102. package/dist/__tests__/integration/pipeline-templates-integration.test.js.map +0 -1
  103. package/dist/__tests__/integration/scenario-pipeline.test.d.ts +0 -11
  104. package/dist/__tests__/integration/scenario-pipeline.test.d.ts.map +0 -1
  105. package/dist/__tests__/integration/scenario-pipeline.test.js +0 -243
  106. package/dist/__tests__/integration/scenario-pipeline.test.js.map +0 -1
  107. package/dist/__tests__/integration/stylesheet-application.test.d.ts +0 -12
  108. package/dist/__tests__/integration/stylesheet-application.test.d.ts.map +0 -1
  109. package/dist/__tests__/integration/stylesheet-application.test.js +0 -119
  110. package/dist/__tests__/integration/stylesheet-application.test.js.map +0 -1
  111. package/dist/__tests__/integration/subgraph-execution.test.d.ts +0 -24
  112. package/dist/__tests__/integration/subgraph-execution.test.d.ts.map +0 -1
  113. package/dist/__tests__/integration/subgraph-execution.test.js +0 -291
  114. package/dist/__tests__/integration/subgraph-execution.test.js.map +0 -1
  115. package/dist/__tests__/integration/validation-errors.test.d.ts +0 -8
  116. package/dist/__tests__/integration/validation-errors.test.d.ts.map +0 -1
  117. package/dist/__tests__/integration/validation-errors.test.js +0 -150
  118. package/dist/__tests__/integration/validation-errors.test.js.map +0 -1
  119. package/dist/agent/__tests__/loop-detection.test.d.ts +0 -2
  120. package/dist/agent/__tests__/loop-detection.test.d.ts.map +0 -1
  121. package/dist/agent/__tests__/loop-detection.test.js +0 -236
  122. package/dist/agent/__tests__/loop-detection.test.js.map +0 -1
  123. package/dist/agent/__tests__/loop.test.d.ts +0 -2
  124. package/dist/agent/__tests__/loop.test.d.ts.map +0 -1
  125. package/dist/agent/__tests__/loop.test.js +0 -868
  126. package/dist/agent/__tests__/loop.test.js.map +0 -1
  127. package/dist/agent/__tests__/truncation.test.d.ts +0 -2
  128. package/dist/agent/__tests__/truncation.test.d.ts.map +0 -1
  129. package/dist/agent/__tests__/truncation.test.js +0 -276
  130. package/dist/agent/__tests__/truncation.test.js.map +0 -1
  131. package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts +0 -6
  132. package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts.map +0 -1
  133. package/dist/agent/tools/__tests__/anthropic-tools.test.js +0 -49
  134. package/dist/agent/tools/__tests__/anthropic-tools.test.js.map +0 -1
  135. package/dist/agent/tools/__tests__/environment.test.d.ts +0 -6
  136. package/dist/agent/tools/__tests__/environment.test.d.ts.map +0 -1
  137. package/dist/agent/tools/__tests__/environment.test.js +0 -33
  138. package/dist/agent/tools/__tests__/environment.test.js.map +0 -1
  139. package/dist/agent/tools/__tests__/gemini-tools.test.d.ts +0 -6
  140. package/dist/agent/tools/__tests__/gemini-tools.test.d.ts.map +0 -1
  141. package/dist/agent/tools/__tests__/gemini-tools.test.js +0 -98
  142. package/dist/agent/tools/__tests__/gemini-tools.test.js.map +0 -1
  143. package/dist/agent/tools/__tests__/openai-tools.test.d.ts +0 -6
  144. package/dist/agent/tools/__tests__/openai-tools.test.d.ts.map +0 -1
  145. package/dist/agent/tools/__tests__/openai-tools.test.js +0 -53
  146. package/dist/agent/tools/__tests__/openai-tools.test.js.map +0 -1
  147. package/dist/agent/tools/__tests__/patch.test.d.ts +0 -6
  148. package/dist/agent/tools/__tests__/patch.test.d.ts.map +0 -1
  149. package/dist/agent/tools/__tests__/patch.test.js +0 -116
  150. package/dist/agent/tools/__tests__/patch.test.js.map +0 -1
  151. package/dist/agent/tools/__tests__/profiles.test.d.ts +0 -6
  152. package/dist/agent/tools/__tests__/profiles.test.d.ts.map +0 -1
  153. package/dist/agent/tools/__tests__/profiles.test.js +0 -125
  154. package/dist/agent/tools/__tests__/profiles.test.js.map +0 -1
  155. package/dist/agent/tools/__tests__/registry.test.d.ts +0 -6
  156. package/dist/agent/tools/__tests__/registry.test.d.ts.map +0 -1
  157. package/dist/agent/tools/__tests__/registry.test.js +0 -94
  158. package/dist/agent/tools/__tests__/registry.test.js.map +0 -1
  159. package/dist/agent/tools/__tests__/shared.test.d.ts +0 -6
  160. package/dist/agent/tools/__tests__/shared.test.d.ts.map +0 -1
  161. package/dist/agent/tools/__tests__/shared.test.js +0 -131
  162. package/dist/agent/tools/__tests__/shared.test.js.map +0 -1
  163. package/dist/backend/__tests__/direct-backend.test.d.ts +0 -14
  164. package/dist/backend/__tests__/direct-backend.test.d.ts.map +0 -1
  165. package/dist/backend/__tests__/direct-backend.test.js +0 -393
  166. package/dist/backend/__tests__/direct-backend.test.js.map +0 -1
  167. package/dist/backend/__tests__/direct-bootstrap.test.d.ts +0 -7
  168. package/dist/backend/__tests__/direct-bootstrap.test.d.ts.map +0 -1
  169. package/dist/backend/__tests__/direct-bootstrap.test.js +0 -177
  170. package/dist/backend/__tests__/direct-bootstrap.test.js.map +0 -1
  171. package/dist/backend/__tests__/mock-backend.test.d.ts +0 -7
  172. package/dist/backend/__tests__/mock-backend.test.d.ts.map +0 -1
  173. package/dist/backend/__tests__/mock-backend.test.js +0 -273
  174. package/dist/backend/__tests__/mock-backend.test.js.map +0 -1
  175. package/dist/backend/__tests__/parity.test.d.ts +0 -17
  176. package/dist/backend/__tests__/parity.test.d.ts.map +0 -1
  177. package/dist/backend/__tests__/parity.test.js +0 -411
  178. package/dist/backend/__tests__/parity.test.js.map +0 -1
  179. package/dist/context/__tests__/auto-summarizer.test.d.ts +0 -14
  180. package/dist/context/__tests__/auto-summarizer.test.d.ts.map +0 -1
  181. package/dist/context/__tests__/auto-summarizer.test.js +0 -189
  182. package/dist/context/__tests__/auto-summarizer.test.js.map +0 -1
  183. package/dist/context/__tests__/context-cli-command.test.d.ts +0 -7
  184. package/dist/context/__tests__/context-cli-command.test.d.ts.map +0 -1
  185. package/dist/context/__tests__/context-cli-command.test.js +0 -331
  186. package/dist/context/__tests__/context-cli-command.test.js.map +0 -1
  187. package/dist/context/__tests__/pyramid-summary-integration.test.d.ts +0 -2
  188. package/dist/context/__tests__/pyramid-summary-integration.test.d.ts.map +0 -1
  189. package/dist/context/__tests__/pyramid-summary-integration.test.js +0 -533
  190. package/dist/context/__tests__/pyramid-summary-integration.test.js.map +0 -1
  191. package/dist/context/__tests__/summarizer.test.d.ts +0 -2
  192. package/dist/context/__tests__/summarizer.test.d.ts.map +0 -1
  193. package/dist/context/__tests__/summarizer.test.js +0 -189
  194. package/dist/context/__tests__/summarizer.test.js.map +0 -1
  195. package/dist/context/__tests__/summary-cache.test.d.ts +0 -2
  196. package/dist/context/__tests__/summary-cache.test.d.ts.map +0 -1
  197. package/dist/context/__tests__/summary-cache.test.js +0 -214
  198. package/dist/context/__tests__/summary-cache.test.js.map +0 -1
  199. package/dist/context/__tests__/summary-metrics.test.d.ts +0 -2
  200. package/dist/context/__tests__/summary-metrics.test.d.ts.map +0 -1
  201. package/dist/context/__tests__/summary-metrics.test.js +0 -172
  202. package/dist/context/__tests__/summary-metrics.test.js.map +0 -1
  203. package/dist/context/__tests__/summary-types.test.d.ts +0 -2
  204. package/dist/context/__tests__/summary-types.test.d.ts.map +0 -1
  205. package/dist/context/__tests__/summary-types.test.js +0 -130
  206. package/dist/context/__tests__/summary-types.test.js.map +0 -1
  207. package/dist/convergence/__tests__/budget.test.d.ts +0 -6
  208. package/dist/convergence/__tests__/budget.test.d.ts.map +0 -1
  209. package/dist/convergence/__tests__/budget.test.js +0 -187
  210. package/dist/convergence/__tests__/budget.test.js.map +0 -1
  211. package/dist/convergence/__tests__/controller.test.d.ts +0 -9
  212. package/dist/convergence/__tests__/controller.test.d.ts.map +0 -1
  213. package/dist/convergence/__tests__/controller.test.js +0 -585
  214. package/dist/convergence/__tests__/controller.test.js.map +0 -1
  215. package/dist/convergence/__tests__/dual-signal.test.d.ts +0 -14
  216. package/dist/convergence/__tests__/dual-signal.test.d.ts.map +0 -1
  217. package/dist/convergence/__tests__/dual-signal.test.js +0 -123
  218. package/dist/convergence/__tests__/dual-signal.test.js.map +0 -1
  219. package/dist/convergence/__tests__/epic46-integration.test.d.ts +0 -15
  220. package/dist/convergence/__tests__/epic46-integration.test.d.ts.map +0 -1
  221. package/dist/convergence/__tests__/epic46-integration.test.js +0 -522
  222. package/dist/convergence/__tests__/epic46-integration.test.js.map +0 -1
  223. package/dist/convergence/__tests__/plateau.test.d.ts +0 -6
  224. package/dist/convergence/__tests__/plateau.test.d.ts.map +0 -1
  225. package/dist/convergence/__tests__/plateau.test.js +0 -163
  226. package/dist/convergence/__tests__/plateau.test.js.map +0 -1
  227. package/dist/convergence/__tests__/remediation.test.d.ts +0 -11
  228. package/dist/convergence/__tests__/remediation.test.d.ts.map +0 -1
  229. package/dist/convergence/__tests__/remediation.test.js +0 -209
  230. package/dist/convergence/__tests__/remediation.test.js.map +0 -1
  231. package/dist/convergence/__tests__/scenario-primary.test.d.ts +0 -13
  232. package/dist/convergence/__tests__/scenario-primary.test.d.ts.map +0 -1
  233. package/dist/convergence/__tests__/scenario-primary.test.js +0 -183
  234. package/dist/convergence/__tests__/scenario-primary.test.js.map +0 -1
  235. package/dist/factory-command.test.d.ts +0 -8
  236. package/dist/factory-command.test.d.ts.map +0 -1
  237. package/dist/factory-command.test.js +0 -304
  238. package/dist/factory-command.test.js.map +0 -1
  239. package/dist/graph/__tests__/attractor-compliance.test.d.ts +0 -10
  240. package/dist/graph/__tests__/attractor-compliance.test.d.ts.map +0 -1
  241. package/dist/graph/__tests__/attractor-compliance.test.js +0 -766
  242. package/dist/graph/__tests__/attractor-compliance.test.js.map +0 -1
  243. package/dist/graph/__tests__/checkpoint.test.d.ts +0 -8
  244. package/dist/graph/__tests__/checkpoint.test.d.ts.map +0 -1
  245. package/dist/graph/__tests__/checkpoint.test.js +0 -329
  246. package/dist/graph/__tests__/checkpoint.test.js.map +0 -1
  247. package/dist/graph/__tests__/condition-parser.test.d.ts +0 -14
  248. package/dist/graph/__tests__/condition-parser.test.d.ts.map +0 -1
  249. package/dist/graph/__tests__/condition-parser.test.js +0 -406
  250. package/dist/graph/__tests__/condition-parser.test.js.map +0 -1
  251. package/dist/graph/__tests__/context.test.d.ts +0 -14
  252. package/dist/graph/__tests__/context.test.d.ts.map +0 -1
  253. package/dist/graph/__tests__/context.test.js +0 -276
  254. package/dist/graph/__tests__/context.test.js.map +0 -1
  255. package/dist/graph/__tests__/edge-selector-events.test.d.ts +0 -11
  256. package/dist/graph/__tests__/edge-selector-events.test.d.ts.map +0 -1
  257. package/dist/graph/__tests__/edge-selector-events.test.js +0 -184
  258. package/dist/graph/__tests__/edge-selector-events.test.js.map +0 -1
  259. package/dist/graph/__tests__/edge-selector.test.d.ts +0 -6
  260. package/dist/graph/__tests__/edge-selector.test.d.ts.map +0 -1
  261. package/dist/graph/__tests__/edge-selector.test.js +0 -452
  262. package/dist/graph/__tests__/edge-selector.test.js.map +0 -1
  263. package/dist/graph/__tests__/executor-convergence.test.d.ts +0 -12
  264. package/dist/graph/__tests__/executor-convergence.test.d.ts.map +0 -1
  265. package/dist/graph/__tests__/executor-convergence.test.js +0 -432
  266. package/dist/graph/__tests__/executor-convergence.test.js.map +0 -1
  267. package/dist/graph/__tests__/executor-fidelity.test.d.ts +0 -13
  268. package/dist/graph/__tests__/executor-fidelity.test.d.ts.map +0 -1
  269. package/dist/graph/__tests__/executor-fidelity.test.js +0 -335
  270. package/dist/graph/__tests__/executor-fidelity.test.js.map +0 -1
  271. package/dist/graph/__tests__/executor.test.d.ts +0 -14
  272. package/dist/graph/__tests__/executor.test.d.ts.map +0 -1
  273. package/dist/graph/__tests__/executor.test.js +0 -901
  274. package/dist/graph/__tests__/executor.test.js.map +0 -1
  275. package/dist/graph/__tests__/fidelity.test.d.ts +0 -8
  276. package/dist/graph/__tests__/fidelity.test.d.ts.map +0 -1
  277. package/dist/graph/__tests__/fidelity.test.js +0 -135
  278. package/dist/graph/__tests__/fidelity.test.js.map +0 -1
  279. package/dist/graph/__tests__/llm-evaluator.test.d.ts +0 -7
  280. package/dist/graph/__tests__/llm-evaluator.test.d.ts.map +0 -1
  281. package/dist/graph/__tests__/llm-evaluator.test.js +0 -106
  282. package/dist/graph/__tests__/llm-evaluator.test.js.map +0 -1
  283. package/dist/graph/__tests__/parser-chaining.test.d.ts +0 -13
  284. package/dist/graph/__tests__/parser-chaining.test.d.ts.map +0 -1
  285. package/dist/graph/__tests__/parser-chaining.test.js +0 -215
  286. package/dist/graph/__tests__/parser-chaining.test.js.map +0 -1
  287. package/dist/graph/__tests__/parser.test.d.ts +0 -22
  288. package/dist/graph/__tests__/parser.test.d.ts.map +0 -1
  289. package/dist/graph/__tests__/parser.test.js +0 -452
  290. package/dist/graph/__tests__/parser.test.js.map +0 -1
  291. package/dist/graph/__tests__/run-state.test.d.ts +0 -13
  292. package/dist/graph/__tests__/run-state.test.d.ts.map +0 -1
  293. package/dist/graph/__tests__/run-state.test.js +0 -189
  294. package/dist/graph/__tests__/run-state.test.js.map +0 -1
  295. package/dist/graph/__tests__/transformer.test.d.ts +0 -16
  296. package/dist/graph/__tests__/transformer.test.d.ts.map +0 -1
  297. package/dist/graph/__tests__/transformer.test.js +0 -350
  298. package/dist/graph/__tests__/transformer.test.js.map +0 -1
  299. package/dist/graph/__tests__/validator-errors.test.d.ts +0 -15
  300. package/dist/graph/__tests__/validator-errors.test.d.ts.map +0 -1
  301. package/dist/graph/__tests__/validator-errors.test.js +0 -572
  302. package/dist/graph/__tests__/validator-errors.test.js.map +0 -1
  303. package/dist/graph/__tests__/validator-warnings.test.d.ts +0 -15
  304. package/dist/graph/__tests__/validator-warnings.test.d.ts.map +0 -1
  305. package/dist/graph/__tests__/validator-warnings.test.js +0 -363
  306. package/dist/graph/__tests__/validator-warnings.test.js.map +0 -1
  307. package/dist/handlers/__tests__/codergen-handler.test.d.ts +0 -14
  308. package/dist/handlers/__tests__/codergen-handler.test.d.ts.map +0 -1
  309. package/dist/handlers/__tests__/codergen-handler.test.js +0 -442
  310. package/dist/handlers/__tests__/codergen-handler.test.js.map +0 -1
  311. package/dist/handlers/__tests__/fan-in.test.d.ts +0 -14
  312. package/dist/handlers/__tests__/fan-in.test.d.ts.map +0 -1
  313. package/dist/handlers/__tests__/fan-in.test.js +0 -399
  314. package/dist/handlers/__tests__/fan-in.test.js.map +0 -1
  315. package/dist/handlers/__tests__/join-policy.test.d.ts +0 -9
  316. package/dist/handlers/__tests__/join-policy.test.d.ts.map +0 -1
  317. package/dist/handlers/__tests__/join-policy.test.js +0 -201
  318. package/dist/handlers/__tests__/join-policy.test.js.map +0 -1
  319. package/dist/handlers/__tests__/manager-loop.test.d.ts +0 -14
  320. package/dist/handlers/__tests__/manager-loop.test.d.ts.map +0 -1
  321. package/dist/handlers/__tests__/manager-loop.test.js +0 -322
  322. package/dist/handlers/__tests__/manager-loop.test.js.map +0 -1
  323. package/dist/handlers/__tests__/parallel-events.test.d.ts +0 -12
  324. package/dist/handlers/__tests__/parallel-events.test.d.ts.map +0 -1
  325. package/dist/handlers/__tests__/parallel-events.test.js +0 -252
  326. package/dist/handlers/__tests__/parallel-events.test.js.map +0 -1
  327. package/dist/handlers/__tests__/parallel-handler.test.d.ts +0 -14
  328. package/dist/handlers/__tests__/parallel-handler.test.d.ts.map +0 -1
  329. package/dist/handlers/__tests__/parallel-handler.test.js +0 -337
  330. package/dist/handlers/__tests__/parallel-handler.test.js.map +0 -1
  331. package/dist/handlers/__tests__/parallel-join.test.d.ts +0 -9
  332. package/dist/handlers/__tests__/parallel-join.test.d.ts.map +0 -1
  333. package/dist/handlers/__tests__/parallel-join.test.js +0 -267
  334. package/dist/handlers/__tests__/parallel-join.test.js.map +0 -1
  335. package/dist/handlers/__tests__/registry.test.d.ts +0 -14
  336. package/dist/handlers/__tests__/registry.test.d.ts.map +0 -1
  337. package/dist/handlers/__tests__/registry.test.js +0 -315
  338. package/dist/handlers/__tests__/registry.test.js.map +0 -1
  339. package/dist/handlers/__tests__/subgraph-events.test.d.ts +0 -10
  340. package/dist/handlers/__tests__/subgraph-events.test.d.ts.map +0 -1
  341. package/dist/handlers/__tests__/subgraph-events.test.js +0 -189
  342. package/dist/handlers/__tests__/subgraph-events.test.js.map +0 -1
  343. package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts +0 -14
  344. package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts.map +0 -1
  345. package/dist/handlers/__tests__/subgraph-inheritance.test.js +0 -267
  346. package/dist/handlers/__tests__/subgraph-inheritance.test.js.map +0 -1
  347. package/dist/handlers/__tests__/subgraph.test.d.ts +0 -14
  348. package/dist/handlers/__tests__/subgraph.test.d.ts.map +0 -1
  349. package/dist/handlers/__tests__/subgraph.test.js +0 -369
  350. package/dist/handlers/__tests__/subgraph.test.js.map +0 -1
  351. package/dist/handlers/__tests__/tool-handler.test.d.ts +0 -11
  352. package/dist/handlers/__tests__/tool-handler.test.d.ts.map +0 -1
  353. package/dist/handlers/__tests__/tool-handler.test.js +0 -184
  354. package/dist/handlers/__tests__/tool-handler.test.js.map +0 -1
  355. package/dist/handlers/__tests__/tool-scenario.test.d.ts +0 -12
  356. package/dist/handlers/__tests__/tool-scenario.test.d.ts.map +0 -1
  357. package/dist/handlers/__tests__/tool-scenario.test.js +0 -222
  358. package/dist/handlers/__tests__/tool-scenario.test.js.map +0 -1
  359. package/dist/handlers/__tests__/wait-human-handler.test.d.ts +0 -11
  360. package/dist/handlers/__tests__/wait-human-handler.test.d.ts.map +0 -1
  361. package/dist/handlers/__tests__/wait-human-handler.test.js +0 -251
  362. package/dist/handlers/__tests__/wait-human-handler.test.js.map +0 -1
  363. package/dist/llm/__tests__/client.test.d.ts +0 -2
  364. package/dist/llm/__tests__/client.test.d.ts.map +0 -1
  365. package/dist/llm/__tests__/client.test.js +0 -198
  366. package/dist/llm/__tests__/client.test.js.map +0 -1
  367. package/dist/llm/__tests__/types.test.d.ts +0 -2
  368. package/dist/llm/__tests__/types.test.d.ts.map +0 -1
  369. package/dist/llm/__tests__/types.test.js +0 -289
  370. package/dist/llm/__tests__/types.test.js.map +0 -1
  371. package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts +0 -2
  372. package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts.map +0 -1
  373. package/dist/llm/middleware/__tests__/cost-tracking.test.js +0 -73
  374. package/dist/llm/middleware/__tests__/cost-tracking.test.js.map +0 -1
  375. package/dist/llm/middleware/__tests__/logging.test.d.ts +0 -2
  376. package/dist/llm/middleware/__tests__/logging.test.d.ts.map +0 -1
  377. package/dist/llm/middleware/__tests__/logging.test.js +0 -127
  378. package/dist/llm/middleware/__tests__/logging.test.js.map +0 -1
  379. package/dist/llm/middleware/__tests__/retry.test.d.ts +0 -2
  380. package/dist/llm/middleware/__tests__/retry.test.d.ts.map +0 -1
  381. package/dist/llm/middleware/__tests__/retry.test.js +0 -126
  382. package/dist/llm/middleware/__tests__/retry.test.js.map +0 -1
  383. package/dist/llm/providers/__tests__/anthropic.test.d.ts +0 -2
  384. package/dist/llm/providers/__tests__/anthropic.test.d.ts.map +0 -1
  385. package/dist/llm/providers/__tests__/anthropic.test.js +0 -412
  386. package/dist/llm/providers/__tests__/anthropic.test.js.map +0 -1
  387. package/dist/llm/providers/__tests__/gemini.test.d.ts +0 -2
  388. package/dist/llm/providers/__tests__/gemini.test.d.ts.map +0 -1
  389. package/dist/llm/providers/__tests__/gemini.test.js +0 -591
  390. package/dist/llm/providers/__tests__/gemini.test.js.map +0 -1
  391. package/dist/llm/providers/__tests__/openai.test.d.ts +0 -2
  392. package/dist/llm/providers/__tests__/openai.test.d.ts.map +0 -1
  393. package/dist/llm/providers/__tests__/openai.test.js +0 -546
  394. package/dist/llm/providers/__tests__/openai.test.js.map +0 -1
  395. package/dist/persistence/__tests__/factory-queries.test.d.ts +0 -9
  396. package/dist/persistence/__tests__/factory-queries.test.d.ts.map +0 -1
  397. package/dist/persistence/__tests__/factory-queries.test.js +0 -372
  398. package/dist/persistence/__tests__/factory-queries.test.js.map +0 -1
  399. package/dist/persistence/__tests__/factory-schema.test.d.ts +0 -6
  400. package/dist/persistence/__tests__/factory-schema.test.d.ts.map +0 -1
  401. package/dist/persistence/__tests__/factory-schema.test.js +0 -105
  402. package/dist/persistence/__tests__/factory-schema.test.js.map +0 -1
  403. package/dist/scenarios/__tests__/cli-command-list.test.d.ts +0 -7
  404. package/dist/scenarios/__tests__/cli-command-list.test.d.ts.map +0 -1
  405. package/dist/scenarios/__tests__/cli-command-list.test.js +0 -237
  406. package/dist/scenarios/__tests__/cli-command-list.test.js.map +0 -1
  407. package/dist/scenarios/__tests__/cli-command.test.d.ts +0 -11
  408. package/dist/scenarios/__tests__/cli-command.test.d.ts.map +0 -1
  409. package/dist/scenarios/__tests__/cli-command.test.js +0 -275
  410. package/dist/scenarios/__tests__/cli-command.test.js.map +0 -1
  411. package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts +0 -15
  412. package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts.map +0 -1
  413. package/dist/scenarios/__tests__/integrity-pipeline.test.js +0 -318
  414. package/dist/scenarios/__tests__/integrity-pipeline.test.js.map +0 -1
  415. package/dist/scenarios/__tests__/runner-twins.test.d.ts +0 -13
  416. package/dist/scenarios/__tests__/runner-twins.test.d.ts.map +0 -1
  417. package/dist/scenarios/__tests__/runner-twins.test.js +0 -205
  418. package/dist/scenarios/__tests__/runner-twins.test.js.map +0 -1
  419. package/dist/scenarios/__tests__/scorer.test.d.ts +0 -11
  420. package/dist/scenarios/__tests__/scorer.test.d.ts.map +0 -1
  421. package/dist/scenarios/__tests__/scorer.test.js +0 -225
  422. package/dist/scenarios/__tests__/scorer.test.js.map +0 -1
  423. package/dist/scenarios/__tests__/scoring-integration.test.d.ts +0 -8
  424. package/dist/scenarios/__tests__/scoring-integration.test.d.ts.map +0 -1
  425. package/dist/scenarios/__tests__/scoring-integration.test.js +0 -178
  426. package/dist/scenarios/__tests__/scoring-integration.test.js.map +0 -1
  427. package/dist/scenarios/__tests__/store.test.d.ts +0 -5
  428. package/dist/scenarios/__tests__/store.test.d.ts.map +0 -1
  429. package/dist/scenarios/__tests__/store.test.js +0 -169
  430. package/dist/scenarios/__tests__/store.test.js.map +0 -1
  431. package/dist/stylesheet/__tests__/stylesheet.test.d.ts +0 -17
  432. package/dist/stylesheet/__tests__/stylesheet.test.d.ts.map +0 -1
  433. package/dist/stylesheet/__tests__/stylesheet.test.js +0 -368
  434. package/dist/stylesheet/__tests__/stylesheet.test.js.map +0 -1
  435. package/dist/templates/__tests__/templates.test.d.ts +0 -7
  436. package/dist/templates/__tests__/templates.test.d.ts.map +0 -1
  437. package/dist/templates/__tests__/templates.test.js +0 -92
  438. package/dist/templates/__tests__/templates.test.js.map +0 -1
  439. package/dist/twins/__tests__/docker-compose.test.d.ts +0 -13
  440. package/dist/twins/__tests__/docker-compose.test.d.ts.map +0 -1
  441. package/dist/twins/__tests__/docker-compose.test.js +0 -247
  442. package/dist/twins/__tests__/docker-compose.test.js.map +0 -1
  443. package/dist/twins/__tests__/health-monitor.test.d.ts +0 -19
  444. package/dist/twins/__tests__/health-monitor.test.d.ts.map +0 -1
  445. package/dist/twins/__tests__/health-monitor.test.js +0 -301
  446. package/dist/twins/__tests__/health-monitor.test.js.map +0 -1
  447. package/dist/twins/__tests__/integration/e2e.test.d.ts +0 -18
  448. package/dist/twins/__tests__/integration/e2e.test.d.ts.map +0 -1
  449. package/dist/twins/__tests__/integration/e2e.test.js +0 -146
  450. package/dist/twins/__tests__/integration/e2e.test.js.map +0 -1
  451. package/dist/twins/__tests__/integration/helpers.d.ts +0 -32
  452. package/dist/twins/__tests__/integration/helpers.d.ts.map +0 -1
  453. package/dist/twins/__tests__/integration/helpers.js +0 -67
  454. package/dist/twins/__tests__/integration/helpers.js.map +0 -1
  455. package/dist/twins/__tests__/integration/lifecycle.test.d.ts +0 -14
  456. package/dist/twins/__tests__/integration/lifecycle.test.d.ts.map +0 -1
  457. package/dist/twins/__tests__/integration/lifecycle.test.js +0 -127
  458. package/dist/twins/__tests__/integration/lifecycle.test.js.map +0 -1
  459. package/dist/twins/__tests__/integration/persistence-integration.test.d.ts +0 -14
  460. package/dist/twins/__tests__/integration/persistence-integration.test.d.ts.map +0 -1
  461. package/dist/twins/__tests__/integration/persistence-integration.test.js +0 -132
  462. package/dist/twins/__tests__/integration/persistence-integration.test.js.map +0 -1
  463. package/dist/twins/__tests__/persistence.test.d.ts +0 -10
  464. package/dist/twins/__tests__/persistence.test.d.ts.map +0 -1
  465. package/dist/twins/__tests__/persistence.test.js +0 -300
  466. package/dist/twins/__tests__/persistence.test.js.map +0 -1
  467. package/dist/twins/__tests__/registry.test.d.ts +0 -7
  468. package/dist/twins/__tests__/registry.test.d.ts.map +0 -1
  469. package/dist/twins/__tests__/registry.test.js +0 -282
  470. package/dist/twins/__tests__/registry.test.js.map +0 -1
  471. package/dist/twins/__tests__/run-state.test.d.ts +0 -9
  472. package/dist/twins/__tests__/run-state.test.d.ts.map +0 -1
  473. package/dist/twins/__tests__/run-state.test.js +0 -112
  474. package/dist/twins/__tests__/run-state.test.js.map +0 -1
  475. package/dist/twins/__tests__/templates-cli.test.d.ts +0 -10
  476. package/dist/twins/__tests__/templates-cli.test.d.ts.map +0 -1
  477. package/dist/twins/__tests__/templates-cli.test.js +0 -187
  478. package/dist/twins/__tests__/templates-cli.test.js.map +0 -1
  479. package/dist/twins/__tests__/templates.test.d.ts +0 -7
  480. package/dist/twins/__tests__/templates.test.d.ts.map +0 -1
  481. package/dist/twins/__tests__/templates.test.js +0 -87
  482. package/dist/twins/__tests__/templates.test.js.map +0 -1
  483. package/dist/twins/__tests__/twins-cli.test.d.ts +0 -11
  484. package/dist/twins/__tests__/twins-cli.test.d.ts.map +0 -1
  485. package/dist/twins/__tests__/twins-cli.test.js +0 -365
  486. package/dist/twins/__tests__/twins-cli.test.js.map +0 -1
@@ -1,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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAG9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAGtD,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,WAAW,GAAc;IAC7B,EAAE,EAAE,EAAE;IACN,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,EAAE;IACV,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,EAAE;IACf,mBAAmB,EAAE,EAAE;IACvB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,EAAE;IACf,eAAe,EAAE,EAAE;IACnB,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,EAAE;CACZ,CAAA;AAED,uCAAuC;AACvC,SAAS,YAAY,CAAC,EAAU;IAC9B,OAAO,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AAC/C,CAAC;AAED,wCAAwC;AACxC,SAAS,eAAe,CAAC,EAAU;IACjC,OAAO,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAChD,CAAC;AAED,6FAA6F;AAC7F,SAAS,SAAS,CAAC,QAAqB;IACtC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACrD,OAAO;QACL,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,EAAE;QACT,eAAe,EAAE,EAAE;QACnB,iBAAiB,EAAE,CAAC;QACpB,WAAW,EAAE,EAAE;QACf,mBAAmB,EAAE,EAAE;QACvB,eAAe,EAAE,EAAE;QACnB,KAAK;QACL,KAAK,EAAE,EAAE;QACT,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE;QACvB,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA,CAAC,CAAC;QAC/D,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA,CAAC,CAAC;KAC/D,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,IAAI,UAAiC,CAAA;AAErC,UAAU,CAAC,GAAG,EAAE;IACd,UAAU,GAAG,2BAA2B,EAAE,CAAA;AAC5C,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,4CAA4C;AAC5C,8EAA8E;AAE9E,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACzD,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAE/B,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAE9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAE/B,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAE9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAE/B,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAE9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,oFAAoF;AACpF,8EAA8E;AAE9E,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;IAC5D,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;QAEvC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC5C,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;QACpD,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAE9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mGAAmG,EAAE,GAAG,EAAE;QAC3G,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;QAEvC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC5C,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAE9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAC9C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAE9E,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAE/B,wBAAwB;QACxB,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAE9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,sDAAsD;AACtD,8EAA8E;AAE9E,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;QAE7C,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC5C,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA,CAAC,iCAAiC;QAC9E,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAE9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;QAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAE9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,4CAA4C;AAC5C,8EAA8E;AAE9E,QAAQ,CAAC,sDAAsD,EAAE,GAAG,EAAE;IACpE,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAE/B,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAE7D,yBAAyB;QACzB,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,kDAAkD;AAClD,8EAA8E;AAE9E,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAC/D,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;QAExC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA,CAAC,oBAAoB;QACrE,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAE9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAE9E,oFAAoF;AACpF,SAAS,iBAAiB,CAAC,EAAU,EAAE,WAAmB,EAAE,mBAA2B;IACrF,OAAO,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAA;AACjE,CAAC;AAED,QAAQ,CAAC,qEAAqE,EAAE,GAAG,EAAE;IACnF,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;QAChE,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,CAAC,CAAA;QAC/C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;QAEjD,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,qFAAqF,EAAE,GAAG,EAAE;IACnG,EAAE,CAAC,iFAAiF,EAAE,GAAG,EAAE;QACzF,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,YAAY,CAAC,CAAA;QACjE,MAAM,UAAU,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;QAEjD,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yFAAyF,EAAE,GAAG,EAAE;IACvG,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACvD,MAAM,UAAU,GAAG,eAAe,CAAC,cAAc,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAA;QAErF,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yEAAyE,EAAE,GAAG,EAAE;IACvF,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACvD,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,CAAA;QACjD,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAAA;QAE7G,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,iFAAiF,EAAE,GAAG,EAAE;IAC/F,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACvD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;QAErC,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACnE,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAA;QAElG,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,mFAAmF,EAAE,GAAG,EAAE;IACjG,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,CAAA;QACjE,MAAM,UAAU,GAAG,eAAe,CAAC,cAAc,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAA;QAErF,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,6DAA6D,EAAE,GAAG,EAAE;IAC3E,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,eAAe,CAAC,CAAA;QACpE,MAAM,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;QACnD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;QAEjD,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACvD,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAA;QAEtF,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,+EAA+E,EAAE,GAAG,EAAE;IAC7F,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,CAAC,CAAA;QACjF,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;QAC/C,MAAM,KAAK,GAAG;YACZ,GAAG,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1D,WAAW,EAAE,eAAe;YAC5B,mBAAmB,EAAE,eAAe;SACrC,CAAA;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,sCAAsC;IACtC,EAAE,CAAC,wFAAwF,EAAE,GAAG,EAAE;QAChG,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAE/B,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QAE3D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,kCAAkC;IAClC,EAAE,CAAC,oGAAoG,EAAE,GAAG,EAAE;QAC5G,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAE/B,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QAE3D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,qGAAqG;IACrG,EAAE,CAAC,6FAA6F,EAAE,GAAG,EAAE;QACrG,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACvC,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACvC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;QAEvC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QAE3D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,qGAAqG;IACrG,EAAE,CAAC,6GAA6G,EAAE,GAAG,EAAE;QACrH,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACvC,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACvC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;QAEvC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QAE3D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,sCAAsC;IACtC,EAAE,CAAC,yFAAyF,EAAE,GAAG,EAAE;QACjG,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAE/B,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QAE3D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,sDAAsD;IACtD,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAiB,CAAA;QACvD,MAAM,OAAO,GAAkD,EAAE,CAAA;QACjE,QAAQ,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,OAAO,EAAE,EAAE;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;QAEF,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEtD,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,wDAAwD;IACxD,EAAE,CAAC,+FAA+F,EAAE,GAAG,EAAE;QACvG,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAiB,CAAA;QACvD,MAAM,OAAO,GAAiE,EAAE,CAAA;QAChF,QAAQ,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,OAAO,EAAE,EAAE;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;QAC9F,CAAC,CAAC,CAAA;QAEF,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEtD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,2DAA2D;IAC3D,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAiB,CAAA;QACvD,MAAM,OAAO,GAAkD,EAAE,CAAA;QACjE,QAAQ,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,OAAO,EAAE,EAAE;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;QAEF,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEtD,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,0DAA0D;IAC1D,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAE/B,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;IAC1E,CAAC,CAAC,CAAA;IAEF,wEAAwE;IACxE,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;QAC7F,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAiB,CAAA;QACvD,MAAM,OAAO,GAAkD,EAAE,CAAA;QACjE,QAAQ,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,OAAO,EAAE,EAAE;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;QAEF,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC5C,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QAErE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACtC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,2DAA2D;IAC3D,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;QAEvC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC5C,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QAE3D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,kDAAkD;IAClD,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;QACvC,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAiB,CAAA;QACvD,MAAM,OAAO,GAAkD,EAAE,CAAA;QACjE,QAAQ,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,OAAO,EAAE,EAAE;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;QAEF,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC5C,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;QACpD,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEtD,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,4DAA4D;IAC5D,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAE/B,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QAE3D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAE9E,QAAQ,CAAC,wDAAwD,EAAE,GAAG,EAAE;IACtE,2FAA2F;IAC3F,SAAS,WAAW,CAAC,KAAa;QAChC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAkB,CAAC,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;QACvE,OAAO;YACL,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC;YAClC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClD,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxD,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC;YAChF,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;YACzC,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;SAChC,CAAA;IACH,CAAC;IAED,wCAAwC;IACxC,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAE7B,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YAClE,OAAO,EAAE,GAAG;YACZ,qBAAqB,EAAE,GAAG;SAC3B,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,4CAA4C;IAC5C,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAE7B,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YAClE,OAAO,EAAE,GAAG;YACZ,qBAAqB,EAAE,GAAG;SAC3B,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,6CAA6C;IAC7C,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QAE5B,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YAClE,OAAO,EAAE,GAAG;YACZ,qBAAqB,EAAE,GAAG;SAC3B,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,iDAAiD;IACjD,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QAE5B,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YAClE,OAAO,EAAE,GAAG;YACZ,qBAAqB,EAAE,GAAG;SAC3B,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,mEAAmE;IACnE,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QAE5B,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YAClE,OAAO,EAAE,GAAG;YACZ,qBAAqB,EAAE,GAAG;SAC3B,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yFAAyF,EAAE,GAAG,EAAE;QACjG,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QAE5B,yCAAyC;QACzC,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YACnD,OAAO,EAAE,GAAG;YACZ,qBAAqB,EAAE,GAAG;SAC3B,CAAC,CAAA;QAEF,4CAA4C;QAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YAClE,OAAO,EAAE,GAAG;YACZ,qBAAqB,EAAE,GAAG;SAC3B,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,oEAAoE;IACpE,EAAE,CAAC,8FAA8F,EAAE,GAAG,EAAE;QACtG,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAE/B,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAExD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yGAAyG,EAAE,GAAG,EAAE;QACjH,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAE/B,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAExD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,sDAAsD;IACtD,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAiB,CAAA;QACvD,MAAM,OAAO,GAAiF,EAAE,CAAA;QAChG,QAAQ,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,OAAO,EAAE,EAAE;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAChK,CAAC,CAAC,CAAA;QACF,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAE7B,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;YAClD,OAAO,EAAE,GAAG;YACZ,qBAAqB,EAAE,GAAG;SAC3B,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,iEAAiE;IACjE,EAAE,CAAC,4FAA4F,EAAE,GAAG,EAAE;QACpG,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAiB,CAAA;QACvD,MAAM,OAAO,GAA8B,EAAE,CAAA;QAC7C,QAAQ,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,OAAO,EAAE,EAAE;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACpF,CAAC,CAAC,CAAA;QAEF,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAChD,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QAEnD,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,aAAa,EAAE,CAAA;IAC3C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -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"}