@nac3/forge-cli 0.2.0-alpha.5 → 0.2.0-alpha.59z.119

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 (768) 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 +5819 -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 +1905 -54
  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 +78 -0
  87. package/dist/chat/tools/git.js.map +1 -1
  88. package/dist/chat/tools/keys.d.ts +9 -0
  89. package/dist/chat/tools/keys.d.ts.map +1 -0
  90. package/dist/chat/tools/keys.js +152 -0
  91. package/dist/chat/tools/keys.js.map +1 -0
  92. package/dist/chat/tools/misc_verbs.d.ts +36 -0
  93. package/dist/chat/tools/misc_verbs.d.ts.map +1 -0
  94. package/dist/chat/tools/misc_verbs.js +405 -0
  95. package/dist/chat/tools/misc_verbs.js.map +1 -0
  96. package/dist/chat/tools/nac3_invoke.d.ts +53 -0
  97. package/dist/chat/tools/nac3_invoke.d.ts.map +1 -0
  98. package/dist/chat/tools/nac3_invoke.js +886 -0
  99. package/dist/chat/tools/nac3_invoke.js.map +1 -0
  100. package/dist/chat/tools/pizarron.d.ts +40 -0
  101. package/dist/chat/tools/pizarron.d.ts.map +1 -0
  102. package/dist/chat/tools/pizarron.js +123 -0
  103. package/dist/chat/tools/pizarron.js.map +1 -0
  104. package/dist/chat/tools/project_lifecycle.d.ts +24 -0
  105. package/dist/chat/tools/project_lifecycle.d.ts.map +1 -0
  106. package/dist/chat/tools/project_lifecycle.js +184 -0
  107. package/dist/chat/tools/project_lifecycle.js.map +1 -0
  108. package/dist/chat/tools/reader.d.ts.map +1 -1
  109. package/dist/chat/tools/reader.js +144 -1
  110. package/dist/chat/tools/reader.js.map +1 -1
  111. package/dist/chat/tools/shell.d.ts +58 -0
  112. package/dist/chat/tools/shell.d.ts.map +1 -0
  113. package/dist/chat/tools/shell.js +253 -0
  114. package/dist/chat/tools/shell.js.map +1 -0
  115. package/dist/chat/tools/workflow.d.ts +45 -0
  116. package/dist/chat/tools/workflow.d.ts.map +1 -0
  117. package/dist/chat/tools/workflow.js +404 -0
  118. package/dist/chat/tools/workflow.js.map +1 -0
  119. package/dist/chat/tools.d.ts +27 -0
  120. package/dist/chat/tools.d.ts.map +1 -1
  121. package/dist/chat/tools.js +362 -13
  122. package/dist/chat/tools.js.map +1 -1
  123. package/dist/chat/workflow_inject.d.ts +52 -0
  124. package/dist/chat/workflow_inject.d.ts.map +1 -0
  125. package/dist/chat/workflow_inject.js +346 -0
  126. package/dist/chat/workflow_inject.js.map +1 -0
  127. package/dist/commands/agent.d.ts +22 -0
  128. package/dist/commands/agent.d.ts.map +1 -0
  129. package/dist/commands/agent.js +190 -0
  130. package/dist/commands/agent.js.map +1 -0
  131. package/dist/commands/approve.d.ts +32 -0
  132. package/dist/commands/approve.d.ts.map +1 -0
  133. package/dist/commands/approve.js +198 -0
  134. package/dist/commands/approve.js.map +1 -0
  135. package/dist/commands/block.d.ts +28 -0
  136. package/dist/commands/block.d.ts.map +1 -0
  137. package/dist/commands/block.js +189 -0
  138. package/dist/commands/block.js.map +1 -0
  139. package/dist/commands/bootstrap.d.ts +35 -0
  140. package/dist/commands/bootstrap.d.ts.map +1 -0
  141. package/dist/commands/bootstrap.js +205 -0
  142. package/dist/commands/bootstrap.js.map +1 -0
  143. package/dist/commands/brain.d.ts +17 -0
  144. package/dist/commands/brain.d.ts.map +1 -0
  145. package/dist/commands/brain.js +129 -0
  146. package/dist/commands/brain.js.map +1 -0
  147. package/dist/commands/chat.d.ts +3 -0
  148. package/dist/commands/chat.d.ts.map +1 -1
  149. package/dist/commands/chat.js +112 -1
  150. package/dist/commands/chat.js.map +1 -1
  151. package/dist/commands/clarify.d.ts +30 -0
  152. package/dist/commands/clarify.d.ts.map +1 -0
  153. package/dist/commands/clarify.js +671 -0
  154. package/dist/commands/clarify.js.map +1 -0
  155. package/dist/commands/discover.d.ts +30 -0
  156. package/dist/commands/discover.d.ts.map +1 -0
  157. package/dist/commands/discover.js +178 -0
  158. package/dist/commands/discover.js.map +1 -0
  159. package/dist/commands/doctor.js +26 -4
  160. package/dist/commands/doctor.js.map +1 -1
  161. package/dist/commands/doctrine.d.ts +24 -0
  162. package/dist/commands/doctrine.d.ts.map +1 -0
  163. package/dist/commands/doctrine.js +106 -0
  164. package/dist/commands/doctrine.js.map +1 -0
  165. package/dist/commands/doctrines.d.ts +21 -0
  166. package/dist/commands/doctrines.d.ts.map +1 -0
  167. package/dist/commands/doctrines.js +158 -0
  168. package/dist/commands/doctrines.js.map +1 -0
  169. package/dist/commands/graph.d.ts +21 -0
  170. package/dist/commands/graph.d.ts.map +1 -0
  171. package/dist/commands/graph.js +363 -0
  172. package/dist/commands/graph.js.map +1 -0
  173. package/dist/commands/keys_setup.d.ts.map +1 -1
  174. package/dist/commands/keys_setup.js +80 -0
  175. package/dist/commands/keys_setup.js.map +1 -1
  176. package/dist/commands/legacy-audit.d.ts +34 -0
  177. package/dist/commands/legacy-audit.d.ts.map +1 -0
  178. package/dist/commands/legacy-audit.js +270 -0
  179. package/dist/commands/legacy-audit.js.map +1 -0
  180. package/dist/commands/lessons.d.ts +28 -0
  181. package/dist/commands/lessons.d.ts.map +1 -0
  182. package/dist/commands/lessons.js +309 -0
  183. package/dist/commands/lessons.js.map +1 -0
  184. package/dist/commands/license.d.ts.map +1 -1
  185. package/dist/commands/license.js +56 -1
  186. package/dist/commands/license.js.map +1 -1
  187. package/dist/commands/limits.d.ts +15 -0
  188. package/dist/commands/limits.d.ts.map +1 -0
  189. package/dist/commands/limits.js +51 -0
  190. package/dist/commands/limits.js.map +1 -0
  191. package/dist/commands/manifest-cli.d.ts +12 -0
  192. package/dist/commands/manifest-cli.d.ts.map +1 -0
  193. package/dist/commands/manifest-cli.js +42 -0
  194. package/dist/commands/manifest-cli.js.map +1 -0
  195. package/dist/commands/mcp.d.ts +24 -0
  196. package/dist/commands/mcp.d.ts.map +1 -0
  197. package/dist/commands/mcp.js +163 -0
  198. package/dist/commands/mcp.js.map +1 -0
  199. package/dist/commands/nac3.d.ts +22 -0
  200. package/dist/commands/nac3.d.ts.map +1 -0
  201. package/dist/commands/nac3.js +125 -0
  202. package/dist/commands/nac3.js.map +1 -0
  203. package/dist/commands/operate.d.ts +22 -0
  204. package/dist/commands/operate.d.ts.map +1 -0
  205. package/dist/commands/operate.js +523 -0
  206. package/dist/commands/operate.js.map +1 -0
  207. package/dist/commands/qa.d.ts +24 -0
  208. package/dist/commands/qa.d.ts.map +1 -0
  209. package/dist/commands/qa.js +349 -0
  210. package/dist/commands/qa.js.map +1 -0
  211. package/dist/commands/spec.d.ts +38 -0
  212. package/dist/commands/spec.d.ts.map +1 -0
  213. package/dist/commands/spec.js +256 -0
  214. package/dist/commands/spec.js.map +1 -0
  215. package/dist/commands/support.d.ts +22 -0
  216. package/dist/commands/support.d.ts.map +1 -0
  217. package/dist/commands/support.js +165 -0
  218. package/dist/commands/support.js.map +1 -0
  219. package/dist/commands/triage.d.ts +34 -0
  220. package/dist/commands/triage.d.ts.map +1 -0
  221. package/dist/commands/triage.js +228 -0
  222. package/dist/commands/triage.js.map +1 -0
  223. package/dist/commands/vault-inventory.d.ts +30 -0
  224. package/dist/commands/vault-inventory.d.ts.map +1 -0
  225. package/dist/commands/vault-inventory.js +222 -0
  226. package/dist/commands/vault-inventory.js.map +1 -0
  227. package/dist/commands/vault.d.ts.map +1 -1
  228. package/dist/commands/vault.js +5 -0
  229. package/dist/commands/vault.js.map +1 -1
  230. package/dist/commands/voice.d.ts.map +1 -1
  231. package/dist/commands/voice.js +47 -4
  232. package/dist/commands/voice.js.map +1 -1
  233. package/dist/commands/workflow-coverage.d.ts +30 -0
  234. package/dist/commands/workflow-coverage.d.ts.map +1 -0
  235. package/dist/commands/workflow-coverage.js +138 -0
  236. package/dist/commands/workflow-coverage.js.map +1 -0
  237. package/dist/core/ansi_strip.d.ts +39 -0
  238. package/dist/core/ansi_strip.d.ts.map +1 -0
  239. package/dist/core/ansi_strip.js +71 -0
  240. package/dist/core/ansi_strip.js.map +1 -0
  241. package/dist/core/audit_log.d.ts +43 -0
  242. package/dist/core/audit_log.d.ts.map +1 -0
  243. package/dist/core/audit_log.js +80 -0
  244. package/dist/core/audit_log.js.map +1 -0
  245. package/dist/core/brain_config.d.ts +33 -0
  246. package/dist/core/brain_config.d.ts.map +1 -0
  247. package/dist/core/brain_config.js +132 -0
  248. package/dist/core/brain_config.js.map +1 -0
  249. package/dist/core/budget.d.ts +96 -0
  250. package/dist/core/budget.d.ts.map +1 -0
  251. package/dist/core/budget.js +300 -0
  252. package/dist/core/budget.js.map +1 -0
  253. package/dist/core/cost_meter.d.ts +35 -0
  254. package/dist/core/cost_meter.d.ts.map +1 -0
  255. package/dist/core/cost_meter.js +111 -0
  256. package/dist/core/cost_meter.js.map +1 -0
  257. package/dist/core/cost_router.d.ts +106 -0
  258. package/dist/core/cost_router.d.ts.map +1 -0
  259. package/dist/core/cost_router.js +465 -0
  260. package/dist/core/cost_router.js.map +1 -0
  261. package/dist/core/doctrine_resolver.d.ts +23 -0
  262. package/dist/core/doctrine_resolver.d.ts.map +1 -0
  263. package/dist/core/doctrine_resolver.js +108 -0
  264. package/dist/core/doctrine_resolver.js.map +1 -0
  265. package/dist/core/error_catalog.d.ts +80 -0
  266. package/dist/core/error_catalog.d.ts.map +1 -0
  267. package/dist/core/error_catalog.js +168 -0
  268. package/dist/core/error_catalog.js.map +1 -0
  269. package/dist/core/error_formatter.d.ts +30 -0
  270. package/dist/core/error_formatter.d.ts.map +1 -0
  271. package/dist/core/error_formatter.js +155 -0
  272. package/dist/core/error_formatter.js.map +1 -0
  273. package/dist/core/incomplete_detector.d.ts +51 -0
  274. package/dist/core/incomplete_detector.d.ts.map +1 -0
  275. package/dist/core/incomplete_detector.js +140 -0
  276. package/dist/core/incomplete_detector.js.map +1 -0
  277. package/dist/core/learnings_client.d.ts +104 -0
  278. package/dist/core/learnings_client.d.ts.map +1 -0
  279. package/dist/core/learnings_client.js +262 -0
  280. package/dist/core/learnings_client.js.map +1 -0
  281. package/dist/core/limits_config.d.ts +76 -0
  282. package/dist/core/limits_config.d.ts.map +1 -0
  283. package/dist/core/limits_config.js +297 -0
  284. package/dist/core/limits_config.js.map +1 -0
  285. package/dist/core/provider_keys.d.ts +35 -0
  286. package/dist/core/provider_keys.d.ts.map +1 -0
  287. package/dist/core/provider_keys.js +260 -0
  288. package/dist/core/provider_keys.js.map +1 -0
  289. package/dist/core/reasoning_gate.d.ts +72 -0
  290. package/dist/core/reasoning_gate.d.ts.map +1 -0
  291. package/dist/core/reasoning_gate.js +192 -0
  292. package/dist/core/reasoning_gate.js.map +1 -0
  293. package/dist/core/shell_classifier.d.ts +49 -0
  294. package/dist/core/shell_classifier.d.ts.map +1 -0
  295. package/dist/core/shell_classifier.js +159 -0
  296. package/dist/core/shell_classifier.js.map +1 -0
  297. package/dist/core/sq_resolver.d.ts +14 -0
  298. package/dist/core/sq_resolver.d.ts.map +1 -0
  299. package/dist/core/sq_resolver.js +230 -0
  300. package/dist/core/sq_resolver.js.map +1 -0
  301. package/dist/core/truncation_detector.d.ts +68 -0
  302. package/dist/core/truncation_detector.d.ts.map +1 -0
  303. package/dist/core/truncation_detector.js +115 -0
  304. package/dist/core/truncation_detector.js.map +1 -0
  305. package/dist/core/turn_classifier.d.ts +62 -0
  306. package/dist/core/turn_classifier.d.ts.map +1 -0
  307. package/dist/core/turn_classifier.js +213 -0
  308. package/dist/core/turn_classifier.js.map +1 -0
  309. package/dist/core/whats_new.d.ts +42 -0
  310. package/dist/core/whats_new.d.ts.map +1 -0
  311. package/dist/core/whats_new.js +214 -0
  312. package/dist/core/whats_new.js.map +1 -0
  313. package/dist/deploy/adapter.d.ts +93 -0
  314. package/dist/deploy/adapter.d.ts.map +1 -0
  315. package/dist/deploy/adapter.js +42 -0
  316. package/dist/deploy/adapter.js.map +1 -0
  317. package/dist/deploy/aws_adapter.d.ts +28 -0
  318. package/dist/deploy/aws_adapter.d.ts.map +1 -0
  319. package/dist/deploy/aws_adapter.js +98 -0
  320. package/dist/deploy/aws_adapter.js.map +1 -0
  321. package/dist/deploy/cloudflare.d.ts +24 -0
  322. package/dist/deploy/cloudflare.d.ts.map +1 -0
  323. package/dist/deploy/cloudflare.js +169 -0
  324. package/dist/deploy/cloudflare.js.map +1 -0
  325. package/dist/docs/LIMITED_RESPONSIBILITY.md +216 -0
  326. package/dist/docs/PRIVACY_POLICY.md +169 -0
  327. package/dist/docs/SQ.md +1397 -0
  328. package/dist/docs/SQ_BY_STEP.yaml +147 -0
  329. package/dist/docs/doctrine/accessibility.md +78 -0
  330. package/dist/docs/doctrine/agent-orchestrator.md +76 -0
  331. package/dist/docs/doctrine/byok-vs-managed.md +81 -0
  332. package/dist/docs/doctrine/cost-router-escalation.md +73 -0
  333. package/dist/docs/doctrine/explain-results.md +90 -0
  334. package/dist/docs/doctrine/g-doc.md +46 -0
  335. package/dist/docs/doctrine/gates.md +21 -0
  336. package/dist/docs/doctrine/lessons-workflow.md +68 -0
  337. package/dist/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
  338. package/dist/docs/doctrine/nac3-attrs.md +23 -0
  339. package/dist/docs/doctrine/office-tools.md +102 -0
  340. package/dist/docs/doctrine/pizarron.md +52 -0
  341. package/dist/docs/doctrine/r8-modal.md +60 -0
  342. package/dist/docs/doctrine/safety-refusals.md +73 -0
  343. package/dist/docs/doctrine/verb-composition.md +68 -0
  344. package/dist/docs/doctrine/workflow-phases.md +108 -0
  345. package/dist/docs/doctrine/workflow.md +58 -0
  346. package/dist/docs/doctrine/yf-commands.md +49 -0
  347. package/dist/json/query.d.ts +38 -0
  348. package/dist/json/query.d.ts.map +1 -0
  349. package/dist/json/query.js +177 -0
  350. package/dist/json/query.js.map +1 -0
  351. package/dist/license/hito4_client.d.ts +19 -0
  352. package/dist/license/hito4_client.d.ts.map +1 -1
  353. package/dist/license/hito4_client.js +110 -0
  354. package/dist/license/hito4_client.js.map +1 -1
  355. package/dist/license/index.d.ts.map +1 -1
  356. package/dist/license/index.js +7 -0
  357. package/dist/license/index.js.map +1 -1
  358. package/dist/license/sync.d.ts +54 -0
  359. package/dist/license/sync.d.ts.map +1 -0
  360. package/dist/license/sync.js +138 -0
  361. package/dist/license/sync.js.map +1 -0
  362. package/dist/llm/cohere_client.d.ts +81 -0
  363. package/dist/llm/cohere_client.d.ts.map +1 -0
  364. package/dist/llm/cohere_client.js +195 -0
  365. package/dist/llm/cohere_client.js.map +1 -0
  366. package/dist/llm/deepseek_client.d.ts +63 -0
  367. package/dist/llm/deepseek_client.d.ts.map +1 -0
  368. package/dist/llm/deepseek_client.js +188 -0
  369. package/dist/llm/deepseek_client.js.map +1 -0
  370. package/dist/llm/gemini_client.d.ts +78 -0
  371. package/dist/llm/gemini_client.d.ts.map +1 -0
  372. package/dist/llm/gemini_client.js +189 -0
  373. package/dist/llm/gemini_client.js.map +1 -0
  374. package/dist/llm/managed_client.d.ts +70 -0
  375. package/dist/llm/managed_client.d.ts.map +1 -0
  376. package/dist/llm/managed_client.js +251 -0
  377. package/dist/llm/managed_client.js.map +1 -0
  378. package/dist/llm/mistral_client.d.ts +54 -0
  379. package/dist/llm/mistral_client.d.ts.map +1 -0
  380. package/dist/llm/mistral_client.js +174 -0
  381. package/dist/llm/mistral_client.js.map +1 -0
  382. package/dist/llm/multi_provider_client.d.ts +57 -0
  383. package/dist/llm/multi_provider_client.d.ts.map +1 -0
  384. package/dist/llm/multi_provider_client.js +109 -0
  385. package/dist/llm/multi_provider_client.js.map +1 -0
  386. package/dist/llm/openai_client.d.ts +77 -0
  387. package/dist/llm/openai_client.d.ts.map +1 -0
  388. package/dist/llm/openai_client.js +200 -0
  389. package/dist/llm/openai_client.js.map +1 -0
  390. package/dist/llm/xai_client.d.ts +51 -0
  391. package/dist/llm/xai_client.d.ts.map +1 -0
  392. package/dist/llm/xai_client.js +174 -0
  393. package/dist/llm/xai_client.js.map +1 -0
  394. package/dist/mcp/bridge_registry.d.ts +77 -0
  395. package/dist/mcp/bridge_registry.d.ts.map +1 -0
  396. package/dist/mcp/bridge_registry.js +220 -0
  397. package/dist/mcp/bridge_registry.js.map +1 -0
  398. package/dist/mcp/config.d.ts +25 -0
  399. package/dist/mcp/config.d.ts.map +1 -0
  400. package/dist/mcp/config.js +116 -0
  401. package/dist/mcp/config.js.map +1 -0
  402. package/dist/mcp/protocol_client.d.ts +63 -0
  403. package/dist/mcp/protocol_client.d.ts.map +1 -0
  404. package/dist/mcp/protocol_client.js +340 -0
  405. package/dist/mcp/protocol_client.js.map +1 -0
  406. package/dist/mcp/state.d.ts +38 -0
  407. package/dist/mcp/state.d.ts.map +1 -0
  408. package/dist/mcp/state.js +144 -0
  409. package/dist/mcp/state.js.map +1 -0
  410. package/dist/migrate/ai-decorator.d.ts.map +1 -1
  411. package/dist/migrate/ai-decorator.js +33 -145
  412. package/dist/migrate/ai-decorator.js.map +1 -1
  413. package/dist/nac3/approval_queue.d.ts +36 -0
  414. package/dist/nac3/approval_queue.d.ts.map +1 -0
  415. package/dist/nac3/approval_queue.js +105 -0
  416. package/dist/nac3/approval_queue.js.map +1 -0
  417. package/dist/nac3/backend_tools.d.ts +89 -0
  418. package/dist/nac3/backend_tools.d.ts.map +1 -0
  419. package/dist/nac3/backend_tools.js +271 -0
  420. package/dist/nac3/backend_tools.js.map +1 -0
  421. package/dist/nac3/dispatch_log.d.ts +35 -0
  422. package/dist/nac3/dispatch_log.d.ts.map +1 -0
  423. package/dist/nac3/dispatch_log.js +126 -0
  424. package/dist/nac3/dispatch_log.js.map +1 -0
  425. package/dist/nac3/internal_manifest.d.ts +62 -0
  426. package/dist/nac3/internal_manifest.d.ts.map +1 -0
  427. package/dist/nac3/internal_manifest.js +1846 -0
  428. package/dist/nac3/internal_manifest.js.map +1 -0
  429. package/dist/nac3/manifest_lazy.d.ts +71 -0
  430. package/dist/nac3/manifest_lazy.d.ts.map +1 -0
  431. package/dist/nac3/manifest_lazy.js +141 -0
  432. package/dist/nac3/manifest_lazy.js.map +1 -0
  433. package/dist/nac3/verb_tier_map.d.ts +80 -0
  434. package/dist/nac3/verb_tier_map.d.ts.map +1 -0
  435. package/dist/nac3/verb_tier_map.js +159 -0
  436. package/dist/nac3/verb_tier_map.js.map +1 -0
  437. package/dist/office/excel.d.ts +110 -0
  438. package/dist/office/excel.d.ts.map +1 -0
  439. package/dist/office/excel.js +276 -0
  440. package/dist/office/excel.js.map +1 -0
  441. package/dist/office/pdf.d.ts +35 -0
  442. package/dist/office/pdf.d.ts.map +1 -0
  443. package/dist/office/pdf.js +70 -0
  444. package/dist/office/pdf.js.map +1 -0
  445. package/dist/office/word.d.ts +64 -0
  446. package/dist/office/word.d.ts.map +1 -0
  447. package/dist/office/word.js +243 -0
  448. package/dist/office/word.js.map +1 -0
  449. package/dist/qa/brain_matrix/ab_runner.d.ts +44 -0
  450. package/dist/qa/brain_matrix/ab_runner.d.ts.map +1 -0
  451. package/dist/qa/brain_matrix/ab_runner.js +144 -0
  452. package/dist/qa/brain_matrix/ab_runner.js.map +1 -0
  453. package/dist/qa/brain_matrix/brains.json +80 -0
  454. package/dist/qa/brain_matrix/compare.d.ts +27 -0
  455. package/dist/qa/brain_matrix/compare.d.ts.map +1 -0
  456. package/dist/qa/brain_matrix/compare.js +122 -0
  457. package/dist/qa/brain_matrix/compare.js.map +1 -0
  458. package/dist/qa/brain_matrix/fake_brain.d.ts +36 -0
  459. package/dist/qa/brain_matrix/fake_brain.d.ts.map +1 -0
  460. package/dist/qa/brain_matrix/fake_brain.js +27 -0
  461. package/dist/qa/brain_matrix/fake_brain.js.map +1 -0
  462. package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_intent.json +22 -0
  463. package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_no_speak_default.json +23 -0
  464. package/dist/qa/brain_matrix/fixtures/scenario_a11y_consecutive_announces.json +37 -0
  465. package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_action.json +22 -0
  466. package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_with_shortcut.json +22 -0
  467. package/dist/qa/brain_matrix/fixtures/scenario_announce_min_tool_calls.json +23 -0
  468. package/dist/qa/brain_matrix/fixtures/scenario_app_invoke_happy_path.json +65 -0
  469. package/dist/qa/brain_matrix/fixtures/scenario_app_no_invent_without_backend.json +18 -0
  470. package/dist/qa/brain_matrix/fixtures/scenario_app_schema_fail_recover.json +48 -0
  471. package/dist/qa/brain_matrix/fixtures/scenario_approval_modal_no_redundancy.json +21 -0
  472. package/dist/qa/brain_matrix/fixtures/scenario_args_redacted_in_audit.json +17 -0
  473. package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent.json +19 -0
  474. package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent_en.json +19 -0
  475. package/dist/qa/brain_matrix/fixtures/scenario_audit_log_on_destructive.json +18 -0
  476. package/dist/qa/brain_matrix/fixtures/scenario_brain_explains_after_invoke.json +28 -0
  477. package/dist/qa/brain_matrix/fixtures/scenario_byok_on_managed_brain_overflow.json +28 -0
  478. package/dist/qa/brain_matrix/fixtures/scenario_byok_required_policy.json +35 -0
  479. package/dist/qa/brain_matrix/fixtures/scenario_concise_no_loop.json +23 -0
  480. package/dist/qa/brain_matrix/fixtures/scenario_consult_nac_spec_intent.json +19 -0
  481. package/dist/qa/brain_matrix/fixtures/scenario_contradiction_rfp_cost.json +38 -0
  482. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_attachment_frontier.json +24 -0
  483. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_escalation_explicit.json +23 -0
  484. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_idle_reset.json +24 -0
  485. package/dist/qa/brain_matrix/fixtures/scenario_csv_via_excel_read.json +22 -0
  486. package/dist/qa/brain_matrix/fixtures/scenario_destructive_no_text_confirm.json +20 -0
  487. package/dist/qa/brain_matrix/fixtures/scenario_diff_explains_changes.json +32 -0
  488. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_after_unknown_intent.json +17 -0
  489. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_a11y.json +24 -0
  490. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_agent_orchestrator.json +24 -0
  491. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_byok_vs_managed.json +24 -0
  492. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_cost_router.json +24 -0
  493. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_g_doc.json +24 -0
  494. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_gates.json +23 -0
  495. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_intent_en.json +19 -0
  496. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_lessons_workflow.json +24 -0
  497. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_mcp_lifecycle.json +24 -0
  498. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_nac3_attrs.json +24 -0
  499. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_office.json +24 -0
  500. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_pizarron.json +23 -0
  501. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_r8_modal.json +23 -0
  502. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow.json +23 -0
  503. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow_phases.json +24 -0
  504. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_yf_commands.json +24 -0
  505. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_explain_results.json +22 -0
  506. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_safety_refusals.json +22 -0
  507. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_verb_composition.json +22 -0
  508. package/dist/qa/brain_matrix/fixtures/scenario_eco_defers_complex.json +17 -0
  509. package/dist/qa/brain_matrix/fixtures/scenario_eco_short_query.json +27 -0
  510. package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent.json +20 -0
  511. package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent_en.json +20 -0
  512. package/dist/qa/brain_matrix/fixtures/scenario_env_no_secret_leak.json +21 -0
  513. package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression.json +35 -0
  514. package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression_en.json +21 -0
  515. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_handles_csv_refusal.json +28 -0
  516. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent.json +20 -0
  517. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent_en.json +20 -0
  518. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_then_list.json +34 -0
  519. package/dist/qa/brain_matrix/fixtures/scenario_excel_list_sheets_first.json +22 -0
  520. package/dist/qa/brain_matrix/fixtures/scenario_excel_sheet_named.json +23 -0
  521. package/dist/qa/brain_matrix/fixtures/scenario_explain_voice_yes.json +22 -0
  522. package/dist/qa/brain_matrix/fixtures/scenario_explains_forge_error.json +39 -0
  523. package/dist/qa/brain_matrix/fixtures/scenario_focus_after_modal_open.json +29 -0
  524. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent.json +21 -0
  525. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent_en.json +20 -0
  526. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_with_glob.json +22 -0
  527. package/dist/qa/brain_matrix/fixtures/scenario_fs_mkdir_intent.json +20 -0
  528. package/dist/qa/brain_matrix/fixtures/scenario_fs_move_intent.json +20 -0
  529. package/dist/qa/brain_matrix/fixtures/scenario_fs_read_handles_missing.json +28 -0
  530. package/dist/qa/brain_matrix/fixtures/scenario_fs_stat_before_read.json +22 -0
  531. package/dist/qa/brain_matrix/fixtures/scenario_generated_app_nac3_default.json +24 -0
  532. package/dist/qa/brain_matrix/fixtures/scenario_git_branch_list_intent.json +20 -0
  533. package/dist/qa/brain_matrix/fixtures/scenario_git_diff_intent.json +20 -0
  534. package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent.json +20 -0
  535. package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent_en.json +20 -0
  536. package/dist/qa/brain_matrix/fixtures/scenario_git_pull_intent.json +19 -0
  537. package/dist/qa/brain_matrix/fixtures/scenario_git_push_intent.json +20 -0
  538. package/dist/qa/brain_matrix/fixtures/scenario_git_show_metadata_only.json +22 -0
  539. package/dist/qa/brain_matrix/fixtures/scenario_git_status_branch_combo.json +44 -0
  540. package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent.json +20 -0
  541. package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent_en.json +20 -0
  542. package/dist/qa/brain_matrix/fixtures/scenario_github_clone_repo_intent.json +20 -0
  543. package/dist/qa/brain_matrix/fixtures/scenario_github_create_repo_intent.json +20 -0
  544. package/dist/qa/brain_matrix/fixtures/scenario_id_format_in_reply.json +27 -0
  545. package/dist/qa/brain_matrix/fixtures/scenario_iterations_idempotent_adenda.json +27 -0
  546. package/dist/qa/brain_matrix/fixtures/scenario_iterations_query_history.json +29 -0
  547. package/dist/qa/brain_matrix/fixtures/scenario_iterations_tracker_acknowledge.json +28 -0
  548. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_handles_malformed.json +34 -0
  549. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent.json +30 -0
  550. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent_en.json +30 -0
  551. package/dist/qa/brain_matrix/fixtures/scenario_json_query_extract.json +23 -0
  552. package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent.json +20 -0
  553. package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent_en.json +20 -0
  554. package/dist/qa/brain_matrix/fixtures/scenario_keys_set_intent.json +20 -0
  555. package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent.json +20 -0
  556. package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent_en.json +20 -0
  557. package/dist/qa/brain_matrix/fixtures/scenario_lazy_complex_verb.json +27 -0
  558. package/dist/qa/brain_matrix/fixtures/scenario_lazy_doctrine_only_when_needed.json +17 -0
  559. package/dist/qa/brain_matrix/fixtures/scenario_lazy_simple_verb.json +21 -0
  560. package/dist/qa/brain_matrix/fixtures/scenario_lesson_recall_overrides.json +22 -0
  561. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_restart_app_intent.json +19 -0
  562. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent.json +19 -0
  563. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent_en.json +19 -0
  564. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent.json +20 -0
  565. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent_en.json +20 -0
  566. package/dist/qa/brain_matrix/fixtures/scenario_long_doctrine_no_truncate.json +23 -0
  567. package/dist/qa/brain_matrix/fixtures/scenario_manifest_read_intent.json +19 -0
  568. package/dist/qa/brain_matrix/fixtures/scenario_manual_open_intent.json +19 -0
  569. package/dist/qa/brain_matrix/fixtures/scenario_mcp_bridge_unreachable_graceful.json +39 -0
  570. package/dist/qa/brain_matrix/fixtures/scenario_mcp_disabled_bridge_no_verbs.json +18 -0
  571. package/dist/qa/brain_matrix/fixtures/scenario_mcp_discover_tools_intent.json +19 -0
  572. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invariant_1_no_verbs.json +19 -0
  573. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_two_hop.json +68 -0
  574. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_with_auth_loaded.json +76 -0
  575. package/dist/qa/brain_matrix/fixtures/scenario_mcp_revoked_token_graceful.json +33 -0
  576. package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_intent.json +21 -0
  577. package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_no_token_arg.json +27 -0
  578. package/dist/qa/brain_matrix/fixtures/scenario_mcp_show_tools_before_invoke.json +44 -0
  579. package/dist/qa/brain_matrix/fixtures/scenario_mcp_toggle_intent.json +20 -0
  580. package/dist/qa/brain_matrix/fixtures/scenario_multi_turn_clarify_then_act.json +24 -0
  581. package/dist/qa/brain_matrix/fixtures/scenario_nac3_attrs_doctrine.json +53 -0
  582. package/dist/qa/brain_matrix/fixtures/scenario_nac3_discover_schemas_intent.json +19 -0
  583. package/dist/qa/brain_matrix/fixtures/scenario_nac3_required_attr_missing.json +19 -0
  584. package/dist/qa/brain_matrix/fixtures/scenario_no_bare_ok_after_destructive.json +27 -0
  585. package/dist/qa/brain_matrix/fixtures/scenario_no_global_learnings_no_recall.json +20 -0
  586. package/dist/qa/brain_matrix/fixtures/scenario_no_id_leak_in_reply.json +24 -0
  587. package/dist/qa/brain_matrix/fixtures/scenario_no_invent_verb.json +18 -0
  588. package/dist/qa/brain_matrix/fixtures/scenario_no_loop_after_repeated_fail.json +42 -0
  589. package/dist/qa/brain_matrix/fixtures/scenario_no_password_echo.json +28 -0
  590. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_all_current.json +28 -0
  591. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent.json +20 -0
  592. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent_en.json +20 -0
  593. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_then_explain.json +35 -0
  594. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_read_intent.json +24 -0
  595. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_write_required_args.json +23 -0
  596. package/dist/qa/brain_matrix/fixtures/scenario_office_overwrite_explicit.json +23 -0
  597. package/dist/qa/brain_matrix/fixtures/scenario_office_word_write_intent.json +27 -0
  598. package/dist/qa/brain_matrix/fixtures/scenario_panel_open_settings_intent.json +19 -0
  599. package/dist/qa/brain_matrix/fixtures/scenario_panel_send_message_intent.json +19 -0
  600. package/dist/qa/brain_matrix/fixtures/scenario_pdf_read_intent.json +22 -0
  601. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_clear_tab_explicit_close.json +17 -0
  602. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_chart.json +30 -0
  603. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_long_table.json +28 -0
  604. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_read_tab_intent.json +20 -0
  605. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_render_not_inline.json +20 -0
  606. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_read_file.json +28 -0
  607. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_verb_over_shell.json +22 -0
  608. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_workflow_state.json +28 -0
  609. package/dist/qa/brain_matrix/fixtures/scenario_project_init_intent.json +20 -0
  610. package/dist/qa/brain_matrix/fixtures/scenario_project_set_root_intent.json +20 -0
  611. package/dist/qa/brain_matrix/fixtures/scenario_promote_lesson_after_correction.json +17 -0
  612. package/dist/qa/brain_matrix/fixtures/scenario_r8_destructive_shell_exec.json +21 -0
  613. package/dist/qa/brain_matrix/fixtures/scenario_read_then_parse_order.json +36 -0
  614. package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_jump_intent.json +19 -0
  615. package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_set_intent.json +19 -0
  616. package/dist/qa/brain_matrix/fixtures/scenario_reader_for_long_doc.json +21 -0
  617. package/dist/qa/brain_matrix/fixtures/scenario_reader_list_docs_intent.json +19 -0
  618. package/dist/qa/brain_matrix/fixtures/scenario_reader_next_block_intent.json +19 -0
  619. package/dist/qa/brain_matrix/fixtures/scenario_reader_read_section_intent.json +19 -0
  620. package/dist/qa/brain_matrix/fixtures/scenario_reader_recap_intent.json +19 -0
  621. package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent.json +20 -0
  622. package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent_en.json +20 -0
  623. package/dist/qa/brain_matrix/fixtures/scenario_refuses_blanket_chmod_777.json +17 -0
  624. package/dist/qa/brain_matrix/fixtures/scenario_refuses_bypass_approval_modal.json +18 -0
  625. package/dist/qa/brain_matrix/fixtures/scenario_refuses_delete_critical_en.json +18 -0
  626. package/dist/qa/brain_matrix/fixtures/scenario_refuses_disable_vault_encryption.json +18 -0
  627. package/dist/qa/brain_matrix/fixtures/scenario_refuses_drop_database.json +17 -0
  628. package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main.json +17 -0
  629. package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main_en.json +17 -0
  630. package/dist/qa/brain_matrix/fixtures/scenario_refuses_leak_vault_en.json +18 -0
  631. package/dist/qa/brain_matrix/fixtures/scenario_refuses_modify_node_modules.json +17 -0
  632. package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks.json +17 -0
  633. package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks_en.json +17 -0
  634. package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_delete_critical.json +18 -0
  635. package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_leak_vault.json +18 -0
  636. package/dist/qa/brain_matrix/fixtures/scenario_respects_global_learnings.json +28 -0
  637. package/dist/qa/brain_matrix/fixtures/scenario_respects_workflow_gate_g2.json +39 -0
  638. package/dist/qa/brain_matrix/fixtures/scenario_revoke_lesson_request.json +21 -0
  639. package/dist/qa/brain_matrix/fixtures/scenario_sq_rules_active.json +30 -0
  640. package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent.json +20 -0
  641. package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent_en.json +20 -0
  642. package/dist/qa/brain_matrix/fixtures/scenario_truncated_response_retry.json +22 -0
  643. package/dist/qa/brain_matrix/fixtures/scenario_unknown_command_clarify.json +23 -0
  644. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_compose.json +23 -0
  645. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_handles_invalid.json +27 -0
  646. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent.json +20 -0
  647. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent_en.json +20 -0
  648. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_then_inspect_query.json +28 -0
  649. package/dist/qa/brain_matrix/fixtures/scenario_url_then_stringify_order.json +34 -0
  650. package/dist/qa/brain_matrix/fixtures/scenario_user_just_greets.json +17 -0
  651. package/dist/qa/brain_matrix/fixtures/scenario_user_overrides_proceeds.json +24 -0
  652. package/dist/qa/brain_matrix/fixtures/scenario_user_revokes_in_middle.json +22 -0
  653. package/dist/qa/brain_matrix/fixtures/scenario_voice_open_pizarron.json +21 -0
  654. package/dist/qa/brain_matrix/fixtures/scenario_word_outline_extraction.json +22 -0
  655. package/dist/qa/brain_matrix/fixtures/scenario_word_overwrite_explicit.json +20 -0
  656. package/dist/qa/brain_matrix/fixtures/scenario_word_section_count.json +28 -0
  657. package/dist/qa/brain_matrix/fixtures/scenario_workflow_doctrine.json +53 -0
  658. package/dist/qa/brain_matrix/fixtures/scenario_workflow_done_specs.json +32 -0
  659. package/dist/qa/brain_matrix/fixtures/scenario_workflow_intent_capture.json +22 -0
  660. package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_jump_block.json +26 -0
  661. package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_v_step_15.json +41 -0
  662. package/dist/qa/brain_matrix/fixtures/scenario_workflow_run_step_intent.json +19 -0
  663. package/dist/qa/brain_matrix/fixtures/scenario_workflow_set_intent.json +20 -0
  664. package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_injection.json +32 -0
  665. package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_recovers_after_clarify.json +25 -0
  666. package/dist/qa/brain_matrix/fixtures/scenario_workflow_step_1_intake.json +24 -0
  667. package/dist/qa/brain_matrix/fixtures/scenario_yf_command_doctrine.json +56 -0
  668. package/dist/qa/brain_matrix/fixtures/scenario_yf_doctrine_list_intent.json +19 -0
  669. package/dist/qa/brain_matrix/fixtures/scenario_yf_qa_compare_intent.json +17 -0
  670. package/dist/qa/brain_matrix/invariants.d.ts +18 -0
  671. package/dist/qa/brain_matrix/invariants.d.ts.map +1 -0
  672. package/dist/qa/brain_matrix/invariants.js +333 -0
  673. package/dist/qa/brain_matrix/invariants.js.map +1 -0
  674. package/dist/qa/brain_matrix/report.d.ts +12 -0
  675. package/dist/qa/brain_matrix/report.d.ts.map +1 -0
  676. package/dist/qa/brain_matrix/report.js +131 -0
  677. package/dist/qa/brain_matrix/report.js.map +1 -0
  678. package/dist/qa/brain_matrix/runner.d.ts +31 -0
  679. package/dist/qa/brain_matrix/runner.d.ts.map +1 -0
  680. package/dist/qa/brain_matrix/runner.js +561 -0
  681. package/dist/qa/brain_matrix/runner.js.map +1 -0
  682. package/dist/qa/brain_matrix/types.d.ts +180 -0
  683. package/dist/qa/brain_matrix/types.d.ts.map +1 -0
  684. package/dist/qa/brain_matrix/types.js +2 -0
  685. package/dist/qa/brain_matrix/types.js.map +1 -0
  686. package/dist/qa/brain_matrix/validate_scenario.d.ts +23 -0
  687. package/dist/qa/brain_matrix/validate_scenario.d.ts.map +1 -0
  688. package/dist/qa/brain_matrix/validate_scenario.js +128 -0
  689. package/dist/qa/brain_matrix/validate_scenario.js.map +1 -0
  690. package/dist/support/github_dispatcher.d.ts +36 -0
  691. package/dist/support/github_dispatcher.d.ts.map +1 -0
  692. package/dist/support/github_dispatcher.js +292 -0
  693. package/dist/support/github_dispatcher.js.map +1 -0
  694. package/dist/support/reports.d.ts +31 -0
  695. package/dist/support/reports.d.ts.map +1 -0
  696. package/dist/support/reports.js +162 -0
  697. package/dist/support/reports.js.map +1 -0
  698. package/dist/telemetry/usage.d.ts +67 -0
  699. package/dist/telemetry/usage.d.ts.map +1 -0
  700. package/dist/telemetry/usage.js +208 -0
  701. package/dist/telemetry/usage.js.map +1 -0
  702. package/dist/version.d.ts +1 -1
  703. package/dist/version.d.ts.map +1 -1
  704. package/dist/version.js +1 -1
  705. package/dist/version.js.map +1 -1
  706. package/dist/voice/config.d.ts +12 -0
  707. package/dist/voice/config.d.ts.map +1 -1
  708. package/dist/voice/config.js +25 -2
  709. package/dist/voice/config.js.map +1 -1
  710. package/dist/voice/providers/google.d.ts +9 -0
  711. package/dist/voice/providers/google.d.ts.map +1 -1
  712. package/dist/voice/providers/google.js +197 -28
  713. package/dist/voice/providers/google.js.map +1 -1
  714. package/dist/voice/router.d.ts +10 -0
  715. package/dist/voice/router.d.ts.map +1 -1
  716. package/dist/voice/router.js +39 -20
  717. package/dist/voice/router.js.map +1 -1
  718. package/dist/voice/types.d.ts +5 -2
  719. package/dist/voice/types.d.ts.map +1 -1
  720. package/dist/voice/types.js.map +1 -1
  721. package/dist/workflow/phase_inference.d.ts +56 -0
  722. package/dist/workflow/phase_inference.d.ts.map +1 -0
  723. package/dist/workflow/phase_inference.js +107 -0
  724. package/dist/workflow/phase_inference.js.map +1 -0
  725. package/dist/workflow/state.d.ts +238 -0
  726. package/dist/workflow/state.d.ts.map +1 -0
  727. package/dist/workflow/state.js +213 -0
  728. package/dist/workflow/state.js.map +1 -0
  729. package/docs/SQ.md +1397 -0
  730. package/docs/SQ_BY_STEP.yaml +147 -0
  731. package/docs/doctrine/accessibility.md +78 -0
  732. package/docs/doctrine/agent-orchestrator.md +76 -0
  733. package/docs/doctrine/byok-vs-managed.md +81 -0
  734. package/docs/doctrine/cost-router-escalation.md +73 -0
  735. package/docs/doctrine/explain-results.md +90 -0
  736. package/docs/doctrine/g-doc.md +46 -0
  737. package/docs/doctrine/gates.md +21 -0
  738. package/docs/doctrine/lessons-workflow.md +68 -0
  739. package/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
  740. package/docs/doctrine/nac3-attrs.md +23 -0
  741. package/docs/doctrine/office-tools.md +102 -0
  742. package/docs/doctrine/pizarron.md +52 -0
  743. package/docs/doctrine/r8-modal.md +60 -0
  744. package/docs/doctrine/safety-refusals.md +73 -0
  745. package/docs/doctrine/verb-composition.md +68 -0
  746. package/docs/doctrine/workflow-phases.md +108 -0
  747. package/docs/doctrine/workflow.md +58 -0
  748. package/docs/doctrine/yf-commands.md +49 -0
  749. package/package.json +20 -14
  750. package/src/i18n/catalogs/ar.json +55 -10
  751. package/src/i18n/catalogs/de.json +55 -10
  752. package/src/i18n/catalogs/en.json +66 -1
  753. package/src/i18n/catalogs/es.json +66 -1
  754. package/src/i18n/catalogs/fr.json +55 -10
  755. package/src/i18n/catalogs/hi.json +55 -10
  756. package/src/i18n/catalogs/it.json +55 -10
  757. package/src/i18n/catalogs/ja.json +55 -10
  758. package/src/i18n/catalogs/pt.json +55 -10
  759. package/src/i18n/catalogs/zh.json +55 -10
  760. package/templates/nextjs-app/README.md +48 -0
  761. package/templates/nextjs-app/next.config.js +8 -0
  762. package/templates/nextjs-app/package.json +33 -0
  763. package/templates/nextjs-app/src/app/globals.css +43 -0
  764. package/templates/nextjs-app/src/app/layout.tsx +29 -0
  765. package/templates/nextjs-app/src/app/page.tsx +63 -0
  766. package/templates/nextjs-app/src/nac/manifest.ts +36 -0
  767. package/templates/nextjs-app/tsconfig.json +21 -0
  768. package/templates/nextjs-app/yujin.forge.json +11 -0
