kynjal-cli 3.1.3 → 4.0.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/coder.md +1 -1
- package/.claude/agents/core/planner.md +2 -2
- package/.claude/agents/core/researcher.md +1 -1
- package/.claude/agents/core/reviewer.md +1 -1
- package/.claude/agents/core/tester.md +1 -1
- package/.claude/agents/data/data-ml-model.md +4 -4
- package/.claude/agents/development/dev-backend-api.md +4 -4
- package/.claude/agents/documentation/docs-api-openapi.md +4 -4
- package/.claude/agents/github/code-review-swarm.md +2 -2
- package/.claude/agents/github/issue-tracker.md +2 -2
- package/.claude/agents/github/pr-manager.md +2 -2
- package/.claude/agents/github/release-manager.md +2 -2
- package/.claude/agents/github/workflow-automation.md +2 -2
- package/.claude/agents/sparc/architecture.md +3 -3
- package/.claude/agents/sparc/pseudocode.md +2 -2
- package/.claude/agents/sparc/refinement.md +3 -3
- package/.claude/agents/sparc/specification.md +2 -2
- package/.claude/agents/swarm/adaptive-coordinator.md +1 -1
- package/.claude/agents/swarm/hierarchical-coordinator.md +1 -1
- package/.claude/agents/swarm/mesh-coordinator.md +1 -1
- package/.claude/agents/templates/base-template-generator.md +25 -4
- package/.claude/agents/templates/sparc-coordinator.md +3 -3
- package/.claude/helpers/auto-commit.sh +1 -1
- package/.claude/helpers/auto-memory-hook.mjs +27 -9
- package/.claude/helpers/hook-handler.cjs +58 -18
- package/.claude/helpers/statusline.cjs +14 -33
- package/.claude/helpers/statusline.js +3 -3
- package/.claude/settings.json +9 -9
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +2 -2
- package/.claude/skills/swarm-orchestration/SKILL.md +1 -1
- package/README.md +383 -170
- package/bin/cli.js +6 -6
- package/bin/mcp-server.js +1 -1
- package/bin/preinstall.cjs +2 -0
- package/dist/src/appliance/gguf-engine.js +664 -0
- package/dist/src/appliance/gguf-engine.js.map +1 -0
- package/dist/src/appliance/ruvllm-bridge.js +492 -0
- package/dist/src/appliance/ruvllm-bridge.js.map +1 -0
- package/dist/src/appliance/rvfa-builder.js +383 -0
- package/dist/src/appliance/rvfa-builder.js.map +1 -0
- package/dist/src/appliance/rvfa-distribution.js +533 -0
- package/dist/src/appliance/rvfa-distribution.js.map +1 -0
- package/dist/src/appliance/rvfa-format.js +465 -0
- package/dist/src/appliance/rvfa-format.js.map +1 -0
- package/dist/src/appliance/rvfa-runner.js +373 -0
- package/dist/src/appliance/rvfa-runner.js.map +1 -0
- package/dist/src/appliance/rvfa-signing.js +469 -0
- package/dist/src/appliance/rvfa-signing.js.map +1 -0
- package/dist/src/benchmarks/pretrain/index.js +542 -331
- package/dist/src/benchmarks/pretrain/index.js.map +1 -1
- package/dist/src/commands/agent.d.ts.map +1 -1
- package/dist/src/commands/agent.js +725 -502
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/analyze.js +1548 -1218
- package/dist/src/commands/analyze.js.map +1 -1
- package/dist/src/commands/appliance-advanced.d.ts +9 -0
- package/dist/src/commands/appliance-advanced.d.ts.map +1 -0
- package/dist/src/commands/appliance-advanced.js +324 -0
- package/dist/src/commands/appliance-advanced.js.map +1 -0
- package/dist/src/commands/appliance.d.ts +8 -0
- package/dist/src/commands/appliance.d.ts.map +1 -0
- package/dist/src/commands/appliance.js +581 -0
- package/dist/src/commands/appliance.js.map +1 -0
- package/dist/src/commands/benchmark.js +523 -372
- package/dist/src/commands/benchmark.js.map +1 -1
- package/dist/src/commands/claims.js +364 -274
- package/dist/src/commands/claims.js.map +1 -1
- package/dist/src/commands/cleanup.d.ts +13 -0
- package/dist/src/commands/cleanup.d.ts.map +1 -0
- package/dist/src/commands/cleanup.js +262 -0
- package/dist/src/commands/cleanup.js.map +1 -0
- package/dist/src/commands/completions.js +118 -477
- package/dist/src/commands/completions.js.map +1 -1
- package/dist/src/commands/config.js +303 -237
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/daemon.d.ts.map +1 -1
- package/dist/src/commands/daemon.js +597 -425
- package/dist/src/commands/daemon.js.map +1 -1
- package/dist/src/commands/deployment.js +275 -194
- package/dist/src/commands/deployment.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +690 -460
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/embeddings.js +1543 -1293
- package/dist/src/commands/embeddings.js.map +1 -1
- package/dist/src/commands/guidance.js +596 -449
- package/dist/src/commands/guidance.js.map +1 -1
- package/dist/src/commands/hive-mind.js +938 -854
- package/dist/src/commands/hive-mind.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +3677 -2570
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.js +322 -122
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init.d.ts +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +943 -787
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/issues.js +558 -383
- package/dist/src/commands/issues.js.map +1 -1
- package/dist/src/commands/mcp.d.ts.map +1 -1
- package/dist/src/commands/mcp.js +605 -475
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +1031 -814
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/migrate.js +347 -282
- package/dist/src/commands/migrate.js.map +1 -1
- package/dist/src/commands/neural.d.ts.map +1 -1
- package/dist/src/commands/neural.js +1563 -1283
- package/dist/src/commands/neural.js.map +1 -1
- package/dist/src/commands/performance.js +643 -497
- package/dist/src/commands/performance.js.map +1 -1
- package/dist/src/commands/plugins.js +841 -668
- package/dist/src/commands/plugins.js.map +1 -1
- package/dist/src/commands/process.js +447 -392
- package/dist/src/commands/process.js.map +1 -1
- package/dist/src/commands/progress.js +256 -162
- package/dist/src/commands/progress.js.map +1 -1
- package/dist/src/commands/providers.js +220 -150
- package/dist/src/commands/providers.js.map +1 -1
- package/dist/src/commands/route.js +665 -520
- package/dist/src/commands/route.js.map +1 -1
- package/dist/src/commands/ruvector/backup.js +651 -505
- package/dist/src/commands/ruvector/backup.js.map +1 -1
- package/dist/src/commands/ruvector/benchmark.js +401 -349
- package/dist/src/commands/ruvector/benchmark.js.map +1 -1
- package/dist/src/commands/ruvector/import.js +267 -225
- package/dist/src/commands/ruvector/import.js.map +1 -1
- package/dist/src/commands/ruvector/index.js +75 -37
- package/dist/src/commands/ruvector/index.js.map +1 -1
- package/dist/src/commands/ruvector/init.js +359 -336
- package/dist/src/commands/ruvector/init.js.map +1 -1
- package/dist/src/commands/ruvector/migrate.js +322 -335
- package/dist/src/commands/ruvector/migrate.js.map +1 -1
- package/dist/src/commands/ruvector/optimize.js +431 -375
- package/dist/src/commands/ruvector/optimize.js.map +1 -1
- package/dist/src/commands/ruvector/setup.js +117 -703
- package/dist/src/commands/ruvector/setup.js.map +1 -1
- package/dist/src/commands/ruvector/status.js +419 -364
- package/dist/src/commands/ruvector/status.js.map +1 -1
- package/dist/src/commands/security.d.ts.map +1 -1
- package/dist/src/commands/security.js +610 -456
- package/dist/src/commands/security.js.map +1 -1
- package/dist/src/commands/session.d.ts +1 -1
- package/dist/src/commands/session.js +627 -505
- package/dist/src/commands/session.js.map +1 -1
- package/dist/src/commands/start.d.ts +1 -1
- package/dist/src/commands/start.js +368 -271
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/status.d.ts +1 -1
- package/dist/src/commands/status.d.ts.map +1 -1
- package/dist/src/commands/status.js +492 -379
- package/dist/src/commands/status.js.map +1 -1
- package/dist/src/commands/swarm.js +488 -408
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/commands/task.d.ts +1 -1
- package/dist/src/commands/task.js +539 -424
- package/dist/src/commands/task.js.map +1 -1
- package/dist/src/commands/transfer-store.js +412 -322
- package/dist/src/commands/transfer-store.js.map +1 -1
- package/dist/src/commands/update.js +291 -196
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/workflow.js +486 -386
- package/dist/src/commands/workflow.js.map +1 -1
- package/dist/src/config-adapter.js +40 -39
- package/dist/src/config-adapter.js.map +1 -1
- package/dist/src/index.js +416 -312
- package/dist/src/index.js.map +1 -1
- package/dist/src/infrastructure/in-memory-repositories.js +507 -246
- package/dist/src/infrastructure/in-memory-repositories.js.map +1 -1
- package/dist/src/init/claudemd-generator.js +78 -368
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/executor.js +1019 -1345
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.js +60 -635
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/index.d.ts +1 -1
- package/dist/src/init/index.d.ts.map +1 -1
- package/dist/src/init/index.js +1 -1
- package/dist/src/init/index.js.map +1 -1
- package/dist/src/init/mcp-generator.d.ts +0 -1
- package/dist/src/init/mcp-generator.d.ts.map +1 -1
- package/dist/src/init/mcp-generator.js +62 -42
- package/dist/src/init/mcp-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +167 -100
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts +16 -8
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +20 -1300
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/init/types.d.ts +15 -5
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js +66 -76
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/mcp-client.js +130 -76
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.js +758 -445
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +492 -391
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/agentdb-tools.d.ts +30 -0
- package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/agentdb-tools.js +758 -0
- package/dist/src/mcp-tools/agentdb-tools.js.map +1 -0
- package/dist/src/mcp-tools/analyze-tools.js +236 -172
- package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
- package/dist/src/mcp-tools/auto-install.js +142 -80
- package/dist/src/mcp-tools/auto-install.js.map +1 -1
- package/dist/src/mcp-tools/browser-tools.js +375 -252
- package/dist/src/mcp-tools/browser-tools.js.map +1 -1
- package/dist/src/mcp-tools/claims-tools.js +565 -473
- package/dist/src/mcp-tools/claims-tools.js.map +1 -1
- package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/config-tools.js +284 -190
- package/dist/src/mcp-tools/config-tools.js.map +1 -1
- package/dist/src/mcp-tools/coordination-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/coordination-tools.js +600 -349
- package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
- package/dist/src/mcp-tools/daa-tools.js +367 -289
- package/dist/src/mcp-tools/daa-tools.js.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.js +693 -582
- package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
- package/dist/src/mcp-tools/github-tools.js +312 -261
- package/dist/src/mcp-tools/github-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.js +718 -423
- 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 +2726 -1978
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +2 -0
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +2 -0
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +514 -329
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/neural-tools.js +428 -326
- package/dist/src/mcp-tools/neural-tools.js.map +1 -1
- package/dist/src/mcp-tools/performance-tools.js +480 -420
- package/dist/src/mcp-tools/performance-tools.js.map +1 -1
- package/dist/src/mcp-tools/progress-tools.js +278 -204
- package/dist/src/mcp-tools/progress-tools.js.map +1 -1
- package/dist/src/mcp-tools/ruvllm-tools.d.ts +9 -0
- package/dist/src/mcp-tools/ruvllm-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/ruvllm-tools.js +399 -0
- package/dist/src/mcp-tools/ruvllm-tools.js.map +1 -0
- package/dist/src/mcp-tools/security-tools.js +429 -297
- package/dist/src/mcp-tools/security-tools.js.map +1 -1
- package/dist/src/mcp-tools/session-tools.js +234 -185
- package/dist/src/mcp-tools/session-tools.js.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.d.ts +2 -1
- package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.js +303 -64
- package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
- package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/system-tools.js +352 -200
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.js +357 -189
- package/dist/src/mcp-tools/task-tools.js.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.js +196 -148
- package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.js +333 -186
- package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
- package/dist/src/mcp-tools/wasm-agent-tools.d.ts +9 -0
- package/dist/src/mcp-tools/wasm-agent-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/wasm-agent-tools.js +377 -0
- package/dist/src/mcp-tools/wasm-agent-tools.js.map +1 -0
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.js +471 -335
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
- package/dist/src/memory/ewc-consolidation.js +345 -173
- package/dist/src/memory/ewc-consolidation.js.map +1 -1
- package/dist/src/memory/intelligence.js +841 -359
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.js +1964 -0
- package/dist/src/memory/memory-bridge.js.map +1 -0
- package/dist/src/memory/memory-initializer.js +1895 -1602
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/sona-optimizer.js +329 -199
- package/dist/src/memory/sona-optimizer.js.map +1 -1
- package/dist/src/output.d.ts +2 -2
- package/dist/src/output.d.ts.map +1 -1
- package/dist/src/output.js +273 -242
- package/dist/src/output.js.map +1 -1
- package/dist/src/parser.js +217 -124
- package/dist/src/parser.js.map +1 -1
- package/dist/src/plugins/manager.js +531 -278
- package/dist/src/plugins/manager.js.map +1 -1
- package/dist/src/plugins/store/discovery.js +362 -275
- package/dist/src/plugins/store/discovery.js.map +1 -1
- package/dist/src/plugins/store/index.js +105 -48
- package/dist/src/plugins/store/index.js.map +1 -1
- package/dist/src/plugins/store/search.js +107 -69
- package/dist/src/plugins/store/search.js.map +1 -1
- package/dist/src/plugins/tests/demo-plugin-store.js +160 -113
- package/dist/src/plugins/tests/demo-plugin-store.js.map +1 -1
- package/dist/src/plugins/tests/standalone-test.js +223 -172
- package/dist/src/plugins/tests/standalone-test.js.map +1 -1
- package/dist/src/plugins/tests/test-plugin-store.js +228 -190
- package/dist/src/plugins/tests/test-plugin-store.js.map +1 -1
- package/dist/src/production/circuit-breaker.js +126 -62
- package/dist/src/production/circuit-breaker.js.map +1 -1
- package/dist/src/production/error-handler.js +156 -86
- package/dist/src/production/error-handler.js.map +1 -1
- package/dist/src/production/monitoring.js +220 -139
- package/dist/src/production/monitoring.js.map +1 -1
- package/dist/src/production/rate-limiter.js +93 -74
- package/dist/src/production/rate-limiter.js.map +1 -1
- package/dist/src/production/retry.js +167 -75
- package/dist/src/production/retry.js.map +1 -1
- package/dist/src/prompt.js +560 -436
- package/dist/src/prompt.js.map +1 -1
- package/dist/src/runtime/headless.js +289 -200
- package/dist/src/runtime/headless.js.map +1 -1
- package/dist/src/ruvector/agent-wasm.js +511 -0
- package/dist/src/ruvector/agent-wasm.js.map +1 -0
- package/dist/src/ruvector/ast-analyzer.js +232 -145
- package/dist/src/ruvector/ast-analyzer.js.map +1 -1
- package/dist/src/ruvector/coverage-router.js +419 -287
- package/dist/src/ruvector/coverage-router.js.map +1 -1
- package/dist/src/ruvector/coverage-tools.js +101 -56
- package/dist/src/ruvector/coverage-tools.js.map +1 -1
- package/dist/src/ruvector/diff-classifier.js +451 -324
- package/dist/src/ruvector/diff-classifier.js.map +1 -1
- package/dist/src/ruvector/enhanced-model-router.js +337 -251
- package/dist/src/ruvector/enhanced-model-router.js.map +1 -1
- package/dist/src/ruvector/flash-attention.js +254 -223
- package/dist/src/ruvector/flash-attention.js.map +1 -1
- package/dist/src/ruvector/graph-analyzer.js +680 -486
- package/dist/src/ruvector/graph-analyzer.js.map +1 -1
- package/dist/src/ruvector/index.js +113 -27
- package/dist/src/ruvector/index.js.map +1 -1
- package/dist/src/ruvector/lora-adapter.js +248 -155
- package/dist/src/ruvector/lora-adapter.js.map +1 -1
- package/dist/src/ruvector/model-router.js +248 -175
- package/dist/src/ruvector/model-router.js.map +1 -1
- package/dist/src/ruvector/moe-router.js +286 -228
- package/dist/src/ruvector/moe-router.js.map +1 -1
- package/dist/src/ruvector/q-learning-router.js +338 -257
- package/dist/src/ruvector/q-learning-router.js.map +1 -1
- package/dist/src/ruvector/ruvllm-wasm.js +527 -0
- package/dist/src/ruvector/ruvllm-wasm.js.map +1 -0
- package/dist/src/ruvector/semantic-router.js +67 -60
- package/dist/src/ruvector/semantic-router.js.map +1 -1
- package/dist/src/ruvector/vector-db.js +205 -119
- package/dist/src/ruvector/vector-db.js.map +1 -1
- package/dist/src/services/agentic-flow-bridge.js +168 -0
- package/dist/src/services/agentic-flow-bridge.js.map +1 -0
- package/dist/src/services/claim-service.js +940 -615
- package/dist/src/services/claim-service.js.map +1 -1
- package/dist/src/services/container-worker-pool.js +669 -399
- package/dist/src/services/container-worker-pool.js.map +1 -1
- package/dist/src/services/headless-worker-executor.js +467 -441
- package/dist/src/services/headless-worker-executor.js.map +1 -1
- package/dist/src/services/index.d.ts +5 -5
- package/dist/src/services/index.d.ts.map +1 -1
- package/dist/src/services/index.js +4 -4
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/registry-api.js +201 -93
- package/dist/src/services/registry-api.js.map +1 -1
- package/dist/src/services/ruvector-training.js +414 -144
- package/dist/src/services/ruvector-training.js.map +1 -1
- package/dist/src/services/worker-daemon.js +928 -531
- package/dist/src/services/worker-daemon.js.map +1 -1
- package/dist/src/services/worker-queue.js +550 -331
- package/dist/src/services/worker-queue.js.map +1 -1
- package/dist/src/suggest.js +55 -45
- package/dist/src/suggest.js.map +1 -1
- package/dist/src/transfer/anonymization/index.js +37 -29
- package/dist/src/transfer/anonymization/index.js.map +1 -1
- package/dist/src/transfer/deploy-seraphine.d.ts +1 -1
- package/dist/src/transfer/deploy-seraphine.js +156 -129
- package/dist/src/transfer/deploy-seraphine.js.map +1 -1
- package/dist/src/transfer/export.js +142 -84
- package/dist/src/transfer/export.js.map +1 -1
- package/dist/src/transfer/index.d.ts +1 -1
- package/dist/src/transfer/index.d.ts.map +1 -1
- package/dist/src/transfer/index.js +2 -0
- package/dist/src/transfer/index.js.map +1 -1
- package/dist/src/transfer/ipfs/client.js +337 -179
- package/dist/src/transfer/ipfs/client.js.map +1 -1
- package/dist/src/transfer/ipfs/upload.js +434 -290
- package/dist/src/transfer/ipfs/upload.js.map +1 -1
- package/dist/src/transfer/models/seraphine.js +58 -58
- package/dist/src/transfer/models/seraphine.js.map +1 -1
- package/dist/src/transfer/serialization/cfp.js +37 -33
- package/dist/src/transfer/serialization/cfp.js.map +1 -1
- package/dist/src/transfer/storage/gcs.js +248 -139
- package/dist/src/transfer/storage/gcs.js.map +1 -1
- package/dist/src/transfer/store/discovery.js +353 -243
- package/dist/src/transfer/store/discovery.js.map +1 -1
- package/dist/src/transfer/store/download.js +365 -243
- package/dist/src/transfer/store/download.js.map +1 -1
- package/dist/src/transfer/store/index.js +130 -63
- package/dist/src/transfer/store/index.js.map +1 -1
- package/dist/src/transfer/store/publish.js +258 -184
- package/dist/src/transfer/store/publish.js.map +1 -1
- package/dist/src/transfer/store/registry.js +73 -51
- package/dist/src/transfer/store/registry.js.map +1 -1
- package/dist/src/transfer/store/search.js +96 -64
- package/dist/src/transfer/store/search.js.map +1 -1
- package/dist/src/transfer/store/tests/standalone-test.js +231 -174
- package/dist/src/transfer/store/tests/standalone-test.js.map +1 -1
- package/dist/src/transfer/test-seraphine.js +130 -95
- package/dist/src/transfer/test-seraphine.js.map +1 -1
- package/dist/src/transfer/tests/test-store.js +239 -194
- package/dist/src/transfer/tests/test-store.js.map +1 -1
- package/dist/src/types.js +56 -27
- package/dist/src/types.js.map +1 -1
- package/dist/src/update/checker.js +183 -106
- package/dist/src/update/checker.js.map +1 -1
- package/dist/src/update/executor.js +198 -135
- package/dist/src/update/executor.js.map +1 -1
- package/dist/src/update/index.js +85 -38
- package/dist/src/update/index.js.map +1 -1
- package/dist/src/update/rate-limiter.js +31 -19
- package/dist/src/update/rate-limiter.js.map +1 -1
- package/dist/src/update/validator.js +64 -38
- package/dist/src/update/validator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -10
- package/.claude/agents/custom/accessibility-auditor.yaml +0 -56
- package/.claude/agents/custom/design-architect.yaml +0 -48
- package/.claude/agents/custom/ui-developer.yaml +0 -46
- package/.claude/agents/custom/ux-researcher.yaml +0 -60
- package/dist/src/benchmarks/pretrain/index.d.ts +0 -58
- package/dist/src/benchmarks/pretrain/index.d.ts.map +0 -1
- package/dist/src/commands/index.d.ts +0 -108
- package/dist/src/commands/index.d.ts.map +0 -1
- package/dist/src/config-adapter.d.ts +0 -15
- package/dist/src/config-adapter.d.ts.map +0 -1
- package/dist/src/index.d.ts +0 -76
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/infrastructure/in-memory-repositories.d.ts +0 -68
- package/dist/src/infrastructure/in-memory-repositories.d.ts.map +0 -1
- package/dist/src/init/claudemd-generator.d.ts +0 -25
- package/dist/src/init/claudemd-generator.d.ts.map +0 -1
- package/dist/src/init/executor.d.ts +0 -41
- package/dist/src/init/executor.d.ts.map +0 -1
- package/dist/src/init/helpers-generator.d.ts +0 -60
- package/dist/src/init/helpers-generator.d.ts.map +0 -1
- package/dist/src/mcp-client.d.ts +0 -92
- package/dist/src/mcp-client.d.ts.map +0 -1
- package/dist/src/mcp-server.d.ts +0 -161
- package/dist/src/mcp-server.d.ts.map +0 -1
- package/dist/src/mcp-tools/auto-install.d.ts +0 -83
- package/dist/src/mcp-tools/auto-install.d.ts.map +0 -1
- package/dist/src/mcp-tools/types.d.ts +0 -31
- package/dist/src/mcp-tools/types.d.ts.map +0 -1
- package/dist/src/memory/ewc-consolidation.d.ts +0 -271
- package/dist/src/memory/ewc-consolidation.d.ts.map +0 -1
- package/dist/src/memory/intelligence.d.ts +0 -285
- package/dist/src/memory/intelligence.d.ts.map +0 -1
- package/dist/src/memory/memory-initializer.d.ts +0 -396
- package/dist/src/memory/memory-initializer.d.ts.map +0 -1
- package/dist/src/memory/sona-optimizer.d.ts +0 -227
- package/dist/src/memory/sona-optimizer.d.ts.map +0 -1
- package/dist/src/parser.d.ts +0 -41
- package/dist/src/parser.d.ts.map +0 -1
- package/dist/src/plugins/manager.d.ts +0 -133
- package/dist/src/plugins/manager.d.ts.map +0 -1
- package/dist/src/plugins/store/discovery.d.ts +0 -88
- package/dist/src/plugins/store/discovery.d.ts.map +0 -1
- package/dist/src/plugins/store/index.d.ts +0 -76
- package/dist/src/plugins/store/index.d.ts.map +0 -1
- package/dist/src/plugins/store/search.d.ts +0 -46
- package/dist/src/plugins/store/search.d.ts.map +0 -1
- package/dist/src/plugins/store/types.d.ts +0 -274
- package/dist/src/plugins/store/types.d.ts.map +0 -1
- package/dist/src/production/circuit-breaker.d.ts +0 -101
- package/dist/src/production/circuit-breaker.d.ts.map +0 -1
- package/dist/src/production/error-handler.d.ts +0 -92
- package/dist/src/production/error-handler.d.ts.map +0 -1
- package/dist/src/production/monitoring.d.ts +0 -161
- package/dist/src/production/monitoring.d.ts.map +0 -1
- package/dist/src/production/rate-limiter.d.ts +0 -80
- package/dist/src/production/rate-limiter.d.ts.map +0 -1
- package/dist/src/production/retry.d.ts +0 -48
- package/dist/src/production/retry.d.ts.map +0 -1
- package/dist/src/prompt.d.ts +0 -44
- package/dist/src/prompt.d.ts.map +0 -1
- package/dist/src/runtime/headless.d.ts +0 -60
- package/dist/src/runtime/headless.d.ts.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/coverage-router.d.ts +0 -160
- package/dist/src/ruvector/coverage-router.d.ts.map +0 -1
- package/dist/src/ruvector/diff-classifier.d.ts +0 -175
- package/dist/src/ruvector/diff-classifier.d.ts.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/flash-attention.d.ts +0 -195
- package/dist/src/ruvector/flash-attention.d.ts.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/index.d.ts +0 -34
- package/dist/src/ruvector/index.d.ts.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/model-router.d.ts +0 -220
- package/dist/src/ruvector/model-router.d.ts.map +0 -1
- package/dist/src/ruvector/moe-router.d.ts +0 -206
- package/dist/src/ruvector/moe-router.d.ts.map +0 -1
- package/dist/src/ruvector/q-learning-router.d.ts +0 -211
- package/dist/src/ruvector/q-learning-router.d.ts.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/vector-db.d.ts +0 -69
- package/dist/src/ruvector/vector-db.d.ts.map +0 -1
- package/dist/src/services/claim-service.d.ts +0 -204
- package/dist/src/services/claim-service.d.ts.map +0 -1
- package/dist/src/services/container-worker-pool.d.ts +0 -197
- package/dist/src/services/container-worker-pool.d.ts.map +0 -1
- package/dist/src/services/headless-worker-executor.d.ts +0 -304
- package/dist/src/services/headless-worker-executor.d.ts.map +0 -1
- package/dist/src/services/registry-api.d.ts +0 -58
- package/dist/src/services/registry-api.d.ts.map +0 -1
- package/dist/src/services/ruvector-training.d.ts +0 -213
- package/dist/src/services/ruvector-training.d.ts.map +0 -1
- package/dist/src/services/worker-daemon.d.ts +0 -203
- package/dist/src/services/worker-daemon.d.ts.map +0 -1
- package/dist/src/services/worker-queue.d.ts +0 -194
- package/dist/src/services/worker-queue.d.ts.map +0 -1
- package/dist/src/suggest.d.ts +0 -53
- package/dist/src/suggest.d.ts.map +0 -1
- package/dist/src/transfer/export.d.ts +0 -25
- package/dist/src/transfer/export.d.ts.map +0 -1
- package/dist/src/transfer/ipfs/client.d.ts +0 -109
- package/dist/src/transfer/ipfs/client.d.ts.map +0 -1
- package/dist/src/transfer/ipfs/upload.d.ts +0 -95
- package/dist/src/transfer/ipfs/upload.d.ts.map +0 -1
- package/dist/src/transfer/models/seraphine.d.ts +0 -72
- package/dist/src/transfer/models/seraphine.d.ts.map +0 -1
- package/dist/src/transfer/serialization/cfp.d.ts +0 -49
- package/dist/src/transfer/serialization/cfp.d.ts.map +0 -1
- package/dist/src/transfer/storage/gcs.d.ts +0 -82
- package/dist/src/transfer/storage/gcs.d.ts.map +0 -1
- package/dist/src/transfer/store/discovery.d.ts +0 -84
- package/dist/src/transfer/store/discovery.d.ts.map +0 -1
- package/dist/src/transfer/store/download.d.ts +0 -70
- package/dist/src/transfer/store/download.d.ts.map +0 -1
- package/dist/src/transfer/store/index.d.ts +0 -84
- package/dist/src/transfer/store/index.d.ts.map +0 -1
- package/dist/src/transfer/store/publish.d.ts +0 -76
- package/dist/src/transfer/store/publish.d.ts.map +0 -1
- package/dist/src/transfer/store/search.d.ts +0 -54
- package/dist/src/transfer/store/search.d.ts.map +0 -1
- package/dist/src/transfer/types.d.ts +0 -245
- package/dist/src/transfer/types.d.ts.map +0 -1
- package/dist/src/types.d.ts +0 -198
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/update/checker.d.ts +0 -34
- package/dist/src/update/checker.d.ts.map +0 -1
- package/dist/src/update/executor.d.ts +0 -32
- package/dist/src/update/executor.d.ts.map +0 -1
- package/dist/src/update/index.d.ts +0 -33
- package/dist/src/update/index.d.ts.map +0 -1
- package/dist/src/update/rate-limiter.d.ts +0 -20
- package/dist/src/update/rate-limiter.d.ts.map +0 -1
- package/dist/src/update/validator.d.ts +0 -17
- package/dist/src/update/validator.d.ts.map +0 -1
|
@@ -13,23 +13,79 @@
|
|
|
13
13
|
*
|
|
14
14
|
* @module v3/cli/memory/sona-optimizer
|
|
15
15
|
*/
|
|
16
|
+
var __assign = (this && this.__assign) || function () {
|
|
17
|
+
__assign = Object.assign || function(t) {
|
|
18
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
19
|
+
s = arguments[i];
|
|
20
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
21
|
+
t[p] = s[p];
|
|
22
|
+
}
|
|
23
|
+
return t;
|
|
24
|
+
};
|
|
25
|
+
return __assign.apply(this, arguments);
|
|
26
|
+
};
|
|
27
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
28
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
29
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
30
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
31
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
32
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
33
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
37
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
38
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
39
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
40
|
+
function step(op) {
|
|
41
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
42
|
+
while (_) try {
|
|
43
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
44
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
45
|
+
switch (op[0]) {
|
|
46
|
+
case 0: case 1: t = op; break;
|
|
47
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
48
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
49
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
50
|
+
default:
|
|
51
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
52
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
53
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
54
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
55
|
+
if (t[2]) _.ops.pop();
|
|
56
|
+
_.trys.pop(); continue;
|
|
57
|
+
}
|
|
58
|
+
op = body.call(thisArg, _);
|
|
59
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
60
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
64
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
65
|
+
if (ar || !(i in from)) {
|
|
66
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
67
|
+
ar[i] = from[i];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
71
|
+
};
|
|
16
72
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
17
73
|
import { dirname, join } from 'path';
|
|
18
74
|
// ============================================================================
|
|
19
75
|
// Constants
|
|
20
76
|
// ============================================================================
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
77
|
+
var DEFAULT_PERSISTENCE_PATH = '.swarm/sona-patterns.json';
|
|
78
|
+
var PATTERN_VERSION = '1.0.0';
|
|
79
|
+
var MIN_CONFIDENCE = 0.1;
|
|
80
|
+
var MAX_CONFIDENCE = 0.99;
|
|
81
|
+
var CONFIDENCE_INCREMENT = 0.1;
|
|
82
|
+
var CONFIDENCE_DECREMENT = 0.15;
|
|
83
|
+
var DECAY_RATE = 0.01; // Per day
|
|
84
|
+
var MAX_PATTERNS = 1000;
|
|
29
85
|
/**
|
|
30
86
|
* Common agent types for routing
|
|
31
87
|
*/
|
|
32
|
-
|
|
88
|
+
var AGENT_TYPES = [
|
|
33
89
|
'coder',
|
|
34
90
|
'tester',
|
|
35
91
|
'reviewer',
|
|
@@ -44,7 +100,7 @@ const AGENT_TYPES = [
|
|
|
44
100
|
/**
|
|
45
101
|
* Task keywords for pattern extraction
|
|
46
102
|
*/
|
|
47
|
-
|
|
103
|
+
var KEYWORD_CATEGORIES = {
|
|
48
104
|
coder: [
|
|
49
105
|
'implement', 'code', 'write', 'create', 'build', 'develop', 'add',
|
|
50
106
|
'feature', 'function', 'class', 'module', 'api', 'endpoint',
|
|
@@ -69,7 +125,7 @@ const KEYWORD_CATEGORIES = {
|
|
|
69
125
|
'optimize', 'performance', 'speed', 'memory', 'improve', 'enhance',
|
|
70
126
|
'faster', 'efficient', 'reduce', 'benchmark',
|
|
71
127
|
],
|
|
72
|
-
debugger: [
|
|
128
|
+
"debugger": [
|
|
73
129
|
'debug', 'fix', 'bug', 'error', 'issue', 'problem', 'crash',
|
|
74
130
|
'exception', 'trace', 'diagnose', 'resolve',
|
|
75
131
|
],
|
|
@@ -84,7 +140,7 @@ const KEYWORD_CATEGORIES = {
|
|
|
84
140
|
'performance-engineer': [
|
|
85
141
|
'profiling', 'bottleneck', 'latency', 'throughput', 'cache',
|
|
86
142
|
'scale', 'load', 'stress', 'concurrent', 'parallel',
|
|
87
|
-
]
|
|
143
|
+
]
|
|
88
144
|
};
|
|
89
145
|
// ============================================================================
|
|
90
146
|
// SONAOptimizer Class
|
|
@@ -95,69 +151,81 @@ const KEYWORD_CATEGORIES = {
|
|
|
95
151
|
* Learns from past task outcomes to improve future routing decisions.
|
|
96
152
|
* Integrates with Q-learning router for hybrid routing strategy.
|
|
97
153
|
*/
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
this.persistencePath = options?.persistencePath || DEFAULT_PERSISTENCE_PATH;
|
|
154
|
+
var SONAOptimizer = /** @class */ (function () {
|
|
155
|
+
function SONAOptimizer(options) {
|
|
156
|
+
this.patterns = new Map();
|
|
157
|
+
this.trajectoriesProcessed = 0;
|
|
158
|
+
this.successfulRoutings = 0;
|
|
159
|
+
this.failedRoutings = 0;
|
|
160
|
+
this.lastUpdate = null;
|
|
161
|
+
this.qLearningRouter = null;
|
|
162
|
+
this.qLearningEnabled = false;
|
|
163
|
+
this.persistencePath = (options === null || options === void 0 ? void 0 : options.persistencePath) || DEFAULT_PERSISTENCE_PATH;
|
|
109
164
|
}
|
|
110
165
|
/**
|
|
111
166
|
* Initialize the optimizer and load persisted state
|
|
112
167
|
*/
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
168
|
+
SONAOptimizer.prototype.initialize = function () {
|
|
169
|
+
return __awaiter(this, void 0, Promise, function () {
|
|
170
|
+
var loaded, QLearningRouter, _a;
|
|
171
|
+
return __generator(this, function (_b) {
|
|
172
|
+
switch (_b.label) {
|
|
173
|
+
case 0:
|
|
174
|
+
loaded = this.loadFromDisk();
|
|
175
|
+
_b.label = 1;
|
|
176
|
+
case 1:
|
|
177
|
+
_b.trys.push([1, 4, , 5]);
|
|
178
|
+
return [4 /*yield*/, import('../ruvector/q-learning-router.js')];
|
|
179
|
+
case 2:
|
|
180
|
+
QLearningRouter = (_b.sent()).QLearningRouter;
|
|
181
|
+
this.qLearningRouter = new QLearningRouter();
|
|
182
|
+
return [4 /*yield*/, this.qLearningRouter.initialize()];
|
|
183
|
+
case 3:
|
|
184
|
+
_b.sent();
|
|
185
|
+
this.qLearningEnabled = true;
|
|
186
|
+
return [3 /*break*/, 5];
|
|
187
|
+
case 4:
|
|
188
|
+
_a = _b.sent();
|
|
189
|
+
// Q-learning not available, continue without it
|
|
190
|
+
this.qLearningEnabled = false;
|
|
191
|
+
return [3 /*break*/, 5];
|
|
192
|
+
case 5: return [2 /*return*/, {
|
|
193
|
+
success: true,
|
|
194
|
+
patternsLoaded: loaded ? this.patterns.size : 0
|
|
195
|
+
}];
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
};
|
|
132
200
|
/**
|
|
133
201
|
* Process a trajectory outcome and learn from it
|
|
134
202
|
* Called by hooksTrajectoryEnd
|
|
135
203
|
*/
|
|
136
|
-
processTrajectoryOutcome(outcome) {
|
|
137
|
-
|
|
204
|
+
SONAOptimizer.prototype.processTrajectoryOutcome = function (outcome) {
|
|
205
|
+
var task = outcome.task, agent = outcome.agent, success = outcome.success;
|
|
138
206
|
// Extract keywords from task
|
|
139
|
-
|
|
207
|
+
var keywords = this.extractKeywords(task);
|
|
140
208
|
if (keywords.length === 0) {
|
|
141
209
|
return {
|
|
142
210
|
learned: false,
|
|
143
211
|
patternKey: '',
|
|
144
212
|
confidence: 0,
|
|
145
|
-
keywordsExtracted: []
|
|
213
|
+
keywordsExtracted: []
|
|
146
214
|
};
|
|
147
215
|
}
|
|
148
216
|
// Create pattern key from sorted keywords
|
|
149
|
-
|
|
217
|
+
var patternKey = this.createPatternKey(keywords, agent);
|
|
150
218
|
// Get or create pattern
|
|
151
|
-
|
|
219
|
+
var pattern = this.patterns.get(patternKey);
|
|
152
220
|
if (!pattern) {
|
|
153
221
|
pattern = {
|
|
154
|
-
keywords,
|
|
155
|
-
agent,
|
|
156
|
-
confidence: 0.5,
|
|
222
|
+
keywords: keywords,
|
|
223
|
+
agent: agent,
|
|
224
|
+
confidence: 0.5,
|
|
157
225
|
successCount: 0,
|
|
158
226
|
failureCount: 0,
|
|
159
227
|
lastUsed: Date.now(),
|
|
160
|
-
createdAt: Date.now()
|
|
228
|
+
createdAt: Date.now()
|
|
161
229
|
};
|
|
162
230
|
}
|
|
163
231
|
// Update pattern based on outcome
|
|
@@ -180,25 +248,25 @@ export class SONAOptimizer {
|
|
|
180
248
|
this.prunePatterns();
|
|
181
249
|
// Update Q-learning router if available
|
|
182
250
|
if (this.qLearningRouter) {
|
|
183
|
-
|
|
251
|
+
var reward = success ? 1.0 : -0.5;
|
|
184
252
|
this.qLearningRouter.update(task, agent, reward);
|
|
185
253
|
}
|
|
186
254
|
// Persist to disk (debounced)
|
|
187
255
|
this.saveToDisk();
|
|
188
256
|
return {
|
|
189
257
|
learned: true,
|
|
190
|
-
patternKey,
|
|
258
|
+
patternKey: patternKey,
|
|
191
259
|
confidence: pattern.confidence,
|
|
192
|
-
keywordsExtracted: keywords
|
|
260
|
+
keywordsExtracted: keywords
|
|
193
261
|
};
|
|
194
|
-
}
|
|
262
|
+
};
|
|
195
263
|
/**
|
|
196
264
|
* Get routing suggestion based on learned patterns
|
|
197
265
|
*/
|
|
198
|
-
getRoutingSuggestion(task) {
|
|
199
|
-
|
|
266
|
+
SONAOptimizer.prototype.getRoutingSuggestion = function (task) {
|
|
267
|
+
var keywords = this.extractKeywords(task);
|
|
200
268
|
// Try SONA pattern matching first
|
|
201
|
-
|
|
269
|
+
var sonaResult = this.findBestPatternMatch(keywords);
|
|
202
270
|
if (sonaResult && sonaResult.confidence >= 0.6) {
|
|
203
271
|
return {
|
|
204
272
|
agent: sonaResult.agent,
|
|
@@ -206,29 +274,29 @@ export class SONAOptimizer {
|
|
|
206
274
|
usedQLearning: false,
|
|
207
275
|
source: 'sona-pattern',
|
|
208
276
|
alternatives: this.getAlternatives(keywords, sonaResult.agent),
|
|
209
|
-
matchedKeywords: sonaResult.matchedKeywords
|
|
277
|
+
matchedKeywords: sonaResult.matchedKeywords
|
|
210
278
|
};
|
|
211
279
|
}
|
|
212
280
|
// Try Q-learning router if available
|
|
213
281
|
if (this.qLearningRouter && this.qLearningEnabled) {
|
|
214
282
|
try {
|
|
215
|
-
|
|
283
|
+
var decision = this.qLearningRouter.route(task, false);
|
|
216
284
|
if (decision.confidence >= 0.5) {
|
|
217
285
|
return {
|
|
218
286
|
agent: decision.route,
|
|
219
287
|
confidence: decision.confidence,
|
|
220
288
|
usedQLearning: true,
|
|
221
289
|
source: 'q-learning',
|
|
222
|
-
alternatives: decision.alternatives
|
|
290
|
+
alternatives: decision.alternatives
|
|
223
291
|
};
|
|
224
292
|
}
|
|
225
293
|
}
|
|
226
|
-
catch {
|
|
294
|
+
catch (_a) {
|
|
227
295
|
// Q-learning failed, continue to fallback
|
|
228
296
|
}
|
|
229
297
|
}
|
|
230
298
|
// Fallback to keyword-based heuristic
|
|
231
|
-
|
|
299
|
+
var keywordMatch = this.matchKeywordsToAgent(keywords);
|
|
232
300
|
if (keywordMatch) {
|
|
233
301
|
return {
|
|
234
302
|
agent: keywordMatch.agent,
|
|
@@ -236,7 +304,7 @@ export class SONAOptimizer {
|
|
|
236
304
|
usedQLearning: false,
|
|
237
305
|
source: 'keyword-match',
|
|
238
306
|
alternatives: this.getAlternatives(keywords, keywordMatch.agent),
|
|
239
|
-
matchedKeywords: keywordMatch.matchedKeywords
|
|
307
|
+
matchedKeywords: keywordMatch.matchedKeywords
|
|
240
308
|
};
|
|
241
309
|
}
|
|
242
310
|
// Default fallback
|
|
@@ -248,15 +316,16 @@ export class SONAOptimizer {
|
|
|
248
316
|
alternatives: [
|
|
249
317
|
{ agent: 'researcher', score: 0.2 },
|
|
250
318
|
{ agent: 'architect', score: 0.15 },
|
|
251
|
-
]
|
|
319
|
+
]
|
|
252
320
|
};
|
|
253
|
-
}
|
|
321
|
+
};
|
|
254
322
|
/**
|
|
255
323
|
* Get optimizer statistics
|
|
256
324
|
*/
|
|
257
|
-
getStats() {
|
|
258
|
-
|
|
259
|
-
for (
|
|
325
|
+
SONAOptimizer.prototype.getStats = function () {
|
|
326
|
+
var totalConfidence = 0;
|
|
327
|
+
for (var _i = 0, _a = this.patterns.values(); _i < _a.length; _i++) {
|
|
328
|
+
var pattern = _a[_i];
|
|
260
329
|
totalConfidence += pattern.confidence;
|
|
261
330
|
}
|
|
262
331
|
return {
|
|
@@ -266,24 +335,25 @@ export class SONAOptimizer {
|
|
|
266
335
|
trajectoriesProcessed: this.trajectoriesProcessed,
|
|
267
336
|
avgConfidence: this.patterns.size > 0 ? totalConfidence / this.patterns.size : 0,
|
|
268
337
|
qLearningEnabled: this.qLearningEnabled,
|
|
269
|
-
lastUpdate: this.lastUpdate
|
|
338
|
+
lastUpdate: this.lastUpdate
|
|
270
339
|
};
|
|
271
|
-
}
|
|
340
|
+
};
|
|
272
341
|
/**
|
|
273
342
|
* Apply temporal decay to pattern confidence
|
|
274
343
|
* Reduces confidence of unused patterns
|
|
275
344
|
*/
|
|
276
|
-
applyTemporalDecay() {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
for (
|
|
280
|
-
|
|
345
|
+
SONAOptimizer.prototype.applyTemporalDecay = function () {
|
|
346
|
+
var now = Date.now();
|
|
347
|
+
var decayed = 0;
|
|
348
|
+
for (var _i = 0, _a = this.patterns; _i < _a.length; _i++) {
|
|
349
|
+
var _b = _a[_i], key = _b[0], pattern = _b[1];
|
|
350
|
+
var daysSinceUse = (now - pattern.lastUsed) / (1000 * 60 * 60 * 24);
|
|
281
351
|
if (daysSinceUse > 1) {
|
|
282
|
-
|
|
283
|
-
|
|
352
|
+
var decay = Math.exp(-DECAY_RATE * daysSinceUse);
|
|
353
|
+
var newConfidence = pattern.confidence * decay;
|
|
284
354
|
if (newConfidence < MIN_CONFIDENCE) {
|
|
285
355
|
// Remove patterns with very low confidence
|
|
286
|
-
this.patterns
|
|
356
|
+
this.patterns["delete"](key);
|
|
287
357
|
}
|
|
288
358
|
else {
|
|
289
359
|
pattern.confidence = newConfidence;
|
|
@@ -295,11 +365,11 @@ export class SONAOptimizer {
|
|
|
295
365
|
this.saveToDisk();
|
|
296
366
|
}
|
|
297
367
|
return decayed;
|
|
298
|
-
}
|
|
368
|
+
};
|
|
299
369
|
/**
|
|
300
370
|
* Reset all learned patterns
|
|
301
371
|
*/
|
|
302
|
-
reset() {
|
|
372
|
+
SONAOptimizer.prototype.reset = function () {
|
|
303
373
|
this.patterns.clear();
|
|
304
374
|
this.trajectoriesProcessed = 0;
|
|
305
375
|
this.successfulRoutings = 0;
|
|
@@ -309,23 +379,25 @@ export class SONAOptimizer {
|
|
|
309
379
|
this.qLearningRouter.reset();
|
|
310
380
|
}
|
|
311
381
|
this.saveToDisk();
|
|
312
|
-
}
|
|
382
|
+
};
|
|
313
383
|
/**
|
|
314
384
|
* Export patterns for analysis
|
|
315
385
|
*/
|
|
316
|
-
exportPatterns() {
|
|
317
|
-
|
|
318
|
-
for (
|
|
319
|
-
|
|
386
|
+
SONAOptimizer.prototype.exportPatterns = function () {
|
|
387
|
+
var result = {};
|
|
388
|
+
for (var _i = 0, _a = this.patterns; _i < _a.length; _i++) {
|
|
389
|
+
var _b = _a[_i], key = _b[0], pattern = _b[1];
|
|
390
|
+
result[key] = __assign({}, pattern);
|
|
320
391
|
}
|
|
321
392
|
return result;
|
|
322
|
-
}
|
|
393
|
+
};
|
|
323
394
|
/**
|
|
324
395
|
* Import patterns (for migration or testing)
|
|
325
396
|
*/
|
|
326
|
-
importPatterns(patterns) {
|
|
327
|
-
|
|
328
|
-
for (
|
|
397
|
+
SONAOptimizer.prototype.importPatterns = function (patterns) {
|
|
398
|
+
var imported = 0;
|
|
399
|
+
for (var _i = 0, _a = Object.entries(patterns); _i < _a.length; _i++) {
|
|
400
|
+
var _b = _a[_i], key = _b[0], pattern = _b[1];
|
|
329
401
|
if (this.validatePattern(pattern)) {
|
|
330
402
|
this.patterns.set(key, pattern);
|
|
331
403
|
imported++;
|
|
@@ -333,99 +405,108 @@ export class SONAOptimizer {
|
|
|
333
405
|
}
|
|
334
406
|
this.saveToDisk();
|
|
335
407
|
return imported;
|
|
336
|
-
}
|
|
408
|
+
};
|
|
337
409
|
// ============================================================================
|
|
338
410
|
// Private Methods
|
|
339
411
|
// ============================================================================
|
|
340
412
|
/**
|
|
341
413
|
* Extract meaningful keywords from task description
|
|
342
414
|
*/
|
|
343
|
-
extractKeywords(task) {
|
|
415
|
+
SONAOptimizer.prototype.extractKeywords = function (task) {
|
|
344
416
|
if (!task || typeof task !== 'string') {
|
|
345
417
|
return [];
|
|
346
418
|
}
|
|
347
|
-
|
|
348
|
-
|
|
419
|
+
var lower = task.toLowerCase();
|
|
420
|
+
var words = lower.split(/[\s\-_.,;:!?'"()\[\]{}]+/).filter(function (w) { return w.length > 2; });
|
|
349
421
|
// Extract keywords that match our categories
|
|
350
|
-
|
|
351
|
-
for (
|
|
352
|
-
|
|
422
|
+
var keywords = new Set();
|
|
423
|
+
for (var _i = 0, _a = Object.values(KEYWORD_CATEGORIES); _i < _a.length; _i++) {
|
|
424
|
+
var categoryKeywords = _a[_i];
|
|
425
|
+
for (var _b = 0, categoryKeywords_1 = categoryKeywords; _b < categoryKeywords_1.length; _b++) {
|
|
426
|
+
var keyword = categoryKeywords_1[_b];
|
|
353
427
|
if (lower.includes(keyword)) {
|
|
354
428
|
keywords.add(keyword);
|
|
355
429
|
}
|
|
356
430
|
}
|
|
357
431
|
}
|
|
358
432
|
// Add any significant words not in categories
|
|
359
|
-
for (
|
|
433
|
+
for (var _c = 0, words_1 = words; _c < words_1.length; _c++) {
|
|
434
|
+
var word = words_1[_c];
|
|
360
435
|
if (word.length >= 4 && !this.isStopWord(word)) {
|
|
361
436
|
keywords.add(word);
|
|
362
437
|
}
|
|
363
438
|
}
|
|
364
439
|
return Array.from(keywords).slice(0, 10); // Limit to 10 keywords
|
|
365
|
-
}
|
|
440
|
+
};
|
|
366
441
|
/**
|
|
367
442
|
* Check if word is a stop word
|
|
368
443
|
*/
|
|
369
|
-
isStopWord(word) {
|
|
370
|
-
|
|
444
|
+
SONAOptimizer.prototype.isStopWord = function (word) {
|
|
445
|
+
var stopWords = new Set([
|
|
371
446
|
'the', 'and', 'for', 'that', 'this', 'with', 'from', 'have', 'been',
|
|
372
447
|
'will', 'would', 'could', 'should', 'into', 'then', 'than', 'when',
|
|
373
448
|
'where', 'which', 'there', 'their', 'what', 'about', 'more', 'some',
|
|
374
449
|
'also', 'just', 'only', 'other', 'very', 'after', 'most', 'such',
|
|
375
450
|
]);
|
|
376
451
|
return stopWords.has(word);
|
|
377
|
-
}
|
|
452
|
+
};
|
|
378
453
|
/**
|
|
379
454
|
* Create a unique pattern key from keywords and agent
|
|
380
455
|
*/
|
|
381
|
-
createPatternKey(keywords, agent) {
|
|
382
|
-
|
|
383
|
-
return
|
|
384
|
-
}
|
|
456
|
+
SONAOptimizer.prototype.createPatternKey = function (keywords, agent) {
|
|
457
|
+
var sortedKeywords = __spreadArray([], keywords, true).sort();
|
|
458
|
+
return agent + ":" + sortedKeywords.join('+');
|
|
459
|
+
};
|
|
385
460
|
/**
|
|
386
461
|
* Find the best matching pattern for given keywords
|
|
387
462
|
*/
|
|
388
|
-
findBestPatternMatch(keywords) {
|
|
463
|
+
SONAOptimizer.prototype.findBestPatternMatch = function (keywords) {
|
|
389
464
|
if (keywords.length === 0 || this.patterns.size === 0) {
|
|
390
465
|
return null;
|
|
391
466
|
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
for (
|
|
395
|
-
|
|
396
|
-
|
|
467
|
+
var bestMatch = null;
|
|
468
|
+
var bestScore = 0;
|
|
469
|
+
for (var _i = 0, _a = this.patterns.values(); _i < _a.length; _i++) {
|
|
470
|
+
var pattern = _a[_i];
|
|
471
|
+
var matchedKeywords = pattern.keywords.filter(function (k) { return keywords.includes(k); });
|
|
472
|
+
var matchRatio = matchedKeywords.length / Math.max(pattern.keywords.length, keywords.length);
|
|
397
473
|
// Combine match ratio with confidence
|
|
398
|
-
|
|
474
|
+
var score = matchRatio * pattern.confidence;
|
|
399
475
|
if (score > bestScore && matchedKeywords.length >= 1) {
|
|
400
476
|
bestScore = score;
|
|
401
477
|
bestMatch = {
|
|
402
478
|
agent: pattern.agent,
|
|
403
479
|
confidence: pattern.confidence * matchRatio,
|
|
404
|
-
matchedKeywords
|
|
480
|
+
matchedKeywords: matchedKeywords
|
|
405
481
|
};
|
|
406
482
|
}
|
|
407
483
|
}
|
|
408
484
|
return bestMatch;
|
|
409
|
-
}
|
|
485
|
+
};
|
|
410
486
|
/**
|
|
411
487
|
* Match keywords to agent using category heuristics
|
|
412
488
|
*/
|
|
413
|
-
matchKeywordsToAgent(keywords) {
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
489
|
+
SONAOptimizer.prototype.matchKeywordsToAgent = function (keywords) {
|
|
490
|
+
var scores = {};
|
|
491
|
+
var _loop_1 = function (agent, categoryKeywords) {
|
|
492
|
+
var matched = keywords.filter(function (k) { return categoryKeywords.includes(k); });
|
|
417
493
|
if (matched.length > 0) {
|
|
418
494
|
scores[agent] = {
|
|
419
495
|
score: matched.length / categoryKeywords.length,
|
|
420
|
-
matched
|
|
496
|
+
matched: matched
|
|
421
497
|
};
|
|
422
498
|
}
|
|
499
|
+
};
|
|
500
|
+
for (var _i = 0, _a = Object.entries(KEYWORD_CATEGORIES); _i < _a.length; _i++) {
|
|
501
|
+
var _b = _a[_i], agent = _b[0], categoryKeywords = _b[1];
|
|
502
|
+
_loop_1(agent, categoryKeywords);
|
|
423
503
|
}
|
|
424
504
|
// Find best scoring agent
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
for (
|
|
505
|
+
var bestAgent = '';
|
|
506
|
+
var bestScore = 0;
|
|
507
|
+
var bestMatched = [];
|
|
508
|
+
for (var _c = 0, _d = Object.entries(scores); _c < _d.length; _c++) {
|
|
509
|
+
var _e = _d[_c], agent = _e[0], data = _e[1];
|
|
429
510
|
if (data.score > bestScore) {
|
|
430
511
|
bestScore = data.score;
|
|
431
512
|
bestAgent = agent;
|
|
@@ -436,76 +517,82 @@ export class SONAOptimizer {
|
|
|
436
517
|
return {
|
|
437
518
|
agent: bestAgent,
|
|
438
519
|
confidence: Math.min(0.7, 0.3 + bestScore),
|
|
439
|
-
matchedKeywords: bestMatched
|
|
520
|
+
matchedKeywords: bestMatched
|
|
440
521
|
};
|
|
441
522
|
}
|
|
442
523
|
return null;
|
|
443
|
-
}
|
|
524
|
+
};
|
|
444
525
|
/**
|
|
445
526
|
* Get alternative agent suggestions
|
|
446
527
|
*/
|
|
447
|
-
getAlternatives(keywords, excludeAgent) {
|
|
448
|
-
|
|
449
|
-
|
|
528
|
+
SONAOptimizer.prototype.getAlternatives = function (keywords, excludeAgent) {
|
|
529
|
+
var alternatives = [];
|
|
530
|
+
var _loop_2 = function (agent, categoryKeywords) {
|
|
450
531
|
if (agent === excludeAgent)
|
|
451
|
-
continue;
|
|
452
|
-
|
|
532
|
+
return "continue";
|
|
533
|
+
var matched = keywords.filter(function (k) { return categoryKeywords.includes(k); });
|
|
453
534
|
if (matched.length > 0) {
|
|
454
535
|
alternatives.push({
|
|
455
|
-
agent,
|
|
456
|
-
score: matched.length / Math.max(keywords.length, 1) * 0.5
|
|
536
|
+
agent: agent,
|
|
537
|
+
score: matched.length / Math.max(keywords.length, 1) * 0.5
|
|
457
538
|
});
|
|
458
539
|
}
|
|
540
|
+
};
|
|
541
|
+
for (var _i = 0, _a = Object.entries(KEYWORD_CATEGORIES); _i < _a.length; _i++) {
|
|
542
|
+
var _b = _a[_i], agent = _b[0], categoryKeywords = _b[1];
|
|
543
|
+
_loop_2(agent, categoryKeywords);
|
|
459
544
|
}
|
|
460
545
|
return alternatives
|
|
461
|
-
.sort((a, b)
|
|
546
|
+
.sort(function (a, b) { return b.score - a.score; })
|
|
462
547
|
.slice(0, 3);
|
|
463
|
-
}
|
|
548
|
+
};
|
|
464
549
|
/**
|
|
465
550
|
* Prune old/low-confidence patterns if over limit
|
|
466
551
|
*/
|
|
467
|
-
prunePatterns() {
|
|
552
|
+
SONAOptimizer.prototype.prunePatterns = function () {
|
|
468
553
|
if (this.patterns.size <= MAX_PATTERNS) {
|
|
469
554
|
return;
|
|
470
555
|
}
|
|
471
556
|
// Sort patterns by score (confidence * recency)
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
557
|
+
var entries = Array.from(this.patterns.entries()).map(function (_a) {
|
|
558
|
+
var key = _a[0], pattern = _a[1];
|
|
559
|
+
var ageInDays = (Date.now() - pattern.lastUsed) / (1000 * 60 * 60 * 24);
|
|
560
|
+
var recency = Math.exp(-0.1 * ageInDays);
|
|
561
|
+
var score = pattern.confidence * recency;
|
|
562
|
+
return { key: key, pattern: pattern, score: score };
|
|
477
563
|
});
|
|
478
|
-
entries.sort((a, b)
|
|
564
|
+
entries.sort(function (a, b) { return a.score - b.score; });
|
|
479
565
|
// Remove lowest-scoring patterns
|
|
480
|
-
|
|
481
|
-
for (
|
|
482
|
-
|
|
566
|
+
var toRemove = entries.slice(0, entries.length - Math.floor(MAX_PATTERNS * 0.8));
|
|
567
|
+
for (var _i = 0, toRemove_1 = toRemove; _i < toRemove_1.length; _i++) {
|
|
568
|
+
var key = toRemove_1[_i].key;
|
|
569
|
+
this.patterns["delete"](key);
|
|
483
570
|
}
|
|
484
|
-
}
|
|
571
|
+
};
|
|
485
572
|
/**
|
|
486
573
|
* Validate pattern structure
|
|
487
574
|
*/
|
|
488
|
-
validatePattern(pattern) {
|
|
575
|
+
SONAOptimizer.prototype.validatePattern = function (pattern) {
|
|
489
576
|
if (!pattern || typeof pattern !== 'object')
|
|
490
577
|
return false;
|
|
491
|
-
|
|
578
|
+
var p = pattern;
|
|
492
579
|
return (Array.isArray(p.keywords) &&
|
|
493
580
|
typeof p.agent === 'string' &&
|
|
494
581
|
typeof p.confidence === 'number' &&
|
|
495
582
|
typeof p.successCount === 'number' &&
|
|
496
583
|
typeof p.failureCount === 'number');
|
|
497
|
-
}
|
|
584
|
+
};
|
|
498
585
|
/**
|
|
499
586
|
* Load patterns from disk
|
|
500
587
|
*/
|
|
501
|
-
loadFromDisk() {
|
|
588
|
+
SONAOptimizer.prototype.loadFromDisk = function () {
|
|
502
589
|
try {
|
|
503
|
-
|
|
590
|
+
var fullPath = join(process.cwd(), this.persistencePath);
|
|
504
591
|
if (!existsSync(fullPath)) {
|
|
505
592
|
return false;
|
|
506
593
|
}
|
|
507
|
-
|
|
508
|
-
|
|
594
|
+
var data = readFileSync(fullPath, 'utf-8');
|
|
595
|
+
var state = JSON.parse(data);
|
|
509
596
|
// Validate version
|
|
510
597
|
if (!state.version || !state.version.startsWith('1.')) {
|
|
511
598
|
console.error('[SONA] Incompatible state version, starting fresh');
|
|
@@ -513,7 +600,8 @@ export class SONAOptimizer {
|
|
|
513
600
|
}
|
|
514
601
|
// Load patterns
|
|
515
602
|
this.patterns.clear();
|
|
516
|
-
for (
|
|
603
|
+
for (var _i = 0, _a = Object.entries(state.patterns); _i < _a.length; _i++) {
|
|
604
|
+
var _b = _a[_i], key = _b[0], pattern = _b[1];
|
|
517
605
|
if (this.validatePattern(pattern)) {
|
|
518
606
|
this.patterns.set(key, pattern);
|
|
519
607
|
}
|
|
@@ -528,68 +616,83 @@ export class SONAOptimizer {
|
|
|
528
616
|
return true;
|
|
529
617
|
}
|
|
530
618
|
catch (err) {
|
|
531
|
-
console.error(
|
|
619
|
+
console.error("[SONA] Failed to load state: " + err);
|
|
532
620
|
return false;
|
|
533
621
|
}
|
|
534
|
-
}
|
|
622
|
+
};
|
|
535
623
|
/**
|
|
536
624
|
* Save patterns to disk
|
|
537
625
|
*/
|
|
538
|
-
saveToDisk() {
|
|
626
|
+
SONAOptimizer.prototype.saveToDisk = function () {
|
|
539
627
|
try {
|
|
540
|
-
|
|
541
|
-
|
|
628
|
+
var fullPath = join(process.cwd(), this.persistencePath);
|
|
629
|
+
var dir = dirname(fullPath);
|
|
542
630
|
// Ensure directory exists
|
|
543
631
|
if (!existsSync(dir)) {
|
|
544
632
|
mkdirSync(dir, { recursive: true });
|
|
545
633
|
}
|
|
546
|
-
|
|
634
|
+
var state = {
|
|
547
635
|
version: PATTERN_VERSION,
|
|
548
636
|
patterns: this.exportPatterns(),
|
|
549
637
|
stats: {
|
|
550
638
|
trajectoriesProcessed: this.trajectoriesProcessed,
|
|
551
639
|
successfulRoutings: this.successfulRoutings,
|
|
552
640
|
failedRoutings: this.failedRoutings,
|
|
553
|
-
lastUpdate: this.lastUpdate
|
|
641
|
+
lastUpdate: this.lastUpdate
|
|
554
642
|
},
|
|
555
643
|
metadata: {
|
|
556
644
|
createdAt: new Date().toISOString(),
|
|
557
|
-
savedAt: new Date().toISOString()
|
|
558
|
-
}
|
|
645
|
+
savedAt: new Date().toISOString()
|
|
646
|
+
}
|
|
559
647
|
};
|
|
560
648
|
writeFileSync(fullPath, JSON.stringify(state, null, 2));
|
|
561
649
|
return true;
|
|
562
650
|
}
|
|
563
651
|
catch (err) {
|
|
564
|
-
console.error(
|
|
652
|
+
console.error("[SONA] Failed to save state: " + err);
|
|
565
653
|
return false;
|
|
566
654
|
}
|
|
567
|
-
}
|
|
568
|
-
|
|
655
|
+
};
|
|
656
|
+
return SONAOptimizer;
|
|
657
|
+
}());
|
|
658
|
+
export { SONAOptimizer };
|
|
569
659
|
// ============================================================================
|
|
570
660
|
// Singleton Instance
|
|
571
661
|
// ============================================================================
|
|
572
|
-
|
|
573
|
-
|
|
662
|
+
var sonaOptimizerInstance = null;
|
|
663
|
+
var initializationPromise = null;
|
|
574
664
|
/**
|
|
575
665
|
* Get the singleton SONAOptimizer instance
|
|
576
666
|
* Uses lazy initialization to avoid circular imports
|
|
577
667
|
*/
|
|
578
|
-
export
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
668
|
+
export function getSONAOptimizer() {
|
|
669
|
+
return __awaiter(this, void 0, Promise, function () {
|
|
670
|
+
var _this = this;
|
|
671
|
+
return __generator(this, function (_a) {
|
|
672
|
+
if (sonaOptimizerInstance) {
|
|
673
|
+
return [2 /*return*/, sonaOptimizerInstance];
|
|
674
|
+
}
|
|
675
|
+
// Prevent multiple concurrent initializations
|
|
676
|
+
if (initializationPromise) {
|
|
677
|
+
return [2 /*return*/, initializationPromise];
|
|
678
|
+
}
|
|
679
|
+
initializationPromise = (function () { return __awaiter(_this, void 0, void 0, function () {
|
|
680
|
+
var optimizer;
|
|
681
|
+
return __generator(this, function (_a) {
|
|
682
|
+
switch (_a.label) {
|
|
683
|
+
case 0:
|
|
684
|
+
optimizer = new SONAOptimizer();
|
|
685
|
+
return [4 /*yield*/, optimizer.initialize()];
|
|
686
|
+
case 1:
|
|
687
|
+
_a.sent();
|
|
688
|
+
sonaOptimizerInstance = optimizer;
|
|
689
|
+
return [2 /*return*/, optimizer];
|
|
690
|
+
}
|
|
691
|
+
});
|
|
692
|
+
}); })();
|
|
693
|
+
return [2 /*return*/, initializationPromise];
|
|
694
|
+
});
|
|
695
|
+
});
|
|
593
696
|
}
|
|
594
697
|
/**
|
|
595
698
|
* Reset the singleton instance (for testing)
|
|
@@ -604,30 +707,57 @@ export function resetSONAOptimizer() {
|
|
|
604
707
|
/**
|
|
605
708
|
* Process a trajectory outcome (convenience function)
|
|
606
709
|
*/
|
|
607
|
-
export
|
|
608
|
-
|
|
609
|
-
|
|
710
|
+
export function processTrajectory(outcome) {
|
|
711
|
+
return __awaiter(this, void 0, Promise, function () {
|
|
712
|
+
var optimizer;
|
|
713
|
+
return __generator(this, function (_a) {
|
|
714
|
+
switch (_a.label) {
|
|
715
|
+
case 0: return [4 /*yield*/, getSONAOptimizer()];
|
|
716
|
+
case 1:
|
|
717
|
+
optimizer = _a.sent();
|
|
718
|
+
return [2 /*return*/, optimizer.processTrajectoryOutcome(outcome)];
|
|
719
|
+
}
|
|
720
|
+
});
|
|
721
|
+
});
|
|
610
722
|
}
|
|
611
723
|
/**
|
|
612
724
|
* Get routing suggestion (convenience function)
|
|
613
725
|
*/
|
|
614
|
-
export
|
|
615
|
-
|
|
616
|
-
|
|
726
|
+
export function getSuggestion(task) {
|
|
727
|
+
return __awaiter(this, void 0, Promise, function () {
|
|
728
|
+
var optimizer;
|
|
729
|
+
return __generator(this, function (_a) {
|
|
730
|
+
switch (_a.label) {
|
|
731
|
+
case 0: return [4 /*yield*/, getSONAOptimizer()];
|
|
732
|
+
case 1:
|
|
733
|
+
optimizer = _a.sent();
|
|
734
|
+
return [2 /*return*/, optimizer.getRoutingSuggestion(task)];
|
|
735
|
+
}
|
|
736
|
+
});
|
|
737
|
+
});
|
|
617
738
|
}
|
|
618
739
|
/**
|
|
619
740
|
* Get SONA statistics (convenience function)
|
|
620
741
|
*/
|
|
621
|
-
export
|
|
622
|
-
|
|
623
|
-
|
|
742
|
+
export function getSONAStats() {
|
|
743
|
+
return __awaiter(this, void 0, Promise, function () {
|
|
744
|
+
var optimizer;
|
|
745
|
+
return __generator(this, function (_a) {
|
|
746
|
+
switch (_a.label) {
|
|
747
|
+
case 0: return [4 /*yield*/, getSONAOptimizer()];
|
|
748
|
+
case 1:
|
|
749
|
+
optimizer = _a.sent();
|
|
750
|
+
return [2 /*return*/, optimizer.getStats()];
|
|
751
|
+
}
|
|
752
|
+
});
|
|
753
|
+
});
|
|
624
754
|
}
|
|
625
755
|
export default {
|
|
626
|
-
SONAOptimizer,
|
|
627
|
-
getSONAOptimizer,
|
|
628
|
-
resetSONAOptimizer,
|
|
629
|
-
processTrajectory,
|
|
630
|
-
getSuggestion,
|
|
631
|
-
getSONAStats
|
|
756
|
+
SONAOptimizer: SONAOptimizer,
|
|
757
|
+
getSONAOptimizer: getSONAOptimizer,
|
|
758
|
+
resetSONAOptimizer: resetSONAOptimizer,
|
|
759
|
+
processTrajectory: processTrajectory,
|
|
760
|
+
getSuggestion: getSuggestion,
|
|
761
|
+
getSONAStats: getSONAStats
|
|
632
762
|
};
|
|
633
763
|
//# sourceMappingURL=sona-optimizer.js.map
|