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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (773) hide show
  1. package/README.md +16 -1
  2. package/dist/a11y/helpers.d.ts +88 -0
  3. package/dist/a11y/helpers.d.ts.map +1 -0
  4. package/dist/a11y/helpers.js +109 -0
  5. package/dist/a11y/helpers.js.map +1 -0
  6. package/dist/agents/config_resolver.d.ts +16 -0
  7. package/dist/agents/config_resolver.d.ts.map +1 -0
  8. package/dist/agents/config_resolver.js +133 -0
  9. package/dist/agents/config_resolver.js.map +1 -0
  10. package/dist/agents/config_schema.d.ts +42 -0
  11. package/dist/agents/config_schema.d.ts.map +1 -0
  12. package/dist/agents/config_schema.js +204 -0
  13. package/dist/agents/config_schema.js.map +1 -0
  14. package/dist/agents/defaults.d.ts +21 -0
  15. package/dist/agents/defaults.d.ts.map +1 -0
  16. package/dist/agents/defaults.js +56 -0
  17. package/dist/agents/defaults.js.map +1 -0
  18. package/dist/agents/runner.d.ts +94 -0
  19. package/dist/agents/runner.d.ts.map +1 -0
  20. package/dist/agents/runner.js +165 -0
  21. package/dist/agents/runner.js.map +1 -0
  22. package/dist/agents/store.d.ts +33 -0
  23. package/dist/agents/store.d.ts.map +1 -0
  24. package/dist/agents/store.js +210 -0
  25. package/dist/agents/store.js.map +1 -0
  26. package/dist/agents/types.d.ts +112 -0
  27. package/dist/agents/types.d.ts.map +1 -0
  28. package/dist/agents/types.js +39 -0
  29. package/dist/agents/types.js.map +1 -0
  30. package/dist/bin/yf.d.ts.map +1 -1
  31. package/dist/bin/yf.js +86 -2
  32. package/dist/bin/yf.js.map +1 -1
  33. package/dist/chat/claude.d.ts +53 -15
  34. package/dist/chat/claude.d.ts.map +1 -1
  35. package/dist/chat/claude.js +152 -27
  36. package/dist/chat/claude.js.map +1 -1
  37. package/dist/chat/graph_auto_ingest.d.ts +46 -0
  38. package/dist/chat/graph_auto_ingest.d.ts.map +1 -0
  39. package/dist/chat/graph_auto_ingest.js +162 -0
  40. package/dist/chat/graph_auto_ingest.js.map +1 -0
  41. package/dist/chat/graph_component_watcher.d.ts +30 -0
  42. package/dist/chat/graph_component_watcher.d.ts.map +1 -0
  43. package/dist/chat/graph_component_watcher.js +220 -0
  44. package/dist/chat/graph_component_watcher.js.map +1 -0
  45. package/dist/chat/panel.d.ts.map +1 -1
  46. package/dist/chat/panel.js +5815 -1455
  47. package/dist/chat/panel.js.map +1 -1
  48. package/dist/chat/project_slug.d.ts +6 -0
  49. package/dist/chat/project_slug.d.ts.map +1 -0
  50. package/dist/chat/project_slug.js +78 -0
  51. package/dist/chat/project_slug.js.map +1 -0
  52. package/dist/chat/semantic_graph_ingest.d.ts +31 -0
  53. package/dist/chat/semantic_graph_ingest.d.ts.map +1 -0
  54. package/dist/chat/semantic_graph_ingest.js +84 -0
  55. package/dist/chat/semantic_graph_ingest.js.map +1 -0
  56. package/dist/chat/semantic_graph_inject.d.ts +25 -0
  57. package/dist/chat/semantic_graph_inject.d.ts.map +1 -0
  58. package/dist/chat/semantic_graph_inject.js +64 -0
  59. package/dist/chat/semantic_graph_inject.js.map +1 -0
  60. package/dist/chat/server.d.ts +50 -0
  61. package/dist/chat/server.d.ts.map +1 -1
  62. package/dist/chat/server.js +1914 -63
  63. package/dist/chat/server.js.map +1 -1
  64. package/dist/chat/spec_extract.d.ts +1 -2
  65. package/dist/chat/spec_extract.d.ts.map +1 -1
  66. package/dist/chat/spec_extract.js +18 -59
  67. package/dist/chat/spec_extract.js.map +1 -1
  68. package/dist/chat/spec_plan.d.ts +1 -2
  69. package/dist/chat/spec_plan.d.ts.map +1 -1
  70. package/dist/chat/spec_plan.js +15 -60
  71. package/dist/chat/spec_plan.js.map +1 -1
  72. package/dist/chat/tools/app_backend_dispatch.d.ts +39 -0
  73. package/dist/chat/tools/app_backend_dispatch.d.ts.map +1 -0
  74. package/dist/chat/tools/app_backend_dispatch.js +239 -0
  75. package/dist/chat/tools/app_backend_dispatch.js.map +1 -0
  76. package/dist/chat/tools/audit_consumers.d.ts +66 -0
  77. package/dist/chat/tools/audit_consumers.d.ts.map +1 -0
  78. package/dist/chat/tools/audit_consumers.js +231 -0
  79. package/dist/chat/tools/audit_consumers.js.map +1 -0
  80. package/dist/chat/tools/fs_editor.d.ts +11 -0
  81. package/dist/chat/tools/fs_editor.d.ts.map +1 -0
  82. package/dist/chat/tools/fs_editor.js +162 -0
  83. package/dist/chat/tools/fs_editor.js.map +1 -0
  84. package/dist/chat/tools/git.d.ts +24 -0
  85. package/dist/chat/tools/git.d.ts.map +1 -1
  86. package/dist/chat/tools/git.js +82 -4
  87. package/dist/chat/tools/git.js.map +1 -1
  88. package/dist/chat/tools/github.js +3 -3
  89. package/dist/chat/tools/keys.d.ts +9 -0
  90. package/dist/chat/tools/keys.d.ts.map +1 -0
  91. package/dist/chat/tools/keys.js +152 -0
  92. package/dist/chat/tools/keys.js.map +1 -0
  93. package/dist/chat/tools/lifecycle.js +3 -3
  94. package/dist/chat/tools/manual.js +1 -1
  95. package/dist/chat/tools/misc_verbs.d.ts +36 -0
  96. package/dist/chat/tools/misc_verbs.d.ts.map +1 -0
  97. package/dist/chat/tools/misc_verbs.js +405 -0
  98. package/dist/chat/tools/misc_verbs.js.map +1 -0
  99. package/dist/chat/tools/nac3_invoke.d.ts +53 -0
  100. package/dist/chat/tools/nac3_invoke.d.ts.map +1 -0
  101. package/dist/chat/tools/nac3_invoke.js +886 -0
  102. package/dist/chat/tools/nac3_invoke.js.map +1 -0
  103. package/dist/chat/tools/pizarron.d.ts +40 -0
  104. package/dist/chat/tools/pizarron.d.ts.map +1 -0
  105. package/dist/chat/tools/pizarron.js +123 -0
  106. package/dist/chat/tools/pizarron.js.map +1 -0
  107. package/dist/chat/tools/project_lifecycle.d.ts +24 -0
  108. package/dist/chat/tools/project_lifecycle.d.ts.map +1 -0
  109. package/dist/chat/tools/project_lifecycle.js +184 -0
  110. package/dist/chat/tools/project_lifecycle.js.map +1 -0
  111. package/dist/chat/tools/reader.d.ts.map +1 -1
  112. package/dist/chat/tools/reader.js +152 -9
  113. package/dist/chat/tools/reader.js.map +1 -1
  114. package/dist/chat/tools/shell.d.ts +58 -0
  115. package/dist/chat/tools/shell.d.ts.map +1 -0
  116. package/dist/chat/tools/shell.js +253 -0
  117. package/dist/chat/tools/shell.js.map +1 -0
  118. package/dist/chat/tools/workflow.d.ts +45 -0
  119. package/dist/chat/tools/workflow.d.ts.map +1 -0
  120. package/dist/chat/tools/workflow.js +404 -0
  121. package/dist/chat/tools/workflow.js.map +1 -0
  122. package/dist/chat/tools.d.ts +27 -0
  123. package/dist/chat/tools.d.ts.map +1 -1
  124. package/dist/chat/tools.js +366 -17
  125. package/dist/chat/tools.js.map +1 -1
  126. package/dist/chat/workflow_inject.d.ts +52 -0
  127. package/dist/chat/workflow_inject.d.ts.map +1 -0
  128. package/dist/chat/workflow_inject.js +346 -0
  129. package/dist/chat/workflow_inject.js.map +1 -0
  130. package/dist/commands/agent.d.ts +22 -0
  131. package/dist/commands/agent.d.ts.map +1 -0
  132. package/dist/commands/agent.js +190 -0
  133. package/dist/commands/agent.js.map +1 -0
  134. package/dist/commands/approve.d.ts +32 -0
  135. package/dist/commands/approve.d.ts.map +1 -0
  136. package/dist/commands/approve.js +198 -0
  137. package/dist/commands/approve.js.map +1 -0
  138. package/dist/commands/block.d.ts +28 -0
  139. package/dist/commands/block.d.ts.map +1 -0
  140. package/dist/commands/block.js +189 -0
  141. package/dist/commands/block.js.map +1 -0
  142. package/dist/commands/bootstrap.d.ts +35 -0
  143. package/dist/commands/bootstrap.d.ts.map +1 -0
  144. package/dist/commands/bootstrap.js +205 -0
  145. package/dist/commands/bootstrap.js.map +1 -0
  146. package/dist/commands/brain.d.ts +17 -0
  147. package/dist/commands/brain.d.ts.map +1 -0
  148. package/dist/commands/brain.js +129 -0
  149. package/dist/commands/brain.js.map +1 -0
  150. package/dist/commands/chat.d.ts +3 -0
  151. package/dist/commands/chat.d.ts.map +1 -1
  152. package/dist/commands/chat.js +112 -1
  153. package/dist/commands/chat.js.map +1 -1
  154. package/dist/commands/clarify.d.ts +30 -0
  155. package/dist/commands/clarify.d.ts.map +1 -0
  156. package/dist/commands/clarify.js +671 -0
  157. package/dist/commands/clarify.js.map +1 -0
  158. package/dist/commands/discover.d.ts +30 -0
  159. package/dist/commands/discover.d.ts.map +1 -0
  160. package/dist/commands/discover.js +178 -0
  161. package/dist/commands/discover.js.map +1 -0
  162. package/dist/commands/doctor.js +26 -4
  163. package/dist/commands/doctor.js.map +1 -1
  164. package/dist/commands/doctrine.d.ts +24 -0
  165. package/dist/commands/doctrine.d.ts.map +1 -0
  166. package/dist/commands/doctrine.js +106 -0
  167. package/dist/commands/doctrine.js.map +1 -0
  168. package/dist/commands/doctrines.d.ts +21 -0
  169. package/dist/commands/doctrines.d.ts.map +1 -0
  170. package/dist/commands/doctrines.js +158 -0
  171. package/dist/commands/doctrines.js.map +1 -0
  172. package/dist/commands/graph.d.ts +21 -0
  173. package/dist/commands/graph.d.ts.map +1 -0
  174. package/dist/commands/graph.js +363 -0
  175. package/dist/commands/graph.js.map +1 -0
  176. package/dist/commands/keys_setup.d.ts.map +1 -1
  177. package/dist/commands/keys_setup.js +80 -0
  178. package/dist/commands/keys_setup.js.map +1 -1
  179. package/dist/commands/legacy-audit.d.ts +34 -0
  180. package/dist/commands/legacy-audit.d.ts.map +1 -0
  181. package/dist/commands/legacy-audit.js +270 -0
  182. package/dist/commands/legacy-audit.js.map +1 -0
  183. package/dist/commands/lessons.d.ts +28 -0
  184. package/dist/commands/lessons.d.ts.map +1 -0
  185. package/dist/commands/lessons.js +309 -0
  186. package/dist/commands/lessons.js.map +1 -0
  187. package/dist/commands/license.d.ts.map +1 -1
  188. package/dist/commands/license.js +56 -1
  189. package/dist/commands/license.js.map +1 -1
  190. package/dist/commands/limits.d.ts +15 -0
  191. package/dist/commands/limits.d.ts.map +1 -0
  192. package/dist/commands/limits.js +51 -0
  193. package/dist/commands/limits.js.map +1 -0
  194. package/dist/commands/manifest-cli.d.ts +12 -0
  195. package/dist/commands/manifest-cli.d.ts.map +1 -0
  196. package/dist/commands/manifest-cli.js +42 -0
  197. package/dist/commands/manifest-cli.js.map +1 -0
  198. package/dist/commands/mcp.d.ts +24 -0
  199. package/dist/commands/mcp.d.ts.map +1 -0
  200. package/dist/commands/mcp.js +163 -0
  201. package/dist/commands/mcp.js.map +1 -0
  202. package/dist/commands/nac3.d.ts +22 -0
  203. package/dist/commands/nac3.d.ts.map +1 -0
  204. package/dist/commands/nac3.js +125 -0
  205. package/dist/commands/nac3.js.map +1 -0
  206. package/dist/commands/operate.d.ts +22 -0
  207. package/dist/commands/operate.d.ts.map +1 -0
  208. package/dist/commands/operate.js +523 -0
  209. package/dist/commands/operate.js.map +1 -0
  210. package/dist/commands/qa.d.ts +24 -0
  211. package/dist/commands/qa.d.ts.map +1 -0
  212. package/dist/commands/qa.js +349 -0
  213. package/dist/commands/qa.js.map +1 -0
  214. package/dist/commands/spec.d.ts +38 -0
  215. package/dist/commands/spec.d.ts.map +1 -0
  216. package/dist/commands/spec.js +256 -0
  217. package/dist/commands/spec.js.map +1 -0
  218. package/dist/commands/support.d.ts +22 -0
  219. package/dist/commands/support.d.ts.map +1 -0
  220. package/dist/commands/support.js +165 -0
  221. package/dist/commands/support.js.map +1 -0
  222. package/dist/commands/triage.d.ts +34 -0
  223. package/dist/commands/triage.d.ts.map +1 -0
  224. package/dist/commands/triage.js +228 -0
  225. package/dist/commands/triage.js.map +1 -0
  226. package/dist/commands/vault-inventory.d.ts +30 -0
  227. package/dist/commands/vault-inventory.d.ts.map +1 -0
  228. package/dist/commands/vault-inventory.js +222 -0
  229. package/dist/commands/vault-inventory.js.map +1 -0
  230. package/dist/commands/vault.d.ts.map +1 -1
  231. package/dist/commands/vault.js +5 -0
  232. package/dist/commands/vault.js.map +1 -1
  233. package/dist/commands/voice.d.ts.map +1 -1
  234. package/dist/commands/voice.js +47 -4
  235. package/dist/commands/voice.js.map +1 -1
  236. package/dist/commands/workflow-coverage.d.ts +30 -0
  237. package/dist/commands/workflow-coverage.d.ts.map +1 -0
  238. package/dist/commands/workflow-coverage.js +138 -0
  239. package/dist/commands/workflow-coverage.js.map +1 -0
  240. package/dist/core/ansi_strip.d.ts +39 -0
  241. package/dist/core/ansi_strip.d.ts.map +1 -0
  242. package/dist/core/ansi_strip.js +71 -0
  243. package/dist/core/ansi_strip.js.map +1 -0
  244. package/dist/core/audit_log.d.ts +43 -0
  245. package/dist/core/audit_log.d.ts.map +1 -0
  246. package/dist/core/audit_log.js +80 -0
  247. package/dist/core/audit_log.js.map +1 -0
  248. package/dist/core/brain_config.d.ts +33 -0
  249. package/dist/core/brain_config.d.ts.map +1 -0
  250. package/dist/core/brain_config.js +132 -0
  251. package/dist/core/brain_config.js.map +1 -0
  252. package/dist/core/budget.d.ts +96 -0
  253. package/dist/core/budget.d.ts.map +1 -0
  254. package/dist/core/budget.js +300 -0
  255. package/dist/core/budget.js.map +1 -0
  256. package/dist/core/cost_meter.d.ts +35 -0
  257. package/dist/core/cost_meter.d.ts.map +1 -0
  258. package/dist/core/cost_meter.js +111 -0
  259. package/dist/core/cost_meter.js.map +1 -0
  260. package/dist/core/cost_router.d.ts +106 -0
  261. package/dist/core/cost_router.d.ts.map +1 -0
  262. package/dist/core/cost_router.js +465 -0
  263. package/dist/core/cost_router.js.map +1 -0
  264. package/dist/core/doctrine_resolver.d.ts +23 -0
  265. package/dist/core/doctrine_resolver.d.ts.map +1 -0
  266. package/dist/core/doctrine_resolver.js +108 -0
  267. package/dist/core/doctrine_resolver.js.map +1 -0
  268. package/dist/core/error_catalog.d.ts +80 -0
  269. package/dist/core/error_catalog.d.ts.map +1 -0
  270. package/dist/core/error_catalog.js +168 -0
  271. package/dist/core/error_catalog.js.map +1 -0
  272. package/dist/core/error_formatter.d.ts +30 -0
  273. package/dist/core/error_formatter.d.ts.map +1 -0
  274. package/dist/core/error_formatter.js +155 -0
  275. package/dist/core/error_formatter.js.map +1 -0
  276. package/dist/core/incomplete_detector.d.ts +51 -0
  277. package/dist/core/incomplete_detector.d.ts.map +1 -0
  278. package/dist/core/incomplete_detector.js +140 -0
  279. package/dist/core/incomplete_detector.js.map +1 -0
  280. package/dist/core/learnings_client.d.ts +104 -0
  281. package/dist/core/learnings_client.d.ts.map +1 -0
  282. package/dist/core/learnings_client.js +262 -0
  283. package/dist/core/learnings_client.js.map +1 -0
  284. package/dist/core/limits_config.d.ts +76 -0
  285. package/dist/core/limits_config.d.ts.map +1 -0
  286. package/dist/core/limits_config.js +297 -0
  287. package/dist/core/limits_config.js.map +1 -0
  288. package/dist/core/provider_keys.d.ts +35 -0
  289. package/dist/core/provider_keys.d.ts.map +1 -0
  290. package/dist/core/provider_keys.js +260 -0
  291. package/dist/core/provider_keys.js.map +1 -0
  292. package/dist/core/reasoning_gate.d.ts +72 -0
  293. package/dist/core/reasoning_gate.d.ts.map +1 -0
  294. package/dist/core/reasoning_gate.js +192 -0
  295. package/dist/core/reasoning_gate.js.map +1 -0
  296. package/dist/core/shell_classifier.d.ts +49 -0
  297. package/dist/core/shell_classifier.d.ts.map +1 -0
  298. package/dist/core/shell_classifier.js +159 -0
  299. package/dist/core/shell_classifier.js.map +1 -0
  300. package/dist/core/sq_resolver.d.ts +14 -0
  301. package/dist/core/sq_resolver.d.ts.map +1 -0
  302. package/dist/core/sq_resolver.js +230 -0
  303. package/dist/core/sq_resolver.js.map +1 -0
  304. package/dist/core/truncation_detector.d.ts +68 -0
  305. package/dist/core/truncation_detector.d.ts.map +1 -0
  306. package/dist/core/truncation_detector.js +115 -0
  307. package/dist/core/truncation_detector.js.map +1 -0
  308. package/dist/core/turn_classifier.d.ts +62 -0
  309. package/dist/core/turn_classifier.d.ts.map +1 -0
  310. package/dist/core/turn_classifier.js +213 -0
  311. package/dist/core/turn_classifier.js.map +1 -0
  312. package/dist/core/whats_new.d.ts +42 -0
  313. package/dist/core/whats_new.d.ts.map +1 -0
  314. package/dist/core/whats_new.js +214 -0
  315. package/dist/core/whats_new.js.map +1 -0
  316. package/dist/deploy/adapter.d.ts +93 -0
  317. package/dist/deploy/adapter.d.ts.map +1 -0
  318. package/dist/deploy/adapter.js +42 -0
  319. package/dist/deploy/adapter.js.map +1 -0
  320. package/dist/deploy/aws_adapter.d.ts +28 -0
  321. package/dist/deploy/aws_adapter.d.ts.map +1 -0
  322. package/dist/deploy/aws_adapter.js +98 -0
  323. package/dist/deploy/aws_adapter.js.map +1 -0
  324. package/dist/deploy/cloudflare.d.ts +24 -0
  325. package/dist/deploy/cloudflare.d.ts.map +1 -0
  326. package/dist/deploy/cloudflare.js +169 -0
  327. package/dist/deploy/cloudflare.js.map +1 -0
  328. package/dist/docs/LIMITED_RESPONSIBILITY.md +216 -0
  329. package/dist/docs/PRIVACY_POLICY.md +169 -0
  330. package/dist/docs/SQ.md +1397 -0
  331. package/dist/docs/SQ_BY_STEP.yaml +147 -0
  332. package/dist/docs/doctrine/accessibility.md +78 -0
  333. package/dist/docs/doctrine/agent-orchestrator.md +76 -0
  334. package/dist/docs/doctrine/byok-vs-managed.md +81 -0
  335. package/dist/docs/doctrine/cost-router-escalation.md +73 -0
  336. package/dist/docs/doctrine/explain-results.md +90 -0
  337. package/dist/docs/doctrine/g-doc.md +46 -0
  338. package/dist/docs/doctrine/gates.md +21 -0
  339. package/dist/docs/doctrine/lessons-workflow.md +68 -0
  340. package/dist/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
  341. package/dist/docs/doctrine/nac3-attrs.md +23 -0
  342. package/dist/docs/doctrine/office-tools.md +102 -0
  343. package/dist/docs/doctrine/pizarron.md +52 -0
  344. package/dist/docs/doctrine/r8-modal.md +60 -0
  345. package/dist/docs/doctrine/safety-refusals.md +73 -0
  346. package/dist/docs/doctrine/verb-composition.md +68 -0
  347. package/dist/docs/doctrine/workflow-phases.md +108 -0
  348. package/dist/docs/doctrine/workflow.md +58 -0
  349. package/dist/docs/doctrine/yf-commands.md +49 -0
  350. package/dist/json/query.d.ts +38 -0
  351. package/dist/json/query.d.ts.map +1 -0
  352. package/dist/json/query.js +177 -0
  353. package/dist/json/query.js.map +1 -0
  354. package/dist/license/hito4_client.d.ts +19 -0
  355. package/dist/license/hito4_client.d.ts.map +1 -1
  356. package/dist/license/hito4_client.js +110 -0
  357. package/dist/license/hito4_client.js.map +1 -1
  358. package/dist/license/index.d.ts.map +1 -1
  359. package/dist/license/index.js +7 -0
  360. package/dist/license/index.js.map +1 -1
  361. package/dist/license/sync.d.ts +54 -0
  362. package/dist/license/sync.d.ts.map +1 -0
  363. package/dist/license/sync.js +138 -0
  364. package/dist/license/sync.js.map +1 -0
  365. package/dist/llm/cohere_client.d.ts +81 -0
  366. package/dist/llm/cohere_client.d.ts.map +1 -0
  367. package/dist/llm/cohere_client.js +195 -0
  368. package/dist/llm/cohere_client.js.map +1 -0
  369. package/dist/llm/deepseek_client.d.ts +63 -0
  370. package/dist/llm/deepseek_client.d.ts.map +1 -0
  371. package/dist/llm/deepseek_client.js +188 -0
  372. package/dist/llm/deepseek_client.js.map +1 -0
  373. package/dist/llm/gemini_client.d.ts +78 -0
  374. package/dist/llm/gemini_client.d.ts.map +1 -0
  375. package/dist/llm/gemini_client.js +189 -0
  376. package/dist/llm/gemini_client.js.map +1 -0
  377. package/dist/llm/managed_client.d.ts +70 -0
  378. package/dist/llm/managed_client.d.ts.map +1 -0
  379. package/dist/llm/managed_client.js +251 -0
  380. package/dist/llm/managed_client.js.map +1 -0
  381. package/dist/llm/mistral_client.d.ts +54 -0
  382. package/dist/llm/mistral_client.d.ts.map +1 -0
  383. package/dist/llm/mistral_client.js +174 -0
  384. package/dist/llm/mistral_client.js.map +1 -0
  385. package/dist/llm/multi_provider_client.d.ts +57 -0
  386. package/dist/llm/multi_provider_client.d.ts.map +1 -0
  387. package/dist/llm/multi_provider_client.js +109 -0
  388. package/dist/llm/multi_provider_client.js.map +1 -0
  389. package/dist/llm/openai_client.d.ts +77 -0
  390. package/dist/llm/openai_client.d.ts.map +1 -0
  391. package/dist/llm/openai_client.js +200 -0
  392. package/dist/llm/openai_client.js.map +1 -0
  393. package/dist/llm/xai_client.d.ts +51 -0
  394. package/dist/llm/xai_client.d.ts.map +1 -0
  395. package/dist/llm/xai_client.js +174 -0
  396. package/dist/llm/xai_client.js.map +1 -0
  397. package/dist/mcp/bridge_registry.d.ts +77 -0
  398. package/dist/mcp/bridge_registry.d.ts.map +1 -0
  399. package/dist/mcp/bridge_registry.js +220 -0
  400. package/dist/mcp/bridge_registry.js.map +1 -0
  401. package/dist/mcp/config.d.ts +25 -0
  402. package/dist/mcp/config.d.ts.map +1 -0
  403. package/dist/mcp/config.js +116 -0
  404. package/dist/mcp/config.js.map +1 -0
  405. package/dist/mcp/protocol_client.d.ts +63 -0
  406. package/dist/mcp/protocol_client.d.ts.map +1 -0
  407. package/dist/mcp/protocol_client.js +340 -0
  408. package/dist/mcp/protocol_client.js.map +1 -0
  409. package/dist/mcp/state.d.ts +38 -0
  410. package/dist/mcp/state.d.ts.map +1 -0
  411. package/dist/mcp/state.js +144 -0
  412. package/dist/mcp/state.js.map +1 -0
  413. package/dist/migrate/ai-decorator.d.ts.map +1 -1
  414. package/dist/migrate/ai-decorator.js +33 -145
  415. package/dist/migrate/ai-decorator.js.map +1 -1
  416. package/dist/nac3/approval_queue.d.ts +36 -0
  417. package/dist/nac3/approval_queue.d.ts.map +1 -0
  418. package/dist/nac3/approval_queue.js +105 -0
  419. package/dist/nac3/approval_queue.js.map +1 -0
  420. package/dist/nac3/backend_tools.d.ts +89 -0
  421. package/dist/nac3/backend_tools.d.ts.map +1 -0
  422. package/dist/nac3/backend_tools.js +271 -0
  423. package/dist/nac3/backend_tools.js.map +1 -0
  424. package/dist/nac3/dispatch_log.d.ts +35 -0
  425. package/dist/nac3/dispatch_log.d.ts.map +1 -0
  426. package/dist/nac3/dispatch_log.js +126 -0
  427. package/dist/nac3/dispatch_log.js.map +1 -0
  428. package/dist/nac3/internal_manifest.d.ts +62 -0
  429. package/dist/nac3/internal_manifest.d.ts.map +1 -0
  430. package/dist/nac3/internal_manifest.js +1846 -0
  431. package/dist/nac3/internal_manifest.js.map +1 -0
  432. package/dist/nac3/manifest_lazy.d.ts +71 -0
  433. package/dist/nac3/manifest_lazy.d.ts.map +1 -0
  434. package/dist/nac3/manifest_lazy.js +141 -0
  435. package/dist/nac3/manifest_lazy.js.map +1 -0
  436. package/dist/nac3/verb_tier_map.d.ts +80 -0
  437. package/dist/nac3/verb_tier_map.d.ts.map +1 -0
  438. package/dist/nac3/verb_tier_map.js +159 -0
  439. package/dist/nac3/verb_tier_map.js.map +1 -0
  440. package/dist/office/excel.d.ts +110 -0
  441. package/dist/office/excel.d.ts.map +1 -0
  442. package/dist/office/excel.js +276 -0
  443. package/dist/office/excel.js.map +1 -0
  444. package/dist/office/pdf.d.ts +35 -0
  445. package/dist/office/pdf.d.ts.map +1 -0
  446. package/dist/office/pdf.js +70 -0
  447. package/dist/office/pdf.js.map +1 -0
  448. package/dist/office/word.d.ts +64 -0
  449. package/dist/office/word.d.ts.map +1 -0
  450. package/dist/office/word.js +243 -0
  451. package/dist/office/word.js.map +1 -0
  452. package/dist/qa/brain_matrix/ab_runner.d.ts +44 -0
  453. package/dist/qa/brain_matrix/ab_runner.d.ts.map +1 -0
  454. package/dist/qa/brain_matrix/ab_runner.js +144 -0
  455. package/dist/qa/brain_matrix/ab_runner.js.map +1 -0
  456. package/dist/qa/brain_matrix/brains.json +80 -0
  457. package/dist/qa/brain_matrix/compare.d.ts +27 -0
  458. package/dist/qa/brain_matrix/compare.d.ts.map +1 -0
  459. package/dist/qa/brain_matrix/compare.js +122 -0
  460. package/dist/qa/brain_matrix/compare.js.map +1 -0
  461. package/dist/qa/brain_matrix/fake_brain.d.ts +36 -0
  462. package/dist/qa/brain_matrix/fake_brain.d.ts.map +1 -0
  463. package/dist/qa/brain_matrix/fake_brain.js +27 -0
  464. package/dist/qa/brain_matrix/fake_brain.js.map +1 -0
  465. package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_intent.json +22 -0
  466. package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_no_speak_default.json +23 -0
  467. package/dist/qa/brain_matrix/fixtures/scenario_a11y_consecutive_announces.json +37 -0
  468. package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_action.json +22 -0
  469. package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_with_shortcut.json +22 -0
  470. package/dist/qa/brain_matrix/fixtures/scenario_announce_min_tool_calls.json +23 -0
  471. package/dist/qa/brain_matrix/fixtures/scenario_app_invoke_happy_path.json +65 -0
  472. package/dist/qa/brain_matrix/fixtures/scenario_app_no_invent_without_backend.json +18 -0
  473. package/dist/qa/brain_matrix/fixtures/scenario_app_schema_fail_recover.json +48 -0
  474. package/dist/qa/brain_matrix/fixtures/scenario_approval_modal_no_redundancy.json +21 -0
  475. package/dist/qa/brain_matrix/fixtures/scenario_args_redacted_in_audit.json +17 -0
  476. package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent.json +19 -0
  477. package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent_en.json +19 -0
  478. package/dist/qa/brain_matrix/fixtures/scenario_audit_log_on_destructive.json +18 -0
  479. package/dist/qa/brain_matrix/fixtures/scenario_brain_explains_after_invoke.json +28 -0
  480. package/dist/qa/brain_matrix/fixtures/scenario_byok_on_managed_brain_overflow.json +28 -0
  481. package/dist/qa/brain_matrix/fixtures/scenario_byok_required_policy.json +35 -0
  482. package/dist/qa/brain_matrix/fixtures/scenario_concise_no_loop.json +23 -0
  483. package/dist/qa/brain_matrix/fixtures/scenario_consult_nac_spec_intent.json +19 -0
  484. package/dist/qa/brain_matrix/fixtures/scenario_contradiction_rfp_cost.json +38 -0
  485. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_attachment_frontier.json +24 -0
  486. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_escalation_explicit.json +23 -0
  487. package/dist/qa/brain_matrix/fixtures/scenario_cost_router_idle_reset.json +24 -0
  488. package/dist/qa/brain_matrix/fixtures/scenario_csv_via_excel_read.json +22 -0
  489. package/dist/qa/brain_matrix/fixtures/scenario_destructive_no_text_confirm.json +20 -0
  490. package/dist/qa/brain_matrix/fixtures/scenario_diff_explains_changes.json +32 -0
  491. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_after_unknown_intent.json +17 -0
  492. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_a11y.json +24 -0
  493. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_agent_orchestrator.json +24 -0
  494. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_byok_vs_managed.json +24 -0
  495. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_cost_router.json +24 -0
  496. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_g_doc.json +24 -0
  497. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_gates.json +23 -0
  498. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_intent_en.json +19 -0
  499. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_lessons_workflow.json +24 -0
  500. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_mcp_lifecycle.json +24 -0
  501. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_nac3_attrs.json +24 -0
  502. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_office.json +24 -0
  503. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_pizarron.json +23 -0
  504. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_r8_modal.json +23 -0
  505. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow.json +23 -0
  506. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow_phases.json +24 -0
  507. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_yf_commands.json +24 -0
  508. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_explain_results.json +22 -0
  509. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_safety_refusals.json +22 -0
  510. package/dist/qa/brain_matrix/fixtures/scenario_doctrine_verb_composition.json +22 -0
  511. package/dist/qa/brain_matrix/fixtures/scenario_eco_defers_complex.json +17 -0
  512. package/dist/qa/brain_matrix/fixtures/scenario_eco_short_query.json +27 -0
  513. package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent.json +20 -0
  514. package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent_en.json +20 -0
  515. package/dist/qa/brain_matrix/fixtures/scenario_env_no_secret_leak.json +21 -0
  516. package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression.json +35 -0
  517. package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression_en.json +21 -0
  518. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_handles_csv_refusal.json +28 -0
  519. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent.json +20 -0
  520. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent_en.json +20 -0
  521. package/dist/qa/brain_matrix/fixtures/scenario_excel_append_then_list.json +34 -0
  522. package/dist/qa/brain_matrix/fixtures/scenario_excel_list_sheets_first.json +22 -0
  523. package/dist/qa/brain_matrix/fixtures/scenario_excel_sheet_named.json +23 -0
  524. package/dist/qa/brain_matrix/fixtures/scenario_explain_voice_yes.json +22 -0
  525. package/dist/qa/brain_matrix/fixtures/scenario_explains_forge_error.json +39 -0
  526. package/dist/qa/brain_matrix/fixtures/scenario_focus_after_modal_open.json +29 -0
  527. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent.json +21 -0
  528. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent_en.json +20 -0
  529. package/dist/qa/brain_matrix/fixtures/scenario_fs_find_with_glob.json +22 -0
  530. package/dist/qa/brain_matrix/fixtures/scenario_fs_mkdir_intent.json +20 -0
  531. package/dist/qa/brain_matrix/fixtures/scenario_fs_move_intent.json +20 -0
  532. package/dist/qa/brain_matrix/fixtures/scenario_fs_read_handles_missing.json +28 -0
  533. package/dist/qa/brain_matrix/fixtures/scenario_fs_stat_before_read.json +22 -0
  534. package/dist/qa/brain_matrix/fixtures/scenario_generated_app_nac3_default.json +24 -0
  535. package/dist/qa/brain_matrix/fixtures/scenario_git_branch_list_intent.json +20 -0
  536. package/dist/qa/brain_matrix/fixtures/scenario_git_diff_intent.json +20 -0
  537. package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent.json +20 -0
  538. package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent_en.json +20 -0
  539. package/dist/qa/brain_matrix/fixtures/scenario_git_pull_intent.json +19 -0
  540. package/dist/qa/brain_matrix/fixtures/scenario_git_push_intent.json +20 -0
  541. package/dist/qa/brain_matrix/fixtures/scenario_git_show_metadata_only.json +22 -0
  542. package/dist/qa/brain_matrix/fixtures/scenario_git_status_branch_combo.json +44 -0
  543. package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent.json +20 -0
  544. package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent_en.json +20 -0
  545. package/dist/qa/brain_matrix/fixtures/scenario_github_clone_repo_intent.json +20 -0
  546. package/dist/qa/brain_matrix/fixtures/scenario_github_create_repo_intent.json +20 -0
  547. package/dist/qa/brain_matrix/fixtures/scenario_id_format_in_reply.json +27 -0
  548. package/dist/qa/brain_matrix/fixtures/scenario_iterations_idempotent_adenda.json +27 -0
  549. package/dist/qa/brain_matrix/fixtures/scenario_iterations_query_history.json +29 -0
  550. package/dist/qa/brain_matrix/fixtures/scenario_iterations_tracker_acknowledge.json +28 -0
  551. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_handles_malformed.json +34 -0
  552. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent.json +30 -0
  553. package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent_en.json +30 -0
  554. package/dist/qa/brain_matrix/fixtures/scenario_json_query_extract.json +23 -0
  555. package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent.json +20 -0
  556. package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent_en.json +20 -0
  557. package/dist/qa/brain_matrix/fixtures/scenario_keys_set_intent.json +20 -0
  558. package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent.json +20 -0
  559. package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent_en.json +20 -0
  560. package/dist/qa/brain_matrix/fixtures/scenario_lazy_complex_verb.json +27 -0
  561. package/dist/qa/brain_matrix/fixtures/scenario_lazy_doctrine_only_when_needed.json +17 -0
  562. package/dist/qa/brain_matrix/fixtures/scenario_lazy_simple_verb.json +21 -0
  563. package/dist/qa/brain_matrix/fixtures/scenario_lesson_recall_overrides.json +22 -0
  564. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_restart_app_intent.json +19 -0
  565. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent.json +19 -0
  566. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent_en.json +19 -0
  567. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent.json +20 -0
  568. package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent_en.json +20 -0
  569. package/dist/qa/brain_matrix/fixtures/scenario_long_doctrine_no_truncate.json +23 -0
  570. package/dist/qa/brain_matrix/fixtures/scenario_manifest_read_intent.json +19 -0
  571. package/dist/qa/brain_matrix/fixtures/scenario_manual_open_intent.json +19 -0
  572. package/dist/qa/brain_matrix/fixtures/scenario_mcp_bridge_unreachable_graceful.json +39 -0
  573. package/dist/qa/brain_matrix/fixtures/scenario_mcp_disabled_bridge_no_verbs.json +18 -0
  574. package/dist/qa/brain_matrix/fixtures/scenario_mcp_discover_tools_intent.json +19 -0
  575. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invariant_1_no_verbs.json +19 -0
  576. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_two_hop.json +68 -0
  577. package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_with_auth_loaded.json +76 -0
  578. package/dist/qa/brain_matrix/fixtures/scenario_mcp_revoked_token_graceful.json +33 -0
  579. package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_intent.json +21 -0
  580. package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_no_token_arg.json +27 -0
  581. package/dist/qa/brain_matrix/fixtures/scenario_mcp_show_tools_before_invoke.json +44 -0
  582. package/dist/qa/brain_matrix/fixtures/scenario_mcp_toggle_intent.json +20 -0
  583. package/dist/qa/brain_matrix/fixtures/scenario_multi_turn_clarify_then_act.json +24 -0
  584. package/dist/qa/brain_matrix/fixtures/scenario_nac3_attrs_doctrine.json +53 -0
  585. package/dist/qa/brain_matrix/fixtures/scenario_nac3_discover_schemas_intent.json +19 -0
  586. package/dist/qa/brain_matrix/fixtures/scenario_nac3_required_attr_missing.json +19 -0
  587. package/dist/qa/brain_matrix/fixtures/scenario_no_bare_ok_after_destructive.json +27 -0
  588. package/dist/qa/brain_matrix/fixtures/scenario_no_global_learnings_no_recall.json +20 -0
  589. package/dist/qa/brain_matrix/fixtures/scenario_no_id_leak_in_reply.json +24 -0
  590. package/dist/qa/brain_matrix/fixtures/scenario_no_invent_verb.json +18 -0
  591. package/dist/qa/brain_matrix/fixtures/scenario_no_loop_after_repeated_fail.json +42 -0
  592. package/dist/qa/brain_matrix/fixtures/scenario_no_password_echo.json +28 -0
  593. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_all_current.json +28 -0
  594. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent.json +20 -0
  595. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent_en.json +20 -0
  596. package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_then_explain.json +35 -0
  597. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_read_intent.json +24 -0
  598. package/dist/qa/brain_matrix/fixtures/scenario_office_excel_write_required_args.json +23 -0
  599. package/dist/qa/brain_matrix/fixtures/scenario_office_overwrite_explicit.json +23 -0
  600. package/dist/qa/brain_matrix/fixtures/scenario_office_word_write_intent.json +27 -0
  601. package/dist/qa/brain_matrix/fixtures/scenario_panel_open_settings_intent.json +19 -0
  602. package/dist/qa/brain_matrix/fixtures/scenario_panel_send_message_intent.json +19 -0
  603. package/dist/qa/brain_matrix/fixtures/scenario_pdf_read_intent.json +22 -0
  604. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_clear_tab_explicit_close.json +17 -0
  605. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_chart.json +30 -0
  606. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_long_table.json +28 -0
  607. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_read_tab_intent.json +20 -0
  608. package/dist/qa/brain_matrix/fixtures/scenario_pizarron_render_not_inline.json +20 -0
  609. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_read_file.json +28 -0
  610. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_verb_over_shell.json +22 -0
  611. package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_workflow_state.json +28 -0
  612. package/dist/qa/brain_matrix/fixtures/scenario_project_init_intent.json +20 -0
  613. package/dist/qa/brain_matrix/fixtures/scenario_project_set_root_intent.json +20 -0
  614. package/dist/qa/brain_matrix/fixtures/scenario_promote_lesson_after_correction.json +17 -0
  615. package/dist/qa/brain_matrix/fixtures/scenario_r8_destructive_shell_exec.json +21 -0
  616. package/dist/qa/brain_matrix/fixtures/scenario_read_then_parse_order.json +36 -0
  617. package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_jump_intent.json +19 -0
  618. package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_set_intent.json +19 -0
  619. package/dist/qa/brain_matrix/fixtures/scenario_reader_for_long_doc.json +21 -0
  620. package/dist/qa/brain_matrix/fixtures/scenario_reader_list_docs_intent.json +19 -0
  621. package/dist/qa/brain_matrix/fixtures/scenario_reader_next_block_intent.json +19 -0
  622. package/dist/qa/brain_matrix/fixtures/scenario_reader_read_section_intent.json +19 -0
  623. package/dist/qa/brain_matrix/fixtures/scenario_reader_recap_intent.json +19 -0
  624. package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent.json +20 -0
  625. package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent_en.json +20 -0
  626. package/dist/qa/brain_matrix/fixtures/scenario_refuses_blanket_chmod_777.json +17 -0
  627. package/dist/qa/brain_matrix/fixtures/scenario_refuses_bypass_approval_modal.json +18 -0
  628. package/dist/qa/brain_matrix/fixtures/scenario_refuses_delete_critical_en.json +18 -0
  629. package/dist/qa/brain_matrix/fixtures/scenario_refuses_disable_vault_encryption.json +18 -0
  630. package/dist/qa/brain_matrix/fixtures/scenario_refuses_drop_database.json +17 -0
  631. package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main.json +17 -0
  632. package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main_en.json +17 -0
  633. package/dist/qa/brain_matrix/fixtures/scenario_refuses_leak_vault_en.json +18 -0
  634. package/dist/qa/brain_matrix/fixtures/scenario_refuses_modify_node_modules.json +17 -0
  635. package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks.json +17 -0
  636. package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks_en.json +17 -0
  637. package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_delete_critical.json +18 -0
  638. package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_leak_vault.json +18 -0
  639. package/dist/qa/brain_matrix/fixtures/scenario_respects_global_learnings.json +28 -0
  640. package/dist/qa/brain_matrix/fixtures/scenario_respects_workflow_gate_g2.json +39 -0
  641. package/dist/qa/brain_matrix/fixtures/scenario_revoke_lesson_request.json +21 -0
  642. package/dist/qa/brain_matrix/fixtures/scenario_sq_rules_active.json +30 -0
  643. package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent.json +20 -0
  644. package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent_en.json +20 -0
  645. package/dist/qa/brain_matrix/fixtures/scenario_truncated_response_retry.json +22 -0
  646. package/dist/qa/brain_matrix/fixtures/scenario_unknown_command_clarify.json +23 -0
  647. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_compose.json +23 -0
  648. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_handles_invalid.json +27 -0
  649. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent.json +20 -0
  650. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent_en.json +20 -0
  651. package/dist/qa/brain_matrix/fixtures/scenario_url_parse_then_inspect_query.json +28 -0
  652. package/dist/qa/brain_matrix/fixtures/scenario_url_then_stringify_order.json +34 -0
  653. package/dist/qa/brain_matrix/fixtures/scenario_user_just_greets.json +17 -0
  654. package/dist/qa/brain_matrix/fixtures/scenario_user_overrides_proceeds.json +24 -0
  655. package/dist/qa/brain_matrix/fixtures/scenario_user_revokes_in_middle.json +22 -0
  656. package/dist/qa/brain_matrix/fixtures/scenario_voice_open_pizarron.json +21 -0
  657. package/dist/qa/brain_matrix/fixtures/scenario_word_outline_extraction.json +22 -0
  658. package/dist/qa/brain_matrix/fixtures/scenario_word_overwrite_explicit.json +20 -0
  659. package/dist/qa/brain_matrix/fixtures/scenario_word_section_count.json +28 -0
  660. package/dist/qa/brain_matrix/fixtures/scenario_workflow_doctrine.json +53 -0
  661. package/dist/qa/brain_matrix/fixtures/scenario_workflow_done_specs.json +32 -0
  662. package/dist/qa/brain_matrix/fixtures/scenario_workflow_intent_capture.json +22 -0
  663. package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_jump_block.json +26 -0
  664. package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_v_step_15.json +41 -0
  665. package/dist/qa/brain_matrix/fixtures/scenario_workflow_run_step_intent.json +19 -0
  666. package/dist/qa/brain_matrix/fixtures/scenario_workflow_set_intent.json +20 -0
  667. package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_injection.json +32 -0
  668. package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_recovers_after_clarify.json +25 -0
  669. package/dist/qa/brain_matrix/fixtures/scenario_workflow_step_1_intake.json +24 -0
  670. package/dist/qa/brain_matrix/fixtures/scenario_yf_command_doctrine.json +56 -0
  671. package/dist/qa/brain_matrix/fixtures/scenario_yf_doctrine_list_intent.json +19 -0
  672. package/dist/qa/brain_matrix/fixtures/scenario_yf_qa_compare_intent.json +17 -0
  673. package/dist/qa/brain_matrix/invariants.d.ts +18 -0
  674. package/dist/qa/brain_matrix/invariants.d.ts.map +1 -0
  675. package/dist/qa/brain_matrix/invariants.js +333 -0
  676. package/dist/qa/brain_matrix/invariants.js.map +1 -0
  677. package/dist/qa/brain_matrix/report.d.ts +12 -0
  678. package/dist/qa/brain_matrix/report.d.ts.map +1 -0
  679. package/dist/qa/brain_matrix/report.js +131 -0
  680. package/dist/qa/brain_matrix/report.js.map +1 -0
  681. package/dist/qa/brain_matrix/runner.d.ts +31 -0
  682. package/dist/qa/brain_matrix/runner.d.ts.map +1 -0
  683. package/dist/qa/brain_matrix/runner.js +561 -0
  684. package/dist/qa/brain_matrix/runner.js.map +1 -0
  685. package/dist/qa/brain_matrix/types.d.ts +180 -0
  686. package/dist/qa/brain_matrix/types.d.ts.map +1 -0
  687. package/dist/qa/brain_matrix/types.js +2 -0
  688. package/dist/qa/brain_matrix/types.js.map +1 -0
  689. package/dist/qa/brain_matrix/validate_scenario.d.ts +23 -0
  690. package/dist/qa/brain_matrix/validate_scenario.d.ts.map +1 -0
  691. package/dist/qa/brain_matrix/validate_scenario.js +128 -0
  692. package/dist/qa/brain_matrix/validate_scenario.js.map +1 -0
  693. package/dist/support/github_dispatcher.d.ts +36 -0
  694. package/dist/support/github_dispatcher.d.ts.map +1 -0
  695. package/dist/support/github_dispatcher.js +292 -0
  696. package/dist/support/github_dispatcher.js.map +1 -0
  697. package/dist/support/reports.d.ts +31 -0
  698. package/dist/support/reports.d.ts.map +1 -0
  699. package/dist/support/reports.js +162 -0
  700. package/dist/support/reports.js.map +1 -0
  701. package/dist/telemetry/usage.d.ts +67 -0
  702. package/dist/telemetry/usage.d.ts.map +1 -0
  703. package/dist/telemetry/usage.js +208 -0
  704. package/dist/telemetry/usage.js.map +1 -0
  705. package/dist/version.d.ts +1 -1
  706. package/dist/version.d.ts.map +1 -1
  707. package/dist/version.js +1 -1
  708. package/dist/version.js.map +1 -1
  709. package/dist/voice/config.d.ts +12 -0
  710. package/dist/voice/config.d.ts.map +1 -1
  711. package/dist/voice/config.js +25 -2
  712. package/dist/voice/config.js.map +1 -1
  713. package/dist/voice/intents.d.ts +1 -1
  714. package/dist/voice/intents.js +0 -0
  715. package/dist/voice/providers/google.d.ts +9 -0
  716. package/dist/voice/providers/google.d.ts.map +1 -1
  717. package/dist/voice/providers/google.js +197 -28
  718. package/dist/voice/providers/google.js.map +1 -1
  719. package/dist/voice/router.d.ts +10 -0
  720. package/dist/voice/router.d.ts.map +1 -1
  721. package/dist/voice/router.js +39 -20
  722. package/dist/voice/router.js.map +1 -1
  723. package/dist/voice/types.d.ts +5 -2
  724. package/dist/voice/types.d.ts.map +1 -1
  725. package/dist/voice/types.js.map +1 -1
  726. package/dist/workflow/phase_inference.d.ts +56 -0
  727. package/dist/workflow/phase_inference.d.ts.map +1 -0
  728. package/dist/workflow/phase_inference.js +107 -0
  729. package/dist/workflow/phase_inference.js.map +1 -0
  730. package/dist/workflow/state.d.ts +238 -0
  731. package/dist/workflow/state.d.ts.map +1 -0
  732. package/dist/workflow/state.js +213 -0
  733. package/dist/workflow/state.js.map +1 -0
  734. package/docs/SQ.md +1397 -0
  735. package/docs/SQ_BY_STEP.yaml +147 -0
  736. package/docs/doctrine/accessibility.md +78 -0
  737. package/docs/doctrine/agent-orchestrator.md +76 -0
  738. package/docs/doctrine/byok-vs-managed.md +81 -0
  739. package/docs/doctrine/cost-router-escalation.md +73 -0
  740. package/docs/doctrine/explain-results.md +90 -0
  741. package/docs/doctrine/g-doc.md +46 -0
  742. package/docs/doctrine/gates.md +21 -0
  743. package/docs/doctrine/lessons-workflow.md +68 -0
  744. package/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
  745. package/docs/doctrine/nac3-attrs.md +23 -0
  746. package/docs/doctrine/office-tools.md +102 -0
  747. package/docs/doctrine/pizarron.md +52 -0
  748. package/docs/doctrine/r8-modal.md +60 -0
  749. package/docs/doctrine/safety-refusals.md +73 -0
  750. package/docs/doctrine/verb-composition.md +68 -0
  751. package/docs/doctrine/workflow-phases.md +108 -0
  752. package/docs/doctrine/workflow.md +58 -0
  753. package/docs/doctrine/yf-commands.md +49 -0
  754. package/package.json +21 -15
  755. package/src/i18n/catalogs/ar.json +55 -10
  756. package/src/i18n/catalogs/de.json +55 -10
  757. package/src/i18n/catalogs/en.json +66 -1
  758. package/src/i18n/catalogs/es.json +66 -1
  759. package/src/i18n/catalogs/fr.json +55 -10
  760. package/src/i18n/catalogs/hi.json +55 -10
  761. package/src/i18n/catalogs/it.json +55 -10
  762. package/src/i18n/catalogs/ja.json +55 -10
  763. package/src/i18n/catalogs/pt.json +55 -10
  764. package/src/i18n/catalogs/zh.json +55 -10
  765. package/templates/nextjs-app/README.md +48 -0
  766. package/templates/nextjs-app/next.config.js +8 -0
  767. package/templates/nextjs-app/package.json +33 -0
  768. package/templates/nextjs-app/src/app/globals.css +43 -0
  769. package/templates/nextjs-app/src/app/layout.tsx +29 -0
  770. package/templates/nextjs-app/src/app/page.tsx +63 -0
  771. package/templates/nextjs-app/src/nac/manifest.ts +36 -0
  772. package/templates/nextjs-app/tsconfig.json +21 -0
  773. package/templates/nextjs-app/yujin.forge.json +11 -0
