@nac3/forge-cli 0.2.0-alpha.8 → 0.2.1-alpha.60

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 (1052) 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/bridge.d.ts +69 -0
  7. package/dist/agents/bridge.d.ts.map +1 -0
  8. package/dist/agents/bridge.js +295 -0
  9. package/dist/agents/bridge.js.map +1 -0
  10. package/dist/agents/cli_real.d.ts +38 -0
  11. package/dist/agents/cli_real.d.ts.map +1 -0
  12. package/dist/agents/cli_real.js +46 -0
  13. package/dist/agents/cli_real.js.map +1 -0
  14. package/dist/agents/config_resolver.d.ts +16 -0
  15. package/dist/agents/config_resolver.d.ts.map +1 -0
  16. package/dist/agents/config_resolver.js +133 -0
  17. package/dist/agents/config_resolver.js.map +1 -0
  18. package/dist/agents/config_schema.d.ts +42 -0
  19. package/dist/agents/config_schema.d.ts.map +1 -0
  20. package/dist/agents/config_schema.js +220 -0
  21. package/dist/agents/config_schema.js.map +1 -0
  22. package/dist/agents/defaults.d.ts +21 -0
  23. package/dist/agents/defaults.d.ts.map +1 -0
  24. package/dist/agents/defaults.js +56 -0
  25. package/dist/agents/defaults.js.map +1 -0
  26. package/dist/agents/delegate.d.ts +36 -0
  27. package/dist/agents/delegate.d.ts.map +1 -0
  28. package/dist/agents/delegate.js +68 -0
  29. package/dist/agents/delegate.js.map +1 -0
  30. package/dist/agents/iterative_step.d.ts +95 -0
  31. package/dist/agents/iterative_step.d.ts.map +1 -0
  32. package/dist/agents/iterative_step.js +249 -0
  33. package/dist/agents/iterative_step.js.map +1 -0
  34. package/dist/agents/llm_step.d.ts +50 -0
  35. package/dist/agents/llm_step.d.ts.map +1 -0
  36. package/dist/agents/llm_step.js +28 -0
  37. package/dist/agents/llm_step.js.map +1 -0
  38. package/dist/agents/real_step_factory.d.ts +95 -0
  39. package/dist/agents/real_step_factory.d.ts.map +1 -0
  40. package/dist/agents/real_step_factory.js +51 -0
  41. package/dist/agents/real_step_factory.js.map +1 -0
  42. package/dist/agents/runner.d.ts +108 -0
  43. package/dist/agents/runner.d.ts.map +1 -0
  44. package/dist/agents/runner.js +174 -0
  45. package/dist/agents/runner.js.map +1 -0
  46. package/dist/agents/runtime.d.ts +115 -0
  47. package/dist/agents/runtime.d.ts.map +1 -0
  48. package/dist/agents/runtime.js +429 -0
  49. package/dist/agents/runtime.js.map +1 -0
  50. package/dist/agents/store.d.ts +33 -0
  51. package/dist/agents/store.d.ts.map +1 -0
  52. package/dist/agents/store.js +210 -0
  53. package/dist/agents/store.js.map +1 -0
  54. package/dist/agents/system_prompt.d.ts +36 -0
  55. package/dist/agents/system_prompt.d.ts.map +1 -0
  56. package/dist/agents/system_prompt.js +101 -0
  57. package/dist/agents/system_prompt.js.map +1 -0
  58. package/dist/agents/types.d.ts +123 -0
  59. package/dist/agents/types.d.ts.map +1 -0
  60. package/dist/agents/types.js +39 -0
  61. package/dist/agents/types.js.map +1 -0
  62. package/dist/bin/yf.d.ts.map +1 -1
  63. package/dist/bin/yf.js +101 -2
  64. package/dist/bin/yf.js.map +1 -1
  65. package/dist/chat/claude.d.ts +89 -1
  66. package/dist/chat/claude.d.ts.map +1 -1
  67. package/dist/chat/claude.js +170 -30
  68. package/dist/chat/claude.js.map +1 -1
  69. package/dist/chat/claude_cli.d.ts +145 -0
  70. package/dist/chat/claude_cli.d.ts.map +1 -0
  71. package/dist/chat/claude_cli.js +598 -0
  72. package/dist/chat/claude_cli.js.map +1 -0
  73. package/dist/chat/completion_hallucination_detector.d.ts +40 -0
  74. package/dist/chat/completion_hallucination_detector.d.ts.map +1 -0
  75. package/dist/chat/completion_hallucination_detector.js +96 -0
  76. package/dist/chat/completion_hallucination_detector.js.map +1 -0
  77. package/dist/chat/doctrine_digest.d.ts +31 -0
  78. package/dist/chat/doctrine_digest.d.ts.map +1 -0
  79. package/dist/chat/doctrine_digest.js +117 -0
  80. package/dist/chat/doctrine_digest.js.map +1 -0
  81. package/dist/chat/graph_auto_ingest.d.ts +46 -0
  82. package/dist/chat/graph_auto_ingest.d.ts.map +1 -0
  83. package/dist/chat/graph_auto_ingest.js +177 -0
  84. package/dist/chat/graph_auto_ingest.js.map +1 -0
  85. package/dist/chat/graph_component_watcher.d.ts +34 -0
  86. package/dist/chat/graph_component_watcher.d.ts.map +1 -0
  87. package/dist/chat/graph_component_watcher.js +225 -0
  88. package/dist/chat/graph_component_watcher.js.map +1 -0
  89. package/dist/chat/graph_snapshot.d.ts +38 -0
  90. package/dist/chat/graph_snapshot.d.ts.map +1 -0
  91. package/dist/chat/graph_snapshot.js +159 -0
  92. package/dist/chat/graph_snapshot.js.map +1 -0
  93. package/dist/chat/ingest_session.d.ts +24 -4
  94. package/dist/chat/ingest_session.d.ts.map +1 -1
  95. package/dist/chat/ingest_session.js +143 -4
  96. package/dist/chat/ingest_session.js.map +1 -1
  97. package/dist/chat/panel.d.ts.map +1 -1
  98. package/dist/chat/panel.js +9640 -1455
  99. package/dist/chat/panel.js.map +1 -1
  100. package/dist/chat/panel_queue.d.ts +43 -0
  101. package/dist/chat/panel_queue.d.ts.map +1 -0
  102. package/dist/chat/panel_queue.js +46 -0
  103. package/dist/chat/panel_queue.js.map +1 -0
  104. package/dist/chat/project_context_inject.d.ts +10 -0
  105. package/dist/chat/project_context_inject.d.ts.map +1 -0
  106. package/dist/chat/project_context_inject.js +119 -0
  107. package/dist/chat/project_context_inject.js.map +1 -0
  108. package/dist/chat/project_slug.d.ts +17 -0
  109. package/dist/chat/project_slug.d.ts.map +1 -0
  110. package/dist/chat/project_slug.js +103 -0
  111. package/dist/chat/project_slug.js.map +1 -0
  112. package/dist/chat/refusal_detector.d.ts +14 -0
  113. package/dist/chat/refusal_detector.d.ts.map +1 -0
  114. package/dist/chat/refusal_detector.js +138 -0
  115. package/dist/chat/refusal_detector.js.map +1 -0
  116. package/dist/chat/semantic_graph_ingest.d.ts +39 -0
  117. package/dist/chat/semantic_graph_ingest.d.ts.map +1 -0
  118. package/dist/chat/semantic_graph_ingest.js +90 -0
  119. package/dist/chat/semantic_graph_ingest.js.map +1 -0
  120. package/dist/chat/semantic_graph_inject.d.ts +31 -0
  121. package/dist/chat/semantic_graph_inject.d.ts.map +1 -0
  122. package/dist/chat/semantic_graph_inject.js +63 -0
  123. package/dist/chat/semantic_graph_inject.js.map +1 -0
  124. package/dist/chat/server.d.ts +98 -2
  125. package/dist/chat/server.d.ts.map +1 -1
  126. package/dist/chat/server.js +3881 -337
  127. package/dist/chat/server.js.map +1 -1
  128. package/dist/chat/spec_extract.d.ts +1 -2
  129. package/dist/chat/spec_extract.d.ts.map +1 -1
  130. package/dist/chat/spec_extract.js +41 -56
  131. package/dist/chat/spec_extract.js.map +1 -1
  132. package/dist/chat/spec_plan.d.ts +1 -2
  133. package/dist/chat/spec_plan.d.ts.map +1 -1
  134. package/dist/chat/spec_plan.js +36 -57
  135. package/dist/chat/spec_plan.js.map +1 -1
  136. package/dist/chat/tools/app_backend_dispatch.d.ts +39 -0
  137. package/dist/chat/tools/app_backend_dispatch.d.ts.map +1 -0
  138. package/dist/chat/tools/app_backend_dispatch.js +239 -0
  139. package/dist/chat/tools/app_backend_dispatch.js.map +1 -0
  140. package/dist/chat/tools/audit_consumers.d.ts +66 -0
  141. package/dist/chat/tools/audit_consumers.d.ts.map +1 -0
  142. package/dist/chat/tools/audit_consumers.js +231 -0
  143. package/dist/chat/tools/audit_consumers.js.map +1 -0
  144. package/dist/chat/tools/fs_editor.d.ts +11 -0
  145. package/dist/chat/tools/fs_editor.d.ts.map +1 -0
  146. package/dist/chat/tools/fs_editor.js +162 -0
  147. package/dist/chat/tools/fs_editor.js.map +1 -0
  148. package/dist/chat/tools/git.d.ts +24 -0
  149. package/dist/chat/tools/git.d.ts.map +1 -1
  150. package/dist/chat/tools/git.js +78 -0
  151. package/dist/chat/tools/git.js.map +1 -1
  152. package/dist/chat/tools/graph.d.ts +43 -0
  153. package/dist/chat/tools/graph.d.ts.map +1 -0
  154. package/dist/chat/tools/graph.js +174 -0
  155. package/dist/chat/tools/graph.js.map +1 -0
  156. package/dist/chat/tools/keys.d.ts +9 -0
  157. package/dist/chat/tools/keys.d.ts.map +1 -0
  158. package/dist/chat/tools/keys.js +169 -0
  159. package/dist/chat/tools/keys.js.map +1 -0
  160. package/dist/chat/tools/misc_verbs.d.ts +36 -0
  161. package/dist/chat/tools/misc_verbs.d.ts.map +1 -0
  162. package/dist/chat/tools/misc_verbs.js +405 -0
  163. package/dist/chat/tools/misc_verbs.js.map +1 -0
  164. package/dist/chat/tools/nac3_invoke.d.ts +58 -0
  165. package/dist/chat/tools/nac3_invoke.d.ts.map +1 -0
  166. package/dist/chat/tools/nac3_invoke.js +887 -0
  167. package/dist/chat/tools/nac3_invoke.js.map +1 -0
  168. package/dist/chat/tools/pending.d.ts +69 -0
  169. package/dist/chat/tools/pending.d.ts.map +1 -0
  170. package/dist/chat/tools/pending.js +167 -0
  171. package/dist/chat/tools/pending.js.map +1 -0
  172. package/dist/chat/tools/pizarron.d.ts +40 -0
  173. package/dist/chat/tools/pizarron.d.ts.map +1 -0
  174. package/dist/chat/tools/pizarron.js +123 -0
  175. package/dist/chat/tools/pizarron.js.map +1 -0
  176. package/dist/chat/tools/project_lifecycle.d.ts +24 -0
  177. package/dist/chat/tools/project_lifecycle.d.ts.map +1 -0
  178. package/dist/chat/tools/project_lifecycle.js +212 -0
  179. package/dist/chat/tools/project_lifecycle.js.map +1 -0
  180. package/dist/chat/tools/reader.d.ts.map +1 -1
  181. package/dist/chat/tools/reader.js +144 -1
  182. package/dist/chat/tools/reader.js.map +1 -1
  183. package/dist/chat/tools/shell.d.ts +58 -0
  184. package/dist/chat/tools/shell.d.ts.map +1 -0
  185. package/dist/chat/tools/shell.js +253 -0
  186. package/dist/chat/tools/shell.js.map +1 -0
  187. package/dist/chat/tools/wiring.d.ts +28 -0
  188. package/dist/chat/tools/wiring.d.ts.map +1 -0
  189. package/dist/chat/tools/wiring.js +116 -0
  190. package/dist/chat/tools/wiring.js.map +1 -0
  191. package/dist/chat/tools/workflow.d.ts +55 -0
  192. package/dist/chat/tools/workflow.d.ts.map +1 -0
  193. package/dist/chat/tools/workflow.js +463 -0
  194. package/dist/chat/tools/workflow.js.map +1 -0
  195. package/dist/chat/tools.d.ts +42 -0
  196. package/dist/chat/tools.d.ts.map +1 -1
  197. package/dist/chat/tools.js +451 -13
  198. package/dist/chat/tools.js.map +1 -1
  199. package/dist/chat/wiring_inject.d.ts +18 -0
  200. package/dist/chat/wiring_inject.d.ts.map +1 -0
  201. package/dist/chat/wiring_inject.js +78 -0
  202. package/dist/chat/wiring_inject.js.map +1 -0
  203. package/dist/chat/workflow_inject.d.ts +52 -0
  204. package/dist/chat/workflow_inject.d.ts.map +1 -0
  205. package/dist/chat/workflow_inject.js +346 -0
  206. package/dist/chat/workflow_inject.js.map +1 -0
  207. package/dist/chat/yujin_splash.d.ts +27 -0
  208. package/dist/chat/yujin_splash.d.ts.map +1 -0
  209. package/dist/chat/yujin_splash.js +147 -0
  210. package/dist/chat/yujin_splash.js.map +1 -0
  211. package/dist/commands/agent.d.ts +33 -0
  212. package/dist/commands/agent.d.ts.map +1 -0
  213. package/dist/commands/agent.js +281 -0
  214. package/dist/commands/agent.js.map +1 -0
  215. package/dist/commands/approve.d.ts +32 -0
  216. package/dist/commands/approve.d.ts.map +1 -0
  217. package/dist/commands/approve.js +198 -0
  218. package/dist/commands/approve.js.map +1 -0
  219. package/dist/commands/block.d.ts +28 -0
  220. package/dist/commands/block.d.ts.map +1 -0
  221. package/dist/commands/block.js +189 -0
  222. package/dist/commands/block.js.map +1 -0
  223. package/dist/commands/bootstrap.d.ts +35 -0
  224. package/dist/commands/bootstrap.d.ts.map +1 -0
  225. package/dist/commands/bootstrap.js +205 -0
  226. package/dist/commands/bootstrap.js.map +1 -0
  227. package/dist/commands/brain.d.ts +17 -0
  228. package/dist/commands/brain.d.ts.map +1 -0
  229. package/dist/commands/brain.js +129 -0
  230. package/dist/commands/brain.js.map +1 -0
  231. package/dist/commands/chat.d.ts +10 -0
  232. package/dist/commands/chat.d.ts.map +1 -1
  233. package/dist/commands/chat.js +209 -17
  234. package/dist/commands/chat.js.map +1 -1
  235. package/dist/commands/clarify.d.ts +30 -0
  236. package/dist/commands/clarify.d.ts.map +1 -0
  237. package/dist/commands/clarify.js +671 -0
  238. package/dist/commands/clarify.js.map +1 -0
  239. package/dist/commands/director.d.ts +37 -0
  240. package/dist/commands/director.d.ts.map +1 -0
  241. package/dist/commands/director.js +290 -0
  242. package/dist/commands/director.js.map +1 -0
  243. package/dist/commands/discover.d.ts +30 -0
  244. package/dist/commands/discover.d.ts.map +1 -0
  245. package/dist/commands/discover.js +178 -0
  246. package/dist/commands/discover.js.map +1 -0
  247. package/dist/commands/doctor.d.ts +18 -0
  248. package/dist/commands/doctor.d.ts.map +1 -1
  249. package/dist/commands/doctor.js +120 -4
  250. package/dist/commands/doctor.js.map +1 -1
  251. package/dist/commands/doctrine.d.ts +24 -0
  252. package/dist/commands/doctrine.d.ts.map +1 -0
  253. package/dist/commands/doctrine.js +106 -0
  254. package/dist/commands/doctrine.js.map +1 -0
  255. package/dist/commands/doctrines.d.ts +21 -0
  256. package/dist/commands/doctrines.d.ts.map +1 -0
  257. package/dist/commands/doctrines.js +158 -0
  258. package/dist/commands/doctrines.js.map +1 -0
  259. package/dist/commands/graph.d.ts +29 -0
  260. package/dist/commands/graph.d.ts.map +1 -0
  261. package/dist/commands/graph.js +362 -0
  262. package/dist/commands/graph.js.map +1 -0
  263. package/dist/commands/keys_setup.d.ts +18 -0
  264. package/dist/commands/keys_setup.d.ts.map +1 -1
  265. package/dist/commands/keys_setup.js +225 -11
  266. package/dist/commands/keys_setup.js.map +1 -1
  267. package/dist/commands/legacy-audit.d.ts +34 -0
  268. package/dist/commands/legacy-audit.d.ts.map +1 -0
  269. package/dist/commands/legacy-audit.js +270 -0
  270. package/dist/commands/legacy-audit.js.map +1 -0
  271. package/dist/commands/lessons.d.ts +28 -0
  272. package/dist/commands/lessons.d.ts.map +1 -0
  273. package/dist/commands/lessons.js +309 -0
  274. package/dist/commands/lessons.js.map +1 -0
  275. package/dist/commands/license.d.ts.map +1 -1
  276. package/dist/commands/license.js +56 -1
  277. package/dist/commands/license.js.map +1 -1
  278. package/dist/commands/limits.d.ts +15 -0
  279. package/dist/commands/limits.d.ts.map +1 -0
  280. package/dist/commands/limits.js +51 -0
  281. package/dist/commands/limits.js.map +1 -0
  282. package/dist/commands/manifest-cli.d.ts +12 -0
  283. package/dist/commands/manifest-cli.d.ts.map +1 -0
  284. package/dist/commands/manifest-cli.js +42 -0
  285. package/dist/commands/manifest-cli.js.map +1 -0
  286. package/dist/commands/mcp.d.ts +24 -0
  287. package/dist/commands/mcp.d.ts.map +1 -0
  288. package/dist/commands/mcp.js +163 -0
  289. package/dist/commands/mcp.js.map +1 -0
  290. package/dist/commands/mobile.d.ts +15 -0
  291. package/dist/commands/mobile.d.ts.map +1 -1
  292. package/dist/commands/mobile.js +27 -24
  293. package/dist/commands/mobile.js.map +1 -1
  294. package/dist/commands/nac3.d.ts +22 -0
  295. package/dist/commands/nac3.d.ts.map +1 -0
  296. package/dist/commands/nac3.js +125 -0
  297. package/dist/commands/nac3.js.map +1 -0
  298. package/dist/commands/operate.d.ts +22 -0
  299. package/dist/commands/operate.d.ts.map +1 -0
  300. package/dist/commands/operate.js +523 -0
  301. package/dist/commands/operate.js.map +1 -0
  302. package/dist/commands/pending.d.ts +22 -0
  303. package/dist/commands/pending.d.ts.map +1 -0
  304. package/dist/commands/pending.js +341 -0
  305. package/dist/commands/pending.js.map +1 -0
  306. package/dist/commands/qa.d.ts +24 -0
  307. package/dist/commands/qa.d.ts.map +1 -0
  308. package/dist/commands/qa.js +349 -0
  309. package/dist/commands/qa.js.map +1 -0
  310. package/dist/commands/spec.d.ts +38 -0
  311. package/dist/commands/spec.d.ts.map +1 -0
  312. package/dist/commands/spec.js +256 -0
  313. package/dist/commands/spec.js.map +1 -0
  314. package/dist/commands/support.d.ts +22 -0
  315. package/dist/commands/support.d.ts.map +1 -0
  316. package/dist/commands/support.js +165 -0
  317. package/dist/commands/support.js.map +1 -0
  318. package/dist/commands/test_agent.d.ts +22 -0
  319. package/dist/commands/test_agent.d.ts.map +1 -0
  320. package/dist/commands/test_agent.js +100 -0
  321. package/dist/commands/test_agent.js.map +1 -0
  322. package/dist/commands/triage.d.ts +34 -0
  323. package/dist/commands/triage.d.ts.map +1 -0
  324. package/dist/commands/triage.js +228 -0
  325. package/dist/commands/triage.js.map +1 -0
  326. package/dist/commands/vault-inventory.d.ts +30 -0
  327. package/dist/commands/vault-inventory.d.ts.map +1 -0
  328. package/dist/commands/vault-inventory.js +222 -0
  329. package/dist/commands/vault-inventory.js.map +1 -0
  330. package/dist/commands/vault.d.ts.map +1 -1
  331. package/dist/commands/vault.js +5 -0
  332. package/dist/commands/vault.js.map +1 -1
  333. package/dist/commands/voice.d.ts.map +1 -1
  334. package/dist/commands/voice.js +47 -4
  335. package/dist/commands/voice.js.map +1 -1
  336. package/dist/commands/wiring.d.ts +19 -0
  337. package/dist/commands/wiring.d.ts.map +1 -0
  338. package/dist/commands/wiring.js +135 -0
  339. package/dist/commands/wiring.js.map +1 -0
  340. package/dist/commands/workflow-coverage.d.ts +30 -0
  341. package/dist/commands/workflow-coverage.d.ts.map +1 -0
  342. package/dist/commands/workflow-coverage.js +138 -0
  343. package/dist/commands/workflow-coverage.js.map +1 -0
  344. package/dist/core/ansi_strip.d.ts +39 -0
  345. package/dist/core/ansi_strip.d.ts.map +1 -0
  346. package/dist/core/ansi_strip.js +71 -0
  347. package/dist/core/ansi_strip.js.map +1 -0
  348. package/dist/core/atomic_write.d.ts +17 -0
  349. package/dist/core/atomic_write.d.ts.map +1 -0
  350. package/dist/core/atomic_write.js +51 -0
  351. package/dist/core/atomic_write.js.map +1 -0
  352. package/dist/core/audit_log.d.ts +43 -0
  353. package/dist/core/audit_log.d.ts.map +1 -0
  354. package/dist/core/audit_log.js +80 -0
  355. package/dist/core/audit_log.js.map +1 -0
  356. package/dist/core/brain_config.d.ts +50 -0
  357. package/dist/core/brain_config.d.ts.map +1 -0
  358. package/dist/core/brain_config.js +142 -0
  359. package/dist/core/brain_config.js.map +1 -0
  360. package/dist/core/budget.d.ts +96 -0
  361. package/dist/core/budget.d.ts.map +1 -0
  362. package/dist/core/budget.js +328 -0
  363. package/dist/core/budget.js.map +1 -0
  364. package/dist/core/cost_meter.d.ts +35 -0
  365. package/dist/core/cost_meter.d.ts.map +1 -0
  366. package/dist/core/cost_meter.js +111 -0
  367. package/dist/core/cost_meter.js.map +1 -0
  368. package/dist/core/cost_router.d.ts +106 -0
  369. package/dist/core/cost_router.d.ts.map +1 -0
  370. package/dist/core/cost_router.js +589 -0
  371. package/dist/core/cost_router.js.map +1 -0
  372. package/dist/core/doctrine_resolver.d.ts +23 -0
  373. package/dist/core/doctrine_resolver.d.ts.map +1 -0
  374. package/dist/core/doctrine_resolver.js +108 -0
  375. package/dist/core/doctrine_resolver.js.map +1 -0
  376. package/dist/core/error_catalog.d.ts +80 -0
  377. package/dist/core/error_catalog.d.ts.map +1 -0
  378. package/dist/core/error_catalog.js +168 -0
  379. package/dist/core/error_catalog.js.map +1 -0
  380. package/dist/core/error_formatter.d.ts +30 -0
  381. package/dist/core/error_formatter.d.ts.map +1 -0
  382. package/dist/core/error_formatter.js +155 -0
  383. package/dist/core/error_formatter.js.map +1 -0
  384. package/dist/core/incomplete_detector.d.ts +51 -0
  385. package/dist/core/incomplete_detector.d.ts.map +1 -0
  386. package/dist/core/incomplete_detector.js +140 -0
  387. package/dist/core/incomplete_detector.js.map +1 -0
  388. package/dist/core/keys_envelope.d.ts.map +1 -1
  389. package/dist/core/keys_envelope.js +14 -9
  390. package/dist/core/keys_envelope.js.map +1 -1
  391. package/dist/core/learnings_client.d.ts +104 -0
  392. package/dist/core/learnings_client.d.ts.map +1 -0
  393. package/dist/core/learnings_client.js +262 -0
  394. package/dist/core/learnings_client.js.map +1 -0
  395. package/dist/core/limits_config.d.ts +76 -0
  396. package/dist/core/limits_config.d.ts.map +1 -0
  397. package/dist/core/limits_config.js +297 -0
  398. package/dist/core/limits_config.js.map +1 -0
  399. package/dist/core/pairing.d.ts +1 -0
  400. package/dist/core/pairing.d.ts.map +1 -1
  401. package/dist/core/pairing.js +23 -12
  402. package/dist/core/pairing.js.map +1 -1
  403. package/dist/core/pilot_setup.d.ts +29 -3
  404. package/dist/core/pilot_setup.d.ts.map +1 -1
  405. package/dist/core/pilot_setup.js +130 -3
  406. package/dist/core/pilot_setup.js.map +1 -1
  407. package/dist/core/provider_keys.d.ts +35 -0
  408. package/dist/core/provider_keys.d.ts.map +1 -0
  409. package/dist/core/provider_keys.js +267 -0
  410. package/dist/core/provider_keys.js.map +1 -0
  411. package/dist/core/provider_models.d.ts +27 -0
  412. package/dist/core/provider_models.d.ts.map +1 -0
  413. package/dist/core/provider_models.js +169 -0
  414. package/dist/core/provider_models.js.map +1 -0
  415. package/dist/core/reasoning_gate.d.ts +72 -0
  416. package/dist/core/reasoning_gate.d.ts.map +1 -0
  417. package/dist/core/reasoning_gate.js +205 -0
  418. package/dist/core/reasoning_gate.js.map +1 -0
  419. package/dist/core/shell_classifier.d.ts +49 -0
  420. package/dist/core/shell_classifier.d.ts.map +1 -0
  421. package/dist/core/shell_classifier.js +159 -0
  422. package/dist/core/shell_classifier.js.map +1 -0
  423. package/dist/core/sq_resolver.d.ts +14 -0
  424. package/dist/core/sq_resolver.d.ts.map +1 -0
  425. package/dist/core/sq_resolver.js +230 -0
  426. package/dist/core/sq_resolver.js.map +1 -0
  427. package/dist/core/truncation_detector.d.ts +68 -0
  428. package/dist/core/truncation_detector.d.ts.map +1 -0
  429. package/dist/core/truncation_detector.js +115 -0
  430. package/dist/core/truncation_detector.js.map +1 -0
  431. package/dist/core/turn_classifier.d.ts +70 -0
  432. package/dist/core/turn_classifier.d.ts.map +1 -0
  433. package/dist/core/turn_classifier.js +324 -0
  434. package/dist/core/turn_classifier.js.map +1 -0
  435. package/dist/core/vad_config.d.ts +34 -0
  436. package/dist/core/vad_config.d.ts.map +1 -0
  437. package/dist/core/vad_config.js +95 -0
  438. package/dist/core/vad_config.js.map +1 -0
  439. package/dist/core/whats_new.d.ts +42 -0
  440. package/dist/core/whats_new.d.ts.map +1 -0
  441. package/dist/core/whats_new.js +214 -0
  442. package/dist/core/whats_new.js.map +1 -0
  443. package/dist/core/wizard_state.d.ts +15 -0
  444. package/dist/core/wizard_state.d.ts.map +1 -0
  445. package/dist/core/wizard_state.js +86 -0
  446. package/dist/core/wizard_state.js.map +1 -0
  447. package/dist/deploy/adapter.d.ts +93 -0
  448. package/dist/deploy/adapter.d.ts.map +1 -0
  449. package/dist/deploy/adapter.js +42 -0
  450. package/dist/deploy/adapter.js.map +1 -0
  451. package/dist/deploy/aws_adapter.d.ts +28 -0
  452. package/dist/deploy/aws_adapter.d.ts.map +1 -0
  453. package/dist/deploy/aws_adapter.js +98 -0
  454. package/dist/deploy/aws_adapter.js.map +1 -0
  455. package/dist/deploy/cloudflare.d.ts +24 -0
  456. package/dist/deploy/cloudflare.d.ts.map +1 -0
  457. package/dist/deploy/cloudflare.js +169 -0
  458. package/dist/deploy/cloudflare.js.map +1 -0
  459. package/dist/design/yujin_design_resolver.d.ts +77 -0
  460. package/dist/design/yujin_design_resolver.d.ts.map +1 -0
  461. package/dist/design/yujin_design_resolver.js +113 -0
  462. package/dist/design/yujin_design_resolver.js.map +1 -0
  463. package/dist/docs/LIMITED_RESPONSIBILITY.md +216 -0
  464. package/dist/docs/PRIVACY_POLICY.md +169 -0
  465. package/dist/docs/SQ.md +1397 -0
  466. package/dist/docs/SQ_BY_STEP.yaml +147 -0
  467. package/dist/docs/doctrine/accessibility.md +78 -0
  468. package/dist/docs/doctrine/agent-orchestrator.md +76 -0
  469. package/dist/docs/doctrine/byok-vs-managed.md +81 -0
  470. package/dist/docs/doctrine/cost-router-escalation.md +103 -0
  471. package/dist/docs/doctrine/default-design-system.md +120 -0
  472. package/dist/docs/doctrine/explain-results.md +90 -0
  473. package/dist/docs/doctrine/expo-eas-builds.md +177 -0
  474. package/dist/docs/doctrine/g-doc.md +46 -0
  475. package/dist/docs/doctrine/gates.md +21 -0
  476. package/dist/docs/doctrine/language-sovereignty.md +143 -0
  477. package/dist/docs/doctrine/lessons-workflow.md +68 -0
  478. package/dist/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
  479. package/dist/docs/doctrine/nac3-attrs.md +23 -0
  480. package/dist/docs/doctrine/office-tools.md +102 -0
  481. package/dist/docs/doctrine/pizarron.md +52 -0
  482. package/dist/docs/doctrine/r8-modal.md +60 -0
  483. package/dist/docs/doctrine/safety-refusals.md +73 -0
  484. package/dist/docs/doctrine/testing-policy.md +211 -0
  485. package/dist/docs/doctrine/verb-composition.md +68 -0
  486. package/dist/docs/doctrine/verification-honesty.md +95 -0
  487. package/dist/docs/doctrine/workflow-kinds.md +52 -0
  488. package/dist/docs/doctrine/workflow-phases.md +108 -0
  489. package/dist/docs/doctrine/workflow.md +58 -0
  490. package/dist/docs/doctrine/yf-commands.md +49 -0
  491. package/dist/json/query.d.ts +38 -0
  492. package/dist/json/query.d.ts.map +1 -0
  493. package/dist/json/query.js +177 -0
  494. package/dist/json/query.js.map +1 -0
  495. package/dist/license/hito4_client.d.ts +7 -0
  496. package/dist/license/hito4_client.d.ts.map +1 -1
  497. package/dist/license/hito4_client.js +52 -2
  498. package/dist/license/hito4_client.js.map +1 -1
  499. package/dist/license/index.d.ts.map +1 -1
  500. package/dist/license/index.js +7 -0
  501. package/dist/license/index.js.map +1 -1
  502. package/dist/license/sync.d.ts +59 -0
  503. package/dist/license/sync.d.ts.map +1 -0
  504. package/dist/license/sync.js +148 -0
  505. package/dist/license/sync.js.map +1 -0
  506. package/dist/llm/cohere_client.d.ts +81 -0
  507. package/dist/llm/cohere_client.d.ts.map +1 -0
  508. package/dist/llm/cohere_client.js +195 -0
  509. package/dist/llm/cohere_client.js.map +1 -0
  510. package/dist/llm/deepseek_client.d.ts +63 -0
  511. package/dist/llm/deepseek_client.d.ts.map +1 -0
  512. package/dist/llm/deepseek_client.js +188 -0
  513. package/dist/llm/deepseek_client.js.map +1 -0
  514. package/dist/llm/gemini_client.d.ts +78 -0
  515. package/dist/llm/gemini_client.d.ts.map +1 -0
  516. package/dist/llm/gemini_client.js +189 -0
  517. package/dist/llm/gemini_client.js.map +1 -0
  518. package/dist/llm/managed_client.d.ts +70 -0
  519. package/dist/llm/managed_client.d.ts.map +1 -0
  520. package/dist/llm/managed_client.js +251 -0
  521. package/dist/llm/managed_client.js.map +1 -0
  522. package/dist/llm/mistral_client.d.ts +54 -0
  523. package/dist/llm/mistral_client.d.ts.map +1 -0
  524. package/dist/llm/mistral_client.js +174 -0
  525. package/dist/llm/mistral_client.js.map +1 -0
  526. package/dist/llm/multi_provider_client.d.ts +57 -0
  527. package/dist/llm/multi_provider_client.d.ts.map +1 -0
  528. package/dist/llm/multi_provider_client.js +109 -0
  529. package/dist/llm/multi_provider_client.js.map +1 -0
  530. package/dist/llm/openai_client.d.ts +77 -0
  531. package/dist/llm/openai_client.d.ts.map +1 -0
  532. package/dist/llm/openai_client.js +200 -0
  533. package/dist/llm/openai_client.js.map +1 -0
  534. package/dist/llm/xai_client.d.ts +51 -0
  535. package/dist/llm/xai_client.d.ts.map +1 -0
  536. package/dist/llm/xai_client.js +174 -0
  537. package/dist/llm/xai_client.js.map +1 -0
  538. package/dist/mcp/blocklist.d.ts +19 -0
  539. package/dist/mcp/blocklist.d.ts.map +1 -0
  540. package/dist/mcp/blocklist.js +118 -0
  541. package/dist/mcp/blocklist.js.map +1 -0
  542. package/dist/mcp/bridge_registry.d.ts +77 -0
  543. package/dist/mcp/bridge_registry.d.ts.map +1 -0
  544. package/dist/mcp/bridge_registry.js +220 -0
  545. package/dist/mcp/bridge_registry.js.map +1 -0
  546. package/dist/mcp/config.d.ts +25 -0
  547. package/dist/mcp/config.d.ts.map +1 -0
  548. package/dist/mcp/config.js +116 -0
  549. package/dist/mcp/config.js.map +1 -0
  550. package/dist/mcp/forge_panel_server.d.ts +46 -0
  551. package/dist/mcp/forge_panel_server.d.ts.map +1 -0
  552. package/dist/mcp/forge_panel_server.js +166 -0
  553. package/dist/mcp/forge_panel_server.js.map +1 -0
  554. package/dist/mcp/lan_scan.d.ts +36 -0
  555. package/dist/mcp/lan_scan.d.ts.map +1 -0
  556. package/dist/mcp/lan_scan.js +130 -0
  557. package/dist/mcp/lan_scan.js.map +1 -0
  558. package/dist/mcp/protocol_client.d.ts +63 -0
  559. package/dist/mcp/protocol_client.d.ts.map +1 -0
  560. package/dist/mcp/protocol_client.js +340 -0
  561. package/dist/mcp/protocol_client.js.map +1 -0
  562. package/dist/mcp/state.d.ts +38 -0
  563. package/dist/mcp/state.d.ts.map +1 -0
  564. package/dist/mcp/state.js +144 -0
  565. package/dist/mcp/state.js.map +1 -0
  566. package/dist/migrate/ai-decorator.d.ts.map +1 -1
  567. package/dist/migrate/ai-decorator.js +55 -143
  568. package/dist/migrate/ai-decorator.js.map +1 -1
  569. package/dist/nac3/approval_queue.d.ts +44 -0
  570. package/dist/nac3/approval_queue.d.ts.map +1 -0
  571. package/dist/nac3/approval_queue.js +105 -0
  572. package/dist/nac3/approval_queue.js.map +1 -0
  573. package/dist/nac3/backend_tools.d.ts +89 -0
  574. package/dist/nac3/backend_tools.d.ts.map +1 -0
  575. package/dist/nac3/backend_tools.js +271 -0
  576. package/dist/nac3/backend_tools.js.map +1 -0
  577. package/dist/nac3/dispatch_log.d.ts +35 -0
  578. package/dist/nac3/dispatch_log.d.ts.map +1 -0
  579. package/dist/nac3/dispatch_log.js +126 -0
  580. package/dist/nac3/dispatch_log.js.map +1 -0
  581. package/dist/nac3/internal_manifest.d.ts +62 -0
  582. package/dist/nac3/internal_manifest.d.ts.map +1 -0
  583. package/dist/nac3/internal_manifest.js +2461 -0
  584. package/dist/nac3/internal_manifest.js.map +1 -0
  585. package/dist/nac3/manifest_lazy.d.ts +71 -0
  586. package/dist/nac3/manifest_lazy.d.ts.map +1 -0
  587. package/dist/nac3/manifest_lazy.js +141 -0
  588. package/dist/nac3/manifest_lazy.js.map +1 -0
  589. package/dist/nac3/verb_tier_map.d.ts +80 -0
  590. package/dist/nac3/verb_tier_map.d.ts.map +1 -0
  591. package/dist/nac3/verb_tier_map.js +159 -0
  592. package/dist/nac3/verb_tier_map.js.map +1 -0
  593. package/dist/office/excel.d.ts +132 -0
  594. package/dist/office/excel.d.ts.map +1 -0
  595. package/dist/office/excel.js +358 -0
  596. package/dist/office/excel.js.map +1 -0
  597. package/dist/office/pdf.d.ts +35 -0
  598. package/dist/office/pdf.d.ts.map +1 -0
  599. package/dist/office/pdf.js +70 -0
  600. package/dist/office/pdf.js.map +1 -0
  601. package/dist/office/word.d.ts +64 -0
  602. package/dist/office/word.d.ts.map +1 -0
  603. package/dist/office/word.js +243 -0
  604. package/dist/office/word.js.map +1 -0
  605. package/dist/pending/store.d.ts +72 -0
  606. package/dist/pending/store.d.ts.map +1 -0
  607. package/dist/pending/store.js +274 -0
  608. package/dist/pending/store.js.map +1 -0
  609. package/dist/pending/types.d.ts +111 -0
  610. package/dist/pending/types.d.ts.map +1 -0
  611. package/dist/pending/types.js +60 -0
  612. package/dist/pending/types.js.map +1 -0
  613. package/dist/qa/brain_matrix/ab_runner.d.ts +44 -0
  614. package/dist/qa/brain_matrix/ab_runner.d.ts.map +1 -0
  615. package/dist/qa/brain_matrix/ab_runner.js +144 -0
  616. package/dist/qa/brain_matrix/ab_runner.js.map +1 -0
  617. package/dist/qa/brain_matrix/brains.json +80 -0
  618. package/dist/qa/brain_matrix/compare.d.ts +27 -0
  619. package/dist/qa/brain_matrix/compare.d.ts.map +1 -0
  620. package/dist/qa/brain_matrix/compare.js +122 -0
  621. package/dist/qa/brain_matrix/compare.js.map +1 -0
  622. package/dist/qa/brain_matrix/fake_brain.d.ts +36 -0
  623. package/dist/qa/brain_matrix/fake_brain.d.ts.map +1 -0
  624. package/dist/qa/brain_matrix/fake_brain.js +27 -0
  625. package/dist/qa/brain_matrix/fake_brain.js.map +1 -0
  626. package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_intent.json +22 -0
  627. package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_no_speak_default.json +23 -0
  628. package/dist/qa/brain_matrix/fixtures/scenario_a11y_consecutive_announces.json +37 -0
  629. package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_action.json +22 -0
  630. package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_open.json +22 -0
  631. package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_unlabeled_button.json +26 -0
  632. package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_with_shortcut.json +22 -0
  633. package/dist/qa/brain_matrix/fixtures/scenario_agent_director_consults_workflow_before_dispatch.json +42 -0
  634. package/dist/qa/brain_matrix/fixtures/scenario_analyst_extracts_then_returns.json +28 -0
  635. package/dist/qa/brain_matrix/fixtures/scenario_announce_min_tool_calls.json +23 -0
  636. package/dist/qa/brain_matrix/fixtures/scenario_app_invoke_happy_path.json +65 -0
  637. package/dist/qa/brain_matrix/fixtures/scenario_app_no_invent_without_backend.json +18 -0
  638. package/dist/qa/brain_matrix/fixtures/scenario_app_schema_fail_recover.json +48 -0
  639. package/dist/qa/brain_matrix/fixtures/scenario_approval_modal_no_redundancy.json +21 -0
  640. package/dist/qa/brain_matrix/fixtures/scenario_args_redacted_in_audit.json +17 -0
  641. package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent.json +19 -0
  642. package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent_en.json +19 -0
  643. package/dist/qa/brain_matrix/fixtures/scenario_audit_log_on_destructive.json +18 -0
  644. package/dist/qa/brain_matrix/fixtures/scenario_brain_explains_after_invoke.json +28 -0
  645. package/dist/qa/brain_matrix/fixtures/scenario_byok_on_managed_brain_overflow.json +28 -0
  646. package/dist/qa/brain_matrix/fixtures/scenario_byok_required_policy.json +35 -0
  647. package/dist/qa/brain_matrix/fixtures/scenario_coder_consults_nac_spec_before_writing.json +28 -0
  648. package/dist/qa/brain_matrix/fixtures/scenario_concise_no_loop.json +23 -0
  649. package/dist/qa/brain_matrix/fixtures/scenario_consult_nac_spec_intent.json +19 -0
  650. package/dist/qa/brain_matrix/fixtures/scenario_contradiction_rfp_cost.json +38 -0
  651. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_attachment_frontier.json +24 -0
  652. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_escalation_explicit.json +23 -0
  653. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_idle_reset.json +24 -0
  654. package/dist/qa/brain_matrix/fixtures/scenario_csv_via_excel_read.json +22 -0
  655. package/dist/qa/brain_matrix/fixtures/scenario_default_design_system_override_shadcn.json +45 -0
  656. package/dist/qa/brain_matrix/fixtures/scenario_default_design_system_use_card_template.json +44 -0
  657. package/dist/qa/brain_matrix/fixtures/scenario_destructive_no_text_confirm.json +20 -0
  658. package/dist/qa/brain_matrix/fixtures/scenario_diff_explains_changes.json +32 -0
  659. package/dist/qa/brain_matrix/fixtures/scenario_director_delegates_to_analyst.json +26 -0
  660. package/dist/qa/brain_matrix/fixtures/scenario_director_no_self_delegation.json +20 -0
  661. package/dist/qa/brain_matrix/fixtures/scenario_director_terminal_done_marker.json +19 -0
  662. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_after_unknown_intent.json +17 -0
  663. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_a11y.json +24 -0
  664. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_agent_orchestrator.json +24 -0
  665. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_byok_vs_managed.json +24 -0
  666. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_cost_router.json +24 -0
  667. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_default_design_system.json +50 -0
  668. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_g_doc.json +24 -0
  669. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_gates.json +23 -0
  670. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_intent_en.json +19 -0
  671. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_language_sovereignty.json +53 -0
  672. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_lessons_workflow.json +24 -0
  673. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_mcp_lifecycle.json +24 -0
  674. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_nac3_attrs.json +24 -0
  675. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_office.json +24 -0
  676. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_pizarron.json +23 -0
  677. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_r8_modal.json +23 -0
  678. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_testing_policy.json +55 -0
  679. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow.json +23 -0
  680. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow_phases.json +24 -0
  681. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_yf_commands.json +24 -0
  682. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_explain_results.json +22 -0
  683. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_safety_refusals.json +22 -0
  684. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_verb_composition.json +22 -0
  685. package/dist/qa/brain_matrix/fixtures/scenario_eco_defers_complex.json +17 -0
  686. package/dist/qa/brain_matrix/fixtures/scenario_eco_short_query.json +27 -0
  687. package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent.json +20 -0
  688. package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent_en.json +20 -0
  689. package/dist/qa/brain_matrix/fixtures/scenario_env_no_secret_leak.json +21 -0
  690. package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression.json +35 -0
  691. package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression_en.json +21 -0
  692. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_handles_csv_refusal.json +28 -0
  693. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent.json +20 -0
  694. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent_en.json +20 -0
  695. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_then_list.json +34 -0
  696. package/dist/qa/brain_matrix/fixtures/scenario_excel_list_sheets_first.json +22 -0
  697. package/dist/qa/brain_matrix/fixtures/scenario_excel_sheet_named.json +23 -0
  698. package/dist/qa/brain_matrix/fixtures/scenario_explain_voice_yes.json +22 -0
  699. package/dist/qa/brain_matrix/fixtures/scenario_explains_forge_error.json +39 -0
  700. package/dist/qa/brain_matrix/fixtures/scenario_focus_after_modal_open.json +29 -0
  701. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent.json +21 -0
  702. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent_en.json +20 -0
  703. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_with_glob.json +22 -0
  704. package/dist/qa/brain_matrix/fixtures/scenario_fs_mkdir_intent.json +20 -0
  705. package/dist/qa/brain_matrix/fixtures/scenario_fs_move_intent.json +20 -0
  706. package/dist/qa/brain_matrix/fixtures/scenario_fs_read_handles_missing.json +28 -0
  707. package/dist/qa/brain_matrix/fixtures/scenario_fs_stat_before_read.json +22 -0
  708. package/dist/qa/brain_matrix/fixtures/scenario_generated_app_nac3_default.json +24 -0
  709. package/dist/qa/brain_matrix/fixtures/scenario_git_branch_list_intent.json +20 -0
  710. package/dist/qa/brain_matrix/fixtures/scenario_git_diff_intent.json +20 -0
  711. package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent.json +20 -0
  712. package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent_en.json +20 -0
  713. package/dist/qa/brain_matrix/fixtures/scenario_git_pull_intent.json +19 -0
  714. package/dist/qa/brain_matrix/fixtures/scenario_git_push_intent.json +20 -0
  715. package/dist/qa/brain_matrix/fixtures/scenario_git_show_metadata_only.json +22 -0
  716. package/dist/qa/brain_matrix/fixtures/scenario_git_status_branch_combo.json +44 -0
  717. package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent.json +20 -0
  718. package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent_en.json +20 -0
  719. package/dist/qa/brain_matrix/fixtures/scenario_github_clone_repo_intent.json +20 -0
  720. package/dist/qa/brain_matrix/fixtures/scenario_github_create_repo_intent.json +20 -0
  721. package/dist/qa/brain_matrix/fixtures/scenario_id_format_in_reply.json +27 -0
  722. package/dist/qa/brain_matrix/fixtures/scenario_iterations_idempotent_adenda.json +27 -0
  723. package/dist/qa/brain_matrix/fixtures/scenario_iterations_query_history.json +29 -0
  724. package/dist/qa/brain_matrix/fixtures/scenario_iterations_tracker_acknowledge.json +28 -0
  725. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_handles_malformed.json +34 -0
  726. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent.json +30 -0
  727. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent_en.json +30 -0
  728. package/dist/qa/brain_matrix/fixtures/scenario_json_query_extract.json +23 -0
  729. package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent.json +20 -0
  730. package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent_en.json +20 -0
  731. package/dist/qa/brain_matrix/fixtures/scenario_keys_set_intent.json +20 -0
  732. package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent.json +20 -0
  733. package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent_en.json +20 -0
  734. package/dist/qa/brain_matrix/fixtures/scenario_language_sovereignty_not_conducive_spa_python.json +61 -0
  735. package/dist/qa/brain_matrix/fixtures/scenario_language_sovereignty_user_picks_python.json +48 -0
  736. package/dist/qa/brain_matrix/fixtures/scenario_lazy_complex_verb.json +27 -0
  737. package/dist/qa/brain_matrix/fixtures/scenario_lazy_doctrine_only_when_needed.json +17 -0
  738. package/dist/qa/brain_matrix/fixtures/scenario_lazy_simple_verb.json +21 -0
  739. package/dist/qa/brain_matrix/fixtures/scenario_lesson_recall_overrides.json +22 -0
  740. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_restart_app_intent.json +19 -0
  741. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent.json +19 -0
  742. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent_en.json +19 -0
  743. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent.json +20 -0
  744. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent_en.json +20 -0
  745. package/dist/qa/brain_matrix/fixtures/scenario_long_doctrine_no_truncate.json +23 -0
  746. package/dist/qa/brain_matrix/fixtures/scenario_manifest_read_intent.json +19 -0
  747. package/dist/qa/brain_matrix/fixtures/scenario_manual_open_intent.json +19 -0
  748. package/dist/qa/brain_matrix/fixtures/scenario_mcp_bridge_unreachable_graceful.json +39 -0
  749. package/dist/qa/brain_matrix/fixtures/scenario_mcp_disabled_bridge_no_verbs.json +18 -0
  750. package/dist/qa/brain_matrix/fixtures/scenario_mcp_discover_tools_intent.json +19 -0
  751. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invariant_1_no_verbs.json +19 -0
  752. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_destructive_pauses_for_r8.json +42 -0
  753. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_happy_path_writes_pizarron.json +76 -0
  754. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_network_timeout_graceful.json +41 -0
  755. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_two_hop.json +68 -0
  756. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_with_auth_loaded.json +76 -0
  757. package/dist/qa/brain_matrix/fixtures/scenario_mcp_revoked_token_graceful.json +33 -0
  758. package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_intent.json +21 -0
  759. package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_no_token_arg.json +27 -0
  760. package/dist/qa/brain_matrix/fixtures/scenario_mcp_show_tools_before_invoke.json +44 -0
  761. package/dist/qa/brain_matrix/fixtures/scenario_mcp_toggle_intent.json +20 -0
  762. package/dist/qa/brain_matrix/fixtures/scenario_multi_turn_clarify_then_act.json +24 -0
  763. package/dist/qa/brain_matrix/fixtures/scenario_nac3_attrs_doctrine.json +53 -0
  764. package/dist/qa/brain_matrix/fixtures/scenario_nac3_discover_schemas_intent.json +19 -0
  765. package/dist/qa/brain_matrix/fixtures/scenario_nac3_required_attr_missing.json +19 -0
  766. package/dist/qa/brain_matrix/fixtures/scenario_no_bare_ok_after_destructive.json +27 -0
  767. package/dist/qa/brain_matrix/fixtures/scenario_no_global_learnings_no_recall.json +20 -0
  768. package/dist/qa/brain_matrix/fixtures/scenario_no_hardcoded_color_use_token.json +47 -0
  769. package/dist/qa/brain_matrix/fixtures/scenario_no_id_leak_in_reply.json +24 -0
  770. package/dist/qa/brain_matrix/fixtures/scenario_no_invent_verb.json +18 -0
  771. package/dist/qa/brain_matrix/fixtures/scenario_no_loop_after_repeated_fail.json +42 -0
  772. package/dist/qa/brain_matrix/fixtures/scenario_no_password_echo.json +28 -0
  773. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_all_current.json +28 -0
  774. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent.json +20 -0
  775. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent_en.json +20 -0
  776. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_then_explain.json +35 -0
  777. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_read_intent.json +24 -0
  778. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_update_cell_picks_right_verb.json +26 -0
  779. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_write_required_args.json +23 -0
  780. package/dist/qa/brain_matrix/fixtures/scenario_office_overwrite_explicit.json +23 -0
  781. package/dist/qa/brain_matrix/fixtures/scenario_office_word_write_intent.json +27 -0
  782. package/dist/qa/brain_matrix/fixtures/scenario_panel_open_settings_intent.json +19 -0
  783. package/dist/qa/brain_matrix/fixtures/scenario_panel_send_message_intent.json +19 -0
  784. package/dist/qa/brain_matrix/fixtures/scenario_pdf_read_intent.json +22 -0
  785. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_clear_tab_explicit_close.json +17 -0
  786. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_chart.json +30 -0
  787. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_long_table.json +28 -0
  788. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_read_tab_intent.json +20 -0
  789. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_render_not_inline.json +20 -0
  790. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_read_file.json +28 -0
  791. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_verb_over_shell.json +22 -0
  792. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_workflow_state.json +28 -0
  793. package/dist/qa/brain_matrix/fixtures/scenario_project_init_intent.json +20 -0
  794. package/dist/qa/brain_matrix/fixtures/scenario_project_set_root_intent.json +20 -0
  795. package/dist/qa/brain_matrix/fixtures/scenario_promote_lesson_after_correction.json +17 -0
  796. package/dist/qa/brain_matrix/fixtures/scenario_r8_destructive_shell_exec.json +21 -0
  797. package/dist/qa/brain_matrix/fixtures/scenario_read_then_parse_order.json +36 -0
  798. package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_jump_intent.json +19 -0
  799. package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_set_intent.json +19 -0
  800. package/dist/qa/brain_matrix/fixtures/scenario_reader_for_long_doc.json +21 -0
  801. package/dist/qa/brain_matrix/fixtures/scenario_reader_list_docs_intent.json +19 -0
  802. package/dist/qa/brain_matrix/fixtures/scenario_reader_next_block_intent.json +19 -0
  803. package/dist/qa/brain_matrix/fixtures/scenario_reader_read_section_intent.json +19 -0
  804. package/dist/qa/brain_matrix/fixtures/scenario_reader_recap_intent.json +19 -0
  805. package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent.json +20 -0
  806. package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent_en.json +20 -0
  807. package/dist/qa/brain_matrix/fixtures/scenario_refuses_blanket_chmod_777.json +17 -0
  808. package/dist/qa/brain_matrix/fixtures/scenario_refuses_bypass_approval_modal.json +18 -0
  809. package/dist/qa/brain_matrix/fixtures/scenario_refuses_delete_critical_en.json +18 -0
  810. package/dist/qa/brain_matrix/fixtures/scenario_refuses_disable_vault_encryption.json +18 -0
  811. package/dist/qa/brain_matrix/fixtures/scenario_refuses_drop_database.json +17 -0
  812. package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main.json +17 -0
  813. package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main_en.json +17 -0
  814. package/dist/qa/brain_matrix/fixtures/scenario_refuses_leak_vault_en.json +18 -0
  815. package/dist/qa/brain_matrix/fixtures/scenario_refuses_modify_node_modules.json +17 -0
  816. package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks.json +17 -0
  817. package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks_en.json +17 -0
  818. package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_delete_critical.json +18 -0
  819. package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_leak_vault.json +18 -0
  820. package/dist/qa/brain_matrix/fixtures/scenario_respects_global_learnings.json +28 -0
  821. package/dist/qa/brain_matrix/fixtures/scenario_respects_workflow_gate_g2.json +39 -0
  822. package/dist/qa/brain_matrix/fixtures/scenario_revoke_lesson_request.json +21 -0
  823. package/dist/qa/brain_matrix/fixtures/scenario_scaffolder_destructive_pauses_for_approval.json +23 -0
  824. package/dist/qa/brain_matrix/fixtures/scenario_sq9b_deploy_checks_git_status.json +25 -0
  825. package/dist/qa/brain_matrix/fixtures/scenario_sq9b_install_checks_node_version.json +25 -0
  826. package/dist/qa/brain_matrix/fixtures/scenario_sq9b_publish_checks_gh_cli.json +25 -0
  827. package/dist/qa/brain_matrix/fixtures/scenario_sq_rules_active.json +30 -0
  828. package/dist/qa/brain_matrix/fixtures/scenario_sumie_icon_pick_from_catalog.json +56 -0
  829. package/dist/qa/brain_matrix/fixtures/scenario_tester_uses_shell_exec_only.json +27 -0
  830. package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent.json +20 -0
  831. package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent_en.json +20 -0
  832. package/dist/qa/brain_matrix/fixtures/scenario_truncated_response_retry.json +22 -0
  833. package/dist/qa/brain_matrix/fixtures/scenario_unknown_command_clarify.json +23 -0
  834. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_compose.json +23 -0
  835. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_handles_invalid.json +27 -0
  836. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent.json +20 -0
  837. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent_en.json +20 -0
  838. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_then_inspect_query.json +28 -0
  839. package/dist/qa/brain_matrix/fixtures/scenario_url_then_stringify_order.json +34 -0
  840. package/dist/qa/brain_matrix/fixtures/scenario_user_just_greets.json +17 -0
  841. package/dist/qa/brain_matrix/fixtures/scenario_user_overrides_proceeds.json +24 -0
  842. package/dist/qa/brain_matrix/fixtures/scenario_user_revokes_in_middle.json +22 -0
  843. package/dist/qa/brain_matrix/fixtures/scenario_voice_open_pizarron.json +21 -0
  844. package/dist/qa/brain_matrix/fixtures/scenario_word_outline_extraction.json +22 -0
  845. package/dist/qa/brain_matrix/fixtures/scenario_word_overwrite_explicit.json +20 -0
  846. package/dist/qa/brain_matrix/fixtures/scenario_word_section_count.json +28 -0
  847. package/dist/qa/brain_matrix/fixtures/scenario_workflow_doctrine.json +53 -0
  848. package/dist/qa/brain_matrix/fixtures/scenario_workflow_done_specs.json +32 -0
  849. package/dist/qa/brain_matrix/fixtures/scenario_workflow_intent_capture.json +22 -0
  850. package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_jump_block.json +26 -0
  851. package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_v_step_15.json +41 -0
  852. package/dist/qa/brain_matrix/fixtures/scenario_workflow_run_step_intent.json +19 -0
  853. package/dist/qa/brain_matrix/fixtures/scenario_workflow_set_intent.json +20 -0
  854. package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_injection.json +32 -0
  855. package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_recovers_after_clarify.json +25 -0
  856. package/dist/qa/brain_matrix/fixtures/scenario_workflow_step_1_intake.json +24 -0
  857. package/dist/qa/brain_matrix/fixtures/scenario_yf_command_doctrine.json +56 -0
  858. package/dist/qa/brain_matrix/fixtures/scenario_yf_doctrine_list_intent.json +19 -0
  859. package/dist/qa/brain_matrix/fixtures/scenario_yf_qa_compare_intent.json +17 -0
  860. package/dist/qa/brain_matrix/invariants.d.ts +18 -0
  861. package/dist/qa/brain_matrix/invariants.d.ts.map +1 -0
  862. package/dist/qa/brain_matrix/invariants.js +333 -0
  863. package/dist/qa/brain_matrix/invariants.js.map +1 -0
  864. package/dist/qa/brain_matrix/report.d.ts +12 -0
  865. package/dist/qa/brain_matrix/report.d.ts.map +1 -0
  866. package/dist/qa/brain_matrix/report.js +131 -0
  867. package/dist/qa/brain_matrix/report.js.map +1 -0
  868. package/dist/qa/brain_matrix/runner.d.ts +31 -0
  869. package/dist/qa/brain_matrix/runner.d.ts.map +1 -0
  870. package/dist/qa/brain_matrix/runner.js +561 -0
  871. package/dist/qa/brain_matrix/runner.js.map +1 -0
  872. package/dist/qa/brain_matrix/types.d.ts +180 -0
  873. package/dist/qa/brain_matrix/types.d.ts.map +1 -0
  874. package/dist/qa/brain_matrix/types.js +2 -0
  875. package/dist/qa/brain_matrix/types.js.map +1 -0
  876. package/dist/qa/brain_matrix/validate_scenario.d.ts +23 -0
  877. package/dist/qa/brain_matrix/validate_scenario.d.ts.map +1 -0
  878. package/dist/qa/brain_matrix/validate_scenario.js +128 -0
  879. package/dist/qa/brain_matrix/validate_scenario.js.map +1 -0
  880. package/dist/semantic_graph/ast_extract.d.ts +15 -0
  881. package/dist/semantic_graph/ast_extract.d.ts.map +1 -0
  882. package/dist/semantic_graph/ast_extract.js +162 -0
  883. package/dist/semantic_graph/ast_extract.js.map +1 -0
  884. package/dist/semantic_graph/derive.d.ts +36 -0
  885. package/dist/semantic_graph/derive.d.ts.map +1 -0
  886. package/dist/semantic_graph/derive.js +285 -0
  887. package/dist/semantic_graph/derive.js.map +1 -0
  888. package/dist/semantic_graph/llm_claim.d.ts +21 -0
  889. package/dist/semantic_graph/llm_claim.d.ts.map +1 -0
  890. package/dist/semantic_graph/llm_claim.js +164 -0
  891. package/dist/semantic_graph/llm_claim.js.map +1 -0
  892. package/dist/semantic_graph/npm_enrich.d.ts +49 -0
  893. package/dist/semantic_graph/npm_enrich.d.ts.map +1 -0
  894. package/dist/semantic_graph/npm_enrich.js +173 -0
  895. package/dist/semantic_graph/npm_enrich.js.map +1 -0
  896. package/dist/semantic_graph/render.d.ts +28 -0
  897. package/dist/semantic_graph/render.d.ts.map +1 -0
  898. package/dist/semantic_graph/render.js +70 -0
  899. package/dist/semantic_graph/render.js.map +1 -0
  900. package/dist/semantic_graph/store.d.ts +44 -0
  901. package/dist/semantic_graph/store.d.ts.map +1 -0
  902. package/dist/semantic_graph/store.js +360 -0
  903. package/dist/semantic_graph/store.js.map +1 -0
  904. package/dist/semantic_graph/types.d.ts +59 -0
  905. package/dist/semantic_graph/types.d.ts.map +1 -0
  906. package/dist/semantic_graph/types.js +17 -0
  907. package/dist/semantic_graph/types.js.map +1 -0
  908. package/dist/support/github_dispatcher.d.ts +36 -0
  909. package/dist/support/github_dispatcher.d.ts.map +1 -0
  910. package/dist/support/github_dispatcher.js +292 -0
  911. package/dist/support/github_dispatcher.js.map +1 -0
  912. package/dist/support/reports.d.ts +31 -0
  913. package/dist/support/reports.d.ts.map +1 -0
  914. package/dist/support/reports.js +162 -0
  915. package/dist/support/reports.js.map +1 -0
  916. package/dist/telemetry/usage.d.ts +67 -0
  917. package/dist/telemetry/usage.d.ts.map +1 -0
  918. package/dist/telemetry/usage.js +208 -0
  919. package/dist/telemetry/usage.js.map +1 -0
  920. package/dist/test_agent/gemini_user.d.ts +9 -0
  921. package/dist/test_agent/gemini_user.d.ts.map +1 -0
  922. package/dist/test_agent/gemini_user.js +58 -0
  923. package/dist/test_agent/gemini_user.js.map +1 -0
  924. package/dist/test_agent/profiles.d.ts +23 -0
  925. package/dist/test_agent/profiles.d.ts.map +1 -0
  926. package/dist/test_agent/profiles.js +117 -0
  927. package/dist/test_agent/profiles.js.map +1 -0
  928. package/dist/test_agent/runner.d.ts +56 -0
  929. package/dist/test_agent/runner.d.ts.map +1 -0
  930. package/dist/test_agent/runner.js +134 -0
  931. package/dist/test_agent/runner.js.map +1 -0
  932. package/dist/test_agent/target_http.d.ts +22 -0
  933. package/dist/test_agent/target_http.d.ts.map +1 -0
  934. package/dist/test_agent/target_http.js +51 -0
  935. package/dist/test_agent/target_http.js.map +1 -0
  936. package/dist/test_agent/types.d.ts +117 -0
  937. package/dist/test_agent/types.d.ts.map +1 -0
  938. package/dist/test_agent/types.js +22 -0
  939. package/dist/test_agent/types.js.map +1 -0
  940. package/dist/vault/store.d.ts.map +1 -1
  941. package/dist/vault/store.js +14 -1
  942. package/dist/vault/store.js.map +1 -1
  943. package/dist/version.d.ts +1 -1
  944. package/dist/version.d.ts.map +1 -1
  945. package/dist/version.js +1 -1
  946. package/dist/version.js.map +1 -1
  947. package/dist/voice/config.d.ts +12 -0
  948. package/dist/voice/config.d.ts.map +1 -1
  949. package/dist/voice/config.js +25 -2
  950. package/dist/voice/config.js.map +1 -1
  951. package/dist/voice/providers/google.d.ts +9 -0
  952. package/dist/voice/providers/google.d.ts.map +1 -1
  953. package/dist/voice/providers/google.js +152 -26
  954. package/dist/voice/providers/google.js.map +1 -1
  955. package/dist/voice/router.d.ts +10 -0
  956. package/dist/voice/router.d.ts.map +1 -1
  957. package/dist/voice/router.js +39 -20
  958. package/dist/voice/router.js.map +1 -1
  959. package/dist/voice/types.d.ts +5 -2
  960. package/dist/voice/types.d.ts.map +1 -1
  961. package/dist/voice/types.js.map +1 -1
  962. package/dist/wiring/discover.d.ts +14 -0
  963. package/dist/wiring/discover.d.ts.map +1 -0
  964. package/dist/wiring/discover.js +383 -0
  965. package/dist/wiring/discover.js.map +1 -0
  966. package/dist/wiring/store.d.ts +19 -0
  967. package/dist/wiring/store.d.ts.map +1 -0
  968. package/dist/wiring/store.js +182 -0
  969. package/dist/wiring/store.js.map +1 -0
  970. package/dist/wiring/types.d.ts +61 -0
  971. package/dist/wiring/types.d.ts.map +1 -0
  972. package/dist/wiring/types.js +36 -0
  973. package/dist/wiring/types.js.map +1 -0
  974. package/dist/workflow/definitions.d.ts +60 -0
  975. package/dist/workflow/definitions.d.ts.map +1 -0
  976. package/dist/workflow/definitions.js +178 -0
  977. package/dist/workflow/definitions.js.map +1 -0
  978. package/dist/workflow/definitions_client.d.ts +12 -0
  979. package/dist/workflow/definitions_client.d.ts.map +1 -0
  980. package/dist/workflow/definitions_client.js +81 -0
  981. package/dist/workflow/definitions_client.js.map +1 -0
  982. package/dist/workflow/evolution.d.ts +10 -0
  983. package/dist/workflow/evolution.d.ts.map +1 -0
  984. package/dist/workflow/evolution.js +62 -0
  985. package/dist/workflow/evolution.js.map +1 -0
  986. package/dist/workflow/graph.d.ts +59 -0
  987. package/dist/workflow/graph.d.ts.map +1 -0
  988. package/dist/workflow/graph.js +137 -0
  989. package/dist/workflow/graph.js.map +1 -0
  990. package/dist/workflow/phase_inference.d.ts +56 -0
  991. package/dist/workflow/phase_inference.d.ts.map +1 -0
  992. package/dist/workflow/phase_inference.js +107 -0
  993. package/dist/workflow/phase_inference.js.map +1 -0
  994. package/dist/workflow/select.d.ts +28 -0
  995. package/dist/workflow/select.d.ts.map +1 -0
  996. package/dist/workflow/select.js +38 -0
  997. package/dist/workflow/select.js.map +1 -0
  998. package/dist/workflow/state.d.ts +290 -0
  999. package/dist/workflow/state.d.ts.map +1 -0
  1000. package/dist/workflow/state.js +213 -0
  1001. package/dist/workflow/state.js.map +1 -0
  1002. package/dist/workflow/view.d.ts +47 -0
  1003. package/dist/workflow/view.d.ts.map +1 -0
  1004. package/dist/workflow/view.js +103 -0
  1005. package/dist/workflow/view.js.map +1 -0
  1006. package/docs/SQ.md +1397 -0
  1007. package/docs/SQ_BY_STEP.yaml +147 -0
  1008. package/docs/doctrine/accessibility.md +78 -0
  1009. package/docs/doctrine/agent-orchestrator.md +76 -0
  1010. package/docs/doctrine/byok-vs-managed.md +81 -0
  1011. package/docs/doctrine/cost-router-escalation.md +103 -0
  1012. package/docs/doctrine/default-design-system.md +120 -0
  1013. package/docs/doctrine/explain-results.md +90 -0
  1014. package/docs/doctrine/expo-eas-builds.md +177 -0
  1015. package/docs/doctrine/g-doc.md +46 -0
  1016. package/docs/doctrine/gates.md +21 -0
  1017. package/docs/doctrine/language-sovereignty.md +143 -0
  1018. package/docs/doctrine/lessons-workflow.md +68 -0
  1019. package/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
  1020. package/docs/doctrine/nac3-attrs.md +23 -0
  1021. package/docs/doctrine/office-tools.md +102 -0
  1022. package/docs/doctrine/pizarron.md +52 -0
  1023. package/docs/doctrine/r8-modal.md +60 -0
  1024. package/docs/doctrine/safety-refusals.md +73 -0
  1025. package/docs/doctrine/testing-policy.md +211 -0
  1026. package/docs/doctrine/verb-composition.md +68 -0
  1027. package/docs/doctrine/verification-honesty.md +95 -0
  1028. package/docs/doctrine/workflow-kinds.md +52 -0
  1029. package/docs/doctrine/workflow-phases.md +108 -0
  1030. package/docs/doctrine/workflow.md +58 -0
  1031. package/docs/doctrine/yf-commands.md +49 -0
  1032. package/package.json +19 -3
  1033. package/src/i18n/catalogs/ar.json +134 -10
  1034. package/src/i18n/catalogs/de.json +134 -10
  1035. package/src/i18n/catalogs/en.json +134 -10
  1036. package/src/i18n/catalogs/es.json +134 -10
  1037. package/src/i18n/catalogs/fr.json +134 -10
  1038. package/src/i18n/catalogs/hi.json +134 -10
  1039. package/src/i18n/catalogs/it.json +134 -10
  1040. package/src/i18n/catalogs/ja.json +134 -10
  1041. package/src/i18n/catalogs/pt.json +134 -10
  1042. package/src/i18n/catalogs/zh.json +134 -10
  1043. package/templates/nextjs-app/README.md +48 -0
  1044. package/templates/nextjs-app/next.config.js +8 -0
  1045. package/templates/nextjs-app/package.json +33 -0
  1046. package/templates/nextjs-app/src/app/globals.css +43 -0
  1047. package/templates/nextjs-app/src/app/layout.tsx +29 -0
  1048. package/templates/nextjs-app/src/app/page.tsx +63 -0
  1049. package/templates/nextjs-app/src/nac/manifest.ts +36 -0
  1050. package/templates/nextjs-app/tsconfig.json +21 -0
  1051. package/templates/nextjs-app/yujin.forge.json +11 -0
  1052. package/templates/sumi-context.template.md +57 -0
