oh-my-codex 0.15.0 → 0.15.2
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/Cargo.lock +5 -5
- package/Cargo.toml +1 -1
- package/README.md +36 -5
- package/crates/omx-explore/src/main.rs +222 -12
- package/dist/agents/__tests__/native-config.test.js +40 -0
- package/dist/agents/__tests__/native-config.test.js.map +1 -1
- package/dist/agents/native-config.d.ts +1 -0
- package/dist/agents/native-config.d.ts.map +1 -1
- package/dist/agents/native-config.js +6 -1
- package/dist/agents/native-config.js.map +1 -1
- package/dist/agents/policy.d.ts +1 -0
- package/dist/agents/policy.d.ts.map +1 -1
- package/dist/agents/policy.js +4 -0
- package/dist/agents/policy.js.map +1 -1
- package/dist/cli/__tests__/autoresearch-guided.test.js +37 -13
- package/dist/cli/__tests__/autoresearch-guided.test.js.map +1 -1
- package/dist/cli/__tests__/codex-plugin-layout.test.js +1 -1
- package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-team.test.js +46 -1
- package/dist/cli/__tests__/doctor-team.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js +225 -111
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/exec.test.js +96 -1
- package/dist/cli/__tests__/exec.test.js.map +1 -1
- package/dist/cli/__tests__/explore.test.js +15 -2
- package/dist/cli/__tests__/explore.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +292 -3
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/launch-fallback.test.js +223 -0
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/mcp-parity.test.js +86 -0
- package/dist/cli/__tests__/mcp-parity.test.js.map +1 -1
- package/dist/cli/__tests__/package-bin-contract.test.js +23 -0
- package/dist/cli/__tests__/package-bin-contract.test.js.map +1 -1
- package/dist/cli/__tests__/question.test.js +76 -11
- package/dist/cli/__tests__/question.test.js.map +1 -1
- package/dist/cli/__tests__/setup-agents-overwrite.test.js +140 -1
- package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-install-mode.test.js +310 -4
- package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
- package/dist/cli/__tests__/setup-prompts-overwrite.test.js +78 -19
- package/dist/cli/__tests__/setup-prompts-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-refresh.test.js +79 -2
- package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
- package/dist/cli/__tests__/sidecar.test.d.ts +2 -0
- package/dist/cli/__tests__/sidecar.test.d.ts.map +1 -0
- package/dist/cli/__tests__/sidecar.test.js +24 -0
- package/dist/cli/__tests__/sidecar.test.js.map +1 -0
- package/dist/cli/__tests__/team.test.js +54 -7
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/autoresearch-guided.d.ts.map +1 -1
- package/dist/cli/autoresearch-guided.js +12 -4
- package/dist/cli/autoresearch-guided.js.map +1 -1
- package/dist/cli/codex-home.d.ts +4 -6
- package/dist/cli/codex-home.d.ts.map +1 -1
- package/dist/cli/codex-home.js +9 -41
- package/dist/cli/codex-home.js.map +1 -1
- package/dist/cli/doctor.d.ts +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +509 -279
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +6 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +284 -25
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/omx.js +3 -1
- package/dist/cli/omx.js.map +1 -1
- package/dist/cli/plugin-marketplace.d.ts +13 -0
- package/dist/cli/plugin-marketplace.d.ts.map +1 -0
- package/dist/cli/plugin-marketplace.js +77 -0
- package/dist/cli/plugin-marketplace.js.map +1 -0
- package/dist/cli/question.d.ts +1 -1
- package/dist/cli/question.d.ts.map +1 -1
- package/dist/cli/question.js +26 -12
- package/dist/cli/question.js.map +1 -1
- package/dist/cli/setup-preferences.d.ts +20 -0
- package/dist/cli/setup-preferences.d.ts.map +1 -0
- package/dist/cli/setup-preferences.js +71 -0
- package/dist/cli/setup-preferences.js.map +1 -0
- package/dist/cli/setup.d.ts +7 -5
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +271 -152
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/team.d.ts +1 -0
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +70 -15
- package/dist/cli/team.js.map +1 -1
- package/dist/config/__tests__/generator-idempotent.test.js +100 -3
- package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
- package/dist/config/__tests__/generator-notify.test.js +6 -5
- package/dist/config/__tests__/generator-notify.test.js.map +1 -1
- package/dist/config/__tests__/generator-status-line-presets.test.d.ts +2 -0
- package/dist/config/__tests__/generator-status-line-presets.test.d.ts.map +1 -0
- package/dist/config/__tests__/generator-status-line-presets.test.js +203 -0
- package/dist/config/__tests__/generator-status-line-presets.test.js.map +1 -0
- package/dist/config/__tests__/models.test.js +23 -1
- package/dist/config/__tests__/models.test.js.map +1 -1
- package/dist/config/generator.d.ts +9 -1
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +184 -16
- package/dist/config/generator.js.map +1 -1
- package/dist/config/models.d.ts +5 -1
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +12 -2
- package/dist/config/models.js.map +1 -1
- package/dist/exec/followup.d.ts +44 -0
- package/dist/exec/followup.d.ts.map +1 -0
- package/dist/exec/followup.js +349 -0
- package/dist/exec/followup.js.map +1 -0
- package/dist/hooks/__tests__/autopilot-skill-contract.test.d.ts +2 -0
- package/dist/hooks/__tests__/autopilot-skill-contract.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js +37 -0
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js.map +1 -0
- package/dist/hooks/__tests__/codebase-map.test.js +63 -1
- package/dist/hooks/__tests__/codebase-map.test.js.map +1 -1
- package/dist/hooks/__tests__/consensus-execution-handoff.test.d.ts +1 -1
- package/dist/hooks/__tests__/consensus-execution-handoff.test.js +5 -5
- package/dist/hooks/__tests__/consensus-execution-handoff.test.js.map +1 -1
- package/dist/hooks/__tests__/deep-interview-contract.test.js +12 -9
- package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +25 -18
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js +23 -2
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +45 -2
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js +17 -0
- package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-managed-tmux.test.js +121 -0
- package/dist/hooks/__tests__/notify-hook-managed-tmux.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-regression-205.test.js +4 -4
- package/dist/hooks/__tests__/notify-hook-regression-205.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js +103 -0
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js +2 -2
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js +27 -13
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-worker-fail-closed.test.d.ts +2 -0
- package/dist/hooks/__tests__/notify-hook-team-worker-fail-closed.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/notify-hook-team-worker-fail-closed.test.js +35 -0
- package/dist/hooks/__tests__/notify-hook-team-worker-fail-closed.test.js.map +1 -0
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js +215 -0
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js +70 -3
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js.map +1 -1
- package/dist/hooks/__tests__/pre-context-gate-skills.test.js +5 -0
- package/dist/hooks/__tests__/pre-context-gate-skills.test.js.map +1 -1
- package/dist/hooks/__tests__/prompt-guidance-fragments.test.js +3 -2
- package/dist/hooks/__tests__/prompt-guidance-fragments.test.js.map +1 -1
- package/dist/hooks/__tests__/prompt-guidance-wave-two.test.js +9 -0
- package/dist/hooks/__tests__/prompt-guidance-wave-two.test.js.map +1 -1
- package/dist/hooks/__tests__/prompt-refactor-contract.test.d.ts +2 -0
- package/dist/hooks/__tests__/prompt-refactor-contract.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/prompt-refactor-contract.test.js +22 -0
- package/dist/hooks/__tests__/prompt-refactor-contract.test.js.map +1 -0
- package/dist/hooks/codebase-map.d.ts.map +1 -1
- package/dist/hooks/codebase-map.js +83 -6
- package/dist/hooks/codebase-map.js.map +1 -1
- package/dist/hooks/keyword-detector.d.ts +1 -1
- package/dist/hooks/keyword-detector.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.js +35 -4
- package/dist/hooks/keyword-detector.js.map +1 -1
- package/dist/hooks/prompt-guidance-contract.d.ts +6 -0
- package/dist/hooks/prompt-guidance-contract.d.ts.map +1 -1
- package/dist/hooks/prompt-guidance-contract.js +117 -13
- package/dist/hooks/prompt-guidance-contract.js.map +1 -1
- package/dist/hooks/session.d.ts +2 -0
- package/dist/hooks/session.d.ts.map +1 -1
- package/dist/hooks/session.js +6 -0
- package/dist/hooks/session.js.map +1 -1
- package/dist/hud/__tests__/index.test.js +4 -4
- package/dist/hud/__tests__/index.test.js.map +1 -1
- package/dist/hud/__tests__/state.test.js +4 -0
- package/dist/hud/__tests__/state.test.js.map +1 -1
- package/dist/hud/__tests__/types.test.js +27 -0
- package/dist/hud/__tests__/types.test.js.map +1 -1
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +8 -0
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/types.d.ts +9 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js +3 -0
- package/dist/hud/types.js.map +1 -1
- package/dist/mcp/__tests__/bootstrap.test.js +23 -5
- package/dist/mcp/__tests__/bootstrap.test.js.map +1 -1
- package/dist/mcp/__tests__/server-lifecycle.test.js +50 -7
- package/dist/mcp/__tests__/server-lifecycle.test.js.map +1 -1
- package/dist/mcp/__tests__/state-server.test.js +70 -12
- package/dist/mcp/__tests__/state-server.test.js.map +1 -1
- package/dist/mcp/bootstrap.d.ts +10 -1
- package/dist/mcp/bootstrap.d.ts.map +1 -1
- package/dist/mcp/bootstrap.js +71 -26
- package/dist/mcp/bootstrap.js.map +1 -1
- package/dist/mcp/state-server.d.ts +5 -11
- package/dist/mcp/state-server.d.ts.map +1 -1
- package/dist/mcp/state-server.js +16 -432
- package/dist/mcp/state-server.js.map +1 -1
- package/dist/modes/__tests__/base-autoresearch-contract.test.js +1 -1
- package/dist/modes/__tests__/base-autoresearch-contract.test.js.map +1 -1
- package/dist/pipeline/__tests__/orchestrator.test.js +89 -5
- package/dist/pipeline/__tests__/orchestrator.test.js.map +1 -1
- package/dist/pipeline/__tests__/stages.test.js +98 -1
- package/dist/pipeline/__tests__/stages.test.js.map +1 -1
- package/dist/pipeline/index.d.ts +5 -3
- package/dist/pipeline/index.d.ts.map +1 -1
- package/dist/pipeline/index.js +4 -3
- package/dist/pipeline/index.js.map +1 -1
- package/dist/pipeline/orchestrator.d.ts +7 -6
- package/dist/pipeline/orchestrator.d.ts.map +1 -1
- package/dist/pipeline/orchestrator.js +90 -11
- package/dist/pipeline/orchestrator.js.map +1 -1
- package/dist/pipeline/review-verdict.d.ts +3 -0
- package/dist/pipeline/review-verdict.d.ts.map +1 -0
- package/dist/pipeline/review-verdict.js +14 -0
- package/dist/pipeline/review-verdict.js.map +1 -0
- package/dist/pipeline/stages/code-review.d.ts +33 -0
- package/dist/pipeline/stages/code-review.d.ts.map +1 -0
- package/dist/pipeline/stages/code-review.js +51 -0
- package/dist/pipeline/stages/code-review.js.map +1 -0
- package/dist/pipeline/stages/ralph-verify.d.ts +12 -2
- package/dist/pipeline/stages/ralph-verify.d.ts.map +1 -1
- package/dist/pipeline/stages/ralph-verify.js +24 -6
- package/dist/pipeline/stages/ralph-verify.js.map +1 -1
- package/dist/pipeline/stages/ralplan.d.ts +1 -1
- package/dist/pipeline/stages/ralplan.d.ts.map +1 -1
- package/dist/pipeline/stages/ralplan.js +21 -1
- package/dist/pipeline/stages/ralplan.js.map +1 -1
- package/dist/pipeline/types.d.ts +14 -7
- package/dist/pipeline/types.d.ts.map +1 -1
- package/dist/pipeline/types.js +2 -2
- package/dist/planning/__tests__/artifacts.test.js +152 -1
- package/dist/planning/__tests__/artifacts.test.js.map +1 -1
- package/dist/planning/artifacts.d.ts +9 -0
- package/dist/planning/artifacts.d.ts.map +1 -1
- package/dist/planning/artifacts.js +60 -1
- package/dist/planning/artifacts.js.map +1 -1
- package/dist/question/__tests__/client.test.js +23 -3
- package/dist/question/__tests__/client.test.js.map +1 -1
- package/dist/question/__tests__/renderer.test.js +148 -37
- package/dist/question/__tests__/renderer.test.js.map +1 -1
- package/dist/question/__tests__/types.test.js +21 -0
- package/dist/question/__tests__/types.test.js.map +1 -1
- package/dist/question/__tests__/ui.test.js +155 -7
- package/dist/question/__tests__/ui.test.js.map +1 -1
- package/dist/question/client.d.ts +14 -4
- package/dist/question/client.d.ts.map +1 -1
- package/dist/question/client.js.map +1 -1
- package/dist/question/renderer.d.ts +11 -1
- package/dist/question/renderer.d.ts.map +1 -1
- package/dist/question/renderer.js +102 -7
- package/dist/question/renderer.js.map +1 -1
- package/dist/question/state.d.ts +2 -2
- package/dist/question/state.d.ts.map +1 -1
- package/dist/question/state.js +26 -17
- package/dist/question/state.js.map +1 -1
- package/dist/question/types.d.ts +25 -1
- package/dist/question/types.d.ts.map +1 -1
- package/dist/question/types.js +48 -13
- package/dist/question/types.js.map +1 -1
- package/dist/question/ui.d.ts +15 -2
- package/dist/question/ui.d.ts.map +1 -1
- package/dist/question/ui.js +268 -162
- package/dist/question/ui.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +415 -94
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/generate-release-body.test.js +36 -0
- package/dist/scripts/__tests__/generate-release-body.test.js.map +1 -1
- package/dist/scripts/__tests__/prompt-inventory.test.d.ts +2 -0
- package/dist/scripts/__tests__/prompt-inventory.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/prompt-inventory.test.js +56 -0
- package/dist/scripts/__tests__/prompt-inventory.test.js.map +1 -0
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +232 -54
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/codex-native-pre-post.d.ts.map +1 -1
- package/dist/scripts/codex-native-pre-post.js +12 -9
- package/dist/scripts/codex-native-pre-post.js.map +1 -1
- package/dist/scripts/generate-release-body.d.ts.map +1 -1
- package/dist/scripts/generate-release-body.js +12 -3
- package/dist/scripts/generate-release-body.js.map +1 -1
- package/dist/scripts/notify-hook/__tests__/team-worker-posttooluse.test.d.ts +2 -0
- package/dist/scripts/notify-hook/__tests__/team-worker-posttooluse.test.d.ts.map +1 -0
- package/dist/scripts/notify-hook/__tests__/team-worker-posttooluse.test.js +153 -0
- package/dist/scripts/notify-hook/__tests__/team-worker-posttooluse.test.js.map +1 -0
- package/dist/scripts/notify-hook/managed-tmux.d.ts +4 -2
- package/dist/scripts/notify-hook/managed-tmux.d.ts.map +1 -1
- package/dist/scripts/notify-hook/managed-tmux.js +188 -6
- package/dist/scripts/notify-hook/managed-tmux.js.map +1 -1
- package/dist/scripts/notify-hook/process-runner.d.ts.map +1 -1
- package/dist/scripts/notify-hook/process-runner.js +7 -3
- package/dist/scripts/notify-hook/process-runner.js.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.js +96 -11
- package/dist/scripts/notify-hook/team-dispatch.js.map +1 -1
- package/dist/scripts/notify-hook/team-tmux-guard.js +3 -3
- package/dist/scripts/notify-hook/team-worker-posttooluse.d.ts +34 -0
- package/dist/scripts/notify-hook/team-worker-posttooluse.d.ts.map +1 -0
- package/dist/scripts/notify-hook/team-worker-posttooluse.js +434 -0
- package/dist/scripts/notify-hook/team-worker-posttooluse.js.map +1 -0
- package/dist/scripts/notify-hook/team-worker.d.ts +1 -1
- package/dist/scripts/notify-hook/team-worker.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-worker.js +3 -43
- package/dist/scripts/notify-hook/team-worker.js.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.d.ts.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.js +25 -4
- package/dist/scripts/notify-hook/tmux-injection.js.map +1 -1
- package/dist/scripts/notify-hook.js +36 -5
- package/dist/scripts/notify-hook.js.map +1 -1
- package/dist/scripts/prompt-inventory.d.ts +29 -0
- package/dist/scripts/prompt-inventory.d.ts.map +1 -0
- package/dist/scripts/prompt-inventory.js +178 -0
- package/dist/scripts/prompt-inventory.js.map +1 -0
- package/dist/scripts/run-test-files.js +1 -0
- package/dist/scripts/run-test-files.js.map +1 -1
- package/dist/sidecar/__tests__/boundary.test.d.ts +2 -0
- package/dist/sidecar/__tests__/boundary.test.d.ts.map +1 -0
- package/dist/sidecar/__tests__/boundary.test.js +48 -0
- package/dist/sidecar/__tests__/boundary.test.js.map +1 -0
- package/dist/sidecar/__tests__/collector.test.d.ts +2 -0
- package/dist/sidecar/__tests__/collector.test.d.ts.map +1 -0
- package/dist/sidecar/__tests__/collector.test.js +162 -0
- package/dist/sidecar/__tests__/collector.test.js.map +1 -0
- package/dist/sidecar/__tests__/render.test.d.ts +2 -0
- package/dist/sidecar/__tests__/render.test.d.ts.map +1 -0
- package/dist/sidecar/__tests__/render.test.js +67 -0
- package/dist/sidecar/__tests__/render.test.js.map +1 -0
- package/dist/sidecar/__tests__/tmux.test.d.ts +2 -0
- package/dist/sidecar/__tests__/tmux.test.d.ts.map +1 -0
- package/dist/sidecar/__tests__/tmux.test.js +30 -0
- package/dist/sidecar/__tests__/tmux.test.js.map +1 -0
- package/dist/sidecar/__tests__/watch.test.d.ts +2 -0
- package/dist/sidecar/__tests__/watch.test.d.ts.map +1 -0
- package/dist/sidecar/__tests__/watch.test.js +42 -0
- package/dist/sidecar/__tests__/watch.test.js.map +1 -0
- package/dist/sidecar/collector.d.ts +4 -0
- package/dist/sidecar/collector.d.ts.map +1 -0
- package/dist/sidecar/collector.js +377 -0
- package/dist/sidecar/collector.js.map +1 -0
- package/dist/sidecar/index.d.ts +25 -0
- package/dist/sidecar/index.d.ts.map +1 -0
- package/dist/sidecar/index.js +165 -0
- package/dist/sidecar/index.js.map +1 -0
- package/dist/sidecar/render.d.ts +3 -0
- package/dist/sidecar/render.d.ts.map +1 -0
- package/dist/sidecar/render.js +72 -0
- package/dist/sidecar/render.js.map +1 -0
- package/dist/sidecar/tmux.d.ts +13 -0
- package/dist/sidecar/tmux.d.ts.map +1 -0
- package/dist/sidecar/tmux.js +44 -0
- package/dist/sidecar/tmux.js.map +1 -0
- package/dist/sidecar/types.d.ts +125 -0
- package/dist/sidecar/types.d.ts.map +1 -0
- package/dist/sidecar/types.js +2 -0
- package/dist/sidecar/types.js.map +1 -0
- package/dist/state/__tests__/operations.test.js +50 -22
- package/dist/state/__tests__/operations.test.js.map +1 -1
- package/dist/state/__tests__/workflow-transition.test.js +9 -1
- package/dist/state/__tests__/workflow-transition.test.js.map +1 -1
- package/dist/state/operations.d.ts +1 -1
- package/dist/state/operations.d.ts.map +1 -1
- package/dist/state/operations.js +19 -7
- package/dist/state/operations.js.map +1 -1
- package/dist/state/workflow-transition.d.ts.map +1 -1
- package/dist/state/workflow-transition.js +1 -0
- package/dist/state/workflow-transition.js.map +1 -1
- package/dist/team/__tests__/commit-hygiene.test.d.ts +2 -0
- package/dist/team/__tests__/commit-hygiene.test.d.ts.map +1 -0
- package/dist/team/__tests__/commit-hygiene.test.js +93 -0
- package/dist/team/__tests__/commit-hygiene.test.js.map +1 -0
- package/dist/team/__tests__/delegation-policy.test.d.ts +2 -0
- package/dist/team/__tests__/delegation-policy.test.d.ts.map +1 -0
- package/dist/team/__tests__/delegation-policy.test.js +69 -0
- package/dist/team/__tests__/delegation-policy.test.js.map +1 -0
- package/dist/team/__tests__/events.test.js +54 -4
- package/dist/team/__tests__/events.test.js.map +1 -1
- package/dist/team/__tests__/hook-primary-e2e-contract.test.d.ts +2 -0
- package/dist/team/__tests__/hook-primary-e2e-contract.test.d.ts.map +1 -0
- package/dist/team/__tests__/hook-primary-e2e-contract.test.js +78 -0
- package/dist/team/__tests__/hook-primary-e2e-contract.test.js.map +1 -0
- package/dist/team/__tests__/model-contract.test.js +16 -0
- package/dist/team/__tests__/model-contract.test.js.map +1 -1
- package/dist/team/__tests__/repo-aware-decomposition.test.d.ts +2 -0
- package/dist/team/__tests__/repo-aware-decomposition.test.d.ts.map +1 -0
- package/dist/team/__tests__/repo-aware-decomposition.test.js +95 -0
- package/dist/team/__tests__/repo-aware-decomposition.test.js.map +1 -0
- package/dist/team/__tests__/runtime.test.js +623 -14
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/state-root.test.js +177 -1
- package/dist/team/__tests__/state-root.test.js.map +1 -1
- package/dist/team/__tests__/state.test.js +110 -0
- package/dist/team/__tests__/state.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +399 -2
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.js +94 -0
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/commit-hygiene.d.ts +22 -3
- package/dist/team/commit-hygiene.d.ts.map +1 -1
- package/dist/team/commit-hygiene.js +134 -2
- package/dist/team/commit-hygiene.js.map +1 -1
- package/dist/team/contracts.d.ts +1 -1
- package/dist/team/contracts.d.ts.map +1 -1
- package/dist/team/contracts.js +2 -0
- package/dist/team/contracts.js.map +1 -1
- package/dist/team/dag-schema.d.ts +38 -0
- package/dist/team/dag-schema.d.ts.map +1 -0
- package/dist/team/dag-schema.js +221 -0
- package/dist/team/dag-schema.js.map +1 -0
- package/dist/team/delegation-policy.d.ts +3 -0
- package/dist/team/delegation-policy.d.ts.map +1 -0
- package/dist/team/delegation-policy.js +82 -0
- package/dist/team/delegation-policy.js.map +1 -0
- package/dist/team/model-contract.d.ts +3 -1
- package/dist/team/model-contract.d.ts.map +1 -1
- package/dist/team/model-contract.js +44 -5
- package/dist/team/model-contract.js.map +1 -1
- package/dist/team/repo-aware-decomposition.d.ts +60 -0
- package/dist/team/repo-aware-decomposition.d.ts.map +1 -0
- package/dist/team/repo-aware-decomposition.js +229 -0
- package/dist/team/repo-aware-decomposition.js.map +1 -0
- package/dist/team/runtime.d.ts +27 -0
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +172 -52
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/state/tasks.d.ts.map +1 -1
- package/dist/team/state/tasks.js +33 -0
- package/dist/team/state/tasks.js.map +1 -1
- package/dist/team/state/types.d.ts +23 -1
- package/dist/team/state/types.d.ts.map +1 -1
- package/dist/team/state/types.js.map +1 -1
- package/dist/team/state-root.d.ts +35 -0
- package/dist/team/state-root.d.ts.map +1 -1
- package/dist/team/state-root.js +281 -1
- package/dist/team/state-root.js.map +1 -1
- package/dist/team/state.d.ts +27 -1
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +6 -0
- package/dist/team/state.js.map +1 -1
- package/dist/team/tmux-session.d.ts +1 -0
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +105 -6
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts +3 -0
- package/dist/team/worker-bootstrap.d.ts.map +1 -1
- package/dist/team/worker-bootstrap.js +77 -4
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/dist/utils/agents-md.d.ts +3 -0
- package/dist/utils/agents-md.d.ts.map +1 -1
- package/dist/utils/agents-md.js +25 -0
- package/dist/utils/agents-md.js.map +1 -1
- package/package.json +3 -2
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +2 -2
- package/plugins/oh-my-codex/skills/ai-slop-cleaner/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/analyze/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/autopilot/SKILL.md +134 -205
- package/plugins/oh-my-codex/skills/code-review/SKILL.md +4 -4
- package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +14 -7
- package/plugins/oh-my-codex/skills/doctor/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/help/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/omx-setup/SKILL.md +41 -10
- package/plugins/oh-my-codex/skills/plan/SKILL.md +12 -14
- package/plugins/oh-my-codex/skills/ralph/SKILL.md +2 -4
- package/plugins/oh-my-codex/skills/ralplan/SKILL.md +5 -9
- package/plugins/oh-my-codex/skills/security-review/SKILL.md +4 -4
- package/plugins/oh-my-codex/skills/team/SKILL.md +2 -5
- package/plugins/oh-my-codex/skills/ultraqa/SKILL.md +2 -5
- package/plugins/oh-my-codex/skills/ultrawork/SKILL.md +2 -3
- package/prompts/analyst.md +2 -2
- package/prompts/api-reviewer.md +2 -2
- package/prompts/architect.md +2 -2
- package/prompts/build-fixer.md +2 -2
- package/prompts/code-reviewer.md +15 -5
- package/prompts/code-simplifier.md +1 -1
- package/prompts/critic.md +35 -83
- package/prompts/debugger.md +2 -2
- package/prompts/dependency-expert.md +2 -2
- package/prompts/designer.md +2 -2
- package/prompts/executor.md +40 -114
- package/prompts/explore-harness.md +1 -1
- package/prompts/explore.md +37 -90
- package/prompts/git-master.md +2 -2
- package/prompts/information-architect.md +1 -1
- package/prompts/performance-reviewer.md +2 -2
- package/prompts/planner.md +35 -62
- package/prompts/product-analyst.md +2 -2
- package/prompts/product-manager.md +2 -2
- package/prompts/qa-tester.md +2 -2
- package/prompts/quality-reviewer.md +2 -2
- package/prompts/quality-strategist.md +2 -2
- package/prompts/researcher.md +46 -78
- package/prompts/security-reviewer.md +2 -2
- package/prompts/sisyphus-lite.md +2 -2
- package/prompts/style-reviewer.md +2 -2
- package/prompts/team-executor.md +1 -1
- package/prompts/test-engineer.md +2 -2
- package/prompts/ux-researcher.md +2 -2
- package/prompts/verifier.md +29 -34
- package/prompts/vision.md +2 -2
- package/prompts/writer.md +2 -2
- package/skills/ai-slop-cleaner/SKILL.md +1 -1
- package/skills/analyze/SKILL.md +1 -1
- package/skills/autopilot/SKILL.md +134 -205
- package/skills/build-fix/SKILL.md +4 -4
- package/skills/code-review/SKILL.md +4 -4
- package/skills/deep-interview/SKILL.md +14 -7
- package/skills/doctor/SKILL.md +1 -1
- package/skills/help/SKILL.md +1 -1
- package/skills/omx-setup/SKILL.md +41 -10
- package/skills/plan/SKILL.md +12 -14
- package/skills/ralph/SKILL.md +2 -4
- package/skills/ralplan/SKILL.md +5 -9
- package/skills/security-review/SKILL.md +4 -4
- package/skills/team/SKILL.md +2 -5
- package/skills/ultraqa/SKILL.md +2 -5
- package/skills/ultrawork/SKILL.md +2 -3
- package/src/scripts/__tests__/codex-native-hook.test.ts +502 -94
- package/src/scripts/__tests__/generate-release-body.test.ts +41 -0
- package/src/scripts/__tests__/prompt-inventory.test.ts +64 -0
- package/src/scripts/codex-native-hook.ts +293 -61
- package/src/scripts/codex-native-pre-post.ts +10 -8
- package/src/scripts/generate-release-body.ts +13 -2
- package/src/scripts/notify-hook/__tests__/team-worker-posttooluse.test.ts +180 -0
- package/src/scripts/notify-hook/managed-tmux.ts +196 -9
- package/src/scripts/notify-hook/process-runner.ts +7 -3
- package/src/scripts/notify-hook/team-dispatch.ts +103 -11
- package/src/scripts/notify-hook/team-tmux-guard.ts +3 -3
- package/src/scripts/notify-hook/team-worker-posttooluse.ts +536 -0
- package/src/scripts/notify-hook/team-worker.ts +4 -48
- package/src/scripts/notify-hook/tmux-injection.ts +24 -6
- package/src/scripts/notify-hook.ts +36 -5
- package/src/scripts/prompt-inventory.ts +218 -0
- package/src/scripts/run-test-files.ts +1 -0
- package/templates/AGENTS.md +34 -95
|
@@ -1,234 +1,163 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: autopilot
|
|
3
|
-
description:
|
|
3
|
+
description: "[OMX] Strict autonomous loop: $ralplan -> $ralph -> $code-review"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<Purpose>
|
|
7
|
-
Autopilot
|
|
7
|
+
Autopilot is the strict autonomous delivery loop for non-trivial work. Its primary contract is exactly:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
$ralplan -> $ralph -> $code-review
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
If `$code-review` is not clean, Autopilot returns to `$ralplan` with the review findings as the next planning input, then continues again through `$ralph` and `$code-review` until the review is clean or a hard blocker is reported.
|
|
8
14
|
</Purpose>
|
|
9
15
|
|
|
10
16
|
<Use_When>
|
|
11
|
-
- User wants
|
|
12
|
-
- User says "autopilot", "auto pilot", "autonomous", "build me", "create me", "make me", "full auto", "handle it all", or "I want a/an..."
|
|
13
|
-
- Task
|
|
14
|
-
- User wants hands-off execution and is willing to let the system run to completion
|
|
17
|
+
- User wants hands-off execution from a concrete idea, issue, PRD, or requirements artifact to reviewed code
|
|
18
|
+
- User says `$autopilot`, "autopilot", "auto pilot", "autonomous", "build me", "create me", "make me", "full auto", "handle it all", or "I want a/an..."
|
|
19
|
+
- Task needs planning, implementation, verification, and code review with automatic follow-up when review is not clean
|
|
15
20
|
</Use_When>
|
|
16
21
|
|
|
17
22
|
<Do_Not_Use_When>
|
|
18
|
-
- User wants to explore options or brainstorm -- use
|
|
23
|
+
- User wants to explore options or brainstorm -- use `$plan` / `$ralplan`
|
|
19
24
|
- User says "just explain", "draft only", or "what would you suggest" -- respond conversationally
|
|
20
|
-
- User wants a single focused code change -- use
|
|
21
|
-
- User wants
|
|
22
|
-
- Task is a quick fix or small bug -- use direct executor delegation
|
|
25
|
+
- User wants a single focused code change -- use `$ralph` or direct executor work
|
|
26
|
+
- User wants only review/critique of existing code -- use `$code-review`
|
|
23
27
|
</Do_Not_Use_When>
|
|
24
28
|
|
|
25
|
-
<
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
<Strict_Loop_Contract>
|
|
30
|
+
Autopilot must not run a separate broad expansion/planning/execution/QA/validation lifecycle as its primary behavior. It delegates those concerns to the three canonical workflow phases below:
|
|
31
|
+
|
|
32
|
+
1. **Phase `ralplan`** — consensus planning gate
|
|
33
|
+
- Ground the task with pre-context intake.
|
|
34
|
+
- Run or resume `$ralplan` to produce/update PRD and test-spec artifacts.
|
|
35
|
+
- When returning from a non-clean review, include `return_to_ralplan_reason` and the review findings as first-class planning input.
|
|
36
|
+
- Required handoff artifact: an approved plan/test spec suitable for `$ralph`.
|
|
37
|
+
|
|
38
|
+
2. **Phase `ralph`** — implementation + verification loop
|
|
39
|
+
- Run `$ralph` from the approved ralplan artifacts.
|
|
40
|
+
- Ralph owns implementation, tests, build/lint/typecheck evidence, deslop where applicable, and architect verification.
|
|
41
|
+
- Required handoff artifact: implementation evidence and changed-file summary suitable for `$code-review`.
|
|
42
|
+
|
|
43
|
+
3. **Phase `code-review`** — merge-readiness gate
|
|
44
|
+
- Run `$code-review` on the diff/artifacts produced by `$ralph`.
|
|
45
|
+
- A clean review means final recommendation `APPROVE` with architectural status `CLEAR`.
|
|
46
|
+
- `COMMENT`, `REQUEST CHANGES`, any architectural `WATCH`/`BLOCK`, or any unresolved finding is not clean.
|
|
47
|
+
- If not clean, increment the review cycle, persist `review_verdict`, set `return_to_ralplan_reason`, and transition back to Phase `ralplan`.
|
|
48
|
+
|
|
49
|
+
The only normal terminal state is `complete` after a clean code review. Cancellation, blocked credentials, unrecoverable repeated failures, or explicit user stop may terminate earlier with preserved state.
|
|
50
|
+
</Strict_Loop_Contract>
|
|
51
|
+
|
|
52
|
+
<Pre-context Intake>
|
|
53
|
+
Before Phase `ralplan` starts or resumes:
|
|
54
|
+
1. Derive a task slug from the request.
|
|
55
|
+
2. Reuse the latest relevant `.omx/context/{slug}-*.md` snapshot when available.
|
|
56
|
+
3. If none exists, create `.omx/context/{slug}-{timestamp}.md` (UTC `YYYYMMDDTHHMMSSZ`) with:
|
|
57
|
+
- task statement
|
|
58
|
+
- desired outcome
|
|
59
|
+
- known facts/evidence
|
|
60
|
+
- constraints
|
|
61
|
+
- unknowns/open questions
|
|
62
|
+
- likely codebase touchpoints
|
|
63
|
+
4. If ambiguity remains high, run `explore` first for brownfield facts, then run the Socratic `$deep-interview --quick <task>` before `$ralplan`.
|
|
64
|
+
5. Carry the snapshot path in Autopilot state and all handoff artifacts.
|
|
65
|
+
</Pre-context Intake>
|
|
28
66
|
|
|
29
67
|
<Execution_Policy>
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
- Do not enter expansion/planning/execution-heavy phases until pre-context grounding exists; if fast execution is forced, proceed only with explicit risk notes
|
|
38
|
-
- Default to concise, evidence-dense progress and completion reporting unless the user or risk level requires more detail
|
|
39
|
-
- Treat newer user task updates as local overrides for the active workflow branch while preserving earlier non-conflicting constraints
|
|
40
|
-
- If correctness depends on additional inspection, retrieval, execution, or verification, keep using the relevant tools until the workflow is grounded
|
|
41
|
-
- Continue through clear, low-risk, reversible next steps automatically; ask only when the next step is materially branching, destructive, or preference-dependent
|
|
68
|
+
- Always execute phases in order: `ralplan`, then `ralph`, then `code-review`.
|
|
69
|
+
- Never skip directly from vague/freeform expansion to implementation; unclear input must be clarified or planned through `$ralplan`.
|
|
70
|
+
- A non-clean `$code-review` always returns to `$ralplan`; do not patch findings ad hoc outside the loop.
|
|
71
|
+
- Each phase must write/update Autopilot state before handing off.
|
|
72
|
+
- Use existing hooks, `.omx/state`, `$ralplan`, `$ralph`, `$code-review`, and pipeline primitives; do not invent a separate execution framework.
|
|
73
|
+
- Continue automatically through safe reversible phase transitions. Ask only for destructive, credential-gated, or materially preference-dependent branches.
|
|
74
|
+
- Apply the shared workflow guidance pattern: outcome-first framing, concise visible updates for multi-step execution, local overrides for the active workflow branch, validation proportional to risk, explicit stop rules, and automatic continuation for safe reversible steps. Ask only for material, destructive, credentialed, external-production, or preference-dependent branches.
|
|
42
75
|
</Execution_Policy>
|
|
43
76
|
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
- Output: `.omx/plans/autopilot-impl.md`
|
|
69
|
-
|
|
70
|
-
3. **Phase 2 - Execution**: Implement the plan using Ralph + Ultrawork
|
|
71
|
-
- LOW-tier executor/search roles: Simple tasks
|
|
72
|
-
- STANDARD-tier executor roles: Standard tasks
|
|
73
|
-
- THOROUGH-tier executor/architect roles: Complex tasks
|
|
74
|
-
- Run independent tasks in parallel
|
|
75
|
-
|
|
76
|
-
4. **Phase 3 - QA**: Cycle until all tests pass (UltraQA mode)
|
|
77
|
-
- Build, lint, test, fix failures
|
|
78
|
-
- Repeat up to 5 cycles
|
|
79
|
-
- Stop early if the same error repeats 3 times (indicates a fundamental issue)
|
|
80
|
-
|
|
81
|
-
5. **Phase 4 - Validation**: Multi-perspective review in parallel
|
|
82
|
-
- Architect: Functional completeness
|
|
83
|
-
- Security-reviewer: Vulnerability check
|
|
84
|
-
- Code-reviewer: Quality review
|
|
85
|
-
- All must approve; fix and re-validate on rejection
|
|
86
|
-
|
|
87
|
-
6. **Phase 5 - Cleanup**: Clear all mode state via OMX MCP tools on successful completion
|
|
88
|
-
- `state_clear({mode: "autopilot"})`
|
|
89
|
-
- `state_clear({mode: "ralph"})`
|
|
90
|
-
- `state_clear({mode: "ultrawork"})`
|
|
91
|
-
- `state_clear({mode: "ultraqa"})`
|
|
92
|
-
- Or run `/cancel` for clean exit
|
|
93
|
-
</Steps>
|
|
94
|
-
|
|
95
|
-
<Tool_Usage>
|
|
96
|
-
- Before first MCP tool use, call `ToolSearch("mcp")` to discover deferred MCP tools
|
|
97
|
-
- Use `ask_codex` with `agent_role: "architect"` for Phase 4 architecture validation
|
|
98
|
-
- Use `ask_codex` with `agent_role: "security-reviewer"` for Phase 4 security review
|
|
99
|
-
- Use `ask_codex` with `agent_role: "code-reviewer"` for Phase 4 quality review
|
|
100
|
-
- Agents form their own analysis first, then consult Codex for cross-validation
|
|
101
|
-
- If ToolSearch finds no MCP tools or Codex is unavailable, proceed without it -- never block on external tools
|
|
102
|
-
</Tool_Usage>
|
|
103
|
-
|
|
104
|
-
## State Management
|
|
105
|
-
|
|
106
|
-
Use `omx_state` MCP tools for autopilot lifecycle state.
|
|
107
|
-
|
|
108
|
-
- **On start**:
|
|
109
|
-
`state_write({mode: "autopilot", active: true, current_phase: "expansion", started_at: "<now>", state: {context_snapshot_path: "<snapshot-path>"}})`
|
|
110
|
-
- **On phase transitions**:
|
|
111
|
-
`state_write({mode: "autopilot", current_phase: "planning"})`
|
|
112
|
-
`state_write({mode: "autopilot", current_phase: "execution"})`
|
|
113
|
-
`state_write({mode: "autopilot", current_phase: "qa"})`
|
|
114
|
-
`state_write({mode: "autopilot", current_phase: "validation"})`
|
|
115
|
-
- **On completion**:
|
|
116
|
-
`state_write({mode: "autopilot", active: false, current_phase: "complete", completed_at: "<now>"})`
|
|
117
|
-
- **On cancellation/cleanup**:
|
|
118
|
-
run `$cancel` (which should call `state_clear(mode="autopilot")`)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
## Scenario Examples
|
|
122
|
-
|
|
123
|
-
**Good:** The user says `continue` after the workflow already has a clear next step. Continue the current branch of work instead of restarting or re-asking the same question.
|
|
124
|
-
|
|
125
|
-
**Good:** The user changes only the output shape or downstream delivery step (for example `make a PR`). Preserve earlier non-conflicting workflow constraints and apply the update locally.
|
|
126
|
-
|
|
127
|
-
**Bad:** The user says `continue`, and the workflow restarts discovery or stops before the missing verification/evidence is gathered.
|
|
128
|
-
|
|
129
|
-
<Examples>
|
|
130
|
-
<Good>
|
|
131
|
-
User: "autopilot A REST API for a bookstore inventory with CRUD operations using TypeScript"
|
|
132
|
-
Why good: Specific domain (bookstore), clear features (CRUD), technology constraint (TypeScript). Autopilot has enough context to expand into a full spec.
|
|
133
|
-
</Good>
|
|
134
|
-
|
|
135
|
-
<Good>
|
|
136
|
-
User: "build me a CLI tool that tracks daily habits with streak counting"
|
|
137
|
-
Why good: Clear product concept with a specific feature. The "build me" trigger activates autopilot.
|
|
138
|
-
</Good>
|
|
77
|
+
<State_Management>
|
|
78
|
+
Use `omx_state` MCP tools (or `omx state ... --json` fallback if MCP transport is unavailable) for Autopilot lifecycle state. State must be session-aware when a session id exists.
|
|
79
|
+
|
|
80
|
+
Required fields:
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"mode": "autopilot",
|
|
85
|
+
"active": true,
|
|
86
|
+
"current_phase": "ralplan",
|
|
87
|
+
"iteration": 1,
|
|
88
|
+
"review_cycle": 0,
|
|
89
|
+
"max_iterations": 10,
|
|
90
|
+
"phase_cycle": ["ralplan", "ralph", "code-review"],
|
|
91
|
+
"handoff_artifacts": {
|
|
92
|
+
"context_snapshot_path": ".omx/context/<slug>-<timestamp>.md",
|
|
93
|
+
"ralplan": null,
|
|
94
|
+
"ralph": null,
|
|
95
|
+
"code_review": null
|
|
96
|
+
},
|
|
97
|
+
"review_verdict": null,
|
|
98
|
+
"return_to_ralplan_reason": null
|
|
99
|
+
}
|
|
100
|
+
```
|
|
139
101
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
102
|
+
- **On start**: `state_write({mode:"autopilot", active:true, current_phase:"ralplan", iteration:1, review_cycle:0, state:{phase_cycle:["ralplan","ralph","code-review"], handoff_artifacts:{context_snapshot_path, ralplan:null, ralph:null, code_review:null}, review_verdict:null, return_to_ralplan_reason:null}})`
|
|
103
|
+
- **On ralplan -> ralph**: set `current_phase:"ralph"`, persist the plan/test-spec paths under `handoff_artifacts.ralplan`.
|
|
104
|
+
- **On ralph -> code-review**: set `current_phase:"code-review"`, persist implementation/test evidence under `handoff_artifacts.ralph`.
|
|
105
|
+
- **On clean review**: set `active:false`, `current_phase:"complete"`, persist `review_verdict:{recommendation:"APPROVE", architectural_status:"CLEAR", clean:true}` and `completed_at`.
|
|
106
|
+
- **On non-clean review**: increment `iteration` and `review_cycle`, set `current_phase:"ralplan"`, persist `review_verdict:{..., clean:false}`, persist `handoff_artifacts.code_review`, and set `return_to_ralplan_reason` to a concise review-driven reason.
|
|
107
|
+
- **On cancellation**: run `$cancel`; preserve progress for resume rather than deleting handoff artifacts.
|
|
108
|
+
</State_Management>
|
|
109
|
+
|
|
110
|
+
<Continuation_And_Resume>
|
|
111
|
+
When the user says `continue`, `resume`, or `keep going` while Autopilot is active, read `autopilot-state.json` and continue from `current_phase`:
|
|
112
|
+
- `ralplan`: run/update consensus planning from current handoffs and any `return_to_ralplan_reason`.
|
|
113
|
+
- `ralph`: execute the approved plan and record verification evidence.
|
|
114
|
+
- `code-review`: review the current diff and decide clean vs return-to-ralplan.
|
|
115
|
+
- `complete`: report completion evidence; do not restart.
|
|
116
|
+
|
|
117
|
+
Do not restart discovery or discard handoff artifacts on continuation.
|
|
118
|
+
</Continuation_And_Resume>
|
|
119
|
+
|
|
120
|
+
<Pipeline_Orchestrator>
|
|
121
|
+
Autopilot may be represented by the configurable pipeline orchestrator (`src/pipeline/`) when useful. The Autopilot pipeline contract is:
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
ralplan -> ralph -> code-review
|
|
125
|
+
```
|
|
144
126
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
Why bad: This is an exploration/brainstorming request. Respond conversationally or use the plan skill.
|
|
148
|
-
</Bad>
|
|
149
|
-
</Examples>
|
|
127
|
+
Pipeline state should use `current_phase` values that match the same phase names (`ralplan`, `ralph`, `code-review`, `complete`, `failed`) and should carry `iteration`, `review_cycle`, `handoff_artifacts`, `review_verdict`, and `return_to_ralplan_reason` alongside stage results.
|
|
128
|
+
</Pipeline_Orchestrator>
|
|
150
129
|
|
|
151
130
|
<Escalation_And_Stop_Conditions>
|
|
152
|
-
- Stop and report
|
|
153
|
-
- Stop and report when
|
|
154
|
-
- Stop when the user says "stop", "cancel", or "abort"
|
|
155
|
-
-
|
|
131
|
+
- Stop and report a blocker when required credentials/authority are missing.
|
|
132
|
+
- Stop and report when the same review or verification failure recurs across 3 review cycles with no meaningful new plan.
|
|
133
|
+
- Stop when the user says "stop", "cancel", or "abort" and run `$cancel`.
|
|
134
|
+
- Otherwise, continue the loop until `$code-review` is clean.
|
|
156
135
|
</Escalation_And_Stop_Conditions>
|
|
157
136
|
|
|
158
137
|
<Final_Checklist>
|
|
159
|
-
- [ ]
|
|
160
|
-
- [ ]
|
|
161
|
-
- [ ]
|
|
162
|
-
- [ ]
|
|
163
|
-
- [ ]
|
|
164
|
-
- [ ]
|
|
138
|
+
- [ ] Phase `ralplan` produced/updated approved planning artifacts
|
|
139
|
+
- [ ] Phase `ralph` implemented and verified the plan with fresh evidence
|
|
140
|
+
- [ ] Phase `code-review` returned a clean verdict (`APPROVE` + `CLEAR`)
|
|
141
|
+
- [ ] `review_verdict.clean` is true and `return_to_ralplan_reason` is null
|
|
142
|
+
- [ ] Tests/build/lint/typecheck evidence from Ralph is available in handoff artifacts
|
|
143
|
+
- [ ] Autopilot state is marked `complete` or cancellation state is preserved coherently
|
|
144
|
+
- [ ] User receives a concise summary with plan, implementation, verification, and review evidence
|
|
165
145
|
</Final_Checklist>
|
|
166
146
|
|
|
167
|
-
<
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
```toml
|
|
173
|
-
[omx.autopilot]
|
|
174
|
-
maxIterations = 10
|
|
175
|
-
maxQaCycles = 5
|
|
176
|
-
maxValidationRounds = 3
|
|
177
|
-
pauseAfterExpansion = false
|
|
178
|
-
pauseAfterPlanning = false
|
|
179
|
-
skipQa = false
|
|
180
|
-
skipValidation = false
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
## Resume
|
|
184
|
-
|
|
185
|
-
If autopilot was cancelled or failed, run `/autopilot` again to resume from where it stopped.
|
|
186
|
-
|
|
187
|
-
## Recommended Clarity Pipeline
|
|
188
|
-
|
|
189
|
-
For ambiguous requests, prefer:
|
|
190
|
-
|
|
191
|
-
```
|
|
192
|
-
deep-interview -> ralplan -> autopilot
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
- `deep-interview`: ambiguity-gated Socratic requirements
|
|
196
|
-
- `ralplan`: consensus planning (planner/architect/critic)
|
|
197
|
-
- `autopilot`: execution + QA + validation
|
|
198
|
-
|
|
199
|
-
## Best Practices for Input
|
|
200
|
-
|
|
201
|
-
1. Be specific about the domain -- "bookstore" not "store"
|
|
202
|
-
2. Mention key features -- "with CRUD", "with authentication"
|
|
203
|
-
3. Specify constraints -- "using TypeScript", "with PostgreSQL"
|
|
204
|
-
4. Let it run -- avoid interrupting unless truly needed
|
|
205
|
-
|
|
206
|
-
## Pipeline Orchestrator (v0.8+)
|
|
207
|
-
|
|
208
|
-
Autopilot can be driven by the configurable pipeline orchestrator (`src/pipeline/`), which
|
|
209
|
-
sequences stages through a uniform `PipelineStage` interface:
|
|
210
|
-
|
|
211
|
-
```
|
|
212
|
-
RALPLAN (consensus planning) -> team-exec (Codex CLI workers) -> ralph-verify (architect verification)
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
Pipeline configuration options:
|
|
216
|
-
|
|
217
|
-
```toml
|
|
218
|
-
[omx.autopilot.pipeline]
|
|
219
|
-
maxRalphIterations = 10 # Ralph verification iteration ceiling
|
|
220
|
-
workerCount = 2 # Number of Codex CLI team workers
|
|
221
|
-
agentType = "executor" # Agent type for team workers
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
The pipeline persists state via `pipeline-state.json` and supports resume from the last
|
|
225
|
-
incomplete stage. See `src/pipeline/orchestrator.ts` for the full API.
|
|
226
|
-
|
|
227
|
-
## Troubleshooting
|
|
228
|
-
|
|
229
|
-
**Stuck in a phase?** Check TODO list for blocked tasks, run `state_read({mode: "autopilot"})`, or cancel and resume.
|
|
147
|
+
<Examples>
|
|
148
|
+
<Good>
|
|
149
|
+
User: `$autopilot implement GitHub issue #42`
|
|
150
|
+
Flow: create/load context snapshot -> `$ralplan` issue plan -> `$ralph` implementation + tests -> `$code-review`; if review requests changes, return to `$ralplan` with findings.
|
|
151
|
+
</Good>
|
|
230
152
|
|
|
231
|
-
|
|
153
|
+
<Good>
|
|
154
|
+
User: `continue`
|
|
155
|
+
Context: Autopilot state says `current_phase:"code-review"`.
|
|
156
|
+
Flow: run `$code-review` on current diff, persist verdict, finish if clean or transition to `ralplan` with findings if not clean.
|
|
157
|
+
</Good>
|
|
232
158
|
|
|
233
|
-
|
|
234
|
-
|
|
159
|
+
<Bad>
|
|
160
|
+
Autopilot invents independent "Expansion", "QA", and "Validation" phases and treats them as the primary lifecycle.
|
|
161
|
+
Why bad: this bypasses the strict `$ralplan -> $ralph -> $code-review` contract.
|
|
162
|
+
</Bad>
|
|
163
|
+
</Examples>
|
|
@@ -15,12 +15,12 @@ This skill activates when:
|
|
|
15
15
|
- After implementing a major feature
|
|
16
16
|
- User wants quality assessment
|
|
17
17
|
|
|
18
|
-
## GPT-5.
|
|
18
|
+
## GPT-5.5 Guidance Alignment
|
|
19
19
|
|
|
20
|
-
- Default to
|
|
20
|
+
- Default to outcome-first progress and completion reporting: state the target result, evidence, validation status, and stop condition before adding process detail.
|
|
21
21
|
- Treat newer user task updates as local overrides for the active workflow branch while preserving earlier non-conflicting constraints.
|
|
22
|
-
- If correctness depends on additional inspection, retrieval, execution, or verification, keep using the relevant tools until the review is grounded.
|
|
23
|
-
- Continue through clear, low-risk, reversible next steps automatically; ask only when the next step is materially branching, destructive, or preference-dependent.
|
|
22
|
+
- If correctness depends on additional inspection, retrieval, execution, or verification, keep using the relevant tools until the review is grounded; stop once enough evidence exists.
|
|
23
|
+
- Continue through clear, low-risk, reversible next steps automatically; ask only when the next step is materially branching, destructive, credentialed, external-production, or preference-dependent.
|
|
24
24
|
|
|
25
25
|
Delegates to the `code-reviewer` and `architect` agents in parallel for a two-lane review:
|
|
26
26
|
|
|
@@ -40,7 +40,7 @@ If no flag is provided, use **Standard**.
|
|
|
40
40
|
</Depth_Profiles>
|
|
41
41
|
|
|
42
42
|
<Execution_Policy>
|
|
43
|
-
- Ask ONE question per round (never batch)
|
|
43
|
+
- Ask ONE question per round (never batch multiple interview rounds into one `questions[]` form)
|
|
44
44
|
- Ask about intent and boundaries before implementation detail
|
|
45
45
|
- Target the weakest clarity dimension each round after applying the stage-priority rules below
|
|
46
46
|
- Treat every answer as a claim to pressure-test before moving on: the next question should usually demand evidence or examples, expose a hidden assumption, force a tradeoff or boundary, or reframe root cause vs symptom
|
|
@@ -55,9 +55,11 @@ If no flag is provided, use **Standard**.
|
|
|
55
55
|
- Keep total prompt payloads within a safe budget by summarizing or trimming retained history; preserve newest/highest-signal answers and never let raw oversized context crowd out the current question
|
|
56
56
|
- Reduce user effort: ask only the highest-leverage unresolved question, and never ask the user for codebase facts that can be discovered directly
|
|
57
57
|
- For brownfield work, prefer evidence-backed confirmation questions such as "I found X in Y. Should this change follow that pattern?"
|
|
58
|
-
- In Codex CLI, deep-interview uses `omx question` as the required OMX-owned structured questioning path for every interview round
|
|
58
|
+
- In attached-tmux Codex CLI, deep-interview uses `omx question` as the required OMX-owned structured questioning path for every interview round
|
|
59
|
+
- When invoking `omx question` through attached-tmux Bash/tool paths, preserve the leader-pane return target by prefixing the command with `OMX_QUESTION_RETURN_PANE=$TMUX_PANE` (or a concrete `%pane` value)
|
|
59
60
|
- If you launch `omx question` in a background terminal, immediately wait for that background terminal to finish and read its JSON answer before scoring ambiguity, asking another round, or handing off
|
|
60
|
-
-
|
|
61
|
+
- Treat `answers[]` as the primary `omx question` success contract. For a single interview round, read `answers[0].answer`; use legacy top-level `answer` only as a compatibility fallback when needed.
|
|
62
|
+
- If the current runtime is outside tmux and cannot render `omx question`, use the native structured question tool when available; otherwise ask exactly one concise plain-text question and wait for the answer
|
|
61
63
|
- Re-score ambiguity after each answer and show progress transparently
|
|
62
64
|
- Do not hand off to execution while ambiguity remains above threshold unless user explicitly opts to proceed with warning
|
|
63
65
|
- Do not crystallize or hand off while `Non-goals` or `Decision Boundaries` remain unresolved, even if the weighted ambiguity threshold is met
|
|
@@ -155,7 +157,7 @@ Detailed dimensions:
|
|
|
155
157
|
`Non-goals` and `Decision Boundaries` are mandatory readiness gates. Ask about them early and keep revisiting them until they are explicit.
|
|
156
158
|
|
|
157
159
|
### 2b) Ask the question
|
|
158
|
-
Use OMX-owned structured questioning via `omx question`
|
|
160
|
+
Use the surface-appropriate structured questioning path for every interview round. In attached-tmux sessions, use OMX-owned structured questioning via `omx question` (this is the required structured-question equivalent and required `AskUserQuestion` equivalent for deep-interview). Outside tmux, use native structured input when available; otherwise ask exactly one concise plain-text question and wait for the answer. Present:
|
|
159
161
|
|
|
160
162
|
```
|
|
161
163
|
Round {n} | Target: {weakest_dimension} | Ambiguity: {score}%
|
|
@@ -164,12 +166,14 @@ Round {n} | Target: {weakest_dimension} | Ambiguity: {score}%
|
|
|
164
166
|
```
|
|
165
167
|
|
|
166
168
|
`omx question` payload guidance for interview rounds:
|
|
169
|
+
- Deep-interview is Socratic: ask one focused round at a time. Do not use batch `questions[]` to combine multiple interview rounds, even though `omx question` supports batch forms for other workflows.
|
|
167
170
|
- Use canonical `type` values instead of authoring raw `multi_select` flags by hand. `type: "single-answerable"` is the default for one-path decisions; `type: "multi-answerable"` is the canonical shape for bounded multi-select rounds. The runtime will keep `multi_select` aligned with `type`.
|
|
168
171
|
- Use `single-answerable` when exactly one answer should drive the next branch, the options are mutually exclusive, or selecting more than one answer would blur the decision boundary. Typical cases: handoff lane selection, choosing the primary failure mode, or confirming which of several competing interpretations is correct.
|
|
169
172
|
- Use `multi-answerable` when multiple options may all be true at once and you need to capture a bounded set of coexisting constraints, non-goals, risks, or acceptance checks in one round. Typical cases: selecting all out-of-scope items, all success metrics that must hold, or all deployment constraints that apply together.
|
|
170
173
|
- If one selected option would immediately require a follow-up question to disambiguate the others, prefer a `single-answerable` round now and ask the follow-up next. Do not hide a branching interview tree inside one overloaded multi-select prompt.
|
|
171
174
|
- Keep interview options bounded and concrete. If the valid answers are already known, set `allow_other: false`; only leave `allow_other: true` when the interview genuinely needs one user-supplied option that cannot be enumerated in advance.
|
|
172
|
-
- Read answers structurally
|
|
175
|
+
- Read answers structurally from the primary `answers[]` array. For a normal single-round interview response, use `answers[0].answer` as the source of truth; the top-level `answer` field is a legacy single-question projection/fallback only.
|
|
176
|
+
- For `single-answerable`, expect one decisive selection in the `value` field of `answers[0].answer` plus its selected-values metadata. For `multi-answerable`, treat the selected-values field inside `answers[0].answer` as the source of truth for all chosen constraints/non-goals and preserve the full set in the transcript/spec. In legacy single-question projections, this is equivalent to: For `multi-answerable`, treat `answer.selected_values` as the source of truth.
|
|
173
177
|
|
|
174
178
|
Canonical bounded single-choice payload:
|
|
175
179
|
|
|
@@ -397,9 +401,12 @@ Present execution options after artifact generation using explicit handoff contr
|
|
|
397
401
|
|
|
398
402
|
<Tool_Usage>
|
|
399
403
|
- Use `explore` for codebase fact gathering
|
|
400
|
-
- Use `omx question` as the OMX-native structured user-input tool for each interview round
|
|
401
|
-
-
|
|
404
|
+
- Use `omx question` as the OMX-native structured user-input tool for each interview round when an attached tmux renderer is available
|
|
405
|
+
- From attached-tmux Bash/tool paths, call it as `OMX_QUESTION_RETURN_PANE=$TMUX_PANE omx question ...` unless an explicit `%pane` return target is already known
|
|
406
|
+
- If the current runtime is outside tmux and cannot render `omx question`, use native structured input when available; otherwise ask exactly one concise plain-text question and wait for the answer
|
|
407
|
+
- After `omx question` returns JSON, prefer `answers[0].answer` / `answers[]`; use legacy `answer` only as a fallback for older records
|
|
402
408
|
- Use `state_write` / `state_read` for resumable mode state
|
|
409
|
+
- If the interview cannot ask a required `omx question` round, persist the blocker as terminal state with `active: false` and `current_phase: "blocked"`; do not write a terminal blocked phase with `active: true`
|
|
403
410
|
- Read/write context snapshots under `.omx/context/`
|
|
404
411
|
- Record whether the oversized-context summary gate is not needed, pending, or satisfied before any scoring or handoff step
|
|
405
412
|
- Save transcript/spec artifacts under `.omx/interviews/` and `.omx/specs/`
|
|
@@ -123,7 +123,7 @@ ls -la ~/.agents/skills/ 2>/dev/null
|
|
|
123
123
|
```
|
|
124
124
|
|
|
125
125
|
**Diagnosis**:
|
|
126
|
-
- If `~/.codex/agents/` exists with oh-my-codex-related files: WARN - legacy generated agents or hand-installed role files. The Codex plugin can package reusable workflows plus plugin-scoped companion metadata for MCP/apps,
|
|
126
|
+
- If `~/.codex/agents/` exists with oh-my-codex-related files: WARN - legacy generated agents or hand-installed role files. The Codex plugin can package reusable workflows plus plugin-scoped companion metadata for MCP/apps; legacy setup installs native agents, while plugin setup archives stale legacy native-agent files and keeps config/hooks current.
|
|
127
127
|
- If `~/.codex/commands/` exists with oh-my-codex-related files: WARN - legacy command files from older installs. Current OMX uses skills/workflows plus setup-managed native surfaces.
|
|
128
128
|
- If `${CODEX_HOME:-~/.codex}/skills/` exists with OMX skills: OK - canonical current user skill root
|
|
129
129
|
- If `~/.agents/skills/` exists: WARN - historical legacy skill root that can overlap with `${CODEX_HOME:-~/.codex}/skills/` and cause duplicate Enable/Disable Skills entries
|
|
@@ -49,7 +49,7 @@ If you haven't configured OMX yet:
|
|
|
49
49
|
/omx-setup
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
This is the primary setup command for full OMX runtime wiring. Codex plugin install/discovery can expose packaged skills/workflows plus plugin-scoped companion metadata for MCP servers and apps, while native/runtime hooks remain setup-owned; it is not a replacement for `npm install -g oh-my-codex` plus `omx setup`.
|
|
52
|
+
This is the primary setup command for full OMX runtime wiring. Codex plugin install/discovery can expose packaged skills/workflows plus plugin-scoped companion metadata for MCP servers and apps, while native/runtime hooks remain setup-owned; it is not a replacement for `npm install -g oh-my-codex` plus `omx setup`. Legacy setup mode installs native agents/prompts; plugin setup mode archives stale legacy prompt/native-agent files and keeps config/hooks/optional AGENTS.md/HUD/runtime wiring current, including native `.codex/hooks.json` coverage. Plugin caches may appear under `${CODEX_HOME:-~/.codex}/plugins/cache/$MARKETPLACE_NAME/oh-my-codex/$VERSION/` (or `local` for local installs).
|
|
53
53
|
|
|
54
54
|
If you only need lightweight directory guidance scaffolding for `AGENTS.md` files, use:
|
|
55
55
|
|
|
@@ -10,17 +10,20 @@ Use this skill when users want to install or refresh oh-my-codex for the **curre
|
|
|
10
10
|
## Command
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
|
-
omx setup [--force] [--dry-run] [--verbose] [--scope <user|project>] [--plugin]
|
|
13
|
+
omx setup [--force] [--merge-agents] [--dry-run] [--verbose] [--scope <user|project>] [--plugin|--legacy|--install-mode <legacy|plugin>]
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
If you only want lightweight `AGENTS.md` scaffolding for an existing repo or subtree, use `omx agents-init [path]` instead of full setup.
|
|
17
17
|
|
|
18
18
|
Supported setup flags (current implementation):
|
|
19
19
|
- `--force`: overwrite/reinstall managed artifacts where applicable
|
|
20
|
+
- `--merge-agents`: when `AGENTS.md` already exists, preserve user-authored content and insert/refresh OMX-managed generated sections between explicit `<!-- OMX:AGENTS:START -->` / `<!-- OMX:AGENTS:END -->` markers
|
|
20
21
|
- `--dry-run`: print actions without mutating files
|
|
21
22
|
- `--verbose`: print per-file/per-step details
|
|
22
23
|
- `--scope`: choose install scope (`user`, `project`)
|
|
23
|
-
- `--plugin`: use Codex plugin delivery for skills/prompts/agents
|
|
24
|
+
- `--plugin`: use Codex plugin delivery for bundled skills while archiving/removing legacy OMX-managed prompts/native agents and keeping setup-owned runtime hooks
|
|
25
|
+
- `--legacy`: use legacy setup delivery, overriding any persisted plugin install mode
|
|
26
|
+
- `--install-mode`: explicitly choose setup delivery mode (`legacy` or `plugin`); canonical form for scripted setup
|
|
24
27
|
|
|
25
28
|
## What this setup actually does
|
|
26
29
|
|
|
@@ -29,38 +32,65 @@ Supported setup flags (current implementation):
|
|
|
29
32
|
1. Resolve setup scope:
|
|
30
33
|
- `--scope` explicit value
|
|
31
34
|
- else persisted `./.omx/setup-scope.json` (with automatic migration of legacy values)
|
|
35
|
+
- if a TTY user has persisted setup preferences, `omx setup` first summarizes the recorded choices and asks whether to **keep**, **review/change**, or **reset** them
|
|
32
36
|
- else interactive prompt on TTY (default `user`)
|
|
33
37
|
- else default `user` (safe for CI/tests)
|
|
34
38
|
2. If scope is `user`, resolve user skill delivery mode:
|
|
35
|
-
- explicit `--plugin`, if present
|
|
36
|
-
- persisted install mode in `./.omx/setup-scope.json`, if present
|
|
39
|
+
- explicit `--plugin`, `--legacy`, or `--install-mode legacy|plugin`, if present
|
|
40
|
+
- persisted install mode in `./.omx/setup-scope.json`, if present and the TTY review decision is `keep`
|
|
37
41
|
- else discovered installed plugin cache under `${CODEX_HOME:-~/.codex}/plugins/cache/**/.codex-plugin/plugin.json` with `name: oh-my-codex` makes `plugin` the default
|
|
38
42
|
- else interactive prompt on TTY (`legacy` by default, or `plugin` when a plugin cache is discovered)
|
|
39
43
|
- else default `legacy` unless a plugin cache is discovered
|
|
40
44
|
3. Create directories and persist effective scope/install mode
|
|
41
|
-
4. In legacy mode, install prompts/native agents/skills and merge full config.toml. In plugin mode, remove
|
|
45
|
+
4. In legacy mode, install prompts/native agents/skills and merge full config.toml. In plugin mode, archive/remove legacy OMX-managed prompts/native agents/skills but keep native Codex hooks installed.
|
|
42
46
|
5. Verify Team CLI API interop markers exist in built `dist/cli/team.js`
|
|
43
47
|
6. Generate AGENTS.md defaults only when selected/allowed (or legacy behavior outside plugin mode)
|
|
44
48
|
7. Configure notify hook references outside plugin mode and write `./.omx/hud-config.json`
|
|
45
49
|
|
|
46
50
|
## Important behavior notes
|
|
47
51
|
|
|
48
|
-
- `omx setup`
|
|
49
|
-
-
|
|
52
|
+
- `omx setup` prompts for scope when no scope is provided and stdin/stdout are TTY. If `./.omx/setup-scope.json` already exists, setup now summarizes the saved choices first and asks whether to keep them, review/change them, or reset and behave like a fresh setup run.
|
|
53
|
+
- Non-interactive setup never blocks for this review prompt: it keeps deterministic CLI/persisted/default behavior for CI and scripted installs.
|
|
54
|
+
- In `user` scope, `omx setup` also prompts for skill delivery mode when no prior install mode is kept; installed plugin cache discovery makes plugin mode the default prompt/non-interactive choice.
|
|
50
55
|
- Local project orchestration file is `./AGENTS.md` (project root).
|
|
51
|
-
- If `AGENTS.md` exists and `--force` is
|
|
56
|
+
- If `AGENTS.md` exists and neither `--force` nor `--merge-agents` is used, interactive TTY runs ask whether to overwrite. Non-interactive runs preserve the file.
|
|
57
|
+
- Use `--merge-agents` to keep existing project guidance while allowing setup to refresh OMX-managed AGENTS sections and the generated model capability table idempotently.
|
|
52
58
|
- Scope targets:
|
|
53
59
|
- `user`: user directories (`~/.codex`, `~/.codex/skills`, `~/.omx/agents`)
|
|
54
60
|
- `project`: local directories (`./.codex`, `./.codex/skills`, `./.omx/agents`)
|
|
55
61
|
- User-scope skill delivery targets:
|
|
56
62
|
- `legacy`: keep installing/updating OMX skills in the resolved user skill root
|
|
57
|
-
- `plugin`: rely on Codex plugin discovery for bundled skills and remove
|
|
63
|
+
- `plugin`: rely on Codex plugin discovery for bundled skills and archive/remove legacy OMX-managed prompts/skills/native agents; setup still installs native Codex hooks and `codex_hooks = true` because plugins do not carry hooks.
|
|
58
64
|
- Migration hint: in `user` scope, if historical `~/.agents/skills` still exists alongside `${CODEX_HOME:-~/.codex}/skills`, current setup prints a cleanup hint. **Why the paths differ**: `${CODEX_HOME:-~/.codex}/skills/` is the path current Codex CLI natively loads as its skill root; `~/.agents/skills/` was the skill root in an older Codex CLI release before `~/.codex` became the standard home directory. OMX writes only to the canonical `${CODEX_HOME:-~/.codex}/skills/` path. When both directories exist simultaneously, Codex discovers skills from both trees and may show duplicate entries in Enable/Disable Skills. Archive or remove `~/.agents/skills/` to resolve this.
|
|
59
65
|
- If persisted scope is `project`, `omx` launch automatically uses `CODEX_HOME=./.codex` unless user explicitly overrides `CODEX_HOME`.
|
|
60
66
|
- Plugin mode prompts separately for optional AGENTS.md defaults and optional `developer_instructions` defaults. If `developer_instructions` already exists, setup asks before overwriting it; non-interactive runs preserve it.
|
|
61
|
-
- With `--force`, AGENTS
|
|
67
|
+
- With `--force` or `--merge-agents`, AGENTS updates may still be skipped if an active OMX session is detected (safety guard).
|
|
62
68
|
- Legacy persisted scope values (`project-local`) are automatically migrated to `project` with a one-time warning.
|
|
63
69
|
|
|
70
|
+
## Setup-owned configuration surfaces
|
|
71
|
+
|
|
72
|
+
Use this map when reconciling setup behavior or debugging a confusing install:
|
|
73
|
+
|
|
74
|
+
| Surface | Owner | Notes |
|
|
75
|
+
| --- | --- | --- |
|
|
76
|
+
| `./.omx/setup-scope.json` | `omx setup` | Persists setup scope and user-scope skill delivery mode. TTY reruns summarize it and offer keep/review/reset. |
|
|
77
|
+
| `~/.codex/config.toml` / `./.codex/config.toml` | `omx setup` generated blocks + user edits | Setup refreshes OMX-managed blocks while preserving supported manual content. |
|
|
78
|
+
| `~/.codex/hooks.json` / `./.codex/hooks.json` | `omx setup` shared ownership | Setup owns OMX native hook wrappers and preserves user-owned hooks. |
|
|
79
|
+
| prompts, skills, native agents | `omx setup` or Codex plugin delivery | Legacy mode installs local files; plugin mode relies on plugin discovery for bundled skills and archives/removes legacy OMX-managed prompt/native-agent copies. |
|
|
80
|
+
| `AGENTS.md` | `omx setup` with overwrite safety | Generated defaults or managed refreshes are guarded by force/session checks. |
|
|
81
|
+
| `./.omx/hud-config.json` | `omx setup` / `$hud` | Setup creates the focused default; `$hud` can adjust it later. |
|
|
82
|
+
| notification hooks | `omx setup` / `$configure-notifications` | Setup wires defaults outside plugin skill delivery; notification skill owns deeper provider configuration. |
|
|
83
|
+
|
|
84
|
+
## If `$omx-setup` is missing or stale
|
|
85
|
+
|
|
86
|
+
The source repo ships `skills/omx-setup/SKILL.md` and the catalog marks it active. If Codex does not show `$omx-setup`, treat it as an installation/discovery issue rather than a missing source skill:
|
|
87
|
+
|
|
88
|
+
1. Run `omx setup --verbose` in the intended scope.
|
|
89
|
+
2. Run `omx doctor` and check the reported setup scope, Codex home, skill root, and hook/config status.
|
|
90
|
+
3. If using project scope, confirm `./.codex/skills/omx-setup/SKILL.md` exists.
|
|
91
|
+
4. If using user scope, confirm `${CODEX_HOME:-~/.codex}/skills/omx-setup/SKILL.md` exists in legacy mode, or that the oh-my-codex plugin is installed/discovered in plugin mode.
|
|
92
|
+
5. If duplicate/stale skills appear, check for legacy `~/.agents/skills` overlap and follow the cleanup hint printed by setup/doctor.
|
|
93
|
+
|
|
64
94
|
## Recommended workflow
|
|
65
95
|
|
|
66
96
|
1. Run setup:
|
|
@@ -102,3 +132,4 @@ node bin/omx.js doctor
|
|
|
102
132
|
```
|
|
103
133
|
|
|
104
134
|
- If AGENTS.md was not overwritten during `--force`, stop active OMX session and rerun setup.
|
|
135
|
+
- If AGENTS.md was not merged during `--merge-agents`, stop active OMX session and rerun setup.
|