oh-my-opencode 4.19.3 → 5.0.0-beta.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/command/get-unpublished-changes.md +2 -0
- package/.agents/command/omomomo.md +1 -1
- package/.agents/command/publish.md +7 -0
- package/.agents/skills/get-unpublished-changes/SKILL.md +2 -0
- package/.agents/skills/hyperplan/SKILL.md +3 -3
- package/.agents/skills/omomomo/SKILL.md +1 -1
- package/.agents/skills/publish/SKILL.md +7 -0
- package/.opencode/command/get-unpublished-changes.md +2 -0
- package/.opencode/command/omomomo.md +1 -1
- package/.opencode/command/publish.md +7 -0
- package/.opencode/skills/hyperplan/SKILL.md +3 -3
- package/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +6 -5
- package/README.ru.md +1 -1
- package/README.zh-cn.md +1 -1
- package/bin/oh-my-opencode.js +14 -1
- package/bin/oh-my-opencode.test.ts +21 -0
- package/dist/agents/sisyphus-junior/agent.d.ts +1 -1
- package/dist/cli/doctor/checks/deprecated-reasoning-keys.d.ts +2 -0
- package/dist/cli/index.js +2925 -1919
- package/dist/cli-node/index.js +2925 -1919
- package/dist/config/schema/agent-overrides.d.ts +1343 -15
- package/dist/config/schema/categories.d.ts +132 -0
- package/dist/config/schema/fallback-models.d.ts +50 -0
- package/dist/config/schema/oh-my-opencode-config.d.ts +1322 -11
- package/dist/config-migration/index.d.ts +1 -0
- package/dist/config-migration/migration-plans.d.ts +1 -0
- package/dist/config-migration/reasoning-unification.d.ts +3 -0
- package/dist/features/monitor/batcher.d.ts +3 -1
- package/dist/features/monitor/manager-internals.d.ts +1 -0
- package/dist/features/monitor/output-injector-types.d.ts +2 -0
- package/dist/features/monitor/output-injector.d.ts +6 -0
- package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +2 -0
- package/dist/hooks/codegraph-bootstrap/command-runner.d.ts +1 -0
- package/dist/hooks/model-fallback/next-fallback.d.ts +1 -0
- package/dist/hooks/runtime-fallback/constants.d.ts +1 -1
- package/dist/hooks/todo-continuation-enforcer/types.d.ts +1 -0
- package/dist/hooks/todo-continuation-enforcer/unrecoverable-request-error.d.ts +9 -0
- package/dist/hooks/tool-pair-validator/hook.test-support.d.ts +29 -0
- package/dist/hooks/tool-pair-validator/tool-part-ids.d.ts +14 -5
- package/dist/hooks/tool-pair-validator/tool-result-repair.d.ts +4 -3
- package/dist/hooks/tool-pair-validator/types.d.ts +5 -22
- package/dist/index.js +4864 -4011
- package/dist/mcp/lsp.d.ts +1 -0
- package/dist/oh-my-opencode.schema.json +3221 -222
- package/dist/plugin-handlers/prometheus-agent-config-builder.d.ts +1 -0
- package/dist/shared/agent-variant.d.ts +11 -0
- package/dist/shared/session-prompt-params-helpers.d.ts +6 -1
- package/dist/shared/tmux/constants.d.ts +1 -1
- package/dist/skills/ast-grep/SOURCE +1 -1
- package/dist/skills/ast-grep/install.ps1 +2 -2
- package/dist/skills/ast-grep/install.sh +1 -1
- package/dist/skills/ast-grep/references/install.md +2 -2
- package/dist/skills/ast-grep/tests/smoke.sh +1 -1
- package/dist/skills/coding-agent-sessions/SKILL.md +4 -3
- package/dist/skills/coding-agent-sessions/references/all-platforms.md +3 -1
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
- package/dist/skills/data-scientist/SKILL.md +243 -0
- package/dist/skills/data-scientist/references/common-scenarios.md +176 -0
- package/dist/skills/data-scientist/references/execution-templates.md +197 -0
- package/dist/skills/data-scientist/references/integration-patterns.md +153 -0
- package/dist/skills/data-scientist/references/performance-benchmarks.md +37 -0
- package/dist/skills/data-scientist/references/uv-setup.md +78 -0
- package/dist/skills/data-scientist/scripts/quick-query.py +111 -0
- package/dist/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
- package/dist/skills/data-scientist/scripts/setup-uv.sh +60 -0
- package/dist/skills/debugging/SKILL.md +1 -1
- package/dist/skills/programming/SKILL.md +1 -2
- package/dist/skills/start-work/SKILL.md +54 -9
- package/dist/skills/ultimate-browsing/SKILL.md +2 -2
- package/dist/skills/ultimate-browsing/engine/__main__.py +8 -1
- package/dist/skills/ultimate-browsing/engine/bias_check.py +11 -0
- package/dist/skills/ultimate-browsing/engine/fetch_chain.py +90 -52
- package/dist/skills/ultimate-browsing/engine/result_schema.py +10 -1
- package/dist/skills/ultimate-browsing/engine/surrogate.py +214 -0
- package/dist/skills/ultimate-browsing/engine/surrogates.yaml +60 -0
- package/dist/skills/ultimate-browsing/engine/tests/fixtures/amp_redirect_stub.html +7 -0
- package/dist/skills/ultimate-browsing/engine/tests/fixtures/search_interstitial.html +19 -0
- package/dist/skills/ultimate-browsing/engine/tests/fixtures/wayback_available.json +1 -0
- package/dist/skills/ultimate-browsing/engine/tests/fixtures/wayback_snapshot.html +1128 -0
- package/dist/skills/ultimate-browsing/engine/tests/test_surrogate.py +252 -0
- package/dist/skills/ultimate-browsing/engine/tests/test_surrogate_validators.py +78 -0
- package/dist/skills/ultimate-browsing/engine/validators.py +46 -0
- package/dist/skills/ultimate-browsing/engine/waf_detector.py +1 -1
- package/dist/skills/ultimate-browsing/engine/waf_profiles.yaml +10 -5
- package/dist/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
- package/dist/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
- package/dist/skills/ultimate-browsing/references/insane-search/README.md +4 -4
- package/dist/skills/ultimate-browsing/references/insane-search/cache-archive.md +51 -50
- package/dist/skills/ultimate-browsing/references/insane-search/fallback.md +1 -1
- package/dist/skills/ultimate-browsing/references/insane-search/jina.md +8 -2
- package/dist/skills/ultimate-browsing/references/insane-search/naver.md +1 -1
- package/dist/skills/ultimate-browsing/references/insane-search/twitter.md +3 -3
- package/dist/skills/ulw-plan/SKILL.md +2 -2
- package/dist/skills/ulw-plan/references/full-workflow.md +3 -3
- package/dist/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
- package/dist/skills/ulw-research/SKILL.md +128 -12
- package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
- package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
- package/dist/tools/delegate-task/constants.d.ts +1 -1
- package/dist/tui.js +1271 -1108
- package/docs/reference/web-terminal-visual-qa.md +1 -1
- package/package.json +27 -19
- package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +2 -2
- package/packages/lsp-core/src/lsp/connection.ts +1 -1
- package/packages/lsp-daemon/dist/cli.js +27 -13
- package/packages/lsp-daemon/dist/client.js +49 -35
- package/packages/lsp-daemon/dist/ensure-daemon.d.ts +1 -0
- package/packages/lsp-daemon/dist/ensure-daemon.js +18 -5
- package/packages/lsp-daemon/dist/index.js +34 -20
- package/packages/lsp-tools-mcp/dist/cli.js +1 -1
- package/packages/lsp-tools-mcp/dist/lsp/manager.js +1 -1
- package/packages/lsp-tools-mcp/dist/mcp.js +1 -1
- package/packages/lsp-tools-mcp/dist/tools.js +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +289 -95
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/src/setup.ts +7 -7
- package/packages/omo-codex/plugin/components/bootstrap/src/worker.ts +3 -0
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +385 -64
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +336 -47
- package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
- package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +6 -0
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +56 -42
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/AGENTS.md +1 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/README.md +5 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +2 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/cli.js +18 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/src/codex-hook.ts +21 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +105 -0
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/CHANGELOG.md +2 -0
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-code-reviewer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-qa-executor.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-high.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-low.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-medium.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +3 -2
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +3 -2
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +3 -3
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/README.md +11 -11
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +3 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +9 -9
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.js +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +66 -66
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.js +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.js +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -3
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +22 -25
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +9 -9
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-steering.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-commands.test.ts +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-helpers.test.ts +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-kind-guidance.test.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/quality-gate-builder.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-roles.test.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -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/sync-skills.mjs +8 -2
- package/packages/omo-codex/plugin/skills/ast-grep/SOURCE +1 -1
- package/packages/omo-codex/plugin/skills/ast-grep/install.ps1 +2 -2
- package/packages/omo-codex/plugin/skills/ast-grep/install.sh +1 -1
- package/packages/omo-codex/plugin/skills/ast-grep/references/install.md +2 -2
- package/packages/omo-codex/plugin/skills/ast-grep/tests/smoke.sh +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +4 -3
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +3 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
- package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +243 -0
- package/packages/omo-codex/plugin/skills/data-scientist/agents/openai.yaml +2 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +176 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +197 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +153 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +37 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +78 -0
- package/packages/omo-codex/plugin/skills/data-scientist/scripts/quick-query.py +111 -0
- package/packages/omo-codex/plugin/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
- package/packages/omo-codex/plugin/skills/data-scientist/scripts/setup-uv.sh +60 -0
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -2
- package/packages/omo-codex/plugin/skills/start-work/SKILL.md +54 -9
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/__main__.py +8 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/bias_check.py +11 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/fetch_chain.py +90 -52
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/result_schema.py +10 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/surrogate.py +214 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/surrogates.yaml +60 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/amp_redirect_stub.html +7 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/search_interstitial.html +19 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/wayback_available.json +1 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/wayback_snapshot.html +1128 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_surrogate.py +252 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_surrogate_validators.py +78 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/validators.py +46 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/waf_detector.py +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/waf_profiles.yaml +10 -5
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +4 -4
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/cache-archive.md +51 -50
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/fallback.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/jina.md +8 -2
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/naver.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/twitter.md +3 -3
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +3 -2
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -3
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +22 -25
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +3 -3
- package/packages/omo-codex/plugin/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +127 -12
- package/packages/omo-codex/plugin/test/bootstrap-binlinks.test.mjs +12 -12
- package/packages/omo-codex/plugin/test/bootstrap-orchestration.test.mjs +36 -4
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +1 -1
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +9 -2
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +12 -0
- package/packages/omo-codex/scripts/install-bin-links.test.mjs +56 -2
- package/packages/omo-codex/scripts/install-delegated-command.test.mjs +6 -6
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +138 -65
- package/packages/omo-codex/scripts/install-local-entrypoint.test.mjs +4 -4
- package/packages/omo-codex/scripts/install-local.test.mjs +5 -2
- package/packages/shared-skills/index.mjs +19 -1
- package/packages/shared-skills/skills/ast-grep/SOURCE +1 -1
- package/packages/shared-skills/skills/ast-grep/install.ps1 +2 -2
- package/packages/shared-skills/skills/ast-grep/install.sh +1 -1
- package/packages/shared-skills/skills/ast-grep/references/install.md +2 -2
- package/packages/shared-skills/skills/ast-grep/tests/smoke.sh +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +4 -3
- package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +3 -1
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
- package/packages/shared-skills/skills/data-scientist/SKILL.md +243 -0
- package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +176 -0
- package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +197 -0
- package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +153 -0
- package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +37 -0
- package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +78 -0
- package/packages/shared-skills/skills/data-scientist/scripts/quick-query.py +111 -0
- package/packages/shared-skills/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
- package/packages/shared-skills/skills/data-scientist/scripts/setup-uv.sh +60 -0
- package/packages/shared-skills/skills/debugging/SKILL.md +1 -1
- package/packages/shared-skills/skills/programming/SKILL.md +1 -2
- package/packages/shared-skills/skills/start-work/SKILL.md +54 -9
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +2 -2
- package/packages/shared-skills/skills/ultimate-browsing/engine/__main__.py +8 -1
- package/packages/shared-skills/skills/ultimate-browsing/engine/bias_check.py +11 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/fetch_chain.py +90 -52
- package/packages/shared-skills/skills/ultimate-browsing/engine/result_schema.py +10 -1
- package/packages/shared-skills/skills/ultimate-browsing/engine/surrogate.py +214 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/surrogates.yaml +60 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/fixtures/amp_redirect_stub.html +7 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/fixtures/search_interstitial.html +19 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/fixtures/wayback_available.json +1 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/fixtures/wayback_snapshot.html +1128 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_surrogate.py +252 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_surrogate_validators.py +78 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/validators.py +46 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/waf_detector.py +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/engine/waf_profiles.yaml +10 -5
- package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +4 -4
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/cache-archive.md +51 -50
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/fallback.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/jina.md +8 -2
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/naver.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/twitter.md +3 -3
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +2 -2
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +3 -3
- package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
- package/packages/shared-skills/skills/ulw-research/SKILL.md +128 -12
- package/postinstall.mjs +6 -0
|
@@ -439,7 +439,7 @@ async function readOptionalFile(path) {
|
|
|
439
439
|
|
|
440
440
|
// components/bootstrap/src/worker.ts
|
|
441
441
|
import { appendFile as appendFile2, mkdir as mkdir8, readFile as readFile14 } from "node:fs/promises";
|
|
442
|
-
import { homedir as
|
|
442
|
+
import { homedir as homedir5 } from "node:os";
|
|
443
443
|
import { dirname as dirname9, join as join22, resolve as resolve7 } from "node:path";
|
|
444
444
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
445
445
|
|
|
@@ -449,6 +449,10 @@ import { rm as rm4 } from "node:fs/promises";
|
|
|
449
449
|
import { dirname as dirname4, join as join7 } from "node:path";
|
|
450
450
|
import { promisify } from "node:util";
|
|
451
451
|
|
|
452
|
+
// ../../utils/src/ast-grep/sg-candidates.ts
|
|
453
|
+
import { homedir as homedir3 } from "node:os";
|
|
454
|
+
import { join as join4 } from "node:path";
|
|
455
|
+
|
|
452
456
|
// ../../utils/src/ast-grep/sg-manifest.ts
|
|
453
457
|
var SG_PINNED_VERSION = "0.43.0";
|
|
454
458
|
var SG_RELEASE_ASSETS = {
|
|
@@ -494,10 +498,113 @@ function sgBinaryName(platform = process.platform) {
|
|
|
494
498
|
return normalizeRuntimePlatform(platform) === "win32" ? "sg.exe" : "sg";
|
|
495
499
|
}
|
|
496
500
|
|
|
501
|
+
// ../../utils/src/ast-grep/install-script.ts
|
|
502
|
+
var AST_GREP_BIN_DIR_ENV_KEY = "OMO_AST_GREP_BIN_DIR";
|
|
503
|
+
|
|
504
|
+
// ../../utils/src/ast-grep/types.ts
|
|
505
|
+
var SG_PATH_ENV_KEY = "OMO_AST_GREP_SG_PATH";
|
|
506
|
+
var SG_BINARY_NOT_FOUND = "BINARY_NOT_FOUND";
|
|
507
|
+
|
|
508
|
+
// ../../utils/src/ast-grep/sg-candidates.ts
|
|
509
|
+
var HOMEBREW_PREFIXES = {
|
|
510
|
+
darwin: ["/opt/homebrew/bin", "/usr/local/bin"],
|
|
511
|
+
linux: ["/home/linuxbrew/.linuxbrew/bin", "/usr/local/bin"],
|
|
512
|
+
win32: []
|
|
513
|
+
};
|
|
514
|
+
function nonEmptyValue(value) {
|
|
515
|
+
const trimmed = value?.trim();
|
|
516
|
+
return trimmed === undefined || trimmed.length === 0 ? null : trimmed;
|
|
517
|
+
}
|
|
518
|
+
function astGrepBinaryName(platform) {
|
|
519
|
+
return platform === "win32" ? "ast-grep.exe" : "ast-grep";
|
|
520
|
+
}
|
|
521
|
+
function candidate(tier, path) {
|
|
522
|
+
return { path, tier };
|
|
523
|
+
}
|
|
524
|
+
function envOverrideCandidates(env) {
|
|
525
|
+
const override = nonEmptyValue(env[SG_PATH_ENV_KEY]);
|
|
526
|
+
return override === null ? [] : [candidate("env-override", override)];
|
|
527
|
+
}
|
|
528
|
+
function omoRuntimeCandidates(options) {
|
|
529
|
+
const binaryName = sgBinaryName(options.platform);
|
|
530
|
+
const slug = runtimeSlug(options.platform, options.arch);
|
|
531
|
+
const paths = [];
|
|
532
|
+
if (options.runtimeDir !== undefined)
|
|
533
|
+
paths.push(join4(options.runtimeDir, binaryName));
|
|
534
|
+
const codexHome = nonEmptyValue(options.env["CODEX_HOME"]);
|
|
535
|
+
if (codexHome !== null)
|
|
536
|
+
paths.push(join4(codexHome, "runtime", "ast-grep", slug, binaryName));
|
|
537
|
+
paths.push(join4(options.homeDir, ".omo", "runtime", "ast-grep", slug, binaryName));
|
|
538
|
+
return paths.map((path) => candidate("omo-runtime", path));
|
|
539
|
+
}
|
|
540
|
+
function skillBinCandidates(options) {
|
|
541
|
+
const names = [astGrepBinaryName(options.platform), sgBinaryName(options.platform)];
|
|
542
|
+
const directories = [];
|
|
543
|
+
const cacheDir = nonEmptyValue(options.env[AST_GREP_BIN_DIR_ENV_KEY]);
|
|
544
|
+
if (cacheDir !== null)
|
|
545
|
+
directories.push(cacheDir);
|
|
546
|
+
if (options.packageDir !== undefined)
|
|
547
|
+
directories.push(join4(options.packageDir, "bin"));
|
|
548
|
+
return directories.flatMap((directory) => names.map((name) => candidate("skill-bin", join4(directory, name))));
|
|
549
|
+
}
|
|
550
|
+
function homebrewCandidates(platform) {
|
|
551
|
+
const prefixes = platform === "darwin" || platform === "linux" || platform === "win32" ? HOMEBREW_PREFIXES[platform] : [];
|
|
552
|
+
const names = [astGrepBinaryName(platform), sgBinaryName(platform)];
|
|
553
|
+
return prefixes.flatMap((prefix) => names.map((name) => candidate("homebrew", join4(prefix, name))));
|
|
554
|
+
}
|
|
555
|
+
function planSgCandidates(options) {
|
|
556
|
+
const env = options.env ?? process.env;
|
|
557
|
+
const platform = options.platform ?? process.platform;
|
|
558
|
+
const arch = options.arch ?? process.arch;
|
|
559
|
+
const homeDir = options.homeDir ?? homedir3();
|
|
560
|
+
return {
|
|
561
|
+
afterPath: homebrewCandidates(platform),
|
|
562
|
+
beforePath: [
|
|
563
|
+
...envOverrideCandidates(env),
|
|
564
|
+
...omoRuntimeCandidates({ arch, env, homeDir, platform, runtimeDir: options.runtimeDir }),
|
|
565
|
+
...skillBinCandidates({ env, packageDir: options.packageDir, platform })
|
|
566
|
+
],
|
|
567
|
+
pathCommands: ["ast-grep", "sg"]
|
|
568
|
+
};
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
// ../../utils/src/ast-grep/sg-install-hints.ts
|
|
572
|
+
var OMO_PROVISION_HINT = "Start an OMO session so the bundled ast-grep skill provisions the pinned runtime automatically";
|
|
573
|
+
var ENV_OVERRIDE_HINT = `Or point ${SG_PATH_ENV_KEY} at an existing ast-grep binary`;
|
|
574
|
+
var DARWIN_HINTS = [
|
|
575
|
+
"brew install ast-grep",
|
|
576
|
+
"npm install -g @ast-grep/cli",
|
|
577
|
+
"cargo install ast-grep --locked"
|
|
578
|
+
];
|
|
579
|
+
var LINUX_HINTS = [
|
|
580
|
+
"npm install -g @ast-grep/cli",
|
|
581
|
+
"cargo install ast-grep --locked",
|
|
582
|
+
"brew install ast-grep # linuxbrew"
|
|
583
|
+
];
|
|
584
|
+
var WIN32_HINTS = [
|
|
585
|
+
"scoop install main/ast-grep",
|
|
586
|
+
"winget install ast-grep",
|
|
587
|
+
"choco install ast-grep",
|
|
588
|
+
"npm install -g @ast-grep/cli"
|
|
589
|
+
];
|
|
590
|
+
function platformHints(platform) {
|
|
591
|
+
if (platform === "darwin")
|
|
592
|
+
return DARWIN_HINTS;
|
|
593
|
+
if (platform === "win32")
|
|
594
|
+
return WIN32_HINTS;
|
|
595
|
+
return LINUX_HINTS;
|
|
596
|
+
}
|
|
597
|
+
function sgInstallHints(platform = process.platform) {
|
|
598
|
+
return [...platformHints(platform), OMO_PROVISION_HINT, ENV_OVERRIDE_HINT];
|
|
599
|
+
}
|
|
600
|
+
function sgBinaryNotFoundMessage(platform = process.platform) {
|
|
601
|
+
return `ast-grep binary not found for ${platform}: no candidate passed the --version probe across the env override, OMO runtime, skill bin cache, PATH, or Homebrew prefixes.`;
|
|
602
|
+
}
|
|
603
|
+
|
|
497
604
|
// ../../utils/src/ast-grep/sg-provisioner.ts
|
|
498
605
|
import { createHash as createHash2, randomUUID as randomUUID2 } from "node:crypto";
|
|
499
606
|
import { chmod, mkdir as mkdir3, rename as rename2, rm as rm3, writeFile as writeFile2 } from "node:fs/promises";
|
|
500
|
-
import { basename as basename2, isAbsolute, join as
|
|
607
|
+
import { basename as basename2, isAbsolute, join as join5, relative, resolve as resolve2 } from "node:path";
|
|
501
608
|
import { inflateRawSync } from "node:zlib";
|
|
502
609
|
var DEFAULT_DOWNLOAD_TIMEOUT_MS = 60000;
|
|
503
610
|
var EOCD_SIGNATURE = 101010256;
|
|
@@ -603,7 +710,7 @@ function extractStandaloneSgBinary(zip, platform) {
|
|
|
603
710
|
const entries = listZipEntries(zip);
|
|
604
711
|
const preferredNames = [`ast-grep${suffix}`, `sg${suffix}`];
|
|
605
712
|
for (const preferred of preferredNames) {
|
|
606
|
-
const entry = entries.find((
|
|
713
|
+
const entry = entries.find((candidate2) => zipEntryBaseName(candidate2.name) === preferred);
|
|
607
714
|
if (entry !== undefined)
|
|
608
715
|
return readZipEntryBytes(zip, entry);
|
|
609
716
|
}
|
|
@@ -623,8 +730,8 @@ async function provisionSgBinary(options) {
|
|
|
623
730
|
throw new SgProvisionError("unsupported_platform", `ast-grep ${SG_PINNED_VERSION} has no asset for ${slug}`);
|
|
624
731
|
}
|
|
625
732
|
const targetDir = resolve2(options.targetDir);
|
|
626
|
-
const destination =
|
|
627
|
-
const tempPath =
|
|
733
|
+
const destination = join5(targetDir, sgBinaryName(platform));
|
|
734
|
+
const tempPath = join5(targetDir, `.sg-${randomUUID2().slice(0, 8)}.partial`);
|
|
628
735
|
assertInsideTarget(targetDir, destination);
|
|
629
736
|
assertInsideTarget(targetDir, tempPath);
|
|
630
737
|
try {
|
|
@@ -649,11 +756,10 @@ async function provisionSgBinary(options) {
|
|
|
649
756
|
// ../../utils/src/ast-grep/sg-resolver.ts
|
|
650
757
|
import { execFileSync } from "node:child_process";
|
|
651
758
|
import { existsSync, statSync } from "node:fs";
|
|
652
|
-
import { join as join6 } from "node:path";
|
|
653
759
|
|
|
654
760
|
// ../../utils/src/runtime/which.ts
|
|
655
761
|
import { accessSync, constants } from "node:fs";
|
|
656
|
-
import { delimiter, join as
|
|
762
|
+
import { delimiter, join as join6 } from "node:path";
|
|
657
763
|
var runtime = globalThis;
|
|
658
764
|
function isUnsafeCommandName(commandName) {
|
|
659
765
|
if (commandName.includes("/") || commandName.includes("\\"))
|
|
@@ -708,7 +814,7 @@ function bunWhich(commandName) {
|
|
|
708
814
|
return null;
|
|
709
815
|
for (const pathEntry of pathEntries) {
|
|
710
816
|
for (const candidateName of candidateNames) {
|
|
711
|
-
const candidatePath =
|
|
817
|
+
const candidatePath = join6(pathEntry, candidateName);
|
|
712
818
|
if (isExecutable(candidatePath))
|
|
713
819
|
return candidatePath;
|
|
714
820
|
}
|
|
@@ -716,13 +822,15 @@ function bunWhich(commandName) {
|
|
|
716
822
|
return null;
|
|
717
823
|
}
|
|
718
824
|
|
|
719
|
-
// ../../utils/src/ast-grep/types.ts
|
|
720
|
-
var SG_PATH_ENV_KEY = "OMO_AST_GREP_SG_PATH";
|
|
721
|
-
|
|
722
825
|
// ../../utils/src/ast-grep/sg-resolver.ts
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
826
|
+
var SG_VERSION_PROBE_TIMEOUT_MS = 5000;
|
|
827
|
+
var cacheEntry = null;
|
|
828
|
+
function cacheFingerprint(options, plan) {
|
|
829
|
+
return JSON.stringify([
|
|
830
|
+
options.platform ?? process.platform,
|
|
831
|
+
options.arch ?? process.arch,
|
|
832
|
+
plan.beforePath.map((candidate2) => candidate2.path)
|
|
833
|
+
]);
|
|
726
834
|
}
|
|
727
835
|
function defaultFileExists(filePath) {
|
|
728
836
|
if (!existsSync(filePath))
|
|
@@ -730,9 +838,7 @@ function defaultFileExists(filePath) {
|
|
|
730
838
|
try {
|
|
731
839
|
const stats = statSync(filePath);
|
|
732
840
|
return stats.isFile() && stats.size > 0;
|
|
733
|
-
} catch
|
|
734
|
-
if (error instanceof Error)
|
|
735
|
-
return false;
|
|
841
|
+
} catch {
|
|
736
842
|
return false;
|
|
737
843
|
}
|
|
738
844
|
}
|
|
@@ -740,53 +846,79 @@ function defaultVersionProbe(binaryPath) {
|
|
|
740
846
|
return String(execFileSync(binaryPath, ["--version"], {
|
|
741
847
|
encoding: "utf8",
|
|
742
848
|
stdio: ["ignore", "pipe", "ignore"],
|
|
743
|
-
timeout:
|
|
849
|
+
timeout: SG_VERSION_PROBE_TIMEOUT_MS
|
|
744
850
|
}));
|
|
745
851
|
}
|
|
746
|
-
function
|
|
747
|
-
return output.toLowerCase().includes("ast-grep");
|
|
748
|
-
}
|
|
749
|
-
function hasAstGrepVersion(binaryPath, runVersionProbeSync) {
|
|
852
|
+
function probePasses(binaryPath, deps) {
|
|
750
853
|
try {
|
|
751
|
-
return
|
|
752
|
-
} catch
|
|
753
|
-
if (error instanceof Error)
|
|
754
|
-
return false;
|
|
854
|
+
return deps.runVersionProbeSync(binaryPath).toLowerCase().includes("ast-grep");
|
|
855
|
+
} catch {
|
|
755
856
|
return false;
|
|
756
857
|
}
|
|
757
858
|
}
|
|
758
|
-
function
|
|
759
|
-
return
|
|
859
|
+
function acceptsCandidate(binaryPath, deps) {
|
|
860
|
+
return deps.fileExists(binaryPath) && probePasses(binaryPath, deps);
|
|
760
861
|
}
|
|
761
|
-
function
|
|
762
|
-
const
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
862
|
+
function firstAccepted(candidates, deps) {
|
|
863
|
+
for (const candidate2 of candidates) {
|
|
864
|
+
if (acceptsCandidate(candidate2.path, deps))
|
|
865
|
+
return { found: true, path: candidate2.path, tier: candidate2.tier };
|
|
866
|
+
}
|
|
867
|
+
return null;
|
|
868
|
+
}
|
|
869
|
+
function pathCandidates(commands, deps) {
|
|
870
|
+
const resolved = [];
|
|
871
|
+
for (const commandName of commands) {
|
|
872
|
+
const found = deps.which(commandName);
|
|
873
|
+
if (found !== null)
|
|
874
|
+
resolved.push({ path: found, tier: "path" });
|
|
875
|
+
}
|
|
876
|
+
return resolved;
|
|
877
|
+
}
|
|
878
|
+
function notFound(platform) {
|
|
879
|
+
return {
|
|
880
|
+
error: { code: SG_BINARY_NOT_FOUND, hints: sgInstallHints(platform), message: sgBinaryNotFoundMessage(platform) },
|
|
881
|
+
found: false
|
|
882
|
+
};
|
|
883
|
+
}
|
|
884
|
+
function cacheIsStillValid(resolution, deps, revalidate) {
|
|
885
|
+
if (!resolution.found)
|
|
886
|
+
return false;
|
|
887
|
+
if (!deps.fileExists(resolution.path))
|
|
888
|
+
return false;
|
|
889
|
+
return !revalidate || probePasses(resolution.path, deps);
|
|
890
|
+
}
|
|
891
|
+
function resolverDeps(options) {
|
|
892
|
+
return {
|
|
893
|
+
fileExists: options.fileExists ?? defaultFileExists,
|
|
894
|
+
platform: options.platform ?? process.platform,
|
|
895
|
+
runVersionProbeSync: options.runVersionProbeSync ?? defaultVersionProbe,
|
|
896
|
+
which: options.which ?? bunWhich
|
|
897
|
+
};
|
|
898
|
+
}
|
|
899
|
+
function resolveSgBinarySync(options = {}) {
|
|
900
|
+
const deps = resolverDeps(options);
|
|
901
|
+
const useCache = options.cache ?? true;
|
|
767
902
|
try {
|
|
768
|
-
const
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
return runtimeCandidate;
|
|
775
|
-
}
|
|
776
|
-
for (const commandName of pathCommandCandidates()) {
|
|
777
|
-
const pathCandidate = which(commandName);
|
|
778
|
-
if (pathCandidate === null || !fileExists(pathCandidate))
|
|
779
|
-
continue;
|
|
780
|
-
if (commandName !== "sg" || hasAstGrepVersion(pathCandidate, runVersionProbeSync))
|
|
781
|
-
return pathCandidate;
|
|
903
|
+
const plan = planSgCandidates(options);
|
|
904
|
+
const fingerprint = cacheFingerprint(options, plan);
|
|
905
|
+
if (useCache && cacheEntry !== null && cacheEntry.fingerprint === fingerprint) {
|
|
906
|
+
if (cacheIsStillValid(cacheEntry.resolution, deps, options.revalidate ?? false))
|
|
907
|
+
return cacheEntry.resolution;
|
|
908
|
+
cacheEntry = null;
|
|
782
909
|
}
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
910
|
+
const resolution = firstAccepted(plan.beforePath, deps) ?? firstAccepted(pathCandidates(plan.pathCommands, deps), deps) ?? firstAccepted(plan.afterPath, deps) ?? notFound(deps.platform);
|
|
911
|
+
if (useCache && resolution.found)
|
|
912
|
+
cacheEntry = { fingerprint, resolution };
|
|
913
|
+
return resolution;
|
|
914
|
+
} catch {
|
|
915
|
+
return notFound(deps.platform);
|
|
788
916
|
}
|
|
789
917
|
}
|
|
918
|
+
function findSgBinarySync(options = {}) {
|
|
919
|
+
const resolution = resolveSgBinarySync(options);
|
|
920
|
+
return resolution.found ? resolution.path : null;
|
|
921
|
+
}
|
|
790
922
|
|
|
791
923
|
// components/bootstrap/src/provision.ts
|
|
792
924
|
var SG_PROVISION_COMPONENT = "ast_grep";
|
|
@@ -1161,8 +1293,8 @@ function findUnquotedCharacter(line, target, startIndex) {
|
|
|
1161
1293
|
}
|
|
1162
1294
|
return -1;
|
|
1163
1295
|
}
|
|
1164
|
-
function tomlPathMatches(
|
|
1165
|
-
return
|
|
1296
|
+
function tomlPathMatches(candidate2, target) {
|
|
1297
|
+
return candidate2.length === target.length && candidate2.every((part, index) => part === target[index]);
|
|
1166
1298
|
}
|
|
1167
1299
|
function replaceTomlAssignmentValue(line, assignmentIndex, value) {
|
|
1168
1300
|
const newline = line.endsWith(`
|
|
@@ -1420,7 +1552,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
|
|
|
1420
1552
|
"explorer",
|
|
1421
1553
|
[
|
|
1422
1554
|
{
|
|
1423
|
-
previous: { model: "gpt-5.
|
|
1555
|
+
previous: { model: "gpt-5.6-luna-fast", effort: "low" },
|
|
1424
1556
|
current: { model: "gpt-5.6-terra", effort: "medium" }
|
|
1425
1557
|
},
|
|
1426
1558
|
{
|
|
@@ -1433,7 +1565,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
|
|
|
1433
1565
|
"librarian",
|
|
1434
1566
|
[
|
|
1435
1567
|
{
|
|
1436
|
-
previous: { model: "gpt-5.
|
|
1568
|
+
previous: { model: "gpt-5.6-luna-fast", effort: "low" },
|
|
1437
1569
|
current: { model: "gpt-5.6-terra", effort: "medium" }
|
|
1438
1570
|
},
|
|
1439
1571
|
{
|
|
@@ -2027,6 +2159,7 @@ var LEGACY_CODEX_COMPONENT_BINS = [
|
|
|
2027
2159
|
{ name: "codex-telemetry", component: "telemetry" },
|
|
2028
2160
|
{ name: "codex-ultrawork", component: "ultrawork" }
|
|
2029
2161
|
];
|
|
2162
|
+
var LEGACY_CODEX_COMPONENT_BIN_NAMES = LEGACY_CODEX_COMPONENT_BINS.map((entry) => entry.name);
|
|
2030
2163
|
async function removeLegacyCodexComponentBins(binDir, platform) {
|
|
2031
2164
|
for (const entry of LEGACY_CODEX_COMPONENT_BINS) {
|
|
2032
2165
|
const linkPath = join12(binDir, platform === "win32" ? `${entry.name}.cmd` : entry.name);
|
|
@@ -2082,7 +2215,7 @@ function isNodeErrorWithCode2(error) {
|
|
|
2082
2215
|
// ../src/install/codex-cache-runtime-wrapper.ts
|
|
2083
2216
|
import { join as join13 } from "node:path";
|
|
2084
2217
|
var RUNTIME_WRAPPER_MARKER = "OMO_GENERATED_RUNTIME_WRAPPER";
|
|
2085
|
-
function posixRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
|
|
2218
|
+
function posixRuntimeWrapper(binName, cliPath, codexHome, binDir, nodeCliPath) {
|
|
2086
2219
|
const ulwLoopBin = toPosixPath(join13(binDir, "omo-ulw-loop"));
|
|
2087
2220
|
const nodeCli = escapePosixDoubleQuoted(toPosixPath(nodeCliPath));
|
|
2088
2221
|
const escapedCliPath = escapePosixDoubleQuoted(toPosixPath(cliPath));
|
|
@@ -2092,6 +2225,8 @@ function posixRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
|
|
|
2092
2225
|
"#!/bin/sh",
|
|
2093
2226
|
`# ${RUNTIME_WRAPPER_MARKER}`,
|
|
2094
2227
|
`export CODEX_HOME="\${CODEX_HOME:-${escapedCodexHome}}"`,
|
|
2228
|
+
`export OMO_INVOCATION_NAME=${binName}`,
|
|
2229
|
+
"export OMO_EDITION=codex",
|
|
2095
2230
|
'if [ "$1" = "ulw-loop" ] && [ -x "' + escapedUlwLoopBin + '" ]; then',
|
|
2096
2231
|
" shift",
|
|
2097
2232
|
' exec "' + escapedUlwLoopBin + '" ulw-loop "$@"',
|
|
@@ -2115,11 +2250,11 @@ function posixRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
|
|
|
2115
2250
|
` if [ -f "${nodeCli}" ] && command -v node >/dev/null 2>&1; then`,
|
|
2116
2251
|
` exec node "${nodeCli}" "$@"`,
|
|
2117
2252
|
" fi",
|
|
2118
|
-
` echo "
|
|
2253
|
+
` echo "${binName}: bun runtime not found (checked PATH, ~/.bun/bin, /opt/homebrew/bin, /usr/local/bin) and the node fallback CLI is missing at ${nodeCli}; install bun from https://bun.sh, or reinstall ${binName} and force the fallback with OMO_RUNTIME=node" >&2`,
|
|
2119
2254
|
" exit 127",
|
|
2120
2255
|
"fi",
|
|
2121
2256
|
`if [ ! -f "${escapedCliPath}" ]; then`,
|
|
2122
|
-
` echo "
|
|
2257
|
+
` echo "${binName}: runtime target missing at ${escapedCliPath}; reinstall with: npx --yes lazycodex-ai@latest install --no-tui" >&2`,
|
|
2123
2258
|
" exit 1",
|
|
2124
2259
|
"fi",
|
|
2125
2260
|
`exec "$BUN_BINARY" "${escapedCliPath}" "$@"`,
|
|
@@ -2127,12 +2262,14 @@ function posixRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
|
|
|
2127
2262
|
].join(`
|
|
2128
2263
|
`);
|
|
2129
2264
|
}
|
|
2130
|
-
function windowsRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
|
|
2265
|
+
function windowsRuntimeWrapper(binName, cliPath, codexHome, binDir, nodeCliPath) {
|
|
2131
2266
|
const ulwLoopBin = join13(binDir, "omo-ulw-loop.cmd");
|
|
2132
2267
|
return [
|
|
2133
2268
|
"@echo off",
|
|
2134
2269
|
`rem ${RUNTIME_WRAPPER_MARKER}`,
|
|
2135
2270
|
`if not defined CODEX_HOME set "CODEX_HOME=${codexHome}"`,
|
|
2271
|
+
`set "OMO_INVOCATION_NAME=${binName}"`,
|
|
2272
|
+
'set "OMO_EDITION=codex"',
|
|
2136
2273
|
...windowsNodeDiscoveryLines(),
|
|
2137
2274
|
`if "%~1"=="ulw-loop" if exist "${ulwLoopBin}" (`,
|
|
2138
2275
|
" shift /1",
|
|
@@ -2150,11 +2287,11 @@ function windowsRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
|
|
|
2150
2287
|
` "%OMO_NODE_BINARY%" "${nodeCliPath}" %*`,
|
|
2151
2288
|
" exit /b %ERRORLEVEL%",
|
|
2152
2289
|
" )",
|
|
2153
|
-
` echo
|
|
2290
|
+
` echo ${binName}: 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`,
|
|
2154
2291
|
" exit /b 127",
|
|
2155
2292
|
")",
|
|
2156
2293
|
`if not exist "${cliPath}" (`,
|
|
2157
|
-
` echo
|
|
2294
|
+
` echo ${binName}: runtime target missing at ${cliPath}; reinstall with: npx --yes lazycodex-ai@latest install --no-tui 1>&2`,
|
|
2158
2295
|
" exit /b 1",
|
|
2159
2296
|
")",
|
|
2160
2297
|
`"%BUN_BINARY%" "${cliPath}" %*`,
|
|
@@ -2170,7 +2307,14 @@ function escapePosixDoubleQuoted(value) {
|
|
|
2170
2307
|
}
|
|
2171
2308
|
|
|
2172
2309
|
// ../src/install/codex-cache-bins.ts
|
|
2173
|
-
var RESERVED_NESTED_BIN_NAMES = new Set([
|
|
2310
|
+
var RESERVED_NESTED_BIN_NAMES = new Set([
|
|
2311
|
+
"omo",
|
|
2312
|
+
"omo-agent-toolkit",
|
|
2313
|
+
"lazycodex",
|
|
2314
|
+
"lazycodex-ai",
|
|
2315
|
+
"oh-my-opencode",
|
|
2316
|
+
"oh-my-openagent"
|
|
2317
|
+
]);
|
|
2174
2318
|
async function linkCachedPluginBins(input) {
|
|
2175
2319
|
const binLinks = await discoverPackageBins(input.pluginRoot);
|
|
2176
2320
|
const platform = input.platform ?? process.platform;
|
|
@@ -2186,20 +2330,26 @@ async function linkCachedPluginBins(input) {
|
|
|
2186
2330
|
}
|
|
2187
2331
|
async function linkRootRuntimeBin(input) {
|
|
2188
2332
|
const cliPath = join14(input.repoRoot, "dist", "cli", "index.js");
|
|
2189
|
-
|
|
2333
|
+
const platform = input.platform ?? process.platform;
|
|
2334
|
+
const legacyPath = join14(input.binDir, platform === "win32" ? "omo.cmd" : "omo");
|
|
2335
|
+
if (!await isFile2(cliPath)) {
|
|
2336
|
+
await removeGeneratedRuntimeWrapper(legacyPath);
|
|
2190
2337
|
return null;
|
|
2338
|
+
}
|
|
2339
|
+
const binName = "omo-agent-toolkit";
|
|
2191
2340
|
const nodeCliPath = join14(input.repoRoot, "dist", "cli-node", "index.js");
|
|
2192
|
-
const platform = input.platform ?? process.platform;
|
|
2193
2341
|
await mkdir5(input.binDir, { recursive: true });
|
|
2194
2342
|
if (platform === "win32") {
|
|
2195
|
-
const linkPath2 = join14(input.binDir,
|
|
2196
|
-
await replaceRuntimeWrapper(linkPath2, windowsRuntimeWrapper(cliPath, input.codexHome, input.binDir, nodeCliPath));
|
|
2197
|
-
|
|
2343
|
+
const linkPath2 = join14(input.binDir, `${binName}.cmd`);
|
|
2344
|
+
await replaceRuntimeWrapper(linkPath2, windowsRuntimeWrapper(binName, cliPath, input.codexHome, input.binDir, nodeCliPath));
|
|
2345
|
+
await removeGeneratedRuntimeWrapper(legacyPath);
|
|
2346
|
+
return { name: binName, path: linkPath2, target: cliPath };
|
|
2198
2347
|
}
|
|
2199
|
-
const linkPath = join14(input.binDir,
|
|
2200
|
-
await replaceRuntimeWrapper(linkPath, posixRuntimeWrapper(cliPath, input.codexHome, input.binDir, nodeCliPath));
|
|
2348
|
+
const linkPath = join14(input.binDir, binName);
|
|
2349
|
+
await replaceRuntimeWrapper(linkPath, posixRuntimeWrapper(binName, cliPath, input.codexHome, input.binDir, nodeCliPath));
|
|
2201
2350
|
await chmod2(linkPath, 493);
|
|
2202
|
-
|
|
2351
|
+
await removeGeneratedRuntimeWrapper(legacyPath);
|
|
2352
|
+
return { name: binName, path: linkPath, target: cliPath };
|
|
2203
2353
|
}
|
|
2204
2354
|
async function linkCachedPluginBin(binDir, link, platform) {
|
|
2205
2355
|
if (platform === "win32") {
|
|
@@ -2302,6 +2452,29 @@ async function replaceRuntimeWrapper(linkPath, content) {
|
|
|
2302
2452
|
await rm9(linkPath, { force: true });
|
|
2303
2453
|
await writeFile5(linkPath, content);
|
|
2304
2454
|
}
|
|
2455
|
+
async function removeGeneratedRuntimeWrapper(path) {
|
|
2456
|
+
try {
|
|
2457
|
+
const entry = await lstat7(path);
|
|
2458
|
+
if (!entry.isFile() && !entry.isSymbolicLink())
|
|
2459
|
+
return;
|
|
2460
|
+
const content = await readGeneratedWrapperContent(path);
|
|
2461
|
+
if (content.includes(RUNTIME_WRAPPER_MARKER))
|
|
2462
|
+
await rm9(path, { force: true });
|
|
2463
|
+
} catch (error) {
|
|
2464
|
+
if (isNodeErrorWithCode(error) && error.code === "ENOENT")
|
|
2465
|
+
return;
|
|
2466
|
+
throw error;
|
|
2467
|
+
}
|
|
2468
|
+
}
|
|
2469
|
+
async function readGeneratedWrapperContent(path) {
|
|
2470
|
+
try {
|
|
2471
|
+
return await readFile8(path, "utf8");
|
|
2472
|
+
} catch (error) {
|
|
2473
|
+
if (isNodeErrorWithCode(error) && (error.code === "ENOENT" || error.code === "EISDIR"))
|
|
2474
|
+
return "";
|
|
2475
|
+
throw error;
|
|
2476
|
+
}
|
|
2477
|
+
}
|
|
2305
2478
|
async function existingNonRuntimeWrapper(path) {
|
|
2306
2479
|
try {
|
|
2307
2480
|
const stat5 = await lstat7(path);
|
|
@@ -2826,6 +2999,24 @@ function stripUnquotedInlineComment3(line) {
|
|
|
2826
2999
|
|
|
2827
3000
|
// ../src/install/codex-config-reasoning.ts
|
|
2828
3001
|
var MANAGED_KEYS = ["model", "model_context_window", "model_reasoning_effort", "plan_mode_reasoning_effort"];
|
|
3002
|
+
var CODEX_REASONING_BY_UNIFIED_LEVEL = {
|
|
3003
|
+
off: "none",
|
|
3004
|
+
none: "none",
|
|
3005
|
+
minimal: "minimal",
|
|
3006
|
+
low: "low",
|
|
3007
|
+
medium: "medium",
|
|
3008
|
+
high: "high",
|
|
3009
|
+
xhigh: "xhigh",
|
|
3010
|
+
max: "max"
|
|
3011
|
+
};
|
|
3012
|
+
function applyReasoningOverride(catalog, reasoning) {
|
|
3013
|
+
if (reasoning === undefined)
|
|
3014
|
+
return catalog;
|
|
3015
|
+
const wireEffort = CODEX_REASONING_BY_UNIFIED_LEVEL[reasoning.trim().toLowerCase()];
|
|
3016
|
+
if (wireEffort === undefined)
|
|
3017
|
+
return catalog;
|
|
3018
|
+
return { ...catalog, current: { ...catalog.current, modelReasoningEffort: wireEffort } };
|
|
3019
|
+
}
|
|
2829
3020
|
function ensureCodexReasoningConfig(config, catalog) {
|
|
2830
3021
|
const current = readRootReasoningSettings(config);
|
|
2831
3022
|
if (Object.keys(current).length > 0 && !matchesProfile(current, catalog.current) && !catalog.managedProfiles.some((profile) => matchesProfile(current, profile))) {
|
|
@@ -3166,7 +3357,7 @@ async function updateCodexConfig(input) {
|
|
|
3166
3357
|
config = ensureFeatureEnabled(config, "plugin_hooks");
|
|
3167
3358
|
config = ensureFeatureEnabled(config, "multi_agent");
|
|
3168
3359
|
config = removeUnsupportedCodexMultiAgentModeConfig(config);
|
|
3169
|
-
config = ensureCodexReasoningConfig(config, await readCodexModelCatalog(input.repoRoot));
|
|
3360
|
+
config = ensureCodexReasoningConfig(config, applyReasoningOverride(await readCodexModelCatalog(input.repoRoot), input.reasoning));
|
|
3170
3361
|
config = ensureCodexMultiAgentV2Config(config, {
|
|
3171
3362
|
multiAgentVersion: resolveCodexMultiAgentVersion(config, input.configPath)
|
|
3172
3363
|
});
|
|
@@ -3356,13 +3547,13 @@ async function exists4(path) {
|
|
|
3356
3547
|
}
|
|
3357
3548
|
|
|
3358
3549
|
// ../src/install/codex-installer-bin-dir.ts
|
|
3359
|
-
import { homedir as
|
|
3550
|
+
import { homedir as homedir4 } from "node:os";
|
|
3360
3551
|
import { join as join20, resolve as resolve6 } from "node:path";
|
|
3361
3552
|
function resolveCodexInstallerBinDir(input) {
|
|
3362
3553
|
const explicitBinDir = input.binDir ?? input.env?.CODEX_LOCAL_BIN_DIR;
|
|
3363
3554
|
if (explicitBinDir !== undefined && explicitBinDir.trim().length > 0)
|
|
3364
3555
|
return resolve6(explicitBinDir.trim());
|
|
3365
|
-
const homeDir = input.homeDir ??
|
|
3556
|
+
const homeDir = input.homeDir ?? homedir4();
|
|
3366
3557
|
const defaultCodexHome = resolve6(homeDir, ".codex");
|
|
3367
3558
|
const resolvedCodexHome = resolve6(input.codexHome);
|
|
3368
3559
|
if (resolvedCodexHome !== defaultCodexHome)
|
|
@@ -3389,23 +3580,23 @@ function resolveGitBash(input) {
|
|
|
3389
3580
|
}
|
|
3390
3581
|
return missingGitBash(checkedPaths);
|
|
3391
3582
|
}
|
|
3392
|
-
for (const
|
|
3583
|
+
for (const candidate2 of [
|
|
3393
3584
|
{ path: PROGRAM_FILES_GIT_BASH, source: "program-files" },
|
|
3394
3585
|
{ path: PROGRAM_FILES_X86_GIT_BASH, source: "program-files-x86" }
|
|
3395
3586
|
]) {
|
|
3396
|
-
checkedPaths.push(
|
|
3397
|
-
if (input.exists(
|
|
3398
|
-
return { found: true, path:
|
|
3587
|
+
checkedPaths.push(candidate2.path);
|
|
3588
|
+
if (input.exists(candidate2.path))
|
|
3589
|
+
return { found: true, path: candidate2.path, source: candidate2.source, checkedPaths };
|
|
3399
3590
|
}
|
|
3400
3591
|
for (const pathCandidate of input.where("bash")) {
|
|
3401
|
-
const
|
|
3402
|
-
if (
|
|
3592
|
+
const candidate2 = pathCandidate.trim();
|
|
3593
|
+
if (candidate2.length === 0)
|
|
3403
3594
|
continue;
|
|
3404
|
-
checkedPaths.push(
|
|
3405
|
-
if (isKnownNonGitBashLauncher(
|
|
3595
|
+
checkedPaths.push(candidate2);
|
|
3596
|
+
if (isKnownNonGitBashLauncher(candidate2))
|
|
3406
3597
|
continue;
|
|
3407
|
-
if (isBashExePath(
|
|
3408
|
-
return { found: true, path:
|
|
3598
|
+
if (isBashExePath(candidate2) && input.exists(candidate2))
|
|
3599
|
+
return { found: true, path: candidate2, source: "path", checkedPaths };
|
|
3409
3600
|
}
|
|
3410
3601
|
return missingGitBash(checkedPaths);
|
|
3411
3602
|
}
|
|
@@ -3644,18 +3835,18 @@ async function linkRuntimeWrapperStep(options, binDir, degraded) {
|
|
|
3644
3835
|
if (linked !== null)
|
|
3645
3836
|
return;
|
|
3646
3837
|
degraded.push({
|
|
3647
|
-
component: "omo-
|
|
3648
|
-
hint: "use npx lazycodex-ai for the omo CLI",
|
|
3838
|
+
component: "omo-agent-toolkit",
|
|
3839
|
+
hint: "use npx lazycodex-ai for the omo-agent-toolkit CLI",
|
|
3649
3840
|
reason: "marketplace payload has no dist/cli"
|
|
3650
3841
|
});
|
|
3651
|
-
await appendBootstrapLog(options.pluginData, options.now ?? Date.now(), "omo-
|
|
3652
|
-
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`
|
|
3842
|
+
await appendBootstrapLog(options.pluginData, options.now ?? Date.now(), "omo-agent-toolkit-degraded", {
|
|
3843
|
+
warning: `Warning: skipped the omo-agent-toolkit runtime wrapper because ${cliPath} is missing; omo-agent-toolkit ulw-loop commands will be unavailable until a package shipping dist/cli is installed`
|
|
3653
3844
|
});
|
|
3654
3845
|
} catch (error) {
|
|
3655
3846
|
degraded.push({
|
|
3656
|
-
component: "omo-
|
|
3847
|
+
component: "omo-agent-toolkit",
|
|
3657
3848
|
hint: BOOTSTRAP_DOCTOR_HINT,
|
|
3658
|
-
reason: `failed to link the omo runtime wrapper into ${binDir}: ${errorMessage(error)}`
|
|
3849
|
+
reason: `failed to link the omo-agent-toolkit runtime wrapper into ${binDir}: ${errorMessage(error)}`
|
|
3659
3850
|
});
|
|
3660
3851
|
}
|
|
3661
3852
|
}
|
|
@@ -3734,7 +3925,7 @@ function resolvePluginDataRoot(env) {
|
|
|
3734
3925
|
const fromEnv = env["PLUGIN_DATA"]?.trim();
|
|
3735
3926
|
if (fromEnv !== undefined && fromEnv.length > 0)
|
|
3736
3927
|
return fromEnv;
|
|
3737
|
-
return join22(
|
|
3928
|
+
return join22(homedir5(), ".local", "share", "lazycodex");
|
|
3738
3929
|
}
|
|
3739
3930
|
async function readPluginVersion(pluginRoot) {
|
|
3740
3931
|
try {
|
|
@@ -3783,6 +3974,9 @@ async function runBootstrapWorker(options = {}) {
|
|
|
3783
3974
|
const platform = options.platform ?? process.platform;
|
|
3784
3975
|
const flags = parseWorkerFlags(options.argv ?? []);
|
|
3785
3976
|
const steps = options.steps ?? defaultWorkerSteps();
|
|
3977
|
+
if (flags.only !== undefined && !steps.some((step) => step.name === flags.only)) {
|
|
3978
|
+
throw new Error(`unknown --only flag value: ${flags.only}`);
|
|
3979
|
+
}
|
|
3786
3980
|
const pluginRoot = resolvePluginRoot(env);
|
|
3787
3981
|
const pluginData = resolvePluginDataRoot(env);
|
|
3788
3982
|
const statePath = resolveBootstrapStatePath(pluginData);
|
|
@@ -3858,10 +4052,10 @@ function parseDegradedEntries(raw) {
|
|
|
3858
4052
|
if (!Array.isArray(raw))
|
|
3859
4053
|
return;
|
|
3860
4054
|
const entries = [];
|
|
3861
|
-
for (const
|
|
3862
|
-
if (typeof
|
|
4055
|
+
for (const candidate2 of raw) {
|
|
4056
|
+
if (typeof candidate2 !== "object" || candidate2 === null)
|
|
3863
4057
|
continue;
|
|
3864
|
-
const record =
|
|
4058
|
+
const record = candidate2;
|
|
3865
4059
|
if (typeof record["component"] !== "string" || typeof record["reason"] !== "string")
|
|
3866
4060
|
continue;
|
|
3867
4061
|
entries.push({
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
|
|
9
9
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
|
|
10
10
|
"timeout": 30,
|
|
11
|
-
"statusMessage": "(OmO
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.1) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|