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
|
@@ -24,8 +24,8 @@ const HIVE_MIND_SUBCOMMANDS = ['init', 'spawn', 'status', 'task', 'join', 'leave
|
|
|
24
24
|
const HOOKS_SUBCOMMANDS = ['pre-edit', 'post-edit', 'pre-command', 'post-command', 'pre-task', 'post-task', 'route', 'explain', 'pretrain', 'build-agents', 'metrics', 'transfer', 'list', 'intelligence'];
|
|
25
25
|
// Generate bash completion script
|
|
26
26
|
function generateBashCompletion() {
|
|
27
|
-
return `#
|
|
28
|
-
# Generated by
|
|
27
|
+
return `# odd-flow bash completion
|
|
28
|
+
# Generated by odd-flow completions bash
|
|
29
29
|
# Add this to ~/.bashrc or ~/.bash_completion
|
|
30
30
|
|
|
31
31
|
_claude_flow_completions() {
|
|
@@ -115,16 +115,16 @@ _claude_flow_completions() {
|
|
|
115
115
|
fi
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
complete -F _claude_flow_completions
|
|
119
|
-
complete -F _claude_flow_completions npx\\ @
|
|
118
|
+
complete -F _claude_flow_completions odd-flow
|
|
119
|
+
complete -F _claude_flow_completions npx\\ @odd-flow/cli@v3alpha
|
|
120
120
|
`;
|
|
121
121
|
}
|
|
122
122
|
// Generate zsh completion script
|
|
123
123
|
function generateZshCompletion() {
|
|
124
|
-
return `#compdef
|
|
125
|
-
#
|
|
126
|
-
# Generated by
|
|
127
|
-
# Add to ~/.zfunc/
|
|
124
|
+
return `#compdef odd-flow
|
|
125
|
+
# odd-flow zsh completion
|
|
126
|
+
# Generated by odd-flow completions zsh
|
|
127
|
+
# Add to ~/.zfunc/_odd-flow or ~/.zsh/completions/_odd-flow
|
|
128
128
|
|
|
129
129
|
_claude_flow() {
|
|
130
130
|
local -a commands
|
|
@@ -162,7 +162,7 @@ _claude_flow() {
|
|
|
162
162
|
|
|
163
163
|
case $state in
|
|
164
164
|
command)
|
|
165
|
-
_describe -t commands '
|
|
165
|
+
_describe -t commands 'odd-flow commands' commands
|
|
166
166
|
;;
|
|
167
167
|
subcommand)
|
|
168
168
|
case $words[2] in
|
|
@@ -340,66 +340,66 @@ _claude_flow "$@"
|
|
|
340
340
|
}
|
|
341
341
|
// Generate fish completion script
|
|
342
342
|
function generateFishCompletion() {
|
|
343
|
-
return `#
|
|
344
|
-
# Generated by
|
|
345
|
-
# Save to ~/.config/fish/completions/
|
|
343
|
+
return `# odd-flow fish completion
|
|
344
|
+
# Generated by odd-flow completions fish
|
|
345
|
+
# Save to ~/.config/fish/completions/odd-flow.fish
|
|
346
346
|
|
|
347
347
|
# Disable file completion by default
|
|
348
|
-
complete -c
|
|
348
|
+
complete -c odd-flow -f
|
|
349
349
|
|
|
350
350
|
# Top-level commands
|
|
351
|
-
${TOP_LEVEL_COMMANDS.map(cmd => `complete -c
|
|
351
|
+
${TOP_LEVEL_COMMANDS.map(cmd => `complete -c odd-flow -n "__fish_use_subcommand" -a "${cmd}"`).join('\n')}
|
|
352
352
|
|
|
353
353
|
# Swarm subcommands
|
|
354
|
-
${SWARM_SUBCOMMANDS.map(sub => `complete -c
|
|
354
|
+
${SWARM_SUBCOMMANDS.map(sub => `complete -c odd-flow -n "__fish_seen_subcommand_from swarm" -a "${sub}"`).join('\n')}
|
|
355
355
|
|
|
356
356
|
# Agent subcommands
|
|
357
|
-
${AGENT_SUBCOMMANDS.map(sub => `complete -c
|
|
357
|
+
${AGENT_SUBCOMMANDS.map(sub => `complete -c odd-flow -n "__fish_seen_subcommand_from agent" -a "${sub}"`).join('\n')}
|
|
358
358
|
|
|
359
359
|
# Task subcommands
|
|
360
|
-
${TASK_SUBCOMMANDS.map(sub => `complete -c
|
|
360
|
+
${TASK_SUBCOMMANDS.map(sub => `complete -c odd-flow -n "__fish_seen_subcommand_from task" -a "${sub}"`).join('\n')}
|
|
361
361
|
|
|
362
362
|
# Memory subcommands
|
|
363
|
-
${MEMORY_SUBCOMMANDS.map(sub => `complete -c
|
|
363
|
+
${MEMORY_SUBCOMMANDS.map(sub => `complete -c odd-flow -n "__fish_seen_subcommand_from memory" -a "${sub}"`).join('\n')}
|
|
364
364
|
|
|
365
365
|
# Hive-mind subcommands
|
|
366
|
-
${HIVE_MIND_SUBCOMMANDS.map(sub => `complete -c
|
|
366
|
+
${HIVE_MIND_SUBCOMMANDS.map(sub => `complete -c odd-flow -n "__fish_seen_subcommand_from hive-mind hive" -a "${sub}"`).join('\n')}
|
|
367
367
|
|
|
368
368
|
# Hooks subcommands
|
|
369
|
-
${HOOKS_SUBCOMMANDS.map(sub => `complete -c
|
|
369
|
+
${HOOKS_SUBCOMMANDS.map(sub => `complete -c odd-flow -n "__fish_seen_subcommand_from hooks" -a "${sub}"`).join('\n')}
|
|
370
370
|
|
|
371
371
|
# Neural subcommands
|
|
372
|
-
complete -c
|
|
372
|
+
complete -c odd-flow -n "__fish_seen_subcommand_from neural" -a "train status patterns predict optimize"
|
|
373
373
|
|
|
374
374
|
# Security subcommands
|
|
375
|
-
complete -c
|
|
375
|
+
complete -c odd-flow -n "__fish_seen_subcommand_from security" -a "scan cve threats audit secrets"
|
|
376
376
|
|
|
377
377
|
# Performance subcommands
|
|
378
|
-
complete -c
|
|
378
|
+
complete -c odd-flow -n "__fish_seen_subcommand_from performance" -a "benchmark profile metrics optimize bottleneck"
|
|
379
379
|
|
|
380
380
|
# Plugins subcommands
|
|
381
|
-
complete -c
|
|
381
|
+
complete -c odd-flow -n "__fish_seen_subcommand_from plugins" -a "list install uninstall toggle info create"
|
|
382
382
|
|
|
383
383
|
# Deployment subcommands
|
|
384
|
-
complete -c
|
|
384
|
+
complete -c odd-flow -n "__fish_seen_subcommand_from deployment deploy" -a "deploy status rollback history environments logs"
|
|
385
385
|
|
|
386
386
|
# Claims subcommands
|
|
387
|
-
complete -c
|
|
387
|
+
complete -c odd-flow -n "__fish_seen_subcommand_from claims" -a "list check grant revoke roles policies"
|
|
388
388
|
|
|
389
389
|
# Embeddings subcommands
|
|
390
|
-
complete -c
|
|
390
|
+
complete -c odd-flow -n "__fish_seen_subcommand_from embeddings" -a "generate search compare collections index providers"
|
|
391
391
|
|
|
392
392
|
# Daemon subcommands
|
|
393
|
-
complete -c
|
|
393
|
+
complete -c odd-flow -n "__fish_seen_subcommand_from daemon" -a "start stop status trigger enable"
|
|
394
394
|
|
|
395
395
|
# Providers subcommands
|
|
396
|
-
complete -c
|
|
396
|
+
complete -c odd-flow -n "__fish_seen_subcommand_from providers" -a "list configure test models usage"
|
|
397
397
|
`;
|
|
398
398
|
}
|
|
399
399
|
// Generate PowerShell completion script
|
|
400
400
|
function generatePowerShellCompletion() {
|
|
401
|
-
return `#
|
|
402
|
-
# Generated by
|
|
401
|
+
return `# odd-flow PowerShell completion
|
|
402
|
+
# Generated by odd-flow completions powershell
|
|
403
403
|
# Add to $PROFILE or save to a separate file and dot-source it
|
|
404
404
|
|
|
405
405
|
$script:ClaudeFlowCommands = @(
|
|
@@ -426,7 +426,7 @@ $script:SubCommands = @{
|
|
|
426
426
|
'providers' = @('list', 'configure', 'test', 'models', 'usage')
|
|
427
427
|
}
|
|
428
428
|
|
|
429
|
-
Register-ArgumentCompleter -Native -CommandName
|
|
429
|
+
Register-ArgumentCompleter -Native -CommandName odd-flow -ScriptBlock {
|
|
430
430
|
param($wordToComplete, $commandAst, $cursorPosition)
|
|
431
431
|
|
|
432
432
|
$tokens = $commandAst.ToString().Split(' ')
|
|
@@ -495,10 +495,10 @@ export const completionsCommand = {
|
|
|
495
495
|
subcommands: [bashCommand, zshCommand, fishCommand, powershellCommand],
|
|
496
496
|
options: [],
|
|
497
497
|
examples: [
|
|
498
|
-
{ command: '
|
|
499
|
-
{ command: '
|
|
500
|
-
{ command: '
|
|
501
|
-
{ command: '
|
|
498
|
+
{ command: 'odd-flow completions bash > ~/.bash_completion.d/odd-flow', description: 'Install bash completions' },
|
|
499
|
+
{ command: 'odd-flow completions zsh > ~/.zfunc/_odd-flow', description: 'Install zsh completions' },
|
|
500
|
+
{ command: 'odd-flow completions fish > ~/.config/fish/completions/odd-flow.fish', description: 'Install fish completions' },
|
|
501
|
+
{ command: 'odd-flow completions powershell >> $PROFILE', description: 'Install PowerShell completions' }
|
|
502
502
|
],
|
|
503
503
|
action: async () => {
|
|
504
504
|
output.writeln();
|
|
@@ -517,19 +517,19 @@ export const completionsCommand = {
|
|
|
517
517
|
output.writeln('Installation:');
|
|
518
518
|
output.writeln();
|
|
519
519
|
output.writeln(output.bold('Bash:'));
|
|
520
|
-
output.writeln(output.dim('
|
|
521
|
-
output.writeln(output.dim(' source ~/.bash_completion.d/
|
|
520
|
+
output.writeln(output.dim(' odd-flow completions bash > ~/.bash_completion.d/odd-flow'));
|
|
521
|
+
output.writeln(output.dim(' source ~/.bash_completion.d/odd-flow'));
|
|
522
522
|
output.writeln();
|
|
523
523
|
output.writeln(output.bold('Zsh:'));
|
|
524
524
|
output.writeln(output.dim(' mkdir -p ~/.zfunc'));
|
|
525
|
-
output.writeln(output.dim('
|
|
525
|
+
output.writeln(output.dim(' odd-flow completions zsh > ~/.zfunc/_odd-flow'));
|
|
526
526
|
output.writeln(output.dim(' # Add to ~/.zshrc: fpath=(~/.zfunc $fpath); autoload -Uz compinit && compinit'));
|
|
527
527
|
output.writeln();
|
|
528
528
|
output.writeln(output.bold('Fish:'));
|
|
529
|
-
output.writeln(output.dim('
|
|
529
|
+
output.writeln(output.dim(' odd-flow completions fish > ~/.config/fish/completions/odd-flow.fish'));
|
|
530
530
|
output.writeln();
|
|
531
531
|
output.writeln(output.bold('PowerShell:'));
|
|
532
|
-
output.writeln(output.dim('
|
|
532
|
+
output.writeln(output.dim(' odd-flow completions powershell >> $PROFILE'));
|
|
533
533
|
return { success: true };
|
|
534
534
|
}
|
|
535
535
|
};
|
|
@@ -64,8 +64,8 @@ const getCommand = {
|
|
|
64
64
|
}
|
|
65
65
|
],
|
|
66
66
|
examples: [
|
|
67
|
-
{ command: '
|
|
68
|
-
{ command: '
|
|
67
|
+
{ command: 'odd-flow config get swarm.topology', description: 'Get swarm topology' },
|
|
68
|
+
{ command: 'odd-flow config get -k memory.backend', description: 'Get memory backend' }
|
|
69
69
|
],
|
|
70
70
|
action: async (ctx) => {
|
|
71
71
|
const key = ctx.flags.key || ctx.args[0];
|
|
@@ -135,8 +135,8 @@ const setCommand = {
|
|
|
135
135
|
}
|
|
136
136
|
],
|
|
137
137
|
examples: [
|
|
138
|
-
{ command: '
|
|
139
|
-
{ command: '
|
|
138
|
+
{ command: 'odd-flow config set swarm.maxAgents 20', description: 'Set max agents' },
|
|
139
|
+
{ command: 'odd-flow config set -k memory.backend -v agentdb', description: 'Set memory backend' }
|
|
140
140
|
],
|
|
141
141
|
action: async (ctx) => {
|
|
142
142
|
const key = ctx.flags.key || ctx.args[0];
|
|
@@ -272,7 +272,7 @@ const exportCommand = {
|
|
|
272
272
|
],
|
|
273
273
|
action: async (ctx) => {
|
|
274
274
|
try {
|
|
275
|
-
const exportPath = ctx.flags.output || ctx.args[0] || '
|
|
275
|
+
const exportPath = ctx.flags.output || ctx.args[0] || 'odd-flow.config.export.json';
|
|
276
276
|
configManager.exportTo(ctx.cwd, exportPath);
|
|
277
277
|
const resolved = path.resolve(ctx.cwd, exportPath);
|
|
278
278
|
output.writeln(`Configuration exported to: ${resolved}`);
|
|
@@ -329,15 +329,15 @@ export const configCommand = {
|
|
|
329
329
|
subcommands: [initCommand, getCommand, setCommand, providersCommand, resetCommand, exportCommand, importCommand],
|
|
330
330
|
options: [],
|
|
331
331
|
examples: [
|
|
332
|
-
{ command: '
|
|
333
|
-
{ command: '
|
|
334
|
-
{ command: '
|
|
332
|
+
{ command: 'odd-flow config init --v3', description: 'Initialize V3 config' },
|
|
333
|
+
{ command: 'odd-flow config get swarm.topology', description: 'Get config value' },
|
|
334
|
+
{ command: 'odd-flow config set swarm.maxAgents 20', description: 'Set config value' }
|
|
335
335
|
],
|
|
336
336
|
action: async (ctx) => {
|
|
337
337
|
output.writeln();
|
|
338
338
|
output.writeln(output.bold('Configuration Management'));
|
|
339
339
|
output.writeln();
|
|
340
|
-
output.writeln('Usage:
|
|
340
|
+
output.writeln('Usage: odd-flow config <subcommand> [options]');
|
|
341
341
|
output.writeln();
|
|
342
342
|
output.writeln('Subcommands:');
|
|
343
343
|
output.printList([
|
|
@@ -23,10 +23,10 @@ const startCommand = {
|
|
|
23
23
|
{ name: 'min-free-memory', type: 'string', description: 'Override minFreeMemoryPercent resource threshold (e.g. 15)' },
|
|
24
24
|
],
|
|
25
25
|
examples: [
|
|
26
|
-
{ command: '
|
|
27
|
-
{ command: '
|
|
28
|
-
{ command: '
|
|
29
|
-
{ command: '
|
|
26
|
+
{ command: 'odd-flow daemon start', description: 'Start daemon in background (default)' },
|
|
27
|
+
{ command: 'odd-flow daemon start --foreground', description: 'Start in foreground (blocks terminal)' },
|
|
28
|
+
{ command: 'odd-flow daemon start -w map,audit,optimize', description: 'Start with specific workers' },
|
|
29
|
+
{ command: 'odd-flow daemon start --headless --sandbox strict', description: 'Start with headless workers in strict sandbox' },
|
|
30
30
|
],
|
|
31
31
|
action: async (ctx) => {
|
|
32
32
|
const quiet = ctx.flags.quiet;
|
|
@@ -80,7 +80,7 @@ const startCommand = {
|
|
|
80
80
|
}
|
|
81
81
|
// Foreground mode: run in current process (blocks terminal)
|
|
82
82
|
try {
|
|
83
|
-
const stateDir = join(projectRoot, '.
|
|
83
|
+
const stateDir = join(projectRoot, '.odd-flow');
|
|
84
84
|
const pidFile = join(stateDir, 'daemon.pid');
|
|
85
85
|
// Ensure state directory exists
|
|
86
86
|
if (!fs.existsSync(stateDir)) {
|
|
@@ -185,7 +185,7 @@ function validatePath(path, label) {
|
|
|
185
185
|
throw new Error(`${label} contains shell metacharacters`);
|
|
186
186
|
}
|
|
187
187
|
// Prevent path traversal outside expected directories
|
|
188
|
-
if (!resolved.includes('.
|
|
188
|
+
if (!resolved.includes('.odd-flow') && !resolved.includes('bin')) {
|
|
189
189
|
// Allow only paths within project structure
|
|
190
190
|
const cwd = process.cwd();
|
|
191
191
|
if (!resolved.startsWith(cwd)) {
|
|
@@ -200,7 +200,7 @@ async function startBackgroundDaemon(projectRoot, quiet, maxCpuLoad, minFreeMemo
|
|
|
200
200
|
// Validate and resolve project root
|
|
201
201
|
const resolvedRoot = resolve(projectRoot);
|
|
202
202
|
validatePath(resolvedRoot, 'Project root');
|
|
203
|
-
const stateDir = join(resolvedRoot, '.
|
|
203
|
+
const stateDir = join(resolvedRoot, '.odd-flow');
|
|
204
204
|
const pidFile = join(stateDir, 'daemon.pid');
|
|
205
205
|
const logFile = join(stateDir, 'daemon.log');
|
|
206
206
|
// Validate all paths
|
|
@@ -229,7 +229,7 @@ async function startBackgroundDaemon(projectRoot, quiet, maxCpuLoad, minFreeMemo
|
|
|
229
229
|
detached: !isWin, // detached is POSIX-only; Windows uses windowsHide
|
|
230
230
|
// Use 'ignore' for all stdio — passing fs.openSync() FDs causes the child to
|
|
231
231
|
// die on Windows when the parent exits and closes the FDs (#1478 Bug 3).
|
|
232
|
-
// The daemon writes its own logs via appendFileSync to .
|
|
232
|
+
// The daemon writes its own logs via appendFileSync to .odd-flow/logs/.
|
|
233
233
|
stdio: ['ignore', 'ignore', 'ignore'],
|
|
234
234
|
env: {
|
|
235
235
|
...process.env,
|
|
@@ -277,7 +277,7 @@ async function startBackgroundDaemon(projectRoot, quiet, maxCpuLoad, minFreeMemo
|
|
|
277
277
|
if (!quiet) {
|
|
278
278
|
output.printSuccess(`Daemon started in background (PID: ${pid})`);
|
|
279
279
|
output.printInfo(`Logs: ${logFile}`);
|
|
280
|
-
output.printInfo(`Stop with:
|
|
280
|
+
output.printInfo(`Stop with: odd-flow daemon stop`);
|
|
281
281
|
}
|
|
282
282
|
return { success: true };
|
|
283
283
|
}
|
|
@@ -289,7 +289,7 @@ const stopCommand = {
|
|
|
289
289
|
{ name: 'quiet', short: 'Q', type: 'boolean', description: 'Suppress output' },
|
|
290
290
|
],
|
|
291
291
|
examples: [
|
|
292
|
-
{ command: '
|
|
292
|
+
{ command: 'odd-flow daemon stop', description: 'Stop the daemon' },
|
|
293
293
|
],
|
|
294
294
|
action: async (ctx) => {
|
|
295
295
|
const quiet = ctx.flags.quiet;
|
|
@@ -320,7 +320,7 @@ const stopCommand = {
|
|
|
320
320
|
* Kill background daemon process using PID file
|
|
321
321
|
*/
|
|
322
322
|
async function killBackgroundDaemon(projectRoot) {
|
|
323
|
-
const pidFile = join(projectRoot, '.
|
|
323
|
+
const pidFile = join(projectRoot, '.odd-flow', 'daemon.pid');
|
|
324
324
|
if (!fs.existsSync(pidFile)) {
|
|
325
325
|
return false;
|
|
326
326
|
}
|
|
@@ -369,7 +369,7 @@ async function killBackgroundDaemon(projectRoot) {
|
|
|
369
369
|
* Get PID of background daemon from PID file
|
|
370
370
|
*/
|
|
371
371
|
function getBackgroundDaemonPid(projectRoot) {
|
|
372
|
-
const pidFile = join(projectRoot, '.
|
|
372
|
+
const pidFile = join(projectRoot, '.odd-flow', 'daemon.pid');
|
|
373
373
|
if (!fs.existsSync(pidFile)) {
|
|
374
374
|
return null;
|
|
375
375
|
}
|
|
@@ -402,9 +402,9 @@ const statusCommand = {
|
|
|
402
402
|
{ name: 'show-modes', type: 'boolean', description: 'Show worker execution modes (local/headless) and sandbox settings' },
|
|
403
403
|
],
|
|
404
404
|
examples: [
|
|
405
|
-
{ command: '
|
|
406
|
-
{ command: '
|
|
407
|
-
{ command: '
|
|
405
|
+
{ command: 'odd-flow daemon status', description: 'Show daemon status' },
|
|
406
|
+
{ command: 'odd-flow daemon status -v', description: 'Show detailed status' },
|
|
407
|
+
{ command: 'odd-flow daemon status --show-modes', description: 'Show worker execution modes' },
|
|
408
408
|
],
|
|
409
409
|
action: async (ctx) => {
|
|
410
410
|
const verbose = ctx.flags.verbose;
|
|
@@ -501,7 +501,7 @@ const statusCommand = {
|
|
|
501
501
|
output.printBox([
|
|
502
502
|
`Status: ${output.error('○')} ${output.error('NOT INITIALIZED')}`,
|
|
503
503
|
'',
|
|
504
|
-
'Run "
|
|
504
|
+
'Run "odd-flow daemon start" to start the daemon',
|
|
505
505
|
].join('\n'), 'Odd Flow Daemon');
|
|
506
506
|
return { success: true };
|
|
507
507
|
}
|
|
@@ -516,9 +516,9 @@ const triggerCommand = {
|
|
|
516
516
|
{ name: 'headless', type: 'boolean', description: 'Run triggered worker in headless mode (E2B sandbox)' },
|
|
517
517
|
],
|
|
518
518
|
examples: [
|
|
519
|
-
{ command: '
|
|
520
|
-
{ command: '
|
|
521
|
-
{ command: '
|
|
519
|
+
{ command: 'odd-flow daemon trigger -w map', description: 'Trigger the map worker' },
|
|
520
|
+
{ command: 'odd-flow daemon trigger -w audit', description: 'Trigger security audit' },
|
|
521
|
+
{ command: 'odd-flow daemon trigger -w audit --headless', description: 'Trigger audit in headless sandbox' },
|
|
522
522
|
],
|
|
523
523
|
action: async (ctx) => {
|
|
524
524
|
const workerType = ctx.flags.worker;
|
|
@@ -561,8 +561,8 @@ const enableCommand = {
|
|
|
561
561
|
{ name: 'disable', short: 'd', type: 'boolean', description: 'Disable instead of enable' },
|
|
562
562
|
],
|
|
563
563
|
examples: [
|
|
564
|
-
{ command: '
|
|
565
|
-
{ command: '
|
|
564
|
+
{ command: 'odd-flow daemon enable -w predict', description: 'Enable predict worker' },
|
|
565
|
+
{ command: 'odd-flow daemon enable -w document --disable', description: 'Disable document worker' },
|
|
566
566
|
],
|
|
567
567
|
action: async (ctx) => {
|
|
568
568
|
const workerType = ctx.flags.worker;
|
|
@@ -619,11 +619,11 @@ export const daemonCommand = {
|
|
|
619
619
|
],
|
|
620
620
|
options: [],
|
|
621
621
|
examples: [
|
|
622
|
-
{ command: '
|
|
623
|
-
{ command: '
|
|
624
|
-
{ command: '
|
|
625
|
-
{ command: '
|
|
626
|
-
{ command: '
|
|
622
|
+
{ command: 'odd-flow daemon start', description: 'Start the daemon' },
|
|
623
|
+
{ command: 'odd-flow daemon start --headless', description: 'Start with headless workers (E2B sandbox)' },
|
|
624
|
+
{ command: 'odd-flow daemon status', description: 'Check daemon status' },
|
|
625
|
+
{ command: 'odd-flow daemon stop', description: 'Stop the daemon' },
|
|
626
|
+
{ command: 'odd-flow daemon trigger -w audit', description: 'Run security audit' },
|
|
627
627
|
],
|
|
628
628
|
action: async () => {
|
|
629
629
|
output.writeln();
|
|
@@ -661,7 +661,7 @@ export const daemonCommand = {
|
|
|
661
661
|
`${output.highlight('enable')} - Enable/disable a worker`,
|
|
662
662
|
]);
|
|
663
663
|
output.writeln();
|
|
664
|
-
output.writeln('Run "
|
|
664
|
+
output.writeln('Run "odd-flow daemon <subcommand> --help" for details');
|
|
665
665
|
return { success: true };
|
|
666
666
|
},
|
|
667
667
|
};
|
|
@@ -9,7 +9,7 @@ import * as path from 'path';
|
|
|
9
9
|
// State Helpers
|
|
10
10
|
// ============================================
|
|
11
11
|
function getStateDir(cwd) {
|
|
12
|
-
return path.join(cwd, '.
|
|
12
|
+
return path.join(cwd, '.odd-flow');
|
|
13
13
|
}
|
|
14
14
|
function getStatePath(cwd) {
|
|
15
15
|
return path.join(getStateDir(cwd), 'deployments.json');
|
|
@@ -71,8 +71,8 @@ const deployCommand = {
|
|
|
71
71
|
{ name: 'description', type: 'string', description: 'Deployment description' },
|
|
72
72
|
],
|
|
73
73
|
examples: [
|
|
74
|
-
{ command: '
|
|
75
|
-
{ command: '
|
|
74
|
+
{ command: 'odd-flow deployment deploy -e prod', description: 'Deploy to production' },
|
|
75
|
+
{ command: 'odd-flow deployment deploy --dry-run', description: 'Simulate deployment' },
|
|
76
76
|
],
|
|
77
77
|
action: async (ctx) => {
|
|
78
78
|
try {
|
|
@@ -159,8 +159,8 @@ const statusCommand = {
|
|
|
159
159
|
{ name: 'env', short: 'e', type: 'string', description: 'Specific environment to check' },
|
|
160
160
|
],
|
|
161
161
|
examples: [
|
|
162
|
-
{ command: '
|
|
163
|
-
{ command: '
|
|
162
|
+
{ command: 'odd-flow deployment status', description: 'Show all environments' },
|
|
163
|
+
{ command: 'odd-flow deployment status -e prod', description: 'Check production' },
|
|
164
164
|
],
|
|
165
165
|
action: async (ctx) => {
|
|
166
166
|
try {
|
|
@@ -255,8 +255,8 @@ const rollbackCommand = {
|
|
|
255
255
|
{ name: 'steps', short: 's', type: 'number', description: 'Number of versions to rollback', default: '1' },
|
|
256
256
|
],
|
|
257
257
|
examples: [
|
|
258
|
-
{ command: '
|
|
259
|
-
{ command: '
|
|
258
|
+
{ command: 'odd-flow deployment rollback -e prod', description: 'Rollback production' },
|
|
259
|
+
{ command: 'odd-flow deployment rollback -e prod -v v3.0.0', description: 'Rollback to specific version' },
|
|
260
260
|
],
|
|
261
261
|
action: async (ctx) => {
|
|
262
262
|
try {
|
|
@@ -343,8 +343,8 @@ const historyCommand = {
|
|
|
343
343
|
{ name: 'limit', short: 'l', type: 'number', description: 'Number of entries', default: '10' },
|
|
344
344
|
],
|
|
345
345
|
examples: [
|
|
346
|
-
{ command: '
|
|
347
|
-
{ command: '
|
|
346
|
+
{ command: 'odd-flow deployment history', description: 'Show all history' },
|
|
347
|
+
{ command: 'odd-flow deployment history -e prod', description: 'Production history' },
|
|
348
348
|
],
|
|
349
349
|
action: async (ctx) => {
|
|
350
350
|
try {
|
|
@@ -405,9 +405,9 @@ const environmentsCommand = {
|
|
|
405
405
|
{ name: 'url', short: 'u', type: 'string', description: 'Environment URL' },
|
|
406
406
|
],
|
|
407
407
|
examples: [
|
|
408
|
-
{ command: '
|
|
409
|
-
{ command: '
|
|
410
|
-
{ command: '
|
|
408
|
+
{ command: 'odd-flow deployment environments', description: 'List environments' },
|
|
409
|
+
{ command: 'odd-flow deployment envs -a add -n preview -t staging', description: 'Add environment' },
|
|
410
|
+
{ command: 'odd-flow deployment envs -a remove -n preview', description: 'Remove environment' },
|
|
411
411
|
],
|
|
412
412
|
action: async (ctx) => {
|
|
413
413
|
try {
|
|
@@ -497,8 +497,8 @@ const logsCommand = {
|
|
|
497
497
|
{ name: 'lines', short: 'n', type: 'number', description: 'Number of lines', default: '50' },
|
|
498
498
|
],
|
|
499
499
|
examples: [
|
|
500
|
-
{ command: '
|
|
501
|
-
{ command: '
|
|
500
|
+
{ command: 'odd-flow deployment logs -e prod', description: 'View production logs' },
|
|
501
|
+
{ command: 'odd-flow deployment logs -d dep-123', description: 'View specific deployment' },
|
|
502
502
|
],
|
|
503
503
|
action: async (ctx) => {
|
|
504
504
|
try {
|
|
@@ -562,8 +562,8 @@ const releaseCommand = {
|
|
|
562
562
|
{ name: 'description', short: 'd', type: 'string', description: 'Release description' },
|
|
563
563
|
],
|
|
564
564
|
examples: [
|
|
565
|
-
{ command: '
|
|
566
|
-
{ command: '
|
|
565
|
+
{ command: 'odd-flow deployment release -v 3.5.0', description: 'Release version 3.5.0' },
|
|
566
|
+
{ command: 'odd-flow deployment release -v 3.5.0 -d "Major update"', description: 'Release with description' },
|
|
567
567
|
],
|
|
568
568
|
action: async (ctx) => {
|
|
569
569
|
try {
|
|
@@ -633,10 +633,10 @@ export const deploymentCommand = {
|
|
|
633
633
|
aliases: ['deploy'],
|
|
634
634
|
subcommands: [deployCommand, statusCommand, rollbackCommand, historyCommand, environmentsCommand, logsCommand, releaseCommand],
|
|
635
635
|
examples: [
|
|
636
|
-
{ command: '
|
|
637
|
-
{ command: '
|
|
638
|
-
{ command: '
|
|
639
|
-
{ command: '
|
|
636
|
+
{ command: 'odd-flow deployment deploy -e prod', description: 'Deploy to production' },
|
|
637
|
+
{ command: 'odd-flow deployment status', description: 'Check all environments' },
|
|
638
|
+
{ command: 'odd-flow deployment rollback -e prod', description: 'Rollback production' },
|
|
639
|
+
{ command: 'odd-flow deployment release -v 3.5.0', description: 'Create a release' },
|
|
640
640
|
],
|
|
641
641
|
action: async () => {
|
|
642
642
|
output.writeln();
|
|
@@ -59,9 +59,9 @@ async function checkNpmVersion() {
|
|
|
59
59
|
async function checkConfigFile() {
|
|
60
60
|
// JSON configs (parse-validated)
|
|
61
61
|
const jsonPaths = [
|
|
62
|
-
'.
|
|
63
|
-
'
|
|
64
|
-
'.
|
|
62
|
+
'.odd-flow/config.json',
|
|
63
|
+
'odd-flow.config.json',
|
|
64
|
+
'.odd-flow.json'
|
|
65
65
|
];
|
|
66
66
|
for (const configPath of jsonPaths) {
|
|
67
67
|
if (existsSync(configPath)) {
|
|
@@ -77,21 +77,21 @@ async function checkConfigFile() {
|
|
|
77
77
|
}
|
|
78
78
|
// YAML configs (existence-checked only — no heavy yaml parser dependency)
|
|
79
79
|
const yamlPaths = [
|
|
80
|
-
'.
|
|
81
|
-
'.
|
|
82
|
-
'
|
|
80
|
+
'.odd-flow/config.yaml',
|
|
81
|
+
'.odd-flow/config.yml',
|
|
82
|
+
'odd-flow.config.yaml'
|
|
83
83
|
];
|
|
84
84
|
for (const configPath of yamlPaths) {
|
|
85
85
|
if (existsSync(configPath)) {
|
|
86
86
|
return { name: 'Config File', status: 'pass', message: `Found: ${configPath}` };
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
return { name: 'Config File', status: 'warn', message: 'No config file (using defaults)', fix: '
|
|
89
|
+
return { name: 'Config File', status: 'warn', message: 'No config file (using defaults)', fix: 'odd-flow config init' };
|
|
90
90
|
}
|
|
91
91
|
// Check daemon status
|
|
92
92
|
async function checkDaemonStatus() {
|
|
93
93
|
try {
|
|
94
|
-
const pidFile = '.
|
|
94
|
+
const pidFile = '.odd-flow/daemon.pid';
|
|
95
95
|
if (existsSync(pidFile)) {
|
|
96
96
|
const pid = readFileSync(pidFile, 'utf8').trim();
|
|
97
97
|
try {
|
|
@@ -99,19 +99,19 @@ async function checkDaemonStatus() {
|
|
|
99
99
|
return { name: 'Daemon Status', status: 'pass', message: `Running (PID: ${pid})` };
|
|
100
100
|
}
|
|
101
101
|
catch {
|
|
102
|
-
return { name: 'Daemon Status', status: 'warn', message: 'Stale PID file', fix: 'rm .
|
|
102
|
+
return { name: 'Daemon Status', status: 'warn', message: 'Stale PID file', fix: 'rm .odd-flow/daemon.pid && odd-flow daemon start' };
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
|
-
return { name: 'Daemon Status', status: 'warn', message: 'Not running', fix: '
|
|
105
|
+
return { name: 'Daemon Status', status: 'warn', message: 'Not running', fix: 'odd-flow daemon start' };
|
|
106
106
|
}
|
|
107
107
|
catch {
|
|
108
|
-
return { name: 'Daemon Status', status: 'warn', message: 'Unable to check', fix: '
|
|
108
|
+
return { name: 'Daemon Status', status: 'warn', message: 'Unable to check', fix: 'odd-flow daemon status' };
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
// Check memory database
|
|
112
112
|
async function checkMemoryDatabase() {
|
|
113
113
|
const dbPaths = [
|
|
114
|
-
'.
|
|
114
|
+
'.odd-flow/memory.db',
|
|
115
115
|
'.swarm/memory.db',
|
|
116
116
|
'data/memory.db'
|
|
117
117
|
];
|
|
@@ -127,7 +127,7 @@ async function checkMemoryDatabase() {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
|
-
return { name: 'Memory Database', status: 'warn', message: 'Not initialized', fix: '
|
|
130
|
+
return { name: 'Memory Database', status: 'warn', message: 'Not initialized', fix: 'odd-flow memory configure --backend hybrid' };
|
|
131
131
|
}
|
|
132
132
|
// Check API keys
|
|
133
133
|
async function checkApiKeys() {
|
|
@@ -186,7 +186,7 @@ async function checkMcpServers() {
|
|
|
186
186
|
const content = JSON.parse(readFileSync(configPath, 'utf8'));
|
|
187
187
|
const servers = content.mcpServers || content.servers || {};
|
|
188
188
|
const count = Object.keys(servers).length;
|
|
189
|
-
const hasOddFlow = 'odd-flow' in servers || '
|
|
189
|
+
const hasOddFlow = 'odd-flow' in servers || 'odd-flow' in servers || 'odd-flow_alpha' in servers;
|
|
190
190
|
if (hasOddFlow) {
|
|
191
191
|
return { name: 'MCP Servers', status: 'pass', message: `${count} servers (odd-flow configured)` };
|
|
192
192
|
}
|
|
@@ -252,7 +252,7 @@ async function checkVersionFreshness() {
|
|
|
252
252
|
const thisFile = fileURLToPath(import.meta.url);
|
|
253
253
|
let dir = dirname(thisFile);
|
|
254
254
|
// Walk up from the current file's directory until we find the
|
|
255
|
-
// package.json that belongs to @
|
|
255
|
+
// package.json that belongs to @odd-flow/cli (or odd-flow/cli).
|
|
256
256
|
// Walk until dirname(dir) === dir (filesystem root on any platform).
|
|
257
257
|
for (;;) {
|
|
258
258
|
const candidate = join(dir, 'package.json');
|
|
@@ -261,7 +261,7 @@ async function checkVersionFreshness() {
|
|
|
261
261
|
const pkg = JSON.parse(readFileSync(candidate, 'utf8'));
|
|
262
262
|
if (pkg.version &&
|
|
263
263
|
typeof pkg.name === 'string' &&
|
|
264
|
-
(pkg.name === '@
|
|
264
|
+
(pkg.name === '@odd-flow/cli' || pkg.name === 'odd-flow' || pkg.name === 'odd-flow' || pkg.name === 'odd-flow')) {
|
|
265
265
|
currentVersion = pkg.version;
|
|
266
266
|
break;
|
|
267
267
|
}
|
|
@@ -287,7 +287,7 @@ async function checkVersionFreshness() {
|
|
|
287
287
|
// Query npm for latest version (using alpha tag since that's what we publish to)
|
|
288
288
|
let latestVersion = currentVersion;
|
|
289
289
|
try {
|
|
290
|
-
const npmInfo = await runCommand('npm view @
|
|
290
|
+
const npmInfo = await runCommand('npm view @odd-flow/cli@alpha version', 5000);
|
|
291
291
|
latestVersion = npmInfo.trim();
|
|
292
292
|
}
|
|
293
293
|
catch {
|
|
@@ -319,8 +319,8 @@ async function checkVersionFreshness() {
|
|
|
319
319
|
(latest.major === current.major && latest.minor === current.minor && latest.patch === current.patch && latest.prerelease > current.prerelease));
|
|
320
320
|
if (isOutdated) {
|
|
321
321
|
const fix = isNpx
|
|
322
|
-
? 'rm -rf ~/.npm/_npx/* && npx @
|
|
323
|
-
: 'npm update @
|
|
322
|
+
? 'rm -rf ~/.npm/_npx/* && npx @odd-flow/cli@latest'
|
|
323
|
+
: 'npm update @odd-flow/cli';
|
|
324
324
|
return {
|
|
325
325
|
name: 'Version Freshness',
|
|
326
326
|
status: 'warn',
|
|
@@ -462,11 +462,11 @@ export const doctorCommand = {
|
|
|
462
462
|
}
|
|
463
463
|
],
|
|
464
464
|
examples: [
|
|
465
|
-
{ command: '
|
|
466
|
-
{ command: '
|
|
467
|
-
{ command: '
|
|
468
|
-
{ command: '
|
|
469
|
-
{ command: '
|
|
465
|
+
{ command: 'odd-flow doctor', description: 'Run full health check' },
|
|
466
|
+
{ command: 'odd-flow doctor --fix', description: 'Show fixes for issues' },
|
|
467
|
+
{ command: 'odd-flow doctor --install', description: 'Auto-install missing dependencies' },
|
|
468
|
+
{ command: 'odd-flow doctor -c version', description: 'Check for stale npx cache' },
|
|
469
|
+
{ command: 'odd-flow doctor -c claude', description: 'Check Claude Code CLI only' }
|
|
470
470
|
],
|
|
471
471
|
action: async (ctx) => {
|
|
472
472
|
const showFix = ctx.flags.fix;
|