@nac3/forge-cli 0.2.0-alpha.4 → 0.2.0-alpha.59z.118

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 (773) hide show
  1. package/README.md +16 -1
  2. package/dist/a11y/helpers.d.ts +88 -0
  3. package/dist/a11y/helpers.d.ts.map +1 -0
  4. package/dist/a11y/helpers.js +109 -0
  5. package/dist/a11y/helpers.js.map +1 -0
  6. package/dist/agents/config_resolver.d.ts +16 -0
  7. package/dist/agents/config_resolver.d.ts.map +1 -0
  8. package/dist/agents/config_resolver.js +133 -0
  9. package/dist/agents/config_resolver.js.map +1 -0
  10. package/dist/agents/config_schema.d.ts +42 -0
  11. package/dist/agents/config_schema.d.ts.map +1 -0
  12. package/dist/agents/config_schema.js +204 -0
  13. package/dist/agents/config_schema.js.map +1 -0
  14. package/dist/agents/defaults.d.ts +21 -0
  15. package/dist/agents/defaults.d.ts.map +1 -0
  16. package/dist/agents/defaults.js +56 -0
  17. package/dist/agents/defaults.js.map +1 -0
  18. package/dist/agents/runner.d.ts +94 -0
  19. package/dist/agents/runner.d.ts.map +1 -0
  20. package/dist/agents/runner.js +165 -0
  21. package/dist/agents/runner.js.map +1 -0
  22. package/dist/agents/store.d.ts +33 -0
  23. package/dist/agents/store.d.ts.map +1 -0
  24. package/dist/agents/store.js +210 -0
  25. package/dist/agents/store.js.map +1 -0
  26. package/dist/agents/types.d.ts +112 -0
  27. package/dist/agents/types.d.ts.map +1 -0
  28. package/dist/agents/types.js +39 -0
  29. package/dist/agents/types.js.map +1 -0
  30. package/dist/bin/yf.d.ts.map +1 -1
  31. package/dist/bin/yf.js +86 -2
  32. package/dist/bin/yf.js.map +1 -1
  33. package/dist/chat/claude.d.ts +53 -15
  34. package/dist/chat/claude.d.ts.map +1 -1
  35. package/dist/chat/claude.js +152 -27
  36. package/dist/chat/claude.js.map +1 -1
  37. package/dist/chat/graph_auto_ingest.d.ts +46 -0
  38. package/dist/chat/graph_auto_ingest.d.ts.map +1 -0
  39. package/dist/chat/graph_auto_ingest.js +162 -0
  40. package/dist/chat/graph_auto_ingest.js.map +1 -0
  41. package/dist/chat/graph_component_watcher.d.ts +30 -0
  42. package/dist/chat/graph_component_watcher.d.ts.map +1 -0
  43. package/dist/chat/graph_component_watcher.js +220 -0
  44. package/dist/chat/graph_component_watcher.js.map +1 -0
  45. package/dist/chat/panel.d.ts.map +1 -1
  46. package/dist/chat/panel.js +5815 -1455
  47. package/dist/chat/panel.js.map +1 -1
  48. package/dist/chat/project_slug.d.ts +6 -0
  49. package/dist/chat/project_slug.d.ts.map +1 -0
  50. package/dist/chat/project_slug.js +78 -0
  51. package/dist/chat/project_slug.js.map +1 -0
  52. package/dist/chat/semantic_graph_ingest.d.ts +31 -0
  53. package/dist/chat/semantic_graph_ingest.d.ts.map +1 -0
  54. package/dist/chat/semantic_graph_ingest.js +84 -0
  55. package/dist/chat/semantic_graph_ingest.js.map +1 -0
  56. package/dist/chat/semantic_graph_inject.d.ts +25 -0
  57. package/dist/chat/semantic_graph_inject.d.ts.map +1 -0
  58. package/dist/chat/semantic_graph_inject.js +64 -0
  59. package/dist/chat/semantic_graph_inject.js.map +1 -0
  60. package/dist/chat/server.d.ts +50 -0
  61. package/dist/chat/server.d.ts.map +1 -1
  62. package/dist/chat/server.js +1914 -63
  63. package/dist/chat/server.js.map +1 -1
  64. package/dist/chat/spec_extract.d.ts +1 -2
  65. package/dist/chat/spec_extract.d.ts.map +1 -1
  66. package/dist/chat/spec_extract.js +18 -59
  67. package/dist/chat/spec_extract.js.map +1 -1
  68. package/dist/chat/spec_plan.d.ts +1 -2
  69. package/dist/chat/spec_plan.d.ts.map +1 -1
  70. package/dist/chat/spec_plan.js +15 -60
  71. package/dist/chat/spec_plan.js.map +1 -1
  72. package/dist/chat/tools/app_backend_dispatch.d.ts +39 -0
  73. package/dist/chat/tools/app_backend_dispatch.d.ts.map +1 -0
  74. package/dist/chat/tools/app_backend_dispatch.js +239 -0
  75. package/dist/chat/tools/app_backend_dispatch.js.map +1 -0
  76. package/dist/chat/tools/audit_consumers.d.ts +66 -0
  77. package/dist/chat/tools/audit_consumers.d.ts.map +1 -0
  78. package/dist/chat/tools/audit_consumers.js +231 -0
  79. package/dist/chat/tools/audit_consumers.js.map +1 -0
  80. package/dist/chat/tools/fs_editor.d.ts +11 -0
  81. package/dist/chat/tools/fs_editor.d.ts.map +1 -0
  82. package/dist/chat/tools/fs_editor.js +162 -0
  83. package/dist/chat/tools/fs_editor.js.map +1 -0
  84. package/dist/chat/tools/git.d.ts +24 -0
  85. package/dist/chat/tools/git.d.ts.map +1 -1
  86. package/dist/chat/tools/git.js +82 -4
  87. package/dist/chat/tools/git.js.map +1 -1
  88. package/dist/chat/tools/github.js +3 -3
  89. package/dist/chat/tools/keys.d.ts +9 -0
  90. package/dist/chat/tools/keys.d.ts.map +1 -0
  91. package/dist/chat/tools/keys.js +152 -0
  92. package/dist/chat/tools/keys.js.map +1 -0
  93. package/dist/chat/tools/lifecycle.js +3 -3
  94. package/dist/chat/tools/manual.js +1 -1
  95. package/dist/chat/tools/misc_verbs.d.ts +36 -0
  96. package/dist/chat/tools/misc_verbs.d.ts.map +1 -0
  97. package/dist/chat/tools/misc_verbs.js +405 -0
  98. package/dist/chat/tools/misc_verbs.js.map +1 -0
  99. package/dist/chat/tools/nac3_invoke.d.ts +53 -0
  100. package/dist/chat/tools/nac3_invoke.d.ts.map +1 -0
  101. package/dist/chat/tools/nac3_invoke.js +886 -0
  102. package/dist/chat/tools/nac3_invoke.js.map +1 -0
  103. package/dist/chat/tools/pizarron.d.ts +40 -0
  104. package/dist/chat/tools/pizarron.d.ts.map +1 -0
  105. package/dist/chat/tools/pizarron.js +123 -0
  106. package/dist/chat/tools/pizarron.js.map +1 -0
  107. package/dist/chat/tools/project_lifecycle.d.ts +24 -0
  108. package/dist/chat/tools/project_lifecycle.d.ts.map +1 -0
  109. package/dist/chat/tools/project_lifecycle.js +184 -0
  110. package/dist/chat/tools/project_lifecycle.js.map +1 -0
  111. package/dist/chat/tools/reader.d.ts.map +1 -1
  112. package/dist/chat/tools/reader.js +152 -9
  113. package/dist/chat/tools/reader.js.map +1 -1
  114. package/dist/chat/tools/shell.d.ts +58 -0
  115. package/dist/chat/tools/shell.d.ts.map +1 -0
  116. package/dist/chat/tools/shell.js +253 -0
  117. package/dist/chat/tools/shell.js.map +1 -0
  118. package/dist/chat/tools/workflow.d.ts +45 -0
  119. package/dist/chat/tools/workflow.d.ts.map +1 -0
  120. package/dist/chat/tools/workflow.js +404 -0
  121. package/dist/chat/tools/workflow.js.map +1 -0
  122. package/dist/chat/tools.d.ts +27 -0
  123. package/dist/chat/tools.d.ts.map +1 -1
  124. package/dist/chat/tools.js +366 -17
  125. package/dist/chat/tools.js.map +1 -1
  126. package/dist/chat/workflow_inject.d.ts +52 -0
  127. package/dist/chat/workflow_inject.d.ts.map +1 -0
  128. package/dist/chat/workflow_inject.js +346 -0
  129. package/dist/chat/workflow_inject.js.map +1 -0
  130. package/dist/commands/agent.d.ts +22 -0
  131. package/dist/commands/agent.d.ts.map +1 -0
  132. package/dist/commands/agent.js +190 -0
  133. package/dist/commands/agent.js.map +1 -0
  134. package/dist/commands/approve.d.ts +32 -0
  135. package/dist/commands/approve.d.ts.map +1 -0
  136. package/dist/commands/approve.js +198 -0
  137. package/dist/commands/approve.js.map +1 -0
  138. package/dist/commands/block.d.ts +28 -0
  139. package/dist/commands/block.d.ts.map +1 -0
  140. package/dist/commands/block.js +189 -0
  141. package/dist/commands/block.js.map +1 -0
  142. package/dist/commands/bootstrap.d.ts +35 -0
  143. package/dist/commands/bootstrap.d.ts.map +1 -0
  144. package/dist/commands/bootstrap.js +205 -0
  145. package/dist/commands/bootstrap.js.map +1 -0
  146. package/dist/commands/brain.d.ts +17 -0
  147. package/dist/commands/brain.d.ts.map +1 -0
  148. package/dist/commands/brain.js +129 -0
  149. package/dist/commands/brain.js.map +1 -0
  150. package/dist/commands/chat.d.ts +3 -0
  151. package/dist/commands/chat.d.ts.map +1 -1
  152. package/dist/commands/chat.js +112 -1
  153. package/dist/commands/chat.js.map +1 -1
  154. package/dist/commands/clarify.d.ts +30 -0
  155. package/dist/commands/clarify.d.ts.map +1 -0
  156. package/dist/commands/clarify.js +671 -0
  157. package/dist/commands/clarify.js.map +1 -0
  158. package/dist/commands/discover.d.ts +30 -0
  159. package/dist/commands/discover.d.ts.map +1 -0
  160. package/dist/commands/discover.js +178 -0
  161. package/dist/commands/discover.js.map +1 -0
  162. package/dist/commands/doctor.js +26 -4
  163. package/dist/commands/doctor.js.map +1 -1
  164. package/dist/commands/doctrine.d.ts +24 -0
  165. package/dist/commands/doctrine.d.ts.map +1 -0
  166. package/dist/commands/doctrine.js +106 -0
  167. package/dist/commands/doctrine.js.map +1 -0
  168. package/dist/commands/doctrines.d.ts +21 -0
  169. package/dist/commands/doctrines.d.ts.map +1 -0
  170. package/dist/commands/doctrines.js +158 -0
  171. package/dist/commands/doctrines.js.map +1 -0
  172. package/dist/commands/graph.d.ts +21 -0
  173. package/dist/commands/graph.d.ts.map +1 -0
  174. package/dist/commands/graph.js +363 -0
  175. package/dist/commands/graph.js.map +1 -0
  176. package/dist/commands/keys_setup.d.ts.map +1 -1
  177. package/dist/commands/keys_setup.js +80 -0
  178. package/dist/commands/keys_setup.js.map +1 -1
  179. package/dist/commands/legacy-audit.d.ts +34 -0
  180. package/dist/commands/legacy-audit.d.ts.map +1 -0
  181. package/dist/commands/legacy-audit.js +270 -0
  182. package/dist/commands/legacy-audit.js.map +1 -0
  183. package/dist/commands/lessons.d.ts +28 -0
  184. package/dist/commands/lessons.d.ts.map +1 -0
  185. package/dist/commands/lessons.js +309 -0
  186. package/dist/commands/lessons.js.map +1 -0
  187. package/dist/commands/license.d.ts.map +1 -1
  188. package/dist/commands/license.js +56 -1
  189. package/dist/commands/license.js.map +1 -1
  190. package/dist/commands/limits.d.ts +15 -0
  191. package/dist/commands/limits.d.ts.map +1 -0
  192. package/dist/commands/limits.js +51 -0
  193. package/dist/commands/limits.js.map +1 -0
  194. package/dist/commands/manifest-cli.d.ts +12 -0
  195. package/dist/commands/manifest-cli.d.ts.map +1 -0
  196. package/dist/commands/manifest-cli.js +42 -0
  197. package/dist/commands/manifest-cli.js.map +1 -0
  198. package/dist/commands/mcp.d.ts +24 -0
  199. package/dist/commands/mcp.d.ts.map +1 -0
  200. package/dist/commands/mcp.js +163 -0
  201. package/dist/commands/mcp.js.map +1 -0
  202. package/dist/commands/nac3.d.ts +22 -0
  203. package/dist/commands/nac3.d.ts.map +1 -0
  204. package/dist/commands/nac3.js +125 -0
  205. package/dist/commands/nac3.js.map +1 -0
  206. package/dist/commands/operate.d.ts +22 -0
  207. package/dist/commands/operate.d.ts.map +1 -0
  208. package/dist/commands/operate.js +523 -0
  209. package/dist/commands/operate.js.map +1 -0
  210. package/dist/commands/qa.d.ts +24 -0
  211. package/dist/commands/qa.d.ts.map +1 -0
  212. package/dist/commands/qa.js +349 -0
  213. package/dist/commands/qa.js.map +1 -0
  214. package/dist/commands/spec.d.ts +38 -0
  215. package/dist/commands/spec.d.ts.map +1 -0
  216. package/dist/commands/spec.js +256 -0
  217. package/dist/commands/spec.js.map +1 -0
  218. package/dist/commands/support.d.ts +22 -0
  219. package/dist/commands/support.d.ts.map +1 -0
  220. package/dist/commands/support.js +165 -0
  221. package/dist/commands/support.js.map +1 -0
  222. package/dist/commands/triage.d.ts +34 -0
  223. package/dist/commands/triage.d.ts.map +1 -0
  224. package/dist/commands/triage.js +228 -0
  225. package/dist/commands/triage.js.map +1 -0
  226. package/dist/commands/vault-inventory.d.ts +30 -0
  227. package/dist/commands/vault-inventory.d.ts.map +1 -0
  228. package/dist/commands/vault-inventory.js +222 -0
  229. package/dist/commands/vault-inventory.js.map +1 -0
  230. package/dist/commands/vault.d.ts.map +1 -1
  231. package/dist/commands/vault.js +5 -0
  232. package/dist/commands/vault.js.map +1 -1
  233. package/dist/commands/voice.d.ts.map +1 -1
  234. package/dist/commands/voice.js +47 -4
  235. package/dist/commands/voice.js.map +1 -1
  236. package/dist/commands/workflow-coverage.d.ts +30 -0
  237. package/dist/commands/workflow-coverage.d.ts.map +1 -0
  238. package/dist/commands/workflow-coverage.js +138 -0
  239. package/dist/commands/workflow-coverage.js.map +1 -0
  240. package/dist/core/ansi_strip.d.ts +39 -0
  241. package/dist/core/ansi_strip.d.ts.map +1 -0
  242. package/dist/core/ansi_strip.js +71 -0
  243. package/dist/core/ansi_strip.js.map +1 -0
  244. package/dist/core/audit_log.d.ts +43 -0
  245. package/dist/core/audit_log.d.ts.map +1 -0
  246. package/dist/core/audit_log.js +80 -0
  247. package/dist/core/audit_log.js.map +1 -0
  248. package/dist/core/brain_config.d.ts +33 -0
  249. package/dist/core/brain_config.d.ts.map +1 -0
  250. package/dist/core/brain_config.js +132 -0
  251. package/dist/core/brain_config.js.map +1 -0
  252. package/dist/core/budget.d.ts +96 -0
  253. package/dist/core/budget.d.ts.map +1 -0
  254. package/dist/core/budget.js +300 -0
  255. package/dist/core/budget.js.map +1 -0
  256. package/dist/core/cost_meter.d.ts +35 -0
  257. package/dist/core/cost_meter.d.ts.map +1 -0
  258. package/dist/core/cost_meter.js +111 -0
  259. package/dist/core/cost_meter.js.map +1 -0
  260. package/dist/core/cost_router.d.ts +106 -0
  261. package/dist/core/cost_router.d.ts.map +1 -0
  262. package/dist/core/cost_router.js +465 -0
  263. package/dist/core/cost_router.js.map +1 -0
  264. package/dist/core/doctrine_resolver.d.ts +23 -0
  265. package/dist/core/doctrine_resolver.d.ts.map +1 -0
  266. package/dist/core/doctrine_resolver.js +108 -0
  267. package/dist/core/doctrine_resolver.js.map +1 -0
  268. package/dist/core/error_catalog.d.ts +80 -0
  269. package/dist/core/error_catalog.d.ts.map +1 -0
  270. package/dist/core/error_catalog.js +168 -0
  271. package/dist/core/error_catalog.js.map +1 -0
  272. package/dist/core/error_formatter.d.ts +30 -0
  273. package/dist/core/error_formatter.d.ts.map +1 -0
  274. package/dist/core/error_formatter.js +155 -0
  275. package/dist/core/error_formatter.js.map +1 -0
  276. package/dist/core/incomplete_detector.d.ts +51 -0
  277. package/dist/core/incomplete_detector.d.ts.map +1 -0
  278. package/dist/core/incomplete_detector.js +140 -0
  279. package/dist/core/incomplete_detector.js.map +1 -0
  280. package/dist/core/learnings_client.d.ts +104 -0
  281. package/dist/core/learnings_client.d.ts.map +1 -0
  282. package/dist/core/learnings_client.js +262 -0
  283. package/dist/core/learnings_client.js.map +1 -0
  284. package/dist/core/limits_config.d.ts +76 -0
  285. package/dist/core/limits_config.d.ts.map +1 -0
  286. package/dist/core/limits_config.js +297 -0
  287. package/dist/core/limits_config.js.map +1 -0
  288. package/dist/core/provider_keys.d.ts +35 -0
  289. package/dist/core/provider_keys.d.ts.map +1 -0
  290. package/dist/core/provider_keys.js +260 -0
  291. package/dist/core/provider_keys.js.map +1 -0
  292. package/dist/core/reasoning_gate.d.ts +72 -0
  293. package/dist/core/reasoning_gate.d.ts.map +1 -0
  294. package/dist/core/reasoning_gate.js +192 -0
  295. package/dist/core/reasoning_gate.js.map +1 -0
  296. package/dist/core/shell_classifier.d.ts +49 -0
  297. package/dist/core/shell_classifier.d.ts.map +1 -0
  298. package/dist/core/shell_classifier.js +159 -0
  299. package/dist/core/shell_classifier.js.map +1 -0
  300. package/dist/core/sq_resolver.d.ts +14 -0
  301. package/dist/core/sq_resolver.d.ts.map +1 -0
  302. package/dist/core/sq_resolver.js +230 -0
  303. package/dist/core/sq_resolver.js.map +1 -0
  304. package/dist/core/truncation_detector.d.ts +68 -0
  305. package/dist/core/truncation_detector.d.ts.map +1 -0
  306. package/dist/core/truncation_detector.js +115 -0
  307. package/dist/core/truncation_detector.js.map +1 -0
  308. package/dist/core/turn_classifier.d.ts +62 -0
  309. package/dist/core/turn_classifier.d.ts.map +1 -0
  310. package/dist/core/turn_classifier.js +213 -0
  311. package/dist/core/turn_classifier.js.map +1 -0
  312. package/dist/core/whats_new.d.ts +42 -0
  313. package/dist/core/whats_new.d.ts.map +1 -0
  314. package/dist/core/whats_new.js +214 -0
  315. package/dist/core/whats_new.js.map +1 -0
  316. package/dist/deploy/adapter.d.ts +93 -0
  317. package/dist/deploy/adapter.d.ts.map +1 -0
  318. package/dist/deploy/adapter.js +42 -0
  319. package/dist/deploy/adapter.js.map +1 -0
  320. package/dist/deploy/aws_adapter.d.ts +28 -0
  321. package/dist/deploy/aws_adapter.d.ts.map +1 -0
  322. package/dist/deploy/aws_adapter.js +98 -0
  323. package/dist/deploy/aws_adapter.js.map +1 -0
  324. package/dist/deploy/cloudflare.d.ts +24 -0
  325. package/dist/deploy/cloudflare.d.ts.map +1 -0
  326. package/dist/deploy/cloudflare.js +169 -0
  327. package/dist/deploy/cloudflare.js.map +1 -0
  328. package/dist/docs/LIMITED_RESPONSIBILITY.md +216 -0
  329. package/dist/docs/PRIVACY_POLICY.md +169 -0
  330. package/dist/docs/SQ.md +1397 -0
  331. package/dist/docs/SQ_BY_STEP.yaml +147 -0
  332. package/dist/docs/doctrine/accessibility.md +78 -0
  333. package/dist/docs/doctrine/agent-orchestrator.md +76 -0
  334. package/dist/docs/doctrine/byok-vs-managed.md +81 -0
  335. package/dist/docs/doctrine/cost-router-escalation.md +73 -0
  336. package/dist/docs/doctrine/explain-results.md +90 -0
  337. package/dist/docs/doctrine/g-doc.md +46 -0
  338. package/dist/docs/doctrine/gates.md +21 -0
  339. package/dist/docs/doctrine/lessons-workflow.md +68 -0
  340. package/dist/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
  341. package/dist/docs/doctrine/nac3-attrs.md +23 -0
  342. package/dist/docs/doctrine/office-tools.md +102 -0
  343. package/dist/docs/doctrine/pizarron.md +52 -0
  344. package/dist/docs/doctrine/r8-modal.md +60 -0
  345. package/dist/docs/doctrine/safety-refusals.md +73 -0
  346. package/dist/docs/doctrine/verb-composition.md +68 -0
  347. package/dist/docs/doctrine/workflow-phases.md +108 -0
  348. package/dist/docs/doctrine/workflow.md +58 -0
  349. package/dist/docs/doctrine/yf-commands.md +49 -0
  350. package/dist/json/query.d.ts +38 -0
  351. package/dist/json/query.d.ts.map +1 -0
  352. package/dist/json/query.js +177 -0
  353. package/dist/json/query.js.map +1 -0
  354. package/dist/license/hito4_client.d.ts +19 -0
  355. package/dist/license/hito4_client.d.ts.map +1 -1
  356. package/dist/license/hito4_client.js +110 -0
  357. package/dist/license/hito4_client.js.map +1 -1
  358. package/dist/license/index.d.ts.map +1 -1
  359. package/dist/license/index.js +7 -0
  360. package/dist/license/index.js.map +1 -1
  361. package/dist/license/sync.d.ts +54 -0
  362. package/dist/license/sync.d.ts.map +1 -0
  363. package/dist/license/sync.js +138 -0
  364. package/dist/license/sync.js.map +1 -0
  365. package/dist/llm/cohere_client.d.ts +81 -0
  366. package/dist/llm/cohere_client.d.ts.map +1 -0
  367. package/dist/llm/cohere_client.js +195 -0
  368. package/dist/llm/cohere_client.js.map +1 -0
  369. package/dist/llm/deepseek_client.d.ts +63 -0
  370. package/dist/llm/deepseek_client.d.ts.map +1 -0
  371. package/dist/llm/deepseek_client.js +188 -0
  372. package/dist/llm/deepseek_client.js.map +1 -0
  373. package/dist/llm/gemini_client.d.ts +78 -0
  374. package/dist/llm/gemini_client.d.ts.map +1 -0
  375. package/dist/llm/gemini_client.js +189 -0
  376. package/dist/llm/gemini_client.js.map +1 -0
  377. package/dist/llm/managed_client.d.ts +70 -0
  378. package/dist/llm/managed_client.d.ts.map +1 -0
  379. package/dist/llm/managed_client.js +251 -0
  380. package/dist/llm/managed_client.js.map +1 -0
  381. package/dist/llm/mistral_client.d.ts +54 -0
  382. package/dist/llm/mistral_client.d.ts.map +1 -0
  383. package/dist/llm/mistral_client.js +174 -0
  384. package/dist/llm/mistral_client.js.map +1 -0
  385. package/dist/llm/multi_provider_client.d.ts +57 -0
  386. package/dist/llm/multi_provider_client.d.ts.map +1 -0
  387. package/dist/llm/multi_provider_client.js +109 -0
  388. package/dist/llm/multi_provider_client.js.map +1 -0
  389. package/dist/llm/openai_client.d.ts +77 -0
  390. package/dist/llm/openai_client.d.ts.map +1 -0
  391. package/dist/llm/openai_client.js +200 -0
  392. package/dist/llm/openai_client.js.map +1 -0
  393. package/dist/llm/xai_client.d.ts +51 -0
  394. package/dist/llm/xai_client.d.ts.map +1 -0
  395. package/dist/llm/xai_client.js +174 -0
  396. package/dist/llm/xai_client.js.map +1 -0
  397. package/dist/mcp/bridge_registry.d.ts +77 -0
  398. package/dist/mcp/bridge_registry.d.ts.map +1 -0
  399. package/dist/mcp/bridge_registry.js +220 -0
  400. package/dist/mcp/bridge_registry.js.map +1 -0
  401. package/dist/mcp/config.d.ts +25 -0
  402. package/dist/mcp/config.d.ts.map +1 -0
  403. package/dist/mcp/config.js +116 -0
  404. package/dist/mcp/config.js.map +1 -0
  405. package/dist/mcp/protocol_client.d.ts +63 -0
  406. package/dist/mcp/protocol_client.d.ts.map +1 -0
  407. package/dist/mcp/protocol_client.js +340 -0
  408. package/dist/mcp/protocol_client.js.map +1 -0
  409. package/dist/mcp/state.d.ts +38 -0
  410. package/dist/mcp/state.d.ts.map +1 -0
  411. package/dist/mcp/state.js +144 -0
  412. package/dist/mcp/state.js.map +1 -0
  413. package/dist/migrate/ai-decorator.d.ts.map +1 -1
  414. package/dist/migrate/ai-decorator.js +33 -145
  415. package/dist/migrate/ai-decorator.js.map +1 -1
  416. package/dist/nac3/approval_queue.d.ts +36 -0
  417. package/dist/nac3/approval_queue.d.ts.map +1 -0
  418. package/dist/nac3/approval_queue.js +105 -0
  419. package/dist/nac3/approval_queue.js.map +1 -0
  420. package/dist/nac3/backend_tools.d.ts +89 -0
  421. package/dist/nac3/backend_tools.d.ts.map +1 -0
  422. package/dist/nac3/backend_tools.js +271 -0
  423. package/dist/nac3/backend_tools.js.map +1 -0
  424. package/dist/nac3/dispatch_log.d.ts +35 -0
  425. package/dist/nac3/dispatch_log.d.ts.map +1 -0
  426. package/dist/nac3/dispatch_log.js +126 -0
  427. package/dist/nac3/dispatch_log.js.map +1 -0
  428. package/dist/nac3/internal_manifest.d.ts +62 -0
  429. package/dist/nac3/internal_manifest.d.ts.map +1 -0
  430. package/dist/nac3/internal_manifest.js +1846 -0
  431. package/dist/nac3/internal_manifest.js.map +1 -0
  432. package/dist/nac3/manifest_lazy.d.ts +71 -0
  433. package/dist/nac3/manifest_lazy.d.ts.map +1 -0
  434. package/dist/nac3/manifest_lazy.js +141 -0
  435. package/dist/nac3/manifest_lazy.js.map +1 -0
  436. package/dist/nac3/verb_tier_map.d.ts +80 -0
  437. package/dist/nac3/verb_tier_map.d.ts.map +1 -0
  438. package/dist/nac3/verb_tier_map.js +159 -0
  439. package/dist/nac3/verb_tier_map.js.map +1 -0
  440. package/dist/office/excel.d.ts +110 -0
  441. package/dist/office/excel.d.ts.map +1 -0
  442. package/dist/office/excel.js +276 -0
  443. package/dist/office/excel.js.map +1 -0
  444. package/dist/office/pdf.d.ts +35 -0
  445. package/dist/office/pdf.d.ts.map +1 -0
  446. package/dist/office/pdf.js +70 -0
  447. package/dist/office/pdf.js.map +1 -0
  448. package/dist/office/word.d.ts +64 -0
  449. package/dist/office/word.d.ts.map +1 -0
  450. package/dist/office/word.js +243 -0
  451. package/dist/office/word.js.map +1 -0
  452. package/dist/qa/brain_matrix/ab_runner.d.ts +44 -0
  453. package/dist/qa/brain_matrix/ab_runner.d.ts.map +1 -0
  454. package/dist/qa/brain_matrix/ab_runner.js +144 -0
  455. package/dist/qa/brain_matrix/ab_runner.js.map +1 -0
  456. package/dist/qa/brain_matrix/brains.json +80 -0
  457. package/dist/qa/brain_matrix/compare.d.ts +27 -0
  458. package/dist/qa/brain_matrix/compare.d.ts.map +1 -0
  459. package/dist/qa/brain_matrix/compare.js +122 -0
  460. package/dist/qa/brain_matrix/compare.js.map +1 -0
  461. package/dist/qa/brain_matrix/fake_brain.d.ts +36 -0
  462. package/dist/qa/brain_matrix/fake_brain.d.ts.map +1 -0
  463. package/dist/qa/brain_matrix/fake_brain.js +27 -0
  464. package/dist/qa/brain_matrix/fake_brain.js.map +1 -0
  465. package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_intent.json +22 -0
  466. package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_no_speak_default.json +23 -0
  467. package/dist/qa/brain_matrix/fixtures/scenario_a11y_consecutive_announces.json +37 -0
  468. package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_action.json +22 -0
  469. package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_with_shortcut.json +22 -0
  470. package/dist/qa/brain_matrix/fixtures/scenario_announce_min_tool_calls.json +23 -0
  471. package/dist/qa/brain_matrix/fixtures/scenario_app_invoke_happy_path.json +65 -0
  472. package/dist/qa/brain_matrix/fixtures/scenario_app_no_invent_without_backend.json +18 -0
  473. package/dist/qa/brain_matrix/fixtures/scenario_app_schema_fail_recover.json +48 -0
  474. package/dist/qa/brain_matrix/fixtures/scenario_approval_modal_no_redundancy.json +21 -0
  475. package/dist/qa/brain_matrix/fixtures/scenario_args_redacted_in_audit.json +17 -0
  476. package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent.json +19 -0
  477. package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent_en.json +19 -0
  478. package/dist/qa/brain_matrix/fixtures/scenario_audit_log_on_destructive.json +18 -0
  479. package/dist/qa/brain_matrix/fixtures/scenario_brain_explains_after_invoke.json +28 -0
  480. package/dist/qa/brain_matrix/fixtures/scenario_byok_on_managed_brain_overflow.json +28 -0
  481. package/dist/qa/brain_matrix/fixtures/scenario_byok_required_policy.json +35 -0
  482. package/dist/qa/brain_matrix/fixtures/scenario_concise_no_loop.json +23 -0
  483. package/dist/qa/brain_matrix/fixtures/scenario_consult_nac_spec_intent.json +19 -0
  484. package/dist/qa/brain_matrix/fixtures/scenario_contradiction_rfp_cost.json +38 -0
  485. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_attachment_frontier.json +24 -0
  486. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_escalation_explicit.json +23 -0
  487. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_idle_reset.json +24 -0
  488. package/dist/qa/brain_matrix/fixtures/scenario_csv_via_excel_read.json +22 -0
  489. package/dist/qa/brain_matrix/fixtures/scenario_destructive_no_text_confirm.json +20 -0
  490. package/dist/qa/brain_matrix/fixtures/scenario_diff_explains_changes.json +32 -0
  491. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_after_unknown_intent.json +17 -0
  492. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_a11y.json +24 -0
  493. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_agent_orchestrator.json +24 -0
  494. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_byok_vs_managed.json +24 -0
  495. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_cost_router.json +24 -0
  496. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_g_doc.json +24 -0
  497. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_gates.json +23 -0
  498. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_intent_en.json +19 -0
  499. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_lessons_workflow.json +24 -0
  500. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_mcp_lifecycle.json +24 -0
  501. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_nac3_attrs.json +24 -0
  502. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_office.json +24 -0
  503. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_pizarron.json +23 -0
  504. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_r8_modal.json +23 -0
  505. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow.json +23 -0
  506. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow_phases.json +24 -0
  507. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_yf_commands.json +24 -0
  508. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_explain_results.json +22 -0
  509. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_safety_refusals.json +22 -0
  510. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_verb_composition.json +22 -0
  511. package/dist/qa/brain_matrix/fixtures/scenario_eco_defers_complex.json +17 -0
  512. package/dist/qa/brain_matrix/fixtures/scenario_eco_short_query.json +27 -0
  513. package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent.json +20 -0
  514. package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent_en.json +20 -0
  515. package/dist/qa/brain_matrix/fixtures/scenario_env_no_secret_leak.json +21 -0
  516. package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression.json +35 -0
  517. package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression_en.json +21 -0
  518. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_handles_csv_refusal.json +28 -0
  519. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent.json +20 -0
  520. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent_en.json +20 -0
  521. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_then_list.json +34 -0
  522. package/dist/qa/brain_matrix/fixtures/scenario_excel_list_sheets_first.json +22 -0
  523. package/dist/qa/brain_matrix/fixtures/scenario_excel_sheet_named.json +23 -0
  524. package/dist/qa/brain_matrix/fixtures/scenario_explain_voice_yes.json +22 -0
  525. package/dist/qa/brain_matrix/fixtures/scenario_explains_forge_error.json +39 -0
  526. package/dist/qa/brain_matrix/fixtures/scenario_focus_after_modal_open.json +29 -0
  527. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent.json +21 -0
  528. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent_en.json +20 -0
  529. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_with_glob.json +22 -0
  530. package/dist/qa/brain_matrix/fixtures/scenario_fs_mkdir_intent.json +20 -0
  531. package/dist/qa/brain_matrix/fixtures/scenario_fs_move_intent.json +20 -0
  532. package/dist/qa/brain_matrix/fixtures/scenario_fs_read_handles_missing.json +28 -0
  533. package/dist/qa/brain_matrix/fixtures/scenario_fs_stat_before_read.json +22 -0
  534. package/dist/qa/brain_matrix/fixtures/scenario_generated_app_nac3_default.json +24 -0
  535. package/dist/qa/brain_matrix/fixtures/scenario_git_branch_list_intent.json +20 -0
  536. package/dist/qa/brain_matrix/fixtures/scenario_git_diff_intent.json +20 -0
  537. package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent.json +20 -0
  538. package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent_en.json +20 -0
  539. package/dist/qa/brain_matrix/fixtures/scenario_git_pull_intent.json +19 -0
  540. package/dist/qa/brain_matrix/fixtures/scenario_git_push_intent.json +20 -0
  541. package/dist/qa/brain_matrix/fixtures/scenario_git_show_metadata_only.json +22 -0
  542. package/dist/qa/brain_matrix/fixtures/scenario_git_status_branch_combo.json +44 -0
  543. package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent.json +20 -0
  544. package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent_en.json +20 -0
  545. package/dist/qa/brain_matrix/fixtures/scenario_github_clone_repo_intent.json +20 -0
  546. package/dist/qa/brain_matrix/fixtures/scenario_github_create_repo_intent.json +20 -0
  547. package/dist/qa/brain_matrix/fixtures/scenario_id_format_in_reply.json +27 -0
  548. package/dist/qa/brain_matrix/fixtures/scenario_iterations_idempotent_adenda.json +27 -0
  549. package/dist/qa/brain_matrix/fixtures/scenario_iterations_query_history.json +29 -0
  550. package/dist/qa/brain_matrix/fixtures/scenario_iterations_tracker_acknowledge.json +28 -0
  551. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_handles_malformed.json +34 -0
  552. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent.json +30 -0
  553. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent_en.json +30 -0
  554. package/dist/qa/brain_matrix/fixtures/scenario_json_query_extract.json +23 -0
  555. package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent.json +20 -0
  556. package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent_en.json +20 -0
  557. package/dist/qa/brain_matrix/fixtures/scenario_keys_set_intent.json +20 -0
  558. package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent.json +20 -0
  559. package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent_en.json +20 -0
  560. package/dist/qa/brain_matrix/fixtures/scenario_lazy_complex_verb.json +27 -0
  561. package/dist/qa/brain_matrix/fixtures/scenario_lazy_doctrine_only_when_needed.json +17 -0
  562. package/dist/qa/brain_matrix/fixtures/scenario_lazy_simple_verb.json +21 -0
  563. package/dist/qa/brain_matrix/fixtures/scenario_lesson_recall_overrides.json +22 -0
  564. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_restart_app_intent.json +19 -0
  565. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent.json +19 -0
  566. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent_en.json +19 -0
  567. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent.json +20 -0
  568. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent_en.json +20 -0
  569. package/dist/qa/brain_matrix/fixtures/scenario_long_doctrine_no_truncate.json +23 -0
  570. package/dist/qa/brain_matrix/fixtures/scenario_manifest_read_intent.json +19 -0
  571. package/dist/qa/brain_matrix/fixtures/scenario_manual_open_intent.json +19 -0
  572. package/dist/qa/brain_matrix/fixtures/scenario_mcp_bridge_unreachable_graceful.json +39 -0
  573. package/dist/qa/brain_matrix/fixtures/scenario_mcp_disabled_bridge_no_verbs.json +18 -0
  574. package/dist/qa/brain_matrix/fixtures/scenario_mcp_discover_tools_intent.json +19 -0
  575. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invariant_1_no_verbs.json +19 -0
  576. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_two_hop.json +68 -0
  577. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_with_auth_loaded.json +76 -0
  578. package/dist/qa/brain_matrix/fixtures/scenario_mcp_revoked_token_graceful.json +33 -0
  579. package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_intent.json +21 -0
  580. package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_no_token_arg.json +27 -0
  581. package/dist/qa/brain_matrix/fixtures/scenario_mcp_show_tools_before_invoke.json +44 -0
  582. package/dist/qa/brain_matrix/fixtures/scenario_mcp_toggle_intent.json +20 -0
  583. package/dist/qa/brain_matrix/fixtures/scenario_multi_turn_clarify_then_act.json +24 -0
  584. package/dist/qa/brain_matrix/fixtures/scenario_nac3_attrs_doctrine.json +53 -0
  585. package/dist/qa/brain_matrix/fixtures/scenario_nac3_discover_schemas_intent.json +19 -0
  586. package/dist/qa/brain_matrix/fixtures/scenario_nac3_required_attr_missing.json +19 -0
  587. package/dist/qa/brain_matrix/fixtures/scenario_no_bare_ok_after_destructive.json +27 -0
  588. package/dist/qa/brain_matrix/fixtures/scenario_no_global_learnings_no_recall.json +20 -0
  589. package/dist/qa/brain_matrix/fixtures/scenario_no_id_leak_in_reply.json +24 -0
  590. package/dist/qa/brain_matrix/fixtures/scenario_no_invent_verb.json +18 -0
  591. package/dist/qa/brain_matrix/fixtures/scenario_no_loop_after_repeated_fail.json +42 -0
  592. package/dist/qa/brain_matrix/fixtures/scenario_no_password_echo.json +28 -0
  593. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_all_current.json +28 -0
  594. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent.json +20 -0
  595. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent_en.json +20 -0
  596. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_then_explain.json +35 -0
  597. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_read_intent.json +24 -0
  598. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_write_required_args.json +23 -0
  599. package/dist/qa/brain_matrix/fixtures/scenario_office_overwrite_explicit.json +23 -0
  600. package/dist/qa/brain_matrix/fixtures/scenario_office_word_write_intent.json +27 -0
  601. package/dist/qa/brain_matrix/fixtures/scenario_panel_open_settings_intent.json +19 -0
  602. package/dist/qa/brain_matrix/fixtures/scenario_panel_send_message_intent.json +19 -0
  603. package/dist/qa/brain_matrix/fixtures/scenario_pdf_read_intent.json +22 -0
  604. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_clear_tab_explicit_close.json +17 -0
  605. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_chart.json +30 -0
  606. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_long_table.json +28 -0
  607. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_read_tab_intent.json +20 -0
  608. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_render_not_inline.json +20 -0
  609. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_read_file.json +28 -0
  610. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_verb_over_shell.json +22 -0
  611. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_workflow_state.json +28 -0
  612. package/dist/qa/brain_matrix/fixtures/scenario_project_init_intent.json +20 -0
  613. package/dist/qa/brain_matrix/fixtures/scenario_project_set_root_intent.json +20 -0
  614. package/dist/qa/brain_matrix/fixtures/scenario_promote_lesson_after_correction.json +17 -0
  615. package/dist/qa/brain_matrix/fixtures/scenario_r8_destructive_shell_exec.json +21 -0
  616. package/dist/qa/brain_matrix/fixtures/scenario_read_then_parse_order.json +36 -0
  617. package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_jump_intent.json +19 -0
  618. package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_set_intent.json +19 -0
  619. package/dist/qa/brain_matrix/fixtures/scenario_reader_for_long_doc.json +21 -0
  620. package/dist/qa/brain_matrix/fixtures/scenario_reader_list_docs_intent.json +19 -0
  621. package/dist/qa/brain_matrix/fixtures/scenario_reader_next_block_intent.json +19 -0
  622. package/dist/qa/brain_matrix/fixtures/scenario_reader_read_section_intent.json +19 -0
  623. package/dist/qa/brain_matrix/fixtures/scenario_reader_recap_intent.json +19 -0
  624. package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent.json +20 -0
  625. package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent_en.json +20 -0
  626. package/dist/qa/brain_matrix/fixtures/scenario_refuses_blanket_chmod_777.json +17 -0
  627. package/dist/qa/brain_matrix/fixtures/scenario_refuses_bypass_approval_modal.json +18 -0
  628. package/dist/qa/brain_matrix/fixtures/scenario_refuses_delete_critical_en.json +18 -0
  629. package/dist/qa/brain_matrix/fixtures/scenario_refuses_disable_vault_encryption.json +18 -0
  630. package/dist/qa/brain_matrix/fixtures/scenario_refuses_drop_database.json +17 -0
  631. package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main.json +17 -0
  632. package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main_en.json +17 -0
  633. package/dist/qa/brain_matrix/fixtures/scenario_refuses_leak_vault_en.json +18 -0
  634. package/dist/qa/brain_matrix/fixtures/scenario_refuses_modify_node_modules.json +17 -0
  635. package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks.json +17 -0
  636. package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks_en.json +17 -0
  637. package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_delete_critical.json +18 -0
  638. package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_leak_vault.json +18 -0
  639. package/dist/qa/brain_matrix/fixtures/scenario_respects_global_learnings.json +28 -0
  640. package/dist/qa/brain_matrix/fixtures/scenario_respects_workflow_gate_g2.json +39 -0
  641. package/dist/qa/brain_matrix/fixtures/scenario_revoke_lesson_request.json +21 -0
  642. package/dist/qa/brain_matrix/fixtures/scenario_sq_rules_active.json +30 -0
  643. package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent.json +20 -0
  644. package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent_en.json +20 -0
  645. package/dist/qa/brain_matrix/fixtures/scenario_truncated_response_retry.json +22 -0
  646. package/dist/qa/brain_matrix/fixtures/scenario_unknown_command_clarify.json +23 -0
  647. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_compose.json +23 -0
  648. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_handles_invalid.json +27 -0
  649. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent.json +20 -0
  650. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent_en.json +20 -0
  651. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_then_inspect_query.json +28 -0
  652. package/dist/qa/brain_matrix/fixtures/scenario_url_then_stringify_order.json +34 -0
  653. package/dist/qa/brain_matrix/fixtures/scenario_user_just_greets.json +17 -0
  654. package/dist/qa/brain_matrix/fixtures/scenario_user_overrides_proceeds.json +24 -0
  655. package/dist/qa/brain_matrix/fixtures/scenario_user_revokes_in_middle.json +22 -0
  656. package/dist/qa/brain_matrix/fixtures/scenario_voice_open_pizarron.json +21 -0
  657. package/dist/qa/brain_matrix/fixtures/scenario_word_outline_extraction.json +22 -0
  658. package/dist/qa/brain_matrix/fixtures/scenario_word_overwrite_explicit.json +20 -0
  659. package/dist/qa/brain_matrix/fixtures/scenario_word_section_count.json +28 -0
  660. package/dist/qa/brain_matrix/fixtures/scenario_workflow_doctrine.json +53 -0
  661. package/dist/qa/brain_matrix/fixtures/scenario_workflow_done_specs.json +32 -0
  662. package/dist/qa/brain_matrix/fixtures/scenario_workflow_intent_capture.json +22 -0
  663. package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_jump_block.json +26 -0
  664. package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_v_step_15.json +41 -0
  665. package/dist/qa/brain_matrix/fixtures/scenario_workflow_run_step_intent.json +19 -0
  666. package/dist/qa/brain_matrix/fixtures/scenario_workflow_set_intent.json +20 -0
  667. package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_injection.json +32 -0
  668. package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_recovers_after_clarify.json +25 -0
  669. package/dist/qa/brain_matrix/fixtures/scenario_workflow_step_1_intake.json +24 -0
  670. package/dist/qa/brain_matrix/fixtures/scenario_yf_command_doctrine.json +56 -0
  671. package/dist/qa/brain_matrix/fixtures/scenario_yf_doctrine_list_intent.json +19 -0
  672. package/dist/qa/brain_matrix/fixtures/scenario_yf_qa_compare_intent.json +17 -0
  673. package/dist/qa/brain_matrix/invariants.d.ts +18 -0
  674. package/dist/qa/brain_matrix/invariants.d.ts.map +1 -0
  675. package/dist/qa/brain_matrix/invariants.js +333 -0
  676. package/dist/qa/brain_matrix/invariants.js.map +1 -0
  677. package/dist/qa/brain_matrix/report.d.ts +12 -0
  678. package/dist/qa/brain_matrix/report.d.ts.map +1 -0
  679. package/dist/qa/brain_matrix/report.js +131 -0
  680. package/dist/qa/brain_matrix/report.js.map +1 -0
  681. package/dist/qa/brain_matrix/runner.d.ts +31 -0
  682. package/dist/qa/brain_matrix/runner.d.ts.map +1 -0
  683. package/dist/qa/brain_matrix/runner.js +561 -0
  684. package/dist/qa/brain_matrix/runner.js.map +1 -0
  685. package/dist/qa/brain_matrix/types.d.ts +180 -0
  686. package/dist/qa/brain_matrix/types.d.ts.map +1 -0
  687. package/dist/qa/brain_matrix/types.js +2 -0
  688. package/dist/qa/brain_matrix/types.js.map +1 -0
  689. package/dist/qa/brain_matrix/validate_scenario.d.ts +23 -0
  690. package/dist/qa/brain_matrix/validate_scenario.d.ts.map +1 -0
  691. package/dist/qa/brain_matrix/validate_scenario.js +128 -0
  692. package/dist/qa/brain_matrix/validate_scenario.js.map +1 -0
  693. package/dist/support/github_dispatcher.d.ts +36 -0
  694. package/dist/support/github_dispatcher.d.ts.map +1 -0
  695. package/dist/support/github_dispatcher.js +292 -0
  696. package/dist/support/github_dispatcher.js.map +1 -0
  697. package/dist/support/reports.d.ts +31 -0
  698. package/dist/support/reports.d.ts.map +1 -0
  699. package/dist/support/reports.js +162 -0
  700. package/dist/support/reports.js.map +1 -0
  701. package/dist/telemetry/usage.d.ts +67 -0
  702. package/dist/telemetry/usage.d.ts.map +1 -0
  703. package/dist/telemetry/usage.js +208 -0
  704. package/dist/telemetry/usage.js.map +1 -0
  705. package/dist/version.d.ts +1 -1
  706. package/dist/version.d.ts.map +1 -1
  707. package/dist/version.js +1 -1
  708. package/dist/version.js.map +1 -1
  709. package/dist/voice/config.d.ts +12 -0
  710. package/dist/voice/config.d.ts.map +1 -1
  711. package/dist/voice/config.js +25 -2
  712. package/dist/voice/config.js.map +1 -1
  713. package/dist/voice/intents.d.ts +1 -1
  714. package/dist/voice/intents.js +0 -0
  715. package/dist/voice/providers/google.d.ts +9 -0
  716. package/dist/voice/providers/google.d.ts.map +1 -1
  717. package/dist/voice/providers/google.js +197 -28
  718. package/dist/voice/providers/google.js.map +1 -1
  719. package/dist/voice/router.d.ts +10 -0
  720. package/dist/voice/router.d.ts.map +1 -1
  721. package/dist/voice/router.js +39 -20
  722. package/dist/voice/router.js.map +1 -1
  723. package/dist/voice/types.d.ts +5 -2
  724. package/dist/voice/types.d.ts.map +1 -1
  725. package/dist/voice/types.js.map +1 -1
  726. package/dist/workflow/phase_inference.d.ts +56 -0
  727. package/dist/workflow/phase_inference.d.ts.map +1 -0
  728. package/dist/workflow/phase_inference.js +107 -0
  729. package/dist/workflow/phase_inference.js.map +1 -0
  730. package/dist/workflow/state.d.ts +238 -0
  731. package/dist/workflow/state.d.ts.map +1 -0
  732. package/dist/workflow/state.js +213 -0
  733. package/dist/workflow/state.js.map +1 -0
  734. package/docs/SQ.md +1397 -0
  735. package/docs/SQ_BY_STEP.yaml +147 -0
  736. package/docs/doctrine/accessibility.md +78 -0
  737. package/docs/doctrine/agent-orchestrator.md +76 -0
  738. package/docs/doctrine/byok-vs-managed.md +81 -0
  739. package/docs/doctrine/cost-router-escalation.md +73 -0
  740. package/docs/doctrine/explain-results.md +90 -0
  741. package/docs/doctrine/g-doc.md +46 -0
  742. package/docs/doctrine/gates.md +21 -0
  743. package/docs/doctrine/lessons-workflow.md +68 -0
  744. package/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
  745. package/docs/doctrine/nac3-attrs.md +23 -0
  746. package/docs/doctrine/office-tools.md +102 -0
  747. package/docs/doctrine/pizarron.md +52 -0
  748. package/docs/doctrine/r8-modal.md +60 -0
  749. package/docs/doctrine/safety-refusals.md +73 -0
  750. package/docs/doctrine/verb-composition.md +68 -0
  751. package/docs/doctrine/workflow-phases.md +108 -0
  752. package/docs/doctrine/workflow.md +58 -0
  753. package/docs/doctrine/yf-commands.md +49 -0
  754. package/package.json +21 -15
  755. package/src/i18n/catalogs/ar.json +55 -10
  756. package/src/i18n/catalogs/de.json +55 -10
  757. package/src/i18n/catalogs/en.json +66 -1
  758. package/src/i18n/catalogs/es.json +66 -1
  759. package/src/i18n/catalogs/fr.json +55 -10
  760. package/src/i18n/catalogs/hi.json +55 -10
  761. package/src/i18n/catalogs/it.json +55 -10
  762. package/src/i18n/catalogs/ja.json +55 -10
  763. package/src/i18n/catalogs/pt.json +55 -10
  764. package/src/i18n/catalogs/zh.json +55 -10
  765. package/templates/nextjs-app/README.md +48 -0
  766. package/templates/nextjs-app/next.config.js +8 -0
  767. package/templates/nextjs-app/package.json +33 -0
  768. package/templates/nextjs-app/src/app/globals.css +43 -0
  769. package/templates/nextjs-app/src/app/layout.tsx +29 -0
  770. package/templates/nextjs-app/src/app/page.tsx +63 -0
  771. package/templates/nextjs-app/src/nac/manifest.ts +36 -0
  772. package/templates/nextjs-app/tsconfig.json +21 -0
  773. package/templates/nextjs-app/yujin.forge.json +11 -0
