@claude-flow/cli 3.32.3 → 3.32.4

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 (683) hide show
  1. package/.claude/helpers/helpers.manifest.json +2 -2
  2. package/catalog-manifest.json +2 -2
  3. package/dist/src/agenticow/speculative-exploration.d.ts +148 -0
  4. package/dist/src/agenticow/speculative-exploration.js +218 -0
  5. package/dist/src/appliance/gguf-engine.d.ts +91 -0
  6. package/dist/src/appliance/gguf-engine.js +425 -0
  7. package/dist/src/appliance/ruvllm-bridge.d.ts +102 -0
  8. package/dist/src/appliance/ruvllm-bridge.js +292 -0
  9. package/dist/src/appliance/rvfa-builder.d.ts +44 -0
  10. package/dist/src/appliance/rvfa-builder.js +329 -0
  11. package/dist/src/appliance/rvfa-distribution.d.ts +97 -0
  12. package/dist/src/appliance/rvfa-distribution.js +370 -0
  13. package/dist/src/appliance/rvfa-format.d.ts +111 -0
  14. package/dist/src/appliance/rvfa-format.js +393 -0
  15. package/dist/src/appliance/rvfa-runner.d.ts +69 -0
  16. package/dist/src/appliance/rvfa-runner.js +237 -0
  17. package/dist/src/appliance/rvfa-signing.d.ts +123 -0
  18. package/dist/src/appliance/rvfa-signing.js +347 -0
  19. package/dist/src/auth/client.d.ts +89 -0
  20. package/dist/src/auth/client.js +242 -0
  21. package/dist/src/auth/constants.d.ts +7 -0
  22. package/dist/src/auth/constants.js +7 -0
  23. package/dist/src/auth/scopes.d.ts +14 -0
  24. package/dist/src/auth/scopes.js +21 -0
  25. package/dist/src/auth/security-bridge.d.ts +36 -0
  26. package/dist/src/auth/security-bridge.js +42 -0
  27. package/dist/src/auth/session.d.ts +20 -0
  28. package/dist/src/auth/session.js +32 -0
  29. package/dist/src/auth/state.d.ts +19 -0
  30. package/dist/src/auth/state.js +53 -0
  31. package/dist/src/auth/types.d.ts +27 -0
  32. package/dist/src/auth/types.js +11 -0
  33. package/dist/src/autopilot-state.d.ts +77 -0
  34. package/dist/src/autopilot-state.js +271 -0
  35. package/dist/src/benchmarks/gaia-agent-planning.smoke.d.ts +18 -0
  36. package/dist/src/benchmarks/gaia-agent-planning.smoke.js +253 -0
  37. package/dist/src/benchmarks/gaia-agent.d.ts +198 -0
  38. package/dist/src/benchmarks/gaia-agent.js +651 -0
  39. package/dist/src/benchmarks/gaia-causal-memory.d.ts +133 -0
  40. package/dist/src/benchmarks/gaia-causal-memory.js +281 -0
  41. package/dist/src/benchmarks/gaia-causal-memory.smoke.d.ts +22 -0
  42. package/dist/src/benchmarks/gaia-causal-memory.smoke.js +300 -0
  43. package/dist/src/benchmarks/gaia-convergence.d.ts +138 -0
  44. package/dist/src/benchmarks/gaia-convergence.js +260 -0
  45. package/dist/src/benchmarks/gaia-convergence.smoke.d.ts +19 -0
  46. package/dist/src/benchmarks/gaia-convergence.smoke.js +246 -0
  47. package/dist/src/benchmarks/gaia-critic.d.ts +123 -0
  48. package/dist/src/benchmarks/gaia-critic.js +312 -0
  49. package/dist/src/benchmarks/gaia-critic.smoke.d.ts +21 -0
  50. package/dist/src/benchmarks/gaia-critic.smoke.js +327 -0
  51. package/dist/src/benchmarks/gaia-decomposer.d.ts +125 -0
  52. package/dist/src/benchmarks/gaia-decomposer.js +350 -0
  53. package/dist/src/benchmarks/gaia-decomposer.smoke.d.ts +21 -0
  54. package/dist/src/benchmarks/gaia-decomposer.smoke.js +228 -0
  55. package/dist/src/benchmarks/gaia-e2e-smoke.d.ts +27 -0
  56. package/dist/src/benchmarks/gaia-e2e-smoke.js +136 -0
  57. package/dist/src/benchmarks/gaia-extract.smoke.d.ts +45 -0
  58. package/dist/src/benchmarks/gaia-extract.smoke.js +242 -0
  59. package/dist/src/benchmarks/gaia-hardness/features.d.ts +46 -0
  60. package/dist/src/benchmarks/gaia-hardness/features.js +170 -0
  61. package/dist/src/benchmarks/gaia-hardness/predictor.d.ts +105 -0
  62. package/dist/src/benchmarks/gaia-hardness/predictor.js +260 -0
  63. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.d.ts +20 -0
  64. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.js +235 -0
  65. package/dist/src/benchmarks/gaia-hardness/train-data-loader.d.ts +51 -0
  66. package/dist/src/benchmarks/gaia-hardness/train-data-loader.js +179 -0
  67. package/dist/src/benchmarks/gaia-judge.d.ts +88 -0
  68. package/dist/src/benchmarks/gaia-judge.js +437 -0
  69. package/dist/src/benchmarks/gaia-loader.d.ts +87 -0
  70. package/dist/src/benchmarks/gaia-loader.js +326 -0
  71. package/dist/src/benchmarks/gaia-tools/file_read.d.ts +35 -0
  72. package/dist/src/benchmarks/gaia-tools/file_read.js +403 -0
  73. package/dist/src/benchmarks/gaia-tools/grounded_query.d.ts +126 -0
  74. package/dist/src/benchmarks/gaia-tools/grounded_query.js +225 -0
  75. package/dist/src/benchmarks/gaia-tools/index.d.ts +32 -0
  76. package/dist/src/benchmarks/gaia-tools/index.js +36 -0
  77. package/dist/src/benchmarks/gaia-tools/types.d.ts +62 -0
  78. package/dist/src/benchmarks/gaia-tools/types.js +12 -0
  79. package/dist/src/benchmarks/gaia-tools/web_search.d.ts +30 -0
  80. package/dist/src/benchmarks/gaia-tools/web_search.js +210 -0
  81. package/dist/src/benchmarks/gaia-voting.d.ts +88 -0
  82. package/dist/src/benchmarks/gaia-voting.js +297 -0
  83. package/dist/src/benchmarks/gaia-voting.smoke.d.ts +20 -0
  84. package/dist/src/benchmarks/gaia-voting.smoke.js +332 -0
  85. package/dist/src/benchmarks/pretrain/index.d.ts +58 -0
  86. package/dist/src/benchmarks/pretrain/index.js +404 -0
  87. package/dist/src/business-pods/bbs-budget-tracker.d.ts +139 -0
  88. package/dist/src/business-pods/bbs-budget-tracker.js +358 -0
  89. package/dist/src/business-pods/domain-affinity-policy.d.ts +47 -0
  90. package/dist/src/business-pods/domain-affinity-policy.js +65 -0
  91. package/dist/src/business-pods/pod-schema.d.ts +96 -0
  92. package/dist/src/business-pods/pod-schema.js +225 -0
  93. package/dist/src/commands/advisor.d.ts +15 -0
  94. package/dist/src/commands/advisor.js +94 -0
  95. package/dist/src/commands/agent-wasm.d.ts +14 -0
  96. package/dist/src/commands/agent-wasm.js +333 -0
  97. package/dist/src/commands/agent.d.ts +8 -0
  98. package/dist/src/commands/agent.js +927 -0
  99. package/dist/src/commands/analyze.d.ts +19 -0
  100. package/dist/src/commands/analyze.js +2047 -0
  101. package/dist/src/commands/announcements.d.ts +17 -0
  102. package/dist/src/commands/announcements.js +0 -0
  103. package/dist/src/commands/appliance-advanced.d.ts +9 -0
  104. package/dist/src/commands/appliance-advanced.js +215 -0
  105. package/dist/src/commands/appliance.d.ts +8 -0
  106. package/dist/src/commands/appliance.js +404 -0
  107. package/dist/src/commands/auth.d.ts +15 -0
  108. package/dist/src/commands/auth.js +244 -0
  109. package/dist/src/commands/autopilot.d.ts +15 -0
  110. package/dist/src/commands/autopilot.js +407 -0
  111. package/dist/src/commands/benchmark.d.ts +10 -0
  112. package/dist/src/commands/benchmark.js +460 -0
  113. package/dist/src/commands/claims.d.ts +10 -0
  114. package/dist/src/commands/claims.js +620 -0
  115. package/dist/src/commands/cleanup.d.ts +13 -0
  116. package/dist/src/commands/cleanup.js +250 -0
  117. package/dist/src/commands/completions.d.ts +10 -0
  118. package/dist/src/commands/completions.js +539 -0
  119. package/dist/src/commands/config.d.ts +8 -0
  120. package/dist/src/commands/config.js +428 -0
  121. package/dist/src/commands/daemon.d.ts +59 -0
  122. package/dist/src/commands/daemon.js +1733 -0
  123. package/dist/src/commands/deployment.d.ts +10 -0
  124. package/dist/src/commands/deployment.js +672 -0
  125. package/dist/src/commands/doctor.d.ts +10 -0
  126. package/dist/src/commands/doctor.js +1902 -0
  127. package/dist/src/commands/eject.d.ts +33 -0
  128. package/dist/src/commands/eject.js +195 -0
  129. package/dist/src/commands/embeddings.d.ts +18 -0
  130. package/dist/src/commands/embeddings.js +1623 -0
  131. package/dist/src/commands/funnel.d.ts +18 -0
  132. package/dist/src/commands/funnel.js +302 -0
  133. package/dist/src/commands/gaia-bench.d.ts +40 -0
  134. package/dist/src/commands/gaia-bench.js +597 -0
  135. package/dist/src/commands/guidance.d.ts +8 -0
  136. package/dist/src/commands/guidance.js +556 -0
  137. package/dist/src/commands/hive-mind.d.ts +11 -0
  138. package/dist/src/commands/hive-mind.js +1319 -0
  139. package/dist/src/commands/hooks.d.ts +8 -0
  140. package/dist/src/commands/hooks.js +4606 -0
  141. package/dist/src/commands/index.d.ts +118 -0
  142. package/dist/src/commands/index.js +366 -0
  143. package/dist/src/commands/init.d.ts +13 -0
  144. package/dist/src/commands/init.js +1297 -0
  145. package/dist/src/commands/issues.d.ts +21 -0
  146. package/dist/src/commands/issues.js +567 -0
  147. package/dist/src/commands/mcp.d.ts +11 -0
  148. package/dist/src/commands/mcp.js +732 -0
  149. package/dist/src/commands/memory-backup.d.ts +11 -0
  150. package/dist/src/commands/memory-backup.js +46 -0
  151. package/dist/src/commands/memory-distill.d.ts +27 -0
  152. package/dist/src/commands/memory-distill.js +374 -0
  153. package/dist/src/commands/memory.d.ts +8 -0
  154. package/dist/src/commands/memory.js +1596 -0
  155. package/dist/src/commands/metaharness.d.ts +39 -0
  156. package/dist/src/commands/metaharness.js +215 -0
  157. package/dist/src/commands/migrate.d.ts +8 -0
  158. package/dist/src/commands/migrate.js +742 -0
  159. package/dist/src/commands/neural.d.ts +10 -0
  160. package/dist/src/commands/neural.js +4331 -0
  161. package/dist/src/commands/performance.d.ts +10 -0
  162. package/dist/src/commands/performance.js +583 -0
  163. package/dist/src/commands/plugins.d.ts +11 -0
  164. package/dist/src/commands/plugins.js +826 -0
  165. package/dist/src/commands/process.d.ts +10 -0
  166. package/dist/src/commands/process.js +694 -0
  167. package/dist/src/commands/progress.d.ts +11 -0
  168. package/dist/src/commands/progress.js +259 -0
  169. package/dist/src/commands/providers.d.ts +10 -0
  170. package/dist/src/commands/providers.js +502 -0
  171. package/dist/src/commands/proxy-lifecycle.d.ts +12 -0
  172. package/dist/src/commands/proxy-lifecycle.js +232 -0
  173. package/dist/src/commands/proxy.d.ts +21 -0
  174. package/dist/src/commands/proxy.js +398 -0
  175. package/dist/src/commands/route.d.ts +16 -0
  176. package/dist/src/commands/route.js +822 -0
  177. package/dist/src/commands/ruvector/backup.d.ts +11 -0
  178. package/dist/src/commands/ruvector/backup.js +747 -0
  179. package/dist/src/commands/ruvector/benchmark.d.ts +11 -0
  180. package/dist/src/commands/ruvector/benchmark.js +490 -0
  181. package/dist/src/commands/ruvector/import.d.ts +18 -0
  182. package/dist/src/commands/ruvector/import.js +373 -0
  183. package/dist/src/commands/ruvector/index.d.ts +29 -0
  184. package/dist/src/commands/ruvector/index.js +129 -0
  185. package/dist/src/commands/ruvector/init.d.ts +11 -0
  186. package/dist/src/commands/ruvector/init.js +467 -0
  187. package/dist/src/commands/ruvector/migrate.d.ts +11 -0
  188. package/dist/src/commands/ruvector/migrate.js +498 -0
  189. package/dist/src/commands/ruvector/optimize.d.ts +11 -0
  190. package/dist/src/commands/ruvector/optimize.js +505 -0
  191. package/dist/src/commands/ruvector/pg-utils.d.ts +14 -0
  192. package/dist/src/commands/ruvector/pg-utils.js +41 -0
  193. package/dist/src/commands/ruvector/setup.d.ts +18 -0
  194. package/dist/src/commands/ruvector/setup.js +765 -0
  195. package/dist/src/commands/ruvector/status.d.ts +11 -0
  196. package/dist/src/commands/ruvector/status.js +479 -0
  197. package/dist/src/commands/security.d.ts +10 -0
  198. package/dist/src/commands/security.js +1012 -0
  199. package/dist/src/commands/session.d.ts +8 -0
  200. package/dist/src/commands/session.js +757 -0
  201. package/dist/src/commands/settings.d.ts +19 -0
  202. package/dist/src/commands/settings.js +180 -0
  203. package/dist/src/commands/spinner.d.ts +16 -0
  204. package/dist/src/commands/spinner.js +329 -0
  205. package/dist/src/commands/start.d.ts +8 -0
  206. package/dist/src/commands/start.js +418 -0
  207. package/dist/src/commands/status.d.ts +8 -0
  208. package/dist/src/commands/status.js +608 -0
  209. package/dist/src/commands/swarm.d.ts +8 -0
  210. package/dist/src/commands/swarm.js +891 -0
  211. package/dist/src/commands/task.d.ts +8 -0
  212. package/dist/src/commands/task.js +675 -0
  213. package/dist/src/commands/transfer-store.d.ts +13 -0
  214. package/dist/src/commands/transfer-store.js +428 -0
  215. package/dist/src/commands/update.d.ts +8 -0
  216. package/dist/src/commands/update.js +276 -0
  217. package/dist/src/commands/verify.d.ts +19 -0
  218. package/dist/src/commands/verify.js +261 -0
  219. package/dist/src/commands/version.d.ts +42 -0
  220. package/dist/src/commands/version.js +106 -0
  221. package/dist/src/commands/workflow.d.ts +8 -0
  222. package/dist/src/commands/workflow.js +617 -0
  223. package/dist/src/config/harness-feedback-applier.d.ts +50 -0
  224. package/dist/src/config/harness-feedback-applier.js +122 -0
  225. package/dist/src/config/proven-config-refresh.d.ts +39 -0
  226. package/dist/src/config/proven-config-refresh.js +154 -0
  227. package/dist/src/config/proven-config-rvfa.d.ts +23 -0
  228. package/dist/src/config/proven-config-rvfa.js +73 -0
  229. package/dist/src/config/proven-config.d.ts +86 -0
  230. package/dist/src/config/proven-config.js +176 -0
  231. package/dist/src/config-adapter.d.ts +15 -0
  232. package/dist/src/config-adapter.js +186 -0
  233. package/dist/src/encryption/vault.d.ts +94 -0
  234. package/dist/src/encryption/vault.js +172 -0
  235. package/dist/src/fs-secure.d.ts +86 -0
  236. package/dist/src/fs-secure.js +133 -0
  237. package/dist/src/funnel/advisor-tip.d.ts +58 -0
  238. package/dist/src/funnel/advisor-tip.js +92 -0
  239. package/dist/src/funnel/attribution.d.ts +37 -0
  240. package/dist/src/funnel/attribution.js +101 -0
  241. package/dist/src/funnel/consent.d.ts +22 -0
  242. package/dist/src/funnel/consent.js +58 -0
  243. package/dist/src/funnel/credit-errors.d.ts +31 -0
  244. package/dist/src/funnel/credit-errors.js +88 -0
  245. package/dist/src/funnel/credit-notifier.d.ts +44 -0
  246. package/dist/src/funnel/credit-notifier.js +74 -0
  247. package/dist/src/funnel/disclosure.d.ts +47 -0
  248. package/dist/src/funnel/disclosure.js +109 -0
  249. package/dist/src/funnel/enrollment.d.ts +36 -0
  250. package/dist/src/funnel/enrollment.js +64 -0
  251. package/dist/src/funnel/environment.d.ts +17 -0
  252. package/dist/src/funnel/environment.js +39 -0
  253. package/dist/src/funnel/event-transport.d.ts +51 -0
  254. package/dist/src/funnel/event-transport.js +199 -0
  255. package/dist/src/funnel/events.d.ts +42 -0
  256. package/dist/src/funnel/events.js +150 -0
  257. package/dist/src/funnel/index.d.ts +21 -0
  258. package/dist/src/funnel/index.js +21 -0
  259. package/dist/src/funnel/insights.d.ts +50 -0
  260. package/dist/src/funnel/insights.js +120 -0
  261. package/dist/src/funnel/local-signals.d.ts +20 -0
  262. package/dist/src/funnel/local-signals.js +77 -0
  263. package/dist/src/funnel/message-transport.d.ts +51 -0
  264. package/dist/src/funnel/message-transport.js +149 -0
  265. package/dist/src/funnel/messages.d.ts +55 -0
  266. package/dist/src/funnel/messages.js +160 -0
  267. package/dist/src/funnel/payout.d.ts +40 -0
  268. package/dist/src/funnel/payout.js +60 -0
  269. package/dist/src/funnel/power-saver-notifier.d.ts +44 -0
  270. package/dist/src/funnel/power-saver-notifier.js +92 -0
  271. package/dist/src/funnel/precedence.d.ts +16 -0
  272. package/dist/src/funnel/precedence.js +85 -0
  273. package/dist/src/funnel/promo.d.ts +41 -0
  274. package/dist/src/funnel/promo.js +144 -0
  275. package/dist/src/funnel/rate-limit-notifier.d.ts +55 -0
  276. package/dist/src/funnel/rate-limit-notifier.js +102 -0
  277. package/dist/src/funnel/rotation.d.ts +19 -0
  278. package/dist/src/funnel/rotation.js +70 -0
  279. package/dist/src/funnel/state.d.ts +13 -0
  280. package/dist/src/funnel/state.js +52 -0
  281. package/dist/src/funnel/toggle-cooldown.d.ts +17 -0
  282. package/dist/src/funnel/toggle-cooldown.js +32 -0
  283. package/dist/src/funnel/types.d.ts +98 -0
  284. package/dist/src/funnel/types.js +26 -0
  285. package/dist/src/index.d.ts +81 -0
  286. package/dist/src/index.js +609 -0
  287. package/dist/src/infrastructure/in-memory-repositories.d.ts +68 -0
  288. package/dist/src/infrastructure/in-memory-repositories.js +264 -0
  289. package/dist/src/init/claudemd-generator.d.ts +16 -0
  290. package/dist/src/init/claudemd-generator.js +368 -0
  291. package/dist/src/init/executor.d.ts +41 -0
  292. package/dist/src/init/executor.js +2142 -0
  293. package/dist/src/init/helper-refresh.d.ts +79 -0
  294. package/dist/src/init/helper-refresh.js +347 -0
  295. package/dist/src/init/helper-signing.d.ts +37 -0
  296. package/dist/src/init/helper-signing.js +67 -0
  297. package/dist/src/init/helpers-generator.d.ts +87 -0
  298. package/dist/src/init/helpers-generator.js +1456 -0
  299. package/dist/src/init/index.d.ts +13 -0
  300. package/dist/src/init/index.js +15 -0
  301. package/dist/src/init/mcp-generator.d.ts +26 -0
  302. package/dist/src/init/mcp-generator.js +126 -0
  303. package/dist/src/init/memory-package-resolver.d.ts +53 -0
  304. package/dist/src/init/memory-package-resolver.js +118 -0
  305. package/dist/src/init/settings-generator.d.ts +14 -0
  306. package/dist/src/init/settings-generator.js +462 -0
  307. package/dist/src/init/statusline-generator.d.ts +28 -0
  308. package/dist/src/init/statusline-generator.js +177 -0
  309. package/dist/src/init/types.d.ts +331 -0
  310. package/dist/src/init/types.js +276 -0
  311. package/dist/src/log-filters.d.ts +46 -0
  312. package/dist/src/log-filters.js +107 -0
  313. package/dist/src/mcp-client.d.ts +92 -0
  314. package/dist/src/mcp-client.js +397 -0
  315. package/dist/src/mcp-server.d.ts +163 -0
  316. package/dist/src/mcp-server.js +751 -0
  317. package/dist/src/mcp-tools/agent-execute-core.d.ts +115 -0
  318. package/dist/src/mcp-tools/agent-execute-core.js +587 -0
  319. package/dist/src/mcp-tools/agent-tools.d.ts +9 -0
  320. package/dist/src/mcp-tools/agent-tools.js +837 -0
  321. package/dist/src/mcp-tools/agentbbs-tools.d.ts +28 -0
  322. package/dist/src/mcp-tools/agentbbs-tools.js +394 -0
  323. package/dist/src/mcp-tools/agentdb-tools.d.ts +35 -0
  324. package/dist/src/mcp-tools/agentdb-tools.js +1473 -0
  325. package/dist/src/mcp-tools/agenticow-loader.d.ts +59 -0
  326. package/dist/src/mcp-tools/agenticow-loader.js +105 -0
  327. package/dist/src/mcp-tools/agenticow-speculate-tools.d.ts +24 -0
  328. package/dist/src/mcp-tools/agenticow-speculate-tools.js +209 -0
  329. package/dist/src/mcp-tools/agenticow-tools.d.ts +36 -0
  330. package/dist/src/mcp-tools/agenticow-tools.js +360 -0
  331. package/dist/src/mcp-tools/analyze-tools.d.ts +38 -0
  332. package/dist/src/mcp-tools/analyze-tools.js +346 -0
  333. package/dist/src/mcp-tools/auto-install.d.ts +83 -0
  334. package/dist/src/mcp-tools/auto-install.js +131 -0
  335. package/dist/src/mcp-tools/autopilot-tools.d.ts +12 -0
  336. package/dist/src/mcp-tools/autopilot-tools.js +231 -0
  337. package/dist/src/mcp-tools/browser-intent-tools.d.ts +162 -0
  338. package/dist/src/mcp-tools/browser-intent-tools.js +548 -0
  339. package/dist/src/mcp-tools/browser-session-tools.d.ts +27 -0
  340. package/dist/src/mcp-tools/browser-session-tools.js +398 -0
  341. package/dist/src/mcp-tools/browser-tools.d.ts +21 -0
  342. package/dist/src/mcp-tools/browser-tools.js +760 -0
  343. package/dist/src/mcp-tools/business-pod-tools.d.ts +20 -0
  344. package/dist/src/mcp-tools/business-pod-tools.js +169 -0
  345. package/dist/src/mcp-tools/claims-tools.d.ts +12 -0
  346. package/dist/src/mcp-tools/claims-tools.js +863 -0
  347. package/dist/src/mcp-tools/config-tools.d.ts +8 -0
  348. package/dist/src/mcp-tools/config-tools.js +411 -0
  349. package/dist/src/mcp-tools/coordination-tools.d.ts +13 -0
  350. package/dist/src/mcp-tools/coordination-tools.js +729 -0
  351. package/dist/src/mcp-tools/daa-tools.d.ts +13 -0
  352. package/dist/src/mcp-tools/daa-tools.js +534 -0
  353. package/dist/src/mcp-tools/embeddings-tools.d.ts +9 -0
  354. package/dist/src/mcp-tools/embeddings-tools.js +904 -0
  355. package/dist/src/mcp-tools/github-tools.d.ts +9 -0
  356. package/dist/src/mcp-tools/github-tools.js +659 -0
  357. package/dist/src/mcp-tools/guidance-tools.d.ts +15 -0
  358. package/dist/src/mcp-tools/guidance-tools.js +639 -0
  359. package/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -0
  360. package/dist/src/mcp-tools/hive-mind-tools.js +953 -0
  361. package/dist/src/mcp-tools/hooks-tools.d.ts +65 -0
  362. package/dist/src/mcp-tools/hooks-tools.js +4836 -0
  363. package/dist/src/mcp-tools/http-fetch-tools.d.ts +55 -0
  364. package/dist/src/mcp-tools/http-fetch-tools.js +329 -0
  365. package/dist/src/mcp-tools/index.d.ts +34 -0
  366. package/dist/src/mcp-tools/index.js +40 -0
  367. package/dist/src/mcp-tools/managed-agent-tools.d.ts +22 -0
  368. package/dist/src/mcp-tools/managed-agent-tools.js +357 -0
  369. package/dist/src/mcp-tools/memory-tools.d.ts +14 -0
  370. package/dist/src/mcp-tools/memory-tools.js +1330 -0
  371. package/dist/src/mcp-tools/metaharness-tools.d.ts +51 -0
  372. package/dist/src/mcp-tools/metaharness-tools.js +684 -0
  373. package/dist/src/mcp-tools/neural-tools.d.ts +54 -0
  374. package/dist/src/mcp-tools/neural-tools.js +1168 -0
  375. package/dist/src/mcp-tools/performance-tools.d.ts +16 -0
  376. package/dist/src/mcp-tools/performance-tools.js +675 -0
  377. package/dist/src/mcp-tools/progress-tools.d.ts +14 -0
  378. package/dist/src/mcp-tools/progress-tools.js +348 -0
  379. package/dist/src/mcp-tools/request-tracker.d.ts +17 -0
  380. package/dist/src/mcp-tools/request-tracker.js +27 -0
  381. package/dist/src/mcp-tools/ruvllm-tools.d.ts +9 -0
  382. package/dist/src/mcp-tools/ruvllm-tools.js +355 -0
  383. package/dist/src/mcp-tools/security-tools.d.ts +18 -0
  384. package/dist/src/mcp-tools/security-tools.js +556 -0
  385. package/dist/src/mcp-tools/session-tools.d.ts +8 -0
  386. package/dist/src/mcp-tools/session-tools.js +517 -0
  387. package/dist/src/mcp-tools/swarm-tools.d.ts +37 -0
  388. package/dist/src/mcp-tools/swarm-tools.js +390 -0
  389. package/dist/src/mcp-tools/system-tools.d.ts +13 -0
  390. package/dist/src/mcp-tools/system-tools.js +688 -0
  391. package/dist/src/mcp-tools/task-tools.d.ts +8 -0
  392. package/dist/src/mcp-tools/task-tools.js +487 -0
  393. package/dist/src/mcp-tools/terminal-tools.d.ts +8 -0
  394. package/dist/src/mcp-tools/terminal-tools.js +306 -0
  395. package/dist/src/mcp-tools/testgen-tools.d.ts +26 -0
  396. package/dist/src/mcp-tools/testgen-tools.js +168 -0
  397. package/dist/src/mcp-tools/tool-loop-guardrail.d.ts +31 -0
  398. package/dist/src/mcp-tools/tool-loop-guardrail.js +71 -0
  399. package/dist/src/mcp-tools/transfer-tools.d.ts +14 -0
  400. package/dist/src/mcp-tools/transfer-tools.js +447 -0
  401. package/dist/src/mcp-tools/types.d.ts +8 -0
  402. package/dist/src/mcp-tools/types.js +8 -0
  403. package/dist/src/mcp-tools/validate-input.d.ts +9 -0
  404. package/dist/src/mcp-tools/validate-input.js +9 -0
  405. package/dist/src/mcp-tools/wasm-agent-tools.d.ts +13 -0
  406. package/dist/src/mcp-tools/wasm-agent-tools.js +840 -0
  407. package/dist/src/mcp-tools/workflow-tools.d.ts +8 -0
  408. package/dist/src/mcp-tools/workflow-tools.js +884 -0
  409. package/dist/src/memory/bge-embedder.d.ts +25 -0
  410. package/dist/src/memory/bge-embedder.js +121 -0
  411. package/dist/src/memory/cross-encoder-rerank.d.ts +33 -0
  412. package/dist/src/memory/cross-encoder-rerank.js +123 -0
  413. package/dist/src/memory/embedding-policy.d.ts +21 -0
  414. package/dist/src/memory/embedding-policy.js +30 -0
  415. package/dist/src/memory/embedding-quantization.d.ts +62 -0
  416. package/dist/src/memory/embedding-quantization.js +156 -0
  417. package/dist/src/memory/ewc-consolidation.d.ts +305 -0
  418. package/dist/src/memory/ewc-consolidation.js +611 -0
  419. package/dist/src/memory/graph-edge-writer.d.ts +95 -0
  420. package/dist/src/memory/graph-edge-writer.js +217 -0
  421. package/dist/src/memory/hybrid-retrieval.d.ts +77 -0
  422. package/dist/src/memory/hybrid-retrieval.js +192 -0
  423. package/dist/src/memory/intelligence.d.ts +405 -0
  424. package/dist/src/memory/intelligence.js +1316 -0
  425. package/dist/src/memory/lucene-bm25.d.ts +19 -0
  426. package/dist/src/memory/lucene-bm25.js +308 -0
  427. package/dist/src/memory/memory-bridge.d.ts +537 -0
  428. package/dist/src/memory/memory-bridge.js +2460 -0
  429. package/dist/src/memory/memory-initializer.d.ts +556 -0
  430. package/dist/src/memory/memory-initializer.js +3021 -0
  431. package/dist/src/memory/neural-package-bridge.d.ts +48 -0
  432. package/dist/src/memory/neural-package-bridge.js +87 -0
  433. package/dist/src/memory/rabitq-index.d.ts +60 -0
  434. package/dist/src/memory/rabitq-index.js +242 -0
  435. package/dist/src/memory/sona-optimizer.d.ts +267 -0
  436. package/dist/src/memory/sona-optimizer.js +779 -0
  437. package/dist/src/memory/structured-distill.d.ts +48 -0
  438. package/dist/src/memory/structured-distill.js +125 -0
  439. package/dist/src/output.d.ts +9 -0
  440. package/dist/src/output.js +9 -0
  441. package/dist/src/parser.d.ts +89 -0
  442. package/dist/src/parser.js +516 -0
  443. package/dist/src/plugins/manager.d.ts +133 -0
  444. package/dist/src/plugins/manager.js +415 -0
  445. package/dist/src/plugins/store/discovery.d.ts +99 -0
  446. package/dist/src/plugins/store/discovery.js +1224 -0
  447. package/dist/src/plugins/store/index.d.ts +76 -0
  448. package/dist/src/plugins/store/index.js +141 -0
  449. package/dist/src/plugins/store/search.d.ts +46 -0
  450. package/dist/src/plugins/store/search.js +230 -0
  451. package/dist/src/plugins/store/types.d.ts +279 -0
  452. package/dist/src/plugins/store/types.js +7 -0
  453. package/dist/src/plugins/tests/demo-plugin-store.d.ts +7 -0
  454. package/dist/src/plugins/tests/demo-plugin-store.js +126 -0
  455. package/dist/src/plugins/tests/standalone-test.d.ts +12 -0
  456. package/dist/src/plugins/tests/standalone-test.js +188 -0
  457. package/dist/src/plugins/tests/test-plugin-store.d.ts +7 -0
  458. package/dist/src/plugins/tests/test-plugin-store.js +206 -0
  459. package/dist/src/production/circuit-breaker.d.ts +101 -0
  460. package/dist/src/production/circuit-breaker.js +241 -0
  461. package/dist/src/production/error-handler.d.ts +92 -0
  462. package/dist/src/production/error-handler.js +299 -0
  463. package/dist/src/production/index.d.ts +23 -0
  464. package/dist/src/production/index.js +18 -0
  465. package/dist/src/production/monitoring.d.ts +161 -0
  466. package/dist/src/production/monitoring.js +356 -0
  467. package/dist/src/production/rate-limiter.d.ts +80 -0
  468. package/dist/src/production/rate-limiter.js +201 -0
  469. package/dist/src/production/retry.d.ts +48 -0
  470. package/dist/src/production/retry.js +179 -0
  471. package/dist/src/prompt.d.ts +44 -0
  472. package/dist/src/prompt.js +501 -0
  473. package/dist/src/proxy/install.d.ts +29 -0
  474. package/dist/src/proxy/install.js +135 -0
  475. package/dist/src/proxy/lifecycle.d.ts +61 -0
  476. package/dist/src/proxy/lifecycle.js +249 -0
  477. package/dist/src/proxy/paths.d.ts +34 -0
  478. package/dist/src/proxy/paths.js +70 -0
  479. package/dist/src/proxy/release.d.ts +47 -0
  480. package/dist/src/proxy/release.js +138 -0
  481. package/dist/src/proxy/token-bridge.d.ts +5 -0
  482. package/dist/src/proxy/token-bridge.js +61 -0
  483. package/dist/src/proxy/verify.d.ts +44 -0
  484. package/dist/src/proxy/verify.js +68 -0
  485. package/dist/src/runtime/headless.d.ts +60 -0
  486. package/dist/src/runtime/headless.js +284 -0
  487. package/dist/src/runtime/parent-death-watchdog.d.ts +42 -0
  488. package/dist/src/runtime/parent-death-watchdog.js +70 -0
  489. package/dist/src/ruvector/agent-wasm.d.ts +228 -0
  490. package/dist/src/ruvector/agent-wasm.js +463 -0
  491. package/dist/src/ruvector/ast-analyzer.d.ts +67 -0
  492. package/dist/src/ruvector/ast-analyzer.js +277 -0
  493. package/dist/src/ruvector/codemods/engine.d.ts +45 -0
  494. package/dist/src/ruvector/codemods/engine.js +291 -0
  495. package/dist/src/ruvector/codemods/scope-analysis.d.ts +29 -0
  496. package/dist/src/ruvector/codemods/scope-analysis.js +162 -0
  497. package/dist/src/ruvector/coverage-router.d.ts +160 -0
  498. package/dist/src/ruvector/coverage-router.js +531 -0
  499. package/dist/src/ruvector/coverage-tools.d.ts +33 -0
  500. package/dist/src/ruvector/coverage-tools.js +157 -0
  501. package/dist/src/ruvector/diff-classifier.d.ts +175 -0
  502. package/dist/src/ruvector/diff-classifier.js +699 -0
  503. package/dist/src/ruvector/diskann-backend.d.ts +78 -0
  504. package/dist/src/ruvector/diskann-backend.js +310 -0
  505. package/dist/src/ruvector/enhanced-model-router.d.ts +172 -0
  506. package/dist/src/ruvector/enhanced-model-router.js +577 -0
  507. package/dist/src/ruvector/graph-analyzer.d.ts +187 -0
  508. package/dist/src/ruvector/graph-analyzer.js +929 -0
  509. package/dist/src/ruvector/graph-backend.d.ts +79 -0
  510. package/dist/src/ruvector/graph-backend.js +220 -0
  511. package/dist/src/ruvector/index.d.ts +38 -0
  512. package/dist/src/ruvector/index.js +86 -0
  513. package/dist/src/ruvector/lora-adapter.d.ts +292 -0
  514. package/dist/src/ruvector/lora-adapter.js +710 -0
  515. package/dist/src/ruvector/model-prices.d.ts +50 -0
  516. package/dist/src/ruvector/model-prices.js +72 -0
  517. package/dist/src/ruvector/model-router.d.ts +408 -0
  518. package/dist/src/ruvector/model-router.js +1162 -0
  519. package/dist/src/ruvector/neural-router.d.ts +182 -0
  520. package/dist/src/ruvector/neural-router.js +825 -0
  521. package/dist/src/ruvector/output-verifier.d.ts +83 -0
  522. package/dist/src/ruvector/output-verifier.js +277 -0
  523. package/dist/src/ruvector/q-learning-router.d.ts +227 -0
  524. package/dist/src/ruvector/q-learning-router.js +721 -0
  525. package/dist/src/ruvector/router-calibrator.d.ts +65 -0
  526. package/dist/src/ruvector/router-calibrator.js +120 -0
  527. package/dist/src/ruvector/router-parallel-recorder.d.ts +127 -0
  528. package/dist/src/ruvector/router-parallel-recorder.js +183 -0
  529. package/dist/src/ruvector/router-trajectory.d.ts +194 -0
  530. package/dist/src/ruvector/router-trajectory.js +281 -0
  531. package/dist/src/ruvector/run-transcript-recorder.d.ts +154 -0
  532. package/dist/src/ruvector/run-transcript-recorder.js +209 -0
  533. package/dist/src/ruvector/ruvllm-wasm.d.ts +179 -0
  534. package/dist/src/ruvector/ruvllm-wasm.js +379 -0
  535. package/dist/src/ruvector/semantic-router.d.ts +77 -0
  536. package/dist/src/ruvector/semantic-router.js +178 -0
  537. package/dist/src/ruvector/task-embedder.d.ts +56 -0
  538. package/dist/src/ruvector/task-embedder.js +237 -0
  539. package/dist/src/ruvector/trajectory-tree.d.ts +113 -0
  540. package/dist/src/ruvector/trajectory-tree.js +237 -0
  541. package/dist/src/ruvector/vector-db.d.ts +73 -0
  542. package/dist/src/ruvector/vector-db.js +301 -0
  543. package/dist/src/ruvector/wasm-embedder.d.ts +13 -0
  544. package/dist/src/ruvector/wasm-embedder.js +143 -0
  545. package/dist/src/security/builtin-aidefence.d.ts +34 -0
  546. package/dist/src/security/builtin-aidefence.js +86 -0
  547. package/dist/src/services/agentic-flow-bridge.d.ts +50 -0
  548. package/dist/src/services/agentic-flow-bridge.js +95 -0
  549. package/dist/src/services/ai-job-dedup.d.ts +61 -0
  550. package/dist/src/services/ai-job-dedup.js +136 -0
  551. package/dist/src/services/checkpoint-gate.d.ts +140 -0
  552. package/dist/src/services/checkpoint-gate.js +223 -0
  553. package/dist/src/services/claim-service.d.ts +204 -0
  554. package/dist/src/services/claim-service.js +818 -0
  555. package/dist/src/services/config-file-manager.d.ts +37 -0
  556. package/dist/src/services/config-file-manager.js +224 -0
  557. package/dist/src/services/container-worker-pool.d.ts +204 -0
  558. package/dist/src/services/container-worker-pool.js +589 -0
  559. package/dist/src/services/daemon-autostart.d.ts +17 -0
  560. package/dist/src/services/daemon-autostart.js +102 -0
  561. package/dist/src/services/distill-oracle.d.ts +190 -0
  562. package/dist/src/services/distill-oracle.js +349 -0
  563. package/dist/src/services/distill-tuning.d.ts +111 -0
  564. package/dist/src/services/distill-tuning.js +510 -0
  565. package/dist/src/services/evolve-proof.d.ts +253 -0
  566. package/dist/src/services/evolve-proof.js +343 -0
  567. package/dist/src/services/fable-harness.d.ts +208 -0
  568. package/dist/src/services/fable-harness.js +388 -0
  569. package/dist/src/services/git-workspace-identity.d.ts +42 -0
  570. package/dist/src/services/git-workspace-identity.js +99 -0
  571. package/dist/src/services/global-ai-budget.d.ts +135 -0
  572. package/dist/src/services/global-ai-budget.js +415 -0
  573. package/dist/src/services/harness-benchmark.d.ts +68 -0
  574. package/dist/src/services/harness-benchmark.js +94 -0
  575. package/dist/src/services/harness-canary.d.ts +60 -0
  576. package/dist/src/services/harness-canary.js +69 -0
  577. package/dist/src/services/harness-corpus-harvester.d.ts +51 -0
  578. package/dist/src/services/harness-corpus-harvester.js +74 -0
  579. package/dist/src/services/harness-flywheel-generations.d.ts +115 -0
  580. package/dist/src/services/harness-flywheel-generations.js +360 -0
  581. package/dist/src/services/harness-flywheel-runtime.d.ts +25 -0
  582. package/dist/src/services/harness-flywheel-runtime.js +92 -0
  583. package/dist/src/services/harness-flywheel.d.ts +48 -0
  584. package/dist/src/services/harness-flywheel.js +207 -0
  585. package/dist/src/services/harness-frozen-eval.d.ts +22 -0
  586. package/dist/src/services/harness-frozen-eval.js +66 -0
  587. package/dist/src/services/harness-hosts.d.ts +40 -0
  588. package/dist/src/services/harness-hosts.js +88 -0
  589. package/dist/src/services/harness-improvement-ledger.d.ts +63 -0
  590. package/dist/src/services/harness-improvement-ledger.js +101 -0
  591. package/dist/src/services/harness-loop.d.ts +53 -0
  592. package/dist/src/services/harness-loop.js +85 -0
  593. package/dist/src/services/harness-qualification.d.ts +66 -0
  594. package/dist/src/services/harness-qualification.js +143 -0
  595. package/dist/src/services/harness-replay.d.ts +37 -0
  596. package/dist/src/services/harness-replay.js +92 -0
  597. package/dist/src/services/harness-verify.d.ts +33 -0
  598. package/dist/src/services/harness-verify.js +26 -0
  599. package/dist/src/services/harness-worker.d.ts +23 -0
  600. package/dist/src/services/harness-worker.js +66 -0
  601. package/dist/src/services/headless-worker-executor.d.ts +358 -0
  602. package/dist/src/services/headless-worker-executor.js +1269 -0
  603. package/dist/src/services/index.d.ts +13 -0
  604. package/dist/src/services/index.js +11 -0
  605. package/dist/src/services/memory-backup.d.ts +53 -0
  606. package/dist/src/services/memory-backup.js +198 -0
  607. package/dist/src/services/memory-distillation.d.ts +41 -0
  608. package/dist/src/services/memory-distillation.js +277 -0
  609. package/dist/src/services/native-training.d.ts +68 -0
  610. package/dist/src/services/native-training.js +141 -0
  611. package/dist/src/services/registry-api.d.ts +58 -0
  612. package/dist/src/services/registry-api.js +146 -0
  613. package/dist/src/services/repo-supervisor.d.ts +70 -0
  614. package/dist/src/services/repo-supervisor.js +228 -0
  615. package/dist/src/services/ruvector-training.d.ts +222 -0
  616. package/dist/src/services/ruvector-training.js +693 -0
  617. package/dist/src/services/swarm-memory-branches.d.ts +135 -0
  618. package/dist/src/services/swarm-memory-branches.js +213 -0
  619. package/dist/src/services/weight-eft.d.ts +305 -0
  620. package/dist/src/services/weight-eft.js +296 -0
  621. package/dist/src/services/worker-daemon.d.ts +439 -0
  622. package/dist/src/services/worker-daemon.js +1865 -0
  623. package/dist/src/services/worker-queue.d.ts +194 -0
  624. package/dist/src/services/worker-queue.js +513 -0
  625. package/dist/src/services/workspace-lease.d.ts +55 -0
  626. package/dist/src/services/workspace-lease.js +191 -0
  627. package/dist/src/suggest.d.ts +53 -0
  628. package/dist/src/suggest.js +200 -0
  629. package/dist/src/transfer/anonymization/index.d.ts +25 -0
  630. package/dist/src/transfer/anonymization/index.js +175 -0
  631. package/dist/src/transfer/deploy-seraphine.d.ts +13 -0
  632. package/dist/src/transfer/deploy-seraphine.js +205 -0
  633. package/dist/src/transfer/export.d.ts +25 -0
  634. package/dist/src/transfer/export.js +113 -0
  635. package/dist/src/transfer/index.d.ts +12 -0
  636. package/dist/src/transfer/index.js +31 -0
  637. package/dist/src/transfer/ipfs/client.d.ts +109 -0
  638. package/dist/src/transfer/ipfs/client.js +307 -0
  639. package/dist/src/transfer/ipfs/upload.d.ts +95 -0
  640. package/dist/src/transfer/ipfs/upload.js +413 -0
  641. package/dist/src/transfer/models/seraphine.d.ts +72 -0
  642. package/dist/src/transfer/models/seraphine.js +373 -0
  643. package/dist/src/transfer/serialization/cfp.d.ts +49 -0
  644. package/dist/src/transfer/serialization/cfp.js +183 -0
  645. package/dist/src/transfer/storage/gcs.d.ts +82 -0
  646. package/dist/src/transfer/storage/gcs.js +272 -0
  647. package/dist/src/transfer/storage/index.d.ts +6 -0
  648. package/dist/src/transfer/storage/index.js +6 -0
  649. package/dist/src/transfer/store/discovery.d.ts +84 -0
  650. package/dist/src/transfer/store/discovery.js +382 -0
  651. package/dist/src/transfer/store/download.d.ts +70 -0
  652. package/dist/src/transfer/store/download.js +334 -0
  653. package/dist/src/transfer/store/index.d.ts +84 -0
  654. package/dist/src/transfer/store/index.js +153 -0
  655. package/dist/src/transfer/store/publish.d.ts +76 -0
  656. package/dist/src/transfer/store/publish.js +294 -0
  657. package/dist/src/transfer/store/registry.d.ts +58 -0
  658. package/dist/src/transfer/store/registry.js +285 -0
  659. package/dist/src/transfer/store/search.d.ts +54 -0
  660. package/dist/src/transfer/store/search.js +232 -0
  661. package/dist/src/transfer/store/tests/standalone-test.d.ts +12 -0
  662. package/dist/src/transfer/store/tests/standalone-test.js +190 -0
  663. package/dist/src/transfer/store/types.d.ts +193 -0
  664. package/dist/src/transfer/store/types.js +6 -0
  665. package/dist/src/transfer/test-seraphine.d.ts +6 -0
  666. package/dist/src/transfer/test-seraphine.js +105 -0
  667. package/dist/src/transfer/tests/test-store.d.ts +7 -0
  668. package/dist/src/transfer/tests/test-store.js +214 -0
  669. package/dist/src/transfer/types.d.ts +245 -0
  670. package/dist/src/transfer/types.js +6 -0
  671. package/dist/src/types.d.ts +13 -0
  672. package/dist/src/types.js +13 -0
  673. package/dist/src/update/checker.d.ts +34 -0
  674. package/dist/src/update/checker.js +191 -0
  675. package/dist/src/update/executor.d.ts +33 -0
  676. package/dist/src/update/executor.js +217 -0
  677. package/dist/src/update/index.d.ts +33 -0
  678. package/dist/src/update/index.js +64 -0
  679. package/dist/src/update/rate-limiter.d.ts +20 -0
  680. package/dist/src/update/rate-limiter.js +96 -0
  681. package/dist/src/update/validator.d.ts +17 -0
  682. package/dist/src/update/validator.js +123 -0
  683. package/package.json +1 -1
