oh-my-codex 0.14.4 → 0.15.1
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/.agents/plugins/marketplace.json +20 -0
- package/Cargo.lock +6 -6
- package/Cargo.toml +2 -1
- package/README.md +40 -7
- package/crates/omx-explore/Cargo.toml +1 -0
- package/crates/omx-explore/src/main.rs +246 -24
- package/crates/omx-mux/Cargo.toml +1 -0
- package/crates/omx-runtime/Cargo.toml +1 -0
- package/crates/omx-runtime-core/Cargo.toml +1 -0
- package/crates/omx-runtime-core/src/dispatch.rs +2 -1
- package/crates/omx-runtime-core/src/engine.rs +2 -2
- package/crates/omx-runtime-core/src/mailbox.rs +2 -1
- package/crates/omx-sparkshell/Cargo.toml +1 -0
- package/crates/omx-sparkshell/src/codex_bridge.rs +1 -0
- package/crates/omx-sparkshell/src/prompt.rs +1 -0
- package/crates/omx-sparkshell/src/threshold.rs +1 -0
- package/dist/agents/__tests__/native-config.test.js +98 -4
- package/dist/agents/__tests__/native-config.test.js.map +1 -1
- package/dist/agents/native-config.d.ts +4 -0
- package/dist/agents/native-config.d.ts.map +1 -1
- package/dist/agents/native-config.js +19 -3
- package/dist/agents/native-config.js.map +1 -1
- package/dist/agents/policy.d.ts +10 -0
- package/dist/agents/policy.d.ts.map +1 -0
- package/dist/agents/policy.js +61 -0
- package/dist/agents/policy.js.map +1 -0
- package/dist/catalog/__tests__/generator.test.js +2 -0
- package/dist/catalog/__tests__/generator.test.js.map +1 -1
- package/dist/catalog/__tests__/plugin-bundle-ssot.test.d.ts +2 -0
- package/dist/catalog/__tests__/plugin-bundle-ssot.test.d.ts.map +1 -0
- package/dist/catalog/__tests__/plugin-bundle-ssot.test.js +72 -0
- package/dist/catalog/__tests__/plugin-bundle-ssot.test.js.map +1 -0
- package/dist/catalog/installable.d.ts +5 -0
- package/dist/catalog/installable.d.ts.map +1 -0
- package/dist/catalog/installable.js +13 -0
- package/dist/catalog/installable.js.map +1 -0
- package/dist/catalog/skill-mirror.d.ts +20 -0
- package/dist/catalog/skill-mirror.d.ts.map +1 -0
- package/dist/catalog/skill-mirror.js +104 -0
- package/dist/catalog/skill-mirror.js.map +1 -0
- package/dist/cli/__tests__/ask.test.js +4 -1
- package/dist/cli/__tests__/ask.test.js.map +1 -1
- package/dist/cli/__tests__/codex-plugin-layout.test.d.ts +2 -0
- package/dist/cli/__tests__/codex-plugin-layout.test.d.ts.map +1 -0
- package/dist/cli/__tests__/codex-plugin-layout.test.js +210 -0
- package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -0
- 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 +26 -9
- package/dist/cli/__tests__/explore.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +301 -7
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/launch-fallback.test.js +358 -4
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/list.test.d.ts +2 -0
- package/dist/cli/__tests__/list.test.d.ts.map +1 -0
- package/dist/cli/__tests__/list.test.js +38 -0
- package/dist/cli/__tests__/list.test.js.map +1 -0
- 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__/mcp-serve.test.d.ts +2 -0
- package/dist/cli/__tests__/mcp-serve.test.d.ts.map +1 -0
- package/dist/cli/__tests__/mcp-serve.test.js +38 -0
- package/dist/cli/__tests__/mcp-serve.test.js.map +1 -0
- package/dist/cli/__tests__/nested-help-routing.test.js +1 -0
- package/dist/cli/__tests__/nested-help-routing.test.js.map +1 -1
- package/dist/cli/__tests__/package-bin-contract.test.js +58 -3
- package/dist/cli/__tests__/package-bin-contract.test.js.map +1 -1
- package/dist/cli/__tests__/question.test.js +209 -5
- package/dist/cli/__tests__/question.test.js.map +1 -1
- package/dist/cli/__tests__/setup-agents-overwrite.test.js +146 -3
- package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-install-mode.test.d.ts +2 -0
- package/dist/cli/__tests__/setup-install-mode.test.d.ts.map +1 -0
- package/dist/cli/__tests__/setup-install-mode.test.js +873 -0
- package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -0
- package/dist/cli/__tests__/setup-prompts-overwrite.test.js +83 -22
- package/dist/cli/__tests__/setup-prompts-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-refresh.test.js +120 -2
- package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
- package/dist/cli/__tests__/setup-skills-overwrite.test.js +32 -13
- package/dist/cli/__tests__/setup-skills-overwrite.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 +90 -42
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/__tests__/version-sync-contract.test.js +11 -0
- package/dist/cli/__tests__/version-sync-contract.test.js.map +1 -1
- package/dist/cli/codex-home.d.ts +4 -5
- package/dist/cli/codex-home.d.ts.map +1 -1
- package/dist/cli/codex-home.js +9 -37
- 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 -278
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +13 -5
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +351 -60
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/list.d.ts +2 -0
- package/dist/cli/list.d.ts.map +1 -0
- package/dist/cli/list.js +40 -0
- package/dist/cli/list.js.map +1 -0
- package/dist/cli/mcp-serve.d.ts +12 -0
- package/dist/cli/mcp-serve.d.ts.map +1 -0
- package/dist/cli/mcp-serve.js +63 -0
- package/dist/cli/mcp-serve.js.map +1 -0
- 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.map +1 -1
- package/dist/cli/question.js +27 -2
- 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 +12 -3
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +1080 -254
- 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 +22 -3
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +2 -8
- package/dist/cli/uninstall.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 +35 -2
- package/dist/config/__tests__/models.test.js.map +1 -1
- package/dist/config/codex-hooks.d.ts.map +1 -1
- package/dist/config/codex-hooks.js +2 -7
- package/dist/config/codex-hooks.js.map +1 -1
- package/dist/config/generator.d.ts +10 -0
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +259 -76
- package/dist/config/generator.js.map +1 -1
- package/dist/config/models.d.ts +13 -3
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +25 -5
- package/dist/config/models.js.map +1 -1
- package/dist/config/omx-first-party-mcp.d.ts +18 -0
- package/dist/config/omx-first-party-mcp.d.ts.map +1 -0
- package/dist/config/omx-first-party-mcp.js +76 -0
- package/dist/config/omx-first-party-mcp.js.map +1 -0
- package/dist/document-refresh/__tests__/enforcer.test.d.ts +2 -0
- package/dist/document-refresh/__tests__/enforcer.test.d.ts.map +1 -0
- package/dist/document-refresh/__tests__/enforcer.test.js +128 -0
- package/dist/document-refresh/__tests__/enforcer.test.js.map +1 -0
- package/dist/document-refresh/config.d.ts +9 -0
- package/dist/document-refresh/config.d.ts.map +1 -0
- package/dist/document-refresh/config.js +70 -0
- package/dist/document-refresh/config.js.map +1 -0
- package/dist/document-refresh/enforcer.d.ts +43 -0
- package/dist/document-refresh/enforcer.d.ts.map +1 -0
- package/dist/document-refresh/enforcer.js +329 -0
- package/dist/document-refresh/enforcer.js.map +1 -0
- 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__/codebase-map.test.js +63 -1
- package/dist/hooks/__tests__/codebase-map.test.js.map +1 -1
- package/dist/hooks/__tests__/deep-interview-contract.test.js +10 -7
- package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +89 -0
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js +84 -1
- package/dist/hooks/__tests__/notify-fallback-watcher.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 +43 -0
- 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 +53 -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-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-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-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/__tests__/team-runtime-gating-docs-contract.test.d.ts +2 -0
- package/dist/hooks/__tests__/team-runtime-gating-docs-contract.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/team-runtime-gating-docs-contract.test.js +28 -0
- package/dist/hooks/__tests__/team-runtime-gating-docs-contract.test.js.map +1 -0
- package/dist/hooks/__tests__/triage-heuristic.test.js +59 -4
- package/dist/hooks/__tests__/triage-heuristic.test.js.map +1 -1
- package/dist/hooks/__tests__/visual-ralph-skill.test.d.ts +2 -0
- package/dist/hooks/__tests__/visual-ralph-skill.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/visual-ralph-skill.test.js +44 -0
- package/dist/hooks/__tests__/visual-ralph-skill.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.map +1 -1
- package/dist/hooks/keyword-detector.js +19 -14
- 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 +89 -0
- 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/hooks/triage-heuristic.d.ts +2 -2
- package/dist/hooks/triage-heuristic.d.ts.map +1 -1
- package/dist/hooks/triage-heuristic.js +97 -20
- package/dist/hooks/triage-heuristic.js.map +1 -1
- package/dist/hooks/triage-state.d.ts +1 -1
- package/dist/hooks/triage-state.d.ts.map +1 -1
- package/dist/hooks/triage-state.js +2 -1
- package/dist/hooks/triage-state.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 +45 -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 +67 -9
- package/dist/mcp/__tests__/state-server.test.js.map +1 -1
- package/dist/mcp/bootstrap.d.ts +12 -1
- package/dist/mcp/bootstrap.d.ts.map +1 -1
- package/dist/mcp/bootstrap.js +87 -29
- 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/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__/deep-interview.test.js +1 -1
- package/dist/question/__tests__/deep-interview.test.js.map +1 -1
- package/dist/question/__tests__/renderer.test.js +70 -0
- package/dist/question/__tests__/renderer.test.js.map +1 -1
- package/dist/question/__tests__/ui.test.js +49 -0
- package/dist/question/__tests__/ui.test.js.map +1 -1
- package/dist/question/renderer.d.ts +14 -1
- package/dist/question/renderer.d.ts.map +1 -1
- package/dist/question/renderer.js +109 -10
- package/dist/question/renderer.js.map +1 -1
- package/dist/question/state.d.ts +2 -0
- package/dist/question/state.d.ts.map +1 -1
- package/dist/question/state.js +4 -0
- package/dist/question/state.js.map +1 -1
- package/dist/question/types.d.ts +2 -1
- package/dist/question/types.d.ts.map +1 -1
- package/dist/question/types.js.map +1 -1
- package/dist/question/ui.d.ts.map +1 -1
- package/dist/question/ui.js +28 -8
- package/dist/question/ui.js.map +1 -1
- package/dist/runtime/__tests__/bridge.test.js +143 -1
- package/dist/runtime/__tests__/bridge.test.js.map +1 -1
- package/dist/runtime/bridge.d.ts +21 -0
- package/dist/runtime/bridge.d.ts.map +1 -1
- package/dist/runtime/bridge.js +54 -4
- package/dist/runtime/bridge.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +1904 -230
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/generate-release-body.test.js +90 -1
- package/dist/scripts/__tests__/generate-release-body.test.js.map +1 -1
- package/dist/scripts/__tests__/hook-derived-watcher.test.js +110 -2
- package/dist/scripts/__tests__/hook-derived-watcher.test.js.map +1 -1
- package/dist/scripts/__tests__/postinstall.test.js +7 -93
- package/dist/scripts/__tests__/postinstall.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/__tests__/run-test-files.test.d.ts +2 -0
- package/dist/scripts/__tests__/run-test-files.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/run-test-files.test.js +62 -0
- package/dist/scripts/__tests__/run-test-files.test.js.map +1 -0
- package/dist/scripts/__tests__/smoke-packed-install.test.js +13 -1
- package/dist/scripts/__tests__/smoke-packed-install.test.js.map +1 -1
- package/dist/scripts/__tests__/verify-native-agents.test.d.ts +2 -0
- package/dist/scripts/__tests__/verify-native-agents.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/verify-native-agents.test.js +166 -0
- package/dist/scripts/__tests__/verify-native-agents.test.js.map +1 -0
- package/dist/scripts/codex-execution-surface.d.ts +16 -0
- package/dist/scripts/codex-execution-surface.d.ts.map +1 -0
- package/dist/scripts/codex-execution-surface.js +42 -0
- package/dist/scripts/codex-execution-surface.js.map +1 -0
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +418 -76
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/codex-native-pre-post.d.ts +8 -0
- package/dist/scripts/codex-native-pre-post.d.ts.map +1 -1
- package/dist/scripts/codex-native-pre-post.js +133 -19
- package/dist/scripts/codex-native-pre-post.js.map +1 -1
- package/dist/scripts/generate-release-body.d.ts +1 -0
- package/dist/scripts/generate-release-body.d.ts.map +1 -1
- package/dist/scripts/generate-release-body.js +32 -3
- package/dist/scripts/generate-release-body.js.map +1 -1
- package/dist/scripts/hook-derived-watcher.js +46 -7
- package/dist/scripts/hook-derived-watcher.js.map +1 -1
- package/dist/scripts/notify-fallback-watcher.js +59 -9
- package/dist/scripts/notify-fallback-watcher.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.map +1 -1
- package/dist/scripts/notify-hook/managed-tmux.js +18 -1
- 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.js +36 -5
- package/dist/scripts/notify-hook.js.map +1 -1
- package/dist/scripts/postinstall.d.ts +1 -5
- package/dist/scripts/postinstall.d.ts.map +1 -1
- package/dist/scripts/postinstall.js +3 -42
- package/dist/scripts/postinstall.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 +32 -2
- package/dist/scripts/run-test-files.js.map +1 -1
- package/dist/scripts/smoke-packed-install.d.ts +3 -0
- package/dist/scripts/smoke-packed-install.d.ts.map +1 -1
- package/dist/scripts/smoke-packed-install.js +9 -1
- package/dist/scripts/smoke-packed-install.js.map +1 -1
- package/dist/scripts/sync-plugin-mirror.d.ts +13 -0
- package/dist/scripts/sync-plugin-mirror.d.ts.map +1 -0
- package/dist/scripts/sync-plugin-mirror.js +242 -0
- package/dist/scripts/sync-plugin-mirror.js.map +1 -0
- package/dist/scripts/verify-native-agents.d.ts +16 -0
- package/dist/scripts/verify-native-agents.d.ts.map +1 -0
- package/dist/scripts/verify-native-agents.js +188 -0
- package/dist/scripts/verify-native-agents.js.map +1 -0
- package/dist/session-history/search.d.ts.map +1 -1
- package/dist/session-history/search.js +7 -2
- package/dist/session-history/search.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/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/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 +18 -2
- 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 +677 -17
- 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 +301 -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 +34 -0
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +191 -50
- 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 +83 -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/__tests__/agents-model-table.test.js +8 -0
- package/dist/utils/__tests__/agents-model-table.test.js.map +1 -1
- package/dist/utils/__tests__/paths.test.js +42 -9
- package/dist/utils/__tests__/paths.test.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/dist/utils/agents-model-table.d.ts.map +1 -1
- package/dist/utils/agents-model-table.js +2 -3
- package/dist/utils/agents-model-table.js.map +1 -1
- package/package.json +14 -7
- package/plugins/oh-my-codex/.app.json +3 -0
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +30 -0
- package/plugins/oh-my-codex/.mcp.json +44 -0
- package/plugins/oh-my-codex/skills/ai-slop-cleaner/SKILL.md +114 -0
- package/plugins/oh-my-codex/skills/analyze/SKILL.md +148 -0
- package/plugins/oh-my-codex/skills/ask-claude/SKILL.md +61 -0
- package/plugins/oh-my-codex/skills/ask-gemini/SKILL.md +61 -0
- package/plugins/oh-my-codex/skills/autopilot/SKILL.md +231 -0
- package/plugins/oh-my-codex/skills/autoresearch/SKILL.md +68 -0
- package/plugins/oh-my-codex/skills/cancel/SKILL.md +399 -0
- package/plugins/oh-my-codex/skills/code-review/SKILL.md +290 -0
- package/plugins/oh-my-codex/skills/configure-notifications/SKILL.md +287 -0
- package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +464 -0
- package/plugins/oh-my-codex/skills/doctor/SKILL.md +239 -0
- package/plugins/oh-my-codex/skills/help/SKILL.md +202 -0
- package/plugins/oh-my-codex/skills/hud/SKILL.md +98 -0
- package/plugins/oh-my-codex/skills/note/SKILL.md +62 -0
- package/plugins/oh-my-codex/skills/omx-setup/SKILL.md +135 -0
- package/plugins/oh-my-codex/skills/pipeline/SKILL.md +86 -0
- package/plugins/oh-my-codex/skills/plan/SKILL.md +276 -0
- package/plugins/oh-my-codex/skills/ralph/SKILL.md +269 -0
- package/plugins/oh-my-codex/skills/ralplan/SKILL.md +162 -0
- package/plugins/oh-my-codex/skills/security-review/SKILL.md +300 -0
- package/plugins/oh-my-codex/skills/skill/SKILL.md +835 -0
- package/plugins/oh-my-codex/skills/team/SKILL.md +510 -0
- package/plugins/oh-my-codex/skills/trace/SKILL.md +33 -0
- package/plugins/oh-my-codex/skills/ultraqa/SKILL.md +143 -0
- package/plugins/oh-my-codex/skills/ultrawork/SKILL.md +175 -0
- package/plugins/oh-my-codex/skills/visual-ralph/SKILL.md +153 -0
- package/plugins/oh-my-codex/skills/visual-verdict/SKILL.md +76 -0
- package/plugins/oh-my-codex/skills/wiki/SKILL.md +57 -0
- package/plugins/oh-my-codex/skills/worker/SKILL.md +106 -0
- package/prompts/critic.md +35 -83
- package/prompts/executor.md +32 -109
- package/prompts/explore-harness.md +1 -1
- package/prompts/explore.md +37 -90
- package/prompts/planner.md +28 -58
- package/prompts/researcher.md +46 -78
- package/prompts/verifier.md +23 -31
- package/skills/autopilot/SKILL.md +1 -4
- package/skills/deep-interview/SKILL.md +8 -5
- package/skills/doctor/SKILL.md +45 -17
- package/skills/help/SKILL.md +2 -2
- package/skills/omx-setup/SKILL.md +52 -9
- package/skills/plan/SKILL.md +1 -4
- package/skills/ralph/SKILL.md +3 -5
- package/skills/ralplan/SKILL.md +2 -6
- package/skills/team/SKILL.md +2 -5
- package/skills/ultraqa/SKILL.md +1 -4
- package/skills/ultrawork/SKILL.md +2 -3
- package/skills/visual-ralph/SKILL.md +153 -0
- package/skills/web-clone/SKILL.md +12 -354
- package/src/scripts/__tests__/codex-native-hook.test.ts +2306 -224
- package/src/scripts/__tests__/generate-release-body.test.ts +109 -0
- package/src/scripts/__tests__/hook-derived-watcher.test.ts +132 -2
- package/src/scripts/__tests__/postinstall.test.ts +7 -104
- package/src/scripts/__tests__/prompt-inventory.test.ts +64 -0
- package/src/scripts/__tests__/run-test-files.test.ts +72 -0
- package/src/scripts/__tests__/smoke-packed-install.test.ts +15 -0
- package/src/scripts/__tests__/verify-native-agents.test.ts +204 -0
- package/src/scripts/codex-execution-surface.ts +73 -0
- package/src/scripts/codex-native-hook.ts +579 -82
- package/src/scripts/codex-native-pre-post.ts +157 -19
- package/src/scripts/generate-release-body.ts +34 -2
- package/src/scripts/hook-derived-watcher.ts +51 -8
- package/src/scripts/notify-fallback-watcher.ts +65 -9
- package/src/scripts/notify-hook/__tests__/team-worker-posttooluse.test.ts +180 -0
- package/src/scripts/notify-hook/managed-tmux.ts +22 -4
- 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.ts +36 -5
- package/src/scripts/postinstall.ts +4 -58
- package/src/scripts/prompt-inventory.ts +218 -0
- package/src/scripts/run-test-files.ts +41 -2
- package/src/scripts/smoke-packed-install.ts +10 -1
- package/src/scripts/sync-plugin-mirror.ts +360 -0
- package/src/scripts/verify-native-agents.ts +245 -0
- package/templates/AGENTS.md +26 -91
- package/templates/catalog-manifest.json +16 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ultrawork
|
|
3
|
+
description: Parallel execution engine for high-throughput task completion
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<Purpose>
|
|
7
|
+
Ultrawork is a parallel execution engine for high-throughput task completion. It is a component, not a standalone persistence mode: it provides parallelism, context discipline, and smart delegation guidance, but not Ralph's persistence loop, architect sign-off, or long-running completion guarantees.
|
|
8
|
+
</Purpose>
|
|
9
|
+
|
|
10
|
+
<Use_When>
|
|
11
|
+
- Multiple independent tasks can run simultaneously
|
|
12
|
+
- User says "ulw", "ultrawork", or explicitly wants parallel execution
|
|
13
|
+
- Task benefits from concurrent execution plus lightweight evidence before wrap-up
|
|
14
|
+
- You need a direct-tool lane plus optional background evidence lanes without entering Ralph
|
|
15
|
+
</Use_When>
|
|
16
|
+
|
|
17
|
+
<Do_Not_Use_When>
|
|
18
|
+
- Task requires guaranteed completion with persistence, architect verification, or deslop/reverification -- use `ralph` instead (Ralph includes ultrawork)
|
|
19
|
+
- Task requires a full autonomous pipeline -- use `autopilot` instead (autopilot includes Ralph which includes ultrawork)
|
|
20
|
+
- There is only one sequential task with no parallelism opportunity -- execute directly or delegate to a single `executor`
|
|
21
|
+
- The request is still in plan-consensus mode -- keep planning artifacts in `ralplan` until execution is explicitly authorized
|
|
22
|
+
- User needs session persistence for resume -- use `ralph`, which adds persistence on top of ultrawork
|
|
23
|
+
</Do_Not_Use_When>
|
|
24
|
+
|
|
25
|
+
<Why_This_Exists>
|
|
26
|
+
Sequential task execution wastes time when tasks are independent. Ultrawork keeps the execution branch fast while tightening the protocol: gather enough context first, define pass/fail acceptance criteria before editing, decide deliberately between local execution and delegation, and finish with evidence rather than vibes.
|
|
27
|
+
</Why_This_Exists>
|
|
28
|
+
|
|
29
|
+
<Execution_Policy>
|
|
30
|
+
- Gather enough context before implementation. Start with the task intent, desired outcome, constraints, likely touchpoints, and any uncertainty that would change the execution path.
|
|
31
|
+
- If uncertainty is still material after a quick repo read, do a focused evidence pass first instead of immediately editing.
|
|
32
|
+
- Define pass/fail acceptance criteria before launching execution lanes. Include the command, artifact, or manual check that will prove success.
|
|
33
|
+
- Prefer direct tool work when the task is small, coupled, or blocked on immediate local context. Delegate only when the work is independent enough to benefit from parallel execution.
|
|
34
|
+
- When useful, run a direct-tool lane and one or more background evidence lanes at the same time. Evidence lanes can cover docs, tests, regression mapping, or bounded repo analysis.
|
|
35
|
+
- Fire independent agent calls simultaneously -- never serialize independent work.
|
|
36
|
+
- Always pass the `model` parameter explicitly when delegating.
|
|
37
|
+
- Read `docs/shared/agent-tiers.md` before first delegation for agent selection guidance.
|
|
38
|
+
- Auto-delegate `researcher` when official docs, version-aware framework guidance, best practices, or external dependency behavior materially affect task correctness; treat it as an evidence lane, not a replacement primary workflow.
|
|
39
|
+
- Use `run_in_background: true` for operations over ~30 seconds (installs, builds, tests).
|
|
40
|
+
- Run quick commands (git status, file reads, simple checks) in the foreground.
|
|
41
|
+
- Apply the shared workflow guidance pattern: concise, evidence-dense progress and completion reporting (including speculative/blocked lanes), local overrides for the active workflow branch, and continuation of clear safe execution branches instead of restarting or re-asking.
|
|
42
|
+
- If the user says `continue`, continue the active workflow branch rather than restarting discovery or re-asking settled questions.
|
|
43
|
+
</Execution_Policy>
|
|
44
|
+
|
|
45
|
+
<Steps>
|
|
46
|
+
1. **Read agent reference**: Load `docs/shared/agent-tiers.md` for tier selection.
|
|
47
|
+
2. **Context + certainty check**:
|
|
48
|
+
- State the task intent in one sentence.
|
|
49
|
+
- List the constraints and unknowns that could invalidate a quick fix.
|
|
50
|
+
- If confidence is low, explore first and narrow the task before editing.
|
|
51
|
+
3. **Define acceptance criteria before execution**:
|
|
52
|
+
- What must be true at the end?
|
|
53
|
+
- Which command or artifact proves it?
|
|
54
|
+
- Which manual QA check is required, if any?
|
|
55
|
+
4. **Classify the work by dependency shape**:
|
|
56
|
+
- Independent tasks -> parallel lanes.
|
|
57
|
+
- Shared-file or prerequisite-heavy tasks -> local execution or staged lanes.
|
|
58
|
+
5. **Choose self vs delegate deliberately**:
|
|
59
|
+
- Work locally when the next step depends on immediate repo context, shared files, or tight iteration.
|
|
60
|
+
- Delegate when the task slice is bounded, independent, and materially improves throughput.
|
|
61
|
+
6. **Run execution lanes**:
|
|
62
|
+
- Direct-tool lane for immediate implementation or verification work.
|
|
63
|
+
- Background evidence lanes for tests, docs, repo analysis, or regression checks.
|
|
64
|
+
7. **Run dependent tasks sequentially**: Wait for prerequisites before launching dependent work.
|
|
65
|
+
8. **Close with lightweight evidence**:
|
|
66
|
+
- Build/typecheck passes when relevant.
|
|
67
|
+
- Affected tests pass.
|
|
68
|
+
- Manual QA notes are recorded when the task needs a human-visible or behavior-level check.
|
|
69
|
+
- No new errors introduced.
|
|
70
|
+
</Steps>
|
|
71
|
+
|
|
72
|
+
<Tool_Usage>
|
|
73
|
+
- Use LOW-tier delegation for simple lookups and bounded evidence gathering.
|
|
74
|
+
- Use STANDARD-tier delegation for standard implementation and regression work.
|
|
75
|
+
- Use THOROUGH-tier delegation for complex analysis, architectural review, or risky multi-file changes.
|
|
76
|
+
- Prefer a direct-tool lane when the immediate next step is blocked on local context.
|
|
77
|
+
- Prefer background evidence lanes when you can learn something useful in parallel with implementation.
|
|
78
|
+
- Use `run_in_background: true` for package installs, builds, and test suites.
|
|
79
|
+
- Use foreground execution for quick status checks and file operations.
|
|
80
|
+
</Tool_Usage>
|
|
81
|
+
|
|
82
|
+
## State Management
|
|
83
|
+
|
|
84
|
+
Use `omx_state` MCP tools for ultrawork lifecycle state.
|
|
85
|
+
|
|
86
|
+
- **On start**:
|
|
87
|
+
`state_write({mode: "ultrawork", active: true, reinforcement_count: 1, started_at: "<now>"})`
|
|
88
|
+
- **On each reinforcement/loop step**:
|
|
89
|
+
`state_write({mode: "ultrawork", reinforcement_count: <current>})`
|
|
90
|
+
- **On completion**:
|
|
91
|
+
`state_write({mode: "ultrawork", active: false})`
|
|
92
|
+
- **On cancellation/cleanup**:
|
|
93
|
+
run `$cancel` (which should call `state_clear(mode="ultrawork")`)
|
|
94
|
+
|
|
95
|
+
<Examples>
|
|
96
|
+
<Good>
|
|
97
|
+
Two-track execution with acceptance criteria up front:
|
|
98
|
+
```
|
|
99
|
+
Acceptance criteria:
|
|
100
|
+
- `npm run build` passes
|
|
101
|
+
- `node --test dist/scripts/__tests__/codex-native-hook.test.js` passes
|
|
102
|
+
- Manual QA: verify `$ultrawork` activation message still points to the session state file
|
|
103
|
+
|
|
104
|
+
Direct-tool lane:
|
|
105
|
+
- update `skills/ultrawork/SKILL.md`
|
|
106
|
+
|
|
107
|
+
Background evidence lane:
|
|
108
|
+
- delegate(role="test-engineer", tier="STANDARD", task="Map which hook tests cover ultrawork activation messaging", model="...")
|
|
109
|
+
```
|
|
110
|
+
Why good: Context is grounded first, acceptance criteria are explicit, and the direct-tool lane runs alongside a bounded evidence lane.
|
|
111
|
+
</Good>
|
|
112
|
+
|
|
113
|
+
<Good>
|
|
114
|
+
Correct use of self-vs-delegate judgment:
|
|
115
|
+
```
|
|
116
|
+
Shared-file edit in progress across `src/scripts/codex-native-hook.ts` and its test -> keep implementation local.
|
|
117
|
+
Independent regression mapping for keyword-detector coverage -> delegate to a test-engineer lane.
|
|
118
|
+
```
|
|
119
|
+
Why good: Shared-file work stays local; independent evidence work fans out.
|
|
120
|
+
</Good>
|
|
121
|
+
|
|
122
|
+
<Bad>
|
|
123
|
+
Parallelizing before the task is grounded:
|
|
124
|
+
```
|
|
125
|
+
delegate(role="executor", tier="STANDARD", task="Implement whatever seems necessary", model="...")
|
|
126
|
+
delegate(role="test-engineer", tier="STANDARD", task="Figure out how to test it later", model="...")
|
|
127
|
+
```
|
|
128
|
+
Why bad: No context snapshot, no pass/fail target, and delegation starts before the work is shaped.
|
|
129
|
+
</Bad>
|
|
130
|
+
|
|
131
|
+
<Bad>
|
|
132
|
+
Claiming success without evidence or manual QA:
|
|
133
|
+
```
|
|
134
|
+
Made the changes. Ultrawork should be updated now.
|
|
135
|
+
```
|
|
136
|
+
Why bad: No verification output, no acceptance evidence, and no manual QA note when the behavior is user-visible.
|
|
137
|
+
</Bad>
|
|
138
|
+
</Examples>
|
|
139
|
+
|
|
140
|
+
<Escalation_And_Stop_Conditions>
|
|
141
|
+
- When ultrawork is invoked directly (not via Ralph), apply lightweight verification only -- build/typecheck passes when relevant, affected tests pass, and manual QA notes are captured when needed.
|
|
142
|
+
- Ralph owns persistence, architect verification, deslop, and the full verified-completion promise. Do not claim those guarantees from direct ultrawork alone.
|
|
143
|
+
- If a task fails repeatedly across retries, report the issue rather than retrying indefinitely.
|
|
144
|
+
- Escalate to the user when tasks have unclear dependencies, conflicting requirements, or a materially branching acceptance target.
|
|
145
|
+
</Escalation_And_Stop_Conditions>
|
|
146
|
+
|
|
147
|
+
<Final_Checklist>
|
|
148
|
+
- [ ] Task intent and constraints were grounded before editing
|
|
149
|
+
- [ ] Pass/fail acceptance criteria were stated before execution
|
|
150
|
+
- [ ] Parallel lanes were used only for independent work
|
|
151
|
+
- [ ] Build/typecheck passes when relevant
|
|
152
|
+
- [ ] Affected tests pass
|
|
153
|
+
- [ ] Manual QA notes recorded when behavior is user-visible
|
|
154
|
+
- [ ] No new errors introduced
|
|
155
|
+
- [ ] Completion claim stays inside ultrawork's lightweight-verification boundary
|
|
156
|
+
</Final_Checklist>
|
|
157
|
+
|
|
158
|
+
<Advanced>
|
|
159
|
+
## Relationship to Other Modes
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
ralph (persistence + verified completion wrapper)
|
|
163
|
+
\-- includes: ultrawork (this skill)
|
|
164
|
+
\-- provides: high-throughput execution + lightweight evidence
|
|
165
|
+
|
|
166
|
+
autopilot (autonomous execution)
|
|
167
|
+
\-- includes: ralph
|
|
168
|
+
\-- includes: ultrawork (this skill)
|
|
169
|
+
|
|
170
|
+
ecomode (token efficiency)
|
|
171
|
+
\-- modifies: ultrawork's model selection
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Ultrawork is the parallelism and execution-discipline layer. Ralph adds persistence, architect verification, deslop, and retry-until-done behavior. Autopilot adds the broader autonomous lifecycle pipeline. Ecomode adjusts ultrawork's model routing to favor cheaper models.
|
|
175
|
+
</Advanced>
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: visual-ralph
|
|
3
|
+
description: "Visual Ralph orchestration for frontend UI from generated references, static references, or live URL targets, using $ralph with $visual-verdict and pixel-diff evidence until the implementation matches and leaves a reproducible design system."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Visual Ralph Skill
|
|
7
|
+
|
|
8
|
+
Use this skill when the user wants Codex to build or restyle frontend UI through a Visual Ralph loop: an approved generated reference, static reference, or live URL-derived baseline becomes the target, Ralph implements, and Visual Verdict drives measured iteration rather than subjective description alone.
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
Create a measured frontend delivery loop from either a generated reference, a static reference, or a live URL:
|
|
13
|
+
|
|
14
|
+
`user description / live URL -> approved visual reference -> $ralph implementation -> $visual-verdict + pixel diff -> reproducible design system`.
|
|
15
|
+
|
|
16
|
+
For live URL cloning requests, Visual Ralph owns the migrated `$web-clone` use case. Do not route new URL-driven website cloning work to `$web-clone`; preserve the URL, viewport, fidelity requirements, and interaction notes inside the Visual Ralph loop.
|
|
17
|
+
|
|
18
|
+
This is an orchestration skill. It composes existing skills and must not add runtime commands, dependencies, or app-specific assumptions by itself.
|
|
19
|
+
|
|
20
|
+
## Use when
|
|
21
|
+
|
|
22
|
+
- The user describes a desired web/app UI and wants implementation, not just design advice.
|
|
23
|
+
- The user provides a live URL and wants a visual implementation or clone through measured Visual Verdict iteration.
|
|
24
|
+
- A generated raster mockup/reference image would make the target clearer.
|
|
25
|
+
- The task needs pixel-level visual iteration with a pass/fail threshold.
|
|
26
|
+
- The final result should leave reusable design tokens/components, not only a one-off screenshot match.
|
|
27
|
+
|
|
28
|
+
## Do not use when
|
|
29
|
+
|
|
30
|
+
- The user only wants design critique or general frontend advice; use `$frontend-ui-ux` or a designer lane.
|
|
31
|
+
- The task is a non-visual backend/API implementation with no UI reference target.
|
|
32
|
+
- The user already supplied a final static reference image and only needs comparison/fixes; hand directly to `$ralph` with `$visual-verdict` guidance.
|
|
33
|
+
- The requested output is a deterministic SVG/vector/code-native asset rather than a raster reference.
|
|
34
|
+
|
|
35
|
+
## Workflow
|
|
36
|
+
|
|
37
|
+
### 1. Ground the target repo
|
|
38
|
+
|
|
39
|
+
Before stack-specific choices, inspect local evidence:
|
|
40
|
+
- package manager and scripts,
|
|
41
|
+
- frontend framework and routing structure,
|
|
42
|
+
- styling system and design-token conventions,
|
|
43
|
+
- screenshot/test tooling,
|
|
44
|
+
- existing components that should be reused.
|
|
45
|
+
|
|
46
|
+
Do not hardcode React, Vue, Tailwind, Playwright, or any other stack unless the repository evidence supports it.
|
|
47
|
+
|
|
48
|
+
### 2. Establish the visual reference
|
|
49
|
+
|
|
50
|
+
For live URL requests, capture or document the URL-derived reference inside the Visual Ralph artifacts and carry forward viewport, content-state, and interaction constraints. Do not invoke `$web-clone`; that standalone skill is hard-deprecated.
|
|
51
|
+
|
|
52
|
+
Live URL reference artifacts must include:
|
|
53
|
+
- source URL and permission/scope note,
|
|
54
|
+
- viewport(s), route/state, and any seed/login assumptions,
|
|
55
|
+
- captured baseline screenshot path or documented capture command/tool,
|
|
56
|
+
- interaction parity notes for visible controls,
|
|
57
|
+
- known exclusions such as backend/API/auth, personalized data, multi-page crawling, and third-party widget parity.
|
|
58
|
+
|
|
59
|
+
For generated UI concepts, use `$imagegen` to produce the reference from the user's UI description.
|
|
60
|
+
|
|
61
|
+
Prompt requirements:
|
|
62
|
+
- classify as `ui-mockup`, unless another imagegen taxonomy is clearly better,
|
|
63
|
+
- include viewport/aspect ratio and intended surface,
|
|
64
|
+
- specify layout, hierarchy, typography direction, color mood, and any exact text,
|
|
65
|
+
- forbid logos/watermarks/unrequested brand marks,
|
|
66
|
+
- ask imagegen to avoid impossible UI details or unreadable text.
|
|
67
|
+
|
|
68
|
+
For project-bound implementation, copy the approved reference into the workspace, for example under `.omx/artifacts/visual-ralph/<slug>/reference.png`. Never leave the implementation reference only in `$CODEX_HOME/generated_images/...`.
|
|
69
|
+
|
|
70
|
+
### 3. Require explicit user approval
|
|
71
|
+
|
|
72
|
+
Stop after reference generation or URL-derived reference capture and ask the user to approve one reference image/state or request a targeted regeneration/capture adjustment.
|
|
73
|
+
|
|
74
|
+
Before approval:
|
|
75
|
+
- do not start frontend implementation,
|
|
76
|
+
- do not invoke `$ralph`,
|
|
77
|
+
- do not treat a rough image as final.
|
|
78
|
+
|
|
79
|
+
After approval, the confirmed image or URL-derived baseline becomes the visual source of truth. Major design pivots, replacing the reference, or changing the design direction require an explicit user request.
|
|
80
|
+
|
|
81
|
+
### 4. Hand off to `$ralph` for implementation
|
|
82
|
+
|
|
83
|
+
Invoke `$ralph` with:
|
|
84
|
+
- the approved reference image path or URL-derived baseline artifact,
|
|
85
|
+
- source URL, viewport(s), content state, and interaction parity notes for live URL tasks,
|
|
86
|
+
- the user description,
|
|
87
|
+
- the detected repo/frontend context,
|
|
88
|
+
- exact screenshot command/viewport requirements,
|
|
89
|
+
- the completion checklist below.
|
|
90
|
+
|
|
91
|
+
Ralph may iterate autonomously after approval. It should edit code, run the app, capture screenshots, and keep improving until the approved reference is matched or a real blocker exists.
|
|
92
|
+
|
|
93
|
+
### 5. Use `$visual-verdict` before every next edit
|
|
94
|
+
|
|
95
|
+
For each visual iteration:
|
|
96
|
+
1. Capture the current generated screenshot with recorded viewport/state.
|
|
97
|
+
2. Run `$visual-verdict` comparing the approved reference and generated screenshot.
|
|
98
|
+
3. Treat the JSON verdict as authoritative.
|
|
99
|
+
4. If `score < 90`, convert `differences[]` and `suggestions[]` into the next edit plan.
|
|
100
|
+
5. Rerun before the next edit.
|
|
101
|
+
|
|
102
|
+
Required verdict shape is inherited from `$visual-verdict`: `score`, `verdict`, `category_match`, `differences[]`, `suggestions[]`, and `reasoning`.
|
|
103
|
+
|
|
104
|
+
### 6. Use pixel diff only as secondary debug evidence
|
|
105
|
+
|
|
106
|
+
When mismatch diagnosis is hard, generate a pixel diff or pixelmatch overlay to locate hotspots. Pixel diff does not replace `$visual-verdict`; it only helps translate visual hotspots into concrete edits.
|
|
107
|
+
|
|
108
|
+
Record final diff evidence with the reference/screenshot artifacts so the result can be audited.
|
|
109
|
+
|
|
110
|
+
### 7. Build a reproducible design system
|
|
111
|
+
|
|
112
|
+
The implementation is incomplete unless the visual match is encoded in repo-native reusable artifacts. Depending on the project, this may mean CSS variables, theme tokens, Tailwind config, component variants, Storybook stories, design docs, or existing equivalents.
|
|
113
|
+
|
|
114
|
+
Capture at least the applicable:
|
|
115
|
+
- colors,
|
|
116
|
+
- spacing scale,
|
|
117
|
+
- typography scale/weights,
|
|
118
|
+
- radii,
|
|
119
|
+
- shadows/elevation,
|
|
120
|
+
- important component variants and states.
|
|
121
|
+
|
|
122
|
+
Prefer existing token/component patterns. Do not introduce a new design-system layer if the repo already has one that can be extended.
|
|
123
|
+
|
|
124
|
+
## Completion checklist
|
|
125
|
+
|
|
126
|
+
Do not declare done until all are true:
|
|
127
|
+
- Approved reference image or URL-derived reference artifact is saved in the workspace.
|
|
128
|
+
- Screenshot reproduction command, viewport, route, seed/state, and output paths are documented.
|
|
129
|
+
- `$visual-verdict` final score is `>= 90` against the approved reference.
|
|
130
|
+
- Pixel diff or overlay evidence is recorded as secondary debug evidence.
|
|
131
|
+
- Design-system tokens/components are repo-native and reusable.
|
|
132
|
+
- Build/lint/test or the repo's equivalent verification passes.
|
|
133
|
+
- No unapproved major design pivot occurred after reference approval.
|
|
134
|
+
- Remaining visual differences, if any, are explicitly documented with rationale.
|
|
135
|
+
|
|
136
|
+
## Handoff template
|
|
137
|
+
|
|
138
|
+
```text
|
|
139
|
+
$ralph "Implement the approved frontend reference.
|
|
140
|
+
Reference: <workspace-reference-image-or-url-derived-artifact>
|
|
141
|
+
Source URL (if URL-derived): <url and permission/scope note>
|
|
142
|
+
Viewport/content state: <viewport, route/state, seed/login assumptions>
|
|
143
|
+
Interaction parity notes: <visible controls and known exclusions>
|
|
144
|
+
Route/surface: <route or component>
|
|
145
|
+
Screenshot command: <command and viewport>
|
|
146
|
+
Use $visual-verdict before every next edit; pass threshold score >= 90.
|
|
147
|
+
Use pixel diff only as secondary debug evidence.
|
|
148
|
+
Extract reusable design tokens/components for colors, spacing, typography, radii, shadows, and key variants.
|
|
149
|
+
Run build/lint/test before completion.
|
|
150
|
+
Do not make major design pivots unless explicitly requested."
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Task: {{ARGUMENTS}}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: visual-verdict
|
|
3
|
+
description: Structured visual QA verdict for screenshot-to-reference comparisons
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<Purpose>
|
|
7
|
+
Use this skill to compare generated UI screenshots against one or more reference images and return a strict JSON verdict that can drive the next edit iteration.
|
|
8
|
+
</Purpose>
|
|
9
|
+
|
|
10
|
+
<Use_When>
|
|
11
|
+
- The task includes visual fidelity requirements (layout, spacing, typography, component styling)
|
|
12
|
+
- You have a generated screenshot and at least one reference image
|
|
13
|
+
- You need deterministic pass/fail guidance before continuing edits
|
|
14
|
+
</Use_When>
|
|
15
|
+
|
|
16
|
+
<Inputs>
|
|
17
|
+
- `reference_images[]` (one or more image paths)
|
|
18
|
+
- `generated_screenshot` (current output image)
|
|
19
|
+
- Optional: `category_hint` (e.g., `hackernews`, `sns-feed`, `dashboard`)
|
|
20
|
+
</Inputs>
|
|
21
|
+
|
|
22
|
+
<Output_Contract>
|
|
23
|
+
Return **JSON only** with this exact shape:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"score": 0,
|
|
28
|
+
"verdict": "revise",
|
|
29
|
+
"category_match": false,
|
|
30
|
+
"differences": ["..."],
|
|
31
|
+
"suggestions": ["..."],
|
|
32
|
+
"reasoning": "short explanation"
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Rules:
|
|
37
|
+
- `score`: integer 0-100
|
|
38
|
+
- `verdict`: short status (`pass`, `revise`, or `fail`)
|
|
39
|
+
- `category_match`: `true` when the generated screenshot matches the intended UI category/style
|
|
40
|
+
- `differences[]`: concrete visual mismatches (layout, spacing, typography, colors, hierarchy)
|
|
41
|
+
- `suggestions[]`: actionable next edits tied to the differences
|
|
42
|
+
- `reasoning`: 1-2 sentence summary
|
|
43
|
+
|
|
44
|
+
<Threshold_And_Loop>
|
|
45
|
+
- Target pass threshold is **90+**.
|
|
46
|
+
- If `score < 90`, continue editing and rerun `$visual-verdict` before any further code edits in the next iteration.
|
|
47
|
+
- Persist the verdict in `.omx/state/{scope}/ralph-progress.json` with both:
|
|
48
|
+
- numeric signal (`score`, threshold pass/fail)
|
|
49
|
+
- qualitative signal (`reasoning`, `suggestions`, `next_actions`)
|
|
50
|
+
</Threshold_And_Loop>
|
|
51
|
+
|
|
52
|
+
<Debug_Visualization>
|
|
53
|
+
When mismatch diagnosis is hard:
|
|
54
|
+
1. Keep `$visual-verdict` as the authoritative decision.
|
|
55
|
+
2. Use pixel-level diff tooling (pixel diff / pixelmatch overlay) as a **secondary debug aid** to localize hotspots.
|
|
56
|
+
3. Convert pixel diff hotspots into concrete `differences[]` and `suggestions[]` updates.
|
|
57
|
+
</Debug_Visualization>
|
|
58
|
+
|
|
59
|
+
<Example>
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"score": 87,
|
|
63
|
+
"verdict": "revise",
|
|
64
|
+
"category_match": true,
|
|
65
|
+
"differences": [
|
|
66
|
+
"Top nav spacing is tighter than reference",
|
|
67
|
+
"Primary button uses smaller font weight"
|
|
68
|
+
],
|
|
69
|
+
"suggestions": [
|
|
70
|
+
"Increase nav item horizontal padding by 4px",
|
|
71
|
+
"Set primary button font-weight to 600"
|
|
72
|
+
],
|
|
73
|
+
"reasoning": "Core layout matches, but style details still diverge."
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
</Example>
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wiki
|
|
3
|
+
description: Persistent markdown project wiki stored under .omx/wiki with keyword search and lifecycle capture
|
|
4
|
+
triggers: ["wiki add", "wiki lint", "wiki query", "wiki read", "wiki delete"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Wiki
|
|
8
|
+
|
|
9
|
+
Persistent, self-maintained markdown knowledge base for project and session knowledge.
|
|
10
|
+
|
|
11
|
+
## Operations
|
|
12
|
+
|
|
13
|
+
### Ingest
|
|
14
|
+
```text
|
|
15
|
+
wiki_ingest({ title: "Auth Architecture", content: "...", tags: ["auth", "architecture"], category: "architecture" })
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Query
|
|
19
|
+
```text
|
|
20
|
+
wiki_query({ query: "authentication", tags: ["auth"], category: "architecture" })
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Lint
|
|
24
|
+
```text
|
|
25
|
+
wiki_lint()
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Quick Add
|
|
29
|
+
```text
|
|
30
|
+
wiki_add({ title: "Page Title", content: "...", tags: ["tag1"], category: "decision" })
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### List / Read / Delete
|
|
34
|
+
```text
|
|
35
|
+
wiki_list()
|
|
36
|
+
wiki_read({ page: "auth-architecture" })
|
|
37
|
+
wiki_delete({ page: "outdated-page" })
|
|
38
|
+
wiki_refresh()
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Categories
|
|
42
|
+
`architecture`, `decision`, `pattern`, `debugging`, `environment`, `session-log`, `reference`, `convention`
|
|
43
|
+
|
|
44
|
+
## Storage
|
|
45
|
+
- Pages: `.omx/wiki/*.md`
|
|
46
|
+
- Index: `.omx/wiki/index.md`
|
|
47
|
+
- Log: `.omx/wiki/log.md`
|
|
48
|
+
|
|
49
|
+
## Cross-References
|
|
50
|
+
Use `[[page-name]]` wiki-link syntax to create cross-references between pages.
|
|
51
|
+
|
|
52
|
+
## Auto-Capture
|
|
53
|
+
At session end, discoveries can be captured as `session-log-*` pages. Configure via `wiki.autoCapture` in `.omx-config.json`.
|
|
54
|
+
|
|
55
|
+
## Hard Constraints
|
|
56
|
+
- No vector embeddings — query uses keyword + tag matching only
|
|
57
|
+
- Wiki files remain local project state under `.omx/wiki/`
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: worker
|
|
3
|
+
description: Team worker protocol (ACK, mailbox, task lifecycle) for tmux-based OMX teams
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Worker Skill
|
|
7
|
+
|
|
8
|
+
This skill is for a Codex session that was started as an OMX Team worker (a tmux pane spawned by `$team`).
|
|
9
|
+
|
|
10
|
+
## Identity
|
|
11
|
+
|
|
12
|
+
You MUST be running with `OMX_TEAM_WORKER` set. It looks like:
|
|
13
|
+
|
|
14
|
+
`<team-name>/worker-<n>`
|
|
15
|
+
|
|
16
|
+
Example: `alpha/worker-2`
|
|
17
|
+
|
|
18
|
+
## Load Worker Skill Path (Claude/Codex)
|
|
19
|
+
|
|
20
|
+
When a worker inbox tells you to load this skill, resolve the first existing path:
|
|
21
|
+
|
|
22
|
+
1. `${CODEX_HOME:-~/.codex}/skills/worker/SKILL.md`
|
|
23
|
+
2. `~/.codex/skills/worker/SKILL.md`
|
|
24
|
+
3. `<leader_cwd>/.codex/skills/worker/SKILL.md`
|
|
25
|
+
4. `<leader_cwd>/skills/worker/SKILL.md` (repo fallback)
|
|
26
|
+
|
|
27
|
+
## Startup Protocol (ACK)
|
|
28
|
+
|
|
29
|
+
1. Parse `OMX_TEAM_WORKER` into:
|
|
30
|
+
- `teamName` (before the `/`)
|
|
31
|
+
- `workerName` (after the `/`, usually `worker-<n>`)
|
|
32
|
+
2. Send a startup ACK to the lead mailbox **before task work**:
|
|
33
|
+
- Recipient worker id: `leader-fixed`
|
|
34
|
+
- Body: one short deterministic line (recommended: `ACK: <workerName> initialized`).
|
|
35
|
+
3. After ACK, proceed to your inbox instructions.
|
|
36
|
+
|
|
37
|
+
The lead will see your message in:
|
|
38
|
+
|
|
39
|
+
`<team_state_root>/team/<teamName>/mailbox/leader-fixed.json`
|
|
40
|
+
|
|
41
|
+
Use CLI interop:
|
|
42
|
+
- `omx team api send-message --input <json> --json` with `{team_name, from_worker, to_worker:"leader-fixed", body}`
|
|
43
|
+
|
|
44
|
+
Copy/paste template:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
omx team api send-message --input "{\"team_name\":\"<teamName>\",\"from_worker\":\"<workerName>\",\"to_worker\":\"leader-fixed\",\"body\":\"ACK: <workerName> initialized\"}" --json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Inbox + Tasks
|
|
51
|
+
|
|
52
|
+
1. Resolve canonical team state root in this order:
|
|
53
|
+
1) `OMX_TEAM_STATE_ROOT` env
|
|
54
|
+
2) worker identity `team_state_root`
|
|
55
|
+
3) team config/manifest `team_state_root`
|
|
56
|
+
4) local cwd fallback (`.omx/state`)
|
|
57
|
+
2. Read your inbox:
|
|
58
|
+
`<team_state_root>/team/<teamName>/workers/<workerName>/inbox.md`
|
|
59
|
+
3. Pick the first unblocked task assigned to you.
|
|
60
|
+
4. Read the task file:
|
|
61
|
+
`<team_state_root>/team/<teamName>/tasks/task-<id>.json` (example: `task-1.json`)
|
|
62
|
+
5. Task id format:
|
|
63
|
+
- The MCP/state API uses the numeric id (`"1"`), not `"task-1"`.
|
|
64
|
+
- Never use legacy `tasks/{id}.json` wording.
|
|
65
|
+
6. Claim the task (do NOT start work without a claim) using claim-safe lifecycle CLI interop (`omx team api claim-task --json`).
|
|
66
|
+
7. Do the work.
|
|
67
|
+
8. Complete/fail the task via lifecycle transition CLI interop (`omx team api transition-task-status --json`) from `in_progress` to `completed` or `failed`.
|
|
68
|
+
- Do NOT directly write lifecycle fields (`status`, `owner`, `result`, `error`) in task files.
|
|
69
|
+
9. Use `omx team api release-task-claim --json` only for rollback/requeue to `pending` (not for completion).
|
|
70
|
+
10. Update your worker status:
|
|
71
|
+
`<team_state_root>/team/<teamName>/workers/<workerName>/status.json` with `{"state":"idle", ...}`
|
|
72
|
+
|
|
73
|
+
## Mailbox
|
|
74
|
+
|
|
75
|
+
Check your mailbox for messages:
|
|
76
|
+
|
|
77
|
+
`<team_state_root>/team/<teamName>/mailbox/<workerName>.json`
|
|
78
|
+
|
|
79
|
+
When notified, read messages and follow any instructions. Use short ACK replies when appropriate.
|
|
80
|
+
|
|
81
|
+
Note: leader dispatch is state-first. The durable queue lives at:
|
|
82
|
+
`<team_state_root>/team/<teamName>/dispatch/requests.json`
|
|
83
|
+
Hooks/watchers may nudge you after mailbox/inbox state is already written.
|
|
84
|
+
|
|
85
|
+
Use CLI interop:
|
|
86
|
+
- `omx team api mailbox-list --json` to read
|
|
87
|
+
- `omx team api mailbox-mark-delivered --json` to acknowledge delivery
|
|
88
|
+
|
|
89
|
+
Copy/paste templates:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
omx team api mailbox-list --input "{\"team_name\":\"<teamName>\",\"worker\":\"<workerName>\"}" --json
|
|
93
|
+
omx team api mailbox-mark-delivered --input "{\"team_name\":\"<teamName>\",\"worker\":\"<workerName>\",\"message_id\":\"<MESSAGE_ID>\"}" --json
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Dispatch Discipline (state-first)
|
|
97
|
+
|
|
98
|
+
Worker sessions should treat team state + CLI interop as the source of truth.
|
|
99
|
+
|
|
100
|
+
- Prefer inbox/mailbox/task state and `omx team api ... --json` operations.
|
|
101
|
+
- Do **not** rely on ad-hoc tmux keystrokes as a primary delivery channel.
|
|
102
|
+
- If a manual trigger arrives (for example `tmux send-keys` nudge), treat it only as a prompt to re-check state and continue through the normal claim-safe lifecycle.
|
|
103
|
+
|
|
104
|
+
## Shutdown
|
|
105
|
+
|
|
106
|
+
If the lead sends a shutdown request, follow the shutdown inbox instructions exactly, write your shutdown ack file, then exit the Codex session.
|