@nac3/forge-cli 0.2.0-alpha.9 → 1.0.0

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 (1157) hide show
  1. package/README.md +21 -2
  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 +322 -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 +116 -0
  43. package/dist/agents/runner.d.ts.map +1 -0
  44. package/dist/agents/runner.js +221 -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 +102 -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 +119 -2
  64. package/dist/bin/yf.js.map +1 -1
  65. package/dist/chat/claude.d.ts +102 -1
  66. package/dist/chat/claude.d.ts.map +1 -1
  67. package/dist/chat/claude.js +215 -40
  68. package/dist/chat/claude.js.map +1 -1
  69. package/dist/chat/claude_cli.d.ts +155 -0
  70. package/dist/chat/claude_cli.d.ts.map +1 -0
  71. package/dist/chat/claude_cli.js +679 -0
  72. package/dist/chat/claude_cli.js.map +1 -0
  73. package/dist/chat/completion_hallucination_detector.d.ts +51 -0
  74. package/dist/chat/completion_hallucination_detector.d.ts.map +1 -0
  75. package/dist/chat/completion_hallucination_detector.js +131 -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 +121 -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 +10483 -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 +139 -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 +99 -2
  125. package/dist/chat/server.d.ts.map +1 -1
  126. package/dist/chat/server.js +4613 -452
  127. package/dist/chat/server.js.map +1 -1
  128. package/dist/chat/session_projects.d.ts +31 -0
  129. package/dist/chat/session_projects.d.ts.map +1 -0
  130. package/dist/chat/session_projects.js +36 -0
  131. package/dist/chat/session_projects.js.map +1 -0
  132. package/dist/chat/session_store.d.ts +32 -0
  133. package/dist/chat/session_store.d.ts.map +1 -0
  134. package/dist/chat/session_store.js +58 -0
  135. package/dist/chat/session_store.js.map +1 -0
  136. package/dist/chat/spec_extract.d.ts +1 -2
  137. package/dist/chat/spec_extract.d.ts.map +1 -1
  138. package/dist/chat/spec_extract.js +41 -56
  139. package/dist/chat/spec_extract.js.map +1 -1
  140. package/dist/chat/spec_plan.d.ts +1 -2
  141. package/dist/chat/spec_plan.d.ts.map +1 -1
  142. package/dist/chat/spec_plan.js +36 -57
  143. package/dist/chat/spec_plan.js.map +1 -1
  144. package/dist/chat/tooling_section.d.ts +11 -0
  145. package/dist/chat/tooling_section.d.ts.map +1 -0
  146. package/dist/chat/tooling_section.js +70 -0
  147. package/dist/chat/tooling_section.js.map +1 -0
  148. package/dist/chat/tools/app_backend_dispatch.d.ts +39 -0
  149. package/dist/chat/tools/app_backend_dispatch.d.ts.map +1 -0
  150. package/dist/chat/tools/app_backend_dispatch.js +282 -0
  151. package/dist/chat/tools/app_backend_dispatch.js.map +1 -0
  152. package/dist/chat/tools/fs_editor.d.ts +11 -0
  153. package/dist/chat/tools/fs_editor.d.ts.map +1 -0
  154. package/dist/chat/tools/fs_editor.js +212 -0
  155. package/dist/chat/tools/fs_editor.js.map +1 -0
  156. package/dist/chat/tools/git.d.ts +24 -0
  157. package/dist/chat/tools/git.d.ts.map +1 -1
  158. package/dist/chat/tools/git.js +78 -0
  159. package/dist/chat/tools/git.js.map +1 -1
  160. package/dist/chat/tools/graph.d.ts +43 -0
  161. package/dist/chat/tools/graph.d.ts.map +1 -0
  162. package/dist/chat/tools/graph.js +174 -0
  163. package/dist/chat/tools/graph.js.map +1 -0
  164. package/dist/chat/tools/keys.d.ts +9 -0
  165. package/dist/chat/tools/keys.d.ts.map +1 -0
  166. package/dist/chat/tools/keys.js +156 -0
  167. package/dist/chat/tools/keys.js.map +1 -0
  168. package/dist/chat/tools/misc_verbs.d.ts +36 -0
  169. package/dist/chat/tools/misc_verbs.d.ts.map +1 -0
  170. package/dist/chat/tools/misc_verbs.js +405 -0
  171. package/dist/chat/tools/misc_verbs.js.map +1 -0
  172. package/dist/chat/tools/nac3_invoke.d.ts +58 -0
  173. package/dist/chat/tools/nac3_invoke.d.ts.map +1 -0
  174. package/dist/chat/tools/nac3_invoke.js +896 -0
  175. package/dist/chat/tools/nac3_invoke.js.map +1 -0
  176. package/dist/chat/tools/pending.d.ts +69 -0
  177. package/dist/chat/tools/pending.d.ts.map +1 -0
  178. package/dist/chat/tools/pending.js +167 -0
  179. package/dist/chat/tools/pending.js.map +1 -0
  180. package/dist/chat/tools/pizarron.d.ts +40 -0
  181. package/dist/chat/tools/pizarron.d.ts.map +1 -0
  182. package/dist/chat/tools/pizarron.js +123 -0
  183. package/dist/chat/tools/pizarron.js.map +1 -0
  184. package/dist/chat/tools/project_lifecycle.d.ts +24 -0
  185. package/dist/chat/tools/project_lifecycle.d.ts.map +1 -0
  186. package/dist/chat/tools/project_lifecycle.js +212 -0
  187. package/dist/chat/tools/project_lifecycle.js.map +1 -0
  188. package/dist/chat/tools/reader.d.ts.map +1 -1
  189. package/dist/chat/tools/reader.js +144 -1
  190. package/dist/chat/tools/reader.js.map +1 -1
  191. package/dist/chat/tools/shell.d.ts +64 -0
  192. package/dist/chat/tools/shell.d.ts.map +1 -0
  193. package/dist/chat/tools/shell.js +292 -0
  194. package/dist/chat/tools/shell.js.map +1 -0
  195. package/dist/chat/tools/wiring.d.ts +28 -0
  196. package/dist/chat/tools/wiring.d.ts.map +1 -0
  197. package/dist/chat/tools/wiring.js +116 -0
  198. package/dist/chat/tools/wiring.js.map +1 -0
  199. package/dist/chat/tools/workflow.d.ts +75 -0
  200. package/dist/chat/tools/workflow.d.ts.map +1 -0
  201. package/dist/chat/tools/workflow.js +561 -0
  202. package/dist/chat/tools/workflow.js.map +1 -0
  203. package/dist/chat/tools.d.ts +42 -0
  204. package/dist/chat/tools.d.ts.map +1 -1
  205. package/dist/chat/tools.js +525 -16
  206. package/dist/chat/tools.js.map +1 -1
  207. package/dist/chat/turn_control.d.ts +42 -0
  208. package/dist/chat/turn_control.d.ts.map +1 -0
  209. package/dist/chat/turn_control.js +53 -0
  210. package/dist/chat/turn_control.js.map +1 -0
  211. package/dist/chat/wiring_inject.d.ts +18 -0
  212. package/dist/chat/wiring_inject.d.ts.map +1 -0
  213. package/dist/chat/wiring_inject.js +78 -0
  214. package/dist/chat/wiring_inject.js.map +1 -0
  215. package/dist/chat/workflow_inject.d.ts +52 -0
  216. package/dist/chat/workflow_inject.d.ts.map +1 -0
  217. package/dist/chat/workflow_inject.js +346 -0
  218. package/dist/chat/workflow_inject.js.map +1 -0
  219. package/dist/chat/yujin_splash.d.ts +27 -0
  220. package/dist/chat/yujin_splash.d.ts.map +1 -0
  221. package/dist/chat/yujin_splash.js +147 -0
  222. package/dist/chat/yujin_splash.js.map +1 -0
  223. package/dist/commands/agent.d.ts +33 -0
  224. package/dist/commands/agent.d.ts.map +1 -0
  225. package/dist/commands/agent.js +281 -0
  226. package/dist/commands/agent.js.map +1 -0
  227. package/dist/commands/approve.d.ts +32 -0
  228. package/dist/commands/approve.d.ts.map +1 -0
  229. package/dist/commands/approve.js +198 -0
  230. package/dist/commands/approve.js.map +1 -0
  231. package/dist/commands/block.d.ts +28 -0
  232. package/dist/commands/block.d.ts.map +1 -0
  233. package/dist/commands/block.js +189 -0
  234. package/dist/commands/block.js.map +1 -0
  235. package/dist/commands/bootstrap.d.ts +35 -0
  236. package/dist/commands/bootstrap.d.ts.map +1 -0
  237. package/dist/commands/bootstrap.js +205 -0
  238. package/dist/commands/bootstrap.js.map +1 -0
  239. package/dist/commands/brain.d.ts +17 -0
  240. package/dist/commands/brain.d.ts.map +1 -0
  241. package/dist/commands/brain.js +129 -0
  242. package/dist/commands/brain.js.map +1 -0
  243. package/dist/commands/chat.d.ts +10 -0
  244. package/dist/commands/chat.d.ts.map +1 -1
  245. package/dist/commands/chat.js +265 -22
  246. package/dist/commands/chat.js.map +1 -1
  247. package/dist/commands/clarify.d.ts +30 -0
  248. package/dist/commands/clarify.d.ts.map +1 -0
  249. package/dist/commands/clarify.js +671 -0
  250. package/dist/commands/clarify.js.map +1 -0
  251. package/dist/commands/director.d.ts +37 -0
  252. package/dist/commands/director.d.ts.map +1 -0
  253. package/dist/commands/director.js +290 -0
  254. package/dist/commands/director.js.map +1 -0
  255. package/dist/commands/discover.d.ts +30 -0
  256. package/dist/commands/discover.d.ts.map +1 -0
  257. package/dist/commands/discover.js +178 -0
  258. package/dist/commands/discover.js.map +1 -0
  259. package/dist/commands/doctor.d.ts +18 -0
  260. package/dist/commands/doctor.d.ts.map +1 -1
  261. package/dist/commands/doctor.js +120 -4
  262. package/dist/commands/doctor.js.map +1 -1
  263. package/dist/commands/doctrine.d.ts +24 -0
  264. package/dist/commands/doctrine.d.ts.map +1 -0
  265. package/dist/commands/doctrine.js +106 -0
  266. package/dist/commands/doctrine.js.map +1 -0
  267. package/dist/commands/doctrines.d.ts +21 -0
  268. package/dist/commands/doctrines.d.ts.map +1 -0
  269. package/dist/commands/doctrines.js +158 -0
  270. package/dist/commands/doctrines.js.map +1 -0
  271. package/dist/commands/graph.d.ts +29 -0
  272. package/dist/commands/graph.d.ts.map +1 -0
  273. package/dist/commands/graph.js +362 -0
  274. package/dist/commands/graph.js.map +1 -0
  275. package/dist/commands/keys_setup.d.ts +11 -11
  276. package/dist/commands/keys_setup.d.ts.map +1 -1
  277. package/dist/commands/keys_setup.js +149 -109
  278. package/dist/commands/keys_setup.js.map +1 -1
  279. package/dist/commands/legacy-audit.d.ts +34 -0
  280. package/dist/commands/legacy-audit.d.ts.map +1 -0
  281. package/dist/commands/legacy-audit.js +270 -0
  282. package/dist/commands/legacy-audit.js.map +1 -0
  283. package/dist/commands/lessons.d.ts +28 -0
  284. package/dist/commands/lessons.d.ts.map +1 -0
  285. package/dist/commands/lessons.js +309 -0
  286. package/dist/commands/lessons.js.map +1 -0
  287. package/dist/commands/license.d.ts.map +1 -1
  288. package/dist/commands/license.js +94 -15
  289. package/dist/commands/license.js.map +1 -1
  290. package/dist/commands/limits.d.ts +15 -0
  291. package/dist/commands/limits.d.ts.map +1 -0
  292. package/dist/commands/limits.js +51 -0
  293. package/dist/commands/limits.js.map +1 -0
  294. package/dist/commands/manifest-cli.d.ts +12 -0
  295. package/dist/commands/manifest-cli.d.ts.map +1 -0
  296. package/dist/commands/manifest-cli.js +42 -0
  297. package/dist/commands/manifest-cli.js.map +1 -0
  298. package/dist/commands/mcp.d.ts +24 -0
  299. package/dist/commands/mcp.d.ts.map +1 -0
  300. package/dist/commands/mcp.js +219 -0
  301. package/dist/commands/mcp.js.map +1 -0
  302. package/dist/commands/mobile.d.ts +15 -0
  303. package/dist/commands/mobile.d.ts.map +1 -1
  304. package/dist/commands/mobile.js +50 -43
  305. package/dist/commands/mobile.js.map +1 -1
  306. package/dist/commands/nac3.d.ts +22 -0
  307. package/dist/commands/nac3.d.ts.map +1 -0
  308. package/dist/commands/nac3.js +125 -0
  309. package/dist/commands/nac3.js.map +1 -0
  310. package/dist/commands/onboard.d.ts +19 -0
  311. package/dist/commands/onboard.d.ts.map +1 -0
  312. package/dist/commands/onboard.js +126 -0
  313. package/dist/commands/onboard.js.map +1 -0
  314. package/dist/commands/operate.d.ts +22 -0
  315. package/dist/commands/operate.d.ts.map +1 -0
  316. package/dist/commands/operate.js +523 -0
  317. package/dist/commands/operate.js.map +1 -0
  318. package/dist/commands/pending.d.ts +22 -0
  319. package/dist/commands/pending.d.ts.map +1 -0
  320. package/dist/commands/pending.js +365 -0
  321. package/dist/commands/pending.js.map +1 -0
  322. package/dist/commands/projects.js +25 -1
  323. package/dist/commands/projects.js.map +1 -1
  324. package/dist/commands/qa.d.ts +24 -0
  325. package/dist/commands/qa.d.ts.map +1 -0
  326. package/dist/commands/qa.js +349 -0
  327. package/dist/commands/qa.js.map +1 -0
  328. package/dist/commands/review-screens.js +28 -1
  329. package/dist/commands/review-screens.js.map +1 -1
  330. package/dist/commands/spec.d.ts +38 -0
  331. package/dist/commands/spec.d.ts.map +1 -0
  332. package/dist/commands/spec.js +256 -0
  333. package/dist/commands/spec.js.map +1 -0
  334. package/dist/commands/support.d.ts +22 -0
  335. package/dist/commands/support.d.ts.map +1 -0
  336. package/dist/commands/support.js +165 -0
  337. package/dist/commands/support.js.map +1 -0
  338. package/dist/commands/test_agent.d.ts +22 -0
  339. package/dist/commands/test_agent.d.ts.map +1 -0
  340. package/dist/commands/test_agent.js +100 -0
  341. package/dist/commands/test_agent.js.map +1 -0
  342. package/dist/commands/triage.d.ts +34 -0
  343. package/dist/commands/triage.d.ts.map +1 -0
  344. package/dist/commands/triage.js +228 -0
  345. package/dist/commands/triage.js.map +1 -0
  346. package/dist/commands/vault-inventory.d.ts +30 -0
  347. package/dist/commands/vault-inventory.d.ts.map +1 -0
  348. package/dist/commands/vault-inventory.js +222 -0
  349. package/dist/commands/vault-inventory.js.map +1 -0
  350. package/dist/commands/vault.d.ts.map +1 -1
  351. package/dist/commands/vault.js +5 -0
  352. package/dist/commands/vault.js.map +1 -1
  353. package/dist/commands/voice.d.ts.map +1 -1
  354. package/dist/commands/voice.js +47 -4
  355. package/dist/commands/voice.js.map +1 -1
  356. package/dist/commands/wiring.d.ts +19 -0
  357. package/dist/commands/wiring.d.ts.map +1 -0
  358. package/dist/commands/wiring.js +135 -0
  359. package/dist/commands/wiring.js.map +1 -0
  360. package/dist/commands/workflow-coverage.d.ts +30 -0
  361. package/dist/commands/workflow-coverage.d.ts.map +1 -0
  362. package/dist/commands/workflow-coverage.js +138 -0
  363. package/dist/commands/workflow-coverage.js.map +1 -0
  364. package/dist/commands/workflow.d.ts +18 -0
  365. package/dist/commands/workflow.d.ts.map +1 -0
  366. package/dist/commands/workflow.js +253 -0
  367. package/dist/commands/workflow.js.map +1 -0
  368. package/dist/core/ansi_strip.d.ts +39 -0
  369. package/dist/core/ansi_strip.d.ts.map +1 -0
  370. package/dist/core/ansi_strip.js +71 -0
  371. package/dist/core/ansi_strip.js.map +1 -0
  372. package/dist/core/atomic_write.d.ts +17 -0
  373. package/dist/core/atomic_write.d.ts.map +1 -0
  374. package/dist/core/atomic_write.js +51 -0
  375. package/dist/core/atomic_write.js.map +1 -0
  376. package/dist/core/audit_log.d.ts +43 -0
  377. package/dist/core/audit_log.d.ts.map +1 -0
  378. package/dist/core/audit_log.js +80 -0
  379. package/dist/core/audit_log.js.map +1 -0
  380. package/dist/core/brain_config.d.ts +52 -0
  381. package/dist/core/brain_config.d.ts.map +1 -0
  382. package/dist/core/brain_config.js +157 -0
  383. package/dist/core/brain_config.js.map +1 -0
  384. package/dist/core/budget.d.ts +96 -0
  385. package/dist/core/budget.d.ts.map +1 -0
  386. package/dist/core/budget.js +328 -0
  387. package/dist/core/budget.js.map +1 -0
  388. package/dist/core/cf_tunnel.d.ts.map +1 -1
  389. package/dist/core/cf_tunnel.js +8 -2
  390. package/dist/core/cf_tunnel.js.map +1 -1
  391. package/dist/core/cost_meter.d.ts +35 -0
  392. package/dist/core/cost_meter.d.ts.map +1 -0
  393. package/dist/core/cost_meter.js +111 -0
  394. package/dist/core/cost_meter.js.map +1 -0
  395. package/dist/core/cost_router.d.ts +106 -0
  396. package/dist/core/cost_router.d.ts.map +1 -0
  397. package/dist/core/cost_router.js +598 -0
  398. package/dist/core/cost_router.js.map +1 -0
  399. package/dist/core/desktop_open.d.ts +16 -0
  400. package/dist/core/desktop_open.d.ts.map +1 -0
  401. package/dist/core/desktop_open.js +114 -0
  402. package/dist/core/desktop_open.js.map +1 -0
  403. package/dist/core/doctrine_resolver.d.ts +23 -0
  404. package/dist/core/doctrine_resolver.d.ts.map +1 -0
  405. package/dist/core/doctrine_resolver.js +108 -0
  406. package/dist/core/doctrine_resolver.js.map +1 -0
  407. package/dist/core/error_catalog.d.ts +80 -0
  408. package/dist/core/error_catalog.d.ts.map +1 -0
  409. package/dist/core/error_catalog.js +168 -0
  410. package/dist/core/error_catalog.js.map +1 -0
  411. package/dist/core/error_formatter.d.ts +30 -0
  412. package/dist/core/error_formatter.d.ts.map +1 -0
  413. package/dist/core/error_formatter.js +155 -0
  414. package/dist/core/error_formatter.js.map +1 -0
  415. package/dist/core/incomplete_detector.d.ts +51 -0
  416. package/dist/core/incomplete_detector.d.ts.map +1 -0
  417. package/dist/core/incomplete_detector.js +140 -0
  418. package/dist/core/incomplete_detector.js.map +1 -0
  419. package/dist/core/keys_envelope.d.ts.map +1 -1
  420. package/dist/core/keys_envelope.js +19 -10
  421. package/dist/core/keys_envelope.js.map +1 -1
  422. package/dist/core/learnings_client.d.ts +104 -0
  423. package/dist/core/learnings_client.d.ts.map +1 -0
  424. package/dist/core/learnings_client.js +262 -0
  425. package/dist/core/learnings_client.js.map +1 -0
  426. package/dist/core/limits_config.d.ts +81 -0
  427. package/dist/core/limits_config.d.ts.map +1 -0
  428. package/dist/core/limits_config.js +302 -0
  429. package/dist/core/limits_config.js.map +1 -0
  430. package/dist/core/logger.d.ts.map +1 -1
  431. package/dist/core/logger.js +3 -0
  432. package/dist/core/logger.js.map +1 -1
  433. package/dist/core/pairing.d.ts +7 -0
  434. package/dist/core/pairing.d.ts.map +1 -1
  435. package/dist/core/pairing.js +64 -14
  436. package/dist/core/pairing.js.map +1 -1
  437. package/dist/core/pilot_setup.d.ts +29 -3
  438. package/dist/core/pilot_setup.d.ts.map +1 -1
  439. package/dist/core/pilot_setup.js +130 -3
  440. package/dist/core/pilot_setup.js.map +1 -1
  441. package/dist/core/provider_keys.d.ts +35 -0
  442. package/dist/core/provider_keys.d.ts.map +1 -0
  443. package/dist/core/provider_keys.js +280 -0
  444. package/dist/core/provider_keys.js.map +1 -0
  445. package/dist/core/provider_models.d.ts +27 -0
  446. package/dist/core/provider_models.d.ts.map +1 -0
  447. package/dist/core/provider_models.js +169 -0
  448. package/dist/core/provider_models.js.map +1 -0
  449. package/dist/core/reasoning_gate.d.ts +72 -0
  450. package/dist/core/reasoning_gate.d.ts.map +1 -0
  451. package/dist/core/reasoning_gate.js +205 -0
  452. package/dist/core/reasoning_gate.js.map +1 -0
  453. package/dist/core/shell_classifier.d.ts +49 -0
  454. package/dist/core/shell_classifier.d.ts.map +1 -0
  455. package/dist/core/shell_classifier.js +159 -0
  456. package/dist/core/shell_classifier.js.map +1 -0
  457. package/dist/core/sq_resolver.d.ts +14 -0
  458. package/dist/core/sq_resolver.d.ts.map +1 -0
  459. package/dist/core/sq_resolver.js +230 -0
  460. package/dist/core/sq_resolver.js.map +1 -0
  461. package/dist/core/truncation_detector.d.ts +68 -0
  462. package/dist/core/truncation_detector.d.ts.map +1 -0
  463. package/dist/core/truncation_detector.js +115 -0
  464. package/dist/core/truncation_detector.js.map +1 -0
  465. package/dist/core/turn_classifier.d.ts +70 -0
  466. package/dist/core/turn_classifier.d.ts.map +1 -0
  467. package/dist/core/turn_classifier.js +324 -0
  468. package/dist/core/turn_classifier.js.map +1 -0
  469. package/dist/core/vad_config.d.ts +34 -0
  470. package/dist/core/vad_config.d.ts.map +1 -0
  471. package/dist/core/vad_config.js +95 -0
  472. package/dist/core/vad_config.js.map +1 -0
  473. package/dist/core/whats_new.d.ts +42 -0
  474. package/dist/core/whats_new.d.ts.map +1 -0
  475. package/dist/core/whats_new.js +214 -0
  476. package/dist/core/whats_new.js.map +1 -0
  477. package/dist/core/wizard_state.d.ts +15 -0
  478. package/dist/core/wizard_state.d.ts.map +1 -0
  479. package/dist/core/wizard_state.js +86 -0
  480. package/dist/core/wizard_state.js.map +1 -0
  481. package/dist/deploy/adapter.d.ts +93 -0
  482. package/dist/deploy/adapter.d.ts.map +1 -0
  483. package/dist/deploy/adapter.js +42 -0
  484. package/dist/deploy/adapter.js.map +1 -0
  485. package/dist/deploy/aws_adapter.d.ts +28 -0
  486. package/dist/deploy/aws_adapter.d.ts.map +1 -0
  487. package/dist/deploy/aws_adapter.js +98 -0
  488. package/dist/deploy/aws_adapter.js.map +1 -0
  489. package/dist/deploy/cloudflare.d.ts +24 -0
  490. package/dist/deploy/cloudflare.d.ts.map +1 -0
  491. package/dist/deploy/cloudflare.js +180 -0
  492. package/dist/deploy/cloudflare.js.map +1 -0
  493. package/dist/design/yujin_design_resolver.d.ts +93 -0
  494. package/dist/design/yujin_design_resolver.d.ts.map +1 -0
  495. package/dist/design/yujin_design_resolver.js +196 -0
  496. package/dist/design/yujin_design_resolver.js.map +1 -0
  497. package/dist/docs/LIMITED_RESPONSIBILITY.md +216 -0
  498. package/dist/docs/PRIVACY_POLICY.md +169 -0
  499. package/dist/docs/SQ.md +1397 -0
  500. package/dist/docs/SQ_BY_STEP.yaml +147 -0
  501. package/dist/docs/doctrine/accessibility.md +78 -0
  502. package/dist/docs/doctrine/agent-orchestrator.md +76 -0
  503. package/dist/docs/doctrine/byok-vs-managed.md +81 -0
  504. package/dist/docs/doctrine/cost-router-escalation.md +103 -0
  505. package/dist/docs/doctrine/default-design-system.md +152 -0
  506. package/dist/docs/doctrine/explain-results.md +90 -0
  507. package/dist/docs/doctrine/expo-eas-builds.md +177 -0
  508. package/dist/docs/doctrine/g-doc.md +46 -0
  509. package/dist/docs/doctrine/gates.md +21 -0
  510. package/dist/docs/doctrine/language-sovereignty.md +143 -0
  511. package/dist/docs/doctrine/lessons-workflow.md +68 -0
  512. package/dist/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
  513. package/dist/docs/doctrine/nac3-attrs.md +23 -0
  514. package/dist/docs/doctrine/office-tools.md +122 -0
  515. package/dist/docs/doctrine/pizarron.md +52 -0
  516. package/dist/docs/doctrine/r8-modal.md +60 -0
  517. package/dist/docs/doctrine/safety-refusals.md +73 -0
  518. package/dist/docs/doctrine/testing-policy.md +211 -0
  519. package/dist/docs/doctrine/verb-composition.md +84 -0
  520. package/dist/docs/doctrine/verification-honesty.md +95 -0
  521. package/dist/docs/doctrine/workflow-kinds.md +69 -0
  522. package/dist/docs/doctrine/workflow-phases.md +108 -0
  523. package/dist/docs/doctrine/workflow.md +66 -0
  524. package/dist/docs/doctrine/yf-commands.md +49 -0
  525. package/dist/json/query.d.ts +38 -0
  526. package/dist/json/query.d.ts.map +1 -0
  527. package/dist/json/query.js +177 -0
  528. package/dist/json/query.js.map +1 -0
  529. package/dist/license/auto_sync.d.ts +22 -0
  530. package/dist/license/auto_sync.d.ts.map +1 -0
  531. package/dist/license/auto_sync.js +91 -0
  532. package/dist/license/auto_sync.js.map +1 -0
  533. package/dist/license/handle_key.d.ts +32 -0
  534. package/dist/license/handle_key.d.ts.map +1 -0
  535. package/dist/license/handle_key.js +56 -0
  536. package/dist/license/handle_key.js.map +1 -0
  537. package/dist/license/hito4_client.d.ts +7 -0
  538. package/dist/license/hito4_client.d.ts.map +1 -1
  539. package/dist/license/hito4_client.js +113 -25
  540. package/dist/license/hito4_client.js.map +1 -1
  541. package/dist/license/sync.d.ts +59 -0
  542. package/dist/license/sync.d.ts.map +1 -0
  543. package/dist/license/sync.js +148 -0
  544. package/dist/license/sync.js.map +1 -0
  545. package/dist/llm/cohere_client.d.ts +81 -0
  546. package/dist/llm/cohere_client.d.ts.map +1 -0
  547. package/dist/llm/cohere_client.js +195 -0
  548. package/dist/llm/cohere_client.js.map +1 -0
  549. package/dist/llm/deepseek_client.d.ts +63 -0
  550. package/dist/llm/deepseek_client.d.ts.map +1 -0
  551. package/dist/llm/deepseek_client.js +188 -0
  552. package/dist/llm/deepseek_client.js.map +1 -0
  553. package/dist/llm/gemini_client.d.ts +78 -0
  554. package/dist/llm/gemini_client.d.ts.map +1 -0
  555. package/dist/llm/gemini_client.js +192 -0
  556. package/dist/llm/gemini_client.js.map +1 -0
  557. package/dist/llm/managed_client.d.ts +70 -0
  558. package/dist/llm/managed_client.d.ts.map +1 -0
  559. package/dist/llm/managed_client.js +256 -0
  560. package/dist/llm/managed_client.js.map +1 -0
  561. package/dist/llm/mistral_client.d.ts +54 -0
  562. package/dist/llm/mistral_client.d.ts.map +1 -0
  563. package/dist/llm/mistral_client.js +174 -0
  564. package/dist/llm/mistral_client.js.map +1 -0
  565. package/dist/llm/multi_provider_client.d.ts +57 -0
  566. package/dist/llm/multi_provider_client.d.ts.map +1 -0
  567. package/dist/llm/multi_provider_client.js +109 -0
  568. package/dist/llm/multi_provider_client.js.map +1 -0
  569. package/dist/llm/openai_client.d.ts +77 -0
  570. package/dist/llm/openai_client.d.ts.map +1 -0
  571. package/dist/llm/openai_client.js +200 -0
  572. package/dist/llm/openai_client.js.map +1 -0
  573. package/dist/llm/xai_client.d.ts +51 -0
  574. package/dist/llm/xai_client.d.ts.map +1 -0
  575. package/dist/llm/xai_client.js +174 -0
  576. package/dist/llm/xai_client.js.map +1 -0
  577. package/dist/mcp/blocklist.d.ts +19 -0
  578. package/dist/mcp/blocklist.d.ts.map +1 -0
  579. package/dist/mcp/blocklist.js +118 -0
  580. package/dist/mcp/blocklist.js.map +1 -0
  581. package/dist/mcp/bridge_registry.d.ts +77 -0
  582. package/dist/mcp/bridge_registry.d.ts.map +1 -0
  583. package/dist/mcp/bridge_registry.js +220 -0
  584. package/dist/mcp/bridge_registry.js.map +1 -0
  585. package/dist/mcp/config.d.ts +25 -0
  586. package/dist/mcp/config.d.ts.map +1 -0
  587. package/dist/mcp/config.js +116 -0
  588. package/dist/mcp/config.js.map +1 -0
  589. package/dist/mcp/forge_panel_server.d.ts +46 -0
  590. package/dist/mcp/forge_panel_server.d.ts.map +1 -0
  591. package/dist/mcp/forge_panel_server.js +166 -0
  592. package/dist/mcp/forge_panel_server.js.map +1 -0
  593. package/dist/mcp/lan_scan.d.ts +36 -0
  594. package/dist/mcp/lan_scan.d.ts.map +1 -0
  595. package/dist/mcp/lan_scan.js +130 -0
  596. package/dist/mcp/lan_scan.js.map +1 -0
  597. package/dist/mcp/plan_bridges.d.ts +17 -0
  598. package/dist/mcp/plan_bridges.d.ts.map +1 -0
  599. package/dist/mcp/plan_bridges.js +119 -0
  600. package/dist/mcp/plan_bridges.js.map +1 -0
  601. package/dist/mcp/protocol_client.d.ts +63 -0
  602. package/dist/mcp/protocol_client.d.ts.map +1 -0
  603. package/dist/mcp/protocol_client.js +340 -0
  604. package/dist/mcp/protocol_client.js.map +1 -0
  605. package/dist/mcp/state.d.ts +38 -0
  606. package/dist/mcp/state.d.ts.map +1 -0
  607. package/dist/mcp/state.js +144 -0
  608. package/dist/mcp/state.js.map +1 -0
  609. package/dist/migrate/ai-apply.d.ts.map +1 -1
  610. package/dist/migrate/ai-apply.js +25 -2
  611. package/dist/migrate/ai-apply.js.map +1 -1
  612. package/dist/migrate/ai-decorator.d.ts.map +1 -1
  613. package/dist/migrate/ai-decorator.js +55 -143
  614. package/dist/migrate/ai-decorator.js.map +1 -1
  615. package/dist/nac3/approval_queue.d.ts +44 -0
  616. package/dist/nac3/approval_queue.d.ts.map +1 -0
  617. package/dist/nac3/approval_queue.js +105 -0
  618. package/dist/nac3/approval_queue.js.map +1 -0
  619. package/dist/nac3/backend_tools.d.ts +89 -0
  620. package/dist/nac3/backend_tools.d.ts.map +1 -0
  621. package/dist/nac3/backend_tools.js +271 -0
  622. package/dist/nac3/backend_tools.js.map +1 -0
  623. package/dist/nac3/dispatch_log.d.ts +35 -0
  624. package/dist/nac3/dispatch_log.d.ts.map +1 -0
  625. package/dist/nac3/dispatch_log.js +126 -0
  626. package/dist/nac3/dispatch_log.js.map +1 -0
  627. package/dist/nac3/internal_manifest.d.ts +62 -0
  628. package/dist/nac3/internal_manifest.d.ts.map +1 -0
  629. package/dist/nac3/internal_manifest.js +2651 -0
  630. package/dist/nac3/internal_manifest.js.map +1 -0
  631. package/dist/nac3/manifest_lazy.d.ts +71 -0
  632. package/dist/nac3/manifest_lazy.d.ts.map +1 -0
  633. package/dist/nac3/manifest_lazy.js +141 -0
  634. package/dist/nac3/manifest_lazy.js.map +1 -0
  635. package/dist/nac3/verb_tier_map.d.ts +80 -0
  636. package/dist/nac3/verb_tier_map.d.ts.map +1 -0
  637. package/dist/nac3/verb_tier_map.js +162 -0
  638. package/dist/nac3/verb_tier_map.js.map +1 -0
  639. package/dist/office/excel.d.ts +132 -0
  640. package/dist/office/excel.d.ts.map +1 -0
  641. package/dist/office/excel.js +358 -0
  642. package/dist/office/excel.js.map +1 -0
  643. package/dist/office/pdf.d.ts +35 -0
  644. package/dist/office/pdf.d.ts.map +1 -0
  645. package/dist/office/pdf.js +70 -0
  646. package/dist/office/pdf.js.map +1 -0
  647. package/dist/office/word.d.ts +64 -0
  648. package/dist/office/word.d.ts.map +1 -0
  649. package/dist/office/word.js +243 -0
  650. package/dist/office/word.js.map +1 -0
  651. package/dist/onboarding/concierge_client.d.ts +34 -0
  652. package/dist/onboarding/concierge_client.d.ts.map +1 -0
  653. package/dist/onboarding/concierge_client.js +80 -0
  654. package/dist/onboarding/concierge_client.js.map +1 -0
  655. package/dist/onboarding/next_step.d.ts +32 -0
  656. package/dist/onboarding/next_step.d.ts.map +1 -0
  657. package/dist/onboarding/next_step.js +60 -0
  658. package/dist/onboarding/next_step.js.map +1 -0
  659. package/dist/pending/store.d.ts +79 -0
  660. package/dist/pending/store.d.ts.map +1 -0
  661. package/dist/pending/store.js +293 -0
  662. package/dist/pending/store.js.map +1 -0
  663. package/dist/pending/types.d.ts +131 -0
  664. package/dist/pending/types.d.ts.map +1 -0
  665. package/dist/pending/types.js +60 -0
  666. package/dist/pending/types.js.map +1 -0
  667. package/dist/qa/brain_matrix/ab_runner.d.ts +44 -0
  668. package/dist/qa/brain_matrix/ab_runner.d.ts.map +1 -0
  669. package/dist/qa/brain_matrix/ab_runner.js +144 -0
  670. package/dist/qa/brain_matrix/ab_runner.js.map +1 -0
  671. package/dist/qa/brain_matrix/brains.json +80 -0
  672. package/dist/qa/brain_matrix/compare.d.ts +27 -0
  673. package/dist/qa/brain_matrix/compare.d.ts.map +1 -0
  674. package/dist/qa/brain_matrix/compare.js +122 -0
  675. package/dist/qa/brain_matrix/compare.js.map +1 -0
  676. package/dist/qa/brain_matrix/fake_brain.d.ts +36 -0
  677. package/dist/qa/brain_matrix/fake_brain.d.ts.map +1 -0
  678. package/dist/qa/brain_matrix/fake_brain.js +27 -0
  679. package/dist/qa/brain_matrix/fake_brain.js.map +1 -0
  680. package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_intent.json +22 -0
  681. package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_no_speak_default.json +23 -0
  682. package/dist/qa/brain_matrix/fixtures/scenario_a11y_consecutive_announces.json +37 -0
  683. package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_action.json +22 -0
  684. package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_open.json +22 -0
  685. package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_unlabeled_button.json +26 -0
  686. package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_with_shortcut.json +22 -0
  687. package/dist/qa/brain_matrix/fixtures/scenario_agent_director_consults_workflow_before_dispatch.json +42 -0
  688. package/dist/qa/brain_matrix/fixtures/scenario_analyst_extracts_then_returns.json +28 -0
  689. package/dist/qa/brain_matrix/fixtures/scenario_announce_min_tool_calls.json +23 -0
  690. package/dist/qa/brain_matrix/fixtures/scenario_app_invoke_happy_path.json +65 -0
  691. package/dist/qa/brain_matrix/fixtures/scenario_app_no_invent_without_backend.json +18 -0
  692. package/dist/qa/brain_matrix/fixtures/scenario_app_schema_fail_recover.json +48 -0
  693. package/dist/qa/brain_matrix/fixtures/scenario_approval_modal_no_redundancy.json +21 -0
  694. package/dist/qa/brain_matrix/fixtures/scenario_args_redacted_in_audit.json +17 -0
  695. package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent.json +19 -0
  696. package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent_en.json +19 -0
  697. package/dist/qa/brain_matrix/fixtures/scenario_audit_log_on_destructive.json +18 -0
  698. package/dist/qa/brain_matrix/fixtures/scenario_brain_explains_after_invoke.json +28 -0
  699. package/dist/qa/brain_matrix/fixtures/scenario_byok_on_managed_brain_overflow.json +28 -0
  700. package/dist/qa/brain_matrix/fixtures/scenario_byok_required_policy.json +35 -0
  701. package/dist/qa/brain_matrix/fixtures/scenario_coder_consults_nac_spec_before_writing.json +28 -0
  702. package/dist/qa/brain_matrix/fixtures/scenario_concise_no_loop.json +23 -0
  703. package/dist/qa/brain_matrix/fixtures/scenario_consult_nac_spec_intent.json +19 -0
  704. package/dist/qa/brain_matrix/fixtures/scenario_contradiction_rfp_cost.json +38 -0
  705. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_attachment_frontier.json +24 -0
  706. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_escalation_explicit.json +23 -0
  707. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_idle_reset.json +24 -0
  708. package/dist/qa/brain_matrix/fixtures/scenario_csv_via_excel_read.json +22 -0
  709. package/dist/qa/brain_matrix/fixtures/scenario_default_design_system_override_shadcn.json +45 -0
  710. package/dist/qa/brain_matrix/fixtures/scenario_default_design_system_use_card_template.json +44 -0
  711. package/dist/qa/brain_matrix/fixtures/scenario_destructive_no_text_confirm.json +20 -0
  712. package/dist/qa/brain_matrix/fixtures/scenario_diff_explains_changes.json +32 -0
  713. package/dist/qa/brain_matrix/fixtures/scenario_director_delegates_to_analyst.json +26 -0
  714. package/dist/qa/brain_matrix/fixtures/scenario_director_no_self_delegation.json +20 -0
  715. package/dist/qa/brain_matrix/fixtures/scenario_director_terminal_done_marker.json +19 -0
  716. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_after_unknown_intent.json +17 -0
  717. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_a11y.json +24 -0
  718. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_agent_orchestrator.json +24 -0
  719. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_byok_vs_managed.json +24 -0
  720. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_cost_router.json +24 -0
  721. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_default_design_system.json +50 -0
  722. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_g_doc.json +24 -0
  723. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_gates.json +23 -0
  724. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_intent_en.json +19 -0
  725. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_language_sovereignty.json +53 -0
  726. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_lessons_workflow.json +24 -0
  727. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_mcp_lifecycle.json +24 -0
  728. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_nac3_attrs.json +24 -0
  729. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_office.json +24 -0
  730. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_pizarron.json +23 -0
  731. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_r8_modal.json +23 -0
  732. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_testing_policy.json +55 -0
  733. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow.json +23 -0
  734. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow_phases.json +24 -0
  735. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_yf_commands.json +24 -0
  736. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_explain_results.json +22 -0
  737. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_safety_refusals.json +22 -0
  738. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_verb_composition.json +22 -0
  739. package/dist/qa/brain_matrix/fixtures/scenario_eco_defers_complex.json +17 -0
  740. package/dist/qa/brain_matrix/fixtures/scenario_eco_short_query.json +27 -0
  741. package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent.json +20 -0
  742. package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent_en.json +20 -0
  743. package/dist/qa/brain_matrix/fixtures/scenario_env_no_secret_leak.json +21 -0
  744. package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression.json +35 -0
  745. package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression_en.json +21 -0
  746. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_handles_csv_refusal.json +28 -0
  747. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent.json +20 -0
  748. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent_en.json +20 -0
  749. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_then_list.json +34 -0
  750. package/dist/qa/brain_matrix/fixtures/scenario_excel_list_sheets_first.json +22 -0
  751. package/dist/qa/brain_matrix/fixtures/scenario_excel_sheet_named.json +23 -0
  752. package/dist/qa/brain_matrix/fixtures/scenario_explain_voice_yes.json +22 -0
  753. package/dist/qa/brain_matrix/fixtures/scenario_explains_forge_error.json +39 -0
  754. package/dist/qa/brain_matrix/fixtures/scenario_focus_after_modal_open.json +29 -0
  755. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent.json +21 -0
  756. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent_en.json +20 -0
  757. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_with_glob.json +22 -0
  758. package/dist/qa/brain_matrix/fixtures/scenario_fs_mkdir_intent.json +20 -0
  759. package/dist/qa/brain_matrix/fixtures/scenario_fs_move_intent.json +20 -0
  760. package/dist/qa/brain_matrix/fixtures/scenario_fs_read_handles_missing.json +28 -0
  761. package/dist/qa/brain_matrix/fixtures/scenario_fs_stat_before_read.json +22 -0
  762. package/dist/qa/brain_matrix/fixtures/scenario_generated_app_nac3_default.json +24 -0
  763. package/dist/qa/brain_matrix/fixtures/scenario_git_branch_list_intent.json +20 -0
  764. package/dist/qa/brain_matrix/fixtures/scenario_git_diff_intent.json +20 -0
  765. package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent.json +20 -0
  766. package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent_en.json +20 -0
  767. package/dist/qa/brain_matrix/fixtures/scenario_git_pull_intent.json +19 -0
  768. package/dist/qa/brain_matrix/fixtures/scenario_git_push_intent.json +20 -0
  769. package/dist/qa/brain_matrix/fixtures/scenario_git_show_metadata_only.json +22 -0
  770. package/dist/qa/brain_matrix/fixtures/scenario_git_status_branch_combo.json +44 -0
  771. package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent.json +20 -0
  772. package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent_en.json +20 -0
  773. package/dist/qa/brain_matrix/fixtures/scenario_github_clone_repo_intent.json +20 -0
  774. package/dist/qa/brain_matrix/fixtures/scenario_github_create_repo_intent.json +20 -0
  775. package/dist/qa/brain_matrix/fixtures/scenario_id_format_in_reply.json +27 -0
  776. package/dist/qa/brain_matrix/fixtures/scenario_iterations_idempotent_adenda.json +27 -0
  777. package/dist/qa/brain_matrix/fixtures/scenario_iterations_query_history.json +29 -0
  778. package/dist/qa/brain_matrix/fixtures/scenario_iterations_tracker_acknowledge.json +28 -0
  779. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_handles_malformed.json +34 -0
  780. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent.json +30 -0
  781. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent_en.json +30 -0
  782. package/dist/qa/brain_matrix/fixtures/scenario_json_query_extract.json +23 -0
  783. package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent.json +20 -0
  784. package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent_en.json +20 -0
  785. package/dist/qa/brain_matrix/fixtures/scenario_keys_set_intent.json +20 -0
  786. package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent.json +20 -0
  787. package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent_en.json +20 -0
  788. package/dist/qa/brain_matrix/fixtures/scenario_language_sovereignty_not_conducive_spa_python.json +61 -0
  789. package/dist/qa/brain_matrix/fixtures/scenario_language_sovereignty_user_picks_python.json +48 -0
  790. package/dist/qa/brain_matrix/fixtures/scenario_lazy_complex_verb.json +27 -0
  791. package/dist/qa/brain_matrix/fixtures/scenario_lazy_doctrine_only_when_needed.json +17 -0
  792. package/dist/qa/brain_matrix/fixtures/scenario_lazy_simple_verb.json +21 -0
  793. package/dist/qa/brain_matrix/fixtures/scenario_lesson_recall_overrides.json +22 -0
  794. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_restart_app_intent.json +19 -0
  795. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent.json +19 -0
  796. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent_en.json +19 -0
  797. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent.json +20 -0
  798. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent_en.json +20 -0
  799. package/dist/qa/brain_matrix/fixtures/scenario_long_doctrine_no_truncate.json +23 -0
  800. package/dist/qa/brain_matrix/fixtures/scenario_manifest_read_intent.json +19 -0
  801. package/dist/qa/brain_matrix/fixtures/scenario_manual_open_intent.json +19 -0
  802. package/dist/qa/brain_matrix/fixtures/scenario_mcp_bridge_unreachable_graceful.json +39 -0
  803. package/dist/qa/brain_matrix/fixtures/scenario_mcp_disabled_bridge_no_verbs.json +18 -0
  804. package/dist/qa/brain_matrix/fixtures/scenario_mcp_discover_tools_intent.json +19 -0
  805. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invariant_1_no_verbs.json +19 -0
  806. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_destructive_pauses_for_r8.json +42 -0
  807. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_happy_path_writes_pizarron.json +76 -0
  808. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_network_timeout_graceful.json +41 -0
  809. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_two_hop.json +68 -0
  810. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_with_auth_loaded.json +76 -0
  811. package/dist/qa/brain_matrix/fixtures/scenario_mcp_revoked_token_graceful.json +33 -0
  812. package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_intent.json +21 -0
  813. package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_no_token_arg.json +27 -0
  814. package/dist/qa/brain_matrix/fixtures/scenario_mcp_show_tools_before_invoke.json +44 -0
  815. package/dist/qa/brain_matrix/fixtures/scenario_mcp_toggle_intent.json +20 -0
  816. package/dist/qa/brain_matrix/fixtures/scenario_multi_turn_clarify_then_act.json +24 -0
  817. package/dist/qa/brain_matrix/fixtures/scenario_nac3_attrs_doctrine.json +53 -0
  818. package/dist/qa/brain_matrix/fixtures/scenario_nac3_discover_schemas_intent.json +19 -0
  819. package/dist/qa/brain_matrix/fixtures/scenario_nac3_required_attr_missing.json +19 -0
  820. package/dist/qa/brain_matrix/fixtures/scenario_no_bare_ok_after_destructive.json +27 -0
  821. package/dist/qa/brain_matrix/fixtures/scenario_no_global_learnings_no_recall.json +20 -0
  822. package/dist/qa/brain_matrix/fixtures/scenario_no_hardcoded_color_use_token.json +47 -0
  823. package/dist/qa/brain_matrix/fixtures/scenario_no_id_leak_in_reply.json +24 -0
  824. package/dist/qa/brain_matrix/fixtures/scenario_no_invent_verb.json +18 -0
  825. package/dist/qa/brain_matrix/fixtures/scenario_no_loop_after_repeated_fail.json +42 -0
  826. package/dist/qa/brain_matrix/fixtures/scenario_no_password_echo.json +28 -0
  827. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_all_current.json +28 -0
  828. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent.json +20 -0
  829. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent_en.json +20 -0
  830. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_then_explain.json +35 -0
  831. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_read_intent.json +24 -0
  832. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_update_cell_picks_right_verb.json +26 -0
  833. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_write_required_args.json +23 -0
  834. package/dist/qa/brain_matrix/fixtures/scenario_office_overwrite_explicit.json +23 -0
  835. package/dist/qa/brain_matrix/fixtures/scenario_office_word_write_intent.json +27 -0
  836. package/dist/qa/brain_matrix/fixtures/scenario_panel_open_settings_intent.json +19 -0
  837. package/dist/qa/brain_matrix/fixtures/scenario_panel_send_message_intent.json +19 -0
  838. package/dist/qa/brain_matrix/fixtures/scenario_pdf_read_intent.json +22 -0
  839. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_clear_tab_explicit_close.json +17 -0
  840. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_chart.json +30 -0
  841. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_long_table.json +28 -0
  842. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_read_tab_intent.json +20 -0
  843. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_render_not_inline.json +20 -0
  844. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_read_file.json +28 -0
  845. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_verb_over_shell.json +22 -0
  846. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_workflow_state.json +28 -0
  847. package/dist/qa/brain_matrix/fixtures/scenario_project_init_intent.json +20 -0
  848. package/dist/qa/brain_matrix/fixtures/scenario_project_set_root_intent.json +20 -0
  849. package/dist/qa/brain_matrix/fixtures/scenario_promote_lesson_after_correction.json +17 -0
  850. package/dist/qa/brain_matrix/fixtures/scenario_r8_destructive_shell_exec.json +21 -0
  851. package/dist/qa/brain_matrix/fixtures/scenario_read_then_parse_order.json +36 -0
  852. package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_jump_intent.json +19 -0
  853. package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_set_intent.json +19 -0
  854. package/dist/qa/brain_matrix/fixtures/scenario_reader_for_long_doc.json +21 -0
  855. package/dist/qa/brain_matrix/fixtures/scenario_reader_list_docs_intent.json +19 -0
  856. package/dist/qa/brain_matrix/fixtures/scenario_reader_next_block_intent.json +19 -0
  857. package/dist/qa/brain_matrix/fixtures/scenario_reader_read_section_intent.json +19 -0
  858. package/dist/qa/brain_matrix/fixtures/scenario_reader_recap_intent.json +19 -0
  859. package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent.json +20 -0
  860. package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent_en.json +20 -0
  861. package/dist/qa/brain_matrix/fixtures/scenario_refuses_blanket_chmod_777.json +17 -0
  862. package/dist/qa/brain_matrix/fixtures/scenario_refuses_bypass_approval_modal.json +18 -0
  863. package/dist/qa/brain_matrix/fixtures/scenario_refuses_delete_critical_en.json +18 -0
  864. package/dist/qa/brain_matrix/fixtures/scenario_refuses_disable_vault_encryption.json +18 -0
  865. package/dist/qa/brain_matrix/fixtures/scenario_refuses_drop_database.json +17 -0
  866. package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main.json +17 -0
  867. package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main_en.json +17 -0
  868. package/dist/qa/brain_matrix/fixtures/scenario_refuses_leak_vault_en.json +18 -0
  869. package/dist/qa/brain_matrix/fixtures/scenario_refuses_modify_node_modules.json +17 -0
  870. package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks.json +17 -0
  871. package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks_en.json +17 -0
  872. package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_delete_critical.json +18 -0
  873. package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_leak_vault.json +18 -0
  874. package/dist/qa/brain_matrix/fixtures/scenario_respects_global_learnings.json +28 -0
  875. package/dist/qa/brain_matrix/fixtures/scenario_respects_workflow_gate_g2.json +39 -0
  876. package/dist/qa/brain_matrix/fixtures/scenario_revoke_lesson_request.json +21 -0
  877. package/dist/qa/brain_matrix/fixtures/scenario_scaffolder_destructive_pauses_for_approval.json +23 -0
  878. package/dist/qa/brain_matrix/fixtures/scenario_sq9b_deploy_checks_git_status.json +25 -0
  879. package/dist/qa/brain_matrix/fixtures/scenario_sq9b_install_checks_node_version.json +25 -0
  880. package/dist/qa/brain_matrix/fixtures/scenario_sq9b_publish_checks_gh_cli.json +25 -0
  881. package/dist/qa/brain_matrix/fixtures/scenario_sq_rules_active.json +30 -0
  882. package/dist/qa/brain_matrix/fixtures/scenario_sumie_icon_pick_from_catalog.json +56 -0
  883. package/dist/qa/brain_matrix/fixtures/scenario_tester_uses_shell_exec_only.json +27 -0
  884. package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent.json +20 -0
  885. package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent_en.json +20 -0
  886. package/dist/qa/brain_matrix/fixtures/scenario_truncated_response_retry.json +22 -0
  887. package/dist/qa/brain_matrix/fixtures/scenario_unknown_command_clarify.json +23 -0
  888. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_compose.json +23 -0
  889. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_handles_invalid.json +27 -0
  890. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent.json +20 -0
  891. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent_en.json +20 -0
  892. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_then_inspect_query.json +28 -0
  893. package/dist/qa/brain_matrix/fixtures/scenario_url_then_stringify_order.json +34 -0
  894. package/dist/qa/brain_matrix/fixtures/scenario_user_just_greets.json +17 -0
  895. package/dist/qa/brain_matrix/fixtures/scenario_user_overrides_proceeds.json +24 -0
  896. package/dist/qa/brain_matrix/fixtures/scenario_user_revokes_in_middle.json +22 -0
  897. package/dist/qa/brain_matrix/fixtures/scenario_voice_open_pizarron.json +21 -0
  898. package/dist/qa/brain_matrix/fixtures/scenario_word_outline_extraction.json +22 -0
  899. package/dist/qa/brain_matrix/fixtures/scenario_word_overwrite_explicit.json +20 -0
  900. package/dist/qa/brain_matrix/fixtures/scenario_word_section_count.json +28 -0
  901. package/dist/qa/brain_matrix/fixtures/scenario_workflow_doctrine.json +53 -0
  902. package/dist/qa/brain_matrix/fixtures/scenario_workflow_done_specs.json +32 -0
  903. package/dist/qa/brain_matrix/fixtures/scenario_workflow_intent_capture.json +22 -0
  904. package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_jump_block.json +26 -0
  905. package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_v_step_15.json +41 -0
  906. package/dist/qa/brain_matrix/fixtures/scenario_workflow_run_step_intent.json +19 -0
  907. package/dist/qa/brain_matrix/fixtures/scenario_workflow_set_intent.json +20 -0
  908. package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_injection.json +32 -0
  909. package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_recovers_after_clarify.json +25 -0
  910. package/dist/qa/brain_matrix/fixtures/scenario_workflow_step_1_intake.json +24 -0
  911. package/dist/qa/brain_matrix/fixtures/scenario_yf_command_doctrine.json +56 -0
  912. package/dist/qa/brain_matrix/fixtures/scenario_yf_doctrine_list_intent.json +19 -0
  913. package/dist/qa/brain_matrix/fixtures/scenario_yf_qa_compare_intent.json +17 -0
  914. package/dist/qa/brain_matrix/invariants.d.ts +18 -0
  915. package/dist/qa/brain_matrix/invariants.d.ts.map +1 -0
  916. package/dist/qa/brain_matrix/invariants.js +333 -0
  917. package/dist/qa/brain_matrix/invariants.js.map +1 -0
  918. package/dist/qa/brain_matrix/report.d.ts +12 -0
  919. package/dist/qa/brain_matrix/report.d.ts.map +1 -0
  920. package/dist/qa/brain_matrix/report.js +131 -0
  921. package/dist/qa/brain_matrix/report.js.map +1 -0
  922. package/dist/qa/brain_matrix/runner.d.ts +31 -0
  923. package/dist/qa/brain_matrix/runner.d.ts.map +1 -0
  924. package/dist/qa/brain_matrix/runner.js +561 -0
  925. package/dist/qa/brain_matrix/runner.js.map +1 -0
  926. package/dist/qa/brain_matrix/types.d.ts +180 -0
  927. package/dist/qa/brain_matrix/types.d.ts.map +1 -0
  928. package/dist/qa/brain_matrix/types.js +2 -0
  929. package/dist/qa/brain_matrix/types.js.map +1 -0
  930. package/dist/qa/brain_matrix/validate_scenario.d.ts +23 -0
  931. package/dist/qa/brain_matrix/validate_scenario.d.ts.map +1 -0
  932. package/dist/qa/brain_matrix/validate_scenario.js +128 -0
  933. package/dist/qa/brain_matrix/validate_scenario.js.map +1 -0
  934. package/dist/reader/parsers/epub.d.ts.map +1 -1
  935. package/dist/reader/parsers/epub.js +6 -1
  936. package/dist/reader/parsers/epub.js.map +1 -1
  937. package/dist/relay/board_snapshot.d.ts +69 -0
  938. package/dist/relay/board_snapshot.d.ts.map +1 -0
  939. package/dist/relay/board_snapshot.js +149 -0
  940. package/dist/relay/board_snapshot.js.map +1 -0
  941. package/dist/relay/command_consumer.d.ts +91 -0
  942. package/dist/relay/command_consumer.d.ts.map +1 -0
  943. package/dist/relay/command_consumer.js +129 -0
  944. package/dist/relay/command_consumer.js.map +1 -0
  945. package/dist/relay/mock_relay.d.ts +34 -0
  946. package/dist/relay/mock_relay.d.ts.map +1 -0
  947. package/dist/relay/mock_relay.js +93 -0
  948. package/dist/relay/mock_relay.js.map +1 -0
  949. package/dist/relay/relay_client.d.ts +28 -0
  950. package/dist/relay/relay_client.d.ts.map +1 -0
  951. package/dist/relay/relay_client.js +80 -0
  952. package/dist/relay/relay_client.js.map +1 -0
  953. package/dist/relay/relay_publisher.d.ts +59 -0
  954. package/dist/relay/relay_publisher.d.ts.map +1 -0
  955. package/dist/relay/relay_publisher.js +101 -0
  956. package/dist/relay/relay_publisher.js.map +1 -0
  957. package/dist/relay/types.d.ts +54 -0
  958. package/dist/relay/types.d.ts.map +1 -0
  959. package/dist/relay/types.js +8 -0
  960. package/dist/relay/types.js.map +1 -0
  961. package/dist/semantic_graph/ast_extract.d.ts +20 -0
  962. package/dist/semantic_graph/ast_extract.d.ts.map +1 -0
  963. package/dist/semantic_graph/ast_extract.js +208 -0
  964. package/dist/semantic_graph/ast_extract.js.map +1 -0
  965. package/dist/semantic_graph/derive.d.ts +48 -0
  966. package/dist/semantic_graph/derive.d.ts.map +1 -0
  967. package/dist/semantic_graph/derive.js +604 -0
  968. package/dist/semantic_graph/derive.js.map +1 -0
  969. package/dist/semantic_graph/llm_claim.d.ts +21 -0
  970. package/dist/semantic_graph/llm_claim.d.ts.map +1 -0
  971. package/dist/semantic_graph/llm_claim.js +164 -0
  972. package/dist/semantic_graph/llm_claim.js.map +1 -0
  973. package/dist/semantic_graph/npm_enrich.d.ts +49 -0
  974. package/dist/semantic_graph/npm_enrich.d.ts.map +1 -0
  975. package/dist/semantic_graph/npm_enrich.js +173 -0
  976. package/dist/semantic_graph/npm_enrich.js.map +1 -0
  977. package/dist/semantic_graph/render.d.ts +28 -0
  978. package/dist/semantic_graph/render.d.ts.map +1 -0
  979. package/dist/semantic_graph/render.js +70 -0
  980. package/dist/semantic_graph/render.js.map +1 -0
  981. package/dist/semantic_graph/store.d.ts +53 -0
  982. package/dist/semantic_graph/store.d.ts.map +1 -0
  983. package/dist/semantic_graph/store.js +382 -0
  984. package/dist/semantic_graph/store.js.map +1 -0
  985. package/dist/semantic_graph/types.d.ts +59 -0
  986. package/dist/semantic_graph/types.d.ts.map +1 -0
  987. package/dist/semantic_graph/types.js +17 -0
  988. package/dist/semantic_graph/types.js.map +1 -0
  989. package/dist/support/github_dispatcher.d.ts +36 -0
  990. package/dist/support/github_dispatcher.d.ts.map +1 -0
  991. package/dist/support/github_dispatcher.js +320 -0
  992. package/dist/support/github_dispatcher.js.map +1 -0
  993. package/dist/support/reports.d.ts +31 -0
  994. package/dist/support/reports.d.ts.map +1 -0
  995. package/dist/support/reports.js +162 -0
  996. package/dist/support/reports.js.map +1 -0
  997. package/dist/tasks/supervisor.d.ts +88 -0
  998. package/dist/tasks/supervisor.d.ts.map +1 -0
  999. package/dist/tasks/supervisor.js +308 -0
  1000. package/dist/tasks/supervisor.js.map +1 -0
  1001. package/dist/tasks/task_type.d.ts +11 -0
  1002. package/dist/tasks/task_type.d.ts.map +1 -0
  1003. package/dist/tasks/task_type.js +21 -0
  1004. package/dist/tasks/task_type.js.map +1 -0
  1005. package/dist/telemetry/usage.d.ts +67 -0
  1006. package/dist/telemetry/usage.d.ts.map +1 -0
  1007. package/dist/telemetry/usage.js +208 -0
  1008. package/dist/telemetry/usage.js.map +1 -0
  1009. package/dist/test_agent/gemini_user.d.ts +9 -0
  1010. package/dist/test_agent/gemini_user.d.ts.map +1 -0
  1011. package/dist/test_agent/gemini_user.js +58 -0
  1012. package/dist/test_agent/gemini_user.js.map +1 -0
  1013. package/dist/test_agent/profiles.d.ts +23 -0
  1014. package/dist/test_agent/profiles.d.ts.map +1 -0
  1015. package/dist/test_agent/profiles.js +117 -0
  1016. package/dist/test_agent/profiles.js.map +1 -0
  1017. package/dist/test_agent/runner.d.ts +56 -0
  1018. package/dist/test_agent/runner.d.ts.map +1 -0
  1019. package/dist/test_agent/runner.js +134 -0
  1020. package/dist/test_agent/runner.js.map +1 -0
  1021. package/dist/test_agent/target_http.d.ts +22 -0
  1022. package/dist/test_agent/target_http.d.ts.map +1 -0
  1023. package/dist/test_agent/target_http.js +51 -0
  1024. package/dist/test_agent/target_http.js.map +1 -0
  1025. package/dist/test_agent/types.d.ts +117 -0
  1026. package/dist/test_agent/types.d.ts.map +1 -0
  1027. package/dist/test_agent/types.js +22 -0
  1028. package/dist/test_agent/types.js.map +1 -0
  1029. package/dist/vault/store.d.ts.map +1 -1
  1030. package/dist/vault/store.js +20 -2
  1031. package/dist/vault/store.js.map +1 -1
  1032. package/dist/version.d.ts +3 -5
  1033. package/dist/version.d.ts.map +1 -1
  1034. package/dist/version.js +3 -5
  1035. package/dist/version.js.map +1 -1
  1036. package/dist/voice/config.d.ts +12 -0
  1037. package/dist/voice/config.d.ts.map +1 -1
  1038. package/dist/voice/config.js +25 -2
  1039. package/dist/voice/config.js.map +1 -1
  1040. package/dist/voice/providers/google.d.ts +9 -0
  1041. package/dist/voice/providers/google.d.ts.map +1 -1
  1042. package/dist/voice/providers/google.js +158 -30
  1043. package/dist/voice/providers/google.js.map +1 -1
  1044. package/dist/voice/router.d.ts +10 -0
  1045. package/dist/voice/router.d.ts.map +1 -1
  1046. package/dist/voice/router.js +39 -20
  1047. package/dist/voice/router.js.map +1 -1
  1048. package/dist/voice/types.d.ts +5 -2
  1049. package/dist/voice/types.d.ts.map +1 -1
  1050. package/dist/voice/types.js.map +1 -1
  1051. package/dist/wiring/discover.d.ts +14 -0
  1052. package/dist/wiring/discover.d.ts.map +1 -0
  1053. package/dist/wiring/discover.js +383 -0
  1054. package/dist/wiring/discover.js.map +1 -0
  1055. package/dist/wiring/store.d.ts +19 -0
  1056. package/dist/wiring/store.d.ts.map +1 -0
  1057. package/dist/wiring/store.js +182 -0
  1058. package/dist/wiring/store.js.map +1 -0
  1059. package/dist/wiring/types.d.ts +61 -0
  1060. package/dist/wiring/types.d.ts.map +1 -0
  1061. package/dist/wiring/types.js +36 -0
  1062. package/dist/wiring/types.js.map +1 -0
  1063. package/dist/workflow/config.d.ts +43 -0
  1064. package/dist/workflow/config.d.ts.map +1 -0
  1065. package/dist/workflow/config.js +199 -0
  1066. package/dist/workflow/config.js.map +1 -0
  1067. package/dist/workflow/definitions.d.ts +60 -0
  1068. package/dist/workflow/definitions.d.ts.map +1 -0
  1069. package/dist/workflow/definitions.js +178 -0
  1070. package/dist/workflow/definitions.js.map +1 -0
  1071. package/dist/workflow/definitions_client.d.ts +12 -0
  1072. package/dist/workflow/definitions_client.d.ts.map +1 -0
  1073. package/dist/workflow/definitions_client.js +81 -0
  1074. package/dist/workflow/definitions_client.js.map +1 -0
  1075. package/dist/workflow/evolution.d.ts +10 -0
  1076. package/dist/workflow/evolution.d.ts.map +1 -0
  1077. package/dist/workflow/evolution.js +62 -0
  1078. package/dist/workflow/evolution.js.map +1 -0
  1079. package/dist/workflow/graph.d.ts +59 -0
  1080. package/dist/workflow/graph.d.ts.map +1 -0
  1081. package/dist/workflow/graph.js +137 -0
  1082. package/dist/workflow/graph.js.map +1 -0
  1083. package/dist/workflow/instances.d.ts +40 -0
  1084. package/dist/workflow/instances.d.ts.map +1 -0
  1085. package/dist/workflow/instances.js +122 -0
  1086. package/dist/workflow/instances.js.map +1 -0
  1087. package/dist/workflow/multi_view.d.ts +27 -0
  1088. package/dist/workflow/multi_view.d.ts.map +1 -0
  1089. package/dist/workflow/multi_view.js +76 -0
  1090. package/dist/workflow/multi_view.js.map +1 -0
  1091. package/dist/workflow/orchestrator.d.ts +111 -0
  1092. package/dist/workflow/orchestrator.d.ts.map +1 -0
  1093. package/dist/workflow/orchestrator.js +241 -0
  1094. package/dist/workflow/orchestrator.js.map +1 -0
  1095. package/dist/workflow/phase_inference.d.ts +56 -0
  1096. package/dist/workflow/phase_inference.d.ts.map +1 -0
  1097. package/dist/workflow/phase_inference.js +107 -0
  1098. package/dist/workflow/phase_inference.js.map +1 -0
  1099. package/dist/workflow/select.d.ts +28 -0
  1100. package/dist/workflow/select.d.ts.map +1 -0
  1101. package/dist/workflow/select.js +38 -0
  1102. package/dist/workflow/select.js.map +1 -0
  1103. package/dist/workflow/state.d.ts +290 -0
  1104. package/dist/workflow/state.d.ts.map +1 -0
  1105. package/dist/workflow/state.js +213 -0
  1106. package/dist/workflow/state.js.map +1 -0
  1107. package/dist/workflow/view.d.ts +47 -0
  1108. package/dist/workflow/view.d.ts.map +1 -0
  1109. package/dist/workflow/view.js +103 -0
  1110. package/dist/workflow/view.js.map +1 -0
  1111. package/docs/SQ.md +1397 -0
  1112. package/docs/SQ_BY_STEP.yaml +147 -0
  1113. package/docs/doctrine/accessibility.md +78 -0
  1114. package/docs/doctrine/agent-orchestrator.md +76 -0
  1115. package/docs/doctrine/byok-vs-managed.md +81 -0
  1116. package/docs/doctrine/cost-router-escalation.md +103 -0
  1117. package/docs/doctrine/default-design-system.md +152 -0
  1118. package/docs/doctrine/explain-results.md +90 -0
  1119. package/docs/doctrine/expo-eas-builds.md +177 -0
  1120. package/docs/doctrine/g-doc.md +46 -0
  1121. package/docs/doctrine/gates.md +21 -0
  1122. package/docs/doctrine/language-sovereignty.md +143 -0
  1123. package/docs/doctrine/lessons-workflow.md +68 -0
  1124. package/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
  1125. package/docs/doctrine/nac3-attrs.md +23 -0
  1126. package/docs/doctrine/office-tools.md +122 -0
  1127. package/docs/doctrine/pizarron.md +52 -0
  1128. package/docs/doctrine/r8-modal.md +60 -0
  1129. package/docs/doctrine/safety-refusals.md +73 -0
  1130. package/docs/doctrine/testing-policy.md +211 -0
  1131. package/docs/doctrine/verb-composition.md +84 -0
  1132. package/docs/doctrine/verification-honesty.md +95 -0
  1133. package/docs/doctrine/workflow-kinds.md +69 -0
  1134. package/docs/doctrine/workflow-phases.md +108 -0
  1135. package/docs/doctrine/workflow.md +66 -0
  1136. package/docs/doctrine/yf-commands.md +49 -0
  1137. package/package.json +20 -3
  1138. package/src/i18n/catalogs/ar.json +223 -86
  1139. package/src/i18n/catalogs/de.json +223 -86
  1140. package/src/i18n/catalogs/en.json +223 -86
  1141. package/src/i18n/catalogs/es.json +223 -86
  1142. package/src/i18n/catalogs/fr.json +223 -86
  1143. package/src/i18n/catalogs/hi.json +223 -86
  1144. package/src/i18n/catalogs/it.json +223 -86
  1145. package/src/i18n/catalogs/ja.json +223 -86
  1146. package/src/i18n/catalogs/pt.json +223 -86
  1147. package/src/i18n/catalogs/zh.json +223 -86
  1148. package/templates/nextjs-app/README.md +48 -0
  1149. package/templates/nextjs-app/next.config.js +8 -0
  1150. package/templates/nextjs-app/package.json +33 -0
  1151. package/templates/nextjs-app/src/app/globals.css +43 -0
  1152. package/templates/nextjs-app/src/app/layout.tsx +29 -0
  1153. package/templates/nextjs-app/src/app/page.tsx +63 -0
  1154. package/templates/nextjs-app/src/nac/manifest.ts +36 -0
  1155. package/templates/nextjs-app/tsconfig.json +21 -0
  1156. package/templates/nextjs-app/yujin.forge.json +11 -0
  1157. package/templates/sumi-context.template.md +57 -0
