monomind 1.10.56 → 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/scheduled_tasks.lock +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/.claude-plugin/README.md +1 -2
- package/.claude-plugin/docs/PLUGIN_SUMMARY.md +0 -1
- package/README.md +18 -32
- package/package.json +1 -1
- package/packages/@monomind/cli/README.md +18 -32
- package/packages/@monomind/cli/dist/src/agents/registry-builder.d.ts +1 -7
- package/packages/@monomind/cli/dist/src/agents/registry-builder.js +10 -6
- package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.d.ts +59 -12
- package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.js +67 -13
- package/packages/@monomind/cli/dist/src/benchmarks/pretrain/index.d.ts +0 -13
- package/packages/@monomind/cli/dist/src/commands/agent-wasm.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/commands/agent-wasm.js +5 -5
- package/packages/@monomind/cli/dist/src/commands/agent.js +1 -6
- package/packages/@monomind/cli/dist/src/commands/analyze.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/analyze.js +8 -18
- package/packages/@monomind/cli/dist/src/commands/doctor.js +53 -3
- package/packages/@monomind/cli/dist/src/commands/embeddings.js +9 -33
- package/packages/@monomind/cli/dist/src/commands/hooks.js +24 -76
- package/packages/@monomind/cli/dist/src/commands/index.d.ts +4 -6
- package/packages/@monomind/cli/dist/src/commands/index.js +8 -15
- package/packages/@monomind/cli/dist/src/commands/init.js +2 -2
- package/packages/@monomind/cli/dist/src/commands/issues.js +16 -11
- package/packages/@monomind/cli/dist/src/commands/mcp.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/memory.js +6 -6
- package/packages/@monomind/cli/dist/src/commands/migrate.js +1 -2
- package/packages/@monomind/cli/dist/src/commands/monograph.js +18 -11
- package/packages/@monomind/cli/dist/src/commands/monovector/backup.d.ts +11 -0
- package/packages/@monomind/cli/dist/src/commands/{ruvector → monovector}/backup.js +25 -25
- package/packages/@monomind/cli/dist/src/commands/monovector/benchmark.d.ts +11 -0
- package/packages/@monomind/cli/dist/src/commands/{ruvector → monovector}/benchmark.js +14 -14
- package/packages/@monomind/cli/dist/src/commands/monovector/import.d.ts +18 -0
- package/packages/@monomind/cli/dist/src/commands/{ruvector → monovector}/import.js +21 -21
- package/packages/@monomind/cli/dist/src/commands/{ruvector → monovector}/index.d.ts +6 -6
- package/packages/@monomind/cli/dist/src/commands/{ruvector → monovector}/index.js +22 -22
- package/packages/@monomind/cli/dist/src/commands/monovector/init.d.ts +11 -0
- package/packages/@monomind/cli/dist/src/commands/{ruvector → monovector}/init.js +36 -36
- package/packages/@monomind/cli/dist/src/commands/monovector/migrate.d.ts +11 -0
- package/packages/@monomind/cli/dist/src/commands/{ruvector → monovector}/migrate.js +16 -16
- package/packages/@monomind/cli/dist/src/commands/{ruvector → monovector}/optimize.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/commands/{ruvector → monovector}/optimize.js +10 -10
- package/packages/@monomind/cli/dist/src/commands/monovector/setup.d.ts +18 -0
- package/packages/@monomind/cli/dist/src/commands/{ruvector → monovector}/setup.js +77 -77
- package/packages/@monomind/cli/dist/src/commands/{ruvector → monovector}/status.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/commands/{ruvector → monovector}/status.js +34 -34
- package/packages/@monomind/cli/dist/src/commands/neural.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/neural.js +31 -608
- package/packages/@monomind/cli/dist/src/commands/performance.js +7 -10
- package/packages/@monomind/cli/dist/src/commands/plugins.js +3 -4
- package/packages/@monomind/cli/dist/src/commands/process.js +5 -12
- package/packages/@monomind/cli/dist/src/commands/progress.js +16 -16
- package/packages/@monomind/cli/dist/src/commands/route.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/commands/route.js +23 -23
- package/packages/@monomind/cli/dist/src/commands/status.js +0 -3
- package/packages/@monomind/cli/dist/src/commands/swarm.js +2 -3
- package/packages/@monomind/cli/dist/src/commands/update.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/config-adapter.js +27 -0
- package/packages/@monomind/cli/dist/src/consensus/audit-writer.d.ts +44 -17
- package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/index.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/index.js +5 -5
- package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +10 -14
- package/packages/@monomind/cli/dist/src/init/executor.js +17 -27
- package/packages/@monomind/cli/dist/src/init/helpers-generator.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/init/helpers-generator.js +2 -2
- package/packages/@monomind/cli/dist/src/init/types.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-client.js +1 -7
- package/packages/@monomind/cli/dist/src/mcp-server.js +9 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.js +1 -52
- package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.js +5 -5
- package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.d.ts +4 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/autopilot-tools.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.js +6 -5
- package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.js +51 -54
- package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +10 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +0 -24
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +189 -446
- package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +0 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/index.js +0 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-compat.d.ts +334 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-compat.js +1108 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +76 -34
- package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +2 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/ruvllm-tools.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/ruvllm-tools.js +3 -3
- package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.js +29 -19
- package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/wasm-agent-tools.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/wasm-agent-tools.js +2 -2
- package/packages/@monomind/cli/dist/src/memory/intelligence.js +14 -8
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +17 -2
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +76 -23
- package/packages/@monomind/cli/dist/src/memory/memory-initializer.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +37 -39
- package/packages/@monomind/cli/dist/src/monovector/capabilities.d.ts +34 -0
- package/packages/@monomind/cli/dist/src/monovector/capabilities.js +37 -0
- package/packages/@monomind/cli/dist/src/monovector/command-outcomes.d.ts +37 -0
- package/packages/@monomind/cli/dist/src/monovector/command-outcomes.js +87 -0
- package/packages/@monomind/cli/dist/src/monovector/coverage-router.d.ts +103 -0
- package/packages/@monomind/cli/dist/src/monovector/coverage-router.js +337 -0
- package/packages/@monomind/cli/dist/src/monovector/coverage-tools.d.ts +14 -0
- package/packages/@monomind/cli/dist/src/monovector/coverage-tools.js +112 -0
- package/packages/@monomind/cli/dist/src/{ruvector → monovector}/diff-classifier.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/monovector/index.d.ts +61 -0
- package/packages/@monomind/cli/dist/src/monovector/index.js +67 -0
- package/packages/@monomind/cli/dist/src/monovector/init-state.d.ts +35 -0
- package/packages/@monomind/cli/dist/src/monovector/init-state.js +36 -0
- package/packages/@monomind/cli/dist/src/monovector/route-outcomes.d.ts +55 -0
- package/packages/@monomind/cli/dist/src/monovector/route-outcomes.js +137 -0
- package/packages/@monomind/cli/dist/src/parser.js +3 -3
- package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +0 -31
- package/packages/@monomind/cli/dist/src/production/circuit-breaker.d.ts +26 -6
- package/packages/@monomind/cli/dist/src/production/error-handler.d.ts +55 -30
- package/packages/@monomind/cli/dist/src/production/index.d.ts +3 -20
- package/packages/@monomind/cli/dist/src/production/index.js +3 -15
- package/packages/@monomind/cli/dist/src/production/monitoring.d.ts +54 -34
- package/packages/@monomind/cli/dist/src/production/monitoring.js +12 -14
- package/packages/@monomind/cli/dist/src/production/rate-limiter.d.ts +64 -19
- package/packages/@monomind/cli/dist/src/production/rate-limiter.js +5 -5
- package/packages/@monomind/cli/dist/src/production/retry.js +4 -2
- package/packages/@monomind/cli/dist/src/runtime/headless.d.ts +3 -3
- package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +50 -59
- package/packages/@monomind/cli/dist/src/services/claim-service.js +83 -50
- package/packages/@monomind/cli/dist/src/services/config-file-manager.js +8 -1
- package/packages/@monomind/cli/dist/src/services/worker-daemon.js +4 -0
- package/packages/@monomind/cli/dist/src/transfer/ipfs/upload.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/transfer/storage/gcs.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/types.d.ts +13 -0
- package/packages/@monomind/cli/dist/src/update/checker.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/update/index.d.ts +1 -1
- package/packages/@monomind/cli/package.json +13 -13
- package/packages/@monomind/guidance/dist/index.d.ts +1 -1
- package/packages/@monomind/guidance/dist/index.js +1 -1
- package/packages/@monomind/guidance/package.json +1 -2
- package/scripts/build-monovector.sh +10 -0
- package/scripts/publish-monovector.sh +20 -0
- 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/packages/@monomind/cli/dist/src/commands/appliance-advanced.d.ts +0 -9
- package/packages/@monomind/cli/dist/src/commands/appliance-advanced.js +0 -238
- package/packages/@monomind/cli/dist/src/commands/appliance.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/appliance.js +0 -406
- package/packages/@monomind/cli/dist/src/commands/ruvector/backup.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/ruvector/benchmark.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/ruvector/import.d.ts +0 -18
- package/packages/@monomind/cli/dist/src/commands/ruvector/init.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/ruvector/migrate.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/ruvector/setup.d.ts +0 -18
- package/packages/@monomind/cli/dist/src/ruvector/agent-wasm.d.ts +0 -182
- package/packages/@monomind/cli/dist/src/ruvector/agent-wasm.js +0 -316
- package/packages/@monomind/cli/dist/src/ruvector/ast-analyzer.d.ts +0 -67
- package/packages/@monomind/cli/dist/src/ruvector/ast-analyzer.js +0 -277
- package/packages/@monomind/cli/dist/src/ruvector/coverage-router.d.ts +0 -160
- package/packages/@monomind/cli/dist/src/ruvector/coverage-router.js +0 -539
- package/packages/@monomind/cli/dist/src/ruvector/coverage-tools.d.ts +0 -33
- package/packages/@monomind/cli/dist/src/ruvector/coverage-tools.js +0 -157
- package/packages/@monomind/cli/dist/src/ruvector/enhanced-model-router.d.ts +0 -146
- package/packages/@monomind/cli/dist/src/ruvector/enhanced-model-router.js +0 -551
- package/packages/@monomind/cli/dist/src/ruvector/flash-attention.d.ts +0 -195
- package/packages/@monomind/cli/dist/src/ruvector/flash-attention.js +0 -643
- package/packages/@monomind/cli/dist/src/ruvector/graph-analyzer.d.ts +0 -187
- package/packages/@monomind/cli/dist/src/ruvector/graph-analyzer.js +0 -929
- package/packages/@monomind/cli/dist/src/ruvector/index.d.ts +0 -56
- package/packages/@monomind/cli/dist/src/ruvector/index.js +0 -58
- package/packages/@monomind/cli/dist/src/ruvector/lora-adapter.d.ts +0 -218
- package/packages/@monomind/cli/dist/src/ruvector/lora-adapter.js +0 -455
- package/packages/@monomind/cli/dist/src/ruvector/model-router.d.ts +0 -222
- package/packages/@monomind/cli/dist/src/ruvector/model-router.js +0 -512
- package/packages/@monomind/cli/dist/src/ruvector/moe-router.d.ts +0 -213
- package/packages/@monomind/cli/dist/src/ruvector/moe-router.js +0 -649
- package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.d.ts +0 -217
- package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.js +0 -712
- package/packages/@monomind/cli/dist/src/ruvector/ruvllm-wasm.d.ts +0 -179
- package/packages/@monomind/cli/dist/src/ruvector/ruvllm-wasm.js +0 -363
- package/packages/@monomind/cli/dist/src/ruvector/semantic-router.d.ts +0 -77
- package/packages/@monomind/cli/dist/src/ruvector/semantic-router.js +0 -178
- package/packages/@monomind/cli/dist/src/ruvector/vector-db.d.ts +0 -69
- package/packages/@monomind/cli/dist/src/ruvector/vector-db.js +0 -243
- package/packages/@monomind/cli/dist/src/services/ruvector-training.d.ts +0 -222
- package/packages/@monomind/cli/dist/src/services/ruvector-training.js +0 -696
- /package/packages/@monomind/cli/dist/src/{ruvector → monovector}/diff-classifier.js +0 -0
|
@@ -1,455 +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, readFileSync, writeFileSync } from 'fs';
|
|
21
|
-
import { dirname, join } from 'path';
|
|
22
|
-
// ============================================================================
|
|
23
|
-
// Types & Constants
|
|
24
|
-
// ============================================================================
|
|
25
|
-
/**
|
|
26
|
-
* Default LoRA rank (determines memory/quality tradeoff)
|
|
27
|
-
*/
|
|
28
|
-
export const DEFAULT_RANK = 8;
|
|
29
|
-
/**
|
|
30
|
-
* Input dimension (384 from ONNX MiniLM-L6-v2)
|
|
31
|
-
*/
|
|
32
|
-
export const INPUT_DIM = 384;
|
|
33
|
-
/**
|
|
34
|
-
* Default output dimension (same as input for adapter)
|
|
35
|
-
*/
|
|
36
|
-
export const OUTPUT_DIM = 384;
|
|
37
|
-
/**
|
|
38
|
-
* Default alpha scaling factor
|
|
39
|
-
*/
|
|
40
|
-
export const DEFAULT_ALPHA = 16;
|
|
41
|
-
// ============================================================================
|
|
42
|
-
// Default Configuration
|
|
43
|
-
// ============================================================================
|
|
44
|
-
const DEFAULT_CONFIG = {
|
|
45
|
-
rank: DEFAULT_RANK,
|
|
46
|
-
alpha: DEFAULT_ALPHA,
|
|
47
|
-
inputDim: INPUT_DIM,
|
|
48
|
-
outputDim: OUTPUT_DIM,
|
|
49
|
-
learningRate: 0.001,
|
|
50
|
-
weightsPath: join(process.cwd(), '.swarm', 'lora-weights.json'),
|
|
51
|
-
enableDropout: true,
|
|
52
|
-
dropoutProb: 0.1,
|
|
53
|
-
autoSaveInterval: 50,
|
|
54
|
-
};
|
|
55
|
-
// ============================================================================
|
|
56
|
-
// LoRA Adapter Class
|
|
57
|
-
// ============================================================================
|
|
58
|
-
/**
|
|
59
|
-
* Low-Rank Adaptation module for efficient embedding fine-tuning
|
|
60
|
-
*/
|
|
61
|
-
export class LoRAAdapter {
|
|
62
|
-
config;
|
|
63
|
-
weights;
|
|
64
|
-
totalAdaptations = 0;
|
|
65
|
-
totalUpdates = 0;
|
|
66
|
-
adaptationNormSum = 0;
|
|
67
|
-
lastUpdate = null;
|
|
68
|
-
updatesSinceLastSave = 0;
|
|
69
|
-
constructor(config) {
|
|
70
|
-
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
71
|
-
this.weights = this.initializeWeights();
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Initialize weights with Kaiming/He initialization
|
|
75
|
-
*/
|
|
76
|
-
initializeWeights() {
|
|
77
|
-
const { rank, inputDim, outputDim, alpha } = this.config;
|
|
78
|
-
// A: rank × inputDim, initialized with Kaiming normal
|
|
79
|
-
const A = new Float32Array(rank * inputDim);
|
|
80
|
-
const stdA = Math.sqrt(2.0 / inputDim);
|
|
81
|
-
for (let i = 0; i < A.length; i++) {
|
|
82
|
-
A[i] = this.gaussianRandom() * stdA;
|
|
83
|
-
}
|
|
84
|
-
// B: outputDim × rank, initialized to zero (standard LoRA init)
|
|
85
|
-
const B = new Float32Array(outputDim * rank);
|
|
86
|
-
// B starts at zero so initial adaptation is zero
|
|
87
|
-
return {
|
|
88
|
-
A,
|
|
89
|
-
B,
|
|
90
|
-
scaling: alpha / rank,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Box-Muller transform for Gaussian random numbers
|
|
95
|
-
*/
|
|
96
|
-
gaussianRandom() {
|
|
97
|
-
let u = 0, v = 0;
|
|
98
|
-
while (u === 0)
|
|
99
|
-
u = Math.random();
|
|
100
|
-
while (v === 0)
|
|
101
|
-
v = Math.random();
|
|
102
|
-
return Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Initialize adapter and load persisted weights
|
|
106
|
-
*/
|
|
107
|
-
async initialize() {
|
|
108
|
-
const loaded = this.loadWeights();
|
|
109
|
-
return { success: true, weightsLoaded: loaded };
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Apply LoRA adaptation to an embedding
|
|
113
|
-
* output = input + scaling * (B @ A @ input)
|
|
114
|
-
*/
|
|
115
|
-
adapt(input) {
|
|
116
|
-
const startTime = performance.now();
|
|
117
|
-
const { rank, inputDim, outputDim } = this.config;
|
|
118
|
-
const { A, B, scaling } = this.weights;
|
|
119
|
-
// Step 1: Compute A @ input (rank-dimensional)
|
|
120
|
-
const hidden = new Float32Array(rank);
|
|
121
|
-
for (let r = 0; r < rank; r++) {
|
|
122
|
-
let sum = 0;
|
|
123
|
-
const rowOffset = r * inputDim;
|
|
124
|
-
// Unroll by 4 for SIMD-friendly access
|
|
125
|
-
let i = 0;
|
|
126
|
-
for (; i + 3 < inputDim; i += 4) {
|
|
127
|
-
sum += A[rowOffset + i] * input[i];
|
|
128
|
-
sum += A[rowOffset + i + 1] * input[i + 1];
|
|
129
|
-
sum += A[rowOffset + i + 2] * input[i + 2];
|
|
130
|
-
sum += A[rowOffset + i + 3] * input[i + 3];
|
|
131
|
-
}
|
|
132
|
-
for (; i < inputDim; i++) {
|
|
133
|
-
sum += A[rowOffset + i] * input[i];
|
|
134
|
-
}
|
|
135
|
-
hidden[r] = sum;
|
|
136
|
-
}
|
|
137
|
-
// Optional dropout (during training inference, skip)
|
|
138
|
-
// In LoRA inference, we don't apply dropout
|
|
139
|
-
// Step 2: Compute B @ hidden (outputDim-dimensional)
|
|
140
|
-
const delta = new Float32Array(outputDim);
|
|
141
|
-
for (let o = 0; o < outputDim; o++) {
|
|
142
|
-
let sum = 0;
|
|
143
|
-
const rowOffset = o * rank;
|
|
144
|
-
for (let r = 0; r < rank; r++) {
|
|
145
|
-
sum += B[rowOffset + r] * hidden[r];
|
|
146
|
-
}
|
|
147
|
-
delta[o] = sum * scaling;
|
|
148
|
-
}
|
|
149
|
-
// Step 3: Add adaptation to input
|
|
150
|
-
const adapted = new Float32Array(outputDim);
|
|
151
|
-
let adaptationNorm = 0;
|
|
152
|
-
for (let i = 0; i < outputDim; i++) {
|
|
153
|
-
adapted[i] = input[i] + delta[i];
|
|
154
|
-
adaptationNorm += delta[i] * delta[i];
|
|
155
|
-
}
|
|
156
|
-
adaptationNorm = Math.sqrt(adaptationNorm);
|
|
157
|
-
// Update stats
|
|
158
|
-
this.totalAdaptations++;
|
|
159
|
-
this.adaptationNormSum += adaptationNorm;
|
|
160
|
-
const timeMs = performance.now() - startTime;
|
|
161
|
-
return { adapted, adaptationNorm, timeMs };
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Train the adapter with a gradient signal
|
|
165
|
-
* Uses simplified update: A += lr * hidden^T @ grad, B += lr * grad @ hidden^T
|
|
166
|
-
*/
|
|
167
|
-
train(input, gradOutput, reward = 1.0) {
|
|
168
|
-
const { rank, inputDim, outputDim, learningRate } = this.config;
|
|
169
|
-
const { A, B, scaling } = this.weights;
|
|
170
|
-
// Forward pass to get hidden states
|
|
171
|
-
const hidden = new Float32Array(rank);
|
|
172
|
-
for (let r = 0; r < rank; r++) {
|
|
173
|
-
let sum = 0;
|
|
174
|
-
const rowOffset = r * inputDim;
|
|
175
|
-
for (let i = 0; i < inputDim; i++) {
|
|
176
|
-
sum += A[rowOffset + i] * input[i];
|
|
177
|
-
}
|
|
178
|
-
hidden[r] = sum;
|
|
179
|
-
}
|
|
180
|
-
// Compute gradient for B: grad_B = gradOutput @ hidden^T
|
|
181
|
-
const scaledLr = learningRate * reward * scaling;
|
|
182
|
-
for (let o = 0; o < outputDim; o++) {
|
|
183
|
-
const rowOffset = o * rank;
|
|
184
|
-
for (let r = 0; r < rank; r++) {
|
|
185
|
-
B[rowOffset + r] += scaledLr * gradOutput[o] * hidden[r];
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
// Compute gradient for hidden: grad_hidden = B^T @ gradOutput
|
|
189
|
-
const gradHidden = new Float32Array(rank);
|
|
190
|
-
for (let r = 0; r < rank; r++) {
|
|
191
|
-
let sum = 0;
|
|
192
|
-
for (let o = 0; o < outputDim; o++) {
|
|
193
|
-
sum += B[o * rank + r] * gradOutput[o];
|
|
194
|
-
}
|
|
195
|
-
gradHidden[r] = sum;
|
|
196
|
-
}
|
|
197
|
-
// Compute gradient for A: grad_A = gradHidden @ input^T
|
|
198
|
-
for (let r = 0; r < rank; r++) {
|
|
199
|
-
const rowOffset = r * inputDim;
|
|
200
|
-
for (let i = 0; i < inputDim; i++) {
|
|
201
|
-
A[rowOffset + i] += scaledLr * gradHidden[r] * input[i];
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
// Compute loss (L2 norm of gradient)
|
|
205
|
-
let loss = 0;
|
|
206
|
-
for (let i = 0; i < gradOutput.length; i++) {
|
|
207
|
-
loss += gradOutput[i] * gradOutput[i];
|
|
208
|
-
}
|
|
209
|
-
loss = Math.sqrt(loss);
|
|
210
|
-
// Update counters
|
|
211
|
-
this.totalUpdates++;
|
|
212
|
-
this.lastUpdate = Date.now();
|
|
213
|
-
this.updatesSinceLastSave++;
|
|
214
|
-
// Auto-save if needed
|
|
215
|
-
if (this.updatesSinceLastSave >= this.config.autoSaveInterval) {
|
|
216
|
-
this.saveWeights();
|
|
217
|
-
this.updatesSinceLastSave = 0;
|
|
218
|
-
}
|
|
219
|
-
return { updated: true, loss };
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Merge LoRA weights into base weights (for deployment)
|
|
223
|
-
* Returns: W' = W + scaling * B @ A
|
|
224
|
-
*/
|
|
225
|
-
merge(baseWeights) {
|
|
226
|
-
const { rank, inputDim, outputDim } = this.config;
|
|
227
|
-
const { A, B, scaling } = this.weights;
|
|
228
|
-
// Compute BA product
|
|
229
|
-
const merged = new Float32Array(baseWeights);
|
|
230
|
-
for (let o = 0; o < outputDim; o++) {
|
|
231
|
-
for (let i = 0; i < inputDim; i++) {
|
|
232
|
-
let sum = 0;
|
|
233
|
-
for (let r = 0; r < rank; r++) {
|
|
234
|
-
sum += B[o * rank + r] * A[r * inputDim + i];
|
|
235
|
-
}
|
|
236
|
-
merged[o * inputDim + i] += scaling * sum;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
return merged;
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Get current statistics
|
|
243
|
-
*/
|
|
244
|
-
getStats() {
|
|
245
|
-
const { rank, inputDim, outputDim } = this.config;
|
|
246
|
-
const originalParams = inputDim * outputDim;
|
|
247
|
-
const loraParams = rank * (inputDim + outputDim);
|
|
248
|
-
return {
|
|
249
|
-
totalAdaptations: this.totalAdaptations,
|
|
250
|
-
totalUpdates: this.totalUpdates,
|
|
251
|
-
rank: this.config.rank,
|
|
252
|
-
compressionRatio: originalParams / loraParams,
|
|
253
|
-
avgAdaptationNorm: this.totalAdaptations > 0
|
|
254
|
-
? this.adaptationNormSum / this.totalAdaptations
|
|
255
|
-
: 0,
|
|
256
|
-
lastUpdate: this.lastUpdate,
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Reset adapter to initial state
|
|
261
|
-
*/
|
|
262
|
-
reset() {
|
|
263
|
-
this.weights = this.initializeWeights();
|
|
264
|
-
this.totalAdaptations = 0;
|
|
265
|
-
this.totalUpdates = 0;
|
|
266
|
-
this.adaptationNormSum = 0;
|
|
267
|
-
this.lastUpdate = null;
|
|
268
|
-
this.updatesSinceLastSave = 0;
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Save weights to disk
|
|
272
|
-
*/
|
|
273
|
-
saveWeights() {
|
|
274
|
-
try {
|
|
275
|
-
const dir = dirname(this.config.weightsPath);
|
|
276
|
-
if (!existsSync(dir)) {
|
|
277
|
-
mkdirSync(dir, { recursive: true });
|
|
278
|
-
}
|
|
279
|
-
const data = {
|
|
280
|
-
version: 1,
|
|
281
|
-
config: {
|
|
282
|
-
rank: this.config.rank,
|
|
283
|
-
alpha: this.config.alpha,
|
|
284
|
-
inputDim: this.config.inputDim,
|
|
285
|
-
outputDim: this.config.outputDim,
|
|
286
|
-
},
|
|
287
|
-
weights: {
|
|
288
|
-
A: Array.from(this.weights.A),
|
|
289
|
-
B: Array.from(this.weights.B),
|
|
290
|
-
scaling: this.weights.scaling,
|
|
291
|
-
},
|
|
292
|
-
stats: {
|
|
293
|
-
totalAdaptations: this.totalAdaptations,
|
|
294
|
-
totalUpdates: this.totalUpdates,
|
|
295
|
-
adaptationNormSum: this.adaptationNormSum,
|
|
296
|
-
lastUpdate: this.lastUpdate,
|
|
297
|
-
},
|
|
298
|
-
savedAt: new Date().toISOString(),
|
|
299
|
-
};
|
|
300
|
-
writeFileSync(this.config.weightsPath, JSON.stringify(data, null, 2));
|
|
301
|
-
return true;
|
|
302
|
-
}
|
|
303
|
-
catch {
|
|
304
|
-
return false;
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* Load weights from disk
|
|
309
|
-
*/
|
|
310
|
-
loadWeights() {
|
|
311
|
-
try {
|
|
312
|
-
if (!existsSync(this.config.weightsPath)) {
|
|
313
|
-
return false;
|
|
314
|
-
}
|
|
315
|
-
const content = readFileSync(this.config.weightsPath, 'utf-8');
|
|
316
|
-
const data = JSON.parse(content);
|
|
317
|
-
if (data.version !== 1) {
|
|
318
|
-
return false;
|
|
319
|
-
}
|
|
320
|
-
// Verify dimensions match
|
|
321
|
-
const { rank, inputDim, outputDim } = data.config;
|
|
322
|
-
if (rank !== this.config.rank ||
|
|
323
|
-
inputDim !== this.config.inputDim ||
|
|
324
|
-
outputDim !== this.config.outputDim) {
|
|
325
|
-
return false;
|
|
326
|
-
}
|
|
327
|
-
// Load weights
|
|
328
|
-
this.weights = {
|
|
329
|
-
A: new Float32Array(data.weights.A),
|
|
330
|
-
B: new Float32Array(data.weights.B),
|
|
331
|
-
scaling: data.weights.scaling,
|
|
332
|
-
};
|
|
333
|
-
// Load stats
|
|
334
|
-
this.totalAdaptations = data.stats.totalAdaptations || 0;
|
|
335
|
-
this.totalUpdates = data.stats.totalUpdates || 0;
|
|
336
|
-
this.adaptationNormSum = data.stats.adaptationNormSum || 0;
|
|
337
|
-
this.lastUpdate = data.stats.lastUpdate || null;
|
|
338
|
-
return true;
|
|
339
|
-
}
|
|
340
|
-
catch {
|
|
341
|
-
return false;
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
* Export weights as JSON
|
|
346
|
-
*/
|
|
347
|
-
exportWeights() {
|
|
348
|
-
return {
|
|
349
|
-
A: Array.from(this.weights.A),
|
|
350
|
-
B: Array.from(this.weights.B),
|
|
351
|
-
scaling: this.weights.scaling,
|
|
352
|
-
config: {
|
|
353
|
-
rank: this.config.rank,
|
|
354
|
-
alpha: this.config.alpha,
|
|
355
|
-
inputDim: this.config.inputDim,
|
|
356
|
-
outputDim: this.config.outputDim,
|
|
357
|
-
},
|
|
358
|
-
};
|
|
359
|
-
}
|
|
360
|
-
/**
|
|
361
|
-
* Import weights from JSON
|
|
362
|
-
*/
|
|
363
|
-
importWeights(data) {
|
|
364
|
-
try {
|
|
365
|
-
const { rank, inputDim, outputDim } = this.config;
|
|
366
|
-
if (data.A.length !== rank * inputDim ||
|
|
367
|
-
data.B.length !== outputDim * rank) {
|
|
368
|
-
return false;
|
|
369
|
-
}
|
|
370
|
-
this.weights = {
|
|
371
|
-
A: new Float32Array(data.A),
|
|
372
|
-
B: new Float32Array(data.B),
|
|
373
|
-
scaling: data.scaling,
|
|
374
|
-
};
|
|
375
|
-
return true;
|
|
376
|
-
}
|
|
377
|
-
catch {
|
|
378
|
-
return false;
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
// ============================================================================
|
|
383
|
-
// Singleton & Factory Functions
|
|
384
|
-
// ============================================================================
|
|
385
|
-
let loraInstance = null;
|
|
386
|
-
let initPromise = null;
|
|
387
|
-
/**
|
|
388
|
-
* Get or create singleton LoRA adapter instance
|
|
389
|
-
*/
|
|
390
|
-
export async function getLoRAAdapter() {
|
|
391
|
-
if (loraInstance) {
|
|
392
|
-
return loraInstance;
|
|
393
|
-
}
|
|
394
|
-
if (initPromise) {
|
|
395
|
-
return initPromise;
|
|
396
|
-
}
|
|
397
|
-
initPromise = (async () => {
|
|
398
|
-
const adapter = new LoRAAdapter();
|
|
399
|
-
await adapter.initialize();
|
|
400
|
-
loraInstance = adapter;
|
|
401
|
-
return adapter;
|
|
402
|
-
})();
|
|
403
|
-
return initPromise;
|
|
404
|
-
}
|
|
405
|
-
/**
|
|
406
|
-
* Reset singleton instance (for testing)
|
|
407
|
-
*/
|
|
408
|
-
export function resetLoRAAdapter() {
|
|
409
|
-
if (loraInstance) {
|
|
410
|
-
loraInstance.reset();
|
|
411
|
-
}
|
|
412
|
-
loraInstance = null;
|
|
413
|
-
initPromise = null;
|
|
414
|
-
}
|
|
415
|
-
/**
|
|
416
|
-
* Create new LoRA adapter instance (factory)
|
|
417
|
-
*/
|
|
418
|
-
export function createLoRAAdapter(config) {
|
|
419
|
-
return new LoRAAdapter(config);
|
|
420
|
-
}
|
|
421
|
-
/**
|
|
422
|
-
* Quick adaptation (convenience function)
|
|
423
|
-
*/
|
|
424
|
-
export async function adaptEmbedding(input) {
|
|
425
|
-
const adapter = await getLoRAAdapter();
|
|
426
|
-
return adapter.adapt(input);
|
|
427
|
-
}
|
|
428
|
-
/**
|
|
429
|
-
* Quick training (convenience function)
|
|
430
|
-
*/
|
|
431
|
-
export async function trainLoRA(input, gradOutput, reward) {
|
|
432
|
-
const adapter = await getLoRAAdapter();
|
|
433
|
-
return adapter.train(input, gradOutput, reward);
|
|
434
|
-
}
|
|
435
|
-
/**
|
|
436
|
-
* Get LoRA statistics (convenience function)
|
|
437
|
-
*/
|
|
438
|
-
export async function getLoRAStats() {
|
|
439
|
-
const adapter = await getLoRAAdapter();
|
|
440
|
-
return adapter.getStats();
|
|
441
|
-
}
|
|
442
|
-
export default {
|
|
443
|
-
LoRAAdapter,
|
|
444
|
-
getLoRAAdapter,
|
|
445
|
-
resetLoRAAdapter,
|
|
446
|
-
createLoRAAdapter,
|
|
447
|
-
adaptEmbedding,
|
|
448
|
-
trainLoRA,
|
|
449
|
-
getLoRAStats,
|
|
450
|
-
DEFAULT_RANK,
|
|
451
|
-
DEFAULT_ALPHA,
|
|
452
|
-
INPUT_DIM,
|
|
453
|
-
OUTPUT_DIM,
|
|
454
|
-
};
|
|
455
|
-
//# sourceMappingURL=lora-adapter.js.map
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Intelligent Model Router using Tiny Dancer
|
|
3
|
-
*
|
|
4
|
-
* Dynamically routes requests to optimal Claude model (haiku/sonnet/opus)
|
|
5
|
-
* based on task complexity, confidence scores, and historical performance.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - FastGRNN-based routing decisions (<100μs)
|
|
9
|
-
* - Uncertainty quantification for model escalation
|
|
10
|
-
* - Circuit breaker for failover
|
|
11
|
-
* - Online learning from routing outcomes
|
|
12
|
-
* - Complexity scoring via embeddings
|
|
13
|
-
*
|
|
14
|
-
* Routing Strategy:
|
|
15
|
-
* - Haiku: High confidence, low complexity (fast, cheap)
|
|
16
|
-
* - Sonnet: Medium confidence, moderate complexity (balanced)
|
|
17
|
-
* - Opus: Low confidence, high complexity (most capable)
|
|
18
|
-
*
|
|
19
|
-
* @module model-router
|
|
20
|
-
*/
|
|
21
|
-
/**
|
|
22
|
-
* Available Claude models for routing
|
|
23
|
-
*/
|
|
24
|
-
export type ClaudeModel = 'haiku' | 'sonnet' | 'opus' | 'inherit';
|
|
25
|
-
/**
|
|
26
|
-
* Model capabilities and characteristics
|
|
27
|
-
*/
|
|
28
|
-
export declare const MODEL_CAPABILITIES: Record<ClaudeModel, {
|
|
29
|
-
maxComplexity: number;
|
|
30
|
-
costMultiplier: number;
|
|
31
|
-
speedMultiplier: number;
|
|
32
|
-
description: string;
|
|
33
|
-
}>;
|
|
34
|
-
/**
|
|
35
|
-
* Complexity indicators for task classification
|
|
36
|
-
*/
|
|
37
|
-
export declare const COMPLEXITY_INDICATORS: {
|
|
38
|
-
high: string[];
|
|
39
|
-
medium: string[];
|
|
40
|
-
low: string[];
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* Model router configuration
|
|
44
|
-
*/
|
|
45
|
-
export interface ModelRouterConfig {
|
|
46
|
-
/** Confidence threshold for model selection (default: 0.85) */
|
|
47
|
-
confidenceThreshold: number;
|
|
48
|
-
/** Maximum uncertainty before escalating (default: 0.15) */
|
|
49
|
-
maxUncertainty: number;
|
|
50
|
-
/** Enable circuit breaker (default: true) */
|
|
51
|
-
enableCircuitBreaker: boolean;
|
|
52
|
-
/** Failures before circuit opens (default: 5) */
|
|
53
|
-
circuitBreakerThreshold: number;
|
|
54
|
-
/** Path for router state persistence */
|
|
55
|
-
statePath: string;
|
|
56
|
-
/** Auto-save interval in decisions (default: 20) */
|
|
57
|
-
autoSaveInterval: number;
|
|
58
|
-
/** Enable cost optimization (default: true) */
|
|
59
|
-
enableCostOptimization: boolean;
|
|
60
|
-
/** Prefer faster models when confidence is high (default: true) */
|
|
61
|
-
preferSpeed: boolean;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Routing decision result
|
|
65
|
-
*/
|
|
66
|
-
export interface ModelRoutingResult {
|
|
67
|
-
/** Selected model */
|
|
68
|
-
model: ClaudeModel;
|
|
69
|
-
/** Confidence in the decision (0-1) */
|
|
70
|
-
confidence: number;
|
|
71
|
-
/** Uncertainty estimate (0-1) */
|
|
72
|
-
uncertainty: number;
|
|
73
|
-
/** Computed complexity score (0-1) */
|
|
74
|
-
complexity: number;
|
|
75
|
-
/** Reasoning for the selection */
|
|
76
|
-
reasoning: string;
|
|
77
|
-
/** Alternative models considered */
|
|
78
|
-
alternatives: Array<{
|
|
79
|
-
model: ClaudeModel;
|
|
80
|
-
score: number;
|
|
81
|
-
}>;
|
|
82
|
-
/** Inference time in microseconds */
|
|
83
|
-
inferenceTimeUs: number;
|
|
84
|
-
/** Estimated cost multiplier */
|
|
85
|
-
costMultiplier: number;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Complexity analysis result
|
|
89
|
-
*/
|
|
90
|
-
export interface ComplexityAnalysis {
|
|
91
|
-
/** Overall complexity score (0-1) */
|
|
92
|
-
score: number;
|
|
93
|
-
/** Indicators found */
|
|
94
|
-
indicators: {
|
|
95
|
-
high: string[];
|
|
96
|
-
medium: string[];
|
|
97
|
-
low: string[];
|
|
98
|
-
};
|
|
99
|
-
/** Feature breakdown */
|
|
100
|
-
features: {
|
|
101
|
-
lexicalComplexity: number;
|
|
102
|
-
semanticDepth: number;
|
|
103
|
-
taskScope: number;
|
|
104
|
-
uncertaintyLevel: number;
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Intelligent Model Router using complexity-based routing
|
|
109
|
-
*/
|
|
110
|
-
export declare class ModelRouter {
|
|
111
|
-
private config;
|
|
112
|
-
private state;
|
|
113
|
-
private decisionCount;
|
|
114
|
-
private consecutiveFailures;
|
|
115
|
-
constructor(config?: Partial<ModelRouterConfig>);
|
|
116
|
-
/**
|
|
117
|
-
* Route a task to the optimal model
|
|
118
|
-
*/
|
|
119
|
-
route(task: string, embedding?: number[]): Promise<ModelRoutingResult>;
|
|
120
|
-
/**
|
|
121
|
-
* Analyze task complexity
|
|
122
|
-
*/
|
|
123
|
-
analyzeComplexity(task: string, embedding?: number[]): ComplexityAnalysis;
|
|
124
|
-
/**
|
|
125
|
-
* Compute lexical complexity from text features
|
|
126
|
-
*/
|
|
127
|
-
private computeLexicalComplexity;
|
|
128
|
-
/**
|
|
129
|
-
* Compute semantic depth from indicators and embedding
|
|
130
|
-
*/
|
|
131
|
-
private computeSemanticDepth;
|
|
132
|
-
/**
|
|
133
|
-
* Compute task scope from content analysis
|
|
134
|
-
*/
|
|
135
|
-
private computeTaskScope;
|
|
136
|
-
/**
|
|
137
|
-
* Compute uncertainty level from task phrasing
|
|
138
|
-
*/
|
|
139
|
-
private computeUncertaintyLevel;
|
|
140
|
-
/**
|
|
141
|
-
* Compute scores for each model
|
|
142
|
-
*/
|
|
143
|
-
private computeModelScores;
|
|
144
|
-
/**
|
|
145
|
-
* Apply circuit breaker adjustments
|
|
146
|
-
*/
|
|
147
|
-
private applyCircuitBreaker;
|
|
148
|
-
/**
|
|
149
|
-
* Select the best model from scores
|
|
150
|
-
*/
|
|
151
|
-
private selectModel;
|
|
152
|
-
/**
|
|
153
|
-
* Build human-readable reasoning
|
|
154
|
-
*/
|
|
155
|
-
private buildReasoning;
|
|
156
|
-
/**
|
|
157
|
-
* Track routing decision for learning
|
|
158
|
-
*/
|
|
159
|
-
private trackDecision;
|
|
160
|
-
/**
|
|
161
|
-
* Record outcome for learning
|
|
162
|
-
*/
|
|
163
|
-
recordOutcome(task: string, model: ClaudeModel, outcome: 'success' | 'failure' | 'escalated', complexity?: number): void;
|
|
164
|
-
/**
|
|
165
|
-
* Get router statistics
|
|
166
|
-
*/
|
|
167
|
-
getStats(): {
|
|
168
|
-
totalDecisions: number;
|
|
169
|
-
modelDistribution: Record<ClaudeModel, number>;
|
|
170
|
-
avgComplexity: number;
|
|
171
|
-
avgConfidence: number;
|
|
172
|
-
circuitBreakerTrips: number;
|
|
173
|
-
consecutiveFailures: Record<ClaudeModel, number>;
|
|
174
|
-
};
|
|
175
|
-
/**
|
|
176
|
-
* Load state from disk
|
|
177
|
-
*/
|
|
178
|
-
private loadState;
|
|
179
|
-
/**
|
|
180
|
-
* Save state to disk
|
|
181
|
-
*/
|
|
182
|
-
private saveState;
|
|
183
|
-
/**
|
|
184
|
-
* Reset router state
|
|
185
|
-
*/
|
|
186
|
-
reset(): void;
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Get or create the singleton ModelRouter instance.
|
|
190
|
-
* Throws if called with a config that differs from the one used to create
|
|
191
|
-
* the existing instance — silent config mismatch causes hard-to-debug routing bugs.
|
|
192
|
-
*/
|
|
193
|
-
export declare function getModelRouter(config?: Partial<ModelRouterConfig>): ModelRouter;
|
|
194
|
-
/**
|
|
195
|
-
* Reset the singleton instance
|
|
196
|
-
*/
|
|
197
|
-
export declare function resetModelRouter(): void;
|
|
198
|
-
/**
|
|
199
|
-
* Create a new ModelRouter instance (non-singleton)
|
|
200
|
-
*/
|
|
201
|
-
export declare function createModelRouter(config?: Partial<ModelRouterConfig>): ModelRouter;
|
|
202
|
-
/**
|
|
203
|
-
* Quick route function for common use case
|
|
204
|
-
*/
|
|
205
|
-
export declare function routeToModel(task: string): Promise<ClaudeModel>;
|
|
206
|
-
/**
|
|
207
|
-
* Route with full result
|
|
208
|
-
*/
|
|
209
|
-
export declare function routeToModelFull(task: string, embedding?: number[]): Promise<ModelRoutingResult>;
|
|
210
|
-
/**
|
|
211
|
-
* Analyze task complexity without routing
|
|
212
|
-
*/
|
|
213
|
-
export declare function analyzeTaskComplexity(task: string): ComplexityAnalysis;
|
|
214
|
-
/**
|
|
215
|
-
* Get model router statistics
|
|
216
|
-
*/
|
|
217
|
-
export declare function getModelRouterStats(): ReturnType<ModelRouter['getStats']>;
|
|
218
|
-
/**
|
|
219
|
-
* Record routing outcome for learning
|
|
220
|
-
*/
|
|
221
|
-
export declare function recordModelOutcome(task: string, model: ClaudeModel, outcome: 'success' | 'failure' | 'escalated'): void;
|
|
222
|
-
//# sourceMappingURL=model-router.d.ts.map
|