oh-my-opencode 4.19.4 → 5.0.0-beta.2
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/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/cli/index.js +1452 -703
- package/dist/cli-node/index.js +1452 -703
- package/dist/config/schema/agent-overrides.d.ts +528 -0
- package/dist/config/schema/oh-my-opencode-config.d.ts +495 -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/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 +2776 -2240
- package/dist/mcp/lsp.d.ts +1 -0
- package/dist/oh-my-opencode.schema.json +1466 -131
- 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/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 +1 -1
- 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 +15 -10
- package/dist/tui.js +307 -28
- package/docs/reference/web-terminal-visual-qa.md +1 -1
- package/package.json +27 -19
- 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 +268 -92
- 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 +106 -6
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +106 -6
- package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
- 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/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +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 +1 -1
- 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 +4 -4
- 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/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 +1 -1
- 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 +15 -10
- 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 +4 -4
- 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 +115 -61
- 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/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 +1 -1
- 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 +15 -10
- package/postinstall.mjs +6 -0
package/dist/tui.js
CHANGED
|
@@ -18836,6 +18836,80 @@ var init_codegraph = __esm(() => {
|
|
|
18836
18836
|
}).strict();
|
|
18837
18837
|
});
|
|
18838
18838
|
|
|
18839
|
+
// packages/omo-config-core/src/schema/memory.ts
|
|
18840
|
+
var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
|
|
18841
|
+
var init_memory = __esm(() => {
|
|
18842
|
+
init_zod();
|
|
18843
|
+
OmoMemoryReflectionTriggerSchema = object({
|
|
18844
|
+
step_count: number2().int().nonnegative().default(0),
|
|
18845
|
+
on_compaction: boolean2().default(true)
|
|
18846
|
+
}).strict();
|
|
18847
|
+
OmoMemoryReflectionSchema = object({
|
|
18848
|
+
trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 0, on_compaction: true }),
|
|
18849
|
+
merge: _enum2(["auto", "integration"]).default("auto"),
|
|
18850
|
+
category: string2().min(1).default("quick"),
|
|
18851
|
+
timeout_minutes: number2().int().positive().default(15),
|
|
18852
|
+
sandbox: _enum2(["auto", "required", "off"]).default("auto")
|
|
18853
|
+
}).strict();
|
|
18854
|
+
OmoMemorySyncSchema = object({
|
|
18855
|
+
remote: string2().min(1).optional(),
|
|
18856
|
+
enabled: boolean2().default(true)
|
|
18857
|
+
}).strict();
|
|
18858
|
+
OmoMemorySearchSchema = object({
|
|
18859
|
+
enabled: boolean2().default(true)
|
|
18860
|
+
}).strict();
|
|
18861
|
+
OmoMemoryReflectionTriggerLayerSchema = object({
|
|
18862
|
+
step_count: number2().int().nonnegative().optional(),
|
|
18863
|
+
on_compaction: boolean2().optional()
|
|
18864
|
+
}).strict();
|
|
18865
|
+
OmoMemoryReflectionLayerSchema = object({
|
|
18866
|
+
trigger: OmoMemoryReflectionTriggerLayerSchema.optional(),
|
|
18867
|
+
merge: _enum2(["auto", "integration"]).optional(),
|
|
18868
|
+
category: string2().min(1).optional(),
|
|
18869
|
+
timeout_minutes: number2().int().positive().optional(),
|
|
18870
|
+
sandbox: _enum2(["auto", "required", "off"]).optional()
|
|
18871
|
+
}).strict();
|
|
18872
|
+
OmoMemorySyncLayerSchema = object({
|
|
18873
|
+
remote: string2().min(1).optional(),
|
|
18874
|
+
enabled: boolean2().optional()
|
|
18875
|
+
}).strict();
|
|
18876
|
+
OmoMemorySearchLayerSchema = object({
|
|
18877
|
+
enabled: boolean2().optional()
|
|
18878
|
+
}).strict();
|
|
18879
|
+
OmoMemoryAgentOverridesSchema = object({
|
|
18880
|
+
enabled: boolean2().optional(),
|
|
18881
|
+
agent: string2().min(1).optional(),
|
|
18882
|
+
reflection: OmoMemoryReflectionLayerSchema.optional(),
|
|
18883
|
+
sync: OmoMemorySyncLayerSchema.optional(),
|
|
18884
|
+
search: OmoMemorySearchLayerSchema.optional(),
|
|
18885
|
+
compile_warn_tokens: number2().int().positive().optional()
|
|
18886
|
+
}).strict();
|
|
18887
|
+
OmoMemorySettingsSchema = object({
|
|
18888
|
+
enabled: boolean2().default(true),
|
|
18889
|
+
agent: string2().min(1).default("auto"),
|
|
18890
|
+
reflection: OmoMemoryReflectionSchema.default({
|
|
18891
|
+
trigger: { step_count: 0, on_compaction: true },
|
|
18892
|
+
merge: "auto",
|
|
18893
|
+
category: "quick",
|
|
18894
|
+
timeout_minutes: 15,
|
|
18895
|
+
sandbox: "auto"
|
|
18896
|
+
}),
|
|
18897
|
+
sync: OmoMemorySyncSchema.default({ enabled: true }),
|
|
18898
|
+
search: OmoMemorySearchSchema.default({ enabled: true }),
|
|
18899
|
+
compile_warn_tokens: number2().int().positive().default(30000),
|
|
18900
|
+
agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
|
|
18901
|
+
}).strict();
|
|
18902
|
+
OmoMemorySettingsLayerSchema = object({
|
|
18903
|
+
enabled: boolean2().optional(),
|
|
18904
|
+
agent: string2().min(1).optional(),
|
|
18905
|
+
reflection: OmoMemoryReflectionLayerSchema.optional(),
|
|
18906
|
+
sync: OmoMemorySyncLayerSchema.optional(),
|
|
18907
|
+
search: OmoMemorySearchLayerSchema.optional(),
|
|
18908
|
+
compile_warn_tokens: number2().int().positive().optional(),
|
|
18909
|
+
agents: record(string2(), OmoMemoryAgentOverridesSchema).optional()
|
|
18910
|
+
}).strict();
|
|
18911
|
+
});
|
|
18912
|
+
|
|
18839
18913
|
// packages/omo-config-core/src/schema/model-catalog.ts
|
|
18840
18914
|
function isRecord5(value) {
|
|
18841
18915
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -18859,9 +18933,18 @@ var init_model_catalog = __esm(() => {
|
|
|
18859
18933
|
});
|
|
18860
18934
|
|
|
18861
18935
|
// packages/omo-config-core/src/schema/task.ts
|
|
18862
|
-
|
|
18936
|
+
import { availableParallelism } from "os";
|
|
18937
|
+
function resolveOmoTaskSettings(input, resolveParallelism = availableParallelism) {
|
|
18938
|
+
const record2 = record(string2(), unknown()).parse(input);
|
|
18939
|
+
return OmoTaskSettingsSchema.parse({
|
|
18940
|
+
...record2,
|
|
18941
|
+
residency_max_children: record2["residency_max_children"] ?? Math.max(8, resolveParallelism() * 3)
|
|
18942
|
+
});
|
|
18943
|
+
}
|
|
18944
|
+
var ResidencyMaxChildrenInputSchema, OmoTaskWaitSchema, OmoTaskTeamSettingsSchema, OmoTaskWarningsSchema, OmoTaskSettingsSchema, OmoTaskWaitLayerSchema, OmoTaskTeamSettingsLayerSchema, OmoTaskWarningsLayerSchema, OmoTaskSettingsLayerSchema;
|
|
18863
18945
|
var init_task = __esm(() => {
|
|
18864
18946
|
init_zod();
|
|
18947
|
+
ResidencyMaxChildrenInputSchema = union([number2().int().positive(), literal("unlimited")]);
|
|
18865
18948
|
OmoTaskWaitSchema = object({
|
|
18866
18949
|
min_ms: number2().int().positive().default(5000),
|
|
18867
18950
|
default_ms: number2().int().positive().default(60000),
|
|
@@ -18881,10 +18964,11 @@ var init_task = __esm(() => {
|
|
|
18881
18964
|
provider_concurrency: record(string2(), number2().int().positive()).optional(),
|
|
18882
18965
|
model_concurrency: record(string2(), number2().int().positive()).optional(),
|
|
18883
18966
|
max_depth: number2().int().nonnegative().default(1),
|
|
18884
|
-
residency_max_children:
|
|
18967
|
+
residency_max_children: ResidencyMaxChildrenInputSchema.default(8),
|
|
18885
18968
|
ttl_ms: number2().int().positive().default(86400000),
|
|
18886
18969
|
state_dir: string2().optional(),
|
|
18887
18970
|
reattach_on_reconcile: boolean2().optional(),
|
|
18971
|
+
resume_children: boolean2().default(true),
|
|
18888
18972
|
warnings: OmoTaskWarningsSchema.default({ unavailable_categories: true }),
|
|
18889
18973
|
wait: OmoTaskWaitSchema.default({ min_ms: 5000, default_ms: 60000, max_ms: 600000 }),
|
|
18890
18974
|
team: OmoTaskTeamSettingsSchema.default({
|
|
@@ -18912,10 +18996,11 @@ var init_task = __esm(() => {
|
|
|
18912
18996
|
provider_concurrency: record(string2(), number2().int().positive()).optional(),
|
|
18913
18997
|
model_concurrency: record(string2(), number2().int().positive()).optional(),
|
|
18914
18998
|
max_depth: number2().int().nonnegative().optional(),
|
|
18915
|
-
residency_max_children:
|
|
18999
|
+
residency_max_children: ResidencyMaxChildrenInputSchema.optional(),
|
|
18916
19000
|
ttl_ms: number2().int().positive().optional(),
|
|
18917
19001
|
state_dir: string2().optional(),
|
|
18918
19002
|
reattach_on_reconcile: boolean2().optional(),
|
|
19003
|
+
resume_children: boolean2().optional(),
|
|
18919
19004
|
warnings: OmoTaskWarningsLayerSchema.optional(),
|
|
18920
19005
|
wait: OmoTaskWaitLayerSchema.optional(),
|
|
18921
19006
|
team: OmoTaskTeamSettingsLayerSchema.optional()
|
|
@@ -18980,6 +19065,7 @@ var init_config = __esm(() => {
|
|
|
18980
19065
|
init_agent();
|
|
18981
19066
|
init_category();
|
|
18982
19067
|
init_codegraph();
|
|
19068
|
+
init_memory();
|
|
18983
19069
|
init_model_catalog();
|
|
18984
19070
|
init_task();
|
|
18985
19071
|
init_team();
|
|
@@ -18990,7 +19076,8 @@ var init_config = __esm(() => {
|
|
|
18990
19076
|
codegraph: OmoCodegraphSettingsLayerSchema.optional(),
|
|
18991
19077
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
18992
19078
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
18993
|
-
models: OmoModelCatalogLayerSchema.optional()
|
|
19079
|
+
models: OmoModelCatalogLayerSchema.optional(),
|
|
19080
|
+
memory: OmoMemorySettingsLayerSchema.optional()
|
|
18994
19081
|
}).strict();
|
|
18995
19082
|
OmoConfigProfileSchema = object({
|
|
18996
19083
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
@@ -18999,6 +19086,7 @@ var init_config = __esm(() => {
|
|
|
18999
19086
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
19000
19087
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
19001
19088
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
19089
|
+
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
19002
19090
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
19003
19091
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
19004
19092
|
"[codex]": OmoTypedHarnessConfigSchema.optional()
|
|
@@ -19011,6 +19099,7 @@ var init_config = __esm(() => {
|
|
|
19011
19099
|
task: OmoTaskSettingsSchema.optional(),
|
|
19012
19100
|
teams: OmoTeamsConfigSchema.optional(),
|
|
19013
19101
|
models: OmoModelCatalogSchema.optional(),
|
|
19102
|
+
memory: OmoMemorySettingsSchema.optional(),
|
|
19014
19103
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
19015
19104
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
19016
19105
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -19026,6 +19115,7 @@ var init_config = __esm(() => {
|
|
|
19026
19115
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
19027
19116
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
19028
19117
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
19118
|
+
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
19029
19119
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
19030
19120
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
19031
19121
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -19043,6 +19133,7 @@ var init_schema = __esm(() => {
|
|
|
19043
19133
|
init_config();
|
|
19044
19134
|
init_fallback_models();
|
|
19045
19135
|
init_harness();
|
|
19136
|
+
init_memory();
|
|
19046
19137
|
init_model_catalog();
|
|
19047
19138
|
init_model_ref();
|
|
19048
19139
|
init_task();
|
|
@@ -19404,7 +19495,7 @@ var init_loader = __esm(() => {
|
|
|
19404
19495
|
agents: {},
|
|
19405
19496
|
categories: {},
|
|
19406
19497
|
codegraph: OmoCodegraphSettingsSchema.parse({}),
|
|
19407
|
-
task:
|
|
19498
|
+
task: resolveOmoTaskSettings({}),
|
|
19408
19499
|
teams: {}
|
|
19409
19500
|
};
|
|
19410
19501
|
});
|
|
@@ -19674,17 +19765,31 @@ var init_archive_entry_validator = () => {};
|
|
|
19674
19765
|
// packages/utils/src/ast-grep/sg-manifest.ts
|
|
19675
19766
|
var init_sg_manifest = () => {};
|
|
19676
19767
|
|
|
19768
|
+
// packages/utils/src/ast-grep/install-script.ts
|
|
19769
|
+
var init_install_script = () => {};
|
|
19770
|
+
|
|
19771
|
+
// packages/utils/src/ast-grep/types.ts
|
|
19772
|
+
var SG_PATH_ENV_KEY = "OMO_AST_GREP_SG_PATH";
|
|
19773
|
+
|
|
19774
|
+
// packages/utils/src/ast-grep/sg-candidates.ts
|
|
19775
|
+
var init_sg_candidates = () => {};
|
|
19776
|
+
|
|
19777
|
+
// packages/utils/src/ast-grep/sg-install-hints.ts
|
|
19778
|
+
var ENV_OVERRIDE_HINT;
|
|
19779
|
+
var init_sg_install_hints = __esm(() => {
|
|
19780
|
+
ENV_OVERRIDE_HINT = `Or point ${SG_PATH_ENV_KEY} at an existing ast-grep binary`;
|
|
19781
|
+
});
|
|
19782
|
+
|
|
19677
19783
|
// packages/utils/src/ast-grep/sg-provisioner.ts
|
|
19678
19784
|
var init_sg_provisioner = () => {};
|
|
19679
19785
|
|
|
19680
19786
|
// packages/utils/src/ast-grep/sg-resolver.ts
|
|
19681
19787
|
var init_sg_resolver = () => {};
|
|
19682
19788
|
|
|
19683
|
-
// packages/utils/src/ast-grep/install-script.ts
|
|
19684
|
-
var init_install_script = () => {};
|
|
19685
|
-
|
|
19686
19789
|
// packages/utils/src/ast-grep/index.ts
|
|
19687
19790
|
var init_ast_grep = __esm(() => {
|
|
19791
|
+
init_sg_candidates();
|
|
19792
|
+
init_sg_install_hints();
|
|
19688
19793
|
init_sg_manifest();
|
|
19689
19794
|
init_sg_provisioner();
|
|
19690
19795
|
init_sg_resolver();
|
|
@@ -21050,9 +21155,71 @@ function normalizeModelID(modelID) {
|
|
|
21050
21155
|
return modelID.replace(/\.(\d+)/g, "-$1");
|
|
21051
21156
|
}
|
|
21052
21157
|
|
|
21158
|
+
// packages/model-core/src/reasoning-level.ts
|
|
21159
|
+
function isReasoningLevelOrAuto(value) {
|
|
21160
|
+
return REASONING_LEVEL_OR_AUTO_SET2.has(value);
|
|
21161
|
+
}
|
|
21162
|
+
function splitReasoningSuffix2(model, options) {
|
|
21163
|
+
if (typeof model !== "string")
|
|
21164
|
+
return { base: "" };
|
|
21165
|
+
const trimmed = model.trim();
|
|
21166
|
+
if (!trimmed)
|
|
21167
|
+
return { base: "" };
|
|
21168
|
+
const separatorIndex = trimmed.lastIndexOf(":");
|
|
21169
|
+
if (separatorIndex === -1)
|
|
21170
|
+
return { base: trimmed };
|
|
21171
|
+
const base = trimmed.slice(0, separatorIndex).trim();
|
|
21172
|
+
const token = trimmed.slice(separatorIndex + 1).trim().toLowerCase();
|
|
21173
|
+
if (!base || !isReasoningLevelOrAuto(token))
|
|
21174
|
+
return { base: trimmed };
|
|
21175
|
+
if (token === "max" && !(options?.allowMaxSuffix ?? base.includes("/")))
|
|
21176
|
+
return { base: trimmed };
|
|
21177
|
+
return { base, level: token };
|
|
21178
|
+
}
|
|
21179
|
+
var REASONING_LEVELS2, REASONING_AUTO2 = "auto", REASONING_LEVEL_SET2, REASONING_LEVEL_OR_AUTO_SET2;
|
|
21180
|
+
var init_reasoning_level = __esm(() => {
|
|
21181
|
+
REASONING_LEVELS2 = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
21182
|
+
REASONING_LEVEL_SET2 = new Set(REASONING_LEVELS2);
|
|
21183
|
+
REASONING_LEVEL_OR_AUTO_SET2 = new Set([...REASONING_LEVELS2, REASONING_AUTO2]);
|
|
21184
|
+
});
|
|
21185
|
+
|
|
21186
|
+
// packages/model-core/src/model-string-parser.ts
|
|
21187
|
+
function parseVariantFromModelID(rawModelID, options) {
|
|
21188
|
+
if (typeof rawModelID !== "string") {
|
|
21189
|
+
return { modelID: "" };
|
|
21190
|
+
}
|
|
21191
|
+
const trimmedModelID = rawModelID.trim();
|
|
21192
|
+
if (!trimmedModelID) {
|
|
21193
|
+
return { modelID: "" };
|
|
21194
|
+
}
|
|
21195
|
+
const parenthesizedVariant = trimmedModelID.match(/^(.*)\(([^()]+)\)\s*$/);
|
|
21196
|
+
if (parenthesizedVariant) {
|
|
21197
|
+
const modelID = parenthesizedVariant[1]?.trim() ?? "";
|
|
21198
|
+
const variant = parenthesizedVariant[2]?.trim();
|
|
21199
|
+
return variant ? { modelID, variant } : { modelID };
|
|
21200
|
+
}
|
|
21201
|
+
const suffixedModel = splitReasoningSuffix2(trimmedModelID, options);
|
|
21202
|
+
if (suffixedModel.level) {
|
|
21203
|
+
return { modelID: suffixedModel.base, variant: suffixedModel.level };
|
|
21204
|
+
}
|
|
21205
|
+
const spaceVariant = trimmedModelID.match(/^(.*\S)\s+([a-z][a-z0-9_-]*)$/i);
|
|
21206
|
+
if (spaceVariant) {
|
|
21207
|
+
const modelID = spaceVariant[1]?.trim() ?? "";
|
|
21208
|
+
const variant = spaceVariant[2]?.trim().toLowerCase();
|
|
21209
|
+
if (variant) {
|
|
21210
|
+
return { modelID, variant };
|
|
21211
|
+
}
|
|
21212
|
+
}
|
|
21213
|
+
return { modelID: trimmedModelID };
|
|
21214
|
+
}
|
|
21215
|
+
var init_model_string_parser = __esm(() => {
|
|
21216
|
+
init_reasoning_level();
|
|
21217
|
+
});
|
|
21218
|
+
|
|
21053
21219
|
// packages/model-core/src/model-capability-heuristics.ts
|
|
21054
21220
|
function detectHeuristicModelFamily(modelID) {
|
|
21055
|
-
const
|
|
21221
|
+
const parsedModel = parseVariantFromModelID(modelID, { allowMaxSuffix: true });
|
|
21222
|
+
const normalizedModelID = normalizeModelID(parsedModel.modelID).toLowerCase();
|
|
21056
21223
|
for (const definition of HEURISTIC_MODEL_FAMILY_REGISTRY) {
|
|
21057
21224
|
if (definition.pattern?.test(normalizedModelID)) {
|
|
21058
21225
|
return definition;
|
|
@@ -21065,6 +21232,7 @@ function detectHeuristicModelFamily(modelID) {
|
|
|
21065
21232
|
}
|
|
21066
21233
|
var HEURISTIC_MODEL_FAMILY_REGISTRY;
|
|
21067
21234
|
var init_model_capability_heuristics = __esm(() => {
|
|
21235
|
+
init_model_string_parser();
|
|
21068
21236
|
HEURISTIC_MODEL_FAMILY_REGISTRY = [
|
|
21069
21237
|
{
|
|
21070
21238
|
family: "claude-opus",
|
|
@@ -21078,11 +21246,19 @@ var init_model_capability_heuristics = __esm(() => {
|
|
|
21078
21246
|
variants: ["low", "medium", "high"],
|
|
21079
21247
|
supportsThinking: true
|
|
21080
21248
|
},
|
|
21249
|
+
{
|
|
21250
|
+
family: "openai-deep-research",
|
|
21251
|
+
includes: ["o3-deep-research", "o4-mini-deep-research"],
|
|
21252
|
+
variants: ["low", "medium", "high"],
|
|
21253
|
+
reasoningEfforts: ["none", "minimal", "low", "medium", "high"],
|
|
21254
|
+
supportsTemperature: true
|
|
21255
|
+
},
|
|
21081
21256
|
{
|
|
21082
21257
|
family: "openai-reasoning",
|
|
21083
21258
|
pattern: /(?:^|\/)o\d(?:$|-)/,
|
|
21084
21259
|
variants: ["low", "medium", "high"],
|
|
21085
|
-
reasoningEfforts: ["none", "minimal", "low", "medium", "high"]
|
|
21260
|
+
reasoningEfforts: ["none", "minimal", "low", "medium", "high"],
|
|
21261
|
+
supportsTemperature: false
|
|
21086
21262
|
},
|
|
21087
21263
|
{
|
|
21088
21264
|
family: "gpt-5",
|
|
@@ -21126,7 +21302,13 @@ var init_model_capability_heuristics = __esm(() => {
|
|
|
21126
21302
|
{
|
|
21127
21303
|
family: "glm",
|
|
21128
21304
|
includes: ["glm"],
|
|
21129
|
-
variants: ["low", "medium", "high"]
|
|
21305
|
+
variants: ["low", "medium", "high", "max"],
|
|
21306
|
+
reasoningEfforts: ["high", "max"],
|
|
21307
|
+
reasoningEffortAliases: {
|
|
21308
|
+
low: "high",
|
|
21309
|
+
medium: "high",
|
|
21310
|
+
xhigh: "max"
|
|
21311
|
+
}
|
|
21130
21312
|
},
|
|
21131
21313
|
{
|
|
21132
21314
|
family: "minimax",
|
|
@@ -21161,14 +21343,6 @@ var init_model_capability_heuristics = __esm(() => {
|
|
|
21161
21343
|
// packages/model-core/src/model-capability-guardrails.ts
|
|
21162
21344
|
var init_model_capability_guardrails = () => {};
|
|
21163
21345
|
|
|
21164
|
-
// packages/model-core/src/reasoning-level.ts
|
|
21165
|
-
var REASONING_LEVELS2, REASONING_AUTO2 = "auto", REASONING_LEVEL_SET2, REASONING_LEVEL_OR_AUTO_SET2;
|
|
21166
|
-
var init_reasoning_level = __esm(() => {
|
|
21167
|
-
REASONING_LEVELS2 = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
21168
|
-
REASONING_LEVEL_SET2 = new Set(REASONING_LEVELS2);
|
|
21169
|
-
REASONING_LEVEL_OR_AUTO_SET2 = new Set([...REASONING_LEVELS2, REASONING_AUTO2]);
|
|
21170
|
-
});
|
|
21171
|
-
|
|
21172
21346
|
// packages/model-core/src/model-settings-compatibility.ts
|
|
21173
21347
|
var init_model_settings_compatibility = () => {};
|
|
21174
21348
|
|
|
@@ -21182,9 +21356,6 @@ function normalizeFallbackModels(models2) {
|
|
|
21182
21356
|
}
|
|
21183
21357
|
var init_model_resolver = () => {};
|
|
21184
21358
|
|
|
21185
|
-
// packages/model-core/src/model-string-parser.ts
|
|
21186
|
-
var init_model_string_parser = () => {};
|
|
21187
|
-
|
|
21188
21359
|
// packages/model-core/src/fallback-chain-from-models.ts
|
|
21189
21360
|
var init_fallback_chain_from_models = () => {};
|
|
21190
21361
|
|
|
@@ -21500,14 +21671,89 @@ function getProviderOverride(providerID, modelID) {
|
|
|
21500
21671
|
return;
|
|
21501
21672
|
return GITHUB_COPILOT_GPT5_MODEL.test(normalizeLookupModelID2(modelID)) ? GITHUB_COPILOT_GPT5_OVERRIDE : undefined;
|
|
21502
21673
|
}
|
|
21674
|
+
function stripSameProviderPrefix(providerID, modelID) {
|
|
21675
|
+
const prefix = `${providerID.trim()}/`;
|
|
21676
|
+
return prefix !== "/" && modelID.slice(0, prefix.length).toLowerCase() === prefix.toLowerCase() ? modelID.slice(prefix.length) : undefined;
|
|
21677
|
+
}
|
|
21678
|
+
function buildLookupCandidates(providerID, modelID) {
|
|
21679
|
+
const bareModelID = parseVariantFromModelID(modelID, { allowMaxSuffix: true }).modelID;
|
|
21680
|
+
const candidates = [
|
|
21681
|
+
modelID,
|
|
21682
|
+
stripSameProviderPrefix(providerID, modelID),
|
|
21683
|
+
bareModelID,
|
|
21684
|
+
stripSameProviderPrefix(providerID, bareModelID)
|
|
21685
|
+
];
|
|
21686
|
+
const uniqueCandidates = [];
|
|
21687
|
+
const seen = new Set;
|
|
21688
|
+
for (const candidate of candidates) {
|
|
21689
|
+
if (!candidate || seen.has(candidate))
|
|
21690
|
+
continue;
|
|
21691
|
+
seen.add(candidate);
|
|
21692
|
+
uniqueCandidates.push(candidate);
|
|
21693
|
+
}
|
|
21694
|
+
return uniqueCandidates;
|
|
21695
|
+
}
|
|
21696
|
+
function findProviderMetadata(providerCache, providerID, modelID) {
|
|
21697
|
+
if (!providerCache)
|
|
21698
|
+
return;
|
|
21699
|
+
for (const candidate of buildLookupCandidates(providerID, modelID)) {
|
|
21700
|
+
const match = providerCache.findProviderModelMetadata(providerID, candidate);
|
|
21701
|
+
if (match)
|
|
21702
|
+
return match;
|
|
21703
|
+
}
|
|
21704
|
+
return;
|
|
21705
|
+
}
|
|
21706
|
+
function findSnapshotEntry(snapshot, providerID, modelIDs) {
|
|
21707
|
+
if (!snapshot)
|
|
21708
|
+
return;
|
|
21709
|
+
const normalizedProviderID = providerID.trim();
|
|
21710
|
+
const providerSpecificCandidates = [];
|
|
21711
|
+
const generalCandidates = [];
|
|
21712
|
+
for (const modelID of modelIDs) {
|
|
21713
|
+
const strippedModelID = stripSameProviderPrefix(providerID, modelID);
|
|
21714
|
+
const unqualifiedModelID = strippedModelID ?? (modelID.includes("/") ? undefined : modelID);
|
|
21715
|
+
if (!unqualifiedModelID) {
|
|
21716
|
+
generalCandidates.push(...buildLookupCandidates(providerID, modelID));
|
|
21717
|
+
continue;
|
|
21718
|
+
}
|
|
21719
|
+
const bareModelID = parseVariantFromModelID(unqualifiedModelID, { allowMaxSuffix: true }).modelID;
|
|
21720
|
+
if (normalizedProviderID) {
|
|
21721
|
+
providerSpecificCandidates.push(`${normalizedProviderID}/${unqualifiedModelID}`, `${normalizedProviderID}/${bareModelID}`);
|
|
21722
|
+
}
|
|
21723
|
+
generalCandidates.push(unqualifiedModelID, bareModelID);
|
|
21724
|
+
}
|
|
21725
|
+
const seen = new Set;
|
|
21726
|
+
for (const candidate of [...providerSpecificCandidates, ...generalCandidates]) {
|
|
21727
|
+
if (seen.has(candidate))
|
|
21728
|
+
continue;
|
|
21729
|
+
seen.add(candidate);
|
|
21730
|
+
const entry = snapshot.models[candidate];
|
|
21731
|
+
if (entry)
|
|
21732
|
+
return entry;
|
|
21733
|
+
}
|
|
21734
|
+
return;
|
|
21735
|
+
}
|
|
21736
|
+
function resolveCapabilityModelAlias(modelID, providerID) {
|
|
21737
|
+
const direct = resolveModelIDAlias(modelID, providerID);
|
|
21738
|
+
if (direct.source !== "canonical")
|
|
21739
|
+
return direct;
|
|
21740
|
+
const bareModelID = parseVariantFromModelID(modelID, { allowMaxSuffix: true }).modelID;
|
|
21741
|
+
if (bareModelID === modelID)
|
|
21742
|
+
return direct;
|
|
21743
|
+
const bareAlias = resolveModelIDAlias(bareModelID, providerID);
|
|
21744
|
+
return bareAlias.source === "canonical" ? direct : { ...bareAlias, requestedModelID: modelID };
|
|
21745
|
+
}
|
|
21503
21746
|
function getModelCapabilities(input) {
|
|
21504
|
-
const canonicalization =
|
|
21747
|
+
const canonicalization = resolveCapabilityModelAlias(input.modelID, input.providerID);
|
|
21505
21748
|
const override = getOverride(input.modelID);
|
|
21506
21749
|
const providerOverride = getProviderOverride(input.providerID, canonicalization.canonicalModelID);
|
|
21507
|
-
const runtimeModel = readRuntimeModel(input.runtimeModel ?? input.providerCache
|
|
21750
|
+
const runtimeModel = readRuntimeModel(input.runtimeModel ?? findProviderMetadata(input.providerCache, input.providerID, input.modelID));
|
|
21508
21751
|
const runtimeSnapshot = input.runtimeSnapshot;
|
|
21509
21752
|
const bundledSnapshot = input.bundledSnapshot;
|
|
21510
|
-
const
|
|
21753
|
+
const snapshotModelIDs = canonicalization.source === "canonical" ? [input.modelID, canonicalization.canonicalModelID] : [canonicalization.canonicalModelID, input.modelID];
|
|
21754
|
+
const runtimeSnapshotEntry = findSnapshotEntry(runtimeSnapshot, input.providerID, snapshotModelIDs);
|
|
21755
|
+
const bundledSnapshotEntry = findSnapshotEntry(bundledSnapshot, input.providerID, snapshotModelIDs);
|
|
21756
|
+
const snapshotEntry = runtimeSnapshotEntry ?? bundledSnapshotEntry;
|
|
21511
21757
|
const heuristicFamily = detectHeuristicModelFamily(canonicalization.canonicalModelID);
|
|
21512
21758
|
const runtimeVariants = readRuntimeModelVariants(runtimeModel);
|
|
21513
21759
|
const runtimeReasoning = readRuntimeModelReasoningSupport(runtimeModel);
|
|
@@ -21517,7 +21763,7 @@ function getModelCapabilities(input) {
|
|
|
21517
21763
|
const runtimeMaxOutputTokens = readRuntimeModelLimitOutput(runtimeModel);
|
|
21518
21764
|
const runtimeToolCall = readRuntimeModelToolCallSupport(runtimeModel);
|
|
21519
21765
|
const runtimeModalities = readRuntimeModelModalities(runtimeModel);
|
|
21520
|
-
const snapshotSource =
|
|
21766
|
+
const snapshotSource = runtimeSnapshotEntry ? "runtime-snapshot" : bundledSnapshotEntry ? "bundled-snapshot" : "none";
|
|
21521
21767
|
const familySource = snapshotEntry?.family ? "snapshot" : heuristicFamily?.family ? "heuristic" : "none";
|
|
21522
21768
|
const variantsSource = runtimeVariants ? "runtime" : providerOverride?.variants ? "override" : override?.variants ? "override" : heuristicFamily?.variants ? "heuristic" : "none";
|
|
21523
21769
|
const reasoningEffortsSource = providerOverride?.reasoningEfforts ? "override" : override?.reasoningEfforts ? "override" : heuristicFamily?.reasoningEfforts ? "heuristic" : "none";
|
|
@@ -21566,6 +21812,7 @@ var MODEL_ID_OVERRIDES, GITHUB_COPILOT_GPT5_MODEL, GITHUB_COPILOT_GPT5_OVERRIDE;
|
|
|
21566
21812
|
var init_get_model_capabilities = __esm(() => {
|
|
21567
21813
|
init_model_capability_aliases();
|
|
21568
21814
|
init_model_capability_heuristics();
|
|
21815
|
+
init_model_string_parser();
|
|
21569
21816
|
MODEL_ID_OVERRIDES = {};
|
|
21570
21817
|
GITHUB_COPILOT_GPT5_MODEL = /(?:^|\/)gpt-5(?:[.-]|$)/;
|
|
21571
21818
|
GITHUB_COPILOT_GPT5_OVERRIDE = {
|
|
@@ -22169,7 +22416,7 @@ function recordFields(value, fields) {
|
|
|
22169
22416
|
}
|
|
22170
22417
|
function modelInput(view) {
|
|
22171
22418
|
const agents = isPlainRecord(view.agents) ? Object.fromEntries(Object.entries(view.agents).flatMap(([name, definition]) => {
|
|
22172
|
-
const fields = recordFields(definition, ["description", "prompt", "model", "variant", "reasoningEffort", "tools", "temperature", "disable"]);
|
|
22419
|
+
const fields = recordFields(definition, ["description", "prompt", "model", "models", "variant", "reasoningEffort", "tools", "temperature", "disable"]);
|
|
22173
22420
|
return fields === undefined ? [] : [[name, fields]];
|
|
22174
22421
|
})) : undefined;
|
|
22175
22422
|
const categories = isPlainRecord(view.categories) ? Object.fromEntries(Object.entries(view.categories).flatMap(([name, definition]) => {
|
|
@@ -22452,6 +22699,7 @@ var init_agent_overrides = __esm(() => {
|
|
|
22452
22699
|
init_permission();
|
|
22453
22700
|
AgentOverrideConfigSchema = exports_external.object({
|
|
22454
22701
|
model: exports_external.string().optional(),
|
|
22702
|
+
models: exports_external.array(exports_external.union([exports_external.string(), FallbackModelObjectSchema])).optional(),
|
|
22455
22703
|
fallback_models: FallbackModelsSchema.optional(),
|
|
22456
22704
|
reasoning: OmoReasoningSchema.optional(),
|
|
22457
22705
|
variant: exports_external.string().optional(),
|
|
@@ -23370,6 +23618,37 @@ function protectUserFields(config4, userConfig) {
|
|
|
23370
23618
|
}
|
|
23371
23619
|
};
|
|
23372
23620
|
}
|
|
23621
|
+
function materializeAgentModelChains(config4) {
|
|
23622
|
+
if (config4.agents === undefined)
|
|
23623
|
+
return config4;
|
|
23624
|
+
let changed = false;
|
|
23625
|
+
const agents = Object.fromEntries(Object.entries(config4.agents).map(([name, agent2]) => {
|
|
23626
|
+
if (agent2?.models === undefined)
|
|
23627
|
+
return [name, agent2];
|
|
23628
|
+
const [primary, ...fallbacks] = agent2.models;
|
|
23629
|
+
const {
|
|
23630
|
+
models: _models,
|
|
23631
|
+
model: _model,
|
|
23632
|
+
fallback_models: _fallbackModels,
|
|
23633
|
+
reasoning: _reasoning,
|
|
23634
|
+
variant: _variant,
|
|
23635
|
+
reasoningEffort: _reasoningEffort,
|
|
23636
|
+
temperature: _temperature,
|
|
23637
|
+
top_p: _topP,
|
|
23638
|
+
maxTokens: _maxTokens,
|
|
23639
|
+
thinking: _thinking,
|
|
23640
|
+
...rest
|
|
23641
|
+
} = agent2;
|
|
23642
|
+
const primarySettings = primary === undefined ? {} : typeof primary === "string" ? { model: primary } : primary;
|
|
23643
|
+
changed = true;
|
|
23644
|
+
return [name, {
|
|
23645
|
+
...rest,
|
|
23646
|
+
...primarySettings,
|
|
23647
|
+
fallback_models: fallbacks
|
|
23648
|
+
}];
|
|
23649
|
+
}));
|
|
23650
|
+
return changed ? { ...config4, agents } : config4;
|
|
23651
|
+
}
|
|
23373
23652
|
function migrateRalphLoopConfig(config4) {
|
|
23374
23653
|
const legacy = config4.ralph_loop;
|
|
23375
23654
|
if (legacy === undefined)
|
|
@@ -23397,7 +23676,7 @@ function validatePluginConfig(directory, environment2 = process.env) {
|
|
|
23397
23676
|
const firstFailingView = views.find((view) => view.messages.length > 0);
|
|
23398
23677
|
const firstView = views[0];
|
|
23399
23678
|
const userConfig = parseConfig(chain.protectedUserView);
|
|
23400
|
-
const config4 = applyDisabledProviders(protectUserFields(mergeViews(views), userConfig));
|
|
23679
|
+
const config4 = applyDisabledProviders(materializeAgentModelChains(protectUserFields(mergeViews(views), userConfig)));
|
|
23401
23680
|
return {
|
|
23402
23681
|
valid: messages.length === 0,
|
|
23403
23682
|
messages,
|
|
@@ -70,6 +70,6 @@ node script/qa/web-terminal-visual-qa.mjs --title "Replay" \
|
|
|
70
70
|
2. Store the output under `.omo/evidence/<YYYYMMDD>-<slug>/`.
|
|
71
71
|
3. Review `terminal.txt` and `terminal-ansi.txt` for accidental secrets before citing them.
|
|
72
72
|
4. Include `terminal.png`, `terminal.txt`, and `metadata.json` in the evidence summary.
|
|
73
|
-
5.
|
|
73
|
+
5. Review the cleanup receipt in `metadata.json`. It records the pty cleanup action and browser closure attempt; it does not audit ports, temporary state, or all leftover processes.
|
|
74
74
|
|
|
75
75
|
Tests alone are not TUI visual QA. The passing artifact is the xterm.js-rendered `terminal.png` plus a binary observation - expected text present, colors correct, no overflow, no border or CJK-width misalignment.
|