oh-my-codex 0.18.0 → 0.18.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 +6 -6
- package/Cargo.toml +1 -1
- package/README.md +45 -19
- package/crates/omx-api/src/lib.rs +66 -9
- package/crates/omx-sparkshell/src/exec.rs +125 -3
- package/crates/omx-sparkshell/src/main.rs +126 -36
- package/crates/omx-sparkshell/tests/execution.rs +225 -1
- package/dist/agents/__tests__/definitions.test.js +14 -0
- package/dist/agents/__tests__/definitions.test.js.map +1 -1
- package/dist/agents/__tests__/native-config.test.js +19 -0
- package/dist/agents/__tests__/native-config.test.js.map +1 -1
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +30 -0
- package/dist/agents/definitions.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 +4 -0
- package/dist/agents/native-config.js.map +1 -1
- package/dist/catalog/__tests__/generator.test.js +4 -0
- package/dist/catalog/__tests__/generator.test.js.map +1 -1
- package/dist/cli/__tests__/codex-plugin-layout.test.js +15 -7
- package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js +137 -8
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +203 -15
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/install-docs-contract.test.d.ts +2 -0
- package/dist/cli/__tests__/install-docs-contract.test.d.ts.map +1 -0
- package/dist/cli/__tests__/install-docs-contract.test.js +55 -0
- package/dist/cli/__tests__/install-docs-contract.test.js.map +1 -0
- package/dist/cli/__tests__/launch-fallback.test.js +163 -0
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/question.test.js +29 -43
- package/dist/cli/__tests__/question.test.js.map +1 -1
- package/dist/cli/__tests__/setup-install-mode.test.js +94 -35
- package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
- package/dist/cli/__tests__/sparkshell-cli.test.js +20 -1
- package/dist/cli/__tests__/sparkshell-cli.test.js.map +1 -1
- package/dist/cli/__tests__/sparkshell-packaging.test.js +1 -0
- package/dist/cli/__tests__/sparkshell-packaging.test.js.map +1 -1
- package/dist/cli/__tests__/ultragoal.test.js +227 -4
- package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
- package/dist/cli/__tests__/update.test.js +72 -1
- package/dist/cli/__tests__/update.test.js.map +1 -1
- package/dist/cli/codex-feature-probe.d.ts +5 -0
- package/dist/cli/codex-feature-probe.d.ts.map +1 -1
- package/dist/cli/codex-feature-probe.js +13 -7
- package/dist/cli/codex-feature-probe.js.map +1 -1
- package/dist/cli/doctor.d.ts +7 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +297 -17
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +9 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +465 -110
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/plugin-marketplace.d.ts +2 -0
- package/dist/cli/plugin-marketplace.d.ts.map +1 -1
- package/dist/cli/plugin-marketplace.js +15 -1
- package/dist/cli/plugin-marketplace.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +71 -11
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/sparkshell.d.ts +7 -1
- package/dist/cli/sparkshell.d.ts.map +1 -1
- package/dist/cli/sparkshell.js +13 -3
- package/dist/cli/sparkshell.js.map +1 -1
- package/dist/cli/ultragoal.d.ts +1 -1
- package/dist/cli/ultragoal.d.ts.map +1 -1
- package/dist/cli/ultragoal.js +184 -10
- package/dist/cli/ultragoal.js.map +1 -1
- package/dist/cli/update.d.ts +2 -0
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +14 -3
- package/dist/cli/update.js.map +1 -1
- package/dist/compat/__tests__/doctor-contract.test.js +3 -0
- package/dist/compat/__tests__/doctor-contract.test.js.map +1 -1
- package/dist/config/__tests__/codex-feature-flags.test.js +11 -1
- package/dist/config/__tests__/codex-feature-flags.test.js.map +1 -1
- package/dist/config/__tests__/codex-hooks.test.js +22 -11
- package/dist/config/__tests__/codex-hooks.test.js.map +1 -1
- package/dist/config/__tests__/commit-lore-guard.test.d.ts +2 -0
- package/dist/config/__tests__/commit-lore-guard.test.d.ts.map +1 -0
- package/dist/config/__tests__/commit-lore-guard.test.js +20 -0
- package/dist/config/__tests__/commit-lore-guard.test.js.map +1 -0
- package/dist/config/codex-feature-flags.d.ts +4 -0
- package/dist/config/codex-feature-flags.d.ts.map +1 -1
- package/dist/config/codex-feature-flags.js +4 -0
- package/dist/config/codex-feature-flags.js.map +1 -1
- package/dist/config/codex-hooks.d.ts +1 -0
- package/dist/config/codex-hooks.d.ts.map +1 -1
- package/dist/config/codex-hooks.js +8 -10
- package/dist/config/codex-hooks.js.map +1 -1
- package/dist/config/commit-lore-guard.d.ts +1 -0
- package/dist/config/commit-lore-guard.d.ts.map +1 -1
- package/dist/config/commit-lore-guard.js +29 -3
- package/dist/config/commit-lore-guard.js.map +1 -1
- package/dist/config/generator.d.ts +17 -1
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +124 -11
- package/dist/config/generator.js.map +1 -1
- package/dist/goal-workflows/__tests__/codex-goal-snapshot.test.js +21 -0
- package/dist/goal-workflows/__tests__/codex-goal-snapshot.test.js.map +1 -1
- package/dist/goal-workflows/codex-goal-snapshot.d.ts +4 -0
- package/dist/goal-workflows/codex-goal-snapshot.d.ts.map +1 -1
- package/dist/goal-workflows/codex-goal-snapshot.js +50 -3
- package/dist/goal-workflows/codex-goal-snapshot.js.map +1 -1
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js +27 -6
- package/dist/hooks/__tests__/autopilot-skill-contract.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 +13 -11
- package/dist/hooks/__tests__/consensus-execution-handoff.test.js.map +1 -1
- package/dist/hooks/__tests__/deep-interview-contract.test.js +4 -3
- package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +173 -17
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js +33 -0
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js.map +1 -1
- package/dist/hooks/__tests__/prometheus-strict-contract.test.d.ts +2 -0
- package/dist/hooks/__tests__/prometheus-strict-contract.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/prometheus-strict-contract.test.js +320 -0
- package/dist/hooks/__tests__/prometheus-strict-contract.test.js.map +1 -0
- package/dist/hooks/__tests__/prompt-guidance-wave-two.test.js +12 -0
- package/dist/hooks/__tests__/prompt-guidance-wave-two.test.js.map +1 -1
- package/dist/hooks/__tests__/research-workflow-boundaries.test.d.ts +2 -0
- package/dist/hooks/__tests__/research-workflow-boundaries.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/research-workflow-boundaries.test.js +35 -0
- package/dist/hooks/__tests__/research-workflow-boundaries.test.js.map +1 -0
- package/dist/hooks/extensibility/__tests__/dispatcher.test.js +26 -3
- package/dist/hooks/extensibility/__tests__/dispatcher.test.js.map +1 -1
- package/dist/hooks/extensibility/dispatcher.d.ts.map +1 -1
- package/dist/hooks/extensibility/dispatcher.js +29 -14
- package/dist/hooks/extensibility/dispatcher.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 +36 -9
- package/dist/hooks/keyword-detector.js.map +1 -1
- package/dist/hooks/keyword-registry.d.ts.map +1 -1
- package/dist/hooks/keyword-registry.js +1 -0
- package/dist/hooks/keyword-registry.js.map +1 -1
- package/dist/hooks/prompt-guidance-contract.d.ts.map +1 -1
- package/dist/hooks/prompt-guidance-contract.js +14 -2
- package/dist/hooks/prompt-guidance-contract.js.map +1 -1
- package/dist/hud/__tests__/hud-tmux-injection.test.js +36 -8
- package/dist/hud/__tests__/hud-tmux-injection.test.js.map +1 -1
- package/dist/hud/__tests__/reconcile.test.js +122 -11
- package/dist/hud/__tests__/reconcile.test.js.map +1 -1
- package/dist/hud/__tests__/render.test.js +84 -0
- package/dist/hud/__tests__/render.test.js.map +1 -1
- package/dist/hud/__tests__/resource-leak-watch.test.d.ts +2 -0
- package/dist/hud/__tests__/resource-leak-watch.test.d.ts.map +1 -0
- package/dist/hud/__tests__/resource-leak-watch.test.js +28 -0
- package/dist/hud/__tests__/resource-leak-watch.test.js.map +1 -0
- package/dist/hud/__tests__/state.test.js +51 -1
- package/dist/hud/__tests__/state.test.js.map +1 -1
- package/dist/hud/__tests__/tmux.test.js +69 -23
- package/dist/hud/__tests__/tmux.test.js.map +1 -1
- package/dist/hud/index.d.ts +2 -2
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +17 -6
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/reconcile.d.ts.map +1 -1
- package/dist/hud/reconcile.js +6 -3
- package/dist/hud/reconcile.js.map +1 -1
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +26 -0
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/state.d.ts +2 -1
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +62 -1
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/tmux.d.ts +10 -3
- package/dist/hud/tmux.d.ts.map +1 -1
- package/dist/hud/tmux.js +60 -11
- package/dist/hud/tmux.js.map +1 -1
- package/dist/hud/types.d.ts +22 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js.map +1 -1
- package/dist/notifications/__tests__/http-client-resource.test.d.ts +2 -0
- package/dist/notifications/__tests__/http-client-resource.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/http-client-resource.test.js +41 -0
- package/dist/notifications/__tests__/http-client-resource.test.js.map +1 -0
- package/dist/notifications/__tests__/verbosity.test.js +20 -0
- package/dist/notifications/__tests__/verbosity.test.js.map +1 -1
- package/dist/notifications/config.d.ts.map +1 -1
- package/dist/notifications/config.js +6 -3
- package/dist/notifications/config.js.map +1 -1
- package/dist/notifications/http-client.d.ts.map +1 -1
- package/dist/notifications/http-client.js +78 -27
- package/dist/notifications/http-client.js.map +1 -1
- package/dist/notifications/types.d.ts +2 -0
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/openclaw/__tests__/dispatcher.test.js +49 -1
- package/dist/openclaw/__tests__/dispatcher.test.js.map +1 -1
- package/dist/openclaw/dispatcher.d.ts +7 -4
- package/dist/openclaw/dispatcher.d.ts.map +1 -1
- package/dist/openclaw/dispatcher.js +32 -69
- package/dist/openclaw/dispatcher.js.map +1 -1
- package/dist/pipeline/__tests__/orchestrator.test.js +128 -4
- package/dist/pipeline/__tests__/orchestrator.test.js.map +1 -1
- package/dist/pipeline/__tests__/stages.test.js +460 -9
- package/dist/pipeline/__tests__/stages.test.js.map +1 -1
- package/dist/pipeline/index.d.ts +8 -2
- package/dist/pipeline/index.d.ts.map +1 -1
- package/dist/pipeline/index.js +5 -2
- package/dist/pipeline/index.js.map +1 -1
- package/dist/pipeline/orchestrator.d.ts +5 -4
- package/dist/pipeline/orchestrator.d.ts.map +1 -1
- package/dist/pipeline/orchestrator.js +85 -17
- package/dist/pipeline/orchestrator.js.map +1 -1
- package/dist/pipeline/stages/code-review.d.ts +2 -2
- package/dist/pipeline/stages/code-review.d.ts.map +1 -1
- package/dist/pipeline/stages/code-review.js +5 -3
- package/dist/pipeline/stages/code-review.js.map +1 -1
- package/dist/pipeline/stages/deep-interview.d.ts +15 -0
- package/dist/pipeline/stages/deep-interview.d.ts.map +1 -0
- package/dist/pipeline/stages/deep-interview.js +32 -0
- package/dist/pipeline/stages/deep-interview.js.map +1 -0
- package/dist/pipeline/stages/ralph-verify.d.ts +5 -5
- package/dist/pipeline/stages/ralph-verify.d.ts.map +1 -1
- package/dist/pipeline/stages/ralph-verify.js +2 -2
- package/dist/pipeline/stages/ralph-verify.js.map +1 -1
- package/dist/pipeline/stages/ralplan.d.ts.map +1 -1
- package/dist/pipeline/stages/ralplan.js +41 -6
- package/dist/pipeline/stages/ralplan.js.map +1 -1
- package/dist/pipeline/stages/ultragoal.d.ts +19 -0
- package/dist/pipeline/stages/ultragoal.d.ts.map +1 -0
- package/dist/pipeline/stages/ultragoal.js +38 -0
- package/dist/pipeline/stages/ultragoal.js.map +1 -0
- package/dist/pipeline/stages/ultraqa.d.ts +30 -0
- package/dist/pipeline/stages/ultraqa.d.ts.map +1 -0
- package/dist/pipeline/stages/ultraqa.js +46 -0
- package/dist/pipeline/stages/ultraqa.js.map +1 -0
- package/dist/pipeline/types.d.ts +8 -6
- package/dist/pipeline/types.d.ts.map +1 -1
- package/dist/pipeline/types.js +2 -2
- package/dist/question/__tests__/ui.test.js +43 -10
- package/dist/question/__tests__/ui.test.js.map +1 -1
- package/dist/question/ui.d.ts +12 -0
- package/dist/question/ui.d.ts.map +1 -1
- package/dist/question/ui.js +83 -46
- package/dist/question/ui.js.map +1 -1
- package/dist/ralplan/__tests__/runtime.test.js +200 -10
- package/dist/ralplan/__tests__/runtime.test.js.map +1 -1
- package/dist/ralplan/consensus-gate.d.ts +23 -0
- package/dist/ralplan/consensus-gate.d.ts.map +1 -0
- package/dist/ralplan/consensus-gate.js +212 -0
- package/dist/ralplan/consensus-gate.js.map +1 -0
- package/dist/ralplan/runtime.d.ts +25 -0
- package/dist/ralplan/runtime.d.ts.map +1 -1
- package/dist/ralplan/runtime.js +144 -8
- package/dist/ralplan/runtime.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +1358 -79
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/docs-site-contract.test.d.ts +2 -0
- package/dist/scripts/__tests__/docs-site-contract.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/docs-site-contract.test.js +42 -0
- package/dist/scripts/__tests__/docs-site-contract.test.js.map +1 -0
- package/dist/scripts/__tests__/notify-dispatcher.test.js +115 -2
- package/dist/scripts/__tests__/notify-dispatcher.test.js.map +1 -1
- package/dist/scripts/__tests__/run-test-files.test.js +57 -0
- package/dist/scripts/__tests__/run-test-files.test.js.map +1 -1
- package/dist/scripts/__tests__/smoke-packed-install.test.js +23 -1
- package/dist/scripts/__tests__/smoke-packed-install.test.js.map +1 -1
- package/dist/scripts/__tests__/verify-native-agents.test.js +18 -3
- package/dist/scripts/__tests__/verify-native-agents.test.js.map +1 -1
- package/dist/scripts/cleanup-explore-harness.js +1 -0
- package/dist/scripts/cleanup-explore-harness.js.map +1 -1
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +372 -44
- 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 +9 -1
- package/dist/scripts/codex-native-pre-post.js.map +1 -1
- package/dist/scripts/notify-dispatcher.js +188 -4
- package/dist/scripts/notify-dispatcher.js.map +1 -1
- package/dist/scripts/notify-hook/process-runner.d.ts.map +1 -1
- package/dist/scripts/notify-hook/process-runner.js +39 -17
- 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 +9 -5
- package/dist/scripts/notify-hook/team-dispatch.js.map +1 -1
- package/dist/scripts/notify-hook/team-tmux-guard.d.ts +1 -1
- package/dist/scripts/notify-hook/team-tmux-guard.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-tmux-guard.js +7 -1
- package/dist/scripts/notify-hook/team-tmux-guard.js.map +1 -1
- package/dist/scripts/run-test-files.js +13 -0
- 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 +99 -1
- package/dist/scripts/smoke-packed-install.js.map +1 -1
- package/dist/scripts/sync-plugin-mirror.js +2 -2
- package/dist/scripts/sync-plugin-mirror.js.map +1 -1
- package/dist/scripts/verify-native-agents.js +2 -2
- package/dist/scripts/verify-native-agents.js.map +1 -1
- package/dist/sidecar/__tests__/resource-leak-watch.test.d.ts +2 -0
- package/dist/sidecar/__tests__/resource-leak-watch.test.d.ts.map +1 -0
- package/dist/sidecar/__tests__/resource-leak-watch.test.js +38 -0
- package/dist/sidecar/__tests__/resource-leak-watch.test.js.map +1 -0
- package/dist/sidecar/index.d.ts +1 -1
- package/dist/sidecar/index.d.ts.map +1 -1
- package/dist/sidecar/index.js +29 -12
- package/dist/sidecar/index.js.map +1 -1
- package/dist/state/__tests__/operations-ralph-phase.test.js +88 -1
- package/dist/state/__tests__/operations-ralph-phase.test.js.map +1 -1
- package/dist/state/__tests__/workflow-transition.test.js +6 -0
- package/dist/state/__tests__/workflow-transition.test.js.map +1 -1
- package/dist/state/operations.d.ts.map +1 -1
- package/dist/state/operations.js +11 -0
- package/dist/state/operations.js.map +1 -1
- package/dist/state/workflow-transition.d.ts +1 -1
- package/dist/state/workflow-transition.d.ts.map +1 -1
- package/dist/state/workflow-transition.js +7 -0
- package/dist/state/workflow-transition.js.map +1 -1
- package/dist/subagents/tracker.d.ts.map +1 -1
- package/dist/subagents/tracker.js +4 -3
- package/dist/subagents/tracker.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +36 -44
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +163 -15
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +10 -20
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +51 -21
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/ultragoal/__tests__/artifacts.test.js +764 -10
- package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
- package/dist/ultragoal/__tests__/docs-contract.test.js +57 -1
- package/dist/ultragoal/__tests__/docs-contract.test.js.map +1 -1
- package/dist/ultragoal/__tests__/steering-fixtures.d.ts +68 -0
- package/dist/ultragoal/__tests__/steering-fixtures.d.ts.map +1 -0
- package/dist/ultragoal/__tests__/steering-fixtures.js +259 -0
- package/dist/ultragoal/__tests__/steering-fixtures.js.map +1 -0
- package/dist/ultragoal/__tests__/steering-fixtures.test.d.ts +2 -0
- package/dist/ultragoal/__tests__/steering-fixtures.test.d.ts.map +1 -0
- package/dist/ultragoal/__tests__/steering-fixtures.test.js +65 -0
- package/dist/ultragoal/__tests__/steering-fixtures.test.js.map +1 -0
- package/dist/ultragoal/artifacts.d.ts +97 -2
- package/dist/ultragoal/artifacts.d.ts.map +1 -1
- package/dist/ultragoal/artifacts.js +837 -256
- package/dist/ultragoal/artifacts.js.map +1 -1
- package/dist/utils/__tests__/sleep-resource.test.d.ts +2 -0
- package/dist/utils/__tests__/sleep-resource.test.d.ts.map +1 -0
- package/dist/utils/__tests__/sleep-resource.test.js +39 -0
- package/dist/utils/__tests__/sleep-resource.test.js.map +1 -0
- package/dist/utils/sleep.d.ts.map +1 -1
- package/dist/utils/sleep.js +17 -6
- package/dist/utils/sleep.js.map +1 -1
- package/package.json +2 -1
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +4 -3
- package/plugins/oh-my-codex/hooks/codex-native-hook.mjs +56 -0
- package/plugins/oh-my-codex/hooks/hooks.json +77 -0
- package/plugins/oh-my-codex/skills/autopilot/SKILL.md +92 -50
- package/plugins/oh-my-codex/skills/autoresearch/SKILL.md +4 -0
- package/plugins/oh-my-codex/skills/autoresearch-goal/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/best-practice-research/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/cancel/SKILL.md +2 -2
- package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +8 -8
- package/plugins/oh-my-codex/skills/omx-setup/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/pipeline/SKILL.md +23 -12
- package/plugins/oh-my-codex/skills/plan/SKILL.md +8 -8
- package/plugins/oh-my-codex/skills/prometheus-strict/README.md +35 -0
- package/plugins/oh-my-codex/skills/prometheus-strict/SKILL.md +219 -0
- package/plugins/oh-my-codex/skills/ralph/SKILL.md +7 -0
- package/plugins/oh-my-codex/skills/ralplan/SKILL.md +22 -7
- package/plugins/oh-my-codex/skills/team/SKILL.md +1 -1
- package/plugins/oh-my-codex/skills/ultragoal/SKILL.md +38 -4
- package/plugins/oh-my-codex/skills/ultrawork/SKILL.md +1 -1
- package/prompts/planner.md +1 -1
- package/prompts/prometheus-strict-metis.md +274 -0
- package/prompts/prometheus-strict-momus.md +82 -0
- package/prompts/prometheus-strict-oracle.md +107 -0
- package/prompts/researcher.md +22 -3
- package/skills/autopilot/SKILL.md +92 -50
- package/skills/autoresearch/SKILL.md +4 -0
- package/skills/autoresearch-goal/SKILL.md +1 -1
- package/skills/best-practice-research/SKILL.md +1 -1
- package/skills/cancel/SKILL.md +2 -2
- package/skills/deep-interview/SKILL.md +8 -8
- package/skills/omx-setup/SKILL.md +1 -1
- package/skills/pipeline/SKILL.md +23 -12
- package/skills/plan/SKILL.md +8 -8
- package/skills/prometheus-strict/README.md +35 -0
- package/skills/prometheus-strict/SKILL.md +219 -0
- package/skills/ralph/SKILL.md +7 -0
- package/skills/ralplan/SKILL.md +22 -7
- package/skills/team/SKILL.md +1 -1
- package/skills/ultragoal/SKILL.md +38 -4
- package/skills/ultrawork/SKILL.md +1 -1
- package/src/scripts/__tests__/codex-native-hook.test.ts +1757 -210
- package/src/scripts/__tests__/docs-site-contract.test.ts +47 -0
- package/src/scripts/__tests__/notify-dispatcher.test.ts +132 -3
- package/src/scripts/__tests__/run-test-files.test.ts +67 -0
- package/src/scripts/__tests__/smoke-packed-install.test.ts +31 -0
- package/src/scripts/__tests__/verify-native-agents.test.ts +23 -3
- package/src/scripts/cleanup-explore-harness.ts +1 -0
- package/src/scripts/codex-native-hook.ts +393 -40
- package/src/scripts/codex-native-pre-post.ts +16 -1
- package/src/scripts/notify-dispatcher.ts +202 -4
- package/src/scripts/notify-hook/process-runner.ts +40 -16
- package/src/scripts/notify-hook/team-dispatch.ts +9 -5
- package/src/scripts/notify-hook/team-tmux-guard.ts +7 -0
- package/src/scripts/run-test-files.ts +13 -0
- package/src/scripts/smoke-packed-install.ts +105 -0
- package/src/scripts/sync-plugin-mirror.ts +3 -3
- package/src/scripts/verify-native-agents.ts +2 -2
- package/templates/catalog-manifest.json +22 -0
|
@@ -133,19 +133,18 @@ describe('HUD resize hook command builders', () => {
|
|
|
133
133
|
assert.equal(buildHudPaneTarget('%41'), '%41');
|
|
134
134
|
assert.equal(buildHudPaneTarget('41'), '%41');
|
|
135
135
|
});
|
|
136
|
-
it('buildRegisterResizeHookArgs uses
|
|
136
|
+
it('buildRegisterResizeHookArgs uses target and numeric client-resized hook slot', () => {
|
|
137
137
|
const args = buildRegisterResizeHookArgs('my-session:0', 'omx_resize_team_session_0_1', '%1');
|
|
138
138
|
assert.equal(args[0], 'set-hook');
|
|
139
|
-
assert.equal(args[1], '-
|
|
140
|
-
assert.equal(args[2], '-
|
|
141
|
-
assert.
|
|
142
|
-
assert.
|
|
143
|
-
assert.equal(args[5], `run-shell -b 'tmux resize-pane -t %1 -y ${HUD_TMUX_TEAM_HEIGHT_LINES} >/dev/null 2>&1 || true; sleep ${HUD_RESIZE_RECONCILE_DELAY_SECONDS}; tmux resize-pane -t %1 -y ${HUD_TMUX_TEAM_HEIGHT_LINES} >/dev/null 2>&1 || true'`);
|
|
139
|
+
assert.equal(args[1], '-t');
|
|
140
|
+
assert.equal(args[2], 'my-session:0');
|
|
141
|
+
assert.match(args[3] ?? '', /^client-resized\[\d+\]$/);
|
|
142
|
+
assert.equal(args[4], `run-shell -b 'tmux resize-pane -t %1 -y ${HUD_TMUX_TEAM_HEIGHT_LINES} >/dev/null 2>&1 || true; sleep ${HUD_RESIZE_RECONCILE_DELAY_SECONDS}; tmux resize-pane -t %1 -y ${HUD_TMUX_TEAM_HEIGHT_LINES} >/dev/null 2>&1 || true'`);
|
|
144
143
|
});
|
|
145
144
|
it('buildUnregisterResizeHookArgs removes the exact numeric hook slot', () => {
|
|
146
145
|
const registered = buildRegisterResizeHookArgs('my-session:0', 'omx_resize_team_session_0_1', '%1');
|
|
147
146
|
const unregistered = buildUnregisterResizeHookArgs('my-session:0', 'omx_resize_team_session_0_1');
|
|
148
|
-
assert.deepEqual(unregistered, ['set-hook', '-u', '-
|
|
147
|
+
assert.deepEqual(unregistered, ['set-hook', '-u', '-t', 'my-session:0', registered[3]]);
|
|
149
148
|
});
|
|
150
149
|
it('buildClientAttachedReconcileHookName normalizes all segments into collision-safe tokens', () => {
|
|
151
150
|
const name = buildClientAttachedReconcileHookName('Team A', 'Session:Main', '0', '%12');
|
|
@@ -170,7 +169,7 @@ describe('HUD resize hook command builders', () => {
|
|
|
170
169
|
const longName = 'omx_resize_' + 'a'.repeat(200);
|
|
171
170
|
const resizeArgs = buildRegisterResizeHookArgs('sess:0', longName, '%1');
|
|
172
171
|
const attachedArgs = buildRegisterClientAttachedReconcileArgs('sess:0', longName, '%1');
|
|
173
|
-
const resizeSlot = resizeArgs[
|
|
172
|
+
const resizeSlot = resizeArgs[3] ?? '';
|
|
174
173
|
const attachedSlot = attachedArgs[3] ?? '';
|
|
175
174
|
const resizeIndex = Number((resizeSlot.match(/\[(\d+)\]/) ?? [])[1]);
|
|
176
175
|
const attachedIndex = Number((attachedSlot.match(/\[(\d+)\]/) ?? [])[1]);
|
|
@@ -183,7 +182,7 @@ describe('HUD resize hook command builders', () => {
|
|
|
183
182
|
const name = 'omx_resize_team_session_0_1';
|
|
184
183
|
const a = buildRegisterResizeHookArgs('s:0', name, '%1');
|
|
185
184
|
const b = buildRegisterResizeHookArgs('s:0', name, '%1');
|
|
186
|
-
assert.equal(a[
|
|
185
|
+
assert.equal(a[3], b[3]);
|
|
187
186
|
const c = buildRegisterClientAttachedReconcileArgs('s:0', name, '%1');
|
|
188
187
|
const d = buildRegisterClientAttachedReconcileArgs('s:0', name, '%1');
|
|
189
188
|
assert.equal(c[3], d[3]);
|
|
@@ -210,8 +209,8 @@ describe('HUD resize hook command builders', () => {
|
|
|
210
209
|
const resizeArgs = buildRegisterResizeHookArgs('my-session:0', 'omx_resize_team_session_0_1', '%1');
|
|
211
210
|
const delayedArgs = buildScheduleDelayedHudResizeArgs('%1');
|
|
212
211
|
const reconcileArgs = buildReconcileHudResizeArgs('%1');
|
|
213
|
-
assert.match(resizeArgs[
|
|
214
|
-
assert.doesNotMatch(resizeArgs[
|
|
212
|
+
assert.match(resizeArgs[4] ?? '', new RegExp(escapeRegExp(tmuxPath)));
|
|
213
|
+
assert.doesNotMatch(resizeArgs[4] ?? '', /^run-shell -b 'tmux resize-pane/);
|
|
215
214
|
assert.match(delayedArgs[2] ?? '', new RegExp(escapeRegExp(tmuxPath)));
|
|
216
215
|
assert.doesNotMatch(delayedArgs[2] ?? '', /sleep \d+; tmux resize-pane/);
|
|
217
216
|
assert.match(reconcileArgs[1] ?? '', new RegExp(escapeRegExp(tmuxPath)));
|
|
@@ -2944,7 +2943,7 @@ esac
|
|
|
2944
2943
|
assert.match(tmuxLog, /set-option -p -t %1 @omx_pane_instance_id omx-pane-scope/);
|
|
2945
2944
|
assert.match(tmuxLog, /set-option -p -t %2 @omx_pane_instance_id omx-pane-scope/);
|
|
2946
2945
|
assert.match(tmuxLog, /set-option -p -t %3 @omx_pane_instance_id omx-pane-scope/);
|
|
2947
|
-
assert.match(tmuxLog, /OMX_TMUX_HUD_OWNER=1 .*hud --watch/);
|
|
2946
|
+
assert.match(tmuxLog, /exec env OMX_TMUX_HUD_OWNER=1 .*hud --watch/);
|
|
2948
2947
|
});
|
|
2949
2948
|
}
|
|
2950
2949
|
finally {
|
|
@@ -2967,6 +2966,119 @@ esac
|
|
|
2967
2966
|
await rm(cwd, { recursive: true, force: true });
|
|
2968
2967
|
}
|
|
2969
2968
|
});
|
|
2969
|
+
it('uses tmux 3.2a-compatible client-resized hook registration for team HUD resize', async () => {
|
|
2970
|
+
const cwd = await mkdtemp(join(tmpdir(), 'omx-team-resize-hook-fallback-'));
|
|
2971
|
+
const prevTmux = process.env.TMUX;
|
|
2972
|
+
const prevTmuxPane = process.env.TMUX_PANE;
|
|
2973
|
+
const prevWorkerCli = process.env.OMX_TEAM_WORKER_CLI;
|
|
2974
|
+
const prevWarn = console.warn;
|
|
2975
|
+
const warnings = [];
|
|
2976
|
+
try {
|
|
2977
|
+
await withMockTmuxFixture('omx-tmux-resize-hook-fallback-', (logPath) => `#!/bin/sh
|
|
2978
|
+
set -eu
|
|
2979
|
+
printf '%s\n' "$*" >> "${logPath}"
|
|
2980
|
+
case "\${1:-}" in
|
|
2981
|
+
-V)
|
|
2982
|
+
echo "tmux 3.2a"
|
|
2983
|
+
exit 0
|
|
2984
|
+
;;
|
|
2985
|
+
display-message)
|
|
2986
|
+
case "$*" in
|
|
2987
|
+
*"#{window_width}"*)
|
|
2988
|
+
echo "120"
|
|
2989
|
+
;;
|
|
2990
|
+
*)
|
|
2991
|
+
echo "leader:0 %1"
|
|
2992
|
+
;;
|
|
2993
|
+
esac
|
|
2994
|
+
exit 0
|
|
2995
|
+
;;
|
|
2996
|
+
list-panes)
|
|
2997
|
+
case "$*" in
|
|
2998
|
+
*"pane_current_command"*)
|
|
2999
|
+
printf "%%1\tnode\t'codex'\n"
|
|
3000
|
+
;;
|
|
3001
|
+
*)
|
|
3002
|
+
printf "%%1\n"
|
|
3003
|
+
;;
|
|
3004
|
+
esac
|
|
3005
|
+
exit 0
|
|
3006
|
+
;;
|
|
3007
|
+
split-window)
|
|
3008
|
+
case "$*" in
|
|
3009
|
+
*" -h "*)
|
|
3010
|
+
echo "%2"
|
|
3011
|
+
;;
|
|
3012
|
+
*)
|
|
3013
|
+
echo "%3"
|
|
3014
|
+
;;
|
|
3015
|
+
esac
|
|
3016
|
+
exit 0
|
|
3017
|
+
;;
|
|
3018
|
+
set-hook)
|
|
3019
|
+
case "$*" in
|
|
3020
|
+
*"window-resized["*)
|
|
3021
|
+
echo "invalid option: window-resized[]" >&2
|
|
3022
|
+
exit 1
|
|
3023
|
+
;;
|
|
3024
|
+
*" -w "*)
|
|
3025
|
+
echo "invalid option: -w" >&2
|
|
3026
|
+
exit 1
|
|
3027
|
+
;;
|
|
3028
|
+
*)
|
|
3029
|
+
exit 0
|
|
3030
|
+
;;
|
|
3031
|
+
esac
|
|
3032
|
+
;;
|
|
3033
|
+
set-option|resize-pane|select-layout|set-window-option|select-pane|run-shell)
|
|
3034
|
+
exit 0
|
|
3035
|
+
;;
|
|
3036
|
+
*)
|
|
3037
|
+
exit 0
|
|
3038
|
+
;;
|
|
3039
|
+
esac
|
|
3040
|
+
`, async ({ logPath }) => {
|
|
3041
|
+
const fakeBinDir = join(logPath, '..');
|
|
3042
|
+
const geminiPath = join(fakeBinDir, 'gemini');
|
|
3043
|
+
await writeFile(geminiPath, '#!/bin/sh\nexit 0\n');
|
|
3044
|
+
await chmod(geminiPath, 0o755);
|
|
3045
|
+
process.env.TMUX = 'leader-session,stub,0';
|
|
3046
|
+
process.env.TMUX_PANE = '%1';
|
|
3047
|
+
process.env.OMX_TEAM_WORKER_CLI = 'gemini';
|
|
3048
|
+
console.warn = (...args) => { warnings.push(args.map(String).join(' ')); };
|
|
3049
|
+
const session = createTeamSession('Resize Hook Fallback', 1, cwd);
|
|
3050
|
+
assert.equal(session.hudPaneId, '%3');
|
|
3051
|
+
assert.ok(session.resizeHookName);
|
|
3052
|
+
assert.equal(session.resizeHookTarget, 'leader:0');
|
|
3053
|
+
assert.equal(warnings.join('\n'), '');
|
|
3054
|
+
const tmuxLog = await readFile(logPath, 'utf-8');
|
|
3055
|
+
assert.match(tmuxLog, /set-hook -t leader:0 client-resized\[\d+\]/);
|
|
3056
|
+
assert.doesNotMatch(tmuxLog, /window-resized\[/);
|
|
3057
|
+
assert.doesNotMatch(tmuxLog, /set-hook -w /);
|
|
3058
|
+
assert.match(tmuxLog, /set-hook -t leader:0 client-attached\[\d+\]/);
|
|
3059
|
+
assert.match(tmuxLog, new RegExp(`run-shell -b sleep ${HUD_RESIZE_RECONCILE_DELAY_SECONDS}; .*resize-pane -t %3 -y ${HUD_TMUX_TEAM_HEIGHT_LINES}`));
|
|
3060
|
+
assert.match(tmuxLog, new RegExp(`run-shell .*resize-pane -t %3 -y ${HUD_TMUX_TEAM_HEIGHT_LINES}`));
|
|
3061
|
+
assert.doesNotMatch(tmuxLog, /kill-pane -t %2/);
|
|
3062
|
+
assert.doesNotMatch(tmuxLog, /kill-pane -t %3/);
|
|
3063
|
+
});
|
|
3064
|
+
}
|
|
3065
|
+
finally {
|
|
3066
|
+
console.warn = prevWarn;
|
|
3067
|
+
if (typeof prevTmux === 'string')
|
|
3068
|
+
process.env.TMUX = prevTmux;
|
|
3069
|
+
else
|
|
3070
|
+
delete process.env.TMUX;
|
|
3071
|
+
if (typeof prevTmuxPane === 'string')
|
|
3072
|
+
process.env.TMUX_PANE = prevTmuxPane;
|
|
3073
|
+
else
|
|
3074
|
+
delete process.env.TMUX_PANE;
|
|
3075
|
+
if (typeof prevWorkerCli === 'string')
|
|
3076
|
+
process.env.OMX_TEAM_WORKER_CLI = prevWorkerCli;
|
|
3077
|
+
else
|
|
3078
|
+
delete process.env.OMX_TEAM_WORKER_CLI;
|
|
3079
|
+
await rm(cwd, { recursive: true, force: true });
|
|
3080
|
+
}
|
|
3081
|
+
});
|
|
2970
3082
|
});
|
|
2971
3083
|
describe('native Windows HUD reconciliation', () => {
|
|
2972
3084
|
it('allows team startup on native Windows when current tmux client is reachable without TMUX env vars', async () => {
|
|
@@ -3167,7 +3279,8 @@ esac
|
|
|
3167
3279
|
assert.equal(session.resizeHookTarget, null);
|
|
3168
3280
|
const tmuxLog = await readFile(logPath, 'utf-8');
|
|
3169
3281
|
assert.match(tmuxLog, new RegExp(`resize-pane -t %3 -y ${HUD_TMUX_TEAM_HEIGHT_LINES}`));
|
|
3170
|
-
assert.doesNotMatch(tmuxLog, /set-hook -w
|
|
3282
|
+
assert.doesNotMatch(tmuxLog, /set-hook -w /);
|
|
3283
|
+
assert.doesNotMatch(tmuxLog, /window-resized\[/);
|
|
3171
3284
|
assert.doesNotMatch(tmuxLog, /set-hook -t leader:0 client-attached\[\d+\]/);
|
|
3172
3285
|
assert.doesNotMatch(tmuxLog, /run-shell -b sleep \d+; tmux resize-pane -t %3 -y \d+ >/);
|
|
3173
3286
|
assert.doesNotMatch(tmuxLog, /run-shell tmux resize-pane -t %3 -y \d+ >/);
|
|
@@ -3428,7 +3541,7 @@ esac
|
|
|
3428
3541
|
const tmuxLog = await readFile(logPath, 'utf-8');
|
|
3429
3542
|
assert.match(tmuxLog, new RegExp(escapeRegExp(launcherPath)));
|
|
3430
3543
|
assert.doesNotMatch(tmuxLog, /'dist\/cli\/omx\.js' hud --watch/);
|
|
3431
|
-
assert.match(tmuxLog, /OMX_TMUX_HUD_OWNER=1 .*hud --watch/);
|
|
3544
|
+
assert.match(tmuxLog, /exec env OMX_TMUX_HUD_OWNER=1 .*hud --watch/);
|
|
3432
3545
|
});
|
|
3433
3546
|
}
|
|
3434
3547
|
finally {
|
|
@@ -3471,7 +3584,7 @@ esac
|
|
|
3471
3584
|
const tmuxLog = await readFile(logPath, 'utf-8');
|
|
3472
3585
|
assert.match(tmuxLog, /dist\/cli\/omx\.js' hud --watch/);
|
|
3473
3586
|
assert.doesNotMatch(tmuxLog, /\/tmp\/codex-host-binary' hud --watch/);
|
|
3474
|
-
assert.match(tmuxLog, /OMX_TMUX_HUD_OWNER=1 .*hud --watch/);
|
|
3587
|
+
assert.match(tmuxLog, /exec env OMX_TMUX_HUD_OWNER=1 .*hud --watch/);
|
|
3475
3588
|
});
|
|
3476
3589
|
}
|
|
3477
3590
|
finally {
|
|
@@ -3479,6 +3592,41 @@ esac
|
|
|
3479
3592
|
await rm(cwd, { recursive: true, force: true });
|
|
3480
3593
|
}
|
|
3481
3594
|
});
|
|
3595
|
+
it('restores standalone HUD panes with OMX_ROOT forwarded and shell-escaped', async () => {
|
|
3596
|
+
const cwd = await mkdtemp(join(tmpdir(), 'omx-standalone-root-hud-'));
|
|
3597
|
+
const previousOmxRoot = process.env.OMX_ROOT;
|
|
3598
|
+
try {
|
|
3599
|
+
await withMockTmuxFixture('omx-tmux-root-standalone-hud-', (logPath) => `#!/bin/sh
|
|
3600
|
+
set -eu
|
|
3601
|
+
printf '%s\\n' "$*" >> "${logPath}"
|
|
3602
|
+
case "\${1:-}" in
|
|
3603
|
+
split-window)
|
|
3604
|
+
echo "%44"
|
|
3605
|
+
exit 0
|
|
3606
|
+
;;
|
|
3607
|
+
run-shell|select-pane|resize-pane|set-hook)
|
|
3608
|
+
exit 0
|
|
3609
|
+
;;
|
|
3610
|
+
*)
|
|
3611
|
+
exit 0
|
|
3612
|
+
;;
|
|
3613
|
+
esac
|
|
3614
|
+
`, async ({ logPath }) => {
|
|
3615
|
+
process.env.OMX_ROOT = "/tmp/boxed root/it's/$(literal)";
|
|
3616
|
+
const paneId = restoreStandaloneHudPane('%11', cwd);
|
|
3617
|
+
assert.equal(paneId, '%44');
|
|
3618
|
+
const tmuxLog = await readFile(logPath, 'utf-8');
|
|
3619
|
+
assert.match(tmuxLog, /exec env OMX_TMUX_HUD_OWNER=1 OMX_ROOT='\/tmp\/boxed root\/it'\\''s\/\$\(literal\)' .*hud --watch/);
|
|
3620
|
+
});
|
|
3621
|
+
}
|
|
3622
|
+
finally {
|
|
3623
|
+
if (typeof previousOmxRoot === 'string')
|
|
3624
|
+
process.env.OMX_ROOT = previousOmxRoot;
|
|
3625
|
+
else
|
|
3626
|
+
delete process.env.OMX_ROOT;
|
|
3627
|
+
await rm(cwd, { recursive: true, force: true });
|
|
3628
|
+
}
|
|
3629
|
+
});
|
|
3482
3630
|
});
|
|
3483
3631
|
describe('dismissTrustPromptIfPresent capture shape', () => {
|
|
3484
3632
|
it('uses visible capture-pane argv without tail flags', async () => {
|