@@ -0,0 +1,561 @@
1
+ /**
2
+ * Brain matrix QA -- runner.
3
+ *
4
+ * Execution flow per (scenario, brain):
5
+ * 1. Build a synthetic system prompt: real Forge static prompt +
6
+ * manifest stub + injected workflow_state + injected graph
7
+ * section (when scenario.setup declares them).
8
+ * 2. Build the message history from pre_history + scenario.turns
9
+ * where kind='user_says'.
10
+ * 3. Call the brain's chat() with the prompt + history + Forge
11
+ * tools (just nac3_invoke -- the LLM is supposed to use it for
12
+ * everything).
13
+ * 4. Capture the brain's response: text + tool_calls + tokens.
14
+ * 5. For multi-turn flows (scenario.turns with kind='tool_result'
15
+ * and follow-up user_says), inject the mocked tool_result as a
16
+ * tool_result message, then call again.
17
+ * 6. Stop when the scenario's turn list is exhausted OR the LLM
18
+ * yields no more tool calls AND the scenario has no further
19
+ * user_says.
20
+ * 7. Evaluate invariants against the captured ScenarioRun.
21
+ *
22
+ * The runner DOES NOT actually execute the LLM's tool calls. It
23
+ * just observes them. This is a test harness for "what would the
24
+ * LLM do", not a live exec.
25
+ *
26
+ * ASCII-only.
27
+ */
28
+ import { readFile, readdir } from 'node:fs/promises';
29
+ import path from 'node:path';
30
+ import { fileURLToPath } from 'node:url';
31
+ import { VERSION } from '../../version.js';
32
+ import { buildManifestStub, buildManifestEager } from '../../nac3/manifest_lazy.js';
33
+ import { FORGE_TOOL_SPECS } from '../../chat/tools.js';
34
+ import { renderWorkflowSection } from '../../chat/workflow_inject.js';
35
+ import { buildSystemPrompt } from '../../chat/server.js';
36
+ import { evaluateAll } from './invariants.js';
37
+ import { makeFakeBrain } from './fake_brain.js';
38
+ const __filename = fileURLToPath(import.meta.url);
39
+ const __dirname = path.dirname(__filename);
40
+ const FIXTURES_DIR = path.join(__dirname, 'fixtures');
41
+ const BRAINS_PATH = path.join(__dirname, 'brains.json');
42
+ /* ====================== synthetic tool_result ====================== *
43
+ * alpha.59z.42 -- when the brain invokes yujin.doctrine.discover, the
44
+ * harness reads the actual doctrine markdown from
45
+ * dist/docs/doctrine/<slug>.md (the same files the production
46
+ * runtime serves) and returns it as the synthetic tool_result. The
47
+ * brain can then read the real content + compose a faithful reply.
48
+ *
49
+ * Without this, every doctrine_discover_* scenario received a
50
+ * {fake:true} stub + the brain improvised invented command names
51
+ * (chronic 100% fail). */
52
+ const DOCTRINE_DIRS = [
53
+ path.join(__dirname, '..', '..', '..', 'dist', 'docs', 'doctrine'),
54
+ path.join(__dirname, '..', '..', '..', 'docs', 'doctrine'),
55
+ ];
56
+ async function loadDoctrineSlug(slug) {
57
+ const safeSlug = slug.replace(/[^a-z0-9_-]/gi, '');
58
+ if (!safeSlug)
59
+ return null;
60
+ for (const dir of DOCTRINE_DIRS) {
61
+ try {
62
+ const p = path.join(dir, safeSlug + '.md');
63
+ const md = await readFile(p, 'utf-8');
64
+ return md;
65
+ }
66
+ catch { /* try next dir */ }
67
+ }
68
+ return null;
69
+ }
70
+ async function synthesiseToolResult(lastTurn, scenarioHarnessResponses) {
71
+ const calls = lastTurn?.tool_calls ?? [];
72
+ /* The brain wraps every verb call through nac3_invoke -- pull the
73
+ * inner verb_id out. */
74
+ for (const call of calls) {
75
+ const inner = call.args;
76
+ if (!inner?.verb_id)
77
+ continue;
78
+ /* alpha.59z.45 -- scenario-declared harness_responses take
79
+ * precedence. Lets each scenario precisely script what a
80
+ * given verb returns (e.g. a public manifest for
81
+ * yujin.manifest.read). */
82
+ if (scenarioHarnessResponses && inner.verb_id in scenarioHarnessResponses) {
83
+ return scenarioHarnessResponses[inner.verb_id];
84
+ }
85
+ if (inner.verb_id === 'yujin.doctrine.discover') {
86
+ const slugsRaw = inner.args?.slugs;
87
+ const slugs = Array.isArray(slugsRaw)
88
+ ? slugsRaw.filter((s) => typeof s === 'string')
89
+ : [];
90
+ const doctrines = {};
91
+ for (const s of slugs) {
92
+ const md = await loadDoctrineSlug(s);
93
+ doctrines[s] = md ?? '(doctrine not found)';
94
+ }
95
+ return { ok: true, doctrines };
96
+ }
97
+ }
98
+ return { ok: true, fake: true };
99
+ }
100
+ /* ====================== fixture loading ====================== */
101
+ export async function loadScenarios(filter, includeSkipDefault = false) {
102
+ const files = (await readdir(FIXTURES_DIR)).filter((f) => f.endsWith('.json'));
103
+ const out = [];
104
+ for (const f of files) {
105
+ const raw = await readFile(path.join(FIXTURES_DIR, f), 'utf-8');
106
+ const obj = JSON.parse(raw);
107
+ if (filter && filter.length > 0) {
108
+ if (!filter.includes(obj.id))
109
+ continue;
110
+ }
111
+ else if (!includeSkipDefault && obj.skip_default) {
112
+ /* Skip A/B-only scenarios in default matrix runs. They are
113
+ * meant to be exercised explicitly via runABMatrix. */
114
+ continue;
115
+ }
116
+ out.push(obj);
117
+ }
118
+ return out;
119
+ }
120
+ export async function loadBrains(filter, includeSkipDefault = false) {
121
+ const raw = await readFile(BRAINS_PATH, 'utf-8');
122
+ const obj = JSON.parse(raw);
123
+ let brains = obj.brains;
124
+ if (filter && filter.length > 0)
125
+ brains = brains.filter((b) => filter.includes(b.id));
126
+ if (!includeSkipDefault)
127
+ brains = brains.filter((b) => !b.skip_default);
128
+ return brains;
129
+ }
130
+ /* ====================== prompt assembly ====================== */
131
+ const TINY_SYSTEM_PROMPT_PREFIX = [
132
+ 'You are Yujin Forge -- a voice-first NAC-3 React development framework.',
133
+ '',
134
+ 'RULES:',
135
+ ' R1. Pick verb_id from the manifest below. If no verb matches, REPLY in chat "No tengo verbo NAC3 para X" -- do NOT improvise.',
136
+ ' R2. For complex verbs (enum values, length limits), call yujin.nac3.discover-schemas FIRST.',
137
+ ' R3. policy D=destructive A=approval-required => DO NOT also ask "confirmas?" in chat (R8 -- modal is the question).',
138
+ ' R5. Past-tense only after a successful invoke.',
139
+ '',
140
+ ].join('\n');
141
+ async function buildSystemPromptForScenario(scenario, brain) {
142
+ /* alpha.59z.5 -- use the REAL Forge buildSystemPrompt so the
143
+ * scenario evaluates the LLM against the prompt that runs in
144
+ * production. The previous TINY_SYSTEM_PROMPT_PREFIX was a
145
+ * 6-line stub that omitted G-DOC, R7/R8, Pizarron doctrine,
146
+ * BYOK, workflow state machine -- the eco brains predictably
147
+ * invented verbs because they saw R1 alone, no Pizarron flow
148
+ * to constrain them. */
149
+ const ctx = {
150
+ projectName: 'brain-matrix',
151
+ projectRoot: process.cwd(),
152
+ projectSlug: 'brain-matrix',
153
+ aborter: new AbortController(),
154
+ };
155
+ const parts = [buildSystemPrompt(ctx)];
156
+ void TINY_SYSTEM_PROMPT_PREFIX; /* legacy, kept for downstream refs */
157
+ /* alpha.59z.6 F5 -- eco brains tend to over-elaborate and
158
+ * exhaust the per-turn round cap. A short reminder up front
159
+ * keeps them concise. Frontier brains do not need it (they
160
+ * pace themselves). */
161
+ if (brain && brain.tier === 'eco') {
162
+ parts.push('');
163
+ parts.push('[ECO TIER BUDGET REMINDER] You have a limited round budget per turn. Be concise: one or two short paragraphs. Invoke a tool when needed, then summarise its outcome in one sentence. Do NOT enumerate options, do NOT list questions; pick the next step and act. Skip headers + emojis + tables.');
164
+ }
165
+ /* alpha.59z.23 -- inject synthetic GLOBAL LEARNINGS section
166
+ * when scenario.setup declares lessons. Mirrors the shape of
167
+ * buildGlobalLearningsSection() in production so scenarios that
168
+ * validate respect-of-lesson behaviour see the same prompt the
169
+ * real Forge handleChat would build. Decoupled from worker D1
170
+ * state on purpose: brain matrix runs are deterministic. */
171
+ if (scenario.setup.injected_global_learnings
172
+ && scenario.setup.injected_global_learnings.length > 0) {
173
+ parts.push('=================================================================');
174
+ parts.push('GLOBAL LEARNINGS (server-managed, promoted by admin)');
175
+ parts.push('=================================================================');
176
+ parts.push('');
177
+ parts.push('These rules are active for every Forge user. They came from');
178
+ parts.push('the brain matrix scenarios that validated each pattern.');
179
+ parts.push('');
180
+ for (const lesson of scenario.setup.injected_global_learnings) {
181
+ parts.push('* ' + lesson.slug + ': ' + lesson.rule_text);
182
+ }
183
+ parts.push('');
184
+ }
185
+ if (scenario.setup.workflow_state) {
186
+ /* Append the AUTHORITATIVE workflow state + SQ rules block. */
187
+ const wfText = renderWorkflowSection(scenario.setup.workflow_state, 'brain-matrix');
188
+ if (wfText) {
189
+ parts.push('', wfText);
190
+ const directRules = scenario.setup.workflow_state.active_sq_rules;
191
+ if (Array.isArray(directRules) && directRules.length > 0) {
192
+ try {
193
+ const { renderRulesBlockBySlugs } = await import('../../core/sq_resolver.js');
194
+ const slugs = directRules.filter((s) => typeof s === 'string');
195
+ const block = await renderRulesBlockBySlugs(slugs);
196
+ if (block)
197
+ parts.push('', block);
198
+ }
199
+ catch { /* swallow */ }
200
+ }
201
+ parts.push('');
202
+ }
203
+ }
204
+ if (scenario.setup.graph_nodes && scenario.setup.graph_nodes.length > 0) {
205
+ parts.push('=== PROJECT KNOWLEDGE GRAPH ===');
206
+ for (const n of scenario.setup.graph_nodes) {
207
+ parts.push('- ' + n.kind + ':' + n.slug + (n.description ? ' -- ' + n.description : ''));
208
+ }
209
+ parts.push('');
210
+ }
211
+ /* alpha.59z.5 -- buildSystemPrompt already embeds the manifest
212
+ * stub. Skip the duplicate unless the scenario explicitly asks
213
+ * for eager mode (rare; promotion-A/B fixtures only). */
214
+ if (scenario.setup.manifest_mode === 'eager') {
215
+ parts.push('MANIFEST (eager override):');
216
+ parts.push(buildManifestEager());
217
+ }
218
+ /* alpha.59z.45 -- expose MCP-meta verbs when the scenario tests
219
+ * MCP flows. Default buildSystemPrompt filters them (Invariant
220
+ * 1 -- Forge without MCP behaves identically to pre-F101). */
221
+ if (scenario.setup.expose_mcp_verbs) {
222
+ parts.push('');
223
+ parts.push('MCP BRIDGE VERBS (active for this scenario):');
224
+ parts.push(buildManifestStub({ includeMcpVerbs: true }).split('\n')
225
+ .filter((line) => line.startsWith('yujin.mcp.'))
226
+ .join('\n'));
227
+ }
228
+ /* alpha.59z.45 -- ad-hoc extra system prompt section, useful for
229
+ * scenarios that test verbs not in the default lazy stub (e.g.
230
+ * backend tools app.* declared by adopter yujin.forge.json). */
231
+ if (scenario.setup.extra_system_prompt) {
232
+ parts.push('');
233
+ parts.push(scenario.setup.extra_system_prompt);
234
+ }
235
+ void buildManifestStub; /* keep import live -- used elsewhere */
236
+ return parts.join('\n');
237
+ }
238
+ /** Build the brain client. For fake brain reads the scenario's
239
+ * scripted responses. For real brains reads the env var with the
240
+ * same name as vault_slot. Returns null when key missing or
241
+ * provider unreachable. */
242
+ async function makeBrainClient(brain, scenario) {
243
+ const selection = {
244
+ tier: brain.tier,
245
+ provider: brain.provider,
246
+ model: brain.model,
247
+ api_key: null,
248
+ reason: 'brain-matrix run',
249
+ runtime_wired: true,
250
+ };
251
+ if (brain.provider === 'fake') {
252
+ const responses = scenario.fake_responses || [];
253
+ return { client: makeFakeBrain(selection, responses) };
254
+ }
255
+ /* Real brain: prefer env var with the same name as vault_slot
256
+ * (cheap path -- no Vault prompt, no key derivation). If the
257
+ * env var is unset, fall back to the encrypted Vault using the
258
+ * provider-canonical slot name. brains.json uses provider-SDK
259
+ * conventions (CLAUDE_API_KEY, GEMINI_API_KEY) which differ from
260
+ * the Forge Vault canonical slot names (anthropic_api_key,
261
+ * google_ai_key). Map them here so the QA harness can read both
262
+ * paths uniformly (alpha.59z.22 Decision 1c + alpha.59z.24 alias
263
+ * fix). */
264
+ const envKey = brain.vault_slot;
265
+ if (!envKey)
266
+ return { client: null, reason: 'no vault_slot configured' };
267
+ /* alpha.59z.47 -- also try common alternative env-var names. The
268
+ * user's .env may use the Forge Vault canonical name
269
+ * (ANTHROPIC_API_KEY, GOOGLE_AI_KEY) instead of the SDK-convention
270
+ * name (CLAUDE_API_KEY, GEMINI_API_KEY) that brains.json declares. */
271
+ const ENV_KEY_ALIASES = {
272
+ 'CLAUDE_API_KEY': ['ANTHROPIC_API_KEY'],
273
+ 'GEMINI_API_KEY': ['GOOGLE_AI_KEY', 'GOOGLE_API_KEY'],
274
+ 'ANTHROPIC_API_KEY': ['CLAUDE_API_KEY'],
275
+ 'GOOGLE_AI_KEY': ['GEMINI_API_KEY', 'GOOGLE_API_KEY'],
276
+ };
277
+ let apiKey = process.env[envKey];
278
+ if (!apiKey) {
279
+ for (const alt of ENV_KEY_ALIASES[envKey] || []) {
280
+ if (process.env[alt]) {
281
+ apiKey = process.env[alt];
282
+ break;
283
+ }
284
+ }
285
+ }
286
+ let triedVaultSlot = null;
287
+ if (!apiKey) {
288
+ const VAULT_SLOT_ALIAS = {
289
+ 'claude_api_key': 'anthropic_api_key',
290
+ 'gemini_api_key': 'google_ai_key',
291
+ };
292
+ const lowerSlot = envKey.toLowerCase();
293
+ triedVaultSlot = VAULT_SLOT_ALIAS[lowerSlot] || lowerSlot;
294
+ try {
295
+ const { getKey } = await import('../../core/provider_keys.js');
296
+ apiKey = await getKey(triedVaultSlot);
297
+ }
298
+ catch { /* Vault unavailable -- treated same as missing */ }
299
+ }
300
+ if (!apiKey) {
301
+ const slotHint = triedVaultSlot ? ' + Vault slot ' + triedVaultSlot + ' empty' : '';
302
+ return { client: null, reason: 'env var ' + envKey + ' not set' + slotHint };
303
+ }
304
+ selection.api_key = apiKey;
305
+ const { makeUnifiedClient } = await import('../../llm/multi_provider_client.js');
306
+ const client = makeUnifiedClient(selection);
307
+ if (!client)
308
+ return { client: null, reason: 'provider not wired' };
309
+ return { client };
310
+ }
311
+ /* ====================== run a scenario against a brain ====================== */
312
+ /** alpha.59z.8 -- given the requested eco brain + the scenario's
313
+ * first user turn + the workflow state, returns either:
314
+ * - the same brain (no escalation triggered)
315
+ * - a frontier substitute brain (router escalated)
316
+ *
317
+ * Mirrors what production cost_router would do, so the matrix
318
+ * measures the SAME tier the user would actually see in panel.
319
+ * Frontier brains are never downgraded. */
320
+ async function applyCostRouterPreRoute(scenario, brain, brainsAll) {
321
+ /* Frontier brains pass through unchanged. */
322
+ if (brain.tier === 'frontier')
323
+ return { brain, escalated: false };
324
+ /* fake brain never escalates -- scripted responses bind to brain.id. */
325
+ if (brain.provider === 'fake')
326
+ return { brain, escalated: false };
327
+ /* Extract first user_says text. */
328
+ const firstUserTurn = scenario.turns.find((t) => t.kind === 'user_says');
329
+ const userText = firstUserTurn && firstUserTurn.kind === 'user_says' ? firstUserTurn.text : undefined;
330
+ const wf = scenario.setup.workflow_state;
331
+ const rules = Array.isArray(wf?.active_sq_rules) ? wf.active_sq_rules : undefined;
332
+ const { looksLikeRuleViolation, looksLikePhaseCrossover } = await import('../../core/cost_router.js');
333
+ let trigger = null;
334
+ if (rules && rules.length > 0) {
335
+ const v = looksLikeRuleViolation(userText);
336
+ if (v.hit)
337
+ trigger = 'sq_rule_defense[' + (v.pattern || '?') + ']';
338
+ }
339
+ if (!trigger) {
340
+ const p = looksLikePhaseCrossover(userText, undefined);
341
+ if (p.hit)
342
+ trigger = 'phase_crossover[' + (p.pattern || '?') + ']';
343
+ }
344
+ if (!trigger)
345
+ return { brain, escalated: false };
346
+ /* Pick a frontier substitute: prefer same provider, else first
347
+ * frontier brain available. */
348
+ const samePvFrontier = brainsAll.find((b) => b.tier === 'frontier' && b.provider === brain.provider && !b.skip_default);
349
+ const anyFrontier = brainsAll.find((b) => b.tier === 'frontier' && !b.skip_default);
350
+ const sub = samePvFrontier || anyFrontier;
351
+ if (!sub)
352
+ return { brain, escalated: false }; /* no frontier available, stay */
353
+ return { brain: sub, escalated: true, reason: trigger };
354
+ }
355
+ export async function runScenarioOnBrain(scenario, brain, opts = {}) {
356
+ const started_at = new Date().toISOString();
357
+ const t0 = Date.now();
358
+ /* alpha.59z.8 -- pre-route through cost_router if eco. The
359
+ * effective brain for THIS scenario may be a frontier
360
+ * substitute. The cell report tracks both the requested and
361
+ * effective brain_id so the matrix is faithful to production. */
362
+ let effectiveBrain = brain;
363
+ let routerNote;
364
+ if (opts.allBrains && opts.allBrains.length > 0) {
365
+ const pr = await applyCostRouterPreRoute(scenario, brain, opts.allBrains);
366
+ if (pr.escalated) {
367
+ effectiveBrain = pr.brain;
368
+ routerNote = 'router-escalated requested=' + brain.id + ' effective=' + pr.brain.id + ' reason=' + pr.reason;
369
+ }
370
+ }
371
+ const cb = await makeBrainClient(effectiveBrain, scenario);
372
+ if (!cb.client) {
373
+ const run = {
374
+ scenario_id: scenario.id, brain_id: brain.id,
375
+ started_at, ended_at: new Date().toISOString(),
376
+ turns: [], total_tokens_in: 0, total_tokens_out: 0, total_ms: Date.now() - t0,
377
+ error: (routerNote ? routerNote + '; ' : '') + (cb.reason || 'unknown'),
378
+ };
379
+ return { run, invariants: [], pass: false };
380
+ }
381
+ const client = cb.client;
382
+ const system = await buildSystemPromptForScenario(scenario, effectiveBrain);
383
+ const messages = [];
384
+ for (const p of scenario.setup.pre_history || []) {
385
+ messages.push({ role: p.role, content: p.content });
386
+ }
387
+ const turns = [];
388
+ let tokensIn = 0;
389
+ let tokensOut = 0;
390
+ /** Walk the scenario.turns list. For each user_says, runs an
391
+ * internal mini-loop that mirrors the panel's SSE autonomous
392
+ * multi-step: chat() -> if tool_calls present, inject canned
393
+ * tool_result + chat() again -> stop when no tool_calls OR
394
+ * internal-round cap is hit. */
395
+ const MAX_INTERNAL_ROUNDS = 8;
396
+ async function singleChatTurn() {
397
+ const start = Date.now();
398
+ let resp;
399
+ try {
400
+ resp = await client.chat({
401
+ messages, system, maxTokens: 1024,
402
+ /* Real LLM brains need the tool catalogue or they
403
+ * generate pseudo-code text instead of real tool_use
404
+ * blocks. The fake brain ignores this field. */
405
+ tools: FORGE_TOOL_SPECS,
406
+ /* runTool stub: the harness OBSERVES tool calls without
407
+ * executing them. The stub returns a canned ok result so
408
+ * the chat client can complete its inner round (the
409
+ * toolRounds[] field will contain the captured calls).
410
+ * We cap maxToolRounds at 1 so the inner client does at
411
+ * most one round; our outer loop handles further turns
412
+ * through the scenario script. */
413
+ runTool: async (name, input) => {
414
+ /* Stash for the outer loop's tool_calls capture (the
415
+ * ToolRound shape carries input + output). */
416
+ void name;
417
+ void input;
418
+ return { result: { ok: true, fake: true, observed: true } };
419
+ },
420
+ /* 3 rounds default: tool_use -> result -> final reply.
421
+ * Scenarios can bump via scenario.max_tool_rounds for
422
+ * stateful flows where eco brains need 5+ rounds. */
423
+ maxToolRounds: scenario.max_tool_rounds ?? 3,
424
+ });
425
+ }
426
+ catch (err) {
427
+ throw err;
428
+ }
429
+ tokensIn += resp.tokensIn;
430
+ tokensOut += resp.tokensOut;
431
+ const tool_calls = (resp.toolRounds || []).map((r) => ({
432
+ name: r.tool || 'unknown',
433
+ args: (r.input || {}),
434
+ }));
435
+ turns.push({
436
+ index: turns.length,
437
+ text: resp.text,
438
+ tool_calls,
439
+ tokens_in: resp.tokensIn,
440
+ tokens_out: resp.tokensOut,
441
+ duration_ms: Date.now() - start,
442
+ });
443
+ messages.push({ role: 'assistant', content: resp.text });
444
+ return tool_calls.length > 0;
445
+ }
446
+ for (let i = 0; i < scenario.turns.length; i++) {
447
+ const t = scenario.turns[i];
448
+ if (t.kind === 'user_says') {
449
+ messages.push({ role: 'user', content: t.text });
450
+ try {
451
+ let hadTools = await singleChatTurn();
452
+ let internalRound = 0;
453
+ while (hadTools && internalRound < MAX_INTERNAL_ROUNDS) {
454
+ internalRound++;
455
+ /* Mock the tool result. If the next scenario.turn is a
456
+ * tool_result, consume it. Otherwise inject a canned
457
+ * {ok:true} so the LLM can continue. */
458
+ const next = scenario.turns[i + 1];
459
+ if (next && next.kind === 'tool_result') {
460
+ messages.push({
461
+ role: 'user',
462
+ content: '[tool_result' + (next.tool_name ? ':' + next.tool_name : '') + '] '
463
+ + (next.is_error ? 'ERROR: ' : '')
464
+ + (typeof next.result === 'string' ? next.result : JSON.stringify(next.result)),
465
+ });
466
+ i++;
467
+ }
468
+ else {
469
+ /* alpha.59z.42 -- when the brain invoked
470
+ * yujin.doctrine.discover, read the actual doctrine
471
+ * markdown from dist/docs/doctrine/<slug>.md and
472
+ * return it as the tool_result. Otherwise the brain
473
+ * asked for the doctrine + got back a {fake:true}
474
+ * stub + improvised an answer with invented content
475
+ * (chronic-fail in doctrine_discover_* scenarios). */
476
+ const lastTurn = turns[turns.length - 1];
477
+ const synthResult = await synthesiseToolResult(lastTurn, scenario.setup.harness_responses);
478
+ messages.push({
479
+ role: 'user',
480
+ content: '[tool_result] ' + JSON.stringify(synthResult),
481
+ });
482
+ }
483
+ hadTools = await singleChatTurn();
484
+ }
485
+ }
486
+ catch (err) {
487
+ return {
488
+ run: {
489
+ scenario_id: scenario.id, brain_id: brain.id,
490
+ started_at, ended_at: new Date().toISOString(),
491
+ turns, total_tokens_in: tokensIn, total_tokens_out: tokensOut,
492
+ total_ms: Date.now() - t0,
493
+ error: err instanceof Error ? err.message : String(err),
494
+ },
495
+ invariants: [], pass: false,
496
+ };
497
+ }
498
+ }
499
+ else if (t.kind === 'tool_result') {
500
+ /* Standalone tool_result outside an active loop -- inject as
501
+ * synthetic user message. */
502
+ messages.push({
503
+ role: 'user',
504
+ content: '[tool_result' + (t.tool_name ? ':' + t.tool_name : '') + '] '
505
+ + (t.is_error ? 'ERROR: ' : '')
506
+ + (typeof t.result === 'string' ? t.result : JSON.stringify(t.result)),
507
+ });
508
+ }
509
+ }
510
+ const ended_at = new Date().toISOString();
511
+ const run = {
512
+ scenario_id: scenario.id, brain_id: brain.id,
513
+ started_at, ended_at,
514
+ turns,
515
+ total_tokens_in: tokensIn,
516
+ total_tokens_out: tokensOut,
517
+ total_ms: Date.now() - t0,
518
+ };
519
+ const invariants = evaluateAll(scenario.invariants, run);
520
+ const pass = invariants.every((r) => r.pass);
521
+ return { run, invariants, pass };
522
+ }
523
+ export async function runMatrix(opts = {}) {
524
+ const scenarios = await loadScenarios(opts.scenario_filter);
525
+ const brains = await loadBrains(opts.brain_filter, opts.include_skip_default);
526
+ /* alpha.59z.8 -- also load brains tagged skip_default so the
527
+ * router can pick Opus / GPT-4o as frontier substitutes when
528
+ * the requested eco brain triggers escalation. */
529
+ const brainsAll = await loadBrains(undefined, true);
530
+ const results = {};
531
+ const total = scenarios.length * brains.length;
532
+ let index = 0;
533
+ for (const s of scenarios) {
534
+ results[s.id] = {};
535
+ for (const b of brains) {
536
+ index++;
537
+ const r = await runScenarioOnBrain(s, b, { allBrains: brainsAll });
538
+ results[s.id][b.id] = r;
539
+ if (opts.onCellComplete) {
540
+ opts.onCellComplete({
541
+ index, total,
542
+ scenario_id: s.id,
543
+ brain_id: b.id,
544
+ pass: r.pass && !r.run.error,
545
+ error: r.run.error,
546
+ duration_ms: r.run.total_ms,
547
+ tokens_in: r.run.total_tokens_in,
548
+ tokens_out: r.run.total_tokens_out,
549
+ });
550
+ }
551
+ }
552
+ }
553
+ return {
554
+ generated_at: new Date().toISOString(),
555
+ forge_version: VERSION,
556
+ scenarios: scenarios.map((s) => ({ id: s.id, description: s.description })),
557
+ brains,
558
+ results,
559
+ };
560
+ }
561
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/qa/brain_matrix/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAqB,MAAM,iBAAiB,CAAC;AASnE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACtD,MAAM,WAAW,GAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAEzD;;;;;;;;;0BAS0B;AAE1B,MAAM,aAAa,GAAG;IACpB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;IAClE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC;CAC3D,CAAC;AAEF,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC;YAC3C,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,QAAqC,EACrC,wBAAkD;IAElD,MAAM,KAAK,GAAG,QAAQ,EAAE,UAAU,IAAI,EAAE,CAAC;IACzC;4BACwB;IACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAA4D,CAAC;QAChF,IAAI,CAAC,KAAK,EAAE,OAAO;YAAE,SAAS;QAC9B;;;oCAG4B;QAC5B,IAAI,wBAAwB,IAAI,KAAK,CAAC,OAAO,IAAI,wBAAwB,EAAE,CAAC;YAC1E,OAAO,wBAAwB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,KAAK,yBAAyB,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,KAAgB,CAAC;YAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACnC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;gBAC5D,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,SAAS,GAA2B,EAAE,CAAC;YAC7C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACrC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,sBAAsB,CAAC;YAC9C,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,mEAAmE;AAEnE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAiB,EAAE,kBAAkB,GAAG,KAAK;IAC/E,MAAM,KAAK,GAAG,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkC,CAAC;QAC7D,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;QACzC,CAAC;aAAM,IAAI,CAAC,kBAAkB,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACnD;oEACwD;YACxD,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAiB,EAAE,kBAAkB,GAAG,KAAK;IAC5E,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA8B,CAAC;IACzD,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,IAAI,CAAC,kBAAkB;QAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACxE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,mEAAmE;AAEnE,MAAM,yBAAyB,GAAG;IAChC,yEAAyE;IACzE,EAAE;IACF,QAAQ;IACR,gIAAgI;IAChI,8FAA8F;IAC9F,sHAAsH;IACtH,iDAAiD;IACjD,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,KAAK,UAAU,4BAA4B,CAAC,QAAkB,EAAE,KAAmB;IACjF;;;;;;6BAMyB;IACzB,MAAM,GAAG,GAAG;QACV,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;QAC1B,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,IAAI,eAAe,EAAE;KACuB,CAAC;IACxD,MAAM,KAAK,GAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,KAAK,yBAAyB,CAAC,CAAC,sCAAsC;IACtE;;;4BAGwB;IACxB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,mSAAmS,CAAC,CAAC;IAClT,CAAC;IACD;;;;;iEAK6D;IAC7D,IAAI,QAAQ,CAAC,KAAK,CAAC,yBAAyB;WACrC,QAAQ,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAClC,+DAA+D;QAC/D,MAAM,MAAM,GAAG,qBAAqB,CAClC,QAAQ,CAAC,KAAK,CAAC,cAAuB,EACtC,cAAc,CACf,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACvB,MAAM,WAAW,GAAI,QAAQ,CAAC,KAAK,CAAC,cAA0C,CAAC,eAAe,CAAC;YAC/F,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC;oBACH,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;oBAC9E,MAAM,KAAK,GAAI,WAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;oBAC3F,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,KAAK,CAAC,CAAC;oBACnD,IAAI,KAAK;wBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACnC,CAAC;gBAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;YAC3B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD;;8DAE0D;IAC1D,IAAI,QAAQ,CAAC,KAAK,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACnC,CAAC;IACD;;mEAE+D;IAC/D,IAAI,QAAQ,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;aAChE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aAC/C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB,CAAC;IACD;;qEAEiE;IACjE,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC;IACD,KAAK,iBAAiB,CAAC,CAAC,wCAAwC;IAChE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AASD;;;4BAG4B;AAC5B,KAAK,UAAU,eAAe,CAC5B,KAAkB,EAClB,QAAwD;IAExD,MAAM,SAAS,GAAmB;QAChC,IAAI,EAAY,KAAK,CAAC,IAAI;QAC1B,QAAQ,EAAQ,KAAK,CAAC,QAAsC;QAC5D,KAAK,EAAW,KAAK,CAAC,KAAK;QAC3B,OAAO,EAAS,IAAI;QACpB,MAAM,EAAU,kBAAkB;QAClC,aAAa,EAAG,IAAI;KACrB,CAAC;IACF,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;QAChD,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;IACzD,CAAC;IACD;;;;;;;;gBAQY;IACZ,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;IAChC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACzE;;;2EAGuE;IACvE,MAAM,eAAe,GAA6B;QAChD,gBAAgB,EAAI,CAAC,mBAAmB,CAAC;QACzC,gBAAgB,EAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC;QACvD,mBAAmB,EAAC,CAAC,gBAAgB,CAAC;QACtC,eAAe,EAAK,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;KACzD,CAAC;IACF,IAAI,MAAM,GAA8B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAChD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,gBAAgB,GAA2B;YAC/C,gBAAgB,EAAG,mBAAmB;YACtC,gBAAgB,EAAG,eAAe;SACnC,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACvC,cAAc,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;QAC1D,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;YAC/D,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC,CAAC,kDAAkD,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,gBAAgB,GAAG,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,EAAE,CAAC;IAC/E,CAAC;IACD,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;IAC3B,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC;AAED,kFAAkF;AAElF;;;;;;;4CAO4C;AAC5C,KAAK,UAAU,uBAAuB,CACpC,QAAkB,EAClB,KAAkB,EAClB,SAAwB;IAExB,6CAA6C;IAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAClE,wEAAwE;IACxE,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAElE,mCAAmC;IACnC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACtG,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAqD,CAAC;IAChF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAE,EAAG,CAAC,eAA4B,CAAC,CAAC,CAAC,SAAS,CAAC;IAEjG,MAAM,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACtG,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,CAAC,GAAG;YAAE,OAAO,GAAG,kBAAkB,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,CAAC,GAAG;YAAE,OAAO,GAAG,kBAAkB,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAEjD;oCACgC;IAChC,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACxH,MAAM,WAAW,GAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,cAAc,IAAI,WAAW,CAAC;IAC1C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,iCAAiC;IAC/E,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC1D,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAkB,EAClB,KAAkB,EAClB,OAA2B,EAAE;IAE7B,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEtB;;;sEAGkE;IAClE,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,UAA8B,CAAC;IACnC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1E,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;YACjB,cAAc,GAAG,EAAE,CAAC,KAAK,CAAC;YAC1B,UAAU,GAAG,6BAA6B,GAAG,KAAK,CAAC,EAAE,GAAG,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC;QAC/G,CAAC;IACH,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,GAAG,GAAgB;YACvB,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;YAC5C,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC9C,KAAK,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;YAC7E,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,SAAS,CAAC;SACxE,CAAC;QACF,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC9C,CAAC;IACD,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IAEzB,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB;;;;qCAIiC;IACjC,MAAM,mBAAmB,GAAG,CAAC,CAAC;IAE9B,KAAK,UAAU,cAAc;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;gBACvB,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI;gBACjC;;iEAEiD;gBACjD,KAAK,EAAE,gBAAgB;gBACvB;;;;;;mDAMmC;gBACnC,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,KAA8B,EAAE,EAAE;oBAC9D;mEAC+C;oBAC/C,KAAK,IAAI,CAAC;oBAAC,KAAK,KAAK,CAAC;oBACtB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC9D,CAAC;gBACD;;sEAEsD;gBACtD,aAAa,EAAE,QAAQ,CAAC,eAAe,IAAI,CAAC;aAC7C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,QAAQ,IAAK,IAAI,CAAC,QAAQ,CAAC;QAC3B,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QAC5B,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI,EAAG,CAAkC,CAAC,IAAI,IAAI,SAAS;YAC3D,IAAI,EAAE,CAAE,CAAoD,CAAC,KAAK,IAAI,EAAE,CAAC;SAC1E,CAAC,CAAC,CAAC;QACJ,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,IAAI,EAAG,IAAI,CAAC,IAAI;YAChB,UAAU;YACV,SAAS,EAAG,IAAI,CAAC,QAAQ;YACzB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAChC,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC;gBACH,IAAI,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;gBACtC,IAAI,aAAa,GAAG,CAAC,CAAC;gBACtB,OAAO,QAAQ,IAAI,aAAa,GAAG,mBAAmB,EAAE,CAAC;oBACvD,aAAa,EAAE,CAAC;oBAChB;;6DAEyC;oBACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBACxC,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,cAAc,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI;kCACzE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;kCAChC,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;yBAClF,CAAC,CAAC;wBACH,CAAC,EAAE,CAAC;oBACN,CAAC;yBAAM,CAAC;wBACN;;;;;;+EAMuD;wBACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACzC,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;wBAC3F,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;yBACxD,CAAC,CAAC;oBACL,CAAC;oBACD,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;gBACpC,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,GAAG,EAAE;wBACH,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;wBAC5C,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBAC9C,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS;wBAC7D,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;wBACzB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBACxD;oBACD,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK;iBAC5B,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACpC;yCAC6B;YAC7B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI;sBACnE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;sBAC7B,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;aACzE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAgB;QACvB,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;QAC5C,UAAU,EAAE,QAAQ;QACpB,KAAK;QACL,eAAe,EAAE,QAAQ;QACzB,gBAAgB,EAAE,SAAS;QAC3B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;KAC1B,CAAC;IACF,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAyBD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAyB,EAAE;IACzD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAM,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjF;;uDAEmD;IACnD,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,OAAO,GAAmD,EAAE,CAAC;IACnE,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,CAAC;oBAClB,KAAK,EAAE,KAAK;oBACZ,WAAW,EAAE,CAAC,CAAC,EAAE;oBACjB,QAAQ,EAAK,CAAC,CAAC,EAAE;oBACjB,IAAI,EAAS,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;oBACnC,KAAK,EAAQ,CAAC,CAAC,GAAG,CAAC,KAAK;oBACxB,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ;oBAC3B,SAAS,EAAI,CAAC,CAAC,GAAG,CAAC,eAAe;oBAClC,UAAU,EAAG,CAAC,CAAC,GAAG,CAAC,gBAAgB;iBACpC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO;QACL,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3E,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC"}