oh-my-codex 0.20.1 → 0.20.3
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 +7 -6
- package/Cargo.toml +1 -1
- package/README.md +36 -1
- package/crates/omx-runtime/Cargo.toml +1 -0
- package/crates/omx-runtime/src/main.rs +25 -2
- package/crates/omx-runtime/tests/execution.rs +219 -0
- package/crates/omx-runtime-core/src/dispatch.rs +96 -10
- package/crates/omx-runtime-core/src/engine.rs +839 -29
- package/crates/omx-runtime-core/src/lib.rs +8 -0
- package/dist/adapt/__tests__/hermes.test.js.map +1 -1
- package/dist/adapt/contracts.d.ts.map +1 -1
- package/dist/agents/__tests__/definitions.test.js +81 -0
- package/dist/agents/__tests__/definitions.test.js.map +1 -1
- package/dist/agents/__tests__/native-config.test.js +25 -0
- package/dist/agents/__tests__/native-config.test.js.map +1 -1
- package/dist/agents/native-config.d.ts +2 -1
- package/dist/agents/native-config.d.ts.map +1 -1
- package/dist/agents/native-config.js.map +1 -1
- package/dist/auth/__tests__/hotswap.test.d.ts +2 -0
- package/dist/auth/__tests__/hotswap.test.d.ts.map +1 -0
- package/dist/auth/__tests__/hotswap.test.js +183 -0
- package/dist/auth/__tests__/hotswap.test.js.map +1 -0
- package/dist/auth/hotswap.d.ts +6 -0
- package/dist/auth/hotswap.d.ts.map +1 -1
- package/dist/auth/hotswap.js +102 -19
- package/dist/auth/hotswap.js.map +1 -1
- package/dist/auth/paths.js.map +1 -1
- package/dist/auth/storage.js.map +1 -1
- package/dist/autopilot/__tests__/ralplan-gate.test.js +5 -5
- package/dist/autopilot/__tests__/ralplan-gate.test.js.map +1 -1
- package/dist/autopilot/completion-gate.js.map +1 -1
- package/dist/autopilot/fsm.d.ts +1 -1
- package/dist/autopilot/fsm.d.ts.map +1 -1
- package/dist/autoresearch/goal.js.map +1 -1
- package/dist/autoresearch/runtime.js.map +1 -1
- package/dist/capabilities/lockfile.js.map +1 -1
- package/dist/catalog/reader.js.map +1 -1
- package/dist/catalog/skill-mirror.js.map +1 -1
- package/dist/cli/__tests__/adapt-help.test.js.map +1 -1
- package/dist/cli/__tests__/agents-init.test.js.map +1 -1
- package/dist/cli/__tests__/agents.test.js.map +1 -1
- package/dist/cli/__tests__/api.test.js.map +1 -1
- package/dist/cli/__tests__/ask.test.js.map +1 -1
- package/dist/cli/__tests__/auth.test.js +60 -6
- package/dist/cli/__tests__/auth.test.js.map +1 -1
- package/dist/cli/__tests__/autoresearch-guided.test.js.map +1 -1
- package/dist/cli/__tests__/autoresearch.test.js.map +1 -1
- package/dist/cli/__tests__/capabilities.test.js.map +1 -1
- package/dist/cli/__tests__/codex-plugin-layout.test.js +80 -0
- package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-context-window-warning.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-invalid-config.test.js +47 -4
- package/dist/cli/__tests__/doctor-invalid-config.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-team.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js +752 -15
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/exec.test.js +136 -0
- package/dist/cli/__tests__/exec.test.js.map +1 -1
- package/dist/cli/__tests__/imagegen-continuation.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +473 -14
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/launch-fallback.test.js +336 -4
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/mcp-parity.test.js +87 -12
- package/dist/cli/__tests__/mcp-parity.test.js.map +1 -1
- package/dist/cli/__tests__/native-hook-claim-journal.test.d.ts +2 -0
- package/dist/cli/__tests__/native-hook-claim-journal.test.d.ts.map +1 -0
- package/dist/cli/__tests__/native-hook-claim-journal.test.js +206 -0
- package/dist/cli/__tests__/native-hook-claim-journal.test.js.map +1 -0
- package/dist/cli/__tests__/nested-help-routing.test.js.map +1 -1
- package/dist/cli/__tests__/question.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-deslop-contract.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-goal-mode-contract.test.js +6 -0
- package/dist/cli/__tests__/ralph-goal-mode-contract.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-prd-deep-interview.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-prd-smoke.test.js.map +1 -1
- package/dist/cli/__tests__/ralph.test.js +8 -3
- package/dist/cli/__tests__/ralph.test.js.map +1 -1
- package/dist/cli/__tests__/ralplan-bootstrap-3181.test.d.ts +2 -0
- package/dist/cli/__tests__/ralplan-bootstrap-3181.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ralplan-bootstrap-3181.test.js +72 -0
- package/dist/cli/__tests__/ralplan-bootstrap-3181.test.js.map +1 -0
- package/dist/cli/__tests__/ralplan.test.d.ts +2 -0
- package/dist/cli/__tests__/ralplan.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ralplan.test.js +55 -0
- package/dist/cli/__tests__/ralplan.test.js.map +1 -0
- package/dist/cli/__tests__/resume.test.js +17 -11
- package/dist/cli/__tests__/resume.test.js.map +1 -1
- package/dist/cli/__tests__/session-scoped-runtime.test.js +25 -0
- package/dist/cli/__tests__/session-scoped-runtime.test.js.map +1 -1
- package/dist/cli/__tests__/session-search-help.test.js +25 -1
- package/dist/cli/__tests__/session-search-help.test.js.map +1 -1
- package/dist/cli/__tests__/session-search.test.js.map +1 -1
- package/dist/cli/__tests__/setup-agents-overwrite.test.js +79 -0
- package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-gh-star.test.js.map +1 -1
- package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js +77 -3
- package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js.map +1 -1
- package/dist/cli/__tests__/setup-hooks-trust-e2e.test.d.ts +2 -0
- package/dist/cli/__tests__/setup-hooks-trust-e2e.test.d.ts.map +1 -0
- package/dist/cli/__tests__/setup-hooks-trust-e2e.test.js +285 -0
- package/dist/cli/__tests__/setup-hooks-trust-e2e.test.js.map +1 -0
- package/dist/cli/__tests__/setup-install-mode.test.js +2579 -294
- package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
- package/dist/cli/__tests__/setup-preferences.test.d.ts +2 -0
- package/dist/cli/__tests__/setup-preferences.test.d.ts.map +1 -0
- package/dist/cli/__tests__/setup-preferences.test.js +79 -0
- package/dist/cli/__tests__/setup-preferences.test.js.map +1 -0
- package/dist/cli/__tests__/setup-refresh.test.js +33 -2
- package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
- package/dist/cli/__tests__/setup-scope.test.js +46 -3
- package/dist/cli/__tests__/setup-scope.test.js.map +1 -1
- package/dist/cli/__tests__/sparkshell-cli.test.js.map +1 -1
- package/dist/cli/__tests__/state.test.js +37 -0
- package/dist/cli/__tests__/state.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.js +105 -7
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/__tests__/ultragoal.test.js +61 -1
- package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
- package/dist/cli/__tests__/uninstall.test.js +1817 -24
- package/dist/cli/__tests__/uninstall.test.js.map +1 -1
- package/dist/cli/__tests__/update.test.js +58 -0
- package/dist/cli/__tests__/update.test.js.map +1 -1
- package/dist/cli/__tests__/url.test.js.map +1 -1
- package/dist/cli/__tests__/windows-popup-loop-contract.test.js +2 -1
- package/dist/cli/__tests__/windows-popup-loop-contract.test.js.map +1 -1
- package/dist/cli/adapt.js.map +1 -1
- package/dist/cli/agents-init.js.map +1 -1
- package/dist/cli/agents.js.map +1 -1
- package/dist/cli/api.js.map +1 -1
- package/dist/cli/ask.d.ts +1 -1
- package/dist/cli/ask.d.ts.map +1 -1
- package/dist/cli/ask.js.map +1 -1
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/autoresearch-guided.js.map +1 -1
- package/dist/cli/autoresearch-intake.js.map +1 -1
- package/dist/cli/capabilities.js.map +1 -1
- package/dist/cli/cleanup.js.map +1 -1
- package/dist/cli/codex-feature-probe.js.map +1 -1
- package/dist/cli/codex-home.js.map +1 -1
- package/dist/cli/doctor.d.ts +21 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +607 -130
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/explore.js.map +1 -1
- package/dist/cli/index.d.ts +14 -3
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +245 -57
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp-parity.js +2 -2
- package/dist/cli/mcp-parity.js.map +1 -1
- package/dist/cli/mcp-serve.js.map +1 -1
- package/dist/cli/mission.js.map +1 -1
- package/dist/cli/native-assets.js.map +1 -1
- package/dist/cli/native-hook-claim-journal.d.ts +29 -0
- package/dist/cli/native-hook-claim-journal.d.ts.map +1 -0
- package/dist/cli/native-hook-claim-journal.js +252 -0
- package/dist/cli/native-hook-claim-journal.js.map +1 -0
- package/dist/cli/omx.js.map +1 -1
- package/dist/cli/plugin-marketplace.js.map +1 -1
- package/dist/cli/project-runtime-codex-homes.js.map +1 -1
- package/dist/cli/question.js.map +1 -1
- package/dist/cli/ralph.d.ts.map +1 -1
- package/dist/cli/ralph.js +3 -2
- package/dist/cli/ralph.js.map +1 -1
- package/dist/cli/ralplan.d.ts +10 -0
- package/dist/cli/ralplan.d.ts.map +1 -0
- package/dist/cli/ralplan.js +110 -0
- package/dist/cli/ralplan.js.map +1 -0
- package/dist/cli/session-search.d.ts +5 -0
- package/dist/cli/session-search.d.ts.map +1 -1
- package/dist/cli/session-search.js +87 -0
- package/dist/cli/session-search.js.map +1 -1
- package/dist/cli/setup-preferences.d.ts +11 -0
- package/dist/cli/setup-preferences.d.ts.map +1 -1
- package/dist/cli/setup-preferences.js +32 -0
- package/dist/cli/setup-preferences.js.map +1 -1
- package/dist/cli/setup.d.ts +58 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +1450 -398
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/sparkshell.js.map +1 -1
- package/dist/cli/star-prompt.js.map +1 -1
- package/dist/cli/state.d.ts.map +1 -1
- package/dist/cli/state.js +2 -1
- package/dist/cli/state.js.map +1 -1
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/ultragoal.d.ts +5 -1
- package/dist/cli/ultragoal.d.ts.map +1 -1
- package/dist/cli/ultragoal.js +34 -2
- package/dist/cli/ultragoal.js.map +1 -1
- package/dist/cli/uninstall.d.ts +17 -0
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +986 -95
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +8 -1
- package/dist/cli/update.js.map +1 -1
- package/dist/cli/url.js.map +1 -1
- package/dist/compat/__tests__/doctor-contract.test.js +5 -1
- package/dist/compat/__tests__/doctor-contract.test.js.map +1 -1
- package/dist/compat/__tests__/rust-runtime-compat.test.js +1 -1
- package/dist/compat/__tests__/rust-runtime-compat.test.js.map +1 -1
- package/dist/config/__tests__/codex-hooks.test.js +1287 -11
- package/dist/config/__tests__/codex-hooks.test.js.map +1 -1
- package/dist/config/__tests__/generator-idempotent.test.js +1179 -32
- package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
- package/dist/config/__tests__/generator-notify.test.js +6 -1
- package/dist/config/__tests__/generator-notify.test.js.map +1 -1
- package/dist/config/__tests__/models.test.js +67 -3
- package/dist/config/__tests__/models.test.js.map +1 -1
- package/dist/config/codex-feature-flags.d.ts.map +1 -1
- package/dist/config/codex-feature-flags.js.map +1 -1
- package/dist/config/codex-hooks.d.ts +124 -1
- package/dist/config/codex-hooks.d.ts.map +1 -1
- package/dist/config/codex-hooks.js +2142 -265
- package/dist/config/codex-hooks.js.map +1 -1
- package/dist/config/commit-lore-guard.js.map +1 -1
- package/dist/config/generator.d.ts +23 -34
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +1480 -246
- package/dist/config/generator.js.map +1 -1
- package/dist/config/mcp-registry.js.map +1 -1
- package/dist/config/models.d.ts +14 -4
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +15 -1
- package/dist/config/models.js.map +1 -1
- package/dist/config/omx-first-party-mcp.js.map +1 -1
- package/dist/config/team-mode.d.ts.map +1 -1
- package/dist/document-refresh/__tests__/enforcer.test.js.map +1 -1
- package/dist/document-refresh/enforcer.js.map +1 -1
- package/dist/exec/followup.js.map +1 -1
- package/dist/goal-workflows/artifacts.js.map +1 -1
- package/dist/hooks/__tests__/agents-overlay.test.js +7 -4
- package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
- package/dist/hooks/__tests__/analyze-routing-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/analyze-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/anti-slop-workflow.test.js.map +1 -1
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js +9 -3
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/code-review-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/consensus-execution-handoff.test.js.map +1 -1
- package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/design-skill.test.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +1376 -6
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js +252 -543
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js +38 -4
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +765 -10
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js +2 -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 +142 -1
- package/dist/hooks/__tests__/notify-hook-managed-tmux.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-modules.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-non-omx-guard.test.js +48 -2
- package/dist/hooks/__tests__/notify-hook-non-omx-guard.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-ralph-resume.test.js +61 -44
- package/dist/hooks/__tests__/notify-hook-ralph-resume.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-regression-205.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-session-idle-dedupe.test.js +3 -2
- package/dist/hooks/__tests__/notify-hook-session-idle-dedupe.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-session-scope.test.js +243 -4
- package/dist/hooks/__tests__/notify-hook-session-scope.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js +531 -12
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js +163 -24
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js +482 -32
- package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js +68 -1
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-scrollback.test.js +7 -1
- package/dist/hooks/__tests__/notify-hook-tmux-scrollback.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-visual-verdict.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js +43 -4
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js.map +1 -1
- package/dist/hooks/__tests__/openclaw-setup-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/pre-context-gate-skills.test.js.map +1 -1
- package/dist/hooks/__tests__/prometheus-strict-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/prompt-guidance-fragments.test.js.map +1 -1
- package/dist/hooks/__tests__/prompt-guidance-test-helpers.js.map +1 -1
- package/dist/hooks/__tests__/prompt-session-provenance.test.d.ts +2 -0
- package/dist/hooks/__tests__/prompt-session-provenance.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/prompt-session-provenance.test.js +82 -0
- package/dist/hooks/__tests__/prompt-session-provenance.test.js.map +1 -0
- package/dist/hooks/__tests__/session.test.js +878 -11
- package/dist/hooks/__tests__/session.test.js.map +1 -1
- package/dist/hooks/__tests__/skill-catalog-hygiene.test.js.map +1 -1
- package/dist/hooks/__tests__/team-runtime-gating-docs-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/visual-ralph-skill.test.js.map +1 -1
- package/dist/hooks/__tests__/visual-verdict-loop.test.js.map +1 -1
- package/dist/hooks/agents-overlay.js +5 -5
- package/dist/hooks/agents-overlay.js.map +1 -1
- package/dist/hooks/code-simplifier/index.js.map +1 -1
- package/dist/hooks/explore-routing.js.map +1 -1
- package/dist/hooks/extensibility/dispatcher.js.map +1 -1
- package/dist/hooks/extensibility/events.js.map +1 -1
- package/dist/hooks/extensibility/loader.js.map +1 -1
- package/dist/hooks/extensibility/plugin-runner-stdin.js.map +1 -1
- package/dist/hooks/extensibility/sdk/logging.js.map +1 -1
- package/dist/hooks/keyword-detector.d.ts +33 -7
- package/dist/hooks/keyword-detector.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.js +2228 -119
- package/dist/hooks/keyword-detector.js.map +1 -1
- package/dist/hooks/keyword-registry.d.ts +12 -0
- package/dist/hooks/keyword-registry.d.ts.map +1 -1
- package/dist/hooks/keyword-registry.js +41 -0
- package/dist/hooks/keyword-registry.js.map +1 -1
- package/dist/hooks/prompt-session-provenance.d.ts +87 -0
- package/dist/hooks/prompt-session-provenance.d.ts.map +1 -0
- package/dist/hooks/prompt-session-provenance.js +180 -0
- package/dist/hooks/prompt-session-provenance.js.map +1 -0
- package/dist/hooks/session.d.ts +163 -34
- package/dist/hooks/session.d.ts.map +1 -1
- package/dist/hooks/session.js +1395 -317
- package/dist/hooks/session.js.map +1 -1
- package/dist/hooks/task-size-detector.js.map +1 -1
- package/dist/hud/__tests__/state.test.js.map +1 -1
- package/dist/hud/authority.js.map +1 -1
- package/dist/hud/constants.js.map +1 -1
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/reconcile.js.map +1 -1
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/tmux.js.map +1 -1
- package/dist/leader/__tests__/contract.test.js +153 -1
- package/dist/leader/__tests__/contract.test.js.map +1 -1
- package/dist/leader/contract.d.ts +42 -5
- package/dist/leader/contract.d.ts.map +1 -1
- package/dist/leader/contract.js +184 -3
- package/dist/leader/contract.js.map +1 -1
- package/dist/mcp/__tests__/bootstrap.test.js.map +1 -1
- package/dist/mcp/__tests__/code-intel-server.test.js +31 -3
- package/dist/mcp/__tests__/code-intel-server.test.js.map +1 -1
- package/dist/mcp/__tests__/server-lifecycle.test.js +15 -2
- package/dist/mcp/__tests__/server-lifecycle.test.js.map +1 -1
- package/dist/mcp/__tests__/state-paths.test.js +98 -1
- package/dist/mcp/__tests__/state-paths.test.js.map +1 -1
- package/dist/mcp/__tests__/wiki-server.test.js +18 -0
- package/dist/mcp/__tests__/wiki-server.test.js.map +1 -1
- package/dist/mcp/bootstrap.js.map +1 -1
- package/dist/mcp/code-intel-server.d.ts +58 -58
- package/dist/mcp/code-intel-server.d.ts.map +1 -1
- package/dist/mcp/code-intel-server.js +13 -3
- package/dist/mcp/code-intel-server.js.map +1 -1
- package/dist/mcp/hermes-bridge.js.map +1 -1
- package/dist/mcp/hermes-server.d.ts +70 -70
- package/dist/mcp/hermes-server.d.ts.map +1 -1
- package/dist/mcp/lifecycle-telemetry.js.map +1 -1
- package/dist/mcp/memory-server.d.ts +34 -34
- package/dist/mcp/memory-server.d.ts.map +1 -1
- package/dist/mcp/memory-server.js.map +1 -1
- package/dist/mcp/state-paths.d.ts +14 -0
- package/dist/mcp/state-paths.d.ts.map +1 -1
- package/dist/mcp/state-paths.js +96 -20
- package/dist/mcp/state-paths.js.map +1 -1
- package/dist/mcp/state-server.d.ts +47 -47
- package/dist/mcp/state-server.d.ts.map +1 -1
- package/dist/mcp/trace-server.d.ts +4 -4
- package/dist/mcp/trace-server.d.ts.map +1 -1
- package/dist/mcp/trace-server.js.map +1 -1
- package/dist/mcp/wiki-server.d.ts +34 -23
- package/dist/mcp/wiki-server.d.ts.map +1 -1
- package/dist/mcp/wiki-server.js +9 -2
- package/dist/mcp/wiki-server.js.map +1 -1
- package/dist/modes/__tests__/base-session-scope.test.js +53 -1
- package/dist/modes/__tests__/base-session-scope.test.js.map +1 -1
- package/dist/modes/__tests__/base-tmux-pane.test.js +4 -4
- package/dist/modes/__tests__/base-tmux-pane.test.js.map +1 -1
- package/dist/modes/base.d.ts.map +1 -1
- package/dist/modes/base.js +5 -5
- package/dist/modes/base.js.map +1 -1
- package/dist/notifications/__tests__/lifecycle-dedupe.test.js.map +1 -1
- package/dist/notifications/__tests__/reply-listener.test.js.map +1 -1
- package/dist/notifications/__tests__/session-idle-tail-dedupe.test.js +177 -85
- package/dist/notifications/__tests__/session-idle-tail-dedupe.test.js.map +1 -1
- package/dist/notifications/__tests__/session-registry.test.js.map +1 -1
- package/dist/notifications/__tests__/template-engine.test.js.map +1 -1
- package/dist/notifications/__tests__/verbosity.test.js.map +1 -1
- package/dist/notifications/http-client.js.map +1 -1
- package/dist/notifications/index.d.ts +4 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +3 -9
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/lifecycle-dedupe.js.map +1 -1
- package/dist/notifications/reply-listener.d.ts.map +1 -1
- package/dist/notifications/reply-listener.js.map +1 -1
- package/dist/notifications/session-registry.js.map +1 -1
- package/dist/notifications/session-status.js.map +1 -1
- package/dist/notifications/temp-contract.d.ts.map +1 -1
- package/dist/notifications/temp-contract.js +4 -0
- package/dist/notifications/temp-contract.js.map +1 -1
- package/dist/notifications/tmux-detector.js.map +1 -1
- package/dist/notifications/tmux.js.map +1 -1
- package/dist/openclaw/config.js.map +1 -1
- package/dist/openclaw/dispatcher.js.map +1 -1
- package/dist/pipeline/__tests__/orchestrator.test.js +4 -4
- package/dist/pipeline/__tests__/orchestrator.test.js.map +1 -1
- package/dist/pipeline/__tests__/stages.test.js +16 -13
- package/dist/pipeline/__tests__/stages.test.js.map +1 -1
- package/dist/pipeline/stages/code-review.js.map +1 -1
- package/dist/pipeline/stages/ralph-verify.js.map +1 -1
- package/dist/pipeline/stages/ralplan.js.map +1 -1
- package/dist/pipeline/stages/team-exec.js.map +1 -1
- package/dist/pipeline/stages/ultragoal.js.map +1 -1
- package/dist/pipeline/stages/ultraqa.js.map +1 -1
- package/dist/planning/__tests__/approved-execution-lifecycle-matrix.test.js.map +1 -1
- package/dist/planning/artifact-names.js.map +1 -1
- package/dist/planning/artifacts.js.map +1 -1
- package/dist/question/__tests__/state.test.js.map +1 -1
- package/dist/question/__tests__/ui.test.js.map +1 -1
- package/dist/question/autopilot-wait.js.map +1 -1
- package/dist/question/client.d.ts.map +1 -1
- package/dist/question/client.js.map +1 -1
- package/dist/question/deep-interview.js.map +1 -1
- package/dist/question/events.js.map +1 -1
- package/dist/question/renderer.js.map +1 -1
- package/dist/question/state.d.ts.map +1 -1
- package/dist/question/state.js.map +1 -1
- package/dist/question/ui.js.map +1 -1
- package/dist/ralph/contract.d.ts +1 -1
- package/dist/ralph/contract.d.ts.map +1 -1
- package/dist/ralplan/__tests__/consensus-gate.test.js +527 -8
- package/dist/ralplan/__tests__/consensus-gate.test.js.map +1 -1
- package/dist/ralplan/__tests__/documented-leader-preflight.test.d.ts +2 -0
- package/dist/ralplan/__tests__/documented-leader-preflight.test.d.ts.map +1 -0
- package/dist/ralplan/__tests__/documented-leader-preflight.test.js +46 -0
- package/dist/ralplan/__tests__/documented-leader-preflight.test.js.map +1 -0
- package/dist/ralplan/__tests__/runtime.test.js +116 -14
- package/dist/ralplan/__tests__/runtime.test.js.map +1 -1
- package/dist/ralplan/consensus-gate.d.ts +3 -3
- package/dist/ralplan/consensus-gate.d.ts.map +1 -1
- package/dist/ralplan/consensus-gate.js +173 -70
- package/dist/ralplan/consensus-gate.js.map +1 -1
- package/dist/ralplan/documented-leader-preflight.d.ts +34 -0
- package/dist/ralplan/documented-leader-preflight.d.ts.map +1 -0
- package/dist/ralplan/documented-leader-preflight.js +58 -0
- package/dist/ralplan/documented-leader-preflight.js.map +1 -0
- package/dist/ralplan/runtime.d.ts +3 -2
- package/dist/ralplan/runtime.d.ts.map +1 -1
- package/dist/ralplan/runtime.js +12 -9
- package/dist/ralplan/runtime.js.map +1 -1
- package/dist/runtime/__tests__/bridge.test.js +42 -1
- package/dist/runtime/__tests__/bridge.test.js.map +1 -1
- package/dist/runtime/bridge.d.ts +12 -0
- package/dist/runtime/bridge.d.ts.map +1 -1
- package/dist/runtime/bridge.js +52 -1
- package/dist/runtime/bridge.js.map +1 -1
- package/dist/runtime/process-tree.js.map +1 -1
- package/dist/runtime/run-loop.js.map +1 -1
- package/dist/runtime/run-outcome.d.ts +3 -3
- package/dist/runtime/run-outcome.d.ts.map +1 -1
- package/dist/runtime/run-outcome.js.map +1 -1
- package/dist/runtime/run-state.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +6657 -995
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/fixtures/issue-3138-installed-smoke.d.ts +2 -0
- package/dist/scripts/__tests__/fixtures/issue-3138-installed-smoke.d.ts.map +1 -0
- package/dist/scripts/__tests__/fixtures/issue-3138-installed-smoke.js +634 -0
- package/dist/scripts/__tests__/fixtures/issue-3138-installed-smoke.js.map +1 -0
- package/dist/scripts/__tests__/generate-release-body.test.js.map +1 -1
- package/dist/scripts/__tests__/hook-derived-watcher.test.js.map +1 -1
- package/dist/scripts/__tests__/notify-dispatcher.test.js.map +1 -1
- package/dist/scripts/__tests__/notify-fallback-delivery.test.d.ts +2 -0
- package/dist/scripts/__tests__/notify-fallback-delivery.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/notify-fallback-delivery.test.js +174 -0
- package/dist/scripts/__tests__/notify-fallback-delivery.test.js.map +1 -0
- package/dist/scripts/__tests__/notify-state-io.test.js +57 -1
- package/dist/scripts/__tests__/notify-state-io.test.js.map +1 -1
- package/dist/scripts/__tests__/reasoning-artifact-contract.test.d.ts +2 -0
- package/dist/scripts/__tests__/reasoning-artifact-contract.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/reasoning-artifact-contract.test.js +108 -0
- package/dist/scripts/__tests__/reasoning-artifact-contract.test.js.map +1 -0
- package/dist/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.d.ts +2 -0
- package/dist/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.js +78 -0
- package/dist/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.js.map +1 -0
- package/dist/scripts/__tests__/role-intent-durable-recovery-3181.test.d.ts +2 -0
- package/dist/scripts/__tests__/role-intent-durable-recovery-3181.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/role-intent-durable-recovery-3181.test.js +55 -0
- package/dist/scripts/__tests__/role-intent-durable-recovery-3181.test.js.map +1 -0
- package/dist/scripts/__tests__/run-test-files.test.js.map +1 -1
- package/dist/scripts/__tests__/smoke-packed-install.test.js +1100 -4
- package/dist/scripts/__tests__/smoke-packed-install.test.js.map +1 -1
- package/dist/scripts/__tests__/test-reply-listener-live.test.js.map +1 -1
- package/dist/scripts/build-api.js.map +1 -1
- package/dist/scripts/build-explore-harness.js.map +1 -1
- package/dist/scripts/build-sparkshell.js.map +1 -1
- package/dist/scripts/cleanup-explore-harness.js.map +1 -1
- package/dist/scripts/codex-execution-surface.js.map +1 -1
- package/dist/scripts/codex-native-hook.d.ts +4 -1
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +11577 -1184
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/generate-native-release-manifest.js.map +1 -1
- package/dist/scripts/generate-release-body.js.map +1 -1
- package/dist/scripts/hook-payload-guard.d.ts.map +1 -1
- package/dist/scripts/hook-payload-guard.js.map +1 -1
- package/dist/scripts/notify-fallback-delivery.d.ts +48 -0
- package/dist/scripts/notify-fallback-delivery.d.ts.map +1 -0
- package/dist/scripts/notify-fallback-delivery.js +419 -0
- package/dist/scripts/notify-fallback-delivery.js.map +1 -0
- package/dist/scripts/notify-fallback-watcher.js +218 -138
- package/dist/scripts/notify-fallback-watcher.js.map +1 -1
- package/dist/scripts/notify-hook/auto-nudge.d.ts +18 -9
- package/dist/scripts/notify-hook/auto-nudge.d.ts.map +1 -1
- package/dist/scripts/notify-hook/auto-nudge.js +112 -15
- package/dist/scripts/notify-hook/auto-nudge.js.map +1 -1
- package/dist/scripts/notify-hook/managed-tmux.d.ts +23 -0
- package/dist/scripts/notify-hook/managed-tmux.d.ts.map +1 -1
- package/dist/scripts/notify-hook/managed-tmux.js +122 -12
- package/dist/scripts/notify-hook/managed-tmux.js.map +1 -1
- package/dist/scripts/notify-hook/orchestration-intent.d.ts +7 -7
- package/dist/scripts/notify-hook/orchestration-intent.d.ts.map +1 -1
- package/dist/scripts/notify-hook/ralph-session-resume.d.ts +5 -2
- package/dist/scripts/notify-hook/ralph-session-resume.d.ts.map +1 -1
- package/dist/scripts/notify-hook/ralph-session-resume.js +33 -37
- package/dist/scripts/notify-hook/ralph-session-resume.js.map +1 -1
- package/dist/scripts/notify-hook/state-io.d.ts +17 -0
- package/dist/scripts/notify-hook/state-io.d.ts.map +1 -1
- package/dist/scripts/notify-hook/state-io.js +73 -11
- package/dist/scripts/notify-hook/state-io.js.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.d.ts +10 -1
- package/dist/scripts/notify-hook/team-dispatch.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.js +234 -79
- package/dist/scripts/notify-hook/team-dispatch.js.map +1 -1
- package/dist/scripts/notify-hook/team-leader-nudge.d.ts +2 -2
- package/dist/scripts/notify-hook/team-leader-nudge.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-leader-nudge.js +39 -13
- package/dist/scripts/notify-hook/team-leader-nudge.js.map +1 -1
- package/dist/scripts/notify-hook/team-tmux-guard.d.ts +16 -8
- package/dist/scripts/notify-hook/team-tmux-guard.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-tmux-guard.js +365 -44
- package/dist/scripts/notify-hook/team-tmux-guard.js.map +1 -1
- package/dist/scripts/notify-hook/team-worker-posttooluse.js.map +1 -1
- package/dist/scripts/notify-hook/team-worker-stop.d.ts +1 -1
- package/dist/scripts/notify-hook/team-worker-stop.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-worker-stop.js +19 -18
- package/dist/scripts/notify-hook/team-worker-stop.js.map +1 -1
- package/dist/scripts/notify-hook/team-worker.d.ts +5 -2
- package/dist/scripts/notify-hook/team-worker.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-worker.js +37 -28
- package/dist/scripts/notify-hook/team-worker.js.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.d.ts +8 -1
- package/dist/scripts/notify-hook/tmux-injection.d.ts.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.js +53 -18
- package/dist/scripts/notify-hook/tmux-injection.js.map +1 -1
- package/dist/scripts/notify-hook/visual-verdict.d.ts +1 -1
- package/dist/scripts/notify-hook/visual-verdict.d.ts.map +1 -1
- package/dist/scripts/notify-hook/visual-verdict.js +15 -13
- package/dist/scripts/notify-hook/visual-verdict.js.map +1 -1
- package/dist/scripts/notify-hook.d.ts +24 -1
- package/dist/scripts/notify-hook.d.ts.map +1 -1
- package/dist/scripts/notify-hook.js +267 -90
- package/dist/scripts/notify-hook.js.map +1 -1
- package/dist/scripts/postinstall.js.map +1 -1
- package/dist/scripts/prompt-inventory.js.map +1 -1
- package/dist/scripts/smoke-packed-install.d.ts +927 -5
- package/dist/scripts/smoke-packed-install.d.ts.map +1 -1
- package/dist/scripts/smoke-packed-install.js +4317 -13
- package/dist/scripts/smoke-packed-install.js.map +1 -1
- package/dist/scripts/sync-plugin-mirror.js.map +1 -1
- package/dist/scripts/test-reply-listener-live.js.map +1 -1
- package/dist/scripts/test-sparkshell.js.map +1 -1
- package/dist/scripts/verify-native-agents.js.map +1 -1
- package/dist/session-history/friction.js.map +1 -1
- package/dist/session-history/search.js.map +1 -1
- package/dist/sidecar/__tests__/boundary.test.js.map +1 -1
- package/dist/sidecar/collector.js.map +1 -1
- package/dist/sidecar/index.js.map +1 -1
- package/dist/sidecar/render.js.map +1 -1
- package/dist/sidecar/tmux.js.map +1 -1
- package/dist/state/__tests__/mode-state-context.test.js +54 -0
- package/dist/state/__tests__/mode-state-context.test.js.map +1 -1
- package/dist/state/__tests__/operations.test.js +66 -15
- package/dist/state/__tests__/operations.test.js.map +1 -1
- package/dist/state/__tests__/skill-active.test.js +19 -1
- package/dist/state/__tests__/skill-active.test.js.map +1 -1
- package/dist/state/__tests__/workflow-transition.test.js +61 -0
- package/dist/state/__tests__/workflow-transition.test.js.map +1 -1
- package/dist/state/mode-state-context.d.ts +5 -0
- package/dist/state/mode-state-context.d.ts.map +1 -1
- package/dist/state/mode-state-context.js +59 -0
- package/dist/state/mode-state-context.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 +49 -55
- package/dist/state/operations.js.map +1 -1
- package/dist/state/paths.d.ts +1 -1
- package/dist/state/paths.d.ts.map +1 -1
- package/dist/state/paths.js +1 -1
- package/dist/state/paths.js.map +1 -1
- package/dist/state/skill-active.d.ts +13 -1
- package/dist/state/skill-active.d.ts.map +1 -1
- package/dist/state/skill-active.js +43 -4
- package/dist/state/skill-active.js.map +1 -1
- package/dist/state/terminal-normalization.js.map +1 -1
- package/dist/state/workflow-transition-reconcile.d.ts.map +1 -1
- package/dist/state/workflow-transition-reconcile.js +20 -4
- package/dist/state/workflow-transition-reconcile.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.map +1 -1
- package/dist/subagents/__tests__/leader-bootstrap-3181.test.d.ts +2 -0
- package/dist/subagents/__tests__/leader-bootstrap-3181.test.d.ts.map +1 -0
- package/dist/subagents/__tests__/leader-bootstrap-3181.test.js +52 -0
- package/dist/subagents/__tests__/leader-bootstrap-3181.test.js.map +1 -0
- package/dist/subagents/__tests__/tracker.test.js +1550 -10
- package/dist/subagents/__tests__/tracker.test.js.map +1 -1
- package/dist/subagents/role-routing-marker.d.ts +10 -0
- package/dist/subagents/role-routing-marker.d.ts.map +1 -0
- package/dist/subagents/role-routing-marker.js +136 -0
- package/dist/subagents/role-routing-marker.js.map +1 -0
- package/dist/subagents/tracker.d.ts +91 -0
- package/dist/subagents/tracker.d.ts.map +1 -1
- package/dist/subagents/tracker.js +806 -62
- package/dist/subagents/tracker.js.map +1 -1
- package/dist/team/__tests__/api-interop.test.js +91 -1
- package/dist/team/__tests__/api-interop.test.js.map +1 -1
- package/dist/team/__tests__/approved-execution.test.js.map +1 -1
- package/dist/team/__tests__/delivery-e2e-smoke.test.js +52 -10
- package/dist/team/__tests__/delivery-e2e-smoke.test.js.map +1 -1
- package/dist/team/__tests__/idle-nudge.test.js +45 -15
- package/dist/team/__tests__/idle-nudge.test.js.map +1 -1
- package/dist/team/__tests__/mcp-comm.test.js +93 -27
- package/dist/team/__tests__/mcp-comm.test.js.map +1 -1
- package/dist/team/__tests__/model-contract.test.js +341 -4
- package/dist/team/__tests__/model-contract.test.js.map +1 -1
- package/dist/team/__tests__/role-router.test.js.map +1 -1
- package/dist/team/__tests__/runtime-cli.test.js +9 -0
- package/dist/team/__tests__/runtime-cli.test.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +3624 -355
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/scaling.test.js +2516 -118
- package/dist/team/__tests__/scaling.test.js.map +1 -1
- package/dist/team/__tests__/state-root.test.js.map +1 -1
- package/dist/team/__tests__/state.test.js +804 -36
- package/dist/team/__tests__/state.test.js.map +1 -1
- package/dist/team/__tests__/team-ops-contract.test.js +6 -0
- package/dist/team/__tests__/team-ops-contract.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +3664 -969
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/tmux-test-fixture.js.map +1 -1
- package/dist/team/__tests__/worker-runtime-identity.test.js +38 -2
- package/dist/team/__tests__/worker-runtime-identity.test.js.map +1 -1
- package/dist/team/__tests__/worktree.test.js +6 -0
- package/dist/team/__tests__/worktree.test.js.map +1 -1
- package/dist/team/api-interop.d.ts +2 -2
- package/dist/team/api-interop.d.ts.map +1 -1
- package/dist/team/api-interop.js +15 -9
- package/dist/team/api-interop.js.map +1 -1
- package/dist/team/commit-hygiene.js.map +1 -1
- package/dist/team/contracts.d.ts +5 -5
- package/dist/team/contracts.d.ts.map +1 -1
- package/dist/team/delivery-log.js.map +1 -1
- package/dist/team/exact-pane.d.ts +23 -0
- package/dist/team/exact-pane.d.ts.map +1 -0
- package/dist/team/exact-pane.js +133 -0
- package/dist/team/exact-pane.js.map +1 -0
- package/dist/team/followup-planner.js.map +1 -1
- package/dist/team/goal-workflow.js.map +1 -1
- package/dist/team/idle-nudge.d.ts +12 -1
- package/dist/team/idle-nudge.d.ts.map +1 -1
- package/dist/team/idle-nudge.js +41 -14
- package/dist/team/idle-nudge.js.map +1 -1
- package/dist/team/model-contract.d.ts +18 -2
- package/dist/team/model-contract.d.ts.map +1 -1
- package/dist/team/model-contract.js +314 -35
- package/dist/team/model-contract.js.map +1 -1
- package/dist/team/orchestrator.js.map +1 -1
- package/dist/team/pane-status.js.map +1 -1
- package/dist/team/phase-controller.js.map +1 -1
- package/dist/team/reminder-intents.d.ts +1 -1
- package/dist/team/reminder-intents.d.ts.map +1 -1
- package/dist/team/reminder-intents.js.map +1 -1
- package/dist/team/runtime-cli.js.map +1 -1
- package/dist/team/runtime.d.ts +1 -0
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +1326 -231
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/scaling.d.ts +22 -8
- package/dist/team/scaling.d.ts.map +1 -1
- package/dist/team/scaling.js +1463 -376
- package/dist/team/scaling.js.map +1 -1
- package/dist/team/state/dispatch-lock.js.map +1 -1
- package/dist/team/state/dispatch.d.ts.map +1 -1
- package/dist/team/state/dispatch.js +26 -8
- package/dist/team/state/dispatch.js.map +1 -1
- package/dist/team/state/events.js.map +1 -1
- package/dist/team/state/locks.d.ts.map +1 -1
- package/dist/team/state/locks.js +61 -13
- package/dist/team/state/locks.js.map +1 -1
- package/dist/team/state/tasks.d.ts.map +1 -1
- package/dist/team/state/tasks.js +4 -3
- package/dist/team/state/tasks.js.map +1 -1
- package/dist/team/state-root.js.map +1 -1
- package/dist/team/state.d.ts +67 -1
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +636 -129
- package/dist/team/state.js.map +1 -1
- package/dist/team/team-identity.d.ts.map +1 -1
- package/dist/team/team-identity.js.map +1 -1
- package/dist/team/team-ops.d.ts +5 -0
- package/dist/team/team-ops.d.ts.map +1 -1
- package/dist/team/team-ops.js +4 -0
- package/dist/team/team-ops.js.map +1 -1
- package/dist/team/tmux-session.d.ts +125 -23
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +1340 -333
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/dist/team/worktree.d.ts.map +1 -1
- package/dist/team/worktree.js +4 -0
- package/dist/team/worktree.js.map +1 -1
- package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
- package/dist/ultragoal/__tests__/docs-contract.test.js.map +1 -1
- package/dist/ultragoal/artifacts.d.ts.map +1 -1
- package/dist/ultragoal/artifacts.js +4 -1
- package/dist/ultragoal/artifacts.js.map +1 -1
- package/dist/url-reader/index.js.map +1 -1
- package/dist/utils/__tests__/file-durability.test.d.ts +2 -0
- package/dist/utils/__tests__/file-durability.test.d.ts.map +1 -0
- package/dist/utils/__tests__/file-durability.test.js +57 -0
- package/dist/utils/__tests__/file-durability.test.js.map +1 -0
- package/dist/utils/agents-model-table.js.map +1 -1
- package/dist/utils/file-durability.d.ts +15 -0
- package/dist/utils/file-durability.d.ts.map +1 -0
- package/dist/utils/file-durability.js +37 -0
- package/dist/utils/file-durability.js.map +1 -0
- package/dist/utils/package.js.map +1 -1
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/platform-command.js.map +1 -1
- package/dist/utils/repo-deps.js.map +1 -1
- package/dist/utils/version.js.map +1 -1
- package/dist/verification/__tests__/ci-rust-gates.test.js +1 -1
- package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js +3 -0
- package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js.map +1 -1
- package/dist/verification/verifier.js.map +1 -1
- package/dist/visual/constants.d.ts +1 -1
- package/dist/visual/constants.d.ts.map +1 -1
- package/dist/vscode/__tests__/index.test.js.map +1 -1
- package/dist/vscode/index.js.map +1 -1
- package/dist/wiki/__tests__/cjk-tokenize.test.js.map +1 -1
- package/dist/wiki/__tests__/lint.test.js.map +1 -1
- package/dist/wiki/__tests__/query.test.js.map +1 -1
- package/dist/wiki/__tests__/storage.test.js.map +1 -1
- package/dist/wiki/__tests__/test-helpers.d.ts.map +1 -1
- package/dist/wiki/lint.d.ts +4 -1
- package/dist/wiki/lint.d.ts.map +1 -1
- package/dist/wiki/lint.js +3 -2
- package/dist/wiki/lint.js.map +1 -1
- package/dist/wiki/query.js.map +1 -1
- package/dist/wiki/storage.js.map +1 -1
- package/package.json +2 -2
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/oh-my-codex/hooks/codex-native-hook.mjs +24 -0
- package/plugins/oh-my-codex/skills/omx-setup/SKILL.md +10 -5
- package/plugins/oh-my-codex/skills/ralph/SKILL.md +6 -2
- package/plugins/oh-my-codex/skills/ralplan/SKILL.md +6 -2
- package/plugins/oh-my-codex/skills/team/SKILL.md +13 -9
- package/skills/omx-setup/SKILL.md +10 -5
- package/skills/ralph/SKILL.md +6 -2
- package/skills/ralplan/SKILL.md +6 -2
- package/skills/team/SKILL.md +13 -9
- package/src/scripts/__tests__/codex-native-hook.test.ts +20048 -10827
- package/src/scripts/__tests__/fixtures/issue-3138-installed-smoke.ts +734 -0
- package/src/scripts/__tests__/notify-fallback-delivery.test.ts +177 -0
- package/src/scripts/__tests__/notify-state-io.test.ts +73 -0
- package/src/scripts/__tests__/reasoning-artifact-contract.test.ts +129 -0
- package/src/scripts/__tests__/role-intent-bootstrap-e2e-3181.test.ts +78 -0
- package/src/scripts/__tests__/role-intent-durable-recovery-3181.test.ts +60 -0
- package/src/scripts/__tests__/smoke-packed-install.test.ts +1309 -4
- package/src/scripts/codex-native-hook.ts +11429 -1163
- package/src/scripts/notify-fallback-delivery.ts +416 -0
- package/src/scripts/notify-fallback-watcher.ts +216 -155
- package/src/scripts/notify-hook/auto-nudge.ts +113 -14
- package/src/scripts/notify-hook/managed-tmux.ts +149 -12
- package/src/scripts/notify-hook/ralph-session-resume.ts +37 -36
- package/src/scripts/notify-hook/state-io.ts +100 -13
- package/src/scripts/notify-hook/team-dispatch.ts +242 -75
- package/src/scripts/notify-hook/team-leader-nudge.ts +40 -18
- package/src/scripts/notify-hook/team-tmux-guard.ts +366 -39
- package/src/scripts/notify-hook/team-worker-stop.ts +20 -16
- package/src/scripts/notify-hook/team-worker.ts +39 -26
- package/src/scripts/notify-hook/tmux-injection.ts +66 -23
- package/src/scripts/notify-hook/visual-verdict.ts +22 -12
- package/src/scripts/notify-hook.ts +336 -90
- package/src/scripts/smoke-packed-install.ts +5154 -149
package/dist/cli/index.js
CHANGED
|
@@ -17,6 +17,7 @@ import { hudCommand } from "../hud/index.js";
|
|
|
17
17
|
import { sidecarCommand } from "../sidecar/index.js";
|
|
18
18
|
import { teamCommand } from "./team.js";
|
|
19
19
|
import { ralphCommand } from "./ralph.js";
|
|
20
|
+
import { ralplanCommand } from "./ralplan.js";
|
|
20
21
|
import { ultragoalCommand } from "./ultragoal.js";
|
|
21
22
|
import { performanceGoalCommand } from "./performance-goal.js";
|
|
22
23
|
import { askCommand } from "./ask.js";
|
|
@@ -38,23 +39,24 @@ import { adaptCommand } from "./adapt.js";
|
|
|
38
39
|
import { listCommand } from "./list.js";
|
|
39
40
|
import { authCommand } from "./auth.js";
|
|
40
41
|
import { missionCommand } from "./mission.js";
|
|
41
|
-
import { runAuthHotswap } from "../auth/hotswap.js";
|
|
42
|
+
import { resolveCodexGlobalOptionValue, runAuthHotswap, } from "../auth/hotswap.js";
|
|
42
43
|
import { MADMAX_FLAG, CODEX_BYPASS_FLAG, HIGH_REASONING_FLAG, XHIGH_REASONING_FLAG, SPARK_FLAG, MADMAX_SPARK_FLAG, CONFIG_FLAG, LONG_CONFIG_FLAG, } from "./constants.js";
|
|
43
|
-
import { getBaseStateDir, getStateDir, listModeStateFilesWithScopePreference, } from "../mcp/state-paths.js";
|
|
44
|
+
import { getBaseStateDir, getBaseStateDirWithSource, getStateDir, listModeStateFilesWithScopePreference, resolveWritableStateScope, } from "../mcp/state-paths.js";
|
|
44
45
|
import { evaluateRalphCompletionAuditEvidence, isRalphCompletePhase } from "../ralph/completion-audit.js";
|
|
45
46
|
import { normalizeTerminalWorkflowState } from "../state/terminal-normalization.js";
|
|
46
47
|
import { readPersistedSetupPreferences, resolveCodexConfigPathForLaunch, resolveCodexHomeForLaunch, resolveProjectLocalCodexHomeForLaunch, } from "./codex-home.js";
|
|
47
48
|
import { discoverProjectRuntimeCodexHomes } from "./project-runtime-codex-homes.js";
|
|
48
49
|
import { discoverOmxPluginCacheDirs, hasLocalOmxPluginEnablement, materializePackagedOmxPluginCache, packagedOmxPluginVersion, resolvePackagedOmxMarketplace, upsertLocalOmxMarketplaceRegistration, upsertLocalOmxPluginEnablement, } from "./plugin-marketplace.js";
|
|
49
50
|
import { escapeTomlString, readTopLevelTomlString, upsertTopLevelTomlString } from "../utils/toml.js";
|
|
50
|
-
import {
|
|
51
|
+
import { ROOT_REASONING_EFFORTS, isUnsupportedRootReasoningEffort, normalizeUnsupportedRootReasoningEffort, } from "../config/models.js";
|
|
51
52
|
export { readPersistedSetupPreferences, readPersistedSetupScope, resolveCodexConfigPathForLaunch, resolveCodexHomeForLaunch, resolveProjectLocalCodexHomeForLaunch, } from "./codex-home.js";
|
|
52
53
|
import { SKILL_ACTIVE_STATE_MODE, extractSessionIdFromInitializedStatePath, getSkillActiveStatePathsForStateDir, listActiveSkills, readSkillActiveState, syncCanonicalSkillStateForMode, } from "../state/skill-active.js";
|
|
53
54
|
import { isTrackedWorkflowMode } from "../state/workflow-transition.js";
|
|
54
55
|
import { maybeCheckAndPromptUpdate, runImmediateUpdate } from "./update.js";
|
|
55
56
|
import { maybePromptGithubStar } from "./star-prompt.js";
|
|
56
57
|
import { generateOverlay, removeSessionModelInstructionsFile, resolveSessionOrchestrationMode, sessionModelInstructionsPath, writeSessionModelInstructionsFile, } from "../hooks/agents-overlay.js";
|
|
57
|
-
import { readSessionState, writeSessionStart, writeSessionEnd, resetSessionMetrics, } from "../hooks/session.js";
|
|
58
|
+
import { isSessionPointerLaunchAbort, normalizeSessionId, readSessionState, writeSessionStart, writeSessionEnd, resetSessionMetrics, } from "../hooks/session.js";
|
|
59
|
+
import { probeActualTmuxInstanceEvidence, tmuxEvidenceBindsCandidate } from "../scripts/notify-hook/managed-tmux.js";
|
|
58
60
|
import { buildClientAttachedReconcileHookName, buildReconcileHudResizeArgs, buildRegisterClientAttachedReconcileArgs, buildRegisterResizeHookArgs, buildResizeHookName, buildResizeHookTarget, buildScheduleDelayedHudResizeArgs, buildUnregisterClientAttachedReconcileArgs, buildUnregisterResizeHookArgs, enableMouseScrolling, isMsysOrGitBash, isNativeWindows, isTmuxAvailable, mitigateCopyModeUnderlineArtifacts, } from "../team/tmux-session.js";
|
|
59
61
|
import { getPackageRoot } from "../utils/package.js";
|
|
60
62
|
import { codexConfigPath, omxRoot, rememberOmxLaunchContext, resolveOmxCliEntryPath } from "../utils/paths.js";
|
|
@@ -69,7 +71,7 @@ rememberOmxLaunchContext({ argv1: process.argv[1], cwd: process.cwd(), env: proc
|
|
|
69
71
|
import { classifySpawnError, resolveTmuxBinaryForPlatform, spawnPlatformCommandSync, } from "../utils/platform-command.js";
|
|
70
72
|
import { buildHookEvent } from "../hooks/extensibility/events.js";
|
|
71
73
|
import { dispatchHookEvent } from "../hooks/extensibility/dispatcher.js";
|
|
72
|
-
import { collectInheritableTeamWorkerArgs as collectInheritableTeamWorkerArgsShared, parseTeamWorkerLaunchArgs, resolveTeamWorkerLaunchArgs, resolveTeamLowComplexityDefaultModel, TEAM_WORKER_INHERITED_MODEL_ENV, } from "../team/model-contract.js";
|
|
74
|
+
import { collectInheritableTeamWorkerArgs as collectInheritableTeamWorkerArgsShared, parseTeamWorkerLaunchArgs, resolveTeamWorkerLaunchArgs, resolveTeamLowComplexityDefaultModel, serializeTeamWorkerLaunchArgs, TEAM_WORKER_INHERITED_MODEL_ENV, } from "../team/model-contract.js";
|
|
73
75
|
import { parseWorktreeMode, planWorktreeTarget, ensureWorktree, } from "../team/worktree.js";
|
|
74
76
|
import { ensureReusableNodeModules } from "../utils/repo-deps.js";
|
|
75
77
|
import { resolveWorktreeToolContext, worktreeToolContextEnv } from "../utils/worktree-tool-context.js";
|
|
@@ -121,6 +123,7 @@ Usage:
|
|
|
121
123
|
omx explore DEPRECATED compatibility command; use normal repo inspection or omx sparkshell
|
|
122
124
|
omx api Run native omx-api localhost gateway commands (serve|status|stop|generate)
|
|
123
125
|
omx session Search and summarize local session history (--codex-home <path> escape hatch)
|
|
126
|
+
Includes session lock inspect/recover diagnostics
|
|
124
127
|
omx url Passive URL reader (read <url> --json)
|
|
125
128
|
omx capabilities
|
|
126
129
|
Lock/check deterministic configured tool, skill, agent, and observation surfaces
|
|
@@ -131,6 +134,7 @@ Usage:
|
|
|
131
134
|
Alias for agents-init (lightweight AGENTS bootstrap only)
|
|
132
135
|
omx team Spawn parallel worker panes in tmux and bootstrap inbox/task state
|
|
133
136
|
omx ralph Launch Codex with ralph persistence mode active
|
|
137
|
+
omx ralplan Record validated role intents for adapted native subagent spawns
|
|
134
138
|
omx ultragoal Create, resume, and checkpoint durable multi-goal plans over Codex goal mode
|
|
135
139
|
omx performance-goal
|
|
136
140
|
Create, hand off, and gate evaluator-backed performance goals
|
|
@@ -185,8 +189,11 @@ Options:
|
|
|
185
189
|
Launch Codex in a git worktree (detached when no name is given)
|
|
186
190
|
--force Force reinstall (overwrite existing files)
|
|
187
191
|
--merge-agents
|
|
188
|
-
Merge OMX-managed AGENTS.md sections
|
|
189
|
-
|
|
192
|
+
Merge OMX-managed AGENTS.md sections and persist that explicit policy for this project root
|
|
193
|
+
--no-merge-agents
|
|
194
|
+
Persist an explicit non-merge policy; current non-merge behavior remains contextual
|
|
195
|
+
--clear-merge-agents-policy
|
|
196
|
+
Clear the persisted AGENTS merge policy for this project root
|
|
190
197
|
--dry-run Show what would be done without doing it
|
|
191
198
|
--plugin Use Codex plugin delivery for omx setup and remove legacy OMX-managed user/project components
|
|
192
199
|
--legacy Use legacy setup delivery for omx setup, overriding persisted plugin mode
|
|
@@ -229,10 +236,15 @@ const OMX_MODEL_INSTRUCTIONS_FILE_ENV = "OMX_MODEL_INSTRUCTIONS_FILE";
|
|
|
229
236
|
const OMX_INSTANCE_OPTION = "@omx_instance_id";
|
|
230
237
|
const OMX_RALPH_APPEND_INSTRUCTIONS_FILE_ENV = "OMX_RALPH_APPEND_INSTRUCTIONS_FILE";
|
|
231
238
|
const OMX_AUTORESEARCH_APPEND_INSTRUCTIONS_FILE_ENV = "OMX_AUTORESEARCH_APPEND_INSTRUCTIONS_FILE";
|
|
232
|
-
const REASONING_MODES =
|
|
239
|
+
const REASONING_MODES = ROOT_REASONING_EFFORTS;
|
|
233
240
|
const REASONING_MODE_SET = new Set(REASONING_MODES);
|
|
234
241
|
const REASONING_USAGE = "Usage: omx reasoning <low|medium|high|xhigh>";
|
|
235
|
-
|
|
242
|
+
function unsupportedLaunchShorthandError(flag) {
|
|
243
|
+
const guidance = flag === "--max"
|
|
244
|
+
? 'No --max shorthand exists; use agentReasoning for per-agent "max" or pass -c model_reasoning_effort=... directly to Codex.'
|
|
245
|
+
: '"ultra" is not an OMX root or per-agent reasoning value and is not an alias for "max".';
|
|
246
|
+
return new Error(`Unsupported OMX launch shorthand "${flag}".\n${guidance}\nRun "omx help" for usage.`);
|
|
247
|
+
}
|
|
236
248
|
const ALLOWED_SHELLS = new Set([
|
|
237
249
|
"/bin/sh",
|
|
238
250
|
"/bin/bash",
|
|
@@ -258,6 +270,9 @@ const TMUX_EXTENDED_KEYS_LEASE_DIR = "tmux-extended-keys";
|
|
|
258
270
|
const TMUX_EXTENDED_KEYS_LOCK_RETRY_MS = 20;
|
|
259
271
|
const TMUX_EXTENDED_KEYS_LOCK_MAX_ATTEMPTS = 100;
|
|
260
272
|
const TMUX_EXTENDED_KEYS_LOCK_STALE_MS = 30_000;
|
|
273
|
+
const RESUME_HELP = `Usage: omx resume [--project] [--codex-home <path>] [codex resume options]
|
|
274
|
+
|
|
275
|
+
Read-only help does not prepare or launch a Codex session.`;
|
|
261
276
|
const NESTED_HELP_COMMANDS = new Set([
|
|
262
277
|
"ask",
|
|
263
278
|
"question",
|
|
@@ -286,6 +301,7 @@ const NESTED_HELP_COMMANDS = new Set([
|
|
|
286
301
|
"wiki",
|
|
287
302
|
"mcp-serve",
|
|
288
303
|
"ralph",
|
|
304
|
+
"ralplan",
|
|
289
305
|
"ultragoal",
|
|
290
306
|
"performance-goal",
|
|
291
307
|
"resume",
|
|
@@ -296,6 +312,43 @@ const NESTED_HELP_COMMANDS = new Set([
|
|
|
296
312
|
"team",
|
|
297
313
|
"tmux-hook",
|
|
298
314
|
]);
|
|
315
|
+
export function resolveSetupAgentsMergePolicyArg(args) {
|
|
316
|
+
let policy;
|
|
317
|
+
const setPolicy = (next, source) => {
|
|
318
|
+
if (policy && (policy.kind !== next.kind || (policy.kind === "set" && next.kind === "set" && policy.value !== next.value))) {
|
|
319
|
+
throw new Error(`Conflicting setup AGENTS merge policy flags: ${source} conflicts with another merge policy selector.`);
|
|
320
|
+
}
|
|
321
|
+
policy = next;
|
|
322
|
+
};
|
|
323
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
324
|
+
const arg = args[index];
|
|
325
|
+
if (arg === "--merge-agents" || arg === "--no-merge-agents" || arg === "--clear-merge-agents-policy") {
|
|
326
|
+
const next = args[index + 1];
|
|
327
|
+
if (next && !next.startsWith("--")) {
|
|
328
|
+
throw new Error(`Setup AGENTS merge policy flags do not accept values: ${arg} ${next}`);
|
|
329
|
+
}
|
|
330
|
+
if (arg === "--merge-agents") {
|
|
331
|
+
setPolicy({ kind: "set", value: true }, arg);
|
|
332
|
+
}
|
|
333
|
+
else if (arg === "--no-merge-agents") {
|
|
334
|
+
setPolicy({ kind: "set", value: false }, arg);
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
setPolicy({ kind: "clear" }, arg);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
else if (arg.startsWith("--merge-agents=") ||
|
|
341
|
+
arg.startsWith("--no-merge-agents=") ||
|
|
342
|
+
arg.startsWith("--clear-merge-agents-policy=")) {
|
|
343
|
+
throw new Error(`Setup AGENTS merge policy flags do not accept values: ${arg}`);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return policy;
|
|
347
|
+
}
|
|
348
|
+
export function resolveSetupMergeAgentsArg(args) {
|
|
349
|
+
const policy = resolveSetupAgentsMergePolicyArg(args);
|
|
350
|
+
return policy?.kind === "set" ? policy.value : undefined;
|
|
351
|
+
}
|
|
299
352
|
export function resolveSetupInstallModeArg(args) {
|
|
300
353
|
let value;
|
|
301
354
|
const setValue = (next, source) => {
|
|
@@ -438,6 +491,15 @@ export function resolveSetupTeamModeArg(args) {
|
|
|
438
491
|
}
|
|
439
492
|
return value;
|
|
440
493
|
}
|
|
494
|
+
function splitOmxArgsAtEndOfOptions(args) {
|
|
495
|
+
const endOfOptionsIndex = args.indexOf("--");
|
|
496
|
+
if (endOfOptionsIndex === -1)
|
|
497
|
+
return { omxArgs: args, suffix: [] };
|
|
498
|
+
return {
|
|
499
|
+
omxArgs: args.slice(0, endOfOptionsIndex),
|
|
500
|
+
suffix: args.slice(endOfOptionsIndex),
|
|
501
|
+
};
|
|
502
|
+
}
|
|
441
503
|
export function resolveCliInvocation(args) {
|
|
442
504
|
const firstArg = args[0];
|
|
443
505
|
if (firstArg === "--help" || firstArg === "-h") {
|
|
@@ -801,13 +863,14 @@ export async function prepareCodexHomeForLaunch(cwd, sessionId, env = process.en
|
|
|
801
863
|
};
|
|
802
864
|
}
|
|
803
865
|
export function parseResumeCodexHomeSelection(args) {
|
|
866
|
+
const { omxArgs, suffix } = splitOmxArgsAtEndOfOptions(args);
|
|
804
867
|
const nextArgs = [];
|
|
805
868
|
let explicitCodexHome;
|
|
806
869
|
let projectOnly = false;
|
|
807
|
-
for (let index = 0; index <
|
|
808
|
-
const arg =
|
|
870
|
+
for (let index = 0; index < omxArgs.length; index += 1) {
|
|
871
|
+
const arg = omxArgs[index];
|
|
809
872
|
if (arg === "--codex-home") {
|
|
810
|
-
const value =
|
|
873
|
+
const value = omxArgs[index + 1];
|
|
811
874
|
if (!value || value.startsWith("-")) {
|
|
812
875
|
throw new Error("Missing value after --codex-home.");
|
|
813
876
|
}
|
|
@@ -829,7 +892,7 @@ export function parseResumeCodexHomeSelection(args) {
|
|
|
829
892
|
nextArgs.push(arg);
|
|
830
893
|
}
|
|
831
894
|
return {
|
|
832
|
-
args: nextArgs,
|
|
895
|
+
args: [...nextArgs, ...suffix],
|
|
833
896
|
explicitCodexHome,
|
|
834
897
|
projectOnly,
|
|
835
898
|
};
|
|
@@ -874,8 +937,32 @@ export async function preflightResumeOmxPluginState(codexHomeDir, pkgRoot = getP
|
|
|
874
937
|
configUpdated,
|
|
875
938
|
};
|
|
876
939
|
}
|
|
877
|
-
|
|
878
|
-
|
|
940
|
+
export { CODEX_GLOBAL_OPTIONS_WITH_SPLIT_VALUE } from "../auth/hotswap.js";
|
|
941
|
+
export function isResumeCodexLaunch(args) {
|
|
942
|
+
const { omxArgs } = splitOmxArgsAtEndOfOptions(args);
|
|
943
|
+
for (let index = 0; index < omxArgs.length; index += 1) {
|
|
944
|
+
const arg = omxArgs[index];
|
|
945
|
+
const optionValue = resolveCodexGlobalOptionValue(arg);
|
|
946
|
+
if (optionValue?.valueArity === "single") {
|
|
947
|
+
if (!optionValue.attached)
|
|
948
|
+
index += 1;
|
|
949
|
+
continue;
|
|
950
|
+
}
|
|
951
|
+
if (optionValue?.valueArity === "variadic") {
|
|
952
|
+
if (optionValue.attached)
|
|
953
|
+
continue;
|
|
954
|
+
let nextIndex = index + 1;
|
|
955
|
+
while (nextIndex < omxArgs.length && !omxArgs[nextIndex].startsWith("-")) {
|
|
956
|
+
nextIndex += 1;
|
|
957
|
+
}
|
|
958
|
+
index = nextIndex - 1;
|
|
959
|
+
continue;
|
|
960
|
+
}
|
|
961
|
+
if (arg.startsWith("-"))
|
|
962
|
+
continue;
|
|
963
|
+
return arg === "resume";
|
|
964
|
+
}
|
|
965
|
+
return false;
|
|
879
966
|
}
|
|
880
967
|
async function prepareResumeCodexHomeForLaunch(cwd, sessionId, args, env = process.env) {
|
|
881
968
|
const selection = parseResumeCodexHomeSelection(args);
|
|
@@ -1088,6 +1175,18 @@ function hasErrnoCode(error, code) {
|
|
|
1088
1175
|
function isMissingTmuxLaunchNoise(error) {
|
|
1089
1176
|
return error instanceof Error && /spawnSync tmux ENOENT/i.test(error.message);
|
|
1090
1177
|
}
|
|
1178
|
+
function reportOrdinaryLaunchRootConflict(error, cwd, ordinaryLaunch) {
|
|
1179
|
+
if (!ordinaryLaunch || !isSessionPointerLaunchAbort(error)
|
|
1180
|
+
|| error.code !== "session_pointer_owner_conflict"
|
|
1181
|
+
|| getBaseStateDirWithSource(cwd).rootSource !== "cwd-default")
|
|
1182
|
+
return;
|
|
1183
|
+
console.error("[omx] concurrent conversations in this checkout require distinct user-specified OMX_ROOT values.\n" +
|
|
1184
|
+
"[omx] Choose a distinct directory and set OMX_ROOT before launching the additional conversation.\n" +
|
|
1185
|
+
"[omx] POSIX: OMX_ROOT=\"$HOME/.omx/instances/second-conversation\" omx\n" +
|
|
1186
|
+
"[omx] PowerShell: $env:OMX_ROOT = \"$HOME/.omx/instances/second-conversation\"; omx\n" +
|
|
1187
|
+
"[omx] cmd.exe: set \"OMX_ROOT=%USERPROFILE%\\.omx\\instances\\second-conversation\" && omx\n" +
|
|
1188
|
+
"[omx] The selected OMX_ROOT is used literally; OMX does not reroute or allocate one automatically.");
|
|
1189
|
+
}
|
|
1091
1190
|
function logCliOperationFailure(error) {
|
|
1092
1191
|
if (isMissingTmuxLaunchNoise(error))
|
|
1093
1192
|
return;
|
|
@@ -1513,10 +1612,31 @@ function launchArgRequestsDisposableWorktree(arg) {
|
|
|
1513
1612
|
(arg.startsWith("-w") && arg.length > 2);
|
|
1514
1613
|
}
|
|
1515
1614
|
function launchArgsRequestMadmaxIsolation(launchArgs) {
|
|
1516
|
-
|
|
1615
|
+
for (const arg of launchArgs) {
|
|
1616
|
+
if (arg === "--")
|
|
1617
|
+
break;
|
|
1618
|
+
if (arg === MADMAX_FLAG || arg === MADMAX_SPARK_FLAG)
|
|
1619
|
+
return true;
|
|
1620
|
+
}
|
|
1621
|
+
return false;
|
|
1622
|
+
}
|
|
1623
|
+
function launchArgsRequestAuthHotswap(launchArgs) {
|
|
1624
|
+
for (const arg of launchArgs) {
|
|
1625
|
+
if (arg === "--")
|
|
1626
|
+
break;
|
|
1627
|
+
if (arg === "--hotswap")
|
|
1628
|
+
return true;
|
|
1629
|
+
}
|
|
1630
|
+
return false;
|
|
1517
1631
|
}
|
|
1518
1632
|
function launchArgsRequestDisposableWorktree(launchArgs) {
|
|
1519
|
-
|
|
1633
|
+
for (const arg of launchArgs) {
|
|
1634
|
+
if (arg === "--")
|
|
1635
|
+
break;
|
|
1636
|
+
if (launchArgRequestsDisposableWorktree(arg))
|
|
1637
|
+
return true;
|
|
1638
|
+
}
|
|
1639
|
+
return false;
|
|
1520
1640
|
}
|
|
1521
1641
|
function clearInheritedMadmaxRootForDisposableWorktreeLaunch(launchArgs, env = process.env) {
|
|
1522
1642
|
if (!launchArgsRequestDisposableWorktree(launchArgs))
|
|
@@ -1890,6 +2010,7 @@ export async function main(args) {
|
|
|
1890
2010
|
"sparkshell",
|
|
1891
2011
|
"team",
|
|
1892
2012
|
"ralph",
|
|
2013
|
+
"ralplan",
|
|
1893
2014
|
"ultragoal",
|
|
1894
2015
|
"performance-goal",
|
|
1895
2016
|
"session",
|
|
@@ -1909,10 +2030,11 @@ export async function main(args) {
|
|
|
1909
2030
|
]);
|
|
1910
2031
|
const firstArg = args[0];
|
|
1911
2032
|
const { command, launchArgs } = resolveCliInvocation(args);
|
|
1912
|
-
const
|
|
2033
|
+
const { omxArgs } = splitOmxArgsAtEndOfOptions(args);
|
|
2034
|
+
const flags = new Set(omxArgs.filter((arg) => arg.startsWith("--")));
|
|
1913
2035
|
const options = {
|
|
1914
2036
|
force: flags.has("--force"),
|
|
1915
|
-
mergeAgents:
|
|
2037
|
+
mergeAgents: undefined,
|
|
1916
2038
|
dryRun: flags.has("--dry-run"),
|
|
1917
2039
|
verbose: flags.has("--verbose"),
|
|
1918
2040
|
team: flags.has("--team"),
|
|
@@ -1921,11 +2043,19 @@ export async function main(args) {
|
|
|
1921
2043
|
console.log(HELP);
|
|
1922
2044
|
return;
|
|
1923
2045
|
}
|
|
1924
|
-
activateMadmaxIsolationIfNeeded(command, launchArgs, process.cwd(), process.env);
|
|
1925
2046
|
try {
|
|
2047
|
+
if (command === "session") {
|
|
2048
|
+
await sessionCommand(args.slice(1));
|
|
2049
|
+
return;
|
|
2050
|
+
}
|
|
2051
|
+
if (command === "resume" && launchArgs.some((arg) => arg === "--help" || arg === "-h")) {
|
|
2052
|
+
console.log(RESUME_HELP);
|
|
2053
|
+
return;
|
|
2054
|
+
}
|
|
2055
|
+
activateMadmaxIsolationIfNeeded(command, launchArgs, process.cwd(), process.env);
|
|
1926
2056
|
switch (command) {
|
|
1927
2057
|
case "launch":
|
|
1928
|
-
if (launchArgs
|
|
2058
|
+
if (launchArgsRequestAuthHotswap(launchArgs)) {
|
|
1929
2059
|
await launchWithAuthHotswap(launchArgs);
|
|
1930
2060
|
}
|
|
1931
2061
|
else {
|
|
@@ -1939,6 +2069,7 @@ export async function main(args) {
|
|
|
1939
2069
|
await setup({
|
|
1940
2070
|
force: options.force,
|
|
1941
2071
|
mergeAgents: options.mergeAgents,
|
|
2072
|
+
mergeAgentsPolicy: resolveSetupAgentsMergePolicyArg(args.slice(1)),
|
|
1942
2073
|
dryRun: options.dryRun,
|
|
1943
2074
|
verbose: options.verbose,
|
|
1944
2075
|
scope: resolveSetupScopeArg(args.slice(1)),
|
|
@@ -2035,15 +2166,15 @@ export async function main(args) {
|
|
|
2035
2166
|
case "team":
|
|
2036
2167
|
await teamCommand(args.slice(1), options);
|
|
2037
2168
|
break;
|
|
2038
|
-
case "session":
|
|
2039
|
-
await sessionCommand(args.slice(1));
|
|
2040
|
-
break;
|
|
2041
2169
|
case "url":
|
|
2042
2170
|
await urlCommand(args.slice(1));
|
|
2043
2171
|
break;
|
|
2044
2172
|
case "ralph":
|
|
2045
2173
|
await ralphCommand(args.slice(1));
|
|
2046
2174
|
break;
|
|
2175
|
+
case "ralplan":
|
|
2176
|
+
await ralplanCommand(args.slice(1));
|
|
2177
|
+
break;
|
|
2047
2178
|
case "ultragoal":
|
|
2048
2179
|
await ultragoalCommand(args.slice(1));
|
|
2049
2180
|
break;
|
|
@@ -2256,9 +2387,14 @@ async function reasoningCommand(args) {
|
|
|
2256
2387
|
return;
|
|
2257
2388
|
}
|
|
2258
2389
|
if (!REASONING_MODE_SET.has(mode)) {
|
|
2259
|
-
const
|
|
2260
|
-
?
|
|
2261
|
-
:
|
|
2390
|
+
const unsupportedMode = isUnsupportedRootReasoningEffort(mode)
|
|
2391
|
+
? normalizeUnsupportedRootReasoningEffort(mode)
|
|
2392
|
+
: undefined;
|
|
2393
|
+
const guidance = unsupportedMode === "max"
|
|
2394
|
+
? `Reasoning mode "${mode}" is not supported by "omx reasoning".\nPer-agent "max" is configured with agentReasoning; direct -c model_reasoning_effort=... is passed to Codex and remains capability-dependent.\n`
|
|
2395
|
+
: unsupportedMode === "ultra"
|
|
2396
|
+
? `Reasoning mode "${mode}" is not supported by OMX root or per-agent reasoning and is not an alias for "max".\nDirect -c model_reasoning_effort=... remains opaque Codex passthrough.\n`
|
|
2397
|
+
: "";
|
|
2262
2398
|
throw new Error(`${guidance}Invalid reasoning mode "${mode}". Expected one of: ${REASONING_MODES.join(", ")}.\n${REASONING_USAGE}`);
|
|
2263
2399
|
}
|
|
2264
2400
|
const { mkdir, readFile, writeFile } = await import("fs/promises");
|
|
@@ -2272,7 +2408,9 @@ async function reasoningCommand(args) {
|
|
|
2272
2408
|
}
|
|
2273
2409
|
export async function launchWithAuthHotswap(args) {
|
|
2274
2410
|
const launchCwd = process.cwd();
|
|
2275
|
-
const
|
|
2411
|
+
const { omxArgs, suffix } = splitOmxArgsAtEndOfOptions(args);
|
|
2412
|
+
const parsedWorktree = parseWorktreeMode(omxArgs);
|
|
2413
|
+
const hotswapArgs = [...parsedWorktree.remainingArgs, ...suffix];
|
|
2276
2414
|
let cwd = launchCwd;
|
|
2277
2415
|
let worktreeDirty = false;
|
|
2278
2416
|
let ensuredLaunchWorktree;
|
|
@@ -2326,7 +2464,7 @@ export async function launchWithAuthHotswap(args) {
|
|
|
2326
2464
|
}
|
|
2327
2465
|
const status = await runAuthHotswap({
|
|
2328
2466
|
cwd,
|
|
2329
|
-
argv:
|
|
2467
|
+
argv: hotswapArgs,
|
|
2330
2468
|
lifecycle: {
|
|
2331
2469
|
prepareCodexHomeForLaunch,
|
|
2332
2470
|
preLaunch: (launchPath, sessionId, notifyTempContract, codexHomeOverride, enableAuthority) => preLaunch(launchPath, sessionId, notifyTempContract, codexHomeOverride, enableAuthority, worktreeDirty),
|
|
@@ -2366,14 +2504,16 @@ export async function launchWithHud(args) {
|
|
|
2366
2504
|
}
|
|
2367
2505
|
}
|
|
2368
2506
|
const launchCwd = process.cwd();
|
|
2369
|
-
const
|
|
2507
|
+
const { omxArgs, suffix } = splitOmxArgsAtEndOfOptions(args);
|
|
2508
|
+
const parsedWorktree = parseWorktreeMode(omxArgs);
|
|
2370
2509
|
const notifyTempResult = resolveNotifyTempContract(parsedWorktree.remainingArgs, process.env);
|
|
2371
|
-
const
|
|
2510
|
+
const passthroughArgs = [...notifyTempResult.passthroughArgs, ...suffix];
|
|
2511
|
+
const explicitLaunchPolicy = resolveEffectiveLeaderLaunchPolicyOverride(passthroughArgs, process.env);
|
|
2372
2512
|
const persistentCodexHomeForLaunch = resolveCodexHomeForLaunch(launchCwd, process.env);
|
|
2373
2513
|
const { launchPolicy, effectiveExplicitLaunchPolicy } = resolveTmuxAwareLaunchPolicy(explicitLaunchPolicy, isNativeWindows());
|
|
2374
2514
|
const enableNotifyFallbackAuthority = launchPolicy === "direct";
|
|
2375
|
-
const workerSparkModel = resolveWorkerSparkModel(
|
|
2376
|
-
let normalizedArgs = normalizeCodexLaunchArgs(
|
|
2515
|
+
const workerSparkModel = resolveWorkerSparkModel(passthroughArgs, persistentCodexHomeForLaunch);
|
|
2516
|
+
let normalizedArgs = normalizeCodexLaunchArgs(passthroughArgs);
|
|
2377
2517
|
let cwd = launchCwd;
|
|
2378
2518
|
let worktreeDirty = false;
|
|
2379
2519
|
let ensuredLaunchWorktree;
|
|
@@ -2402,7 +2542,7 @@ export async function launchWithHud(args) {
|
|
|
2402
2542
|
}
|
|
2403
2543
|
}
|
|
2404
2544
|
const madmaxWorktreeRuntimeContext = captureMadmaxWorktreeRuntimeContext({
|
|
2405
|
-
originalLaunchArgs:
|
|
2545
|
+
originalLaunchArgs: omxArgs,
|
|
2406
2546
|
worktreeEnabled: Boolean(parsedWorktree.mode.enabled && ensuredLaunchWorktree?.enabled),
|
|
2407
2547
|
sourceCwd: launchCwd,
|
|
2408
2548
|
worktreeCwd: ensuredLaunchWorktree?.enabled ? ensuredLaunchWorktree.worktreePath : undefined,
|
|
@@ -2457,7 +2597,15 @@ export async function launchWithHud(args) {
|
|
|
2457
2597
|
await preLaunch(cwd, sessionId, notifyTempResult.contract, codexHomeOverride, enableNotifyFallbackAuthority, worktreeDirty);
|
|
2458
2598
|
}
|
|
2459
2599
|
catch (err) {
|
|
2460
|
-
|
|
2600
|
+
if (isSessionPointerLaunchAbort(err)) {
|
|
2601
|
+
console.error(`[omx] session pointer launch aborted: ${err.code}`);
|
|
2602
|
+
reportOrdinaryLaunchRootConflict(err, cwd, cwd === launchCwd && !parsedWorktree.mode.enabled && !isResumeCodexLaunch(normalizedArgs));
|
|
2603
|
+
await cleanupRuntimeCodexHome(preparedCodexHome.runtimeCodexHomeForCleanup, projectLocalCodexHomeForCleanup).catch((cleanupErr) => {
|
|
2604
|
+
console.error(`[omx] preLaunch abort cleanup warning: ${cleanupErr instanceof Error ? cleanupErr.message : cleanupErr}`);
|
|
2605
|
+
});
|
|
2606
|
+
throw err;
|
|
2607
|
+
}
|
|
2608
|
+
// preLaunch errors after pointer commit must not prevent Codex from starting.
|
|
2461
2609
|
console.error(`[omx] preLaunch warning: ${err instanceof Error ? err.message : err}`);
|
|
2462
2610
|
}
|
|
2463
2611
|
// ── Phase 2: run ────────────────────────────────────────────────────────
|
|
@@ -2479,9 +2627,11 @@ export async function launchWithHud(args) {
|
|
|
2479
2627
|
}
|
|
2480
2628
|
export async function execWithOverlay(args) {
|
|
2481
2629
|
const launchCwd = process.cwd();
|
|
2482
|
-
const
|
|
2630
|
+
const { omxArgs, suffix } = splitOmxArgsAtEndOfOptions(args);
|
|
2631
|
+
const parsedWorktree = parseWorktreeMode(omxArgs);
|
|
2483
2632
|
const notifyTempResult = resolveNotifyTempContract(parsedWorktree.remainingArgs, process.env);
|
|
2484
|
-
const
|
|
2633
|
+
const passthroughArgs = [...notifyTempResult.passthroughArgs, ...suffix];
|
|
2634
|
+
const normalizedArgs = normalizeCodexLaunchArgs(passthroughArgs);
|
|
2485
2635
|
let cwd = launchCwd;
|
|
2486
2636
|
let worktreeDirty = false;
|
|
2487
2637
|
let ensuredLaunchWorktree;
|
|
@@ -2543,6 +2693,13 @@ export async function execWithOverlay(args) {
|
|
|
2543
2693
|
await preLaunch(cwd, sessionId, notifyTempResult.contract, codexHomeOverride, true, worktreeDirty);
|
|
2544
2694
|
}
|
|
2545
2695
|
catch (err) {
|
|
2696
|
+
if (isSessionPointerLaunchAbort(err)) {
|
|
2697
|
+
console.error(`[omx] session pointer launch aborted: ${err.code}`);
|
|
2698
|
+
await cleanupRuntimeCodexHome(preparedCodexHome.runtimeCodexHomeForCleanup, projectLocalCodexHomeForCleanup).catch((cleanupErr) => {
|
|
2699
|
+
console.error(`[omx] preLaunch abort cleanup warning: ${cleanupErr instanceof Error ? cleanupErr.message : cleanupErr}`);
|
|
2700
|
+
});
|
|
2701
|
+
throw err;
|
|
2702
|
+
}
|
|
2546
2703
|
console.error(`[omx] preLaunch warning: ${err instanceof Error ? err.message : err}`);
|
|
2547
2704
|
}
|
|
2548
2705
|
try {
|
|
@@ -2571,7 +2728,8 @@ export async function execWithOverlay(args) {
|
|
|
2571
2728
|
}
|
|
2572
2729
|
}
|
|
2573
2730
|
export function normalizeCodexLaunchArgs(args) {
|
|
2574
|
-
const
|
|
2731
|
+
const { omxArgs, suffix } = splitOmxArgsAtEndOfOptions(args);
|
|
2732
|
+
const parsed = parseWorktreeMode(omxArgs);
|
|
2575
2733
|
const launchPolicyParsed = splitLeaderLaunchPolicyArgs(parsed.remainingArgs);
|
|
2576
2734
|
const normalized = [];
|
|
2577
2735
|
let wantsBypass = false;
|
|
@@ -2599,7 +2757,7 @@ export function normalizeCodexLaunchArgs(args) {
|
|
|
2599
2757
|
continue;
|
|
2600
2758
|
}
|
|
2601
2759
|
if (arg === "--max" || arg === "--ultra") {
|
|
2602
|
-
throw
|
|
2760
|
+
throw unsupportedLaunchShorthandError(arg);
|
|
2603
2761
|
}
|
|
2604
2762
|
if (arg === SPARK_FLAG) {
|
|
2605
2763
|
// Spark model is injected into worker env only (not the leader). Consume flag.
|
|
@@ -2618,7 +2776,7 @@ export function normalizeCodexLaunchArgs(args) {
|
|
|
2618
2776
|
if (reasoningMode) {
|
|
2619
2777
|
normalized.push(CONFIG_FLAG, `${REASONING_KEY}="${reasoningMode}"`);
|
|
2620
2778
|
}
|
|
2621
|
-
return normalized;
|
|
2779
|
+
return [...normalized, ...suffix];
|
|
2622
2780
|
}
|
|
2623
2781
|
/**
|
|
2624
2782
|
* Returns the spark model string if --spark or --madmax-spark appears in the
|
|
@@ -2627,6 +2785,8 @@ export function normalizeCodexLaunchArgs(args) {
|
|
|
2627
2785
|
*/
|
|
2628
2786
|
export function resolveWorkerSparkModel(args, codexHomeOverride) {
|
|
2629
2787
|
for (const arg of args) {
|
|
2788
|
+
if (arg === "--")
|
|
2789
|
+
break;
|
|
2630
2790
|
if (arg === SPARK_FLAG || arg === MADMAX_SPARK_FLAG) {
|
|
2631
2791
|
return resolveTeamLowComplexityDefaultModel(codexHomeOverride);
|
|
2632
2792
|
}
|
|
@@ -2706,6 +2866,19 @@ export function resolveNativeSessionName(cwd, sessionId, env = process.env) {
|
|
|
2706
2866
|
}
|
|
2707
2867
|
return buildTmuxSessionName(cwd, sessionId);
|
|
2708
2868
|
}
|
|
2869
|
+
async function resolvePreLaunchSessionPointerOptions() {
|
|
2870
|
+
const ownerCandidate = normalizeSessionId(process.env.OMX_SESSION_ID);
|
|
2871
|
+
if (!ownerCandidate)
|
|
2872
|
+
return {};
|
|
2873
|
+
const evidence = await probeActualTmuxInstanceEvidence(process.env.TMUX_PANE);
|
|
2874
|
+
if (!tmuxEvidenceBindsCandidate(evidence, ownerCandidate))
|
|
2875
|
+
return {};
|
|
2876
|
+
return {
|
|
2877
|
+
ownerAliasVerified: true,
|
|
2878
|
+
...(evidence.sessionName ? { tmuxSessionName: evidence.sessionName } : {}),
|
|
2879
|
+
...(evidence.paneTarget ? { tmuxPaneId: evidence.paneTarget } : {}),
|
|
2880
|
+
};
|
|
2881
|
+
}
|
|
2709
2882
|
function tagTmuxSessionWithInstance(sessionName, sessionId) {
|
|
2710
2883
|
const target = sessionName.trim();
|
|
2711
2884
|
const instanceId = sessionId.trim();
|
|
@@ -2754,12 +2927,14 @@ function buildNativeHookBaseContext(cwd, sessionId, normalizedEvent, extra = {})
|
|
|
2754
2927
|
export function injectModelInstructionsBypassArgs(cwd, args, env = process.env, defaultFilePath) {
|
|
2755
2928
|
if (!shouldBypassDefaultSystemPrompt(env))
|
|
2756
2929
|
return [...args];
|
|
2757
|
-
|
|
2930
|
+
const { omxArgs, suffix } = splitOmxArgsAtEndOfOptions(args);
|
|
2931
|
+
if (hasModelInstructionsOverride(omxArgs))
|
|
2758
2932
|
return [...args];
|
|
2759
2933
|
return [
|
|
2760
|
-
...
|
|
2934
|
+
...omxArgs,
|
|
2761
2935
|
CONFIG_FLAG,
|
|
2762
2936
|
buildModelInstructionsOverride(cwd, env, defaultFilePath),
|
|
2937
|
+
...suffix,
|
|
2763
2938
|
];
|
|
2764
2939
|
}
|
|
2765
2940
|
export function collectInheritableTeamWorkerArgs(codexArgs) {
|
|
@@ -2776,7 +2951,7 @@ export function resolveTeamWorkerLaunchArgsEnv(existingRaw, codexArgs, inheritLe
|
|
|
2776
2951
|
});
|
|
2777
2952
|
if (normalized.length === 0)
|
|
2778
2953
|
return null;
|
|
2779
|
-
return normalized
|
|
2954
|
+
return serializeTeamWorkerLaunchArgs(normalized);
|
|
2780
2955
|
}
|
|
2781
2956
|
export { readTopLevelTomlString, upsertTopLevelTomlString } from "../utils/toml.js";
|
|
2782
2957
|
function sanitizeTmuxToken(value) {
|
|
@@ -3192,11 +3367,22 @@ function buildTmuxExtendedKeysReleaseShellSnippet(cwd) {
|
|
|
3192
3367
|
return `if [ -n "\${OMX_TMUX_EXTENDED_KEYS_LEASE:-}" ]; then ${buildTmuxExtendedKeysHelperCommand(cwd, "release")} "\${OMX_TMUX_EXTENDED_KEYS_LEASE}" >/dev/null 2>&1 || true; fi;`;
|
|
3193
3368
|
}
|
|
3194
3369
|
const SHELL_ENV_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
3370
|
+
const DETACHED_SESSION_PANE_ENV_KEYS = new Set([
|
|
3371
|
+
"TERM",
|
|
3372
|
+
"TERM_PROGRAM",
|
|
3373
|
+
"TERM_PROGRAM_VERSION",
|
|
3374
|
+
"TMUX",
|
|
3375
|
+
"TMUX_PANE",
|
|
3376
|
+
"COLUMNS",
|
|
3377
|
+
"LINES",
|
|
3378
|
+
]);
|
|
3195
3379
|
export function serializeDetachedSessionParentEnv(env) {
|
|
3196
3380
|
const lines = [];
|
|
3197
3381
|
for (const key of Object.keys(env).sort()) {
|
|
3198
3382
|
if (!SHELL_ENV_NAME_PATTERN.test(key))
|
|
3199
3383
|
continue;
|
|
3384
|
+
if (DETACHED_SESSION_PANE_ENV_KEYS.has(key))
|
|
3385
|
+
continue;
|
|
3200
3386
|
const value = env[key];
|
|
3201
3387
|
if (typeof value !== "string")
|
|
3202
3388
|
continue;
|
|
@@ -3763,8 +3949,8 @@ export async function reapPostLaunchOrphanedMcpProcesses(dependencies = {}) {
|
|
|
3763
3949
|
/**
|
|
3764
3950
|
* preLaunch: Prepare environment before Codex starts.
|
|
3765
3951
|
* 1. Best-effort launch-safe orphan cleanup for detached OMX MCP processes
|
|
3766
|
-
* 2.
|
|
3767
|
-
* 3.
|
|
3952
|
+
* 2. Establish the canonical session pointer
|
|
3953
|
+
* 3. Generate session-scoped launch artifacts and start best-effort helpers
|
|
3768
3954
|
*
|
|
3769
3955
|
* Automatic broad stale-session cleanup remains disabled here. Only detached
|
|
3770
3956
|
* OMX MCP processes without a live Codex ancestor are reaped so new launches
|
|
@@ -3785,7 +3971,9 @@ export async function preLaunch(cwd, sessionId, notifyTempContract, codexHomeOve
|
|
|
3785
3971
|
logCliOperationFailure(err);
|
|
3786
3972
|
// Non-fatal
|
|
3787
3973
|
}
|
|
3788
|
-
// 2.
|
|
3974
|
+
// 2. Establish the canonical pointer before any session-scoped launch artifact.
|
|
3975
|
+
await writeSessionStart(cwd, sessionId, await resolvePreLaunchSessionPointerOptions());
|
|
3976
|
+
// 3. Generate runtime overlay + write session-scoped model instructions file
|
|
3789
3977
|
const orchestrationMode = await resolveSessionOrchestrationMode(cwd, sessionId);
|
|
3790
3978
|
const overlay = await generateOverlay(cwd, sessionId, { orchestrationMode });
|
|
3791
3979
|
const launchAppendix = await readLaunchAppendInstructions();
|
|
@@ -3798,11 +3986,10 @@ export async function preLaunch(cwd, sessionId, notifyTempContract, codexHomeOve
|
|
|
3798
3986
|
${launchAppendix}${dirtyWorktreeGuidance}`
|
|
3799
3987
|
: `${overlay}${dirtyWorktreeGuidance}`;
|
|
3800
3988
|
await writeSessionModelInstructionsFile(cwd, sessionId, sessionInstructions);
|
|
3801
|
-
//
|
|
3989
|
+
// 4. Reset session metrics and tag the established session.
|
|
3802
3990
|
await resetSessionMetrics(cwd, sessionId);
|
|
3803
|
-
await writeSessionStart(cwd, sessionId);
|
|
3804
3991
|
tagCurrentTmuxSessionWithInstance(sessionId);
|
|
3805
|
-
//
|
|
3992
|
+
// 5. Start notify fallback watcher (best effort)
|
|
3806
3993
|
try {
|
|
3807
3994
|
await startNotifyFallbackWatcher(cwd, { codexHomeOverride, enableAuthority: enableNotifyFallbackAuthority, sessionId });
|
|
3808
3995
|
}
|
|
@@ -3810,7 +3997,7 @@ ${launchAppendix}${dirtyWorktreeGuidance}`
|
|
|
3810
3997
|
logCliOperationFailure(err);
|
|
3811
3998
|
// Non-fatal
|
|
3812
3999
|
}
|
|
3813
|
-
//
|
|
4000
|
+
// 6. Start derived watcher (best effort, opt-in)
|
|
3814
4001
|
try {
|
|
3815
4002
|
await startHookDerivedWatcher(cwd);
|
|
3816
4003
|
}
|
|
@@ -3818,7 +4005,7 @@ ${launchAppendix}${dirtyWorktreeGuidance}`
|
|
|
3818
4005
|
logCliOperationFailure(err);
|
|
3819
4006
|
// Non-fatal
|
|
3820
4007
|
}
|
|
3821
|
-
//
|
|
4008
|
+
// 7. Emit temp notification startup summary + warnings, then send session-start lifecycle notification (best effort)
|
|
3822
4009
|
try {
|
|
3823
4010
|
if (notifyTempContract?.active) {
|
|
3824
4011
|
process.env[OMX_NOTIFY_TEMP_CONTRACT_ENV] =
|
|
@@ -3847,7 +4034,7 @@ ${launchAppendix}${dirtyWorktreeGuidance}`
|
|
|
3847
4034
|
logCliOperationFailure(err);
|
|
3848
4035
|
// Non-fatal: notification failures must never block launch
|
|
3849
4036
|
}
|
|
3850
|
-
//
|
|
4037
|
+
// 8. Dispatch native hook event (best effort)
|
|
3851
4038
|
try {
|
|
3852
4039
|
await emitNativeHookEvent(cwd, "session-start", {
|
|
3853
4040
|
session_id: sessionId,
|
|
@@ -4295,8 +4482,9 @@ export function buildTmuxShellCommand(command, args) {
|
|
|
4295
4482
|
function encodePowerShellCommand(commandText) {
|
|
4296
4483
|
return Buffer.from(commandText, "utf16le").toString("base64");
|
|
4297
4484
|
}
|
|
4298
|
-
function isCodexVersionRequest(args) {
|
|
4299
|
-
|
|
4485
|
+
export function isCodexVersionRequest(args) {
|
|
4486
|
+
const { omxArgs } = splitOmxArgsAtEndOfOptions(args);
|
|
4487
|
+
return omxArgs.some((arg) => CODEX_VERSION_FLAGS.has(arg));
|
|
4300
4488
|
}
|
|
4301
4489
|
export function buildWindowsPromptCommand(command, args) {
|
|
4302
4490
|
const invocation = [
|
|
@@ -4894,7 +5082,7 @@ async function flushNotifyFallbackOnce(cwd, options = {}) {
|
|
|
4894
5082
|
spawnSync(process.execPath, [watcherScript, "--once", "--cwd", cwd, "--notify-script", notifyScript], {
|
|
4895
5083
|
cwd,
|
|
4896
5084
|
stdio: "ignore",
|
|
4897
|
-
timeout:
|
|
5085
|
+
timeout: 45_000,
|
|
4898
5086
|
windowsHide: true,
|
|
4899
5087
|
env: buildNotifyFallbackWatcherEnv(process.env, {
|
|
4900
5088
|
codexHomeOverride: options.codexHomeOverride,
|
|
@@ -5037,6 +5225,7 @@ async function cancelModes(args = []) {
|
|
|
5037
5225
|
const nowIso = new Date().toISOString();
|
|
5038
5226
|
const force = args.includes("--force");
|
|
5039
5227
|
try {
|
|
5228
|
+
const writableScope = await resolveWritableStateScope(cwd);
|
|
5040
5229
|
const loadStates = async (refs) => {
|
|
5041
5230
|
const loaded = new Map();
|
|
5042
5231
|
for (const ref of refs) {
|
|
@@ -5064,8 +5253,7 @@ async function cancelModes(args = []) {
|
|
|
5064
5253
|
if (hasActiveWorkflowMode(runDirStates))
|
|
5065
5254
|
states = runDirStates;
|
|
5066
5255
|
}
|
|
5067
|
-
const
|
|
5068
|
-
const currentSessionId = typeof currentSession?.session_id === "string" ? currentSession.session_id.trim() : "";
|
|
5256
|
+
const currentSessionId = writableScope.sessionId ?? "";
|
|
5069
5257
|
const changed = new Set();
|
|
5070
5258
|
const reported = new Set();
|
|
5071
5259
|
const cancelMode = (mode, phase = "cancelled", reportIfWasActive = true) => {
|