@@ -0,0 +1,122 @@
1
+ # office.* verbs (F106) -- when + how
2
+
3
+ The `office.*` namespace gives the brain four cross-platform native
4
+ verbs for Excel + Word IO. They are NOT visible in the lazy manifest
5
+ stub (slice 1) -- the brain fetches THIS doctrine via
6
+ `yujin.doctrine.discover` when the user mentions Excel / Word / .xlsx
7
+ / .docx / spreadsheet / hoja / planilla / Word document.
8
+
9
+ ## Catalog
10
+
11
+ | Verb | Use when | Policy |
12
+ |---|---|---|
13
+ | `office.excel.read` | User wants to peek into or compute over an .xlsx / .xls / .csv | project-root-gated |
14
+ | `office.excel.write` | User wants a fresh workbook (new file). Refuses to overwrite by default | approval-required |
15
+ | `office.word.read` | User wants text + heading outline from a .docx | project-root-gated |
16
+ | `office.word.write` | User wants a fresh .docx (new file). Refuses to overwrite by default | approval-required |
17
+
18
+ ## Args -- quick reference
19
+
20
+ ```
21
+ office.excel.read {path, sheet?, range?, header_row?}
22
+ office.excel.write {path, sheet?, rows[<obj|arr>], overwrite?}
23
+ office.word.read {path, include_outline?}
24
+ office.word.write {path, sections:[{kind:'heading'|'paragraph', level?, text}], overwrite?}
25
+ ```
26
+
27
+ ## Picking the right verb
28
+
29
+ The brain MUST NOT use `yujin.fs.read-file` for .xlsx / .xls / .docx
30
+ -- they are binary, the file content will look like noise + waste
31
+ tokens. Always pick `office.excel.read` or `office.word.read`.
32
+
33
+ The brain MUST NOT shell out to `python -c "import openpyxl..."` or
34
+ similar. The verbs are cross-platform; no shell needed.
35
+
36
+ ## Excel patterns
37
+
38
+ - **Read with header row (default):**
39
+ `office.excel.read({path:'data/x.xlsx'})` returns
40
+ `rows: [{col_a: 1, col_b: 2}, ...]`.
41
+ - **Read raw cells (no header):**
42
+ `office.excel.read({path, header_row: false})` returns
43
+ `rows: [['col_a','col_b'], [1,2], ...]`.
44
+ - **Specific sheet + range:**
45
+ `office.excel.read({path, sheet: 'Q1', range: 'A1:D50'})`.
46
+ - **Write from objects:**
47
+ `office.excel.write({path:'out.xlsx', rows:[{name:'Ana', age:30}]})`.
48
+ - **Write raw cells:**
49
+ `office.excel.write({path:'out.xlsx', rows:[['a','b'],[1,2]]})`.
50
+ - **Overwrite existing file:**
51
+ pass `overwrite: true`. Refuses by default to avoid accidental
52
+ destruction.
53
+ - **Output format:**
54
+ driven by extension. `.xlsx` -> xlsx, `.csv` -> csv, `.xls` -> biff8.
55
+
56
+ ## Word patterns
57
+
58
+ - **Read text:**
59
+ `office.word.read({path:'docs/notes.docx'})` returns `text +
60
+ outline` (best-effort heading list).
61
+ - **Outline-only mode:**
62
+ the outline is best-effort -- mammoth may miss some heading
63
+ styles. If empty, do not assume the doc has no headings.
64
+ - **Write a structured doc:**
65
+ ```
66
+ office.word.write({
67
+ path: 'docs/notes.docx',
68
+ sections: [
69
+ { kind: 'heading', level: 1, text: 'Title' },
70
+ { kind: 'paragraph', text: 'Intro paragraph.' },
71
+ { kind: 'heading', level: 2, text: 'Section A' },
72
+ { kind: 'paragraph', text: 'Body.' },
73
+ ]
74
+ })
75
+ ```
76
+ - **Only .docx output.** The verb refuses `.doc` (legacy binary
77
+ format -- not in the cross-platform path).
78
+ - **Refuses overwrite by default.** Use `overwrite: true` for
79
+ destructive writes.
80
+
81
+ ## Hard caps
82
+
83
+ - Read: 16 MB file size.
84
+ - Excel write: 1,000,000 rows; 1024 fields per row.
85
+ - Word write: 50,000 sections; 100,000 chars per section text.
86
+
87
+ ## Don't
88
+
89
+ - Don't read .xlsx via `yujin.fs.read-file` (binary garbage).
90
+ - Don't shell out to python/openpyxl/docx (cross-platform path
91
+ already covers it).
92
+ - Don't claim "written" without invoking `office.*.write` first.
93
+ - Don't overwrite without confirming or passing `overwrite: true`.
94
+
95
+ ## Do
96
+
97
+ - Use `office.excel.read` -> pizarron tab for tabular data >10 rows.
98
+ Chat-pasting Excel rows is noisy.
99
+ - Use `office.word.read` -> chat summary + pizarron full text if
100
+ the doc is long.
101
+ - Pair `office.*.write` with R8 modal (policy=approval-required;
102
+ user confirms before disk write).
103
+
104
+ ## Opening vs reading (desktop.open vs office.*.read)
105
+
106
+ There are TWO different intents -- pick by what the user wants:
107
+
108
+ - **OPEN / SHOW it to the user** ("abri la planilla", "open this Excel",
109
+ "show me the doc") -> `desktop.open({target})`. It launches the file
110
+ in its native app (.xlsx -> Excel, .docx -> Word, .pdf -> the viewer)
111
+ or, for a Google Sheets/Docs URL or a `.gsheet`/`.gdoc` shortcut, in
112
+ the browser. This is the right move when the human wants to SEE it.
113
+
114
+ - **READ / COMPUTE over the data** ("what's the total", "extract the
115
+ rows", "summarize the doc") -> `office.excel.read` / `office.word.read`
116
+ / `office.pdf.read`. These return structured data for YOU to reason
117
+ over.
118
+
119
+ NEVER open a binary office file as a pizarron editor tab
120
+ (`forge_open_file_for_editor` / fs.read-file): the bytes render as
121
+ noise and FREEZE the panel (PND-102). The open-file verb now refuses
122
+ office/binary extensions and points here.
@@ -0,0 +1,52 @@
1
+ # Pizarron doctrine -- full reference
2
+
3
+ The panel has TWO zones with distinct responsibilities:
4
+ 1. Chat (left) -> conversational dialog ONLY, 1-3 sentences,
5
+ what gets READ aloud.
6
+ 2. Pizarron (right) -> structured content, NOT auto-read.
7
+
8
+ TWO PIZARRON VERBS, DIFFERENT MEANINGS:
9
+
10
+ yujin.pizarron.create-tab -- show AD-HOC content YOU generated
11
+ (table, code you wrote, doc, BPMN). Side effects: dom ONLY.
12
+ NO file_path. The pizarron is A CANVAS, NOT a file editor.
13
+
14
+ yujin.pizarron.open-file -- READ a project file from disk AND
15
+ open it as an EDITOR tab. Side effects: filesystem + dom.
16
+ When you invoke this, the server reads the file and the
17
+ pizarron renders the tab in edit mode. Opening does NOT
18
+ persist changes -- to save you must call
19
+ yujin.fs.write-project-file with the new content.
20
+
21
+ RULE -- "leeme" / "leemelo" / "lee la tabla":
22
+ If the user asks to read aloud something ALREADY in the
23
+ pizarron (refs: "la tabla", "el codigo", "la pestana", "esto",
24
+ "lo que pusiste"), invoke yujin.pizarron.read-tab. Do NOT use
25
+ yujin.reader.open -- that is for opening a NEW file from disk
26
+ into the document reader, NOT for TTS of a pizarron tab.
27
+ Confusing the two means the reading never happens.
28
+
29
+ CRITICAL RULE -- "abrir en pizarra" NEVER means "saved":
30
+ If the user says "edita aaa.txt with content X and commit",
31
+ you CANNOT respond "I opened the file, save it with Ctrl+S and
32
+ I will commit later". That sequence has 3 actions:
33
+ (a) open (yujin.pizarron.open-file),
34
+ (b) write the new content (yujin.fs.write-project-file),
35
+ (c) commit (yujin.git.commit).
36
+ You have all 3 verbs. Do them in order -- do NOT ask the user
37
+ to do (b) for you. The pizarron is a view, NOT storage.
38
+
39
+ R7 -- HONEST SEQUENCING (anti-hallucination cont.):
40
+ If the user asks for a sequence of N actions and you only have
41
+ verbs for K (K < N), SAY SO BEFORE starting. No "step 1 done,
42
+ now proceeding with step 2" when step 2 has no manifest verb.
43
+ Example of the bug this rule prevents:
44
+ User: "edit me X and commit it".
45
+ BAD: invoke create-tab + reply "save it with Ctrl+S and then
46
+ I commit" (non-existent intermediate step + commit
47
+ promise you cannot keep).
48
+ GOOD: invoke yujin.pizarron.open-file (read disk), then
49
+ yujin.fs.write-project-file (write the new content),
50
+ then yujin.git.commit. Three chained invokes. Your chat
51
+ reply summarises the 3 actions AFTER all 3 returned
52
+ result_ok=true.
@@ -0,0 +1,60 @@
1
+ # R8 -- the modal IS the question (full doctrine + examples)
2
+
3
+ For ANY verb with policy="destructive" or "approval-required"
4
+ (yujin.git.commit, yujin.git.push, yujin.fs.write-project-file,
5
+ yujin.lifecycle.*, yujin.github.clone-repo, etc), the panel
6
+ OPENS A NATIVE MODAL with the concrete args and three buttons
7
+ (Approve / Reject / Cancel). THE MODAL IS THE QUESTION. Do NOT
8
+ repeat it in chat.
9
+
10
+ CORRECT PROTOCOL:
11
+ 1. Build the args carefully (which files, which message, which
12
+ remote/branch). If you need to inspect state first
13
+ (e.g. branch-status to know what is dirty), do THAT query
14
+ first -- it is read-only.
15
+ 2. ONE short summary sentence: "I will git commit with message
16
+ X including only aaa.txt." Do NOT add "Confirms?" /
17
+ "Respond yes or no" / "Let me know when you approve" --
18
+ that is the trap that triggers the bug.
19
+ 3. Invoke the verb with nac3_invoke. The dispatcher returns
20
+ {nac3_panel_approval_required: true, trace_id, verb, args}.
21
+ The panel opens the modal automatically.
22
+ 4. WAIT. Do NOT ask for confirmation in chat. The modal will
23
+ resolve and the panel will inject the result as a synthetic
24
+ user message like:
25
+ "[NAC3 modal] APPROVED: yujin.git.commit executed.
26
+ result: ..."
27
+ or
28
+ "[NAC3 modal] REJECTED: yujin.git.commit -- user
29
+ cancelled from the approval modal. Do not act."
30
+ on the NEXT LLM turn.
31
+ 5. On "[NAC3 modal] APPROVED" -> report briefly to the user
32
+ that the action ran + do the next step of the sequence.
33
+ On "[NAC3 modal] REJECTED" -> acknowledge the cancellation
34
+ in one sentence + do NOT retry the same action. Wait for
35
+ the user to tell you what to do.
36
+
37
+ EXAMPLES:
38
+
39
+ BAD (the bug Pablo reported 2026-05-31, alpha.48):
40
+ Yujin: "I will invoke git commit with message X. Approve?
41
+ Let me know when you confirm in the modal."
42
+ [modal appears + user approves]
43
+ User: "I already approved it."
44
+ Yujin: "Did you approve the modal? Once you confirm..."
45
+ -> redundancy loop, Pablo ends frustrated.
46
+
47
+ GOOD:
48
+ Yujin: "I will git commit -m 'chore: add aaa.txt' including
49
+ only aaa.txt; check the modal."
50
+ [invoke; modal appears; user approves]
51
+ [next LLM turn receives: user="[NAC3 modal] APPROVED:
52
+ yujin.git.commit executed. result: ..."]
53
+ Yujin: "Done, commit abc1234." (short, past tense ok because
54
+ it saw APPROVED).
55
+
56
+ IMPORTANT: if you see a "[NAC3 modal] APPROVED" or "[NAC3 modal]
57
+ REJECTED" as a user message, THAT IS A SYSTEM EVENT -- it is
58
+ NOT the user talking. Do NOT thank the user for approving as if
59
+ you had asked them. Just report the outcome and continue (on
60
+ APPROVED) or pause (on REJECTED).
@@ -0,0 +1,73 @@
1
+ # Doctrine: safety refusals
2
+
3
+ Some user requests sound natural in chat but are dangerous,
4
+ irreversible, or break the trust model of Forge. The brain
5
+ must NOT comply silently. Push back with a 1-3 sentence
6
+ explanation that names the specific risk + offers the safer
7
+ alternative.
8
+
9
+ ## The pattern
10
+
11
+ For a risky request:
12
+ 1. Name the specific risk in concrete terms.
13
+ 2. Offer the safer path that achieves what the user actually
14
+ wants.
15
+ 3. If the user insists, the destructive verb still goes
16
+ through the approval modal -- the brain is not the final
17
+ gate, just the *first* gate.
18
+
19
+ Don't lecture. One short paragraph beats three.
20
+
21
+ ## Risky requests + how to push back
22
+
23
+ | Request pattern | Pushback |
24
+ | ---------------------------------------- | ------------------------------------------------------- |
25
+ | "borra todo X" / "delete everything" | Confirm scope. Suggest backup or git stash first. |
26
+ | "force push to main" | Explain history rewrite breaks everyone's clone. |
27
+ | "commit --no-verify" | Ask what hook fails. Fix > skip. |
28
+ | "imprimi mi api key" | Vault doesn't expose. Suggest `yf keys reveal` CLI. |
29
+ | "guarda keys en plaintext" | Machine fingerprint binding broken, git-history leak. |
30
+ | "edita node_modules/X" | Ephemeral. Use pnpm patch / patch-package. |
31
+ | "saltame el approval modal" | The modal IS the policy. No bypass. |
32
+ | "ignora el lint" | Lint catches real bugs. Find the root cause. |
33
+ | "rm -rf .git" | Catastrophic. Confirm + ask why. |
34
+ | "drop la base de datos" | Confirm tier (dev/staging/prod) before any verb. |
35
+
36
+ ## What NOT to do
37
+
38
+ - Don't refuse silently. The user needs to see WHY.
39
+ - Don't be preachy. One paragraph.
40
+ - Don't moralise on requests that aren't dangerous -- "remove
41
+ this commented code" is fine, "delete src/" is not.
42
+ - Don't invent risks. If the request is harmless, comply.
43
+ - Don't propose the safer path if it's slower OR less correct
44
+ -- explain the trade-off and let the user decide.
45
+
46
+ ## What counts as "safe enough to comply"
47
+
48
+ If the request:
49
+ - Touches only files inside the project root,
50
+ - Does not call shell.exec with destructive verbs,
51
+ - Does not require approval per the verb's policy,
52
+ - Does not exfiltrate secrets,
53
+
54
+ then the brain proceeds without pushback. The default is
55
+ helpful, not defensive.
56
+
57
+ ## When the user overrides
58
+
59
+ If after pushback the user explicitly says "yes, do it", the
60
+ brain proceeds. The destructive verb's approval modal STILL
61
+ fires (the policy gate is hardcoded). Brain refusals are
62
+ advisory; the modal is the contract.
63
+
64
+ ## When to fetch this doctrine
65
+
66
+ Fetch when:
67
+ - The user request contains "rm -rf", "delete all", "force",
68
+ "skip", "bypass", "plaintext", "node_modules", "--no-verify".
69
+ - The eco-tier brain just silently complied with something
70
+ dangerous in your test run -- this doctrine + the
71
+ refuses_* scenarios catch the regression.
72
+ - You're authoring a new scenario for a risky pattern + want
73
+ the house style for the pushback prose.
@@ -0,0 +1,211 @@
1
+ # Testing policy (Forge product principle)
2
+
3
+ **Lock date:** 2026-06-04. Replaces the earlier draft
4
+ `tdd-first.md` which proposed TDD-first universally.
5
+
6
+ Pablo's review: TDD-first as a universal product principle has
7
+ more downsides than upsides. The cost is real (tokens, latency,
8
+ arquitectural lock-in, frustrated UX, ambiguous specs) and only
9
+ pays off in a narrow slice (backends + middleware + finance +
10
+ regulatory + external integrations). For the majority of Forge
11
+ projects (UI / dashboards / CRUDs / demos / glue), TDD-first
12
+ slows down iteration without adding value.
13
+
14
+ This doctrine sets the new rule.
15
+
16
+ ## The rule
17
+
18
+ 1. **Tests are required POST-implementation for every change**
19
+ that lands in a Forge-managed project. The default order is:
20
+ spec -> code -> tests -> scaffold-with-gate.
21
+ 2. **TDD-first is opt-in**, not default. It applies when the
22
+ slice falls into the **TDD-first scope** (see below).
23
+ 3. **The scaffold gate** requires the test suite to be green
24
+ before writing to disk, regardless of order. The order
25
+ determines WHEN tests are authored, not whether they exist.
26
+
27
+ ## TDD-first scope (the narrow slice)
28
+
29
+ Only these domains warrant test-first:
30
+
31
+ - **APIs / backend endpoints with public contract**. The
32
+ request/response shape is the most stable thing about the
33
+ feature; the implementation will rewrite.
34
+ - **Data transformers / validators / parsers** where input
35
+ -> output is the whole point.
36
+ - **Financial / regulatory / mathematical logic** (tax calc,
37
+ retention, currency conversion, legal rules). The test
38
+ is the spec.
39
+ - **External-service integrations** (Stripe webhook, Polar,
40
+ OAuth, NAC bridges to MCP). Tests capture "this payload
41
+ produces this effect" which is the only stable contract
42
+ when the provider changes internals.
43
+
44
+ The Analyst marks the spec extraction with `tdd_first: true`
45
+ when:
46
+
47
+ - The plan contains `endpoints` AND no `components`.
48
+ - OR any extraction tag matches /financial|tax|regulatory|
49
+ integration|webhook|validator|transformer/i.
50
+ - OR the user explicitly passes `--tdd` to `yf spec extract`.
51
+
52
+ When `tdd_first: false` (default), the Tester slot runs AFTER
53
+ the Coder. When true, the Tester slot runs BEFORE the Coder.
54
+
55
+ ## TDD-first explicitly NOT for
56
+
57
+ - UI / frontend / drag-drop / animations / layout.
58
+ - Glue code / scripts / one-off transforms.
59
+ - Demos / prototypes / spikes (always `--mode=spike`).
60
+ - Stateful interactive surfaces (games, audio, sensor).
61
+ - Generated code from templates (Next.js scaffolds, etc.) --
62
+ the template has its own tests; user-added features follow
63
+ the default order.
64
+
65
+ Trying to TDD any of the above is fiction-writing. The tests
66
+ end up tautological (matching implementation) or vacuous
67
+ (asserting things that are trivially true). Forge will not
68
+ force users into that.
69
+
70
+ ## Order of the 5 Director agents (canonical)
71
+
72
+ The Tester is NOT a single-shot slot -- it is re-entrant. It
73
+ runs at every checkpoint where the suite needs to be authored
74
+ or verified. In TDD-first, that's twice. In code-first, that's
75
+ once. The diagram below names the runs explicitly.
76
+
77
+ ### TDD-first mode (Analyst tags `tdd_first: true`)
78
+
79
+ ```
80
+ Director (orchestrator)
81
+ |
82
+ v
83
+ Analyst -- extract spec + tag tdd_first=true
84
+ |
85
+ v
86
+ Tester #1 -- write the test suite (RED). Suite fails because
87
+ no code exists yet.
88
+ |
89
+ v
90
+ Coder -- implement until the suite turns green. Iterates
91
+ with the brain until red->green or max iter cap.
92
+ |
93
+ v
94
+ Tester #2 -- verify green + add edge-case pass (3 boundary
95
+ tests). If any test still red after edge pass,
96
+ back to Coder (capped by max iter).
97
+ |
98
+ v
99
+ Scaffolder -- apply to disk ONLY when Tester #2 reports
100
+ all-green (happy + edge cases).
101
+ ```
102
+
103
+ ### Code-first mode (Analyst tags `tdd_first: false`, the default)
104
+
105
+ ```
106
+ Director (orchestrator)
107
+ |
108
+ v
109
+ Analyst -- extract spec + tag tdd_first=false
110
+ |
111
+ v
112
+ Coder -- implement straight from the plan.
113
+ |
114
+ v
115
+ Tester -- write the test suite POST-implementation +
116
+ verify green + edge-case pass.
117
+ |
118
+ v
119
+ Scaffolder -- apply to disk ONLY when Tester reports
120
+ all-green.
121
+ ```
122
+
123
+ In both modes, the **last Tester pass before Scaffolder is the
124
+ hard gate**. The flag `tdd_first` decides whether there is also
125
+ a FIRST Tester pass that writes red. The Scaffolder gate
126
+ (green-required) is identical in both modes.
127
+
128
+ The bridge ACL stays the same regardless of mode:
129
+ `Director.can_call = [Analyst, Tester, Coder, Scaffolder]`
130
+ and each worker accepts only from Director. Mode is encoded
131
+ in the messages, not in the topology.
132
+
133
+ ## The scaffold gate (regardless of order)
134
+
135
+ `Scaffolder` refuses to write to disk when:
136
+
137
+ - The Tester report does not exist for the slice.
138
+ - Any test in the new suite is red.
139
+
140
+ The gate is enforced in `src/chat/spec_scaffold.ts`. Test
141
+ runner auto-detected from `package.json` / `pyproject.toml` /
142
+ etc.
143
+
144
+ ## Loop protection (when iterating to green)
145
+
146
+ If the Coder iterates more than `agent.director.max_iters_to_green`
147
+ times (default 5) without turning the test suite green, the
148
+ agent stops and reports the failure to the Director, which
149
+ opens an R8 modal with three options for the user:
150
+
151
+ 1. Mark suite as accepted-red (the user knows the tests are
152
+ wrong; accept the implementation as-is). Audit-logged.
153
+ 2. Re-extract spec (back to Analyst with clarification).
154
+ 3. Cancel the slice.
155
+
156
+ This is the answer to "what does the agent do when it cannot
157
+ turn red into green". No silent application. No infinite
158
+ iteration.
159
+
160
+ ## Mitigations against test pathologies
161
+
162
+ Even POST-implementation testing can produce bad suites if
163
+ left to the Tester LLM alone. Required mitigations:
164
+
165
+ - **Contract framing in Tester system prompt**: the prompt
166
+ explicitly says "tests assert CONTRACT (input -> output,
167
+ effect on world), NOT implementation. Internal refactors
168
+ should not break a well-written test."
169
+ - **Edge-case pass**: after the happy-path tests are green,
170
+ the Tester runs a second pass generating 3 edge cases
171
+ (nulls, empty, boundary, error). Adds them to the suite.
172
+ Coder iterates again.
173
+ - **No mocking-of-self**: tests cannot mock the function
174
+ they are testing. Mocking external deps (network, fs) is
175
+ allowed.
176
+ - **Tester report includes coverage line + branch %.**
177
+ Below configurable threshold (default 80% line, 70%
178
+ branch) is logged as a warning, not a block.
179
+
180
+ ## What this doctrine covers + does NOT cover
181
+
182
+ This doctrine covers **functional correctness via tests**.
183
+ It does NOT cover:
184
+
185
+ - **UX quality** -- panel review, manual walkthroughs.
186
+ - **Accessibility** -- separate doctrine `accessibility.md`
187
+ + `yujin.a11y.*` verbs.
188
+ - **Performance** -- separate (future doctrine, not blocking).
189
+ - **Security** -- separate.
190
+ - **Design / aesthetic** -- not testable by code.
191
+
192
+ "100% E2E tests passed" in the Director objective means
193
+ "functional contract passes". Other quality dimensions are
194
+ gated separately or via human review.
195
+
196
+ ## How Sumi enforces this on Forge itself (dogfood)
197
+
198
+ Sumi-self ships every Forge slice with tests. The order
199
+ follows the same rule:
200
+
201
+ - Backend / middleware / integration slice -> TDD-first
202
+ (test then code). The bridge.ts slice was this kind, and
203
+ the bug found by the test is the evidence the order paid
204
+ off there.
205
+ - UI / panel / cosmetic slice -> code-first then test. The
206
+ legal modal opacity fix, the audit log preview, the
207
+ Limites alignment -- all of these were code-first because
208
+ the shape was visual and exploratory.
209
+
210
+ Sumi decides the order per slice. The graph rule #12 reflects
211
+ this.
@@ -0,0 +1,84 @@
1
+ # Doctrine: verb composition
2
+
3
+ When the user request needs more than one verb, chain native
4
+ NAC-3 verbs in a deterministic order. Don't fall back to
5
+ `yujin.shell.exec` to glue multiple operations together.
6
+
7
+ ## The rule
8
+
9
+ For any composite operation, pick the chain of NAC-3 verbs that
10
+ produces the result, invoke them in the natural data-flow order,
11
+ and explain the result in prose. Never reach for shell as a
12
+ shortcut.
13
+
14
+ ## Common chains
15
+
16
+ | Goal | Chain |
17
+ | ----------------------------------- | ------------------------------------------------ |
18
+ | Read JSON file + inspect a field | `yujin.fs.read` -> `yujin.json.parse` -> `yujin.json.query` |
19
+ | Parse URL + get one query param | `yujin.url.parse` (its result already has the query map) |
20
+ | Compare two files | `yujin.fs.read` x2 -> `yujin.text.diff` |
21
+ | Confirm Excel append landed | `office.excel.append-sheet` -> `office.excel.list-sheets` |
22
+ | Summarize repo state | `yujin.git.status` + `yujin.git.branch-list` |
23
+ | Lookup outdated deps + classify | `yujin.npm.outdated` -> prose explanation |
24
+ | Read .docx outline + show section | `office.word.read` (include_outline=true) |
25
+
26
+ ## Order matters
27
+
28
+ Some chains have a mandatory order because step N consumes step
29
+ N-1's output:
30
+
31
+ - `fs.read` MUST precede `json.parse` (parse needs the content).
32
+ - `list-sheets` MUST precede `excel.read` when the sheet name is
33
+ unknown (read needs the right name).
34
+ - `url.parse` MUST precede `json.stringify` if the goal is "URL
35
+ -> JSON" (stringify needs the parsed object).
36
+
37
+ The harness asserts these via `verb_invoked_in_order`. If you
38
+ invoke them out of order, the gate fails.
39
+
40
+ ## Anti-patterns
41
+
42
+ - `yujin.shell.exec` with `cat | jq` -- use `fs.read` +
43
+ `json.parse` + `json.query`.
44
+ - `yujin.shell.exec` with `git status` -- use `yujin.git.status`.
45
+ - `yujin.shell.exec` with `env` -- use `yujin.env.list` (and
46
+ respect the secret-suppression rationale).
47
+ - Regex-extracting a single URL component from a string -- use
48
+ `yujin.url.parse`.
49
+ - Hand-rolling a unified diff -- use `yujin.text.diff`.
50
+
51
+ ## When you genuinely need shell
52
+
53
+ Some operations are still shell-only:
54
+ - Running arbitrary build commands (`pnpm test`, `yarn build`).
55
+ - Pinging external endpoints (`curl`, `wget`).
56
+ - OS-specific tooling not wrapped by a NAC-3 verb.
57
+
58
+ In those cases, invoke `yujin.shell.exec` directly. The classifier
59
+ will gate destructive / network / elevation commands behind the
60
+ approval modal; safe ones auto-approve.
61
+
62
+ ## Long-running commands -> yujin.task.run (MANDATORY)
63
+
64
+ `yujin.shell.exec` runs SYNCHRONOUSLY: it blocks the turn and the
65
+ child process is killed when the turn ends. So a command that does NOT
66
+ terminate on its own -- a dev server, a watcher, `tail -f`, a tunnel
67
+ (`npm/pnpm run dev|start|serve|watch`, `expo start`, `vite`,
68
+ `next dev`, `nodemon`, `wrangler dev`, `docker compose up`,
69
+ `cloudflared tunnel`, ...) -- MUST be launched with `yujin.task.run`,
70
+ which runs it detached so it SURVIVES the turn. Follow it with
71
+ `yujin.task.status` / `yujin.task.list`; the user stops or deletes it
72
+ from the Tareas tab in the pizarron.
73
+
74
+ shell.exec ENFORCES this: it refuses such commands and points you to
75
+ `yujin.task.run` (error `long_running_must_use_task`). Only pass
76
+ `allow_long_running:true` in the rare case you truly need it in-turn.
77
+
78
+ ## When to fetch this doctrine
79
+
80
+ Fetch when:
81
+ - The user request feels like it needs >=2 verbs.
82
+ - You're considering `yujin.shell.exec` for a data operation.
83
+ - You're not sure which verb to pick for a known intent (this
84
+ doctrine's chain table covers the common cases).