@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,55 @@
1
+ /**
2
+ * #2661 root-fix — worktree leases.
3
+ *
4
+ * Registers which worktrees of a repository are currently "alive" (have a
5
+ * running daemon actively heartbeating), independent of whether that
6
+ * worktree's daemon is the elected repository supervisor (see
7
+ * repo-supervisor.ts). A lease expires after 15 minutes without a heartbeat
8
+ * — a removed worktree, or a daemon that crashed without a graceful
9
+ * shutdown, becomes ineligible within one expiry window instead of lingering
10
+ * forever in the registry.
11
+ *
12
+ * The registry lives under the user's home directory (not the workspace) so
13
+ * it is visible to every worktree's daemon, keyed by repositoryId:
14
+ *
15
+ * ~/.claude-flow/leases/<repositoryId>.json
16
+ *
17
+ * This is deliberately a thin, single-purpose registry — repo-supervisor.ts
18
+ * is the piece that actually elects one process to own the recurring AI
19
+ * worker schedule; leases only answer "which worktrees are currently live"
20
+ * for status reporting and future supervisor-dispatched work.
21
+ */
22
+ export declare const LEASE_TTL_MS: number;
23
+ export interface LeaseRecord {
24
+ worktreeRoot: string;
25
+ pid: number;
26
+ registeredAt: number;
27
+ lastHeartbeat: number;
28
+ }
29
+ export declare class WorkspaceLeaseRegistry {
30
+ private readonly dir;
31
+ constructor(options?: {
32
+ baseDir?: string;
33
+ });
34
+ private fileFor;
35
+ private ensureDir;
36
+ private withLock;
37
+ private readFile;
38
+ private writeFile;
39
+ /** Register or renew this process's lease on a worktree. Best-effort. */
40
+ heartbeat(repositoryId: string, worktreeRoot: string): Promise<void>;
41
+ /** Release this worktree's lease on graceful shutdown. Best-effort. */
42
+ release(repositoryId: string, worktreeRoot: string): Promise<void>;
43
+ /**
44
+ * Active leases for a repository — expired (>15 min stale) or dead-PID
45
+ * entries are excluded, not just filtered at read time, so callers never
46
+ * see a worktree that's actually gone.
47
+ */
48
+ listActive(repositoryId: string): LeaseRecord[];
49
+ /** True when the given worktree currently holds a live (non-expired) lease. */
50
+ isLeaseActive(repositoryId: string, worktreeRoot: string): boolean;
51
+ }
52
+ export declare function getWorkspaceLeaseRegistry(): WorkspaceLeaseRegistry;
53
+ /** Test hook: reset the singleton (e.g. after changing RUFLO_AI_BUDGET_DIR). */
54
+ export declare function resetWorkspaceLeaseRegistryForTests(): void;
55
+ //# sourceMappingURL=workspace-lease.d.ts.map
@@ -0,0 +1,191 @@
1
+ /**
2
+ * #2661 root-fix — worktree leases.
3
+ *
4
+ * Registers which worktrees of a repository are currently "alive" (have a
5
+ * running daemon actively heartbeating), independent of whether that
6
+ * worktree's daemon is the elected repository supervisor (see
7
+ * repo-supervisor.ts). A lease expires after 15 minutes without a heartbeat
8
+ * — a removed worktree, or a daemon that crashed without a graceful
9
+ * shutdown, becomes ineligible within one expiry window instead of lingering
10
+ * forever in the registry.
11
+ *
12
+ * The registry lives under the user's home directory (not the workspace) so
13
+ * it is visible to every worktree's daemon, keyed by repositoryId:
14
+ *
15
+ * ~/.claude-flow/leases/<repositoryId>.json
16
+ *
17
+ * This is deliberately a thin, single-purpose registry — repo-supervisor.ts
18
+ * is the piece that actually elects one process to own the recurring AI
19
+ * worker schedule; leases only answer "which worktrees are currently live"
20
+ * for status reporting and future supervisor-dispatched work.
21
+ */
22
+ import * as fs from 'fs';
23
+ import { join } from 'path';
24
+ import { homedir } from 'os';
25
+ import { createHash } from 'crypto';
26
+ export const LEASE_TTL_MS = 15 * 60 * 1000; // 15 minutes — issue #2661 spec
27
+ const LOCK_STALE_MS = 10_000;
28
+ function delay(ms) {
29
+ return new Promise((r) => setTimeout(r, ms));
30
+ }
31
+ function isProcessAlive(pid) {
32
+ try {
33
+ process.kill(pid, 0);
34
+ return true;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ /** Invariant 9 (#2661): registry files must never be symlinks. */
41
+ function assertNotSymlink(path) {
42
+ try {
43
+ const st = fs.lstatSync(path);
44
+ if (st.isSymbolicLink()) {
45
+ throw new Error(`Workspace lease file is a symlink (refusing): ${path}`);
46
+ }
47
+ }
48
+ catch (e) {
49
+ if (e.code === 'ENOENT')
50
+ return;
51
+ throw e;
52
+ }
53
+ }
54
+ function leaseKey(worktreeRoot) {
55
+ return createHash('sha256').update(worktreeRoot).digest('hex').slice(0, 16);
56
+ }
57
+ export class WorkspaceLeaseRegistry {
58
+ dir;
59
+ constructor(options) {
60
+ this.dir = options?.baseDir
61
+ ?? process.env.RUFLO_AI_BUDGET_DIR // shares the same override as global-ai-budget for test isolation
62
+ ?? join(homedir(), '.claude-flow');
63
+ }
64
+ fileFor(repositoryId) {
65
+ return join(this.dir, 'leases', `${repositoryId}.json`);
66
+ }
67
+ ensureDir(repositoryId) {
68
+ const dir = join(this.dir, 'leases');
69
+ if (!fs.existsSync(dir))
70
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
71
+ void repositoryId;
72
+ }
73
+ async withLock(repositoryId, fn) {
74
+ this.ensureDir(repositoryId);
75
+ const lockFile = `${this.fileFor(repositoryId)}.lock`;
76
+ const deadline = Date.now() + 2000;
77
+ for (;;) {
78
+ try {
79
+ const fd = fs.openSync(lockFile, fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_WRONLY, 0o600);
80
+ fs.writeSync(fd, String(process.pid));
81
+ fs.closeSync(fd);
82
+ try {
83
+ return fn();
84
+ }
85
+ finally {
86
+ try {
87
+ fs.unlinkSync(lockFile);
88
+ }
89
+ catch { /* already gone */ }
90
+ }
91
+ }
92
+ catch (e) {
93
+ if (e.code !== 'EEXIST')
94
+ throw e;
95
+ try {
96
+ const st = fs.lstatSync(lockFile);
97
+ if (Date.now() - st.mtimeMs > LOCK_STALE_MS) {
98
+ fs.unlinkSync(lockFile);
99
+ continue;
100
+ }
101
+ }
102
+ catch { /* raced — retry */ }
103
+ if (Date.now() > deadline)
104
+ throw new Error('timed out acquiring workspace-lease lock');
105
+ await delay(25);
106
+ }
107
+ }
108
+ }
109
+ readFile(repositoryId) {
110
+ const file = this.fileFor(repositoryId);
111
+ assertNotSymlink(file);
112
+ let parsed = { version: 1, leases: {} };
113
+ if (fs.existsSync(file)) {
114
+ try {
115
+ const raw = JSON.parse(fs.readFileSync(file, 'utf-8'));
116
+ if (raw && typeof raw === 'object' && raw.leases && typeof raw.leases === 'object') {
117
+ parsed = { version: 1, leases: raw.leases };
118
+ }
119
+ }
120
+ catch { /* corrupt — start fresh */ }
121
+ }
122
+ return parsed;
123
+ }
124
+ writeFile(repositoryId, data) {
125
+ const file = this.fileFor(repositoryId);
126
+ assertNotSymlink(file);
127
+ const tmp = `${file}.tmp.${process.pid}`;
128
+ fs.writeFileSync(tmp, JSON.stringify(data), { mode: 0o600 });
129
+ fs.renameSync(tmp, file);
130
+ }
131
+ /** Register or renew this process's lease on a worktree. Best-effort. */
132
+ async heartbeat(repositoryId, worktreeRoot) {
133
+ try {
134
+ await this.withLock(repositoryId, () => {
135
+ const data = this.readFile(repositoryId);
136
+ const now = Date.now();
137
+ const key = leaseKey(worktreeRoot);
138
+ const existing = data.leases[key];
139
+ data.leases[key] = {
140
+ worktreeRoot,
141
+ pid: process.pid,
142
+ registeredAt: existing?.registeredAt ?? now,
143
+ lastHeartbeat: now,
144
+ };
145
+ this.writeFile(repositoryId, data);
146
+ });
147
+ }
148
+ catch { /* best-effort — a missed heartbeat just expires the lease early */ }
149
+ }
150
+ /** Release this worktree's lease on graceful shutdown. Best-effort. */
151
+ async release(repositoryId, worktreeRoot) {
152
+ try {
153
+ await this.withLock(repositoryId, () => {
154
+ const data = this.readFile(repositoryId);
155
+ delete data.leases[leaseKey(worktreeRoot)];
156
+ this.writeFile(repositoryId, data);
157
+ });
158
+ }
159
+ catch { /* best-effort */ }
160
+ }
161
+ /**
162
+ * Active leases for a repository — expired (>15 min stale) or dead-PID
163
+ * entries are excluded, not just filtered at read time, so callers never
164
+ * see a worktree that's actually gone.
165
+ */
166
+ listActive(repositoryId) {
167
+ try {
168
+ const data = this.readFile(repositoryId);
169
+ const now = Date.now();
170
+ return Object.values(data.leases).filter((l) => now - l.lastHeartbeat < LEASE_TTL_MS && isProcessAlive(l.pid));
171
+ }
172
+ catch {
173
+ return [];
174
+ }
175
+ }
176
+ /** True when the given worktree currently holds a live (non-expired) lease. */
177
+ isLeaseActive(repositoryId, worktreeRoot) {
178
+ return this.listActive(repositoryId).some((l) => l.worktreeRoot === worktreeRoot);
179
+ }
180
+ }
181
+ let registryInstance = null;
182
+ export function getWorkspaceLeaseRegistry() {
183
+ if (!registryInstance)
184
+ registryInstance = new WorkspaceLeaseRegistry();
185
+ return registryInstance;
186
+ }
187
+ /** Test hook: reset the singleton (e.g. after changing RUFLO_AI_BUDGET_DIR). */
188
+ export function resetWorkspaceLeaseRegistryForTests() {
189
+ registryInstance = null;
190
+ }
191
+ //# sourceMappingURL=workspace-lease.js.map
@@ -0,0 +1,53 @@
1
+ /**
2
+ * V3 CLI Smart Error Suggestions
3
+ * Levenshtein distance and command suggestions
4
+ *
5
+ * Created with ruv.io
6
+ */
7
+ /**
8
+ * Calculate Levenshtein distance between two strings
9
+ */
10
+ export declare function levenshteinDistance(a: string, b: string): number;
11
+ /**
12
+ * Calculate similarity score (0-1) between two strings
13
+ */
14
+ export declare function similarityScore(a: string, b: string): number;
15
+ /**
16
+ * Find similar strings from a list
17
+ */
18
+ export declare function findSimilar(input: string, candidates: string[], options?: {
19
+ maxSuggestions?: number;
20
+ minSimilarity?: number;
21
+ maxDistance?: number;
22
+ }): string[];
23
+ /**
24
+ * Format suggestion message for CLI errors
25
+ */
26
+ export declare function formatSuggestion(invalidInput: string, suggestions: string[], context?: 'command' | 'subcommand' | 'option' | 'value'): string;
27
+ /**
28
+ * Common typos and their corrections
29
+ */
30
+ export declare const COMMON_TYPOS: Record<string, string>;
31
+ /**
32
+ * Get corrected command if it's a common typo
33
+ */
34
+ export declare function getTypoCorrection(input: string): string | undefined;
35
+ /**
36
+ * Smart command suggestion for unknown commands
37
+ */
38
+ export declare function suggestCommand(unknownCommand: string, availableCommands: string[]): {
39
+ correction?: string;
40
+ suggestions: string[];
41
+ message: string;
42
+ };
43
+ declare const _default: {
44
+ levenshteinDistance: typeof levenshteinDistance;
45
+ similarityScore: typeof similarityScore;
46
+ findSimilar: typeof findSimilar;
47
+ formatSuggestion: typeof formatSuggestion;
48
+ suggestCommand: typeof suggestCommand;
49
+ getTypoCorrection: typeof getTypoCorrection;
50
+ COMMON_TYPOS: Record<string, string>;
51
+ };
52
+ export default _default;
53
+ //# sourceMappingURL=suggest.d.ts.map
@@ -0,0 +1,200 @@
1
+ /**
2
+ * V3 CLI Smart Error Suggestions
3
+ * Levenshtein distance and command suggestions
4
+ *
5
+ * Created with ruv.io
6
+ */
7
+ /**
8
+ * Calculate Levenshtein distance between two strings
9
+ */
10
+ export function levenshteinDistance(a, b) {
11
+ const m = a.length;
12
+ const n = b.length;
13
+ // Early termination for empty strings
14
+ if (m === 0)
15
+ return n;
16
+ if (n === 0)
17
+ return m;
18
+ // Create distance matrix
19
+ const d = Array(m + 1).fill(null).map(() => Array(n + 1).fill(0));
20
+ // Initialize first column
21
+ for (let i = 0; i <= m; i++) {
22
+ d[i][0] = i;
23
+ }
24
+ // Initialize first row
25
+ for (let j = 0; j <= n; j++) {
26
+ d[0][j] = j;
27
+ }
28
+ // Fill in the rest of the matrix
29
+ for (let j = 1; j <= n; j++) {
30
+ for (let i = 1; i <= m; i++) {
31
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
32
+ d[i][j] = Math.min(d[i - 1][j] + 1, // deletion
33
+ d[i][j - 1] + 1, // insertion
34
+ d[i - 1][j - 1] + cost // substitution
35
+ );
36
+ }
37
+ }
38
+ return d[m][n];
39
+ }
40
+ /**
41
+ * Calculate similarity score (0-1) between two strings
42
+ */
43
+ export function similarityScore(a, b) {
44
+ const maxLen = Math.max(a.length, b.length);
45
+ if (maxLen === 0)
46
+ return 1;
47
+ const distance = levenshteinDistance(a.toLowerCase(), b.toLowerCase());
48
+ return 1 - distance / maxLen;
49
+ }
50
+ /**
51
+ * Find similar strings from a list
52
+ */
53
+ export function findSimilar(input, candidates, options = {}) {
54
+ const { maxSuggestions = 3, minSimilarity = 0.4, maxDistance = 3 } = options;
55
+ const inputLower = input.toLowerCase();
56
+ // Score all candidates
57
+ const scored = candidates
58
+ .map(candidate => ({
59
+ candidate,
60
+ distance: levenshteinDistance(inputLower, candidate.toLowerCase()),
61
+ similarity: similarityScore(inputLower, candidate),
62
+ // Boost prefix matches
63
+ prefixBoost: candidate.toLowerCase().startsWith(inputLower) ? 0.3 : 0
64
+ }))
65
+ .filter(s => s.distance <= maxDistance || s.similarity >= minSimilarity)
66
+ .map(s => ({
67
+ ...s,
68
+ score: s.similarity + s.prefixBoost
69
+ }))
70
+ .sort((a, b) => b.score - a.score)
71
+ .slice(0, maxSuggestions);
72
+ return scored.map(s => s.candidate);
73
+ }
74
+ /**
75
+ * Format suggestion message for CLI errors
76
+ */
77
+ export function formatSuggestion(invalidInput, suggestions, context = 'command') {
78
+ if (suggestions.length === 0) {
79
+ return '';
80
+ }
81
+ const contextMap = {
82
+ command: 'Did you mean',
83
+ subcommand: 'Available subcommands',
84
+ option: 'Did you mean',
85
+ value: 'Valid values'
86
+ };
87
+ const prefix = contextMap[context];
88
+ if (suggestions.length === 1) {
89
+ return `\n ${prefix}: ${suggestions[0]}`;
90
+ }
91
+ return `\n ${prefix}:\n${suggestions.map(s => ` - ${s}`).join('\n')}`;
92
+ }
93
+ /**
94
+ * Common typos and their corrections
95
+ */
96
+ export const COMMON_TYPOS = {
97
+ 'init': 'init',
98
+ 'initi': 'init',
99
+ 'inizialize': 'init',
100
+ 'staus': 'status',
101
+ 'stauts': 'status',
102
+ 'stats': 'stats',
103
+ 'stat': 'status',
104
+ 'swarrm': 'swarm',
105
+ 'swarn': 'swarm',
106
+ 'agnet': 'agent',
107
+ 'agen': 'agent',
108
+ 'memroy': 'memory',
109
+ 'mem': 'memory',
110
+ 'memmory': 'memory',
111
+ 'confg': 'config',
112
+ 'conf': 'config',
113
+ 'configu': 'config',
114
+ 'hook': 'hooks',
115
+ 'hoks': 'hooks',
116
+ 'hive': 'hive-mind',
117
+ 'hivemind': 'hive-mind',
118
+ 'hive_mind': 'hive-mind',
119
+ 'neurl': 'neural',
120
+ 'nueral': 'neural',
121
+ 'securty': 'security',
122
+ 'sec': 'security',
123
+ 'perf': 'performance',
124
+ 'performace': 'performance',
125
+ 'provider': 'providers',
126
+ 'plugin': 'plugins',
127
+ 'dep': 'deployment',
128
+ 'depoly': 'deployment',
129
+ 'deploy': 'deployment',
130
+ 'claim': 'claims',
131
+ 'embed': 'embeddings',
132
+ 'embeding': 'embeddings',
133
+ 'daemon': 'daemon',
134
+ 'deamon': 'daemon',
135
+ 'doc': 'doctor',
136
+ 'docter': 'doctor',
137
+ 'complete': 'completions',
138
+ 'completion': 'completions',
139
+ 'comp': 'completions',
140
+ 'task': 'task',
141
+ 'taks': 'task',
142
+ 'sessio': 'session',
143
+ 'sess': 'session',
144
+ 'sesssion': 'session',
145
+ 'workflow': 'workflow',
146
+ 'wf': 'workflow',
147
+ 'wokflow': 'workflow'
148
+ };
149
+ /**
150
+ * Get corrected command if it's a common typo
151
+ */
152
+ export function getTypoCorrection(input) {
153
+ return COMMON_TYPOS[input.toLowerCase()];
154
+ }
155
+ /**
156
+ * Smart command suggestion for unknown commands
157
+ */
158
+ export function suggestCommand(unknownCommand, availableCommands) {
159
+ // Check for common typo first
160
+ const correction = getTypoCorrection(unknownCommand);
161
+ if (correction && availableCommands.includes(correction)) {
162
+ return {
163
+ correction,
164
+ suggestions: [correction],
165
+ message: `Did you mean "${correction}"?`
166
+ };
167
+ }
168
+ // Find similar commands
169
+ const suggestions = findSimilar(unknownCommand, availableCommands, {
170
+ maxSuggestions: 3,
171
+ minSimilarity: 0.3,
172
+ maxDistance: 4
173
+ });
174
+ if (suggestions.length === 0) {
175
+ return {
176
+ suggestions: [],
177
+ message: 'Run "claude-flow --help" to see available commands.'
178
+ };
179
+ }
180
+ if (suggestions.length === 1) {
181
+ return {
182
+ suggestions,
183
+ message: `Did you mean "${suggestions[0]}"?`
184
+ };
185
+ }
186
+ return {
187
+ suggestions,
188
+ message: `Did you mean one of these?\n${suggestions.map(s => ` - ${s}`).join('\n')}`
189
+ };
190
+ }
191
+ export default {
192
+ levenshteinDistance,
193
+ similarityScore,
194
+ findSimilar,
195
+ formatSuggestion,
196
+ suggestCommand,
197
+ getTypoCorrection,
198
+ COMMON_TYPOS
199
+ };
200
+ //# sourceMappingURL=suggest.js.map
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Anonymization Pipeline
3
+ * PII detection and redaction for pattern export
4
+ */
5
+ import type { CFPFormat, AnonymizationLevel, PIIDetectionResult } from '../types.js';
6
+ /**
7
+ * Detect PII in a string
8
+ */
9
+ export declare function detectPII(content: string): PIIDetectionResult;
10
+ /**
11
+ * Redact PII from a string
12
+ */
13
+ export declare function redactPII(content: string): string;
14
+ /**
15
+ * Apply anonymization to CFP document
16
+ */
17
+ export declare function anonymizeCFP(cfp: CFPFormat, level: AnonymizationLevel): {
18
+ cfp: CFPFormat;
19
+ transforms: string[];
20
+ };
21
+ /**
22
+ * Scan CFP for PII without modification
23
+ */
24
+ export declare function scanCFPForPII(cfp: CFPFormat): PIIDetectionResult;
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Anonymization Pipeline
3
+ * PII detection and redaction for pattern export
4
+ */
5
+ import * as crypto from 'crypto';
6
+ /**
7
+ * PII detection patterns
8
+ */
9
+ const PII_PATTERNS = {
10
+ email: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,
11
+ phone: /\b(\+?\d{1,3}[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g,
12
+ ipv4: /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/g,
13
+ ipv6: /\b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\b/g,
14
+ apiKey: /\b(sk-|pk-|api[_-]?key[_-]?)[a-zA-Z0-9]{20,}\b/gi,
15
+ jwt: /\beyJ[a-zA-Z0-9_-]*\.eyJ[a-zA-Z0-9_-]*\.[a-zA-Z0-9_-]*\b/g,
16
+ homePath: /\/(Users|home|Documents)\/[a-zA-Z0-9_.-]+/g,
17
+ windowsPath: /[A-Z]:\\Users\\[a-zA-Z0-9_.-]+/g,
18
+ };
19
+ /**
20
+ * Redaction replacements
21
+ */
22
+ const REDACTIONS = {
23
+ email: (match) => `user_${hash(match).slice(0, 8)}@example.com`,
24
+ phone: '[REDACTED_PHONE]',
25
+ ipv4: '0.0.0.0',
26
+ ipv6: '::1',
27
+ apiKey: '[REDACTED_API_KEY]',
28
+ jwt: '[REDACTED_JWT]',
29
+ homePath: '/user/anonymous',
30
+ windowsPath: 'C:\\Users\\anonymous',
31
+ };
32
+ /**
33
+ * Hash a string for consistent pseudonymization
34
+ */
35
+ function hash(input) {
36
+ return crypto.createHash('sha256').update(input).digest('hex');
37
+ }
38
+ /**
39
+ * Detect PII in a string
40
+ */
41
+ export function detectPII(content) {
42
+ const result = {
43
+ found: false,
44
+ count: 0,
45
+ types: {},
46
+ locations: [],
47
+ };
48
+ for (const [type, pattern] of Object.entries(PII_PATTERNS)) {
49
+ const matches = content.match(pattern);
50
+ if (matches) {
51
+ result.found = true;
52
+ result.count += matches.length;
53
+ result.types[type] = matches.length;
54
+ for (const match of matches.slice(0, 5)) { // Limit to first 5 samples
55
+ result.locations.push({
56
+ type,
57
+ path: 'content',
58
+ sample: match.slice(0, 20) + (match.length > 20 ? '...' : ''),
59
+ severity: getSeverity(type),
60
+ });
61
+ }
62
+ }
63
+ }
64
+ return result;
65
+ }
66
+ /**
67
+ * Get severity for PII type
68
+ */
69
+ function getSeverity(type) {
70
+ switch (type) {
71
+ case 'apiKey':
72
+ case 'jwt':
73
+ return 'critical';
74
+ case 'email':
75
+ case 'phone':
76
+ return 'high';
77
+ case 'ipv4':
78
+ case 'ipv6':
79
+ return 'medium';
80
+ default:
81
+ return 'low';
82
+ }
83
+ }
84
+ /**
85
+ * Redact PII from a string
86
+ */
87
+ export function redactPII(content) {
88
+ let result = content;
89
+ for (const [type, pattern] of Object.entries(PII_PATTERNS)) {
90
+ const replacement = REDACTIONS[type];
91
+ if (typeof replacement === 'function') {
92
+ result = result.replace(pattern, replacement);
93
+ }
94
+ else {
95
+ result = result.replace(pattern, replacement);
96
+ }
97
+ }
98
+ return result;
99
+ }
100
+ /**
101
+ * Apply anonymization to CFP document
102
+ */
103
+ export function anonymizeCFP(cfp, level) {
104
+ const transforms = [];
105
+ const anonymized = JSON.parse(JSON.stringify(cfp));
106
+ // Level: Minimal
107
+ if (['minimal', 'standard', 'strict', 'paranoid'].includes(level)) {
108
+ // Redact author display name
109
+ if (anonymized.metadata.author?.displayName) {
110
+ anonymized.metadata.author.displayName = undefined;
111
+ transforms.push('author-name-removed');
112
+ }
113
+ }
114
+ // Level: Standard
115
+ if (['standard', 'strict', 'paranoid'].includes(level)) {
116
+ // Redact PII from all string fields
117
+ const jsonStr = JSON.stringify(anonymized.patterns);
118
+ const redacted = redactPII(jsonStr);
119
+ anonymized.patterns = JSON.parse(redacted);
120
+ transforms.push('pii-redacted');
121
+ // Generalize timestamps
122
+ anonymized.anonymization.timestampsGeneralized = true;
123
+ transforms.push('timestamps-generalized');
124
+ }
125
+ // Level: Strict
126
+ if (['strict', 'paranoid'].includes(level)) {
127
+ // Hash all IDs
128
+ for (const pattern of anonymized.patterns.routing) {
129
+ pattern.id = `pattern_${hash(pattern.id).slice(0, 12)}`;
130
+ }
131
+ transforms.push('ids-hashed');
132
+ // Remove context details
133
+ for (const pattern of anonymized.patterns.routing) {
134
+ pattern.context = undefined;
135
+ }
136
+ transforms.push('context-removed');
137
+ anonymized.anonymization.pathsStripped = true;
138
+ transforms.push('paths-stripped');
139
+ }
140
+ // Level: Paranoid
141
+ if (level === 'paranoid') {
142
+ // Add noise to numeric values (differential privacy)
143
+ for (const pattern of anonymized.patterns.routing) {
144
+ pattern.usageCount = Math.round(pattern.usageCount * (0.9 + Math.random() * 0.2));
145
+ pattern.successRate = Math.min(1, Math.max(0, pattern.successRate + (Math.random() - 0.5) * 0.1));
146
+ }
147
+ transforms.push('differential-privacy-noise');
148
+ // Remove all trajectory learnings
149
+ for (const traj of anonymized.patterns.trajectory) {
150
+ traj.learnings = [];
151
+ }
152
+ transforms.push('learnings-removed');
153
+ }
154
+ // Update anonymization record
155
+ anonymized.anonymization.level = level;
156
+ anonymized.anonymization.appliedTransforms = transforms;
157
+ anonymized.anonymization.piiRedacted = level !== 'minimal';
158
+ // Recalculate checksum
159
+ const content = JSON.stringify({
160
+ magic: anonymized.magic,
161
+ version: anonymized.version,
162
+ metadata: anonymized.metadata,
163
+ patterns: anonymized.patterns,
164
+ });
165
+ anonymized.anonymization.checksum = hash(content);
166
+ return { cfp: anonymized, transforms };
167
+ }
168
+ /**
169
+ * Scan CFP for PII without modification
170
+ */
171
+ export function scanCFPForPII(cfp) {
172
+ const content = JSON.stringify(cfp.patterns);
173
+ return detectPII(content);
174
+ }
175
+ //# sourceMappingURL=index.js.map