@@ -20,7 +20,63 @@
20
20
  import { promises as fs } from 'node:fs';
21
21
  import path from 'node:path';
22
22
  const CONFIG = 'yujin.forge.json';
23
- /** Read the current pilot setup state. */
23
+ /** Heuristic: detect whether `projectRoot` already contains an
24
+ * existing project. If it does, we skip the first-run Pilot setup
25
+ * (target/mode questions) because they are not relevant when the
26
+ * user is opening Forge against an existing codebase (bug fix,
27
+ * refactor, deploy, code review, doc gen, etc).
28
+ *
29
+ * An "existing project" is detected by the presence of ANY of the
30
+ * common dependency manifest files. Greenfield workspaces (empty
31
+ * dir or just a prompt.txt) do NOT match, so they still get the
32
+ * pilot setup -- preserving the F-series default for `yf new`.
33
+ *
34
+ * Added 2026-06-06 after the behavior-matrix run revealed that
35
+ * cloned existing repos were being misclassified as greenfield and
36
+ * intercepted by the warmup template, yielding "warmup-only" turns
37
+ * where Forge promised to read the codebase but only asked the two
38
+ * questions instead. */
39
+ const PROJECT_INDICATORS = [
40
+ 'package.json',
41
+ 'pyproject.toml',
42
+ 'requirements.txt',
43
+ 'Cargo.toml',
44
+ 'go.mod',
45
+ 'composer.json',
46
+ 'Gemfile',
47
+ 'mix.exs',
48
+ 'pom.xml',
49
+ 'build.gradle',
50
+ 'build.gradle.kts',
51
+ 'CMakeLists.txt',
52
+ 'Makefile',
53
+ 'pubspec.yaml',
54
+ ];
55
+ export async function detectExistingProject(projectRoot) {
56
+ for (const indicator of PROJECT_INDICATORS) {
57
+ try {
58
+ await fs.access(path.join(projectRoot, indicator));
59
+ return true;
60
+ }
61
+ catch {
62
+ /* try next */
63
+ }
64
+ }
65
+ return false;
66
+ }
67
+ /** Read the current pilot setup state.
68
+ *
69
+ * Three branches:
70
+ * 1. `yujin.forge.json` exists -> trust the persisted `pilot_completed`.
71
+ * 2. No `yujin.forge.json`, but workspace IS an existing project (has
72
+ * `package.json`/`Cargo.toml`/etc) -> auto-skip warmup
73
+ * (`pilot_completed: true`). The user is opening Forge against a
74
+ * real codebase and wants Forge to start by discovering it, not
75
+ * by asking target/mode.
76
+ * 3. No `yujin.forge.json` and workspace is empty / greenfield ->
77
+ * trigger the warmup prompt (`pilot_completed: false`). This is
78
+ * the `yf new` path.
79
+ */
24
80
  export async function readPilotState(projectRoot) {
25
81
  try {
26
82
  const raw = await fs.readFile(path.join(projectRoot, CONFIG), 'utf-8');
@@ -36,6 +92,11 @@ export async function readPilotState(projectRoot) {
36
92
  };
37
93
  }
38
94
  catch {
95
+ /* No config file. Decide between greenfield and existing-project. */
96
+ const existing = await detectExistingProject(projectRoot);
97
+ if (existing) {
98
+ return { pilot_completed: true, target_pending: false, mode_pending: false };
99
+ }
39
100
  return { pilot_completed: false, target_pending: true, mode_pending: true };
40
101
  }
41
102
  }
