oh-my-codex 0.16.3 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cargo.lock +5 -5
- package/Cargo.toml +1 -1
- package/README.md +3 -3
- package/dist/catalog/__tests__/generator.test.js +2 -0
- package/dist/catalog/__tests__/generator.test.js.map +1 -1
- package/dist/catalog/__tests__/plugin-bundle-ssot.test.js +9 -0
- package/dist/catalog/__tests__/plugin-bundle-ssot.test.js.map +1 -1
- package/dist/cli/__tests__/cleanup.test.js +27 -0
- package/dist/cli/__tests__/cleanup.test.js.map +1 -1
- package/dist/cli/__tests__/codex-plugin-layout.test.js +7 -5
- package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js +175 -7
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +147 -12
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/mcp-serve.test.js +4 -0
- package/dist/cli/__tests__/mcp-serve.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-goal-mode-contract.test.js +2 -0
- package/dist/cli/__tests__/ralph-goal-mode-contract.test.js.map +1 -1
- package/dist/cli/__tests__/ralph.test.js +47 -0
- package/dist/cli/__tests__/ralph.test.js.map +1 -1
- package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js +10 -5
- package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js.map +1 -1
- package/dist/cli/__tests__/setup-install-mode.test.js +299 -27
- package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
- package/dist/cli/__tests__/setup-refresh.test.js +85 -3
- package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
- package/dist/cli/__tests__/setup-scope.test.js +1 -1
- package/dist/cli/__tests__/setup-scope.test.js.map +1 -1
- package/dist/cli/__tests__/setup-skills-overwrite.test.js +2 -1
- package/dist/cli/__tests__/setup-skills-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.js +108 -0
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/__tests__/ultragoal.test.js +91 -0
- package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
- package/dist/cli/__tests__/uninstall.test.js +54 -8
- package/dist/cli/__tests__/uninstall.test.js.map +1 -1
- package/dist/cli/cleanup.d.ts.map +1 -1
- package/dist/cli/cleanup.js +8 -4
- package/dist/cli/cleanup.js.map +1 -1
- package/dist/cli/codex-feature-probe.d.ts +9 -0
- package/dist/cli/codex-feature-probe.d.ts.map +1 -0
- package/dist/cli/codex-feature-probe.js +28 -0
- package/dist/cli/codex-feature-probe.js.map +1 -0
- package/dist/cli/doctor.d.ts +1 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +214 -23
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +17 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +152 -24
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp-parity.js +8 -8
- package/dist/cli/mcp-parity.js.map +1 -1
- package/dist/cli/mcp-serve.d.ts.map +1 -1
- package/dist/cli/mcp-serve.js +4 -0
- package/dist/cli/mcp-serve.js.map +1 -1
- package/dist/cli/plugin-marketplace.d.ts +23 -0
- package/dist/cli/plugin-marketplace.d.ts.map +1 -1
- package/dist/cli/plugin-marketplace.js +203 -1
- package/dist/cli/plugin-marketplace.js.map +1 -1
- package/dist/cli/ralph.d.ts.map +1 -1
- package/dist/cli/ralph.js +21 -0
- package/dist/cli/ralph.js.map +1 -1
- package/dist/cli/setup-preferences.d.ts +4 -0
- package/dist/cli/setup-preferences.d.ts.map +1 -1
- package/dist/cli/setup-preferences.js +7 -0
- package/dist/cli/setup-preferences.js.map +1 -1
- package/dist/cli/setup.d.ts +5 -3
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +140 -51
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/ultragoal.d.ts +1 -1
- package/dist/cli/ultragoal.d.ts.map +1 -1
- package/dist/cli/ultragoal.js +70 -5
- package/dist/cli/ultragoal.js.map +1 -1
- package/dist/cli/uninstall.d.ts +2 -0
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +12 -3
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/config/__tests__/codex-feature-flags.test.d.ts +2 -0
- package/dist/config/__tests__/codex-feature-flags.test.d.ts.map +1 -0
- package/dist/config/__tests__/codex-feature-flags.test.js +35 -0
- package/dist/config/__tests__/codex-feature-flags.test.js.map +1 -0
- package/dist/config/__tests__/codex-hooks.test.js +143 -9
- package/dist/config/__tests__/codex-hooks.test.js.map +1 -1
- package/dist/config/__tests__/generator-idempotent.test.js +85 -9
- package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
- package/dist/config/__tests__/generator-notify.test.js +116 -11
- package/dist/config/__tests__/generator-notify.test.js.map +1 -1
- package/dist/config/__tests__/wiki-config-contract.test.js +6 -3
- package/dist/config/__tests__/wiki-config-contract.test.js.map +1 -1
- package/dist/config/codex-feature-flags.d.ts +21 -0
- package/dist/config/codex-feature-flags.d.ts.map +1 -0
- package/dist/config/codex-feature-flags.js +56 -0
- package/dist/config/codex-feature-flags.js.map +1 -0
- package/dist/config/codex-hooks.d.ts +14 -13
- package/dist/config/codex-hooks.d.ts.map +1 -1
- package/dist/config/codex-hooks.js +108 -8
- package/dist/config/codex-hooks.js.map +1 -1
- package/dist/config/generator.d.ts +15 -3
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +233 -129
- package/dist/config/generator.js.map +1 -1
- package/dist/config/omx-first-party-mcp.d.ts +3 -1
- package/dist/config/omx-first-party-mcp.d.ts.map +1 -1
- package/dist/config/omx-first-party-mcp.js +9 -2
- package/dist/config/omx-first-party-mcp.js.map +1 -1
- package/dist/hooks/__tests__/design-skill.test.d.ts +2 -0
- package/dist/hooks/__tests__/design-skill.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/design-skill.test.js +55 -0
- package/dist/hooks/__tests__/design-skill.test.js.map +1 -0
- package/dist/hooks/__tests__/keyword-detector.test.js +92 -2
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-non-omx-guard.test.js +125 -1
- package/dist/hooks/__tests__/notify-hook-non-omx-guard.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js +265 -0
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js.map +1 -1
- package/dist/hooks/__tests__/skill-catalog-hygiene.test.d.ts +2 -0
- package/dist/hooks/__tests__/skill-catalog-hygiene.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/skill-catalog-hygiene.test.js +84 -0
- package/dist/hooks/__tests__/skill-catalog-hygiene.test.js.map +1 -0
- package/dist/hooks/__tests__/skill-guidance-contract.test.js +41 -0
- package/dist/hooks/__tests__/skill-guidance-contract.test.js.map +1 -1
- package/dist/hooks/agents-overlay.js +2 -2
- package/dist/hooks/agents-overlay.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 +12 -6
- 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 +2 -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 +47 -2
- package/dist/hooks/prompt-guidance-contract.js.map +1 -1
- package/dist/hud/__tests__/state.test.js +164 -0
- package/dist/hud/__tests__/state.test.js.map +1 -1
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +4 -5
- package/dist/hud/state.js.map +1 -1
- package/dist/mcp/__tests__/bootstrap.test.js +3 -0
- package/dist/mcp/__tests__/bootstrap.test.js.map +1 -1
- package/dist/mcp/__tests__/hermes-bridge.test.d.ts +2 -0
- package/dist/mcp/__tests__/hermes-bridge.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/hermes-bridge.test.js +374 -0
- package/dist/mcp/__tests__/hermes-bridge.test.js.map +1 -0
- package/dist/mcp/__tests__/state-paths.test.js +155 -11
- package/dist/mcp/__tests__/state-paths.test.js.map +1 -1
- package/dist/mcp/__tests__/state-server.test.js +166 -0
- package/dist/mcp/__tests__/state-server.test.js.map +1 -1
- package/dist/mcp/bootstrap.d.ts +1 -1
- package/dist/mcp/bootstrap.d.ts.map +1 -1
- package/dist/mcp/bootstrap.js +2 -0
- package/dist/mcp/bootstrap.js.map +1 -1
- package/dist/mcp/hermes-bridge.d.ts +81 -0
- package/dist/mcp/hermes-bridge.d.ts.map +1 -0
- package/dist/mcp/hermes-bridge.js +400 -0
- package/dist/mcp/hermes-bridge.js.map +1 -0
- package/dist/mcp/hermes-server.d.ts +269 -0
- package/dist/mcp/hermes-server.d.ts.map +1 -0
- package/dist/mcp/hermes-server.js +121 -0
- package/dist/mcp/hermes-server.js.map +1 -0
- package/dist/mcp/state-paths.d.ts.map +1 -1
- package/dist/mcp/state-paths.js +64 -11
- package/dist/mcp/state-paths.js.map +1 -1
- package/dist/modes/__tests__/base-session-scope.test.js +22 -0
- package/dist/modes/__tests__/base-session-scope.test.js.map +1 -1
- package/dist/modes/__tests__/base-tmux-pane.test.js +88 -27
- 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 -0
- package/dist/modes/base.js.map +1 -1
- package/dist/planning/__tests__/approved-execution-lifecycle-matrix.test.d.ts +2 -0
- package/dist/planning/__tests__/approved-execution-lifecycle-matrix.test.d.ts.map +1 -0
- package/dist/planning/__tests__/approved-execution-lifecycle-matrix.test.js +316 -0
- package/dist/planning/__tests__/approved-execution-lifecycle-matrix.test.js.map +1 -0
- package/dist/planning/__tests__/approved-launch-hint-lineage-matrix.test.d.ts +2 -0
- package/dist/planning/__tests__/approved-launch-hint-lineage-matrix.test.d.ts.map +1 -0
- package/dist/planning/__tests__/approved-launch-hint-lineage-matrix.test.js +481 -0
- package/dist/planning/__tests__/approved-launch-hint-lineage-matrix.test.js.map +1 -0
- package/dist/planning/__tests__/artifacts.test.js +533 -4
- package/dist/planning/__tests__/artifacts.test.js.map +1 -1
- package/dist/planning/__tests__/context-pack-status.test.js +524 -0
- package/dist/planning/__tests__/context-pack-status.test.js.map +1 -1
- package/dist/planning/__tests__/markdown-structure.test.d.ts +2 -0
- package/dist/planning/__tests__/markdown-structure.test.d.ts.map +1 -0
- package/dist/planning/__tests__/markdown-structure.test.js +459 -0
- package/dist/planning/__tests__/markdown-structure.test.js.map +1 -0
- package/dist/planning/__tests__/ready-context-pack-role-refs.test.js +523 -1
- package/dist/planning/__tests__/ready-context-pack-role-refs.test.js.map +1 -1
- package/dist/planning/artifacts.d.ts +1 -1
- package/dist/planning/artifacts.d.ts.map +1 -1
- package/dist/planning/artifacts.js +227 -28
- package/dist/planning/artifacts.js.map +1 -1
- package/dist/planning/context-pack-status.d.ts +25 -0
- package/dist/planning/context-pack-status.d.ts.map +1 -1
- package/dist/planning/context-pack-status.js +272 -31
- package/dist/planning/context-pack-status.js.map +1 -1
- package/dist/planning/markdown-structure.d.ts +20 -0
- package/dist/planning/markdown-structure.d.ts.map +1 -0
- package/dist/planning/markdown-structure.js +137 -0
- package/dist/planning/markdown-structure.js.map +1 -0
- package/dist/ralph/__tests__/completion-audit.test.d.ts +2 -0
- package/dist/ralph/__tests__/completion-audit.test.d.ts.map +1 -0
- package/dist/ralph/__tests__/completion-audit.test.js +121 -0
- package/dist/ralph/__tests__/completion-audit.test.js.map +1 -0
- package/dist/ralph/completion-audit.d.ts +8 -0
- package/dist/ralph/completion-audit.d.ts.map +1 -0
- package/dist/ralph/completion-audit.js +99 -0
- package/dist/ralph/completion-audit.js.map +1 -0
- package/dist/scripts/__tests__/codex-native-hook.test.js +407 -15
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/__tests__/notify-dispatcher.test.d.ts +2 -0
- package/dist/scripts/__tests__/notify-dispatcher.test.d.ts.map +1 -0
- package/dist/scripts/__tests__/notify-dispatcher.test.js +126 -0
- package/dist/scripts/__tests__/notify-dispatcher.test.js.map +1 -0
- package/dist/scripts/codex-native-hook.d.ts +1 -0
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +177 -71
- 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 +4 -2
- package/dist/scripts/codex-native-pre-post.js.map +1 -1
- package/dist/scripts/notify-dispatcher.js +30 -1
- package/dist/scripts/notify-dispatcher.js.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.d.ts.map +1 -1
- package/dist/scripts/notify-hook/tmux-injection.js +91 -2
- package/dist/scripts/notify-hook/tmux-injection.js.map +1 -1
- package/dist/scripts/notify-hook.js +3 -1
- package/dist/scripts/notify-hook.js.map +1 -1
- package/dist/state/__tests__/workflow-transition.test.js +102 -27
- package/dist/state/__tests__/workflow-transition.test.js.map +1 -1
- package/dist/state/mode-state-context.d.ts +2 -0
- package/dist/state/mode-state-context.d.ts.map +1 -1
- package/dist/state/mode-state-context.js +21 -0
- package/dist/state/mode-state-context.js.map +1 -1
- package/dist/state/operations.d.ts.map +1 -1
- package/dist/state/operations.js +9 -3
- package/dist/state/operations.js.map +1 -1
- package/dist/state/skill-active.d.ts +7 -0
- package/dist/state/skill-active.d.ts.map +1 -1
- package/dist/state/skill-active.js +25 -8
- package/dist/state/skill-active.js.map +1 -1
- package/dist/state/workflow-transition-reconcile.d.ts +1 -0
- package/dist/state/workflow-transition-reconcile.d.ts.map +1 -1
- package/dist/state/workflow-transition-reconcile.js +22 -15
- package/dist/state/workflow-transition-reconcile.js.map +1 -1
- package/dist/state/workflow-transition.js +3 -3
- package/dist/state/workflow-transition.js.map +1 -1
- package/dist/team/__tests__/approved-execution.test.js +39 -0
- package/dist/team/__tests__/approved-execution.test.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +5 -0
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/scaling.test.js +497 -2
- package/dist/team/__tests__/scaling.test.js.map +1 -1
- package/dist/team/__tests__/state-root.test.js +1 -1
- package/dist/team/__tests__/state-root.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.js +8 -0
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/approved-execution.d.ts.map +1 -1
- package/dist/team/approved-execution.js +3 -0
- package/dist/team/approved-execution.js.map +1 -1
- package/dist/team/scaling.d.ts.map +1 -1
- package/dist/team/scaling.js +43 -0
- package/dist/team/scaling.js.map +1 -1
- package/dist/team/state-root.d.ts.map +1 -1
- package/dist/team/state-root.js +4 -0
- package/dist/team/state-root.js.map +1 -1
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +2 -6
- package/dist/team/state.js.map +1 -1
- package/dist/ultragoal/__tests__/artifacts.test.js +245 -1
- package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
- package/dist/ultragoal/__tests__/docs-contract.test.js +21 -0
- package/dist/ultragoal/__tests__/docs-contract.test.js.map +1 -1
- package/dist/ultragoal/artifacts.d.ts +52 -2
- package/dist/ultragoal/artifacts.d.ts.map +1 -1
- package/dist/ultragoal/artifacts.js +301 -15
- package/dist/ultragoal/artifacts.js.map +1 -1
- package/dist/utils/__tests__/paths.test.js +31 -1
- package/dist/utils/__tests__/paths.test.js.map +1 -1
- package/dist/utils/paths.d.ts +6 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +18 -0
- package/dist/utils/paths.js.map +1 -1
- package/dist/wiki/lifecycle.js +4 -4
- package/dist/wiki/lifecycle.js.map +1 -1
- package/package.json +1 -1
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/oh-my-codex/.mcp.json +13 -5
- package/plugins/oh-my-codex/skills/analyze/SKILL.md +0 -2
- package/plugins/oh-my-codex/skills/autopilot/SKILL.md +2 -2
- package/plugins/oh-my-codex/skills/code-review/SKILL.md +1 -3
- package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +5 -7
- package/plugins/oh-my-codex/skills/design/SKILL.md +180 -0
- package/plugins/oh-my-codex/skills/doctor/SKILL.md +2 -2
- package/plugins/oh-my-codex/skills/omx-setup/SKILL.md +3 -3
- package/plugins/oh-my-codex/skills/pipeline/SKILL.md +3 -3
- package/plugins/oh-my-codex/skills/plan/SKILL.md +3 -6
- package/plugins/oh-my-codex/skills/ralph/SKILL.md +9 -10
- package/plugins/oh-my-codex/skills/skill/SKILL.md +2 -1
- package/plugins/oh-my-codex/skills/ultragoal/SKILL.md +36 -3
- package/plugins/oh-my-codex/skills/ultraqa/SKILL.md +175 -64
- package/plugins/oh-my-codex/skills/ultrawork/SKILL.md +8 -8
- package/plugins/oh-my-codex/skills/visual-ralph/SKILL.md +2 -2
- package/plugins/oh-my-codex/skills/wiki/SKILL.md +13 -13
- package/skills/analyze/SKILL.md +0 -2
- package/skills/ask-claude/SKILL.md +5 -3
- package/skills/ask-gemini/SKILL.md +5 -3
- package/skills/autopilot/SKILL.md +2 -2
- package/skills/code-review/SKILL.md +1 -3
- package/skills/deep-interview/SKILL.md +5 -7
- package/skills/design/SKILL.md +180 -0
- package/skills/doctor/SKILL.md +2 -2
- package/skills/ecomode/SKILL.md +105 -1
- package/skills/frontend-ui-ux/SKILL.md +6 -24
- package/skills/git-master/SKILL.md +2 -4
- package/skills/omx-setup/SKILL.md +3 -3
- package/skills/pipeline/SKILL.md +3 -3
- package/skills/plan/SKILL.md +3 -6
- package/skills/ralph/SKILL.md +9 -10
- package/skills/skill/SKILL.md +2 -1
- package/skills/swarm/SKILL.md +5 -3
- package/skills/tdd/SKILL.md +95 -1
- package/skills/ultragoal/SKILL.md +36 -3
- package/skills/ultraqa/SKILL.md +175 -64
- package/skills/ultrawork/SKILL.md +8 -8
- package/skills/visual-ralph/SKILL.md +2 -2
- package/skills/web-clone/SKILL.md +348 -1
- package/skills/wiki/SKILL.md +13 -13
- package/src/scripts/__tests__/codex-native-hook.test.ts +437 -14
- package/src/scripts/__tests__/notify-dispatcher.test.ts +153 -0
- package/src/scripts/codex-native-hook.ts +205 -61
- package/src/scripts/codex-native-pre-post.ts +4 -1
- package/src/scripts/notify-dispatcher.ts +40 -1
- package/src/scripts/notify-hook/tmux-injection.ts +110 -3
- package/src/scripts/notify-hook.ts +3 -1
- package/templates/catalog-manifest.json +9 -2
package/dist/cli/index.d.ts
CHANGED
|
@@ -2,21 +2,23 @@
|
|
|
2
2
|
* oh-my-codex CLI
|
|
3
3
|
* Multi-agent orchestration for OpenAI Codex CLI
|
|
4
4
|
*/
|
|
5
|
-
import { type SetupInstallMode, type SetupScope } from "./setup.js";
|
|
5
|
+
import { type SetupInstallMode, type SetupMcpMode, type SetupScope } from "./setup.js";
|
|
6
6
|
import { type CleanupDependencies, type CleanupResult } from "./cleanup.js";
|
|
7
7
|
export { readPersistedSetupPreferences, readPersistedSetupScope, resolveCodexConfigPathForLaunch, resolveCodexHomeForLaunch, resolveProjectLocalCodexHomeForLaunch, } from "./codex-home.js";
|
|
8
|
+
import type { UnifiedMcpRegistryServer } from "../config/mcp-registry.js";
|
|
8
9
|
export { parseTmuxPaneSnapshot, isHudWatchPane, findHudWatchPaneIds } from "../hud/tmux.js";
|
|
9
10
|
import { type NotifyTempContract, type ParseNotifyTempContractResult } from "../notifications/temp-contract.js";
|
|
10
11
|
export declare function resolveNotifyFallbackWatcherScript(pkgRoot?: string): string;
|
|
11
12
|
export declare function resolveHookDerivedWatcherScript(pkgRoot?: string): string;
|
|
12
13
|
export declare function resolveNotifyHookScript(pkgRoot?: string): string;
|
|
13
|
-
export declare const HELP = "\noh-my-codex (omx) - Multi-agent orchestration for Codex CLI\n\nUsage:\n omx Launch Codex CLI (detached tmux by default on supported interactive terminals)\n omx exec Run codex exec non-interactively with OMX AGENTS/overlay injection\n omx exec inject <session-id> --prompt <text>\n Queue audited follow-up instructions for a running non-interactive exec job\n omx imagegen continuation <session-id> --artifact <name>\n Queue a Stop-hook continuation for built-in image generation turns\n omx setup Install skills, prompts,
|
|
14
|
+
export declare const HELP = "\noh-my-codex (omx) - Multi-agent orchestration for Codex CLI\n\nUsage:\n omx Launch Codex CLI (detached tmux by default on supported interactive terminals)\n omx exec Run codex exec non-interactively with OMX AGENTS/overlay injection\n omx exec inject <session-id> --prompt <text>\n Queue audited follow-up instructions for a running non-interactive exec job\n omx imagegen continuation <session-id> --artifact <name>\n Queue a Stop-hook continuation for built-in image generation turns\n omx setup Install skills, prompts, CLI-first config, and scope-specific AGENTS.md\n (user scope prompts for legacy vs plugin skill delivery when needed)\n omx update Check npm now, update the global install immediately, then refresh setup\n omx uninstall Remove OMX configuration and clean up installed artifacts\n omx doctor Check installation health\n omx list List packaged OMX skills and native agent prompts (--json)\n omx cleanup Kill orphaned OMX MCP server processes and remove stale OMX /tmp directories\n omx doctor --team Check team/swarm runtime health diagnostics\n omx ask Ask local provider CLI (claude|gemini) and write artifact output\n omx question OMX-owned blocking question UI entrypoint for agent-invoked user questions\n omx adapt Scaffold OMX-owned adapter foundations for persistent external targets\n omx resume Resume a previous interactive Codex session\n omx explore Default read-only exploration entrypoint (may adaptively use sparkshell backend)\n omx session Search prior local session transcripts and history artifacts\n omx agents-init [path]\n Bootstrap lightweight AGENTS.md files for a repo/subtree\n omx agents Manage Codex native agent TOML files\n omx deepinit [path]\n Alias for agents-init (lightweight AGENTS bootstrap only)\n omx team Spawn parallel worker panes in tmux and bootstrap inbox/task state\n omx ralph Launch Codex with ralph persistence mode active\n omx ultragoal Create, resume, and checkpoint durable multi-goal plans over Codex goal mode\n omx performance-goal\n Create, hand off, and gate evaluator-backed performance goals\n omx autoresearch-goal\n Create, hand off, and gate professor-critic research goals\n omx autoresearch [DEPRECATED] Use $autoresearch; direct CLI launch removed\n omx version Show version information\n omx tmux-hook Manage tmux prompt injection workaround (init|status|validate|test)\n omx hooks Manage hook plugins (init|status|validate|test)\n omx hud Show HUD statusline (--watch, --json, --preset=NAME)\n omx sidecar Show read-only team/multi-agent visualization (--watch, --json, --tmux)\n omx state Read/write/list OMX mode state via CLI parity surface\n omx notepad JSON CLI surface for OMX notepad operations\n omx project-memory\n JSON CLI surface for OMX project-memory operations\n omx trace JSON CLI surface for OMX trace operations\n omx code-intel\n JSON CLI surface for OMX code-intel operations\n omx wiki JSON CLI surface for OMX wiki operations\n omx mcp-serve Launch an OMX stdio MCP server target (plugin/runtime use)\n omx sparkshell <command> [args...]\n omx sparkshell --tmux-pane <pane-id> [--tail-lines <100-1000>]\n Run native sparkshell sidecar for direct command execution or explicit tmux-pane summarization\n (also used as an adaptive backend for qualifying read-only explore tasks)\n omx help Show this help message\n omx status Show active modes and state\n omx cancel Cancel active execution modes\n omx reasoning Show or set model reasoning effort (low|medium|high|xhigh)\n\nOptions:\n --yolo Launch Codex in yolo mode (shorthand for: omx launch --yolo)\n --high Launch Codex with high reasoning effort\n (shorthand for: -c model_reasoning_effort=\"high\")\n --xhigh Launch Codex with xhigh reasoning effort\n (shorthand for: -c model_reasoning_effort=\"xhigh\")\n --madmax DANGEROUS: bypass Codex approvals and sandbox\n (alias for --dangerously-bypass-approvals-and-sandbox)\n --spark Use the Codex spark model (~1.3x faster) for team workers only\n Workers get the configured low-complexity team model; leader model unchanged\n --madmax-spark spark model for workers + bypass approvals for leader and workers\n (shorthand for: --spark --madmax)\n --notify-temp Enable temporary notification routing for this run/session only\n --direct Launch the interactive leader directly without OMX tmux/HUD management\n --tmux Launch the interactive leader session in detached tmux\n --discord Select Discord provider for temporary notification mode\n --slack Select Slack provider for temporary notification mode\n --telegram Select Telegram provider for temporary notification mode\n --custom <name>\n Select custom/OpenClaw gateway name for temporary notification mode\n -w, --worktree[=<name>]\n Launch Codex in a git worktree (detached when no name is given)\n --force Force reinstall (overwrite existing files)\n --merge-agents\n Merge OMX-managed AGENTS.md sections into an existing AGENTS.md\n instead of overwriting user-authored content\n --dry-run Show what would be done without doing it\n --plugin Use Codex plugin delivery for omx setup and remove legacy OMX-managed user/project components\n --legacy Use legacy setup delivery for omx setup, overriding persisted plugin mode\n --install-mode <legacy|plugin>\n Explicit setup install mode (canonical form; --legacy/--plugin are aliases)\n --mcp <none|compat>\n Explicit setup MCP mode (default: none; compat enables first-party MCP compatibility and shared registry sync)\n --no-mcp Alias for --mcp=none\n --with-mcp Alias for --mcp=compat\n --keep-config Skip config.toml cleanup during uninstall\n --purge Remove .omx/ cache directory during uninstall\n --verbose Show detailed output\n --scope Setup scope for \"omx setup\" only:\n user | project\n\nLaunch policy:\n OMX_LAUNCH_POLICY=auto\n Use the default policy: detached tmux when supported, direct otherwise\n OMX_LAUNCH_POLICY=direct\n Run without OMX tmux/HUD management\n OMX_LAUNCH_POLICY=tmux\n Force OMX-managed detached tmux launch\n OMX_LAUNCH_POLICY=detached-tmux\n Force OMX-managed detached tmux launch\n CLI policy flags (--direct/--tmux) override OMX_LAUNCH_POLICY; the last flag before -- wins.\n Unset or empty OMX_LAUNCH_POLICY returns to auto/default behavior.\n Config files are intentionally not used for launch policy in this release.\n";
|
|
14
15
|
type CliCommand = "launch" | "exec" | "imagegen" | "setup" | "update" | "list" | "agents" | "agents-init" | "deepinit" | "uninstall" | "doctor" | "cleanup" | "ask" | "question" | "adapt" | "explore" | "sparkshell" | "team" | "session" | "resume" | "version" | "tmux-hook" | "hooks" | "hud" | "sidecar" | "state" | "wiki" | "mcp-serve" | "status" | "cancel" | "help" | "reasoning" | string;
|
|
15
16
|
export interface ResolvedCliInvocation {
|
|
16
17
|
command: CliCommand;
|
|
17
18
|
launchArgs: string[];
|
|
18
19
|
}
|
|
19
20
|
export declare function resolveSetupInstallModeArg(args: string[]): SetupInstallMode | undefined;
|
|
21
|
+
export declare function resolveSetupMcpModeArg(args: string[]): SetupMcpMode | undefined;
|
|
20
22
|
export declare function resolveSetupScopeArg(args: string[]): SetupScope | undefined;
|
|
21
23
|
export declare function resolveCliInvocation(args: string[]): ResolvedCliInvocation;
|
|
22
24
|
export declare function resolveNotifyTempContract(args: string[], env?: NodeJS.ProcessEnv): ParseNotifyTempContractResult;
|
|
@@ -56,6 +58,11 @@ export interface CodexExecFailureClassification {
|
|
|
56
58
|
}
|
|
57
59
|
export declare function resolveSignalExitCode(signal: NodeJS.Signals | null | undefined): number;
|
|
58
60
|
export declare function classifyCodexExecFailure(error: unknown): CodexExecFailureClassification;
|
|
61
|
+
export declare function resolveLaunchConfigRepairOptions(cwd: string, configPath: string): Promise<{
|
|
62
|
+
includeFirstPartyMcp: boolean;
|
|
63
|
+
sharedMcpServers?: UnifiedMcpRegistryServer[];
|
|
64
|
+
sharedMcpRegistrySource?: string;
|
|
65
|
+
}>;
|
|
59
66
|
export interface DetachedSessionTmuxStep {
|
|
60
67
|
name: string;
|
|
61
68
|
args: string[];
|
|
@@ -130,9 +137,15 @@ export declare function buildWindowsPromptCommand(command: string, args: string[
|
|
|
130
137
|
* Wrap a command for tmux pane execution while preserving the tmux pane cwd.
|
|
131
138
|
* tmux already starts the pane at `-c <cwd>`; using a login shell here can
|
|
132
139
|
* reset that cwd back to the shell's startup directory on some setups.
|
|
133
|
-
*
|
|
140
|
+
*
|
|
141
|
+
* Do not source user shell rc files by default. In issue #2282 the surviving
|
|
142
|
+
* OOM signature was thousands of bash processes, not MCP node children;
|
|
143
|
+
* non-interactive tmux panes sourcing ~/.bashrc can recursively trigger user
|
|
144
|
+
* automation and fan out before Codex starts. Users who need legacy PATH setup
|
|
145
|
+
* can opt in with OMX_TMUX_SOURCE_SHELL_RC=1.
|
|
134
146
|
*/
|
|
135
|
-
export declare function
|
|
147
|
+
export declare function shouldSourceTmuxPaneShellRc(env?: NodeJS.ProcessEnv): boolean;
|
|
148
|
+
export declare function buildTmuxPaneCommand(command: string, args: string[], shellPath?: string | undefined, env?: NodeJS.ProcessEnv): string;
|
|
136
149
|
export declare function buildDetachedWindowsBootstrapScript(sessionName: string, commandText: string, delayMs?: number, tmuxCommand?: string): string;
|
|
137
150
|
export declare function runDetachedSessionPostLaunch(cwd: string, sessionId: string, codexHomeOverride?: string, projectLocalCodexHomeForCleanup?: string, runtimeCodexHomeForCleanup?: string): Promise<void>;
|
|
138
151
|
export declare function shouldDetachBackgroundHelper(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): boolean;
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import { basename, dirname, join, posix, win32 } from "path";
|
|
|
7
7
|
import { existsSync, mkdirSync, readFileSync, rmSync, statSync, writeFileSync } from "fs";
|
|
8
8
|
import { copyFile, cp, lstat, mkdir, readFile, readdir, rm, symlink, writeFile } from "fs/promises";
|
|
9
9
|
import { constants as osConstants, homedir } from "os";
|
|
10
|
-
import { setup, SETUP_SCOPES } from "./setup.js";
|
|
10
|
+
import { setup, SETUP_MCP_MODES, SETUP_SCOPES, } from "./setup.js";
|
|
11
11
|
import { uninstall } from "./uninstall.js";
|
|
12
12
|
import { version } from "./version.js";
|
|
13
13
|
import { tmuxHookCommand } from "./tmux-hook.js";
|
|
@@ -35,9 +35,10 @@ import { adaptCommand } from "./adapt.js";
|
|
|
35
35
|
import { listCommand } from "./list.js";
|
|
36
36
|
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";
|
|
37
37
|
import { getBaseStateDir, getStateDir, listModeStateFilesWithScopePreference, } from "../mcp/state-paths.js";
|
|
38
|
-
import {
|
|
38
|
+
import { evaluateRalphCompletionAuditEvidence, isRalphCompletePhase } from "../ralph/completion-audit.js";
|
|
39
|
+
import { readPersistedSetupPreferences, resolveCodexConfigPathForLaunch, resolveCodexHomeForLaunch, resolveProjectLocalCodexHomeForLaunch, } from "./codex-home.js";
|
|
39
40
|
export { readPersistedSetupPreferences, readPersistedSetupScope, resolveCodexConfigPathForLaunch, resolveCodexHomeForLaunch, resolveProjectLocalCodexHomeForLaunch, } from "./codex-home.js";
|
|
40
|
-
import { SKILL_ACTIVE_STATE_MODE, extractSessionIdFromInitializedStatePath,
|
|
41
|
+
import { SKILL_ACTIVE_STATE_MODE, extractSessionIdFromInitializedStatePath, getSkillActiveStatePathsForStateDir, listActiveSkills, readSkillActiveState, syncCanonicalSkillStateForMode, } from "../state/skill-active.js";
|
|
41
42
|
import { isTrackedWorkflowMode } from "../state/workflow-transition.js";
|
|
42
43
|
import { maybeCheckAndPromptUpdate, runImmediateUpdate } from "./update.js";
|
|
43
44
|
import { maybePromptGithubStar } from "./star-prompt.js";
|
|
@@ -46,7 +47,8 @@ import { readSessionState, writeSessionStart, writeSessionEnd, resetSessionMetri
|
|
|
46
47
|
import { buildClientAttachedReconcileHookName, buildReconcileHudResizeArgs, buildRegisterClientAttachedReconcileArgs, buildRegisterResizeHookArgs, buildResizeHookName, buildResizeHookTarget, buildScheduleDelayedHudResizeArgs, buildUnregisterClientAttachedReconcileArgs, buildUnregisterResizeHookArgs, enableMouseScrolling, isMsysOrGitBash, isNativeWindows, isTmuxAvailable, mitigateCopyModeUnderlineArtifacts, } from "../team/tmux-session.js";
|
|
47
48
|
import { getPackageRoot } from "../utils/package.js";
|
|
48
49
|
import { codexConfigPath, omxRoot, rememberOmxLaunchContext, resolveOmxEntryPath } from "../utils/paths.js";
|
|
49
|
-
import { cleanCodexModelAvailabilityNuxIfNeeded, repairConfigIfNeeded, upsertManagedCodexHookTrustState } from "../config/generator.js";
|
|
50
|
+
import { cleanCodexModelAvailabilityNuxIfNeeded, extractSharedMcpRegistryServersFromConfig, repairConfigIfNeeded, upsertManagedCodexHookTrustState } from "../config/generator.js";
|
|
51
|
+
import { OMX_FIRST_PARTY_MCP_SERVER_NAMES } from "../config/omx-first-party-mcp.js";
|
|
50
52
|
import { HUD_TMUX_HEIGHT_LINES } from "../hud/constants.js";
|
|
51
53
|
import { OMX_TMUX_HUD_OWNER_ENV } from "../hud/reconcile.js";
|
|
52
54
|
import { createHudWatchPane as createSharedHudWatchPane, killTmuxPane as killSharedTmuxPane, listCurrentWindowHudPaneIds, parsePaneIdFromTmuxOutput, } from "../hud/tmux.js";
|
|
@@ -83,7 +85,7 @@ Usage:
|
|
|
83
85
|
Queue audited follow-up instructions for a running non-interactive exec job
|
|
84
86
|
omx imagegen continuation <session-id> --artifact <name>
|
|
85
87
|
Queue a Stop-hook continuation for built-in image generation turns
|
|
86
|
-
omx setup Install skills, prompts,
|
|
88
|
+
omx setup Install skills, prompts, CLI-first config, and scope-specific AGENTS.md
|
|
87
89
|
(user scope prompts for legacy vs plugin skill delivery when needed)
|
|
88
90
|
omx update Check npm now, update the global install immediately, then refresh setup
|
|
89
91
|
omx uninstall Remove OMX configuration and clean up installed artifacts
|
|
@@ -116,13 +118,13 @@ Usage:
|
|
|
116
118
|
omx hud Show HUD statusline (--watch, --json, --preset=NAME)
|
|
117
119
|
omx sidecar Show read-only team/multi-agent visualization (--watch, --json, --tmux)
|
|
118
120
|
omx state Read/write/list OMX mode state via CLI parity surface
|
|
119
|
-
omx notepad CLI
|
|
121
|
+
omx notepad JSON CLI surface for OMX notepad operations
|
|
120
122
|
omx project-memory
|
|
121
|
-
CLI
|
|
122
|
-
omx trace CLI
|
|
123
|
+
JSON CLI surface for OMX project-memory operations
|
|
124
|
+
omx trace JSON CLI surface for OMX trace operations
|
|
123
125
|
omx code-intel
|
|
124
|
-
CLI
|
|
125
|
-
omx wiki CLI
|
|
126
|
+
JSON CLI surface for OMX code-intel operations
|
|
127
|
+
omx wiki JSON CLI surface for OMX wiki operations
|
|
126
128
|
omx mcp-serve Launch an OMX stdio MCP server target (plugin/runtime use)
|
|
127
129
|
omx sparkshell <command> [args...]
|
|
128
130
|
omx sparkshell --tmux-pane <pane-id> [--tail-lines <100-1000>]
|
|
@@ -164,6 +166,10 @@ Options:
|
|
|
164
166
|
--legacy Use legacy setup delivery for omx setup, overriding persisted plugin mode
|
|
165
167
|
--install-mode <legacy|plugin>
|
|
166
168
|
Explicit setup install mode (canonical form; --legacy/--plugin are aliases)
|
|
169
|
+
--mcp <none|compat>
|
|
170
|
+
Explicit setup MCP mode (default: none; compat enables first-party MCP compatibility and shared registry sync)
|
|
171
|
+
--no-mcp Alias for --mcp=none
|
|
172
|
+
--with-mcp Alias for --mcp=compat
|
|
167
173
|
--keep-config Skip config.toml cleanup during uninstall
|
|
168
174
|
--purge Remove .omx/ cache directory during uninstall
|
|
169
175
|
--verbose Show detailed output
|
|
@@ -288,6 +294,45 @@ export function resolveSetupInstallModeArg(args) {
|
|
|
288
294
|
}
|
|
289
295
|
return value;
|
|
290
296
|
}
|
|
297
|
+
export function resolveSetupMcpModeArg(args) {
|
|
298
|
+
let value;
|
|
299
|
+
const setValue = (next, source) => {
|
|
300
|
+
if (value && value !== next) {
|
|
301
|
+
throw new Error(`Conflicting setup MCP mode flags: ${source} selects ${next}, but another flag already selected ${value}`);
|
|
302
|
+
}
|
|
303
|
+
value = next;
|
|
304
|
+
};
|
|
305
|
+
const parseValue = (next) => {
|
|
306
|
+
if (!SETUP_MCP_MODES.includes(next)) {
|
|
307
|
+
throw new Error(`Invalid setup MCP mode: ${next}. Expected one of: none, compat`);
|
|
308
|
+
}
|
|
309
|
+
return next;
|
|
310
|
+
};
|
|
311
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
312
|
+
const arg = args[index];
|
|
313
|
+
if (arg === "--no-mcp") {
|
|
314
|
+
setValue("none", arg);
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
if (arg === "--with-mcp") {
|
|
318
|
+
setValue("compat", arg);
|
|
319
|
+
continue;
|
|
320
|
+
}
|
|
321
|
+
if (arg === "--mcp") {
|
|
322
|
+
const next = args[index + 1];
|
|
323
|
+
if (!next || next.startsWith("-")) {
|
|
324
|
+
throw new Error(`Missing setup MCP mode value after --mcp. Expected one of: none, compat`);
|
|
325
|
+
}
|
|
326
|
+
setValue(parseValue(next), arg);
|
|
327
|
+
index += 1;
|
|
328
|
+
continue;
|
|
329
|
+
}
|
|
330
|
+
if (arg.startsWith("--mcp=")) {
|
|
331
|
+
setValue(parseValue(arg.slice("--mcp=".length)), "--mcp");
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return value;
|
|
335
|
+
}
|
|
291
336
|
export function resolveSetupScopeArg(args) {
|
|
292
337
|
let value;
|
|
293
338
|
for (let index = 0; index < args.length; index += 1) {
|
|
@@ -637,6 +682,39 @@ export function classifyCodexExecFailure(error) {
|
|
|
637
682
|
message,
|
|
638
683
|
};
|
|
639
684
|
}
|
|
685
|
+
export async function resolveLaunchConfigRepairOptions(cwd, configPath) {
|
|
686
|
+
let content;
|
|
687
|
+
const readConfig = async () => {
|
|
688
|
+
if (content !== undefined)
|
|
689
|
+
return content;
|
|
690
|
+
if (!existsSync(configPath))
|
|
691
|
+
return undefined;
|
|
692
|
+
content = await readFile(configPath, "utf-8");
|
|
693
|
+
return content;
|
|
694
|
+
};
|
|
695
|
+
const existingContent = await readConfig();
|
|
696
|
+
const sharedMcpRegistry = existingContent
|
|
697
|
+
? extractSharedMcpRegistryServersFromConfig(existingContent)
|
|
698
|
+
: { servers: [] };
|
|
699
|
+
const sharedMcpOptions = sharedMcpRegistry.servers.length > 0
|
|
700
|
+
? {
|
|
701
|
+
sharedMcpServers: sharedMcpRegistry.servers,
|
|
702
|
+
sharedMcpRegistrySource: sharedMcpRegistry.sourcePath,
|
|
703
|
+
}
|
|
704
|
+
: {};
|
|
705
|
+
if (readPersistedSetupPreferences(cwd)?.mcpMode === "compat") {
|
|
706
|
+
return { includeFirstPartyMcp: true, ...sharedMcpOptions };
|
|
707
|
+
}
|
|
708
|
+
if (existingContent) {
|
|
709
|
+
const hasExistingFirstPartyMcp = OMX_FIRST_PARTY_MCP_SERVER_NAMES.some((name) => new RegExp(`^\\s*\\[mcp_servers\\.${name}\\]\\s*$`, "m").test(existingContent));
|
|
710
|
+
if (hasExistingFirstPartyMcp || sharedMcpRegistry.servers.length > 0) {
|
|
711
|
+
return { includeFirstPartyMcp: hasExistingFirstPartyMcp, ...sharedMcpOptions };
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
return {
|
|
715
|
+
includeFirstPartyMcp: false,
|
|
716
|
+
};
|
|
717
|
+
}
|
|
640
718
|
function runCodexBlocking(cwd, launchArgs, codexEnv) {
|
|
641
719
|
const { result } = spawnPlatformCommandSync("codex", launchArgs, {
|
|
642
720
|
cwd,
|
|
@@ -816,6 +894,7 @@ export async function main(args) {
|
|
|
816
894
|
verbose: options.verbose,
|
|
817
895
|
scope: resolveSetupScopeArg(args.slice(1)),
|
|
818
896
|
installMode: resolveSetupInstallModeArg(args.slice(1)),
|
|
897
|
+
mcpMode: resolveSetupMcpModeArg(args.slice(1)),
|
|
819
898
|
});
|
|
820
899
|
break;
|
|
821
900
|
case "update":
|
|
@@ -1107,7 +1186,8 @@ export async function launchWithHud(args) {
|
|
|
1107
1186
|
// have written a config.toml with duplicate [tui] sections. Codex CLI's
|
|
1108
1187
|
// TOML parser rejects duplicates, so we repair before spawning the CLI.
|
|
1109
1188
|
try {
|
|
1110
|
-
const
|
|
1189
|
+
const configPath = resolveCodexConfigPathForLaunch(launchCwd, process.env);
|
|
1190
|
+
const repaired = await repairConfigIfNeeded(configPath, getPackageRoot(), await resolveLaunchConfigRepairOptions(launchCwd, configPath));
|
|
1111
1191
|
if (repaired) {
|
|
1112
1192
|
console.log("[omx] Repaired managed config.toml compatibility issue.");
|
|
1113
1193
|
}
|
|
@@ -1191,7 +1271,8 @@ export async function execWithOverlay(args) {
|
|
|
1191
1271
|
logCliOperationFailure(err);
|
|
1192
1272
|
}
|
|
1193
1273
|
try {
|
|
1194
|
-
const
|
|
1274
|
+
const configPath = resolveCodexConfigPathForLaunch(launchCwd, process.env);
|
|
1275
|
+
const repaired = await repairConfigIfNeeded(configPath, getPackageRoot(), await resolveLaunchConfigRepairOptions(launchCwd, configPath));
|
|
1195
1276
|
if (repaired) {
|
|
1196
1277
|
console.log("[omx] Repaired managed config.toml compatibility issue.");
|
|
1197
1278
|
}
|
|
@@ -2171,11 +2252,11 @@ function cleanPostLaunchString(value) {
|
|
|
2171
2252
|
function postLaunchUniqueStrings(values) {
|
|
2172
2253
|
return [...new Set(values.map((value) => value.trim()).filter(Boolean))];
|
|
2173
2254
|
}
|
|
2174
|
-
async function scrubPostLaunchRootSkillActiveForSession(
|
|
2255
|
+
async function scrubPostLaunchRootSkillActiveForSession(stateDir, sessionId, nowIso, writeFileFn, rootStateBeforeCleanup) {
|
|
2175
2256
|
const normalizedSessionId = cleanPostLaunchString(sessionId);
|
|
2176
2257
|
if (!normalizedSessionId)
|
|
2177
2258
|
return;
|
|
2178
|
-
const { rootPath } =
|
|
2259
|
+
const { rootPath } = getSkillActiveStatePathsForStateDir(stateDir);
|
|
2179
2260
|
const rootState = rootStateBeforeCleanup ?? await readSkillActiveState(rootPath);
|
|
2180
2261
|
if (!rootState)
|
|
2181
2262
|
return;
|
|
@@ -2226,6 +2307,23 @@ function buildRecoveredPostLaunchSkillActiveState(completedAt) {
|
|
|
2226
2307
|
active_skills: [],
|
|
2227
2308
|
};
|
|
2228
2309
|
}
|
|
2310
|
+
function markRalphCompletionAuditBlockedForPostLaunch(state, cwd, nowIso) {
|
|
2311
|
+
if (!isRalphCompletePhase(state.current_phase ?? state.currentPhase))
|
|
2312
|
+
return false;
|
|
2313
|
+
const audit = evaluateRalphCompletionAuditEvidence(state, cwd);
|
|
2314
|
+
if (audit.complete)
|
|
2315
|
+
return false;
|
|
2316
|
+
state.active = false;
|
|
2317
|
+
state.current_phase = "cancelled";
|
|
2318
|
+
state.completed_at = nowIso;
|
|
2319
|
+
state.last_turn_at = nowIso;
|
|
2320
|
+
state.interrupted_at = nowIso;
|
|
2321
|
+
state.stop_reason = `missing_completion_audit:${audit.reason}`;
|
|
2322
|
+
state.completion_audit_gate = "blocked";
|
|
2323
|
+
state.completion_audit_missing_reason = audit.reason;
|
|
2324
|
+
state.completion_audit_blocked_at = nowIso;
|
|
2325
|
+
return true;
|
|
2326
|
+
}
|
|
2229
2327
|
export async function cleanupPostLaunchModeStateFiles(cwd, sessionId, dependencies = {}) {
|
|
2230
2328
|
const readdir = dependencies.readdir ?? (await import("fs/promises")).readdir;
|
|
2231
2329
|
const writeFile = dependencies.writeFile ?? (await import("fs/promises")).writeFile;
|
|
@@ -2234,8 +2332,9 @@ export async function cleanupPostLaunchModeStateFiles(cwd, sessionId, dependenci
|
|
|
2234
2332
|
const scopedDirs = sessionId
|
|
2235
2333
|
? [getStateDir(cwd, sessionId)]
|
|
2236
2334
|
: [getBaseStateDir(cwd)];
|
|
2335
|
+
const rootStateDir = getBaseStateDir(cwd);
|
|
2237
2336
|
const rootSkillActiveStateBeforeCleanup = sessionId
|
|
2238
|
-
? await readSkillActiveState(
|
|
2337
|
+
? await readSkillActiveState(getSkillActiveStatePathsForStateDir(rootStateDir).rootPath)
|
|
2239
2338
|
: null;
|
|
2240
2339
|
for (const stateDir of scopedDirs) {
|
|
2241
2340
|
const files = await readdir(stateDir).catch(() => []);
|
|
@@ -2255,6 +2354,7 @@ export async function cleanupPostLaunchModeStateFiles(cwd, sessionId, dependenci
|
|
|
2255
2354
|
if (isTrackedWorkflowMode(mode)) {
|
|
2256
2355
|
await syncCanonicalSkillStateForMode({
|
|
2257
2356
|
cwd,
|
|
2357
|
+
baseStateDir: rootStateDir,
|
|
2258
2358
|
mode,
|
|
2259
2359
|
active: false,
|
|
2260
2360
|
currentPhase: "cancelled",
|
|
@@ -2276,8 +2376,25 @@ export async function cleanupPostLaunchModeStateFiles(cwd, sessionId, dependenci
|
|
|
2276
2376
|
const skillStateStillVisible = mode === SKILL_ACTIVE_STATE_MODE
|
|
2277
2377
|
&& Array.isArray(result.state.active_skills)
|
|
2278
2378
|
&& result.state.active_skills.length > 0;
|
|
2279
|
-
if (result.state.active !== true && !skillStateStillVisible)
|
|
2379
|
+
if (result.state.active !== true && !skillStateStillVisible) {
|
|
2380
|
+
if (mode === "ralph") {
|
|
2381
|
+
const completedAt = now().toISOString();
|
|
2382
|
+
if (markRalphCompletionAuditBlockedForPostLaunch(result.state, cwd, completedAt)) {
|
|
2383
|
+
await writeFile(path, JSON.stringify(result.state, null, 2));
|
|
2384
|
+
await syncCanonicalSkillStateForMode({
|
|
2385
|
+
cwd,
|
|
2386
|
+
baseStateDir: rootStateDir,
|
|
2387
|
+
mode,
|
|
2388
|
+
active: false,
|
|
2389
|
+
currentPhase: "cancelled",
|
|
2390
|
+
sessionId: stateDir === getStateDir(cwd, sessionId) ? sessionId : undefined,
|
|
2391
|
+
nowIso: completedAt,
|
|
2392
|
+
source: "postLaunchCleanup",
|
|
2393
|
+
});
|
|
2394
|
+
}
|
|
2395
|
+
}
|
|
2280
2396
|
continue;
|
|
2397
|
+
}
|
|
2281
2398
|
try {
|
|
2282
2399
|
const completedAt = now().toISOString();
|
|
2283
2400
|
if (mode === SKILL_ACTIVE_STATE_MODE) {
|
|
@@ -2299,6 +2416,7 @@ export async function cleanupPostLaunchModeStateFiles(cwd, sessionId, dependenci
|
|
|
2299
2416
|
if (isTrackedWorkflowMode(mode)) {
|
|
2300
2417
|
await syncCanonicalSkillStateForMode({
|
|
2301
2418
|
cwd,
|
|
2419
|
+
baseStateDir: rootStateDir,
|
|
2302
2420
|
mode,
|
|
2303
2421
|
active: false,
|
|
2304
2422
|
currentPhase: "cancelled",
|
|
@@ -2315,7 +2433,7 @@ export async function cleanupPostLaunchModeStateFiles(cwd, sessionId, dependenci
|
|
|
2315
2433
|
}
|
|
2316
2434
|
if (sessionId) {
|
|
2317
2435
|
try {
|
|
2318
|
-
await scrubPostLaunchRootSkillActiveForSession(
|
|
2436
|
+
await scrubPostLaunchRootSkillActiveForSession(rootStateDir, sessionId, now().toISOString(), writeFile, rootSkillActiveStateBeforeCleanup);
|
|
2319
2437
|
}
|
|
2320
2438
|
catch (err) {
|
|
2321
2439
|
writeWarn(`[omx] postLaunch: failed to reconcile root skill-active state: ${err instanceof Error ? err.message : err}`);
|
|
@@ -2696,16 +2814,26 @@ export function buildWindowsPromptCommand(command, args) {
|
|
|
2696
2814
|
* Wrap a command for tmux pane execution while preserving the tmux pane cwd.
|
|
2697
2815
|
* tmux already starts the pane at `-c <cwd>`; using a login shell here can
|
|
2698
2816
|
* reset that cwd back to the shell's startup directory on some setups.
|
|
2699
|
-
*
|
|
2817
|
+
*
|
|
2818
|
+
* Do not source user shell rc files by default. In issue #2282 the surviving
|
|
2819
|
+
* OOM signature was thousands of bash processes, not MCP node children;
|
|
2820
|
+
* non-interactive tmux panes sourcing ~/.bashrc can recursively trigger user
|
|
2821
|
+
* automation and fan out before Codex starts. Users who need legacy PATH setup
|
|
2822
|
+
* can opt in with OMX_TMUX_SOURCE_SHELL_RC=1.
|
|
2700
2823
|
*/
|
|
2701
|
-
export function
|
|
2824
|
+
export function shouldSourceTmuxPaneShellRc(env = process.env) {
|
|
2825
|
+
return String(env.OMX_TMUX_SOURCE_SHELL_RC ?? "").trim() === "1";
|
|
2826
|
+
}
|
|
2827
|
+
export function buildTmuxPaneCommand(command, args, shellPath = process.env.SHELL, env = process.env) {
|
|
2702
2828
|
const bareCmd = buildTmuxShellCommand(command, args);
|
|
2703
2829
|
let rcSource = "";
|
|
2704
|
-
if (
|
|
2705
|
-
|
|
2706
|
-
|
|
2707
|
-
|
|
2708
|
-
|
|
2830
|
+
if (shouldSourceTmuxPaneShellRc(env)) {
|
|
2831
|
+
if (shellPath && /\/zsh$/i.test(shellPath)) {
|
|
2832
|
+
rcSource = "if [ -f ~/.zshrc ]; then source ~/.zshrc; fi; ";
|
|
2833
|
+
}
|
|
2834
|
+
else if (shellPath && /\/bash$/i.test(shellPath)) {
|
|
2835
|
+
rcSource = "if [ -f ~/.bashrc ]; then source ~/.bashrc; fi; ";
|
|
2836
|
+
}
|
|
2709
2837
|
}
|
|
2710
2838
|
const rawShell = shellPath && shellPath.trim() !== "" ? shellPath.trim() : "/bin/sh";
|
|
2711
2839
|
const shellBin = ALLOWED_SHELLS.has(rawShell) ? rawShell : "/bin/sh";
|