odd-flow 1.0.0 → 1.2.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/README.md +126 -7475
- package/bin/cli.js +2 -2
- package/package.json +12 -12
- package/v3/{@claude-flow → @odd-flow}/cli/README.md +118 -4
- package/v3/{@claude-flow → @odd-flow}/cli/bin/cli.js +4 -4
- package/v3/{@claude-flow → @odd-flow}/cli/bin/mcp-server.js +2 -2
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/gguf-engine.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/gguf-engine.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/ruvllm-bridge.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/ruvllm-bridge.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/rvfa-runner.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/rvfa-runner.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/rvfa-signing.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/rvfa-signing.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/autopilot-state.d.ts +3 -3
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/autopilot-state.js +3 -3
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/agent-wasm.js +7 -7
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/agent.js +15 -15
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/analyze.js +52 -52
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/appliance.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/autopilot.js +4 -4
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/benchmark.js +16 -16
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/claims.js +21 -21
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/cleanup.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/cleanup.js +9 -9
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/completions.js +41 -41
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/config.js +9 -9
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/daemon.js +27 -27
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/deployment.js +20 -20
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/doctor.js +24 -24
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/embeddings.js +58 -58
- package/v3/@odd-flow/cli/dist/src/commands/escalation.d.ts +7 -0
- package/v3/@odd-flow/cli/dist/src/commands/escalation.js +115 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/guidance.js +30 -30
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/hive-mind.js +20 -20
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/hooks.js +103 -103
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/index.d.ts +3 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/index.js +20 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/init.js +49 -48
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/issues.js +6 -6
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/mcp.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/mcp.js +14 -14
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/memory.js +33 -33
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/migrate.js +28 -28
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/neural.js +35 -35
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/performance.js +13 -13
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/plugins.js +33 -33
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/process.js +36 -36
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/progress.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/progress.js +7 -7
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/providers.js +13 -13
- package/v3/@odd-flow/cli/dist/src/commands/refinery.d.ts +7 -0
- package/v3/@odd-flow/cli/dist/src/commands/refinery.js +64 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/route.js +26 -26
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/backup.js +9 -9
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/benchmark.js +4 -4
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/import.d.ts +3 -3
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/import.js +11 -11
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/index.js +9 -9
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/init.js +7 -7
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/migrate.js +5 -5
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/optimize.js +7 -7
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/setup.d.ts +3 -3
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/setup.js +14 -14
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/status.js +4 -4
- package/v3/@odd-flow/cli/dist/src/commands/scheduler.d.ts +7 -0
- package/v3/@odd-flow/cli/dist/src/commands/scheduler.js +86 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/security.js +22 -22
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/session.js +13 -13
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/start.js +16 -16
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/status.js +9 -9
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/swarm.js +10 -10
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/task.js +9 -9
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/transfer-store.js +17 -17
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/update.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/update.js +8 -8
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/workflow.js +13 -13
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/config-adapter.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/config-adapter.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/index.js +2 -2
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/infrastructure/in-memory-repositories.d.ts +4 -4
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/claudemd-generator.js +31 -31
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/executor.js +63 -63
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/helpers-generator.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/helpers-generator.js +19 -19
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/mcp-generator.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/settings-generator.js +6 -6
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/statusline-generator.js +16 -16
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/types.d.ts +3 -3
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-server.d.ts +2 -2
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-server.js +15 -15
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/agent-tools.js +36 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/agentdb-tools.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/claims-tools.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/claims-tools.js +2 -2
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/config-tools.js +12 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/coordination-tools.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/embeddings-tools.js +1 -1
- package/v3/@odd-flow/cli/dist/src/mcp-tools/escalation-tools.d.ts +15 -0
- package/v3/@odd-flow/cli/dist/src/mcp-tools/escalation-tools.js +153 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/hive-mind-tools.js +4 -4
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/hooks-tools.js +3 -3
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/index.d.ts +3 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/index.js +4 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/memory-tools.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/neural-tools.d.ts +3 -3
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/neural-tools.js +8 -8
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/performance-tools.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/progress-tools.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/progress-tools.js +8 -8
- package/v3/@odd-flow/cli/dist/src/mcp-tools/refinery-tools.d.ts +16 -0
- package/v3/@odd-flow/cli/dist/src/mcp-tools/refinery-tools.js +223 -0
- package/v3/@odd-flow/cli/dist/src/mcp-tools/scheduler-tools.d.ts +16 -0
- package/v3/@odd-flow/cli/dist/src/mcp-tools/scheduler-tools.js +72 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/security-tools.js +3 -3
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/session-tools.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/swarm-tools.js +123 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/system-tools.js +2 -2
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/task-tools.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/workflow-tools.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/memory/intelligence.js +5 -5
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/memory/memory-bridge.js +2 -2
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/memory/memory-initializer.js +3 -3
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/manager.js +10 -10
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/store/discovery.js +99 -99
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/tests/demo-plugin-store.js +6 -6
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/tests/standalone-test.js +6 -6
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/tests/test-plugin-store.js +2 -2
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/production/circuit-breaker.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/production/circuit-breaker.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/production/error-handler.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/production/error-handler.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/production/index.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/production/index.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/production/monitoring.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/production/monitoring.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/production/rate-limiter.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/production/rate-limiter.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/production/retry.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/production/retry.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/runtime/headless.d.ts +3 -3
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/runtime/headless.js +3 -3
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/agent-wasm.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/agent-wasm.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/graph-analyzer.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/graph-analyzer.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/index.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/index.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/ruvllm-wasm.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/ruvllm-wasm.js +1 -1
- package/v3/@odd-flow/cli/dist/src/services/checkpoint-manager.d.ts +46 -0
- package/v3/@odd-flow/cli/dist/src/services/checkpoint-manager.js +114 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/claim-service.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/config-file-manager.js +2 -2
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/container-worker-pool.js +6 -6
- package/v3/@odd-flow/cli/dist/src/services/escalation-router.d.ts +46 -0
- package/v3/@odd-flow/cli/dist/src/services/escalation-router.js +138 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/headless-worker-executor.js +2 -2
- package/v3/@odd-flow/cli/dist/src/services/refinery.d.ts +66 -0
- package/v3/@odd-flow/cli/dist/src/services/refinery.js +165 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/registry-api.js +1 -1
- package/v3/@odd-flow/cli/dist/src/services/scheduler.d.ts +66 -0
- package/v3/@odd-flow/cli/dist/src/services/scheduler.js +228 -0
- package/v3/@odd-flow/cli/dist/src/services/watchdog-deacon.d.ts +20 -0
- package/v3/@odd-flow/cli/dist/src/services/watchdog-deacon.js +52 -0
- package/v3/@odd-flow/cli/dist/src/services/watchdog-dogs.d.ts +42 -0
- package/v3/@odd-flow/cli/dist/src/services/watchdog-dogs.js +81 -0
- package/v3/@odd-flow/cli/dist/src/services/watchdog-witness.d.ts +38 -0
- package/v3/@odd-flow/cli/dist/src/services/watchdog-witness.js +57 -0
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/worker-daemon.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/worker-daemon.js +18 -18
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/worker-queue.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/suggest.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/ipfs/upload.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/ipfs/upload.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/models/seraphine.js +2 -2
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/serialization/cfp.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/storage/gcs.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/storage/gcs.js +4 -4
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/discovery.js +7 -7
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/registry.js +4 -4
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/tests/standalone-test.js +4 -4
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/test-seraphine.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/update/checker.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/update/checker.js +11 -11
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/update/executor.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/update/index.d.ts +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/update/index.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/update/rate-limiter.js +1 -1
- package/v3/{@claude-flow → @odd-flow}/cli/dist/src/update/validator.js +11 -11
- package/v3/{@claude-flow → @odd-flow}/cli/package.json +5 -5
- package/v3/{@claude-flow → @odd-flow}/shared/README.md +35 -35
- package/v3/{@claude-flow → @odd-flow}/shared/package.json +1 -1
- package/v3/README.md +55 -55
- /package/v3/{@claude-flow → @odd-flow}/cli/bin/preinstall.cjs +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/rvfa-builder.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/rvfa-builder.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/rvfa-distribution.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/rvfa-distribution.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/rvfa-format.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/appliance/rvfa-format.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/benchmarks/pretrain/index.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/benchmarks/pretrain/index.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/agent-wasm.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/agent.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/analyze.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/appliance-advanced.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/appliance-advanced.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/appliance.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/autopilot.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/benchmark.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/claims.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/completions.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/config.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/daemon.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/deployment.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/doctor.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/embeddings.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/guidance.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/hive-mind.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/hooks.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/init.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/issues.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/memory.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/migrate.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/neural.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/performance.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/plugins.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/process.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/providers.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/route.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/backup.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/benchmark.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/index.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/init.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/migrate.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/optimize.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/ruvector/status.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/security.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/session.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/start.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/status.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/swarm.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/task.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/transfer-store.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/commands/workflow.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/index.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/infrastructure/in-memory-repositories.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/claudemd-generator.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/executor.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/index.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/index.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/mcp-generator.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/settings-generator.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/statusline-generator.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/init/types.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-client.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-client.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/agent-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/agentdb-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/analyze-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/analyze-tools.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/config-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/coordination-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/embeddings-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/hive-mind-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/hooks-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/memory-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/performance-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/security-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/session-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/swarm-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/system-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/task-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/types.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/types.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/mcp-tools/workflow-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/memory/ewc-consolidation.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/memory/ewc-consolidation.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/memory/intelligence.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/memory/memory-bridge.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/memory/memory-initializer.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/memory/sona-optimizer.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/memory/sona-optimizer.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/output.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/output.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/parser.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/parser.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/manager.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/store/discovery.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/store/index.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/store/index.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/store/search.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/store/search.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/store/types.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/store/types.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/tests/demo-plugin-store.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/tests/standalone-test.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/plugins/tests/test-plugin-store.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/prompt.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/prompt.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/ast-analyzer.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/ast-analyzer.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/coverage-router.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/coverage-router.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/coverage-tools.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/coverage-tools.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/diff-classifier.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/diff-classifier.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/enhanced-model-router.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/enhanced-model-router.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/flash-attention.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/flash-attention.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/lora-adapter.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/lora-adapter.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/model-router.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/model-router.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/moe-router.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/moe-router.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/q-learning-router.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/q-learning-router.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/semantic-router.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/semantic-router.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/vector-db.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/ruvector/vector-db.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/agentic-flow-bridge.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/agentic-flow-bridge.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/claim-service.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/config-file-manager.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/container-worker-pool.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/headless-worker-executor.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/index.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/index.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/registry-api.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/ruvector-training.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/ruvector-training.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/services/worker-queue.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/suggest.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/anonymization/index.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/anonymization/index.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/deploy-seraphine.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/deploy-seraphine.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/export.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/export.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/index.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/index.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/ipfs/client.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/ipfs/client.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/models/seraphine.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/serialization/cfp.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/storage/index.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/storage/index.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/discovery.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/download.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/download.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/index.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/index.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/publish.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/publish.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/registry.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/search.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/search.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/tests/standalone-test.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/types.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/store/types.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/test-seraphine.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/tests/test-store.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/tests/test-store.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/types.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/transfer/types.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/types.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/types.js +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/update/executor.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/update/rate-limiter.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/update/validator.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/utils/path-validation.d.ts +0 -0
- /package/v3/{@claude-flow → @odd-flow}/cli/dist/src/utils/path-validation.js +0 -0
|
@@ -202,7 +202,7 @@ function getModelName() {
|
|
|
202
202
|
function getLearningStats() {
|
|
203
203
|
const memoryPaths = [
|
|
204
204
|
path.join(CWD, '.swarm', 'memory.db'),
|
|
205
|
-
path.join(CWD, '.
|
|
205
|
+
path.join(CWD, '.odd-flow', 'memory.db'),
|
|
206
206
|
path.join(CWD, '.claude', 'memory.db'),
|
|
207
207
|
path.join(CWD, 'data', 'memory.db'),
|
|
208
208
|
path.join(CWD, '.agentdb', 'memory.db'),
|
|
@@ -237,7 +237,7 @@ function getV3Progress() {
|
|
|
237
237
|
const learning = getLearningStats();
|
|
238
238
|
const totalDomains = 5;
|
|
239
239
|
|
|
240
|
-
const dddData = readJSON(path.join(CWD, '.
|
|
240
|
+
const dddData = readJSON(path.join(CWD, '.odd-flow', 'metrics', 'ddd-progress.json'));
|
|
241
241
|
let dddProgress = dddData ? (dddData.progress || 0) : 0;
|
|
242
242
|
let domainsCompleted = Math.min(5, Math.floor(dddProgress / 20));
|
|
243
243
|
|
|
@@ -259,7 +259,7 @@ function getV3Progress() {
|
|
|
259
259
|
|
|
260
260
|
// Security status (pure file reads)
|
|
261
261
|
function getSecurityStatus() {
|
|
262
|
-
const auditData = readJSON(path.join(CWD, '.
|
|
262
|
+
const auditData = readJSON(path.join(CWD, '.odd-flow', 'security', 'audit-status.json'));
|
|
263
263
|
if (auditData) {
|
|
264
264
|
const auditDate = auditData.lastAudit || auditData.lastScan;
|
|
265
265
|
if (!auditDate) {
|
|
@@ -294,7 +294,7 @@ function getSwarmStatus() {
|
|
|
294
294
|
const staleThresholdMs = 5 * 60 * 1000;
|
|
295
295
|
const now = Date.now();
|
|
296
296
|
|
|
297
|
-
const swarmStatePath = path.join(CWD, '.
|
|
297
|
+
const swarmStatePath = path.join(CWD, '.odd-flow', 'swarm', 'swarm-state.json');
|
|
298
298
|
const swarmState = readJSON(swarmStatePath);
|
|
299
299
|
if (swarmState) {
|
|
300
300
|
const updatedAt = swarmState.updatedAt || swarmState.startedAt;
|
|
@@ -308,7 +308,7 @@ function getSwarmStatus() {
|
|
|
308
308
|
}
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
const activityData = readJSON(path.join(CWD, '.
|
|
311
|
+
const activityData = readJSON(path.join(CWD, '.odd-flow', 'metrics', 'swarm-activity.json'));
|
|
312
312
|
if (activityData && activityData.swarm) {
|
|
313
313
|
const updatedAt = activityData.timestamp || (activityData.swarm && activityData.swarm.timestamp);
|
|
314
314
|
const age = updatedAt ? now - new Date(updatedAt).getTime() : Infinity;
|
|
@@ -331,7 +331,7 @@ function getSystemMetrics() {
|
|
|
331
331
|
const agentdb = getAgentDBStats();
|
|
332
332
|
|
|
333
333
|
// Intelligence from learning.json
|
|
334
|
-
const learningData = readJSON(path.join(CWD, '.
|
|
334
|
+
const learningData = readJSON(path.join(CWD, '.odd-flow', 'metrics', 'learning.json'));
|
|
335
335
|
let intelligencePct = 0;
|
|
336
336
|
let contextPct = 0;
|
|
337
337
|
|
|
@@ -364,7 +364,7 @@ function getSystemMetrics() {
|
|
|
364
364
|
|
|
365
365
|
// Sub-agents from file metrics (no ps aux)
|
|
366
366
|
let subAgents = 0;
|
|
367
|
-
const activityData = readJSON(path.join(CWD, '.
|
|
367
|
+
const activityData = readJSON(path.join(CWD, '.odd-flow', 'metrics', 'swarm-activity.json'));
|
|
368
368
|
if (activityData && activityData.processes && activityData.processes.estimated_agents) {
|
|
369
369
|
subAgents = activityData.processes.estimated_agents;
|
|
370
370
|
}
|
|
@@ -378,7 +378,7 @@ function getADRStatus() {
|
|
|
378
378
|
const adrPaths = [
|
|
379
379
|
path.join(CWD, 'v3', 'implementation', 'adrs'),
|
|
380
380
|
path.join(CWD, 'docs', 'adrs'),
|
|
381
|
-
path.join(CWD, '.
|
|
381
|
+
path.join(CWD, '.odd-flow', 'adrs'),
|
|
382
382
|
];
|
|
383
383
|
|
|
384
384
|
for (const adrPath of adrPaths) {
|
|
@@ -435,7 +435,7 @@ function getAgentDBStats() {
|
|
|
435
435
|
let hasHnsw = false;
|
|
436
436
|
|
|
437
437
|
// 1. Count real entries from auto-memory-store.json
|
|
438
|
-
const storePath = path.join(CWD, '.
|
|
438
|
+
const storePath = path.join(CWD, '.odd-flow', 'data', 'auto-memory-store.json');
|
|
439
439
|
const storeStat = safeStat(storePath);
|
|
440
440
|
if (storeStat) {
|
|
441
441
|
dbSizeKB += storeStat.size / 1024;
|
|
@@ -448,14 +448,14 @@ function getAgentDBStats() {
|
|
|
448
448
|
|
|
449
449
|
// 2. Count entries from ranked-context.json
|
|
450
450
|
try {
|
|
451
|
-
const ranked = readJSON(path.join(CWD, '.
|
|
451
|
+
const ranked = readJSON(path.join(CWD, '.odd-flow', 'data', 'ranked-context.json'));
|
|
452
452
|
if (ranked && ranked.entries && ranked.entries.length > vectorCount) vectorCount = ranked.entries.length;
|
|
453
453
|
} catch { /* ignore */ }
|
|
454
454
|
|
|
455
455
|
// 3. Add DB file sizes
|
|
456
456
|
const dbFiles = [
|
|
457
457
|
path.join(CWD, 'data', 'memory.db'),
|
|
458
|
-
path.join(CWD, '.
|
|
458
|
+
path.join(CWD, '.odd-flow', 'memory.db'),
|
|
459
459
|
path.join(CWD, '.swarm', 'memory.db'),
|
|
460
460
|
];
|
|
461
461
|
for (const f of dbFiles) {
|
|
@@ -473,15 +473,15 @@ function getAgentDBStats() {
|
|
|
473
473
|
// 5. HNSW index or memory package
|
|
474
474
|
const hnswPaths = [
|
|
475
475
|
path.join(CWD, '.swarm', 'hnsw.index'),
|
|
476
|
-
path.join(CWD, '.
|
|
476
|
+
path.join(CWD, '.odd-flow', 'hnsw.index'),
|
|
477
477
|
];
|
|
478
478
|
for (const p of hnswPaths) {
|
|
479
479
|
if (safeStat(p)) { hasHnsw = true; break; }
|
|
480
480
|
}
|
|
481
481
|
if (!hasHnsw) {
|
|
482
482
|
const memPkgPaths = [
|
|
483
|
-
path.join(CWD, 'v3', '@
|
|
484
|
-
path.join(CWD, 'node_modules', '@
|
|
483
|
+
path.join(CWD, 'v3', '@odd-flow', 'memory', 'dist'),
|
|
484
|
+
path.join(CWD, 'node_modules', '@odd-flow', 'memory'),
|
|
485
485
|
];
|
|
486
486
|
for (const p of memPkgPaths) {
|
|
487
487
|
if (fs.existsSync(p)) { hasHnsw = true; break; }
|
|
@@ -545,7 +545,7 @@ function getIntegrationStatus() {
|
|
|
545
545
|
}
|
|
546
546
|
}
|
|
547
547
|
|
|
548
|
-
const hasDatabase = ['.swarm/memory.db', '.
|
|
548
|
+
const hasDatabase = ['.swarm/memory.db', '.odd-flow/memory.db', 'data/memory.db']
|
|
549
549
|
.some(p => fs.existsSync(path.join(CWD, p)));
|
|
550
550
|
const hasApi = !!(process.env.ANTHROPIC_API_KEY || process.env.OPENAI_API_KEY);
|
|
551
551
|
|
|
@@ -554,7 +554,7 @@ function getIntegrationStatus() {
|
|
|
554
554
|
|
|
555
555
|
// Session stats (pure file reads)
|
|
556
556
|
function getSessionStats() {
|
|
557
|
-
var sessionPaths = ['.
|
|
557
|
+
var sessionPaths = ['.odd-flow/session.json', '.claude/session.json'];
|
|
558
558
|
for (var i = 0; i < sessionPaths.length; i++) {
|
|
559
559
|
const data = readJSON(path.join(CWD, sessionPaths[i]));
|
|
560
560
|
if (data && data.startTime) {
|
|
@@ -20,7 +20,7 @@ export interface InitComponents {
|
|
|
20
20
|
statusline: boolean;
|
|
21
21
|
/** Create MCP configuration */
|
|
22
22
|
mcp: boolean;
|
|
23
|
-
/** Create .
|
|
23
|
+
/** Create .odd-flow/ directory (V3 runtime) */
|
|
24
24
|
runtime: boolean;
|
|
25
25
|
/** Create CLAUDE.md with swarm guidance */
|
|
26
26
|
claudeMd: boolean;
|
|
@@ -154,7 +154,7 @@ export interface StatuslineConfig {
|
|
|
154
154
|
* MCP configuration
|
|
155
155
|
*/
|
|
156
156
|
export interface MCPConfig {
|
|
157
|
-
/** Include
|
|
157
|
+
/** Include odd-flow MCP server */
|
|
158
158
|
claudeFlow: boolean;
|
|
159
159
|
/** Include ruv-swarm MCP server */
|
|
160
160
|
ruvSwarm: boolean;
|
|
@@ -166,7 +166,7 @@ export interface MCPConfig {
|
|
|
166
166
|
port: number;
|
|
167
167
|
}
|
|
168
168
|
/**
|
|
169
|
-
* Runtime configuration (.
|
|
169
|
+
* Runtime configuration (.odd-flow/)
|
|
170
170
|
*/
|
|
171
171
|
export interface RuntimeConfig {
|
|
172
172
|
/** Swarm topology */
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - Health check: <10ms
|
|
14
14
|
* - Graceful shutdown: <5s
|
|
15
15
|
*
|
|
16
|
-
* @module @
|
|
16
|
+
* @module @odd-flow/cli/mcp-server
|
|
17
17
|
* @version 3.0.0
|
|
18
18
|
*/
|
|
19
19
|
import { EventEmitter } from 'events';
|
|
@@ -122,7 +122,7 @@ export declare class MCPServerManager extends EventEmitter {
|
|
|
122
122
|
*/
|
|
123
123
|
private removePidFile;
|
|
124
124
|
/**
|
|
125
|
-
* Check if process is running AND is a node/
|
|
125
|
+
* Check if process is running AND is a node/odd-flow process.
|
|
126
126
|
* Plain `kill -0` returns true for any process with the same owner,
|
|
127
127
|
* which causes false positives when the OS recycles the PID.
|
|
128
128
|
*/
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - Health check: <10ms
|
|
14
14
|
* - Graceful shutdown: <5s
|
|
15
15
|
*
|
|
16
|
-
* @module @
|
|
16
|
+
* @module @odd-flow/cli/mcp-server
|
|
17
17
|
* @version 3.0.0
|
|
18
18
|
*/
|
|
19
19
|
import { EventEmitter } from 'events';
|
|
@@ -33,8 +33,8 @@ const DEFAULT_OPTIONS = {
|
|
|
33
33
|
transport: 'stdio',
|
|
34
34
|
host: 'localhost',
|
|
35
35
|
port: 3000,
|
|
36
|
-
pidFile: path.join(os.tmpdir(), '
|
|
37
|
-
logFile: path.join(os.tmpdir(), '
|
|
36
|
+
pidFile: path.join(os.tmpdir(), 'odd-flow-mcp.pid'),
|
|
37
|
+
logFile: path.join(os.tmpdir(), 'odd-flow-mcp.log'),
|
|
38
38
|
tools: 'all',
|
|
39
39
|
daemonize: false,
|
|
40
40
|
timeout: 30000,
|
|
@@ -237,7 +237,7 @@ export class MCPServerManager extends EventEmitter {
|
|
|
237
237
|
const VERSION = '3.0.0';
|
|
238
238
|
const sessionId = `mcp-${Date.now()}-${randomUUID().slice(0, 8)}`;
|
|
239
239
|
// Log to stderr to not corrupt stdout
|
|
240
|
-
console.error(`[${new Date().toISOString()}] INFO [
|
|
240
|
+
console.error(`[${new Date().toISOString()}] INFO [odd-flow-mcp] (${sessionId}) Starting in stdio mode`);
|
|
241
241
|
console.error(JSON.stringify({
|
|
242
242
|
arch: process.arch,
|
|
243
243
|
mode: 'mcp-stdio',
|
|
@@ -269,7 +269,7 @@ export class MCPServerManager extends EventEmitter {
|
|
|
269
269
|
process.stdin.on('data', async (chunk) => {
|
|
270
270
|
buffer += chunk.toString();
|
|
271
271
|
if (buffer.length > MAX_BUFFER_SIZE) {
|
|
272
|
-
console.error(`[${new Date().toISOString()}] ERROR [
|
|
272
|
+
console.error(`[${new Date().toISOString()}] ERROR [odd-flow-mcp] Buffer exceeded ${MAX_BUFFER_SIZE} bytes, rejecting`);
|
|
273
273
|
buffer = '';
|
|
274
274
|
console.log(JSON.stringify({
|
|
275
275
|
jsonrpc: '2.0',
|
|
@@ -290,22 +290,22 @@ export class MCPServerManager extends EventEmitter {
|
|
|
290
290
|
}
|
|
291
291
|
}
|
|
292
292
|
catch (error) {
|
|
293
|
-
console.error(`[${new Date().toISOString()}] ERROR [
|
|
293
|
+
console.error(`[${new Date().toISOString()}] ERROR [odd-flow-mcp] Failed to parse message:`, error instanceof Error ? error.message : String(error));
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
297
|
});
|
|
298
298
|
process.stdin.on('end', () => {
|
|
299
|
-
console.error(`[${new Date().toISOString()}] INFO [
|
|
299
|
+
console.error(`[${new Date().toISOString()}] INFO [odd-flow-mcp] (${sessionId}) stdin closed, shutting down...`);
|
|
300
300
|
process.exit(0);
|
|
301
301
|
});
|
|
302
302
|
// Handle process termination
|
|
303
303
|
process.on('SIGINT', () => {
|
|
304
|
-
console.error(`[${new Date().toISOString()}] INFO [
|
|
304
|
+
console.error(`[${new Date().toISOString()}] INFO [odd-flow-mcp] (${sessionId}) Received SIGINT, shutting down...`);
|
|
305
305
|
process.exit(0);
|
|
306
306
|
});
|
|
307
307
|
process.on('SIGTERM', () => {
|
|
308
|
-
console.error(`[${new Date().toISOString()}] INFO [
|
|
308
|
+
console.error(`[${new Date().toISOString()}] INFO [odd-flow-mcp] (${sessionId}) Received SIGTERM, shutting down...`);
|
|
309
309
|
process.exit(0);
|
|
310
310
|
});
|
|
311
311
|
// Mark as ready immediately for stdio
|
|
@@ -382,7 +382,7 @@ export class MCPServerManager extends EventEmitter {
|
|
|
382
382
|
}
|
|
383
383
|
case 'notifications/initialized':
|
|
384
384
|
// Client notification - no response needed
|
|
385
|
-
console.error(`[${new Date().toISOString()}] INFO [
|
|
385
|
+
console.error(`[${new Date().toISOString()}] INFO [odd-flow-mcp] (${sessionId}) Client initialized`);
|
|
386
386
|
return null;
|
|
387
387
|
case 'ping':
|
|
388
388
|
return {
|
|
@@ -399,7 +399,7 @@ export class MCPServerManager extends EventEmitter {
|
|
|
399
399
|
}
|
|
400
400
|
}
|
|
401
401
|
catch (error) {
|
|
402
|
-
console.error(`[${new Date().toISOString()}] ERROR [
|
|
402
|
+
console.error(`[${new Date().toISOString()}] ERROR [odd-flow-mcp] Error handling ${message.method}:`, error);
|
|
403
403
|
return {
|
|
404
404
|
jsonrpc: '2.0',
|
|
405
405
|
id: message.id,
|
|
@@ -416,7 +416,7 @@ export class MCPServerManager extends EventEmitter {
|
|
|
416
416
|
async startHttpServer() {
|
|
417
417
|
// Dynamically import the MCP server package
|
|
418
418
|
// FIX for issue #942: Use proper package import instead of broken relative path
|
|
419
|
-
const { createMCPServer } = await import('@
|
|
419
|
+
const { createMCPServer } = await import('@odd-flow/mcp');
|
|
420
420
|
const logger = {
|
|
421
421
|
debug: (msg, data) => this.emit('log', { level: 'debug', msg, data }),
|
|
422
422
|
info: (msg, data) => this.emit('log', { level: 'info', msg, data }),
|
|
@@ -520,7 +520,7 @@ export class MCPServerManager extends EventEmitter {
|
|
|
520
520
|
}
|
|
521
521
|
// Also clean up legacy PID file location from older versions
|
|
522
522
|
try {
|
|
523
|
-
const legacyPath = path.join(process.cwd(), '.
|
|
523
|
+
const legacyPath = path.join(process.cwd(), '.odd-flow', 'mcp-server.pid');
|
|
524
524
|
if (legacyPath !== this.options.pidFile) {
|
|
525
525
|
await fs.promises.unlink(legacyPath);
|
|
526
526
|
}
|
|
@@ -530,7 +530,7 @@ export class MCPServerManager extends EventEmitter {
|
|
|
530
530
|
}
|
|
531
531
|
}
|
|
532
532
|
/**
|
|
533
|
-
* Check if process is running AND is a node/
|
|
533
|
+
* Check if process is running AND is a node/odd-flow process.
|
|
534
534
|
* Plain `kill -0` returns true for any process with the same owner,
|
|
535
535
|
* which causes false positives when the OS recycles the PID.
|
|
536
536
|
*/
|
|
@@ -549,7 +549,7 @@ export class MCPServerManager extends EventEmitter {
|
|
|
549
549
|
timeout: 1000,
|
|
550
550
|
}).trim();
|
|
551
551
|
// Must be a node process to be our MCP server
|
|
552
|
-
return cmdline.includes('node') || cmdline.includes('
|
|
552
|
+
return cmdline.includes('node') || cmdline.includes('odd-flow') || cmdline.includes('npx');
|
|
553
553
|
}
|
|
554
554
|
catch {
|
|
555
555
|
// If we can't inspect the process (macOS, Windows, permissions), fall back to kill check
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
8
8
|
import { join } from 'node:path';
|
|
9
9
|
// Storage paths
|
|
10
|
-
const STORAGE_DIR = '.
|
|
10
|
+
const STORAGE_DIR = '.odd-flow';
|
|
11
11
|
const AGENT_DIR = 'agents';
|
|
12
12
|
const AGENT_FILE = 'store.json';
|
|
13
13
|
function getAgentDir() {
|
|
@@ -172,6 +172,7 @@ export const agentTools = [
|
|
|
172
172
|
config,
|
|
173
173
|
createdAt: new Date().toISOString(),
|
|
174
174
|
domain: input.domain,
|
|
175
|
+
lastHeartbeat: Date.now(),
|
|
175
176
|
model: routingResult.model,
|
|
176
177
|
modelRoutedBy: routingResult.routedBy,
|
|
177
178
|
};
|
|
@@ -256,6 +257,9 @@ export const agentTools = [
|
|
|
256
257
|
taskCount: agent.taskCount,
|
|
257
258
|
createdAt: agent.createdAt,
|
|
258
259
|
domain: agent.domain,
|
|
260
|
+
lastHeartbeat: agent.lastHeartbeat || null,
|
|
261
|
+
heartbeatAge: agent.lastHeartbeat ? Date.now() - agent.lastHeartbeat : null,
|
|
262
|
+
terminatedBy: agent.terminatedBy || null,
|
|
259
263
|
lastResult: agent.lastResult || null,
|
|
260
264
|
};
|
|
261
265
|
}
|
|
@@ -546,5 +550,36 @@ export const agentTools = [
|
|
|
546
550
|
};
|
|
547
551
|
},
|
|
548
552
|
},
|
|
553
|
+
{
|
|
554
|
+
name: 'agent_heartbeat',
|
|
555
|
+
description: 'Update agent heartbeat timestamp (agents call this periodically to signal liveness)',
|
|
556
|
+
category: 'agent',
|
|
557
|
+
inputSchema: {
|
|
558
|
+
type: 'object',
|
|
559
|
+
properties: {
|
|
560
|
+
agentId: { type: 'string', description: 'ID of the agent sending heartbeat' },
|
|
561
|
+
},
|
|
562
|
+
required: ['agentId'],
|
|
563
|
+
},
|
|
564
|
+
handler: async (input) => {
|
|
565
|
+
const store = loadAgentStore();
|
|
566
|
+
const agentId = input.agentId;
|
|
567
|
+
const agent = store.agents[agentId];
|
|
568
|
+
if (!agent) {
|
|
569
|
+
return { success: false, agentId, error: 'Agent not found' };
|
|
570
|
+
}
|
|
571
|
+
if (agent.status === 'terminated') {
|
|
572
|
+
return { success: false, agentId, error: 'Agent is terminated' };
|
|
573
|
+
}
|
|
574
|
+
agent.lastHeartbeat = Date.now();
|
|
575
|
+
saveAgentStore(store);
|
|
576
|
+
return {
|
|
577
|
+
success: true,
|
|
578
|
+
agentId,
|
|
579
|
+
lastHeartbeat: agent.lastHeartbeat,
|
|
580
|
+
status: agent.status,
|
|
581
|
+
};
|
|
582
|
+
},
|
|
583
|
+
},
|
|
549
584
|
];
|
|
550
585
|
//# sourceMappingURL=agent-tools.js.map
|
|
@@ -81,7 +81,7 @@ export const agentdbControllers = {
|
|
|
81
81
|
const bridge = await getBridge();
|
|
82
82
|
const controllers = await bridge.bridgeListControllers();
|
|
83
83
|
if (!controllers)
|
|
84
|
-
return { available: false, controllers: [], error: 'AgentDB bridge not available — @
|
|
84
|
+
return { available: false, controllers: [], error: 'AgentDB bridge not available — @odd-flow/memory not installed or missing controller-registry. Use memory_store/memory_search tools instead.' };
|
|
85
85
|
return {
|
|
86
86
|
available: true,
|
|
87
87
|
controllers,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Implements MCP tools for ADR-016: Collaborative Issue Claims
|
|
5
5
|
* Provides programmatic access to claim operations for MCP clients.
|
|
6
6
|
*
|
|
7
|
-
* @module @
|
|
7
|
+
* @module @odd-flow/cli/mcp-tools/claims
|
|
8
8
|
*/
|
|
9
9
|
import type { MCPTool } from './types.js';
|
|
10
10
|
export declare const claimsTools: MCPTool[];
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
* Implements MCP tools for ADR-016: Collaborative Issue Claims
|
|
5
5
|
* Provides programmatic access to claim operations for MCP clients.
|
|
6
6
|
*
|
|
7
|
-
* @module @
|
|
7
|
+
* @module @odd-flow/cli/mcp-tools/claims
|
|
8
8
|
*/
|
|
9
9
|
// File-based persistence
|
|
10
10
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
11
11
|
import { join, resolve } from 'path';
|
|
12
|
-
const CLAIMS_DIR = '.
|
|
12
|
+
const CLAIMS_DIR = '.odd-flow/claims';
|
|
13
13
|
const CLAIMS_FILE = 'claims.json';
|
|
14
14
|
function getClaimsPath() {
|
|
15
15
|
return resolve(join(CLAIMS_DIR, CLAIMS_FILE));
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
// Storage paths
|
|
9
|
-
const STORAGE_DIR = '.
|
|
9
|
+
const STORAGE_DIR = '.odd-flow';
|
|
10
10
|
const CONFIG_FILE = 'config.json';
|
|
11
11
|
const DEFAULT_CONFIG = {
|
|
12
12
|
'swarm.topology': 'mesh',
|
|
@@ -20,6 +20,17 @@ const DEFAULT_CONFIG = {
|
|
|
20
20
|
'logging.format': 'json',
|
|
21
21
|
'security.sandboxEnabled': true,
|
|
22
22
|
'security.pathValidation': true,
|
|
23
|
+
'watchdog.enabled': true,
|
|
24
|
+
'watchdog.checkInterval': 15000,
|
|
25
|
+
'watchdog.heartbeatThreshold': 60000,
|
|
26
|
+
'watchdog.maxMissedBeats': 3,
|
|
27
|
+
'recovery.checkpointInterval': 60000,
|
|
28
|
+
'recovery.staleThreshold': 86400000,
|
|
29
|
+
'refinery.enabled': true,
|
|
30
|
+
'scheduler.enabled': true,
|
|
31
|
+
'scheduler.checkInterval': 30000,
|
|
32
|
+
'scheduler.idleThreshold': 2,
|
|
33
|
+
'scheduler.rampUp': true,
|
|
23
34
|
};
|
|
24
35
|
function getConfigDir() {
|
|
25
36
|
return join(process.cwd(), STORAGE_DIR);
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
12
12
|
import { join } from 'node:path';
|
|
13
13
|
// Storage paths
|
|
14
|
-
const STORAGE_DIR = '.
|
|
14
|
+
const STORAGE_DIR = '.odd-flow';
|
|
15
15
|
const COORD_DIR = 'coordination';
|
|
16
16
|
const COORD_FILE = 'store.json';
|
|
17
17
|
function getCoordDir() {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
8
8
|
import { join, resolve } from 'path';
|
|
9
9
|
// Configuration paths
|
|
10
|
-
const CONFIG_DIR = '.
|
|
10
|
+
const CONFIG_DIR = '.odd-flow';
|
|
11
11
|
const EMBEDDINGS_CONFIG = 'embeddings.json';
|
|
12
12
|
const MODELS_DIR = 'models';
|
|
13
13
|
function getConfigPath() {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escalation MCP Tools for CLI
|
|
3
|
+
*
|
|
4
|
+
* Implements MCP tools for the Escalation Router (D4) service.
|
|
5
|
+
* Provides severity classification and routing: P0=halt, P1=pause+autofix, P2=log.
|
|
6
|
+
*
|
|
7
|
+
* @module @odd-flow/cli/mcp-tools/escalation
|
|
8
|
+
*/
|
|
9
|
+
import type { MCPTool } from './types.js';
|
|
10
|
+
import type { EscalationRouter } from '../services/escalation-router.js';
|
|
11
|
+
export declare function setActiveRouter(router: EscalationRouter | null): void;
|
|
12
|
+
export declare function getActiveRouter(): EscalationRouter | null;
|
|
13
|
+
export declare const escalationTools: MCPTool[];
|
|
14
|
+
export default escalationTools;
|
|
15
|
+
//# sourceMappingURL=escalation-tools.d.ts.map
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escalation MCP Tools for CLI
|
|
3
|
+
*
|
|
4
|
+
* Implements MCP tools for the Escalation Router (D4) service.
|
|
5
|
+
* Provides severity classification and routing: P0=halt, P1=pause+autofix, P2=log.
|
|
6
|
+
*
|
|
7
|
+
* @module @odd-flow/cli/mcp-tools/escalation
|
|
8
|
+
*/
|
|
9
|
+
// Module-level singleton (started by swarm-tools.ts)
|
|
10
|
+
let activeRouter = null;
|
|
11
|
+
export function setActiveRouter(router) {
|
|
12
|
+
activeRouter = router;
|
|
13
|
+
}
|
|
14
|
+
export function getActiveRouter() {
|
|
15
|
+
return activeRouter;
|
|
16
|
+
}
|
|
17
|
+
export const escalationTools = [
|
|
18
|
+
{
|
|
19
|
+
name: 'escalation_report',
|
|
20
|
+
description: 'Report a problem for severity classification and routing (P0=halt, P1=pause+autofix, P2=log)',
|
|
21
|
+
category: 'escalation',
|
|
22
|
+
inputSchema: {
|
|
23
|
+
type: 'object',
|
|
24
|
+
properties: {
|
|
25
|
+
source: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
description: 'Source of the problem (e.g., agent ID, service name)',
|
|
28
|
+
},
|
|
29
|
+
description: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
description: 'Description of the problem',
|
|
32
|
+
},
|
|
33
|
+
severity: {
|
|
34
|
+
type: 'string',
|
|
35
|
+
description: 'Explicit severity level (auto-classified if omitted)',
|
|
36
|
+
enum: ['p0', 'p1', 'p2'],
|
|
37
|
+
},
|
|
38
|
+
category: {
|
|
39
|
+
type: 'string',
|
|
40
|
+
description: 'Problem category for classification (e.g., "security", "performance")',
|
|
41
|
+
},
|
|
42
|
+
file: {
|
|
43
|
+
type: 'string',
|
|
44
|
+
description: 'File path related to the problem',
|
|
45
|
+
},
|
|
46
|
+
line: {
|
|
47
|
+
type: 'number',
|
|
48
|
+
description: 'Line number related to the problem',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
required: ['source', 'description'],
|
|
52
|
+
},
|
|
53
|
+
handler: async (input) => {
|
|
54
|
+
if (!activeRouter) {
|
|
55
|
+
return { success: false, error: 'Escalation router is not active. Start a swarm first.' };
|
|
56
|
+
}
|
|
57
|
+
const source = input.source;
|
|
58
|
+
const description = input.description;
|
|
59
|
+
const category = input.category;
|
|
60
|
+
const file = input.file;
|
|
61
|
+
const line = input.line;
|
|
62
|
+
const severity = input.severity
|
|
63
|
+
? input.severity
|
|
64
|
+
: activeRouter.classify(description, category);
|
|
65
|
+
const event = activeRouter.report({
|
|
66
|
+
source,
|
|
67
|
+
description,
|
|
68
|
+
severity,
|
|
69
|
+
category: category || 'general',
|
|
70
|
+
file: file || undefined,
|
|
71
|
+
line: line || undefined,
|
|
72
|
+
});
|
|
73
|
+
return {
|
|
74
|
+
success: true,
|
|
75
|
+
event,
|
|
76
|
+
message: `Escalation reported: ${severity.toUpperCase()} from ${source}`,
|
|
77
|
+
};
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'escalation_status',
|
|
82
|
+
description: 'Get current escalation state including open P0/P1/P2 events',
|
|
83
|
+
category: 'escalation',
|
|
84
|
+
inputSchema: {
|
|
85
|
+
type: 'object',
|
|
86
|
+
properties: {
|
|
87
|
+
severity: {
|
|
88
|
+
type: 'string',
|
|
89
|
+
description: 'Filter by severity level',
|
|
90
|
+
enum: ['p0', 'p1', 'p2'],
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
handler: async (input) => {
|
|
95
|
+
if (!activeRouter) {
|
|
96
|
+
return { active: false, message: 'Escalation router is not active.' };
|
|
97
|
+
}
|
|
98
|
+
const severity = input.severity;
|
|
99
|
+
const events = activeRouter.getOpenEvents(severity);
|
|
100
|
+
const summary = activeRouter.summary();
|
|
101
|
+
return {
|
|
102
|
+
active: true,
|
|
103
|
+
events,
|
|
104
|
+
summary,
|
|
105
|
+
};
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: 'escalation_resolve',
|
|
110
|
+
description: 'Resolve an escalation event (clears P0 halt or P1 pause)',
|
|
111
|
+
category: 'escalation',
|
|
112
|
+
inputSchema: {
|
|
113
|
+
type: 'object',
|
|
114
|
+
properties: {
|
|
115
|
+
eventId: {
|
|
116
|
+
type: 'string',
|
|
117
|
+
description: 'ID of the escalation event to resolve',
|
|
118
|
+
},
|
|
119
|
+
reclassifyTo: {
|
|
120
|
+
type: 'string',
|
|
121
|
+
description: 'Reclassify to a different severity instead of resolving',
|
|
122
|
+
enum: ['p0', 'p1', 'p2'],
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
required: ['eventId'],
|
|
126
|
+
},
|
|
127
|
+
handler: async (input) => {
|
|
128
|
+
if (!activeRouter) {
|
|
129
|
+
return { success: false, error: 'Escalation router is not active. Start a swarm first.' };
|
|
130
|
+
}
|
|
131
|
+
const eventId = input.eventId;
|
|
132
|
+
const reclassifyTo = input.reclassifyTo;
|
|
133
|
+
if (reclassifyTo) {
|
|
134
|
+
const event = activeRouter.reclassify(eventId, reclassifyTo);
|
|
135
|
+
return {
|
|
136
|
+
success: true,
|
|
137
|
+
action: 'reclassified',
|
|
138
|
+
event,
|
|
139
|
+
message: `Event ${eventId} reclassified to ${reclassifyTo.toUpperCase()}`,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
const event = activeRouter.resolve(eventId);
|
|
143
|
+
return {
|
|
144
|
+
success: true,
|
|
145
|
+
action: 'resolved',
|
|
146
|
+
event,
|
|
147
|
+
message: `Event ${eventId} resolved`,
|
|
148
|
+
};
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
];
|
|
152
|
+
export default escalationTools;
|
|
153
|
+
//# sourceMappingURL=escalation-tools.js.map
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
// Storage paths
|
|
9
|
-
const STORAGE_DIR = '.
|
|
9
|
+
const STORAGE_DIR = '.odd-flow';
|
|
10
10
|
const HIVE_DIR = 'hive-mind';
|
|
11
11
|
const HIVE_FILE = 'state.json';
|
|
12
12
|
/**
|
|
@@ -122,7 +122,7 @@ function saveHiveState(state) {
|
|
|
122
122
|
// Import agent store helpers for spawn functionality
|
|
123
123
|
import { existsSync as agentStoreExists, readFileSync as readAgentStore, writeFileSync as writeAgentStore, mkdirSync as mkdirAgentStore } from 'node:fs';
|
|
124
124
|
function loadAgentStore() {
|
|
125
|
-
const storePath = join(process.cwd(), '.
|
|
125
|
+
const storePath = join(process.cwd(), '.odd-flow', 'agents.json');
|
|
126
126
|
try {
|
|
127
127
|
if (agentStoreExists(storePath)) {
|
|
128
128
|
return JSON.parse(readAgentStore(storePath, 'utf-8'));
|
|
@@ -132,7 +132,7 @@ function loadAgentStore() {
|
|
|
132
132
|
return { agents: {} };
|
|
133
133
|
}
|
|
134
134
|
function saveAgentStore(store) {
|
|
135
|
-
const storeDir = join(process.cwd(), '.
|
|
135
|
+
const storeDir = join(process.cwd(), '.odd-flow');
|
|
136
136
|
if (!agentStoreExists(storeDir)) {
|
|
137
137
|
mkdirAgentStore(storeDir, { recursive: true });
|
|
138
138
|
}
|
|
@@ -256,7 +256,7 @@ export const hiveMindTools = [
|
|
|
256
256
|
// Load agent store once for all workers
|
|
257
257
|
const agentStore = loadAgentStore();
|
|
258
258
|
// Compute real task metrics from task store
|
|
259
|
-
const taskStorePath = join(process.cwd(), '.
|
|
259
|
+
const taskStorePath = join(process.cwd(), '.odd-flow', 'tasks', 'store.json');
|
|
260
260
|
let pendingTaskCount = 0;
|
|
261
261
|
let activeTaskCount = 0;
|
|
262
262
|
let completedTaskCount = 0;
|