@nac3/forge-cli 0.2.0-alpha.9 → 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 (1045) 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 +3678 -345
  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/fs_editor.d.ts +11 -0
  141. package/dist/chat/tools/fs_editor.d.ts.map +1 -0
  142. package/dist/chat/tools/fs_editor.js +162 -0
  143. package/dist/chat/tools/fs_editor.js.map +1 -0
  144. package/dist/chat/tools/git.d.ts +24 -0
  145. package/dist/chat/tools/git.d.ts.map +1 -1
  146. package/dist/chat/tools/git.js +78 -0
  147. package/dist/chat/tools/git.js.map +1 -1
  148. package/dist/chat/tools/graph.d.ts +43 -0
  149. package/dist/chat/tools/graph.d.ts.map +1 -0
  150. package/dist/chat/tools/graph.js +174 -0
  151. package/dist/chat/tools/graph.js.map +1 -0
  152. package/dist/chat/tools/keys.d.ts +9 -0
  153. package/dist/chat/tools/keys.d.ts.map +1 -0
  154. package/dist/chat/tools/keys.js +169 -0
  155. package/dist/chat/tools/keys.js.map +1 -0
  156. package/dist/chat/tools/misc_verbs.d.ts +36 -0
  157. package/dist/chat/tools/misc_verbs.d.ts.map +1 -0
  158. package/dist/chat/tools/misc_verbs.js +405 -0
  159. package/dist/chat/tools/misc_verbs.js.map +1 -0
  160. package/dist/chat/tools/nac3_invoke.d.ts +58 -0
  161. package/dist/chat/tools/nac3_invoke.d.ts.map +1 -0
  162. package/dist/chat/tools/nac3_invoke.js +887 -0
  163. package/dist/chat/tools/nac3_invoke.js.map +1 -0
  164. package/dist/chat/tools/pending.d.ts +69 -0
  165. package/dist/chat/tools/pending.d.ts.map +1 -0
  166. package/dist/chat/tools/pending.js +167 -0
  167. package/dist/chat/tools/pending.js.map +1 -0
  168. package/dist/chat/tools/pizarron.d.ts +40 -0
  169. package/dist/chat/tools/pizarron.d.ts.map +1 -0
  170. package/dist/chat/tools/pizarron.js +123 -0
  171. package/dist/chat/tools/pizarron.js.map +1 -0
  172. package/dist/chat/tools/project_lifecycle.d.ts +24 -0
  173. package/dist/chat/tools/project_lifecycle.d.ts.map +1 -0
  174. package/dist/chat/tools/project_lifecycle.js +212 -0
  175. package/dist/chat/tools/project_lifecycle.js.map +1 -0
  176. package/dist/chat/tools/reader.d.ts.map +1 -1
  177. package/dist/chat/tools/reader.js +144 -1
  178. package/dist/chat/tools/reader.js.map +1 -1
  179. package/dist/chat/tools/shell.d.ts +58 -0
  180. package/dist/chat/tools/shell.d.ts.map +1 -0
  181. package/dist/chat/tools/shell.js +253 -0
  182. package/dist/chat/tools/shell.js.map +1 -0
  183. package/dist/chat/tools/wiring.d.ts +28 -0
  184. package/dist/chat/tools/wiring.d.ts.map +1 -0
  185. package/dist/chat/tools/wiring.js +116 -0
  186. package/dist/chat/tools/wiring.js.map +1 -0
  187. package/dist/chat/tools/workflow.d.ts +55 -0
  188. package/dist/chat/tools/workflow.d.ts.map +1 -0
  189. package/dist/chat/tools/workflow.js +463 -0
  190. package/dist/chat/tools/workflow.js.map +1 -0
  191. package/dist/chat/tools.d.ts +42 -0
  192. package/dist/chat/tools.d.ts.map +1 -1
  193. package/dist/chat/tools.js +447 -16
  194. package/dist/chat/tools.js.map +1 -1
  195. package/dist/chat/wiring_inject.d.ts +18 -0
  196. package/dist/chat/wiring_inject.d.ts.map +1 -0
  197. package/dist/chat/wiring_inject.js +78 -0
  198. package/dist/chat/wiring_inject.js.map +1 -0
  199. package/dist/chat/workflow_inject.d.ts +52 -0
  200. package/dist/chat/workflow_inject.d.ts.map +1 -0
  201. package/dist/chat/workflow_inject.js +346 -0
  202. package/dist/chat/workflow_inject.js.map +1 -0
  203. package/dist/chat/yujin_splash.d.ts +27 -0
  204. package/dist/chat/yujin_splash.d.ts.map +1 -0
  205. package/dist/chat/yujin_splash.js +147 -0
  206. package/dist/chat/yujin_splash.js.map +1 -0
  207. package/dist/commands/agent.d.ts +33 -0
  208. package/dist/commands/agent.d.ts.map +1 -0
  209. package/dist/commands/agent.js +281 -0
  210. package/dist/commands/agent.js.map +1 -0
  211. package/dist/commands/approve.d.ts +32 -0
  212. package/dist/commands/approve.d.ts.map +1 -0
  213. package/dist/commands/approve.js +198 -0
  214. package/dist/commands/approve.js.map +1 -0
  215. package/dist/commands/block.d.ts +28 -0
  216. package/dist/commands/block.d.ts.map +1 -0
  217. package/dist/commands/block.js +189 -0
  218. package/dist/commands/block.js.map +1 -0
  219. package/dist/commands/bootstrap.d.ts +35 -0
  220. package/dist/commands/bootstrap.d.ts.map +1 -0
  221. package/dist/commands/bootstrap.js +205 -0
  222. package/dist/commands/bootstrap.js.map +1 -0
  223. package/dist/commands/brain.d.ts +17 -0
  224. package/dist/commands/brain.d.ts.map +1 -0
  225. package/dist/commands/brain.js +129 -0
  226. package/dist/commands/brain.js.map +1 -0
  227. package/dist/commands/chat.d.ts +10 -0
  228. package/dist/commands/chat.d.ts.map +1 -1
  229. package/dist/commands/chat.js +209 -17
  230. package/dist/commands/chat.js.map +1 -1
  231. package/dist/commands/clarify.d.ts +30 -0
  232. package/dist/commands/clarify.d.ts.map +1 -0
  233. package/dist/commands/clarify.js +671 -0
  234. package/dist/commands/clarify.js.map +1 -0
  235. package/dist/commands/director.d.ts +37 -0
  236. package/dist/commands/director.d.ts.map +1 -0
  237. package/dist/commands/director.js +290 -0
  238. package/dist/commands/director.js.map +1 -0
  239. package/dist/commands/discover.d.ts +30 -0
  240. package/dist/commands/discover.d.ts.map +1 -0
  241. package/dist/commands/discover.js +178 -0
  242. package/dist/commands/discover.js.map +1 -0
  243. package/dist/commands/doctor.d.ts +18 -0
  244. package/dist/commands/doctor.d.ts.map +1 -1
  245. package/dist/commands/doctor.js +120 -4
  246. package/dist/commands/doctor.js.map +1 -1
  247. package/dist/commands/doctrine.d.ts +24 -0
  248. package/dist/commands/doctrine.d.ts.map +1 -0
  249. package/dist/commands/doctrine.js +106 -0
  250. package/dist/commands/doctrine.js.map +1 -0
  251. package/dist/commands/doctrines.d.ts +21 -0
  252. package/dist/commands/doctrines.d.ts.map +1 -0
  253. package/dist/commands/doctrines.js +158 -0
  254. package/dist/commands/doctrines.js.map +1 -0
  255. package/dist/commands/graph.d.ts +29 -0
  256. package/dist/commands/graph.d.ts.map +1 -0
  257. package/dist/commands/graph.js +362 -0
  258. package/dist/commands/graph.js.map +1 -0
  259. package/dist/commands/keys_setup.d.ts +18 -0
  260. package/dist/commands/keys_setup.d.ts.map +1 -1
  261. package/dist/commands/keys_setup.js +225 -11
  262. package/dist/commands/keys_setup.js.map +1 -1
  263. package/dist/commands/legacy-audit.d.ts +34 -0
  264. package/dist/commands/legacy-audit.d.ts.map +1 -0
  265. package/dist/commands/legacy-audit.js +270 -0
  266. package/dist/commands/legacy-audit.js.map +1 -0
  267. package/dist/commands/lessons.d.ts +28 -0
  268. package/dist/commands/lessons.d.ts.map +1 -0
  269. package/dist/commands/lessons.js +309 -0
  270. package/dist/commands/lessons.js.map +1 -0
  271. package/dist/commands/license.d.ts.map +1 -1
  272. package/dist/commands/license.js +56 -1
  273. package/dist/commands/license.js.map +1 -1
  274. package/dist/commands/limits.d.ts +15 -0
  275. package/dist/commands/limits.d.ts.map +1 -0
  276. package/dist/commands/limits.js +51 -0
  277. package/dist/commands/limits.js.map +1 -0
  278. package/dist/commands/manifest-cli.d.ts +12 -0
  279. package/dist/commands/manifest-cli.d.ts.map +1 -0
  280. package/dist/commands/manifest-cli.js +42 -0
  281. package/dist/commands/manifest-cli.js.map +1 -0
  282. package/dist/commands/mcp.d.ts +24 -0
  283. package/dist/commands/mcp.d.ts.map +1 -0
  284. package/dist/commands/mcp.js +163 -0
  285. package/dist/commands/mcp.js.map +1 -0
  286. package/dist/commands/mobile.d.ts +15 -0
  287. package/dist/commands/mobile.d.ts.map +1 -1
  288. package/dist/commands/mobile.js +27 -24
  289. package/dist/commands/mobile.js.map +1 -1
  290. package/dist/commands/nac3.d.ts +22 -0
  291. package/dist/commands/nac3.d.ts.map +1 -0
  292. package/dist/commands/nac3.js +125 -0
  293. package/dist/commands/nac3.js.map +1 -0
  294. package/dist/commands/operate.d.ts +22 -0
  295. package/dist/commands/operate.d.ts.map +1 -0
  296. package/dist/commands/operate.js +523 -0
  297. package/dist/commands/operate.js.map +1 -0
  298. package/dist/commands/pending.d.ts +22 -0
  299. package/dist/commands/pending.d.ts.map +1 -0
  300. package/dist/commands/pending.js +341 -0
  301. package/dist/commands/pending.js.map +1 -0
  302. package/dist/commands/qa.d.ts +24 -0
  303. package/dist/commands/qa.d.ts.map +1 -0
  304. package/dist/commands/qa.js +349 -0
  305. package/dist/commands/qa.js.map +1 -0
  306. package/dist/commands/spec.d.ts +38 -0
  307. package/dist/commands/spec.d.ts.map +1 -0
  308. package/dist/commands/spec.js +256 -0
  309. package/dist/commands/spec.js.map +1 -0
  310. package/dist/commands/support.d.ts +22 -0
  311. package/dist/commands/support.d.ts.map +1 -0
  312. package/dist/commands/support.js +165 -0
  313. package/dist/commands/support.js.map +1 -0
  314. package/dist/commands/test_agent.d.ts +22 -0
  315. package/dist/commands/test_agent.d.ts.map +1 -0
  316. package/dist/commands/test_agent.js +100 -0
  317. package/dist/commands/test_agent.js.map +1 -0
  318. package/dist/commands/triage.d.ts +34 -0
  319. package/dist/commands/triage.d.ts.map +1 -0
  320. package/dist/commands/triage.js +228 -0
  321. package/dist/commands/triage.js.map +1 -0
  322. package/dist/commands/vault-inventory.d.ts +30 -0
  323. package/dist/commands/vault-inventory.d.ts.map +1 -0
  324. package/dist/commands/vault-inventory.js +222 -0
  325. package/dist/commands/vault-inventory.js.map +1 -0
  326. package/dist/commands/vault.d.ts.map +1 -1
  327. package/dist/commands/vault.js +5 -0
  328. package/dist/commands/vault.js.map +1 -1
  329. package/dist/commands/voice.d.ts.map +1 -1
  330. package/dist/commands/voice.js +47 -4
  331. package/dist/commands/voice.js.map +1 -1
  332. package/dist/commands/wiring.d.ts +19 -0
  333. package/dist/commands/wiring.d.ts.map +1 -0
  334. package/dist/commands/wiring.js +135 -0
  335. package/dist/commands/wiring.js.map +1 -0
  336. package/dist/commands/workflow-coverage.d.ts +30 -0
  337. package/dist/commands/workflow-coverage.d.ts.map +1 -0
  338. package/dist/commands/workflow-coverage.js +138 -0
  339. package/dist/commands/workflow-coverage.js.map +1 -0
  340. package/dist/core/ansi_strip.d.ts +39 -0
  341. package/dist/core/ansi_strip.d.ts.map +1 -0
  342. package/dist/core/ansi_strip.js +71 -0
  343. package/dist/core/ansi_strip.js.map +1 -0
  344. package/dist/core/atomic_write.d.ts +17 -0
  345. package/dist/core/atomic_write.d.ts.map +1 -0
  346. package/dist/core/atomic_write.js +51 -0
  347. package/dist/core/atomic_write.js.map +1 -0
  348. package/dist/core/audit_log.d.ts +43 -0
  349. package/dist/core/audit_log.d.ts.map +1 -0
  350. package/dist/core/audit_log.js +80 -0
  351. package/dist/core/audit_log.js.map +1 -0
  352. package/dist/core/brain_config.d.ts +50 -0
  353. package/dist/core/brain_config.d.ts.map +1 -0
  354. package/dist/core/brain_config.js +142 -0
  355. package/dist/core/brain_config.js.map +1 -0
  356. package/dist/core/budget.d.ts +96 -0
  357. package/dist/core/budget.d.ts.map +1 -0
  358. package/dist/core/budget.js +328 -0
  359. package/dist/core/budget.js.map +1 -0
  360. package/dist/core/cost_meter.d.ts +35 -0
  361. package/dist/core/cost_meter.d.ts.map +1 -0
  362. package/dist/core/cost_meter.js +111 -0
  363. package/dist/core/cost_meter.js.map +1 -0
  364. package/dist/core/cost_router.d.ts +106 -0
  365. package/dist/core/cost_router.d.ts.map +1 -0
  366. package/dist/core/cost_router.js +589 -0
  367. package/dist/core/cost_router.js.map +1 -0
  368. package/dist/core/doctrine_resolver.d.ts +23 -0
  369. package/dist/core/doctrine_resolver.d.ts.map +1 -0
  370. package/dist/core/doctrine_resolver.js +108 -0
  371. package/dist/core/doctrine_resolver.js.map +1 -0
  372. package/dist/core/error_catalog.d.ts +80 -0
  373. package/dist/core/error_catalog.d.ts.map +1 -0
  374. package/dist/core/error_catalog.js +168 -0
  375. package/dist/core/error_catalog.js.map +1 -0
  376. package/dist/core/error_formatter.d.ts +30 -0
  377. package/dist/core/error_formatter.d.ts.map +1 -0
  378. package/dist/core/error_formatter.js +155 -0
  379. package/dist/core/error_formatter.js.map +1 -0
  380. package/dist/core/incomplete_detector.d.ts +51 -0
  381. package/dist/core/incomplete_detector.d.ts.map +1 -0
  382. package/dist/core/incomplete_detector.js +140 -0
  383. package/dist/core/incomplete_detector.js.map +1 -0
  384. package/dist/core/keys_envelope.d.ts.map +1 -1
  385. package/dist/core/keys_envelope.js +14 -9
  386. package/dist/core/keys_envelope.js.map +1 -1
  387. package/dist/core/learnings_client.d.ts +104 -0
  388. package/dist/core/learnings_client.d.ts.map +1 -0
  389. package/dist/core/learnings_client.js +262 -0
  390. package/dist/core/learnings_client.js.map +1 -0
  391. package/dist/core/limits_config.d.ts +76 -0
  392. package/dist/core/limits_config.d.ts.map +1 -0
  393. package/dist/core/limits_config.js +297 -0
  394. package/dist/core/limits_config.js.map +1 -0
  395. package/dist/core/pairing.d.ts +1 -0
  396. package/dist/core/pairing.d.ts.map +1 -1
  397. package/dist/core/pairing.js +23 -12
  398. package/dist/core/pairing.js.map +1 -1
  399. package/dist/core/pilot_setup.d.ts +29 -3
  400. package/dist/core/pilot_setup.d.ts.map +1 -1
  401. package/dist/core/pilot_setup.js +130 -3
  402. package/dist/core/pilot_setup.js.map +1 -1
  403. package/dist/core/provider_keys.d.ts +35 -0
  404. package/dist/core/provider_keys.d.ts.map +1 -0
  405. package/dist/core/provider_keys.js +267 -0
  406. package/dist/core/provider_keys.js.map +1 -0
  407. package/dist/core/provider_models.d.ts +27 -0
  408. package/dist/core/provider_models.d.ts.map +1 -0
  409. package/dist/core/provider_models.js +169 -0
  410. package/dist/core/provider_models.js.map +1 -0
  411. package/dist/core/reasoning_gate.d.ts +72 -0
  412. package/dist/core/reasoning_gate.d.ts.map +1 -0
  413. package/dist/core/reasoning_gate.js +205 -0
  414. package/dist/core/reasoning_gate.js.map +1 -0
  415. package/dist/core/shell_classifier.d.ts +49 -0
  416. package/dist/core/shell_classifier.d.ts.map +1 -0
  417. package/dist/core/shell_classifier.js +159 -0
  418. package/dist/core/shell_classifier.js.map +1 -0
  419. package/dist/core/sq_resolver.d.ts +14 -0
  420. package/dist/core/sq_resolver.d.ts.map +1 -0
  421. package/dist/core/sq_resolver.js +230 -0
  422. package/dist/core/sq_resolver.js.map +1 -0
  423. package/dist/core/truncation_detector.d.ts +68 -0
  424. package/dist/core/truncation_detector.d.ts.map +1 -0
  425. package/dist/core/truncation_detector.js +115 -0
  426. package/dist/core/truncation_detector.js.map +1 -0
  427. package/dist/core/turn_classifier.d.ts +70 -0
  428. package/dist/core/turn_classifier.d.ts.map +1 -0
  429. package/dist/core/turn_classifier.js +324 -0
  430. package/dist/core/turn_classifier.js.map +1 -0
  431. package/dist/core/vad_config.d.ts +34 -0
  432. package/dist/core/vad_config.d.ts.map +1 -0
  433. package/dist/core/vad_config.js +95 -0
  434. package/dist/core/vad_config.js.map +1 -0
  435. package/dist/core/whats_new.d.ts +42 -0
  436. package/dist/core/whats_new.d.ts.map +1 -0
  437. package/dist/core/whats_new.js +214 -0
  438. package/dist/core/whats_new.js.map +1 -0
  439. package/dist/core/wizard_state.d.ts +15 -0
  440. package/dist/core/wizard_state.d.ts.map +1 -0
  441. package/dist/core/wizard_state.js +86 -0
  442. package/dist/core/wizard_state.js.map +1 -0
  443. package/dist/deploy/adapter.d.ts +93 -0
  444. package/dist/deploy/adapter.d.ts.map +1 -0
  445. package/dist/deploy/adapter.js +42 -0
  446. package/dist/deploy/adapter.js.map +1 -0
  447. package/dist/deploy/aws_adapter.d.ts +28 -0
  448. package/dist/deploy/aws_adapter.d.ts.map +1 -0
  449. package/dist/deploy/aws_adapter.js +98 -0
  450. package/dist/deploy/aws_adapter.js.map +1 -0
  451. package/dist/deploy/cloudflare.d.ts +24 -0
  452. package/dist/deploy/cloudflare.d.ts.map +1 -0
  453. package/dist/deploy/cloudflare.js +169 -0
  454. package/dist/deploy/cloudflare.js.map +1 -0
  455. package/dist/design/yujin_design_resolver.d.ts +77 -0
  456. package/dist/design/yujin_design_resolver.d.ts.map +1 -0
  457. package/dist/design/yujin_design_resolver.js +113 -0
  458. package/dist/design/yujin_design_resolver.js.map +1 -0
  459. package/dist/docs/LIMITED_RESPONSIBILITY.md +216 -0
  460. package/dist/docs/PRIVACY_POLICY.md +169 -0
  461. package/dist/docs/SQ.md +1397 -0
  462. package/dist/docs/SQ_BY_STEP.yaml +147 -0
  463. package/dist/docs/doctrine/accessibility.md +78 -0
  464. package/dist/docs/doctrine/agent-orchestrator.md +76 -0
  465. package/dist/docs/doctrine/byok-vs-managed.md +81 -0
  466. package/dist/docs/doctrine/cost-router-escalation.md +103 -0
  467. package/dist/docs/doctrine/default-design-system.md +120 -0
  468. package/dist/docs/doctrine/explain-results.md +90 -0
  469. package/dist/docs/doctrine/expo-eas-builds.md +177 -0
  470. package/dist/docs/doctrine/g-doc.md +46 -0
  471. package/dist/docs/doctrine/gates.md +21 -0
  472. package/dist/docs/doctrine/language-sovereignty.md +143 -0
  473. package/dist/docs/doctrine/lessons-workflow.md +68 -0
  474. package/dist/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
  475. package/dist/docs/doctrine/nac3-attrs.md +23 -0
  476. package/dist/docs/doctrine/office-tools.md +102 -0
  477. package/dist/docs/doctrine/pizarron.md +52 -0
  478. package/dist/docs/doctrine/r8-modal.md +60 -0
  479. package/dist/docs/doctrine/safety-refusals.md +73 -0
  480. package/dist/docs/doctrine/testing-policy.md +211 -0
  481. package/dist/docs/doctrine/verb-composition.md +68 -0
  482. package/dist/docs/doctrine/verification-honesty.md +95 -0
  483. package/dist/docs/doctrine/workflow-kinds.md +52 -0
  484. package/dist/docs/doctrine/workflow-phases.md +108 -0
  485. package/dist/docs/doctrine/workflow.md +58 -0
  486. package/dist/docs/doctrine/yf-commands.md +49 -0
  487. package/dist/json/query.d.ts +38 -0
  488. package/dist/json/query.d.ts.map +1 -0
  489. package/dist/json/query.js +177 -0
  490. package/dist/json/query.js.map +1 -0
  491. package/dist/license/hito4_client.d.ts +7 -0
  492. package/dist/license/hito4_client.d.ts.map +1 -1
  493. package/dist/license/hito4_client.js +52 -2
  494. package/dist/license/hito4_client.js.map +1 -1
  495. package/dist/license/sync.d.ts +59 -0
  496. package/dist/license/sync.d.ts.map +1 -0
  497. package/dist/license/sync.js +148 -0
  498. package/dist/license/sync.js.map +1 -0
  499. package/dist/llm/cohere_client.d.ts +81 -0
  500. package/dist/llm/cohere_client.d.ts.map +1 -0
  501. package/dist/llm/cohere_client.js +195 -0
  502. package/dist/llm/cohere_client.js.map +1 -0
  503. package/dist/llm/deepseek_client.d.ts +63 -0
  504. package/dist/llm/deepseek_client.d.ts.map +1 -0
  505. package/dist/llm/deepseek_client.js +188 -0
  506. package/dist/llm/deepseek_client.js.map +1 -0
  507. package/dist/llm/gemini_client.d.ts +78 -0
  508. package/dist/llm/gemini_client.d.ts.map +1 -0
  509. package/dist/llm/gemini_client.js +189 -0
  510. package/dist/llm/gemini_client.js.map +1 -0
  511. package/dist/llm/managed_client.d.ts +70 -0
  512. package/dist/llm/managed_client.d.ts.map +1 -0
  513. package/dist/llm/managed_client.js +251 -0
  514. package/dist/llm/managed_client.js.map +1 -0
  515. package/dist/llm/mistral_client.d.ts +54 -0
  516. package/dist/llm/mistral_client.d.ts.map +1 -0
  517. package/dist/llm/mistral_client.js +174 -0
  518. package/dist/llm/mistral_client.js.map +1 -0
  519. package/dist/llm/multi_provider_client.d.ts +57 -0
  520. package/dist/llm/multi_provider_client.d.ts.map +1 -0
  521. package/dist/llm/multi_provider_client.js +109 -0
  522. package/dist/llm/multi_provider_client.js.map +1 -0
  523. package/dist/llm/openai_client.d.ts +77 -0
  524. package/dist/llm/openai_client.d.ts.map +1 -0
  525. package/dist/llm/openai_client.js +200 -0
  526. package/dist/llm/openai_client.js.map +1 -0
  527. package/dist/llm/xai_client.d.ts +51 -0
  528. package/dist/llm/xai_client.d.ts.map +1 -0
  529. package/dist/llm/xai_client.js +174 -0
  530. package/dist/llm/xai_client.js.map +1 -0
  531. package/dist/mcp/blocklist.d.ts +19 -0
  532. package/dist/mcp/blocklist.d.ts.map +1 -0
  533. package/dist/mcp/blocklist.js +118 -0
  534. package/dist/mcp/blocklist.js.map +1 -0
  535. package/dist/mcp/bridge_registry.d.ts +77 -0
  536. package/dist/mcp/bridge_registry.d.ts.map +1 -0
  537. package/dist/mcp/bridge_registry.js +220 -0
  538. package/dist/mcp/bridge_registry.js.map +1 -0
  539. package/dist/mcp/config.d.ts +25 -0
  540. package/dist/mcp/config.d.ts.map +1 -0
  541. package/dist/mcp/config.js +116 -0
  542. package/dist/mcp/config.js.map +1 -0
  543. package/dist/mcp/forge_panel_server.d.ts +46 -0
  544. package/dist/mcp/forge_panel_server.d.ts.map +1 -0
  545. package/dist/mcp/forge_panel_server.js +166 -0
  546. package/dist/mcp/forge_panel_server.js.map +1 -0
  547. package/dist/mcp/lan_scan.d.ts +36 -0
  548. package/dist/mcp/lan_scan.d.ts.map +1 -0
  549. package/dist/mcp/lan_scan.js +130 -0
  550. package/dist/mcp/lan_scan.js.map +1 -0
  551. package/dist/mcp/protocol_client.d.ts +63 -0
  552. package/dist/mcp/protocol_client.d.ts.map +1 -0
  553. package/dist/mcp/protocol_client.js +340 -0
  554. package/dist/mcp/protocol_client.js.map +1 -0
  555. package/dist/mcp/state.d.ts +38 -0
  556. package/dist/mcp/state.d.ts.map +1 -0
  557. package/dist/mcp/state.js +144 -0
  558. package/dist/mcp/state.js.map +1 -0
  559. package/dist/migrate/ai-decorator.d.ts.map +1 -1
  560. package/dist/migrate/ai-decorator.js +55 -143
  561. package/dist/migrate/ai-decorator.js.map +1 -1
  562. package/dist/nac3/approval_queue.d.ts +44 -0
  563. package/dist/nac3/approval_queue.d.ts.map +1 -0
  564. package/dist/nac3/approval_queue.js +105 -0
  565. package/dist/nac3/approval_queue.js.map +1 -0
  566. package/dist/nac3/backend_tools.d.ts +89 -0
  567. package/dist/nac3/backend_tools.d.ts.map +1 -0
  568. package/dist/nac3/backend_tools.js +271 -0
  569. package/dist/nac3/backend_tools.js.map +1 -0
  570. package/dist/nac3/dispatch_log.d.ts +35 -0
  571. package/dist/nac3/dispatch_log.d.ts.map +1 -0
  572. package/dist/nac3/dispatch_log.js +126 -0
  573. package/dist/nac3/dispatch_log.js.map +1 -0
  574. package/dist/nac3/internal_manifest.d.ts +62 -0
  575. package/dist/nac3/internal_manifest.d.ts.map +1 -0
  576. package/dist/nac3/internal_manifest.js +2461 -0
  577. package/dist/nac3/internal_manifest.js.map +1 -0
  578. package/dist/nac3/manifest_lazy.d.ts +71 -0
  579. package/dist/nac3/manifest_lazy.d.ts.map +1 -0
  580. package/dist/nac3/manifest_lazy.js +141 -0
  581. package/dist/nac3/manifest_lazy.js.map +1 -0
  582. package/dist/nac3/verb_tier_map.d.ts +80 -0
  583. package/dist/nac3/verb_tier_map.d.ts.map +1 -0
  584. package/dist/nac3/verb_tier_map.js +159 -0
  585. package/dist/nac3/verb_tier_map.js.map +1 -0
  586. package/dist/office/excel.d.ts +132 -0
  587. package/dist/office/excel.d.ts.map +1 -0
  588. package/dist/office/excel.js +358 -0
  589. package/dist/office/excel.js.map +1 -0
  590. package/dist/office/pdf.d.ts +35 -0
  591. package/dist/office/pdf.d.ts.map +1 -0
  592. package/dist/office/pdf.js +70 -0
  593. package/dist/office/pdf.js.map +1 -0
  594. package/dist/office/word.d.ts +64 -0
  595. package/dist/office/word.d.ts.map +1 -0
  596. package/dist/office/word.js +243 -0
  597. package/dist/office/word.js.map +1 -0
  598. package/dist/pending/store.d.ts +72 -0
  599. package/dist/pending/store.d.ts.map +1 -0
  600. package/dist/pending/store.js +274 -0
  601. package/dist/pending/store.js.map +1 -0
  602. package/dist/pending/types.d.ts +111 -0
  603. package/dist/pending/types.d.ts.map +1 -0
  604. package/dist/pending/types.js +60 -0
  605. package/dist/pending/types.js.map +1 -0
  606. package/dist/qa/brain_matrix/ab_runner.d.ts +44 -0
  607. package/dist/qa/brain_matrix/ab_runner.d.ts.map +1 -0
  608. package/dist/qa/brain_matrix/ab_runner.js +144 -0
  609. package/dist/qa/brain_matrix/ab_runner.js.map +1 -0
  610. package/dist/qa/brain_matrix/brains.json +80 -0
  611. package/dist/qa/brain_matrix/compare.d.ts +27 -0
  612. package/dist/qa/brain_matrix/compare.d.ts.map +1 -0
  613. package/dist/qa/brain_matrix/compare.js +122 -0
  614. package/dist/qa/brain_matrix/compare.js.map +1 -0
  615. package/dist/qa/brain_matrix/fake_brain.d.ts +36 -0
  616. package/dist/qa/brain_matrix/fake_brain.d.ts.map +1 -0
  617. package/dist/qa/brain_matrix/fake_brain.js +27 -0
  618. package/dist/qa/brain_matrix/fake_brain.js.map +1 -0
  619. package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_intent.json +22 -0
  620. package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_no_speak_default.json +23 -0
  621. package/dist/qa/brain_matrix/fixtures/scenario_a11y_consecutive_announces.json +37 -0
  622. package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_action.json +22 -0
  623. package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_open.json +22 -0
  624. package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_unlabeled_button.json +26 -0
  625. package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_with_shortcut.json +22 -0
  626. package/dist/qa/brain_matrix/fixtures/scenario_agent_director_consults_workflow_before_dispatch.json +42 -0
  627. package/dist/qa/brain_matrix/fixtures/scenario_analyst_extracts_then_returns.json +28 -0
  628. package/dist/qa/brain_matrix/fixtures/scenario_announce_min_tool_calls.json +23 -0
  629. package/dist/qa/brain_matrix/fixtures/scenario_app_invoke_happy_path.json +65 -0
  630. package/dist/qa/brain_matrix/fixtures/scenario_app_no_invent_without_backend.json +18 -0
  631. package/dist/qa/brain_matrix/fixtures/scenario_app_schema_fail_recover.json +48 -0
  632. package/dist/qa/brain_matrix/fixtures/scenario_approval_modal_no_redundancy.json +21 -0
  633. package/dist/qa/brain_matrix/fixtures/scenario_args_redacted_in_audit.json +17 -0
  634. package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent.json +19 -0
  635. package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent_en.json +19 -0
  636. package/dist/qa/brain_matrix/fixtures/scenario_audit_log_on_destructive.json +18 -0
  637. package/dist/qa/brain_matrix/fixtures/scenario_brain_explains_after_invoke.json +28 -0
  638. package/dist/qa/brain_matrix/fixtures/scenario_byok_on_managed_brain_overflow.json +28 -0
  639. package/dist/qa/brain_matrix/fixtures/scenario_byok_required_policy.json +35 -0
  640. package/dist/qa/brain_matrix/fixtures/scenario_coder_consults_nac_spec_before_writing.json +28 -0
  641. package/dist/qa/brain_matrix/fixtures/scenario_concise_no_loop.json +23 -0
  642. package/dist/qa/brain_matrix/fixtures/scenario_consult_nac_spec_intent.json +19 -0
  643. package/dist/qa/brain_matrix/fixtures/scenario_contradiction_rfp_cost.json +38 -0
  644. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_attachment_frontier.json +24 -0
  645. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_escalation_explicit.json +23 -0
  646. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_idle_reset.json +24 -0
  647. package/dist/qa/brain_matrix/fixtures/scenario_csv_via_excel_read.json +22 -0
  648. package/dist/qa/brain_matrix/fixtures/scenario_default_design_system_override_shadcn.json +45 -0
  649. package/dist/qa/brain_matrix/fixtures/scenario_default_design_system_use_card_template.json +44 -0
  650. package/dist/qa/brain_matrix/fixtures/scenario_destructive_no_text_confirm.json +20 -0
  651. package/dist/qa/brain_matrix/fixtures/scenario_diff_explains_changes.json +32 -0
  652. package/dist/qa/brain_matrix/fixtures/scenario_director_delegates_to_analyst.json +26 -0
  653. package/dist/qa/brain_matrix/fixtures/scenario_director_no_self_delegation.json +20 -0
  654. package/dist/qa/brain_matrix/fixtures/scenario_director_terminal_done_marker.json +19 -0
  655. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_after_unknown_intent.json +17 -0
  656. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_a11y.json +24 -0
  657. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_agent_orchestrator.json +24 -0
  658. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_byok_vs_managed.json +24 -0
  659. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_cost_router.json +24 -0
  660. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_default_design_system.json +50 -0
  661. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_g_doc.json +24 -0
  662. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_gates.json +23 -0
  663. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_intent_en.json +19 -0
  664. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_language_sovereignty.json +53 -0
  665. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_lessons_workflow.json +24 -0
  666. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_mcp_lifecycle.json +24 -0
  667. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_nac3_attrs.json +24 -0
  668. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_office.json +24 -0
  669. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_pizarron.json +23 -0
  670. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_r8_modal.json +23 -0
  671. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_testing_policy.json +55 -0
  672. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow.json +23 -0
  673. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow_phases.json +24 -0
  674. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_yf_commands.json +24 -0
  675. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_explain_results.json +22 -0
  676. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_safety_refusals.json +22 -0
  677. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_verb_composition.json +22 -0
  678. package/dist/qa/brain_matrix/fixtures/scenario_eco_defers_complex.json +17 -0
  679. package/dist/qa/brain_matrix/fixtures/scenario_eco_short_query.json +27 -0
  680. package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent.json +20 -0
  681. package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent_en.json +20 -0
  682. package/dist/qa/brain_matrix/fixtures/scenario_env_no_secret_leak.json +21 -0
  683. package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression.json +35 -0
  684. package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression_en.json +21 -0
  685. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_handles_csv_refusal.json +28 -0
  686. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent.json +20 -0
  687. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent_en.json +20 -0
  688. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_then_list.json +34 -0
  689. package/dist/qa/brain_matrix/fixtures/scenario_excel_list_sheets_first.json +22 -0
  690. package/dist/qa/brain_matrix/fixtures/scenario_excel_sheet_named.json +23 -0
  691. package/dist/qa/brain_matrix/fixtures/scenario_explain_voice_yes.json +22 -0
  692. package/dist/qa/brain_matrix/fixtures/scenario_explains_forge_error.json +39 -0
  693. package/dist/qa/brain_matrix/fixtures/scenario_focus_after_modal_open.json +29 -0
  694. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent.json +21 -0
  695. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent_en.json +20 -0
  696. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_with_glob.json +22 -0
  697. package/dist/qa/brain_matrix/fixtures/scenario_fs_mkdir_intent.json +20 -0
  698. package/dist/qa/brain_matrix/fixtures/scenario_fs_move_intent.json +20 -0
  699. package/dist/qa/brain_matrix/fixtures/scenario_fs_read_handles_missing.json +28 -0
  700. package/dist/qa/brain_matrix/fixtures/scenario_fs_stat_before_read.json +22 -0
  701. package/dist/qa/brain_matrix/fixtures/scenario_generated_app_nac3_default.json +24 -0
  702. package/dist/qa/brain_matrix/fixtures/scenario_git_branch_list_intent.json +20 -0
  703. package/dist/qa/brain_matrix/fixtures/scenario_git_diff_intent.json +20 -0
  704. package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent.json +20 -0
  705. package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent_en.json +20 -0
  706. package/dist/qa/brain_matrix/fixtures/scenario_git_pull_intent.json +19 -0
  707. package/dist/qa/brain_matrix/fixtures/scenario_git_push_intent.json +20 -0
  708. package/dist/qa/brain_matrix/fixtures/scenario_git_show_metadata_only.json +22 -0
  709. package/dist/qa/brain_matrix/fixtures/scenario_git_status_branch_combo.json +44 -0
  710. package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent.json +20 -0
  711. package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent_en.json +20 -0
  712. package/dist/qa/brain_matrix/fixtures/scenario_github_clone_repo_intent.json +20 -0
  713. package/dist/qa/brain_matrix/fixtures/scenario_github_create_repo_intent.json +20 -0
  714. package/dist/qa/brain_matrix/fixtures/scenario_id_format_in_reply.json +27 -0
  715. package/dist/qa/brain_matrix/fixtures/scenario_iterations_idempotent_adenda.json +27 -0
  716. package/dist/qa/brain_matrix/fixtures/scenario_iterations_query_history.json +29 -0
  717. package/dist/qa/brain_matrix/fixtures/scenario_iterations_tracker_acknowledge.json +28 -0
  718. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_handles_malformed.json +34 -0
  719. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent.json +30 -0
  720. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent_en.json +30 -0
  721. package/dist/qa/brain_matrix/fixtures/scenario_json_query_extract.json +23 -0
  722. package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent.json +20 -0
  723. package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent_en.json +20 -0
  724. package/dist/qa/brain_matrix/fixtures/scenario_keys_set_intent.json +20 -0
  725. package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent.json +20 -0
  726. package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent_en.json +20 -0
  727. package/dist/qa/brain_matrix/fixtures/scenario_language_sovereignty_not_conducive_spa_python.json +61 -0
  728. package/dist/qa/brain_matrix/fixtures/scenario_language_sovereignty_user_picks_python.json +48 -0
  729. package/dist/qa/brain_matrix/fixtures/scenario_lazy_complex_verb.json +27 -0
  730. package/dist/qa/brain_matrix/fixtures/scenario_lazy_doctrine_only_when_needed.json +17 -0
  731. package/dist/qa/brain_matrix/fixtures/scenario_lazy_simple_verb.json +21 -0
  732. package/dist/qa/brain_matrix/fixtures/scenario_lesson_recall_overrides.json +22 -0
  733. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_restart_app_intent.json +19 -0
  734. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent.json +19 -0
  735. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent_en.json +19 -0
  736. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent.json +20 -0
  737. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent_en.json +20 -0
  738. package/dist/qa/brain_matrix/fixtures/scenario_long_doctrine_no_truncate.json +23 -0
  739. package/dist/qa/brain_matrix/fixtures/scenario_manifest_read_intent.json +19 -0
  740. package/dist/qa/brain_matrix/fixtures/scenario_manual_open_intent.json +19 -0
  741. package/dist/qa/brain_matrix/fixtures/scenario_mcp_bridge_unreachable_graceful.json +39 -0
  742. package/dist/qa/brain_matrix/fixtures/scenario_mcp_disabled_bridge_no_verbs.json +18 -0
  743. package/dist/qa/brain_matrix/fixtures/scenario_mcp_discover_tools_intent.json +19 -0
  744. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invariant_1_no_verbs.json +19 -0
  745. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_destructive_pauses_for_r8.json +42 -0
  746. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_happy_path_writes_pizarron.json +76 -0
  747. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_network_timeout_graceful.json +41 -0
  748. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_two_hop.json +68 -0
  749. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_with_auth_loaded.json +76 -0
  750. package/dist/qa/brain_matrix/fixtures/scenario_mcp_revoked_token_graceful.json +33 -0
  751. package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_intent.json +21 -0
  752. package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_no_token_arg.json +27 -0
  753. package/dist/qa/brain_matrix/fixtures/scenario_mcp_show_tools_before_invoke.json +44 -0
  754. package/dist/qa/brain_matrix/fixtures/scenario_mcp_toggle_intent.json +20 -0
  755. package/dist/qa/brain_matrix/fixtures/scenario_multi_turn_clarify_then_act.json +24 -0
  756. package/dist/qa/brain_matrix/fixtures/scenario_nac3_attrs_doctrine.json +53 -0
  757. package/dist/qa/brain_matrix/fixtures/scenario_nac3_discover_schemas_intent.json +19 -0
  758. package/dist/qa/brain_matrix/fixtures/scenario_nac3_required_attr_missing.json +19 -0
  759. package/dist/qa/brain_matrix/fixtures/scenario_no_bare_ok_after_destructive.json +27 -0
  760. package/dist/qa/brain_matrix/fixtures/scenario_no_global_learnings_no_recall.json +20 -0
  761. package/dist/qa/brain_matrix/fixtures/scenario_no_hardcoded_color_use_token.json +47 -0
  762. package/dist/qa/brain_matrix/fixtures/scenario_no_id_leak_in_reply.json +24 -0
  763. package/dist/qa/brain_matrix/fixtures/scenario_no_invent_verb.json +18 -0
  764. package/dist/qa/brain_matrix/fixtures/scenario_no_loop_after_repeated_fail.json +42 -0
  765. package/dist/qa/brain_matrix/fixtures/scenario_no_password_echo.json +28 -0
  766. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_all_current.json +28 -0
  767. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent.json +20 -0
  768. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent_en.json +20 -0
  769. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_then_explain.json +35 -0
  770. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_read_intent.json +24 -0
  771. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_update_cell_picks_right_verb.json +26 -0
  772. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_write_required_args.json +23 -0
  773. package/dist/qa/brain_matrix/fixtures/scenario_office_overwrite_explicit.json +23 -0
  774. package/dist/qa/brain_matrix/fixtures/scenario_office_word_write_intent.json +27 -0
  775. package/dist/qa/brain_matrix/fixtures/scenario_panel_open_settings_intent.json +19 -0
  776. package/dist/qa/brain_matrix/fixtures/scenario_panel_send_message_intent.json +19 -0
  777. package/dist/qa/brain_matrix/fixtures/scenario_pdf_read_intent.json +22 -0
  778. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_clear_tab_explicit_close.json +17 -0
  779. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_chart.json +30 -0
  780. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_long_table.json +28 -0
  781. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_read_tab_intent.json +20 -0
  782. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_render_not_inline.json +20 -0
  783. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_read_file.json +28 -0
  784. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_verb_over_shell.json +22 -0
  785. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_workflow_state.json +28 -0
  786. package/dist/qa/brain_matrix/fixtures/scenario_project_init_intent.json +20 -0
  787. package/dist/qa/brain_matrix/fixtures/scenario_project_set_root_intent.json +20 -0
  788. package/dist/qa/brain_matrix/fixtures/scenario_promote_lesson_after_correction.json +17 -0
  789. package/dist/qa/brain_matrix/fixtures/scenario_r8_destructive_shell_exec.json +21 -0
  790. package/dist/qa/brain_matrix/fixtures/scenario_read_then_parse_order.json +36 -0
  791. package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_jump_intent.json +19 -0
  792. package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_set_intent.json +19 -0
  793. package/dist/qa/brain_matrix/fixtures/scenario_reader_for_long_doc.json +21 -0
  794. package/dist/qa/brain_matrix/fixtures/scenario_reader_list_docs_intent.json +19 -0
  795. package/dist/qa/brain_matrix/fixtures/scenario_reader_next_block_intent.json +19 -0
  796. package/dist/qa/brain_matrix/fixtures/scenario_reader_read_section_intent.json +19 -0
  797. package/dist/qa/brain_matrix/fixtures/scenario_reader_recap_intent.json +19 -0
  798. package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent.json +20 -0
  799. package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent_en.json +20 -0
  800. package/dist/qa/brain_matrix/fixtures/scenario_refuses_blanket_chmod_777.json +17 -0
  801. package/dist/qa/brain_matrix/fixtures/scenario_refuses_bypass_approval_modal.json +18 -0
  802. package/dist/qa/brain_matrix/fixtures/scenario_refuses_delete_critical_en.json +18 -0
  803. package/dist/qa/brain_matrix/fixtures/scenario_refuses_disable_vault_encryption.json +18 -0
  804. package/dist/qa/brain_matrix/fixtures/scenario_refuses_drop_database.json +17 -0
  805. package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main.json +17 -0
  806. package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main_en.json +17 -0
  807. package/dist/qa/brain_matrix/fixtures/scenario_refuses_leak_vault_en.json +18 -0
  808. package/dist/qa/brain_matrix/fixtures/scenario_refuses_modify_node_modules.json +17 -0
  809. package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks.json +17 -0
  810. package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks_en.json +17 -0
  811. package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_delete_critical.json +18 -0
  812. package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_leak_vault.json +18 -0
  813. package/dist/qa/brain_matrix/fixtures/scenario_respects_global_learnings.json +28 -0
  814. package/dist/qa/brain_matrix/fixtures/scenario_respects_workflow_gate_g2.json +39 -0
  815. package/dist/qa/brain_matrix/fixtures/scenario_revoke_lesson_request.json +21 -0
  816. package/dist/qa/brain_matrix/fixtures/scenario_scaffolder_destructive_pauses_for_approval.json +23 -0
  817. package/dist/qa/brain_matrix/fixtures/scenario_sq9b_deploy_checks_git_status.json +25 -0
  818. package/dist/qa/brain_matrix/fixtures/scenario_sq9b_install_checks_node_version.json +25 -0
  819. package/dist/qa/brain_matrix/fixtures/scenario_sq9b_publish_checks_gh_cli.json +25 -0
  820. package/dist/qa/brain_matrix/fixtures/scenario_sq_rules_active.json +30 -0
  821. package/dist/qa/brain_matrix/fixtures/scenario_sumie_icon_pick_from_catalog.json +56 -0
  822. package/dist/qa/brain_matrix/fixtures/scenario_tester_uses_shell_exec_only.json +27 -0
  823. package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent.json +20 -0
  824. package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent_en.json +20 -0
  825. package/dist/qa/brain_matrix/fixtures/scenario_truncated_response_retry.json +22 -0
  826. package/dist/qa/brain_matrix/fixtures/scenario_unknown_command_clarify.json +23 -0
  827. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_compose.json +23 -0
  828. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_handles_invalid.json +27 -0
  829. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent.json +20 -0
  830. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent_en.json +20 -0
  831. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_then_inspect_query.json +28 -0
  832. package/dist/qa/brain_matrix/fixtures/scenario_url_then_stringify_order.json +34 -0
  833. package/dist/qa/brain_matrix/fixtures/scenario_user_just_greets.json +17 -0
  834. package/dist/qa/brain_matrix/fixtures/scenario_user_overrides_proceeds.json +24 -0
  835. package/dist/qa/brain_matrix/fixtures/scenario_user_revokes_in_middle.json +22 -0
  836. package/dist/qa/brain_matrix/fixtures/scenario_voice_open_pizarron.json +21 -0
  837. package/dist/qa/brain_matrix/fixtures/scenario_word_outline_extraction.json +22 -0
  838. package/dist/qa/brain_matrix/fixtures/scenario_word_overwrite_explicit.json +20 -0
  839. package/dist/qa/brain_matrix/fixtures/scenario_word_section_count.json +28 -0
  840. package/dist/qa/brain_matrix/fixtures/scenario_workflow_doctrine.json +53 -0
  841. package/dist/qa/brain_matrix/fixtures/scenario_workflow_done_specs.json +32 -0
  842. package/dist/qa/brain_matrix/fixtures/scenario_workflow_intent_capture.json +22 -0
  843. package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_jump_block.json +26 -0
  844. package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_v_step_15.json +41 -0
  845. package/dist/qa/brain_matrix/fixtures/scenario_workflow_run_step_intent.json +19 -0
  846. package/dist/qa/brain_matrix/fixtures/scenario_workflow_set_intent.json +20 -0
  847. package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_injection.json +32 -0
  848. package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_recovers_after_clarify.json +25 -0
  849. package/dist/qa/brain_matrix/fixtures/scenario_workflow_step_1_intake.json +24 -0
  850. package/dist/qa/brain_matrix/fixtures/scenario_yf_command_doctrine.json +56 -0
  851. package/dist/qa/brain_matrix/fixtures/scenario_yf_doctrine_list_intent.json +19 -0
  852. package/dist/qa/brain_matrix/fixtures/scenario_yf_qa_compare_intent.json +17 -0
  853. package/dist/qa/brain_matrix/invariants.d.ts +18 -0
  854. package/dist/qa/brain_matrix/invariants.d.ts.map +1 -0
  855. package/dist/qa/brain_matrix/invariants.js +333 -0
  856. package/dist/qa/brain_matrix/invariants.js.map +1 -0
  857. package/dist/qa/brain_matrix/report.d.ts +12 -0
  858. package/dist/qa/brain_matrix/report.d.ts.map +1 -0
  859. package/dist/qa/brain_matrix/report.js +131 -0
  860. package/dist/qa/brain_matrix/report.js.map +1 -0
  861. package/dist/qa/brain_matrix/runner.d.ts +31 -0
  862. package/dist/qa/brain_matrix/runner.d.ts.map +1 -0
  863. package/dist/qa/brain_matrix/runner.js +561 -0
  864. package/dist/qa/brain_matrix/runner.js.map +1 -0
  865. package/dist/qa/brain_matrix/types.d.ts +180 -0
  866. package/dist/qa/brain_matrix/types.d.ts.map +1 -0
  867. package/dist/qa/brain_matrix/types.js +2 -0
  868. package/dist/qa/brain_matrix/types.js.map +1 -0
  869. package/dist/qa/brain_matrix/validate_scenario.d.ts +23 -0
  870. package/dist/qa/brain_matrix/validate_scenario.d.ts.map +1 -0
  871. package/dist/qa/brain_matrix/validate_scenario.js +128 -0
  872. package/dist/qa/brain_matrix/validate_scenario.js.map +1 -0
  873. package/dist/semantic_graph/ast_extract.d.ts +15 -0
  874. package/dist/semantic_graph/ast_extract.d.ts.map +1 -0
  875. package/dist/semantic_graph/ast_extract.js +162 -0
  876. package/dist/semantic_graph/ast_extract.js.map +1 -0
  877. package/dist/semantic_graph/derive.d.ts +36 -0
  878. package/dist/semantic_graph/derive.d.ts.map +1 -0
  879. package/dist/semantic_graph/derive.js +285 -0
  880. package/dist/semantic_graph/derive.js.map +1 -0
  881. package/dist/semantic_graph/llm_claim.d.ts +21 -0
  882. package/dist/semantic_graph/llm_claim.d.ts.map +1 -0
  883. package/dist/semantic_graph/llm_claim.js +164 -0
  884. package/dist/semantic_graph/llm_claim.js.map +1 -0
  885. package/dist/semantic_graph/npm_enrich.d.ts +49 -0
  886. package/dist/semantic_graph/npm_enrich.d.ts.map +1 -0
  887. package/dist/semantic_graph/npm_enrich.js +173 -0
  888. package/dist/semantic_graph/npm_enrich.js.map +1 -0
  889. package/dist/semantic_graph/render.d.ts +28 -0
  890. package/dist/semantic_graph/render.d.ts.map +1 -0
  891. package/dist/semantic_graph/render.js +70 -0
  892. package/dist/semantic_graph/render.js.map +1 -0
  893. package/dist/semantic_graph/store.d.ts +44 -0
  894. package/dist/semantic_graph/store.d.ts.map +1 -0
  895. package/dist/semantic_graph/store.js +360 -0
  896. package/dist/semantic_graph/store.js.map +1 -0
  897. package/dist/semantic_graph/types.d.ts +59 -0
  898. package/dist/semantic_graph/types.d.ts.map +1 -0
  899. package/dist/semantic_graph/types.js +17 -0
  900. package/dist/semantic_graph/types.js.map +1 -0
  901. package/dist/support/github_dispatcher.d.ts +36 -0
  902. package/dist/support/github_dispatcher.d.ts.map +1 -0
  903. package/dist/support/github_dispatcher.js +292 -0
  904. package/dist/support/github_dispatcher.js.map +1 -0
  905. package/dist/support/reports.d.ts +31 -0
  906. package/dist/support/reports.d.ts.map +1 -0
  907. package/dist/support/reports.js +162 -0
  908. package/dist/support/reports.js.map +1 -0
  909. package/dist/telemetry/usage.d.ts +67 -0
  910. package/dist/telemetry/usage.d.ts.map +1 -0
  911. package/dist/telemetry/usage.js +208 -0
  912. package/dist/telemetry/usage.js.map +1 -0
  913. package/dist/test_agent/gemini_user.d.ts +9 -0
  914. package/dist/test_agent/gemini_user.d.ts.map +1 -0
  915. package/dist/test_agent/gemini_user.js +58 -0
  916. package/dist/test_agent/gemini_user.js.map +1 -0
  917. package/dist/test_agent/profiles.d.ts +23 -0
  918. package/dist/test_agent/profiles.d.ts.map +1 -0
  919. package/dist/test_agent/profiles.js +117 -0
  920. package/dist/test_agent/profiles.js.map +1 -0
  921. package/dist/test_agent/runner.d.ts +56 -0
  922. package/dist/test_agent/runner.d.ts.map +1 -0
  923. package/dist/test_agent/runner.js +134 -0
  924. package/dist/test_agent/runner.js.map +1 -0
  925. package/dist/test_agent/target_http.d.ts +22 -0
  926. package/dist/test_agent/target_http.d.ts.map +1 -0
  927. package/dist/test_agent/target_http.js +51 -0
  928. package/dist/test_agent/target_http.js.map +1 -0
  929. package/dist/test_agent/types.d.ts +117 -0
  930. package/dist/test_agent/types.d.ts.map +1 -0
  931. package/dist/test_agent/types.js +22 -0
  932. package/dist/test_agent/types.js.map +1 -0
  933. package/dist/vault/store.d.ts.map +1 -1
  934. package/dist/vault/store.js +14 -1
  935. package/dist/vault/store.js.map +1 -1
  936. package/dist/version.d.ts +1 -1
  937. package/dist/version.d.ts.map +1 -1
  938. package/dist/version.js +1 -1
  939. package/dist/version.js.map +1 -1
  940. package/dist/voice/config.d.ts +12 -0
  941. package/dist/voice/config.d.ts.map +1 -1
  942. package/dist/voice/config.js +25 -2
  943. package/dist/voice/config.js.map +1 -1
  944. package/dist/voice/providers/google.d.ts +9 -0
  945. package/dist/voice/providers/google.d.ts.map +1 -1
  946. package/dist/voice/providers/google.js +152 -26
  947. package/dist/voice/providers/google.js.map +1 -1
  948. package/dist/voice/router.d.ts +10 -0
  949. package/dist/voice/router.d.ts.map +1 -1
  950. package/dist/voice/router.js +39 -20
  951. package/dist/voice/router.js.map +1 -1
  952. package/dist/voice/types.d.ts +5 -2
  953. package/dist/voice/types.d.ts.map +1 -1
  954. package/dist/voice/types.js.map +1 -1
  955. package/dist/wiring/discover.d.ts +14 -0
  956. package/dist/wiring/discover.d.ts.map +1 -0
  957. package/dist/wiring/discover.js +383 -0
  958. package/dist/wiring/discover.js.map +1 -0
  959. package/dist/wiring/store.d.ts +19 -0
  960. package/dist/wiring/store.d.ts.map +1 -0
  961. package/dist/wiring/store.js +182 -0
  962. package/dist/wiring/store.js.map +1 -0
  963. package/dist/wiring/types.d.ts +61 -0
  964. package/dist/wiring/types.d.ts.map +1 -0
  965. package/dist/wiring/types.js +36 -0
  966. package/dist/wiring/types.js.map +1 -0
  967. package/dist/workflow/definitions.d.ts +60 -0
  968. package/dist/workflow/definitions.d.ts.map +1 -0
  969. package/dist/workflow/definitions.js +178 -0
  970. package/dist/workflow/definitions.js.map +1 -0
  971. package/dist/workflow/definitions_client.d.ts +12 -0
  972. package/dist/workflow/definitions_client.d.ts.map +1 -0
  973. package/dist/workflow/definitions_client.js +81 -0
  974. package/dist/workflow/definitions_client.js.map +1 -0
  975. package/dist/workflow/evolution.d.ts +10 -0
  976. package/dist/workflow/evolution.d.ts.map +1 -0
  977. package/dist/workflow/evolution.js +62 -0
  978. package/dist/workflow/evolution.js.map +1 -0
  979. package/dist/workflow/graph.d.ts +59 -0
  980. package/dist/workflow/graph.d.ts.map +1 -0
  981. package/dist/workflow/graph.js +137 -0
  982. package/dist/workflow/graph.js.map +1 -0
  983. package/dist/workflow/phase_inference.d.ts +56 -0
  984. package/dist/workflow/phase_inference.d.ts.map +1 -0
  985. package/dist/workflow/phase_inference.js +107 -0
  986. package/dist/workflow/phase_inference.js.map +1 -0
  987. package/dist/workflow/select.d.ts +28 -0
  988. package/dist/workflow/select.d.ts.map +1 -0
  989. package/dist/workflow/select.js +38 -0
  990. package/dist/workflow/select.js.map +1 -0
  991. package/dist/workflow/state.d.ts +290 -0
  992. package/dist/workflow/state.d.ts.map +1 -0
  993. package/dist/workflow/state.js +213 -0
  994. package/dist/workflow/state.js.map +1 -0
  995. package/dist/workflow/view.d.ts +47 -0
  996. package/dist/workflow/view.d.ts.map +1 -0
  997. package/dist/workflow/view.js +103 -0
  998. package/dist/workflow/view.js.map +1 -0
  999. package/docs/SQ.md +1397 -0
  1000. package/docs/SQ_BY_STEP.yaml +147 -0
  1001. package/docs/doctrine/accessibility.md +78 -0
  1002. package/docs/doctrine/agent-orchestrator.md +76 -0
  1003. package/docs/doctrine/byok-vs-managed.md +81 -0
  1004. package/docs/doctrine/cost-router-escalation.md +103 -0
  1005. package/docs/doctrine/default-design-system.md +120 -0
  1006. package/docs/doctrine/explain-results.md +90 -0
  1007. package/docs/doctrine/expo-eas-builds.md +177 -0
  1008. package/docs/doctrine/g-doc.md +46 -0
  1009. package/docs/doctrine/gates.md +21 -0
  1010. package/docs/doctrine/language-sovereignty.md +143 -0
  1011. package/docs/doctrine/lessons-workflow.md +68 -0
  1012. package/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
  1013. package/docs/doctrine/nac3-attrs.md +23 -0
  1014. package/docs/doctrine/office-tools.md +102 -0
  1015. package/docs/doctrine/pizarron.md +52 -0
  1016. package/docs/doctrine/r8-modal.md +60 -0
  1017. package/docs/doctrine/safety-refusals.md +73 -0
  1018. package/docs/doctrine/testing-policy.md +211 -0
  1019. package/docs/doctrine/verb-composition.md +68 -0
  1020. package/docs/doctrine/verification-honesty.md +95 -0
  1021. package/docs/doctrine/workflow-kinds.md +52 -0
  1022. package/docs/doctrine/workflow-phases.md +108 -0
  1023. package/docs/doctrine/workflow.md +58 -0
  1024. package/docs/doctrine/yf-commands.md +49 -0
  1025. package/package.json +19 -3
  1026. package/src/i18n/catalogs/ar.json +134 -10
  1027. package/src/i18n/catalogs/de.json +134 -10
  1028. package/src/i18n/catalogs/en.json +134 -10
  1029. package/src/i18n/catalogs/es.json +134 -10
  1030. package/src/i18n/catalogs/fr.json +134 -10
  1031. package/src/i18n/catalogs/hi.json +134 -10
  1032. package/src/i18n/catalogs/it.json +134 -10
  1033. package/src/i18n/catalogs/ja.json +134 -10
  1034. package/src/i18n/catalogs/pt.json +134 -10
  1035. package/src/i18n/catalogs/zh.json +134 -10
  1036. package/templates/nextjs-app/README.md +48 -0
  1037. package/templates/nextjs-app/next.config.js +8 -0
  1038. package/templates/nextjs-app/package.json +33 -0
  1039. package/templates/nextjs-app/src/app/globals.css +43 -0
  1040. package/templates/nextjs-app/src/app/layout.tsx +29 -0
  1041. package/templates/nextjs-app/src/app/page.tsx +63 -0
  1042. package/templates/nextjs-app/src/nac/manifest.ts +36 -0
  1043. package/templates/nextjs-app/tsconfig.json +21 -0
  1044. package/templates/nextjs-app/yujin.forge.json +11 -0
  1045. package/templates/sumi-context.template.md +57 -0
