odd-flow 1.0.1 → 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/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
package/bin/cli.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* odd-flow CLI - Entry point
|
|
4
|
-
* Proxies to @
|
|
4
|
+
* Proxies to @odd-flow/cli bin for cross-platform compatibility.
|
|
5
5
|
*/
|
|
6
6
|
import { pathToFileURL, fileURLToPath } from 'node:url';
|
|
7
7
|
import { dirname, join } from 'node:path';
|
|
8
8
|
|
|
9
9
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
-
const cliPath = join(__dirname, '..', 'v3', '@
|
|
10
|
+
const cliPath = join(__dirname, '..', 'v3', '@odd-flow', 'cli', 'bin', 'cli.js');
|
|
11
11
|
await import(pathToFileURL(cliPath).href);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "odd-flow",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "AI agent orchestration for Claude Code — swarm coordination, vector memory, self-learning hooks, and MCP tools",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"bin/**",
|
|
12
|
-
"v3/@
|
|
13
|
-
"v3/@
|
|
14
|
-
"v3/@
|
|
15
|
-
"!v3/@
|
|
16
|
-
"v3/@
|
|
17
|
-
"v3/@
|
|
18
|
-
"v3/@
|
|
19
|
-
"!v3/@
|
|
20
|
-
"v3/@
|
|
12
|
+
"v3/@odd-flow/cli/bin/**",
|
|
13
|
+
"v3/@odd-flow/cli/dist/**/*.js",
|
|
14
|
+
"v3/@odd-flow/cli/dist/**/*.d.ts",
|
|
15
|
+
"!v3/@odd-flow/cli/dist/**/*.map",
|
|
16
|
+
"v3/@odd-flow/cli/package.json",
|
|
17
|
+
"v3/@odd-flow/shared/dist/**/*.js",
|
|
18
|
+
"v3/@odd-flow/shared/dist/**/*.d.ts",
|
|
19
|
+
"!v3/@odd-flow/shared/dist/**/*.map",
|
|
20
|
+
"v3/@odd-flow/shared/package.json",
|
|
21
21
|
".claude-plugin/**",
|
|
22
22
|
".claude/**",
|
|
23
23
|
"!.claude/**/*.db",
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
"scripts": {
|
|
29
29
|
"dev": "tsx watch src/index.ts",
|
|
30
30
|
"build": "tsc",
|
|
31
|
-
"build:ts": "cd v3/@
|
|
31
|
+
"build:ts": "cd v3/@odd-flow/cli && npm run build || true",
|
|
32
32
|
"test": "vitest",
|
|
33
33
|
"test:ui": "vitest --ui",
|
|
34
34
|
"test:security": "vitest run v3/__tests__/security/",
|
|
35
|
-
"lint": "cd v3/@
|
|
35
|
+
"lint": "cd v3/@odd-flow/cli && npm run lint || true",
|
|
36
36
|
"security:audit": "npm audit --audit-level high",
|
|
37
37
|
"security:fix": "npm audit fix",
|
|
38
38
|
"security:test": "npm run test:security"
|
|
@@ -17,12 +17,17 @@ odd-flow is a focused agent coordination package for [Claude Code](https://docs.
|
|
|
17
17
|
- **Hive mind consensus** — Byzantine fault-tolerant coordination across agents
|
|
18
18
|
- **Security scanning** — built-in AIDefence integration for prompt injection detection
|
|
19
19
|
- **Embeddings** — ONNX-powered 384-dim vector embeddings with hyperbolic geometry support
|
|
20
|
+
- **Watchdog** — three-tier agent liveness monitoring (Witness → Deacon → Dogs) with automatic termination and orphan task recovery
|
|
21
|
+
- **Session recovery** — periodic checkpointing of full swarm state for crash recovery
|
|
22
|
+
- **Merge queue** — conflict detection when multiple agents modify overlapping files or contracts
|
|
23
|
+
- **Escalation routing** — automatic severity classification (P0 halt / P1 pause / P2 log) with regex-based pattern matching
|
|
24
|
+
- **Capacity governance** — dynamic agent scaling based on workload, idle detection, and configurable limits
|
|
20
25
|
|
|
21
|
-
## How it differs from
|
|
26
|
+
## How it differs from odd-flow/odd-flow
|
|
22
27
|
|
|
23
|
-
odd-flow is extracted from the
|
|
28
|
+
odd-flow is extracted from the odd-flow v3 codebase with a security-first approach:
|
|
24
29
|
|
|
25
|
-
| |
|
|
30
|
+
| | odd-flow v3 | odd-flow |
|
|
26
31
|
|---|---|---|
|
|
27
32
|
| **Scope** | Full enterprise platform (60+ packages, WASM kernels, deployment infra, plugins) | Focused CLI + MCP tools for agent coordination |
|
|
28
33
|
| **Security** | Broad surface area, auto-install, terminal execution | Dangerous code removed, path validation on all file ops, file permissions hardened (0o600), prototype pollution prevention |
|
|
@@ -79,6 +84,9 @@ odd-flow doctor --fix
|
|
|
79
84
|
| `performance` | Benchmarking and profiling |
|
|
80
85
|
| `analyze` | Diff analysis and risk assessment |
|
|
81
86
|
| `claims` | Work-stealing task distribution |
|
|
87
|
+
| `refinery` | Merge queue — submit, status, resolve conflicts |
|
|
88
|
+
| `escalation` | Severity routing — report, status, resolve |
|
|
89
|
+
| `scheduler` | Capacity governance — status, report |
|
|
82
90
|
|
|
83
91
|
## MCP tools
|
|
84
92
|
|
|
@@ -97,6 +105,9 @@ When running as an MCP server, odd-flow exposes tools in these categories:
|
|
|
97
105
|
- **`claims_*`** — claim, release, steal, rebalance work items
|
|
98
106
|
- **`analyze_*`** — diff stats, risk assessment, reviewer suggestions
|
|
99
107
|
- **`progress_*`** — check, sync, watch, summary
|
|
108
|
+
- **`refinery_*`** — submit changesets, check merge queue status, resolve conflicts
|
|
109
|
+
- **`escalation_*`** — report problems, check escalation status, resolve/reclassify events
|
|
110
|
+
- **`scheduler_*`** — check capacity status and scaling reports
|
|
100
111
|
- **`security_*`** — scan for prompt injection and manipulation
|
|
101
112
|
- **`system_*`** — health, status, metrics, info
|
|
102
113
|
|
|
@@ -155,6 +166,109 @@ odd-flow hooks model-stats
|
|
|
155
166
|
|
|
156
167
|
The hook system uses Q-learning to optimise model routing (which model handles which task type) based on observed outcomes.
|
|
157
168
|
|
|
169
|
+
## Gastown orchestration (v1.2.0)
|
|
170
|
+
|
|
171
|
+
Gastown adds five coordination layers that run automatically when a swarm is initialised. They keep multi-agent builds stable without manual intervention.
|
|
172
|
+
|
|
173
|
+
### Watchdog (D1)
|
|
174
|
+
|
|
175
|
+
Three-tier liveness monitoring — Witness, Deacon, Dogs — that detects unresponsive agents and recovers their work.
|
|
176
|
+
|
|
177
|
+
- **Witness** checks heartbeats every 15 seconds. If an agent misses the threshold, it emits `agent:unresponsive`.
|
|
178
|
+
- **Deacon** tracks consecutive misses per agent: 1 → warning, 2 → wake attempt, 3+ → terminate.
|
|
179
|
+
- **Dogs** handles termination: marks the agent as `terminated`, creates recovery tasks for any in-progress work, and logs the event.
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
# Agents send heartbeats while working (MCP tool)
|
|
183
|
+
odd-flow agent heartbeat --agent-id my-agent
|
|
184
|
+
|
|
185
|
+
# Check watchdog state via swarm status
|
|
186
|
+
odd-flow swarm status
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Watchdog behaviour is configurable:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
odd-flow config set --key "watchdog.enabled" --value true
|
|
193
|
+
odd-flow config set --key "watchdog.checkInterval" --value 15000
|
|
194
|
+
odd-flow config set --key "watchdog.heartbeatThreshold" --value 60000
|
|
195
|
+
odd-flow config set --key "watchdog.maxMissedBeats" --value 3
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Session recovery (D2)
|
|
199
|
+
|
|
200
|
+
The CheckpointManager periodically snapshots full swarm state (agents, tasks, config) to `.odd-flow/recovery/checkpoint-latest.json`. After a crash or session drop, the recovery plan identifies which agents to respawn and which tasks to restart.
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
odd-flow config set --key "recovery.checkpointInterval" --value 60000
|
|
204
|
+
odd-flow config set --key "recovery.staleThreshold" --value 86400000
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Merge queue (D3)
|
|
208
|
+
|
|
209
|
+
The Refinery queues concurrent agent output and detects conflicts before merging:
|
|
210
|
+
|
|
211
|
+
- **File overlap** — two agents modifying the same file path
|
|
212
|
+
- **Contract mismatch** — two agents defining the same contract with divergent fields
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
# Submit agent work (MCP tool)
|
|
216
|
+
odd-flow refinery submit --agent-id dev-1 --files '[{"path":"src/api.ts","content":"..."}]'
|
|
217
|
+
|
|
218
|
+
# Check queue status
|
|
219
|
+
odd-flow refinery status
|
|
220
|
+
|
|
221
|
+
# Resolve a conflict
|
|
222
|
+
odd-flow refinery resolve --conflict-id cf-123 --resolution A
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Escalation routing (D4)
|
|
226
|
+
|
|
227
|
+
The EscalationRouter classifies problems by severity using regex pattern matching:
|
|
228
|
+
|
|
229
|
+
| Severity | Patterns | Action |
|
|
230
|
+
|----------|----------|--------|
|
|
231
|
+
| **P0** | security, data loss, injection, credential leak, contract violation | Halt swarm |
|
|
232
|
+
| **P1** | build failure, test failure, type error, file conflict, compile error | Pause agent, attempt autofix |
|
|
233
|
+
| **P2** | lint warning, style issue, minor | Log only |
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
# Report a problem (auto-classified or explicit severity)
|
|
237
|
+
odd-flow escalation report --source qa-agent --description "SQL injection in user handler"
|
|
238
|
+
|
|
239
|
+
# Check open escalations
|
|
240
|
+
odd-flow escalation status --severity p0
|
|
241
|
+
|
|
242
|
+
# Resolve or reclassify
|
|
243
|
+
odd-flow escalation resolve --event-id evt-123
|
|
244
|
+
odd-flow escalation resolve --event-id evt-456 --reclassify-to p2
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Cross-service wiring runs automatically:
|
|
248
|
+
- Watchdog terminations → P1 escalation
|
|
249
|
+
- Refinery contract conflicts → P0 escalation
|
|
250
|
+
|
|
251
|
+
### Capacity governance (D5)
|
|
252
|
+
|
|
253
|
+
The Scheduler dynamically scales agents up or down based on workload:
|
|
254
|
+
|
|
255
|
+
- **Scale up** when all agents are busy, ready tasks are waiting, and the pool is under `maxAgents`
|
|
256
|
+
- **Scale down** when an agent has been idle beyond the `idleThreshold` with no matching work
|
|
257
|
+
- **Blocked detection** when no tasks are ready or in-progress (possible deadlock)
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
# Check scheduler status
|
|
261
|
+
odd-flow scheduler status
|
|
262
|
+
|
|
263
|
+
# Include capacity report
|
|
264
|
+
odd-flow scheduler status --include-report
|
|
265
|
+
|
|
266
|
+
# Configure
|
|
267
|
+
odd-flow config set --key "scheduler.checkInterval" --value 30000
|
|
268
|
+
odd-flow config set --key "scheduler.idleThreshold" --value 2
|
|
269
|
+
odd-flow config set --key "scheduler.rampUp" --value true
|
|
270
|
+
```
|
|
271
|
+
|
|
158
272
|
## Configuration
|
|
159
273
|
|
|
160
274
|
```bash
|
|
@@ -172,7 +286,7 @@ Configuration is stored in `.odd-flow/config.json` in the project root with `0o6
|
|
|
172
286
|
|
|
173
287
|
## Security model
|
|
174
288
|
|
|
175
|
-
odd-flow was hardened from the
|
|
289
|
+
odd-flow was hardened from the odd-flow v3 codebase with these measures:
|
|
176
290
|
|
|
177
291
|
- **Path containment** — all file operations validated against project root via `validatePath()`
|
|
178
292
|
- **No arbitrary execution** — `terminal_execute` tool removed entirely
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* @
|
|
3
|
+
* @odd-flow/cli - CLI Entry Point
|
|
4
4
|
*
|
|
5
5
|
* Claude Flow V3 Command Line Interface
|
|
6
6
|
*
|
|
7
7
|
* Auto-detects MCP mode when stdin is piped and no args provided.
|
|
8
|
-
* This allows: echo '{"jsonrpc":"2.0",...}' | npx @
|
|
8
|
+
* This allows: echo '{"jsonrpc":"2.0",...}' | npx @odd-flow/cli
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { randomUUID } from 'crypto';
|
|
@@ -13,7 +13,7 @@ import { randomUUID } from 'crypto';
|
|
|
13
13
|
// Check if we should run in MCP server mode
|
|
14
14
|
// Conditions:
|
|
15
15
|
// 1. stdin is being piped AND no CLI arguments provided (auto-detect)
|
|
16
|
-
// 2. stdin is being piped AND args are "mcp start" (explicit, e.g. npx
|
|
16
|
+
// 2. stdin is being piped AND args are "mcp start" (explicit, e.g. npx odd-flow@alpha mcp start)
|
|
17
17
|
const cliArgs = process.argv.slice(2);
|
|
18
18
|
const isExplicitMCP = cliArgs.length >= 1 && cliArgs[0] === 'mcp' && (cliArgs.length === 1 || cliArgs[1] === 'start');
|
|
19
19
|
const isMCPMode = !process.stdin.isTTY && (process.argv.length === 2 || isExplicitMCP);
|
|
@@ -22,7 +22,7 @@ if (isMCPMode) {
|
|
|
22
22
|
// Run MCP server mode
|
|
23
23
|
const { listMCPTools, callMCPTool, hasTool } = await import('../dist/src/mcp-client.js');
|
|
24
24
|
|
|
25
|
-
const VERSION = '1.0
|
|
25
|
+
const VERSION = '1.2.0';
|
|
26
26
|
const sessionId = `mcp-${Date.now()}-${randomUUID().slice(0, 8)}`;
|
|
27
27
|
|
|
28
28
|
console.error(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* @
|
|
3
|
+
* @odd-flow/cli - MCP Server Entry Point
|
|
4
4
|
*
|
|
5
5
|
* Direct stdio MCP server for Claude Code integration.
|
|
6
6
|
* This entry point handles stdin/stdout directly for MCP protocol
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import { randomUUID } from 'crypto';
|
|
11
11
|
import { listMCPTools, callMCPTool, hasTool } from '../dist/src/mcp-client.js';
|
|
12
12
|
|
|
13
|
-
const VERSION = '1.0
|
|
13
|
+
const VERSION = '1.2.0';
|
|
14
14
|
const sessionId = `mcp-${Date.now()}-${randomUUID().slice(0, 8)}`;
|
|
15
15
|
|
|
16
16
|
// Log to stderr (doesn't corrupt stdout for MCP protocol)
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Zero external dependencies. node-llama-cpp is an optional peer.
|
|
11
11
|
*
|
|
12
|
-
* @module @
|
|
12
|
+
* @module @odd-flow/cli/appliance/gguf-engine
|
|
13
13
|
*/
|
|
14
14
|
import { open, readFile, writeFile, stat as fsStat } from 'node:fs/promises';
|
|
15
15
|
import { createHash } from 'node:crypto';
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* All @ruvector/* packages are optional peer dependencies.
|
|
11
11
|
* The bridge degrades gracefully when they are absent.
|
|
12
12
|
*
|
|
13
|
-
* @module @
|
|
13
|
+
* @module @odd-flow/cli/appliance/ruvllm-bridge
|
|
14
14
|
*/
|
|
15
15
|
export interface RuvllmConfig {
|
|
16
16
|
modelsDir: string;
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* All @ruvector/* packages are optional peer dependencies.
|
|
11
11
|
* The bridge degrades gracefully when they are absent.
|
|
12
12
|
*
|
|
13
|
-
* @module @
|
|
13
|
+
* @module @odd-flow/cli/appliance/ruvllm-bridge
|
|
14
14
|
*/
|
|
15
15
|
import { readdir, stat } from 'node:fs/promises';
|
|
16
16
|
import { join, extname, basename } from 'node:path';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Supports three run modes (cli, mcp, verify) and two isolation
|
|
5
5
|
* strategies (native Node.js, container via Docker).
|
|
6
6
|
*
|
|
7
|
-
* @module @
|
|
7
|
+
* @module @odd-flow/cli/appliance/rvfa-runner
|
|
8
8
|
*/
|
|
9
9
|
import type { RvfaHeader } from './rvfa-format.js';
|
|
10
10
|
export interface RunOptions {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Supports three run modes (cli, mcp, verify) and two isolation
|
|
5
5
|
* strategies (native Node.js, container via Docker).
|
|
6
6
|
*
|
|
7
|
-
* @module @
|
|
7
|
+
* @module @odd-flow/cli/appliance/rvfa-runner
|
|
8
8
|
*/
|
|
9
9
|
import { writeFile, mkdir, rm } from 'node:fs/promises';
|
|
10
10
|
import { join } from 'node:path';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides tamper detection and publisher identity verification using
|
|
5
5
|
* Ed25519 (RFC 8032) via Node.js native crypto. Zero external dependencies.
|
|
6
6
|
*
|
|
7
|
-
* @module @
|
|
7
|
+
* @module @odd-flow/cli/appliance/rvfa-signing
|
|
8
8
|
*/
|
|
9
9
|
export interface RvfaKeyPair {
|
|
10
10
|
publicKey: Buffer;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides tamper detection and publisher identity verification using
|
|
5
5
|
* Ed25519 (RFC 8032) via Node.js native crypto. Zero external dependencies.
|
|
6
6
|
*
|
|
7
|
-
* @module @
|
|
7
|
+
* @module @odd-flow/cli/appliance/rvfa-signing
|
|
8
8
|
*/
|
|
9
9
|
import { generateKeyPairSync, createHash, sign, verify, createPublicKey, createPrivateKey, } from 'node:crypto';
|
|
10
10
|
import { readFile, writeFile, stat, chmod, mkdir } from 'node:fs/promises';
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
* ADR-072: Autopilot Integration
|
|
8
8
|
* Security: Addresses prototype pollution, NaN bypass, input validation
|
|
9
9
|
*/
|
|
10
|
-
export declare const STATE_DIR = ".
|
|
11
|
-
export declare const STATE_FILE = ".
|
|
12
|
-
export declare const LOG_FILE = ".
|
|
10
|
+
export declare const STATE_DIR = ".odd-flow/data";
|
|
11
|
+
export declare const STATE_FILE = ".odd-flow/data/autopilot-state.json";
|
|
12
|
+
export declare const LOG_FILE = ".odd-flow/data/autopilot-log.json";
|
|
13
13
|
/** Allowlist for valid task sources */
|
|
14
14
|
export declare const VALID_TASK_SOURCES: Set<string>;
|
|
15
15
|
/** Terminal task statuses */
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Security: Addresses prototype pollution, NaN bypass, input validation
|
|
9
9
|
*/
|
|
10
10
|
// ── Constants ─────────────────────────────────────────────────
|
|
11
|
-
export const STATE_DIR = '.
|
|
11
|
+
export const STATE_DIR = '.odd-flow/data';
|
|
12
12
|
export const STATE_FILE = `${STATE_DIR}/autopilot-state.json`;
|
|
13
13
|
export const LOG_FILE = `${STATE_DIR}/autopilot-log.json`;
|
|
14
14
|
/** Maximum entries kept in state.history (prevents unbounded growth) */
|
|
@@ -201,7 +201,7 @@ export function discoverTasks(sources) {
|
|
|
201
201
|
catch { /* skip source */ }
|
|
202
202
|
}
|
|
203
203
|
if (source === 'swarm-tasks') {
|
|
204
|
-
const swarmFile = path.resolve('.
|
|
204
|
+
const swarmFile = path.resolve('.odd-flow/swarm-tasks.json');
|
|
205
205
|
try {
|
|
206
206
|
if (fs.existsSync(swarmFile)) {
|
|
207
207
|
const data = safeJsonParse(fs.readFileSync(swarmFile, 'utf-8'));
|
|
@@ -222,7 +222,7 @@ export function discoverTasks(sources) {
|
|
|
222
222
|
catch { /* skip source */ }
|
|
223
223
|
}
|
|
224
224
|
if (source === 'file-checklist') {
|
|
225
|
-
const checklistFile = path.resolve('.
|
|
225
|
+
const checklistFile = path.resolve('.odd-flow/data/checklist.json');
|
|
226
226
|
try {
|
|
227
227
|
if (fs.existsSync(checklistFile)) {
|
|
228
228
|
const data = safeJsonParse(fs.readFileSync(checklistFile, 'utf-8'));
|
|
@@ -17,7 +17,7 @@ export const wasmStatusCommand = {
|
|
|
17
17
|
description: 'Check rvagent-wasm availability, version, and capabilities',
|
|
18
18
|
options: [],
|
|
19
19
|
examples: [
|
|
20
|
-
{ command: '
|
|
20
|
+
{ command: 'odd-flow agent wasm-status', description: 'Check WASM agent runtime status' },
|
|
21
21
|
],
|
|
22
22
|
action: async (ctx) => {
|
|
23
23
|
try {
|
|
@@ -123,9 +123,9 @@ export const wasmCreateCommand = {
|
|
|
123
123
|
},
|
|
124
124
|
],
|
|
125
125
|
examples: [
|
|
126
|
-
{ command: '
|
|
127
|
-
{ command: '
|
|
128
|
-
{ command: '
|
|
126
|
+
{ command: 'odd-flow agent wasm-create', description: 'Create a default WASM agent' },
|
|
127
|
+
{ command: 'odd-flow agent wasm-create -t coder', description: 'Create from gallery template' },
|
|
128
|
+
{ command: 'odd-flow agent wasm-create -m "anthropic:claude-sonnet-4-20250514" -i "You are a security auditor"', description: 'Create with custom config' },
|
|
129
129
|
],
|
|
130
130
|
action: async (ctx) => {
|
|
131
131
|
try {
|
|
@@ -198,7 +198,7 @@ export const wasmPromptCommand = {
|
|
|
198
198
|
},
|
|
199
199
|
],
|
|
200
200
|
examples: [
|
|
201
|
-
{ command: '
|
|
201
|
+
{ command: 'odd-flow agent wasm-prompt -a wasm-agent-1-abc -i "Write a hello world"', description: 'Send prompt to WASM agent' },
|
|
202
202
|
],
|
|
203
203
|
action: async (ctx) => {
|
|
204
204
|
const agentId = ctx.flags['agent-id'] || ctx.args[0];
|
|
@@ -261,8 +261,8 @@ export const wasmGalleryCommand = {
|
|
|
261
261
|
},
|
|
262
262
|
],
|
|
263
263
|
examples: [
|
|
264
|
-
{ command: '
|
|
265
|
-
{ command: '
|
|
264
|
+
{ command: 'odd-flow agent wasm-gallery', description: 'List all gallery templates' },
|
|
265
|
+
{ command: 'odd-flow agent wasm-gallery -s coder', description: 'Search gallery templates' },
|
|
266
266
|
],
|
|
267
267
|
action: async (ctx) => {
|
|
268
268
|
try {
|
|
@@ -14,7 +14,7 @@ import * as path from 'path';
|
|
|
14
14
|
*/
|
|
15
15
|
function updateSwarmActivityMetrics(agentCountDelta) {
|
|
16
16
|
try {
|
|
17
|
-
const metricsDir = path.join(process.cwd(), '.
|
|
17
|
+
const metricsDir = path.join(process.cwd(), '.odd-flow', 'metrics');
|
|
18
18
|
const activityPath = path.join(metricsDir, 'swarm-activity.json');
|
|
19
19
|
let data = {
|
|
20
20
|
timestamp: new Date().toISOString(),
|
|
@@ -108,8 +108,8 @@ const spawnCommand = {
|
|
|
108
108
|
}
|
|
109
109
|
],
|
|
110
110
|
examples: [
|
|
111
|
-
{ command: '
|
|
112
|
-
{ command: '
|
|
111
|
+
{ command: 'odd-flow agent spawn --type coder --name bot-1', description: 'Spawn a coder agent' },
|
|
112
|
+
{ command: 'odd-flow agent spawn -t researcher --task "Research React 19"', description: 'Spawn researcher with task' }
|
|
113
113
|
],
|
|
114
114
|
action: async (ctx) => {
|
|
115
115
|
let agentType = ctx.flags.type;
|
|
@@ -579,8 +579,8 @@ const poolCommand = {
|
|
|
579
579
|
}
|
|
580
580
|
],
|
|
581
581
|
examples: [
|
|
582
|
-
{ command: '
|
|
583
|
-
{ command: '
|
|
582
|
+
{ command: 'odd-flow agent pool --size 5', description: 'Set pool size' },
|
|
583
|
+
{ command: 'odd-flow agent pool --min 2 --max 15', description: 'Configure auto-scaling' }
|
|
584
584
|
],
|
|
585
585
|
action: async (ctx) => {
|
|
586
586
|
try {
|
|
@@ -656,8 +656,8 @@ const healthCommand = {
|
|
|
656
656
|
}
|
|
657
657
|
],
|
|
658
658
|
examples: [
|
|
659
|
-
{ command: '
|
|
660
|
-
{ command: '
|
|
659
|
+
{ command: 'odd-flow agent health', description: 'Show all agents health' },
|
|
660
|
+
{ command: 'odd-flow agent health -i agent-001 -d', description: 'Detailed health for specific agent' }
|
|
661
661
|
],
|
|
662
662
|
action: async (ctx) => {
|
|
663
663
|
const agentId = ctx.args[0] || ctx.flags.id;
|
|
@@ -779,9 +779,9 @@ const logsCommand = {
|
|
|
779
779
|
}
|
|
780
780
|
],
|
|
781
781
|
examples: [
|
|
782
|
-
{ command: '
|
|
783
|
-
{ command: '
|
|
784
|
-
{ command: '
|
|
782
|
+
{ command: 'odd-flow agent logs -i agent-001', description: 'Show agent logs' },
|
|
783
|
+
{ command: 'odd-flow agent logs -i agent-001 -f', description: 'Follow agent logs' },
|
|
784
|
+
{ command: 'odd-flow agent logs -l error --since 1h', description: 'Show errors from last hour' }
|
|
785
785
|
],
|
|
786
786
|
action: async (ctx) => {
|
|
787
787
|
const agentId = ctx.args[0] || ctx.flags.id;
|
|
@@ -861,16 +861,16 @@ export const agentCommand = {
|
|
|
861
861
|
subcommands: [spawnCommand, listCommand, statusCommand, stopCommand, metricsCommand, poolCommand, healthCommand, logsCommand, ...wasmSubcommands],
|
|
862
862
|
options: [],
|
|
863
863
|
examples: [
|
|
864
|
-
{ command: '
|
|
865
|
-
{ command: '
|
|
866
|
-
{ command: '
|
|
864
|
+
{ command: 'odd-flow agent spawn -t coder', description: 'Spawn a coder agent' },
|
|
865
|
+
{ command: 'odd-flow agent list', description: 'List all agents' },
|
|
866
|
+
{ command: 'odd-flow agent status agent-001', description: 'Show agent status' }
|
|
867
867
|
],
|
|
868
868
|
action: async (ctx) => {
|
|
869
869
|
// Show help if no subcommand
|
|
870
870
|
output.writeln();
|
|
871
871
|
output.writeln(output.bold('Agent Management Commands'));
|
|
872
872
|
output.writeln();
|
|
873
|
-
output.writeln('Usage:
|
|
873
|
+
output.writeln('Usage: odd-flow agent <subcommand> [options]');
|
|
874
874
|
output.writeln();
|
|
875
875
|
output.writeln('Subcommands:');
|
|
876
876
|
output.printList([
|
|
@@ -888,7 +888,7 @@ export const agentCommand = {
|
|
|
888
888
|
`${output.highlight('wasm-gallery')} - List WASM agent gallery templates`,
|
|
889
889
|
]);
|
|
890
890
|
output.writeln();
|
|
891
|
-
output.writeln('Run "
|
|
891
|
+
output.writeln('Run "odd-flow agent <subcommand> --help" for subcommand help');
|
|
892
892
|
return { success: true };
|
|
893
893
|
}
|
|
894
894
|
};
|