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
|
@@ -6,8 +6,18 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
8
8
|
import { join } from 'node:path';
|
|
9
|
+
import { WatchdogWitness } from '../services/watchdog-witness.js';
|
|
10
|
+
import { WatchdogDeacon } from '../services/watchdog-deacon.js';
|
|
11
|
+
import { WatchdogDogs } from '../services/watchdog-dogs.js';
|
|
12
|
+
import { CheckpointManager } from '../services/checkpoint-manager.js';
|
|
13
|
+
import { Refinery } from '../services/refinery.js';
|
|
14
|
+
import { EscalationRouter } from '../services/escalation-router.js';
|
|
15
|
+
import { Scheduler } from '../services/scheduler.js';
|
|
16
|
+
import { setActiveRefinery } from './refinery-tools.js';
|
|
17
|
+
import { setActiveRouter } from './escalation-tools.js';
|
|
18
|
+
import { setActiveScheduler } from './scheduler-tools.js';
|
|
9
19
|
// Swarm state persistence
|
|
10
|
-
const SWARM_DIR = '.
|
|
20
|
+
const SWARM_DIR = '.odd-flow/swarm';
|
|
11
21
|
const SWARM_STATE_FILE = 'swarm-state.json';
|
|
12
22
|
function getSwarmDir() {
|
|
13
23
|
return join(process.cwd(), SWARM_DIR);
|
|
@@ -35,6 +45,105 @@ function saveSwarmStore(store) {
|
|
|
35
45
|
ensureSwarmDir();
|
|
36
46
|
writeFileSync(getSwarmStatePath(), JSON.stringify(store, null, 2), 'utf-8');
|
|
37
47
|
}
|
|
48
|
+
// Phase D service state (module-level singletons per process)
|
|
49
|
+
let activeWitness = null;
|
|
50
|
+
let activeDeacon = null;
|
|
51
|
+
let activeDogs = null;
|
|
52
|
+
let activeCheckpointMgr = null;
|
|
53
|
+
let activeRefinery = null;
|
|
54
|
+
let activeEscalation = null;
|
|
55
|
+
let activeScheduler = null;
|
|
56
|
+
function loadAgentRecords() {
|
|
57
|
+
try {
|
|
58
|
+
const path = join(process.cwd(), '.odd-flow/agents/store.json');
|
|
59
|
+
if (existsSync(path)) {
|
|
60
|
+
const store = JSON.parse(readFileSync(path, 'utf-8'));
|
|
61
|
+
return store.agents || {};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch { /* empty */ }
|
|
65
|
+
return {};
|
|
66
|
+
}
|
|
67
|
+
function startPhaseDServices(config = {}, maxAgents = 8) {
|
|
68
|
+
// D1: Watchdog
|
|
69
|
+
if (config['watchdog.enabled'] !== false && !activeWitness) {
|
|
70
|
+
activeWitness = new WatchdogWitness({
|
|
71
|
+
checkInterval: config['watchdog.checkInterval'] || 15000,
|
|
72
|
+
heartbeatThreshold: config['watchdog.heartbeatThreshold'] || 60000,
|
|
73
|
+
enabled: true,
|
|
74
|
+
}, loadAgentRecords);
|
|
75
|
+
activeDeacon = new WatchdogDeacon(activeWitness, {
|
|
76
|
+
maxMissedBeats: config['watchdog.maxMissedBeats'] || 3,
|
|
77
|
+
});
|
|
78
|
+
activeDogs = new WatchdogDogs(activeDeacon, process.cwd());
|
|
79
|
+
activeWitness.start();
|
|
80
|
+
}
|
|
81
|
+
// D2: Checkpoint Manager (Session Recovery)
|
|
82
|
+
if (!activeCheckpointMgr) {
|
|
83
|
+
activeCheckpointMgr = new CheckpointManager(process.cwd());
|
|
84
|
+
const interval = config['recovery.checkpointInterval'] || 60000;
|
|
85
|
+
activeCheckpointMgr.start(interval);
|
|
86
|
+
}
|
|
87
|
+
// D3: Refinery (Merge Queue) — only for multi-agent swarms
|
|
88
|
+
if (config['refinery.enabled'] !== false && maxAgents > 1 && !activeRefinery) {
|
|
89
|
+
activeRefinery = new Refinery(process.cwd());
|
|
90
|
+
setActiveRefinery(activeRefinery);
|
|
91
|
+
}
|
|
92
|
+
// D4: Escalation Router
|
|
93
|
+
if (!activeEscalation) {
|
|
94
|
+
activeEscalation = new EscalationRouter(process.cwd());
|
|
95
|
+
setActiveRouter(activeEscalation);
|
|
96
|
+
// Wire watchdog events → escalation
|
|
97
|
+
if (activeDogs) {
|
|
98
|
+
activeDogs.on('watchdog:action-taken', (event) => {
|
|
99
|
+
activeEscalation?.report({
|
|
100
|
+
severity: 'p1',
|
|
101
|
+
source: 'watchdog',
|
|
102
|
+
category: 'agent-terminated',
|
|
103
|
+
description: `Watchdog terminated agent ${event.agentId}: ${event.reason || 'unresponsive'}`,
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
// Wire refinery conflicts → escalation
|
|
108
|
+
if (activeRefinery) {
|
|
109
|
+
activeRefinery.on('refinery:contract-conflict', (conflict) => {
|
|
110
|
+
activeEscalation?.report({
|
|
111
|
+
severity: 'p0',
|
|
112
|
+
source: 'refinery',
|
|
113
|
+
category: 'contract-conflict',
|
|
114
|
+
description: `Contract conflict: ${conflict.details || 'conflicting contract definitions'}`,
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// D5: Scheduler (Capacity Governance)
|
|
120
|
+
if (config['scheduler.enabled'] !== false && !activeScheduler) {
|
|
121
|
+
activeScheduler = new Scheduler(process.cwd(), {
|
|
122
|
+
maxAgents,
|
|
123
|
+
checkInterval: config['scheduler.checkInterval'] || 30000,
|
|
124
|
+
idleThreshold: config['scheduler.idleThreshold'] || 2,
|
|
125
|
+
rampUp: config['scheduler.rampUp'] ?? true,
|
|
126
|
+
enabled: true,
|
|
127
|
+
});
|
|
128
|
+
setActiveScheduler(activeScheduler);
|
|
129
|
+
activeScheduler.start();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function stopPhaseDServices() {
|
|
133
|
+
activeWitness?.stop();
|
|
134
|
+
activeCheckpointMgr?.stop();
|
|
135
|
+
activeScheduler?.stop();
|
|
136
|
+
activeWitness = null;
|
|
137
|
+
activeDeacon = null;
|
|
138
|
+
activeDogs = null;
|
|
139
|
+
activeCheckpointMgr = null;
|
|
140
|
+
activeRefinery = null;
|
|
141
|
+
activeEscalation = null;
|
|
142
|
+
activeScheduler = null;
|
|
143
|
+
setActiveRefinery(null);
|
|
144
|
+
setActiveRouter(null);
|
|
145
|
+
setActiveScheduler(null);
|
|
146
|
+
}
|
|
38
147
|
// Input validation
|
|
39
148
|
const VALID_TOPOLOGIES = new Set([
|
|
40
149
|
'hierarchical', 'mesh', 'hierarchical-mesh', 'ring', 'star', 'hybrid', 'adaptive',
|
|
@@ -87,6 +196,8 @@ export const swarmTools = [
|
|
|
87
196
|
const store = loadSwarmStore();
|
|
88
197
|
store.swarms[swarmId] = swarmState;
|
|
89
198
|
saveSwarmStore(store);
|
|
199
|
+
// Start Phase D services (watchdog, checkpoint, refinery, escalation, scheduler)
|
|
200
|
+
startPhaseDServices(config, maxAgents);
|
|
90
201
|
return {
|
|
91
202
|
success: true,
|
|
92
203
|
swarmId,
|
|
@@ -96,6 +207,7 @@ export const swarmTools = [
|
|
|
96
207
|
initializedAt: now,
|
|
97
208
|
config: swarmState.config,
|
|
98
209
|
persisted: true,
|
|
210
|
+
watchdog: activeWitness?.isRunning() ? 'active' : 'disabled',
|
|
99
211
|
};
|
|
100
212
|
},
|
|
101
213
|
},
|
|
@@ -112,6 +224,12 @@ export const swarmTools = [
|
|
|
112
224
|
handler: async (input) => {
|
|
113
225
|
const store = loadSwarmStore();
|
|
114
226
|
const swarmId = input.swarmId;
|
|
227
|
+
const watchdogState = {
|
|
228
|
+
enabled: activeWitness !== null,
|
|
229
|
+
running: activeWitness?.isRunning() ?? false,
|
|
230
|
+
unresponsiveCounts: activeDeacon ? Object.fromEntries(activeDeacon.getUnresponsiveCounts()) : {},
|
|
231
|
+
events: activeDogs ? activeDogs.getEvents().slice(-10) : [],
|
|
232
|
+
};
|
|
115
233
|
if (swarmId && store.swarms[swarmId]) {
|
|
116
234
|
const swarm = store.swarms[swarmId];
|
|
117
235
|
return {
|
|
@@ -124,6 +242,7 @@ export const swarmTools = [
|
|
|
124
242
|
config: swarm.config,
|
|
125
243
|
createdAt: swarm.createdAt,
|
|
126
244
|
updatedAt: swarm.updatedAt,
|
|
245
|
+
watchdog: watchdogState,
|
|
127
246
|
};
|
|
128
247
|
}
|
|
129
248
|
// Return most recent swarm if no ID specified
|
|
@@ -149,6 +268,7 @@ export const swarmTools = [
|
|
|
149
268
|
createdAt: latest.createdAt,
|
|
150
269
|
updatedAt: latest.updatedAt,
|
|
151
270
|
totalSwarms: swarmIds.length,
|
|
271
|
+
watchdog: watchdogState,
|
|
152
272
|
};
|
|
153
273
|
},
|
|
154
274
|
},
|
|
@@ -194,6 +314,8 @@ export const swarmTools = [
|
|
|
194
314
|
target.status = 'terminated';
|
|
195
315
|
target.updatedAt = new Date().toISOString();
|
|
196
316
|
saveSwarmStore(store);
|
|
317
|
+
// Stop all Phase D services
|
|
318
|
+
stopPhaseDServices();
|
|
197
319
|
return {
|
|
198
320
|
success: true,
|
|
199
321
|
swarmId: target.swarmId,
|
|
@@ -27,7 +27,7 @@ function getPackageVersion() {
|
|
|
27
27
|
}
|
|
28
28
|
const PKG_VERSION = getPackageVersion();
|
|
29
29
|
// Storage paths
|
|
30
|
-
const STORAGE_DIR = '.
|
|
30
|
+
const STORAGE_DIR = '.odd-flow';
|
|
31
31
|
const SYSTEM_DIR = 'system';
|
|
32
32
|
const METRICS_FILE = 'metrics.json';
|
|
33
33
|
function getSystemDir() {
|
|
@@ -383,7 +383,7 @@ export const systemTools = [
|
|
|
383
383
|
},
|
|
384
384
|
handler: async () => {
|
|
385
385
|
// Read from the task store file
|
|
386
|
-
const storePath = join(process.cwd(), '.
|
|
386
|
+
const storePath = join(process.cwd(), '.odd-flow', 'tasks', 'store.json');
|
|
387
387
|
let tasks = [];
|
|
388
388
|
try {
|
|
389
389
|
if (existsSync(storePath)) {
|
|
@@ -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 TASK_DIR = 'tasks';
|
|
11
11
|
const TASK_FILE = 'store.json';
|
|
12
12
|
function getTaskDir() {
|
|
@@ -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 WORKFLOW_DIR = 'workflows';
|
|
11
11
|
const WORKFLOW_FILE = 'store.json';
|
|
12
12
|
function getWorkflowDir() {
|
|
@@ -18,15 +18,15 @@ import { join } from 'node:path';
|
|
|
18
18
|
// ============================================================================
|
|
19
19
|
/**
|
|
20
20
|
* Get the data directory for neural pattern persistence
|
|
21
|
-
* Uses .
|
|
21
|
+
* Uses .odd-flow/neural in the current working directory,
|
|
22
22
|
* falling back to home directory
|
|
23
23
|
*/
|
|
24
24
|
function getDataDir() {
|
|
25
25
|
const cwd = process.cwd();
|
|
26
|
-
const localDir = join(cwd, '.
|
|
27
|
-
const homeDir = join(homedir(), '.
|
|
28
|
-
// Prefer local directory if .
|
|
29
|
-
if (existsSync(join(cwd, '.
|
|
26
|
+
const localDir = join(cwd, '.odd-flow', 'neural');
|
|
27
|
+
const homeDir = join(homedir(), '.odd-flow', 'neural');
|
|
28
|
+
// Prefer local directory if .odd-flow exists
|
|
29
|
+
if (existsSync(join(cwd, '.odd-flow'))) {
|
|
30
30
|
return localDir;
|
|
31
31
|
}
|
|
32
32
|
return homeDir;
|
|
@@ -49,7 +49,7 @@ function generateId(prefix) {
|
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Lazily initialize the ControllerRegistry singleton.
|
|
52
|
-
* Returns null if @
|
|
52
|
+
* Returns null if @odd-flow/memory is not available.
|
|
53
53
|
*/
|
|
54
54
|
async function getRegistry(dbPath) {
|
|
55
55
|
if (bridgeAvailable === false)
|
|
@@ -59,7 +59,7 @@ async function getRegistry(dbPath) {
|
|
|
59
59
|
if (!registryPromise) {
|
|
60
60
|
registryPromise = (async () => {
|
|
61
61
|
try {
|
|
62
|
-
const { ControllerRegistry } = await import('@
|
|
62
|
+
const { ControllerRegistry } = await import('@odd-flow/memory');
|
|
63
63
|
const registry = new ControllerRegistry();
|
|
64
64
|
// Suppress noisy console.log during init
|
|
65
65
|
const origLog = console.log;
|
|
@@ -888,7 +888,7 @@ export async function checkAndMigrateLegacy(options) {
|
|
|
888
888
|
path.join(process.cwd(), 'memory.db'),
|
|
889
889
|
path.join(process.cwd(), '.claude/memory.db'),
|
|
890
890
|
path.join(process.cwd(), 'data/memory.db'),
|
|
891
|
-
path.join(process.cwd(), '.
|
|
891
|
+
path.join(process.cwd(), '.odd-flow/memory.db')
|
|
892
892
|
];
|
|
893
893
|
for (const legacyPath of legacyPaths) {
|
|
894
894
|
if (fs.existsSync(legacyPath) && legacyPath !== dbPath) {
|
|
@@ -931,7 +931,7 @@ export async function checkAndMigrateLegacy(options) {
|
|
|
931
931
|
* a singleton ControllerRegistry and initializes it with the given dbPath.
|
|
932
932
|
* After this call, all enabled controllers are ready for immediate use.
|
|
933
933
|
*
|
|
934
|
-
* Failures are isolated: if @
|
|
934
|
+
* Failures are isolated: if @odd-flow/memory or agentdb is not installed,
|
|
935
935
|
* this returns an empty result without throwing.
|
|
936
936
|
*/
|
|
937
937
|
async function activateControllerRegistry(dbPath, verbose) {
|
|
@@ -1698,7 +1698,7 @@ export async function storeEntry(options) {
|
|
|
1698
1698
|
const dbPath = customPath ? path.resolve(customPath) : path.join(swarmDir, 'memory.db');
|
|
1699
1699
|
try {
|
|
1700
1700
|
if (!fs.existsSync(dbPath)) {
|
|
1701
|
-
return { success: false, id: '', error: 'Database not initialized. Run:
|
|
1701
|
+
return { success: false, id: '', error: 'Database not initialized. Run: odd-flow memory init' };
|
|
1702
1702
|
}
|
|
1703
1703
|
// Ensure schema has all required columns (migration for older DBs)
|
|
1704
1704
|
await ensureSchemaColumns(dbPath);
|
|
@@ -33,7 +33,7 @@ export class PluginManager {
|
|
|
33
33
|
config;
|
|
34
34
|
manifest = null;
|
|
35
35
|
constructor(baseDir = process.cwd()) {
|
|
36
|
-
const pluginsDir = path.join(baseDir, '.
|
|
36
|
+
const pluginsDir = path.join(baseDir, '.odd-flow', 'plugins');
|
|
37
37
|
this.config = {
|
|
38
38
|
pluginsDir,
|
|
39
39
|
manifestPath: path.join(pluginsDir, 'installed.json'),
|
|
@@ -114,10 +114,10 @@ export class PluginManager {
|
|
|
114
114
|
if (fs.existsSync(packageJsonPath)) {
|
|
115
115
|
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
116
116
|
installedVersion = pkg.version;
|
|
117
|
-
// Check for
|
|
118
|
-
if (pkg['
|
|
119
|
-
commands = pkg['
|
|
120
|
-
hooks = pkg['
|
|
117
|
+
// Check for odd-flow plugin metadata
|
|
118
|
+
if (pkg['odd-flow']) {
|
|
119
|
+
commands = pkg['odd-flow'].commands || [];
|
|
120
|
+
hooks = pkg['odd-flow'].hooks || [];
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
// Create plugin entry
|
|
@@ -177,8 +177,8 @@ export class PluginManager {
|
|
|
177
177
|
enabled: true,
|
|
178
178
|
source: 'local',
|
|
179
179
|
path: absolutePath,
|
|
180
|
-
commands: pkg['
|
|
181
|
-
hooks: pkg['
|
|
180
|
+
commands: pkg['odd-flow']?.commands || [],
|
|
181
|
+
hooks: pkg['odd-flow']?.hooks || [],
|
|
182
182
|
};
|
|
183
183
|
// Save to manifest
|
|
184
184
|
this.manifest.plugins[packageName] = plugin;
|
|
@@ -338,8 +338,8 @@ export class PluginManager {
|
|
|
338
338
|
if (fs.existsSync(packageJsonPath)) {
|
|
339
339
|
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
340
340
|
existing.version = pkg.version;
|
|
341
|
-
existing.commands = pkg['
|
|
342
|
-
existing.hooks = pkg['
|
|
341
|
+
existing.commands = pkg['odd-flow']?.commands || existing.commands;
|
|
342
|
+
existing.hooks = pkg['odd-flow']?.hooks || existing.hooks;
|
|
343
343
|
}
|
|
344
344
|
await this.saveManifest();
|
|
345
345
|
console.log(`[PluginManager] Upgraded ${packageName} to ${existing.version}`);
|
|
@@ -389,7 +389,7 @@ export function getPluginManager(baseDir) {
|
|
|
389
389
|
if (!defaultManager) {
|
|
390
390
|
defaultManager = new PluginManager(baseDir);
|
|
391
391
|
}
|
|
392
|
-
else if (baseDir && defaultManager.getPluginsDir() !== path.join(baseDir, '.
|
|
392
|
+
else if (baseDir && defaultManager.getPluginsDir() !== path.join(baseDir, '.odd-flow', 'plugins')) {
|
|
393
393
|
console.warn(`[PluginManager] Warning: getPluginManager called with different baseDir. Using existing instance. Call resetPluginManager() first to change.`);
|
|
394
394
|
}
|
|
395
395
|
return defaultManager;
|