@@ -0,0 +1,140 @@
1
+ /**
2
+ * incomplete_detector.ts -- detects when an eco-tier reply looks
3
+ * confused / refused / truncated, so handleChat can escalate the
4
+ * turn to frontier without surfacing the bad reply to the user
5
+ * (alpha.57).
6
+ *
7
+ * The trigger is conservative on purpose. False positives mean
8
+ * we burn a frontier call when eco was fine; false negatives
9
+ * mean the user sees Gemini Lite's confused reply. We err on the
10
+ * "escalate" side only when there is a clear signal.
11
+ *
12
+ * Signals scanned:
13
+ *
14
+ * 1. Hallucinated-error phrases ("error de mapeo", "tuve un
15
+ * error en el workflow", "i had an internal error",
16
+ * "perdon, hubo un problema").
17
+ * 2. Refuse / dodge phrases ("no tengo suficiente informacion",
18
+ * "necesito mas contexto para responder", "i need more
19
+ * context to help with this", "no puedo procesar este
20
+ * pedido", "no puedo ayudarte con eso").
21
+ * 3. Tool-round errors: any tool_round with is_error=true
22
+ * whose error message looks like a schema / args failure
23
+ * (typical Gemini misfire). NOT every tool error -- those
24
+ * can be legitimate.
25
+ * 4. Length-vs-complexity mismatch: user prompt >= 120 chars
26
+ * AND reply <= 60 chars AND no tool was called. That
27
+ * signature reliably catches "I do not understand" replies.
28
+ *
29
+ * Output: { incomplete, signals[] }. The caller decides whether
30
+ * to escalate (it must also check the frontier budget cap).
31
+ *
32
+ * Cap: incomplete_detector runs ONLY when the served tier was
33
+ * eco. We never auto-escalate frontier -> something else.
34
+ *
35
+ * ASCII-only.
36
+ */
37
+ /* All patterns are normalised to lowercase + accent-stripped
38
+ * before matching. */
39
+ function norm(s) {
40
+ return (s || '').normalize('NFD').replace(/[̀-ͯ]/g, '').toLowerCase();
41
+ }
42
+ /* Specific hallucinated-error phrases we have seen Gemini Lite
43
+ * emit when it loses the workflow context. */
44
+ const HALLUCINATED_ERRORS = [
45
+ 'error de mapeo',
46
+ 'tuve un error',
47
+ 'i had an internal error',
48
+ 'hubo un problema',
49
+ 'perdon, hubo un problema',
50
+ 'perdon, tuve',
51
+ 'me equivoque al',
52
+ 'voy a corregir el registro',
53
+ 'tuve un error de mapeo',
54
+ 'tuve un fallo',
55
+ 'something went wrong on my side',
56
+ 'i ran into an issue processing',
57
+ ];
58
+ /* Refuse / dodge patterns -- the assistant is asking for more
59
+ * context instead of using what's already in the conversation. */
60
+ const REFUSE_DODGE = [
61
+ 'necesito mas contexto',
62
+ 'necesito mas informacion',
63
+ 'no tengo suficiente informacion',
64
+ 'no tengo suficiente contexto',
65
+ 'i need more context',
66
+ 'i need additional context',
67
+ 'i do not have enough context',
68
+ 'i do not have enough information',
69
+ 'no puedo procesar este pedido',
70
+ 'no puedo procesar el pedido',
71
+ 'no puedo ayudarte con eso',
72
+ 'i cannot help with this',
73
+ 'i am unable to process',
74
+ ];
75
+ function findPhrase(haystack, patterns) {
76
+ for (const p of patterns) {
77
+ if (haystack.includes(p))
78
+ return p;
79
+ }
80
+ return null;
81
+ }
82
+ export function detectIncomplete(input) {
83
+ const signals = [];
84
+ const userN = norm(input.user_text || '');
85
+ const replyN = norm(input.reply_text || '');
86
+ /* 1. Hallucinated errors. */
87
+ const err = findPhrase(replyN, HALLUCINATED_ERRORS);
88
+ if (err)
89
+ signals.push('hallucinated_error[' + err + ']');
90
+ /* 2. Refuse / dodge. */
91
+ const dodge = findPhrase(replyN, REFUSE_DODGE);
92
+ if (dodge)
93
+ signals.push('refuse_dodge[' + dodge + ']');
94
+ /* 3. Tool-round error fingerprints. */
95
+ const rounds = Array.isArray(input.tool_rounds) ? input.tool_rounds : [];
96
+ let schemaErrors = 0;
97
+ for (const r of rounds) {
98
+ if (!r || r.is_error !== true)
99
+ continue;
100
+ const result = r.result;
101
+ let resultText = '';
102
+ if (typeof result === 'string')
103
+ resultText = result;
104
+ else if (result && typeof result === 'object') {
105
+ try {
106
+ resultText = JSON.stringify(result);
107
+ }
108
+ catch {
109
+ resultText = '';
110
+ }
111
+ }
112
+ const rn = norm(resultText);
113
+ if (rn.includes('schema') || rn.includes('invalid args') || rn.includes('required field')
114
+ || rn.includes('expected') || rn.includes('unknown property')
115
+ || rn.includes('verb not found') || rn.includes('unknown verb_id')) {
116
+ schemaErrors += 1;
117
+ }
118
+ }
119
+ if (schemaErrors > 0)
120
+ signals.push('schema_errors[' + schemaErrors + ']');
121
+ /* 4. Length-vs-complexity mismatch (NO tool calls + tiny reply
122
+ * + long user prompt). Calls are NOT counted as the user
123
+ * prompt is the new turn, not the entire history.
124
+ *
125
+ * Why no tool calls: if eco invoked a tool successfully + the
126
+ * short reply just says "ok" / "listo", that is fine. The
127
+ * problem case is when eco produced a tiny "I cannot do this"
128
+ * text reply with no work behind it. */
129
+ const userLen = (input.user_text || '').length;
130
+ const replyLen = (input.reply_text || '').length;
131
+ const usedTools = rounds.length > 0;
132
+ if (!usedTools && userLen >= 120 && replyLen <= 60) {
133
+ signals.push('length_mismatch[user=' + userLen + ',reply=' + replyLen + ']');
134
+ }
135
+ return {
136
+ incomplete: signals.length > 0,
137
+ signals,
138
+ };
139
+ }
140
+ //# sourceMappingURL=incomplete_detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incomplete_detector.js","sourceRoot":"","sources":["../../src/core/incomplete_detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * F103 HITO 6.2 + 6.3 -- CLI client for the server-side lessons +
3
+ * doctrines worker.
4
+ *
5
+ * Three responsibilities:
6
+ * 1. Fetch /v1/lessons/active + /v1/doctrines/active from the
7
+ * worker on demand.
8
+ * 2. Cache the responses locally for 5 min to avoid hammering
9
+ * the worker on every system-prompt rebuild.
10
+ * 3. Fall back gracefully:
11
+ * a. Worker unreachable -> stale cache (if any) -> embedded
12
+ * fallback in dist/docs/doctrine/*.md.
13
+ * b. Lessons -- no embedded fallback exists; if both worker
14
+ * and cache fail, return empty array (CLI keeps working,
15
+ * just without server-side lessons).
16
+ *
17
+ * Why local cache aggressive: the system prompt is rebuilt on
18
+ * every chat turn. Without cache, every turn would HTTP to the
19
+ * worker, adding ~100-300ms of latency. 5-min cache amortises.
20
+ *
21
+ * Why offline fallback: Forge must keep working when the worker
22
+ * is down. Doctrines have an embedded fallback in dist/. Lessons
23
+ * are an additive layer; missing them degrades gracefully.
24
+ *
25
+ * Cache shape:
26
+ * ~/.yujin-forge/cache/lessons.json
27
+ * ~/.yujin-forge/cache/doctrines.json
28
+ *
29
+ * Each file has { fetched_at: <unix ms>, payload: <server body> }.
30
+ *
31
+ * ASCII-only.
32
+ */
33
+ export interface LessonRow {
34
+ slug: string;
35
+ rule_text: string;
36
+ scenario_json: string;
37
+ status: 'proposed' | 'active' | 'demoted' | 'archived';
38
+ evidence_count: number;
39
+ hit_count: number;
40
+ last_hit_at: string | null;
41
+ proposed_at: string;
42
+ promoted_at: string | null;
43
+ demoted_at: string | null;
44
+ rejection_reason: string | null;
45
+ min_cli_version: string;
46
+ proposed_by_handle_hash: string;
47
+ conflicts_with_json: string;
48
+ }
49
+ export interface DoctrineSummary {
50
+ slug: string;
51
+ version: number;
52
+ min_cli_version: string;
53
+ }
54
+ interface CacheEnvelope<T> {
55
+ fetched_at: number;
56
+ payload: T;
57
+ worker_url: string;
58
+ }
59
+ declare function cacheDir(): string;
60
+ declare function workerBaseUrl(): string;
61
+ declare function readCache<T>(file: string): Promise<CacheEnvelope<T> | null>;
62
+ declare function writeCache<T>(file: string, envelope: CacheEnvelope<T>): Promise<void>;
63
+ declare function isFresh(env: CacheEnvelope<unknown>): boolean;
64
+ declare function isStale(env: CacheEnvelope<unknown>): boolean;
65
+ /** Fetch the active lessons from the worker (cached 5 min locally).
66
+ * Returns [] if the worker is unreachable AND no stale cache
67
+ * exists -- the CLI keeps working, just without lessons. */
68
+ export declare function fetchActiveLessons(opts?: {
69
+ force?: boolean;
70
+ }): Promise<LessonRow[]>;
71
+ /** Fetch a specific lesson by slug (for demoted lessons accessed
72
+ * via yujin.doctrine.discover(learnings/<slug>)). No local cache --
73
+ * these are infrequent + always go to the worker. */
74
+ export declare function fetchLessonBySlug(slug: string): Promise<LessonRow | null>;
75
+ /** Report an anonymized hit. Fire-and-forget; failures swallowed.
76
+ * Drives LRU eviction on the server side. */
77
+ export declare function reportLessonHit(slug: string): Promise<void>;
78
+ /** Fetch the list of active doctrine slugs + their versions.
79
+ * Falls back to the local dist/docs/doctrine/*.md filename list
80
+ * when the worker is unreachable. */
81
+ export declare function fetchActiveDoctrines(): Promise<DoctrineSummary[]>;
82
+ /** Fetch the markdown body of a specific doctrine. Worker first,
83
+ * filesystem fallback. */
84
+ export declare function fetchDoctrineBySlug(slug: string): Promise<string | null>;
85
+ /** Build the GLOBAL LEARNINGS section to inject into the system
86
+ * prompt. Returns empty string when:
87
+ * - There are no active lessons.
88
+ * - The token budget is exhausted before any lesson fits.
89
+ *
90
+ * Token estimation uses a 4-chars-per-token heuristic; close
91
+ * enough for the budget cap. */
92
+ export declare function buildGlobalLearningsSection(opts?: {
93
+ maxTokens?: number;
94
+ }): Promise<string>;
95
+ export declare const _internal: {
96
+ cacheDir: typeof cacheDir;
97
+ workerBaseUrl: typeof workerBaseUrl;
98
+ readCache: typeof readCache;
99
+ writeCache: typeof writeCache;
100
+ isFresh: typeof isFresh;
101
+ isStale: typeof isStale;
102
+ };
103
+ export {};
104
+ //# sourceMappingURL=learnings_client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learnings_client.d.ts","sourceRoot":"","sources":["../../src/core/learnings_client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAWH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,aAAa,CAAC,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,QAAQ,IAAI,MAAM,CAE1B;AAED,iBAAS,aAAa,IAAI,MAAM,CAI/B;AAMD,iBAAe,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAO1E;AAED,iBAAe,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpF;AAED,iBAAS,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAErD;AAED,iBAAS,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAErD;AAMD;;6DAE6D;AAC7D,wBAAsB,kBAAkB,CAAC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA6B7F;AAED;;sDAEsD;AACtD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAU/E;AAED;8CAC8C;AAC9C,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASjE;AAMD;;sCAEsC;AACtC,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAyBvE;AAED;2BAC2B;AAC3B,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAa9E;AA2BD;;;;;;iCAMiC;AACjC,wBAAsB,2BAA2B,CAAC,IAAI,GAAE;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BvB;AAMD,eAAO,MAAM,SAAS;;;;;;;CAErB,CAAC"}
@@ -0,0 +1,262 @@
1
+ /**
2
+ * F103 HITO 6.2 + 6.3 -- CLI client for the server-side lessons +
3
+ * doctrines worker.
4
+ *
5
+ * Three responsibilities:
6
+ * 1. Fetch /v1/lessons/active + /v1/doctrines/active from the
7
+ * worker on demand.
8
+ * 2. Cache the responses locally for 5 min to avoid hammering
9
+ * the worker on every system-prompt rebuild.
10
+ * 3. Fall back gracefully:
11
+ * a. Worker unreachable -> stale cache (if any) -> embedded
12
+ * fallback in dist/docs/doctrine/*.md.
13
+ * b. Lessons -- no embedded fallback exists; if both worker
14
+ * and cache fail, return empty array (CLI keeps working,
15
+ * just without server-side lessons).
16
+ *
17
+ * Why local cache aggressive: the system prompt is rebuilt on
18
+ * every chat turn. Without cache, every turn would HTTP to the
19
+ * worker, adding ~100-300ms of latency. 5-min cache amortises.
20
+ *
21
+ * Why offline fallback: Forge must keep working when the worker
22
+ * is down. Doctrines have an embedded fallback in dist/. Lessons
23
+ * are an additive layer; missing them degrades gracefully.
24
+ *
25
+ * Cache shape:
26
+ * ~/.yujin-forge/cache/lessons.json
27
+ * ~/.yujin-forge/cache/doctrines.json
28
+ *
29
+ * Each file has { fetched_at: <unix ms>, payload: <server body> }.
30
+ *
31
+ * ASCII-only.
32
+ */
33
+ import { promises as fs } from 'node:fs';
34
+ import path from 'node:path';
35
+ import { homedir } from 'node:os';
36
+ import { VERSION } from '../version.js';
37
+ const CACHE_DIR_NAME = '.yujin-forge';
38
+ const CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
39
+ const STALE_TTL_MS = 24 * 60 * 60 * 1000; // 24h -- after this, stale cache is ignored even on worker failure
40
+ function cacheDir() {
41
+ return path.join(homedir(), CACHE_DIR_NAME, 'cache');
42
+ }
43
+ function workerBaseUrl() {
44
+ return process.env.YUJIN_WORKER_URL
45
+ || process.env.YF_WORKER_URL
46
+ || 'https://yujin-hito4.yujinapp.workers.dev';
47
+ }
48
+ async function ensureCacheDir() {
49
+ await fs.mkdir(cacheDir(), { recursive: true });
50
+ }
51
+ async function readCache(file) {
52
+ try {
53
+ const raw = await fs.readFile(path.join(cacheDir(), file), 'utf-8');
54
+ return JSON.parse(raw);
55
+ }
56
+ catch {
57
+ return null;
58
+ }
59
+ }
60
+ async function writeCache(file, envelope) {
61
+ try {
62
+ await ensureCacheDir();
63
+ await fs.writeFile(path.join(cacheDir(), file), JSON.stringify(envelope, null, 2), 'utf-8');
64
+ }
65
+ catch {
66
+ /* swallow -- cache is best-effort */
67
+ }
68
+ }
69
+ function isFresh(env) {
70
+ return Date.now() - env.fetched_at < CACHE_TTL_MS;
71
+ }
72
+ function isStale(env) {
73
+ return Date.now() - env.fetched_at < STALE_TTL_MS;
74
+ }
75
+ /* ===================================================================
76
+ * Lessons
77
+ * ================================================================ */
78
+ /** Fetch the active lessons from the worker (cached 5 min locally).
79
+ * Returns [] if the worker is unreachable AND no stale cache
80
+ * exists -- the CLI keeps working, just without lessons. */
81
+ export async function fetchActiveLessons(opts = {}) {
82
+ const cached = await readCache('lessons.json');
83
+ if (!opts.force && cached && isFresh(cached)) {
84
+ return cached.payload.lessons || [];
85
+ }
86
+ const url = workerBaseUrl() + '/v1/lessons/active';
87
+ try {
88
+ const r = await fetch(url, {
89
+ headers: { 'x-yf-cli-version': VERSION },
90
+ });
91
+ if (!r.ok) {
92
+ /* Worker reachable but error. Fall back to cache if stale-OK. */
93
+ if (cached && isStale(cached))
94
+ return cached.payload.lessons || [];
95
+ return [];
96
+ }
97
+ const body = await r.json();
98
+ if (!body.ok) {
99
+ if (cached && isStale(cached))
100
+ return cached.payload.lessons || [];
101
+ return [];
102
+ }
103
+ await writeCache('lessons.json', {
104
+ fetched_at: Date.now(), payload: { lessons: body.lessons }, worker_url: url,
105
+ });
106
+ return body.lessons || [];
107
+ }
108
+ catch {
109
+ /* Network failure. Fall back to stale cache if any. */
110
+ if (cached && isStale(cached))
111
+ return cached.payload.lessons || [];
112
+ return [];
113
+ }
114
+ }
115
+ /** Fetch a specific lesson by slug (for demoted lessons accessed
116
+ * via yujin.doctrine.discover(learnings/<slug>)). No local cache --
117
+ * these are infrequent + always go to the worker. */
118
+ export async function fetchLessonBySlug(slug) {
119
+ const url = workerBaseUrl() + '/v1/lessons/by-slug/' + encodeURIComponent(slug);
120
+ try {
121
+ const r = await fetch(url, { headers: { 'x-yf-cli-version': VERSION } });
122
+ if (!r.ok)
123
+ return null;
124
+ const body = await r.json();
125
+ return body.ok ? body.lesson : null;
126
+ }
127
+ catch {
128
+ return null;
129
+ }
130
+ }
131
+ /** Report an anonymized hit. Fire-and-forget; failures swallowed.
132
+ * Drives LRU eviction on the server side. */
133
+ export async function reportLessonHit(slug) {
134
+ const url = workerBaseUrl() + '/v1/lessons/hit/' + encodeURIComponent(slug);
135
+ try {
136
+ await fetch(url, {
137
+ method: 'POST',
138
+ headers: { 'content-type': 'application/json', 'x-yf-cli-version': VERSION },
139
+ body: '{}',
140
+ });
141
+ }
142
+ catch { /* swallow -- telemetry is best-effort */ }
143
+ }
144
+ /* ===================================================================
145
+ * Doctrines
146
+ * ================================================================ */
147
+ /** Fetch the list of active doctrine slugs + their versions.
148
+ * Falls back to the local dist/docs/doctrine/*.md filename list
149
+ * when the worker is unreachable. */
150
+ export async function fetchActiveDoctrines() {
151
+ const cached = await readCache('doctrines.json');
152
+ if (cached && isFresh(cached)) {
153
+ return cached.payload.doctrines || [];
154
+ }
155
+ const url = workerBaseUrl() + '/v1/doctrines/active';
156
+ try {
157
+ const r = await fetch(url, { headers: { 'x-yf-cli-version': VERSION } });
158
+ if (!r.ok) {
159
+ if (cached && isStale(cached))
160
+ return cached.payload.doctrines || [];
161
+ return localDoctrineFallback();
162
+ }
163
+ const body = await r.json();
164
+ if (!body.ok) {
165
+ if (cached && isStale(cached))
166
+ return cached.payload.doctrines || [];
167
+ return localDoctrineFallback();
168
+ }
169
+ await writeCache('doctrines.json', {
170
+ fetched_at: Date.now(), payload: { doctrines: body.doctrines }, worker_url: url,
171
+ });
172
+ return body.doctrines || [];
173
+ }
174
+ catch {
175
+ if (cached && isStale(cached))
176
+ return cached.payload.doctrines || [];
177
+ return localDoctrineFallback();
178
+ }
179
+ }
180
+ /** Fetch the markdown body of a specific doctrine. Worker first,
181
+ * filesystem fallback. */
182
+ export async function fetchDoctrineBySlug(slug) {
183
+ const url = workerBaseUrl() + '/v1/doctrines/by-slug/' + encodeURIComponent(slug);
184
+ try {
185
+ const r = await fetch(url, { headers: { 'x-yf-cli-version': VERSION } });
186
+ if (r.ok) {
187
+ const body = await r.json();
188
+ if (body.ok && body.doctrine && typeof body.doctrine.content_md === 'string') {
189
+ return body.doctrine.content_md;
190
+ }
191
+ }
192
+ }
193
+ catch { /* fall through */ }
194
+ /* Filesystem fallback. */
195
+ return readLocalDoctrine(slug);
196
+ }
197
+ async function readLocalDoctrine(slug) {
198
+ /* Resolve from dist/docs/doctrine/ relative to this file. */
199
+ const candidates = [
200
+ path.resolve(path.dirname(new URL(import.meta.url).pathname.replace(/^\/([A-Z]:)/, '$1')), '..', '..', 'docs', 'doctrine', slug + '.md'),
201
+ path.resolve(path.dirname(new URL(import.meta.url).pathname.replace(/^\/([A-Z]:)/, '$1')), '..', '..', '..', 'docs', 'doctrine', slug + '.md'),
202
+ ];
203
+ for (const candidate of candidates) {
204
+ try {
205
+ return await fs.readFile(candidate, 'utf-8');
206
+ }
207
+ catch { /* try next */ }
208
+ }
209
+ return null;
210
+ }
211
+ async function localDoctrineFallback() {
212
+ /* When the worker is unreachable, return the slugs we know about
213
+ * from the dist filesystem. version = 0 indicates fallback. */
214
+ const KNOWN = ['workflow', 'yf-commands', 'gates', 'nac3-attrs', 'pizarron', 'r8-modal', 'g-doc'];
215
+ return KNOWN.map((slug) => ({ slug, version: 0, min_cli_version: '0.0.0' }));
216
+ }
217
+ /* ===================================================================
218
+ * HITO 6.3 -- prompt section builder
219
+ * ================================================================ */
220
+ /** Build the GLOBAL LEARNINGS section to inject into the system
221
+ * prompt. Returns empty string when:
222
+ * - There are no active lessons.
223
+ * - The token budget is exhausted before any lesson fits.
224
+ *
225
+ * Token estimation uses a 4-chars-per-token heuristic; close
226
+ * enough for the budget cap. */
227
+ export async function buildGlobalLearningsSection(opts = {}) {
228
+ const maxTokens = opts.maxTokens ?? 2000;
229
+ const lessons = await fetchActiveLessons();
230
+ if (lessons.length === 0)
231
+ return '';
232
+ const parts = [];
233
+ parts.push('=================================================================');
234
+ parts.push('GLOBAL LEARNINGS (server-managed, promoted by admin)');
235
+ parts.push('=================================================================');
236
+ parts.push('');
237
+ parts.push('These rules are active for every Forge user. They came from');
238
+ parts.push('the brain matrix scenarios that validated each pattern.');
239
+ parts.push('');
240
+ let usedChars = parts.join('\n').length;
241
+ const maxChars = maxTokens * 4;
242
+ let injected = 0;
243
+ for (const lesson of lessons) {
244
+ const block = '* ' + lesson.slug + ': ' + lesson.rule_text + '\n';
245
+ if (usedChars + block.length > maxChars)
246
+ break;
247
+ parts.push(block);
248
+ usedChars += block.length;
249
+ injected++;
250
+ }
251
+ if (injected === 0)
252
+ return '';
253
+ parts.push('');
254
+ return parts.join('\n');
255
+ }
256
+ /* ===================================================================
257
+ * Internal exports for tests
258
+ * ================================================================ */
259
+ export const _internal = {
260
+ cacheDir, workerBaseUrl, readCache, writeCache, isFresh, isStale,
261
+ };
262
+ //# sourceMappingURL=learnings_client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learnings_client.js","sourceRoot":"","sources":["../../src/core/learnings_client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ export type ToolRoundsFamily = 'default' | 'reader_family' | 'search_family' | 'writer_family';
2
+ export interface MaxToolRoundsConfig {
3
+ default: number;
4
+ reader_family: number;
5
+ search_family: number;
6
+ writer_family: number;
7
+ /** alpha.59e -- ceiling used when Danger Zone auto-approve
8
+ * is ON. Lets the LLM run long chains of verbs without
9
+ * intervention when the user has explicitly opted in to
10
+ * velocity-over-safety mode. */
11
+ autonomous: number;
12
+ }
13
+ export interface RequestTimeoutsConfig {
14
+ managed_proxy: number;
15
+ byok_anthropic: number;
16
+ byok_openai: number;
17
+ byok_gemini: number;
18
+ }
19
+ export interface ShellLimitsConfig {
20
+ /** Default timeout per shell invocation. */
21
+ timeout_ms_default: number;
22
+ /** Hard ceiling -- caller cannot override above this. */
23
+ timeout_ms_max: number;
24
+ /** Combined stdout + stderr max bytes; output beyond is
25
+ * truncated with a marker. */
26
+ max_output_bytes: number;
27
+ /** When true, ANY cwd outside the project root forces an
28
+ * approval prompt -- even for safe-bucket commands. Pablo's
29
+ * Q2: escape-with-approval. */
30
+ cwd_boundary_strict: boolean;
31
+ }
32
+ export interface DangerZoneConfig {
33
+ /** When true, EVERY approval prompt is auto-approved + logged
34
+ * with approval_mode='danger_zone_bypass'. Trade-off:
35
+ * velocity over safety. */
36
+ auto_approve_all: boolean;
37
+ }
38
+ export interface LimitsConfig {
39
+ version: 1;
40
+ max_tool_rounds: MaxToolRoundsConfig;
41
+ request_timeout_ms: RequestTimeoutsConfig;
42
+ classifier_timeout_ms: number;
43
+ managed_max_tokens_per_turn: number;
44
+ shell: ShellLimitsConfig;
45
+ danger_zone: DangerZoneConfig;
46
+ }
47
+ export declare function defaultLimitsConfig(): LimitsConfig;
48
+ /** Read the active config. Cached for ~3 seconds to avoid
49
+ * hammering the FS on every router call. Use forceRefresh=true
50
+ * in tests / CLI after a setValue. */
51
+ export declare function readLimitsConfig(forceRefresh?: boolean): Promise<LimitsConfig>;
52
+ export declare function writeLimitsConfig(cfg: LimitsConfig): Promise<void>;
53
+ export declare function resetLimitsConfig(): Promise<LimitsConfig>;
54
+ /** Reset the in-memory cache. Tests use this between specs. */
55
+ export declare function _resetLimitsCache(): void;
56
+ export declare function classifyVerbFamily(verbId: string): ToolRoundsFamily;
57
+ /**
58
+ * Pick the max_tool_rounds limit for a turn based on the verb
59
+ * family the LLM is using. The family is derived from the
60
+ * FIRST nac3 verb the LLM emits in this turn -- once decided,
61
+ * the cap stays for the rest of the turn (no mid-turn shifts).
62
+ *
63
+ * Callers track the first verb invoked + pass it here.
64
+ */
65
+ export declare function getMaxToolRoundsForFamily(cfg: MaxToolRoundsConfig, family: ToolRoundsFamily): number;
66
+ /** All settable field paths in dotted notation, used by `yf
67
+ * limits set <field> <value>`. */
68
+ export declare const LIMITS_FIELD_PATHS: readonly string[];
69
+ export declare function isLimitsFieldPath(p: string): boolean;
70
+ export declare const LIMITS_BOOLEAN_FIELD_PATHS: readonly string[];
71
+ export declare function isLimitsBooleanFieldPath(p: string): boolean;
72
+ export declare function setLimitsBooleanField(field: string, value: boolean): Promise<LimitsConfig>;
73
+ /** Apply a single setValue. Returns the updated config. Throws
74
+ * on invalid path or non-numeric value. */
75
+ export declare function setLimitsField(field: string, value: number): Promise<LimitsConfig>;
76
+ //# sourceMappingURL=limits_config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limits_config.d.ts","sourceRoot":"","sources":["../../src/core/limits_config.ts"],"names":[],"mappings":"AAqDA,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,CAAC;AAE/F,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB;;;qCAGiC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB;mCAC+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB;;oCAEgC;IAChC,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAGD,MAAM,WAAW,gBAAgB;IAC/B;;gCAE4B;IAC5B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,eAAe,EAAE,mBAAmB,CAAC;IACrC,kBAAkB,EAAE,qBAAqB,CAAC;IAC1C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2BAA2B,EAAE,MAAM,CAAC;IACpC,KAAK,EAAE,iBAAiB,CAAC;IACzB,WAAW,EAAE,gBAAgB,CAAC;CAC/B;AAED,wBAAgB,mBAAmB,IAAI,YAAY,CA4BlD;AA8DD;;uCAEuC;AACvC,wBAAsB,gBAAgB,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAalF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,YAAY,CAAC,CAI/D;AAED,+DAA+D;AAC/D,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAqBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAMnE;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,gBAAgB,GACvB,MAAM,CAOR;AAID;mCACmC;AACnC,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAe/C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEpD;AAID,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAGvD,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAgBhG;AAED;4CAC4C;AAC5C,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAkBxF"}