@monoes/monomindcli 1.10.57 → 1.11.0
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/agents/core/coordinator.md +71 -0
- package/.claude/agents/generated/case-analyst.md +50 -0
- package/.claude/agents/generated/copy-editor.md +45 -0
- package/.claude/agents/generated/court-reporter.md +50 -0
- package/.claude/agents/generated/defender.md +51 -0
- package/.claude/agents/generated/editor-in-chief.md +45 -0
- package/.claude/agents/generated/fact-checker.md +45 -0
- package/.claude/agents/generated/judge.md +51 -0
- package/.claude/agents/generated/prosecutor.md +51 -0
- package/.claude/agents/generated/reporter.md +45 -0
- package/.claude/commands/hooks/README.md +1 -1
- package/.claude/commands/hooks/overview.md +1 -1
- package/.claude/commands/mastermind/_repeat.md +1 -1
- package/.claude/commands/mastermind/do.md +3 -1
- package/.claude/commands/mastermind/help.md +2 -2
- package/.claude/commands/mastermind/master.md +39 -6
- package/.claude/commands/mastermind/memory.md +1 -1
- package/.claude/commands/memory/memory-search.md +2 -2
- package/.claude/commands/monitoring/status.md +1 -1
- package/.claude/commands/{browse.md → monobrowse.md} +2 -2
- package/.claude/commands/sparc.md +1 -1
- package/.claude/helpers/handlers/graph-status-handler.cjs +1 -1
- package/.claude/helpers/loop-tracker.cjs +1 -1
- package/.claude/skills/agent-browser-testing/SKILL.md +1 -1
- package/.claude/skills/hooks-automation/SKILL.md +0 -3
- package/.claude/skills/mastermind/build.md +1 -1
- package/.claude/skills/mastermind/code-quality-reviewer-prompt.md +60 -0
- package/.claude/skills/mastermind/content.md +1 -1
- package/.claude/skills/mastermind/createorg.md +79 -2
- package/.claude/skills/mastermind/design.md +3 -1
- package/.claude/skills/mastermind/finance.md +1 -1
- package/.claude/skills/mastermind/implementer-prompt.md +109 -0
- package/.claude/skills/mastermind/marketing.md +1 -1
- package/.claude/skills/mastermind/ops.md +1 -1
- package/.claude/skills/mastermind/plan.md +20 -2
- package/.claude/skills/mastermind/release.md +1 -1
- package/.claude/skills/mastermind/research.md +1 -1
- package/.claude/skills/mastermind/review.md +1 -1
- package/.claude/skills/mastermind/sales.md +1 -1
- package/.claude/skills/mastermind/spec-reviewer-prompt.md +63 -0
- package/.claude/skills/sparc-methodology/SKILL.md +3 -3
- package/.claude/skills/swarm-advanced/SKILL.md +1 -4
- package/README.md +18 -32
- package/dist/src/agents/registry-builder.d.ts +1 -7
- package/dist/src/agents/registry-builder.d.ts.map +1 -1
- package/dist/src/agents/registry-builder.js +10 -6
- package/dist/src/agents/registry-builder.js.map +1 -1
- package/dist/src/benchmarks/benchmark-runner.d.ts +59 -12
- package/dist/src/benchmarks/benchmark-runner.d.ts.map +1 -1
- package/dist/src/benchmarks/benchmark-runner.js +67 -13
- package/dist/src/benchmarks/benchmark-runner.js.map +1 -1
- package/dist/src/benchmarks/metric-evaluators.d.ts.map +1 -1
- package/dist/src/benchmarks/metric-evaluators.js.map +1 -1
- package/dist/src/benchmarks/pretrain/index.d.ts +0 -13
- package/dist/src/benchmarks/pretrain/index.d.ts.map +1 -1
- package/dist/src/benchmarks/pretrain/index.js.map +1 -1
- package/dist/src/commands/agent-wasm.d.ts +2 -2
- package/dist/src/commands/agent-wasm.js +5 -5
- package/dist/src/commands/agent.d.ts.map +1 -1
- package/dist/src/commands/agent.js +1 -6
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/analyze.d.ts +1 -1
- package/dist/src/commands/analyze.d.ts.map +1 -1
- package/dist/src/commands/analyze.js +8 -18
- package/dist/src/commands/analyze.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +53 -3
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/embeddings.d.ts.map +1 -1
- package/dist/src/commands/embeddings.js +9 -33
- package/dist/src/commands/embeddings.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +24 -76
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +4 -6
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +8 -15
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init.js +2 -2
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/issues.d.ts.map +1 -1
- package/dist/src/commands/issues.js +16 -11
- package/dist/src/commands/issues.js.map +1 -1
- package/dist/src/commands/memory.js +6 -6
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/migrate.d.ts.map +1 -1
- package/dist/src/commands/migrate.js +1 -2
- package/dist/src/commands/migrate.js.map +1 -1
- package/dist/src/commands/monograph.d.ts.map +1 -1
- package/dist/src/commands/monograph.js +18 -11
- package/dist/src/commands/monograph.js.map +1 -1
- package/dist/src/commands/monovector/backup.d.ts +11 -0
- package/dist/src/commands/monovector/backup.d.ts.map +1 -0
- package/dist/src/commands/{ruvector → monovector}/backup.js +25 -25
- package/dist/src/commands/monovector/backup.js.map +1 -0
- package/dist/src/commands/monovector/benchmark.d.ts +11 -0
- package/dist/src/commands/monovector/benchmark.d.ts.map +1 -0
- package/dist/src/commands/{ruvector → monovector}/benchmark.js +14 -14
- package/dist/src/commands/monovector/benchmark.js.map +1 -0
- package/dist/src/commands/monovector/import.d.ts +18 -0
- package/dist/src/commands/monovector/import.d.ts.map +1 -0
- package/dist/src/commands/{ruvector → monovector}/import.js +21 -21
- package/dist/src/commands/monovector/import.js.map +1 -0
- package/dist/src/commands/{ruvector → monovector}/index.d.ts +6 -6
- package/dist/src/commands/monovector/index.d.ts.map +1 -0
- package/dist/src/commands/{ruvector → monovector}/index.js +22 -22
- package/dist/src/commands/monovector/index.js.map +1 -0
- package/dist/src/commands/monovector/init.d.ts +11 -0
- package/dist/src/commands/monovector/init.d.ts.map +1 -0
- package/dist/src/commands/{ruvector → monovector}/init.js +36 -36
- package/dist/src/commands/monovector/init.js.map +1 -0
- package/dist/src/commands/monovector/migrate.d.ts +11 -0
- package/dist/src/commands/monovector/migrate.d.ts.map +1 -0
- package/dist/src/commands/{ruvector → monovector}/migrate.js +16 -16
- package/dist/src/commands/monovector/migrate.js.map +1 -0
- package/dist/src/commands/{ruvector → monovector}/optimize.d.ts +2 -2
- package/dist/src/commands/monovector/optimize.d.ts.map +1 -0
- package/dist/src/commands/{ruvector → monovector}/optimize.js +10 -10
- package/dist/src/commands/monovector/optimize.js.map +1 -0
- package/dist/src/commands/monovector/setup.d.ts +18 -0
- package/dist/src/commands/monovector/setup.d.ts.map +1 -0
- package/dist/src/commands/{ruvector → monovector}/setup.js +77 -77
- package/dist/src/commands/monovector/setup.js.map +1 -0
- package/dist/src/commands/{ruvector → monovector}/status.d.ts +2 -2
- package/dist/src/commands/monovector/status.d.ts.map +1 -0
- package/dist/src/commands/{ruvector → monovector}/status.js +34 -34
- package/dist/src/commands/monovector/status.js.map +1 -0
- package/dist/src/commands/neural.d.ts +1 -1
- package/dist/src/commands/neural.d.ts.map +1 -1
- package/dist/src/commands/neural.js +31 -608
- package/dist/src/commands/neural.js.map +1 -1
- package/dist/src/commands/performance.d.ts.map +1 -1
- package/dist/src/commands/performance.js +7 -10
- package/dist/src/commands/performance.js.map +1 -1
- package/dist/src/commands/plugins.d.ts.map +1 -1
- package/dist/src/commands/plugins.js +3 -4
- package/dist/src/commands/plugins.js.map +1 -1
- package/dist/src/commands/process.d.ts.map +1 -1
- package/dist/src/commands/process.js +5 -12
- package/dist/src/commands/process.js.map +1 -1
- package/dist/src/commands/progress.d.ts.map +1 -1
- package/dist/src/commands/progress.js +16 -16
- package/dist/src/commands/progress.js.map +1 -1
- package/dist/src/commands/replay.d.ts.map +1 -1
- package/dist/src/commands/replay.js.map +1 -1
- package/dist/src/commands/route.d.ts +2 -2
- package/dist/src/commands/route.js +23 -23
- package/dist/src/commands/route.js.map +1 -1
- package/dist/src/commands/status.d.ts.map +1 -1
- package/dist/src/commands/status.js +0 -3
- package/dist/src/commands/status.js.map +1 -1
- package/dist/src/commands/swarm.d.ts.map +1 -1
- package/dist/src/commands/swarm.js +2 -3
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/config-adapter.d.ts.map +1 -1
- package/dist/src/config-adapter.js +27 -0
- package/dist/src/config-adapter.js.map +1 -1
- package/dist/src/consensus/audit-writer.d.ts +44 -17
- package/dist/src/consensus/audit-writer.d.ts.map +1 -1
- package/dist/src/consensus/audit-writer.js.map +1 -1
- package/dist/src/dlq/dlq-replayer.d.ts +1 -1
- package/dist/src/dlq/dlq-replayer.d.ts.map +1 -1
- package/dist/src/index.js +5 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/claudemd-generator.d.ts.map +1 -1
- package/dist/src/init/claudemd-generator.js +10 -14
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +17 -27
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.js +2 -2
- package/dist/src/init/types.d.ts +1 -1
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +1 -7
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.d.ts.map +1 -1
- package/dist/src/mcp-server.js +9 -1
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +1 -52
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.js +5 -5
- package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
- package/dist/src/mcp-tools/browser-tools.d.ts +1 -1
- package/dist/src/mcp-tools/browser-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/browser-tools.js +6 -5
- package/dist/src/mcp-tools/browser-tools.js.map +1 -1
- package/dist/src/mcp-tools/coordination-tools.d.ts +1 -1
- package/dist/src/mcp-tools/coordination-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/coordination-tools.js +51 -54
- package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
- package/dist/src/mcp-tools/daa-tools.d.ts +1 -1
- package/dist/src/mcp-tools/daa-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/daa-tools.js.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.js +10 -10
- package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
- package/dist/src/mcp-tools/guidance-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/guidance-tools.js +0 -24
- package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +189 -480
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +0 -2
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +0 -2
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/monograph-compat.d.ts +334 -0
- package/dist/src/mcp-tools/monograph-compat.d.ts.map +1 -0
- package/dist/src/mcp-tools/monograph-compat.js +1108 -0
- package/dist/src/mcp-tools/monograph-compat.js.map +1 -0
- package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.js +76 -34
- package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
- package/dist/src/mcp-tools/neural-tools.d.ts +1 -1
- package/dist/src/mcp-tools/neural-tools.js +2 -2
- package/dist/src/mcp-tools/neural-tools.js.map +1 -1
- package/dist/src/mcp-tools/ruvllm-tools.d.ts +2 -2
- package/dist/src/mcp-tools/ruvllm-tools.js +3 -3
- package/dist/src/mcp-tools/terminal-tools.d.ts +1 -1
- package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.js +29 -19
- package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
- package/dist/src/mcp-tools/wasm-agent-tools.d.ts +1 -1
- package/dist/src/mcp-tools/wasm-agent-tools.js +2 -2
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +14 -8
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +17 -2
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +76 -23
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts +2 -2
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +37 -39
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/monovector/capabilities.d.ts +34 -0
- package/dist/src/monovector/capabilities.d.ts.map +1 -0
- package/dist/src/monovector/capabilities.js +37 -0
- package/dist/src/monovector/capabilities.js.map +1 -0
- package/dist/src/monovector/command-outcomes.d.ts +37 -0
- package/dist/src/monovector/command-outcomes.d.ts.map +1 -0
- package/dist/src/monovector/command-outcomes.js +87 -0
- package/dist/src/monovector/command-outcomes.js.map +1 -0
- package/dist/src/monovector/coverage-router.d.ts +103 -0
- package/dist/src/monovector/coverage-router.d.ts.map +1 -0
- package/dist/src/monovector/coverage-router.js +337 -0
- package/dist/src/monovector/coverage-router.js.map +1 -0
- package/dist/src/monovector/coverage-tools.d.ts +14 -0
- package/dist/src/monovector/coverage-tools.d.ts.map +1 -0
- package/dist/src/monovector/coverage-tools.js +112 -0
- package/dist/src/monovector/coverage-tools.js.map +1 -0
- package/dist/src/{ruvector → monovector}/diff-classifier.d.ts +2 -2
- package/dist/src/monovector/diff-classifier.d.ts.map +1 -0
- package/dist/src/monovector/diff-classifier.js.map +1 -0
- package/dist/src/monovector/index.d.ts +61 -0
- package/dist/src/monovector/index.d.ts.map +1 -0
- package/dist/src/monovector/index.js +67 -0
- package/dist/src/monovector/index.js.map +1 -0
- package/dist/src/monovector/init-state.d.ts +35 -0
- package/dist/src/monovector/init-state.d.ts.map +1 -0
- package/dist/src/monovector/init-state.js +36 -0
- package/dist/src/monovector/init-state.js.map +1 -0
- package/dist/src/monovector/route-outcomes.d.ts +55 -0
- package/dist/src/monovector/route-outcomes.d.ts.map +1 -0
- package/dist/src/monovector/route-outcomes.js +137 -0
- package/dist/src/monovector/route-outcomes.js.map +1 -0
- package/dist/src/parser.js +3 -3
- package/dist/src/parser.js.map +1 -1
- package/dist/src/plugins/store/discovery.d.ts.map +1 -1
- package/dist/src/plugins/store/discovery.js +0 -31
- package/dist/src/plugins/store/discovery.js.map +1 -1
- package/dist/src/production/circuit-breaker.d.ts +26 -6
- package/dist/src/production/circuit-breaker.d.ts.map +1 -1
- package/dist/src/production/circuit-breaker.js.map +1 -1
- package/dist/src/production/error-handler.d.ts +55 -30
- package/dist/src/production/error-handler.d.ts.map +1 -1
- package/dist/src/production/error-handler.js.map +1 -1
- package/dist/src/production/index.d.ts +3 -20
- package/dist/src/production/index.d.ts.map +1 -1
- package/dist/src/production/index.js +3 -15
- package/dist/src/production/index.js.map +1 -1
- package/dist/src/production/monitoring.d.ts +54 -34
- package/dist/src/production/monitoring.d.ts.map +1 -1
- package/dist/src/production/monitoring.js +12 -14
- package/dist/src/production/monitoring.js.map +1 -1
- package/dist/src/production/rate-limiter.d.ts +64 -19
- package/dist/src/production/rate-limiter.d.ts.map +1 -1
- package/dist/src/production/rate-limiter.js +5 -5
- package/dist/src/production/rate-limiter.js.map +1 -1
- package/dist/src/production/retry.d.ts.map +1 -1
- package/dist/src/production/retry.js +4 -2
- package/dist/src/production/retry.js.map +1 -1
- package/dist/src/services/claim-service.d.ts +50 -59
- package/dist/src/services/claim-service.d.ts.map +1 -1
- package/dist/src/services/claim-service.js +83 -50
- package/dist/src/services/claim-service.js.map +1 -1
- package/dist/src/services/config-file-manager.d.ts.map +1 -1
- package/dist/src/services/config-file-manager.js +8 -1
- package/dist/src/services/config-file-manager.js.map +1 -1
- package/dist/src/services/worker-daemon.d.ts.map +1 -1
- package/dist/src/services/worker-daemon.js +4 -0
- package/dist/src/services/worker-daemon.js.map +1 -1
- package/dist/src/types.d.ts +13 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/ui/collector.mjs +51 -11
- package/dist/src/ui/dashboard.html +313 -88
- package/dist/src/ui/server.mjs +163 -8
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -13
- package/scripts/publish-registry.ts +0 -1
- package/.claude/commands/monomind/adr.md +0 -11
- package/.claude/commands/monomind/budget.md +0 -7
- package/.claude/commands/monomind/createtask.md +0 -277
- package/.claude/commands/monomind/do.md +0 -498
- package/.claude/commands/monomind/graph-status.md +0 -7
- package/.claude/commands/monomind/help.md +0 -118
- package/.claude/commands/monomind/idea.md +0 -273
- package/.claude/commands/monomind/improve.md +0 -352
- package/.claude/commands/monomind/loops.md +0 -7
- package/.claude/commands/monomind/memory.md +0 -230
- package/.claude/commands/monomind/repeat.md +0 -257
- package/.claude/commands/monomind/review.md +0 -317
- package/.claude/commands/monomind/specialagents.md +0 -125
- package/.claude/commands/monomind/swarm.md +0 -161
- package/.claude/commands/monomind/understand.md +0 -139
- package/.claude/commands/training/README.md +0 -39
- package/.claude/commands/training/neural-patterns.md +0 -73
- package/.claude/commands/training/neural-train.md +0 -79
- package/dist/src/commands/appliance-advanced.d.ts +0 -9
- package/dist/src/commands/appliance-advanced.d.ts.map +0 -1
- package/dist/src/commands/appliance-advanced.js +0 -238
- package/dist/src/commands/appliance-advanced.js.map +0 -1
- package/dist/src/commands/appliance.d.ts +0 -8
- package/dist/src/commands/appliance.d.ts.map +0 -1
- package/dist/src/commands/appliance.js +0 -406
- package/dist/src/commands/appliance.js.map +0 -1
- package/dist/src/commands/ruvector/backup.d.ts +0 -11
- package/dist/src/commands/ruvector/backup.d.ts.map +0 -1
- package/dist/src/commands/ruvector/backup.js.map +0 -1
- package/dist/src/commands/ruvector/benchmark.d.ts +0 -11
- package/dist/src/commands/ruvector/benchmark.d.ts.map +0 -1
- package/dist/src/commands/ruvector/benchmark.js.map +0 -1
- package/dist/src/commands/ruvector/import.d.ts +0 -18
- package/dist/src/commands/ruvector/import.d.ts.map +0 -1
- package/dist/src/commands/ruvector/import.js.map +0 -1
- package/dist/src/commands/ruvector/index.d.ts.map +0 -1
- package/dist/src/commands/ruvector/index.js.map +0 -1
- package/dist/src/commands/ruvector/init.d.ts +0 -11
- package/dist/src/commands/ruvector/init.d.ts.map +0 -1
- package/dist/src/commands/ruvector/init.js.map +0 -1
- package/dist/src/commands/ruvector/migrate.d.ts +0 -11
- package/dist/src/commands/ruvector/migrate.d.ts.map +0 -1
- package/dist/src/commands/ruvector/migrate.js.map +0 -1
- package/dist/src/commands/ruvector/optimize.d.ts.map +0 -1
- package/dist/src/commands/ruvector/optimize.js.map +0 -1
- package/dist/src/commands/ruvector/setup.d.ts +0 -18
- package/dist/src/commands/ruvector/setup.d.ts.map +0 -1
- package/dist/src/commands/ruvector/setup.js.map +0 -1
- package/dist/src/commands/ruvector/status.d.ts.map +0 -1
- package/dist/src/commands/ruvector/status.js.map +0 -1
- package/dist/src/ruvector/agent-wasm.d.ts +0 -182
- package/dist/src/ruvector/agent-wasm.d.ts.map +0 -1
- package/dist/src/ruvector/agent-wasm.js +0 -316
- package/dist/src/ruvector/agent-wasm.js.map +0 -1
- package/dist/src/ruvector/ast-analyzer.d.ts +0 -67
- package/dist/src/ruvector/ast-analyzer.d.ts.map +0 -1
- package/dist/src/ruvector/ast-analyzer.js +0 -277
- package/dist/src/ruvector/ast-analyzer.js.map +0 -1
- package/dist/src/ruvector/coverage-router.d.ts +0 -160
- package/dist/src/ruvector/coverage-router.d.ts.map +0 -1
- package/dist/src/ruvector/coverage-router.js +0 -539
- package/dist/src/ruvector/coverage-router.js.map +0 -1
- package/dist/src/ruvector/coverage-tools.d.ts +0 -33
- package/dist/src/ruvector/coverage-tools.d.ts.map +0 -1
- package/dist/src/ruvector/coverage-tools.js +0 -157
- package/dist/src/ruvector/coverage-tools.js.map +0 -1
- package/dist/src/ruvector/diff-classifier.d.ts.map +0 -1
- package/dist/src/ruvector/diff-classifier.js.map +0 -1
- package/dist/src/ruvector/enhanced-model-router.d.ts +0 -146
- package/dist/src/ruvector/enhanced-model-router.d.ts.map +0 -1
- package/dist/src/ruvector/enhanced-model-router.js +0 -551
- package/dist/src/ruvector/enhanced-model-router.js.map +0 -1
- package/dist/src/ruvector/flash-attention.d.ts +0 -195
- package/dist/src/ruvector/flash-attention.d.ts.map +0 -1
- package/dist/src/ruvector/flash-attention.js +0 -643
- package/dist/src/ruvector/flash-attention.js.map +0 -1
- package/dist/src/ruvector/graph-analyzer.d.ts +0 -187
- package/dist/src/ruvector/graph-analyzer.d.ts.map +0 -1
- package/dist/src/ruvector/graph-analyzer.js +0 -929
- package/dist/src/ruvector/graph-analyzer.js.map +0 -1
- package/dist/src/ruvector/index.d.ts +0 -67
- package/dist/src/ruvector/index.d.ts.map +0 -1
- package/dist/src/ruvector/index.js +0 -88
- package/dist/src/ruvector/index.js.map +0 -1
- package/dist/src/ruvector/lora-adapter.d.ts +0 -218
- package/dist/src/ruvector/lora-adapter.d.ts.map +0 -1
- package/dist/src/ruvector/lora-adapter.js +0 -455
- package/dist/src/ruvector/lora-adapter.js.map +0 -1
- package/dist/src/ruvector/model-router.d.ts +0 -222
- package/dist/src/ruvector/model-router.d.ts.map +0 -1
- package/dist/src/ruvector/model-router.js +0 -512
- package/dist/src/ruvector/model-router.js.map +0 -1
- package/dist/src/ruvector/moe-router.d.ts +0 -213
- package/dist/src/ruvector/moe-router.d.ts.map +0 -1
- package/dist/src/ruvector/moe-router.js +0 -649
- package/dist/src/ruvector/moe-router.js.map +0 -1
- package/dist/src/ruvector/q-learning-router.d.ts +0 -217
- package/dist/src/ruvector/q-learning-router.d.ts.map +0 -1
- package/dist/src/ruvector/q-learning-router.js +0 -712
- package/dist/src/ruvector/q-learning-router.js.map +0 -1
- package/dist/src/ruvector/ruvllm-wasm.d.ts +0 -179
- package/dist/src/ruvector/ruvllm-wasm.d.ts.map +0 -1
- package/dist/src/ruvector/ruvllm-wasm.js +0 -363
- package/dist/src/ruvector/ruvllm-wasm.js.map +0 -1
- package/dist/src/ruvector/semantic-router.d.ts +0 -77
- package/dist/src/ruvector/semantic-router.d.ts.map +0 -1
- package/dist/src/ruvector/semantic-router.js +0 -178
- package/dist/src/ruvector/semantic-router.js.map +0 -1
- package/dist/src/ruvector/vector-db.d.ts +0 -69
- package/dist/src/ruvector/vector-db.d.ts.map +0 -1
- package/dist/src/ruvector/vector-db.js +0 -243
- package/dist/src/ruvector/vector-db.js.map +0 -1
- package/dist/src/services/ruvector-training.d.ts +0 -222
- package/dist/src/services/ruvector-training.d.ts.map +0 -1
- package/dist/src/services/ruvector-training.js +0 -696
- package/dist/src/services/ruvector-training.js.map +0 -1
- package/dist/src/ui/.monomind/loops/loop-1779095996252-mdjpp.json +0 -11
- package/dist/src/ui/data/agent-avatars.html +0 -763
- package/dist/src/ui/data/agent-avatars.json +0 -966
- package/dist/src/ui/data/avatars/account-strategist.svg +0 -58
- package/dist/src/ui/data/avatars/accounts-payable.svg +0 -54
- package/dist/src/ui/data/avatars/adaptive-coordinator.svg +0 -55
- package/dist/src/ui/data/avatars/adaptive-coordinator2.svg +0 -54
- package/dist/src/ui/data/avatars/ai-citation.svg +0 -57
- package/dist/src/ui/data/avatars/ai-engineer.svg +0 -61
- package/dist/src/ui/data/avatars/analytics-reporter.svg +0 -53
- package/dist/src/ui/data/avatars/api-tester.svg +0 -53
- package/dist/src/ui/data/avatars/architecture.svg +0 -54
- package/dist/src/ui/data/avatars/automation-governance.svg +0 -55
- package/dist/src/ui/data/avatars/backend-dev.svg +0 -53
- package/dist/src/ui/data/avatars/benchmarker.svg +0 -54
- package/dist/src/ui/data/avatars/blockchain-auditor.svg +0 -53
- package/dist/src/ui/data/avatars/byzantine-coord.svg +0 -57
- package/dist/src/ui/data/avatars/case-analyst.svg +0 -57
- package/dist/src/ui/data/avatars/cicd-engineer.svg +0 -55
- package/dist/src/ui/data/avatars/cloud-architect.svg +0 -54
- package/dist/src/ui/data/avatars/code-review-swarm.svg +0 -57
- package/dist/src/ui/data/avatars/coder-v119.svg +0 -57
- package/dist/src/ui/data/avatars/coder.svg +0 -58
- package/dist/src/ui/data/avatars/collective-coord.svg +0 -54
- package/dist/src/ui/data/avatars/compliance-auditor.svg +0 -58
- package/dist/src/ui/data/avatars/consensus-coordinator.svg +0 -54
- package/dist/src/ui/data/avatars/content-creator.svg +0 -54
- package/dist/src/ui/data/avatars/crdt-synchronizer.svg +0 -53
- package/dist/src/ui/data/avatars/cro-specialist.svg +0 -58
- package/dist/src/ui/data/avatars/data-consolidator.svg +0 -54
- package/dist/src/ui/data/avatars/data-engineer.svg +0 -53
- package/dist/src/ui/data/avatars/database-optimizer.svg +0 -61
- package/dist/src/ui/data/avatars/deal-strategist.svg +0 -54
- package/dist/src/ui/data/avatars/defender.svg +0 -53
- package/dist/src/ui/data/avatars/devops-automator.svg +0 -56
- package/dist/src/ui/data/avatars/discovery-coach.svg +0 -54
- package/dist/src/ui/data/avatars/email-marketing.svg +0 -57
- package/dist/src/ui/data/avatars/embedded-firmware.svg +0 -61
- package/dist/src/ui/data/avatars/evidence-collector.svg +0 -57
- package/dist/src/ui/data/avatars/experiment-tracker.svg +0 -53
- package/dist/src/ui/data/avatars/feedback-synthesizer.svg +0 -54
- package/dist/src/ui/data/avatars/finance-tracker.svg +0 -54
- package/dist/src/ui/data/avatars/frontend-developer.svg +0 -54
- package/dist/src/ui/data/avatars/game-audio-engineer.svg +0 -59
- package/dist/src/ui/data/avatars/game-designer.svg +0 -54
- package/dist/src/ui/data/avatars/gossip-coordinator.svg +0 -54
- package/dist/src/ui/data/avatars/hierarchical-coord.svg +0 -54
- package/dist/src/ui/data/avatars/incident-commander.svg +0 -57
- package/dist/src/ui/data/avatars/infrastructure.svg +0 -54
- package/dist/src/ui/data/avatars/input-validator.svg +0 -53
- package/dist/src/ui/data/avatars/ios-developer.svg +0 -54
- package/dist/src/ui/data/avatars/issue-tracker.svg +0 -53
- package/dist/src/ui/data/avatars/judge.svg +0 -55
- package/dist/src/ui/data/avatars/launch-strategist.svg +0 -54
- package/dist/src/ui/data/avatars/legal-compliance.svg +0 -53
- package/dist/src/ui/data/avatars/level-designer.svg +0 -53
- package/dist/src/ui/data/avatars/load-balancer.svg +0 -57
- package/dist/src/ui/data/avatars/mcp-builder.svg +0 -53
- package/dist/src/ui/data/avatars/memory-coordinator.svg +0 -55
- package/dist/src/ui/data/avatars/mesh-coordinator.svg +0 -55
- package/dist/src/ui/data/avatars/ml-developer.svg +0 -58
- package/dist/src/ui/data/avatars/mobile-app-builder.svg +0 -53
- package/dist/src/ui/data/avatars/mobile-dev.svg +0 -54
- package/dist/src/ui/data/avatars/model-qa.svg +0 -58
- package/dist/src/ui/data/avatars/narrative-designer.svg +0 -58
- package/dist/src/ui/data/avatars/outbound-strategist.svg +0 -55
- package/dist/src/ui/data/avatars/path-validator.svg +0 -54
- package/dist/src/ui/data/avatars/payment-agent.svg +0 -53
- package/dist/src/ui/data/avatars/perf-analyzer.svg +0 -58
- package/dist/src/ui/data/avatars/pipeline-analyst.svg +0 -54
- package/dist/src/ui/data/avatars/planner.svg +0 -55
- package/dist/src/ui/data/avatars/pr-manager.svg +0 -54
- package/dist/src/ui/data/avatars/pricing-strategist.svg +0 -54
- package/dist/src/ui/data/avatars/product-manager.svg +0 -54
- package/dist/src/ui/data/avatars/production-validator.svg +0 -54
- package/dist/src/ui/data/avatars/project-shepherd.svg +0 -54
- package/dist/src/ui/data/avatars/proposal-strategist.svg +0 -54
- package/dist/src/ui/data/avatars/prosecutor.svg +0 -57
- package/dist/src/ui/data/avatars/pseudocode.svg +0 -53
- package/dist/src/ui/data/avatars/queen-coordinator.svg +0 -55
- package/dist/src/ui/data/avatars/quorum-manager.svg +0 -53
- package/dist/src/ui/data/avatars/raft-manager.svg +0 -53
- package/dist/src/ui/data/avatars/reality-checker.svg +0 -58
- package/dist/src/ui/data/avatars/recruitment.svg +0 -58
- package/dist/src/ui/data/avatars/refinement.svg +0 -53
- package/dist/src/ui/data/avatars/release-manager.svg +0 -54
- package/dist/src/ui/data/avatars/repo-architect.svg +0 -54
- package/dist/src/ui/data/avatars/researcher.svg +0 -58
- package/dist/src/ui/data/avatars/resource-allocator.svg +0 -53
- package/dist/src/ui/data/avatars/reviewer.svg +0 -53
- package/dist/src/ui/data/avatars/safe-executor.svg +0 -53
- package/dist/src/ui/data/avatars/sales-coach.svg +0 -53
- package/dist/src/ui/data/avatars/sales-engineer.svg +0 -58
- package/dist/src/ui/data/avatars/scout-explorer.svg +0 -58
- package/dist/src/ui/data/avatars/security-architect.svg +0 -54
- package/dist/src/ui/data/avatars/security-auditor.svg +0 -55
- package/dist/src/ui/data/avatars/senior-developer.svg +0 -58
- package/dist/src/ui/data/avatars/senior-pm.svg +0 -58
- package/dist/src/ui/data/avatars/seo-specialist.svg +0 -57
- package/dist/src/ui/data/avatars/social-media.svg +0 -54
- package/dist/src/ui/data/avatars/solidity-engineer.svg +0 -58
- package/dist/src/ui/data/avatars/sparc-coder.svg +0 -58
- package/dist/src/ui/data/avatars/sparc-coord.svg +0 -56
- package/dist/src/ui/data/avatars/specification.svg +0 -57
- package/dist/src/ui/data/avatars/sprint-prioritizer.svg +0 -53
- package/dist/src/ui/data/avatars/sre.svg +0 -54
- package/dist/src/ui/data/avatars/studio-operations.svg +0 -53
- package/dist/src/ui/data/avatars/studio-producer.svg +0 -55
- package/dist/src/ui/data/avatars/support-responder.svg +0 -56
- package/dist/src/ui/data/avatars/system-architect.svg +0 -54
- package/dist/src/ui/data/avatars/task-orchestrator.svg +0 -56
- package/dist/src/ui/data/avatars/technical-artist.svg +0 -53
- package/dist/src/ui/data/avatars/technical-writer.svg +0 -59
- package/dist/src/ui/data/avatars/tester.svg +0 -53
- package/dist/src/ui/data/avatars/threat-detection.svg +0 -61
- package/dist/src/ui/data/avatars/trend-researcher.svg +0 -54
- package/dist/src/ui/data/avatars/trial-director.svg +0 -55
- package/dist/src/ui/data/avatars/unity-architect.svg +0 -54
- package/dist/src/ui/data/avatars/visionos-engineer.svg +0 -57
- package/dist/src/ui/data/avatars/worker-specialist.svg +0 -55
- package/dist/src/ui/data/avatars/workflow-architect.svg +0 -57
- package/dist/src/ui/data/avatars/workflow-automation.svg +0 -54
- package/dist/src/ui/data/avatars/zk-steward.svg +0 -54
- package/dist/src/ui/data/known-projects.json +0 -1
- /package/dist/src/{ruvector → monovector}/diff-classifier.js +0 -0
|
@@ -1,429 +1,51 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CLI Neural Command
|
|
3
|
-
*
|
|
3
|
+
* Pattern learning, search, and prediction backed by the pure-JS intelligence layer
|
|
4
4
|
*
|
|
5
5
|
* github.com/nokhodian/monomind
|
|
6
6
|
*/
|
|
7
7
|
import { output } from '../output.js';
|
|
8
|
-
//
|
|
9
|
-
const trainCommand = {
|
|
10
|
-
name: 'train',
|
|
11
|
-
description: 'Train neural patterns with WASM SIMD acceleration (MicroLoRA + Flash Attention)',
|
|
12
|
-
options: [
|
|
13
|
-
{ name: 'pattern', short: 'p', type: 'string', description: 'Pattern type: coordination, optimization, prediction, security, testing', default: 'coordination' },
|
|
14
|
-
{ name: 'epochs', short: 'e', type: 'number', description: 'Number of training epochs', default: '50' },
|
|
15
|
-
{ name: 'data', short: 'd', type: 'string', description: 'Training data file or inline JSON' },
|
|
16
|
-
{ name: 'model', short: 'm', type: 'string', description: 'Model ID to train' },
|
|
17
|
-
{ name: 'learning-rate', short: 'l', type: 'number', description: 'Learning rate', default: '0.01' },
|
|
18
|
-
{ name: 'batch-size', short: 'b', type: 'number', description: 'Batch size', default: '32' },
|
|
19
|
-
{ name: 'dim', type: 'number', description: 'Embedding dimension (max 256)', default: '256' },
|
|
20
|
-
{ name: 'wasm', short: 'w', type: 'boolean', description: 'Use RuVector WASM acceleration', default: 'true' },
|
|
21
|
-
{ name: 'flash', type: 'boolean', description: 'Enable Flash Attention (2.49x-7.47x speedup)', default: 'true' },
|
|
22
|
-
{ name: 'moe', type: 'boolean', description: 'Enable Mixture of Experts routing', default: 'false' },
|
|
23
|
-
{ name: 'hyperbolic', type: 'boolean', description: 'Enable hyperbolic attention for hierarchical patterns', default: 'false' },
|
|
24
|
-
{ name: 'contrastive', type: 'boolean', description: 'Use contrastive learning (InfoNCE)', default: 'true' },
|
|
25
|
-
{ name: 'curriculum', type: 'boolean', description: 'Enable curriculum learning', default: 'false' },
|
|
26
|
-
],
|
|
27
|
-
examples: [
|
|
28
|
-
{ command: 'monomind neural train -p coordination -e 100', description: 'Train coordination patterns' },
|
|
29
|
-
{ command: 'monomind neural train -d ./training-data.json --flash', description: 'Train from file with Flash Attention' },
|
|
30
|
-
{ command: 'monomind neural train -p security --wasm --contrastive', description: 'Security patterns with contrastive learning' },
|
|
31
|
-
],
|
|
32
|
-
action: async (ctx) => {
|
|
33
|
-
const patternType = ctx.flags['pattern'] || 'coordination';
|
|
34
|
-
const epochs = parseInt(ctx.flags.epochs || '50', 10);
|
|
35
|
-
const learningRate = parseFloat(ctx.flags['learning-rate'] || '0.01');
|
|
36
|
-
const batchSize = parseInt(ctx.flags['batch-size'] || '32', 10);
|
|
37
|
-
const dim = Math.min(parseInt(ctx.flags.dim || '256', 10), 256);
|
|
38
|
-
const useWasm = ctx.flags.wasm !== false;
|
|
39
|
-
const useFlash = ctx.flags.flash !== false;
|
|
40
|
-
const useMoE = ctx.flags.moe === true;
|
|
41
|
-
const useHyperbolic = ctx.flags.hyperbolic === true;
|
|
42
|
-
const useContrastive = ctx.flags.contrastive !== false;
|
|
43
|
-
const useCurriculum = ctx.flags.curriculum === true;
|
|
44
|
-
const dataFile = ctx.flags.data;
|
|
45
|
-
output.writeln();
|
|
46
|
-
output.writeln(output.bold('Neural Pattern Training (RuVector WASM)'));
|
|
47
|
-
output.writeln(output.dim('─'.repeat(55)));
|
|
48
|
-
const spinner = output.createSpinner({ text: 'Initializing RuVector training systems...', spinner: 'dots' });
|
|
49
|
-
spinner.start();
|
|
50
|
-
try {
|
|
51
|
-
// Import RuVector training service
|
|
52
|
-
const ruvector = await import('../services/ruvector-training.js');
|
|
53
|
-
const { generateEmbedding } = await import('../memory/memory-initializer.js');
|
|
54
|
-
const { initializeIntelligence, recordStep, recordTrajectory, getIntelligenceStats, flushPatterns, getPersistenceStatus } = await import('../memory/intelligence.js');
|
|
55
|
-
// Initialize RuVector WASM training
|
|
56
|
-
let wasmFeatures = [];
|
|
57
|
-
if (useWasm) {
|
|
58
|
-
const initResult = await ruvector.initializeTraining({
|
|
59
|
-
dim,
|
|
60
|
-
learningRate,
|
|
61
|
-
alpha: 0.1,
|
|
62
|
-
trajectoryCapacity: epochs * batchSize,
|
|
63
|
-
useFlashAttention: useFlash,
|
|
64
|
-
useMoE,
|
|
65
|
-
useHyperbolic,
|
|
66
|
-
totalSteps: useCurriculum ? epochs : undefined,
|
|
67
|
-
warmupSteps: useCurriculum ? Math.floor(epochs * 0.1) : undefined,
|
|
68
|
-
});
|
|
69
|
-
if (initResult.success) {
|
|
70
|
-
wasmFeatures = initResult.features;
|
|
71
|
-
const backendLabel = initResult.backend === 'wasm' ? 'WASM' : 'JS fallback';
|
|
72
|
-
spinner.setText(`RuVector initialized [${backendLabel}]: ${wasmFeatures.join(', ')}`);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
output.writeln(output.warning(`WASM init failed: ${initResult.error} - falling back`));
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
// Also initialize SONA + ReasoningBank for persistence
|
|
79
|
-
await initializeIntelligence({
|
|
80
|
-
loraLearningRate: learningRate,
|
|
81
|
-
maxTrajectorySize: epochs
|
|
82
|
-
});
|
|
83
|
-
// Pattern type to operator mapping
|
|
84
|
-
const operatorMap = {
|
|
85
|
-
coordination: ruvector.OperatorType.COORDINATION,
|
|
86
|
-
optimization: ruvector.OperatorType.OPTIMIZATION,
|
|
87
|
-
prediction: ruvector.OperatorType.ROUTING,
|
|
88
|
-
security: ruvector.OperatorType.SECURITY,
|
|
89
|
-
testing: ruvector.OperatorType.TESTING,
|
|
90
|
-
debugging: ruvector.OperatorType.DEBUGGING,
|
|
91
|
-
memory: ruvector.OperatorType.MEMORY,
|
|
92
|
-
reasoning: ruvector.OperatorType.REASONING,
|
|
93
|
-
};
|
|
94
|
-
const operatorType = operatorMap[patternType] ?? ruvector.OperatorType.GENERAL;
|
|
95
|
-
spinner.setText(`Training ${patternType} patterns...`);
|
|
96
|
-
// Training data - load from file or generate synthetic
|
|
97
|
-
let trainingData = [];
|
|
98
|
-
if (dataFile) {
|
|
99
|
-
const fs = await import('fs');
|
|
100
|
-
const p = await import('path');
|
|
101
|
-
if (fs.existsSync(dataFile)) {
|
|
102
|
-
// Path containment check
|
|
103
|
-
const resolvedData = p.resolve(dataFile);
|
|
104
|
-
const cwd = process.cwd();
|
|
105
|
-
if (!resolvedData.startsWith(cwd + p.sep) && resolvedData !== cwd) {
|
|
106
|
-
spinner.fail(`--data path escapes project directory: ${dataFile}`);
|
|
107
|
-
return { success: false, exitCode: 1 };
|
|
108
|
-
}
|
|
109
|
-
// File size guard
|
|
110
|
-
const MAX_TRAINING_BYTES = 50 * 1024 * 1024;
|
|
111
|
-
const statResult = fs.statSync(dataFile);
|
|
112
|
-
if (statResult.size > MAX_TRAINING_BYTES) {
|
|
113
|
-
spinner.fail(`Training data file too large: ${statResult.size} bytes (max ${MAX_TRAINING_BYTES})`);
|
|
114
|
-
return { success: false, exitCode: 1 };
|
|
115
|
-
}
|
|
116
|
-
const raw = fs.readFileSync(dataFile, 'utf8');
|
|
117
|
-
const parsedData = JSON.parse(raw);
|
|
118
|
-
if (parsedData && typeof parsedData === 'object' && ('__proto__' in parsedData || 'constructor' in parsedData)) {
|
|
119
|
-
spinner.fail('Prototype pollution attempt detected in training data');
|
|
120
|
-
return { success: false, exitCode: 1 };
|
|
121
|
-
}
|
|
122
|
-
trainingData = parsedData;
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
spinner.fail(`Training data file not found: ${dataFile}`);
|
|
126
|
-
return { success: false, exitCode: 1 };
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
// Generate synthetic training data based on pattern type
|
|
131
|
-
const templates = {
|
|
132
|
-
coordination: [
|
|
133
|
-
'Route task to coder agent for implementation',
|
|
134
|
-
'Coordinate researcher and architect for design phase',
|
|
135
|
-
'Distribute workload across mesh topology',
|
|
136
|
-
'Synchronize agents via gossip protocol',
|
|
137
|
-
'Balance load between active workers',
|
|
138
|
-
'Spawn hierarchical swarm for complex task',
|
|
139
|
-
'Assign reviewer to completed implementation'
|
|
140
|
-
],
|
|
141
|
-
optimization: [
|
|
142
|
-
'Apply Int8 quantization for memory reduction',
|
|
143
|
-
'Enable HNSW indexing for faster search',
|
|
144
|
-
'Batch operations for throughput improvement',
|
|
145
|
-
'Cache frequently accessed patterns',
|
|
146
|
-
'Prune unused neural pathways',
|
|
147
|
-
'Use Flash Attention for large sequences',
|
|
148
|
-
'Enable SIMD for vector operations'
|
|
149
|
-
],
|
|
150
|
-
prediction: [
|
|
151
|
-
'Predict optimal agent for task type',
|
|
152
|
-
'Forecast resource requirements',
|
|
153
|
-
'Anticipate failure modes and mitigate',
|
|
154
|
-
'Estimate completion time for workflow',
|
|
155
|
-
'Predict pattern similarity before search'
|
|
156
|
-
],
|
|
157
|
-
security: [
|
|
158
|
-
'Validate input at system boundaries',
|
|
159
|
-
'Check for path traversal attempts',
|
|
160
|
-
'Sanitize user-provided data',
|
|
161
|
-
'Apply parameterized queries for SQL',
|
|
162
|
-
'Verify JWT token signatures',
|
|
163
|
-
'Audit sensitive operation access'
|
|
164
|
-
],
|
|
165
|
-
testing: [
|
|
166
|
-
'Generate unit tests for function',
|
|
167
|
-
'Create integration test suite',
|
|
168
|
-
'Mock external dependencies',
|
|
169
|
-
'Assert expected outcomes',
|
|
170
|
-
'Coverage gap analysis'
|
|
171
|
-
]
|
|
172
|
-
};
|
|
173
|
-
const patterns = templates[patternType] || templates.coordination;
|
|
174
|
-
for (let i = 0; i < epochs; i++) {
|
|
175
|
-
trainingData.push({
|
|
176
|
-
content: patterns[i % patterns.length],
|
|
177
|
-
type: patternType
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
// Training metrics
|
|
182
|
-
const startTime = Date.now();
|
|
183
|
-
const epochTimes = [];
|
|
184
|
-
let patternsRecorded = 0;
|
|
185
|
-
let trajectoriesCompleted = 0;
|
|
186
|
-
let totalLoss = 0;
|
|
187
|
-
let adaptations = 0;
|
|
188
|
-
// Generate embeddings for training data
|
|
189
|
-
const embeddings = [];
|
|
190
|
-
spinner.setText('Generating embeddings...');
|
|
191
|
-
for (const item of trainingData.slice(0, Math.min(100, trainingData.length))) {
|
|
192
|
-
const embeddingResult = await generateEmbedding(item.content);
|
|
193
|
-
if (embeddingResult && embeddingResult.embedding) {
|
|
194
|
-
// Convert to Float32Array and resize to dim
|
|
195
|
-
const embeddingArray = embeddingResult.embedding;
|
|
196
|
-
const resized = new Float32Array(dim);
|
|
197
|
-
for (let i = 0; i < Math.min(embeddingArray.length, dim); i++) {
|
|
198
|
-
resized[i] = embeddingArray[i];
|
|
199
|
-
}
|
|
200
|
-
embeddings.push(resized);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
spinner.setText(`Training with ${embeddings.length} embeddings...`);
|
|
204
|
-
// Main training loop with WASM acceleration
|
|
205
|
-
for (let epoch = 0; epoch < epochs; epoch++) {
|
|
206
|
-
const epochStart = performance.now();
|
|
207
|
-
// Get curriculum difficulty if enabled
|
|
208
|
-
const difficulty = useCurriculum ? ruvector.getCurriculumDifficulty(epoch) : 1.0;
|
|
209
|
-
// Process batch
|
|
210
|
-
const batchStart = (epoch * batchSize) % embeddings.length;
|
|
211
|
-
const batch = embeddings.slice(batchStart, batchStart + batchSize);
|
|
212
|
-
if (batch.length === 0)
|
|
213
|
-
continue;
|
|
214
|
-
// Training step with contrastive learning
|
|
215
|
-
if (useContrastive && batch.length >= 3 && useWasm && wasmFeatures.length > 0) {
|
|
216
|
-
const anchor = batch[0];
|
|
217
|
-
const positives = [batch[1]];
|
|
218
|
-
const negatives = batch.slice(2);
|
|
219
|
-
try {
|
|
220
|
-
// Compute contrastive loss
|
|
221
|
-
const { loss, gradient } = ruvector.computeContrastiveLoss(anchor, positives, negatives);
|
|
222
|
-
totalLoss += loss;
|
|
223
|
-
// Scale gradient by difficulty
|
|
224
|
-
const scaledGradient = new Float32Array(gradient.length);
|
|
225
|
-
for (let i = 0; i < gradient.length; i++) {
|
|
226
|
-
scaledGradient[i] = gradient[i] * difficulty;
|
|
227
|
-
}
|
|
228
|
-
// Train with MicroLoRA
|
|
229
|
-
await ruvector.trainPattern(anchor, scaledGradient, operatorType);
|
|
230
|
-
adaptations++;
|
|
231
|
-
// Record trajectory for learning
|
|
232
|
-
const baselineMs = 10; // Baseline execution time
|
|
233
|
-
const executionMs = performance.now() - epochStart;
|
|
234
|
-
ruvector.recordTrajectory(anchor, operatorType, useFlash ? 1 : 0, executionMs, baselineMs);
|
|
235
|
-
}
|
|
236
|
-
catch {
|
|
237
|
-
// WASM training failed, fall back to basic
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
// Also record in SONA/ReasoningBank for persistence
|
|
241
|
-
const item = trainingData[epoch % trainingData.length];
|
|
242
|
-
await recordStep({
|
|
243
|
-
type: 'action',
|
|
244
|
-
content: item.content,
|
|
245
|
-
metadata: { epoch, patternType, learningRate, difficulty }
|
|
246
|
-
});
|
|
247
|
-
patternsRecorded++;
|
|
248
|
-
// Record trajectory every 10 epochs
|
|
249
|
-
if ((epoch + 1) % 10 === 0 || epoch === epochs - 1) {
|
|
250
|
-
const steps = trainingData.slice(Math.max(0, epoch - 9), epoch + 1).map(d => ({ type: 'action', content: d.content }));
|
|
251
|
-
await recordTrajectory(steps, 'success');
|
|
252
|
-
trajectoriesCompleted++;
|
|
253
|
-
}
|
|
254
|
-
const epochTime = performance.now() - epochStart;
|
|
255
|
-
epochTimes.push(epochTime);
|
|
256
|
-
// Update progress
|
|
257
|
-
const progress = Math.round(((epoch + 1) / epochs) * 100);
|
|
258
|
-
const avgEpochTime = epochTimes.reduce((a, b) => a + b, 0) / epochTimes.length;
|
|
259
|
-
const eta = Math.round((epochs - epoch - 1) * avgEpochTime / 1000);
|
|
260
|
-
spinner.setText(`Training ${patternType} patterns... ${progress}% (ETA: ${eta}s, loss: ${(totalLoss / Math.max(1, epoch + 1)).toFixed(4)})`);
|
|
261
|
-
}
|
|
262
|
-
const totalTime = Date.now() - startTime;
|
|
263
|
-
// Get RuVector stats
|
|
264
|
-
const ruvectorStats = useWasm && wasmFeatures.length > 0 ? ruvector.getTrainingStats() : null;
|
|
265
|
-
const trajectoryStats = ruvectorStats?.trajectoryStats;
|
|
266
|
-
// Benchmark if WASM was used
|
|
267
|
-
let benchmark = null;
|
|
268
|
-
if (useWasm && wasmFeatures.length > 0) {
|
|
269
|
-
try {
|
|
270
|
-
spinner.setText('Running benchmark...');
|
|
271
|
-
benchmark = await ruvector.benchmarkTraining(dim, 100);
|
|
272
|
-
}
|
|
273
|
-
catch {
|
|
274
|
-
// Benchmark failed, continue
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
// Get SONA stats
|
|
278
|
-
const stats = getIntelligenceStats();
|
|
279
|
-
spinner.succeed(`Training complete: ${epochs} epochs in ${(totalTime / 1000).toFixed(1)}s`);
|
|
280
|
-
// Flush patterns to disk
|
|
281
|
-
flushPatterns();
|
|
282
|
-
const persistence = getPersistenceStatus();
|
|
283
|
-
output.writeln();
|
|
284
|
-
// Display results
|
|
285
|
-
const tableData = [
|
|
286
|
-
{ metric: 'Pattern Type', value: patternType },
|
|
287
|
-
{ metric: 'Epochs', value: String(epochs) },
|
|
288
|
-
{ metric: 'Batch Size', value: String(batchSize) },
|
|
289
|
-
{ metric: 'Embedding Dim', value: String(dim) },
|
|
290
|
-
{ metric: 'Learning Rate', value: String(learningRate) },
|
|
291
|
-
{ metric: 'Patterns Recorded', value: patternsRecorded.toLocaleString() },
|
|
292
|
-
{ metric: 'Trajectories', value: String(trajectoriesCompleted) },
|
|
293
|
-
{ metric: 'Total Time', value: `${(totalTime / 1000).toFixed(1)}s` },
|
|
294
|
-
{ metric: 'Avg Epoch Time', value: `${(epochTimes.reduce((a, b) => a + b, 0) / epochTimes.length).toFixed(2)}ms` },
|
|
295
|
-
];
|
|
296
|
-
// Add WASM-specific metrics
|
|
297
|
-
if (useWasm && wasmFeatures.length > 0) {
|
|
298
|
-
const backendUsed = ruvectorStats?.backend || 'unknown';
|
|
299
|
-
tableData.push({ metric: 'Backend', value: backendUsed === 'wasm' ? 'WASM (native)' : 'JS (fallback)' }, { metric: 'WASM Features', value: wasmFeatures.slice(0, 3).join(', ') }, { metric: 'LoRA Adaptations', value: String(adaptations) }, { metric: 'Avg Loss', value: (totalLoss / Math.max(1, epochs)).toFixed(4) });
|
|
300
|
-
if (ruvectorStats?.microLoraStats) {
|
|
301
|
-
tableData.push({ metric: 'MicroLoRA Delta Norm', value: ruvectorStats.microLoraStats.deltaNorm.toFixed(6) });
|
|
302
|
-
}
|
|
303
|
-
if (trajectoryStats) {
|
|
304
|
-
tableData.push({ metric: 'Success Rate', value: `${(trajectoryStats.successRate * 100).toFixed(1)}%` }, { metric: 'Mean Improvement', value: `${(trajectoryStats.meanImprovement * 100).toFixed(1)}%` });
|
|
305
|
-
}
|
|
306
|
-
if (benchmark && benchmark.length > 0) {
|
|
307
|
-
const flashBench = benchmark.find(b => b.name.includes('Flash'));
|
|
308
|
-
if (flashBench) {
|
|
309
|
-
tableData.push({ metric: 'Flash Attention', value: `${flashBench.opsPerSecond.toLocaleString()} ops/s` });
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
tableData.push({ metric: 'ReasoningBank Size', value: stats.reasoningBankSize.toLocaleString() }, { metric: 'Persisted To', value: output.dim(persistence.dataDir) });
|
|
314
|
-
output.printTable({
|
|
315
|
-
columns: [
|
|
316
|
-
{ key: 'metric', header: 'Metric', width: 26 },
|
|
317
|
-
{ key: 'value', header: 'Value', width: 32 },
|
|
318
|
-
],
|
|
319
|
-
data: tableData,
|
|
320
|
-
});
|
|
321
|
-
output.writeln();
|
|
322
|
-
output.writeln(output.success(`✓ ${patternsRecorded} patterns saved to ${persistence.patternsFile}`));
|
|
323
|
-
if (useWasm && wasmFeatures.length > 0) {
|
|
324
|
-
const backendUsed = ruvectorStats?.backend || 'unknown';
|
|
325
|
-
const backendMsg = backendUsed === 'wasm'
|
|
326
|
-
? `RuVector WASM backend: ${wasmFeatures.join(', ')}`
|
|
327
|
-
: `RuVector JS fallback (install @ruvector/learning-wasm for native speed): ${wasmFeatures.join(', ')}`;
|
|
328
|
-
output.writeln(output.highlight(`✓ ${backendMsg}`));
|
|
329
|
-
}
|
|
330
|
-
return {
|
|
331
|
-
success: true,
|
|
332
|
-
data: {
|
|
333
|
-
epochs,
|
|
334
|
-
patternsRecorded,
|
|
335
|
-
trajectoriesCompleted,
|
|
336
|
-
totalTime,
|
|
337
|
-
wasmFeatures,
|
|
338
|
-
ruvectorStats,
|
|
339
|
-
benchmark,
|
|
340
|
-
stats,
|
|
341
|
-
persistence
|
|
342
|
-
}
|
|
343
|
-
};
|
|
344
|
-
}
|
|
345
|
-
catch (error) {
|
|
346
|
-
spinner.fail('Training failed');
|
|
347
|
-
output.printError(error instanceof Error ? error.message : String(error));
|
|
348
|
-
return { success: false, exitCode: 1 };
|
|
349
|
-
}
|
|
350
|
-
},
|
|
351
|
-
};
|
|
352
|
-
// Status subcommand - REAL measurements
|
|
8
|
+
// Status subcommand - reports only the surviving pure-JS pattern-learning layer
|
|
353
9
|
const statusCommand = {
|
|
354
10
|
name: 'status',
|
|
355
|
-
description: 'Check
|
|
11
|
+
description: 'Check pattern-learning status (JS intelligence layer)',
|
|
356
12
|
options: [
|
|
357
|
-
{ name: 'model', short: 'm', type: 'string', description: 'Specific model ID to check' },
|
|
358
13
|
{ name: 'verbose', short: 'v', type: 'boolean', description: 'Show detailed metrics' },
|
|
359
14
|
],
|
|
360
15
|
examples: [
|
|
361
|
-
{ command: 'monomind neural status', description: 'Show
|
|
362
|
-
{ command: 'monomind neural status -
|
|
16
|
+
{ command: 'monomind neural status', description: 'Show pattern-learning status' },
|
|
17
|
+
{ command: 'monomind neural status -v', description: 'Show detailed metrics' },
|
|
363
18
|
],
|
|
364
19
|
action: async (ctx) => {
|
|
365
20
|
const verbose = ctx.flags.verbose === true;
|
|
366
21
|
output.writeln();
|
|
367
|
-
output.writeln(output.bold('
|
|
22
|
+
output.writeln(output.bold('Pattern Learning Status'));
|
|
368
23
|
output.writeln(output.dim('─'.repeat(50)));
|
|
369
|
-
const spinner = output.createSpinner({ text: 'Checking
|
|
24
|
+
const spinner = output.createSpinner({ text: 'Checking pattern-learning systems...', spinner: 'dots' });
|
|
370
25
|
spinner.start();
|
|
371
26
|
try {
|
|
372
|
-
|
|
373
|
-
const { getIntelligenceStats, initializeIntelligence, benchmarkAdaptation } = await import('../memory/intelligence.js');
|
|
27
|
+
const { getIntelligenceStats, initializeIntelligence, getPersistenceStatus } = await import('../memory/intelligence.js');
|
|
374
28
|
const { getHNSWStatus, loadEmbeddingModel } = await import('../memory/memory-initializer.js');
|
|
375
|
-
const ruvector = await import('../services/ruvector-training.js');
|
|
376
29
|
// Initialize if needed and get real stats
|
|
377
30
|
await initializeIntelligence();
|
|
378
31
|
const stats = getIntelligenceStats();
|
|
379
32
|
const hnswStatus = getHNSWStatus();
|
|
380
|
-
|
|
381
|
-
const adaptBench = benchmarkAdaptation(100);
|
|
33
|
+
const persistence = getPersistenceStatus();
|
|
382
34
|
// Check embedding model
|
|
383
35
|
const modelInfo = await loadEmbeddingModel({ verbose: false });
|
|
384
|
-
|
|
385
|
-
const ruvectorStats = ruvector.getTrainingStats();
|
|
386
|
-
const sonaAvailable = ruvector.isSonaAvailable();
|
|
387
|
-
spinner.succeed('Neural systems checked');
|
|
388
|
-
const fs_status = await import('fs');
|
|
389
|
-
const path_status = await import('path');
|
|
390
|
-
const learnedStatePath = path_status.join(process.cwd(), '.monomind', 'neural', 'learned-state.json');
|
|
391
|
-
const hasLearnedState = fs_status.existsSync(learnedStatePath);
|
|
392
|
-
let learnedStateAge = '';
|
|
393
|
-
if (hasLearnedState) {
|
|
394
|
-
const stat = fs_status.statSync(learnedStatePath);
|
|
395
|
-
const ageMs = Date.now() - stat.mtimeMs;
|
|
396
|
-
const ageMins = Math.round(ageMs / 60000);
|
|
397
|
-
learnedStateAge = ageMins < 60 ? `${ageMins}m ago` : `${Math.round(ageMins / 60)}h ago`;
|
|
398
|
-
}
|
|
36
|
+
spinner.succeed('Pattern-learning systems checked');
|
|
399
37
|
output.writeln();
|
|
400
38
|
output.printTable({
|
|
401
39
|
columns: [
|
|
402
40
|
{ key: 'component', header: 'Component', width: 22 },
|
|
403
41
|
{ key: 'status', header: 'Status', width: 12 },
|
|
404
|
-
{ key: 'details', header: 'Details', width:
|
|
42
|
+
{ key: 'details', header: 'Details', width: 34 },
|
|
405
43
|
],
|
|
406
44
|
data: [
|
|
407
45
|
{
|
|
408
|
-
component: '
|
|
46
|
+
component: 'Pattern Learning',
|
|
409
47
|
status: stats.sonaEnabled ? output.success('Active') : output.warning('Inactive'),
|
|
410
|
-
details: stats.sonaEnabled
|
|
411
|
-
? `Adaptation: ${(adaptBench.avgMs * 1000).toFixed(2)}μs avg`
|
|
412
|
-
: 'Not initialized',
|
|
413
|
-
},
|
|
414
|
-
{
|
|
415
|
-
component: 'RuVector Training',
|
|
416
|
-
status: ruvectorStats.initialized ? output.success('Active') : output.dim('Not loaded'),
|
|
417
|
-
details: ruvectorStats.initialized
|
|
418
|
-
? `${ruvectorStats.backend === 'wasm' ? 'WASM' : 'JS fallback'} | MicroLoRA: ${ruvectorStats.totalAdaptations} adapts`
|
|
419
|
-
: 'Call neural train to initialize',
|
|
420
|
-
},
|
|
421
|
-
{
|
|
422
|
-
component: 'SONA Engine',
|
|
423
|
-
status: sonaAvailable ? output.success('Active') : output.dim('Not loaded'),
|
|
424
|
-
details: sonaAvailable && ruvectorStats.sonaStats
|
|
425
|
-
? `${ruvectorStats.sonaStats.totalLearns} learns, ${ruvectorStats.sonaStats.totalSearches} searches`
|
|
426
|
-
: 'Optional, enable with --sona',
|
|
48
|
+
details: stats.sonaEnabled ? 'JS pattern-learning layer initialized' : 'Not initialized',
|
|
427
49
|
},
|
|
428
50
|
{
|
|
429
51
|
component: 'ReasoningBank',
|
|
@@ -431,58 +53,21 @@ const statusCommand = {
|
|
|
431
53
|
details: `${stats.patternsLearned} patterns stored`,
|
|
432
54
|
},
|
|
433
55
|
{
|
|
434
|
-
component: '
|
|
435
|
-
status: hnswStatus.available ? output.success('Ready') : output.dim('
|
|
56
|
+
component: 'Pattern Index',
|
|
57
|
+
status: hnswStatus.available ? output.success('Ready') : output.dim('Empty'),
|
|
436
58
|
details: hnswStatus.available
|
|
437
|
-
? `${hnswStatus.entryCount} vectors, ${hnswStatus.dimensions}-dim
|
|
438
|
-
: '
|
|
59
|
+
? `${hnswStatus.entryCount} vectors, ${hnswStatus.dimensions}-dim (pure-JS HNSW via AgentDB)`
|
|
60
|
+
: 'No vectors indexed yet',
|
|
439
61
|
},
|
|
440
62
|
{
|
|
441
63
|
component: 'Embedding Model',
|
|
442
64
|
status: modelInfo.success ? output.success('Loaded') : output.warning('Fallback'),
|
|
443
65
|
details: `${modelInfo.modelName} (${modelInfo.dimensions}-dim)`,
|
|
444
66
|
},
|
|
445
|
-
await (async () => {
|
|
446
|
-
try {
|
|
447
|
-
await import('@ruvector/attention');
|
|
448
|
-
return {
|
|
449
|
-
component: 'Flash Attention Ops',
|
|
450
|
-
status: output.success('Available'),
|
|
451
|
-
details: 'batchCosineSim, softmax, topK',
|
|
452
|
-
};
|
|
453
|
-
}
|
|
454
|
-
catch {
|
|
455
|
-
return {
|
|
456
|
-
component: 'Flash Attention Ops',
|
|
457
|
-
status: output.warning('Not installed'),
|
|
458
|
-
details: 'npm install @ruvector/attention',
|
|
459
|
-
};
|
|
460
|
-
}
|
|
461
|
-
})(),
|
|
462
|
-
await (async () => {
|
|
463
|
-
try {
|
|
464
|
-
const { quantizeInt8 } = await import('../memory/memory-initializer.js');
|
|
465
|
-
if (typeof quantizeInt8 === 'function') {
|
|
466
|
-
return {
|
|
467
|
-
component: 'Int8 Quantization',
|
|
468
|
-
status: output.success('Available'),
|
|
469
|
-
details: '~4x memory reduction',
|
|
470
|
-
};
|
|
471
|
-
}
|
|
472
|
-
throw new Error('not exported');
|
|
473
|
-
}
|
|
474
|
-
catch {
|
|
475
|
-
return {
|
|
476
|
-
component: 'Int8 Quantization',
|
|
477
|
-
status: output.warning('Not available'),
|
|
478
|
-
details: 'quantizeInt8 not found in memory-initializer',
|
|
479
|
-
};
|
|
480
|
-
}
|
|
481
|
-
})(),
|
|
482
67
|
{
|
|
483
|
-
component: '
|
|
484
|
-
status:
|
|
485
|
-
details:
|
|
68
|
+
component: 'Persistence',
|
|
69
|
+
status: persistence.patternsExist ? output.success('Saved') : output.dim('None'),
|
|
70
|
+
details: persistence.patternsExist ? output.dim(persistence.dataDir) : 'No persisted patterns',
|
|
486
71
|
},
|
|
487
72
|
],
|
|
488
73
|
});
|
|
@@ -492,10 +77,9 @@ const statusCommand = {
|
|
|
492
77
|
const detailedData = [
|
|
493
78
|
{ metric: 'Trajectories Recorded', value: String(stats.trajectoriesRecorded) },
|
|
494
79
|
{ metric: 'Patterns Learned', value: String(stats.patternsLearned) },
|
|
495
|
-
{ metric: '
|
|
496
|
-
{ metric: '
|
|
497
|
-
{ metric: '
|
|
498
|
-
{ metric: 'Target Met (<0.05ms)', value: adaptBench.targetMet ? output.success('Yes') : output.warning('No') },
|
|
80
|
+
{ metric: 'ReasoningBank Size', value: String(stats.reasoningBankSize) },
|
|
81
|
+
{ metric: 'Index Dimensions', value: String(hnswStatus.dimensions) },
|
|
82
|
+
{ metric: 'Avg Adaptation Time', value: `${stats.avgAdaptationTime.toFixed(3)}ms` },
|
|
499
83
|
{
|
|
500
84
|
metric: 'Last Adaptation',
|
|
501
85
|
value: stats.lastAdaptation
|
|
@@ -503,26 +87,6 @@ const statusCommand = {
|
|
|
503
87
|
: 'Never',
|
|
504
88
|
},
|
|
505
89
|
];
|
|
506
|
-
// Add RuVector WASM metrics if initialized
|
|
507
|
-
if (ruvectorStats.initialized) {
|
|
508
|
-
detailedData.push({ metric: 'RuVector Adaptations', value: String(ruvectorStats.totalAdaptations) }, { metric: 'RuVector Forwards', value: String(ruvectorStats.totalForwards) });
|
|
509
|
-
if (ruvectorStats.microLoraStats) {
|
|
510
|
-
detailedData.push({ metric: 'MicroLoRA Delta Norm', value: ruvectorStats.microLoraStats.deltaNorm.toFixed(6) }, { metric: 'MicroLoRA Adapt Count', value: String(ruvectorStats.microLoraStats.adaptCount) });
|
|
511
|
-
}
|
|
512
|
-
if (sonaAvailable && ruvectorStats.sonaStats?.stats) {
|
|
513
|
-
const sonaStats = ruvectorStats.sonaStats.stats;
|
|
514
|
-
detailedData.push({ metric: 'SONA Patterns Stored', value: String(sonaStats.patterns_stored || 0) }, { metric: 'SONA EWC Tasks', value: String(sonaStats.ewc_tasks || 0) });
|
|
515
|
-
}
|
|
516
|
-
detailedData.push({
|
|
517
|
-
metric: 'LoRA Domains Trained',
|
|
518
|
-
value: (ruvectorStats.microLoraStats?.adaptCount ?? 0) > 0 ? 'active' : 'none',
|
|
519
|
-
}, {
|
|
520
|
-
metric: 'EWC Tasks Learned',
|
|
521
|
-
value: String(sonaAvailable && ruvectorStats.sonaStats?.stats
|
|
522
|
-
? (ruvectorStats.sonaStats.stats.ewc_tasks ?? 0)
|
|
523
|
-
: 0),
|
|
524
|
-
});
|
|
525
|
-
}
|
|
526
90
|
output.printTable({
|
|
527
91
|
columns: [
|
|
528
92
|
{ key: 'metric', header: 'Metric', width: 28 },
|
|
@@ -531,10 +95,10 @@ const statusCommand = {
|
|
|
531
95
|
data: detailedData,
|
|
532
96
|
});
|
|
533
97
|
}
|
|
534
|
-
return { success: true, data: { stats, hnswStatus,
|
|
98
|
+
return { success: true, data: { stats, hnswStatus, modelInfo, persistence } };
|
|
535
99
|
}
|
|
536
100
|
catch (error) {
|
|
537
|
-
spinner.fail('Failed to check
|
|
101
|
+
spinner.fail('Failed to check pattern-learning systems');
|
|
538
102
|
output.printError(error instanceof Error ? error.message : String(error));
|
|
539
103
|
return { success: false, exitCode: 1 };
|
|
540
104
|
}
|
|
@@ -1414,161 +978,20 @@ const importCommand = {
|
|
|
1414
978
|
}
|
|
1415
979
|
},
|
|
1416
980
|
};
|
|
1417
|
-
// Benchmark subcommand - Real WASM benchmarks
|
|
1418
|
-
const benchmarkCommand = {
|
|
1419
|
-
name: 'benchmark',
|
|
1420
|
-
description: 'Benchmark RuVector WASM training performance',
|
|
1421
|
-
options: [
|
|
1422
|
-
{ name: 'dim', short: 'd', type: 'number', description: 'Embedding dimension (max 256)', default: '256' },
|
|
1423
|
-
{ name: 'iterations', short: 'i', type: 'number', description: 'Number of iterations', default: '1000' },
|
|
1424
|
-
{ name: 'keys', short: 'k', type: 'number', description: 'Number of keys for attention', default: '100' },
|
|
1425
|
-
],
|
|
1426
|
-
examples: [
|
|
1427
|
-
{ command: 'monomind neural benchmark', description: 'Run default benchmark' },
|
|
1428
|
-
{ command: 'monomind neural benchmark -d 128 -i 5000', description: 'Custom benchmark' },
|
|
1429
|
-
],
|
|
1430
|
-
action: async (ctx) => {
|
|
1431
|
-
const dim = Math.min(parseInt(ctx.flags.dim || '256', 10), 256);
|
|
1432
|
-
const iterations = parseInt(ctx.flags.iterations || '1000', 10);
|
|
1433
|
-
const numKeys = parseInt(ctx.flags.keys || '100', 10);
|
|
1434
|
-
output.writeln();
|
|
1435
|
-
output.writeln(output.bold('RuVector WASM Benchmark'));
|
|
1436
|
-
output.writeln(output.dim('─'.repeat(50)));
|
|
1437
|
-
const spinner = output.createSpinner({ text: 'Running benchmarks...', spinner: 'dots' });
|
|
1438
|
-
spinner.start();
|
|
1439
|
-
try {
|
|
1440
|
-
const attention = await import('@ruvector/attention');
|
|
1441
|
-
// Manual benchmark since benchmarkAttention has a binding bug
|
|
1442
|
-
const benchmarkMechanism = async (name, mechanism) => {
|
|
1443
|
-
const query = new Float32Array(dim);
|
|
1444
|
-
const keys = [];
|
|
1445
|
-
const values = [];
|
|
1446
|
-
for (let i = 0; i < dim; i++)
|
|
1447
|
-
query[i] = Math.random();
|
|
1448
|
-
for (let k = 0; k < numKeys; k++) {
|
|
1449
|
-
const key = new Float32Array(dim);
|
|
1450
|
-
const val = new Float32Array(dim);
|
|
1451
|
-
for (let i = 0; i < dim; i++) {
|
|
1452
|
-
key[i] = Math.random();
|
|
1453
|
-
val[i] = Math.random();
|
|
1454
|
-
}
|
|
1455
|
-
keys.push(key);
|
|
1456
|
-
values.push(val);
|
|
1457
|
-
}
|
|
1458
|
-
// Warmup
|
|
1459
|
-
for (let i = 0; i < 10; i++)
|
|
1460
|
-
mechanism.computeRaw(query, keys, values);
|
|
1461
|
-
const start = performance.now();
|
|
1462
|
-
for (let i = 0; i < iterations; i++) {
|
|
1463
|
-
mechanism.computeRaw(query, keys, values);
|
|
1464
|
-
}
|
|
1465
|
-
const elapsed = performance.now() - start;
|
|
1466
|
-
return {
|
|
1467
|
-
name,
|
|
1468
|
-
averageTimeMs: elapsed / iterations,
|
|
1469
|
-
opsPerSecond: Math.round((iterations / elapsed) * 1000),
|
|
1470
|
-
};
|
|
1471
|
-
};
|
|
1472
|
-
spinner.setText(`Benchmarking attention mechanisms (dim=${dim}, keys=${numKeys}, iter=${iterations})...`);
|
|
1473
|
-
const results = [];
|
|
1474
|
-
// Benchmark each mechanism
|
|
1475
|
-
const dotProduct = new attention.DotProductAttention(dim);
|
|
1476
|
-
results.push(await benchmarkMechanism('DotProduct', dotProduct));
|
|
1477
|
-
const flash = new attention.FlashAttention(dim, 64);
|
|
1478
|
-
results.push(await benchmarkMechanism('FlashAttention', flash));
|
|
1479
|
-
const multiHead = new attention.MultiHeadAttention(dim, 4);
|
|
1480
|
-
results.push(await benchmarkMechanism('MultiHead (4 heads)', multiHead));
|
|
1481
|
-
const hyperbolic = new attention.HyperbolicAttention(dim, 1.0);
|
|
1482
|
-
results.push(await benchmarkMechanism('Hyperbolic', hyperbolic));
|
|
1483
|
-
const linear = new attention.LinearAttention(dim, dim);
|
|
1484
|
-
results.push(await benchmarkMechanism('Linear', linear));
|
|
1485
|
-
spinner.succeed('Benchmark complete');
|
|
1486
|
-
output.writeln();
|
|
1487
|
-
output.printTable({
|
|
1488
|
-
columns: [
|
|
1489
|
-
{ key: 'name', header: 'Mechanism', width: 25 },
|
|
1490
|
-
{ key: 'avgTime', header: 'Avg Time (ms)', width: 15 },
|
|
1491
|
-
{ key: 'opsPerSec', header: 'Ops/sec', width: 15 },
|
|
1492
|
-
],
|
|
1493
|
-
data: results.map(r => ({
|
|
1494
|
-
name: r.name,
|
|
1495
|
-
avgTime: r.averageTimeMs.toFixed(4),
|
|
1496
|
-
opsPerSec: r.opsPerSecond.toLocaleString(),
|
|
1497
|
-
})),
|
|
1498
|
-
});
|
|
1499
|
-
// Show speedup comparisons
|
|
1500
|
-
const dotProductResult = results.find(r => r.name.includes('DotProduct'));
|
|
1501
|
-
const flashResult = results.find(r => r.name.includes('Flash'));
|
|
1502
|
-
const hyperbolicResult = results.find(r => r.name.includes('Hyperbolic'));
|
|
1503
|
-
if (dotProductResult && flashResult) {
|
|
1504
|
-
const speedup = dotProductResult.averageTimeMs / flashResult.averageTimeMs;
|
|
1505
|
-
output.writeln();
|
|
1506
|
-
output.writeln(output.highlight(`Flash Attention speedup: ${speedup.toFixed(2)}x faster than DotProduct`));
|
|
1507
|
-
}
|
|
1508
|
-
if (dotProductResult && hyperbolicResult) {
|
|
1509
|
-
output.writeln(output.dim(`Hyperbolic overhead: ${(hyperbolicResult.averageTimeMs / dotProductResult.averageTimeMs).toFixed(2)}x (expected for manifold ops)`));
|
|
1510
|
-
}
|
|
1511
|
-
// Also benchmark MicroLoRA
|
|
1512
|
-
spinner.start();
|
|
1513
|
-
spinner.setText('Benchmarking MicroLoRA adaptation...');
|
|
1514
|
-
// Load WASM file directly (Node.js compatible)
|
|
1515
|
-
const fs = await import('fs');
|
|
1516
|
-
const { createRequire } = await import('module');
|
|
1517
|
-
const require = createRequire(import.meta.url);
|
|
1518
|
-
const wasmPath = require.resolve('@ruvector/learning-wasm/ruvector_learning_wasm_bg.wasm');
|
|
1519
|
-
const wasmBuffer = fs.readFileSync(wasmPath);
|
|
1520
|
-
const learningWasm = await import('@ruvector/learning-wasm');
|
|
1521
|
-
learningWasm.initSync({ module: wasmBuffer });
|
|
1522
|
-
const lora = new learningWasm.WasmMicroLoRA(dim, 0.1, 0.01);
|
|
1523
|
-
const gradient = new Float32Array(dim);
|
|
1524
|
-
for (let i = 0; i < dim; i++)
|
|
1525
|
-
gradient[i] = Math.random() - 0.5;
|
|
1526
|
-
const loraStart = performance.now();
|
|
1527
|
-
for (let i = 0; i < iterations; i++) {
|
|
1528
|
-
lora.adapt_array(gradient);
|
|
1529
|
-
}
|
|
1530
|
-
const loraTime = performance.now() - loraStart;
|
|
1531
|
-
const loraAvg = loraTime / iterations;
|
|
1532
|
-
spinner.succeed('MicroLoRA benchmark complete');
|
|
1533
|
-
output.writeln();
|
|
1534
|
-
output.printTable({
|
|
1535
|
-
columns: [
|
|
1536
|
-
{ key: 'metric', header: 'MicroLoRA Metric', width: 25 },
|
|
1537
|
-
{ key: 'value', header: 'Value', width: 25 },
|
|
1538
|
-
],
|
|
1539
|
-
data: [
|
|
1540
|
-
{ metric: 'Dimension', value: String(dim) },
|
|
1541
|
-
{ metric: 'Iterations', value: iterations.toLocaleString() },
|
|
1542
|
-
{ metric: 'Total Time', value: `${loraTime.toFixed(2)}ms` },
|
|
1543
|
-
{ metric: 'Avg Adaptation', value: `${(loraAvg * 1000).toFixed(2)}μs` },
|
|
1544
|
-
{ metric: 'Adaptations/sec', value: Math.round(1000 / loraAvg).toLocaleString() },
|
|
1545
|
-
{ metric: 'Target (<100μs)', value: loraAvg * 1000 < 100 ? output.success('✓ PASS') : output.warning('✗ FAIL') },
|
|
1546
|
-
],
|
|
1547
|
-
});
|
|
1548
|
-
lora.free();
|
|
1549
|
-
return { success: true, data: { results, loraAvg } };
|
|
1550
|
-
}
|
|
1551
|
-
catch (error) {
|
|
1552
|
-
spinner.fail('Benchmark failed');
|
|
1553
|
-
output.printError(error instanceof Error ? error.message : String(error));
|
|
1554
|
-
return { success: false, exitCode: 1 };
|
|
1555
|
-
}
|
|
1556
|
-
},
|
|
1557
|
-
};
|
|
1558
981
|
// Main neural command
|
|
1559
982
|
export const neuralCommand = {
|
|
1560
983
|
name: 'neural',
|
|
1561
|
-
description: '
|
|
1562
|
-
subcommands: [
|
|
984
|
+
description: 'Pattern learning, search, and prediction (pure-JS intelligence layer)',
|
|
985
|
+
subcommands: [statusCommand, patternsCommand, predictCommand, optimizeCommand, listCommand, exportCommand, importCommand],
|
|
1563
986
|
examples: [
|
|
1564
|
-
{ command: 'monomind neural status', description: 'Check
|
|
1565
|
-
{ command: 'monomind neural train -p coordination', description: 'Train coordination patterns' },
|
|
987
|
+
{ command: 'monomind neural status', description: 'Check pattern-learning system status' },
|
|
1566
988
|
{ command: 'monomind neural patterns --action list', description: 'List learned patterns' },
|
|
989
|
+
{ command: 'monomind neural predict -i "implement authentication"', description: 'Predict routing for a task' },
|
|
1567
990
|
],
|
|
1568
991
|
action: async () => {
|
|
1569
992
|
output.writeln();
|
|
1570
|
-
output.writeln(output.bold('MonoMind
|
|
1571
|
-
output.writeln(output.dim('
|
|
993
|
+
output.writeln(output.bold('MonoMind Pattern Learning'));
|
|
994
|
+
output.writeln(output.dim('Pattern learning, search, and prediction (pure-JS)'));
|
|
1572
995
|
output.writeln();
|
|
1573
996
|
output.writeln('Use --help with subcommands for more info');
|
|
1574
997
|
output.writeln();
|