@claude-flow/cli 3.32.1 → 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-version +1 -1
- package/.claude/helpers/helpers.manifest.json +3 -3
- package/.claude/helpers/statusline.cjs +24 -17
- package/.claude/helpers/statusline.js +19 -31
- package/catalog-manifest.json +2 -2
- package/package.json +1 -1
- package/plugins/ruflo-metaharness/.claude-plugin/plugin.json +1 -1
- package/plugins/ruflo-metaharness/scripts/smoke.sh +8 -5
- package/plugins/ruflo-metaharness/skills/harness-similarity/SKILL.md +1 -1
- 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 -4595
- 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 -1007
- 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 -49
- package/dist/src/funnel/insights.js +0 -120
- package/dist/src/funnel/local-signals.d.ts +0 -15
- package/dist/src/funnel/local-signals.js +0 -68
- 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 -4824
- 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/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 -207
- 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,710 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LoRA (Low-Rank Adaptation) Implementation
|
|
3
|
-
*
|
|
4
|
-
* Enables efficient fine-tuning by decomposing weight updates into low-rank matrices.
|
|
5
|
-
* Dramatically reduces memory requirements while maintaining adaptation quality.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Rank decomposition (r << d) for memory efficiency
|
|
9
|
-
* - Additive weight updates: W' = W + BA (where B ∈ R^{d×r}, A ∈ R^{r×k})
|
|
10
|
-
* - Support for multiple adaptation heads
|
|
11
|
-
* - Persistence to .swarm/lora-weights.json
|
|
12
|
-
*
|
|
13
|
-
* Memory savings:
|
|
14
|
-
* - Original: d × k parameters
|
|
15
|
-
* - LoRA: r × (d + k) parameters
|
|
16
|
-
* - For d=384, k=384, r=8: 786,432 → 6,144 (128x reduction)
|
|
17
|
-
*
|
|
18
|
-
* @module lora-adapter
|
|
19
|
-
*/
|
|
20
|
-
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'fs';
|
|
21
|
-
import { dirname, join } from 'path';
|
|
22
|
-
import { createRequire } from 'module';
|
|
23
|
-
// ============================================================================
|
|
24
|
-
// Types & Constants
|
|
25
|
-
// ============================================================================
|
|
26
|
-
/**
|
|
27
|
-
* Default LoRA rank (determines memory/quality tradeoff)
|
|
28
|
-
*/
|
|
29
|
-
export const DEFAULT_RANK = 8;
|
|
30
|
-
/**
|
|
31
|
-
* Input dimension (384 from ONNX MiniLM-L6-v2)
|
|
32
|
-
*/
|
|
33
|
-
export const INPUT_DIM = 384;
|
|
34
|
-
/**
|
|
35
|
-
* Default output dimension (same as input for adapter)
|
|
36
|
-
*/
|
|
37
|
-
export const OUTPUT_DIM = 384;
|
|
38
|
-
/**
|
|
39
|
-
* Default alpha scaling factor
|
|
40
|
-
*/
|
|
41
|
-
export const DEFAULT_ALPHA = 16;
|
|
42
|
-
// ============================================================================
|
|
43
|
-
// Default Configuration
|
|
44
|
-
// ============================================================================
|
|
45
|
-
const DEFAULT_CONFIG = {
|
|
46
|
-
rank: DEFAULT_RANK,
|
|
47
|
-
alpha: DEFAULT_ALPHA,
|
|
48
|
-
inputDim: INPUT_DIM,
|
|
49
|
-
outputDim: OUTPUT_DIM,
|
|
50
|
-
learningRate: 0.001,
|
|
51
|
-
weightsPath: join(process.cwd(), '.swarm', 'lora-weights.json'),
|
|
52
|
-
enableDropout: true,
|
|
53
|
-
dropoutProb: 0.1,
|
|
54
|
-
autoSaveInterval: 50,
|
|
55
|
-
};
|
|
56
|
-
// ============================================================================
|
|
57
|
-
// @ruvector/ruvllm TrainingPipeline (lazy-loaded)
|
|
58
|
-
// ============================================================================
|
|
59
|
-
let ruvllmPipeline = null;
|
|
60
|
-
let pipelineLoaded = false;
|
|
61
|
-
/**
|
|
62
|
-
* Which training backend a train call would use — WITHOUT loading the
|
|
63
|
-
* pipeline (#2549). Before this existed, status surfaces read module state
|
|
64
|
-
* that only a prior in-process train populates, so a fresh read-only
|
|
65
|
-
* process always reported 'js-fallback'/'unavailable' even with
|
|
66
|
-
* @ruvector/ruvllm installed. The pipeline stays lazy: this only probes
|
|
67
|
-
* module resolution.
|
|
68
|
-
*/
|
|
69
|
-
export function resolveTrainingBackend() {
|
|
70
|
-
if (pipelineLoaded)
|
|
71
|
-
return ruvllmPipeline ? 'ruvllm' : 'js-fallback';
|
|
72
|
-
try {
|
|
73
|
-
createRequire(import.meta.url).resolve('@ruvector/ruvllm');
|
|
74
|
-
return 'ruvllm';
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
77
|
-
return 'js-fallback';
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Whether the resolved @ruvector/ruvllm persists checkpoints to disk.
|
|
82
|
-
* saveCheckpoint(path) was a silent no-op (private, void, wrote 0 bytes)
|
|
83
|
-
* before 2.5.7 — status surfaces must not advertise checkpoints against
|
|
84
|
-
* older versions. Reads the resolved package's version; the package does
|
|
85
|
-
* not export ./package.json, so walk up from the resolved entry instead.
|
|
86
|
-
*/
|
|
87
|
-
export function nativeCheckpointsSupported() {
|
|
88
|
-
try {
|
|
89
|
-
const req = createRequire(import.meta.url);
|
|
90
|
-
let dir = dirname(req.resolve('@ruvector/ruvllm'));
|
|
91
|
-
for (let i = 0; i < 5; i++) {
|
|
92
|
-
const pkgPath = join(dir, 'package.json');
|
|
93
|
-
if (existsSync(pkgPath)) {
|
|
94
|
-
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
95
|
-
if (pkg.name !== '@ruvector/ruvllm') {
|
|
96
|
-
dir = dirname(dir);
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
|
-
const [maj, min, pat] = String(pkg.version).split('.').map(Number);
|
|
100
|
-
return maj > 2 || (maj === 2 && (min > 5 || (min === 5 && pat >= 7)));
|
|
101
|
-
}
|
|
102
|
-
dir = dirname(dir);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
catch { /* unresolved — no native checkpoints */ }
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
async function loadTrainingPipeline(adapter) {
|
|
109
|
-
if (pipelineLoaded)
|
|
110
|
-
return ruvllmPipeline;
|
|
111
|
-
pipelineLoaded = true;
|
|
112
|
-
try {
|
|
113
|
-
const { createRequire } = await import('module');
|
|
114
|
-
const requireCjs = createRequire(import.meta.url);
|
|
115
|
-
const ruvllm = requireCjs('@ruvector/ruvllm');
|
|
116
|
-
const config = adapter.getConfig();
|
|
117
|
-
// Create a ruvllm LoraAdapter that mirrors our JS adapter's config
|
|
118
|
-
const nativeAdapter = new ruvllm.LoraAdapter(config.inputDim, config.outputDim, config.rank);
|
|
119
|
-
ruvllmPipeline = new ruvllm.TrainingPipeline({
|
|
120
|
-
adapter: nativeAdapter,
|
|
121
|
-
learningRate: 0.001,
|
|
122
|
-
batchSize: 8,
|
|
123
|
-
});
|
|
124
|
-
return ruvllmPipeline;
|
|
125
|
-
}
|
|
126
|
-
catch {
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
// ============================================================================
|
|
131
|
-
// LoRA Adapter Class
|
|
132
|
-
// ============================================================================
|
|
133
|
-
/**
|
|
134
|
-
* Low-Rank Adaptation module for efficient embedding fine-tuning
|
|
135
|
-
*/
|
|
136
|
-
export class LoRAAdapter {
|
|
137
|
-
config;
|
|
138
|
-
weights;
|
|
139
|
-
totalAdaptations = 0;
|
|
140
|
-
totalUpdates = 0;
|
|
141
|
-
adaptationNormSum = 0;
|
|
142
|
-
lastUpdate = null;
|
|
143
|
-
updatesSinceLastSave = 0;
|
|
144
|
-
constructor(config) {
|
|
145
|
-
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
146
|
-
this.weights = this.initializeWeights();
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Eagerly load the ruvllm TrainingPipeline backend.
|
|
150
|
-
* Called automatically during first checkpoint operation,
|
|
151
|
-
* or call explicitly to make getStats() report backend status.
|
|
152
|
-
*/
|
|
153
|
-
async initBackend() {
|
|
154
|
-
await loadTrainingPipeline(this);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Get a readonly copy of the adapter configuration
|
|
158
|
-
*/
|
|
159
|
-
getConfig() {
|
|
160
|
-
return this.config;
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Initialize weights with Kaiming/He initialization
|
|
164
|
-
*/
|
|
165
|
-
initializeWeights() {
|
|
166
|
-
const { rank, inputDim, outputDim, alpha } = this.config;
|
|
167
|
-
// A: rank × inputDim, initialized with Kaiming normal
|
|
168
|
-
const A = new Float32Array(rank * inputDim);
|
|
169
|
-
const stdA = Math.sqrt(2.0 / inputDim);
|
|
170
|
-
for (let i = 0; i < A.length; i++) {
|
|
171
|
-
A[i] = this.gaussianRandom() * stdA;
|
|
172
|
-
}
|
|
173
|
-
// B: outputDim × rank, initialized to zero (standard LoRA init)
|
|
174
|
-
const B = new Float32Array(outputDim * rank);
|
|
175
|
-
// B starts at zero so initial adaptation is zero
|
|
176
|
-
return {
|
|
177
|
-
A,
|
|
178
|
-
B,
|
|
179
|
-
scaling: alpha / rank,
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Box-Muller transform for Gaussian random numbers
|
|
184
|
-
*/
|
|
185
|
-
gaussianRandom() {
|
|
186
|
-
let u = 0, v = 0;
|
|
187
|
-
while (u === 0)
|
|
188
|
-
u = Math.random();
|
|
189
|
-
while (v === 0)
|
|
190
|
-
v = Math.random();
|
|
191
|
-
return Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Initialize adapter and load persisted weights
|
|
195
|
-
*/
|
|
196
|
-
async initialize() {
|
|
197
|
-
const loaded = this.loadWeights();
|
|
198
|
-
return { success: true, weightsLoaded: loaded };
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Apply LoRA adaptation to an embedding
|
|
202
|
-
* output = input + scaling * (B @ A @ input)
|
|
203
|
-
*/
|
|
204
|
-
adapt(input) {
|
|
205
|
-
const startTime = performance.now();
|
|
206
|
-
const { rank, inputDim, outputDim } = this.config;
|
|
207
|
-
const { A, B, scaling } = this.weights;
|
|
208
|
-
// Step 1: Compute A @ input (rank-dimensional)
|
|
209
|
-
const hidden = new Float32Array(rank);
|
|
210
|
-
for (let r = 0; r < rank; r++) {
|
|
211
|
-
let sum = 0;
|
|
212
|
-
const rowOffset = r * inputDim;
|
|
213
|
-
// Unroll by 4 for SIMD-friendly access
|
|
214
|
-
let i = 0;
|
|
215
|
-
for (; i + 3 < inputDim; i += 4) {
|
|
216
|
-
sum += A[rowOffset + i] * input[i];
|
|
217
|
-
sum += A[rowOffset + i + 1] * input[i + 1];
|
|
218
|
-
sum += A[rowOffset + i + 2] * input[i + 2];
|
|
219
|
-
sum += A[rowOffset + i + 3] * input[i + 3];
|
|
220
|
-
}
|
|
221
|
-
for (; i < inputDim; i++) {
|
|
222
|
-
sum += A[rowOffset + i] * input[i];
|
|
223
|
-
}
|
|
224
|
-
hidden[r] = sum;
|
|
225
|
-
}
|
|
226
|
-
// Optional dropout (during training inference, skip)
|
|
227
|
-
// In LoRA inference, we don't apply dropout
|
|
228
|
-
// Step 2: Compute B @ hidden (outputDim-dimensional)
|
|
229
|
-
const delta = new Float32Array(outputDim);
|
|
230
|
-
for (let o = 0; o < outputDim; o++) {
|
|
231
|
-
let sum = 0;
|
|
232
|
-
const rowOffset = o * rank;
|
|
233
|
-
for (let r = 0; r < rank; r++) {
|
|
234
|
-
sum += B[rowOffset + r] * hidden[r];
|
|
235
|
-
}
|
|
236
|
-
delta[o] = sum * scaling;
|
|
237
|
-
}
|
|
238
|
-
// Step 3: Add adaptation to input
|
|
239
|
-
const adapted = new Float32Array(outputDim);
|
|
240
|
-
let adaptationNorm = 0;
|
|
241
|
-
for (let i = 0; i < outputDim; i++) {
|
|
242
|
-
adapted[i] = input[i] + delta[i];
|
|
243
|
-
adaptationNorm += delta[i] * delta[i];
|
|
244
|
-
}
|
|
245
|
-
adaptationNorm = Math.sqrt(adaptationNorm);
|
|
246
|
-
// Update stats
|
|
247
|
-
this.totalAdaptations++;
|
|
248
|
-
this.adaptationNormSum += adaptationNorm;
|
|
249
|
-
const timeMs = performance.now() - startTime;
|
|
250
|
-
return { adapted, adaptationNorm, timeMs };
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Train the adapter with a gradient signal
|
|
254
|
-
* Uses simplified update: A += lr * hidden^T @ grad, B += lr * grad @ hidden^T
|
|
255
|
-
*/
|
|
256
|
-
train(input, gradOutput, reward = 1.0) {
|
|
257
|
-
const { rank, inputDim, outputDim, learningRate } = this.config;
|
|
258
|
-
const { A, B, scaling } = this.weights;
|
|
259
|
-
// Forward pass to get hidden states
|
|
260
|
-
const hidden = new Float32Array(rank);
|
|
261
|
-
for (let r = 0; r < rank; r++) {
|
|
262
|
-
let sum = 0;
|
|
263
|
-
const rowOffset = r * inputDim;
|
|
264
|
-
for (let i = 0; i < inputDim; i++) {
|
|
265
|
-
sum += A[rowOffset + i] * input[i];
|
|
266
|
-
}
|
|
267
|
-
hidden[r] = sum;
|
|
268
|
-
}
|
|
269
|
-
// Compute gradient for B: grad_B = gradOutput @ hidden^T
|
|
270
|
-
const scaledLr = learningRate * reward * scaling;
|
|
271
|
-
for (let o = 0; o < outputDim; o++) {
|
|
272
|
-
const rowOffset = o * rank;
|
|
273
|
-
for (let r = 0; r < rank; r++) {
|
|
274
|
-
B[rowOffset + r] += scaledLr * gradOutput[o] * hidden[r];
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
// Compute gradient for hidden: grad_hidden = B^T @ gradOutput
|
|
278
|
-
const gradHidden = new Float32Array(rank);
|
|
279
|
-
for (let r = 0; r < rank; r++) {
|
|
280
|
-
let sum = 0;
|
|
281
|
-
for (let o = 0; o < outputDim; o++) {
|
|
282
|
-
sum += B[o * rank + r] * gradOutput[o];
|
|
283
|
-
}
|
|
284
|
-
gradHidden[r] = sum;
|
|
285
|
-
}
|
|
286
|
-
// Compute gradient for A: grad_A = gradHidden @ input^T
|
|
287
|
-
for (let r = 0; r < rank; r++) {
|
|
288
|
-
const rowOffset = r * inputDim;
|
|
289
|
-
for (let i = 0; i < inputDim; i++) {
|
|
290
|
-
A[rowOffset + i] += scaledLr * gradHidden[r] * input[i];
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
// Compute loss (L2 norm of gradient)
|
|
294
|
-
let loss = 0;
|
|
295
|
-
for (let i = 0; i < gradOutput.length; i++) {
|
|
296
|
-
loss += gradOutput[i] * gradOutput[i];
|
|
297
|
-
}
|
|
298
|
-
loss = Math.sqrt(loss);
|
|
299
|
-
// Update counters
|
|
300
|
-
this.totalUpdates++;
|
|
301
|
-
this.lastUpdate = Date.now();
|
|
302
|
-
this.updatesSinceLastSave++;
|
|
303
|
-
// Auto-save if needed
|
|
304
|
-
if (this.updatesSinceLastSave >= this.config.autoSaveInterval) {
|
|
305
|
-
this.saveWeights();
|
|
306
|
-
this.updatesSinceLastSave = 0;
|
|
307
|
-
}
|
|
308
|
-
return { updated: true, loss };
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Merge LoRA weights into base weights (for deployment)
|
|
312
|
-
* Returns: W' = W + scaling * B @ A
|
|
313
|
-
*/
|
|
314
|
-
merge(baseWeights) {
|
|
315
|
-
const { rank, inputDim, outputDim } = this.config;
|
|
316
|
-
const { A, B, scaling } = this.weights;
|
|
317
|
-
// Compute BA product
|
|
318
|
-
const merged = new Float32Array(baseWeights);
|
|
319
|
-
for (let o = 0; o < outputDim; o++) {
|
|
320
|
-
for (let i = 0; i < inputDim; i++) {
|
|
321
|
-
let sum = 0;
|
|
322
|
-
for (let r = 0; r < rank; r++) {
|
|
323
|
-
sum += B[o * rank + r] * A[r * inputDim + i];
|
|
324
|
-
}
|
|
325
|
-
merged[o * inputDim + i] += scaling * sum;
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
return merged;
|
|
329
|
-
}
|
|
330
|
-
/**
|
|
331
|
-
* Get current statistics
|
|
332
|
-
*/
|
|
333
|
-
getStats() {
|
|
334
|
-
const { rank, inputDim, outputDim } = this.config;
|
|
335
|
-
const originalParams = inputDim * outputDim;
|
|
336
|
-
const loraParams = rank * (inputDim + outputDim);
|
|
337
|
-
return {
|
|
338
|
-
totalAdaptations: this.totalAdaptations,
|
|
339
|
-
totalUpdates: this.totalUpdates,
|
|
340
|
-
rank: this.config.rank,
|
|
341
|
-
compressionRatio: originalParams / loraParams,
|
|
342
|
-
avgAdaptationNorm: this.totalAdaptations > 0
|
|
343
|
-
? this.adaptationNormSum / this.totalAdaptations
|
|
344
|
-
: 0,
|
|
345
|
-
lastUpdate: this.lastUpdate,
|
|
346
|
-
_trainingBackend: resolveTrainingBackend(),
|
|
347
|
-
};
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* Reset adapter to initial state
|
|
351
|
-
*/
|
|
352
|
-
reset() {
|
|
353
|
-
this.weights = this.initializeWeights();
|
|
354
|
-
this.totalAdaptations = 0;
|
|
355
|
-
this.totalUpdates = 0;
|
|
356
|
-
this.adaptationNormSum = 0;
|
|
357
|
-
this.lastUpdate = null;
|
|
358
|
-
this.updatesSinceLastSave = 0;
|
|
359
|
-
}
|
|
360
|
-
/**
|
|
361
|
-
* Save weights to disk
|
|
362
|
-
*/
|
|
363
|
-
saveWeights() {
|
|
364
|
-
try {
|
|
365
|
-
const dir = dirname(this.config.weightsPath);
|
|
366
|
-
if (!existsSync(dir)) {
|
|
367
|
-
mkdirSync(dir, { recursive: true });
|
|
368
|
-
}
|
|
369
|
-
const data = {
|
|
370
|
-
version: 1,
|
|
371
|
-
config: {
|
|
372
|
-
rank: this.config.rank,
|
|
373
|
-
alpha: this.config.alpha,
|
|
374
|
-
inputDim: this.config.inputDim,
|
|
375
|
-
outputDim: this.config.outputDim,
|
|
376
|
-
},
|
|
377
|
-
weights: {
|
|
378
|
-
A: Array.from(this.weights.A),
|
|
379
|
-
B: Array.from(this.weights.B),
|
|
380
|
-
scaling: this.weights.scaling,
|
|
381
|
-
},
|
|
382
|
-
stats: {
|
|
383
|
-
totalAdaptations: this.totalAdaptations,
|
|
384
|
-
totalUpdates: this.totalUpdates,
|
|
385
|
-
adaptationNormSum: this.adaptationNormSum,
|
|
386
|
-
lastUpdate: this.lastUpdate,
|
|
387
|
-
},
|
|
388
|
-
savedAt: new Date().toISOString(),
|
|
389
|
-
};
|
|
390
|
-
writeFileSync(this.config.weightsPath, JSON.stringify(data, null, 2));
|
|
391
|
-
return true;
|
|
392
|
-
}
|
|
393
|
-
catch {
|
|
394
|
-
return false;
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* Load weights from disk
|
|
399
|
-
*/
|
|
400
|
-
loadWeights() {
|
|
401
|
-
try {
|
|
402
|
-
if (!existsSync(this.config.weightsPath)) {
|
|
403
|
-
return false;
|
|
404
|
-
}
|
|
405
|
-
const content = readFileSync(this.config.weightsPath, 'utf-8');
|
|
406
|
-
const data = JSON.parse(content);
|
|
407
|
-
if (data.version !== 1) {
|
|
408
|
-
return false;
|
|
409
|
-
}
|
|
410
|
-
// Verify dimensions match
|
|
411
|
-
const { rank, inputDim, outputDim } = data.config;
|
|
412
|
-
if (rank !== this.config.rank ||
|
|
413
|
-
inputDim !== this.config.inputDim ||
|
|
414
|
-
outputDim !== this.config.outputDim) {
|
|
415
|
-
return false;
|
|
416
|
-
}
|
|
417
|
-
// Load weights
|
|
418
|
-
this.weights = {
|
|
419
|
-
A: new Float32Array(data.weights.A),
|
|
420
|
-
B: new Float32Array(data.weights.B),
|
|
421
|
-
scaling: data.weights.scaling,
|
|
422
|
-
};
|
|
423
|
-
// Load stats
|
|
424
|
-
this.totalAdaptations = data.stats.totalAdaptations || 0;
|
|
425
|
-
this.totalUpdates = data.stats.totalUpdates || 0;
|
|
426
|
-
this.adaptationNormSum = data.stats.adaptationNormSum || 0;
|
|
427
|
-
this.lastUpdate = data.stats.lastUpdate || null;
|
|
428
|
-
return true;
|
|
429
|
-
}
|
|
430
|
-
catch {
|
|
431
|
-
return false;
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
/**
|
|
435
|
-
* Save a training checkpoint via ruvllm TrainingPipeline.
|
|
436
|
-
* Falls back to writing our own weight JSON if ruvllm is unavailable.
|
|
437
|
-
*/
|
|
438
|
-
async saveCheckpoint(path) {
|
|
439
|
-
// Parent dir must exist for BOTH paths: ruvllm <2.5.7 never wrote a
|
|
440
|
-
// file at all, and the JS fallback's writeFileSync throws ENOENT on a
|
|
441
|
-
// missing dir — which the catch silently converted to `false` (#2549).
|
|
442
|
-
try {
|
|
443
|
-
mkdirSync(dirname(path), { recursive: true });
|
|
444
|
-
}
|
|
445
|
-
catch { /* fs errors surface on write below */ }
|
|
446
|
-
const pipeline = await loadTrainingPipeline(this);
|
|
447
|
-
if (pipeline) {
|
|
448
|
-
try {
|
|
449
|
-
pipeline.saveCheckpoint(path);
|
|
450
|
-
// Verify ruvllm actually wrote the file (<2.5.7 is a silent no-op)
|
|
451
|
-
const fs = await import('fs');
|
|
452
|
-
if (fs.existsSync(path))
|
|
453
|
-
return true;
|
|
454
|
-
}
|
|
455
|
-
catch { /* fall through to JS fallback */ }
|
|
456
|
-
}
|
|
457
|
-
// Fallback: save our own weights as JSON
|
|
458
|
-
try {
|
|
459
|
-
const fs = await import('fs');
|
|
460
|
-
const data = JSON.stringify(this.exportWeights());
|
|
461
|
-
fs.writeFileSync(path, data);
|
|
462
|
-
return true;
|
|
463
|
-
}
|
|
464
|
-
catch {
|
|
465
|
-
return false;
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
/**
|
|
469
|
-
* Load a training checkpoint via ruvllm TrainingPipeline.
|
|
470
|
-
* Falls back to reading our own weight JSON if ruvllm is unavailable.
|
|
471
|
-
*/
|
|
472
|
-
async loadCheckpoint(path) {
|
|
473
|
-
const pipeline = await loadTrainingPipeline(this);
|
|
474
|
-
if (pipeline) {
|
|
475
|
-
try {
|
|
476
|
-
pipeline.loadCheckpoint(path);
|
|
477
|
-
return true;
|
|
478
|
-
}
|
|
479
|
-
catch { /* fall through to JS fallback */ }
|
|
480
|
-
}
|
|
481
|
-
// Fallback: load from our JSON format
|
|
482
|
-
try {
|
|
483
|
-
const fs = await import('fs');
|
|
484
|
-
if (fs.existsSync(path)) {
|
|
485
|
-
const data = JSON.parse(fs.readFileSync(path, 'utf-8'));
|
|
486
|
-
return this.importWeights(data);
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
catch { /* return false below */ }
|
|
490
|
-
return false;
|
|
491
|
-
}
|
|
492
|
-
/**
|
|
493
|
-
* Export weights as JSON
|
|
494
|
-
*/
|
|
495
|
-
exportWeights() {
|
|
496
|
-
return {
|
|
497
|
-
A: Array.from(this.weights.A),
|
|
498
|
-
B: Array.from(this.weights.B),
|
|
499
|
-
scaling: this.weights.scaling,
|
|
500
|
-
config: {
|
|
501
|
-
rank: this.config.rank,
|
|
502
|
-
alpha: this.config.alpha,
|
|
503
|
-
inputDim: this.config.inputDim,
|
|
504
|
-
outputDim: this.config.outputDim,
|
|
505
|
-
},
|
|
506
|
-
};
|
|
507
|
-
}
|
|
508
|
-
/**
|
|
509
|
-
* Import weights from JSON
|
|
510
|
-
*/
|
|
511
|
-
importWeights(data) {
|
|
512
|
-
try {
|
|
513
|
-
const { rank, inputDim, outputDim } = this.config;
|
|
514
|
-
if (data.A.length !== rank * inputDim ||
|
|
515
|
-
data.B.length !== outputDim * rank) {
|
|
516
|
-
return false;
|
|
517
|
-
}
|
|
518
|
-
this.weights = {
|
|
519
|
-
A: new Float32Array(data.A),
|
|
520
|
-
B: new Float32Array(data.B),
|
|
521
|
-
scaling: data.scaling,
|
|
522
|
-
};
|
|
523
|
-
return true;
|
|
524
|
-
}
|
|
525
|
-
catch {
|
|
526
|
-
return false;
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
/**
|
|
531
|
-
* Directories `neural train` writes checkpoints to. It only ever writes to
|
|
532
|
-
* `<cwd>/.claude-flow/neural` (see commands/neural.ts + services/native-training.ts),
|
|
533
|
-
* so that is the single source of truth — kept in a helper so the discovery
|
|
534
|
-
* and status surfaces stay consistent.
|
|
535
|
-
*/
|
|
536
|
-
function checkpointDirs() {
|
|
537
|
-
return [join(process.cwd(), '.claude-flow', 'neural')];
|
|
538
|
-
}
|
|
539
|
-
/** Compact relative-age label. Most-significant unit only. */
|
|
540
|
-
export function formatCheckpointAge(ms) {
|
|
541
|
-
const s = Math.floor(ms / 1000);
|
|
542
|
-
if (s < 60)
|
|
543
|
-
return `${s}s ago`;
|
|
544
|
-
const m = Math.floor(s / 60);
|
|
545
|
-
if (m < 60)
|
|
546
|
-
return `${m}m ago`;
|
|
547
|
-
const h = Math.floor(m / 60);
|
|
548
|
-
if (h < 24)
|
|
549
|
-
return `${h}h ago`;
|
|
550
|
-
const d = Math.floor(h / 24);
|
|
551
|
-
return `${d}d ago`;
|
|
552
|
-
}
|
|
553
|
-
/**
|
|
554
|
-
* Find the newest `lora-checkpoint-<ts>.json` without loading it. Pure disk
|
|
555
|
-
* scan — safe to call from read-only status surfaces. Returns null when no
|
|
556
|
-
* checkpoint exists or the directory is unreadable.
|
|
557
|
-
*/
|
|
558
|
-
export function latestCheckpointInfo() {
|
|
559
|
-
try {
|
|
560
|
-
let best = null;
|
|
561
|
-
for (const dir of checkpointDirs()) {
|
|
562
|
-
if (!existsSync(dir))
|
|
563
|
-
continue;
|
|
564
|
-
for (const f of readdirSync(dir)) {
|
|
565
|
-
const match = /^lora-checkpoint-(\d+)\.json$/.exec(f);
|
|
566
|
-
if (!match)
|
|
567
|
-
continue;
|
|
568
|
-
const ts = Number(match[1]);
|
|
569
|
-
if (!Number.isFinite(ts))
|
|
570
|
-
continue;
|
|
571
|
-
if (!best || ts > best.ts)
|
|
572
|
-
best = { path: join(dir, f), filename: f, ts };
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
if (!best)
|
|
576
|
-
return null;
|
|
577
|
-
const ageMs = Math.max(0, Date.now() - best.ts);
|
|
578
|
-
return { path: best.path, filename: best.filename, ageMs, ageLabel: formatCheckpointAge(ageMs) };
|
|
579
|
-
}
|
|
580
|
-
catch {
|
|
581
|
-
return null;
|
|
582
|
-
}
|
|
583
|
-
}
|
|
584
|
-
/**
|
|
585
|
-
* Validate a file looks like a ruvllm training checkpoint before loading it,
|
|
586
|
-
* so a stray/corrupt JSON in the neural dir can't poison routing weights.
|
|
587
|
-
* Accepts both the JS-fallback envelope ({A,B,scaling}) and native ruvllm
|
|
588
|
-
* checkpoint shapes (weights/adapter/epoch/step/loss/version/index markers).
|
|
589
|
-
*/
|
|
590
|
-
function isCheckpointEnvelope(path) {
|
|
591
|
-
try {
|
|
592
|
-
const data = JSON.parse(readFileSync(path, 'utf-8'));
|
|
593
|
-
if (!data || typeof data !== 'object')
|
|
594
|
-
return false;
|
|
595
|
-
const obj = data;
|
|
596
|
-
if (Array.isArray(obj.A) && Array.isArray(obj.B))
|
|
597
|
-
return true;
|
|
598
|
-
return ['weights', 'adapter', 'epoch', 'step', 'loss', 'version', 'index'].some((k) => k in obj);
|
|
599
|
-
}
|
|
600
|
-
catch {
|
|
601
|
-
return false;
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
/**
|
|
605
|
-
* Flywheel entry point: locate the newest trained checkpoint and load it into
|
|
606
|
-
* `adapter` via the adapter's existing loadCheckpoint path, so routing /
|
|
607
|
-
* adaptation benefits from prior `neural train` runs.
|
|
608
|
-
*
|
|
609
|
-
* Contract: lazy (call on first adaptation use, never at CLI startup),
|
|
610
|
-
* non-fatal on any failure, and kill-switchable via
|
|
611
|
-
* CLAUDE_FLOW_NO_CHECKPOINT_AUTOLOAD=1.
|
|
612
|
-
*/
|
|
613
|
-
export async function loadLatestCheckpoint(adapter) {
|
|
614
|
-
if (process.env.CLAUDE_FLOW_NO_CHECKPOINT_AUTOLOAD === '1')
|
|
615
|
-
return { loaded: false };
|
|
616
|
-
try {
|
|
617
|
-
const info = latestCheckpointInfo();
|
|
618
|
-
if (!info)
|
|
619
|
-
return { loaded: false };
|
|
620
|
-
if (!isCheckpointEnvelope(info.path))
|
|
621
|
-
return { loaded: false, path: info.path, ageMs: info.ageMs };
|
|
622
|
-
const loaded = await adapter.loadCheckpoint(info.path);
|
|
623
|
-
return { loaded, path: info.path, ageMs: info.ageMs };
|
|
624
|
-
}
|
|
625
|
-
catch {
|
|
626
|
-
return { loaded: false };
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
// ============================================================================
|
|
630
|
-
// Singleton & Factory Functions
|
|
631
|
-
// ============================================================================
|
|
632
|
-
let loraInstance = null;
|
|
633
|
-
let initPromise = null;
|
|
634
|
-
/**
|
|
635
|
-
* Get or create singleton LoRA adapter instance
|
|
636
|
-
*/
|
|
637
|
-
export async function getLoRAAdapter() {
|
|
638
|
-
if (loraInstance) {
|
|
639
|
-
return loraInstance;
|
|
640
|
-
}
|
|
641
|
-
if (initPromise) {
|
|
642
|
-
return initPromise;
|
|
643
|
-
}
|
|
644
|
-
initPromise = (async () => {
|
|
645
|
-
const adapter = new LoRAAdapter();
|
|
646
|
-
await adapter.initialize();
|
|
647
|
-
// Flywheel: fold in the newest trained checkpoint so routing/adaptation
|
|
648
|
-
// benefits from prior `neural train` runs. This singleton is constructed
|
|
649
|
-
// lazily on first adaptation use (NOT at CLI startup), so the checkpoint
|
|
650
|
-
// scan + ruvllm load stay off the hot `--help` path. Non-fatal.
|
|
651
|
-
try {
|
|
652
|
-
await loadLatestCheckpoint(adapter);
|
|
653
|
-
}
|
|
654
|
-
catch { /* auto-load is best-effort — never block adaptation */ }
|
|
655
|
-
loraInstance = adapter;
|
|
656
|
-
return adapter;
|
|
657
|
-
})();
|
|
658
|
-
return initPromise;
|
|
659
|
-
}
|
|
660
|
-
/**
|
|
661
|
-
* Reset singleton instance (for testing)
|
|
662
|
-
*/
|
|
663
|
-
export function resetLoRAAdapter() {
|
|
664
|
-
if (loraInstance) {
|
|
665
|
-
loraInstance.reset();
|
|
666
|
-
}
|
|
667
|
-
loraInstance = null;
|
|
668
|
-
initPromise = null;
|
|
669
|
-
}
|
|
670
|
-
/**
|
|
671
|
-
* Create new LoRA adapter instance (factory)
|
|
672
|
-
*/
|
|
673
|
-
export function createLoRAAdapter(config) {
|
|
674
|
-
return new LoRAAdapter(config);
|
|
675
|
-
}
|
|
676
|
-
/**
|
|
677
|
-
* Quick adaptation (convenience function)
|
|
678
|
-
*/
|
|
679
|
-
export async function adaptEmbedding(input) {
|
|
680
|
-
const adapter = await getLoRAAdapter();
|
|
681
|
-
return adapter.adapt(input);
|
|
682
|
-
}
|
|
683
|
-
/**
|
|
684
|
-
* Quick training (convenience function)
|
|
685
|
-
*/
|
|
686
|
-
export async function trainLoRA(input, gradOutput, reward) {
|
|
687
|
-
const adapter = await getLoRAAdapter();
|
|
688
|
-
return adapter.train(input, gradOutput, reward);
|
|
689
|
-
}
|
|
690
|
-
/**
|
|
691
|
-
* Get LoRA statistics (convenience function)
|
|
692
|
-
*/
|
|
693
|
-
export async function getLoRAStats() {
|
|
694
|
-
const adapter = await getLoRAAdapter();
|
|
695
|
-
return adapter.getStats();
|
|
696
|
-
}
|
|
697
|
-
export default {
|
|
698
|
-
LoRAAdapter,
|
|
699
|
-
getLoRAAdapter,
|
|
700
|
-
resetLoRAAdapter,
|
|
701
|
-
createLoRAAdapter,
|
|
702
|
-
adaptEmbedding,
|
|
703
|
-
trainLoRA,
|
|
704
|
-
getLoRAStats,
|
|
705
|
-
DEFAULT_RANK,
|
|
706
|
-
DEFAULT_ALPHA,
|
|
707
|
-
INPUT_DIM,
|
|
708
|
-
OUTPUT_DIM,
|
|
709
|
-
};
|
|
710
|
-
//# sourceMappingURL=lora-adapter.js.map
|