@@ -0,0 +1,887 @@
1
+ import { findVerb, findVerbByAlias, validateArgs, suggestVerbs, manifest, } from '../../nac3/internal_manifest.js';
2
+ import { resolveManifestMode } from '../../nac3/manifest_lazy.js';
3
+ import { getDoctrines, listDoctrineSlugs } from '../../core/doctrine_resolver.js';
4
+ import { logDispatch, newTraceId, redactArgs, } from '../../nac3/dispatch_log.js';
5
+ import { enqueueApproval } from '../../nac3/approval_queue.js';
6
+ import { VERSION as FORGE_VERSION } from '../../version.js';
7
+ /* alpha.42 -- policies that REQUIRE panel-side approval before
8
+ * the legacy handler runs. The dispatcher pushes a pending row
9
+ * and returns an envelope; the panel modal handles the rest. */
10
+ const POLICIES_NEED_APPROVAL = new Set(['destructive', 'approval-required']);
11
+ export const NAC3_INVOKE_SPEC = {
12
+ name: 'nac3_invoke',
13
+ description: 'Invoke a NAC3 verb from the internal manifest. The manifest '
14
+ + 'lives in the system prompt. ALWAYS pick verb_id from there.\n\n'
15
+ + 'Rules:\n'
16
+ + ' - If no verb matches what the user asked, REPLY in chat '
17
+ + '"No tengo verbo NAC3 para X" -- do NOT improvise.\n'
18
+ + ' - Args must satisfy the verb schema. Read the schema in '
19
+ + 'the manifest before composing args.\n'
20
+ + ' - Check the verb policy before dispatching. Destructive / '
21
+ + 'approval-required verbs need a clear user signal first.\n'
22
+ + ' - On is_error=true: tell the user what failed; do not '
23
+ + 'paper over it. Past-tense ("listo", "guardado") is allowed '
24
+ + 'only after is_error=false.\n'
25
+ + ' - When the result carries nac3_panel_dispatch=true, the '
26
+ + 'panel will execute the verb; treat that as success.',
27
+ input_schema: {
28
+ type: 'object',
29
+ properties: {
30
+ verb_id: {
31
+ type: 'string',
32
+ description: 'Stable verb id from the manifest, e.g. yujin.pizarron.create-tab.',
33
+ },
34
+ args: {
35
+ type: 'object',
36
+ description: 'Arguments for the verb. Must satisfy the verb schema.',
37
+ },
38
+ idempotency_key: {
39
+ type: 'string',
40
+ description: 'Optional. Same key on retry -> server may dedupe.',
41
+ },
42
+ },
43
+ required: ['verb_id'],
44
+ },
45
+ requires_approval: false,
46
+ };
47
+ export async function runNac3Invoke(rawArgs, ctx, opts) {
48
+ const trace_id = newTraceId();
49
+ const startedAt = Date.now();
50
+ const m = manifest();
51
+ const baseEntry = {
52
+ trace_id,
53
+ panel_session_id: opts.panelSessionId,
54
+ forge_version: FORGE_VERSION,
55
+ llm_turn_id: opts.llmTurnId,
56
+ user_text_hash: opts.userTextHash,
57
+ manifest_version: m.version,
58
+ };
59
+ const verb_id = typeof rawArgs.verb_id === 'string' ? rawArgs.verb_id.trim() : '';
60
+ const args = (rawArgs.args && typeof rawArgs.args === 'object' && !Array.isArray(rawArgs.args))
61
+ ? rawArgs.args
62
+ : {};
63
+ if (!verb_id) {
64
+ await logDispatch({
65
+ ts: new Date().toISOString(),
66
+ kind: 'schema-fail',
67
+ ...baseEntry,
68
+ result_ok: false,
69
+ result_error: 'verb_id missing',
70
+ duration_ms: Date.now() - startedAt,
71
+ });
72
+ return {
73
+ tool: NAC3_INVOKE_SPEC.name,
74
+ is_error: true,
75
+ result: { error: 'verb_id is required (string).' },
76
+ display: 'nac3_invoke <- missing verb_id',
77
+ };
78
+ }
79
+ /* alpha.59z.38 NAC-3 v3.x backend tools (task #23 slice 2) --
80
+ * app.* namespace dispatcher. These verbs are NOT in the
81
+ * internal manifest; they come from the adopter app's
82
+ * yujin.forge.json nac3_backend.tools[] section + surface via
83
+ * buildBackendToolsSection at prompt build time. Resolving here
84
+ * before findVerb so the rest of the pipeline (gate, R8,
85
+ * legacy aliasing) skips entirely. */
86
+ if (verb_id.startsWith('app.')) {
87
+ const toolId = verb_id.slice(4);
88
+ const { runAppBackendTool } = await import('./app_backend_dispatch.js');
89
+ return await runAppBackendTool({
90
+ toolId,
91
+ args,
92
+ baseEntry,
93
+ startedAt,
94
+ projectRoot: process.cwd(),
95
+ });
96
+ }
97
+ let verb = findVerb(verb_id);
98
+ let alias_used;
99
+ if (!verb) {
100
+ /* Tolerate the LLM passing a legacy tool name as verb_id. */
101
+ verb = findVerbByAlias(verb_id);
102
+ if (verb) {
103
+ alias_used = verb_id;
104
+ await logDispatch({
105
+ ts: new Date().toISOString(),
106
+ kind: 'deprecated-alias',
107
+ ...baseEntry,
108
+ verb_id: verb.id,
109
+ alias_used: verb_id,
110
+ args_sample: redactArgs(args),
111
+ result_ok: undefined,
112
+ duration_ms: Date.now() - startedAt,
113
+ });
114
+ }
115
+ }
116
+ if (!verb) {
117
+ const closest = suggestVerbs(verb_id, 3);
118
+ await logDispatch({
119
+ ts: new Date().toISOString(),
120
+ kind: 'verb-not-found',
121
+ ...baseEntry,
122
+ verb_id,
123
+ closest_verbs: closest,
124
+ args_sample: redactArgs(args),
125
+ result_ok: false,
126
+ result_error: 'verb not found',
127
+ duration_ms: Date.now() - startedAt,
128
+ });
129
+ return {
130
+ tool: NAC3_INVOKE_SPEC.name,
131
+ is_error: true,
132
+ result: {
133
+ error: 'No NAC3 verb with id "' + verb_id + '". Pick from the manifest.',
134
+ closest_verbs: closest,
135
+ hint: 'The full manifest is in your system prompt. If you genuinely need a new verb, say so to the user instead of guessing.',
136
+ },
137
+ display: 'nac3_invoke <- unknown verb ' + verb_id,
138
+ };
139
+ }
140
+ /* Schema validation. */
141
+ const schemaErr = validateArgs(verb, args);
142
+ if (schemaErr) {
143
+ await logDispatch({
144
+ ts: new Date().toISOString(),
145
+ kind: 'schema-fail',
146
+ ...baseEntry,
147
+ verb_id: verb.id,
148
+ args_sample: redactArgs(args),
149
+ result_ok: false,
150
+ result_error: schemaErr,
151
+ duration_ms: Date.now() - startedAt,
152
+ });
153
+ /* alpha.59x mitigation #1 -- auto-recovery on schema fail in
154
+ * lazy manifest mode. The LLM saw only the stub (no schema),
155
+ * so missing/wrong args are likely "I forgot to call
156
+ * discover-schemas first". Return the schema inline so the
157
+ * next round can compose args correctly without an extra
158
+ * discovery call. In eager mode the schema is already in the
159
+ * system prompt -- still safe to repeat, costs ~200 tokens
160
+ * and saves a regression turn. */
161
+ const lazyHint = resolveManifestMode() === 'lazy'
162
+ ? ('Lazy manifest mode: call yujin.nac3.discover-schemas '
163
+ + 'before invoking complex verbs to avoid this round-trip. '
164
+ + 'Schema for "' + verb.id + '" included below; retry with '
165
+ + 'compliant args.')
166
+ : 'Schema for "' + verb.id + '" repeated below; retry with compliant args.';
167
+ return {
168
+ tool: NAC3_INVOKE_SPEC.name,
169
+ is_error: true,
170
+ result: {
171
+ error: 'Args do not match the verb schema: ' + schemaErr,
172
+ verb_id: verb.id,
173
+ schema: verb.schema,
174
+ description: verb.description,
175
+ policy: verb.policy,
176
+ side_effects: verb.side_effects,
177
+ hint: lazyHint,
178
+ },
179
+ display: 'nac3_invoke <- schema fail (' + verb.id + ')',
180
+ };
181
+ }
182
+ /* alpha.59z.0 meta-verb -- discover-doctrine. Handled inline
183
+ * because it is pure markdown read (no side effects, no
184
+ * legacy alias). */
185
+ if (verb.id === 'yujin.doctrine.discover') {
186
+ const raw = args.slugs;
187
+ const slugs = Array.isArray(raw)
188
+ ? raw.filter((x) => typeof x === 'string')
189
+ : [];
190
+ let payload;
191
+ if (slugs.length === 0) {
192
+ const available = await listDoctrineSlugs();
193
+ payload = { ok: true, available };
194
+ }
195
+ else {
196
+ const got = await getDoctrines(slugs);
197
+ payload = { doctrines: got };
198
+ }
199
+ await logDispatch({
200
+ ts: new Date().toISOString(),
201
+ kind: 'invoke',
202
+ ...baseEntry,
203
+ verb_id: verb.id,
204
+ args_sample: redactArgs(args),
205
+ policy: verb.policy,
206
+ side_effects_declared: verb.side_effects,
207
+ side_effects_actual: ['none'],
208
+ result_ok: true,
209
+ duration_ms: Date.now() - startedAt,
210
+ });
211
+ return {
212
+ tool: NAC3_INVOKE_SPEC.name,
213
+ is_error: false,
214
+ result: payload,
215
+ display: 'nac3_invoke -> doctrine:' + slugs.length,
216
+ };
217
+ }
218
+ /* alpha.59x meta-verb -- discover-schemas. Handled inline
219
+ * because it is pure manifest introspection (no side effects,
220
+ * no legacy alias) and we want the schema lookup to be as
221
+ * cheap as a manifest read. */
222
+ if (verb.id === 'yujin.nac3.discover-schemas') {
223
+ const verbIdsRaw = args.verb_ids;
224
+ const verbIds = Array.isArray(verbIdsRaw)
225
+ ? verbIdsRaw.filter((x) => typeof x === 'string')
226
+ : [];
227
+ const out = {};
228
+ for (const id of verbIds) {
229
+ const v = findVerb(id) ?? findVerbByAlias(id);
230
+ if (v) {
231
+ out[id] = {
232
+ id: v.id,
233
+ role: v.role,
234
+ action: v.action,
235
+ label: v.label,
236
+ description: v.description ?? '',
237
+ schema: v.schema,
238
+ policy: v.policy,
239
+ side_effects: v.side_effects,
240
+ handler_side: v.handler_side,
241
+ /* Same fields as the stub plus the schema -- the LLM can
242
+ * copy/paste into args confidently. */
243
+ };
244
+ }
245
+ else {
246
+ const closest = suggestVerbs(id, 3);
247
+ out[id] = { error: 'unknown verb_id', closest_verbs: closest };
248
+ }
249
+ }
250
+ await logDispatch({
251
+ ts: new Date().toISOString(),
252
+ kind: 'invoke',
253
+ ...baseEntry,
254
+ verb_id: verb.id,
255
+ args_sample: redactArgs(args),
256
+ policy: verb.policy,
257
+ side_effects_declared: verb.side_effects,
258
+ side_effects_actual: ['none'],
259
+ result_ok: true,
260
+ duration_ms: Date.now() - startedAt,
261
+ });
262
+ return {
263
+ tool: NAC3_INVOKE_SPEC.name,
264
+ is_error: false,
265
+ result: {
266
+ verbs: out,
267
+ manifest_mode: resolveManifestMode(),
268
+ manifest_version: m.version,
269
+ },
270
+ display: 'nac3_invoke -> schemas:' + verbIds.length,
271
+ };
272
+ }
273
+ /* alpha.59z.26 F101 slice 2 -- MCP bridge meta verbs.
274
+ *
275
+ * list-bridges : real, queries the registry from slice 1.
276
+ * show-tools : slice 2 stub returns the bridge endpoint +
277
+ * "tool catalogue load deferred to slice 4".
278
+ * discover-tools : slice 2 stub returns a placeholder; slice 4
279
+ * wires the on-demand schema fetch.
280
+ * toggle : slice 2 stub (requires persistent enabled-
281
+ * state file; ships in slice 4 alongside the
282
+ * proxy dispatcher).
283
+ * set-creds : slice 2 stub (requires CredentialVault per-
284
+ * bridge slot; ships in slice 4).
285
+ *
286
+ * Per the MCP-opcional invariants documented in F101_MCP_BRIDGE,
287
+ * these verbs only appear in the LLM-visible stub when the
288
+ * registry discovered >=1 bridge. findVerb/validateArgs still
289
+ * resolve them; the gate is on the prompt-side. */
290
+ if (verb.id === 'yujin.mcp.list-bridges') {
291
+ const { getActiveBridges } = await import('../../mcp/bridge_registry.js');
292
+ const bridges = await getActiveBridges({ projectRoot: process.cwd() });
293
+ const payload = {
294
+ ok: true,
295
+ bridges: bridges.map((b) => ({
296
+ id: b.id,
297
+ endpoint: b.endpoint,
298
+ source: b.source,
299
+ enabled: b.enabled,
300
+ display_name: b.display_name ?? b.id,
301
+ })),
302
+ count: bridges.length,
303
+ };
304
+ await logDispatch({
305
+ ts: new Date().toISOString(),
306
+ kind: 'invoke',
307
+ ...baseEntry,
308
+ verb_id: verb.id,
309
+ args_sample: {},
310
+ policy: verb.policy,
311
+ side_effects_declared: verb.side_effects,
312
+ side_effects_actual: ['none'],
313
+ result_ok: true,
314
+ duration_ms: Date.now() - startedAt,
315
+ });
316
+ return {
317
+ tool: NAC3_INVOKE_SPEC.name,
318
+ is_error: false,
319
+ result: payload,
320
+ display: 'nac3_invoke -> bridges:' + bridges.length,
321
+ };
322
+ }
323
+ if (verb.id === 'yujin.mcp.show-tools') {
324
+ /* F101 slice 4 FULL: delegate to the MCPClient appropriate
325
+ * for the bridge protocol (http_rest / stdio / sse). The
326
+ * http_rest path preserves slice 4 minimal behaviour. */
327
+ const bridgeId = String(args.bridge_id ?? '');
328
+ const { getActiveBridges } = await import('../../mcp/bridge_registry.js');
329
+ const bridges = await getActiveBridges({ projectRoot: process.cwd() });
330
+ const bridge = bridges.find((b) => b.id === bridgeId);
331
+ if (!bridge) {
332
+ await logDispatch({
333
+ ts: new Date().toISOString(), kind: 'invoke', ...baseEntry,
334
+ verb_id: verb.id, args_sample: redactArgs(args),
335
+ policy: verb.policy, side_effects_declared: verb.side_effects,
336
+ side_effects_actual: ['none'], result_ok: false,
337
+ result_error: 'unknown_bridge_id:' + bridgeId,
338
+ duration_ms: Date.now() - startedAt,
339
+ });
340
+ return {
341
+ tool: NAC3_INVOKE_SPEC.name, is_error: true,
342
+ result: { ok: false, error: 'unknown_bridge_id', bridge_id: bridgeId, available: bridges.map((b) => b.id) },
343
+ display: 'nac3_invoke <- bridge not found',
344
+ };
345
+ }
346
+ const { getMCPClient } = await import('../../mcp/protocol_client.js');
347
+ const client = getMCPClient(bridge);
348
+ const listResult = await client.listTools();
349
+ const sideActual = client.transport === 'stdio' ? ['process'] : ['network'];
350
+ await logDispatch({
351
+ ts: new Date().toISOString(), kind: 'invoke', ...baseEntry,
352
+ verb_id: verb.id, args_sample: redactArgs(args),
353
+ policy: verb.policy, side_effects_declared: verb.side_effects,
354
+ side_effects_actual: sideActual,
355
+ result_ok: listResult.ok,
356
+ result_error: listResult.ok ? undefined : (listResult.detail || listResult.error),
357
+ duration_ms: Date.now() - startedAt,
358
+ });
359
+ return {
360
+ tool: NAC3_INVOKE_SPEC.name,
361
+ is_error: false,
362
+ result: listResult.ok
363
+ ? { ok: true, bridge_id: bridgeId, endpoint: bridge.endpoint, transport: client.transport, tools: listResult.tools, count: listResult.count }
364
+ : { ok: false, bridge_id: bridgeId, transport: client.transport, error: listResult.error, detail: listResult.detail },
365
+ display: listResult.ok
366
+ ? 'nac3_invoke -> tools:' + listResult.count + ' via ' + client.transport
367
+ : 'nac3_invoke <- ' + listResult.error + ' (' + client.transport + ')',
368
+ };
369
+ }
370
+ if (verb.id === 'yujin.mcp.invoke-tool') {
371
+ /* Slice 4 real: POST <endpoint>/tools/<tool_slug>/invoke with
372
+ * the args body. Bridge response is forwarded verbatim. Audit
373
+ * trail records bridge_id + bridge_endpoint + tool_slug so
374
+ * MCP-proxied invocations are queryable separately from native
375
+ * dispatch. R8 modal already triggered upstream by the gate
376
+ * since the verb policy is approval-required. */
377
+ const bridgeId = String(args.bridge_id ?? '');
378
+ const toolSlug = String(args.tool_slug ?? '');
379
+ const toolArgs = args.args ?? {};
380
+ const { getActiveBridges } = await import('../../mcp/bridge_registry.js');
381
+ const bridges = await getActiveBridges({ projectRoot: process.cwd() });
382
+ const bridge = bridges.find((b) => b.id === bridgeId);
383
+ if (!bridge) {
384
+ await logDispatch({
385
+ ts: new Date().toISOString(), kind: 'invoke', ...baseEntry,
386
+ verb_id: verb.id, args_sample: redactArgs(args),
387
+ policy: verb.policy, side_effects_declared: verb.side_effects,
388
+ side_effects_actual: ['none'], result_ok: false,
389
+ result_error: 'unknown_bridge_id:' + bridgeId,
390
+ duration_ms: Date.now() - startedAt,
391
+ });
392
+ return {
393
+ tool: NAC3_INVOKE_SPEC.name, is_error: true,
394
+ result: { ok: false, error: 'unknown_bridge_id', bridge_id: bridgeId, available: bridges.map((b) => b.id) },
395
+ display: 'nac3_invoke <- bridge not found',
396
+ };
397
+ }
398
+ /* F101 slice 5 sub-slice 2 -- attach Authorization: Bearer
399
+ * <token> when the per-bridge Vault slot has a value. Slot
400
+ * name follows the canonical mcp_<bridge_id>_token pattern.
401
+ * The header is only relevant to the http_rest + sse transports;
402
+ * the stdio client ignores it (auth on stdio happens via env
403
+ * vars set at spawn time). */
404
+ const credsSlot = 'mcp_' + bridgeId.toLowerCase().replace(/[^a-z0-9_-]/g, '_') + '_token';
405
+ const authHeaders = {};
406
+ try {
407
+ const { getKey } = await import('../../core/provider_keys.js');
408
+ const token = await getKey(credsSlot);
409
+ if (token)
410
+ authHeaders['authorization'] = 'Bearer ' + token;
411
+ }
412
+ catch { /* swallow -- proceed without auth */ }
413
+ /* F101 slice 4 FULL: dispatch via MCPClient picked by bridge
414
+ * protocol. http_rest preserves slice 4 minimal; stdio + sse
415
+ * add real MCP transport support. */
416
+ const { getMCPClient } = await import('../../mcp/protocol_client.js');
417
+ const client = getMCPClient(bridge);
418
+ const invokeResult = await client.invokeTool(toolSlug, toolArgs, authHeaders);
419
+ let toolResult = null;
420
+ let invokeError;
421
+ if (invokeResult.ok) {
422
+ toolResult = invokeResult.response;
423
+ }
424
+ else {
425
+ invokeError = invokeResult.detail || invokeResult.error;
426
+ toolResult = invokeResult.partial_response ?? null;
427
+ }
428
+ await logDispatch({
429
+ ts: new Date().toISOString(), kind: 'invoke', ...baseEntry,
430
+ verb_id: verb.id,
431
+ args_sample: redactArgs({
432
+ bridge_id: bridgeId,
433
+ bridge_endpoint: bridge.endpoint,
434
+ tool_slug: toolSlug,
435
+ /* Args from the tool are NOT redacted into the audit log
436
+ * field because they could carry per-tool semantics (file
437
+ * paths, query strings) that operators need to see. The
438
+ * redactor handles standard secret patterns. */
439
+ ...(typeof toolArgs === 'object' && toolArgs !== null ? toolArgs : {}),
440
+ }),
441
+ policy: verb.policy, side_effects_declared: verb.side_effects,
442
+ side_effects_actual: invokeError ? ['network'] : ['network', 'external-api'],
443
+ result_ok: !invokeError,
444
+ result_error: invokeError,
445
+ duration_ms: Date.now() - startedAt,
446
+ });
447
+ return {
448
+ tool: NAC3_INVOKE_SPEC.name,
449
+ is_error: false,
450
+ result: {
451
+ ok: !invokeError,
452
+ bridge_id: bridgeId,
453
+ tool_slug: toolSlug,
454
+ ...(invokeError ? { error: 'bridge_invoke_failed', detail: invokeError, partial_response: toolResult } : { response: toolResult }),
455
+ },
456
+ display: invokeError
457
+ ? 'nac3_invoke <- mcp:' + bridgeId + '/' + toolSlug + ' failed'
458
+ : 'nac3_invoke -> mcp:' + bridgeId + '/' + toolSlug,
459
+ };
460
+ }
461
+ if (verb.id === 'yujin.mcp.toggle') {
462
+ /* F101 slice 5 sub-slice 1: persistent enabled-state writer.
463
+ * Writes to ~/.yujin-forge/mcp-state.json atomically + busts
464
+ * the discovery cache so the next chat turn sees the new
465
+ * state. R8 modal already fired upstream (approval-required
466
+ * policy). */
467
+ const bridgeId = String(args.bridge_id ?? '');
468
+ const enabled = Boolean(args.enabled);
469
+ const { getActiveBridges, resetBridgeCache } = await import('../../mcp/bridge_registry.js');
470
+ const bridges = await getActiveBridges({ projectRoot: process.cwd() });
471
+ const bridge = bridges.find((b) => b.id === bridgeId);
472
+ if (!bridge) {
473
+ await logDispatch({
474
+ ts: new Date().toISOString(), kind: 'invoke', ...baseEntry,
475
+ verb_id: verb.id, args_sample: redactArgs(args),
476
+ policy: verb.policy, side_effects_declared: verb.side_effects,
477
+ side_effects_actual: ['none'], result_ok: false,
478
+ result_error: 'unknown_bridge_id:' + bridgeId,
479
+ duration_ms: Date.now() - startedAt,
480
+ });
481
+ return {
482
+ tool: NAC3_INVOKE_SPEC.name, is_error: true,
483
+ result: { ok: false, error: 'unknown_bridge_id', bridge_id: bridgeId, available: bridges.map((b) => b.id) },
484
+ display: 'nac3_invoke <- bridge not found',
485
+ };
486
+ }
487
+ const { setBridgeEnabled } = await import('../../mcp/state.js');
488
+ await setBridgeEnabled(bridgeId, enabled);
489
+ resetBridgeCache();
490
+ await logDispatch({
491
+ ts: new Date().toISOString(), kind: 'invoke', ...baseEntry,
492
+ verb_id: verb.id, args_sample: redactArgs(args),
493
+ policy: verb.policy, side_effects_declared: verb.side_effects,
494
+ side_effects_actual: ['filesystem'], result_ok: true,
495
+ duration_ms: Date.now() - startedAt,
496
+ });
497
+ return {
498
+ tool: NAC3_INVOKE_SPEC.name, is_error: false,
499
+ result: {
500
+ ok: true, bridge_id: bridgeId, enabled,
501
+ message: 'Bridge ' + bridgeId + ' set to ' + (enabled ? 'enabled' : 'disabled') + '. The next chat turn will reflect this change.',
502
+ },
503
+ display: 'nac3_invoke -> mcp toggle ' + bridgeId + '=' + (enabled ? 'on' : 'off'),
504
+ };
505
+ }
506
+ if (verb.id === 'yujin.mcp.set-creds') {
507
+ /* F101 slice 5 sub-slice 2: write a per-bridge bearer token
508
+ * to CredentialVault under the dynamic slot
509
+ * mcp_<bridge_id>_token. R8 modal already fired upstream
510
+ * (destructive policy).
511
+ *
512
+ * The verb args include creds_slot for back-compat with the
513
+ * slice 2 schema, but the canonical slot name is the dynamic
514
+ * mcp_<bridge_id>_token pattern. If creds_slot does not match
515
+ * this pattern we reject -- the bridge_id MUST be in the slot
516
+ * name for the invoke-tool handler to find it without an extra
517
+ * args field. The set-creds verb does NOT carry the secret
518
+ * token itself in its args (LLM should not see it); the
519
+ * actual token must come via a separate `yf keys set <slot>`
520
+ * step. The verb just records the binding + verifies the
521
+ * slot exists. */
522
+ const bridgeId = String(args.bridge_id ?? '');
523
+ const credsSlot = String(args.creds_slot ?? '');
524
+ const expected = 'mcp_' + bridgeId.toLowerCase().replace(/[^a-z0-9_-]/g, '_') + '_token';
525
+ if (credsSlot !== expected) {
526
+ await logDispatch({
527
+ ts: new Date().toISOString(), kind: 'invoke', ...baseEntry,
528
+ verb_id: verb.id, args_sample: redactArgs(args),
529
+ policy: verb.policy, side_effects_declared: verb.side_effects,
530
+ side_effects_actual: ['none'], result_ok: false,
531
+ result_error: 'creds_slot mismatch; expected ' + expected,
532
+ duration_ms: Date.now() - startedAt,
533
+ });
534
+ return {
535
+ tool: NAC3_INVOKE_SPEC.name, is_error: true,
536
+ result: {
537
+ ok: false,
538
+ error: 'creds_slot_mismatch',
539
+ expected_slot: expected,
540
+ received_slot: credsSlot,
541
+ hint: 'Slot name MUST be mcp_<bridge_id>_token. The token itself must be loaded separately via `yf keys set ' + expected + '` so the LLM never sees it.',
542
+ },
543
+ display: 'nac3_invoke <- mcp creds slot mismatch',
544
+ };
545
+ }
546
+ const { hasKey } = await import('../../core/provider_keys.js');
547
+ const present = await hasKey(expected);
548
+ await logDispatch({
549
+ ts: new Date().toISOString(), kind: 'invoke', ...baseEntry,
550
+ verb_id: verb.id, args_sample: redactArgs(args),
551
+ policy: verb.policy, side_effects_declared: verb.side_effects,
552
+ side_effects_actual: ['filesystem'], result_ok: true,
553
+ duration_ms: Date.now() - startedAt,
554
+ });
555
+ return {
556
+ tool: NAC3_INVOKE_SPEC.name, is_error: false,
557
+ result: {
558
+ ok: true,
559
+ bridge_id: bridgeId,
560
+ slot: expected,
561
+ token_present: present,
562
+ message: present
563
+ ? 'Binding confirmed. invoke-tool calls to ' + bridgeId + ' will send Authorization: Bearer <slot value>.'
564
+ : 'Slot ' + expected + ' is empty. Run `yf keys set ' + expected + '` to load the token; invoke-tool will then attach the header automatically.',
565
+ },
566
+ display: 'nac3_invoke -> mcp creds ' + bridgeId + ' (token ' + (present ? 'loaded' : 'pending') + ')',
567
+ };
568
+ }
569
+ if (verb.id === 'yujin.mcp.discover-tools') {
570
+ /* Slice 4 full ships the on-demand schema fetch for
571
+ * MCP-proxied tools via the stdio/SSE protocol client. Until
572
+ * then the brain calls show-tools which returns the full
573
+ * catalogue (slice 4 minimal). */
574
+ const payload = {
575
+ ok: false,
576
+ deferred_to: 'F101 slice 4 full (MCP stdio/SSE client)',
577
+ message: 'discover-tools is the lazy variant of show-tools. Until the protocol client ships, use show-tools which returns the full catalogue eagerly.',
578
+ args_received: args,
579
+ };
580
+ await logDispatch({
581
+ ts: new Date().toISOString(), kind: 'invoke', ...baseEntry,
582
+ verb_id: verb.id, args_sample: redactArgs(args),
583
+ policy: verb.policy, side_effects_declared: verb.side_effects,
584
+ side_effects_actual: ['none'], result_ok: false,
585
+ duration_ms: Date.now() - startedAt,
586
+ });
587
+ return {
588
+ tool: NAC3_INVOKE_SPEC.name, is_error: false, result: payload,
589
+ display: 'nac3_invoke -> mcp-stub (' + verb.id + ')',
590
+ };
591
+ }
592
+ /* Policy gate (server-enforced side; the panel double-gates
593
+ * visible-policy verbs). */
594
+ if (verb.policy === 'byok-required') {
595
+ /* Stub: read the BYOK key catalogue and check at least one
596
+ * brain key exists. The detailed enforcement is up to the
597
+ * verb handler. */
598
+ /* Intentionally not implemented yet; alpha.40 ships the
599
+ * dispatch surface and uses byok-required as documentation. */
600
+ }
601
+ if (verb.policy === 'project-root-gated') {
602
+ /* For args carrying a 'path' or 'subdir', defence-in-depth.
603
+ * The legacy handlers already enforce this; we just log. */
604
+ }
605
+ /* alpha.42 -- destructive / approval-required GATE.
606
+ *
607
+ * The dispatcher does NOT run the legacy handler here. Instead
608
+ * it enqueues a pending approval row keyed by trace_id and
609
+ * returns an envelope. The panel intercept opens a modal; the
610
+ * user clicks Approve / Reject; the panel POSTs the decision
611
+ * to /api/forge/nac3-approve or /nac3-reject. The endpoint
612
+ * resolves the row and runs the actual handler (or logs the
613
+ * rejection).
614
+ *
615
+ * Approval is bypassed when:
616
+ * - opts.approval_bypass === true (already-approved re-entry
617
+ * from the approve endpoint; would otherwise loop).
618
+ * Nothing else is exempt -- destructive ALWAYS hits the modal.
619
+ */
620
+ if (POLICIES_NEED_APPROVAL.has(verb.policy)
621
+ && verb.handler_side === 'server'
622
+ && !opts.approval_bypass) {
623
+ /* alpha.59d -- Danger Zone master toggle. When ON, the
624
+ * modal is skipped + the call proceeds with approval_mode=
625
+ * 'danger_zone_bypass' so the audit log still records the
626
+ * invocation cleanly. */
627
+ let dangerZoneBypass = false;
628
+ try {
629
+ const { readLimitsConfig } = await import('../../core/limits_config.js');
630
+ const lim = await readLimitsConfig();
631
+ if (lim.danger_zone && lim.danger_zone.auto_approve_all === true) {
632
+ dangerZoneBypass = true;
633
+ }
634
+ }
635
+ catch { /* swallow */ }
636
+ /* Resolve the alias OR fall back to verb_id (alpha.59d
637
+ * native handlers like yujin.shell.exec). */
638
+ const alias = (verb.deprecated_aliases && verb.deprecated_aliases[0]) || verb.id;
639
+ if (!alias) {
640
+ return {
641
+ tool: NAC3_INVOKE_SPEC.name,
642
+ is_error: true,
643
+ result: { error: 'destructive verb "' + verb.id + '" has no legacy implementation' },
644
+ display: 'nac3_invoke <- no impl ' + verb.id,
645
+ };
646
+ }
647
+ if (dangerZoneBypass) {
648
+ /* Skip the modal, dispatch directly with the audit
649
+ * approval_mode set. */
650
+ const argsWithMode = {
651
+ ...args,
652
+ _approval_mode: 'danger_zone_bypass',
653
+ };
654
+ try {
655
+ const r = await opts.legacyRun(alias, argsWithMode, ctx);
656
+ await logDispatch({
657
+ ts: new Date().toISOString(),
658
+ kind: 'invoke',
659
+ ...baseEntry,
660
+ verb_id: verb.id,
661
+ alias_used: alias,
662
+ args_sample: redactArgs(args),
663
+ policy: verb.policy,
664
+ side_effects_declared: verb.side_effects,
665
+ result_ok: !r.is_error,
666
+ result_error: r.is_error ? String(r.result?.error ?? 'error') : undefined,
667
+ duration_ms: Date.now() - startedAt,
668
+ });
669
+ return r;
670
+ }
671
+ catch (err) {
672
+ return {
673
+ tool: NAC3_INVOKE_SPEC.name,
674
+ is_error: true,
675
+ result: { error: 'danger zone handler threw: ' + (err instanceof Error ? err.message : String(err)) },
676
+ display: 'nac3_invoke <- danger zone error',
677
+ };
678
+ }
679
+ }
680
+ enqueueApproval({
681
+ trace_id,
682
+ verb,
683
+ args,
684
+ ctx,
685
+ legacy_alias: alias,
686
+ legacy_run: opts.legacyRun,
687
+ created_at: Date.now(),
688
+ agent_slug: opts.agentSlug,
689
+ });
690
+ await logDispatch({
691
+ ts: new Date().toISOString(),
692
+ kind: 'invoke',
693
+ ...baseEntry,
694
+ verb_id: verb.id,
695
+ alias_used: alias,
696
+ args_sample: redactArgs(args),
697
+ policy: verb.policy,
698
+ side_effects_declared: verb.side_effects,
699
+ result_ok: true,
700
+ duration_ms: Date.now() - startedAt,
701
+ /* mark as awaiting -- the row will be paired later with the
702
+ approve/reject decision in nac3_approvals.jsonl. */
703
+ result_error: 'awaiting_user_approval',
704
+ });
705
+ /* alpha.59d.2 -- attach a classification block so the panel
706
+ * modal can render a coloured risk badge + reasons. For
707
+ * shell.exec the bucket comes from shell_classifier (rich
708
+ * signal); for other verbs we synthesise a bucket from the
709
+ * policy + side_effects so the modal still gets a chip. */
710
+ let classification;
711
+ if (verb.id === 'yujin.shell.exec') {
712
+ try {
713
+ const { classifyShellCommand } = await import('../../core/shell_classifier.js');
714
+ const cmd = typeof args.command === 'string'
715
+ ? args.command
716
+ : '';
717
+ const sc = classifyShellCommand(cmd);
718
+ classification = { bucket: sc.bucket, reasons: sc.reasons };
719
+ }
720
+ catch {
721
+ classification = { bucket: 'approval', reasons: ['classifier unavailable'] };
722
+ }
723
+ }
724
+ else if (verb.policy === 'destructive') {
725
+ classification = {
726
+ bucket: 'destructive',
727
+ reasons: ['policy=destructive', 'side_effects=' + (verb.side_effects || []).join(',')],
728
+ };
729
+ }
730
+ else {
731
+ classification = {
732
+ bucket: 'approval',
733
+ reasons: ['policy=' + verb.policy, 'side_effects=' + (verb.side_effects || []).join(',')],
734
+ };
735
+ }
736
+ return {
737
+ tool: NAC3_INVOKE_SPEC.name,
738
+ is_error: false,
739
+ result: {
740
+ nac3_panel_approval_required: true,
741
+ trace_id,
742
+ verb: {
743
+ id: verb.id,
744
+ action: verb.action,
745
+ role: verb.role,
746
+ label: verb.label,
747
+ policy: verb.policy,
748
+ side_effects: verb.side_effects,
749
+ },
750
+ args,
751
+ classification,
752
+ },
753
+ display: 'nac3_invoke -> awaiting approval (' + verb.id + ' [' + classification.bucket + '])',
754
+ };
755
+ }
756
+ /* Dispatch. */
757
+ if (verb.handler_side === 'panel') {
758
+ /* Return an envelope the panel will pick up from tool_rounds. */
759
+ await logDispatch({
760
+ ts: new Date().toISOString(),
761
+ kind: 'invoke',
762
+ ...baseEntry,
763
+ verb_id: verb.id,
764
+ alias_used,
765
+ args_sample: redactArgs(args),
766
+ policy: verb.policy,
767
+ side_effects_declared: verb.side_effects,
768
+ side_effects_actual: ['dom'],
769
+ result_ok: true,
770
+ duration_ms: Date.now() - startedAt,
771
+ });
772
+ return {
773
+ tool: NAC3_INVOKE_SPEC.name,
774
+ is_error: false,
775
+ result: {
776
+ nac3_panel_dispatch: true,
777
+ trace_id,
778
+ verb: {
779
+ id: verb.id,
780
+ action: verb.action,
781
+ role: verb.role,
782
+ policy: verb.policy,
783
+ side_effects: verb.side_effects,
784
+ },
785
+ args,
786
+ },
787
+ display: 'nac3_invoke -> panel:' + verb.action + ' (' + verb.id + ')',
788
+ };
789
+ }
790
+ /* handler_side === 'server': route to a handler. alpha.59d --
791
+ * prefer the verb_id directly (the dispatcher's switch knows
792
+ * yujin.* verbs natively); fall back to the legacy alias for
793
+ * pre-alpha.41 surfaces. */
794
+ let alias = verb.deprecated_aliases && verb.deprecated_aliases[0];
795
+ if (!alias) {
796
+ /* No legacy alias declared -- try the verb_id itself as a
797
+ * native handler name. tools.ts adds cases for yujin.* verbs
798
+ * introduced in alpha.59d (mkdir / move / project.init /
799
+ * project.set-root / shell.exec). */
800
+ alias = verb.id;
801
+ }
802
+ /* Forward the dispatcher-resolved approval mode to the handler
803
+ * via args._approval_mode so audit rows capture how the
804
+ * invocation was approved (auto / user / danger_zone). */
805
+ const argsWithMode = { ...args };
806
+ if (typeof args._approval_mode !== 'string') {
807
+ argsWithMode._approval_mode = verb.policy === 'unrestricted' ? 'auto_approved' : 'user_approved';
808
+ }
809
+ let r;
810
+ try {
811
+ r = await opts.legacyRun(alias, argsWithMode, ctx);
812
+ }
813
+ catch (err) {
814
+ await logDispatch({
815
+ ts: new Date().toISOString(),
816
+ kind: 'invoke',
817
+ ...baseEntry,
818
+ verb_id: verb.id,
819
+ alias_used: alias,
820
+ args_sample: redactArgs(args),
821
+ policy: verb.policy,
822
+ side_effects_declared: verb.side_effects,
823
+ result_ok: false,
824
+ result_error: err instanceof Error ? err.message : String(err),
825
+ duration_ms: Date.now() - startedAt,
826
+ });
827
+ return {
828
+ tool: NAC3_INVOKE_SPEC.name,
829
+ is_error: true,
830
+ result: {
831
+ error: 'verb handler threw: ' + (err instanceof Error ? err.message : String(err)),
832
+ verb_id: verb.id,
833
+ },
834
+ display: 'nac3_invoke <- handler threw',
835
+ };
836
+ }
837
+ await logDispatch({
838
+ ts: new Date().toISOString(),
839
+ kind: 'invoke',
840
+ ...baseEntry,
841
+ verb_id: verb.id,
842
+ alias_used: alias,
843
+ args_sample: redactArgs(args),
844
+ policy: verb.policy,
845
+ side_effects_declared: verb.side_effects,
846
+ side_effects_actual: verb.side_effects,
847
+ result_ok: !r.is_error,
848
+ result_error: r.is_error
849
+ ? (typeof r.result === 'object' && r.result && 'error' in r.result
850
+ ? String(r.result.error)
851
+ : 'unknown')
852
+ : undefined,
853
+ duration_ms: Date.now() - startedAt,
854
+ });
855
+ /* panel_consume = the server-side handler ran (e.g. read a file
856
+ * from disk) and the result is meant to materialise a UI update
857
+ * in the panel. Wrap as a panel-dispatch envelope so the panel
858
+ * intercept sees the canonical shape (same as handler_side=
859
+ * panel verbs above). */
860
+ if (!r.is_error && verb.panel_consume) {
861
+ return {
862
+ tool: NAC3_INVOKE_SPEC.name,
863
+ is_error: false,
864
+ result: {
865
+ nac3_panel_dispatch: true,
866
+ trace_id,
867
+ verb: {
868
+ id: verb.id,
869
+ action: verb.action,
870
+ role: verb.role,
871
+ policy: verb.policy,
872
+ side_effects: verb.side_effects,
873
+ },
874
+ args,
875
+ server_payload: r.result,
876
+ },
877
+ display: 'nac3_invoke -> panel(consume):' + verb.action + ' (' + verb.id + ')',
878
+ };
879
+ }
880
+ return {
881
+ tool: NAC3_INVOKE_SPEC.name,
882
+ is_error: r.is_error ?? false,
883
+ result: r.result,
884
+ display: 'nac3_invoke -> ' + verb.id + (r.is_error ? ' (error)' : ' (ok)'),
885
+ };
886
+ }
887
+ //# sourceMappingURL=nac3_invoke.js.map