@@ -0,0 +1,147 @@
1
+ # SQ rules active per workflow step (alpha.59y.3)
2
+ #
3
+ # Maps each step of docs/PRODUCT_WORKFLOW.md (18 steps across 6
4
+ # phases) to the docs/SQ.md rule slugs that apply at that step.
5
+ # The chat server uses this to inject the relevant subset of SQ
6
+ # into the per-turn workflow state block, instead of dumping all
7
+ # 50+ rules every time.
8
+ #
9
+ # Schema:
10
+ # step_<N>_<slug>: [rule_slug, rule_slug, ...]
11
+ #
12
+ # Rule slugs use the section number from SQ.md (0.1, 0.2, 1.3,
13
+ # 2.4, 14, 15, etc). Sub-sections (14.1, 14.2) roll up to their
14
+ # parent unless the parent is broken.
15
+ #
16
+ # Cross-cutting rules (apply to every step):
17
+ # 0.1 -- user time is sacred
18
+ # 0.2 -- no fallback to legacy
19
+ # 0.3 -- no silent damage
20
+ # 0.4 -- industrial quality
21
+ # 0.5 -- agnostic by default
22
+ # 0.8 -- dual-mode comm
23
+ # 0.11 -- vault autonomy
24
+ # 14 -- producer/consumer symmetry
25
+ # 15 -- test things yourself
26
+ #
27
+ # These are implied in every step; they are NOT repeated here to
28
+ # keep the resolver's output compact. The resolver always merges
29
+ # them into the active set.
30
+ #
31
+ # ASCII-only.
32
+
33
+ cross_cutting:
34
+ - "0.1" # tiempo del user
35
+ - "0.2" # cero fallback legacy
36
+ - "0.3" # cero dano silencioso
37
+ - "0.4" # calidad industrial
38
+ - "0.5" # agnostico por default
39
+ - "0.8" # dual mode didactico/tecnico
40
+ - "0.11" # autonomia via vault
41
+ - "14" # producer/consumer symmetry
42
+ - "15" # autonomia / test things yourself
43
+
44
+ step_1_triage:
45
+ - "0.6" # definicion proyecto Yujin
46
+ - "0.10" # target desktop+mobile vs mobile-pure
47
+ - "1.1" # lectura docs proyecto
48
+ - "1.2" # volumetrias antes arquitectura
49
+
50
+ step_2_vault:
51
+ - "0.11" # autonomia vault (refuerzo)
52
+ - "2.8" # security boundaries
53
+
54
+ step_3_intent:
55
+ - "0.6" # definicion proyecto
56
+ - "1.1" # lectura docs
57
+ - "0.10" # target
58
+
59
+ step_3_5_legacy_audit:
60
+ - "1.1"
61
+ - "1.2"
62
+
63
+ step_4_functional:
64
+ - "1.1"
65
+ - "0.6"
66
+
67
+ step_5_nfr_quantitative:
68
+ - "1.2" # volumetrias antes arquitectura -- CRITICAL aqui
69
+ - "1.3" # solicitudes simultaneas
70
+
71
+ step_6_nfr_structural:
72
+ - "1.3" # escalables
73
+ - "0.7" # componentes obligatorios
74
+
75
+ step_7_nfr_governance:
76
+ - "2.7" # provenance
77
+ - "2.8" # security boundaries
78
+
79
+ step_8_nfr_operational:
80
+ - "2.6" # multilang
81
+ - "0.7" # componentes obligatorios
82
+ - "0.9" # test playwright visual
83
+
84
+ step_9_block_prioritisation:
85
+ - "0.5" # agnostico
86
+ - "1.3"
87
+
88
+ step_10_rfp:
89
+ - "1.1"
90
+ - "1.2"
91
+ - "1.3"
92
+ - "3.1" # INFRASTRUCTURE.md
93
+ - "3.2" # ARCHITECTURE.md
94
+
95
+ step_11_architecture:
96
+ - "1.2"
97
+ - "1.3"
98
+ - "0.7"
99
+ - "2.7"
100
+ - "2.8"
101
+ - "2.9" # single source of truth modelos LLM
102
+ - "3.2" # ARCHITECTURE.md emit aqui
103
+ - "8" # activos estrategicos / IP
104
+
105
+ step_12_solution_design:
106
+ - "0.5"
107
+ - "0.7"
108
+ - "2.6"
109
+ - "2.7"
110
+ - "2.9"
111
+
112
+ step_13_approval_gate:
113
+ - "0.3" # cero dano silencioso (refuse to advance without OK)
114
+ - "0.4" # calidad industrial
115
+
116
+ step_14_bootstrap:
117
+ - "0.7" # componentes obligatorios scaffolded
118
+ - "2.1" # tests scaffolded
119
+ - "2.4" # code style
120
+ - "2.5" # build + deploy
121
+ - "2.6" # 10 idiomas
122
+ - "2.9"
123
+
124
+ step_15_block_dev:
125
+ - "2.1" # tests primero
126
+ - "2.2" # coverage 100% visual
127
+ - "2.3" # coverage 100% backend
128
+ - "2.4" # code style
129
+ - "0.9" # playwright visual approve
130
+ - "14" # producer/consumer audit (refuerzo)
131
+ - "15" # autonomia (refuerzo)
132
+
133
+ step_16_deploy:
134
+ - "0.11"
135
+ - "2.5"
136
+ - "3.1" # INFRASTRUCTURE.md updated
137
+ - "3.4" # MAINTENANCE_MANUAL.md
138
+
139
+ step_17_postlaunch:
140
+ - "3.3" # USER_MANUAL.md emit
141
+ - "3.4" # MAINTENANCE_MANUAL.md emit
142
+ - "0.8" # dual mode docs
143
+
144
+ step_18_iteration:
145
+ - "0.3" # cero dano silencioso (adenda flow)
146
+ - "0.4"
147
+ - "7" # memoria de decisiones
@@ -0,0 +1,78 @@
1
+ # yujin.a11y.* verbs (F107) -- screen reader + voice-first
2
+
3
+ The `yujin.a11y.*` namespace gives the brain three
4
+ panel-dispatch verbs to drive the accessibility surface of any
5
+ adopter app. Fetch this doctrine via `yujin.doctrine.discover`
6
+ when the user mentions screen reader / accessibility / voice
7
+ announce / focus / aria.
8
+
9
+ ## Catalog
10
+
11
+ | Verb | Use when |
12
+ |---|---|
13
+ | `yujin.a11y.announce` | A status / error / async completion needs to reach screen-reader users + the voice loop |
14
+ | `yujin.a11y.focus` | Keyboard focus needs to land on a specific element (after open modal, after async load) |
15
+ | `yujin.a11y.label` | An element needs a screen-reader description, optional shortcut + role hints |
16
+
17
+ All three are `policy: unrestricted`, `side_effects: ['dom']`,
18
+ `handler_side: panel`.
19
+
20
+ ## Args -- quick reference
21
+
22
+ ```
23
+ yujin.a11y.announce {text, politeness?:'polite'|'assertive', speak?, locale?}
24
+ yujin.a11y.focus {slug, scroll?, announce?}
25
+ yujin.a11y.label {slug, description, shortcut?, role?}
26
+ ```
27
+
28
+ `slug` is the NAC-3 element slug (the value of the `data-nac-slug`
29
+ attribute the adopter declared at source). It MUST match
30
+ `[a-z0-9][a-z0-9._-]*` -- no spaces, no `/`, max 120 chars.
31
+
32
+ ## When to announce
33
+
34
+ - After a destructive action completed -> `announce({text: '...
35
+ eliminado', politeness:'assertive'})`.
36
+ - After a long-running task finished -> `announce({text:'Deploy
37
+ listo', speak:true})` to also TTS it.
38
+ - For ambient progress -> default `politeness:'polite'` so the
39
+ screen reader does not interrupt.
40
+
41
+ ## When to focus
42
+
43
+ - After opening a modal: focus the modal's primary button
44
+ (`scroll:true, announce:true` by default).
45
+ - After loading new content into a region: focus the heading
46
+ so screen-reader users know where they are.
47
+ - NEVER force focus mid-typing -- the user's keyboard input wins.
48
+
49
+ ## When to label
50
+
51
+ - The adopter forgot to ship a `data-nac-label` -- the assistant
52
+ can patch the live a11y tree without forcing a source edit.
53
+ - A shortcut or role hint helps disambiguate (two buttons with
54
+ the same visible text).
55
+
56
+ ## Don't
57
+
58
+ - Don't fire `announce` for visual-only chatter ("rendered the
59
+ pizarron tab"). The screen reader gets EVERY announce -- noisy
60
+ is worse than silent.
61
+ - Don't use `focus` to scroll the page for sighted users; use the
62
+ panel scroll API instead.
63
+ - Don't invent verbs like `yujin.a11y.read-page` -- only the three
64
+ above exist.
65
+
66
+ ## Voice-first integration
67
+
68
+ `announce` with `speak: true` forwards the text to the existing
69
+ voice loop (Yujin TTS gateway or BYOK provider). Locale defaults
70
+ to the user's voice config; pass `locale: 'es-AR'` to override
71
+ for an individual announcement.
72
+
73
+ ## Mobile
74
+
75
+ The React-Native adapter consumes the same payloads:
76
+ - `aria-live polite/assertive` -> `AccessibilityInfo.announceForAccessibility`
77
+ - `focus` -> native `setAccessibilityFocus` ref
78
+ - `label` -> `accessibilityLabel` + `accessibilityHint`
@@ -0,0 +1,76 @@
1
+ # Agent orchestrator (HITO 5) -- intent + scope
2
+
3
+ Fetch when the user asks "que es un agente?", "quiero un agente
4
+ que..." , "scheduled job", "background task", "agente automatico",
5
+ "que corra mientras duermo".
6
+
7
+ ## Status
8
+
9
+ Design draft. No agent code shipped yet. CLARIFY-BEFORE-CODE
10
+ gates: `docs/HITO_5_AGENT_ORCHESTRATOR_DESIGN.md` lists 10 points
11
+ Pablo must answer before slice 1 lands.
12
+
13
+ If the user asks the brain to create an agent today, the brain
14
+ should:
15
+
16
+ 1. Acknowledge agents are designed but not built.
17
+ 2. Offer the manual interim: a saved CLI script + a doc the user
18
+ keeps in `~/.yujin-forge/scripts/<slug>.md`.
19
+ 3. Point at the design doc for the long-form plan.
20
+ 4. Capture the user's intent in a lesson via
21
+ `yujin.lessons.promote` (HITO 6.4) so the design doc can
22
+ absorb the use-case before code lands.
23
+
24
+ ## What an agent will be (when built)
25
+
26
+ A saved configuration that can run a sequence of NAC-3 verbs +
27
+ MCP bridge tools on behalf of the user, with bounded scope,
28
+ explicit approval surface, and optional schedule.
29
+
30
+ Each agent declares:
31
+ - `slug`, `name`, `description`, `icon`
32
+ - `tier` -- eco / frontier / managed
33
+ - `system_prompt`
34
+ - `tool_allowlist` (subset of manifest)
35
+ - `default_args`
36
+ - `trigger` -- manual / cron / event:<entity>:<verb>
37
+ - `output_sink` -- chat / pizarron-tab / webhook / none
38
+ - `policy_override` -- inherit / auto / request-approval
39
+ - `auth_scope` -- which Vault tokens this agent can use
40
+ - `quota` -- per-day calls + tokens + cost USD
41
+ - `audit_label` -- mandatory free-text on every dispatch row
42
+
43
+ ## Where agents will live
44
+
45
+ `~/.yujin-forge/agents/` -- one folder per agent slug, with
46
+ `definition.json` + `runs/<ts>.json` + `runs/<ts>.audit.jsonl`.
47
+ Managed variant adds a `managed_handle.json` with the Workers
48
+ KV key.
49
+
50
+ ## What's NEVER on the allowlist
51
+
52
+ - `yujin.shell.exec` (too broad)
53
+ - `yujin.keys.set` / `yujin.keys.delete`
54
+ - `yujin.mcp.set-creds`
55
+ - `yujin.workflow.set`
56
+
57
+ Agents cannot rotate credentials, mutate workflow state, or run
58
+ arbitrary shell.
59
+
60
+ ## Recommended seed templates (when slice 7 ships)
61
+
62
+ - `daily-prs` -- list open PRs, summarise in pizarron.
63
+ - `ticket-triage` -- triage support inbox, propose tags.
64
+ - `brain-matrix-watcher` -- nightly brain matrix run + diff.
65
+ - `support-replies` -- draft replies, await approval.
66
+ - `lessons-promote` -- auto-promote lessons after N approvals.
67
+ - `costs-report` -- weekly cost-meter digest.
68
+
69
+ ## When to point users at the design doc
70
+
71
+ If a question is structural ("how would the agent talk to my
72
+ Slack?", "what's the latency?"), pull `HITO_5_AGENT_ORCHESTRATOR_DESIGN.md`
73
+ from disk via `yujin.fs.read-file` + answer from there.
74
+
75
+ If the question is "I want X agent" the brain captures the
76
+ intent + flags it for the design phase.
@@ -0,0 +1,81 @@
1
+ # BYOK vs managed brain -- when to recommend which
2
+
3
+ Fetch when the user asks: "que conviene?", "BYOK?", "managed?",
4
+ "why am I being told to setup keys?", "cap exhausted", "credit
5
+ ran out".
6
+
7
+ ## The two paths
8
+
9
+ | Mode | Where the LLM call lives | Who pays |
10
+ |---|---|---|
11
+ | **BYOK** (bring-your-own-key) | Directly from `yf chat` to the provider (Anthropic / Google / OpenAI) using the user's API key from CredentialVault | The user, on their own provider account |
12
+ | **Managed brain** | `yf chat` -> Cloudflare Workers route -> provider, with a per-user cost-meter in KV | Yujin operator, billed back via subscription |
13
+
14
+ ## When BYOK wins
15
+
16
+ - User already has a provider account + budget.
17
+ - Privacy: the prompt never leaves the user's machine -> Anthropic
18
+ directly. No third party in the middle.
19
+ - Heavy / sustained use: BYOK has no per-month cap.
20
+ - Custom models the managed runtime doesn't proxy (e.g. specific
21
+ Bedrock variants).
22
+
23
+ ## When managed wins
24
+
25
+ - First-day onboarding: no provider account yet, but wants to try.
26
+ - Cost predictability: hard cap, can't accidentally rack up bills.
27
+ - Multi-device: no need to re-pair keys per laptop.
28
+ - Voice + reading flows on mobile: managed already wires
29
+ pizarron / lessons / projects without a key per device.
30
+
31
+ ## What to do when cap exhausted
32
+
33
+ If the user is on managed and hits the monthly cap, the brain
34
+ should:
35
+
36
+ 1. Acknowledge the cap with the actual number if known.
37
+ 2. Offer two paths, in this order:
38
+ a. Configure BYOK -> `yf keys setup`. Costs pass directly to the
39
+ user's provider account; no cap.
40
+ b. Wait for the reset (first of next month). Read-only on
41
+ managed in the meantime.
42
+ 3. NEVER silently retry the same call.
43
+ 4. NEVER suggest fishing for a different provider unless the
44
+ user explicitly asks.
45
+
46
+ ## What to do when no keys configured
47
+
48
+ - Brain MUST refuse anything that needs an LLM call.
49
+ - Recommend `yf keys setup` for the simplest path.
50
+ - Be clear about what each key unlocks (`anthropic_api_key` ->
51
+ Sonnet/Haiku/Opus; `openai_api_key` -> GPT-4o; `google_ai_key`
52
+ -> Gemini).
53
+ - Don't ask the user to paste keys in chat. The Vault setup
54
+ prompts the user for the secret directly.
55
+
56
+ ## Slot canonical names
57
+
58
+ Vault canonical:
59
+ - `anthropic_api_key`
60
+ - `openai_api_key`
61
+ - `google_ai_key`
62
+ - `deepseek_api_key`
63
+ - `xai_api_key`
64
+ - `mistral_api_key`
65
+ - `cohere_api_key`
66
+
67
+ SDK-convention aliases the brain matrix runner accepts:
68
+ `CLAUDE_API_KEY` -> `ANTHROPIC_API_KEY`,
69
+ `GEMINI_API_KEY` -> `GOOGLE_AI_KEY`. The user's `.env` may use
70
+ either set.
71
+
72
+ ## Edge cases
73
+
74
+ - Mixed mode: user has BYOK + managed both. cost_router picks the
75
+ cheaper or the available one per turn; the brain should not
76
+ assume one specific provider.
77
+ - Override: `yf brain set <tier>` pins the next chat to a
78
+ specific tier regardless of the router.
79
+ - Local fallback: there is no offline brain. If the network is
80
+ down and there's no cached response, the chat is broken --
81
+ surface that to the user instead of fabricating an answer.
@@ -0,0 +1,73 @@
1
+ # Cost router escalation -- eco vs frontier
2
+
3
+ Fetch when the user asks: "por que cambio de modelo?", "estoy en
4
+ eco o frontier?", "me escalo solo", "como bajo a Haiku?", "deja
5
+ de usar Sonnet".
6
+
7
+ ## What the router decides per turn
8
+
9
+ `src/core/cost_router.ts` -- pure function that picks the brain
10
+ tier for the next turn based on:
11
+
12
+ 1. **User override** (highest priority). `yf brain set eco|frontier`
13
+ pins one tier; the router short-circuits.
14
+ 2. **Verb tier hint** -- if the user already said which verb to
15
+ invoke + that verb has a known cheap path, eco wins.
16
+ 3. **Workflow phase** -- phases I + II (intake + clarification)
17
+ default to eco; phases III + IV + V (specs, build) default to
18
+ frontier.
19
+ 4. **Active SQ rules** -- presence of any rule from the workflow
20
+ phase rules pushes to frontier (cost of breaking a rule >
21
+ cost of using Sonnet).
22
+ 5. **Phase-crossover signal** -- last turn was eco, current text
23
+ contains "let's commit" / "ship it" / "proceed" -- escalate.
24
+ 6. **Smart-auto classifier** -- ambient turn, eco-keyword vs
25
+ frontier-keyword + length heuristic.
26
+ 7. **Frontier inertia** -- if the last turn was frontier AND the
27
+ current turn is short, stay on frontier for one more turn so a
28
+ quick clarification doesn't lose context.
29
+
30
+ ## Escalation triggers (push from eco -> frontier)
31
+
32
+ | Signal | Source |
33
+ |---|---|
34
+ | `active_sq_rules` non-empty + rule-violation text | workflow_inject + sq_resolver |
35
+ | `phase_crossover: true` flag | incomplete_detector |
36
+ | User text has 3+ frontier keywords | turn_classifier |
37
+ | Last turn already escalated | frontier_inertia |
38
+ | Attachment present (image / audio) | F101 attachment handler |
39
+
40
+ ## De-escalation (frontier -> eco)
41
+
42
+ - 5+ minutes idle since last turn -> reset to default per phase.
43
+ - User explicitly says `eco only` / `bajemos a Haiku`.
44
+ - Workflow phase advances back to I (rare).
45
+
46
+ ## What to tell the user
47
+
48
+ When the user asks why their last turn cost more / less than the
49
+ previous one, the brain MAY say:
50
+
51
+ - "Cambie a Sonnet en este turno porque el texto disparo G2-vault-min-keys
52
+ y el router escala las defensas de SQ."
53
+ - "Te baje a Haiku porque la consulta es corta y la fase es II
54
+ (clarificacion)."
55
+
56
+ The brain MUST NOT lie about the tier picked. The panel shows a
57
+ badge with the actual tier per turn (alpha.58 #2).
58
+
59
+ ## Manual override
60
+
61
+ ```
62
+ yf brain set eco
63
+ yf brain set frontier
64
+ yf brain reset
65
+ ```
66
+
67
+ `reset` returns the router to automatic picking.
68
+
69
+ ## When the cap exhausts
70
+
71
+ If the managed brain monthly cap fires, the router cannot
72
+ escalate -- it surfaces a "cap exhausted" error and offers BYOK
73
+ (see `byok-vs-managed` doctrine).
@@ -0,0 +1,90 @@
1
+ # Doctrine: explain results in prose
2
+
3
+ When a tool returns data, the brain's reply MUST translate it into
4
+ prose. Don't dump raw JSON. Don't say "ok". Don't end with bare
5
+ shell output.
6
+
7
+ ## The rule
8
+
9
+ Every tool result gets paired with a 1-3 sentence prose summary
10
+ that:
11
+
12
+ 1. **Names** what came back ("3 files", "2 packages outdated",
13
+ "branch feature/x with 2 ahead").
14
+ 2. **Surfaces** the surprising or actionable bit ("typescript
15
+ has a patch update available", "1 outdated dep is a major").
16
+ 3. **Offers** the natural next step ("querés que abra alguno?",
17
+ "lo aplico?", "te muestro el diff completo?").
18
+
19
+ ## Why
20
+
21
+ The panel auto-renders structured results (shell stdout, BPMN,
22
+ chart cards) but the user can't infer intent from a wall of
23
+ output. The prose is the bridge between "the tool fired" and
24
+ "the human knows what happened".
25
+
26
+ ## What counts as "too short"
27
+
28
+ A reply of just `ok`, `listo`, `hecho`, or a verb confirmation
29
+ ("subi el archivo") without context = too short. The
30
+ `min_text_length` invariant catches replies under ~30 chars.
31
+
32
+ ## What counts as "raw dump"
33
+
34
+ These don't count as prose summary:
35
+ - Repeating the tool result JSON verbatim.
36
+ - Listing every key/value of a deep object.
37
+ - Pasting all rows of a table.
38
+
39
+ Instead: pick the 1-2 fields the user cares about + state them
40
+ in plain language.
41
+
42
+ ## Examples
43
+
44
+ ### Bad
45
+
46
+ User: "Cuanto pesa test.txt?"
47
+ Brain (after fs.stat): "ok"
48
+
49
+ ### Better
50
+
51
+ User: "Cuanto pesa test.txt?"
52
+ Brain (after fs.stat): "test.txt pesa 42 bytes (modificado
53
+ 2026-06-04). Es un archivo regular. Querés que lo abra?"
54
+
55
+ ### Bad
56
+
57
+ User: "Que paquetes desactualizados tengo?"
58
+ Brain (after npm.outdated): "{vitest: {...}, typescript: {...}}"
59
+
60
+ ### Better
61
+
62
+ User: "Que paquetes desactualizados tengo?"
63
+ Brain (after npm.outdated): "Tenes 2: vitest (1.6.0 -> 1.6.1,
64
+ patch seguro) y typescript (5.3.0 -> 5.3.3, patch seguro). Hay
65
+ un major de vitest (2.0.0) disponible -- esto sí requiere mirar
66
+ breaking changes antes."
67
+
68
+ ### Bad
69
+
70
+ User: "Ls."
71
+ Brain (after shell.exec ls): "package.json\nREADME.md"
72
+
73
+ ### Better
74
+
75
+ User: "Ls."
76
+ Brain (after shell.exec ls): "Encontre 2 archivos: package.json y
77
+ README.md. Querés ver alguno?"
78
+
79
+ ## When the user explicitly asks for raw output
80
+
81
+ Then it's fine to dump. "Imprimime el stdout sin parsear" is a
82
+ legitimate request and the harness allows it. But the default,
83
+ when the user is asking about meaning rather than form, is prose.
84
+
85
+ ## When to fetch this doctrine
86
+
87
+ Fetch when:
88
+ - The eco-tier brain is being too laconic in your tests.
89
+ - The user complains "the responses don't help me understand".
90
+ - You're new to Forge and want the house style on tool replies.
@@ -0,0 +1,46 @@
1
+ # Generation doctrine -- adopter app scaffolding rules
2
+
3
+ When you scaffold a new app (Phase V step 14) or wire backend
4
+ capabilities to the frontend, follow this hierarchy. It is the same
5
+ dogfooding pattern Forge itself runs on internally.
6
+
7
+ RULE G-DOC-1 -- NAC3 manifest is the default catalogue.
8
+ Every backend tool the adopter app exposes (filesystem, network,
9
+ external API, database, queue, scheduler, payment, email) lives
10
+ as a verb in the app NAC3 manifest. Do NOT scaffold a flat REST
11
+ router or a stand-alone MCP server as the FIRST surface; start
12
+ with the manifest. Each verb declares: id (yujin.<scenario>.<verb>),
13
+ role, action, schema, policy (unrestricted | confirm |
14
+ approval-required | destructive | byok-required | scope-gated),
15
+ side_effects ([none | dom | filesystem | network | process |
16
+ external-api | git ...]).
17
+
18
+ RULE G-DOC-2 -- MCP is opt-in, never the default.
19
+ Do NOT scaffold an MCP server unless the user explicitly asks for
20
+ it (keywords: "MCP server", "expose via MCP", "Claude Desktop
21
+ integration", "third-party agent tools"). When the user does ask,
22
+ scaffold MCP BUT add a thin bridge layer that re-exports each MCP
23
+ tool as a NAC3 verb in the app manifest with `mcp_bridge: { server,
24
+ tool }`. The app frontend still sees ONE catalogue (NAC3).
25
+ External agents that speak MCP get their flat surface; internal
26
+ agents and the chat frontend stay manifest-only.
27
+
28
+ RULE G-DOC-3 -- Templates carry the example.
29
+ Templates Forge writes include at least one backend verb (e.g.
30
+ yujin.users.create or yujin.invoices.send) wired through the
31
+ manifest as a working sample. NOT as a flat POST /api/users
32
+ endpoint or an MCP tool definition.
33
+
34
+ RULE G-DOC-4 -- Why this is non-negotiable.
35
+ Forge alpha.41 demonstrated that an LLM operating against a flat
36
+ tool catalogue (Anthropic native tools or MCP) shows three failure
37
+ modes that disappear under NAC3 manifest: hallucination (LLM
38
+ claims action without an invoke), silent-fail (LLM ignores
39
+ is_error=true), and model-size lock-in (catalog requires Opus;
40
+ manifest works with Haiku/Flash). Adopter apps inherit these wins
41
+ automatically when they build NAC3-first.
42
+
43
+ If the user pushes back ("I just want a REST endpoint" / "no NAC3
44
+ please, plain Express"), respect it BUT first explain the three
45
+ trade-offs above and offer the manifest as the default with a
46
+ one-line override. Decision logs go in PRD.
@@ -0,0 +1,21 @@
1
+ # Unbreakable workflow gates
2
+
3
+ Hard gates: you REFUSE to advance until the condition is met.
4
+
5
+ G1: Phase I done without complexity tier decided
6
+ G2: No minimum brain (LLM) key in vault
7
+ G3: Phase III started without intent recorded
8
+ G4: Phase IV approached without block-plan OK
9
+ G5: Phase V started without explicit OK on the 3 spec docs
10
+ G6: Phase V block declared complete with red tests
11
+ G7: Phase VI deploy attempted without all required creds
12
+ G8: Launch announced without green smoke check post-deploy
13
+
14
+ Soft gates: alert the user, propose alternative, do NOT block:
15
+
16
+ GS1: Simple tier asking for full RFP -> do it but flag overkill
17
+ GS2: Full tier asking to skip arch -> refuse with justification
18
+ GS3: No compliance picked but "produccion B2B" -> propose
19
+ defaults
20
+ GS4: Low cost budget but high volumetry -> propose
21
+ optimisations
@@ -0,0 +1,68 @@
1
+ # Lessons workflow -- promote, recall, revoke
2
+
3
+ Fetch when the user asks: "como guardo esto?", "lo recordas para
4
+ la proxima?", "promove esta regla", "quita esta leccion", "que
5
+ lessons tengo activas?".
6
+
7
+ ## What a lesson is
8
+
9
+ A user-promoted rule that the system prompt picks up on every
10
+ subsequent turn. Three categories:
11
+
12
+ - **user** -- facts about the user (preferences, conventions).
13
+ - **feedback** -- "always do X / never do Y" corrections.
14
+ - **reference** -- pointers to external resources.
15
+
16
+ The brain MAY recommend promoting a lesson when:
17
+ - The user gave a correction the brain wants to honour next time.
18
+ - The user validated a non-obvious approach + said "keep doing it".
19
+
20
+ ## Verbs
21
+
22
+ - `yujin.lessons.promote` -- elevate a turn observation into a
23
+ durable lesson. Args: `{slug, category, body}`.
24
+ - `yujin.lessons.list` -- enumerate active lessons + their slugs.
25
+ - `yujin.lessons.revoke` -- soft-deactivate by slug.
26
+ - `yujin.doctrine.discover` -- fetch the long-form doctrine
27
+ (lessons are short; doctrines are long-form reference).
28
+
29
+ ## Lifecycle
30
+
31
+ 1. User says "from now on always do X" or "stop doing Y".
32
+ 2. Brain proposes the lesson body + slug + category, asks for
33
+ confirmation.
34
+ 3. User confirms -> brain invokes `yujin.lessons.promote`.
35
+ 4. On every subsequent turn the system prompt rebuilds with the
36
+ active lesson list (HITO 6.5 LRU cache + 6.6 migration).
37
+ 5. User says "forget that" -> brain proposes revocation slug,
38
+ asks for confirmation, invokes `yujin.lessons.revoke`.
39
+
40
+ ## Slug convention
41
+
42
+ `{category}_{kebab-case-slug}.md`. Examples:
43
+ - `feedback_no_emojis.md`
44
+ - `user_prefers_spanish_replies.md`
45
+ - `reference_pablo_income_plan.md`
46
+
47
+ The slug is shown in error UX so the user can edit lessons by
48
+ hand if needed (HITO 6.4 CLI).
49
+
50
+ ## When NOT to promote
51
+
52
+ - One-off task instructions ("for this PR add a comment to X").
53
+ - Facts already in the doctrine catalogue.
54
+ - Personal user data the user didn't explicitly say to remember
55
+ (privacy-by-default).
56
+
57
+ ## When NOT to recall
58
+
59
+ - The user said `forget what I told you` / `start fresh` / `ignore
60
+ lessons`. Honour the request without protest.
61
+ - The recall conflicts with the current user request. Surface the
62
+ conflict instead of silently overriding.
63
+
64
+ ## Storage
65
+
66
+ `~/.yujin-forge/lessons/{slug}.md` -- one markdown file per
67
+ lesson with YAML frontmatter (category, body, created_at,
68
+ last_used_at). LRU eviction at 200 lessons (HITO 6.5).