@claude-flow/cli 3.32.3 → 3.32.5

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 +20 -0
  172. package/dist/src/commands/proxy-lifecycle.js +277 -0
  173. package/dist/src/commands/proxy.d.ts +21 -0
  174. package/dist/src/commands/proxy.js +403 -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,358 @@
1
+ /**
2
+ * BbsRoomBudgetTracker — Atomic reserve / commit / release token-bucket
3
+ * backed by better-sqlite3 (ADR-164.1 §3-§5).
4
+ *
5
+ * Closes the read-then-write race in ADR-164's first-draft tracker by routing
6
+ * every state transition through a single `BEGIN IMMEDIATE` transaction that
7
+ * acquires the SQLite write lock atomically with the gate check. The
8
+ * `_lock_bump` column write is a belt-and-suspenders explicit write inside
9
+ * the transaction so the lock acquisition is visible to code review and
10
+ * query-log analysis (§3.2 peer-review clarification).
11
+ *
12
+ * Architectural constraints (ADR-164.1):
13
+ * - Default OFF: this module is opt-in behind `CLAUDE_FLOW_BBS_ATOMIC_BUDGET=1`.
14
+ * The pod-tick.mjs file-based stub remains the default until the flag is
15
+ * flipped per ADR-164.1 §12.4.
16
+ * - `committed_post_expiry` state machine implemented per §5.3 — late
17
+ * commits on expired reservations ARE accepted (the API spend already
18
+ * happened), transition to `committed_post_expiry`, charge the budget,
19
+ * and return `warned: 'COMMIT_AFTER_EXPIRY'`. This closes the §8.1
20
+ * Expired Commit Leak surfaced by peer review on 2026-06-29.
21
+ * - `expires_at` is clamped to [5_000, 300_000] ms (§3.2).
22
+ * - WAL + synchronous=NORMAL + busy_timeout=500 for write throughput.
23
+ *
24
+ * The sweeper interval (`sweepExpired()`) is exposed as a manual method;
25
+ * callers are expected to drive it on a setInterval — that integration lives
26
+ * at the call site, not in this file, per ADR-164.1 §7.1.
27
+ *
28
+ * @module @claude-flow/cli/business-pods/bbs-budget-tracker
29
+ */
30
+ import { randomUUID } from 'node:crypto';
31
+ // ---------- expiry-window clamp -------------------------------------------
32
+ export const RESERVATION_EXPIRY_FLOOR_MS = 5_000;
33
+ export const RESERVATION_EXPIRY_CEILING_MS = 300_000;
34
+ export const RESERVATION_EXPIRY_DEFAULT_MS = 60_000;
35
+ export function clampReservationExpiry(raw) {
36
+ if (raw === undefined || !Number.isFinite(raw)) {
37
+ const envVal = Number(process.env.CLAUDE_FLOW_BBS_RESERVATION_EXPIRY_MS);
38
+ if (Number.isFinite(envVal) && envVal > 0) {
39
+ return Math.max(RESERVATION_EXPIRY_FLOOR_MS, Math.min(RESERVATION_EXPIRY_CEILING_MS, envVal));
40
+ }
41
+ return RESERVATION_EXPIRY_DEFAULT_MS;
42
+ }
43
+ return Math.max(RESERVATION_EXPIRY_FLOOR_MS, Math.min(RESERVATION_EXPIRY_CEILING_MS, raw));
44
+ }
45
+ // ---------- schema migration ----------------------------------------------
46
+ export const SCHEMA_SQL = `
47
+ PRAGMA journal_mode = WAL;
48
+ PRAGMA synchronous = NORMAL;
49
+ PRAGMA busy_timeout = 500;
50
+
51
+ CREATE TABLE IF NOT EXISTS bbs_budget_rooms (
52
+ room_id TEXT NOT NULL PRIMARY KEY,
53
+ monthly_cap_usd REAL NOT NULL CHECK (monthly_cap_usd >= 0),
54
+ billing_month TEXT NOT NULL,
55
+ _lock_bump INTEGER NOT NULL DEFAULT 0
56
+ );
57
+
58
+ CREATE TABLE IF NOT EXISTS bbs_budget_reservations (
59
+ reservation_id TEXT NOT NULL PRIMARY KEY,
60
+ room_id TEXT NOT NULL REFERENCES bbs_budget_rooms(room_id),
61
+ caller_node_id TEXT NOT NULL,
62
+ estimated_usd REAL NOT NULL CHECK (estimated_usd >= 0),
63
+ actual_usd REAL,
64
+ state TEXT NOT NULL
65
+ CHECK (state IN ('reserved','committed','released','expired','committed_post_expiry')),
66
+ reserved_at INTEGER NOT NULL,
67
+ expires_at INTEGER NOT NULL,
68
+ committed_at INTEGER,
69
+ audit_envelope_id TEXT NOT NULL
70
+ );
71
+
72
+ CREATE INDEX IF NOT EXISTS idx_reservations_room_month
73
+ ON bbs_budget_reservations (room_id, reserved_at);
74
+
75
+ CREATE INDEX IF NOT EXISTS idx_reservations_expiry
76
+ ON bbs_budget_reservations (state, expires_at);
77
+ `;
78
+ // ---------- helpers --------------------------------------------------------
79
+ function currentBillingMonth(now) {
80
+ const d = new Date(now);
81
+ return `${d.getUTCFullYear()}-${String(d.getUTCMonth() + 1).padStart(2, '0')}`;
82
+ }
83
+ function billingMonthStartMs(billingMonth) {
84
+ const [y, m] = billingMonth.split('-').map((n) => Number(n));
85
+ return Date.UTC(y, (m - 1), 1, 0, 0, 0, 0);
86
+ }
87
+ const noopAudit = { emit: () => undefined };
88
+ export class AtomicBbsRoomBudgetTracker {
89
+ db;
90
+ defaultExpiryMs;
91
+ audit;
92
+ clock;
93
+ constructor(opts) {
94
+ this.db = opts.db;
95
+ this.defaultExpiryMs = clampReservationExpiry(opts.defaultExpiryMs);
96
+ this.audit = opts.audit ?? noopAudit;
97
+ this.clock = opts.clock ?? Date.now;
98
+ // Ensure schema is present. exec() is a no-op for tables that already
99
+ // exist due to IF NOT EXISTS.
100
+ this.db.exec(SCHEMA_SQL);
101
+ }
102
+ /**
103
+ * Register (or update) a room and its monthly cap. Idempotent.
104
+ */
105
+ registerRoom(roomId, monthlyCapUsd) {
106
+ const billingMonth = currentBillingMonth(this.clock());
107
+ this.db
108
+ .prepare(`INSERT INTO bbs_budget_rooms (room_id, monthly_cap_usd, billing_month, _lock_bump)
109
+ VALUES (?, ?, ?, 0)
110
+ ON CONFLICT(room_id) DO UPDATE SET monthly_cap_usd = excluded.monthly_cap_usd`)
111
+ .run(roomId, monthlyCapUsd, billingMonth);
112
+ }
113
+ /**
114
+ * Atomically check budget and insert a reservation row in a single
115
+ * BEGIN IMMEDIATE transaction. See ADR-164.1 §5.2.
116
+ */
117
+ reserve(roomId, callerId, estimatedUsd, opts) {
118
+ if (!Number.isFinite(estimatedUsd) || estimatedUsd < 0) {
119
+ throw new Error('estimatedUsd must be a non-negative finite number');
120
+ }
121
+ const auditEnvelopeId = opts?.auditEnvelopeId ?? `audit-${randomUUID()}`;
122
+ const expiryMs = clampReservationExpiry(opts?.expiryMs ?? this.defaultExpiryMs);
123
+ const nowMs = this.clock();
124
+ const billingMonth = currentBillingMonth(nowMs);
125
+ const billingMonthStart = billingMonthStartMs(billingMonth);
126
+ const beginStmt = this.db.prepare('BEGIN IMMEDIATE');
127
+ const commitStmt = this.db.prepare('COMMIT');
128
+ const rollbackStmt = this.db.prepare('ROLLBACK');
129
+ beginStmt.run();
130
+ let transactionOpen = true;
131
+ try {
132
+ // Step 1: touch the room header row (the _lock_bump write makes the
133
+ // lock acquisition visible per §3.2 peer-review note).
134
+ const bumpRes = this.db
135
+ .prepare(`UPDATE bbs_budget_rooms
136
+ SET _lock_bump = _lock_bump + 1,
137
+ billing_month = CASE WHEN billing_month = ? THEN billing_month ELSE ? END
138
+ WHERE room_id = ?`)
139
+ .run(billingMonth, billingMonth, roomId);
140
+ if (bumpRes.changes === 0) {
141
+ rollbackStmt.run();
142
+ transactionOpen = false;
143
+ return { ok: false, error: 'ROOM_NOT_FOUND' };
144
+ }
145
+ const roomRow = this.db
146
+ .prepare(`SELECT monthly_cap_usd, billing_month FROM bbs_budget_rooms WHERE room_id = ?`)
147
+ .get(roomId);
148
+ if (!roomRow) {
149
+ rollbackStmt.run();
150
+ transactionOpen = false;
151
+ return { ok: false, error: 'ROOM_NOT_FOUND' };
152
+ }
153
+ const monthlyCap = roomRow.monthly_cap_usd;
154
+ // Step 3: compute committed + live-reserved totals within this billing month.
155
+ const totals = this.db
156
+ .prepare(`SELECT
157
+ COALESCE(SUM(CASE WHEN state IN ('committed','committed_post_expiry') THEN actual_usd ELSE 0 END), 0) AS committed_total,
158
+ COALESCE(SUM(CASE WHEN state = 'reserved' AND expires_at > ? THEN estimated_usd ELSE 0 END), 0) AS reserved_total
159
+ FROM bbs_budget_reservations
160
+ WHERE room_id = ? AND reserved_at >= ?`)
161
+ .get(nowMs, roomId, billingMonthStart);
162
+ const committedTotal = totals.committed_total ?? 0;
163
+ const reservedTotal = totals.reserved_total ?? 0;
164
+ const projected = committedTotal + reservedTotal + estimatedUsd;
165
+ if (projected > monthlyCap + 1e-9) {
166
+ rollbackStmt.run();
167
+ transactionOpen = false;
168
+ this.audit.emit('reservation.budget_exceeded', {
169
+ roomId, callerId, estimatedUsd, committedTotal, reservedTotal, monthlyCap,
170
+ });
171
+ return { ok: false, error: 'BUDGET_EXCEEDED' };
172
+ }
173
+ // Step 5: insert the reservation.
174
+ const reservationId = `res-${randomUUID()}`;
175
+ const expiresAt = nowMs + expiryMs;
176
+ this.db
177
+ .prepare(`INSERT INTO bbs_budget_reservations
178
+ (reservation_id, room_id, caller_node_id, estimated_usd, actual_usd,
179
+ state, reserved_at, expires_at, committed_at, audit_envelope_id)
180
+ VALUES (?, ?, ?, ?, NULL, 'reserved', ?, ?, NULL, ?)`)
181
+ .run(reservationId, roomId, callerId, estimatedUsd, nowMs, expiresAt, auditEnvelopeId);
182
+ commitStmt.run();
183
+ transactionOpen = false;
184
+ const remaining = monthlyCap - (committedTotal + reservedTotal + estimatedUsd);
185
+ this.audit.emit('reservation.reserved', {
186
+ reservationId, roomId, callerId, estimatedUsd, expiresAt, remaining,
187
+ });
188
+ return { ok: true, reservationId, remainingAfterReserve: remaining };
189
+ }
190
+ catch (err) {
191
+ if (transactionOpen) {
192
+ try {
193
+ rollbackStmt.run();
194
+ }
195
+ catch { /* already-rolled */ }
196
+ }
197
+ throw err;
198
+ }
199
+ }
200
+ /**
201
+ * Commit the reservation with the actual cost. Late commits (expired
202
+ * before commit landed) ARE accepted, transitioned to
203
+ * 'committed_post_expiry', charged to the budget, and surfaced via
204
+ * `warned: 'COMMIT_AFTER_EXPIRY'` plus a `reservation.committed_post_expiry`
205
+ * audit emit. See ADR-164.1 §5.3 + §8.1.
206
+ */
207
+ commit(reservationId, actualUsd) {
208
+ if (!Number.isFinite(actualUsd) || actualUsd < 0) {
209
+ throw new Error('actualUsd must be a non-negative finite number');
210
+ }
211
+ const nowMs = this.clock();
212
+ const beginStmt = this.db.prepare('BEGIN IMMEDIATE');
213
+ const commitStmt = this.db.prepare('COMMIT');
214
+ const rollbackStmt = this.db.prepare('ROLLBACK');
215
+ beginStmt.run();
216
+ let transactionOpen = true;
217
+ try {
218
+ const row = this.db
219
+ .prepare(`SELECT state, room_id, estimated_usd, reserved_at, expires_at
220
+ FROM bbs_budget_reservations
221
+ WHERE reservation_id = ?`)
222
+ .get(reservationId);
223
+ if (!row) {
224
+ rollbackStmt.run();
225
+ transactionOpen = false;
226
+ return { ok: false, error: 'NOT_FOUND' };
227
+ }
228
+ if (row.state === 'committed' || row.state === 'committed_post_expiry' ||
229
+ row.state === 'released' || row.state === 'expired') {
230
+ rollbackStmt.run();
231
+ transactionOpen = false;
232
+ return { ok: false, error: 'ALREADY_FINALIZED' };
233
+ }
234
+ // state is 'reserved' here. Decide committed vs committed_post_expiry.
235
+ const lateCommit = row.expires_at <= nowMs;
236
+ const newState = lateCommit ? 'committed_post_expiry' : 'committed';
237
+ this.db
238
+ .prepare(`UPDATE bbs_budget_reservations
239
+ SET state = ?, actual_usd = ?, committed_at = ?
240
+ WHERE reservation_id = ?`)
241
+ .run(newState, actualUsd, nowMs, reservationId);
242
+ // Re-compute remaining for the return value.
243
+ const billingMonth = currentBillingMonth(nowMs);
244
+ const billingMonthStart = billingMonthStartMs(billingMonth);
245
+ const totals = this.db
246
+ .prepare(`SELECT
247
+ COALESCE(SUM(CASE WHEN state IN ('committed','committed_post_expiry') THEN actual_usd ELSE 0 END), 0) AS committed_total,
248
+ COALESCE(SUM(CASE WHEN state = 'reserved' AND expires_at > ? THEN estimated_usd ELSE 0 END), 0) AS reserved_total
249
+ FROM bbs_budget_reservations
250
+ WHERE room_id = ? AND reserved_at >= ?`)
251
+ .get(nowMs, row.room_id, billingMonthStart);
252
+ const roomRow = this.db
253
+ .prepare(`SELECT monthly_cap_usd FROM bbs_budget_rooms WHERE room_id = ?`)
254
+ .get(row.room_id);
255
+ const monthlyCap = roomRow?.monthly_cap_usd ?? 0;
256
+ const finalRemaining = monthlyCap - ((totals.committed_total ?? 0) + (totals.reserved_total ?? 0));
257
+ commitStmt.run();
258
+ transactionOpen = false;
259
+ if (lateCommit) {
260
+ // Emit the high-priority audit envelope per §8.1.
261
+ this.audit.emit('reservation.committed_post_expiry', {
262
+ reservationId, roomId: row.room_id, actualUsd, finalRemaining,
263
+ reservedAt: row.reserved_at, expiresAt: row.expires_at, committedAt: nowMs,
264
+ });
265
+ return { ok: true, warned: 'COMMIT_AFTER_EXPIRY', finalRemaining };
266
+ }
267
+ this.audit.emit('reservation.committed', {
268
+ reservationId, roomId: row.room_id, actualUsd, finalRemaining,
269
+ });
270
+ return { ok: true, committed: true, finalRemaining };
271
+ }
272
+ catch (err) {
273
+ if (transactionOpen) {
274
+ try {
275
+ rollbackStmt.run();
276
+ }
277
+ catch { /* already-rolled */ }
278
+ }
279
+ throw err;
280
+ }
281
+ }
282
+ /**
283
+ * Release a reservation (caller decided not to proceed). State must be
284
+ * 'reserved'; any other state is ALREADY_FINALIZED.
285
+ */
286
+ release(reservationId) {
287
+ const beginStmt = this.db.prepare('BEGIN IMMEDIATE');
288
+ const commitStmt = this.db.prepare('COMMIT');
289
+ const rollbackStmt = this.db.prepare('ROLLBACK');
290
+ beginStmt.run();
291
+ let transactionOpen = true;
292
+ try {
293
+ const row = this.db
294
+ .prepare(`SELECT state, room_id FROM bbs_budget_reservations WHERE reservation_id = ?`)
295
+ .get(reservationId);
296
+ if (!row) {
297
+ rollbackStmt.run();
298
+ transactionOpen = false;
299
+ return { ok: false, error: 'NOT_FOUND' };
300
+ }
301
+ if (row.state !== 'reserved') {
302
+ rollbackStmt.run();
303
+ transactionOpen = false;
304
+ return { ok: false, error: 'ALREADY_FINALIZED' };
305
+ }
306
+ this.db
307
+ .prepare(`UPDATE bbs_budget_reservations SET state = 'released' WHERE reservation_id = ?`)
308
+ .run(reservationId);
309
+ commitStmt.run();
310
+ transactionOpen = false;
311
+ this.audit.emit('reservation.released', { reservationId, roomId: row.room_id });
312
+ return { ok: true, released: true };
313
+ }
314
+ catch (err) {
315
+ if (transactionOpen) {
316
+ try {
317
+ rollbackStmt.run();
318
+ }
319
+ catch { /* already-rolled */ }
320
+ }
321
+ throw err;
322
+ }
323
+ }
324
+ /**
325
+ * Sweep expired reservations: transition 'reserved' rows whose expiry has
326
+ * passed to 'expired'. Callers should drive this on a setInterval per
327
+ * ADR-164.1 §7.1 (default cadence 5s; this method does NOT install the
328
+ * timer — that's the integration site's responsibility).
329
+ * Returns the number of rows updated.
330
+ */
331
+ sweepExpired() {
332
+ const result = this.db
333
+ .prepare(`UPDATE bbs_budget_reservations
334
+ SET state = 'expired'
335
+ WHERE state = 'reserved' AND expires_at < ?`)
336
+ .run(this.clock());
337
+ return result.changes;
338
+ }
339
+ /**
340
+ * Diagnostic read: list reservations for a room. Not on the hot path.
341
+ */
342
+ listReservations(roomId) {
343
+ return this.db
344
+ .prepare(`SELECT * FROM bbs_budget_reservations WHERE room_id = ? ORDER BY reserved_at`)
345
+ .all(roomId);
346
+ }
347
+ }
348
+ /**
349
+ * Feature-flagged factory per ADR-164.1 §12.3. Returns an atomic tracker
350
+ * when `CLAUDE_FLOW_BBS_ATOMIC_BUDGET=1`, otherwise returns null so the
351
+ * caller can keep using the file-based stub in pod-tick.mjs.
352
+ */
353
+ export function createAtomicTrackerIfEnabled(opts) {
354
+ if (process.env.CLAUDE_FLOW_BBS_ATOMIC_BUDGET !== '1')
355
+ return null;
356
+ return new AtomicBbsRoomBudgetTracker(opts);
357
+ }
358
+ //# sourceMappingURL=bbs-budget-tracker.js.map
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Domain-affinity routing policy — ADR-164 §3.4.
3
+ *
4
+ * Surfaces a deterministic routing decision for `@metaharness/router` to use
5
+ * before its KRR cost-optimal step. The policy is intentionally tiny —
6
+ * three branches over `preferLocalExecution` and `budgetUsdMonthly` — so the
7
+ * decision is auditable from the pod template alone, no learned-weight side
8
+ * effects.
9
+ *
10
+ * Rules (per the Phase-3 brief):
11
+ * 1. `preferLocalExecution === true` → 'local-stdio'
12
+ * 2. `preferLocalExecution === false` AND `budgetUsdMonthly >= 50` → 'cloud-managed'
13
+ * 3. otherwise → 'remote-peer'
14
+ *
15
+ * The boundary `>= 50` matches the Phase-2 sales template (budget 50/month) —
16
+ * it routes the canonical reference pod to the cloud-managed backend. Pods
17
+ * below the threshold default to the federation peer-node backend.
18
+ *
19
+ * Wire point: `@metaharness/router` reads the result and supplies it as a
20
+ * routing hint *before* its KRR step. The router is free to override on
21
+ * latency/cost grounds — domain affinity is a policy floor, not a hard gate.
22
+ *
23
+ * @module @claude-flow/cli/business-pods/domain-affinity-policy
24
+ */
25
+ import type { PodTemplate } from './pod-schema.js';
26
+ /** Three backends @metaharness/router can target for a pod tick. */
27
+ export type AgentBackend = 'local-stdio' | 'remote-peer' | 'cloud-managed';
28
+ /** Threshold for `cloud-managed` routing. Pods at or above this monthly
29
+ * spend default to cloud-managed when they are *not* local-pinned. */
30
+ export declare const CLOUD_BUDGET_THRESHOLD_USD = 50;
31
+ /** Structured routing decision. `reason` is rendered into the routing
32
+ * rationale via `hooks_explain` so operators can see why each pod was
33
+ * routed where it was. */
34
+ export interface BackendDecision {
35
+ backend: AgentBackend;
36
+ reason: string;
37
+ }
38
+ /**
39
+ * Decide which backend `@metaharness/router` should prefer for a pod tick.
40
+ *
41
+ * @param pod A validated PodTemplate. Validation is the caller's
42
+ * responsibility; this function will throw on malformed input
43
+ * (specifically on missing `preferLocalExecution` or
44
+ * `budgetUsdMonthly`).
45
+ */
46
+ export declare function selectAgentBackend(pod: PodTemplate): BackendDecision;
47
+ //# sourceMappingURL=domain-affinity-policy.d.ts.map
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Domain-affinity routing policy — ADR-164 §3.4.
3
+ *
4
+ * Surfaces a deterministic routing decision for `@metaharness/router` to use
5
+ * before its KRR cost-optimal step. The policy is intentionally tiny —
6
+ * three branches over `preferLocalExecution` and `budgetUsdMonthly` — so the
7
+ * decision is auditable from the pod template alone, no learned-weight side
8
+ * effects.
9
+ *
10
+ * Rules (per the Phase-3 brief):
11
+ * 1. `preferLocalExecution === true` → 'local-stdio'
12
+ * 2. `preferLocalExecution === false` AND `budgetUsdMonthly >= 50` → 'cloud-managed'
13
+ * 3. otherwise → 'remote-peer'
14
+ *
15
+ * The boundary `>= 50` matches the Phase-2 sales template (budget 50/month) —
16
+ * it routes the canonical reference pod to the cloud-managed backend. Pods
17
+ * below the threshold default to the federation peer-node backend.
18
+ *
19
+ * Wire point: `@metaharness/router` reads the result and supplies it as a
20
+ * routing hint *before* its KRR step. The router is free to override on
21
+ * latency/cost grounds — domain affinity is a policy floor, not a hard gate.
22
+ *
23
+ * @module @claude-flow/cli/business-pods/domain-affinity-policy
24
+ */
25
+ /** Threshold for `cloud-managed` routing. Pods at or above this monthly
26
+ * spend default to cloud-managed when they are *not* local-pinned. */
27
+ export const CLOUD_BUDGET_THRESHOLD_USD = 50;
28
+ /**
29
+ * Decide which backend `@metaharness/router` should prefer for a pod tick.
30
+ *
31
+ * @param pod A validated PodTemplate. Validation is the caller's
32
+ * responsibility; this function will throw on malformed input
33
+ * (specifically on missing `preferLocalExecution` or
34
+ * `budgetUsdMonthly`).
35
+ */
36
+ export function selectAgentBackend(pod) {
37
+ if (pod === null || typeof pod !== 'object') {
38
+ throw new TypeError('selectAgentBackend: pod must be a validated PodTemplate object');
39
+ }
40
+ if (typeof pod.preferLocalExecution !== 'boolean') {
41
+ throw new TypeError('selectAgentBackend: pod.preferLocalExecution must be boolean (validate via pod-schema first)');
42
+ }
43
+ if (typeof pod.budgetUsdMonthly !== 'number' || !Number.isFinite(pod.budgetUsdMonthly)) {
44
+ throw new TypeError('selectAgentBackend: pod.budgetUsdMonthly must be a finite number (validate via pod-schema first)');
45
+ }
46
+ if (pod.preferLocalExecution) {
47
+ return {
48
+ backend: 'local-stdio',
49
+ reason: `pod "${pod.name}" preferLocalExecution=true — domain-affinity policy pins to local stdio`,
50
+ };
51
+ }
52
+ if (pod.budgetUsdMonthly >= CLOUD_BUDGET_THRESHOLD_USD) {
53
+ return {
54
+ backend: 'cloud-managed',
55
+ reason: `pod "${pod.name}" preferLocalExecution=false and budgetUsdMonthly=${pod.budgetUsdMonthly} ` +
56
+ `>= ${CLOUD_BUDGET_THRESHOLD_USD} — routes to cloud Managed Agents`,
57
+ };
58
+ }
59
+ return {
60
+ backend: 'remote-peer',
61
+ reason: `pod "${pod.name}" preferLocalExecution=false and budgetUsdMonthly=${pod.budgetUsdMonthly} ` +
62
+ `< ${CLOUD_BUDGET_THRESHOLD_USD} — routes to federation peer node`,
63
+ };
64
+ }
65
+ //# sourceMappingURL=domain-affinity-policy.js.map
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Pod template schema validator (ADR-164 §3.3 + ADR-164.1 §3.2).
3
+ *
4
+ * Defines the `PodTemplate` type that every business-pod JSON file under
5
+ * `plugins/ruflo-business-pods/templates/` MUST conform to, and a hand-rolled
6
+ * validator that throws structured errors on invalid templates. No external
7
+ * deps (no AJV, no zod) — the schema is small enough to validate by hand and
8
+ * doing so keeps the cli's optional-dep surface unchanged.
9
+ *
10
+ * @module @claude-flow/cli/business-pods/pod-schema
11
+ */
12
+ export type PiiPolicy = 'soc2' | 'gdpr' | 'hipaa' | 'permissive';
13
+ export interface PodAgent {
14
+ /** Role label inside the pod, e.g. "lead-gen-agent". */
15
+ role: string;
16
+ /** Must resolve to a known ruflo agent type (researcher / coder / ...). */
17
+ agentType: string;
18
+ /** Human-readable description of what the agent does in this pod. */
19
+ description: string;
20
+ /** Routing hint — true = prefer local stdio execution. */
21
+ preferLocal: boolean;
22
+ }
23
+ export interface PodBench {
24
+ /** Bench identifier, e.g. "sales-pipeline-bench". */
25
+ name: string;
26
+ /** What the bench measures. */
27
+ description: string;
28
+ /** Acceptance criteria — non-empty list of human-readable bullets. */
29
+ successCriteria: string[];
30
+ /** Cadence between bench evaluations (hours, ≥1). */
31
+ scheduleHours: number;
32
+ }
33
+ export interface PodAuditReadView {
34
+ /** Event types surfaced to the business-owner read view. */
35
+ includedEventTypes: string[];
36
+ /** Retention window for the read view (days, ≥1). */
37
+ retentionDays: number;
38
+ }
39
+ export interface PodTemplate {
40
+ /** Canonical pod name (matches BBS roomId). */
41
+ name: string;
42
+ /** Display name for the cockpit. */
43
+ displayName: string;
44
+ /** BBS room this pod serves, e.g. "sales". */
45
+ roomId: string;
46
+ /** Ordered list of pod agent compositions. */
47
+ agents: PodAgent[];
48
+ /** Allow-list of MCP tools the pod's agents may invoke. */
49
+ allowedMcpTools: string[];
50
+ /** Bench definition for periodic Darwin /loop scoring. */
51
+ bench: PodBench;
52
+ /** PII compliance mode applied to every envelope in/out of this room. */
53
+ piiPolicy: PiiPolicy;
54
+ /** Monthly USD hard cap (0 = unlimited; not recommended). */
55
+ budgetUsdMonthly: number;
56
+ /** Estimated USD per pod tick — drives reservation amount. */
57
+ budgetUsdPerRun: number;
58
+ /** If true, @metaharness/router routes to local first. */
59
+ preferLocalExecution: boolean;
60
+ /** POSIX cron expression for the perpetual /loop scheduler. */
61
+ cronSchedule: string;
62
+ /** Compliance audit-log projection. */
63
+ auditReadView: PodAuditReadView;
64
+ /**
65
+ * Reservation expiry for the atomic budget tracker — ADR-164.1 §3.2.
66
+ * Bounded to [5000, 300000] ms (5 s – 5 min). Default 60_000 if omitted.
67
+ */
68
+ reservationExpiryMs?: number;
69
+ }
70
+ /**
71
+ * Structured validation error — carries the JSON pointer that caused it so
72
+ * callers can render a precise message.
73
+ */
74
+ export declare class PodTemplateValidationError extends Error {
75
+ path: string;
76
+ constructor(message: string, path: string);
77
+ }
78
+ /**
79
+ * Validate `json` and return a typed `PodTemplate`. Throws
80
+ * `PodTemplateValidationError` with a JSON-pointer-style path on failure.
81
+ *
82
+ * Used by:
83
+ * - `business_pod_validate` MCP tool — returns the error verbatim
84
+ * - `pod-tick.mjs` — pre-flight check before any pod execution
85
+ * - any external schema-loader that wants typed templates
86
+ */
87
+ export declare function validatePodTemplate(json: unknown): PodTemplate;
88
+ /**
89
+ * Known ruflo agent types — kept in sync with src/commands/agent.ts AGENT_TYPES.
90
+ * The list is duplicated here intentionally so pod-tick.mjs can run without
91
+ * importing the entire commands module.
92
+ *
93
+ * If a new agent type is added to AGENT_TYPES, mirror it here.
94
+ */
95
+ export declare const KNOWN_AGENT_TYPES: readonly ["coder", "researcher", "tester", "reviewer", "architect", "system-architect", "coordinator", "analyst", "optimizer", "security-architect", "security-auditor", "memory-specialist", "swarm-specialist", "performance-engineer", "core-architect", "test-architect", "planner", "task-orchestrator", "perf-analyzer", "backend-dev", "api-docs", "cicd-engineer", "code-analyzer", "database-specialist", "base-template-generator"];
96
+ //# sourceMappingURL=pod-schema.d.ts.map