oh-my-codex 0.18.6 → 0.18.8
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 +59 -10
- package/crates/omx-sparkshell/tests/execution.rs +1 -1
- package/dist/agents/__tests__/definitions.test.js +11 -0
- package/dist/agents/__tests__/definitions.test.js.map +1 -1
- package/dist/agents/__tests__/native-config.test.js +56 -6
- package/dist/agents/__tests__/native-config.test.js.map +1 -1
- package/dist/agents/definitions.d.ts +10 -0
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +5 -1
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/native-config.d.ts +5 -1
- package/dist/agents/native-config.d.ts.map +1 -1
- package/dist/agents/native-config.js +19 -4
- package/dist/agents/native-config.js.map +1 -1
- package/dist/autopilot/__tests__/fsm.test.d.ts +2 -0
- package/dist/autopilot/__tests__/fsm.test.d.ts.map +1 -0
- package/dist/autopilot/__tests__/fsm.test.js +75 -0
- package/dist/autopilot/__tests__/fsm.test.js.map +1 -0
- package/dist/autopilot/__tests__/ralplan-gate.test.d.ts +2 -0
- package/dist/autopilot/__tests__/ralplan-gate.test.d.ts.map +1 -0
- package/dist/autopilot/__tests__/ralplan-gate.test.js +79 -0
- package/dist/autopilot/__tests__/ralplan-gate.test.js.map +1 -0
- package/dist/autopilot/deep-interview-gate.d.ts +18 -0
- package/dist/autopilot/deep-interview-gate.d.ts.map +1 -0
- package/dist/autopilot/deep-interview-gate.js +256 -0
- package/dist/autopilot/deep-interview-gate.js.map +1 -0
- package/dist/autopilot/fsm.d.ts +13 -0
- package/dist/autopilot/fsm.d.ts.map +1 -0
- package/dist/autopilot/fsm.js +70 -0
- package/dist/autopilot/fsm.js.map +1 -0
- package/dist/autopilot/ralplan-gate.d.ts +17 -0
- package/dist/autopilot/ralplan-gate.d.ts.map +1 -0
- package/dist/autopilot/ralplan-gate.js +61 -0
- package/dist/autopilot/ralplan-gate.js.map +1 -0
- package/dist/cli/__tests__/codex-plugin-layout.test.js +512 -1
- package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js +39 -0
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +83 -7
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/launch-fallback.test.js +175 -6
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/package-bin-contract.test.js +8 -4
- package/dist/cli/__tests__/package-bin-contract.test.js.map +1 -1
- package/dist/cli/__tests__/question.test.js +100 -0
- package/dist/cli/__tests__/question.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-goal-mode-contract.test.js +13 -0
- package/dist/cli/__tests__/ralph-goal-mode-contract.test.js.map +1 -1
- package/dist/cli/__tests__/ralph.test.js +14 -0
- package/dist/cli/__tests__/ralph.test.js.map +1 -1
- package/dist/cli/__tests__/setup-install-mode.test.js +89 -0
- package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
- package/dist/cli/__tests__/setup-refresh.test.js +83 -0
- package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
- package/dist/cli/__tests__/state.test.js +21 -0
- package/dist/cli/__tests__/state.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.js +2 -2
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/__tests__/update.test.js +110 -2
- package/dist/cli/__tests__/update.test.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +8 -1
- package/dist/cli/doctor.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 +298 -50
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/plugin-marketplace.d.ts +14 -2
- package/dist/cli/plugin-marketplace.d.ts.map +1 -1
- package/dist/cli/plugin-marketplace.js +62 -15
- package/dist/cli/plugin-marketplace.js.map +1 -1
- package/dist/cli/question.d.ts.map +1 -1
- package/dist/cli/question.js +36 -5
- package/dist/cli/question.js.map +1 -1
- package/dist/cli/ralph.d.ts.map +1 -1
- package/dist/cli/ralph.js +3 -1
- package/dist/cli/ralph.js.map +1 -1
- package/dist/cli/setup-preferences.d.ts +2 -0
- package/dist/cli/setup-preferences.d.ts.map +1 -1
- package/dist/cli/setup-preferences.js +4 -0
- package/dist/cli/setup-preferences.js.map +1 -1
- package/dist/cli/setup.d.ts +3 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +166 -27
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/state.d.ts.map +1 -1
- package/dist/cli/state.js +8 -1
- package/dist/cli/state.js.map +1 -1
- package/dist/cli/tmux-hook.d.ts.map +1 -1
- package/dist/cli/tmux-hook.js +16 -0
- package/dist/cli/tmux-hook.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 +47 -3
- package/dist/cli/update.js.map +1 -1
- package/dist/config/__tests__/deep-interview.test.js +7 -6
- package/dist/config/__tests__/deep-interview.test.js.map +1 -1
- package/dist/config/__tests__/generator-notify.test.js +1 -0
- package/dist/config/__tests__/generator-notify.test.js.map +1 -1
- package/dist/config/deep-interview.d.ts.map +1 -1
- package/dist/config/deep-interview.js +14 -4
- package/dist/config/deep-interview.js.map +1 -1
- package/dist/config/generator.d.ts +2 -2
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +2 -2
- package/dist/config/generator.js.map +1 -1
- package/dist/config/team-mode.d.ts +12 -0
- package/dist/config/team-mode.d.ts.map +1 -0
- package/dist/config/team-mode.js +91 -0
- package/dist/config/team-mode.js.map +1 -0
- package/dist/hooks/__tests__/agents-overlay.test.js +88 -0
- package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js +8 -0
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/code-review-skill-contract.test.js +8 -0
- package/dist/hooks/__tests__/code-review-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/deep-interview-contract.test.js +10 -0
- package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +1072 -14
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js +64 -1
- package/dist/hooks/__tests__/notify-fallback-watcher.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +189 -0
- package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js +35 -2
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js +3 -3
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js.map +1 -1
- package/dist/hooks/__tests__/session.test.js +25 -0
- package/dist/hooks/__tests__/session.test.js.map +1 -1
- package/dist/hooks/__tests__/skill-guidance-contract.test.js +21 -0
- package/dist/hooks/__tests__/skill-guidance-contract.test.js.map +1 -1
- package/dist/hooks/agents-overlay.d.ts.map +1 -1
- package/dist/hooks/agents-overlay.js +36 -50
- package/dist/hooks/agents-overlay.js.map +1 -1
- package/dist/hooks/deep-interview-config-instruction.js +1 -1
- package/dist/hooks/deep-interview-config-instruction.js.map +1 -1
- package/dist/hooks/extensibility/__tests__/plugin-runner.test.js +31 -0
- package/dist/hooks/extensibility/__tests__/plugin-runner.test.js.map +1 -1
- package/dist/hooks/extensibility/plugin-runner.js +17 -21
- package/dist/hooks/extensibility/plugin-runner.js.map +1 -1
- package/dist/hooks/keyword-detector.d.ts +1 -0
- package/dist/hooks/keyword-detector.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.js +428 -32
- 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 +6 -0
- package/dist/hooks/prompt-guidance-contract.js.map +1 -1
- package/dist/hooks/session.d.ts +3 -0
- package/dist/hooks/session.d.ts.map +1 -1
- package/dist/hooks/session.js +13 -5
- package/dist/hooks/session.js.map +1 -1
- package/dist/hud/__tests__/authority.test.js +469 -31
- package/dist/hud/__tests__/authority.test.js.map +1 -1
- package/dist/hud/__tests__/hud-tmux-injection.test.js +2 -1
- package/dist/hud/__tests__/hud-tmux-injection.test.js.map +1 -1
- package/dist/hud/__tests__/index.test.js +210 -2
- package/dist/hud/__tests__/index.test.js.map +1 -1
- package/dist/hud/__tests__/reconcile.test.js +588 -28
- package/dist/hud/__tests__/reconcile.test.js.map +1 -1
- package/dist/hud/__tests__/render.test.js +61 -0
- package/dist/hud/__tests__/render.test.js.map +1 -1
- package/dist/hud/__tests__/state.test.js +208 -0
- package/dist/hud/__tests__/state.test.js.map +1 -1
- package/dist/hud/__tests__/tmux.test.js +314 -22
- package/dist/hud/__tests__/tmux.test.js.map +1 -1
- package/dist/hud/authority.d.ts +5 -0
- package/dist/hud/authority.d.ts.map +1 -1
- package/dist/hud/authority.js +337 -30
- package/dist/hud/authority.js.map +1 -1
- package/dist/hud/index.d.ts +20 -2
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +103 -26
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/reconcile.d.ts +3 -3
- package/dist/hud/reconcile.d.ts.map +1 -1
- package/dist/hud/reconcile.js +129 -20
- package/dist/hud/reconcile.js.map +1 -1
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +35 -0
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +64 -50
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/tmux.d.ts +26 -6
- package/dist/hud/tmux.d.ts.map +1 -1
- package/dist/hud/tmux.js +173 -38
- package/dist/hud/tmux.js.map +1 -1
- package/dist/hud/types.d.ts +11 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js.map +1 -1
- package/dist/mcp/__tests__/hermes-bridge.test.js +203 -7
- package/dist/mcp/__tests__/hermes-bridge.test.js.map +1 -1
- package/dist/mcp/__tests__/state-paths.test.js +71 -1
- package/dist/mcp/__tests__/state-paths.test.js.map +1 -1
- package/dist/mcp/__tests__/state-server.test.js +13 -1
- package/dist/mcp/__tests__/state-server.test.js.map +1 -1
- package/dist/mcp/hermes-bridge.d.ts +12 -2
- package/dist/mcp/hermes-bridge.d.ts.map +1 -1
- package/dist/mcp/hermes-bridge.js +83 -9
- package/dist/mcp/hermes-bridge.js.map +1 -1
- package/dist/mcp/state-paths.d.ts +32 -0
- package/dist/mcp/state-paths.d.ts.map +1 -1
- package/dist/mcp/state-paths.js +113 -17
- package/dist/mcp/state-paths.js.map +1 -1
- package/dist/mcp/state-server.d.ts +4 -4
- package/dist/modes/__tests__/base-autoresearch-contract.test.js +7 -1
- package/dist/modes/__tests__/base-autoresearch-contract.test.js.map +1 -1
- package/dist/pipeline/__tests__/stages.test.js +130 -0
- package/dist/pipeline/__tests__/stages.test.js.map +1 -1
- package/dist/pipeline/orchestrator.js +1 -1
- package/dist/pipeline/orchestrator.js.map +1 -1
- package/dist/pipeline/stages/ralplan.d.ts +1 -0
- package/dist/pipeline/stages/ralplan.d.ts.map +1 -1
- package/dist/pipeline/stages/ralplan.js +14 -5
- package/dist/pipeline/stages/ralplan.js.map +1 -1
- package/dist/question/__tests__/deep-interview.test.js +160 -2
- package/dist/question/__tests__/deep-interview.test.js.map +1 -1
- package/dist/question/__tests__/policy.test.js +63 -3
- package/dist/question/__tests__/policy.test.js.map +1 -1
- package/dist/question/__tests__/renderer.test.js +191 -2
- package/dist/question/__tests__/renderer.test.js.map +1 -1
- package/dist/question/__tests__/state.test.js +94 -3
- package/dist/question/__tests__/state.test.js.map +1 -1
- package/dist/question/__tests__/ui.test.js +4 -0
- package/dist/question/__tests__/ui.test.js.map +1 -1
- package/dist/question/autopilot-wait.d.ts +12 -2
- package/dist/question/autopilot-wait.d.ts.map +1 -1
- package/dist/question/autopilot-wait.js +158 -47
- package/dist/question/autopilot-wait.js.map +1 -1
- package/dist/question/deep-interview.d.ts.map +1 -1
- package/dist/question/deep-interview.js +22 -6
- package/dist/question/deep-interview.js.map +1 -1
- package/dist/question/policy.d.ts.map +1 -1
- package/dist/question/policy.js +2 -5
- package/dist/question/policy.js.map +1 -1
- package/dist/question/renderer.d.ts +12 -0
- package/dist/question/renderer.d.ts.map +1 -1
- package/dist/question/renderer.js +87 -3
- package/dist/question/renderer.js.map +1 -1
- package/dist/question/state.d.ts +8 -1
- package/dist/question/state.d.ts.map +1 -1
- package/dist/question/state.js +54 -14
- package/dist/question/state.js.map +1 -1
- package/dist/question/types.d.ts +1 -1
- package/dist/question/types.d.ts.map +1 -1
- package/dist/question/ui.d.ts +1 -0
- package/dist/question/ui.d.ts.map +1 -1
- package/dist/question/ui.js +1 -0
- package/dist/question/ui.js.map +1 -1
- package/dist/ralplan/__tests__/runtime.test.js +191 -0
- package/dist/ralplan/__tests__/runtime.test.js.map +1 -1
- package/dist/ralplan/consensus-gate.d.ts +9 -1
- package/dist/ralplan/consensus-gate.d.ts.map +1 -1
- package/dist/ralplan/consensus-gate.js +84 -2
- package/dist/ralplan/consensus-gate.js.map +1 -1
- package/dist/ralplan/runtime.d.ts +9 -0
- package/dist/ralplan/runtime.d.ts.map +1 -1
- package/dist/ralplan/runtime.js +32 -11
- package/dist/ralplan/runtime.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +2315 -280
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/notify-state-io.test.js +72 -1
- package/dist/scripts/__tests__/notify-state-io.test.js.map +1 -1
- package/dist/scripts/__tests__/notify-tmux-injection.test.d.ts +2 -0
- package/dist/scripts/__tests__/notify-tmux-injection.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/notify-tmux-injection.test.js +57 -0
- package/dist/scripts/__tests__/notify-tmux-injection.test.js.map +1 -0
- package/dist/scripts/__tests__/run-test-files.test.js +74 -0
- package/dist/scripts/__tests__/run-test-files.test.js.map +1 -1
- package/dist/scripts/__tests__/verify-native-agents.test.js +65 -0
- package/dist/scripts/__tests__/verify-native-agents.test.js.map +1 -1
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +431 -56
- 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 +79 -1
- package/dist/scripts/codex-native-pre-post.js.map +1 -1
- package/dist/scripts/eval/eval-parity-smoke.js +1 -1
- package/dist/scripts/eval/eval-parity-smoke.js.map +1 -1
- package/dist/scripts/hook-payload-guard.d.ts +9 -0
- package/dist/scripts/hook-payload-guard.d.ts.map +1 -0
- package/dist/scripts/hook-payload-guard.js +111 -0
- package/dist/scripts/hook-payload-guard.js.map +1 -0
- package/dist/scripts/notify-fallback-watcher.js +8 -1
- package/dist/scripts/notify-fallback-watcher.js.map +1 -1
- package/dist/scripts/notify-hook/__tests__/payload-guard.test.d.ts +2 -0
- package/dist/scripts/notify-hook/__tests__/payload-guard.test.d.ts.map +1 -0
- package/dist/scripts/notify-hook/__tests__/payload-guard.test.js +39 -0
- package/dist/scripts/notify-hook/__tests__/payload-guard.test.js.map +1 -0
- package/dist/scripts/notify-hook/auto-nudge.d.ts.map +1 -1
- package/dist/scripts/notify-hook/auto-nudge.js +3 -1
- package/dist/scripts/notify-hook/auto-nudge.js.map +1 -1
- package/dist/scripts/notify-hook/ralph-session-resume.d.ts.map +1 -1
- package/dist/scripts/notify-hook/ralph-session-resume.js +3 -10
- package/dist/scripts/notify-hook/ralph-session-resume.js.map +1 -1
- package/dist/scripts/notify-hook/state-io.d.ts.map +1 -1
- package/dist/scripts/notify-hook/state-io.js +62 -38
- package/dist/scripts/notify-hook/state-io.js.map +1 -1
- package/dist/scripts/notify-hook/team-leader-nudge.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-leader-nudge.js +7 -0
- package/dist/scripts/notify-hook/team-leader-nudge.js.map +1 -1
- package/dist/scripts/notify-hook/team-worker-stop.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-worker-stop.js +234 -86
- package/dist/scripts/notify-hook/team-worker-stop.js.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.d.ts +7 -0
- package/dist/scripts/notify-hook/tmux-injection.d.ts.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.js +24 -18
- package/dist/scripts/notify-hook/tmux-injection.js.map +1 -1
- package/dist/scripts/notify-hook.js +86 -13
- package/dist/scripts/notify-hook.js.map +1 -1
- package/dist/scripts/run-test-files.js +193 -22
- package/dist/scripts/run-test-files.js.map +1 -1
- package/dist/scripts/sync-plugin-mirror.d.ts.map +1 -1
- package/dist/scripts/sync-plugin-mirror.js +61 -3
- package/dist/scripts/sync-plugin-mirror.js.map +1 -1
- package/dist/scripts/verify-native-agents.d.ts.map +1 -1
- package/dist/scripts/verify-native-agents.js +58 -1
- package/dist/scripts/verify-native-agents.js.map +1 -1
- package/dist/state/__tests__/operations.test.js +1125 -1
- package/dist/state/__tests__/operations.test.js.map +1 -1
- package/dist/state/__tests__/skill-active.test.js +46 -1
- package/dist/state/__tests__/skill-active.test.js.map +1 -1
- package/dist/state/__tests__/workflow-transition.test.js +98 -7
- 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 +159 -2
- package/dist/state/operations.js.map +1 -1
- package/dist/state/skill-active.js +6 -8
- package/dist/state/skill-active.js.map +1 -1
- package/dist/state/workflow-transition-reconcile.d.ts +6 -0
- package/dist/state/workflow-transition-reconcile.d.ts.map +1 -1
- package/dist/state/workflow-transition-reconcile.js +38 -15
- package/dist/state/workflow-transition-reconcile.js.map +1 -1
- package/dist/state/workflow-transition.d.ts.map +1 -1
- package/dist/state/workflow-transition.js +10 -3
- package/dist/state/workflow-transition.js.map +1 -1
- package/dist/subagents/__tests__/tracker.test.js +139 -0
- package/dist/subagents/__tests__/tracker.test.js.map +1 -1
- package/dist/subagents/tracker.d.ts +3 -0
- package/dist/subagents/tracker.d.ts.map +1 -1
- package/dist/subagents/tracker.js +41 -4
- package/dist/subagents/tracker.js.map +1 -1
- package/dist/team/__tests__/coordination-protocol.test.d.ts +2 -0
- package/dist/team/__tests__/coordination-protocol.test.d.ts.map +1 -0
- package/dist/team/__tests__/coordination-protocol.test.js +173 -0
- package/dist/team/__tests__/coordination-protocol.test.js.map +1 -0
- package/dist/team/__tests__/runtime.test.js +52 -3
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/scaling.test.js +9 -4
- package/dist/team/__tests__/scaling.test.js.map +1 -1
- package/dist/team/__tests__/state.test.js +83 -0
- package/dist/team/__tests__/state.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +240 -2
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.js +84 -0
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/__tests__/worker-runtime-identity.test.js +4 -2
- package/dist/team/__tests__/worker-runtime-identity.test.js.map +1 -1
- package/dist/team/coordination-protocol.d.ts +14 -0
- package/dist/team/coordination-protocol.d.ts.map +1 -0
- package/dist/team/coordination-protocol.js +244 -0
- package/dist/team/coordination-protocol.js.map +1 -0
- package/dist/team/runtime.d.ts +1 -0
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +19 -3
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/scaling.d.ts.map +1 -1
- package/dist/team/scaling.js +3 -2
- package/dist/team/scaling.js.map +1 -1
- package/dist/team/state/tasks.d.ts.map +1 -1
- package/dist/team/state/tasks.js +24 -0
- package/dist/team/state/tasks.js.map +1 -1
- package/dist/team/state/types.d.ts +21 -1
- package/dist/team/state/types.d.ts.map +1 -1
- package/dist/team/state/types.js.map +1 -1
- package/dist/team/state.d.ts +17 -1
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +12 -5
- package/dist/team/state.js.map +1 -1
- package/dist/team/team-ops.d.ts +1 -1
- package/dist/team/team-ops.d.ts.map +1 -1
- package/dist/team/team-ops.js.map +1 -1
- package/dist/team/tmux-session.d.ts +2 -0
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +161 -13
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts.map +1 -1
- package/dist/team/worker-bootstrap.js +63 -0
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/dist/utils/__tests__/agents-model-table.test.js +4 -2
- package/dist/utils/__tests__/agents-model-table.test.js.map +1 -1
- package/dist/utils/agents-model-table.d.ts.map +1 -1
- package/dist/utils/agents-model-table.js +3 -0
- package/dist/utils/agents-model-table.js.map +1 -1
- package/dist/verification/__tests__/ci-rust-gates.test.js +81 -1
- package/dist/verification/__tests__/ci-rust-gates.test.js.map +1 -1
- package/package.json +8 -8
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/oh-my-codex/hooks/codex-native-hook.mjs +334 -21
- package/plugins/oh-my-codex/hooks/hooks.json +1 -2
- package/plugins/oh-my-codex/skills/autopilot/SKILL.md +13 -6
- package/plugins/oh-my-codex/skills/code-review/SKILL.md +7 -7
- package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +9 -4
- package/plugins/oh-my-codex/skills/ralph/SKILL.md +22 -22
- package/plugins/oh-my-codex/skills/ralplan/SKILL.md +12 -0
- package/plugins/oh-my-codex/skills/team/SKILL.md +16 -0
- package/plugins/oh-my-codex/skills/ultraqa/SKILL.md +9 -0
- package/plugins/oh-my-codex/skills/worker/SKILL.md +14 -0
- package/skills/autopilot/SKILL.md +13 -6
- package/skills/code-review/SKILL.md +7 -7
- package/skills/deep-interview/SKILL.md +9 -4
- package/skills/ralph/SKILL.md +22 -22
- package/skills/ralplan/SKILL.md +12 -0
- package/skills/team/SKILL.md +16 -0
- package/skills/ultraqa/SKILL.md +9 -0
- package/skills/worker/SKILL.md +14 -0
- package/src/scripts/__tests__/codex-native-hook.test.ts +4435 -2083
- package/src/scripts/__tests__/notify-state-io.test.ts +95 -0
- package/src/scripts/__tests__/notify-tmux-injection.test.ts +82 -0
- package/src/scripts/__tests__/run-test-files.test.ts +102 -0
- package/src/scripts/__tests__/verify-native-agents.test.ts +75 -0
- package/src/scripts/codex-native-hook.ts +536 -51
- package/src/scripts/codex-native-pre-post.ts +80 -0
- package/src/scripts/demo-team-e2e.sh +10 -7
- package/src/scripts/eval/eval-parity-smoke.ts +1 -1
- package/src/scripts/hook-payload-guard.ts +113 -0
- package/src/scripts/notify-fallback-watcher.ts +8 -1
- package/src/scripts/notify-hook/__tests__/payload-guard.test.ts +41 -0
- package/src/scripts/notify-hook/auto-nudge.ts +3 -1
- package/src/scripts/notify-hook/ralph-session-resume.ts +2 -8
- package/src/scripts/notify-hook/state-io.ts +75 -37
- package/src/scripts/notify-hook/team-leader-nudge.ts +7 -0
- package/src/scripts/notify-hook/team-worker-stop.ts +193 -52
- package/src/scripts/notify-hook/tmux-injection.ts +35 -19
- package/src/scripts/notify-hook.ts +105 -6
- package/src/scripts/run-test-files.ts +192 -22
- package/src/scripts/sync-plugin-mirror.ts +98 -9
- package/src/scripts/verify-native-agents.ts +65 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { spawnSync, execFile } from 'child_process';
|
|
2
2
|
import { promisify } from 'util';
|
|
3
|
-
import { existsSync, readFileSync } from 'fs';
|
|
3
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
4
4
|
import { homedir } from 'os';
|
|
5
|
-
import { isAbsolute, join, resolve } from 'path';
|
|
5
|
+
import { dirname, isAbsolute, join, resolve } from 'path';
|
|
6
6
|
import { CODEX_BYPASS_FLAG, CLAUDE_SKIP_PERMISSIONS_FLAG, MADMAX_FLAG, CONFIG_FLAG, LONG_CONFIG_FLAG, MODEL_FLAG, } from '../cli/constants.js';
|
|
7
7
|
import { getAgent } from '../agents/definitions.js';
|
|
8
8
|
import { buildCapturePaneArgv as sharedBuildCapturePaneArgv, buildVisibleCapturePaneArgv as sharedBuildVisibleCapturePaneArgv, normalizeTmuxCapture as sharedNormalizeTmuxCapture, paneHasActiveTask as sharedPaneHasActiveTask, paneIsBootstrapping as sharedPaneIsBootstrapping, paneShowsCodexViewport as sharedPaneShowsCodexViewport, paneLooksReady as sharedPaneLooksReady, } from '../scripts/tmux-hook-engine.js';
|
|
@@ -14,7 +14,7 @@ import { resolveOmxCliEntryPath } from '../utils/paths.js';
|
|
|
14
14
|
const execFileAsync = promisify(execFile);
|
|
15
15
|
import { HUD_RESIZE_RECONCILE_DELAY_SECONDS, HUD_TMUX_TEAM_HEIGHT_LINES } from '../hud/constants.js';
|
|
16
16
|
import { OMX_TMUX_HUD_OWNER_ENV } from '../hud/reconcile.js';
|
|
17
|
-
import { OMX_TMUX_HUD_LEADER_PANE_ENV } from '../hud/tmux.js';
|
|
17
|
+
import { findHudWatchPaneIds, OMX_TMUX_HUD_LEADER_PANE_ENV } from '../hud/tmux.js';
|
|
18
18
|
const OMX_INSTANCE_OPTION = '@omx_instance_id';
|
|
19
19
|
const OMX_PANE_INSTANCE_OPTION = '@omx_pane_instance_id';
|
|
20
20
|
const INJECTION_MARKER = '[OMX_TMUX_INJECT]';
|
|
@@ -62,6 +62,7 @@ const TMUX_COPY_MODE_STYLE_OPTIONS = [
|
|
|
62
62
|
const TMUX_PANE_STABILITY_POLL_MS = 60;
|
|
63
63
|
const TMUX_PANE_STABILITY_POLLS_REQUIRED = 2;
|
|
64
64
|
const TMUX_PANE_STABILITY_TIMEOUT_MS = 750;
|
|
65
|
+
const OMX_TEAM_STATE_ROOT_ENV = 'OMX_TEAM_STATE_ROOT';
|
|
65
66
|
function runTmux(args) {
|
|
66
67
|
const { result } = spawnPlatformCommandSync('tmux', args, { encoding: 'utf-8' });
|
|
67
68
|
if (result.error) {
|
|
@@ -122,8 +123,8 @@ export function mitigateCopyModeUnderlineArtifacts(sessionTarget) {
|
|
|
122
123
|
export function hasCurrentTmuxClientContext() {
|
|
123
124
|
const tmuxPaneTarget = process.env.TMUX_PANE?.trim();
|
|
124
125
|
const displayArgs = tmuxPaneTarget
|
|
125
|
-
? ['display-message', '-p', '-t', tmuxPaneTarget, '#
|
|
126
|
-
: ['display-message', '-p', '#
|
|
126
|
+
? ['display-message', '-p', '-t', tmuxPaneTarget, '#{session_name}:#{window_index} #{pane_id}']
|
|
127
|
+
: ['display-message', '-p', '#{session_name}:#{window_index} #{pane_id}'];
|
|
127
128
|
const context = runTmux(displayArgs);
|
|
128
129
|
if (!context.ok)
|
|
129
130
|
return false;
|
|
@@ -232,6 +233,9 @@ function findHudPaneIds(target, leaderPaneId) {
|
|
|
232
233
|
.filter((pane) => isHudWatchPane(pane))
|
|
233
234
|
.map((pane) => pane.paneId);
|
|
234
235
|
}
|
|
236
|
+
function findOwnedHudPaneIds(target, leaderPaneId) {
|
|
237
|
+
return findHudWatchPaneIds(listPanes(target), leaderPaneId, { leaderPaneId });
|
|
238
|
+
}
|
|
235
239
|
const MAX_FRACTIONAL_SLEEP_MS = 60_000;
|
|
236
240
|
function toFractionalSleepMs(seconds) {
|
|
237
241
|
if (!Number.isFinite(seconds) || seconds <= 0)
|
|
@@ -280,6 +284,11 @@ async function captureVisiblePaneAsync(target) {
|
|
|
280
284
|
return result.stdout;
|
|
281
285
|
}
|
|
282
286
|
async function isWorkerAliveAsync(sessionName, workerIndex, workerPaneId) {
|
|
287
|
+
if (workerPaneId?.startsWith('%')) {
|
|
288
|
+
const paneStatus = await readPaneLivenessByIdAsync(workerPaneId);
|
|
289
|
+
if (paneStatus !== null)
|
|
290
|
+
return paneStatus;
|
|
291
|
+
}
|
|
283
292
|
const result = await runTmuxAsync([
|
|
284
293
|
'list-panes',
|
|
285
294
|
'-t', paneTarget(sessionName, workerIndex, workerPaneId),
|
|
@@ -308,6 +317,54 @@ async function isWorkerAliveAsync(sessionName, workerIndex, workerPaneId) {
|
|
|
308
317
|
return false;
|
|
309
318
|
}
|
|
310
319
|
}
|
|
320
|
+
function parsePaneLivenessLine(line, allowMissingPid) {
|
|
321
|
+
const parts = line.trim().split(/\s+/);
|
|
322
|
+
if (parts.length < 1 || parts[0] === '')
|
|
323
|
+
return null;
|
|
324
|
+
const paneDead = parts[0];
|
|
325
|
+
const pid = Number.parseInt(parts[1] ?? '', 10);
|
|
326
|
+
if (paneDead === '1')
|
|
327
|
+
return false;
|
|
328
|
+
if (!Number.isFinite(pid))
|
|
329
|
+
return allowMissingPid ? true : false;
|
|
330
|
+
try {
|
|
331
|
+
process.kill(pid, 0);
|
|
332
|
+
return true;
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
return allowMissingPid;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
function readPaneLivenessById(paneId) {
|
|
339
|
+
const result = runTmux(['list-panes', '-a', '-F', '#{pane_id} #{pane_dead} #{pane_pid}']);
|
|
340
|
+
if (!result.ok)
|
|
341
|
+
return null;
|
|
342
|
+
for (const line of result.stdout.split('\n')) {
|
|
343
|
+
const trimmed = line.trim();
|
|
344
|
+
if (!trimmed)
|
|
345
|
+
continue;
|
|
346
|
+
const [id = '', ...rest] = trimmed.split(/\s+/);
|
|
347
|
+
if (id !== paneId)
|
|
348
|
+
continue;
|
|
349
|
+
return parsePaneLivenessLine(rest.join(' '), true);
|
|
350
|
+
}
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
async function readPaneLivenessByIdAsync(paneId) {
|
|
354
|
+
const result = await runTmuxAsync(['list-panes', '-a', '-F', '#{pane_id} #{pane_dead} #{pane_pid}']);
|
|
355
|
+
if (!result.ok)
|
|
356
|
+
return null;
|
|
357
|
+
for (const line of result.stdout.split('\n')) {
|
|
358
|
+
const trimmed = line.trim();
|
|
359
|
+
if (!trimmed)
|
|
360
|
+
continue;
|
|
361
|
+
const [id = '', ...rest] = trimmed.split(/\s+/);
|
|
362
|
+
if (id !== paneId)
|
|
363
|
+
continue;
|
|
364
|
+
return parsePaneLivenessLine(rest.join(' '), true);
|
|
365
|
+
}
|
|
366
|
+
return null;
|
|
367
|
+
}
|
|
311
368
|
function shellQuoteSingle(value) {
|
|
312
369
|
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
313
370
|
}
|
|
@@ -640,6 +697,20 @@ function commandExists(binary) {
|
|
|
640
697
|
}
|
|
641
698
|
return true;
|
|
642
699
|
}
|
|
700
|
+
export function trustWorkerMiseConfigIfAvailable(workerCwd) {
|
|
701
|
+
const miseConfigPath = join(workerCwd, '.mise.toml');
|
|
702
|
+
if (!existsSync(miseConfigPath))
|
|
703
|
+
return false;
|
|
704
|
+
if (!commandExists('mise'))
|
|
705
|
+
return false;
|
|
706
|
+
const { result } = spawnPlatformCommandSync('mise', ['trust', '--yes', miseConfigPath], { encoding: 'utf-8' });
|
|
707
|
+
if (result.error || result.status !== 0) {
|
|
708
|
+
const reason = result.error?.message || String(result.stderr || '').trim() || `mise exited ${result.status}`;
|
|
709
|
+
console.warn(`[omx] mise trust failed for team worker config ${miseConfigPath}: ${reason}; continuing.`);
|
|
710
|
+
return false;
|
|
711
|
+
}
|
|
712
|
+
return true;
|
|
713
|
+
}
|
|
643
714
|
/**
|
|
644
715
|
* Resolve the absolute path of a binary from the leader's current environment.
|
|
645
716
|
* Returns the absolute path or the bare command name as fallback.
|
|
@@ -798,6 +869,60 @@ export function buildWorkerStartupCommand(teamName, workerIndex, launchArgs = []
|
|
|
798
869
|
const envParts = Object.entries(startupEnv).map(([key, value]) => `${key}=${value}`);
|
|
799
870
|
return `env ${envParts.map(shellQuoteSingle).join(' ')} ${shellQuoteSingle(launchSpec.shell)} -c ${shellQuoteSingle(inner)}`;
|
|
800
871
|
}
|
|
872
|
+
function assertShellEnvKey(key) {
|
|
873
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {
|
|
874
|
+
throw new Error(`invalid worker startup env key: ${key}`);
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
function buildWorkerStartupScriptContent(processSpec, startupEnv, startupArgs, cwd, extraEnv) {
|
|
878
|
+
const resolvedLeaderNodePath = processSpec.env[OMX_LEADER_NODE_PATH_ENV]?.trim() || resolveLeaderNodePath();
|
|
879
|
+
const leaderNodeDir = /[\\/]/.test(resolvedLeaderNodePath)
|
|
880
|
+
? resolvedLeaderNodePath.replace(/[\\/][^\\/]+$/, '')
|
|
881
|
+
: '';
|
|
882
|
+
const launchSpec = buildWorkerLaunchSpec(process.env.SHELL);
|
|
883
|
+
const pathPrefix = leaderNodeDir ? `export PATH=${shellQuoteSingle(leaderNodeDir)}:$PATH\n` : '';
|
|
884
|
+
const quotedArgs = startupArgs.map(shellQuoteSingle).join(' ');
|
|
885
|
+
const quotedCommand = shellQuoteSingle(processSpec.command);
|
|
886
|
+
const cliInvocation = quotedArgs.length > 0 ? `exec ${quotedCommand} ${quotedArgs}` : `exec ${quotedCommand}`;
|
|
887
|
+
const rcPrefix = shouldSourceTeamWorkerShellRc({ ...process.env, ...extraEnv }) && launchSpec.rcFile
|
|
888
|
+
? `if [ -f ${launchSpec.rcFile} ]; then . ${launchSpec.rcFile}; fi\n`
|
|
889
|
+
: '';
|
|
890
|
+
const envExports = Object.entries(startupEnv)
|
|
891
|
+
.map(([key, value]) => {
|
|
892
|
+
assertShellEnvKey(key);
|
|
893
|
+
return `export ${key}=${shellQuoteSingle(value)}`;
|
|
894
|
+
})
|
|
895
|
+
.join('\n');
|
|
896
|
+
return [
|
|
897
|
+
'#!/bin/sh',
|
|
898
|
+
'set -eu',
|
|
899
|
+
`cd ${shellQuoteSingle(cwd)}`,
|
|
900
|
+
envExports,
|
|
901
|
+
`exec ${shellQuoteSingle(launchSpec.shell)} -c ${shellQuoteSingle(`${rcPrefix}${pathPrefix}${cliInvocation}`)}`,
|
|
902
|
+
'',
|
|
903
|
+
].filter((line) => line !== '').join('\n');
|
|
904
|
+
}
|
|
905
|
+
export function writeWorkerStartupScriptCommand(teamName, workerIndex, launchArgs = [], cwd = process.cwd(), extraEnv = {}, workerCliOverride, initialPrompt, workerRole) {
|
|
906
|
+
if (process.platform === 'win32')
|
|
907
|
+
return null;
|
|
908
|
+
const stateRoot = extraEnv[OMX_TEAM_STATE_ROOT_ENV]?.trim();
|
|
909
|
+
if (!stateRoot)
|
|
910
|
+
return null;
|
|
911
|
+
const processSpec = buildWorkerProcessLaunchSpec(teamName, workerIndex, launchArgs, cwd, extraEnv, workerCliOverride, initialPrompt, workerRole);
|
|
912
|
+
const startupEnv = {
|
|
913
|
+
...readTmuxWorkerAmbientEnv(process.env),
|
|
914
|
+
...processSpec.env,
|
|
915
|
+
};
|
|
916
|
+
const startupArgs = [...processSpec.args];
|
|
917
|
+
if (processSpec.workerCli === 'codex') {
|
|
918
|
+
appendTeamWorkerMcpDisableOverrides(startupArgs, { ...process.env, ...extraEnv });
|
|
919
|
+
}
|
|
920
|
+
const scriptPath = join(stateRoot, 'team', teamName, 'runtime', `worker-${workerIndex}-startup.sh`);
|
|
921
|
+
mkdirSync(dirname(scriptPath), { recursive: true });
|
|
922
|
+
writeFileSync(scriptPath, buildWorkerStartupScriptContent(processSpec, startupEnv, startupArgs, cwd, extraEnv), 'utf-8');
|
|
923
|
+
chmodSync(scriptPath, 0o700);
|
|
924
|
+
return `exec /bin/sh ${shellQuoteSingle(scriptPath)}`;
|
|
925
|
+
}
|
|
801
926
|
export function buildWorkerProcessLaunchSpec(teamName, workerIndex, launchArgs = [], cwd = process.cwd(), extraEnv = {}, workerCliOverride, initialPrompt, workerRole) {
|
|
802
927
|
const effectiveEnv = { ...process.env, ...extraEnv };
|
|
803
928
|
const fullLaunchArgs = resolveWorkerLaunchArgs(launchArgs, cwd, effectiveEnv);
|
|
@@ -934,8 +1059,8 @@ export function createTeamSession(teamName, workerCount, cwd, workerLaunchArgs =
|
|
|
934
1059
|
try {
|
|
935
1060
|
const tmuxPaneTarget = process.env.TMUX_PANE;
|
|
936
1061
|
const displayArgs = tmuxPaneTarget
|
|
937
|
-
? ['display-message', '-p', '-t', tmuxPaneTarget, '#
|
|
938
|
-
: ['display-message', '-p', '#
|
|
1062
|
+
? ['display-message', '-p', '-t', tmuxPaneTarget, '#{session_name}:#{window_index} #{pane_id}']
|
|
1063
|
+
: ['display-message', '-p', '#{session_name}:#{window_index} #{pane_id}'];
|
|
939
1064
|
const context = runTmux(displayArgs);
|
|
940
1065
|
if (!context.ok) {
|
|
941
1066
|
const paneHint = tmuxPaneTarget ? ` (TMUX_PANE=${tmuxPaneTarget})` : '';
|
|
@@ -976,7 +1101,8 @@ export function createTeamSession(teamName, workerCount, cwd, workerLaunchArgs =
|
|
|
976
1101
|
const tmuxWorkerCwd = translatePathForMsys(workerCwd);
|
|
977
1102
|
const workerEnv = startup.env || {};
|
|
978
1103
|
const launchArgsForWorker = startup.launchArgs || workerLaunchArgs;
|
|
979
|
-
|
|
1104
|
+
trustWorkerMiseConfigIfAvailable(workerCwd);
|
|
1105
|
+
const cmd = writeWorkerStartupScriptCommand(safeTeamName, i, launchArgsForWorker, workerCwd, workerEnv, workerCliPlan[i - 1], startup.initialPrompt, startup.workerRole) ?? buildWorkerStartupCommand(safeTeamName, i, launchArgsForWorker, workerCwd, workerEnv, workerCliPlan[i - 1], startup.initialPrompt, startup.workerRole);
|
|
980
1106
|
// First split creates the right side from leader. Remaining splits stack on the right.
|
|
981
1107
|
const splitDirection = i === 1 ? '-h' : '-v';
|
|
982
1108
|
const splitTarget = i === 1 ? leaderPaneId : (rightStackRootPaneId ?? leaderPaneId);
|
|
@@ -1075,20 +1201,17 @@ export function createTeamSession(teamName, workerCount, cwd, workerLaunchArgs =
|
|
|
1075
1201
|
if (registerClientAttachedHook.ok) {
|
|
1076
1202
|
registeredClientAttachedHook = { name: clientAttachedHookName, target: hookTarget };
|
|
1077
1203
|
}
|
|
1078
|
-
else if (registerHook.ok) {
|
|
1079
|
-
throw new Error(`failed to register client-attached reconcile hook ${clientAttachedHookName}: ${registerClientAttachedHook.stderr}`);
|
|
1080
|
-
}
|
|
1081
1204
|
else {
|
|
1082
1205
|
console.warn(`[omx] tmux client-attached resize fallback unavailable for ${hookTarget} `
|
|
1083
1206
|
+ `(${clientAttachedHookName}): ${registerClientAttachedHook.stderr}; continuing with delayed HUD resize fallback.`);
|
|
1084
1207
|
}
|
|
1085
1208
|
const delayed = runTmux(buildScheduleDelayedHudResizeArgs(hudPaneId));
|
|
1086
1209
|
if (!delayed.ok) {
|
|
1087
|
-
|
|
1210
|
+
console.warn(`[omx] tmux delayed HUD resize unavailable for ${hudPaneId}: ${delayed.stderr}; continuing.`);
|
|
1088
1211
|
}
|
|
1089
1212
|
const reconcile = runTmux(buildReconcileHudResizeArgs(hudPaneId));
|
|
1090
1213
|
if (!reconcile.ok) {
|
|
1091
|
-
|
|
1214
|
+
console.warn(`[omx] tmux HUD resize reconcile unavailable for ${hudPaneId}: ${reconcile.stderr}; continuing.`);
|
|
1092
1215
|
}
|
|
1093
1216
|
}
|
|
1094
1217
|
}
|
|
@@ -1135,6 +1258,21 @@ export function restoreStandaloneHudPane(leaderPaneId, cwd) {
|
|
|
1135
1258
|
const omxEntry = resolveOmxCliEntryPath();
|
|
1136
1259
|
if (!omxEntry || omxEntry.trim() === '')
|
|
1137
1260
|
return null;
|
|
1261
|
+
const [existingHudPaneId, ...duplicateHudPaneIds] = findOwnedHudPaneIds(normalizedLeaderPaneId, normalizedLeaderPaneId);
|
|
1262
|
+
for (const paneId of duplicateHudPaneIds) {
|
|
1263
|
+
runTmux(['kill-pane', '-t', paneId]);
|
|
1264
|
+
}
|
|
1265
|
+
if (existingHudPaneId) {
|
|
1266
|
+
if (isNativeWindows()) {
|
|
1267
|
+
runTmux(buildHudResizeArgs(existingHudPaneId));
|
|
1268
|
+
}
|
|
1269
|
+
else {
|
|
1270
|
+
runTmux(buildScheduleDelayedHudResizeArgs(existingHudPaneId));
|
|
1271
|
+
runTmux(buildReconcileHudResizeArgs(existingHudPaneId));
|
|
1272
|
+
}
|
|
1273
|
+
runTmux(['select-pane', '-t', normalizedLeaderPaneId]);
|
|
1274
|
+
return existingHudPaneId;
|
|
1275
|
+
}
|
|
1138
1276
|
const hudCmd = `exec env ${formatHudEnvAssignments(process.env, { leaderPaneId: normalizedLeaderPaneId })} ${shellQuoteSingle(translatePathForMsys(resolveLeaderNodePath()))} ${shellQuoteSingle(translatePathForMsys(omxEntry))} hud --watch`;
|
|
1139
1277
|
const hudCwd = translatePathForMsys(cwd);
|
|
1140
1278
|
const hudResult = runTmux([
|
|
@@ -1703,6 +1841,11 @@ export function getWorkerPanePid(sessionName, workerIndex, workerPaneId) {
|
|
|
1703
1841
|
}
|
|
1704
1842
|
// Check if worker's tmux pane has a running process
|
|
1705
1843
|
export function isWorkerAlive(sessionName, workerIndex, workerPaneId) {
|
|
1844
|
+
if (workerPaneId?.startsWith('%')) {
|
|
1845
|
+
const paneStatus = readPaneLivenessById(workerPaneId);
|
|
1846
|
+
if (paneStatus !== null)
|
|
1847
|
+
return paneStatus;
|
|
1848
|
+
}
|
|
1706
1849
|
const result = runTmux([
|
|
1707
1850
|
'list-panes',
|
|
1708
1851
|
'-t', paneTarget(sessionName, workerIndex, workerPaneId),
|
|
@@ -1732,6 +1875,11 @@ export function isWorkerAlive(sessionName, workerIndex, workerPaneId) {
|
|
|
1732
1875
|
}
|
|
1733
1876
|
}
|
|
1734
1877
|
export function isWorkerPaneOpen(sessionName, workerIndex, workerPaneId) {
|
|
1878
|
+
if (workerPaneId?.startsWith('%')) {
|
|
1879
|
+
const paneStatus = readPaneLivenessById(workerPaneId);
|
|
1880
|
+
if (paneStatus !== null)
|
|
1881
|
+
return paneStatus;
|
|
1882
|
+
}
|
|
1735
1883
|
const result = runTmux([
|
|
1736
1884
|
'list-panes',
|
|
1737
1885
|
'-t', paneTarget(sessionName, workerIndex, workerPaneId),
|