@claude-flow/cli 3.32.2 → 3.32.3
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.
- package/.claude/helpers/helpers.manifest.json +3 -3
- package/.claude/helpers/statusline.cjs +38 -38
- package/catalog-manifest.json +2 -2
- package/package.json +2 -2
- package/plugins/ruflo-metaharness/scripts/smoke.sh +11 -11
- package/dist/src/agenticow/speculative-exploration.d.ts +0 -148
- package/dist/src/agenticow/speculative-exploration.js +0 -218
- package/dist/src/appliance/gguf-engine.d.ts +0 -91
- package/dist/src/appliance/gguf-engine.js +0 -425
- package/dist/src/appliance/ruvllm-bridge.d.ts +0 -102
- package/dist/src/appliance/ruvllm-bridge.js +0 -292
- package/dist/src/appliance/rvfa-builder.d.ts +0 -44
- package/dist/src/appliance/rvfa-builder.js +0 -329
- package/dist/src/appliance/rvfa-distribution.d.ts +0 -97
- package/dist/src/appliance/rvfa-distribution.js +0 -370
- package/dist/src/appliance/rvfa-format.d.ts +0 -111
- package/dist/src/appliance/rvfa-format.js +0 -393
- package/dist/src/appliance/rvfa-runner.d.ts +0 -69
- package/dist/src/appliance/rvfa-runner.js +0 -237
- package/dist/src/appliance/rvfa-signing.d.ts +0 -123
- package/dist/src/appliance/rvfa-signing.js +0 -347
- package/dist/src/autopilot-state.d.ts +0 -77
- package/dist/src/autopilot-state.js +0 -271
- package/dist/src/benchmarks/gaia-agent-planning.smoke.d.ts +0 -18
- package/dist/src/benchmarks/gaia-agent-planning.smoke.js +0 -253
- package/dist/src/benchmarks/gaia-agent.d.ts +0 -198
- package/dist/src/benchmarks/gaia-agent.js +0 -651
- package/dist/src/benchmarks/gaia-causal-memory.d.ts +0 -133
- package/dist/src/benchmarks/gaia-causal-memory.js +0 -281
- package/dist/src/benchmarks/gaia-causal-memory.smoke.d.ts +0 -22
- package/dist/src/benchmarks/gaia-causal-memory.smoke.js +0 -300
- package/dist/src/benchmarks/gaia-convergence.d.ts +0 -138
- package/dist/src/benchmarks/gaia-convergence.js +0 -260
- package/dist/src/benchmarks/gaia-convergence.smoke.d.ts +0 -19
- package/dist/src/benchmarks/gaia-convergence.smoke.js +0 -246
- package/dist/src/benchmarks/gaia-critic.d.ts +0 -123
- package/dist/src/benchmarks/gaia-critic.js +0 -312
- package/dist/src/benchmarks/gaia-critic.smoke.d.ts +0 -21
- package/dist/src/benchmarks/gaia-critic.smoke.js +0 -327
- package/dist/src/benchmarks/gaia-decomposer.d.ts +0 -125
- package/dist/src/benchmarks/gaia-decomposer.js +0 -350
- package/dist/src/benchmarks/gaia-decomposer.smoke.d.ts +0 -21
- package/dist/src/benchmarks/gaia-decomposer.smoke.js +0 -228
- package/dist/src/benchmarks/gaia-e2e-smoke.d.ts +0 -27
- package/dist/src/benchmarks/gaia-e2e-smoke.js +0 -136
- package/dist/src/benchmarks/gaia-extract.smoke.d.ts +0 -45
- package/dist/src/benchmarks/gaia-extract.smoke.js +0 -242
- package/dist/src/benchmarks/gaia-hardness/features.d.ts +0 -46
- package/dist/src/benchmarks/gaia-hardness/features.js +0 -170
- package/dist/src/benchmarks/gaia-hardness/predictor.d.ts +0 -105
- package/dist/src/benchmarks/gaia-hardness/predictor.js +0 -260
- package/dist/src/benchmarks/gaia-hardness/predictor.smoke.d.ts +0 -20
- package/dist/src/benchmarks/gaia-hardness/predictor.smoke.js +0 -235
- package/dist/src/benchmarks/gaia-hardness/train-data-loader.d.ts +0 -51
- package/dist/src/benchmarks/gaia-hardness/train-data-loader.js +0 -179
- package/dist/src/benchmarks/gaia-judge.d.ts +0 -88
- package/dist/src/benchmarks/gaia-judge.js +0 -437
- package/dist/src/benchmarks/gaia-loader.d.ts +0 -87
- package/dist/src/benchmarks/gaia-loader.js +0 -326
- package/dist/src/benchmarks/gaia-tools/file_read.d.ts +0 -35
- package/dist/src/benchmarks/gaia-tools/file_read.js +0 -403
- package/dist/src/benchmarks/gaia-tools/grounded_query.d.ts +0 -126
- package/dist/src/benchmarks/gaia-tools/grounded_query.js +0 -225
- package/dist/src/benchmarks/gaia-tools/index.d.ts +0 -32
- package/dist/src/benchmarks/gaia-tools/index.js +0 -36
- package/dist/src/benchmarks/gaia-tools/types.d.ts +0 -62
- package/dist/src/benchmarks/gaia-tools/types.js +0 -12
- package/dist/src/benchmarks/gaia-tools/web_search.d.ts +0 -30
- package/dist/src/benchmarks/gaia-tools/web_search.js +0 -210
- package/dist/src/benchmarks/gaia-voting.d.ts +0 -88
- package/dist/src/benchmarks/gaia-voting.js +0 -297
- package/dist/src/benchmarks/gaia-voting.smoke.d.ts +0 -20
- package/dist/src/benchmarks/gaia-voting.smoke.js +0 -332
- package/dist/src/benchmarks/pretrain/index.d.ts +0 -58
- package/dist/src/benchmarks/pretrain/index.js +0 -404
- package/dist/src/business-pods/bbs-budget-tracker.d.ts +0 -139
- package/dist/src/business-pods/bbs-budget-tracker.js +0 -358
- package/dist/src/business-pods/domain-affinity-policy.d.ts +0 -47
- package/dist/src/business-pods/domain-affinity-policy.js +0 -65
- package/dist/src/business-pods/pod-schema.d.ts +0 -96
- package/dist/src/business-pods/pod-schema.js +0 -225
- package/dist/src/commands/advisor.d.ts +0 -15
- package/dist/src/commands/advisor.js +0 -94
- package/dist/src/commands/agent-wasm.d.ts +0 -14
- package/dist/src/commands/agent-wasm.js +0 -333
- package/dist/src/commands/agent.d.ts +0 -8
- package/dist/src/commands/agent.js +0 -927
- package/dist/src/commands/analyze.d.ts +0 -19
- package/dist/src/commands/analyze.js +0 -2047
- package/dist/src/commands/announcements.d.ts +0 -17
- package/dist/src/commands/announcements.js +0 -0
- package/dist/src/commands/appliance-advanced.d.ts +0 -9
- package/dist/src/commands/appliance-advanced.js +0 -215
- package/dist/src/commands/appliance.d.ts +0 -8
- package/dist/src/commands/appliance.js +0 -404
- package/dist/src/commands/autopilot.d.ts +0 -15
- package/dist/src/commands/autopilot.js +0 -407
- package/dist/src/commands/benchmark.d.ts +0 -10
- package/dist/src/commands/benchmark.js +0 -460
- package/dist/src/commands/claims.d.ts +0 -10
- package/dist/src/commands/claims.js +0 -620
- package/dist/src/commands/cleanup.d.ts +0 -13
- package/dist/src/commands/cleanup.js +0 -250
- package/dist/src/commands/completions.d.ts +0 -10
- package/dist/src/commands/completions.js +0 -539
- package/dist/src/commands/config.d.ts +0 -8
- package/dist/src/commands/config.js +0 -428
- package/dist/src/commands/daemon.d.ts +0 -59
- package/dist/src/commands/daemon.js +0 -1733
- package/dist/src/commands/deployment.d.ts +0 -10
- package/dist/src/commands/deployment.js +0 -672
- package/dist/src/commands/doctor.d.ts +0 -10
- package/dist/src/commands/doctor.js +0 -1695
- package/dist/src/commands/eject.d.ts +0 -33
- package/dist/src/commands/eject.js +0 -195
- package/dist/src/commands/embeddings.d.ts +0 -18
- package/dist/src/commands/embeddings.js +0 -1623
- package/dist/src/commands/funnel.d.ts +0 -18
- package/dist/src/commands/funnel.js +0 -302
- package/dist/src/commands/gaia-bench.d.ts +0 -40
- package/dist/src/commands/gaia-bench.js +0 -597
- package/dist/src/commands/guidance.d.ts +0 -8
- package/dist/src/commands/guidance.js +0 -556
- package/dist/src/commands/hive-mind.d.ts +0 -11
- package/dist/src/commands/hive-mind.js +0 -1319
- package/dist/src/commands/hooks.d.ts +0 -8
- package/dist/src/commands/hooks.js +0 -4606
- package/dist/src/commands/index.d.ts +0 -118
- package/dist/src/commands/index.js +0 -364
- package/dist/src/commands/init.d.ts +0 -13
- package/dist/src/commands/init.js +0 -1297
- package/dist/src/commands/issues.d.ts +0 -21
- package/dist/src/commands/issues.js +0 -567
- package/dist/src/commands/mcp.d.ts +0 -11
- package/dist/src/commands/mcp.js +0 -732
- package/dist/src/commands/memory-backup.d.ts +0 -11
- package/dist/src/commands/memory-backup.js +0 -46
- package/dist/src/commands/memory-distill.d.ts +0 -27
- package/dist/src/commands/memory-distill.js +0 -374
- package/dist/src/commands/memory.d.ts +0 -8
- package/dist/src/commands/memory.js +0 -1596
- package/dist/src/commands/metaharness.d.ts +0 -39
- package/dist/src/commands/metaharness.js +0 -215
- package/dist/src/commands/migrate.d.ts +0 -8
- package/dist/src/commands/migrate.js +0 -742
- package/dist/src/commands/neural.d.ts +0 -10
- package/dist/src/commands/neural.js +0 -4331
- package/dist/src/commands/performance.d.ts +0 -10
- package/dist/src/commands/performance.js +0 -583
- package/dist/src/commands/plugins.d.ts +0 -11
- package/dist/src/commands/plugins.js +0 -826
- package/dist/src/commands/process.d.ts +0 -10
- package/dist/src/commands/process.js +0 -694
- package/dist/src/commands/progress.d.ts +0 -11
- package/dist/src/commands/progress.js +0 -259
- package/dist/src/commands/providers.d.ts +0 -10
- package/dist/src/commands/providers.js +0 -502
- package/dist/src/commands/proxy.d.ts +0 -21
- package/dist/src/commands/proxy.js +0 -310
- package/dist/src/commands/route.d.ts +0 -16
- package/dist/src/commands/route.js +0 -822
- package/dist/src/commands/ruvector/backup.d.ts +0 -11
- package/dist/src/commands/ruvector/backup.js +0 -747
- package/dist/src/commands/ruvector/benchmark.d.ts +0 -11
- package/dist/src/commands/ruvector/benchmark.js +0 -490
- package/dist/src/commands/ruvector/import.d.ts +0 -18
- package/dist/src/commands/ruvector/import.js +0 -373
- package/dist/src/commands/ruvector/index.d.ts +0 -29
- package/dist/src/commands/ruvector/index.js +0 -129
- package/dist/src/commands/ruvector/init.d.ts +0 -11
- package/dist/src/commands/ruvector/init.js +0 -467
- package/dist/src/commands/ruvector/migrate.d.ts +0 -11
- package/dist/src/commands/ruvector/migrate.js +0 -498
- package/dist/src/commands/ruvector/optimize.d.ts +0 -11
- package/dist/src/commands/ruvector/optimize.js +0 -505
- package/dist/src/commands/ruvector/pg-utils.d.ts +0 -14
- package/dist/src/commands/ruvector/pg-utils.js +0 -41
- package/dist/src/commands/ruvector/setup.d.ts +0 -18
- package/dist/src/commands/ruvector/setup.js +0 -765
- package/dist/src/commands/ruvector/status.d.ts +0 -11
- package/dist/src/commands/ruvector/status.js +0 -479
- package/dist/src/commands/security.d.ts +0 -10
- package/dist/src/commands/security.js +0 -1012
- package/dist/src/commands/session.d.ts +0 -8
- package/dist/src/commands/session.js +0 -757
- package/dist/src/commands/settings.d.ts +0 -19
- package/dist/src/commands/settings.js +0 -180
- package/dist/src/commands/spinner.d.ts +0 -16
- package/dist/src/commands/spinner.js +0 -329
- package/dist/src/commands/start.d.ts +0 -8
- package/dist/src/commands/start.js +0 -418
- package/dist/src/commands/status.d.ts +0 -8
- package/dist/src/commands/status.js +0 -608
- package/dist/src/commands/swarm.d.ts +0 -8
- package/dist/src/commands/swarm.js +0 -891
- package/dist/src/commands/task.d.ts +0 -8
- package/dist/src/commands/task.js +0 -675
- package/dist/src/commands/transfer-store.d.ts +0 -13
- package/dist/src/commands/transfer-store.js +0 -428
- package/dist/src/commands/update.d.ts +0 -8
- package/dist/src/commands/update.js +0 -276
- package/dist/src/commands/verify.d.ts +0 -19
- package/dist/src/commands/verify.js +0 -261
- package/dist/src/commands/version.d.ts +0 -42
- package/dist/src/commands/version.js +0 -106
- package/dist/src/commands/workflow.d.ts +0 -8
- package/dist/src/commands/workflow.js +0 -617
- package/dist/src/config/harness-feedback-applier.d.ts +0 -50
- package/dist/src/config/harness-feedback-applier.js +0 -122
- package/dist/src/config/proven-config-refresh.d.ts +0 -39
- package/dist/src/config/proven-config-refresh.js +0 -154
- package/dist/src/config/proven-config-rvfa.d.ts +0 -23
- package/dist/src/config/proven-config-rvfa.js +0 -73
- package/dist/src/config/proven-config.d.ts +0 -86
- package/dist/src/config/proven-config.js +0 -176
- package/dist/src/config-adapter.d.ts +0 -15
- package/dist/src/config-adapter.js +0 -186
- package/dist/src/encryption/vault.d.ts +0 -94
- package/dist/src/encryption/vault.js +0 -172
- package/dist/src/fs-secure.d.ts +0 -86
- package/dist/src/fs-secure.js +0 -133
- package/dist/src/funnel/advisor-tip.d.ts +0 -58
- package/dist/src/funnel/advisor-tip.js +0 -92
- package/dist/src/funnel/attribution.d.ts +0 -37
- package/dist/src/funnel/attribution.js +0 -101
- package/dist/src/funnel/consent.d.ts +0 -22
- package/dist/src/funnel/consent.js +0 -58
- package/dist/src/funnel/credit-errors.d.ts +0 -31
- package/dist/src/funnel/credit-errors.js +0 -88
- package/dist/src/funnel/credit-notifier.d.ts +0 -44
- package/dist/src/funnel/credit-notifier.js +0 -74
- package/dist/src/funnel/disclosure.d.ts +0 -47
- package/dist/src/funnel/disclosure.js +0 -109
- package/dist/src/funnel/enrollment.d.ts +0 -36
- package/dist/src/funnel/enrollment.js +0 -64
- package/dist/src/funnel/environment.d.ts +0 -17
- package/dist/src/funnel/environment.js +0 -39
- package/dist/src/funnel/event-transport.d.ts +0 -51
- package/dist/src/funnel/event-transport.js +0 -199
- package/dist/src/funnel/events.d.ts +0 -42
- package/dist/src/funnel/events.js +0 -150
- package/dist/src/funnel/index.d.ts +0 -21
- package/dist/src/funnel/index.js +0 -21
- package/dist/src/funnel/insights.d.ts +0 -50
- package/dist/src/funnel/insights.js +0 -120
- package/dist/src/funnel/local-signals.d.ts +0 -20
- package/dist/src/funnel/local-signals.js +0 -77
- package/dist/src/funnel/message-transport.d.ts +0 -51
- package/dist/src/funnel/message-transport.js +0 -149
- package/dist/src/funnel/messages.d.ts +0 -55
- package/dist/src/funnel/messages.js +0 -160
- package/dist/src/funnel/payout.d.ts +0 -40
- package/dist/src/funnel/payout.js +0 -60
- package/dist/src/funnel/power-saver-notifier.d.ts +0 -44
- package/dist/src/funnel/power-saver-notifier.js +0 -92
- package/dist/src/funnel/precedence.d.ts +0 -16
- package/dist/src/funnel/precedence.js +0 -85
- package/dist/src/funnel/promo.d.ts +0 -41
- package/dist/src/funnel/promo.js +0 -144
- package/dist/src/funnel/rate-limit-notifier.d.ts +0 -55
- package/dist/src/funnel/rate-limit-notifier.js +0 -102
- package/dist/src/funnel/rotation.d.ts +0 -19
- package/dist/src/funnel/rotation.js +0 -70
- package/dist/src/funnel/state.d.ts +0 -13
- package/dist/src/funnel/state.js +0 -52
- package/dist/src/funnel/toggle-cooldown.d.ts +0 -17
- package/dist/src/funnel/toggle-cooldown.js +0 -32
- package/dist/src/funnel/types.d.ts +0 -98
- package/dist/src/funnel/types.js +0 -26
- package/dist/src/index.d.ts +0 -81
- package/dist/src/index.js +0 -609
- package/dist/src/infrastructure/in-memory-repositories.d.ts +0 -68
- package/dist/src/infrastructure/in-memory-repositories.js +0 -264
- package/dist/src/init/claudemd-generator.d.ts +0 -16
- package/dist/src/init/claudemd-generator.js +0 -368
- package/dist/src/init/executor.d.ts +0 -41
- package/dist/src/init/executor.js +0 -2142
- package/dist/src/init/helper-refresh.d.ts +0 -79
- package/dist/src/init/helper-refresh.js +0 -347
- package/dist/src/init/helper-signing.d.ts +0 -37
- package/dist/src/init/helper-signing.js +0 -67
- package/dist/src/init/helpers-generator.d.ts +0 -87
- package/dist/src/init/helpers-generator.js +0 -1456
- package/dist/src/init/index.d.ts +0 -13
- package/dist/src/init/index.js +0 -15
- package/dist/src/init/mcp-generator.d.ts +0 -26
- package/dist/src/init/mcp-generator.js +0 -126
- package/dist/src/init/memory-package-resolver.d.ts +0 -53
- package/dist/src/init/memory-package-resolver.js +0 -118
- package/dist/src/init/settings-generator.d.ts +0 -14
- package/dist/src/init/settings-generator.js +0 -462
- package/dist/src/init/statusline-generator.d.ts +0 -28
- package/dist/src/init/statusline-generator.js +0 -177
- package/dist/src/init/types.d.ts +0 -331
- package/dist/src/init/types.js +0 -276
- package/dist/src/log-filters.d.ts +0 -46
- package/dist/src/log-filters.js +0 -107
- package/dist/src/mcp-client.d.ts +0 -92
- package/dist/src/mcp-client.js +0 -397
- package/dist/src/mcp-server.d.ts +0 -163
- package/dist/src/mcp-server.js +0 -751
- package/dist/src/mcp-tools/agent-execute-core.d.ts +0 -115
- package/dist/src/mcp-tools/agent-execute-core.js +0 -587
- package/dist/src/mcp-tools/agent-tools.d.ts +0 -9
- package/dist/src/mcp-tools/agent-tools.js +0 -837
- package/dist/src/mcp-tools/agentbbs-tools.d.ts +0 -28
- package/dist/src/mcp-tools/agentbbs-tools.js +0 -394
- package/dist/src/mcp-tools/agentdb-tools.d.ts +0 -35
- package/dist/src/mcp-tools/agentdb-tools.js +0 -1473
- package/dist/src/mcp-tools/agenticow-loader.d.ts +0 -59
- package/dist/src/mcp-tools/agenticow-loader.js +0 -105
- package/dist/src/mcp-tools/agenticow-speculate-tools.d.ts +0 -24
- package/dist/src/mcp-tools/agenticow-speculate-tools.js +0 -209
- package/dist/src/mcp-tools/agenticow-tools.d.ts +0 -36
- package/dist/src/mcp-tools/agenticow-tools.js +0 -360
- package/dist/src/mcp-tools/analyze-tools.d.ts +0 -38
- package/dist/src/mcp-tools/analyze-tools.js +0 -346
- package/dist/src/mcp-tools/auto-install.d.ts +0 -83
- package/dist/src/mcp-tools/auto-install.js +0 -131
- package/dist/src/mcp-tools/autopilot-tools.d.ts +0 -12
- package/dist/src/mcp-tools/autopilot-tools.js +0 -231
- package/dist/src/mcp-tools/browser-intent-tools.d.ts +0 -162
- package/dist/src/mcp-tools/browser-intent-tools.js +0 -548
- package/dist/src/mcp-tools/browser-session-tools.d.ts +0 -27
- package/dist/src/mcp-tools/browser-session-tools.js +0 -398
- package/dist/src/mcp-tools/browser-tools.d.ts +0 -21
- package/dist/src/mcp-tools/browser-tools.js +0 -760
- package/dist/src/mcp-tools/business-pod-tools.d.ts +0 -20
- package/dist/src/mcp-tools/business-pod-tools.js +0 -169
- package/dist/src/mcp-tools/claims-tools.d.ts +0 -12
- package/dist/src/mcp-tools/claims-tools.js +0 -863
- package/dist/src/mcp-tools/config-tools.d.ts +0 -8
- package/dist/src/mcp-tools/config-tools.js +0 -411
- package/dist/src/mcp-tools/coordination-tools.d.ts +0 -13
- package/dist/src/mcp-tools/coordination-tools.js +0 -729
- package/dist/src/mcp-tools/daa-tools.d.ts +0 -13
- package/dist/src/mcp-tools/daa-tools.js +0 -534
- package/dist/src/mcp-tools/embeddings-tools.d.ts +0 -9
- package/dist/src/mcp-tools/embeddings-tools.js +0 -904
- package/dist/src/mcp-tools/github-tools.d.ts +0 -9
- package/dist/src/mcp-tools/github-tools.js +0 -659
- package/dist/src/mcp-tools/guidance-tools.d.ts +0 -15
- package/dist/src/mcp-tools/guidance-tools.js +0 -639
- package/dist/src/mcp-tools/hive-mind-tools.d.ts +0 -8
- package/dist/src/mcp-tools/hive-mind-tools.js +0 -953
- package/dist/src/mcp-tools/hooks-tools.d.ts +0 -65
- package/dist/src/mcp-tools/hooks-tools.js +0 -4836
- package/dist/src/mcp-tools/http-fetch-tools.d.ts +0 -55
- package/dist/src/mcp-tools/http-fetch-tools.js +0 -329
- package/dist/src/mcp-tools/index.d.ts +0 -34
- package/dist/src/mcp-tools/index.js +0 -40
- package/dist/src/mcp-tools/managed-agent-tools.d.ts +0 -22
- package/dist/src/mcp-tools/managed-agent-tools.js +0 -357
- package/dist/src/mcp-tools/memory-tools.d.ts +0 -14
- package/dist/src/mcp-tools/memory-tools.js +0 -1330
- package/dist/src/mcp-tools/metaharness-tools.d.ts +0 -51
- package/dist/src/mcp-tools/metaharness-tools.js +0 -684
- package/dist/src/mcp-tools/neural-tools.d.ts +0 -54
- package/dist/src/mcp-tools/neural-tools.js +0 -1168
- package/dist/src/mcp-tools/performance-tools.d.ts +0 -16
- package/dist/src/mcp-tools/performance-tools.js +0 -675
- package/dist/src/mcp-tools/progress-tools.d.ts +0 -14
- package/dist/src/mcp-tools/progress-tools.js +0 -348
- package/dist/src/mcp-tools/request-tracker.d.ts +0 -17
- package/dist/src/mcp-tools/request-tracker.js +0 -27
- package/dist/src/mcp-tools/ruvllm-tools.d.ts +0 -9
- package/dist/src/mcp-tools/ruvllm-tools.js +0 -355
- package/dist/src/mcp-tools/security-tools.d.ts +0 -18
- package/dist/src/mcp-tools/security-tools.js +0 -556
- package/dist/src/mcp-tools/session-tools.d.ts +0 -8
- package/dist/src/mcp-tools/session-tools.js +0 -517
- package/dist/src/mcp-tools/swarm-tools.d.ts +0 -37
- package/dist/src/mcp-tools/swarm-tools.js +0 -390
- package/dist/src/mcp-tools/system-tools.d.ts +0 -13
- package/dist/src/mcp-tools/system-tools.js +0 -688
- package/dist/src/mcp-tools/task-tools.d.ts +0 -8
- package/dist/src/mcp-tools/task-tools.js +0 -487
- package/dist/src/mcp-tools/terminal-tools.d.ts +0 -8
- package/dist/src/mcp-tools/terminal-tools.js +0 -306
- package/dist/src/mcp-tools/testgen-tools.d.ts +0 -26
- package/dist/src/mcp-tools/testgen-tools.js +0 -168
- package/dist/src/mcp-tools/tool-loop-guardrail.d.ts +0 -31
- package/dist/src/mcp-tools/tool-loop-guardrail.js +0 -71
- package/dist/src/mcp-tools/transfer-tools.d.ts +0 -14
- package/dist/src/mcp-tools/transfer-tools.js +0 -447
- package/dist/src/mcp-tools/types.d.ts +0 -8
- package/dist/src/mcp-tools/types.js +0 -8
- package/dist/src/mcp-tools/validate-input.d.ts +0 -9
- package/dist/src/mcp-tools/validate-input.js +0 -9
- package/dist/src/mcp-tools/wasm-agent-tools.d.ts +0 -13
- package/dist/src/mcp-tools/wasm-agent-tools.js +0 -840
- package/dist/src/mcp-tools/workflow-tools.d.ts +0 -8
- package/dist/src/mcp-tools/workflow-tools.js +0 -884
- package/dist/src/memory/bge-embedder.d.ts +0 -25
- package/dist/src/memory/bge-embedder.js +0 -121
- package/dist/src/memory/cross-encoder-rerank.d.ts +0 -33
- package/dist/src/memory/cross-encoder-rerank.js +0 -123
- package/dist/src/memory/embedding-policy.d.ts +0 -21
- package/dist/src/memory/embedding-policy.js +0 -30
- package/dist/src/memory/embedding-quantization.d.ts +0 -62
- package/dist/src/memory/embedding-quantization.js +0 -156
- package/dist/src/memory/ewc-consolidation.d.ts +0 -305
- package/dist/src/memory/ewc-consolidation.js +0 -611
- package/dist/src/memory/graph-edge-writer.d.ts +0 -95
- package/dist/src/memory/graph-edge-writer.js +0 -217
- package/dist/src/memory/hybrid-retrieval.d.ts +0 -77
- package/dist/src/memory/hybrid-retrieval.js +0 -192
- package/dist/src/memory/intelligence.d.ts +0 -405
- package/dist/src/memory/intelligence.js +0 -1316
- package/dist/src/memory/lucene-bm25.d.ts +0 -19
- package/dist/src/memory/lucene-bm25.js +0 -308
- package/dist/src/memory/memory-bridge.d.ts +0 -537
- package/dist/src/memory/memory-bridge.js +0 -2460
- package/dist/src/memory/memory-initializer.d.ts +0 -556
- package/dist/src/memory/memory-initializer.js +0 -3021
- package/dist/src/memory/neural-package-bridge.d.ts +0 -48
- package/dist/src/memory/neural-package-bridge.js +0 -87
- package/dist/src/memory/rabitq-index.d.ts +0 -60
- package/dist/src/memory/rabitq-index.js +0 -242
- package/dist/src/memory/sona-optimizer.d.ts +0 -267
- package/dist/src/memory/sona-optimizer.js +0 -779
- package/dist/src/memory/structured-distill.d.ts +0 -48
- package/dist/src/memory/structured-distill.js +0 -125
- package/dist/src/output.d.ts +0 -9
- package/dist/src/output.js +0 -9
- package/dist/src/parser.d.ts +0 -89
- package/dist/src/parser.js +0 -516
- package/dist/src/plugins/manager.d.ts +0 -133
- package/dist/src/plugins/manager.js +0 -415
- package/dist/src/plugins/store/discovery.d.ts +0 -99
- package/dist/src/plugins/store/discovery.js +0 -1224
- package/dist/src/plugins/store/index.d.ts +0 -76
- package/dist/src/plugins/store/index.js +0 -141
- package/dist/src/plugins/store/search.d.ts +0 -46
- package/dist/src/plugins/store/search.js +0 -230
- package/dist/src/plugins/store/types.d.ts +0 -279
- package/dist/src/plugins/store/types.js +0 -7
- package/dist/src/plugins/tests/demo-plugin-store.d.ts +0 -7
- package/dist/src/plugins/tests/demo-plugin-store.js +0 -126
- package/dist/src/plugins/tests/standalone-test.d.ts +0 -12
- package/dist/src/plugins/tests/standalone-test.js +0 -188
- package/dist/src/plugins/tests/test-plugin-store.d.ts +0 -7
- package/dist/src/plugins/tests/test-plugin-store.js +0 -206
- package/dist/src/production/circuit-breaker.d.ts +0 -101
- package/dist/src/production/circuit-breaker.js +0 -241
- package/dist/src/production/error-handler.d.ts +0 -92
- package/dist/src/production/error-handler.js +0 -299
- package/dist/src/production/index.d.ts +0 -23
- package/dist/src/production/index.js +0 -18
- package/dist/src/production/monitoring.d.ts +0 -161
- package/dist/src/production/monitoring.js +0 -356
- package/dist/src/production/rate-limiter.d.ts +0 -80
- package/dist/src/production/rate-limiter.js +0 -201
- package/dist/src/production/retry.d.ts +0 -48
- package/dist/src/production/retry.js +0 -179
- package/dist/src/prompt.d.ts +0 -44
- package/dist/src/prompt.js +0 -501
- package/dist/src/runtime/headless.d.ts +0 -60
- package/dist/src/runtime/headless.js +0 -284
- package/dist/src/runtime/parent-death-watchdog.d.ts +0 -42
- package/dist/src/runtime/parent-death-watchdog.js +0 -70
- package/dist/src/ruvector/agent-wasm.d.ts +0 -228
- package/dist/src/ruvector/agent-wasm.js +0 -463
- package/dist/src/ruvector/ast-analyzer.d.ts +0 -67
- package/dist/src/ruvector/ast-analyzer.js +0 -277
- package/dist/src/ruvector/codemods/engine.d.ts +0 -45
- package/dist/src/ruvector/codemods/engine.js +0 -291
- package/dist/src/ruvector/codemods/scope-analysis.d.ts +0 -29
- package/dist/src/ruvector/codemods/scope-analysis.js +0 -162
- package/dist/src/ruvector/coverage-router.d.ts +0 -160
- package/dist/src/ruvector/coverage-router.js +0 -531
- package/dist/src/ruvector/coverage-tools.d.ts +0 -33
- package/dist/src/ruvector/coverage-tools.js +0 -157
- package/dist/src/ruvector/diff-classifier.d.ts +0 -175
- package/dist/src/ruvector/diff-classifier.js +0 -699
- package/dist/src/ruvector/diskann-backend.d.ts +0 -78
- package/dist/src/ruvector/diskann-backend.js +0 -310
- package/dist/src/ruvector/enhanced-model-router.d.ts +0 -172
- package/dist/src/ruvector/enhanced-model-router.js +0 -577
- package/dist/src/ruvector/graph-analyzer.d.ts +0 -187
- package/dist/src/ruvector/graph-analyzer.js +0 -929
- package/dist/src/ruvector/graph-backend.d.ts +0 -79
- package/dist/src/ruvector/graph-backend.js +0 -220
- package/dist/src/ruvector/index.d.ts +0 -38
- package/dist/src/ruvector/index.js +0 -86
- package/dist/src/ruvector/lora-adapter.d.ts +0 -292
- package/dist/src/ruvector/lora-adapter.js +0 -710
- package/dist/src/ruvector/model-prices.d.ts +0 -50
- package/dist/src/ruvector/model-prices.js +0 -72
- package/dist/src/ruvector/model-router.d.ts +0 -408
- package/dist/src/ruvector/model-router.js +0 -1162
- package/dist/src/ruvector/neural-router.d.ts +0 -182
- package/dist/src/ruvector/neural-router.js +0 -825
- package/dist/src/ruvector/output-verifier.d.ts +0 -83
- package/dist/src/ruvector/output-verifier.js +0 -277
- package/dist/src/ruvector/q-learning-router.d.ts +0 -227
- package/dist/src/ruvector/q-learning-router.js +0 -721
- package/dist/src/ruvector/router-calibrator.d.ts +0 -65
- package/dist/src/ruvector/router-calibrator.js +0 -120
- package/dist/src/ruvector/router-parallel-recorder.d.ts +0 -127
- package/dist/src/ruvector/router-parallel-recorder.js +0 -183
- package/dist/src/ruvector/router-trajectory.d.ts +0 -194
- package/dist/src/ruvector/router-trajectory.js +0 -281
- package/dist/src/ruvector/run-transcript-recorder.d.ts +0 -154
- package/dist/src/ruvector/run-transcript-recorder.js +0 -209
- package/dist/src/ruvector/ruvllm-wasm.d.ts +0 -179
- package/dist/src/ruvector/ruvllm-wasm.js +0 -379
- package/dist/src/ruvector/semantic-router.d.ts +0 -77
- package/dist/src/ruvector/semantic-router.js +0 -178
- package/dist/src/ruvector/task-embedder.d.ts +0 -56
- package/dist/src/ruvector/task-embedder.js +0 -237
- package/dist/src/ruvector/trajectory-tree.d.ts +0 -113
- package/dist/src/ruvector/trajectory-tree.js +0 -237
- package/dist/src/ruvector/vector-db.d.ts +0 -73
- package/dist/src/ruvector/vector-db.js +0 -301
- package/dist/src/ruvector/wasm-embedder.d.ts +0 -13
- package/dist/src/ruvector/wasm-embedder.js +0 -143
- package/dist/src/security/builtin-aidefence.d.ts +0 -34
- package/dist/src/security/builtin-aidefence.js +0 -86
- package/dist/src/services/agentic-flow-bridge.d.ts +0 -50
- package/dist/src/services/agentic-flow-bridge.js +0 -95
- package/dist/src/services/ai-job-dedup.d.ts +0 -61
- package/dist/src/services/ai-job-dedup.js +0 -136
- package/dist/src/services/checkpoint-gate.d.ts +0 -140
- package/dist/src/services/checkpoint-gate.js +0 -223
- package/dist/src/services/claim-service.d.ts +0 -204
- package/dist/src/services/claim-service.js +0 -818
- package/dist/src/services/config-file-manager.d.ts +0 -37
- package/dist/src/services/config-file-manager.js +0 -224
- package/dist/src/services/container-worker-pool.d.ts +0 -204
- package/dist/src/services/container-worker-pool.js +0 -589
- package/dist/src/services/daemon-autostart.d.ts +0 -17
- package/dist/src/services/daemon-autostart.js +0 -102
- package/dist/src/services/distill-oracle.d.ts +0 -190
- package/dist/src/services/distill-oracle.js +0 -349
- package/dist/src/services/distill-tuning.d.ts +0 -111
- package/dist/src/services/distill-tuning.js +0 -510
- package/dist/src/services/evolve-proof.d.ts +0 -253
- package/dist/src/services/evolve-proof.js +0 -343
- package/dist/src/services/fable-harness.d.ts +0 -208
- package/dist/src/services/fable-harness.js +0 -388
- package/dist/src/services/git-workspace-identity.d.ts +0 -42
- package/dist/src/services/git-workspace-identity.js +0 -99
- package/dist/src/services/global-ai-budget.d.ts +0 -135
- package/dist/src/services/global-ai-budget.js +0 -415
- package/dist/src/services/harness-benchmark.d.ts +0 -68
- package/dist/src/services/harness-benchmark.js +0 -94
- package/dist/src/services/harness-canary.d.ts +0 -60
- package/dist/src/services/harness-canary.js +0 -69
- package/dist/src/services/harness-corpus-harvester.d.ts +0 -51
- package/dist/src/services/harness-corpus-harvester.js +0 -74
- package/dist/src/services/harness-flywheel-generations.d.ts +0 -115
- package/dist/src/services/harness-flywheel-generations.js +0 -360
- package/dist/src/services/harness-flywheel-runtime.d.ts +0 -25
- package/dist/src/services/harness-flywheel-runtime.js +0 -92
- package/dist/src/services/harness-flywheel.d.ts +0 -48
- package/dist/src/services/harness-flywheel.js +0 -207
- package/dist/src/services/harness-frozen-eval.d.ts +0 -22
- package/dist/src/services/harness-frozen-eval.js +0 -66
- package/dist/src/services/harness-hosts.d.ts +0 -40
- package/dist/src/services/harness-hosts.js +0 -88
- package/dist/src/services/harness-improvement-ledger.d.ts +0 -63
- package/dist/src/services/harness-improvement-ledger.js +0 -101
- package/dist/src/services/harness-loop.d.ts +0 -53
- package/dist/src/services/harness-loop.js +0 -85
- package/dist/src/services/harness-qualification.d.ts +0 -66
- package/dist/src/services/harness-qualification.js +0 -143
- package/dist/src/services/harness-replay.d.ts +0 -37
- package/dist/src/services/harness-replay.js +0 -92
- package/dist/src/services/harness-verify.d.ts +0 -33
- package/dist/src/services/harness-verify.js +0 -26
- package/dist/src/services/harness-worker.d.ts +0 -23
- package/dist/src/services/harness-worker.js +0 -66
- package/dist/src/services/headless-worker-executor.d.ts +0 -358
- package/dist/src/services/headless-worker-executor.js +0 -1269
- package/dist/src/services/index.d.ts +0 -13
- package/dist/src/services/index.js +0 -11
- package/dist/src/services/memory-backup.d.ts +0 -53
- package/dist/src/services/memory-backup.js +0 -198
- package/dist/src/services/memory-distillation.d.ts +0 -41
- package/dist/src/services/memory-distillation.js +0 -277
- package/dist/src/services/native-training.d.ts +0 -68
- package/dist/src/services/native-training.js +0 -141
- package/dist/src/services/registry-api.d.ts +0 -58
- package/dist/src/services/registry-api.js +0 -146
- package/dist/src/services/repo-supervisor.d.ts +0 -70
- package/dist/src/services/repo-supervisor.js +0 -228
- package/dist/src/services/ruvector-training.d.ts +0 -222
- package/dist/src/services/ruvector-training.js +0 -693
- package/dist/src/services/swarm-memory-branches.d.ts +0 -135
- package/dist/src/services/swarm-memory-branches.js +0 -213
- package/dist/src/services/weight-eft.d.ts +0 -305
- package/dist/src/services/weight-eft.js +0 -296
- package/dist/src/services/worker-daemon.d.ts +0 -439
- package/dist/src/services/worker-daemon.js +0 -1865
- package/dist/src/services/worker-queue.d.ts +0 -194
- package/dist/src/services/worker-queue.js +0 -513
- package/dist/src/services/workspace-lease.d.ts +0 -55
- package/dist/src/services/workspace-lease.js +0 -191
- package/dist/src/suggest.d.ts +0 -53
- package/dist/src/suggest.js +0 -200
- package/dist/src/transfer/anonymization/index.d.ts +0 -25
- package/dist/src/transfer/anonymization/index.js +0 -175
- package/dist/src/transfer/deploy-seraphine.d.ts +0 -13
- package/dist/src/transfer/deploy-seraphine.js +0 -205
- package/dist/src/transfer/export.d.ts +0 -25
- package/dist/src/transfer/export.js +0 -113
- package/dist/src/transfer/index.d.ts +0 -12
- package/dist/src/transfer/index.js +0 -31
- package/dist/src/transfer/ipfs/client.d.ts +0 -109
- package/dist/src/transfer/ipfs/client.js +0 -307
- package/dist/src/transfer/ipfs/upload.d.ts +0 -95
- package/dist/src/transfer/ipfs/upload.js +0 -413
- package/dist/src/transfer/models/seraphine.d.ts +0 -72
- package/dist/src/transfer/models/seraphine.js +0 -373
- package/dist/src/transfer/serialization/cfp.d.ts +0 -49
- package/dist/src/transfer/serialization/cfp.js +0 -183
- package/dist/src/transfer/storage/gcs.d.ts +0 -82
- package/dist/src/transfer/storage/gcs.js +0 -272
- package/dist/src/transfer/storage/index.d.ts +0 -6
- package/dist/src/transfer/storage/index.js +0 -6
- package/dist/src/transfer/store/discovery.d.ts +0 -84
- package/dist/src/transfer/store/discovery.js +0 -382
- package/dist/src/transfer/store/download.d.ts +0 -70
- package/dist/src/transfer/store/download.js +0 -334
- package/dist/src/transfer/store/index.d.ts +0 -84
- package/dist/src/transfer/store/index.js +0 -153
- package/dist/src/transfer/store/publish.d.ts +0 -76
- package/dist/src/transfer/store/publish.js +0 -294
- package/dist/src/transfer/store/registry.d.ts +0 -58
- package/dist/src/transfer/store/registry.js +0 -285
- package/dist/src/transfer/store/search.d.ts +0 -54
- package/dist/src/transfer/store/search.js +0 -232
- package/dist/src/transfer/store/tests/standalone-test.d.ts +0 -12
- package/dist/src/transfer/store/tests/standalone-test.js +0 -190
- package/dist/src/transfer/store/types.d.ts +0 -193
- package/dist/src/transfer/store/types.js +0 -6
- package/dist/src/transfer/test-seraphine.d.ts +0 -6
- package/dist/src/transfer/test-seraphine.js +0 -105
- package/dist/src/transfer/tests/test-store.d.ts +0 -7
- package/dist/src/transfer/tests/test-store.js +0 -214
- package/dist/src/transfer/types.d.ts +0 -245
- package/dist/src/transfer/types.js +0 -6
- package/dist/src/types.d.ts +0 -13
- package/dist/src/types.js +0 -13
- package/dist/src/update/checker.d.ts +0 -34
- package/dist/src/update/checker.js +0 -191
- package/dist/src/update/executor.d.ts +0 -33
- package/dist/src/update/executor.js +0 -217
- package/dist/src/update/index.d.ts +0 -33
- package/dist/src/update/index.js +0 -64
- package/dist/src/update/rate-limiter.d.ts +0 -20
- package/dist/src/update/rate-limiter.js +0 -96
- package/dist/src/update/validator.d.ts +0 -17
- package/dist/src/update/validator.js +0 -123
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Native training via @ruvector/ruvllm's TrainingPipeline (#2549 follow-up).
|
|
3
|
-
*
|
|
4
|
-
* `neural train` historically trained only on the RuVector WASM path
|
|
5
|
-
* (MicroLoRA + InfoNCE) and its "checkpoint" was a freshly-constructed
|
|
6
|
-
* adapter's weights — the native TrainingPipeline (real epochs, loss
|
|
7
|
-
* history, early stopping, EWC registration, disk checkpoints since
|
|
8
|
-
* ruvllm 2.5.7) was never exercised. This service routes the LoRA
|
|
9
|
-
* training leg through it.
|
|
10
|
-
*
|
|
11
|
-
* Batch formulation: pattern-alignment pairs — input = embedding[i],
|
|
12
|
-
* target = embedding[i+1 mod n], quality 1.0 — the MSE analogue of the
|
|
13
|
-
* WASM path's anchor→positive contrastive objective (adjacent training
|
|
14
|
-
* items belong to the same pattern family by construction).
|
|
15
|
-
*
|
|
16
|
-
* Graceful: returns null when @ruvector/ruvllm is absent or anything
|
|
17
|
-
* throws — callers fall back to the WASM path.
|
|
18
|
-
*/
|
|
19
|
-
import { createRequire } from 'module';
|
|
20
|
-
import { mkdirSync, existsSync } from 'fs';
|
|
21
|
-
import { dirname } from 'path';
|
|
22
|
-
/**
|
|
23
|
-
* Thrown when an explicit --resume checkpoint cannot be found or loaded.
|
|
24
|
-
* Distinct from the generic "native unavailable → null" degradation so the
|
|
25
|
-
* caller can surface a loud, exit-1 failure rather than fresh training.
|
|
26
|
-
*/
|
|
27
|
-
export class ResumeFailedError extends Error {
|
|
28
|
-
constructor(message) {
|
|
29
|
-
super(message);
|
|
30
|
-
this.name = 'ResumeFailedError';
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
export function nativeTrainingAvailable() {
|
|
34
|
-
try {
|
|
35
|
-
createRequire(import.meta.url).resolve('@ruvector/ruvllm');
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
export async function runNativeTraining(opts) {
|
|
43
|
-
const { embeddings, epochs, batchSize, learningRate, dim, validationSplit, resumeFrom, checkpointPath } = opts;
|
|
44
|
-
if (embeddings.length < 2)
|
|
45
|
-
return null;
|
|
46
|
-
try {
|
|
47
|
-
const req = createRequire(import.meta.url);
|
|
48
|
-
const ruvllm = req('@ruvector/ruvllm');
|
|
49
|
-
const pipelineConfig = {
|
|
50
|
-
learningRate,
|
|
51
|
-
batchSize,
|
|
52
|
-
epochs,
|
|
53
|
-
inputDim: dim,
|
|
54
|
-
outputDim: dim,
|
|
55
|
-
};
|
|
56
|
-
// 0 (or omitted) disables validation; only pass a real holdout through.
|
|
57
|
-
if (typeof validationSplit === 'number' && validationSplit > 0) {
|
|
58
|
-
pipelineConfig.validationSplit = validationSplit;
|
|
59
|
-
}
|
|
60
|
-
const pipeline = new ruvllm.TrainingPipeline(pipelineConfig);
|
|
61
|
-
// Resume BEFORE training. Prefer resumeFrom() (2.6.0 — epoch position +
|
|
62
|
-
// optimizer state); fall back to loadCheckpoint() (2.5.7 — weights only).
|
|
63
|
-
// Any failure with an explicit --resume is loud (ResumeFailedError),
|
|
64
|
-
// never silent fresh training.
|
|
65
|
-
let resumed = false;
|
|
66
|
-
let resumeMode;
|
|
67
|
-
if (resumeFrom) {
|
|
68
|
-
if (!existsSync(resumeFrom)) {
|
|
69
|
-
throw new ResumeFailedError(`--resume checkpoint not found: ${resumeFrom}`);
|
|
70
|
-
}
|
|
71
|
-
try {
|
|
72
|
-
if (typeof pipeline.resumeFrom === 'function') {
|
|
73
|
-
pipeline.resumeFrom(resumeFrom);
|
|
74
|
-
resumeMode = 'resumeFrom';
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
const ok = pipeline.loadCheckpoint(resumeFrom);
|
|
78
|
-
if (ok === false)
|
|
79
|
-
throw new Error('loadCheckpoint returned false');
|
|
80
|
-
resumeMode = 'loadCheckpoint';
|
|
81
|
-
}
|
|
82
|
-
resumed = true;
|
|
83
|
-
}
|
|
84
|
-
catch (e) {
|
|
85
|
-
if (e instanceof ResumeFailedError)
|
|
86
|
-
throw e;
|
|
87
|
-
throw new ResumeFailedError(`--resume failed to load checkpoint ${resumeFrom}: ${e.message}`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Pattern-alignment pairs, chunked into pipeline batches.
|
|
91
|
-
const inputs = [];
|
|
92
|
-
const targets = [];
|
|
93
|
-
const qualities = [];
|
|
94
|
-
for (let i = 0; i < embeddings.length; i++) {
|
|
95
|
-
inputs.push(Array.from(embeddings[i]));
|
|
96
|
-
targets.push(Array.from(embeddings[(i + 1) % embeddings.length]));
|
|
97
|
-
qualities.push(1.0);
|
|
98
|
-
}
|
|
99
|
-
for (let i = 0; i < inputs.length; i += batchSize) {
|
|
100
|
-
pipeline.addBatch(inputs.slice(i, i + batchSize), targets.slice(i, i + batchSize), qualities.slice(i, i + batchSize));
|
|
101
|
-
}
|
|
102
|
-
const r = pipeline.train();
|
|
103
|
-
// When validation is disabled the pipeline reports Infinity for
|
|
104
|
-
// bestValLoss — normalize any non-finite value to null so downstream
|
|
105
|
-
// "bestValLoss !== null ⇒ validation ran" holds for the results table.
|
|
106
|
-
const bestValLoss = typeof r.bestValLoss === 'number' && Number.isFinite(r.bestValLoss)
|
|
107
|
-
? r.bestValLoss
|
|
108
|
-
: null;
|
|
109
|
-
const result = {
|
|
110
|
-
epochs: r.epochs,
|
|
111
|
-
steps: r.steps,
|
|
112
|
-
finalLoss: r.finalLoss,
|
|
113
|
-
bestValLoss,
|
|
114
|
-
durationMs: r.durationMs,
|
|
115
|
-
earlyStopped: !!r.earlyStopped,
|
|
116
|
-
resumed,
|
|
117
|
-
resumeMode,
|
|
118
|
-
};
|
|
119
|
-
if (checkpointPath) {
|
|
120
|
-
try {
|
|
121
|
-
mkdirSync(dirname(checkpointPath), { recursive: true });
|
|
122
|
-
const saved = pipeline.saveCheckpoint(checkpointPath);
|
|
123
|
-
// <2.5.7 returns undefined and writes nothing — verify on disk.
|
|
124
|
-
if (existsSync(checkpointPath)) {
|
|
125
|
-
result.checkpointPath = checkpointPath;
|
|
126
|
-
result.checkpointBytes = saved?.bytes;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
catch { /* checkpoint is best-effort; training result stands */ }
|
|
130
|
-
}
|
|
131
|
-
return result;
|
|
132
|
-
}
|
|
133
|
-
catch (err) {
|
|
134
|
-
// An explicit --resume failure must propagate as a loud error; every
|
|
135
|
-
// other failure degrades to null so callers fall back to the WASM path.
|
|
136
|
-
if (err instanceof ResumeFailedError)
|
|
137
|
-
throw err;
|
|
138
|
-
return null;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=native-training.js.map
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registry API Client
|
|
3
|
-
* Secure integration with Claude Flow Cloud Functions
|
|
4
|
-
*
|
|
5
|
-
* Security:
|
|
6
|
-
* - HTTPS only
|
|
7
|
-
* - No credentials stored in code
|
|
8
|
-
* - Rate limiting respected
|
|
9
|
-
* - Input validation
|
|
10
|
-
*/
|
|
11
|
-
export interface RatingResponse {
|
|
12
|
-
success: boolean;
|
|
13
|
-
itemId: string;
|
|
14
|
-
average: number;
|
|
15
|
-
count: number;
|
|
16
|
-
error?: string;
|
|
17
|
-
}
|
|
18
|
-
export interface BulkRatingsResponse {
|
|
19
|
-
[itemId: string]: {
|
|
20
|
-
average: number;
|
|
21
|
-
count: number;
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
export interface AnalyticsResponse {
|
|
25
|
-
downloads: Record<string, number>;
|
|
26
|
-
exports: number;
|
|
27
|
-
imports: number;
|
|
28
|
-
publishes: number;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Rate a plugin or model
|
|
32
|
-
*/
|
|
33
|
-
export declare function rateItem(itemId: string, rating: number, itemType?: 'plugin' | 'model', userId?: string): Promise<RatingResponse>;
|
|
34
|
-
/**
|
|
35
|
-
* Get ratings for a single item
|
|
36
|
-
*/
|
|
37
|
-
export declare function getRating(itemId: string, itemType?: 'plugin' | 'model'): Promise<RatingResponse>;
|
|
38
|
-
/**
|
|
39
|
-
* Get ratings for multiple items (batch)
|
|
40
|
-
*/
|
|
41
|
-
export declare function getBulkRatings(itemIds: string[], itemType?: 'plugin' | 'model'): Promise<BulkRatingsResponse>;
|
|
42
|
-
/**
|
|
43
|
-
* Get analytics data
|
|
44
|
-
*/
|
|
45
|
-
export declare function getAnalytics(): Promise<AnalyticsResponse>;
|
|
46
|
-
/**
|
|
47
|
-
* Track a download event
|
|
48
|
-
*/
|
|
49
|
-
export declare function trackDownload(pluginId: string): Promise<void>;
|
|
50
|
-
/**
|
|
51
|
-
* Check API health
|
|
52
|
-
*/
|
|
53
|
-
export declare function checkHealth(): Promise<{
|
|
54
|
-
healthy: boolean;
|
|
55
|
-
latestCid?: string;
|
|
56
|
-
error?: string;
|
|
57
|
-
}>;
|
|
58
|
-
//# sourceMappingURL=registry-api.d.ts.map
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registry API Client
|
|
3
|
-
* Secure integration with Claude Flow Cloud Functions
|
|
4
|
-
*
|
|
5
|
-
* Security:
|
|
6
|
-
* - HTTPS only
|
|
7
|
-
* - No credentials stored in code
|
|
8
|
-
* - Rate limiting respected
|
|
9
|
-
* - Input validation
|
|
10
|
-
*/
|
|
11
|
-
const REGISTRY_API_URL = 'https://us-central1-claude-flow.cloudfunctions.net/publish-registry';
|
|
12
|
-
/**
|
|
13
|
-
* Validate item ID to prevent injection
|
|
14
|
-
*/
|
|
15
|
-
function validateItemId(itemId) {
|
|
16
|
-
// Only allow alphanumeric, @, /, -, _
|
|
17
|
-
return /^[@a-zA-Z0-9\/_-]+$/.test(itemId) && itemId.length < 100;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Validate rating value
|
|
21
|
-
*/
|
|
22
|
-
function validateRating(rating) {
|
|
23
|
-
return Number.isInteger(rating) && rating >= 1 && rating <= 5;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Rate a plugin or model
|
|
27
|
-
*/
|
|
28
|
-
export async function rateItem(itemId, rating, itemType = 'plugin', userId) {
|
|
29
|
-
if (!validateItemId(itemId)) {
|
|
30
|
-
throw new Error('Invalid item ID');
|
|
31
|
-
}
|
|
32
|
-
if (!validateRating(rating)) {
|
|
33
|
-
throw new Error('Rating must be integer 1-5');
|
|
34
|
-
}
|
|
35
|
-
const response = await fetch(`${REGISTRY_API_URL}?action=rate`, {
|
|
36
|
-
method: 'POST',
|
|
37
|
-
headers: { 'Content-Type': 'application/json' },
|
|
38
|
-
body: JSON.stringify({
|
|
39
|
-
itemId,
|
|
40
|
-
rating,
|
|
41
|
-
itemType,
|
|
42
|
-
...(userId && { userId }),
|
|
43
|
-
}),
|
|
44
|
-
signal: AbortSignal.timeout(10000),
|
|
45
|
-
});
|
|
46
|
-
if (!response.ok) {
|
|
47
|
-
const error = await response.text();
|
|
48
|
-
throw new Error(`Rating failed: ${error}`);
|
|
49
|
-
}
|
|
50
|
-
return response.json();
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Get ratings for a single item
|
|
54
|
-
*/
|
|
55
|
-
export async function getRating(itemId, itemType = 'plugin') {
|
|
56
|
-
if (!validateItemId(itemId)) {
|
|
57
|
-
throw new Error('Invalid item ID');
|
|
58
|
-
}
|
|
59
|
-
const params = new URLSearchParams({
|
|
60
|
-
action: 'get-ratings',
|
|
61
|
-
itemId,
|
|
62
|
-
itemType,
|
|
63
|
-
});
|
|
64
|
-
const response = await fetch(`${REGISTRY_API_URL}?${params}`, {
|
|
65
|
-
signal: AbortSignal.timeout(10000),
|
|
66
|
-
});
|
|
67
|
-
if (!response.ok) {
|
|
68
|
-
throw new Error('Failed to get ratings');
|
|
69
|
-
}
|
|
70
|
-
return response.json();
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Get ratings for multiple items (batch)
|
|
74
|
-
*/
|
|
75
|
-
export async function getBulkRatings(itemIds, itemType = 'plugin') {
|
|
76
|
-
// Validate all IDs
|
|
77
|
-
for (const id of itemIds) {
|
|
78
|
-
if (!validateItemId(id)) {
|
|
79
|
-
throw new Error(`Invalid item ID: ${id}`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
// Limit batch size
|
|
83
|
-
const limitedIds = itemIds.slice(0, 50);
|
|
84
|
-
const response = await fetch(`${REGISTRY_API_URL}?action=bulk-ratings`, {
|
|
85
|
-
method: 'POST',
|
|
86
|
-
headers: { 'Content-Type': 'application/json' },
|
|
87
|
-
body: JSON.stringify({
|
|
88
|
-
itemIds: limitedIds,
|
|
89
|
-
itemType,
|
|
90
|
-
}),
|
|
91
|
-
signal: AbortSignal.timeout(15000),
|
|
92
|
-
});
|
|
93
|
-
if (!response.ok) {
|
|
94
|
-
throw new Error('Failed to get bulk ratings');
|
|
95
|
-
}
|
|
96
|
-
return response.json();
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Get analytics data
|
|
100
|
-
*/
|
|
101
|
-
export async function getAnalytics() {
|
|
102
|
-
const response = await fetch(`${REGISTRY_API_URL}?action=analytics`, {
|
|
103
|
-
signal: AbortSignal.timeout(10000),
|
|
104
|
-
});
|
|
105
|
-
if (!response.ok) {
|
|
106
|
-
throw new Error('Failed to get analytics');
|
|
107
|
-
}
|
|
108
|
-
return response.json();
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Track a download event
|
|
112
|
-
*/
|
|
113
|
-
export async function trackDownload(pluginId) {
|
|
114
|
-
if (!validateItemId(pluginId)) {
|
|
115
|
-
return; // Silently fail for invalid IDs
|
|
116
|
-
}
|
|
117
|
-
try {
|
|
118
|
-
await fetch(`${REGISTRY_API_URL}?action=track-download`, {
|
|
119
|
-
method: 'POST',
|
|
120
|
-
headers: { 'Content-Type': 'application/json' },
|
|
121
|
-
body: JSON.stringify({ pluginId }),
|
|
122
|
-
signal: AbortSignal.timeout(5000),
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
// Non-critical, don't throw
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Check API health
|
|
131
|
-
*/
|
|
132
|
-
export async function checkHealth() {
|
|
133
|
-
try {
|
|
134
|
-
const response = await fetch(`${REGISTRY_API_URL}?action=status`, {
|
|
135
|
-
signal: AbortSignal.timeout(5000),
|
|
136
|
-
});
|
|
137
|
-
return response.json();
|
|
138
|
-
}
|
|
139
|
-
catch (error) {
|
|
140
|
-
return {
|
|
141
|
-
healthy: false,
|
|
142
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
//# sourceMappingURL=registry-api.js.map
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* #2661 root-fix — one repository-level supervisor.
|
|
3
|
-
*
|
|
4
|
-
* Ten worktree daemons of the same repository independently deciding "is it
|
|
5
|
-
* time to run audit/optimize/testgaps" every tick is the redundant-scheduler
|
|
6
|
-
* half of the original cardinality bug — the budget ledger and job dedup
|
|
7
|
-
* (global-ai-budget.ts, ai-job-dedup.ts) already bound and dedupe the actual
|
|
8
|
-
* `claude --print` spend, but every daemon still runs its own timer and its
|
|
9
|
-
* own "should I launch" decision. This module elects exactly ONE daemon per
|
|
10
|
-
* repositoryId to own the recurring AI-worker schedule; every other worktree
|
|
11
|
-
* of that repository stays a lease-only participant (workspace-lease.ts) —
|
|
12
|
-
* it keeps running its cheap, $0 local-only workers (map/consolidate/backup)
|
|
13
|
-
* on its own schedule, but does not attempt headless (`claude --print`)
|
|
14
|
-
* execution for its recurring ticks. An explicit `daemon trigger --headless`
|
|
15
|
-
* in a non-supervisor worktree is still honored (still budget/dedup-gated) —
|
|
16
|
-
* this module only governs the unattended recurring schedule.
|
|
17
|
-
*
|
|
18
|
-
* Election is a simple lock-protected takeover, same pattern as
|
|
19
|
-
* global-ai-budget.ts:
|
|
20
|
-
* - No record, a dead PID, or a stale heartbeat (>SUPERVISOR_STALE_MS) →
|
|
21
|
-
* the calling daemon takes over.
|
|
22
|
-
* - A live supervisor with a fresh heartbeat → the calling daemon is not
|
|
23
|
-
* elected; it does nothing (never overwrites a healthy supervisor).
|
|
24
|
-
*
|
|
25
|
-
* The registry lives under the user's home directory so every worktree's
|
|
26
|
-
* daemon can see it:
|
|
27
|
-
*
|
|
28
|
-
* ~/.claude-flow/supervisors/<repositoryId>.json
|
|
29
|
-
*/
|
|
30
|
-
export declare const SUPERVISOR_STALE_MS: number;
|
|
31
|
-
export interface SupervisorRecord {
|
|
32
|
-
worktreeRoot: string;
|
|
33
|
-
pid: number;
|
|
34
|
-
electedAt: number;
|
|
35
|
-
lastHeartbeat: number;
|
|
36
|
-
}
|
|
37
|
-
export interface SupervisorElectionResult {
|
|
38
|
-
isSupervisor: boolean;
|
|
39
|
-
record: SupervisorRecord | null;
|
|
40
|
-
}
|
|
41
|
-
export declare class RepoSupervisorRegistry {
|
|
42
|
-
private readonly dir;
|
|
43
|
-
constructor(options?: {
|
|
44
|
-
baseDir?: string;
|
|
45
|
-
});
|
|
46
|
-
private fileFor;
|
|
47
|
-
private ensureDir;
|
|
48
|
-
private withLock;
|
|
49
|
-
private readRecord;
|
|
50
|
-
private writeRecord;
|
|
51
|
-
private isStale;
|
|
52
|
-
/**
|
|
53
|
-
* Attempt election (or renewal, if this process already holds it). Safe
|
|
54
|
-
* and cheap to call on every daemon tick — a no-op write when nothing
|
|
55
|
-
* needs to change would still cost a lock+read+write, so callers should
|
|
56
|
-
* still throttle to their own heartbeat cadence rather than calling this
|
|
57
|
-
* per-worker-tick.
|
|
58
|
-
*/
|
|
59
|
-
electOrRenew(repositoryId: string, worktreeRoot: string): Promise<SupervisorElectionResult>;
|
|
60
|
-
/** Cheap read-only check — does NOT renew or elect. */
|
|
61
|
-
isSupervisor(repositoryId: string, worktreeRoot: string): boolean;
|
|
62
|
-
/** Release supervisor status on graceful shutdown, so the next tick elsewhere can take over promptly. Best-effort. */
|
|
63
|
-
release(repositoryId: string, worktreeRoot: string): Promise<void>;
|
|
64
|
-
/** Snapshot for `daemon status --all`. Read-only, never mutates. */
|
|
65
|
-
getRecord(repositoryId: string): SupervisorRecord | null;
|
|
66
|
-
}
|
|
67
|
-
export declare function getRepoSupervisorRegistry(): RepoSupervisorRegistry;
|
|
68
|
-
/** Test hook: reset the singleton (e.g. after changing RUFLO_AI_BUDGET_DIR). */
|
|
69
|
-
export declare function resetRepoSupervisorRegistryForTests(): void;
|
|
70
|
-
//# sourceMappingURL=repo-supervisor.d.ts.map
|
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* #2661 root-fix — one repository-level supervisor.
|
|
3
|
-
*
|
|
4
|
-
* Ten worktree daemons of the same repository independently deciding "is it
|
|
5
|
-
* time to run audit/optimize/testgaps" every tick is the redundant-scheduler
|
|
6
|
-
* half of the original cardinality bug — the budget ledger and job dedup
|
|
7
|
-
* (global-ai-budget.ts, ai-job-dedup.ts) already bound and dedupe the actual
|
|
8
|
-
* `claude --print` spend, but every daemon still runs its own timer and its
|
|
9
|
-
* own "should I launch" decision. This module elects exactly ONE daemon per
|
|
10
|
-
* repositoryId to own the recurring AI-worker schedule; every other worktree
|
|
11
|
-
* of that repository stays a lease-only participant (workspace-lease.ts) —
|
|
12
|
-
* it keeps running its cheap, $0 local-only workers (map/consolidate/backup)
|
|
13
|
-
* on its own schedule, but does not attempt headless (`claude --print`)
|
|
14
|
-
* execution for its recurring ticks. An explicit `daemon trigger --headless`
|
|
15
|
-
* in a non-supervisor worktree is still honored (still budget/dedup-gated) —
|
|
16
|
-
* this module only governs the unattended recurring schedule.
|
|
17
|
-
*
|
|
18
|
-
* Election is a simple lock-protected takeover, same pattern as
|
|
19
|
-
* global-ai-budget.ts:
|
|
20
|
-
* - No record, a dead PID, or a stale heartbeat (>SUPERVISOR_STALE_MS) →
|
|
21
|
-
* the calling daemon takes over.
|
|
22
|
-
* - A live supervisor with a fresh heartbeat → the calling daemon is not
|
|
23
|
-
* elected; it does nothing (never overwrites a healthy supervisor).
|
|
24
|
-
*
|
|
25
|
-
* The registry lives under the user's home directory so every worktree's
|
|
26
|
-
* daemon can see it:
|
|
27
|
-
*
|
|
28
|
-
* ~/.claude-flow/supervisors/<repositoryId>.json
|
|
29
|
-
*/
|
|
30
|
-
import * as fs from 'fs';
|
|
31
|
-
import { join } from 'path';
|
|
32
|
-
import { homedir } from 'os';
|
|
33
|
-
// Longer than any plausible daemon heartbeat interval (daemons renew via the
|
|
34
|
-
// existing 60s lifecycle-monitor tick) so a merely-slow tick never triggers
|
|
35
|
-
// a false takeover, but short enough that a crashed supervisor's worktree
|
|
36
|
-
// yields the schedule within a few minutes rather than indefinitely.
|
|
37
|
-
export const SUPERVISOR_STALE_MS = 3 * 60 * 1000;
|
|
38
|
-
const LOCK_STALE_MS = 10_000;
|
|
39
|
-
function delay(ms) {
|
|
40
|
-
return new Promise((r) => setTimeout(r, ms));
|
|
41
|
-
}
|
|
42
|
-
function isProcessAlive(pid) {
|
|
43
|
-
try {
|
|
44
|
-
process.kill(pid, 0);
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/** Invariant 9 (#2661): registry files must never be symlinks. */
|
|
52
|
-
function assertNotSymlink(path) {
|
|
53
|
-
try {
|
|
54
|
-
const st = fs.lstatSync(path);
|
|
55
|
-
if (st.isSymbolicLink()) {
|
|
56
|
-
throw new Error(`Repo-supervisor file is a symlink (refusing): ${path}`);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch (e) {
|
|
60
|
-
if (e.code === 'ENOENT')
|
|
61
|
-
return;
|
|
62
|
-
throw e;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
export class RepoSupervisorRegistry {
|
|
66
|
-
dir;
|
|
67
|
-
constructor(options) {
|
|
68
|
-
this.dir = options?.baseDir
|
|
69
|
-
?? process.env.RUFLO_AI_BUDGET_DIR
|
|
70
|
-
?? join(homedir(), '.claude-flow');
|
|
71
|
-
}
|
|
72
|
-
fileFor(repositoryId) {
|
|
73
|
-
return join(this.dir, 'supervisors', `${repositoryId}.json`);
|
|
74
|
-
}
|
|
75
|
-
ensureDir() {
|
|
76
|
-
const dir = join(this.dir, 'supervisors');
|
|
77
|
-
if (!fs.existsSync(dir))
|
|
78
|
-
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
79
|
-
}
|
|
80
|
-
async withLock(repositoryId, fn) {
|
|
81
|
-
this.ensureDir();
|
|
82
|
-
const lockFile = `${this.fileFor(repositoryId)}.lock`;
|
|
83
|
-
const deadline = Date.now() + 2000;
|
|
84
|
-
for (;;) {
|
|
85
|
-
try {
|
|
86
|
-
const fd = fs.openSync(lockFile, fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_WRONLY, 0o600);
|
|
87
|
-
fs.writeSync(fd, String(process.pid));
|
|
88
|
-
fs.closeSync(fd);
|
|
89
|
-
try {
|
|
90
|
-
return fn();
|
|
91
|
-
}
|
|
92
|
-
finally {
|
|
93
|
-
try {
|
|
94
|
-
fs.unlinkSync(lockFile);
|
|
95
|
-
}
|
|
96
|
-
catch { /* already gone */ }
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
catch (e) {
|
|
100
|
-
if (e.code !== 'EEXIST')
|
|
101
|
-
throw e;
|
|
102
|
-
try {
|
|
103
|
-
const st = fs.lstatSync(lockFile);
|
|
104
|
-
if (Date.now() - st.mtimeMs > LOCK_STALE_MS) {
|
|
105
|
-
fs.unlinkSync(lockFile);
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
catch { /* raced — retry */ }
|
|
110
|
-
if (Date.now() > deadline)
|
|
111
|
-
throw new Error('timed out acquiring repo-supervisor lock');
|
|
112
|
-
await delay(25);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
readRecord(repositoryId) {
|
|
117
|
-
const file = this.fileFor(repositoryId);
|
|
118
|
-
assertNotSymlink(file);
|
|
119
|
-
if (!fs.existsSync(file))
|
|
120
|
-
return null;
|
|
121
|
-
try {
|
|
122
|
-
const raw = JSON.parse(fs.readFileSync(file, 'utf-8'));
|
|
123
|
-
if (raw && typeof raw.pid === 'number' && typeof raw.lastHeartbeat === 'number') {
|
|
124
|
-
return raw;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
catch { /* corrupt — treat as absent */ }
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
writeRecord(repositoryId, record) {
|
|
131
|
-
const file = this.fileFor(repositoryId);
|
|
132
|
-
assertNotSymlink(file);
|
|
133
|
-
const tmp = `${file}.tmp.${process.pid}`;
|
|
134
|
-
fs.writeFileSync(tmp, JSON.stringify(record), { mode: 0o600 });
|
|
135
|
-
fs.renameSync(tmp, file);
|
|
136
|
-
}
|
|
137
|
-
isStale(record, now) {
|
|
138
|
-
return now - record.lastHeartbeat > SUPERVISOR_STALE_MS || !isProcessAlive(record.pid);
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Attempt election (or renewal, if this process already holds it). Safe
|
|
142
|
-
* and cheap to call on every daemon tick — a no-op write when nothing
|
|
143
|
-
* needs to change would still cost a lock+read+write, so callers should
|
|
144
|
-
* still throttle to their own heartbeat cadence rather than calling this
|
|
145
|
-
* per-worker-tick.
|
|
146
|
-
*/
|
|
147
|
-
async electOrRenew(repositoryId, worktreeRoot) {
|
|
148
|
-
try {
|
|
149
|
-
return await this.withLock(repositoryId, () => {
|
|
150
|
-
const now = Date.now();
|
|
151
|
-
const existing = this.readRecord(repositoryId);
|
|
152
|
-
if (existing && existing.pid === process.pid && existing.worktreeRoot === worktreeRoot) {
|
|
153
|
-
const renewed = { ...existing, lastHeartbeat: now };
|
|
154
|
-
this.writeRecord(repositoryId, renewed);
|
|
155
|
-
return { isSupervisor: true, record: renewed };
|
|
156
|
-
}
|
|
157
|
-
if (!existing || this.isStale(existing, now)) {
|
|
158
|
-
const record = { worktreeRoot, pid: process.pid, electedAt: now, lastHeartbeat: now };
|
|
159
|
-
this.writeRecord(repositoryId, record);
|
|
160
|
-
return { isSupervisor: true, record };
|
|
161
|
-
}
|
|
162
|
-
// A live supervisor already owns this repository — never overwrite it.
|
|
163
|
-
return { isSupervisor: false, record: existing };
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
catch {
|
|
167
|
-
// Fail closed on the SCHEDULE side too: if we can't safely coordinate,
|
|
168
|
-
// assume we are NOT the supervisor rather than risk two daemons both
|
|
169
|
-
// believing they own the schedule. The budget ledger is the actual
|
|
170
|
-
// hard invariant either way.
|
|
171
|
-
return { isSupervisor: false, record: null };
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
/** Cheap read-only check — does NOT renew or elect. */
|
|
175
|
-
isSupervisor(repositoryId, worktreeRoot) {
|
|
176
|
-
try {
|
|
177
|
-
const existing = this.readRecord(repositoryId);
|
|
178
|
-
if (!existing)
|
|
179
|
-
return false;
|
|
180
|
-
const now = Date.now();
|
|
181
|
-
if (this.isStale(existing, now))
|
|
182
|
-
return false;
|
|
183
|
-
return existing.pid === process.pid && existing.worktreeRoot === worktreeRoot;
|
|
184
|
-
}
|
|
185
|
-
catch {
|
|
186
|
-
return false;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
/** Release supervisor status on graceful shutdown, so the next tick elsewhere can take over promptly. Best-effort. */
|
|
190
|
-
async release(repositoryId, worktreeRoot) {
|
|
191
|
-
try {
|
|
192
|
-
await this.withLock(repositoryId, () => {
|
|
193
|
-
const existing = this.readRecord(repositoryId);
|
|
194
|
-
if (existing && existing.pid === process.pid && existing.worktreeRoot === worktreeRoot) {
|
|
195
|
-
const file = this.fileFor(repositoryId);
|
|
196
|
-
try {
|
|
197
|
-
fs.unlinkSync(file);
|
|
198
|
-
}
|
|
199
|
-
catch { /* already gone */ }
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
catch { /* best-effort */ }
|
|
204
|
-
}
|
|
205
|
-
/** Snapshot for `daemon status --all`. Read-only, never mutates. */
|
|
206
|
-
getRecord(repositoryId) {
|
|
207
|
-
try {
|
|
208
|
-
const existing = this.readRecord(repositoryId);
|
|
209
|
-
if (!existing || this.isStale(existing, Date.now()))
|
|
210
|
-
return null;
|
|
211
|
-
return existing;
|
|
212
|
-
}
|
|
213
|
-
catch {
|
|
214
|
-
return null;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
let registryInstance = null;
|
|
219
|
-
export function getRepoSupervisorRegistry() {
|
|
220
|
-
if (!registryInstance)
|
|
221
|
-
registryInstance = new RepoSupervisorRegistry();
|
|
222
|
-
return registryInstance;
|
|
223
|
-
}
|
|
224
|
-
/** Test hook: reset the singleton (e.g. after changing RUFLO_AI_BUDGET_DIR). */
|
|
225
|
-
export function resetRepoSupervisorRegistryForTests() {
|
|
226
|
-
registryInstance = null;
|
|
227
|
-
}
|
|
228
|
-
//# sourceMappingURL=repo-supervisor.js.map
|