oh-my-opencode 4.13.0 → 4.14.1
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/isolation.md +1 -1
- 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 +3 -3
- 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/doctor/framework/types.d.ts +2 -0
- package/dist/cli/index.js +24779 -17857
- package/dist/cli-node/index.js +24779 -17857
- 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 +43845 -26631
- package/dist/mcp/context7.d.ts +9 -8
- package/dist/oh-my-opencode.schema.json +4 -0
- package/dist/plugin/native-skills.d.ts +9 -0
- package/dist/plugin/system-transform.d.ts +1 -1
- 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/lcx-contribute-bug-fix/SKILL.md +44 -13
- package/dist/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
- package/dist/skills/lcx-doctor/SKILL.md +48 -13
- package/dist/skills/lcx-doctor/agents/openai.yaml +1 -1
- package/dist/skills/lcx-report-bug/SKILL.md +44 -13
- package/dist/skills/lcx-report-bug/agents/openai.yaml +1 -1
- 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/{packages/shared-skills/skills/ultraresearch → dist/skills/ulw-research}/ATTRIBUTION.md +1 -1
- package/dist/skills/ulw-research/SKILL.md +260 -0
- package/dist/skills/visual-qa/SKILL.md +109 -18
- package/dist/skills/visual-qa/references/agent-browser-setup.md +5 -4
- package/dist/skills/visual-qa/scripts/cli.test.ts +7 -2
- package/dist/skills/visual-qa/scripts/skill-prompt-contract.test.ts +130 -3
- package/dist/skills/visual-qa/scripts/visual-qa.mjs +530 -0
- package/dist/testing/create-plugin-module.d.ts +2 -0
- package/dist/tools/delegate-task/skill-resolver.d.ts +1 -0
- package/dist/tools/delegate-task/types.d.ts +2 -0
- package/dist/tools/skill/types.d.ts +1 -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 +33 -14
- package/packages/git-bash-mcp/dist/cli.js +2 -0
- 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 +20 -5
- package/packages/lsp-daemon/dist/ensure-daemon.d.ts +1 -0
- package/packages/lsp-daemon/dist/ensure-daemon.js +9 -3
- package/packages/lsp-daemon/dist/index.js +20 -5
- package/packages/lsp-daemon/dist/paths.d.ts +1 -0
- package/packages/lsp-daemon/dist/paths.js +6 -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 +327 -69
- 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 +3 -19
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +688 -334
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +317 -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 +231 -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 +287 -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 +94 -26
- package/packages/omo-codex/plugin/components/lsp/dist/codex-hook.js +2 -0
- package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.d.ts +2 -0
- package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +56 -0
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/src/cli.ts +2 -5
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +2 -0
- package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +65 -0
- package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +6 -1
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +8 -106
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -17
- 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 +57 -7
- 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-state.mjs +63 -1
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team.mjs +87 -53
- 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 +18 -10
- 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 +7 -28
- 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 +373 -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 +5 -2
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +22 -14
- 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/fixtures/sample-quality-gate.json +7 -7
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +39 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-doc.test.ts +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +7 -6
- 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 +16 -56
- 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/lcx-contribute-bug-fix/SKILL.md +44 -13
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +48 -13
- package/packages/omo-codex/plugin/skills/lcx-doctor/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +44 -13
- package/packages/omo-codex/plugin/skills/lcx-report-bug/agents/openai.yaml +1 -1
- 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 +57 -7
- package/packages/omo-codex/plugin/skills/teammode/scripts/team-guide.mjs +32 -5
- package/packages/omo-codex/plugin/skills/teammode/scripts/team-state.mjs +63 -1
- package/packages/omo-codex/plugin/skills/teammode/scripts/team.mjs +87 -53
- package/packages/omo-codex/plugin/skills/ultraresearch/SKILL.md +4 -250
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +22 -14
- 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/{dist/skills/ultraresearch → packages/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 +113 -18
- package/packages/omo-codex/plugin/skills/visual-qa/references/agent-browser-setup.md +5 -4
- package/packages/omo-codex/plugin/skills/visual-qa/scripts/visual-qa.mjs +530 -0
- 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 +61 -7
- 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/component-bin-names.test.mjs +12 -11
- package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +99 -1
- package/packages/omo-codex/plugin/test/lcx-bug-skills.test.mjs +62 -8
- package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +206 -6
- package/packages/omo-codex/plugin/test/node-install-surface.test.mjs +1 -0
- 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-archive-ambiguity.test.mjs +102 -0
- package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +20 -0
- package/packages/omo-codex/plugin/test/teammode-safety-fixture.mjs +41 -1
- package/packages/omo-codex/plugin/test/teammode-safety.test.mjs +93 -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 +12 -1
- package/packages/omo-codex/scripts/install-cache-copy.test.mjs +79 -0
- package/packages/omo-codex/scripts/install-config-autonomous-features.test.mjs +43 -3
- package/packages/omo-codex/scripts/install-config.test.mjs +198 -17
- package/packages/omo-codex/scripts/install-delegated-command.test.mjs +93 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +803 -309
- package/packages/omo-codex/scripts/install-local-entrypoint.test.mjs +21 -2
- package/packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs +24 -15
- package/packages/omo-codex/scripts/install-local.test.mjs +5 -2
- 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/lcx-contribute-bug-fix/SKILL.md +44 -13
- package/packages/shared-skills/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
- package/packages/shared-skills/skills/lcx-doctor/SKILL.md +48 -13
- package/packages/shared-skills/skills/lcx-doctor/agents/openai.yaml +1 -1
- package/packages/shared-skills/skills/lcx-report-bug/SKILL.md +44 -13
- package/packages/shared-skills/skills/lcx-report-bug/agents/openai.yaml +1 -1
- 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 +109 -18
- package/packages/shared-skills/skills/visual-qa/references/agent-browser-setup.md +5 -4
- package/packages/shared-skills/skills/visual-qa/scripts/cli.test.ts +7 -2
- package/packages/shared-skills/skills/visual-qa/scripts/skill-prompt-contract.test.ts +130 -3
- package/packages/shared-skills/skills/visual-qa/scripts/visual-qa.mjs +530 -0
- 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/dist/cli/sparkshell-appserver-websocket.d.ts +0 -4
- package/dist/cli/sparkshell-appserver.d.ts +0 -16
- package/dist/cli/sparkshell-condense.d.ts +0 -10
- package/dist/cli/sparkshell-parse.d.ts +0 -24
- package/dist/cli/sparkshell-session-context.d.ts +0 -20
- package/dist/cli/sparkshell-spark.d.ts +0 -23
- package/dist/cli/sparkshell.d.ts +0 -33
- package/dist/shared/sparkshell-awareness.d.ts +0 -5
- package/packages/omo-codex/plugin/components/rules/src/sparkshell-awareness.ts +0 -106
- package/packages/omo-codex/plugin/components/rules/test/sparkshell-awareness.test.ts +0 -346
- 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";
|
|
@@ -1271,10 +1307,9 @@ function posixRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
|
|
|
1271
1307
|
"#!/bin/sh",
|
|
1272
1308
|
`# ${RUNTIME_WRAPPER_MARKER}`,
|
|
1273
1309
|
`export CODEX_HOME="\${CODEX_HOME:-${escapedCodexHome}}"`,
|
|
1274
|
-
'export OMO_SPARKSHELL_APP_SERVER_SOCKET="${OMO_SPARKSHELL_APP_SERVER_SOCKET:-$CODEX_HOME/app-server-control/app-server-control.sock}"',
|
|
1275
1310
|
'if [ "$1" = "ulw-loop" ] && [ -x "' + escapedUlwLoopBin + '" ]; then',
|
|
1276
1311
|
" shift",
|
|
1277
|
-
' exec "' + escapedUlwLoopBin + '" "$@"',
|
|
1312
|
+
' exec "' + escapedUlwLoopBin + '" ulw-loop "$@"',
|
|
1278
1313
|
"fi",
|
|
1279
1314
|
`if [ "\${OMO_RUNTIME:-}" = "node" ] && [ -f "${nodeCli}" ]; then`,
|
|
1280
1315
|
` exec node "${nodeCli}" "$@"`,
|
|
@@ -1313,24 +1348,24 @@ function windowsRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
|
|
|
1313
1348
|
"@echo off",
|
|
1314
1349
|
`rem ${RUNTIME_WRAPPER_MARKER}`,
|
|
1315
1350
|
`if not defined CODEX_HOME set "CODEX_HOME=${codexHome}"`,
|
|
1316
|
-
|
|
1351
|
+
...windowsNodeDiscoveryLines(),
|
|
1317
1352
|
`if "%~1"=="ulw-loop" if exist "${ulwLoopBin}" (`,
|
|
1318
1353
|
" shift /1",
|
|
1319
|
-
` "${ulwLoopBin}" %*`,
|
|
1354
|
+
` "${ulwLoopBin}" ulw-loop %*`,
|
|
1320
1355
|
" exit /b %ERRORLEVEL%",
|
|
1321
1356
|
")",
|
|
1322
|
-
`if "%OMO_RUNTIME%"=="node" if exist "${nodeCliPath}" (`,
|
|
1323
|
-
`
|
|
1357
|
+
`if "%OMO_RUNTIME%"=="node" if defined OMO_NODE_BINARY if exist "${nodeCliPath}" (`,
|
|
1358
|
+
` "%OMO_NODE_BINARY%" "${nodeCliPath}" %*`,
|
|
1324
1359
|
" exit /b %ERRORLEVEL%",
|
|
1325
1360
|
")",
|
|
1326
1361
|
'if not defined BUN_BINARY where bun >nul 2>nul && set "BUN_BINARY=bun"',
|
|
1327
1362
|
'if not defined BUN_BINARY if exist "%USERPROFILE%\\.bun\\bin\\bun.exe" set "BUN_BINARY=%USERPROFILE%\\.bun\\bin\\bun.exe"',
|
|
1328
1363
|
"if not defined BUN_BINARY (",
|
|
1329
|
-
` if exist "${nodeCliPath}" (`,
|
|
1330
|
-
`
|
|
1364
|
+
` if defined OMO_NODE_BINARY if exist "${nodeCliPath}" (`,
|
|
1365
|
+
` "%OMO_NODE_BINARY%" "${nodeCliPath}" %*`,
|
|
1331
1366
|
" exit /b %ERRORLEVEL%",
|
|
1332
1367
|
" )",
|
|
1333
|
-
` echo omo: bun runtime not found
|
|
1368
|
+
` 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
1369
|
" exit /b 127",
|
|
1335
1370
|
")",
|
|
1336
1371
|
`if not exist "${cliPath}" (`,
|
|
@@ -1473,10 +1508,7 @@ async function replaceSymlink(linkPath, targetPath) {
|
|
|
1473
1508
|
async function replaceCommandShim(linkPath, targetPath) {
|
|
1474
1509
|
if (await existingNonShim(linkPath))
|
|
1475
1510
|
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
|
-
`);
|
|
1511
|
+
await writeFile4(linkPath, windowsCommandShim(targetPath));
|
|
1480
1512
|
}
|
|
1481
1513
|
async function replaceRuntimeWrapper(linkPath, content) {
|
|
1482
1514
|
if (await existingNonRuntimeWrapper(linkPath))
|
|
@@ -1546,7 +1578,7 @@ function findTomlSection(config, header) {
|
|
|
1546
1578
|
if (start === -1) {
|
|
1547
1579
|
if (tomlTableHeaderMatches(trimmed, headerLine, targetHeaderPath))
|
|
1548
1580
|
start = offset;
|
|
1549
|
-
} else if (
|
|
1581
|
+
} else if (isTomlTableHeaderLine(line)) {
|
|
1550
1582
|
return { start, end: offset, text: config.slice(start, offset) };
|
|
1551
1583
|
}
|
|
1552
1584
|
offset += line.length;
|
|
@@ -1556,12 +1588,12 @@ function findTomlSection(config, header) {
|
|
|
1556
1588
|
return { start, end: config.length, text: config.slice(start) };
|
|
1557
1589
|
}
|
|
1558
1590
|
function replaceOrInsertSetting(config, section, key, value) {
|
|
1559
|
-
const linePattern = new RegExp(
|
|
1591
|
+
const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*$`, "m");
|
|
1560
1592
|
const replacement = linePattern.test(section.text) ? section.text.replace(linePattern, `${key} = ${value}`) : insertSetting(section.text, key, value);
|
|
1561
1593
|
return config.slice(0, section.start) + replacement + config.slice(section.end);
|
|
1562
1594
|
}
|
|
1563
1595
|
function removeSetting(config, section, key) {
|
|
1564
|
-
const linePattern = new RegExp(
|
|
1596
|
+
const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*(?:\\n|$)`, "m");
|
|
1565
1597
|
const replacement = section.text.replace(linePattern, "");
|
|
1566
1598
|
return config.slice(0, section.start) + replacement + config.slice(section.end);
|
|
1567
1599
|
}
|
|
@@ -1569,7 +1601,7 @@ function replaceOrInsertRootSetting(config, key, value) {
|
|
|
1569
1601
|
const sectionStart = findFirstTableStart(config);
|
|
1570
1602
|
const root = config.slice(0, sectionStart);
|
|
1571
1603
|
const suffix = config.slice(sectionStart);
|
|
1572
|
-
const linePattern = new RegExp(
|
|
1604
|
+
const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*$`, "m");
|
|
1573
1605
|
const replacement = linePattern.test(root) ? root.replace(linePattern, `${key} = ${value}`) : `${root.trimEnd()}${root.trimEnd().length > 0 ? `
|
|
1574
1606
|
` : ""}${key} = ${value}
|
|
1575
1607
|
`;
|
|
@@ -1587,8 +1619,16 @@ function appendBlock(config, block) {
|
|
|
1587
1619
|
`;
|
|
1588
1620
|
}
|
|
1589
1621
|
function findFirstTableStart(config) {
|
|
1590
|
-
const
|
|
1591
|
-
|
|
1622
|
+
const lines = config.match(/[^\n]*\n?|$/g) ?? [];
|
|
1623
|
+
let offset = 0;
|
|
1624
|
+
for (const line of lines) {
|
|
1625
|
+
if (line.length === 0)
|
|
1626
|
+
break;
|
|
1627
|
+
if (isTomlTableHeaderLine(line))
|
|
1628
|
+
return offset;
|
|
1629
|
+
offset += line.length;
|
|
1630
|
+
}
|
|
1631
|
+
return config.length;
|
|
1592
1632
|
}
|
|
1593
1633
|
function insertSetting(sectionText, key, value) {
|
|
1594
1634
|
const lines = sectionText.split(`
|
|
@@ -1601,19 +1641,57 @@ function escapeRegExp(value) {
|
|
|
1601
1641
|
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1602
1642
|
}
|
|
1603
1643
|
function tomlTableHeaderMatches(line, headerLine, targetHeaderPath) {
|
|
1604
|
-
|
|
1644
|
+
const normalizedLine = stripUnquotedInlineComment(line).trim();
|
|
1645
|
+
if (normalizedLine === headerLine)
|
|
1605
1646
|
return true;
|
|
1606
1647
|
if (!targetHeaderPath)
|
|
1607
1648
|
return false;
|
|
1608
|
-
const candidateHeaderPath = parseTomlTableHeader(
|
|
1649
|
+
const candidateHeaderPath = parseTomlTableHeader(normalizedLine);
|
|
1609
1650
|
if (!candidateHeaderPath || candidateHeaderPath.length !== targetHeaderPath.length)
|
|
1610
1651
|
return false;
|
|
1611
1652
|
return candidateHeaderPath.every((part, index) => part === targetHeaderPath[index]);
|
|
1612
1653
|
}
|
|
1613
1654
|
function parseTomlTableHeader(line) {
|
|
1614
|
-
|
|
1655
|
+
const normalizedLine = stripUnquotedInlineComment(line).trim();
|
|
1656
|
+
if (!normalizedLine.startsWith("[") || !normalizedLine.endsWith("]") || normalizedLine.startsWith("[["))
|
|
1615
1657
|
return null;
|
|
1616
|
-
return parseTomlDottedKey(
|
|
1658
|
+
return parseTomlDottedKey(normalizedLine.slice(1, -1).trim());
|
|
1659
|
+
}
|
|
1660
|
+
function isTomlTableHeaderLine(line) {
|
|
1661
|
+
const normalizedLine = stripUnquotedInlineComment(line).trim();
|
|
1662
|
+
return normalizedLine.startsWith("[") && normalizedLine.endsWith("]");
|
|
1663
|
+
}
|
|
1664
|
+
function stripUnquotedInlineComment(line) {
|
|
1665
|
+
let quote = null;
|
|
1666
|
+
let index = 0;
|
|
1667
|
+
while (index < line.length) {
|
|
1668
|
+
const char = line[index];
|
|
1669
|
+
if (quote === '"') {
|
|
1670
|
+
if (char === "\\") {
|
|
1671
|
+
index += 2;
|
|
1672
|
+
continue;
|
|
1673
|
+
}
|
|
1674
|
+
if (char === '"')
|
|
1675
|
+
quote = null;
|
|
1676
|
+
index += 1;
|
|
1677
|
+
continue;
|
|
1678
|
+
}
|
|
1679
|
+
if (quote === "'") {
|
|
1680
|
+
if (char === "'")
|
|
1681
|
+
quote = null;
|
|
1682
|
+
index += 1;
|
|
1683
|
+
continue;
|
|
1684
|
+
}
|
|
1685
|
+
if (char === '"' || char === "'") {
|
|
1686
|
+
quote = char;
|
|
1687
|
+
index += 1;
|
|
1688
|
+
continue;
|
|
1689
|
+
}
|
|
1690
|
+
if (char === "#")
|
|
1691
|
+
return line.slice(0, index);
|
|
1692
|
+
index += 1;
|
|
1693
|
+
}
|
|
1694
|
+
return line;
|
|
1617
1695
|
}
|
|
1618
1696
|
function parseTomlDottedKey(input) {
|
|
1619
1697
|
const parts = [];
|
|
@@ -1724,7 +1802,7 @@ function skipWhitespace(input, startIndex) {
|
|
|
1724
1802
|
|
|
1725
1803
|
// ../src/install/codex-config-toml-sections.ts
|
|
1726
1804
|
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, `
|
|
1805
|
+
return splitTomlSections(config).filter((section) => section.header === null || !shouldRemove(section.header, section)).map((section) => section.text).join("").replace(/\n{3,}/g, `
|
|
1728
1806
|
|
|
1729
1807
|
`);
|
|
1730
1808
|
}
|
|
@@ -1763,11 +1841,43 @@ function parseHookStateHeaderKey(header) {
|
|
|
1763
1841
|
return path[2] ?? null;
|
|
1764
1842
|
}
|
|
1765
1843
|
function parseTomlHeader2(line) {
|
|
1766
|
-
const trimmed = line.trim();
|
|
1844
|
+
const trimmed = stripTomlLineComment(line).trim();
|
|
1767
1845
|
if (!trimmed.startsWith("[") || !trimmed.endsWith("]") || trimmed.startsWith("[["))
|
|
1768
1846
|
return null;
|
|
1769
1847
|
return trimmed.slice(1, -1);
|
|
1770
1848
|
}
|
|
1849
|
+
function stripTomlLineComment(line) {
|
|
1850
|
+
let quote = null;
|
|
1851
|
+
let index = 0;
|
|
1852
|
+
while (index < line.length) {
|
|
1853
|
+
const char = line[index];
|
|
1854
|
+
if (quote === '"') {
|
|
1855
|
+
if (char === "\\") {
|
|
1856
|
+
index += 2;
|
|
1857
|
+
continue;
|
|
1858
|
+
}
|
|
1859
|
+
if (char === '"')
|
|
1860
|
+
quote = null;
|
|
1861
|
+
index += 1;
|
|
1862
|
+
continue;
|
|
1863
|
+
}
|
|
1864
|
+
if (quote === "'") {
|
|
1865
|
+
if (char === "'")
|
|
1866
|
+
quote = null;
|
|
1867
|
+
index += 1;
|
|
1868
|
+
continue;
|
|
1869
|
+
}
|
|
1870
|
+
if (char === '"' || char === "'") {
|
|
1871
|
+
quote = char;
|
|
1872
|
+
index += 1;
|
|
1873
|
+
continue;
|
|
1874
|
+
}
|
|
1875
|
+
if (char === "#")
|
|
1876
|
+
return line.slice(0, index);
|
|
1877
|
+
index += 1;
|
|
1878
|
+
}
|
|
1879
|
+
return line;
|
|
1880
|
+
}
|
|
1771
1881
|
|
|
1772
1882
|
// ../src/install/codex-config-agents.ts
|
|
1773
1883
|
var LEGACY_MANAGED_CODEX_AGENT_NAMES_TO_PURGE = ["codex-ultrawork-reviewer"];
|
|
@@ -1938,7 +2048,7 @@ function ensureMarketplaceBlock(config, marketplaceName, source) {
|
|
|
1938
2048
|
}
|
|
1939
2049
|
|
|
1940
2050
|
// ../src/install/codex-config-permissions.ts
|
|
1941
|
-
var AUTONOMOUS_FEATURES = ["multi_agent", "
|
|
2051
|
+
var AUTONOMOUS_FEATURES = ["multi_agent", "unified_exec", "goals"];
|
|
1942
2052
|
function ensureAutonomousPermissions(config) {
|
|
1943
2053
|
let next = replaceOrInsertRootSetting(config, "approval_policy", JSON.stringify("never"));
|
|
1944
2054
|
next = replaceOrInsertRootSetting(next, "sandbox_mode", JSON.stringify("danger-full-access"));
|
|
@@ -1991,7 +2101,8 @@ function ensureOmoBuiltinMcpPolicies(config, input) {
|
|
|
1991
2101
|
return config;
|
|
1992
2102
|
const codegraphEnabled = input.codegraphMcpEnabled ?? true;
|
|
1993
2103
|
const gitBashEnabled = (input.platform ?? process.platform) === "win32" && input.gitBashEnabled === true;
|
|
1994
|
-
let nextConfig =
|
|
2104
|
+
let nextConfig = removeStaleContext7PlaceholderMcp(config);
|
|
2105
|
+
nextConfig = ensurePluginMcpEnabled(nextConfig, "omo@sisyphuslabs", "context7", true);
|
|
1995
2106
|
nextConfig = ensurePluginMcpEnabled(nextConfig, "omo@sisyphuslabs", "codegraph", codegraphEnabled);
|
|
1996
2107
|
nextConfig = ensurePluginMcpEnabled(nextConfig, "omo@sisyphuslabs", "git_bash", gitBashEnabled);
|
|
1997
2108
|
return nextConfig;
|
|
@@ -2015,6 +2126,107 @@ enabled = ${enabledValue}
|
|
|
2015
2126
|
`);
|
|
2016
2127
|
return replaceOrInsertSetting(config, section, "enabled", enabledValue);
|
|
2017
2128
|
}
|
|
2129
|
+
function removeStaleContext7PlaceholderMcp(config) {
|
|
2130
|
+
return removeTomlSections(config, (header, section) => header === "mcp_servers.context7" && isContext7PlaceholderSection(section.text));
|
|
2131
|
+
}
|
|
2132
|
+
function isContext7PlaceholderSection(sectionText) {
|
|
2133
|
+
const args = readStringArraySetting(sectionText, "args");
|
|
2134
|
+
if (args === null || !args.includes("@upstash/context7-mcp"))
|
|
2135
|
+
return false;
|
|
2136
|
+
const apiKey = valueAfter(args, "--api-key");
|
|
2137
|
+
return apiKey !== null && isPlaceholderApiKey(apiKey);
|
|
2138
|
+
}
|
|
2139
|
+
function valueAfter(values, key) {
|
|
2140
|
+
const index = values.indexOf(key);
|
|
2141
|
+
return index >= 0 ? values[index + 1] ?? null : null;
|
|
2142
|
+
}
|
|
2143
|
+
function isPlaceholderApiKey(value) {
|
|
2144
|
+
return /^your[-_ ]?api[-_ ]?key$/i.test(value);
|
|
2145
|
+
}
|
|
2146
|
+
function readStringArraySetting(sectionText, key) {
|
|
2147
|
+
for (const line of sectionText.split(`
|
|
2148
|
+
`)) {
|
|
2149
|
+
if (!new RegExp(`^\\s*${key}\\s*=`).test(line))
|
|
2150
|
+
continue;
|
|
2151
|
+
const assignmentIndex = line.indexOf("=");
|
|
2152
|
+
if (assignmentIndex === -1)
|
|
2153
|
+
return null;
|
|
2154
|
+
return parseTomlStringArray(stripUnquotedInlineComment2(line.slice(assignmentIndex + 1)).trim());
|
|
2155
|
+
}
|
|
2156
|
+
return null;
|
|
2157
|
+
}
|
|
2158
|
+
function parseTomlStringArray(value) {
|
|
2159
|
+
if (!value.startsWith("[") || !value.endsWith("]"))
|
|
2160
|
+
return null;
|
|
2161
|
+
const items = [];
|
|
2162
|
+
let index = 1;
|
|
2163
|
+
while (index < value.length - 1) {
|
|
2164
|
+
const char = value[index];
|
|
2165
|
+
if (char === '"' || char === "'") {
|
|
2166
|
+
const parsed = parseTomlString(value, index);
|
|
2167
|
+
if (parsed === null)
|
|
2168
|
+
return null;
|
|
2169
|
+
items.push(parsed.value);
|
|
2170
|
+
index = parsed.nextIndex;
|
|
2171
|
+
continue;
|
|
2172
|
+
}
|
|
2173
|
+
index += 1;
|
|
2174
|
+
}
|
|
2175
|
+
return items;
|
|
2176
|
+
}
|
|
2177
|
+
function parseTomlString(input, startIndex) {
|
|
2178
|
+
const quote = input[startIndex];
|
|
2179
|
+
let value = "";
|
|
2180
|
+
let index = startIndex + 1;
|
|
2181
|
+
while (index < input.length) {
|
|
2182
|
+
const char = input[index];
|
|
2183
|
+
if (quote === '"' && char === "\\") {
|
|
2184
|
+
const next = input[index + 1];
|
|
2185
|
+
if (next === undefined)
|
|
2186
|
+
return null;
|
|
2187
|
+
value += next;
|
|
2188
|
+
index += 2;
|
|
2189
|
+
continue;
|
|
2190
|
+
}
|
|
2191
|
+
if (char === quote)
|
|
2192
|
+
return { value, nextIndex: index + 1 };
|
|
2193
|
+
value += char;
|
|
2194
|
+
index += 1;
|
|
2195
|
+
}
|
|
2196
|
+
return null;
|
|
2197
|
+
}
|
|
2198
|
+
function stripUnquotedInlineComment2(line) {
|
|
2199
|
+
let quote = null;
|
|
2200
|
+
let index = 0;
|
|
2201
|
+
while (index < line.length) {
|
|
2202
|
+
const char = line[index];
|
|
2203
|
+
if (quote === '"') {
|
|
2204
|
+
if (char === "\\") {
|
|
2205
|
+
index += 2;
|
|
2206
|
+
continue;
|
|
2207
|
+
}
|
|
2208
|
+
if (char === '"')
|
|
2209
|
+
quote = null;
|
|
2210
|
+
index += 1;
|
|
2211
|
+
continue;
|
|
2212
|
+
}
|
|
2213
|
+
if (quote === "'") {
|
|
2214
|
+
if (char === "'")
|
|
2215
|
+
quote = null;
|
|
2216
|
+
index += 1;
|
|
2217
|
+
continue;
|
|
2218
|
+
}
|
|
2219
|
+
if (char === '"' || char === "'") {
|
|
2220
|
+
quote = char;
|
|
2221
|
+
index += 1;
|
|
2222
|
+
continue;
|
|
2223
|
+
}
|
|
2224
|
+
if (char === "#")
|
|
2225
|
+
return line.slice(0, index);
|
|
2226
|
+
index += 1;
|
|
2227
|
+
}
|
|
2228
|
+
return line;
|
|
2229
|
+
}
|
|
2018
2230
|
|
|
2019
2231
|
// ../src/install/codex-config-reasoning.ts
|
|
2020
2232
|
var MANAGED_KEYS = ["model", "model_context_window", "model_reasoning_effort", "plan_mode_reasoning_effort"];
|
|
@@ -2155,31 +2367,87 @@ function parseProfileMatch(match) {
|
|
|
2155
2367
|
return profile;
|
|
2156
2368
|
}
|
|
2157
2369
|
|
|
2370
|
+
// ../src/install/codex-multi-agent-mode-config.ts
|
|
2371
|
+
var CODEX_MULTI_AGENT_MODE_KEY = "multi_agent_mode";
|
|
2372
|
+
function removeUnsupportedCodexMultiAgentModeConfig(config) {
|
|
2373
|
+
const lines = config.split(/\n/);
|
|
2374
|
+
const output = [];
|
|
2375
|
+
let inRoot = true;
|
|
2376
|
+
let changed = false;
|
|
2377
|
+
for (const line of lines) {
|
|
2378
|
+
const sectionHeader = isSectionHeader3(line);
|
|
2379
|
+
if (inRoot && isRootSetting2(line, CODEX_MULTI_AGENT_MODE_KEY)) {
|
|
2380
|
+
changed = true;
|
|
2381
|
+
continue;
|
|
2382
|
+
}
|
|
2383
|
+
output.push(line);
|
|
2384
|
+
if (sectionHeader)
|
|
2385
|
+
inRoot = false;
|
|
2386
|
+
}
|
|
2387
|
+
return changed ? output.join(`
|
|
2388
|
+
`) : config;
|
|
2389
|
+
}
|
|
2390
|
+
function isSectionHeader3(line) {
|
|
2391
|
+
return isTomlTableHeaderLine(line);
|
|
2392
|
+
}
|
|
2393
|
+
function isRootSetting2(line, key) {
|
|
2394
|
+
const trimmed = line.trimStart();
|
|
2395
|
+
if (trimmed.startsWith("#") || trimmed.startsWith("["))
|
|
2396
|
+
return false;
|
|
2397
|
+
const match = trimmed.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*=/);
|
|
2398
|
+
return match?.[1] === key;
|
|
2399
|
+
}
|
|
2400
|
+
|
|
2158
2401
|
// ../src/install/codex-multi-agent-v2-config.ts
|
|
2402
|
+
var CODEX_AGENTS_HEADER = "agents";
|
|
2159
2403
|
var CODEX_MULTI_AGENT_V2_HEADER = "features.multi_agent_v2";
|
|
2160
|
-
var
|
|
2404
|
+
var CODEX_SUBAGENT_THREAD_LIMIT = 1000;
|
|
2161
2405
|
function ensureCodexMultiAgentV2Config(config) {
|
|
2162
|
-
const
|
|
2163
|
-
const
|
|
2164
|
-
const
|
|
2406
|
+
const featureFlag = removeFeatureFlagSetting(config, "multi_agent_v2");
|
|
2407
|
+
const agentsConfig = ensureAgentsMaxThreads(featureFlag.config);
|
|
2408
|
+
const section = findTomlSection(agentsConfig, CODEX_MULTI_AGENT_V2_HEADER);
|
|
2409
|
+
const maxThreadsValue = CODEX_SUBAGENT_THREAD_LIMIT.toString();
|
|
2165
2410
|
if (!section) {
|
|
2166
|
-
|
|
2411
|
+
const enabledSetting = featureFlag.value === false ? `enabled = false
|
|
2412
|
+
` : "";
|
|
2413
|
+
return appendBlock(agentsConfig, `[${CODEX_MULTI_AGENT_V2_HEADER}]
|
|
2414
|
+
${enabledSetting}max_concurrent_threads_per_session = ${maxThreadsValue}
|
|
2415
|
+
`);
|
|
2416
|
+
}
|
|
2417
|
+
const withPreservedDisable = featureFlag.value === false ? replaceOrInsertSetting(agentsConfig, section, "enabled", "false") : agentsConfig;
|
|
2418
|
+
const updatedSection = featureFlag.value === false ? findTomlSection(withPreservedDisable, CODEX_MULTI_AGENT_V2_HEADER) : section;
|
|
2419
|
+
if (!updatedSection) {
|
|
2420
|
+
return appendBlock(withPreservedDisable, `[${CODEX_MULTI_AGENT_V2_HEADER}]
|
|
2421
|
+
enabled = false
|
|
2167
2422
|
max_concurrent_threads_per_session = ${maxThreadsValue}
|
|
2168
2423
|
`);
|
|
2169
2424
|
}
|
|
2170
|
-
return replaceOrInsertSetting(
|
|
2425
|
+
return replaceOrInsertSetting(withPreservedDisable, updatedSection, "max_concurrent_threads_per_session", maxThreadsValue);
|
|
2171
2426
|
}
|
|
2172
2427
|
function removeFeatureFlagSetting(config, featureName) {
|
|
2173
2428
|
const section = findTomlSection(config, "features");
|
|
2174
2429
|
if (!section)
|
|
2175
|
-
return config;
|
|
2176
|
-
return
|
|
2430
|
+
return { config, value: null };
|
|
2431
|
+
return {
|
|
2432
|
+
config: removeSetting(config, section, featureName),
|
|
2433
|
+
value: readBooleanSetting(section.text, featureName)
|
|
2434
|
+
};
|
|
2177
2435
|
}
|
|
2178
|
-
function
|
|
2179
|
-
const
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2436
|
+
function ensureAgentsMaxThreads(config) {
|
|
2437
|
+
const maxThreadsValue = CODEX_SUBAGENT_THREAD_LIMIT.toString();
|
|
2438
|
+
const section = findTomlSection(config, CODEX_AGENTS_HEADER);
|
|
2439
|
+
if (!section) {
|
|
2440
|
+
return appendBlock(config, `[${CODEX_AGENTS_HEADER}]
|
|
2441
|
+
max_threads = ${maxThreadsValue}
|
|
2442
|
+
`);
|
|
2443
|
+
}
|
|
2444
|
+
return replaceOrInsertSetting(config, section, "max_threads", maxThreadsValue);
|
|
2445
|
+
}
|
|
2446
|
+
function readBooleanSetting(sectionText, key) {
|
|
2447
|
+
const match = new RegExp(`^\\s*${escapeRegExp(key)}\\s*=\\s*(true|false)\\s*(?:#.*)?$`, "m").exec(sectionText);
|
|
2448
|
+
if (!match)
|
|
2449
|
+
return null;
|
|
2450
|
+
return match[1] === "true";
|
|
2183
2451
|
}
|
|
2184
2452
|
|
|
2185
2453
|
// ../src/install/codex-config-toml.ts
|
|
@@ -2200,7 +2468,7 @@ async function updateCodexConfig(input) {
|
|
|
2200
2468
|
config = ensureFeatureEnabled(config, "plugins");
|
|
2201
2469
|
config = ensureFeatureEnabled(config, "plugin_hooks");
|
|
2202
2470
|
config = ensureFeatureEnabled(config, "multi_agent");
|
|
2203
|
-
config =
|
|
2471
|
+
config = removeUnsupportedCodexMultiAgentModeConfig(config);
|
|
2204
2472
|
config = ensureCodexReasoningConfig(config, await readCodexModelCatalog(input.repoRoot));
|
|
2205
2473
|
config = ensureCodexMultiAgentV2Config(config);
|
|
2206
2474
|
if (input.autonomousPermissions === true)
|
|
@@ -2308,7 +2576,8 @@ async function trustedHookStatesForPlugin(input) {
|
|
|
2308
2576
|
continue;
|
|
2309
2577
|
states.push(...trustedHookStatesForHooksFile({
|
|
2310
2578
|
keySource: `${input.pluginName}@${input.marketplaceName}:${hookPath}`,
|
|
2311
|
-
hooks: parsed.hooks
|
|
2579
|
+
hooks: parsed.hooks,
|
|
2580
|
+
platform: input.platform ?? process.platform
|
|
2312
2581
|
}));
|
|
2313
2582
|
}
|
|
2314
2583
|
return states;
|
|
@@ -2336,20 +2605,28 @@ function trustedHookStatesForHooksFile(input) {
|
|
|
2336
2605
|
continue;
|
|
2337
2606
|
if (handler.async === true)
|
|
2338
2607
|
continue;
|
|
2339
|
-
|
|
2608
|
+
const command = commandForPlatform(handler, input.platform);
|
|
2609
|
+
if (command === undefined || command.trim() === "")
|
|
2340
2610
|
continue;
|
|
2341
2611
|
const key = `${input.keySource}:${eventLabel}:${groupIndex}:${handlerIndex}`;
|
|
2342
|
-
states.push({ key, trustedHash: commandHookHash(eventLabel, group.matcher, handler) });
|
|
2612
|
+
states.push({ key, trustedHash: commandHookHash(eventLabel, group.matcher, handler, command) });
|
|
2343
2613
|
}
|
|
2344
2614
|
}
|
|
2345
2615
|
}
|
|
2346
2616
|
return states;
|
|
2347
2617
|
}
|
|
2348
|
-
function
|
|
2618
|
+
function commandForPlatform(handler, platform) {
|
|
2619
|
+
if (typeof handler.command !== "string")
|
|
2620
|
+
return;
|
|
2621
|
+
if (platform === "win32" && typeof handler.commandWindows === "string")
|
|
2622
|
+
return handler.commandWindows;
|
|
2623
|
+
return handler.command;
|
|
2624
|
+
}
|
|
2625
|
+
function commandHookHash(eventName, matcher, handler, command) {
|
|
2349
2626
|
const timeout = Math.max(Number(handler.timeout ?? 600), 1);
|
|
2350
2627
|
const normalizedHandler = {
|
|
2351
2628
|
type: "command",
|
|
2352
|
-
command
|
|
2629
|
+
command,
|
|
2353
2630
|
timeout,
|
|
2354
2631
|
async: false
|
|
2355
2632
|
};
|
|
@@ -2404,7 +2681,6 @@ function resolveCodexInstallerBinDir(input) {
|
|
|
2404
2681
|
import { execFileSync as execFileSync2 } from "node:child_process";
|
|
2405
2682
|
import { existsSync as existsSync2 } from "node:fs";
|
|
2406
2683
|
var GIT_BASH_ENV_KEY2 = "OMO_CODEX_GIT_BASH_PATH";
|
|
2407
|
-
var WINGET_INSTALL_ARGS = ["install", "--id", "Git.Git", "-e", "--source", "winget"];
|
|
2408
2684
|
var PROGRAM_FILES_GIT_BASH = "C:\\Program Files\\Git\\bin\\bash.exe";
|
|
2409
2685
|
var PROGRAM_FILES_X86_GIT_BASH = "C:\\Program Files (x86)\\Git\\bin\\bash.exe";
|
|
2410
2686
|
var NON_GIT_BASH_LAUNCHER_DIR_SEGMENTS = ["\\windows\\system32\\", "\\microsoft\\windowsapps\\"];
|
|
@@ -2484,25 +2760,13 @@ function whereCommand(command) {
|
|
|
2484
2760
|
}
|
|
2485
2761
|
}
|
|
2486
2762
|
// ../src/install/git-bash.ts
|
|
2487
|
-
var SKIP_GIT_BASH_AUTO_INSTALL_ENV_KEY = "OMO_CODEX_SKIP_GIT_BASH_AUTO_INSTALL";
|
|
2488
2763
|
var resolveGitBashForCurrentProcess2 = (input = {}) => {
|
|
2489
2764
|
return toCodexResolution(resolveGitBashForCurrentProcess(input));
|
|
2490
2765
|
};
|
|
2491
2766
|
async function prepareGitBashForInstall(input) {
|
|
2492
2767
|
const resolve6 = input.resolveGitBash ?? (() => resolveGitBashForCurrentProcess2({ platform: input.platform, env: input.env }));
|
|
2493
2768
|
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();
|
|
2769
|
+
return initialResolution;
|
|
2506
2770
|
}
|
|
2507
2771
|
function toCodexResolution(resolution) {
|
|
2508
2772
|
if (resolution.found) {
|
|
@@ -2543,10 +2807,8 @@ async function resolveGitBashStep(options, degraded) {
|
|
|
2543
2807
|
return false;
|
|
2544
2808
|
try {
|
|
2545
2809
|
const resolution = await prepareGitBashForInstall({
|
|
2546
|
-
cwd: options.pluginRoot,
|
|
2547
2810
|
env: options.env,
|
|
2548
2811
|
platform: options.platform,
|
|
2549
|
-
runCommand: options.runCommand ?? defaultRunCommand,
|
|
2550
2812
|
...options.resolveGitBash === undefined ? {} : { resolveGitBash: options.resolveGitBash }
|
|
2551
2813
|
});
|
|
2552
2814
|
if (resolution.found)
|
|
@@ -2682,7 +2944,7 @@ async function linkRuntimeWrapperStep(options, binDir, degraded) {
|
|
|
2682
2944
|
reason: "marketplace payload has no dist/cli"
|
|
2683
2945
|
});
|
|
2684
2946
|
await appendBootstrapLog(options.pluginData, options.now ?? Date.now(), "omo-cli-degraded", {
|
|
2685
|
-
warning: `Warning: skipped the omo runtime wrapper because ${cliPath} is missing; omo
|
|
2947
|
+
warning: `Warning: skipped the omo runtime wrapper because ${cliPath} is missing; omo ulw-loop commands will be unavailable until a package shipping dist/cli is installed`
|
|
2686
2948
|
});
|
|
2687
2949
|
} catch (error) {
|
|
2688
2950
|
degraded.push({
|
|
@@ -2703,10 +2965,6 @@ async function stampGitBashEnvStep(options, degraded) {
|
|
|
2703
2965
|
});
|
|
2704
2966
|
}
|
|
2705
2967
|
}
|
|
2706
|
-
var execFileAsync2 = promisify2(execFile2);
|
|
2707
|
-
async function defaultRunCommand(command, args, options) {
|
|
2708
|
-
return execFileAsync2(command, [...args], { cwd: options.cwd });
|
|
2709
|
-
}
|
|
2710
2968
|
async function directoryNames(root) {
|
|
2711
2969
|
return entryNames(root, (entry) => entry.isDirectory());
|
|
2712
2970
|
}
|