oh-my-opencode 4.13.0 → 4.14.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/.agents/skills/codex-qa/SKILL.md +15 -0
- package/.agents/skills/codex-qa/references/logging-debug.md +12 -0
- package/.agents/skills/opencode-qa/SKILL.md +17 -0
- package/.agents/skills/opencode-qa/references/tui-tmux.md +17 -0
- package/.agents/skills/work-with-pr/SKILL.md +18 -10
- package/.opencode/skills/work-with-pr/SKILL.md +18 -10
- package/README.md +2 -2
- package/dist/cli/doctor/checks/telemetry.d.ts +2 -0
- package/dist/cli/doctor/framework/constants.d.ts +1 -0
- package/dist/cli/doctor/framework/doctor-target.d.ts +1 -1
- package/dist/cli/index.js +24651 -16452
- package/dist/cli-node/index.js +24651 -16452
- package/dist/config/schema/oh-my-opencode-config.d.ts +1 -0
- package/dist/features/team-mode/test-support/async-test-helpers.d.ts +19 -0
- package/dist/hooks/atlas/final-wave-approval-gate.d.ts +1 -0
- package/dist/hooks/atlas/subagent-completion-reminder.d.ts +30 -0
- package/dist/hooks/atlas/types.d.ts +2 -0
- package/dist/hooks/atlas/verification-reminders.d.ts +3 -0
- package/dist/hooks/team-session-events/team-idle-wake-hint.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +33232 -19559
- package/dist/mcp/context7.d.ts +9 -8
- package/dist/oh-my-opencode.schema.json +4 -0
- package/dist/shared/posthog.d.ts +17 -10
- package/dist/shared/telemetry-product-identity.d.ts +2 -0
- package/dist/skills/coding-agent-sessions/SKILL.md +128 -0
- package/dist/skills/coding-agent-sessions/agents/openai.yaml +4 -0
- package/dist/skills/coding-agent-sessions/references/all-platforms.md +71 -0
- package/dist/skills/coding-agent-sessions/references/claude.md +32 -0
- package/dist/skills/coding-agent-sessions/references/codex.md +30 -0
- package/dist/skills/coding-agent-sessions/references/opencode.md +43 -0
- package/dist/skills/coding-agent-sessions/references/senpi.md +17 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/__init__.py +1 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/claude.py +66 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +283 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/codex.py +105 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +275 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/jsonio.py +55 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/kiro_scanner.py +91 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/opencode.py +289 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +92 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_optional_scanners.py +203 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_scanners.py +177 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/timeparse.py +51 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +149 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/types.py +57 -0
- package/dist/skills/coding-agent-sessions/scripts/find-agent-sessions.py +19 -0
- package/dist/skills/frontend/ATTRIBUTION.md +52 -8
- package/dist/skills/frontend/SKILL.md +29 -8
- package/dist/skills/frontend/references/design/README.md +29 -12
- package/dist/skills/frontend/references/design/_INDEX.md +3 -3
- package/dist/skills/frontend/references/design/design-system-architecture.md +22 -19
- package/dist/skills/frontend/references/designpowers/EVIDENCE.md +89 -0
- package/dist/skills/frontend/references/designpowers/README.md +48 -0
- package/dist/skills/frontend/references/designpowers/UPSTREAM.md +80 -0
- package/dist/skills/frontend/references/designpowers/lane-a-direction.md +64 -0
- package/dist/skills/frontend/references/designpowers/lane-b-execution.md +65 -0
- package/dist/skills/frontend/references/designpowers/lane-c-review.md +65 -0
- package/dist/skills/frontend/references/designpowers/lane-d-memory.md +83 -0
- package/dist/skills/frontend/references/designpowers/orchestration.md +80 -0
- package/dist/skills/frontend/references/designpowers/routing.md +79 -0
- package/dist/skills/frontend/references/designpowers/vendor/LICENSE +21 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/content-writer.md +132 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/design-builder.md +109 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/design-critic.md +89 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/design-lead.md +113 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/design-scout.md +78 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/design-strategist.md +121 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
- package/dist/skills/frontend/references/designpowers/vendor/agents/motion-designer.md +120 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/accessible-content/SKILL.md +101 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/SKILL.md +109 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/SKILL.md +107 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-debate/SKILL.md +199 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/SKILL.md +174 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-handoff/SKILL.md +125 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-md/SKILL.md +106 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-retrospective/SKILL.md +266 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-review/SKILL.md +123 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/SKILL.md +120 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/SKILL.md +164 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/SKILL.md +85 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/SKILL.md +98 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/SKILL.md +165 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/interaction-design/SKILL.md +122 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/motion-choreography/SKILL.md +81 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/research-planning/SKILL.md +96 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/SKILL.md +77 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/SKILL.md +192 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/taste-feedback/SKILL.md +165 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/taste-report/SKILL.md +78 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/token-architecture/SKILL.md +75 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/ui-composition/SKILL.md +117 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/usability-testing/SKILL.md +78 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/SKILL.md +125 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/SKILL.md +79 -0
- package/dist/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/SKILL.md +119 -0
- package/dist/skills/frontend/references/ui-ux-db/scripts/core.py +0 -0
- package/dist/skills/git-master/SKILL.md +4 -0
- package/dist/skills/review-work/SKILL.md +3 -3
- package/dist/skills/start-work/SKILL.md +7 -5
- package/dist/skills/ultraresearch/SKILL.md +4 -252
- package/dist/skills/ulw-plan/SKILL.md +8 -6
- package/dist/skills/ulw-plan/references/full-workflow.md +11 -6
- package/dist/skills/ulw-plan/references/intent-clear.md +3 -3
- package/dist/skills/ulw-plan/references/intent-unclear.md +1 -1
- package/dist/skills/{ultraresearch → ulw-research}/ATTRIBUTION.md +1 -1
- package/dist/skills/ulw-research/SKILL.md +260 -0
- package/dist/skills/visual-qa/SKILL.md +105 -14
- package/dist/skills/visual-qa/scripts/skill-prompt-contract.test.ts +120 -1
- package/dist/testing/create-plugin-module.d.ts +2 -0
- package/dist/tui.js +23917 -16117
- package/docs/reference/github-attachment-upload.md +51 -0
- package/docs/reference/web-terminal-visual-qa.md +81 -0
- package/package.json +20 -14
- package/packages/lsp-core/src/lsp/process.ts +4 -1
- package/packages/lsp-core/src/mcp.ts +1 -0
- package/packages/lsp-daemon/dist/cli.js +5 -1
- package/packages/lsp-daemon/dist/index.js +5 -1
- package/packages/lsp-daemon/dist/proxy.js +1 -0
- package/packages/lsp-tools-mcp/dist/cli.js +5 -1
- package/packages/lsp-tools-mcp/dist/lsp/manager.js +4 -1
- package/packages/lsp-tools-mcp/dist/mcp.js +5 -1
- package/packages/lsp-tools-mcp/dist/tools.js +4 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +323 -62
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/scripts/bootstrap.ps1 +37 -68
- package/packages/omo-codex/plugin/components/bootstrap/scripts/node-dispatch.ps1 +75 -0
- package/packages/omo-codex/plugin/components/bootstrap/src/cli.ts +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/src/setup.ts +2 -18
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +575 -334
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +204 -39
- package/packages/omo-codex/plugin/components/codegraph/package.json +2 -2
- package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +7 -1
- package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +103 -3
- package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +114 -0
- package/packages/omo-codex/plugin/components/codegraph/src/serve-invocation.ts +29 -0
- package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +31 -57
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +7 -4
- package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +43 -9
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +146 -0
- package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +12 -7
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +71 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +4 -1
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +2 -2
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/src/sparkshell-awareness.ts +2 -2
- package/packages/omo-codex/plugin/components/rules/test/sparkshell-awareness.test.ts +11 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +6 -6
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +23 -0
- package/packages/omo-codex/plugin/components/teammode/dist/cli.js +22 -4
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/SKILL.md +40 -2
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team-guide.mjs +32 -5
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team.mjs +7 -3
- package/packages/omo-codex/plugin/components/teammode/src/codex-hook.ts +19 -4
- package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +32 -2
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/README.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +23 -7
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -4
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +11 -6
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +3 -3
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/src/codex-hook.ts +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +24 -0
- package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +6 -1
- package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/README.md +25 -21
- package/packages/omo-codex/plugin/components/ulw-loop/biome.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +381 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.js +14 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +145 -14
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.d.ts +6 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.js +16 -6
- package/packages/omo-codex/plugin/components/ulw-loop/dist/ultrawork-directive.d.ts +5 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/ultrawork-directive.js +104 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +2 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +19 -11
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-steering.ts +14 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +4 -2
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +28 -6
- package/packages/omo-codex/plugin/components/ulw-loop/src/ultrawork-directive.ts +113 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +33 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-kind-guidance.test.ts +31 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +13 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +36 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/skill-contract.test.ts +12 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +64 -0
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +2 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +2 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +2 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +2 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +2 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +2 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +2 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +2 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +2 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +2 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +2 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +2 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +2 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +2 -1
- package/packages/omo-codex/plugin/package-lock.json +13 -13
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/scripts/auto-update.mjs +9 -5
- package/packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs +1 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/context7-placeholder-guard.mjs +131 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-mode-guard.mjs +60 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +3 -10
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/root-settings.mjs +31 -1
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +73 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config.mjs +20 -3
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +30 -8
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +128 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/agents/openai.yaml +4 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +71 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/claude.md +32 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/codex.md +30 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/opencode.md +43 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +17 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/__init__.py +1 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/claude.py +66 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +283 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/codex.py +105 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +275 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/jsonio.py +55 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/kiro_scanner.py +91 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/opencode.py +289 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +92 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_optional_scanners.py +203 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_scanners.py +177 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/timeparse.py +51 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +149 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/types.py +57 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/find-agent-sessions.py +19 -0
- package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +52 -8
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +29 -8
- package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +29 -12
- package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +3 -3
- package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +22 -19
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/EVIDENCE.md +89 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +48 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/UPSTREAM.md +80 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +64 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +65 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-c-review.md +65 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +83 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +80 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +79 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/LICENSE +21 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/content-writer.md +132 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-builder.md +109 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-critic.md +89 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-lead.md +113 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-scout.md +78 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/design-strategist.md +121 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/agents/motion-designer.md +120 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/accessible-content/SKILL.md +101 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/SKILL.md +109 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/SKILL.md +107 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-debate/SKILL.md +199 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/SKILL.md +174 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-handoff/SKILL.md +125 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-md/SKILL.md +106 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-retrospective/SKILL.md +266 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-review/SKILL.md +123 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/SKILL.md +120 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/SKILL.md +164 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/SKILL.md +85 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/SKILL.md +98 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/SKILL.md +165 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/interaction-design/SKILL.md +122 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/motion-choreography/SKILL.md +81 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/research-planning/SKILL.md +96 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/SKILL.md +77 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/SKILL.md +192 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/taste-feedback/SKILL.md +165 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/taste-report/SKILL.md +78 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/token-architecture/SKILL.md +75 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/ui-composition/SKILL.md +117 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/usability-testing/SKILL.md +78 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/SKILL.md +125 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/SKILL.md +79 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/SKILL.md +119 -0
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/core.py +0 -0
- package/packages/omo-codex/plugin/skills/git-master/SKILL.md +4 -0
- package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +4 -0
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +4 -0
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +4 -0
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +12 -4
- package/packages/omo-codex/plugin/skills/start-work/SKILL.md +14 -8
- package/packages/omo-codex/plugin/skills/teammode/SKILL.md +40 -2
- package/packages/omo-codex/plugin/skills/teammode/scripts/team-guide.mjs +32 -5
- package/packages/omo-codex/plugin/skills/teammode/scripts/team.mjs +7 -3
- package/packages/omo-codex/plugin/skills/ultraresearch/SKILL.md +4 -250
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +19 -11
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -4
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +11 -6
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +3 -3
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +1 -1
- package/packages/{shared-skills/skills/ultraresearch → omo-codex/plugin/skills/ulw-research}/ATTRIBUTION.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +262 -0
- package/packages/omo-codex/plugin/skills/ulw-research/agents/openai.yaml +2 -0
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +109 -14
- package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +23 -0
- package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +1 -0
- package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +1 -0
- package/packages/omo-codex/plugin/test/auto-update-restart-notice.test.mjs +24 -1
- package/packages/omo-codex/plugin/test/bootstrap-binlinks.test.mjs +23 -5
- package/packages/omo-codex/plugin/test/bootstrap-hooks.test.mjs +38 -0
- package/packages/omo-codex/plugin/test/bootstrap-ps-guard.test.mjs +25 -0
- package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +1 -7
- package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +206 -6
- package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +44 -0
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +50 -1
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +10 -7
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +28 -2
- package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +20 -0
- package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +117 -0
- package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +5 -2
- package/packages/omo-codex/plugin/test/ulw-research-skill-contract.test.mjs +285 -0
- package/packages/omo-codex/scripts/install-bin-links.test.mjs +6 -1
- package/packages/omo-codex/scripts/install-cache-copy.test.mjs +51 -0
- package/packages/omo-codex/scripts/install-config.test.mjs +198 -17
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +701 -282
- package/packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs +24 -15
- package/packages/omo-codex/scripts/install-local.test.mjs +5 -1
- package/packages/omo-codex/scripts/install-mcp-context7-runtime.test.mjs +84 -0
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +128 -0
- package/packages/shared-skills/skills/coding-agent-sessions/agents/openai.yaml +4 -0
- package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +71 -0
- package/packages/shared-skills/skills/coding-agent-sessions/references/claude.md +32 -0
- package/packages/shared-skills/skills/coding-agent-sessions/references/codex.md +30 -0
- package/packages/shared-skills/skills/coding-agent-sessions/references/opencode.md +43 -0
- package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +17 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/__init__.py +1 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/claude.py +66 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +283 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/codex.py +105 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +275 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/jsonio.py +55 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/kiro_scanner.py +91 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/opencode.py +289 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +92 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_optional_scanners.py +203 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/sqlite_scanners.py +177 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/timeparse.py +51 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +149 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/types.py +57 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/find-agent-sessions.py +19 -0
- package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +52 -8
- package/packages/shared-skills/skills/frontend/SKILL.md +29 -8
- package/packages/shared-skills/skills/frontend/references/design/README.md +29 -12
- package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +3 -3
- package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +22 -19
- package/packages/shared-skills/skills/frontend/references/designpowers/EVIDENCE.md +89 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/README.md +48 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/UPSTREAM.md +80 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +64 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +65 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-c-review.md +65 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +83 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +80 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +79 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/LICENSE +21 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/content-writer.md +132 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-builder.md +109 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-critic.md +89 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-lead.md +113 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-scout.md +78 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/design-strategist.md +121 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/agents/motion-designer.md +120 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/accessible-content/SKILL.md +101 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/adaptive-interfaces/SKILL.md +109 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/cognitive-accessibility/SKILL.md +107 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-debate/SKILL.md +199 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-debt-tracker/SKILL.md +174 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-handoff/SKILL.md +125 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-md/SKILL.md +106 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-retrospective/SKILL.md +266 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-review/SKILL.md +123 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/design-system-alignment/SKILL.md +120 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/designpowers-critique/SKILL.md +164 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/heuristic-evaluation/SKILL.md +85 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/inclusive-personas/SKILL.md +98 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/inspiration-scouting/SKILL.md +165 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/interaction-design/SKILL.md +122 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/motion-choreography/SKILL.md +81 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/research-planning/SKILL.md +96 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/responsive-patterns/SKILL.md +77 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/synthetic-user-testing/SKILL.md +192 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/taste-feedback/SKILL.md +165 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/taste-report/SKILL.md +78 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/token-architecture/SKILL.md +75 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/ui-composition/SKILL.md +117 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/usability-testing/SKILL.md +78 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/verification-before-shipping/SKILL.md +125 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/voice-and-tone/SKILL.md +79 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/vendor/skills/writing-design-plans/SKILL.md +119 -0
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/core.py +0 -0
- package/packages/shared-skills/skills/git-master/SKILL.md +4 -0
- package/packages/shared-skills/skills/review-work/SKILL.md +3 -3
- package/packages/shared-skills/skills/start-work/SKILL.md +7 -5
- package/packages/shared-skills/skills/ultraresearch/SKILL.md +4 -252
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +8 -6
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +11 -6
- package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +3 -3
- package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +1 -1
- package/packages/{omo-codex/plugin/skills/ultraresearch → shared-skills/skills/ulw-research}/ATTRIBUTION.md +1 -1
- package/packages/shared-skills/skills/ulw-research/SKILL.md +260 -0
- package/packages/shared-skills/skills/visual-qa/SKILL.md +105 -14
- package/packages/shared-skills/skills/visual-qa/scripts/skill-prompt-contract.test.ts +120 -1
- package/script/qa/web-terminal-redaction.d.mts +13 -0
- package/script/qa/web-terminal-redaction.mjs +43 -0
- package/script/qa/web-terminal-renderer.mjs +218 -0
- package/script/qa/web-terminal-visual-qa.mjs +264 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/tests/test_cookie_domain_filter.py +0 -110
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/tests/test_extract_cookies.py +0 -245
- package/packages/omo-codex/plugin/test/ultraresearch-skill-contract.test.mjs +0 -204
|
@@ -861,10 +861,8 @@ async function defaultVersionProbe2(binaryPath) {
|
|
|
861
861
|
}
|
|
862
862
|
|
|
863
863
|
// components/bootstrap/src/setup.ts
|
|
864
|
-
import { execFile as execFile2 } from "node:child_process";
|
|
865
864
|
import { copyFile as copyFile2, mkdir as mkdir7, readdir as readdir3, rm as rm9, stat as stat4 } from "node:fs/promises";
|
|
866
865
|
import { join as join18 } from "node:path";
|
|
867
|
-
import { promisify as promisify2 } from "node:util";
|
|
868
866
|
|
|
869
867
|
// ../src/install/link-cached-plugin-agents.ts
|
|
870
868
|
import { copyFile, lstat as lstat2, mkdir as mkdir4, readFile as readFile5, readdir, rm as rm6, writeFile as writeFile3 } from "node:fs/promises";
|
|
@@ -1174,6 +1172,44 @@ import { basename as basename4, isAbsolute as isAbsolute2, join as join12, relat
|
|
|
1174
1172
|
|
|
1175
1173
|
// ../src/install/codex-cache-command-shim.ts
|
|
1176
1174
|
var COMMAND_SHIM_MARKER = ":: generated by oh-my-openagent Codex installer";
|
|
1175
|
+
function windowsNodeDiscoveryLines() {
|
|
1176
|
+
return [
|
|
1177
|
+
"setlocal EnableExtensions EnableDelayedExpansion",
|
|
1178
|
+
'set "OMO_NODE_BINARY="',
|
|
1179
|
+
'set "OMO_NODE_REPL_NODE_PATH=%NODE_REPL_NODE_PATH%"',
|
|
1180
|
+
'if exist "%CODEX_HOME%\\config.toml" (',
|
|
1181
|
+
` for /f "tokens=1,* delims==" %%A in ('findstr /R /C:"NODE_REPL_NODE_PATH[ ]*=" "%CODEX_HOME%\\config.toml" 2^>nul') do (`,
|
|
1182
|
+
' set "OMO_NODE_REPL_NODE_PATH=%%B"',
|
|
1183
|
+
" )",
|
|
1184
|
+
")",
|
|
1185
|
+
"if defined OMO_NODE_REPL_NODE_PATH (",
|
|
1186
|
+
' set "OMO_NODE_BINARY=!OMO_NODE_REPL_NODE_PATH!"',
|
|
1187
|
+
' for /f "tokens=* delims= " %%N in ("!OMO_NODE_BINARY!") do set "OMO_NODE_BINARY=%%N"',
|
|
1188
|
+
` if "!OMO_NODE_BINARY:~0,1!"=="'" set "OMO_NODE_BINARY=!OMO_NODE_BINARY:~1!"`,
|
|
1189
|
+
` if "!OMO_NODE_BINARY:~-1!"=="'" set "OMO_NODE_BINARY=!OMO_NODE_BINARY:~0,-1!"`,
|
|
1190
|
+
' if "!OMO_NODE_BINARY:~0,1!"=="^"" set "OMO_NODE_BINARY=!OMO_NODE_BINARY:~1!"',
|
|
1191
|
+
' if "!OMO_NODE_BINARY:~-1!"=="^"" set "OMO_NODE_BINARY=!OMO_NODE_BINARY:~0,-1!"',
|
|
1192
|
+
' if defined OMO_NODE_BINARY if not exist "!OMO_NODE_BINARY!" set "OMO_NODE_BINARY="',
|
|
1193
|
+
")",
|
|
1194
|
+
'if not defined OMO_NODE_BINARY where node >nul 2>nul && set "OMO_NODE_BINARY=node"'
|
|
1195
|
+
];
|
|
1196
|
+
}
|
|
1197
|
+
function windowsCommandShim(targetPath) {
|
|
1198
|
+
return [
|
|
1199
|
+
"@echo off",
|
|
1200
|
+
COMMAND_SHIM_MARKER,
|
|
1201
|
+
'if not defined CODEX_HOME set "CODEX_HOME=%USERPROFILE%\\.codex"',
|
|
1202
|
+
...windowsNodeDiscoveryLines(),
|
|
1203
|
+
"if not defined OMO_NODE_BINARY (",
|
|
1204
|
+
" echo omo: no Node runtime was discovered from NODE_REPL_NODE_PATH or PATH; rerun LazyCodex install from Codex Desktop 1>&2",
|
|
1205
|
+
" exit /b 127",
|
|
1206
|
+
")",
|
|
1207
|
+
`"%OMO_NODE_BINARY%" "${targetPath}" %*`,
|
|
1208
|
+
"exit /b %ERRORLEVEL%",
|
|
1209
|
+
""
|
|
1210
|
+
].join(`\r
|
|
1211
|
+
`);
|
|
1212
|
+
}
|
|
1177
1213
|
|
|
1178
1214
|
// ../src/install/codex-cache-fs.ts
|
|
1179
1215
|
import { lstat as lstat3 } from "node:fs/promises";
|
|
@@ -1314,23 +1350,24 @@ function windowsRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
|
|
|
1314
1350
|
`rem ${RUNTIME_WRAPPER_MARKER}`,
|
|
1315
1351
|
`if not defined CODEX_HOME set "CODEX_HOME=${codexHome}"`,
|
|
1316
1352
|
'if not defined OMO_SPARKSHELL_APP_SERVER_SOCKET set "OMO_SPARKSHELL_APP_SERVER_SOCKET=%CODEX_HOME%\\app-server-control\\app-server-control.sock"',
|
|
1353
|
+
...windowsNodeDiscoveryLines(),
|
|
1317
1354
|
`if "%~1"=="ulw-loop" if exist "${ulwLoopBin}" (`,
|
|
1318
1355
|
" shift /1",
|
|
1319
1356
|
` "${ulwLoopBin}" %*`,
|
|
1320
1357
|
" exit /b %ERRORLEVEL%",
|
|
1321
1358
|
")",
|
|
1322
|
-
`if "%OMO_RUNTIME%"=="node" if exist "${nodeCliPath}" (`,
|
|
1323
|
-
`
|
|
1359
|
+
`if "%OMO_RUNTIME%"=="node" if defined OMO_NODE_BINARY if exist "${nodeCliPath}" (`,
|
|
1360
|
+
` "%OMO_NODE_BINARY%" "${nodeCliPath}" %*`,
|
|
1324
1361
|
" exit /b %ERRORLEVEL%",
|
|
1325
1362
|
")",
|
|
1326
1363
|
'if not defined BUN_BINARY where bun >nul 2>nul && set "BUN_BINARY=bun"',
|
|
1327
1364
|
'if not defined BUN_BINARY if exist "%USERPROFILE%\\.bun\\bin\\bun.exe" set "BUN_BINARY=%USERPROFILE%\\.bun\\bin\\bun.exe"',
|
|
1328
1365
|
"if not defined BUN_BINARY (",
|
|
1329
|
-
` if exist "${nodeCliPath}" (`,
|
|
1330
|
-
`
|
|
1366
|
+
` if defined OMO_NODE_BINARY if exist "${nodeCliPath}" (`,
|
|
1367
|
+
` "%OMO_NODE_BINARY%" "${nodeCliPath}" %*`,
|
|
1331
1368
|
" exit /b %ERRORLEVEL%",
|
|
1332
1369
|
" )",
|
|
1333
|
-
` echo omo: bun runtime not found
|
|
1370
|
+
` echo omo: bun runtime not found, no Node runtime was discovered from NODE_REPL_NODE_PATH or PATH, or the node fallback CLI is missing at ${nodeCliPath}; install bun from https://bun.sh or rerun LazyCodex install from Codex Desktop 1>&2`,
|
|
1334
1371
|
" exit /b 127",
|
|
1335
1372
|
")",
|
|
1336
1373
|
`if not exist "${cliPath}" (`,
|
|
@@ -1473,10 +1510,7 @@ async function replaceSymlink(linkPath, targetPath) {
|
|
|
1473
1510
|
async function replaceCommandShim(linkPath, targetPath) {
|
|
1474
1511
|
if (await existingNonShim(linkPath))
|
|
1475
1512
|
throw new Error(`${linkPath} already exists and is not a command shim`);
|
|
1476
|
-
await writeFile4(linkPath,
|
|
1477
|
-
${COMMAND_SHIM_MARKER}\r
|
|
1478
|
-
node "${targetPath}" %*\r
|
|
1479
|
-
`);
|
|
1513
|
+
await writeFile4(linkPath, windowsCommandShim(targetPath));
|
|
1480
1514
|
}
|
|
1481
1515
|
async function replaceRuntimeWrapper(linkPath, content) {
|
|
1482
1516
|
if (await existingNonRuntimeWrapper(linkPath))
|
|
@@ -1546,7 +1580,7 @@ function findTomlSection(config, header) {
|
|
|
1546
1580
|
if (start === -1) {
|
|
1547
1581
|
if (tomlTableHeaderMatches(trimmed, headerLine, targetHeaderPath))
|
|
1548
1582
|
start = offset;
|
|
1549
|
-
} else if (
|
|
1583
|
+
} else if (isTomlTableHeaderLine(line)) {
|
|
1550
1584
|
return { start, end: offset, text: config.slice(start, offset) };
|
|
1551
1585
|
}
|
|
1552
1586
|
offset += line.length;
|
|
@@ -1556,12 +1590,12 @@ function findTomlSection(config, header) {
|
|
|
1556
1590
|
return { start, end: config.length, text: config.slice(start) };
|
|
1557
1591
|
}
|
|
1558
1592
|
function replaceOrInsertSetting(config, section, key, value) {
|
|
1559
|
-
const linePattern = new RegExp(
|
|
1593
|
+
const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*$`, "m");
|
|
1560
1594
|
const replacement = linePattern.test(section.text) ? section.text.replace(linePattern, `${key} = ${value}`) : insertSetting(section.text, key, value);
|
|
1561
1595
|
return config.slice(0, section.start) + replacement + config.slice(section.end);
|
|
1562
1596
|
}
|
|
1563
1597
|
function removeSetting(config, section, key) {
|
|
1564
|
-
const linePattern = new RegExp(
|
|
1598
|
+
const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*(?:\\n|$)`, "m");
|
|
1565
1599
|
const replacement = section.text.replace(linePattern, "");
|
|
1566
1600
|
return config.slice(0, section.start) + replacement + config.slice(section.end);
|
|
1567
1601
|
}
|
|
@@ -1569,7 +1603,7 @@ function replaceOrInsertRootSetting(config, key, value) {
|
|
|
1569
1603
|
const sectionStart = findFirstTableStart(config);
|
|
1570
1604
|
const root = config.slice(0, sectionStart);
|
|
1571
1605
|
const suffix = config.slice(sectionStart);
|
|
1572
|
-
const linePattern = new RegExp(
|
|
1606
|
+
const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*$`, "m");
|
|
1573
1607
|
const replacement = linePattern.test(root) ? root.replace(linePattern, `${key} = ${value}`) : `${root.trimEnd()}${root.trimEnd().length > 0 ? `
|
|
1574
1608
|
` : ""}${key} = ${value}
|
|
1575
1609
|
`;
|
|
@@ -1587,8 +1621,16 @@ function appendBlock(config, block) {
|
|
|
1587
1621
|
`;
|
|
1588
1622
|
}
|
|
1589
1623
|
function findFirstTableStart(config) {
|
|
1590
|
-
const
|
|
1591
|
-
|
|
1624
|
+
const lines = config.match(/[^\n]*\n?|$/g) ?? [];
|
|
1625
|
+
let offset = 0;
|
|
1626
|
+
for (const line of lines) {
|
|
1627
|
+
if (line.length === 0)
|
|
1628
|
+
break;
|
|
1629
|
+
if (isTomlTableHeaderLine(line))
|
|
1630
|
+
return offset;
|
|
1631
|
+
offset += line.length;
|
|
1632
|
+
}
|
|
1633
|
+
return config.length;
|
|
1592
1634
|
}
|
|
1593
1635
|
function insertSetting(sectionText, key, value) {
|
|
1594
1636
|
const lines = sectionText.split(`
|
|
@@ -1601,19 +1643,57 @@ function escapeRegExp(value) {
|
|
|
1601
1643
|
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1602
1644
|
}
|
|
1603
1645
|
function tomlTableHeaderMatches(line, headerLine, targetHeaderPath) {
|
|
1604
|
-
|
|
1646
|
+
const normalizedLine = stripUnquotedInlineComment(line).trim();
|
|
1647
|
+
if (normalizedLine === headerLine)
|
|
1605
1648
|
return true;
|
|
1606
1649
|
if (!targetHeaderPath)
|
|
1607
1650
|
return false;
|
|
1608
|
-
const candidateHeaderPath = parseTomlTableHeader(
|
|
1651
|
+
const candidateHeaderPath = parseTomlTableHeader(normalizedLine);
|
|
1609
1652
|
if (!candidateHeaderPath || candidateHeaderPath.length !== targetHeaderPath.length)
|
|
1610
1653
|
return false;
|
|
1611
1654
|
return candidateHeaderPath.every((part, index) => part === targetHeaderPath[index]);
|
|
1612
1655
|
}
|
|
1613
1656
|
function parseTomlTableHeader(line) {
|
|
1614
|
-
|
|
1657
|
+
const normalizedLine = stripUnquotedInlineComment(line).trim();
|
|
1658
|
+
if (!normalizedLine.startsWith("[") || !normalizedLine.endsWith("]") || normalizedLine.startsWith("[["))
|
|
1615
1659
|
return null;
|
|
1616
|
-
return parseTomlDottedKey(
|
|
1660
|
+
return parseTomlDottedKey(normalizedLine.slice(1, -1).trim());
|
|
1661
|
+
}
|
|
1662
|
+
function isTomlTableHeaderLine(line) {
|
|
1663
|
+
const normalizedLine = stripUnquotedInlineComment(line).trim();
|
|
1664
|
+
return normalizedLine.startsWith("[") && normalizedLine.endsWith("]");
|
|
1665
|
+
}
|
|
1666
|
+
function stripUnquotedInlineComment(line) {
|
|
1667
|
+
let quote = null;
|
|
1668
|
+
let index = 0;
|
|
1669
|
+
while (index < line.length) {
|
|
1670
|
+
const char = line[index];
|
|
1671
|
+
if (quote === '"') {
|
|
1672
|
+
if (char === "\\") {
|
|
1673
|
+
index += 2;
|
|
1674
|
+
continue;
|
|
1675
|
+
}
|
|
1676
|
+
if (char === '"')
|
|
1677
|
+
quote = null;
|
|
1678
|
+
index += 1;
|
|
1679
|
+
continue;
|
|
1680
|
+
}
|
|
1681
|
+
if (quote === "'") {
|
|
1682
|
+
if (char === "'")
|
|
1683
|
+
quote = null;
|
|
1684
|
+
index += 1;
|
|
1685
|
+
continue;
|
|
1686
|
+
}
|
|
1687
|
+
if (char === '"' || char === "'") {
|
|
1688
|
+
quote = char;
|
|
1689
|
+
index += 1;
|
|
1690
|
+
continue;
|
|
1691
|
+
}
|
|
1692
|
+
if (char === "#")
|
|
1693
|
+
return line.slice(0, index);
|
|
1694
|
+
index += 1;
|
|
1695
|
+
}
|
|
1696
|
+
return line;
|
|
1617
1697
|
}
|
|
1618
1698
|
function parseTomlDottedKey(input) {
|
|
1619
1699
|
const parts = [];
|
|
@@ -1724,7 +1804,7 @@ function skipWhitespace(input, startIndex) {
|
|
|
1724
1804
|
|
|
1725
1805
|
// ../src/install/codex-config-toml-sections.ts
|
|
1726
1806
|
function removeTomlSections(config, shouldRemove) {
|
|
1727
|
-
return splitTomlSections(config).filter((section) => section.header === null || !shouldRemove(section.header)).map((section) => section.text).join("").replace(/\n{3,}/g, `
|
|
1807
|
+
return splitTomlSections(config).filter((section) => section.header === null || !shouldRemove(section.header, section)).map((section) => section.text).join("").replace(/\n{3,}/g, `
|
|
1728
1808
|
|
|
1729
1809
|
`);
|
|
1730
1810
|
}
|
|
@@ -1763,11 +1843,43 @@ function parseHookStateHeaderKey(header) {
|
|
|
1763
1843
|
return path[2] ?? null;
|
|
1764
1844
|
}
|
|
1765
1845
|
function parseTomlHeader2(line) {
|
|
1766
|
-
const trimmed = line.trim();
|
|
1846
|
+
const trimmed = stripTomlLineComment(line).trim();
|
|
1767
1847
|
if (!trimmed.startsWith("[") || !trimmed.endsWith("]") || trimmed.startsWith("[["))
|
|
1768
1848
|
return null;
|
|
1769
1849
|
return trimmed.slice(1, -1);
|
|
1770
1850
|
}
|
|
1851
|
+
function stripTomlLineComment(line) {
|
|
1852
|
+
let quote = null;
|
|
1853
|
+
let index = 0;
|
|
1854
|
+
while (index < line.length) {
|
|
1855
|
+
const char = line[index];
|
|
1856
|
+
if (quote === '"') {
|
|
1857
|
+
if (char === "\\") {
|
|
1858
|
+
index += 2;
|
|
1859
|
+
continue;
|
|
1860
|
+
}
|
|
1861
|
+
if (char === '"')
|
|
1862
|
+
quote = null;
|
|
1863
|
+
index += 1;
|
|
1864
|
+
continue;
|
|
1865
|
+
}
|
|
1866
|
+
if (quote === "'") {
|
|
1867
|
+
if (char === "'")
|
|
1868
|
+
quote = null;
|
|
1869
|
+
index += 1;
|
|
1870
|
+
continue;
|
|
1871
|
+
}
|
|
1872
|
+
if (char === '"' || char === "'") {
|
|
1873
|
+
quote = char;
|
|
1874
|
+
index += 1;
|
|
1875
|
+
continue;
|
|
1876
|
+
}
|
|
1877
|
+
if (char === "#")
|
|
1878
|
+
return line.slice(0, index);
|
|
1879
|
+
index += 1;
|
|
1880
|
+
}
|
|
1881
|
+
return line;
|
|
1882
|
+
}
|
|
1771
1883
|
|
|
1772
1884
|
// ../src/install/codex-config-agents.ts
|
|
1773
1885
|
var LEGACY_MANAGED_CODEX_AGENT_NAMES_TO_PURGE = ["codex-ultrawork-reviewer"];
|
|
@@ -1991,7 +2103,8 @@ function ensureOmoBuiltinMcpPolicies(config, input) {
|
|
|
1991
2103
|
return config;
|
|
1992
2104
|
const codegraphEnabled = input.codegraphMcpEnabled ?? true;
|
|
1993
2105
|
const gitBashEnabled = (input.platform ?? process.platform) === "win32" && input.gitBashEnabled === true;
|
|
1994
|
-
let nextConfig =
|
|
2106
|
+
let nextConfig = removeStaleContext7PlaceholderMcp(config);
|
|
2107
|
+
nextConfig = ensurePluginMcpEnabled(nextConfig, "omo@sisyphuslabs", "context7", true);
|
|
1995
2108
|
nextConfig = ensurePluginMcpEnabled(nextConfig, "omo@sisyphuslabs", "codegraph", codegraphEnabled);
|
|
1996
2109
|
nextConfig = ensurePluginMcpEnabled(nextConfig, "omo@sisyphuslabs", "git_bash", gitBashEnabled);
|
|
1997
2110
|
return nextConfig;
|
|
@@ -2015,6 +2128,107 @@ enabled = ${enabledValue}
|
|
|
2015
2128
|
`);
|
|
2016
2129
|
return replaceOrInsertSetting(config, section, "enabled", enabledValue);
|
|
2017
2130
|
}
|
|
2131
|
+
function removeStaleContext7PlaceholderMcp(config) {
|
|
2132
|
+
return removeTomlSections(config, (header, section) => header === "mcp_servers.context7" && isContext7PlaceholderSection(section.text));
|
|
2133
|
+
}
|
|
2134
|
+
function isContext7PlaceholderSection(sectionText) {
|
|
2135
|
+
const args = readStringArraySetting(sectionText, "args");
|
|
2136
|
+
if (args === null || !args.includes("@upstash/context7-mcp"))
|
|
2137
|
+
return false;
|
|
2138
|
+
const apiKey = valueAfter(args, "--api-key");
|
|
2139
|
+
return apiKey !== null && isPlaceholderApiKey(apiKey);
|
|
2140
|
+
}
|
|
2141
|
+
function valueAfter(values, key) {
|
|
2142
|
+
const index = values.indexOf(key);
|
|
2143
|
+
return index >= 0 ? values[index + 1] ?? null : null;
|
|
2144
|
+
}
|
|
2145
|
+
function isPlaceholderApiKey(value) {
|
|
2146
|
+
return /^your[-_ ]?api[-_ ]?key$/i.test(value);
|
|
2147
|
+
}
|
|
2148
|
+
function readStringArraySetting(sectionText, key) {
|
|
2149
|
+
for (const line of sectionText.split(`
|
|
2150
|
+
`)) {
|
|
2151
|
+
if (!new RegExp(`^\\s*${key}\\s*=`).test(line))
|
|
2152
|
+
continue;
|
|
2153
|
+
const assignmentIndex = line.indexOf("=");
|
|
2154
|
+
if (assignmentIndex === -1)
|
|
2155
|
+
return null;
|
|
2156
|
+
return parseTomlStringArray(stripUnquotedInlineComment2(line.slice(assignmentIndex + 1)).trim());
|
|
2157
|
+
}
|
|
2158
|
+
return null;
|
|
2159
|
+
}
|
|
2160
|
+
function parseTomlStringArray(value) {
|
|
2161
|
+
if (!value.startsWith("[") || !value.endsWith("]"))
|
|
2162
|
+
return null;
|
|
2163
|
+
const items = [];
|
|
2164
|
+
let index = 1;
|
|
2165
|
+
while (index < value.length - 1) {
|
|
2166
|
+
const char = value[index];
|
|
2167
|
+
if (char === '"' || char === "'") {
|
|
2168
|
+
const parsed = parseTomlString(value, index);
|
|
2169
|
+
if (parsed === null)
|
|
2170
|
+
return null;
|
|
2171
|
+
items.push(parsed.value);
|
|
2172
|
+
index = parsed.nextIndex;
|
|
2173
|
+
continue;
|
|
2174
|
+
}
|
|
2175
|
+
index += 1;
|
|
2176
|
+
}
|
|
2177
|
+
return items;
|
|
2178
|
+
}
|
|
2179
|
+
function parseTomlString(input, startIndex) {
|
|
2180
|
+
const quote = input[startIndex];
|
|
2181
|
+
let value = "";
|
|
2182
|
+
let index = startIndex + 1;
|
|
2183
|
+
while (index < input.length) {
|
|
2184
|
+
const char = input[index];
|
|
2185
|
+
if (quote === '"' && char === "\\") {
|
|
2186
|
+
const next = input[index + 1];
|
|
2187
|
+
if (next === undefined)
|
|
2188
|
+
return null;
|
|
2189
|
+
value += next;
|
|
2190
|
+
index += 2;
|
|
2191
|
+
continue;
|
|
2192
|
+
}
|
|
2193
|
+
if (char === quote)
|
|
2194
|
+
return { value, nextIndex: index + 1 };
|
|
2195
|
+
value += char;
|
|
2196
|
+
index += 1;
|
|
2197
|
+
}
|
|
2198
|
+
return null;
|
|
2199
|
+
}
|
|
2200
|
+
function stripUnquotedInlineComment2(line) {
|
|
2201
|
+
let quote = null;
|
|
2202
|
+
let index = 0;
|
|
2203
|
+
while (index < line.length) {
|
|
2204
|
+
const char = line[index];
|
|
2205
|
+
if (quote === '"') {
|
|
2206
|
+
if (char === "\\") {
|
|
2207
|
+
index += 2;
|
|
2208
|
+
continue;
|
|
2209
|
+
}
|
|
2210
|
+
if (char === '"')
|
|
2211
|
+
quote = null;
|
|
2212
|
+
index += 1;
|
|
2213
|
+
continue;
|
|
2214
|
+
}
|
|
2215
|
+
if (quote === "'") {
|
|
2216
|
+
if (char === "'")
|
|
2217
|
+
quote = null;
|
|
2218
|
+
index += 1;
|
|
2219
|
+
continue;
|
|
2220
|
+
}
|
|
2221
|
+
if (char === '"' || char === "'") {
|
|
2222
|
+
quote = char;
|
|
2223
|
+
index += 1;
|
|
2224
|
+
continue;
|
|
2225
|
+
}
|
|
2226
|
+
if (char === "#")
|
|
2227
|
+
return line.slice(0, index);
|
|
2228
|
+
index += 1;
|
|
2229
|
+
}
|
|
2230
|
+
return line;
|
|
2231
|
+
}
|
|
2018
2232
|
|
|
2019
2233
|
// ../src/install/codex-config-reasoning.ts
|
|
2020
2234
|
var MANAGED_KEYS = ["model", "model_context_window", "model_reasoning_effort", "plan_mode_reasoning_effort"];
|
|
@@ -2155,31 +2369,87 @@ function parseProfileMatch(match) {
|
|
|
2155
2369
|
return profile;
|
|
2156
2370
|
}
|
|
2157
2371
|
|
|
2372
|
+
// ../src/install/codex-multi-agent-mode-config.ts
|
|
2373
|
+
var CODEX_MULTI_AGENT_MODE_KEY = "multi_agent_mode";
|
|
2374
|
+
function removeUnsupportedCodexMultiAgentModeConfig(config) {
|
|
2375
|
+
const lines = config.split(/\n/);
|
|
2376
|
+
const output = [];
|
|
2377
|
+
let inRoot = true;
|
|
2378
|
+
let changed = false;
|
|
2379
|
+
for (const line of lines) {
|
|
2380
|
+
const sectionHeader = isSectionHeader3(line);
|
|
2381
|
+
if (inRoot && isRootSetting2(line, CODEX_MULTI_AGENT_MODE_KEY)) {
|
|
2382
|
+
changed = true;
|
|
2383
|
+
continue;
|
|
2384
|
+
}
|
|
2385
|
+
output.push(line);
|
|
2386
|
+
if (sectionHeader)
|
|
2387
|
+
inRoot = false;
|
|
2388
|
+
}
|
|
2389
|
+
return changed ? output.join(`
|
|
2390
|
+
`) : config;
|
|
2391
|
+
}
|
|
2392
|
+
function isSectionHeader3(line) {
|
|
2393
|
+
return isTomlTableHeaderLine(line);
|
|
2394
|
+
}
|
|
2395
|
+
function isRootSetting2(line, key) {
|
|
2396
|
+
const trimmed = line.trimStart();
|
|
2397
|
+
if (trimmed.startsWith("#") || trimmed.startsWith("["))
|
|
2398
|
+
return false;
|
|
2399
|
+
const match = trimmed.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*=/);
|
|
2400
|
+
return match?.[1] === key;
|
|
2401
|
+
}
|
|
2402
|
+
|
|
2158
2403
|
// ../src/install/codex-multi-agent-v2-config.ts
|
|
2404
|
+
var CODEX_AGENTS_HEADER = "agents";
|
|
2159
2405
|
var CODEX_MULTI_AGENT_V2_HEADER = "features.multi_agent_v2";
|
|
2160
|
-
var
|
|
2406
|
+
var CODEX_SUBAGENT_THREAD_LIMIT = 1000;
|
|
2161
2407
|
function ensureCodexMultiAgentV2Config(config) {
|
|
2162
|
-
const
|
|
2163
|
-
const
|
|
2164
|
-
const
|
|
2408
|
+
const featureFlag = removeFeatureFlagSetting(config, "multi_agent_v2");
|
|
2409
|
+
const agentsConfig = ensureAgentsMaxThreads(featureFlag.config);
|
|
2410
|
+
const section = findTomlSection(agentsConfig, CODEX_MULTI_AGENT_V2_HEADER);
|
|
2411
|
+
const maxThreadsValue = CODEX_SUBAGENT_THREAD_LIMIT.toString();
|
|
2165
2412
|
if (!section) {
|
|
2166
|
-
|
|
2413
|
+
const enabledSetting = featureFlag.value === false ? `enabled = false
|
|
2414
|
+
` : "";
|
|
2415
|
+
return appendBlock(agentsConfig, `[${CODEX_MULTI_AGENT_V2_HEADER}]
|
|
2416
|
+
${enabledSetting}max_concurrent_threads_per_session = ${maxThreadsValue}
|
|
2417
|
+
`);
|
|
2418
|
+
}
|
|
2419
|
+
const withPreservedDisable = featureFlag.value === false ? replaceOrInsertSetting(agentsConfig, section, "enabled", "false") : agentsConfig;
|
|
2420
|
+
const updatedSection = featureFlag.value === false ? findTomlSection(withPreservedDisable, CODEX_MULTI_AGENT_V2_HEADER) : section;
|
|
2421
|
+
if (!updatedSection) {
|
|
2422
|
+
return appendBlock(withPreservedDisable, `[${CODEX_MULTI_AGENT_V2_HEADER}]
|
|
2423
|
+
enabled = false
|
|
2167
2424
|
max_concurrent_threads_per_session = ${maxThreadsValue}
|
|
2168
2425
|
`);
|
|
2169
2426
|
}
|
|
2170
|
-
return replaceOrInsertSetting(
|
|
2427
|
+
return replaceOrInsertSetting(withPreservedDisable, updatedSection, "max_concurrent_threads_per_session", maxThreadsValue);
|
|
2171
2428
|
}
|
|
2172
2429
|
function removeFeatureFlagSetting(config, featureName) {
|
|
2173
2430
|
const section = findTomlSection(config, "features");
|
|
2174
2431
|
if (!section)
|
|
2175
|
-
return config;
|
|
2176
|
-
return
|
|
2432
|
+
return { config, value: null };
|
|
2433
|
+
return {
|
|
2434
|
+
config: removeSetting(config, section, featureName),
|
|
2435
|
+
value: readBooleanSetting(section.text, featureName)
|
|
2436
|
+
};
|
|
2177
2437
|
}
|
|
2178
|
-
function
|
|
2179
|
-
const
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2438
|
+
function ensureAgentsMaxThreads(config) {
|
|
2439
|
+
const maxThreadsValue = CODEX_SUBAGENT_THREAD_LIMIT.toString();
|
|
2440
|
+
const section = findTomlSection(config, CODEX_AGENTS_HEADER);
|
|
2441
|
+
if (!section) {
|
|
2442
|
+
return appendBlock(config, `[${CODEX_AGENTS_HEADER}]
|
|
2443
|
+
max_threads = ${maxThreadsValue}
|
|
2444
|
+
`);
|
|
2445
|
+
}
|
|
2446
|
+
return replaceOrInsertSetting(config, section, "max_threads", maxThreadsValue);
|
|
2447
|
+
}
|
|
2448
|
+
function readBooleanSetting(sectionText, key) {
|
|
2449
|
+
const match = new RegExp(`^\\s*${escapeRegExp(key)}\\s*=\\s*(true|false)\\s*(?:#.*)?$`, "m").exec(sectionText);
|
|
2450
|
+
if (!match)
|
|
2451
|
+
return null;
|
|
2452
|
+
return match[1] === "true";
|
|
2183
2453
|
}
|
|
2184
2454
|
|
|
2185
2455
|
// ../src/install/codex-config-toml.ts
|
|
@@ -2201,6 +2471,7 @@ async function updateCodexConfig(input) {
|
|
|
2201
2471
|
config = ensureFeatureEnabled(config, "plugin_hooks");
|
|
2202
2472
|
config = ensureFeatureEnabled(config, "multi_agent");
|
|
2203
2473
|
config = ensureFeatureEnabled(config, "child_agents_md");
|
|
2474
|
+
config = removeUnsupportedCodexMultiAgentModeConfig(config);
|
|
2204
2475
|
config = ensureCodexReasoningConfig(config, await readCodexModelCatalog(input.repoRoot));
|
|
2205
2476
|
config = ensureCodexMultiAgentV2Config(config);
|
|
2206
2477
|
if (input.autonomousPermissions === true)
|
|
@@ -2308,7 +2579,8 @@ async function trustedHookStatesForPlugin(input) {
|
|
|
2308
2579
|
continue;
|
|
2309
2580
|
states.push(...trustedHookStatesForHooksFile({
|
|
2310
2581
|
keySource: `${input.pluginName}@${input.marketplaceName}:${hookPath}`,
|
|
2311
|
-
hooks: parsed.hooks
|
|
2582
|
+
hooks: parsed.hooks,
|
|
2583
|
+
platform: input.platform ?? process.platform
|
|
2312
2584
|
}));
|
|
2313
2585
|
}
|
|
2314
2586
|
return states;
|
|
@@ -2336,20 +2608,28 @@ function trustedHookStatesForHooksFile(input) {
|
|
|
2336
2608
|
continue;
|
|
2337
2609
|
if (handler.async === true)
|
|
2338
2610
|
continue;
|
|
2339
|
-
|
|
2611
|
+
const command = commandForPlatform(handler, input.platform);
|
|
2612
|
+
if (command === undefined || command.trim() === "")
|
|
2340
2613
|
continue;
|
|
2341
2614
|
const key = `${input.keySource}:${eventLabel}:${groupIndex}:${handlerIndex}`;
|
|
2342
|
-
states.push({ key, trustedHash: commandHookHash(eventLabel, group.matcher, handler) });
|
|
2615
|
+
states.push({ key, trustedHash: commandHookHash(eventLabel, group.matcher, handler, command) });
|
|
2343
2616
|
}
|
|
2344
2617
|
}
|
|
2345
2618
|
}
|
|
2346
2619
|
return states;
|
|
2347
2620
|
}
|
|
2348
|
-
function
|
|
2621
|
+
function commandForPlatform(handler, platform) {
|
|
2622
|
+
if (typeof handler.command !== "string")
|
|
2623
|
+
return;
|
|
2624
|
+
if (platform === "win32" && typeof handler.commandWindows === "string")
|
|
2625
|
+
return handler.commandWindows;
|
|
2626
|
+
return handler.command;
|
|
2627
|
+
}
|
|
2628
|
+
function commandHookHash(eventName, matcher, handler, command) {
|
|
2349
2629
|
const timeout = Math.max(Number(handler.timeout ?? 600), 1);
|
|
2350
2630
|
const normalizedHandler = {
|
|
2351
2631
|
type: "command",
|
|
2352
|
-
command
|
|
2632
|
+
command,
|
|
2353
2633
|
timeout,
|
|
2354
2634
|
async: false
|
|
2355
2635
|
};
|
|
@@ -2404,7 +2684,6 @@ function resolveCodexInstallerBinDir(input) {
|
|
|
2404
2684
|
import { execFileSync as execFileSync2 } from "node:child_process";
|
|
2405
2685
|
import { existsSync as existsSync2 } from "node:fs";
|
|
2406
2686
|
var GIT_BASH_ENV_KEY2 = "OMO_CODEX_GIT_BASH_PATH";
|
|
2407
|
-
var WINGET_INSTALL_ARGS = ["install", "--id", "Git.Git", "-e", "--source", "winget"];
|
|
2408
2687
|
var PROGRAM_FILES_GIT_BASH = "C:\\Program Files\\Git\\bin\\bash.exe";
|
|
2409
2688
|
var PROGRAM_FILES_X86_GIT_BASH = "C:\\Program Files (x86)\\Git\\bin\\bash.exe";
|
|
2410
2689
|
var NON_GIT_BASH_LAUNCHER_DIR_SEGMENTS = ["\\windows\\system32\\", "\\microsoft\\windowsapps\\"];
|
|
@@ -2484,25 +2763,13 @@ function whereCommand(command) {
|
|
|
2484
2763
|
}
|
|
2485
2764
|
}
|
|
2486
2765
|
// ../src/install/git-bash.ts
|
|
2487
|
-
var SKIP_GIT_BASH_AUTO_INSTALL_ENV_KEY = "OMO_CODEX_SKIP_GIT_BASH_AUTO_INSTALL";
|
|
2488
2766
|
var resolveGitBashForCurrentProcess2 = (input = {}) => {
|
|
2489
2767
|
return toCodexResolution(resolveGitBashForCurrentProcess(input));
|
|
2490
2768
|
};
|
|
2491
2769
|
async function prepareGitBashForInstall(input) {
|
|
2492
2770
|
const resolve6 = input.resolveGitBash ?? (() => resolveGitBashForCurrentProcess2({ platform: input.platform, env: input.env }));
|
|
2493
2771
|
const initialResolution = resolve6();
|
|
2494
|
-
|
|
2495
|
-
return initialResolution;
|
|
2496
|
-
if (input.env[SKIP_GIT_BASH_AUTO_INSTALL_ENV_KEY] === "1")
|
|
2497
|
-
return initialResolution;
|
|
2498
|
-
try {
|
|
2499
|
-
await input.runCommand("winget", WINGET_INSTALL_ARGS, { cwd: input.cwd });
|
|
2500
|
-
} catch (error) {
|
|
2501
|
-
if (!(error instanceof Error))
|
|
2502
|
-
throw error;
|
|
2503
|
-
return initialResolution;
|
|
2504
|
-
}
|
|
2505
|
-
return resolve6();
|
|
2772
|
+
return initialResolution;
|
|
2506
2773
|
}
|
|
2507
2774
|
function toCodexResolution(resolution) {
|
|
2508
2775
|
if (resolution.found) {
|
|
@@ -2543,10 +2810,8 @@ async function resolveGitBashStep(options, degraded) {
|
|
|
2543
2810
|
return false;
|
|
2544
2811
|
try {
|
|
2545
2812
|
const resolution = await prepareGitBashForInstall({
|
|
2546
|
-
cwd: options.pluginRoot,
|
|
2547
2813
|
env: options.env,
|
|
2548
2814
|
platform: options.platform,
|
|
2549
|
-
runCommand: options.runCommand ?? defaultRunCommand,
|
|
2550
2815
|
...options.resolveGitBash === undefined ? {} : { resolveGitBash: options.resolveGitBash }
|
|
2551
2816
|
});
|
|
2552
2817
|
if (resolution.found)
|
|
@@ -2703,10 +2968,6 @@ async function stampGitBashEnvStep(options, degraded) {
|
|
|
2703
2968
|
});
|
|
2704
2969
|
}
|
|
2705
2970
|
}
|
|
2706
|
-
var execFileAsync2 = promisify2(execFile2);
|
|
2707
|
-
async function defaultRunCommand(command, args, options) {
|
|
2708
|
-
return execFileAsync2(command, [...args], { cwd: options.cwd });
|
|
2709
|
-
}
|
|
2710
2971
|
async function directoryNames(root) {
|
|
2711
2972
|
return entryNames(root, (entry) => entry.isDirectory());
|
|
2712
2973
|
}
|