@@ -63,12 +124,78 @@ export async function completePilotSetup(projectRoot, defaults = {}) {
63
124
  cfg.mode = 'didactico';
64
125
  await fs.writeFile(cfgPath, JSON.stringify(cfg, null, 2), 'utf-8');
65
126
  }
127
+ /* ===================================================================
128
+ * Out-of-scope detection (PND-022).
129
+ *
130
+ * The warmup template asks two questions (target + mode) that only
131
+ * make sense for software-dev requests. When the user opens a fresh
132
+ * project to ask for a song, a poem, a pixel-art mockup, or just
133
+ * casual chat, the warmup is intrusive -- the brain pretends to ask
134
+ * about a "responsive vs mobile-only app" for content that has
135
+ * nothing to do with software.
136
+ *
137
+ * Detection lives here so server.ts can suppress the suffix when the
138
+ * first user message is plainly out-of-scope. Regex-only for cost
139
+ * zero; a Gemini Flash Lite confidence layer can wrap this when the
140
+ * caller wants higher precision on ambiguous prompts (BYOK bolsillo
141
+ * Pablo path, deferred to a follow-up slice).
142
+ * ================================================================ */
143
+ /** Software-dev signals win over out-of-scope signals -- a user can
144
+ * ask for "a song about React" and the answer should still go
145
+ * through the warmup. We keep this list tight so a stray dev token
146
+ * in a casual prompt does not produce a false positive. */
147
+ const DEV_SIGNAL_RE = /\b(deploy|build|compil|refactor|implement(?:ar|a)?|implementaci|fix(?:ear)?|debug|test(?:ing)?|spec(?:ification)?|migr(?:ar|ate|aci)|scaffold|render(?:ear|ing)?|commit|merge|push|pull|branch|rebase|ci\/cd|pipeline|workflow|repo(?:sitory)?|package\.json|tsconfig|webpack|vite|next\.js|react|vue|angular|svelte|django|flask|express|fastapi|laravel|rails|spring|graphql|rest|openapi|swagger|database|postgres|mysql|sqlite|redis|mongo|docker|kubernetes|k8s|aws|gcp|cloudflare|vercel|netlify|api(?:_| key)?)\b/i;
148
+ /** Out-of-scope categories. Each entry is one regex per kind. Order
149
+ * intentionally favours common Spanish phrases since the bulk of
150
+ * Pablo's users are Latam. */
151
+ const OUT_OF_SCOPE_RES = [
152
+ { kind: 'music', re: /\b(can[cс]i[oó]n|cantar|cantale|letra(?: de)?|lyric|song|sing|m[uú]sica|melod[ií]a)\b/i },
153
+ { kind: 'poetry', re: /\b(poema|poetry|poes[ií]a|verso|haiku|soneto|rima(?:r|s)?)\b/i },
154
+ { kind: 'image', re: /\b(imagen|image|dibujo|drawing|draw|diagram(?:a|ar)?|sketch|pixel ?art|render(?:eame)?|graphic|grafico)\b/i },
155
+ { kind: 'explanation', re: /\b(expl[ií]came|expl[ií]canos|expl[ií]cale|que es (?:un|una|el|la)|qu[eé] es|what is|differenc(?:e|ia)|c[oó]mo funciona|diferencia entre)\b/i },
156
+ { kind: 'casual_chat', re: /^(?:hola(?:s|!)?|hi|hey|holi|buenas|gracias|thanks|thx|c[oó]mo (?:est[aá]s|te llamas|te va)|qu[eé] tal|que onda|nice|cool|jaja|lol|chau|bye)[\s!?\.]*$/i },
157
+ /* alpha.59z.187 PND-035 -- context-load intents bypass the warmup
158
+ * too. When the user opens a chat to ask "what do you know about
159
+ * this project" / "load the context" / "show me the graph", they
160
+ * already HAVE a project; asking them target+mode is intrusive.
161
+ * Spanish voseo + LatAm variations are covered (tenes vs tienes,
162
+ * cargame vs cargame). */
163
+ { kind: 'context_load', re: /\b(sub(?:i|e|ir|ime|ilo)|carg(?:a|ar|ame|amelo|alos|alas)|levanta|importa(?:r|me)?)\s+(?:todo\s+)?(?:el\s+|los\s+|las\s+)?(?:know[\s_-]?how|contexto|estado|grafo|graph|conocimiento|saber|saberes|info|informaci|pendientes|wiring|doctrinas?|lecciones)\b/i },
164
+ { kind: 'context_load', re: /\b(qu[eé]\s+(?:sab[ée]s|conoc[ée]s|ti?[ée]nes\s+(?:guardado|cargado))|que\s+(?:hay|ti?enes)\s+(?:sobre|en|guardado|cargado))\b/i },
165
+ { kind: 'context_load', re: /\b(muestr(?:a|e|ame|eme|alo|amelo)|list(?:a|ar|ame|amelos)|dame|d[ií]me|resum(?:i|ir|ime|emelo|elo))\s+(?:el\s+|los\s+|las\s+|todo\s+|todos\s+los\s+|todas\s+las\s+)?(?:grafo|graph|pendientes?|wiring|doctrinas?|lecciones|conocimiento|estado del proyecto|know[\s_-]?how)\b/i },
166
+ { kind: 'context_load', re: /\b(estado\s+del\s+proyecto|status\s+del\s+proyecto|estamos\s+parados\s+en|continu(?:emos|ar)\s+en|seguimos\s+(?:con|en)|retomar?\s+(?:el\s+)?proyecto)\b/i },
167
+ ];
168
+ /** Decide whether a user's first message looks out-of-scope for the
169
+ * warmup. Returns the matching category for telemetry / logging. */
170
+ export function detectOutOfScope(userMessage) {
171
+ const txt = (userMessage ?? '').trim();
172
+ if (!txt)
173
+ return { out_of_scope: false, kind: null, reason: 'empty' };
174
+ if (DEV_SIGNAL_RE.test(txt)) {
175
+ return { out_of_scope: false, kind: null, reason: 'dev_signal_present' };
176
+ }
177
+ for (const { kind, re } of OUT_OF_SCOPE_RES) {
178
+ if (re.test(txt))
179
+ return { out_of_scope: true, kind, reason: 'regex:' + kind };
180
+ }
181
+ return { out_of_scope: false, kind: null, reason: 'no_signal' };
182
+ }
66
183
  /** System-prompt addendum that asks the user about target
67
184
  * + mode in plain prose. Injected by buildSystemPrompt when
68
- * pilot_completed is false. */
69
- export function welcomePromptSuffix(state) {
185
+ * pilot_completed is false.
186
+ *
187
+ * PND-022: callers can pass `firstUserMessage` so the suffix is
188
+ * suppressed for out-of-scope first turns (music, poetry, image,
189
+ * abstract explanation, casual chat). The shape of the warmup is
190
+ * unchanged for in-scope dev turns. */
191
+ export function welcomePromptSuffix(state, firstUserMessage) {
70
192
  if (state.pilot_completed)
71
193
  return '';
194
+ if (typeof firstUserMessage === 'string' && firstUserMessage.trim().length > 0) {
195
+ const det = detectOutOfScope(firstUserMessage);
196
+ if (det.out_of_scope)
197
+ return '';
198
+ }
72
199
  const asks = [];
73
200
  if (state.target_pending) {
74
201
  asks.push('* la app, la queres responsive (desktop + mobile), solo mobile, o solo desktop?');
@@ -1 +1 @@
1
- {"version":3,"file":"pilot_setup.js","sourceRoot":"","sources":["../../src/core/pilot_setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pilot_setup.js","sourceRoot":"","sources":["../../src/core/pilot_setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ declare const ALLOWED_SLOTS: readonly ["anthropic_api_key", "openai_api_key", "google_ai_key", "deepseek_api_key", "xai_api_key", "mistral_api_key", "cohere_api_key", "google_stt_key", "google_tts_key", "whisper_api_key", "elevenlabs_api_key", "yujin_admin_key"];
2
+ export type ProviderSlot = (typeof ALLOWED_SLOTS)[number];
3
+ export declare function listAllowedSlots(): readonly string[];
4
+ export declare function isAllowedSlot(s: string): s is ProviderSlot;
5
+ /** Force a re-open (tests). */
6
+ export declare function _resetVaultCache(): void;
7
+ /** Run once per process. Imports legacy plaintext JSON keys +
8
+ * any vault slots stored under the non-prefixed slot name
9
+ * (legacy from before alpha.44 OR from users following an old
10
+ * yf vault set instruction). Idempotent + tolerant of partial
11
+ * imports. */
12
+ export declare function migrateLegacyIfNeeded(): Promise<{
13
+ imported: string[];
14
+ skipped: string[];
15
+ legacy_present: boolean;
16
+ vault_slots_migrated: string[];
17
+ }>;
18
+ /** Read a BYOK key plaintext. Returns null when the slot is not
19
+ * set or the slot name is invalid. Migrates legacy storage on
20
+ * first call. */
21
+ export declare function getKey(slot: string): Promise<string | null>;
22
+ /** Set a BYOK key. Empty / null value clears the slot. */
23
+ export declare function setKey(slot: string, value: string | null | undefined): Promise<void>;
24
+ /** Has-check (no plaintext leak). */
25
+ export declare function hasKey(slot: string): Promise<boolean>;
26
+ /** Status snapshot of all allowed slots -- booleans, not values. */
27
+ export declare function listStatus(): Promise<Record<string, boolean>>;
28
+ /** Convenience: synchronous-ish wrappers for the legacy code paths
29
+ * that did `readKeys(): Record<string, unknown>` and expected a
30
+ * full snapshot. Returns plaintext values for set slots; null
31
+ * for unset. Keep call sites aware this DECRYPTS everything --
32
+ * do not log the return. */
33
+ export declare function readAllPlaintext(): Promise<Record<string, string | null>>;
34
+ export {};
35
+ //# sourceMappingURL=provider_keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider_keys.d.ts","sourceRoot":"","sources":["../../src/core/provider_keys.ts"],"names":[],"mappings":"AAkCA,QAAA,MAAM,aAAa,2OAyBT,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,wBAAgB,gBAAgB,IAAI,SAAS,MAAM,EAAE,CAEpD;AAgBD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,YAAY,CAM1D;AAqBD,+BAA+B;AAC/B,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAID;;;;eAIe;AACf,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC,CAoED;AAED;;kBAEkB;AAClB,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOjE;AAED,0DAA0D;AAC1D,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1F;AAED,qCAAqC;AACrC,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK3D;AAED,oEAAoE;AACpE,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAQnE;AAED;;;;6BAI6B;AAC7B,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAY/E"}
@@ -0,0 +1,267 @@
1
+ /**
2
+ * core/provider_keys.ts -- BYOK API key storage (alpha.44 C1).
3
+ *
4
+ * Single source of truth for read / write / list of BYOK provider
5
+ * keys (Anthropic, OpenAI, Google AI, Google STT, Google TTS,
6
+ * Whisper, ElevenLabs).
7
+ *
8
+ * Storage: encrypted Vault (AES-256-GCM, derived from machine
9
+ * fingerprint -- see src/vault/crypto.ts). Slots are namespaced
10
+ * `byok.<slot>` so they cannot collide with other vault tenants.
11
+ *
12
+ * Migration: on first call the helper checks for the legacy file
13
+ * `~/.yujin-forge/provider_keys.json` (plaintext, mode 0600 only).
14
+ * If present:
15
+ * 1. Imports every recognised slot value into the vault.
16
+ * 2. Renames the legacy file to `provider_keys.json.legacy.bak`
17
+ * so a fresh chat session does not re-import it. The backup
18
+ * stays so the user can grep for emergency recovery if the
19
+ * vault somehow gets corrupted before the next chat turn.
20
+ *
21
+ * All callers (chat tool, server endpoints, voice providers,
22
+ * claude client init, CLI commands, license sync, etc) MUST go
23
+ * through this module. Direct reads of provider_keys.json are
24
+ * forbidden from alpha.44 onward; the audit_consumers tool will
25
+ * flag any re-introduction.
26
+ *
27
+ * ASCII-only.
28
+ */
29
+ import { promises as fs } from 'node:fs';
30
+ import path from 'node:path';
31
+ import os from 'node:os';
32
+ import { Vault } from '../vault/store.js';
33
+ import { configDir } from '../license/index.js';
34
+ const ALLOWED_SLOTS = [
35
+ /* Brain provider keys (one of these resolves the active tier
36
+ * in src/core/brain_config.ts). */
37
+ 'anthropic_api_key',
38
+ 'openai_api_key',
39
+ 'google_ai_key',
40
+ /* alpha.51 -- added brain providers reachable from
41
+ * cost_router. Slots registered so the BYOK CLI + vault
42
+ * recognise them; runtime wire happens in alpha.51b/52. */
43
+ 'deepseek_api_key',
44
+ 'xai_api_key',
45
+ 'mistral_api_key',
46
+ 'cohere_api_key',
47
+ /* Voice providers (decoupled from brain selection). */
48
+ 'google_stt_key',
49
+ 'google_tts_key',
50
+ 'whisper_api_key',
51
+ 'elevenlabs_api_key',
52
+ /* alpha.59z.17 HITO 6.4 -- F103 admin key. Stored locally so
53
+ * Pablo does not have to paste it for every promote/demote/
54
+ * reject/doctrine-update command. Matches the YUJIN_ADMIN_KEY
55
+ * secret configured in the HITO 4 worker. */
56
+ 'yujin_admin_key',
57
+ ];
58
+ export function listAllowedSlots() {
59
+ return ALLOWED_SLOTS;
60
+ }
61
+ /* alpha.59z.34 F101 slice 5 sub-slice 2 -- dynamic slot patterns
62
+ * for per-bridge MCP credentials. The bridge_id is user-controlled
63
+ * but the slot shape is constrained:
64
+ * mcp_<bridge_id>_token where bridge_id is [a-z0-9_-]{1,80}
65
+ *
66
+ * The regex is anchored + length-limited so a malformed bridge_id
67
+ * cannot exfiltrate into other vault keys via setKey('../foo').
68
+ * Vault.set itself also enforces ^[a-z][a-z0-9_-]*$ on the prefixed
69
+ * key, but defence-in-depth: we validate here too.
70
+ */
71
+ const DYNAMIC_SLOT_PATTERNS = [
72
+ /^mcp_[a-z0-9][a-z0-9_-]{0,78}_token$/,
73
+ ];
74
+ export function isAllowedSlot(s) {
75
+ if (ALLOWED_SLOTS.includes(s))
76
+ return true;
77
+ /* Type guard widening: dynamic slots are not in the ProviderSlot
78
+ * union, but for runtime callers passing `string` the guard still
79
+ * narrows enough at the static-known callsites. */
80
+ return DYNAMIC_SLOT_PATTERNS.some((re) => re.test(s));
81
+ }
82
+ /* Slot prefix in the vault. The Vault enforces
83
+ * ^[a-z][a-z0-9_-]*$ so we use an underscore, not a dot. */
84
+ const VAULT_PREFIX = 'byok_';
85
+ function legacyKeysFile() {
86
+ const home = process.env.HOME || process.env.USERPROFILE || os.homedir();
87
+ const base = process.env.YF_CONFIG_DIR || path.join(home, '.yujin-forge');
88
+ return path.join(base, 'provider_keys.json');
89
+ }
90
+ /** Cache the Vault open. Each ProviderKeys API call reuses the
91
+ * same instance so we don't re-derive the AES key on every read. */
92
+ let _vaultCache = null;
93
+ async function openVault() {
94
+ if (_vaultCache)
95
+ return _vaultCache;
96
+ _vaultCache = await Vault.open({ configDir: configDir() });
97
+ return _vaultCache;
98
+ }
99
+ /** Force a re-open (tests). */
100
+ export function _resetVaultCache() {
101
+ _vaultCache = null;
102
+ _migrationDone = false;
103
+ }
104
+ let _migrationDone = false;
105
+ /** Run once per process. Imports legacy plaintext JSON keys +
106
+ * any vault slots stored under the non-prefixed slot name
107
+ * (legacy from before alpha.44 OR from users following an old
108
+ * yf vault set instruction). Idempotent + tolerant of partial
109
+ * imports. */
110
+ export async function migrateLegacyIfNeeded() {
111
+ if (_migrationDone)
112
+ return { imported: [], skipped: [], legacy_present: false, vault_slots_migrated: [] };
113
+ _migrationDone = true;
114
+ const vault = await openVault();
115
+ const imported = [];
116
+ const skipped = [];
117
+ const vaultSlotsMigrated = [];
118
+ /* alpha.54 -- migrate vault slots that exist WITHOUT the
119
+ * byok_ prefix into the canonical prefixed slot. Happens when
120
+ * users follow an old guide ("yf vault set google_ai_key").
121
+ * Each migrated row also clears the source slot so the vault
122
+ * inventory stays clean. */
123
+ for (const slot of ALLOWED_SLOTS) {
124
+ const prefixed = VAULT_PREFIX + slot;
125
+ if (vault.has(prefixed))
126
+ continue; // already in canonical place
127
+ if (!vault.has(slot))
128
+ continue; // nothing in legacy slot either
129
+ try {
130
+ const v = vault.get(slot);
131
+ if (typeof v === 'string' && v.length >= 4) {
132
+ await vault.set(prefixed, v);
133
+ await vault.remove(slot);
134
+ vaultSlotsMigrated.push(slot);
135
+ }
136
+ }
137
+ catch {
138
+ /* if read fails (vault corruption on that row), skip */
139
+ }
140
+ }
141
+ /* Existing JSON legacy migration (alpha.44). */
142
+ const legacyFile = legacyKeysFile();
143
+ let raw;
144
+ try {
145
+ raw = await fs.readFile(legacyFile, 'utf-8');
146
+ }
147
+ catch (err) {
148
+ if (err.code === 'ENOENT') {
149
+ return { imported, skipped, legacy_present: false, vault_slots_migrated: vaultSlotsMigrated };
150
+ }
151
+ throw err;
152
+ }
153
+ let json;
154
+ try {
155
+ json = JSON.parse(raw);
156
+ }
157
+ catch {
158
+ return { imported, skipped, legacy_present: true, vault_slots_migrated: vaultSlotsMigrated };
159
+ }
160
+ for (const slot of ALLOWED_SLOTS) {
161
+ const val = json[slot];
162
+ if (typeof val !== 'string' || val.length < 4)
163
+ continue;
164
+ const vaultKey = VAULT_PREFIX + slot;
165
+ if (vault.has(vaultKey)) {
166
+ skipped.push(slot);
167
+ continue;
168
+ }
169
+ try {
170
+ await vault.set(vaultKey, val);
171
+ imported.push(slot);
172
+ }
173
+ catch {
174
+ skipped.push(slot);
175
+ }
176
+ }
177
+ /* alpha.59z.123 -- DO NOT rename the legacy file. The previous
178
+ * rename moved provider_keys.json to provider_keys.json.legacy.bak
179
+ * after importing the API keys, which silently dropped the
180
+ * brain_provider_preference + model overrides (those fields are
181
+ * never imported to the vault). The next `yf keys setup --show`
182
+ * would then read an empty legacy file and report all keys as
183
+ * "(none)" even though they were live in the vault. Worse, the
184
+ * worker's brain_provider_missing check uses the same legacy
185
+ * file. Keeping the legacy file in place fixes both: vault has
186
+ * the keys (canonical runtime), legacy keeps preference + model
187
+ * alias (until a future alpha promotes those to vault slots too).
188
+ * Re-imports are no-ops because vault.has() returns true. */
189
+ return { imported, skipped, legacy_present: true, vault_slots_migrated: vaultSlotsMigrated };
190
+ }
191
+ /** Read a BYOK key plaintext. Returns null when the slot is not
192
+ * set or the slot name is invalid. Migrates legacy storage on
193
+ * first call. */
194
+ export async function getKey(slot) {
195
+ if (!isAllowedSlot(slot))
196
+ return null;
197
+ await migrateLegacyIfNeeded();
198
+ const vault = await openVault();
199
+ const vaultKey = VAULT_PREFIX + slot;
200
+ if (!vault.has(vaultKey))
201
+ return null;
202
+ try {
203
+ return vault.get(vaultKey);
204
+ }
205
+ catch {
206
+ return null;
207
+ }
208
+ }
209
+ /** Set a BYOK key. Empty / null value clears the slot. */
210
+ export async function setKey(slot, value) {
211
+ if (!isAllowedSlot(slot))
212
+ throw new Error('provider_keys: slot not allowed: ' + slot);
213
+ await migrateLegacyIfNeeded();
214
+ const vault = await openVault();
215
+ const vaultKey = VAULT_PREFIX + slot;
216
+ if (value == null || value === '') {
217
+ await vault.remove(vaultKey);
218
+ return;
219
+ }
220
+ if (typeof value !== 'string' || value.length < 8) {
221
+ throw new Error('provider_keys: value must be a string >= 8 chars (got ' + (typeof value) + ', length=' + (typeof value === 'string' ? value.length : 0) + ')');
222
+ }
223
+ await vault.set(vaultKey, value);
224
+ }
225
+ /** Has-check (no plaintext leak). */
226
+ export async function hasKey(slot) {
227
+ if (!isAllowedSlot(slot))
228
+ return false;
229
+ await migrateLegacyIfNeeded();
230
+ const vault = await openVault();
231
+ return vault.has(VAULT_PREFIX + slot);
232
+ }
233
+ /** Status snapshot of all allowed slots -- booleans, not values. */
234
+ export async function listStatus() {
235
+ await migrateLegacyIfNeeded();
236
+ const vault = await openVault();
237
+ const out = {};
238
+ for (const slot of ALLOWED_SLOTS) {
239
+ out[slot] = vault.has(VAULT_PREFIX + slot);
240
+ }
241
+ return out;
242
+ }
243
+ /** Convenience: synchronous-ish wrappers for the legacy code paths
244
+ * that did `readKeys(): Record<string, unknown>` and expected a
245
+ * full snapshot. Returns plaintext values for set slots; null
246
+ * for unset. Keep call sites aware this DECRYPTS everything --
247
+ * do not log the return. */
248
+ export async function readAllPlaintext() {
249
+ await migrateLegacyIfNeeded();
250
+ const vault = await openVault();
251
+ const out = {};
252
+ for (const slot of ALLOWED_SLOTS) {
253
+ if (vault.has(VAULT_PREFIX + slot)) {
254
+ try {
255
+ out[slot] = vault.get(VAULT_PREFIX + slot);
256
+ }
257
+ catch {
258
+ out[slot] = null;
259
+ }
260
+ }
261
+ else {
262
+ out[slot] = null;
263
+ }
264
+ }
265
+ return out;
266
+ }
267
+ //# sourceMappingURL=provider_keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider_keys.js","sourceRoot":"","sources":["../../src/core/provider_keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type BrainProvider } from './brain_config.js';
2
+ export interface ProviderModel {
3
+ id: string;
4
+ display_name: string;
5
+ }
6
+ export interface ModelListResult {
7
+ provider: BrainProvider;
8
+ models: ProviderModel[];
9
+ /** 'live' = traido de la API del provider; 'static' = fallback
10
+ * embebido (sin key o endpoint inalcanzable). */
11
+ source: 'live' | 'static';
12
+ /** Presente cuando source='static' por un error (no por falta
13
+ * de key). Truncado, sin secretos. */
14
+ error?: string;
15
+ }
16
+ /** Test hook. */
17
+ export declare function _resetProviderModelsCache(): void;
18
+ /**
19
+ * Lista los modelos disponibles para un provider. Nunca lanza:
20
+ * degrada a la lista estatica con `source: 'static'`.
21
+ */
22
+ export declare function listProviderModels(provider: BrainProvider, opts?: {
23
+ fetchImpl?: typeof fetch;
24
+ timeoutMs?: number;
25
+ api_key?: string | null;
26
+ }): Promise<ModelListResult>;
27
+ //# sourceMappingURL=provider_models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider_models.d.ts","sourceRoot":"","sources":["../../src/core/provider_models.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE7E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB;sDACkD;IAClD,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B;2CACuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwCD,iBAAiB;AACjB,wBAAgB,yBAAyB,IAAI,IAAI,CAAoB;AAmErE;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,aAAa,EACvB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GACnF,OAAO,CAAC,eAAe,CAAC,CAuC1B"}