@@ -0,0 +1,232 @@
1
+ /**
2
+ * `ruflo proxy install|start|stop|status|logs|update|uninstall` (ADR-307) —
3
+ * the full lifecycle command set, kept in its own file so
4
+ * src/commands/proxy.ts (the ADR-313/314/315 consent subcommands) stays
5
+ * under the repo's 500-line-per-file convention. Merged into one
6
+ * `proxyCommand` in proxy.ts.
7
+ */
8
+ import { output } from '../output.js';
9
+ import { hasConsent, recordConsent, revokeConsent } from '../funnel/index.js';
10
+ import { installProxy, uninstallProxy } from '../proxy/install.js';
11
+ import { startForeground, startBackground, stopProxy, getProxyStatus, readProxyLogTail, watchProxyLog, ProxyNotInstalledError, ProxyAlreadyRunningError, } from '../proxy/lifecycle.js';
12
+ import { proxyTokenPath } from '../proxy/paths.js';
13
+ import { removeInjectedToken, startTokenRefreshPump } from '../proxy/token-bridge.js';
14
+ /** Pinned and reviewed; later upgrades remain explicit commands. */
15
+ export const DEFAULT_PROXY_RELEASE = '0.4.0';
16
+ const INSTALL_DISCLOSURE = [
17
+ 'Installing the Meta LLM Proxy (ADR-304/307).',
18
+ '',
19
+ 'This downloads a separately-released Rust binary (Ed25519-signature and',
20
+ 'checksum verified before anything is written to disk) and runs it as a',
21
+ 'local process bound to 127.0.0.1 only. The proxy routes to LOCAL',
22
+ 'backends by default — no prompt leaves this machine. Cloud routing is a',
23
+ 'separate, explicit opt-in (`ruflo proxy config --cloud`), never enabled',
24
+ 'by install alone.',
25
+ '',
26
+ 'Uninstall anytime: ruflo proxy uninstall',
27
+ ].join('\n');
28
+ const installSub = {
29
+ name: 'install',
30
+ description: 'Download, verify, and install the meta-proxy binary (ADR-307)',
31
+ options: [
32
+ // NOT named 'version' — index.ts:107 globally intercepts any --version/-v
33
+ // anywhere in argv (`if (flags.version || flags.V) { showVersion(); return; }`)
34
+ // BEFORE subcommand dispatch, regardless of which command defines it. A
35
+ // subcommand-local --version is silently swallowed by the CLI's own
36
+ // `ruflo --version` handling — confirmed the hard way in E2E testing.
37
+ { name: 'release', description: `Release version to install (default: ${DEFAULT_PROXY_RELEASE})`, type: 'string' },
38
+ { name: 'yes', description: 'Skip the confirmation prompt', type: 'boolean', default: false },
39
+ ],
40
+ action: async (ctx) => {
41
+ // Resolve the reviewed default before the consent gate. An explicit empty
42
+ // override still fails below without recording a consent receipt.
43
+ const version = typeof ctx.flags.release === 'string' ? ctx.flags.release : DEFAULT_PROXY_RELEASE;
44
+ if (!version) {
45
+ output.printError('ruflo proxy install requires --release <x.y.z> — there is no version-discovery ' +
46
+ 'endpoint yet (see the plan doc for the tracked follow-up). Find the latest at ' +
47
+ 'the release channel and pass it explicitly.');
48
+ return { success: false, exitCode: 1 };
49
+ }
50
+ if (!hasConsent('proxy-install')) {
51
+ output.writeln(INSTALL_DISCLOSURE);
52
+ output.writeln('');
53
+ const confirmed = Boolean(ctx.flags.yes);
54
+ if (!confirmed) {
55
+ output.writeln(`Re-run with --yes to confirm: ruflo proxy install --yes (installs ${version})`);
56
+ return { success: true, data: { confirmed: false } };
57
+ }
58
+ recordConsent('proxy-install', true, 'proxy-install');
59
+ }
60
+ try {
61
+ const spinner = output.createSpinner({ text: `Installing meta-proxy ${version}...`, spinner: 'dots' });
62
+ spinner.start();
63
+ const result = await installProxy({ version, log: (line) => spinner.setText(line) });
64
+ spinner.succeed(`meta-proxy ${version} installed`);
65
+ output.writeln(` binary: ${result.binaryPath}`);
66
+ output.writeln(` sha256: ${result.sha256}`);
67
+ return { success: true, data: result };
68
+ }
69
+ catch (e) {
70
+ const message = e instanceof Error ? e.message : String(e);
71
+ output.printError('Install failed', message);
72
+ return { success: false, message, exitCode: 1 };
73
+ }
74
+ },
75
+ };
76
+ const updateSub = {
77
+ name: 'update',
78
+ description: 'Re-verify and replace the installed binary with a specific version (never automatic)',
79
+ options: [{ name: 'release', description: 'Release version to install', type: 'string', required: true }],
80
+ action: async (ctx) => {
81
+ const version = typeof ctx.flags.release === 'string' ? ctx.flags.release : undefined;
82
+ if (!version) {
83
+ output.printError('ruflo proxy update requires --release <x.y.z>');
84
+ return { success: false, exitCode: 1 };
85
+ }
86
+ try {
87
+ const spinner = output.createSpinner({ text: `Updating meta-proxy to ${version}...`, spinner: 'dots' });
88
+ spinner.start();
89
+ const result = await installProxy({ version, log: (line) => spinner.setText(line) });
90
+ spinner.succeed(`meta-proxy updated to ${version}`);
91
+ output.writeln(` binary: ${result.binaryPath}`);
92
+ return { success: true, data: result };
93
+ }
94
+ catch (e) {
95
+ const message = e instanceof Error ? e.message : String(e);
96
+ output.printError('Update failed', message);
97
+ return { success: false, message, exitCode: 1 };
98
+ }
99
+ },
100
+ };
101
+ const startSub = {
102
+ name: 'start',
103
+ description: 'Start meta-proxy (foreground by default; --service to detach)',
104
+ options: [
105
+ { name: 'service', description: 'Run detached (background), survives terminal close but not a reboot — full OS-service registration is not yet implemented', type: 'boolean', default: false },
106
+ ],
107
+ action: async (ctx) => {
108
+ const service = Boolean(ctx.flags.service);
109
+ try {
110
+ if (service) {
111
+ const { pid } = await startBackground();
112
+ output.printSuccess(`meta-proxy started in the background (pid ${pid})`);
113
+ output.writeln(' Note: survives this terminal closing, but not a reboot — OS-service registration is not yet implemented.');
114
+ output.writeln(' Logs: ruflo proxy logs');
115
+ return { success: true, data: { pid } };
116
+ }
117
+ output.writeln('Starting meta-proxy in the foreground — press Ctrl+C to stop.');
118
+ await startTokenRefreshPump();
119
+ await startForeground(); // never returns normally
120
+ return { success: true };
121
+ }
122
+ catch (e) {
123
+ if (e instanceof ProxyNotInstalledError || e instanceof ProxyAlreadyRunningError) {
124
+ output.printError(e.message);
125
+ return { success: false, message: e.message, exitCode: 1 };
126
+ }
127
+ const message = e instanceof Error ? e.message : String(e);
128
+ output.printError('Failed to start meta-proxy', message);
129
+ return { success: false, message, exitCode: 1 };
130
+ }
131
+ },
132
+ };
133
+ const superviseSub = {
134
+ name: 'supervise',
135
+ description: 'Internal detached supervisor for token refresh and meta-proxy lifecycle',
136
+ action: async () => {
137
+ await startTokenRefreshPump();
138
+ await startForeground(true);
139
+ return { success: true };
140
+ },
141
+ };
142
+ const stopSub = {
143
+ name: 'stop',
144
+ description: 'Stop a running meta-proxy process',
145
+ action: async () => {
146
+ const result = await stopProxy();
147
+ removeInjectedToken();
148
+ if (!result.wasRunning) {
149
+ output.writeln('meta-proxy was not running.');
150
+ return { success: true, data: result };
151
+ }
152
+ output.printSuccess(`meta-proxy stopped (was pid ${result.pid})`);
153
+ return { success: true, data: result };
154
+ },
155
+ };
156
+ const statusSub = {
157
+ name: 'status',
158
+ description: 'Show meta-proxy install + process status',
159
+ options: [{ name: 'json', description: 'Machine-readable output', type: 'boolean', default: false }],
160
+ action: async (ctx) => {
161
+ const status = getProxyStatus();
162
+ if (ctx.flags.json) {
163
+ output.printJson(status);
164
+ return { success: true, data: status };
165
+ }
166
+ output.writeln(`Installed: ${status.installed ? 'yes' : 'no'}`);
167
+ output.writeln(`Running: ${status.running ? `yes (pid ${status.pid})` : 'no'}`);
168
+ if (status.stalePidFile)
169
+ output.writeln(' (a stale PID file was found and will be cleared on next start)');
170
+ if (!status.installed)
171
+ output.writeln(`Run: ruflo proxy install --yes (installs ${DEFAULT_PROXY_RELEASE})`);
172
+ else if (!status.running)
173
+ output.writeln('Run: ruflo proxy start');
174
+ return { success: true, data: status };
175
+ },
176
+ };
177
+ const logsSub = {
178
+ name: 'logs',
179
+ description: 'Show meta-proxy --service logs',
180
+ options: [
181
+ { name: 'follow', short: 'f', description: 'Stream new log lines as they arrive', type: 'boolean', default: false },
182
+ ],
183
+ action: async (ctx) => {
184
+ if (ctx.flags.follow) {
185
+ output.writeln('Following meta-proxy logs — press Ctrl+C to stop.');
186
+ try {
187
+ const watcher = watchProxyLog((line) => output.writeln(line));
188
+ await new Promise((resolve) => {
189
+ process.on('SIGINT', () => {
190
+ watcher.close();
191
+ resolve();
192
+ });
193
+ });
194
+ return { success: true };
195
+ }
196
+ catch (e) {
197
+ const message = e instanceof Error ? e.message : String(e);
198
+ output.printError(message);
199
+ return { success: false, message, exitCode: 1 };
200
+ }
201
+ }
202
+ const tail = readProxyLogTail();
203
+ if (!tail) {
204
+ output.writeln('No log content yet — meta-proxy has never been started in --service mode.');
205
+ return { success: true, data: { empty: true } };
206
+ }
207
+ output.writeln(tail);
208
+ return { success: true };
209
+ },
210
+ };
211
+ const uninstallSub = {
212
+ name: 'uninstall',
213
+ description: 'Stop the proxy (if running), remove the binary, token, and consent receipt',
214
+ action: async () => {
215
+ const status = getProxyStatus();
216
+ if (status.running) {
217
+ await stopProxy();
218
+ output.writeln('Stopped the running meta-proxy process.');
219
+ }
220
+ const removed = await uninstallProxy();
221
+ const { existsSync, unlinkSync } = await import('node:fs');
222
+ const tokenPath = proxyTokenPath();
223
+ if (existsSync(tokenPath))
224
+ unlinkSync(tokenPath);
225
+ removeInjectedToken();
226
+ revokeConsent('proxy-install', 'proxy-uninstall');
227
+ output.printSuccess(removed ? 'meta-proxy uninstalled.' : 'Nothing was installed — cleaned up any leftover state.');
228
+ return { success: true, data: { removed } };
229
+ },
230
+ };
231
+ export const proxyLifecycleSubcommands = [installSub, updateSub, startSub, superviseSub, stopSub, statusSub, logsSub, uninstallSub];
232
+ //# sourceMappingURL=proxy-lifecycle.js.map
@@ -0,0 +1,21 @@
1
+ /**
2
+ * `ruflo proxy` — Meta LLM Proxy control surface (ADR-304/307/313).
3
+ *
4
+ * This command currently implements the ADR-313 sponsored-downtime
5
+ * subcommands only (`sponsor-enable` / `sponsor-disable` / `sponsor-status`).
6
+ * The full lifecycle command set ADR-307 specifies
7
+ * (`install|start|stop|status|logs|update|uninstall`) manages the proxy
8
+ * *process* itself and is out of scope here — this surface only manages
9
+ * the consent-gated sponsored-mode flag the already-running proxy reads
10
+ * from its config mirror.
11
+ *
12
+ * Consent (ADR-302/313): granting `sponsored-downtime` consent here writes
13
+ * BOTH the ruflo-side consent receipt (source of truth) AND a mirror flag
14
+ * into ~/.ruflo/proxy-config.toml (the file the Rust proxy binary reads).
15
+ * The proxy never writes this file — ruflo does, exactly once per
16
+ * enable/disable action.
17
+ */
18
+ import type { Command } from '../types.js';
19
+ export declare const proxyCommand: Command;
20
+ export default proxyCommand;
21
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1,398 @@
1
+ /**
2
+ * `ruflo proxy` — Meta LLM Proxy control surface (ADR-304/307/313).
3
+ *
4
+ * This command currently implements the ADR-313 sponsored-downtime
5
+ * subcommands only (`sponsor-enable` / `sponsor-disable` / `sponsor-status`).
6
+ * The full lifecycle command set ADR-307 specifies
7
+ * (`install|start|stop|status|logs|update|uninstall`) manages the proxy
8
+ * *process* itself and is out of scope here — this surface only manages
9
+ * the consent-gated sponsored-mode flag the already-running proxy reads
10
+ * from its config mirror.
11
+ *
12
+ * Consent (ADR-302/313): granting `sponsored-downtime` consent here writes
13
+ * BOTH the ruflo-side consent receipt (source of truth) AND a mirror flag
14
+ * into ~/.ruflo/proxy-config.toml (the file the Rust proxy binary reads).
15
+ * The proxy never writes this file — ruflo does, exactly once per
16
+ * enable/disable action.
17
+ */
18
+ import * as fs from 'fs';
19
+ import { output } from '../output.js';
20
+ import { hasConsent, recordConsent, revokeConsent, funnelStateDir } from '../funnel/index.js';
21
+ import { recordFunnelEvent } from '../funnel/events.js';
22
+ import { clearRateLimitStatus, readRateLimitStatus } from '../funnel/rate-limit-notifier.js';
23
+ import { clearQuotaLowStatus, readQuotaLowStatus } from '../funnel/power-saver-notifier.js';
24
+ import { getInstalledCliVersion } from '../init/helper-refresh.js';
25
+ import * as path from 'path';
26
+ import { proxyLifecycleSubcommands } from './proxy-lifecycle.js';
27
+ const PROXY_CONFIG_FILE = 'proxy-config.toml';
28
+ /**
29
+ * Minimal hand-rolled TOML writer — this config has exactly one boolean
30
+ * field ruflo needs to set (`sponsored_consent_granted`); every other field
31
+ * the proxy binary defaults itself (ADR-307 "a malformed config must never
32
+ * crash the proxy — it degrades to safe defaults"). We read-modify-write
33
+ * the raw text so a user's own bind/backend customizations survive, only
34
+ * ever touching this one line. No TOML parser dependency needed for this.
35
+ */
36
+ function readProxyConfigRaw() {
37
+ try {
38
+ return fs.readFileSync(path.join(funnelStateDir(), PROXY_CONFIG_FILE), 'utf-8');
39
+ }
40
+ catch {
41
+ return '';
42
+ }
43
+ }
44
+ function writeConfigLine(field, rawValue) {
45
+ const dir = funnelStateDir();
46
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
47
+ const target = path.join(dir, PROXY_CONFIG_FILE);
48
+ const raw = readProxyConfigRaw();
49
+ const line = `${field} = ${rawValue}`;
50
+ const pattern = new RegExp(`^${field}\\s*=.*$`, 'm');
51
+ let next;
52
+ if (pattern.test(raw)) {
53
+ next = raw.replace(pattern, line);
54
+ }
55
+ else {
56
+ next = raw.length > 0 ? `${raw.trimEnd()}\n${line}\n` : `${line}\n`;
57
+ }
58
+ const tmp = `${target}.tmp`;
59
+ fs.writeFileSync(tmp, next, { encoding: 'utf-8', mode: 0o600 });
60
+ fs.renameSync(tmp, target);
61
+ }
62
+ function writeConsentMirrorLine(field, value) {
63
+ writeConfigLine(field, String(value));
64
+ }
65
+ function writeSponsoredConsentMirror(granted) {
66
+ writeConsentMirrorLine('sponsored_consent_granted', granted);
67
+ }
68
+ function writePowerSaverConsentMirror(granted) {
69
+ writeConsentMirrorLine('power_saver_consent_granted', granted);
70
+ }
71
+ function writeTrainingShareConsentMirror(granted) {
72
+ writeConsentMirrorLine('training_share_consent_granted', granted);
73
+ }
74
+ /**
75
+ * `default_data_plane` — the ADR-304 cloud-routing toggle. Values confirmed
76
+ * against meta-proxy's actual `DataPlane` enum (`src/config.rs`,
77
+ * `#[serde(rename_all = "snake_case")]`): "local" | "cloud" | "sponsored" |
78
+ * "passthrough" (the last two are not written by this command — sponsored
79
+ * is ADR-313's own consent flag, passthrough is the proxy's own default).
80
+ */
81
+ function readDataPlane() {
82
+ const raw = readProxyConfigRaw();
83
+ const match = raw.match(/^default_data_plane\s*=\s*"([^"]*)"/m);
84
+ return match ? match[1] : 'passthrough'; // matches the Rust struct's own default
85
+ }
86
+ function writeDataPlane(plane) {
87
+ writeConfigLine('default_data_plane', `"${plane}"`);
88
+ }
89
+ const CLOUD_ROUTING_DISCLOSURE = [
90
+ 'Enabling cloud routing.',
91
+ '',
92
+ 'With cloud routing ON, prompts for cloud-tier requests are sent to',
93
+ 'api.cognitum.one and forwarded to the selected provider',
94
+ '(Claude / GPT / Gemini / DeepSeek / OpenRouter).',
95
+ '',
96
+ 'Requests routed to local backends never leave this machine.',
97
+ '',
98
+ 'Disable anytime: ruflo proxy config --local-only',
99
+ ].join('\n');
100
+ const configSub = {
101
+ name: 'config',
102
+ description: 'Toggle cloud routing (ADR-304) — local backends only by default',
103
+ options: [
104
+ { name: 'cloud', description: 'Enable cloud routing (requires cloud-routing consent)', type: 'boolean', default: false },
105
+ { name: 'local-only', description: 'Disable cloud routing, revert to local-only routing', type: 'boolean', default: false },
106
+ { name: 'yes', description: 'Skip the confirmation prompt', type: 'boolean', default: false },
107
+ ],
108
+ action: async (ctx) => {
109
+ const wantCloud = Boolean(ctx.flags.cloud);
110
+ const wantLocalOnly = Boolean(ctx.flags.localOnly ?? ctx.flags['local-only']);
111
+ if (wantCloud && wantLocalOnly) {
112
+ output.printError('Pass either --cloud or --local-only, not both.');
113
+ return { success: false, exitCode: 1 };
114
+ }
115
+ if (!wantCloud && !wantLocalOnly) {
116
+ const plane = readDataPlane();
117
+ output.writeln(`Current data plane: ${plane}`);
118
+ output.writeln(plane === 'cloud'
119
+ ? 'Cloud routing is ON — cloud-tier requests go to api.cognitum.one.'
120
+ : 'Cloud routing is OFF — requests never leave this machine (or use your own Claude subscription on Passthrough).');
121
+ return { success: true, data: { plane } };
122
+ }
123
+ if (wantLocalOnly) {
124
+ writeDataPlane('local');
125
+ revokeConsent('cloud-routing', 'proxy-config-local-only');
126
+ output.printSuccess('Cloud routing disabled — reverted to local-only routing.');
127
+ return { success: true, data: { plane: 'local' } };
128
+ }
129
+ // wantCloud
130
+ if (!hasConsent('cloud-routing')) {
131
+ output.writeln(CLOUD_ROUTING_DISCLOSURE);
132
+ output.writeln('');
133
+ if (!ctx.flags.yes) {
134
+ output.writeln('Re-run with --yes to confirm: ruflo proxy config --cloud --yes');
135
+ return { success: true, data: { confirmed: false } };
136
+ }
137
+ recordConsent('cloud-routing', true, 'proxy-config-cloud');
138
+ }
139
+ writeDataPlane('cloud');
140
+ output.printSuccess('Cloud routing enabled.');
141
+ output.writeln(' Requests routed to local backends still never leave this machine.');
142
+ output.writeln(' Disable anytime: ruflo proxy config --local-only');
143
+ return { success: true, data: { plane: 'cloud' } };
144
+ },
145
+ };
146
+ const SPONSOR_DISCLOSURE = [
147
+ 'Enabling sponsored downtime mode.',
148
+ '',
149
+ "While your Claude usage limit resets, requests can be routed through",
150
+ "Cognitum's own model capacity, sponsored at no cost to you. This is a",
151
+ 'separate data plane from your own cloud-routing config — Cognitum sees',
152
+ 'these prompts (server-side, same handling as any api.cognitum.one',
153
+ 'request), never your own Claude account.',
154
+ '',
155
+ 'Sponsored capacity is rate-limited and best-effort — Cognitum may',
156
+ 'throttle or decline requests under load. Disable anytime:',
157
+ ' ruflo proxy sponsor-disable',
158
+ ].join('\n');
159
+ const sponsorEnableSub = {
160
+ name: 'sponsor-enable',
161
+ description: "Opt into Cognitum-sponsored downtime capacity (ADR-313)",
162
+ options: [
163
+ { name: 'yes', description: 'Skip the confirmation prompt', type: 'boolean', default: false },
164
+ ],
165
+ action: async (ctx) => {
166
+ if (hasConsent('sponsored-downtime')) {
167
+ output.writeln('Sponsored downtime mode is already enabled.');
168
+ return { success: true, data: { alreadyEnabled: true } };
169
+ }
170
+ output.writeln(SPONSOR_DISCLOSURE);
171
+ output.writeln('');
172
+ if (!ctx.flags.yes) {
173
+ output.writeln('Re-run with --yes to confirm: ruflo proxy sponsor-enable --yes');
174
+ return { success: true, data: { confirmed: false } };
175
+ }
176
+ recordConsent('sponsored-downtime', true, 'proxy-sponsor-enable');
177
+ writeSponsoredConsentMirror(true);
178
+ recordFunnelEvent('sponsor_mode_enabled', 'statusline', getInstalledCliVersion());
179
+ output.printSuccess('Sponsored downtime mode enabled.');
180
+ output.writeln('The proxy will use it automatically while ruflo settings notices');
181
+ output.writeln('rate-limited is flagged. Disable anytime: ruflo proxy sponsor-disable');
182
+ return { success: true, data: { confirmed: true } };
183
+ },
184
+ };
185
+ const sponsorDisableSub = {
186
+ name: 'sponsor-disable',
187
+ description: 'Revoke sponsored-downtime consent and stop using sponsored capacity',
188
+ action: async () => {
189
+ revokeConsent('sponsored-downtime', 'proxy-sponsor-disable');
190
+ writeSponsoredConsentMirror(false);
191
+ recordFunnelEvent('sponsor_mode_disabled', 'statusline', getInstalledCliVersion());
192
+ output.printSuccess('Sponsored downtime mode disabled.');
193
+ return { success: true };
194
+ },
195
+ };
196
+ const sponsorStatusSub = {
197
+ name: 'sponsor-status',
198
+ description: 'Show sponsored-downtime consent + rate-limit flag state',
199
+ action: async () => {
200
+ const consented = hasConsent('sponsored-downtime');
201
+ const rateLimited = readRateLimitStatus();
202
+ output.writeln(`Sponsored downtime consent: ${consented ? 'granted' : 'not granted'}`);
203
+ output.writeln(`Rate-limit flag: ${rateLimited.limited ? `set (since ${rateLimited.since})` : 'not set'}`);
204
+ if (rateLimited.limited && !consented) {
205
+ output.writeln('');
206
+ output.writeln('You are flagged as rate-limited but have not enabled sponsored');
207
+ output.writeln('capacity. Enable it with: ruflo proxy sponsor-enable --yes');
208
+ }
209
+ return { success: true, data: { consented, rateLimited } };
210
+ },
211
+ };
212
+ /** Convenience: clear the rate-limited flag once you're back to normal. */
213
+ const sponsorClearSub = {
214
+ name: 'sponsor-clear',
215
+ description: 'Clear the rate-limited flag (your Claude limit has reset)',
216
+ action: async () => {
217
+ const changed = clearRateLimitStatus();
218
+ if (!changed) {
219
+ output.printError('Rate-limit flag was just toggled — try again in a few minutes (ADR-314 anti-abuse cooldown).');
220
+ return { success: false };
221
+ }
222
+ output.printSuccess('Rate-limit flag cleared.');
223
+ return { success: true };
224
+ },
225
+ };
226
+ const POWER_SAVER_DISCLOSURE = [
227
+ 'Enabling power saver mode.',
228
+ '',
229
+ "Everyday requests will route through Cognitum's own difficulty-based",
230
+ 'router (cognitum-auto) instead of your Claude subscription directly —',
231
+ 'simple messages stay cheap, genuinely hard reasoning still escalates to',
232
+ 'a comparable frontier model. This is billed to YOUR OWN Cognitum',
233
+ 'account (cloud-routing), not sponsored/free capacity — a separate',
234
+ 'decision from sponsored downtime mode.',
235
+ '',
236
+ 'Disable anytime: ruflo proxy power-saver-disable',
237
+ ].join('\n');
238
+ const powerSaverEnableSub = {
239
+ name: 'power-saver-enable',
240
+ description: 'Opt into power saver mode — route everyday requests through your own Cognitum account (ADR-314)',
241
+ options: [
242
+ { name: 'yes', description: 'Skip the confirmation prompt', type: 'boolean', default: false },
243
+ ],
244
+ action: async (ctx) => {
245
+ if (hasConsent('power-saver')) {
246
+ output.writeln('Power saver mode is already enabled.');
247
+ return { success: true, data: { alreadyEnabled: true } };
248
+ }
249
+ output.writeln(POWER_SAVER_DISCLOSURE);
250
+ output.writeln('');
251
+ if (!ctx.flags.yes) {
252
+ output.writeln('Re-run with --yes to confirm: ruflo proxy power-saver-enable --yes');
253
+ return { success: true, data: { confirmed: false } };
254
+ }
255
+ recordConsent('power-saver', true, 'proxy-power-saver-enable');
256
+ writePowerSaverConsentMirror(true);
257
+ recordFunnelEvent('power_saver_enabled', 'statusline', getInstalledCliVersion());
258
+ output.printSuccess('Power saver mode enabled.');
259
+ output.writeln('Flag it active with: ruflo settings notices quota-low');
260
+ output.writeln('Disable anytime: ruflo proxy power-saver-disable');
261
+ return { success: true, data: { confirmed: true } };
262
+ },
263
+ };
264
+ const powerSaverDisableSub = {
265
+ name: 'power-saver-disable',
266
+ description: 'Revoke power-saver consent and stop routing through Cognitum for cost savings',
267
+ action: async () => {
268
+ revokeConsent('power-saver', 'proxy-power-saver-disable');
269
+ writePowerSaverConsentMirror(false);
270
+ recordFunnelEvent('power_saver_disabled', 'statusline', getInstalledCliVersion());
271
+ output.printSuccess('Power saver mode disabled.');
272
+ return { success: true };
273
+ },
274
+ };
275
+ const powerSaverStatusSub = {
276
+ name: 'power-saver-status',
277
+ description: 'Show power-saver consent + quota-low flag state',
278
+ action: async () => {
279
+ const consented = hasConsent('power-saver');
280
+ const quotaLow = readQuotaLowStatus();
281
+ output.writeln(`Power saver consent: ${consented ? 'granted' : 'not granted'}`);
282
+ output.writeln(`Quota-low flag: ${quotaLow.low ? `set (since ${quotaLow.since})` : 'not set'}`);
283
+ if (quotaLow.low && !consented) {
284
+ output.writeln('');
285
+ output.writeln('You are flagged as running low but have not enabled power saver');
286
+ output.writeln('mode. Enable it with: ruflo proxy power-saver-enable --yes');
287
+ }
288
+ return { success: true, data: { consented, quotaLow } };
289
+ },
290
+ };
291
+ /** Convenience: clear the quota-low flag once you're back to normal. */
292
+ const powerSaverClearSub = {
293
+ name: 'power-saver-clear',
294
+ description: 'Clear the quota-low flag',
295
+ action: async () => {
296
+ const changed = clearQuotaLowStatus();
297
+ if (!changed) {
298
+ output.printError('Quota-low flag was just toggled — try again in a few minutes (ADR-314 anti-abuse cooldown).');
299
+ return { success: false };
300
+ }
301
+ output.printSuccess('Quota-low flag cleared.');
302
+ return { success: true };
303
+ },
304
+ };
305
+ const TRAINING_SHARE_DISCLOSURE = [
306
+ 'Enabling training-data sharing.',
307
+ '',
308
+ 'When a request runs on the sponsored plane, the proxy will attach a',
309
+ 'consent header telling Cognitum it may retain that interaction —',
310
+ '(post safety-scan) — as input to its MicroLoRA training pipeline',
311
+ '(meta-llm ADR-251), gated through its existing SHADOW/promotion-rule',
312
+ 'safety net; adaptations are never auto-served. This is content, not',
313
+ 'just metadata, and is entirely separate from sponsored-downtime',
314
+ 'consent — using free capacity never implicitly means this is on.',
315
+ '',
316
+ 'Declining has zero effect on sponsored-capacity access.',
317
+ '',
318
+ 'Disable anytime: ruflo proxy training-share-disable',
319
+ ].join('\n');
320
+ const trainingShareEnableSub = {
321
+ name: 'training-share-enable',
322
+ description: 'Opt into sharing sponsored-plane interaction content for meta-llm training (ADR-315)',
323
+ options: [
324
+ { name: 'yes', description: 'Skip the confirmation prompt', type: 'boolean', default: false },
325
+ ],
326
+ action: async (ctx) => {
327
+ if (hasConsent('training-data-sharing')) {
328
+ output.writeln('Training-data sharing is already enabled.');
329
+ return { success: true, data: { alreadyEnabled: true } };
330
+ }
331
+ output.writeln(TRAINING_SHARE_DISCLOSURE);
332
+ output.writeln('');
333
+ if (!ctx.flags.yes) {
334
+ output.writeln('Re-run with --yes to confirm: ruflo proxy training-share-enable --yes');
335
+ return { success: true, data: { confirmed: false } };
336
+ }
337
+ recordConsent('training-data-sharing', true, 'proxy-training-share-enable');
338
+ writeTrainingShareConsentMirror(true);
339
+ recordFunnelEvent('training_share_enabled', 'statusline', getInstalledCliVersion());
340
+ output.printSuccess('Training-data sharing enabled.');
341
+ output.writeln('Only sponsored-plane requests carry the consent header. Disable anytime:');
342
+ output.writeln(' ruflo proxy training-share-disable');
343
+ return { success: true, data: { confirmed: true } };
344
+ },
345
+ };
346
+ const trainingShareDisableSub = {
347
+ name: 'training-share-disable',
348
+ description: 'Revoke training-data-sharing consent — stop sending the training consent header',
349
+ action: async () => {
350
+ revokeConsent('training-data-sharing', 'proxy-training-share-disable');
351
+ writeTrainingShareConsentMirror(false);
352
+ recordFunnelEvent('training_share_disabled', 'statusline', getInstalledCliVersion());
353
+ output.printSuccess('Training-data sharing disabled.');
354
+ return { success: true };
355
+ },
356
+ };
357
+ const trainingShareStatusSub = {
358
+ name: 'training-share-status',
359
+ description: 'Show training-data-sharing consent state',
360
+ action: async () => {
361
+ const consented = hasConsent('training-data-sharing');
362
+ output.writeln(`Training-data sharing consent: ${consented ? 'granted' : 'not granted'}`);
363
+ if (consented) {
364
+ output.writeln('Sponsored-plane requests carry X-Cognitum-Training-Consent: true.');
365
+ }
366
+ return { success: true, data: { consented } };
367
+ },
368
+ };
369
+ export const proxyCommand = {
370
+ name: 'proxy',
371
+ description: 'Meta LLM Proxy — install/lifecycle + sponsored downtime + power saver + training-data sharing (ADR-304/307/313/314/315)',
372
+ subcommands: [
373
+ ...proxyLifecycleSubcommands,
374
+ configSub,
375
+ sponsorEnableSub, sponsorDisableSub, sponsorStatusSub, sponsorClearSub,
376
+ powerSaverEnableSub, powerSaverDisableSub, powerSaverStatusSub, powerSaverClearSub,
377
+ trainingShareEnableSub, trainingShareDisableSub, trainingShareStatusSub,
378
+ ],
379
+ examples: [
380
+ { command: 'ruflo proxy install --yes', description: 'Install the signed Meta-Proxy v0.4.0 binary' },
381
+ { command: 'ruflo proxy start', description: 'Start meta-proxy in the foreground' },
382
+ { command: 'ruflo proxy status', description: 'Show install + process status' },
383
+ { command: 'ruflo proxy config --cloud --yes', description: 'Enable cloud routing (ADR-304)' },
384
+ { command: 'ruflo proxy config --local-only', description: 'Revert to local-only routing' },
385
+ { command: 'ruflo proxy sponsor-status', description: 'Show current sponsored-mode state' },
386
+ { command: 'ruflo proxy sponsor-enable --yes', description: 'Opt into sponsored downtime capacity' },
387
+ { command: 'ruflo proxy power-saver-enable --yes', description: 'Opt into power saver mode' },
388
+ { command: 'ruflo proxy training-share-enable --yes', description: 'Opt into training-data sharing (ADR-315)' },
389
+ ],
390
+ action: async (ctx) => {
391
+ const { getProxyStatus } = await import('../proxy/lifecycle.js');
392
+ const status = getProxyStatus();
393
+ output.writeln(`Installed: ${status.installed ? 'yes' : 'no'}; Running: ${status.running ? `yes (pid ${status.pid})` : 'no'}`);
394
+ return sponsorStatusSub.action(ctx);
395
+ },
396
+ };
397
+ export default proxyCommand;
398
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1,16 @@
1
+ /**
2
+ * V3 CLI Route Command
3
+ * Intelligent task-to-agent routing using Q-Learning
4
+ *
5
+ * Features:
6
+ * - Q-Learning based agent selection
7
+ * - Semantic task understanding
8
+ * - Confidence scoring
9
+ * - Learning from feedback
10
+ *
11
+ * Created with love by ruv.io
12
+ */
13
+ import type { Command } from '../types.js';
14
+ export declare const routeCommand: Command;
15
+ export default routeCommand;
16
+ //# sourceMappingURL=route.d.ts.map