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.
Files changed (347) hide show
  1. package/.agents/command/get-unpublished-changes.md +2 -0
  2. package/.agents/command/omomomo.md +1 -1
  3. package/.agents/command/publish.md +7 -0
  4. package/.agents/skills/get-unpublished-changes/SKILL.md +2 -0
  5. package/.agents/skills/hyperplan/SKILL.md +3 -3
  6. package/.agents/skills/omomomo/SKILL.md +1 -1
  7. package/.agents/skills/publish/SKILL.md +7 -0
  8. package/.opencode/command/get-unpublished-changes.md +2 -0
  9. package/.opencode/command/omomomo.md +1 -1
  10. package/.opencode/command/publish.md +7 -0
  11. package/.opencode/skills/hyperplan/SKILL.md +3 -3
  12. package/README.ja.md +1 -1
  13. package/README.ko.md +1 -1
  14. package/README.md +6 -5
  15. package/README.ru.md +1 -1
  16. package/README.zh-cn.md +1 -1
  17. package/bin/oh-my-opencode.js +14 -1
  18. package/bin/oh-my-opencode.test.ts +21 -0
  19. package/dist/agents/sisyphus-junior/agent.d.ts +1 -1
  20. package/dist/cli/doctor/checks/deprecated-reasoning-keys.d.ts +2 -0
  21. package/dist/cli/index.js +2925 -1919
  22. package/dist/cli-node/index.js +2925 -1919
  23. package/dist/config/schema/agent-overrides.d.ts +1343 -15
  24. package/dist/config/schema/categories.d.ts +132 -0
  25. package/dist/config/schema/fallback-models.d.ts +50 -0
  26. package/dist/config/schema/oh-my-opencode-config.d.ts +1322 -11
  27. package/dist/config-migration/index.d.ts +1 -0
  28. package/dist/config-migration/migration-plans.d.ts +1 -0
  29. package/dist/config-migration/reasoning-unification.d.ts +3 -0
  30. package/dist/features/monitor/batcher.d.ts +3 -1
  31. package/dist/features/monitor/manager-internals.d.ts +1 -0
  32. package/dist/features/monitor/output-injector-types.d.ts +2 -0
  33. package/dist/features/monitor/output-injector.d.ts +6 -0
  34. package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +2 -0
  35. package/dist/hooks/codegraph-bootstrap/command-runner.d.ts +1 -0
  36. package/dist/hooks/model-fallback/next-fallback.d.ts +1 -0
  37. package/dist/hooks/runtime-fallback/constants.d.ts +1 -1
  38. package/dist/hooks/todo-continuation-enforcer/types.d.ts +1 -0
  39. package/dist/hooks/todo-continuation-enforcer/unrecoverable-request-error.d.ts +9 -0
  40. package/dist/hooks/tool-pair-validator/hook.test-support.d.ts +29 -0
  41. package/dist/hooks/tool-pair-validator/tool-part-ids.d.ts +14 -5
  42. package/dist/hooks/tool-pair-validator/tool-result-repair.d.ts +4 -3
  43. package/dist/hooks/tool-pair-validator/types.d.ts +5 -22
  44. package/dist/index.js +4864 -4011
  45. package/dist/mcp/lsp.d.ts +1 -0
  46. package/dist/oh-my-opencode.schema.json +3221 -222
  47. package/dist/plugin-handlers/prometheus-agent-config-builder.d.ts +1 -0
  48. package/dist/shared/agent-variant.d.ts +11 -0
  49. package/dist/shared/session-prompt-params-helpers.d.ts +6 -1
  50. package/dist/shared/tmux/constants.d.ts +1 -1
  51. package/dist/skills/ast-grep/SOURCE +1 -1
  52. package/dist/skills/ast-grep/install.ps1 +2 -2
  53. package/dist/skills/ast-grep/install.sh +1 -1
  54. package/dist/skills/ast-grep/references/install.md +2 -2
  55. package/dist/skills/ast-grep/tests/smoke.sh +1 -1
  56. package/dist/skills/coding-agent-sessions/SKILL.md +4 -3
  57. package/dist/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  58. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
  59. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
  60. package/dist/skills/data-scientist/SKILL.md +243 -0
  61. package/dist/skills/data-scientist/references/common-scenarios.md +176 -0
  62. package/dist/skills/data-scientist/references/execution-templates.md +197 -0
  63. package/dist/skills/data-scientist/references/integration-patterns.md +153 -0
  64. package/dist/skills/data-scientist/references/performance-benchmarks.md +37 -0
  65. package/dist/skills/data-scientist/references/uv-setup.md +78 -0
  66. package/dist/skills/data-scientist/scripts/quick-query.py +111 -0
  67. package/dist/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
  68. package/dist/skills/data-scientist/scripts/setup-uv.sh +60 -0
  69. package/dist/skills/debugging/SKILL.md +1 -1
  70. package/dist/skills/programming/SKILL.md +1 -2
  71. package/dist/skills/start-work/SKILL.md +54 -9
  72. package/dist/skills/ultimate-browsing/SKILL.md +2 -2
  73. package/dist/skills/ultimate-browsing/engine/__main__.py +8 -1
  74. package/dist/skills/ultimate-browsing/engine/bias_check.py +11 -0
  75. package/dist/skills/ultimate-browsing/engine/fetch_chain.py +90 -52
  76. package/dist/skills/ultimate-browsing/engine/result_schema.py +10 -1
  77. package/dist/skills/ultimate-browsing/engine/surrogate.py +214 -0
  78. package/dist/skills/ultimate-browsing/engine/surrogates.yaml +60 -0
  79. package/dist/skills/ultimate-browsing/engine/tests/fixtures/amp_redirect_stub.html +7 -0
  80. package/dist/skills/ultimate-browsing/engine/tests/fixtures/search_interstitial.html +19 -0
  81. package/dist/skills/ultimate-browsing/engine/tests/fixtures/wayback_available.json +1 -0
  82. package/dist/skills/ultimate-browsing/engine/tests/fixtures/wayback_snapshot.html +1128 -0
  83. package/dist/skills/ultimate-browsing/engine/tests/test_surrogate.py +252 -0
  84. package/dist/skills/ultimate-browsing/engine/tests/test_surrogate_validators.py +78 -0
  85. package/dist/skills/ultimate-browsing/engine/validators.py +46 -0
  86. package/dist/skills/ultimate-browsing/engine/waf_detector.py +1 -1
  87. package/dist/skills/ultimate-browsing/engine/waf_profiles.yaml +10 -5
  88. package/dist/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
  89. package/dist/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  90. package/dist/skills/ultimate-browsing/references/insane-search/README.md +4 -4
  91. package/dist/skills/ultimate-browsing/references/insane-search/cache-archive.md +51 -50
  92. package/dist/skills/ultimate-browsing/references/insane-search/fallback.md +1 -1
  93. package/dist/skills/ultimate-browsing/references/insane-search/jina.md +8 -2
  94. package/dist/skills/ultimate-browsing/references/insane-search/naver.md +1 -1
  95. package/dist/skills/ultimate-browsing/references/insane-search/twitter.md +3 -3
  96. package/dist/skills/ulw-plan/SKILL.md +2 -2
  97. package/dist/skills/ulw-plan/references/full-workflow.md +3 -3
  98. package/dist/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  99. package/dist/skills/ulw-research/SKILL.md +128 -12
  100. package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
  101. package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
  102. package/dist/tools/delegate-task/constants.d.ts +1 -1
  103. package/dist/tui.js +1271 -1108
  104. package/docs/reference/web-terminal-visual-qa.md +1 -1
  105. package/package.json +27 -19
  106. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +2 -2
  107. package/packages/lsp-core/src/lsp/connection.ts +1 -1
  108. package/packages/lsp-daemon/dist/cli.js +27 -13
  109. package/packages/lsp-daemon/dist/client.js +49 -35
  110. package/packages/lsp-daemon/dist/ensure-daemon.d.ts +1 -0
  111. package/packages/lsp-daemon/dist/ensure-daemon.js +18 -5
  112. package/packages/lsp-daemon/dist/index.js +34 -20
  113. package/packages/lsp-tools-mcp/dist/cli.js +1 -1
  114. package/packages/lsp-tools-mcp/dist/lsp/manager.js +1 -1
  115. package/packages/lsp-tools-mcp/dist/mcp.js +1 -1
  116. package/packages/lsp-tools-mcp/dist/tools.js +1 -1
  117. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  118. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +289 -95
  119. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  120. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  121. package/packages/omo-codex/plugin/components/bootstrap/src/setup.ts +7 -7
  122. package/packages/omo-codex/plugin/components/bootstrap/src/worker.ts +3 -0
  123. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +385 -64
  124. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +336 -47
  125. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  126. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +6 -0
  127. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  128. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  129. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  130. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  131. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  132. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  133. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  134. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +56 -42
  135. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  136. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  137. package/packages/omo-codex/plugin/components/rules/dist/cli.js +1 -1
  138. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  139. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  140. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +1 -1
  141. package/packages/omo-codex/plugin/components/start-work-continuation/AGENTS.md +1 -0
  142. package/packages/omo-codex/plugin/components/start-work-continuation/README.md +5 -1
  143. package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +2 -1
  144. package/packages/omo-codex/plugin/components/start-work-continuation/dist/cli.js +18 -0
  145. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  146. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  147. package/packages/omo-codex/plugin/components/start-work-continuation/src/codex-hook.ts +21 -0
  148. package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +105 -0
  149. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  150. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  151. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  152. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  153. package/packages/omo-codex/plugin/components/ultrawork/CHANGELOG.md +2 -0
  154. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-code-reviewer.toml +1 -1
  155. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +1 -1
  156. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-qa-executor.toml +1 -1
  157. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-high.toml +1 -1
  158. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-low.toml +1 -1
  159. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-medium.toml +1 -1
  160. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +2 -2
  161. package/packages/omo-codex/plugin/components/ultrawork/directive.md +3 -2
  162. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  163. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  164. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +3 -2
  165. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +2 -2
  166. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +3 -3
  167. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  168. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +1 -1
  169. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +2 -0
  170. package/packages/omo-codex/plugin/components/ulw-loop/README.md +11 -11
  171. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +3 -2
  172. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +1 -1
  173. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +1 -1
  174. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +9 -9
  175. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.js +1 -1
  176. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +66 -66
  177. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +4 -4
  178. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.js +1 -1
  179. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.js +1 -1
  180. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +1 -1
  181. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +1 -1
  182. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +2 -2
  183. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  184. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  185. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -3
  186. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +22 -25
  187. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +1 -1
  188. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +9 -9
  189. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-steering.ts +1 -1
  190. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +1 -1
  191. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +4 -4
  192. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +1 -1
  193. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +1 -1
  194. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +1 -1
  195. package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +1 -1
  196. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +2 -2
  197. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-commands.test.ts +2 -2
  198. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +1 -1
  199. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-helpers.test.ts +2 -2
  200. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-kind-guidance.test.ts +1 -1
  201. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +2 -2
  202. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/quality-gate-builder.ts +1 -1
  203. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -5
  204. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +1 -1
  205. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-roles.test.ts +1 -1
  206. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +1 -1
  207. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
  208. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  209. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  210. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  211. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  212. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  213. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  214. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  215. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  216. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  217. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  218. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  219. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  220. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  221. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  222. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  223. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  224. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  225. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  226. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  227. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  228. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  229. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  230. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  231. package/packages/omo-codex/plugin/package-lock.json +13 -13
  232. package/packages/omo-codex/plugin/package.json +1 -1
  233. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +8 -2
  234. package/packages/omo-codex/plugin/skills/ast-grep/SOURCE +1 -1
  235. package/packages/omo-codex/plugin/skills/ast-grep/install.ps1 +2 -2
  236. package/packages/omo-codex/plugin/skills/ast-grep/install.sh +1 -1
  237. package/packages/omo-codex/plugin/skills/ast-grep/references/install.md +2 -2
  238. package/packages/omo-codex/plugin/skills/ast-grep/tests/smoke.sh +1 -1
  239. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +4 -3
  240. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  241. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
  242. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
  243. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +243 -0
  244. package/packages/omo-codex/plugin/skills/data-scientist/agents/openai.yaml +2 -0
  245. package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +176 -0
  246. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +197 -0
  247. package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +153 -0
  248. package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +37 -0
  249. package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +78 -0
  250. package/packages/omo-codex/plugin/skills/data-scientist/scripts/quick-query.py +111 -0
  251. package/packages/omo-codex/plugin/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
  252. package/packages/omo-codex/plugin/skills/data-scientist/scripts/setup-uv.sh +60 -0
  253. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +1 -1
  254. package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -2
  255. package/packages/omo-codex/plugin/skills/start-work/SKILL.md +54 -9
  256. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +2 -2
  257. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/__main__.py +8 -1
  258. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/bias_check.py +11 -0
  259. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/fetch_chain.py +90 -52
  260. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/result_schema.py +10 -1
  261. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/surrogate.py +214 -0
  262. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/surrogates.yaml +60 -0
  263. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/amp_redirect_stub.html +7 -0
  264. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/search_interstitial.html +19 -0
  265. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/wayback_available.json +1 -0
  266. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/wayback_snapshot.html +1128 -0
  267. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_surrogate.py +252 -0
  268. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_surrogate_validators.py +78 -0
  269. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/validators.py +46 -0
  270. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/waf_detector.py +1 -1
  271. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/waf_profiles.yaml +10 -5
  272. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
  273. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  274. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +4 -4
  275. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/cache-archive.md +51 -50
  276. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/fallback.md +1 -1
  277. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/jina.md +8 -2
  278. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/naver.md +1 -1
  279. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/twitter.md +3 -3
  280. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +3 -2
  281. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -3
  282. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +22 -25
  283. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +2 -2
  284. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +3 -3
  285. package/packages/omo-codex/plugin/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  286. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +127 -12
  287. package/packages/omo-codex/plugin/test/bootstrap-binlinks.test.mjs +12 -12
  288. package/packages/omo-codex/plugin/test/bootstrap-orchestration.test.mjs +36 -4
  289. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +1 -1
  290. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +9 -2
  291. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +12 -0
  292. package/packages/omo-codex/scripts/install-bin-links.test.mjs +56 -2
  293. package/packages/omo-codex/scripts/install-delegated-command.test.mjs +6 -6
  294. package/packages/omo-codex/scripts/install-dist/install-local.mjs +138 -65
  295. package/packages/omo-codex/scripts/install-local-entrypoint.test.mjs +4 -4
  296. package/packages/omo-codex/scripts/install-local.test.mjs +5 -2
  297. package/packages/shared-skills/index.mjs +19 -1
  298. package/packages/shared-skills/skills/ast-grep/SOURCE +1 -1
  299. package/packages/shared-skills/skills/ast-grep/install.ps1 +2 -2
  300. package/packages/shared-skills/skills/ast-grep/install.sh +1 -1
  301. package/packages/shared-skills/skills/ast-grep/references/install.md +2 -2
  302. package/packages/shared-skills/skills/ast-grep/tests/smoke.sh +1 -1
  303. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +4 -3
  304. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  305. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
  306. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
  307. package/packages/shared-skills/skills/data-scientist/SKILL.md +243 -0
  308. package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +176 -0
  309. package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +197 -0
  310. package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +153 -0
  311. package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +37 -0
  312. package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +78 -0
  313. package/packages/shared-skills/skills/data-scientist/scripts/quick-query.py +111 -0
  314. package/packages/shared-skills/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
  315. package/packages/shared-skills/skills/data-scientist/scripts/setup-uv.sh +60 -0
  316. package/packages/shared-skills/skills/debugging/SKILL.md +1 -1
  317. package/packages/shared-skills/skills/programming/SKILL.md +1 -2
  318. package/packages/shared-skills/skills/start-work/SKILL.md +54 -9
  319. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +2 -2
  320. package/packages/shared-skills/skills/ultimate-browsing/engine/__main__.py +8 -1
  321. package/packages/shared-skills/skills/ultimate-browsing/engine/bias_check.py +11 -0
  322. package/packages/shared-skills/skills/ultimate-browsing/engine/fetch_chain.py +90 -52
  323. package/packages/shared-skills/skills/ultimate-browsing/engine/result_schema.py +10 -1
  324. package/packages/shared-skills/skills/ultimate-browsing/engine/surrogate.py +214 -0
  325. package/packages/shared-skills/skills/ultimate-browsing/engine/surrogates.yaml +60 -0
  326. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/fixtures/amp_redirect_stub.html +7 -0
  327. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/fixtures/search_interstitial.html +19 -0
  328. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/fixtures/wayback_available.json +1 -0
  329. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/fixtures/wayback_snapshot.html +1128 -0
  330. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_surrogate.py +252 -0
  331. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_surrogate_validators.py +78 -0
  332. package/packages/shared-skills/skills/ultimate-browsing/engine/validators.py +46 -0
  333. package/packages/shared-skills/skills/ultimate-browsing/engine/waf_detector.py +1 -1
  334. package/packages/shared-skills/skills/ultimate-browsing/engine/waf_profiles.yaml +10 -5
  335. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
  336. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  337. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +4 -4
  338. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/cache-archive.md +51 -50
  339. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/fallback.md +1 -1
  340. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/jina.md +8 -2
  341. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/naver.md +1 -1
  342. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/twitter.md +3 -3
  343. package/packages/shared-skills/skills/ulw-plan/SKILL.md +2 -2
  344. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +3 -3
  345. package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  346. package/packages/shared-skills/skills/ulw-research/SKILL.md +128 -12
  347. package/postinstall.mjs +6 -0
package/dist/tui.js CHANGED
@@ -18589,24 +18589,146 @@ var init_zod = __esm(() => {
18589
18589
  init_external();
18590
18590
  });
18591
18591
 
18592
+ // packages/omo-config-core/src/schema/reasoning-vocabulary.ts
18593
+ function isReasoningLevel(value) {
18594
+ return REASONING_LEVEL_SET.has(value);
18595
+ }
18596
+ function normalizeReasoning(input) {
18597
+ const normalized = input.trim().toLowerCase();
18598
+ if (!normalized)
18599
+ return {};
18600
+ if (normalized === "none")
18601
+ return { level: "off" };
18602
+ if (normalized === REASONING_AUTO)
18603
+ return { level: REASONING_AUTO };
18604
+ if (isReasoningLevel(normalized))
18605
+ return { level: normalized };
18606
+ return { passthrough: normalized };
18607
+ }
18608
+ function splitReasoningSuffix(model, options) {
18609
+ if (typeof model !== "string")
18610
+ return { base: "" };
18611
+ const trimmed = model.trim();
18612
+ if (!trimmed)
18613
+ return { base: "" };
18614
+ const separatorIndex = trimmed.lastIndexOf(":");
18615
+ if (separatorIndex === -1)
18616
+ return { base: trimmed };
18617
+ const base = trimmed.slice(0, separatorIndex).trim();
18618
+ const token = trimmed.slice(separatorIndex + 1).trim().toLowerCase();
18619
+ if (!base || !REASONING_LEVEL_OR_AUTO_SET.has(token))
18620
+ return { base: trimmed };
18621
+ if (token === "max" && !(options?.allowMaxSuffix ?? base.includes("/")))
18622
+ return { base: trimmed };
18623
+ return { base, level: token };
18624
+ }
18625
+ var REASONING_LEVELS, REASONING_AUTO = "auto", REASONING_LEVEL_SET, REASONING_LEVEL_OR_AUTO_SET;
18626
+ var init_reasoning_vocabulary = __esm(() => {
18627
+ REASONING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
18628
+ REASONING_LEVEL_SET = new Set(REASONING_LEVELS);
18629
+ REASONING_LEVEL_OR_AUTO_SET = new Set([...REASONING_LEVELS, REASONING_AUTO]);
18630
+ });
18631
+
18632
+ // packages/omo-config-core/src/schema/model-ref.ts
18633
+ var REASONING_LEVELS_OR_AUTO, OmoReasoningSchema, OmoModelRefObjectSchema, OmoModelRefSchema;
18634
+ var init_model_ref = __esm(() => {
18635
+ init_zod();
18636
+ init_reasoning_vocabulary();
18637
+ REASONING_LEVELS_OR_AUTO = [...REASONING_LEVELS, "auto"];
18638
+ OmoReasoningSchema = union([
18639
+ _enum2(REASONING_LEVELS_OR_AUTO),
18640
+ string2()
18641
+ ]);
18642
+ OmoModelRefObjectSchema = object({
18643
+ model: string2(),
18644
+ reasoning: OmoReasoningSchema.optional(),
18645
+ temperature: number2().min(0).max(2).optional(),
18646
+ top_p: number2().min(0).max(1).optional(),
18647
+ max_tokens: number2().int().positive().optional(),
18648
+ provider_options: record(string2(), unknown()).optional()
18649
+ }).strict();
18650
+ OmoModelRefSchema = union([string2(), OmoModelRefObjectSchema]);
18651
+ });
18652
+
18592
18653
  // packages/omo-config-core/src/schema/fallback-models.ts
18593
- var OmoThinkingConfigSchema, OmoReasoningEffortSchema, OmoFallbackModelObjectSchema, OmoFallbackModelsSchema;
18654
+ function isRecord2(value) {
18655
+ return typeof value === "object" && value !== null && !Array.isArray(value);
18656
+ }
18657
+ function canonicalReasoning(value) {
18658
+ if (typeof value !== "string")
18659
+ return;
18660
+ const normalized = normalizeReasoning(value);
18661
+ return normalized.level ?? normalized.passthrough;
18662
+ }
18663
+ function canonicalModelString(model) {
18664
+ const colon = splitReasoningSuffix(model, { allowMaxSuffix: true });
18665
+ if (colon.level !== undefined)
18666
+ return `${colon.base}:${colon.level}`;
18667
+ const trimmed = model.trim();
18668
+ const parenthesized = trimmed.match(/^(.*)\(([^()]+)\)\s*$/);
18669
+ const spaced = parenthesized === null ? trimmed.match(/^(.*\S)\s+([a-z][a-z0-9_-]*)$/i) : null;
18670
+ const base = (parenthesized?.[1] ?? spaced?.[1])?.trim();
18671
+ const token = (parenthesized?.[2] ?? spaced?.[2])?.trim();
18672
+ if (base === undefined || token === undefined)
18673
+ return trimmed;
18674
+ const normalized = normalizeReasoning(token);
18675
+ return normalized.level === undefined ? trimmed : `${base}:${normalized.level}`;
18676
+ }
18677
+ function normalizeLegacyModelFields(entry) {
18678
+ const normalized = { ...entry };
18679
+ delete normalized["variant"];
18680
+ delete normalized["reasoningEffort"];
18681
+ delete normalized["thinking"];
18682
+ delete normalized["textVerbosity"];
18683
+ delete normalized["maxTokens"];
18684
+ delete normalized["providerOptions"];
18685
+ if (typeof entry["model"] === "string")
18686
+ normalized["model"] = canonicalModelString(entry["model"]);
18687
+ const explicitReasoning = canonicalReasoning(entry["reasoning"]);
18688
+ const variant = canonicalReasoning(entry["variant"]);
18689
+ const reasoningEffort = canonicalReasoning(entry["reasoningEffort"]);
18690
+ const thinking = isRecord2(entry["thinking"]) ? entry["thinking"] : undefined;
18691
+ const reasoning = explicitReasoning ?? reasoningEffort ?? variant ?? (thinking?.["type"] === "disabled" ? "off" : undefined);
18692
+ if (reasoning !== undefined)
18693
+ normalized["reasoning"] = reasoning;
18694
+ const providerOptions = isRecord2(entry["provider_options"]) ? { ...entry["provider_options"] } : isRecord2(entry["providerOptions"]) ? { ...entry["providerOptions"] } : {};
18695
+ if (thinking?.["type"] === "enabled")
18696
+ providerOptions["thinking"] = { ...thinking };
18697
+ if (entry["textVerbosity"] !== undefined)
18698
+ providerOptions["textVerbosity"] = entry["textVerbosity"];
18699
+ if (Object.keys(providerOptions).length > 0)
18700
+ normalized["provider_options"] = providerOptions;
18701
+ if (entry["max_tokens"] !== undefined)
18702
+ normalized["max_tokens"] = entry["max_tokens"];
18703
+ else if (entry["maxTokens"] !== undefined)
18704
+ normalized["max_tokens"] = entry["maxTokens"];
18705
+ return normalized;
18706
+ }
18707
+ var OmoThinkingConfigSchema, OmoReasoningEffortSchema, OmoLegacyFallbackModelObjectInputSchema, OmoFallbackModelObjectSchema, OmoFallbackModelsSchema;
18594
18708
  var init_fallback_models = __esm(() => {
18595
18709
  init_zod();
18710
+ init_model_ref();
18711
+ init_reasoning_vocabulary();
18596
18712
  OmoThinkingConfigSchema = object({
18597
18713
  type: _enum2(["enabled", "disabled"]),
18598
18714
  budgetTokens: number2().optional()
18599
18715
  }).strict();
18600
- OmoReasoningEffortSchema = _enum2(["none", "minimal", "low", "medium", "high", "xhigh", "max"]);
18601
- OmoFallbackModelObjectSchema = object({
18716
+ OmoReasoningEffortSchema = OmoReasoningSchema;
18717
+ OmoLegacyFallbackModelObjectInputSchema = object({
18602
18718
  model: string2(),
18603
- variant: string2().optional(),
18604
- reasoningEffort: OmoReasoningEffortSchema.optional(),
18719
+ reasoning: OmoReasoningSchema.optional(),
18605
18720
  temperature: number2().min(0).max(2).optional(),
18606
18721
  top_p: number2().min(0).max(1).optional(),
18722
+ max_tokens: number2().int().positive().optional(),
18723
+ provider_options: record(string2(), unknown()).optional(),
18724
+ variant: string2().optional(),
18725
+ reasoningEffort: OmoReasoningEffortSchema.optional(),
18726
+ thinking: OmoThinkingConfigSchema.optional(),
18727
+ textVerbosity: _enum2(["low", "medium", "high"]).optional(),
18607
18728
  maxTokens: number2().optional(),
18608
- thinking: OmoThinkingConfigSchema.optional()
18729
+ providerOptions: record(string2(), unknown()).optional()
18609
18730
  }).strict();
18731
+ OmoFallbackModelObjectSchema = preprocess((value) => isRecord2(value) ? normalizeLegacyModelFields(value) : value, OmoLegacyFallbackModelObjectInputSchema);
18610
18732
  OmoFallbackModelsSchema = union([
18611
18733
  string2(),
18612
18734
  array(string2()),
@@ -18616,23 +18738,21 @@ var init_fallback_models = __esm(() => {
18616
18738
  });
18617
18739
 
18618
18740
  // packages/omo-config-core/src/schema/agent.ts
18619
- var OmoAgentModelEntrySchema, OmoAgentDefSchema, OmoAgentsConfigSchema;
18741
+ function isRecord3(value) {
18742
+ return typeof value === "object" && value !== null && !Array.isArray(value);
18743
+ }
18744
+ var OmoAgentModelEntrySchema, OmoAgentDefInputSchema, OmoAgentDefSchema, OmoAgentsConfigSchema;
18620
18745
  var init_agent = __esm(() => {
18621
18746
  init_zod();
18622
18747
  init_fallback_models();
18623
- OmoAgentModelEntrySchema = union([
18624
- string2(),
18625
- object({
18626
- model: string2(),
18627
- variant: string2().optional(),
18628
- reasoningEffort: OmoReasoningEffortSchema.optional()
18629
- }).strict()
18630
- ]);
18631
- OmoAgentDefSchema = object({
18748
+ init_model_ref();
18749
+ OmoAgentModelEntrySchema = union([string2(), OmoFallbackModelObjectSchema]);
18750
+ OmoAgentDefInputSchema = object({
18632
18751
  description: string2().optional(),
18633
18752
  prompt: string2().optional(),
18634
18753
  model: string2().optional(),
18635
18754
  models: array(OmoAgentModelEntrySchema).optional(),
18755
+ reasoning: OmoReasoningSchema.optional(),
18636
18756
  variant: string2().optional(),
18637
18757
  reasoningEffort: OmoReasoningEffortSchema.optional(),
18638
18758
  tools: record(string2(), boolean2()).optional(),
@@ -18645,21 +18765,30 @@ var init_agent = __esm(() => {
18645
18765
  temperature: number2().min(0).max(2).optional(),
18646
18766
  disable: boolean2().optional()
18647
18767
  }).strict();
18768
+ OmoAgentDefSchema = preprocess((value) => isRecord3(value) ? normalizeLegacyModelFields(value) : value, OmoAgentDefInputSchema);
18648
18769
  OmoAgentsConfigSchema = record(string2(), OmoAgentDefSchema);
18649
18770
  });
18650
18771
 
18651
18772
  // packages/omo-config-core/src/schema/category.ts
18652
- var OmoCategoryConfigSchema, OmoCategoriesConfigSchema;
18773
+ function isRecord4(value) {
18774
+ return typeof value === "object" && value !== null && !Array.isArray(value);
18775
+ }
18776
+ var OmoCategoryConfigObjectSchema, OmoCategoryConfigSchema, OmoCategoriesConfigSchema;
18653
18777
  var init_category = __esm(() => {
18654
18778
  init_zod();
18655
18779
  init_fallback_models();
18656
- OmoCategoryConfigSchema = object({
18780
+ init_model_ref();
18781
+ OmoCategoryConfigObjectSchema = object({
18657
18782
  description: string2().optional(),
18658
18783
  model: string2().optional(),
18659
- fallback_models: OmoFallbackModelsSchema.optional(),
18660
- variant: string2().optional(),
18784
+ models: array(union([string2(), OmoFallbackModelObjectSchema])).optional(),
18785
+ reasoning: OmoReasoningSchema.optional(),
18661
18786
  temperature: number2().min(0).max(2).optional(),
18662
18787
  top_p: number2().min(0).max(1).optional(),
18788
+ max_tokens: number2().int().positive().optional(),
18789
+ provider_options: record(string2(), unknown()).optional(),
18790
+ fallback_models: OmoFallbackModelsSchema.optional(),
18791
+ variant: string2().optional(),
18663
18792
  maxTokens: number2().optional(),
18664
18793
  thinking: OmoThinkingConfigSchema.optional(),
18665
18794
  reasoningEffort: OmoReasoningEffortSchema.optional(),
@@ -18668,8 +18797,10 @@ var init_category = __esm(() => {
18668
18797
  prompt_append: string2().optional(),
18669
18798
  max_prompt_tokens: number2().int().positive().optional(),
18670
18799
  is_unstable_agent: boolean2().optional(),
18671
- disable: boolean2().optional()
18800
+ disable: boolean2().optional(),
18801
+ warn_unavailable: boolean2().optional()
18672
18802
  }).strict();
18803
+ OmoCategoryConfigSchema = preprocess((value) => isRecord4(value) ? normalizeLegacyModelFields(value) : value, OmoCategoryConfigObjectSchema);
18673
18804
  OmoCategoriesConfigSchema = record(string2(), OmoCategoryConfigSchema);
18674
18805
  });
18675
18806
 
@@ -18705,25 +18836,115 @@ var init_codegraph = __esm(() => {
18705
18836
  }).strict();
18706
18837
  });
18707
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
+
18708
18913
  // packages/omo-config-core/src/schema/model-catalog.ts
18709
- var OmoModelCatalogEntrySchema, OmoModelCatalogSchema, OmoModelCatalogEntryLayerSchema, OmoModelCatalogLayerSchema;
18914
+ function isRecord5(value) {
18915
+ return typeof value === "object" && value !== null && !Array.isArray(value);
18916
+ }
18917
+ var OmoModelCatalogEntryInputSchema, OmoModelCatalogEntrySchema, OmoModelCatalogSchema, OmoModelCatalogEntryLayerInputSchema, OmoModelCatalogEntryLayerSchema, OmoModelCatalogLayerSchema;
18710
18918
  var init_model_catalog = __esm(() => {
18711
18919
  init_zod();
18712
18920
  init_fallback_models();
18713
- OmoModelCatalogEntrySchema = object({
18921
+ init_model_ref();
18922
+ OmoModelCatalogEntryInputSchema = object({
18714
18923
  model: string2(),
18924
+ reasoning: OmoReasoningSchema.optional(),
18715
18925
  variant: string2().optional(),
18716
18926
  reasoningEffort: OmoReasoningEffortSchema.optional()
18717
18927
  }).strict();
18928
+ OmoModelCatalogEntrySchema = preprocess((value) => isRecord5(value) ? normalizeLegacyModelFields(value) : value, OmoModelCatalogEntryInputSchema);
18718
18929
  OmoModelCatalogSchema = record(string2(), OmoModelCatalogEntrySchema);
18719
- OmoModelCatalogEntryLayerSchema = OmoModelCatalogEntrySchema.partial();
18930
+ OmoModelCatalogEntryLayerInputSchema = OmoModelCatalogEntryInputSchema.partial();
18931
+ OmoModelCatalogEntryLayerSchema = preprocess((value) => isRecord5(value) ? normalizeLegacyModelFields(value) : value, OmoModelCatalogEntryLayerInputSchema);
18720
18932
  OmoModelCatalogLayerSchema = record(string2(), OmoModelCatalogEntryLayerSchema);
18721
18933
  });
18722
18934
 
18723
18935
  // packages/omo-config-core/src/schema/task.ts
18724
- var OmoTaskWaitSchema, OmoTaskTeamSettingsSchema, OmoTaskSettingsSchema, OmoTaskWaitLayerSchema, OmoTaskTeamSettingsLayerSchema, OmoTaskSettingsLayerSchema;
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;
18725
18945
  var init_task = __esm(() => {
18726
18946
  init_zod();
18947
+ ResidencyMaxChildrenInputSchema = union([number2().int().positive(), literal("unlimited")]);
18727
18948
  OmoTaskWaitSchema = object({
18728
18949
  min_ms: number2().int().positive().default(5000),
18729
18950
  default_ms: number2().int().positive().default(60000),
@@ -18734,16 +18955,21 @@ var init_task = __esm(() => {
18734
18955
  max_parallel_members: number2().int().min(1).max(8).default(4),
18735
18956
  max_wall_clock_minutes: number2().int().positive().default(120)
18736
18957
  }).strict();
18958
+ OmoTaskWarningsSchema = object({
18959
+ unavailable_categories: boolean2().default(true)
18960
+ }).strict();
18737
18961
  OmoTaskSettingsSchema = object({
18738
18962
  default_execution_mode: _enum2(["in-process", "process"]).default("in-process"),
18739
18963
  default_concurrency: number2().int().positive().default(5),
18740
18964
  provider_concurrency: record(string2(), number2().int().positive()).optional(),
18741
18965
  model_concurrency: record(string2(), number2().int().positive()).optional(),
18742
18966
  max_depth: number2().int().nonnegative().default(1),
18743
- residency_max_children: number2().int().positive().default(8),
18967
+ residency_max_children: ResidencyMaxChildrenInputSchema.default(8),
18744
18968
  ttl_ms: number2().int().positive().default(86400000),
18745
18969
  state_dir: string2().optional(),
18746
18970
  reattach_on_reconcile: boolean2().optional(),
18971
+ resume_children: boolean2().default(true),
18972
+ warnings: OmoTaskWarningsSchema.default({ unavailable_categories: true }),
18747
18973
  wait: OmoTaskWaitSchema.default({ min_ms: 5000, default_ms: 60000, max_ms: 600000 }),
18748
18974
  team: OmoTaskTeamSettingsSchema.default({
18749
18975
  max_members: 8,
@@ -18761,16 +18987,21 @@ var init_task = __esm(() => {
18761
18987
  max_parallel_members: number2().int().min(1).max(8).optional(),
18762
18988
  max_wall_clock_minutes: number2().int().positive().optional()
18763
18989
  }).strict();
18990
+ OmoTaskWarningsLayerSchema = object({
18991
+ unavailable_categories: boolean2().optional()
18992
+ }).strict();
18764
18993
  OmoTaskSettingsLayerSchema = object({
18765
18994
  default_execution_mode: _enum2(["in-process", "process"]).optional(),
18766
18995
  default_concurrency: number2().int().positive().optional(),
18767
18996
  provider_concurrency: record(string2(), number2().int().positive()).optional(),
18768
18997
  model_concurrency: record(string2(), number2().int().positive()).optional(),
18769
18998
  max_depth: number2().int().nonnegative().optional(),
18770
- residency_max_children: number2().int().positive().optional(),
18999
+ residency_max_children: ResidencyMaxChildrenInputSchema.optional(),
18771
19000
  ttl_ms: number2().int().positive().optional(),
18772
19001
  state_dir: string2().optional(),
18773
19002
  reattach_on_reconcile: boolean2().optional(),
19003
+ resume_children: boolean2().optional(),
19004
+ warnings: OmoTaskWarningsLayerSchema.optional(),
18774
19005
  wait: OmoTaskWaitLayerSchema.optional(),
18775
19006
  team: OmoTaskTeamSettingsLayerSchema.optional()
18776
19007
  }).strict();
@@ -18834,6 +19065,7 @@ var init_config = __esm(() => {
18834
19065
  init_agent();
18835
19066
  init_category();
18836
19067
  init_codegraph();
19068
+ init_memory();
18837
19069
  init_model_catalog();
18838
19070
  init_task();
18839
19071
  init_team();
@@ -18844,7 +19076,8 @@ var init_config = __esm(() => {
18844
19076
  codegraph: OmoCodegraphSettingsLayerSchema.optional(),
18845
19077
  task: OmoTaskSettingsLayerSchema.optional(),
18846
19078
  teams: OmoTeamsConfigLayerSchema.optional(),
18847
- models: OmoModelCatalogLayerSchema.optional()
19079
+ models: OmoModelCatalogLayerSchema.optional(),
19080
+ memory: OmoMemorySettingsLayerSchema.optional()
18848
19081
  }).strict();
18849
19082
  OmoConfigProfileSchema = object({
18850
19083
  categories: OmoCategoriesConfigSchema.optional(),
@@ -18853,6 +19086,7 @@ var init_config = __esm(() => {
18853
19086
  task: OmoTaskSettingsLayerSchema.optional(),
18854
19087
  teams: OmoTeamsConfigLayerSchema.optional(),
18855
19088
  models: OmoModelCatalogLayerSchema.optional(),
19089
+ memory: OmoMemorySettingsLayerSchema.optional(),
18856
19090
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
18857
19091
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
18858
19092
  "[codex]": OmoTypedHarnessConfigSchema.optional()
@@ -18865,6 +19099,7 @@ var init_config = __esm(() => {
18865
19099
  task: OmoTaskSettingsSchema.optional(),
18866
19100
  teams: OmoTeamsConfigSchema.optional(),
18867
19101
  models: OmoModelCatalogSchema.optional(),
19102
+ memory: OmoMemorySettingsSchema.optional(),
18868
19103
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
18869
19104
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
18870
19105
  "[codex]": OmoTypedHarnessConfigSchema.optional(),
@@ -18880,6 +19115,7 @@ var init_config = __esm(() => {
18880
19115
  task: OmoTaskSettingsLayerSchema.optional(),
18881
19116
  teams: OmoTeamsConfigLayerSchema.optional(),
18882
19117
  models: OmoModelCatalogLayerSchema.optional(),
19118
+ memory: OmoMemorySettingsLayerSchema.optional(),
18883
19119
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
18884
19120
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
18885
19121
  "[codex]": OmoTypedHarnessConfigSchema.optional(),
@@ -18897,7 +19133,9 @@ var init_schema = __esm(() => {
18897
19133
  init_config();
18898
19134
  init_fallback_models();
18899
19135
  init_harness();
19136
+ init_memory();
18900
19137
  init_model_catalog();
19138
+ init_model_ref();
18901
19139
  init_task();
18902
19140
  init_team();
18903
19141
  });
@@ -18960,11 +19198,8 @@ var init_types = __esm(() => {
18960
19198
  });
18961
19199
 
18962
19200
  // packages/omo-config-core/src/loader/paths.ts
18963
- import { dirname, isAbsolute, join as join2, posix, relative, resolve } from "path";
18964
- function containsPath(parent, child) {
18965
- const pathToChild = relative(parent, child);
18966
- return pathToChild === "" || !pathToChild.startsWith("..") && !isAbsolute(pathToChild);
18967
- }
19201
+ import { userInfo } from "os";
19202
+ import { dirname, join as join2, posix, resolve } from "path";
18968
19203
  function resolveHomeDir(env = process.env) {
18969
19204
  const homeDir = env.HOME ?? env.USERPROFILE ?? process.cwd();
18970
19205
  return homeDir.startsWith("/") ? posix.resolve(homeDir) : toPosixPath(resolve(homeDir));
@@ -19013,15 +19248,14 @@ function realpathOrSelf(path3, fileSystem) {
19013
19248
  return path3;
19014
19249
  }
19015
19250
  }
19016
- function findProjectConfigPathsFarthestFirst(cwd, homeDir, fileSystem) {
19251
+ function findProjectConfigPathsFarthestFirst(cwd, homeDir, fileSystem, accountHomeDir = homeDir) {
19017
19252
  const startDir = resolve(cwd);
19018
- const resolvedHomeDir = resolve(homeDir);
19019
- const realHomeDir = realpathOrSelf(resolvedHomeDir, fileSystem);
19020
- const stopDir = containsPath(realHomeDir, realpathOrSelf(startDir, fileSystem)) ? realHomeDir : null;
19253
+ const boundaryDirs = [...new Set([resolve(homeDir), resolve(accountHomeDir)])];
19254
+ const realBoundaryDirs = new Set(boundaryDirs.map((path3) => realpathOrSelf(path3, fileSystem)));
19021
19255
  const nearestFirst = [];
19022
19256
  let currentDir = startDir;
19023
19257
  for (let depth = 0;depth < MAX_PROJECT_CONFIG_DIRECTORY_DEPTH; depth += 1) {
19024
- const isHomeDir = currentDir === resolvedHomeDir || stopDir !== null && realpathOrSelf(currentDir, fileSystem) === stopDir;
19258
+ const isHomeDir = boundaryDirs.includes(currentDir) || realBoundaryDirs.has(realpathOrSelf(currentDir, fileSystem));
19025
19259
  const configPath = isHomeDir ? null : detectOmoJsonPath(currentDir, fileSystem);
19026
19260
  if (configPath !== null)
19027
19261
  nearestFirst.push(configPath);
@@ -19038,16 +19272,17 @@ function resolveOmoConfigPaths(options) {
19038
19272
  const fileSystem = options.fileSystem ?? DEFAULT_READ_FILE_SYSTEM;
19039
19273
  const env = options.env ?? process.env;
19040
19274
  const userPath = detectUserOmoJsonPath(env, fileSystem);
19041
- const projectPaths = findProjectConfigPathsFarthestFirst(options.cwd, resolveHomeDir(env), fileSystem);
19275
+ const projectPaths = findProjectConfigPathsFarthestFirst(options.cwd, resolveHomeDir(env), fileSystem, ACCOUNT_HOME_DIR);
19042
19276
  return [
19043
19277
  { path: userPath, scope: "user" },
19044
19278
  ...projectPaths.map((path3) => ({ path: path3, scope: "project" }))
19045
19279
  ];
19046
19280
  }
19047
- var MAX_PROJECT_CONFIG_DIRECTORY_DEPTH = 256;
19281
+ var MAX_PROJECT_CONFIG_DIRECTORY_DEPTH = 256, ACCOUNT_HOME_DIR;
19048
19282
  var init_paths = __esm(() => {
19049
19283
  init_posix_path();
19050
19284
  init_types();
19285
+ ACCOUNT_HOME_DIR = userInfo().homedir;
19051
19286
  });
19052
19287
 
19053
19288
  // packages/omo-config-core/src/loader/resolution.ts
@@ -19260,7 +19495,7 @@ var init_loader = __esm(() => {
19260
19495
  agents: {},
19261
19496
  categories: {},
19262
19497
  codegraph: OmoCodegraphSettingsSchema.parse({}),
19263
- task: OmoTaskSettingsSchema.parse({}),
19498
+ task: resolveOmoTaskSettings({}),
19264
19499
  teams: {}
19265
19500
  };
19266
19501
  });
@@ -19305,79 +19540,58 @@ function findModelCatalogCycles(catalog) {
19305
19540
  }
19306
19541
 
19307
19542
  // packages/omo-config-core/src/models/model-reference-resolution.ts
19308
- function catalogReference(model, variant, reasoningEffort, catalog, cycleNames) {
19543
+ function catalogReference(model, reasoning, catalog, cycleNames) {
19309
19544
  const entry = catalog?.[model];
19310
19545
  if (entry === undefined || cycleNames.has(model))
19311
19546
  return;
19312
19547
  return {
19313
19548
  model: entry.model,
19314
- ...variant === undefined && entry.variant !== undefined ? { variant: entry.variant } : variant !== undefined ? { variant } : {},
19315
- ...reasoningEffort === undefined && entry.reasoningEffort !== undefined ? { reasoningEffort: entry.reasoningEffort } : reasoningEffort !== undefined ? { reasoningEffort } : {}
19549
+ ...reasoning === undefined && entry.reasoning !== undefined ? { reasoning: entry.reasoning } : reasoning !== undefined ? { reasoning } : {}
19316
19550
  };
19317
19551
  }
19318
- function resolveAgentModelEntry(entry, catalog, cycleNames) {
19552
+ function resolveModelEntry(entry, catalog, cycleNames) {
19319
19553
  if (typeof entry === "string") {
19320
- const resolved2 = catalogReference(entry, undefined, undefined, catalog, cycleNames);
19554
+ const resolved2 = catalogReference(entry, undefined, catalog, cycleNames);
19321
19555
  if (resolved2 === undefined)
19322
19556
  return entry;
19323
- return resolved2.variant === undefined && resolved2.reasoningEffort === undefined ? resolved2.model : resolved2;
19557
+ return resolved2.reasoning === undefined ? resolved2.model : resolved2;
19324
19558
  }
19325
- const resolved = catalogReference(entry.model, entry.variant, entry.reasoningEffort, catalog, cycleNames);
19559
+ const resolved = catalogReference(entry.model, entry.reasoning, catalog, cycleNames);
19326
19560
  if (resolved === undefined)
19327
19561
  return entry;
19328
19562
  return {
19329
19563
  ...entry,
19330
19564
  model: resolved.model,
19331
- ...entry.variant === undefined && resolved.variant !== undefined ? { variant: resolved.variant } : {},
19332
- ...entry.reasoningEffort === undefined && resolved.reasoningEffort !== undefined ? { reasoningEffort: resolved.reasoningEffort } : {}
19333
- };
19334
- }
19335
- function resolveFallbackModelEntry(entry, catalog, cycleNames) {
19336
- if (typeof entry === "string") {
19337
- const resolved2 = catalogReference(entry, undefined, undefined, catalog, cycleNames);
19338
- if (resolved2 === undefined)
19339
- return entry;
19340
- return resolved2.variant === undefined && resolved2.reasoningEffort === undefined ? resolved2.model : resolved2;
19341
- }
19342
- const resolved = catalogReference(entry.model, entry.variant, entry.reasoningEffort, catalog, cycleNames);
19343
- if (resolved === undefined)
19344
- return entry;
19345
- return {
19346
- ...entry,
19347
- model: resolved.model,
19348
- ...entry.variant === undefined && resolved.variant !== undefined ? { variant: resolved.variant } : {},
19349
- ...entry.reasoningEffort === undefined && resolved.reasoningEffort !== undefined ? { reasoningEffort: resolved.reasoningEffort } : {}
19565
+ ...entry.reasoning === undefined && resolved.reasoning !== undefined ? { reasoning: resolved.reasoning } : {}
19350
19566
  };
19351
19567
  }
19352
19568
  function resolveFallbackModels(fallbackModels, catalog, cycleNames) {
19353
19569
  if (fallbackModels === undefined)
19354
19570
  return;
19355
19571
  if (typeof fallbackModels !== "string") {
19356
- return fallbackModels.map((entry) => resolveFallbackModelEntry(entry, catalog, cycleNames));
19572
+ return fallbackModels.map((entry) => resolveModelEntry(entry, catalog, cycleNames));
19357
19573
  }
19358
- const resolved = catalogReference(fallbackModels, undefined, undefined, catalog, cycleNames);
19359
- if (resolved === undefined || resolved.variant === undefined && resolved.reasoningEffort === undefined) {
19574
+ const resolved = catalogReference(fallbackModels, undefined, catalog, cycleNames);
19575
+ if (resolved === undefined || resolved.reasoning === undefined)
19360
19576
  return resolved?.model ?? fallbackModels;
19361
- }
19362
19577
  return [resolved];
19363
19578
  }
19364
19579
  function resolveAgentDefinition(definition, catalog, cycleNames) {
19365
- const resolvedModel = definition.model === undefined ? undefined : catalogReference(definition.model, definition.variant, definition.reasoningEffort, catalog, cycleNames);
19580
+ const resolvedModel = definition.model === undefined ? undefined : catalogReference(definition.model, definition.reasoning, catalog, cycleNames);
19366
19581
  return {
19367
19582
  ...definition,
19368
19583
  ...resolvedModel === undefined ? {} : { model: resolvedModel.model },
19369
- ...definition.variant === undefined && resolvedModel?.variant !== undefined ? { variant: resolvedModel.variant } : {},
19370
- ...definition.reasoningEffort === undefined && resolvedModel?.reasoningEffort !== undefined ? { reasoningEffort: resolvedModel.reasoningEffort } : {},
19371
- ...definition.models === undefined ? {} : { models: definition.models.map((entry) => resolveAgentModelEntry(entry, catalog, cycleNames)) }
19584
+ ...definition.reasoning === undefined && resolvedModel?.reasoning !== undefined ? { reasoning: resolvedModel.reasoning } : {},
19585
+ ...definition.models === undefined ? {} : { models: definition.models.map((entry) => resolveModelEntry(entry, catalog, cycleNames)) }
19372
19586
  };
19373
19587
  }
19374
19588
  function resolveCategoryDefinition(definition, catalog, cycleNames) {
19375
- const resolvedModel = definition.model === undefined ? undefined : catalogReference(definition.model, definition.variant, definition.reasoningEffort, catalog, cycleNames);
19589
+ const resolvedModel = definition.model === undefined ? undefined : catalogReference(definition.model, definition.reasoning, catalog, cycleNames);
19376
19590
  return {
19377
19591
  ...definition,
19378
19592
  ...resolvedModel === undefined ? {} : { model: resolvedModel.model },
19379
- ...definition.variant === undefined && resolvedModel?.variant !== undefined ? { variant: resolvedModel.variant } : {},
19380
- ...definition.reasoningEffort === undefined && resolvedModel?.reasoningEffort !== undefined ? { reasoningEffort: resolvedModel.reasoningEffort } : {},
19593
+ ...definition.reasoning === undefined && resolvedModel?.reasoning !== undefined ? { reasoning: resolvedModel.reasoning } : {},
19594
+ ...definition.models === undefined ? {} : { models: definition.models.map((entry) => resolveModelEntry(entry, catalog, cycleNames)) },
19381
19595
  ...definition.fallback_models === undefined ? {} : { fallback_models: resolveFallbackModels(definition.fallback_models, catalog, cycleNames) }
19382
19596
  };
19383
19597
  }
@@ -19551,17 +19765,31 @@ var init_archive_entry_validator = () => {};
19551
19765
  // packages/utils/src/ast-grep/sg-manifest.ts
19552
19766
  var init_sg_manifest = () => {};
19553
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
+
19554
19783
  // packages/utils/src/ast-grep/sg-provisioner.ts
19555
19784
  var init_sg_provisioner = () => {};
19556
19785
 
19557
19786
  // packages/utils/src/ast-grep/sg-resolver.ts
19558
19787
  var init_sg_resolver = () => {};
19559
19788
 
19560
- // packages/utils/src/ast-grep/install-script.ts
19561
- var init_install_script = () => {};
19562
-
19563
19789
  // packages/utils/src/ast-grep/index.ts
19564
19790
  var init_ast_grep = __esm(() => {
19791
+ init_sg_candidates();
19792
+ init_sg_install_hints();
19565
19793
  init_sg_manifest();
19566
19794
  init_sg_provisioner();
19567
19795
  init_sg_resolver();
@@ -20496,7 +20724,7 @@ var init_agent_model_requirements = __esm(() => {
20496
20724
  model: "kimi-k3"
20497
20725
  },
20498
20726
  { providers: ["openai", "github-copilot", "opencode", "vercel"], model: "gpt-5.6-sol", variant: "medium" },
20499
- { providers: ["zai-coding-plan", "opencode", "bailian-coding-plan", "vercel"], model: "glm-5" },
20727
+ { providers: ["zai-coding-plan", "opencode", "bailian-coding-plan", "vercel"], model: "glm-5.2" },
20500
20728
  { providers: ["opencode"], model: "big-pickle" }
20501
20729
  ],
20502
20730
  requiresAnyModel: true
@@ -20539,8 +20767,9 @@ var init_agent_model_requirements = __esm(() => {
20539
20767
  },
20540
20768
  librarian: {
20541
20769
  fallbackChain: [
20542
- { providers: ["openai"], model: "gpt-5.4-mini-fast" },
20543
- { providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.5-plus" },
20770
+ { providers: ["openai"], model: "gpt-5.6-luna-fast", variant: "low" },
20771
+ { providers: ["deepseek"], model: "deepseek-v4-flash", variant: "max" },
20772
+ { providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.7-plus" },
20544
20773
  { providers: ["vercel"], model: "minimax-m2.7-highspeed" },
20545
20774
  { providers: ["opencode-go", "vercel"], model: "minimax-m3" },
20546
20775
  { providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
@@ -20551,8 +20780,9 @@ var init_agent_model_requirements = __esm(() => {
20551
20780
  },
20552
20781
  explore: {
20553
20782
  fallbackChain: [
20554
- { providers: ["openai"], model: "gpt-5.4-mini-fast" },
20555
- { providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.5-plus" },
20783
+ { providers: ["openai"], model: "gpt-5.6-luna-fast", variant: "low" },
20784
+ { providers: ["deepseek"], model: "deepseek-v4-flash", variant: "max" },
20785
+ { providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.7-plus" },
20556
20786
  { providers: ["vercel"], model: "minimax-m2.7-highspeed" },
20557
20787
  { providers: ["opencode-go", "vercel"], model: "minimax-m3" },
20558
20788
  { providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
@@ -20626,7 +20856,7 @@ var init_agent_model_requirements = __esm(() => {
20626
20856
  },
20627
20857
  atlas: {
20628
20858
  fallbackChain: [
20629
- { providers: ["anthropic", "github-copilot", "opencode", "vercel"], model: "claude-sonnet-4-6" },
20859
+ { providers: ["anthropic", "github-copilot", "opencode", "vercel"], model: "claude-sonnet-5" },
20630
20860
  { providers: ["opencode-go", "vercel"], model: "kimi-k3" },
20631
20861
  {
20632
20862
  providers: ["openai", "github-copilot", "opencode", "vercel"],
@@ -20640,7 +20870,7 @@ var init_agent_model_requirements = __esm(() => {
20640
20870
  },
20641
20871
  "sisyphus-junior": {
20642
20872
  fallbackChain: [
20643
- { providers: ["anthropic", "github-copilot", "opencode", "vercel"], model: "claude-sonnet-4-6" },
20873
+ { providers: ["anthropic", "github-copilot", "opencode", "vercel"], model: "claude-sonnet-5" },
20644
20874
  { providers: ["opencode-go", "vercel"], model: "kimi-k3" },
20645
20875
  {
20646
20876
  providers: ["openai", "github-copilot", "opencode", "vercel"],
@@ -20663,109 +20893,69 @@ var init_category_model_requirements = __esm(() => {
20663
20893
  "visual-engineering": {
20664
20894
  fallbackChain: [
20665
20895
  {
20666
- providers: ["anthropic", "github-copilot", "opencode", "vercel"],
20896
+ providers: ["anthropic", "anthropic-api", "github-copilot", "opencode", "vercel"],
20667
20897
  model: "claude-opus-5",
20668
20898
  variant: "max"
20669
20899
  },
20670
20900
  {
20671
- providers: ["apitopia", "opencode-go", "kimi-for-coding", "moonshotai", "opencode", "vercel"],
20901
+ providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode", "vercel"],
20672
20902
  model: "kimi-k3",
20673
20903
  variant: "max"
20674
20904
  },
20675
20905
  {
20676
- providers: ["anthropic", "github-copilot", "opencode", "vercel"],
20677
- model: "claude-fable-5",
20678
- variant: "low"
20906
+ providers: ["zai-coding-plan", "opencode-go", "vercel"],
20907
+ model: "glm-5.2",
20908
+ variant: "max"
20679
20909
  },
20680
20910
  {
20681
- providers: ["google", "github-copilot", "opencode", "vercel"],
20682
- model: "gemini-3.1-pro",
20683
- variant: "high"
20684
- },
20685
- { providers: ["zai-coding-plan", "opencode", "bailian-coding-plan", "vercel"], model: "glm-5" },
20686
- { providers: ["opencode-go", "vercel"], model: "glm-5.2" }
20911
+ providers: ["openai", "quotio-openai", "github-copilot", "opencode", "vercel"],
20912
+ model: "gpt-5.6-sol",
20913
+ variant: "medium"
20914
+ }
20687
20915
  ]
20688
20916
  },
20689
20917
  ultrabrain: {
20690
20918
  fallbackChain: [
20691
20919
  {
20692
- providers: ["openai", "vercel"],
20920
+ providers: ["openai", "quotio-openai", "vercel"],
20693
20921
  model: "gpt-5.6-sol",
20694
- variant: "xhigh"
20922
+ variant: "max"
20695
20923
  },
20696
20924
  {
20697
20925
  providers: ["github-copilot"],
20698
20926
  model: "gpt-5.6-sol",
20699
- variant: "high"
20927
+ variant: "max"
20700
20928
  },
20701
20929
  {
20702
20930
  providers: ["openai", "opencode", "vercel"],
20703
20931
  model: "gpt-5.6-sol",
20704
- variant: "xhigh"
20705
- },
20706
- {
20707
- providers: ["google", "github-copilot", "opencode", "vercel"],
20708
- model: "gemini-3.1-pro",
20709
- variant: "high"
20710
- },
20711
- {
20712
- providers: ["anthropic", "github-copilot", "opencode", "vercel"],
20713
- model: "claude-opus-5",
20714
20932
  variant: "max"
20715
- },
20716
- { providers: ["opencode-go", "vercel"], model: "glm-5.2" }
20933
+ }
20717
20934
  ]
20718
20935
  },
20719
20936
  deep: {
20720
20937
  fallbackChain: [
20721
20938
  {
20722
- providers: ["openai", "vercel"],
20723
- model: "gpt-5.6-terra",
20724
- variant: "xhigh"
20725
- },
20726
- {
20727
- providers: ["github-copilot"],
20728
- model: "gpt-5.6-terra",
20729
- variant: "high"
20730
- },
20731
- {
20732
- providers: ["openai", "github-copilot", "vercel"],
20733
- model: "gpt-5.6-sol",
20734
- variant: "high"
20735
- },
20736
- {
20737
- providers: ["openai", "github-copilot", "opencode", "vercel"],
20939
+ providers: ["openai", "quotio-openai", "github-copilot", "opencode", "vercel"],
20738
20940
  model: "gpt-5.6-sol",
20739
20941
  variant: "medium"
20740
- },
20741
- {
20742
- providers: ["anthropic", "github-copilot", "opencode", "vercel"],
20743
- model: "claude-opus-5",
20744
- variant: "max"
20745
- },
20746
- {
20747
- providers: ["google", "github-copilot", "opencode", "vercel"],
20748
- model: "gemini-3.1-pro",
20749
- variant: "high"
20750
- },
20751
- { providers: ["opencode-go", "vercel"], model: "kimi-k3" },
20752
- { providers: ["opencode-go", "vercel"], model: "glm-5.2" }
20942
+ }
20753
20943
  ]
20754
20944
  },
20755
20945
  artistry: {
20756
20946
  fallbackChain: [
20757
20947
  {
20758
- providers: ["anthropic", "github-copilot", "opencode", "vercel"],
20948
+ providers: ["anthropic", "anthropic-api", "github-copilot", "opencode", "vercel"],
20759
20949
  model: "claude-fable-5",
20760
20950
  variant: "xhigh"
20761
20951
  },
20762
20952
  {
20763
- providers: ["apitopia", "opencode-go", "kimi-for-coding", "moonshotai", "opencode", "vercel"],
20953
+ providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode", "vercel"],
20764
20954
  model: "kimi-k3",
20765
20955
  variant: "max"
20766
20956
  },
20767
20957
  {
20768
- providers: ["anthropic", "github-copilot", "opencode", "vercel"],
20958
+ providers: ["anthropic", "anthropic-api", "github-copilot", "opencode", "vercel"],
20769
20959
  model: "claude-opus-5",
20770
20960
  variant: "xhigh"
20771
20961
  }
@@ -20773,88 +20963,88 @@ var init_category_model_requirements = __esm(() => {
20773
20963
  },
20774
20964
  quick: {
20775
20965
  fallbackChain: [
20776
- { providers: ["apitopia"], model: "kimi-for-coding-highspeed" },
20777
- { providers: ["quotio-openai"], model: "gpt-5.4-mini-fast" },
20966
+ { providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed" },
20967
+ { providers: ["quotio-openai"], model: "gpt-5.6-luna-fast", variant: "low" },
20968
+ { providers: ["deepseek"], model: "deepseek-v4-flash", variant: "off" },
20778
20969
  {
20779
- providers: ["anthropic-api", "anthropic", "github-copilot", "vercel"],
20780
- model: "claude-haiku-4-5"
20970
+ providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan", "opencode-go", "vercel"],
20971
+ model: "qwen3.6-flash",
20972
+ variant: "low"
20781
20973
  },
20974
+ { providers: ["opencode-go", "vercel"], model: "minimax-m3", variant: "max" },
20975
+ { providers: ["opencode-go", "vercel"], model: "minimax-m2.7", variant: "max" },
20976
+ { providers: ["xai"], model: "grok-4.20-0309-non-reasoning" },
20782
20977
  {
20783
- providers: ["google", "github-copilot", "opencode", "vercel"],
20784
- model: "gemini-3-flash"
20785
- },
20786
- { providers: ["opencode-go", "vercel"], model: "minimax-m3" },
20787
- { providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
20788
- { providers: ["opencode-go", "vercel"], model: "minimax-m2.7" },
20789
- { providers: ["opencode", "vercel"], model: "gpt-5-nano" }
20978
+ providers: ["anthropic", "anthropic-api", "github-copilot", "vercel"],
20979
+ model: "claude-haiku-4-5",
20980
+ variant: "off"
20981
+ }
20790
20982
  ]
20791
20983
  },
20792
20984
  "unspecified-low": {
20793
20985
  fallbackChain: [
20794
20986
  {
20795
- providers: ["openai", "vercel"],
20796
- model: "gpt-5.6-luna",
20797
- variant: "xhigh"
20798
- },
20799
- {
20800
- providers: ["github-copilot"],
20801
- model: "gpt-5.6-luna",
20987
+ providers: ["openai", "quotio-openai", "github-copilot", "opencode", "vercel"],
20988
+ model: "gpt-5.6-terra",
20802
20989
  variant: "high"
20803
20990
  },
20804
20991
  {
20805
- providers: ["anthropic", "github-copilot", "opencode", "vercel"],
20806
- model: "claude-sonnet-4-6"
20992
+ providers: ["anthropic", "anthropic-api", "github-copilot", "opencode", "vercel"],
20993
+ model: "claude-sonnet-5",
20994
+ variant: "low"
20807
20995
  },
20808
20996
  {
20809
- providers: ["openai", "opencode", "vercel"],
20810
- model: "gpt-5.6-sol",
20811
- variant: "medium"
20997
+ providers: ["qwen-token-plan", "alibaba-token-plan", "qwen-token-plan-cn", "alibaba-token-plan-cn"],
20998
+ model: "qwen3.8-max-preview",
20999
+ variant: "max"
20812
21000
  },
20813
- { providers: ["opencode-go", "vercel"], model: "kimi-k3" },
20814
21001
  {
20815
- providers: ["google", "github-copilot", "opencode", "vercel"],
20816
- model: "gemini-3-flash"
21002
+ providers: ["deepseek", "opencode-go", "vercel"],
21003
+ model: "deepseek-v4-pro",
21004
+ variant: "max"
20817
21005
  },
20818
- { providers: ["opencode-go", "vercel"], model: "minimax-m3" },
20819
- { providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
20820
- { providers: ["opencode-go", "vercel"], model: "minimax-m2.7" }
21006
+ {
21007
+ providers: ["xiaomi", "opencode-go", "vercel"],
21008
+ model: "mimo-v2.5-pro",
21009
+ variant: "max"
21010
+ }
20821
21011
  ]
20822
21012
  },
20823
21013
  "unspecified-high": {
20824
21014
  fallbackChain: [
20825
21015
  {
20826
- providers: ["apitopia", "opencode-go", "kimi-for-coding", "moonshotai", "opencode", "vercel"],
21016
+ providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode", "vercel"],
20827
21017
  model: "kimi-k3",
20828
21018
  variant: "max"
20829
21019
  },
20830
21020
  {
20831
- providers: ["anthropic", "github-copilot", "opencode", "vercel"],
21021
+ providers: ["anthropic", "anthropic-api", "github-copilot", "opencode", "vercel"],
20832
21022
  model: "claude-opus-5",
20833
- variant: "high"
21023
+ variant: "xhigh"
20834
21024
  },
20835
21025
  {
20836
- providers: ["openai", "github-copilot", "opencode", "vercel"],
21026
+ providers: ["openai", "quotio-openai", "github-copilot", "opencode", "vercel"],
20837
21027
  model: "gpt-5.6-sol",
20838
21028
  variant: "high"
20839
- },
20840
- { providers: ["zai-coding-plan", "opencode", "bailian-coding-plan", "vercel"], model: "glm-5" },
20841
- { providers: ["opencode-go", "vercel"], model: "glm-5.2" }
21029
+ }
20842
21030
  ]
20843
21031
  },
20844
21032
  writing: {
20845
21033
  fallbackChain: [
20846
21034
  {
20847
- providers: ["google", "github-copilot", "opencode", "vercel"],
20848
- model: "gemini-3-flash"
21035
+ providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode", "vercel"],
21036
+ model: "kimi-k3",
21037
+ variant: "low"
20849
21038
  },
20850
- { providers: ["opencode-go", "vercel"], model: "kimi-k3" },
20851
21039
  {
20852
- providers: ["anthropic", "github-copilot", "opencode", "vercel"],
20853
- model: "claude-sonnet-4-6"
21040
+ providers: ["anthropic", "anthropic-api", "github-copilot", "opencode", "vercel"],
21041
+ model: "claude-opus-5",
21042
+ variant: "low"
20854
21043
  },
20855
- { providers: ["opencode-go", "vercel"], model: "minimax-m3" },
20856
- { providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
20857
- { providers: ["opencode-go", "vercel"], model: "minimax-m2.7" }
21044
+ {
21045
+ providers: ["google", "github-copilot", "opencode", "vercel"],
21046
+ model: "gemini-3.6-flash"
21047
+ }
20858
21048
  ]
20859
21049
  }
20860
21050
  };
@@ -20965,9 +21155,71 @@ function normalizeModelID(modelID) {
20965
21155
  return modelID.replace(/\.(\d+)/g, "-$1");
20966
21156
  }
20967
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
+
20968
21219
  // packages/model-core/src/model-capability-heuristics.ts
20969
21220
  function detectHeuristicModelFamily(modelID) {
20970
- const normalizedModelID = normalizeModelID(modelID).toLowerCase();
21221
+ const parsedModel = parseVariantFromModelID(modelID, { allowMaxSuffix: true });
21222
+ const normalizedModelID = normalizeModelID(parsedModel.modelID).toLowerCase();
20971
21223
  for (const definition of HEURISTIC_MODEL_FAMILY_REGISTRY) {
20972
21224
  if (definition.pattern?.test(normalizedModelID)) {
20973
21225
  return definition;
@@ -20980,6 +21232,7 @@ function detectHeuristicModelFamily(modelID) {
20980
21232
  }
20981
21233
  var HEURISTIC_MODEL_FAMILY_REGISTRY;
20982
21234
  var init_model_capability_heuristics = __esm(() => {
21235
+ init_model_string_parser();
20983
21236
  HEURISTIC_MODEL_FAMILY_REGISTRY = [
20984
21237
  {
20985
21238
  family: "claude-opus",
@@ -20993,11 +21246,19 @@ var init_model_capability_heuristics = __esm(() => {
20993
21246
  variants: ["low", "medium", "high"],
20994
21247
  supportsThinking: true
20995
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
+ },
20996
21256
  {
20997
21257
  family: "openai-reasoning",
20998
21258
  pattern: /(?:^|\/)o\d(?:$|-)/,
20999
21259
  variants: ["low", "medium", "high"],
21000
- reasoningEfforts: ["none", "minimal", "low", "medium", "high"]
21260
+ reasoningEfforts: ["none", "minimal", "low", "medium", "high"],
21261
+ supportsTemperature: false
21001
21262
  },
21002
21263
  {
21003
21264
  family: "gpt-5",
@@ -21041,7 +21302,13 @@ var init_model_capability_heuristics = __esm(() => {
21041
21302
  {
21042
21303
  family: "glm",
21043
21304
  includes: ["glm"],
21044
- 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
+ }
21045
21312
  },
21046
21313
  {
21047
21314
  family: "minimax",
@@ -21079,22 +21346,6 @@ var init_model_capability_guardrails = () => {};
21079
21346
  // packages/model-core/src/model-settings-compatibility.ts
21080
21347
  var init_model_settings_compatibility = () => {};
21081
21348
 
21082
- // packages/model-core/src/known-variants.ts
21083
- var KNOWN_VARIANTS;
21084
- var init_known_variants = __esm(() => {
21085
- KNOWN_VARIANTS = new Set([
21086
- "low",
21087
- "medium",
21088
- "high",
21089
- "xhigh",
21090
- "max",
21091
- "minimal",
21092
- "none",
21093
- "auto",
21094
- "thinking"
21095
- ]);
21096
- });
21097
-
21098
21349
  // packages/model-core/src/model-resolver.ts
21099
21350
  function normalizeFallbackModels(models2) {
21100
21351
  if (!models2)
@@ -21105,22 +21356,6 @@ function normalizeFallbackModels(models2) {
21105
21356
  }
21106
21357
  var init_model_resolver = () => {};
21107
21358
 
21108
- // packages/model-core/src/model-string-parser.ts
21109
- var KNOWN_VARIANTS2;
21110
- var init_model_string_parser = __esm(() => {
21111
- KNOWN_VARIANTS2 = new Set([
21112
- "low",
21113
- "medium",
21114
- "high",
21115
- "xhigh",
21116
- "max",
21117
- "minimal",
21118
- "none",
21119
- "auto",
21120
- "thinking"
21121
- ]);
21122
- });
21123
-
21124
21359
  // packages/model-core/src/fallback-chain-from-models.ts
21125
21360
  var init_fallback_chain_from_models = () => {};
21126
21361
 
@@ -21263,8 +21498,8 @@ var init_supplemental_entries = __esm(() => {
21263
21498
  output: 128000
21264
21499
  }
21265
21500
  },
21266
- "gpt-5.4-mini-fast": {
21267
- id: "gpt-5.4-mini-fast",
21501
+ "gpt-5.6-luna-fast": {
21502
+ id: "gpt-5.6-luna-fast",
21268
21503
  family: "gpt-mini",
21269
21504
  reasoning: true,
21270
21505
  temperature: false,
@@ -21297,7 +21532,7 @@ var init_bundled_snapshot = __esm(() => {
21297
21532
  });
21298
21533
 
21299
21534
  // packages/model-core/src/model-capabilities/runtime-model-readers.ts
21300
- function isRecord2(value) {
21535
+ function isRecord6(value) {
21301
21536
  return typeof value === "object" && value !== null && !Array.isArray(value);
21302
21537
  }
21303
21538
  function readNumber(value) {
@@ -21315,7 +21550,7 @@ function normalizeVariantKeys(value) {
21315
21550
  if (arrayVariants) {
21316
21551
  return arrayVariants.filter((v) => typeof v === "string").map((variant) => variant.toLowerCase());
21317
21552
  }
21318
- if (!isRecord2(value)) {
21553
+ if (!isRecord6(value)) {
21319
21554
  return;
21320
21555
  }
21321
21556
  const variants = Object.keys(value).map((variant) => variant.toLowerCase());
@@ -21326,7 +21561,7 @@ function readModalityKeys(value) {
21326
21561
  if (stringArray) {
21327
21562
  return stringArray.filter((entry) => typeof entry === "string").map((entry) => entry.toLowerCase());
21328
21563
  }
21329
- if (!isRecord2(value)) {
21564
+ if (!isRecord6(value)) {
21330
21565
  return;
21331
21566
  }
21332
21567
  const fromNested = Object.values(value).filter((v) => Array.isArray(v)).flat().filter((item) => typeof item === "string");
@@ -21337,7 +21572,7 @@ function readModalityKeys(value) {
21337
21572
  return enabled.length > 0 ? enabled : undefined;
21338
21573
  }
21339
21574
  function normalizeModalities(value) {
21340
- if (!isRecord2(value)) {
21575
+ if (!isRecord6(value)) {
21341
21576
  return;
21342
21577
  }
21343
21578
  const input = readModalityKeys(value.input);
@@ -21351,7 +21586,7 @@ function normalizeModalities(value) {
21351
21586
  };
21352
21587
  }
21353
21588
  function readRuntimeModelCapabilities(runtimeModel) {
21354
- return isRecord2(runtimeModel?.capabilities) ? runtimeModel.capabilities : undefined;
21589
+ return isRecord6(runtimeModel?.capabilities) ? runtimeModel.capabilities : undefined;
21355
21590
  }
21356
21591
  function readRuntimeModelBoolean(runtimeModel, keys) {
21357
21592
  const runtimeCapabilities = readRuntimeModelCapabilities(runtimeModel);
@@ -21368,7 +21603,7 @@ function readRuntimeModelBoolean(runtimeModel, keys) {
21368
21603
  return;
21369
21604
  }
21370
21605
  function readRuntimeModel(runtimeModel) {
21371
- return isRecord2(runtimeModel) ? runtimeModel : undefined;
21606
+ return isRecord6(runtimeModel) ? runtimeModel : undefined;
21372
21607
  }
21373
21608
  function readRuntimeModelVariants(runtimeModel) {
21374
21609
  const rootVariants = normalizeVariantKeys(runtimeModel?.variants);
@@ -21416,8 +21651,8 @@ function readRuntimeModelToolCallSupport(runtimeModel) {
21416
21651
  return readRuntimeModelBoolean(runtimeModel, ["toolCall", "tool_call", "toolcall"]);
21417
21652
  }
21418
21653
  function readRuntimeModelLimitOutput(runtimeModel) {
21419
- const limit = isRecord2(runtimeModel?.limit) ? runtimeModel.limit : readRuntimeModelCapabilities(runtimeModel)?.limit;
21420
- if (!isRecord2(limit)) {
21654
+ const limit = isRecord6(runtimeModel?.limit) ? runtimeModel.limit : readRuntimeModelCapabilities(runtimeModel)?.limit;
21655
+ if (!isRecord6(limit)) {
21421
21656
  return;
21422
21657
  }
21423
21658
  const output = readNumber(limit.output);
@@ -21436,14 +21671,89 @@ function getProviderOverride(providerID, modelID) {
21436
21671
  return;
21437
21672
  return GITHUB_COPILOT_GPT5_MODEL.test(normalizeLookupModelID2(modelID)) ? GITHUB_COPILOT_GPT5_OVERRIDE : undefined;
21438
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
+ }
21439
21746
  function getModelCapabilities(input) {
21440
- const canonicalization = resolveModelIDAlias(input.modelID, input.providerID);
21747
+ const canonicalization = resolveCapabilityModelAlias(input.modelID, input.providerID);
21441
21748
  const override = getOverride(input.modelID);
21442
21749
  const providerOverride = getProviderOverride(input.providerID, canonicalization.canonicalModelID);
21443
- const runtimeModel = readRuntimeModel(input.runtimeModel ?? input.providerCache?.findProviderModelMetadata(input.providerID, input.modelID));
21750
+ const runtimeModel = readRuntimeModel(input.runtimeModel ?? findProviderMetadata(input.providerCache, input.providerID, input.modelID));
21444
21751
  const runtimeSnapshot = input.runtimeSnapshot;
21445
21752
  const bundledSnapshot = input.bundledSnapshot;
21446
- const snapshotEntry = runtimeSnapshot?.models?.[canonicalization.canonicalModelID] ?? bundledSnapshot?.models?.[canonicalization.canonicalModelID];
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;
21447
21757
  const heuristicFamily = detectHeuristicModelFamily(canonicalization.canonicalModelID);
21448
21758
  const runtimeVariants = readRuntimeModelVariants(runtimeModel);
21449
21759
  const runtimeReasoning = readRuntimeModelReasoningSupport(runtimeModel);
@@ -21453,7 +21763,7 @@ function getModelCapabilities(input) {
21453
21763
  const runtimeMaxOutputTokens = readRuntimeModelLimitOutput(runtimeModel);
21454
21764
  const runtimeToolCall = readRuntimeModelToolCallSupport(runtimeModel);
21455
21765
  const runtimeModalities = readRuntimeModelModalities(runtimeModel);
21456
- const snapshotSource = runtimeSnapshot?.models?.[canonicalization.canonicalModelID] ? "runtime-snapshot" : bundledSnapshot?.models?.[canonicalization.canonicalModelID] ? "bundled-snapshot" : "none";
21766
+ const snapshotSource = runtimeSnapshotEntry ? "runtime-snapshot" : bundledSnapshotEntry ? "bundled-snapshot" : "none";
21457
21767
  const familySource = snapshotEntry?.family ? "snapshot" : heuristicFamily?.family ? "heuristic" : "none";
21458
21768
  const variantsSource = runtimeVariants ? "runtime" : providerOverride?.variants ? "override" : override?.variants ? "override" : heuristicFamily?.variants ? "heuristic" : "none";
21459
21769
  const reasoningEffortsSource = providerOverride?.reasoningEfforts ? "override" : override?.reasoningEfforts ? "override" : heuristicFamily?.reasoningEfforts ? "heuristic" : "none";
@@ -21464,7 +21774,7 @@ function getModelCapabilities(input) {
21464
21774
  const maxOutputTokensSource = runtimeMaxOutputTokens !== undefined ? "runtime" : snapshotEntry?.limit?.output !== undefined ? snapshotSource : "none";
21465
21775
  const toolCallSource = runtimeToolCall !== undefined ? "runtime" : snapshotEntry?.toolCall !== undefined ? snapshotSource : "none";
21466
21776
  const modalitiesSource = runtimeModalities !== undefined ? "runtime" : snapshotEntry?.modalities !== undefined ? snapshotSource : "none";
21467
- const resolutionMode = snapshotSource !== "none" && canonicalization.source === "canonical" ? "snapshot-backed" : snapshotSource !== "none" ? "alias-backed" : familySource === "heuristic" || variantsSource === "heuristic" || reasoningEffortsSource === "heuristic" ? "heuristic-backed" : "unknown";
21777
+ const resolutionMode = canonicalization.source === "canonical" ? snapshotSource !== "none" ? "snapshot-backed" : familySource === "heuristic" || variantsSource === "heuristic" || reasoningEffortsSource === "heuristic" ? "heuristic-backed" : "unknown" : "alias-backed";
21468
21778
  return {
21469
21779
  requestedModelID: canonicalization.requestedModelID,
21470
21780
  canonicalModelID: canonicalization.canonicalModelID,
@@ -21502,6 +21812,7 @@ var MODEL_ID_OVERRIDES, GITHUB_COPILOT_GPT5_MODEL, GITHUB_COPILOT_GPT5_OVERRIDE;
21502
21812
  var init_get_model_capabilities = __esm(() => {
21503
21813
  init_model_capability_aliases();
21504
21814
  init_model_capability_heuristics();
21815
+ init_model_string_parser();
21505
21816
  MODEL_ID_OVERRIDES = {};
21506
21817
  GITHUB_COPILOT_GPT5_MODEL = /(?:^|\/)gpt-5(?:[.-]|$)/;
21507
21818
  GITHUB_COPILOT_GPT5_OVERRIDE = {
@@ -21520,7 +21831,7 @@ var init_model_capabilities = __esm(() => {
21520
21831
  var init_context_limit_resolver = () => {};
21521
21832
 
21522
21833
  // packages/model-core/src/model-capabilities-snapshot.ts
21523
- function isRecord3(value) {
21834
+ function isRecord7(value) {
21524
21835
  return typeof value === "object" && value !== null && !Array.isArray(value);
21525
21836
  }
21526
21837
  function readBoolean(value) {
@@ -21540,7 +21851,7 @@ function readStringArray2(value) {
21540
21851
  return result.length > 0 ? result : undefined;
21541
21852
  }
21542
21853
  function normalizeSnapshotEntry(rawModelID, rawModel) {
21543
- if (!isRecord3(rawModel)) {
21854
+ if (!isRecord7(rawModel)) {
21544
21855
  return;
21545
21856
  }
21546
21857
  const id = readString(rawModel.id) ?? rawModelID;
@@ -21548,14 +21859,14 @@ function normalizeSnapshotEntry(rawModelID, rawModel) {
21548
21859
  const reasoning = readBoolean(rawModel.reasoning);
21549
21860
  const temperature = readBoolean(rawModel.temperature);
21550
21861
  const toolCall = readBoolean(rawModel.tool_call);
21551
- const rawModalities = isRecord3(rawModel.modalities) ? rawModel.modalities : undefined;
21862
+ const rawModalities = isRecord7(rawModel.modalities) ? rawModel.modalities : undefined;
21552
21863
  const modalitiesInput = readStringArray2(rawModalities?.input);
21553
21864
  const modalitiesOutput = readStringArray2(rawModalities?.output);
21554
21865
  const modalities = modalitiesInput || modalitiesOutput ? {
21555
21866
  ...modalitiesInput ? { input: modalitiesInput } : {},
21556
21867
  ...modalitiesOutput ? { output: modalitiesOutput } : {}
21557
21868
  } : undefined;
21558
- const rawLimit = isRecord3(rawModel.limit) ? rawModel.limit : undefined;
21869
+ const rawLimit = isRecord7(rawModel.limit) ? rawModel.limit : undefined;
21559
21870
  const limitContext = readNumber2(rawLimit?.context);
21560
21871
  const limitInput = readNumber2(rawLimit?.input);
21561
21872
  const limitOutput = readNumber2(rawLimit?.output);
@@ -21595,13 +21906,13 @@ function mergeSnapshotEntries(existing, incoming) {
21595
21906
  }
21596
21907
  function buildModelCapabilitiesSnapshotFromModelsDev(raw) {
21597
21908
  const models2 = {};
21598
- const providers = isRecord3(raw) ? raw : {};
21909
+ const providers = isRecord7(raw) ? raw : {};
21599
21910
  for (const providerValue of Object.values(providers)) {
21600
- if (!isRecord3(providerValue)) {
21911
+ if (!isRecord7(providerValue)) {
21601
21912
  continue;
21602
21913
  }
21603
21914
  const providerModels = providerValue.models;
21604
- if (!isRecord3(providerModels)) {
21915
+ if (!isRecord7(providerModels)) {
21605
21916
  continue;
21606
21917
  }
21607
21918
  for (const [rawModelID, rawModel] of Object.entries(providerModels)) {
@@ -21643,9 +21954,9 @@ var init_src3 = __esm(() => {
21643
21954
  init_model_capability_heuristics();
21644
21955
  init_model_capability_guardrails();
21645
21956
  init_model_settings_compatibility();
21957
+ init_reasoning_level();
21646
21958
  init_model_string_parser();
21647
21959
  init_fallback_chain_from_models();
21648
- init_known_variants();
21649
21960
  init_model_error_classifier();
21650
21961
  init_runtime_fallback_auto_retry_signal();
21651
21962
  init_runtime_fallback_error_classifier();
@@ -22105,7 +22416,7 @@ function recordFields(value, fields) {
22105
22416
  }
22106
22417
  function modelInput(view) {
22107
22418
  const agents = isPlainRecord(view.agents) ? Object.fromEntries(Object.entries(view.agents).flatMap(([name, definition]) => {
22108
- 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"]);
22109
22420
  return fields === undefined ? [] : [[name, fields]];
22110
22421
  })) : undefined;
22111
22422
  const categories = isPlainRecord(view.categories) ? Object.fromEntries(Object.entries(view.categories).flatMap(([name, definition]) => {
@@ -22334,9 +22645,11 @@ var init_agent_names = __esm(() => {
22334
22645
  // packages/omo-opencode/src/config/schema/fallback-models.ts
22335
22646
  var FallbackModelObjectSchema, FallbackModelStringArraySchema, FallbackModelObjectArraySchema, FallbackModelMixedArraySchema, FallbackModelsSchema;
22336
22647
  var init_fallback_models2 = __esm(() => {
22648
+ init_src();
22337
22649
  init_zod();
22338
22650
  FallbackModelObjectSchema = exports_external.object({
22339
22651
  model: exports_external.string(),
22652
+ reasoning: OmoReasoningSchema.optional(),
22340
22653
  variant: exports_external.string().optional(),
22341
22654
  reasoningEffort: exports_external.enum(["none", "minimal", "low", "medium", "high", "xhigh", "max"]).optional(),
22342
22655
  temperature: exports_external.number().min(0).max(2).optional(),
@@ -22380,12 +22693,15 @@ var init_permission = __esm(() => {
22380
22693
  // packages/omo-opencode/src/config/schema/agent-overrides.ts
22381
22694
  var AgentOverrideConfigSchema, AgentOverridesSchema;
22382
22695
  var init_agent_overrides = __esm(() => {
22696
+ init_src();
22383
22697
  init_zod();
22384
22698
  init_fallback_models2();
22385
22699
  init_permission();
22386
22700
  AgentOverrideConfigSchema = exports_external.object({
22387
22701
  model: exports_external.string().optional(),
22702
+ models: exports_external.array(exports_external.union([exports_external.string(), FallbackModelObjectSchema])).optional(),
22388
22703
  fallback_models: FallbackModelsSchema.optional(),
22704
+ reasoning: OmoReasoningSchema.optional(),
22389
22705
  variant: exports_external.string().optional(),
22390
22706
  category: exports_external.string().optional(),
22391
22707
  skills: exports_external.array(exports_external.string()).optional(),
@@ -22410,10 +22726,12 @@ var init_agent_overrides = __esm(() => {
22410
22726
  providerOptions: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
22411
22727
  ultrawork: exports_external.object({
22412
22728
  model: exports_external.string().optional(),
22729
+ reasoning: OmoReasoningSchema.optional(),
22413
22730
  variant: exports_external.string().optional()
22414
22731
  }).optional(),
22415
22732
  compaction: exports_external.object({
22416
22733
  model: exports_external.string().optional(),
22734
+ reasoning: OmoReasoningSchema.optional(),
22417
22735
  variant: exports_external.string().optional()
22418
22736
  }).optional()
22419
22737
  });
@@ -22490,15 +22808,20 @@ var init_browser_automation = __esm(() => {
22490
22808
  // packages/omo-opencode/src/config/schema/categories.ts
22491
22809
  var CategoryConfigSchema, BuiltinCategoryNameSchema, CategoriesConfigSchema;
22492
22810
  var init_categories = __esm(() => {
22811
+ init_src();
22493
22812
  init_zod();
22494
22813
  init_fallback_models2();
22495
22814
  CategoryConfigSchema = exports_external.object({
22496
22815
  description: exports_external.string().optional(),
22497
22816
  model: exports_external.string().optional(),
22817
+ models: exports_external.array(exports_external.union([exports_external.string(), FallbackModelObjectSchema])).optional(),
22498
22818
  fallback_models: FallbackModelsSchema.optional(),
22819
+ reasoning: OmoReasoningSchema.optional(),
22499
22820
  variant: exports_external.string().optional(),
22500
22821
  temperature: exports_external.number().min(0).max(2).optional(),
22501
22822
  top_p: exports_external.number().min(0).max(1).optional(),
22823
+ max_tokens: exports_external.number().int().positive().optional(),
22824
+ provider_options: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
22502
22825
  maxTokens: exports_external.number().optional(),
22503
22826
  thinking: exports_external.object({
22504
22827
  type: exports_external.enum(["enabled", "disabled"]),
@@ -22510,7 +22833,8 @@ var init_categories = __esm(() => {
22510
22833
  prompt_append: exports_external.string().optional(),
22511
22834
  max_prompt_tokens: exports_external.number().int().positive().optional(),
22512
22835
  is_unstable_agent: exports_external.boolean().optional(),
22513
- disable: exports_external.boolean().optional()
22836
+ disable: exports_external.boolean().optional(),
22837
+ warn_unavailable: exports_external.boolean().optional()
22514
22838
  });
22515
22839
  BuiltinCategoryNameSchema = exports_external.enum([
22516
22840
  "visual-engineering",
@@ -23238,9 +23562,9 @@ var exports_validate = {};
23238
23562
  __export(exports_validate, {
23239
23563
  validatePluginConfig: () => validatePluginConfig
23240
23564
  });
23241
- import { relative as relative2 } from "path";
23565
+ import { relative } from "path";
23242
23566
  function shortPath(configPath) {
23243
- const candidate = relative2(process.cwd(), configPath);
23567
+ const candidate = relative(process.cwd(), configPath);
23244
23568
  return candidate.length > 0 ? candidate : configPath;
23245
23569
  }
23246
23570
  function formatIssuePath(path4) {
@@ -23294,6 +23618,37 @@ function protectUserFields(config4, userConfig) {
23294
23618
  }
23295
23619
  };
23296
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
+ }
23297
23652
  function migrateRalphLoopConfig(config4) {
23298
23653
  const legacy = config4.ralph_loop;
23299
23654
  if (legacy === undefined)
@@ -23321,7 +23676,7 @@ function validatePluginConfig(directory, environment2 = process.env) {
23321
23676
  const firstFailingView = views.find((view) => view.messages.length > 0);
23322
23677
  const firstView = views[0];
23323
23678
  const userConfig = parseConfig(chain.protectedUserView);
23324
- const config4 = applyDisabledProviders(protectUserFields(mergeViews(views), userConfig));
23679
+ const config4 = applyDisabledProviders(materializeAgentModelChains(protectUserFields(mergeViews(views), userConfig)));
23325
23680
  return {
23326
23681
  valid: messages.length === 0,
23327
23682
  messages,
@@ -23346,7 +23701,7 @@ var init_model_requirements2 = __esm(() => {
23346
23701
  var model_capabilities_generated_default;
23347
23702
  var init_model_capabilities_generated = __esm(() => {
23348
23703
  model_capabilities_generated_default = {
23349
- generatedAt: "2026-07-25T14:04:01.805Z",
23704
+ generatedAt: "2026-07-29T03:28:21.339Z",
23350
23705
  sourceUrl: "https://models.dev/api.json",
23351
23706
  models: {
23352
23707
  "glm-5": {
@@ -23781,6 +24136,8 @@ var init_model_capabilities_generated = __esm(() => {
23781
24136
  input: [
23782
24137
  "text",
23783
24138
  "image",
24139
+ "video",
24140
+ "audio",
23784
24141
  "pdf"
23785
24142
  ],
23786
24143
  output: [
@@ -23788,8 +24145,8 @@ var init_model_capabilities_generated = __esm(() => {
23788
24145
  ]
23789
24146
  },
23790
24147
  limit: {
23791
- context: 1e6,
23792
- output: 64000
24148
+ context: 1048576,
24149
+ output: 65536
23793
24150
  }
23794
24151
  },
23795
24152
  "google/gemini-2.5-flash-lite": {
@@ -24431,28 +24788,29 @@ var init_model_capabilities_generated = __esm(() => {
24431
24788
  output: 262000
24432
24789
  }
24433
24790
  },
24434
- "accounts/fireworks/routers/glm-5p1-fast": {
24435
- id: "accounts/fireworks/routers/glm-5p1-fast",
24436
- family: "glm",
24791
+ "accounts/fireworks/routers/kimi-k2p6-turbo": {
24792
+ id: "accounts/fireworks/routers/kimi-k2p6-turbo",
24793
+ family: "kimi-thinking",
24437
24794
  reasoning: true,
24438
24795
  temperature: true,
24439
24796
  toolCall: true,
24440
24797
  modalities: {
24441
24798
  input: [
24442
- "text"
24799
+ "text",
24800
+ "image"
24443
24801
  ],
24444
24802
  output: [
24445
24803
  "text"
24446
24804
  ]
24447
24805
  },
24448
24806
  limit: {
24449
- context: 202800,
24450
- output: 131072
24807
+ context: 262000,
24808
+ output: 262000
24451
24809
  }
24452
24810
  },
24453
- "accounts/fireworks/routers/kimi-k2p6-turbo": {
24454
- id: "accounts/fireworks/routers/kimi-k2p6-turbo",
24455
- family: "kimi-thinking",
24811
+ "accounts/fireworks/routers/kimi-k2p7-code-fast": {
24812
+ id: "accounts/fireworks/routers/kimi-k2p7-code-fast",
24813
+ family: "kimi-k2",
24456
24814
  reasoning: true,
24457
24815
  temperature: true,
24458
24816
  toolCall: true,
@@ -24470,11 +24828,11 @@ var init_model_capabilities_generated = __esm(() => {
24470
24828
  output: 262000
24471
24829
  }
24472
24830
  },
24473
- "accounts/fireworks/routers/kimi-k2p7-code-fast": {
24474
- id: "accounts/fireworks/routers/kimi-k2p7-code-fast",
24475
- family: "kimi-k2",
24831
+ "accounts/fireworks/routers/kimi-k3-fast": {
24832
+ id: "accounts/fireworks/routers/kimi-k3-fast",
24833
+ family: "kimi-k3",
24476
24834
  reasoning: true,
24477
- temperature: true,
24835
+ temperature: false,
24478
24836
  toolCall: true,
24479
24837
  modalities: {
24480
24838
  input: [
@@ -24486,8 +24844,8 @@ var init_model_capabilities_generated = __esm(() => {
24486
24844
  ]
24487
24845
  },
24488
24846
  limit: {
24489
- context: 262000,
24490
- output: 262000
24847
+ context: 1048576,
24848
+ output: 131072
24491
24849
  }
24492
24850
  },
24493
24851
  "accounts/fireworks/models/qwen3p7-plus": {
@@ -24608,25 +24966,6 @@ var init_model_capabilities_generated = __esm(() => {
24608
24966
  output: 512000
24609
24967
  }
24610
24968
  },
24611
- "accounts/fireworks/models/glm-5p1": {
24612
- id: "accounts/fireworks/models/glm-5p1",
24613
- family: "glm",
24614
- reasoning: true,
24615
- temperature: true,
24616
- toolCall: true,
24617
- modalities: {
24618
- input: [
24619
- "text"
24620
- ],
24621
- output: [
24622
- "text"
24623
- ]
24624
- },
24625
- limit: {
24626
- context: 202800,
24627
- output: 131072
24628
- }
24629
- },
24630
24969
  "accounts/fireworks/models/deepseek-v4-pro": {
24631
24970
  id: "accounts/fireworks/models/deepseek-v4-pro",
24632
24971
  family: "deepseek-thinking",
@@ -24704,6 +25043,26 @@ var init_model_capabilities_generated = __esm(() => {
24704
25043
  output: 131072
24705
25044
  }
24706
25045
  },
25046
+ "accounts/fireworks/models/kimi-k3": {
25047
+ id: "accounts/fireworks/models/kimi-k3",
25048
+ family: "kimi-k3",
25049
+ reasoning: true,
25050
+ temperature: false,
25051
+ toolCall: true,
25052
+ modalities: {
25053
+ input: [
25054
+ "text",
25055
+ "image"
25056
+ ],
25057
+ output: [
25058
+ "text"
25059
+ ]
25060
+ },
25061
+ limit: {
25062
+ context: 1048576,
25063
+ output: 131072
25064
+ }
25065
+ },
24707
25066
  "microsoft/phi-4-mini-instruct": {
24708
25067
  id: "microsoft/phi-4-mini-instruct",
24709
25068
  family: "phi",
@@ -25851,6 +26210,27 @@ var init_model_capabilities_generated = __esm(() => {
25851
26210
  output: 128000
25852
26211
  }
25853
26212
  },
26213
+ "anthropic/claude-opus-5": {
26214
+ id: "anthropic/claude-opus-5",
26215
+ family: "claude-opus",
26216
+ reasoning: true,
26217
+ temperature: false,
26218
+ toolCall: true,
26219
+ modalities: {
26220
+ input: [
26221
+ "text",
26222
+ "image",
26223
+ "pdf"
26224
+ ],
26225
+ output: [
26226
+ "text"
26227
+ ]
26228
+ },
26229
+ limit: {
26230
+ context: 1e6,
26231
+ output: 128000
26232
+ }
26233
+ },
25854
26234
  "z-ai/glm-5": {
25855
26235
  id: "z-ai/glm-5",
25856
26236
  family: "glm",
@@ -26055,8 +26435,8 @@ var init_model_capabilities_generated = __esm(() => {
26055
26435
  output: 128000
26056
26436
  }
26057
26437
  },
26058
- "openai/gpt-5.4-mini": {
26059
- id: "openai/gpt-5.4-mini",
26438
+ "openai/gpt-5.6-luna-fast": {
26439
+ id: "openai/gpt-5.6-luna-fast",
26060
26440
  family: "gpt-mini",
26061
26441
  reasoning: true,
26062
26442
  temperature: false,
@@ -26284,15 +26664,14 @@ var init_model_capabilities_generated = __esm(() => {
26284
26664
  modalities: {
26285
26665
  input: [
26286
26666
  "text",
26287
- "image",
26288
- "pdf"
26667
+ "image"
26289
26668
  ],
26290
26669
  output: [
26291
26670
  "text"
26292
26671
  ]
26293
26672
  },
26294
26673
  limit: {
26295
- context: 1e6,
26674
+ context: 200000,
26296
26675
  output: 128000
26297
26676
  }
26298
26677
  },
@@ -26412,15 +26791,14 @@ var init_model_capabilities_generated = __esm(() => {
26412
26791
  modalities: {
26413
26792
  input: [
26414
26793
  "text",
26415
- "image",
26416
- "pdf"
26794
+ "image"
26417
26795
  ],
26418
26796
  output: [
26419
26797
  "text"
26420
26798
  ]
26421
26799
  },
26422
26800
  limit: {
26423
- context: 1e6,
26801
+ context: 200000,
26424
26802
  output: 128000
26425
26803
  }
26426
26804
  },
@@ -28676,7 +29054,7 @@ var init_model_capabilities_generated = __esm(() => {
28676
29054
  },
28677
29055
  limit: {
28678
29056
  context: 400000,
28679
- output: 1e5,
29057
+ output: 128000,
28680
29058
  input: 272000
28681
29059
  }
28682
29060
  },
@@ -28770,8 +29148,8 @@ var init_model_capabilities_generated = __esm(() => {
28770
29148
  toolCall: false,
28771
29149
  modalities: {
28772
29150
  input: [
28773
- "pdf",
28774
29151
  "image",
29152
+ "pdf",
28775
29153
  "text"
28776
29154
  ],
28777
29155
  output: [
@@ -28780,8 +29158,7 @@ var init_model_capabilities_generated = __esm(() => {
28780
29158
  },
28781
29159
  limit: {
28782
29160
  context: 128000,
28783
- output: 16384,
28784
- input: 111616
29161
+ output: 16384
28785
29162
  }
28786
29163
  },
28787
29164
  "openai/gpt-5.3-codex-spark": {
@@ -29820,7 +30197,7 @@ var init_model_capabilities_generated = __esm(() => {
29820
30197
  },
29821
30198
  limit: {
29822
30199
  context: 524288,
29823
- output: 524288
30200
+ output: 262144
29824
30201
  }
29825
30202
  },
29826
30203
  "zai-org/glm-4.7": {
@@ -29843,6 +30220,27 @@ var init_model_capabilities_generated = __esm(() => {
29843
30220
  input: 200000
29844
30221
  }
29845
30222
  },
30223
+ "moonshotai/kimi-k3": {
30224
+ id: "moonshotai/kimi-k3",
30225
+ family: "kimi-k3",
30226
+ reasoning: true,
30227
+ temperature: false,
30228
+ toolCall: true,
30229
+ modalities: {
30230
+ input: [
30231
+ "text",
30232
+ "image",
30233
+ "video"
30234
+ ],
30235
+ output: [
30236
+ "text"
30237
+ ]
30238
+ },
30239
+ limit: {
30240
+ context: 1048576,
30241
+ output: 131072
30242
+ }
30243
+ },
29846
30244
  "microsoft/phi-4-multimodal-instruct": {
29847
30245
  id: "microsoft/phi-4-multimodal-instruct",
29848
30246
  reasoning: true,
@@ -29938,6 +30336,46 @@ var init_model_capabilities_generated = __esm(() => {
29938
30336
  output: 8192
29939
30337
  }
29940
30338
  },
30339
+ "nvidia/cosmos-reason2-8b": {
30340
+ id: "nvidia/cosmos-reason2-8b",
30341
+ reasoning: true,
30342
+ temperature: true,
30343
+ toolCall: true,
30344
+ modalities: {
30345
+ input: [
30346
+ "text",
30347
+ "image",
30348
+ "video"
30349
+ ],
30350
+ output: [
30351
+ "text"
30352
+ ]
30353
+ },
30354
+ limit: {
30355
+ context: 131072,
30356
+ output: 16384
30357
+ }
30358
+ },
30359
+ "nvidia/nemotron-nano-12b-v2-vl": {
30360
+ id: "nvidia/nemotron-nano-12b-v2-vl",
30361
+ family: "nemotron",
30362
+ reasoning: true,
30363
+ temperature: true,
30364
+ toolCall: true,
30365
+ modalities: {
30366
+ input: [
30367
+ "text",
30368
+ "image"
30369
+ ],
30370
+ output: [
30371
+ "text"
30372
+ ]
30373
+ },
30374
+ limit: {
30375
+ context: 131072,
30376
+ output: 131072
30377
+ }
30378
+ },
29941
30379
  "nvidia/bevformer": {
29942
30380
  id: "nvidia/bevformer",
29943
30381
  reasoning: false,
@@ -29976,6 +30414,25 @@ var init_model_capabilities_generated = __esm(() => {
29976
30414
  input: 256000
29977
30415
  }
29978
30416
  },
30417
+ "nvidia/llama-3.3-nemotron-super-49b-v1.5": {
30418
+ id: "nvidia/Llama-3.3-Nemotron-Super-49B-v1.5",
30419
+ family: "nemotron",
30420
+ reasoning: true,
30421
+ temperature: true,
30422
+ toolCall: true,
30423
+ modalities: {
30424
+ input: [
30425
+ "text"
30426
+ ],
30427
+ output: [
30428
+ "text"
30429
+ ]
30430
+ },
30431
+ limit: {
30432
+ context: 131072,
30433
+ output: 131072
30434
+ }
30435
+ },
29979
30436
  "nvidia/cosmos-transfer2_5-2b": {
29980
30437
  id: "nvidia/cosmos-transfer2_5-2b",
29981
30438
  reasoning: false,
@@ -29996,6 +30453,25 @@ var init_model_capabilities_generated = __esm(() => {
29996
30453
  output: 4096
29997
30454
  }
29998
30455
  },
30456
+ "nvidia/llama-3.1-nemotron-nano-8b-v1": {
30457
+ id: "nvidia/llama-3.1-nemotron-nano-8b-v1",
30458
+ family: "nemotron",
30459
+ reasoning: true,
30460
+ temperature: true,
30461
+ toolCall: true,
30462
+ modalities: {
30463
+ input: [
30464
+ "text"
30465
+ ],
30466
+ output: [
30467
+ "text"
30468
+ ]
30469
+ },
30470
+ limit: {
30471
+ context: 131072,
30472
+ output: 16384
30473
+ }
30474
+ },
29999
30475
  "nvidia/active-speaker-detection": {
30000
30476
  id: "nvidia/active-speaker-detection",
30001
30477
  reasoning: false,
@@ -30032,8 +30508,8 @@ var init_model_capabilities_generated = __esm(() => {
30032
30508
  output: 4096
30033
30509
  }
30034
30510
  },
30035
- "nvidia/llama-3_1-nemotron-safety-guard-8b-v3": {
30036
- id: "nvidia/llama-3_1-nemotron-safety-guard-8b-v3",
30511
+ "nvidia/llama-3.1-nemotron-safety-guard-8b-v3": {
30512
+ id: "nvidia/llama-3.1-nemotron-safety-guard-8b-v3",
30037
30513
  family: "nemotron",
30038
30514
  reasoning: false,
30039
30515
  temperature: false,
@@ -30051,6 +30527,45 @@ var init_model_capabilities_generated = __esm(() => {
30051
30527
  output: 4096
30052
30528
  }
30053
30529
  },
30530
+ "nvidia/llama-3.3-nemotron-super-49b-v1": {
30531
+ id: "nvidia/Llama-3.3-Nemotron-Super-49B-v1",
30532
+ family: "nemotron",
30533
+ reasoning: false,
30534
+ temperature: true,
30535
+ toolCall: false,
30536
+ modalities: {
30537
+ input: [
30538
+ "text"
30539
+ ],
30540
+ output: [
30541
+ "text"
30542
+ ]
30543
+ },
30544
+ limit: {
30545
+ context: 128000,
30546
+ output: 16384,
30547
+ input: 128000
30548
+ }
30549
+ },
30550
+ "nvidia/llama-3.1-nemotron-70b-instruct": {
30551
+ id: "nvidia/llama-3.1-nemotron-70b-instruct",
30552
+ family: "nemotron",
30553
+ reasoning: false,
30554
+ temperature: true,
30555
+ toolCall: true,
30556
+ modalities: {
30557
+ input: [
30558
+ "text"
30559
+ ],
30560
+ output: [
30561
+ "text"
30562
+ ]
30563
+ },
30564
+ limit: {
30565
+ context: 128000,
30566
+ output: 8192
30567
+ }
30568
+ },
30054
30569
  "nvidia/nemotron-3-super-120b-a12b": {
30055
30570
  id: "nvidia/nemotron-3-super-120b-a12b",
30056
30571
  family: "nemotron",
@@ -30110,6 +30625,25 @@ var init_model_capabilities_generated = __esm(() => {
30110
30625
  output: 4096
30111
30626
  }
30112
30627
  },
30628
+ "nvidia/llama-3.1-nemotron-ultra-253b-v1": {
30629
+ id: "nvidia/llama-3.1-nemotron-ultra-253b-v1",
30630
+ family: "nemotron",
30631
+ reasoning: true,
30632
+ temperature: true,
30633
+ toolCall: true,
30634
+ modalities: {
30635
+ input: [
30636
+ "text"
30637
+ ],
30638
+ output: [
30639
+ "text"
30640
+ ]
30641
+ },
30642
+ limit: {
30643
+ context: 128000,
30644
+ output: 16384
30645
+ }
30646
+ },
30113
30647
  "nvidia/llama-3_2-nemoretriever-300m-embed-v1": {
30114
30648
  id: "nvidia/llama-3_2-nemoretriever-300m-embed-v1",
30115
30649
  reasoning: false,
@@ -30187,6 +30721,26 @@ var init_model_capabilities_generated = __esm(() => {
30187
30721
  output: 4096
30188
30722
  }
30189
30723
  },
30724
+ "nvidia/llama-3.1-nemotron-nano-vl-8b-v1": {
30725
+ id: "nvidia/llama-3.1-nemotron-nano-vl-8b-v1",
30726
+ family: "nemotron",
30727
+ reasoning: true,
30728
+ temperature: true,
30729
+ toolCall: true,
30730
+ modalities: {
30731
+ input: [
30732
+ "text",
30733
+ "image"
30734
+ ],
30735
+ output: [
30736
+ "text"
30737
+ ]
30738
+ },
30739
+ limit: {
30740
+ context: 32768,
30741
+ output: 16384
30742
+ }
30743
+ },
30190
30744
  "nvidia/synthetic-video-detector": {
30191
30745
  id: "nvidia/synthetic-video-detector",
30192
30746
  reasoning: false,
@@ -30283,6 +30837,24 @@ var init_model_capabilities_generated = __esm(() => {
30283
30837
  input: 128000
30284
30838
  }
30285
30839
  },
30840
+ "nvidia/riva-translate-4b-instruct-v1.1": {
30841
+ id: "nvidia/riva-translate-4b-instruct-v1.1",
30842
+ reasoning: false,
30843
+ temperature: false,
30844
+ toolCall: false,
30845
+ modalities: {
30846
+ input: [
30847
+ "text"
30848
+ ],
30849
+ output: [
30850
+ "text"
30851
+ ]
30852
+ },
30853
+ limit: {
30854
+ context: 128000,
30855
+ output: 4096
30856
+ }
30857
+ },
30286
30858
  "nvidia/nemotron-content-safety-reasoning-4b": {
30287
30859
  id: "nvidia/nemotron-content-safety-reasoning-4b",
30288
30860
  family: "nemotron",
@@ -30416,14 +30988,15 @@ var init_model_capabilities_generated = __esm(() => {
30416
30988
  output: 4096
30417
30989
  }
30418
30990
  },
30419
- "nvidia/riva-translate-4b-instruct-v1_1": {
30420
- id: "nvidia/riva-translate-4b-instruct-v1_1",
30991
+ "google/google-paligemma": {
30992
+ id: "google/google-paligemma",
30421
30993
  reasoning: false,
30422
- temperature: false,
30994
+ temperature: true,
30423
30995
  toolCall: false,
30424
30996
  modalities: {
30425
30997
  input: [
30426
- "text"
30998
+ "text",
30999
+ "image"
30427
31000
  ],
30428
31001
  output: [
30429
31002
  "text"
@@ -30431,11 +31004,12 @@ var init_model_capabilities_generated = __esm(() => {
30431
31004
  },
30432
31005
  limit: {
30433
31006
  context: 128000,
30434
- output: 4096
31007
+ output: 8192
30435
31008
  }
30436
31009
  },
30437
- "google/google-paligemma": {
30438
- id: "google/google-paligemma",
31010
+ "google/gemma-3-4b-it": {
31011
+ id: "google/gemma-3-4b-it",
31012
+ family: "gemma",
30439
31013
  reasoning: false,
30440
31014
  temperature: true,
30441
31015
  toolCall: false,
@@ -30449,8 +31023,8 @@ var init_model_capabilities_generated = __esm(() => {
30449
31023
  ]
30450
31024
  },
30451
31025
  limit: {
30452
- context: 128000,
30453
- output: 8192
31026
+ context: 131072,
31027
+ output: 16384
30454
31028
  }
30455
31029
  },
30456
31030
  "google/gemma-2-2b-it": {
@@ -30471,6 +31045,26 @@ var init_model_capabilities_generated = __esm(() => {
30471
31045
  output: 4096
30472
31046
  }
30473
31047
  },
31048
+ "google/gemma-3-12b-it": {
31049
+ id: "google/gemma-3-12b-it",
31050
+ family: "gemma",
31051
+ reasoning: false,
31052
+ temperature: true,
31053
+ toolCall: true,
31054
+ modalities: {
31055
+ input: [
31056
+ "text",
31057
+ "image"
31058
+ ],
31059
+ output: [
31060
+ "text"
31061
+ ]
31062
+ },
31063
+ limit: {
31064
+ context: 131072,
31065
+ output: 16384
31066
+ }
31067
+ },
30474
31068
  "google/gemma-3n-e4b-it": {
30475
31069
  id: "google/gemma-3n-e4b-it",
30476
31070
  reasoning: false,
@@ -30651,8 +31245,8 @@ var init_model_capabilities_generated = __esm(() => {
30651
31245
  input: 256000
30652
31246
  }
30653
31247
  },
30654
- "abacusai/dracarys-llama-3_1-70b-instruct": {
30655
- id: "abacusai/dracarys-llama-3_1-70b-instruct",
31248
+ "abacusai/dracarys-llama-3.1-70b-instruct": {
31249
+ id: "abacusai/dracarys-llama-3.1-70b-instruct",
30656
31250
  reasoning: false,
30657
31251
  temperature: true,
30658
31252
  toolCall: true,
@@ -30669,8 +31263,8 @@ var init_model_capabilities_generated = __esm(() => {
30669
31263
  output: 8192
30670
31264
  }
30671
31265
  },
30672
- "upstage/solar-10_7b-instruct": {
30673
- id: "upstage/solar-10_7b-instruct",
31266
+ "upstage/solar-10.7b-instruct": {
31267
+ id: "upstage/solar-10.7b-instruct",
30674
31268
  reasoning: false,
30675
31269
  temperature: true,
30676
31270
  toolCall: true,
@@ -30764,6 +31358,26 @@ var init_model_capabilities_generated = __esm(() => {
30764
31358
  output: 0
30765
31359
  }
30766
31360
  },
31361
+ "mistralai/mistral-medium-3.5-128b": {
31362
+ id: "mistralai/Mistral-Medium-3.5-128B",
31363
+ family: "mistral-medium",
31364
+ reasoning: true,
31365
+ temperature: true,
31366
+ toolCall: true,
31367
+ modalities: {
31368
+ input: [
31369
+ "image",
31370
+ "text"
31371
+ ],
31372
+ output: [
31373
+ "text"
31374
+ ]
31375
+ },
31376
+ limit: {
31377
+ context: 262144,
31378
+ output: 131072
31379
+ }
31380
+ },
30767
31381
  "mistralai/mistral-nemotron": {
30768
31382
  id: "mistralai/mistral-nemotron",
30769
31383
  family: "nemotron",
@@ -30845,34 +31459,36 @@ var init_model_capabilities_generated = __esm(() => {
30845
31459
  input: 262144
30846
31460
  }
30847
31461
  },
30848
- "mistralai/mixtral-8x22b-instruct": {
30849
- id: "mistralai/mixtral-8x22b-instruct",
31462
+ "mistralai/ministral-14b-instruct-2512": {
31463
+ id: "mistralai/ministral-14b-instruct-2512",
31464
+ family: "ministral",
30850
31465
  reasoning: false,
30851
31466
  temperature: true,
30852
- toolCall: true,
31467
+ toolCall: false,
30853
31468
  modalities: {
30854
31469
  input: [
30855
31470
  "text",
30856
- "pdf"
31471
+ "image"
30857
31472
  ],
30858
31473
  output: [
30859
31474
  "text"
30860
31475
  ]
30861
31476
  },
30862
31477
  limit: {
30863
- context: 65536,
30864
- output: 65536
30865
- },
30866
- family: "mistral"
31478
+ context: 262144,
31479
+ output: 32768,
31480
+ input: 262144
31481
+ }
30867
31482
  },
30868
- "mistralai/mistral-7b-instruct-v03": {
30869
- id: "mistralai/mistral-7b-instruct-v03",
31483
+ "mistralai/mixtral-8x22b-instruct": {
31484
+ id: "mistralai/mixtral-8x22b-instruct",
30870
31485
  reasoning: false,
30871
31486
  temperature: true,
30872
31487
  toolCall: true,
30873
31488
  modalities: {
30874
31489
  input: [
30875
- "text"
31490
+ "text",
31491
+ "pdf"
30876
31492
  ],
30877
31493
  output: [
30878
31494
  "text"
@@ -30881,7 +31497,8 @@ var init_model_capabilities_generated = __esm(() => {
30881
31497
  limit: {
30882
31498
  context: 65536,
30883
31499
  output: 65536
30884
- }
31500
+ },
31501
+ family: "mistral"
30885
31502
  },
30886
31503
  "mistralai/magistral-small-2506": {
30887
31504
  id: "mistralai/Magistral-Small-2506",
@@ -30921,6 +31538,24 @@ var init_model_capabilities_generated = __esm(() => {
30921
31538
  output: 16384
30922
31539
  }
30923
31540
  },
31541
+ "mistralai/mistral-7b-instruct-v0.3": {
31542
+ id: "mistralai/Mistral-7B-Instruct-v0.3",
31543
+ reasoning: true,
31544
+ temperature: true,
31545
+ toolCall: true,
31546
+ modalities: {
31547
+ input: [
31548
+ "text"
31549
+ ],
31550
+ output: [
31551
+ "text"
31552
+ ]
31553
+ },
31554
+ limit: {
31555
+ context: 32768,
31556
+ output: 32768
31557
+ }
31558
+ },
30924
31559
  "bytedance/seed-oss-36b-instruct": {
30925
31560
  id: "bytedance/seed-oss-36b-instruct",
30926
31561
  family: "seed",
@@ -31151,6 +31786,25 @@ var init_model_capabilities_generated = __esm(() => {
31151
31786
  output: 8192
31152
31787
  }
31153
31788
  },
31789
+ "poolside/laguna-xs-2.1": {
31790
+ id: "poolside/laguna-xs-2.1",
31791
+ family: "laguna",
31792
+ reasoning: true,
31793
+ temperature: true,
31794
+ toolCall: true,
31795
+ modalities: {
31796
+ input: [
31797
+ "text"
31798
+ ],
31799
+ output: [
31800
+ "text"
31801
+ ]
31802
+ },
31803
+ limit: {
31804
+ context: 262144,
31805
+ output: 32768
31806
+ }
31807
+ },
31154
31808
  "stepfun-ai/step-3.5-flash": {
31155
31809
  id: "stepfun-ai/Step-3.5-Flash",
31156
31810
  reasoning: true,
@@ -31652,15 +32306,14 @@ var init_model_capabilities_generated = __esm(() => {
31652
32306
  modalities: {
31653
32307
  input: [
31654
32308
  "text",
31655
- "image",
31656
- "pdf"
32309
+ "image"
31657
32310
  ],
31658
32311
  output: [
31659
32312
  "text"
31660
32313
  ]
31661
32314
  },
31662
32315
  limit: {
31663
- context: 1050000,
32316
+ context: 372000,
31664
32317
  input: 922000,
31665
32318
  output: 128000
31666
32319
  }
@@ -31697,8 +32350,7 @@ var init_model_capabilities_generated = __esm(() => {
31697
32350
  modalities: {
31698
32351
  input: [
31699
32352
  "text",
31700
- "image",
31701
- "pdf"
32353
+ "image"
31702
32354
  ],
31703
32355
  output: [
31704
32356
  "text"
@@ -31793,8 +32445,8 @@ var init_model_capabilities_generated = __esm(() => {
31793
32445
  output: 163840
31794
32446
  }
31795
32447
  },
31796
- "gpt-5.4-mini": {
31797
- id: "gpt-5.4-mini",
32448
+ "gpt-5.6-luna-fast": {
32449
+ id: "gpt-5.6-luna-fast",
31798
32450
  family: "gpt-mini",
31799
32451
  reasoning: true,
31800
32452
  temperature: false,
@@ -31809,7 +32461,7 @@ var init_model_capabilities_generated = __esm(() => {
31809
32461
  ]
31810
32462
  },
31811
32463
  limit: {
31812
- context: 400000,
32464
+ context: 272000,
31813
32465
  input: 272000,
31814
32466
  output: 128000
31815
32467
  }
@@ -31933,15 +32585,14 @@ var init_model_capabilities_generated = __esm(() => {
31933
32585
  modalities: {
31934
32586
  input: [
31935
32587
  "text",
31936
- "image",
31937
- "pdf"
32588
+ "image"
31938
32589
  ],
31939
32590
  output: [
31940
32591
  "text"
31941
32592
  ]
31942
32593
  },
31943
32594
  limit: {
31944
- context: 1050000,
32595
+ context: 372000,
31945
32596
  input: 922000,
31946
32597
  output: 128000
31947
32598
  }
@@ -32106,18 +32757,15 @@ var init_model_capabilities_generated = __esm(() => {
32106
32757
  modalities: {
32107
32758
  input: [
32108
32759
  "text",
32109
- "image",
32110
- "video",
32111
- "audio",
32112
- "pdf"
32760
+ "image"
32113
32761
  ],
32114
32762
  output: [
32115
32763
  "text"
32116
32764
  ]
32117
32765
  },
32118
32766
  limit: {
32119
- context: 1048576,
32120
- output: 65536,
32767
+ context: 1e6,
32768
+ output: 128000,
32121
32769
  input: 128000
32122
32770
  }
32123
32771
  },
@@ -32408,13 +33056,12 @@ var init_model_capabilities_generated = __esm(() => {
32408
33056
  "gemma-4-26b-a4b-it": {
32409
33057
  id: "gemma-4-26b-a4b-it",
32410
33058
  family: "gemma",
32411
- reasoning: true,
33059
+ reasoning: false,
32412
33060
  temperature: true,
32413
33061
  toolCall: true,
32414
33062
  modalities: {
32415
33063
  input: [
32416
- "text",
32417
- "image"
33064
+ "text"
32418
33065
  ],
32419
33066
  output: [
32420
33067
  "text"
@@ -32422,7 +33069,7 @@ var init_model_capabilities_generated = __esm(() => {
32422
33069
  },
32423
33070
  limit: {
32424
33071
  context: 256000,
32425
- output: 16384
33072
+ output: 25600
32426
33073
  }
32427
33074
  },
32428
33075
  "gemini-embedding-001": {
@@ -35112,8 +35759,8 @@ var init_model_capabilities_generated = __esm(() => {
35112
35759
  input: 128000,
35113
35760
  output: 128000
35114
35761
  },
35115
- family: "deepseek",
35116
- temperature: true
35762
+ temperature: true,
35763
+ family: "deepseek"
35117
35764
  },
35118
35765
  "mirothinker-1-7-deepresearch-mini": {
35119
35766
  id: "mirothinker-1-7-deepresearch-mini",
@@ -38021,26 +38668,6 @@ var init_model_capabilities_generated = __esm(() => {
38021
38668
  output: 16384
38022
38669
  }
38023
38670
  },
38024
- "nvidia/llama-3.3-nemotron-super-49b-v1": {
38025
- id: "nvidia/Llama-3.3-Nemotron-Super-49B-v1",
38026
- family: "nemotron",
38027
- reasoning: false,
38028
- temperature: true,
38029
- toolCall: false,
38030
- modalities: {
38031
- input: [
38032
- "text"
38033
- ],
38034
- output: [
38035
- "text"
38036
- ]
38037
- },
38038
- limit: {
38039
- context: 128000,
38040
- input: 128000,
38041
- output: 16384
38042
- }
38043
- },
38044
38671
  "nvidia/llama-3_3-nemotron-super-49b-v1_5": {
38045
38672
  id: "nvidia/Llama-3_3-Nemotron-Super-49B-v1_5",
38046
38673
  family: "nemotron",
@@ -39066,7 +39693,7 @@ var init_model_capabilities_generated = __esm(() => {
39066
39693
  limit: {
39067
39694
  context: 131072,
39068
39695
  input: 41000,
39069
- output: 8192
39696
+ output: 16384
39070
39697
  },
39071
39698
  temperature: true,
39072
39699
  family: "qwen"
@@ -39822,26 +40449,6 @@ var init_model_capabilities_generated = __esm(() => {
39822
40449
  },
39823
40450
  temperature: true
39824
40451
  },
39825
- "mistralai/ministral-14b-instruct-2512": {
39826
- id: "mistralai/ministral-14b-instruct-2512",
39827
- family: "ministral",
39828
- reasoning: false,
39829
- toolCall: false,
39830
- modalities: {
39831
- input: [
39832
- "text",
39833
- "image"
39834
- ],
39835
- output: [
39836
- "text"
39837
- ]
39838
- },
39839
- limit: {
39840
- context: 262144,
39841
- input: 262144,
39842
- output: 32768
39843
- }
39844
- },
39845
40452
  "mistralai/mixtral-8x22b-instruct-v0.1": {
39846
40453
  id: "mistralai/mixtral-8x22b-instruct-v0.1",
39847
40454
  family: "mixtral",
@@ -42608,8 +43215,7 @@ var init_model_capabilities_generated = __esm(() => {
42608
43215
  context: 128000,
42609
43216
  input: 128000,
42610
43217
  output: 16384
42611
- },
42612
- temperature: false
43218
+ }
42613
43219
  },
42614
43220
  "openai/o3-pro-2025-06-10": {
42615
43221
  id: "openai/o3-pro-2025-06-10",
@@ -42693,7 +43299,7 @@ var init_model_capabilities_generated = __esm(() => {
42693
43299
  },
42694
43300
  "openai/gpt-4o-mini-search-preview": {
42695
43301
  id: "openai/gpt-4o-mini-search-preview",
42696
- family: "o-mini",
43302
+ family: "gpt-mini",
42697
43303
  reasoning: false,
42698
43304
  toolCall: false,
42699
43305
  modalities: {
@@ -42709,7 +43315,7 @@ var init_model_capabilities_generated = __esm(() => {
42709
43315
  input: 111616,
42710
43316
  output: 16384
42711
43317
  },
42712
- temperature: false
43318
+ temperature: true
42713
43319
  },
42714
43320
  "baidu/ernie-4.5-vl-28b-a3b": {
42715
43321
  id: "baidu/ernie-4.5-vl-28b-a3b",
@@ -42829,7 +43435,7 @@ var init_model_capabilities_generated = __esm(() => {
42829
43435
  limit: {
42830
43436
  context: 262144,
42831
43437
  input: 262144,
42832
- output: 80000
43438
+ output: 262144
42833
43439
  },
42834
43440
  temperature: true,
42835
43441
  family: "trinity"
@@ -43214,7 +43820,7 @@ var init_model_capabilities_generated = __esm(() => {
43214
43820
  ]
43215
43821
  },
43216
43822
  limit: {
43217
- context: 131072,
43823
+ context: 65536,
43218
43824
  output: 65536
43219
43825
  }
43220
43826
  },
@@ -43758,9 +44364,28 @@ var init_model_capabilities_generated = __esm(() => {
43758
44364
  output: 32768
43759
44365
  }
43760
44366
  },
44367
+ "abliterated-model-large": {
44368
+ id: "abliterated-model-large",
44369
+ reasoning: true,
44370
+ temperature: true,
44371
+ toolCall: true,
44372
+ modalities: {
44373
+ input: [
44374
+ "text"
44375
+ ],
44376
+ output: [
44377
+ "text"
44378
+ ]
44379
+ },
44380
+ limit: {
44381
+ context: 1e6,
44382
+ input: 1e6,
44383
+ output: 999990
44384
+ }
44385
+ },
43761
44386
  "abliterated-model": {
43762
44387
  id: "abliterated-model",
43763
- reasoning: false,
44388
+ reasoning: true,
43764
44389
  temperature: true,
43765
44390
  toolCall: true,
43766
44391
  modalities: {
@@ -44346,6 +44971,26 @@ var init_model_capabilities_generated = __esm(() => {
44346
44971
  output: 8192
44347
44972
  }
44348
44973
  },
44974
+ "gpt-4o-mini-transcribe": {
44975
+ id: "gpt-4o-mini-transcribe",
44976
+ family: "gpt",
44977
+ reasoning: false,
44978
+ temperature: true,
44979
+ toolCall: true,
44980
+ modalities: {
44981
+ input: [
44982
+ "text",
44983
+ "audio"
44984
+ ],
44985
+ output: [
44986
+ "text"
44987
+ ]
44988
+ },
44989
+ limit: {
44990
+ context: 16000,
44991
+ output: 16000
44992
+ }
44993
+ },
44349
44994
  "qwen3-235b-a22b-thinking-2507": {
44350
44995
  id: "qwen3-235b-a22b-thinking-2507",
44351
44996
  family: "qwen",
@@ -45990,6 +46635,26 @@ var init_model_capabilities_generated = __esm(() => {
45990
46635
  output: 32768
45991
46636
  }
45992
46637
  },
46638
+ "gpt-4o-transcribe": {
46639
+ id: "gpt-4o-transcribe",
46640
+ family: "gpt",
46641
+ reasoning: false,
46642
+ temperature: true,
46643
+ toolCall: true,
46644
+ modalities: {
46645
+ input: [
46646
+ "text",
46647
+ "audio"
46648
+ ],
46649
+ output: [
46650
+ "text"
46651
+ ]
46652
+ },
46653
+ limit: {
46654
+ context: 16000,
46655
+ output: 16000
46656
+ }
46657
+ },
45993
46658
  "grok-4-20-non-reasoning": {
45994
46659
  id: "grok-4-20-non-reasoning",
45995
46660
  family: "grok",
@@ -48639,8 +49304,8 @@ var init_model_capabilities_generated = __esm(() => {
48639
49304
  output: 30000
48640
49305
  }
48641
49306
  },
48642
- "gpt-5.4-mini-2026-03-17": {
48643
- id: "gpt-5.4-mini-2026-03-17",
49307
+ "gpt-5.6-luna-fast-2026-03-17": {
49308
+ id: "gpt-5.6-luna-fast-2026-03-17",
48644
49309
  family: "gpt-mini",
48645
49310
  reasoning: true,
48646
49311
  temperature: false,
@@ -49363,9 +50028,9 @@ var init_model_capabilities_generated = __esm(() => {
49363
50028
  "o1-mini": {
49364
50029
  id: "o1-mini",
49365
50030
  family: "o-mini",
49366
- reasoning: true,
50031
+ reasoning: false,
49367
50032
  temperature: false,
49368
- toolCall: true,
50033
+ toolCall: false,
49369
50034
  modalities: {
49370
50035
  input: [
49371
50036
  "text"
@@ -50813,6 +51478,25 @@ var init_model_capabilities_generated = __esm(() => {
50813
51478
  output: 4096
50814
51479
  }
50815
51480
  },
51481
+ "gemini-embedding": {
51482
+ id: "gemini-embedding",
51483
+ family: "gemini",
51484
+ reasoning: false,
51485
+ temperature: false,
51486
+ toolCall: false,
51487
+ modalities: {
51488
+ input: [
51489
+ "text"
51490
+ ],
51491
+ output: [
51492
+ "text"
51493
+ ]
51494
+ },
51495
+ limit: {
51496
+ context: 2048,
51497
+ output: 1
51498
+ }
51499
+ },
50816
51500
  "anthropic--claude-4-sonnet": {
50817
51501
  id: "anthropic--claude-4-sonnet",
50818
51502
  family: "claude-sonnet",
@@ -51651,24 +52335,6 @@ var init_model_capabilities_generated = __esm(() => {
51651
52335
  output: 4096
51652
52336
  }
51653
52337
  },
51654
- "mistralai/mistral-7b-instruct-v0.3": {
51655
- id: "mistralai/Mistral-7B-Instruct-v0.3",
51656
- reasoning: true,
51657
- temperature: true,
51658
- toolCall: true,
51659
- modalities: {
51660
- input: [
51661
- "text"
51662
- ],
51663
- output: [
51664
- "text"
51665
- ]
51666
- },
51667
- limit: {
51668
- context: 32768,
51669
- output: 32768
51670
- }
51671
- },
51672
52338
  "pioneer/auto": {
51673
52339
  id: "pioneer/auto",
51674
52340
  family: "auto",
@@ -52793,27 +53459,6 @@ var init_model_capabilities_generated = __esm(() => {
52793
53459
  output: 262144
52794
53460
  }
52795
53461
  },
52796
- "moonshotai/kimi-k3": {
52797
- id: "moonshotai/kimi-k3",
52798
- family: "kimi-k3",
52799
- reasoning: true,
52800
- temperature: false,
52801
- toolCall: true,
52802
- modalities: {
52803
- input: [
52804
- "text",
52805
- "image",
52806
- "video"
52807
- ],
52808
- output: [
52809
- "text"
52810
- ]
52811
- },
52812
- limit: {
52813
- context: 1048576,
52814
- output: 131072
52815
- }
52816
- },
52817
53462
  "moonshotai/kimi-k3-free": {
52818
53463
  id: "moonshotai/kimi-k3-free",
52819
53464
  family: "kimi-k3",
@@ -52892,7 +53537,7 @@ var init_model_capabilities_generated = __esm(() => {
52892
53537
  },
52893
53538
  limit: {
52894
53539
  context: 128000,
52895
- output: 16384
53540
+ output: 32000
52896
53541
  },
52897
53542
  family: "gpt-codex"
52898
53543
  },
@@ -53132,26 +53777,6 @@ var init_model_capabilities_generated = __esm(() => {
53132
53777
  output: 4096
53133
53778
  }
53134
53779
  },
53135
- "mistralai/mistral-medium-3.5-128b": {
53136
- id: "mistralai/Mistral-Medium-3.5-128B",
53137
- family: "mistral-medium",
53138
- reasoning: true,
53139
- temperature: true,
53140
- toolCall: true,
53141
- modalities: {
53142
- input: [
53143
- "image",
53144
- "text"
53145
- ],
53146
- output: [
53147
- "text"
53148
- ]
53149
- },
53150
- limit: {
53151
- context: 262144,
53152
- output: 131072
53153
- }
53154
- },
53155
53780
  "mistralai/voxtral-small-24b-2507": {
53156
53781
  id: "mistralai/voxtral-small-24b-2507",
53157
53782
  family: "mistral",
@@ -54218,45 +54843,6 @@ var init_model_capabilities_generated = __esm(() => {
54218
54843
  output: 8192
54219
54844
  }
54220
54845
  },
54221
- "llama-3.2-11b-vision-instruct": {
54222
- id: "llama-3.2-11b-vision-instruct",
54223
- family: "llama",
54224
- reasoning: false,
54225
- temperature: true,
54226
- toolCall: true,
54227
- modalities: {
54228
- input: [
54229
- "text",
54230
- "image"
54231
- ],
54232
- output: [
54233
- "text"
54234
- ]
54235
- },
54236
- limit: {
54237
- context: 128000,
54238
- output: 8192
54239
- }
54240
- },
54241
- "phi-3-medium-128k-instruct": {
54242
- id: "phi-3-medium-128k-instruct",
54243
- family: "phi",
54244
- reasoning: false,
54245
- temperature: true,
54246
- toolCall: false,
54247
- modalities: {
54248
- input: [
54249
- "text"
54250
- ],
54251
- output: [
54252
- "text"
54253
- ]
54254
- },
54255
- limit: {
54256
- context: 128000,
54257
- output: 4096
54258
- }
54259
- },
54260
54846
  "cohere-command-a": {
54261
54847
  id: "cohere-command-a",
54262
54848
  family: "command-a",
@@ -54276,44 +54862,6 @@ var init_model_capabilities_generated = __esm(() => {
54276
54862
  output: 8192
54277
54863
  }
54278
54864
  },
54279
- "meta-llama-3.1-70b-instruct": {
54280
- id: "meta-llama-3.1-70b-instruct",
54281
- family: "llama",
54282
- reasoning: false,
54283
- temperature: true,
54284
- toolCall: true,
54285
- modalities: {
54286
- input: [
54287
- "text"
54288
- ],
54289
- output: [
54290
- "text"
54291
- ]
54292
- },
54293
- limit: {
54294
- context: 128000,
54295
- output: 32768
54296
- }
54297
- },
54298
- "meta-llama-3.1-405b-instruct": {
54299
- id: "meta-llama-3.1-405b-instruct",
54300
- family: "llama",
54301
- reasoning: false,
54302
- temperature: true,
54303
- toolCall: true,
54304
- modalities: {
54305
- input: [
54306
- "text"
54307
- ],
54308
- output: [
54309
- "text"
54310
- ]
54311
- },
54312
- limit: {
54313
- context: 128000,
54314
- output: 32768
54315
- }
54316
- },
54317
54865
  "cohere-embed-v3-multilingual": {
54318
54866
  id: "cohere-embed-v3-multilingual",
54319
54867
  family: "cohere-embed",
@@ -54390,63 +54938,6 @@ var init_model_capabilities_generated = __esm(() => {
54390
54938
  output: 4096
54391
54939
  }
54392
54940
  },
54393
- "meta-llama-3-8b-instruct": {
54394
- id: "meta-llama-3-8b-instruct",
54395
- family: "llama",
54396
- reasoning: false,
54397
- temperature: true,
54398
- toolCall: false,
54399
- modalities: {
54400
- input: [
54401
- "text"
54402
- ],
54403
- output: [
54404
- "text"
54405
- ]
54406
- },
54407
- limit: {
54408
- context: 8192,
54409
- output: 2048
54410
- }
54411
- },
54412
- "gpt-3.5-turbo-0301": {
54413
- id: "gpt-3.5-turbo-0301",
54414
- family: "gpt",
54415
- reasoning: false,
54416
- temperature: true,
54417
- toolCall: false,
54418
- modalities: {
54419
- input: [
54420
- "text"
54421
- ],
54422
- output: [
54423
- "text"
54424
- ]
54425
- },
54426
- limit: {
54427
- context: 4096,
54428
- output: 4096
54429
- }
54430
- },
54431
- "cohere-command-r-plus-08-2024": {
54432
- id: "cohere-command-r-plus-08-2024",
54433
- family: "command-r",
54434
- reasoning: false,
54435
- temperature: true,
54436
- toolCall: true,
54437
- modalities: {
54438
- input: [
54439
- "text"
54440
- ],
54441
- output: [
54442
- "text"
54443
- ]
54444
- },
54445
- limit: {
54446
- context: 128000,
54447
- output: 4000
54448
- }
54449
- },
54450
54941
  "phi-4-mini": {
54451
54942
  id: "phi-4-mini",
54452
54943
  family: "phi",
@@ -54466,45 +54957,6 @@ var init_model_capabilities_generated = __esm(() => {
54466
54957
  output: 4096
54467
54958
  }
54468
54959
  },
54469
- "meta-llama-3.1-8b-instruct": {
54470
- id: "meta-llama-3.1-8b-instruct",
54471
- family: "llama",
54472
- reasoning: false,
54473
- temperature: true,
54474
- toolCall: true,
54475
- modalities: {
54476
- input: [
54477
- "text"
54478
- ],
54479
- output: [
54480
- "text"
54481
- ]
54482
- },
54483
- limit: {
54484
- context: 128000,
54485
- output: 32768
54486
- }
54487
- },
54488
- "llama-3.2-90b-vision-instruct": {
54489
- id: "llama-3.2-90b-vision-instruct",
54490
- family: "llama",
54491
- reasoning: false,
54492
- temperature: true,
54493
- toolCall: true,
54494
- modalities: {
54495
- input: [
54496
- "text",
54497
- "image"
54498
- ],
54499
- output: [
54500
- "text"
54501
- ]
54502
- },
54503
- limit: {
54504
- context: 128000,
54505
- output: 8192
54506
- }
54507
- },
54508
54960
  "phi-4-reasoning-plus": {
54509
54961
  id: "phi-4-reasoning-plus",
54510
54962
  family: "phi",
@@ -54524,63 +54976,6 @@ var init_model_capabilities_generated = __esm(() => {
54524
54976
  output: 4096
54525
54977
  }
54526
54978
  },
54527
- "phi-3-small-8k-instruct": {
54528
- id: "phi-3-small-8k-instruct",
54529
- family: "phi",
54530
- reasoning: false,
54531
- temperature: true,
54532
- toolCall: false,
54533
- modalities: {
54534
- input: [
54535
- "text"
54536
- ],
54537
- output: [
54538
- "text"
54539
- ]
54540
- },
54541
- limit: {
54542
- context: 8192,
54543
- output: 2048
54544
- }
54545
- },
54546
- "phi-3-small-128k-instruct": {
54547
- id: "phi-3-small-128k-instruct",
54548
- family: "phi",
54549
- reasoning: false,
54550
- temperature: true,
54551
- toolCall: false,
54552
- modalities: {
54553
- input: [
54554
- "text"
54555
- ],
54556
- output: [
54557
- "text"
54558
- ]
54559
- },
54560
- limit: {
54561
- context: 128000,
54562
- output: 4096
54563
- }
54564
- },
54565
- "phi-3-mini-128k-instruct": {
54566
- id: "phi-3-mini-128k-instruct",
54567
- family: "phi",
54568
- reasoning: false,
54569
- temperature: true,
54570
- toolCall: false,
54571
- modalities: {
54572
- input: [
54573
- "text"
54574
- ],
54575
- output: [
54576
- "text"
54577
- ]
54578
- },
54579
- limit: {
54580
- context: 128000,
54581
- output: 4096
54582
- }
54583
- },
54584
54979
  "mistral-small-2503": {
54585
54980
  id: "mistral-small-2503",
54586
54981
  family: "mistral-small",
@@ -54601,44 +54996,6 @@ var init_model_capabilities_generated = __esm(() => {
54601
54996
  output: 32768
54602
54997
  }
54603
54998
  },
54604
- "meta-llama-3-70b-instruct": {
54605
- id: "meta-llama-3-70b-instruct",
54606
- family: "llama",
54607
- reasoning: false,
54608
- temperature: true,
54609
- toolCall: false,
54610
- modalities: {
54611
- input: [
54612
- "text"
54613
- ],
54614
- output: [
54615
- "text"
54616
- ]
54617
- },
54618
- limit: {
54619
- context: 8192,
54620
- output: 2048
54621
- }
54622
- },
54623
- "gpt-4-32k": {
54624
- id: "gpt-4-32k",
54625
- family: "gpt",
54626
- reasoning: false,
54627
- temperature: true,
54628
- toolCall: true,
54629
- modalities: {
54630
- input: [
54631
- "text"
54632
- ],
54633
- output: [
54634
- "text"
54635
- ]
54636
- },
54637
- limit: {
54638
- context: 32768,
54639
- output: 32768
54640
- }
54641
- },
54642
54999
  "cohere-embed-v-4-0": {
54643
55000
  id: "cohere-embed-v-4-0",
54644
55001
  family: "cohere-embed",
@@ -54659,26 +55016,6 @@ var init_model_capabilities_generated = __esm(() => {
54659
55016
  output: 1536
54660
55017
  }
54661
55018
  },
54662
- "gpt-5.2-chat": {
54663
- id: "gpt-5.2-chat",
54664
- family: "gpt-codex",
54665
- reasoning: true,
54666
- temperature: false,
54667
- toolCall: true,
54668
- modalities: {
54669
- input: [
54670
- "text",
54671
- "image"
54672
- ],
54673
- output: [
54674
- "text"
54675
- ]
54676
- },
54677
- limit: {
54678
- context: 128000,
54679
- output: 16384
54680
- }
54681
- },
54682
55019
  "phi-4-mini-reasoning": {
54683
55020
  id: "phi-4-mini-reasoning",
54684
55021
  family: "phi",
@@ -54718,86 +55055,6 @@ var init_model_capabilities_generated = __esm(() => {
54718
55055
  output: 4096
54719
55056
  }
54720
55057
  },
54721
- "deepseek-r1-0528": {
54722
- id: "deepseek-r1-0528",
54723
- family: "deepseek-thinking",
54724
- reasoning: true,
54725
- temperature: true,
54726
- toolCall: true,
54727
- modalities: {
54728
- input: [
54729
- "text"
54730
- ],
54731
- output: [
54732
- "text"
54733
- ]
54734
- },
54735
- limit: {
54736
- context: 164000,
54737
- output: 164000
54738
- }
54739
- },
54740
- "phi-3-mini-4k-instruct": {
54741
- id: "phi-3-mini-4k-instruct",
54742
- family: "phi",
54743
- reasoning: false,
54744
- temperature: true,
54745
- toolCall: false,
54746
- modalities: {
54747
- input: [
54748
- "text"
54749
- ],
54750
- output: [
54751
- "text"
54752
- ]
54753
- },
54754
- limit: {
54755
- context: 4096,
54756
- output: 1024
54757
- }
54758
- },
54759
- "gpt-5.1-chat": {
54760
- id: "gpt-5.1-chat",
54761
- family: "gpt-codex",
54762
- reasoning: true,
54763
- temperature: false,
54764
- toolCall: true,
54765
- modalities: {
54766
- input: [
54767
- "text",
54768
- "image",
54769
- "audio"
54770
- ],
54771
- output: [
54772
- "text",
54773
- "image",
54774
- "audio"
54775
- ]
54776
- },
54777
- limit: {
54778
- context: 128000,
54779
- output: 16384
54780
- }
54781
- },
54782
- "phi-3.5-moe-instruct": {
54783
- id: "phi-3.5-moe-instruct",
54784
- family: "phi",
54785
- reasoning: false,
54786
- temperature: true,
54787
- toolCall: false,
54788
- modalities: {
54789
- input: [
54790
- "text"
54791
- ],
54792
- output: [
54793
- "text"
54794
- ]
54795
- },
54796
- limit: {
54797
- context: 128000,
54798
- output: 4096
54799
- }
54800
- },
54801
55058
  "phi-4-reasoning": {
54802
55059
  id: "phi-4-reasoning",
54803
55060
  family: "phi",
@@ -54843,26 +55100,6 @@ var init_model_capabilities_generated = __esm(() => {
54843
55100
  reasoning: false,
54844
55101
  temperature: true,
54845
55102
  toolCall: true,
54846
- modalities: {
54847
- input: [
54848
- "text",
54849
- "image"
54850
- ],
54851
- output: [
54852
- "text"
54853
- ]
54854
- },
54855
- limit: {
54856
- context: 128000,
54857
- output: 4096
54858
- }
54859
- },
54860
- "gpt-3.5-turbo-0613": {
54861
- id: "gpt-3.5-turbo-0613",
54862
- family: "gpt",
54863
- reasoning: false,
54864
- temperature: true,
54865
- toolCall: false,
54866
55103
  modalities: {
54867
55104
  input: [
54868
55105
  "text"
@@ -54872,8 +55109,8 @@ var init_model_capabilities_generated = __esm(() => {
54872
55109
  ]
54873
55110
  },
54874
55111
  limit: {
54875
- context: 16384,
54876
- output: 16384
55112
+ context: 430000,
55113
+ output: 43000
54877
55114
  }
54878
55115
  },
54879
55116
  "ministral-3b": {
@@ -54895,25 +55132,6 @@ var init_model_capabilities_generated = __esm(() => {
54895
55132
  output: 8192
54896
55133
  }
54897
55134
  },
54898
- "cohere-command-r-08-2024": {
54899
- id: "cohere-command-r-08-2024",
54900
- family: "command-r",
54901
- reasoning: false,
54902
- temperature: true,
54903
- toolCall: true,
54904
- modalities: {
54905
- input: [
54906
- "text"
54907
- ],
54908
- output: [
54909
- "text"
54910
- ]
54911
- },
54912
- limit: {
54913
- context: 128000,
54914
- output: 4000
54915
- }
54916
- },
54917
55135
  "model-router": {
54918
55136
  id: "model-router",
54919
55137
  family: "model-router",
@@ -54990,44 +55208,6 @@ var init_model_capabilities_generated = __esm(() => {
54990
55208
  output: 16384
54991
55209
  }
54992
55210
  },
54993
- "phi-3-medium-4k-instruct": {
54994
- id: "phi-3-medium-4k-instruct",
54995
- family: "phi",
54996
- reasoning: false,
54997
- temperature: true,
54998
- toolCall: false,
54999
- modalities: {
55000
- input: [
55001
- "text"
55002
- ],
55003
- output: [
55004
- "text"
55005
- ]
55006
- },
55007
- limit: {
55008
- context: 4096,
55009
- output: 1024
55010
- }
55011
- },
55012
- "phi-3.5-mini-instruct": {
55013
- id: "phi-3.5-mini-instruct",
55014
- family: "phi",
55015
- reasoning: false,
55016
- temperature: true,
55017
- toolCall: false,
55018
- modalities: {
55019
- input: [
55020
- "text"
55021
- ],
55022
- output: [
55023
- "text"
55024
- ]
55025
- },
55026
- limit: {
55027
- context: 128000,
55028
- output: 4096
55029
- }
55030
- },
55031
55211
  "text-embedding-ada-002": {
55032
55212
  id: "text-embedding-ada-002",
55033
55213
  family: "text-embedding",
@@ -55068,26 +55248,6 @@ var init_model_capabilities_generated = __esm(() => {
55068
55248
  output: 4096
55069
55249
  }
55070
55250
  },
55071
- "gpt-5-chat": {
55072
- id: "gpt-5-chat",
55073
- family: "gpt-codex",
55074
- reasoning: true,
55075
- temperature: false,
55076
- toolCall: false,
55077
- modalities: {
55078
- input: [
55079
- "text",
55080
- "image"
55081
- ],
55082
- output: [
55083
- "text"
55084
- ]
55085
- },
55086
- limit: {
55087
- context: 128000,
55088
- output: 16384
55089
- }
55090
- },
55091
55251
  "codex-mini": {
55092
55252
  id: "codex-mini",
55093
55253
  family: "gpt-codex-mini",
@@ -55107,25 +55267,6 @@ var init_model_capabilities_generated = __esm(() => {
55107
55267
  output: 1e5
55108
55268
  }
55109
55269
  },
55110
- "deepseek-v3.1": {
55111
- id: "deepseek-v3.1",
55112
- family: "deepseek",
55113
- reasoning: true,
55114
- temperature: true,
55115
- toolCall: true,
55116
- modalities: {
55117
- input: [
55118
- "text"
55119
- ],
55120
- output: [
55121
- "text"
55122
- ]
55123
- },
55124
- limit: {
55125
- context: 128000,
55126
- output: 32000
55127
- }
55128
- },
55129
55270
  "glm5.2-fast": {
55130
55271
  id: "glm5.2-fast",
55131
55272
  family: "glm",
@@ -55905,6 +56046,27 @@ var init_model_capabilities_generated = __esm(() => {
55905
56046
  output: 128000
55906
56047
  }
55907
56048
  },
56049
+ "duo-chat-opus-5": {
56050
+ id: "duo-chat-opus-5",
56051
+ family: "claude-opus",
56052
+ reasoning: true,
56053
+ temperature: false,
56054
+ toolCall: true,
56055
+ modalities: {
56056
+ input: [
56057
+ "text",
56058
+ "image",
56059
+ "pdf"
56060
+ ],
56061
+ output: [
56062
+ "text"
56063
+ ]
56064
+ },
56065
+ limit: {
56066
+ context: 1e6,
56067
+ output: 128000
56068
+ }
56069
+ },
55908
56070
  "ling-1t": {
55909
56071
  id: "Ling-1T",
55910
56072
  family: "ling",
@@ -55979,25 +56141,6 @@ var init_model_capabilities_generated = __esm(() => {
55979
56141
  output: 65536
55980
56142
  }
55981
56143
  },
55982
- "nvidia-nemotron-cascade-2-30b-a3b": {
55983
- id: "nvidia-nemotron-cascade-2-30b-a3b",
55984
- family: "nemotron",
55985
- reasoning: true,
55986
- temperature: true,
55987
- toolCall: true,
55988
- modalities: {
55989
- input: [
55990
- "text"
55991
- ],
55992
- output: [
55993
- "text"
55994
- ]
55995
- },
55996
- limit: {
55997
- context: 256000,
55998
- output: 32768
55999
- }
56000
- },
56001
56144
  "openai-gpt-54-pro": {
56002
56145
  id: "openai-gpt-54-pro",
56003
56146
  family: "gpt",
@@ -58008,8 +58151,8 @@ var init_model_capabilities_generated = __esm(() => {
58008
58151
  output: 64000
58009
58152
  }
58010
58153
  },
58011
- "openai-gpt-5.4-mini": {
58012
- id: "openai-gpt-5.4-mini",
58154
+ "openai-gpt-5.6-luna-fast": {
58155
+ id: "openai-gpt-5.6-luna-fast",
58013
58156
  family: "gpt-mini",
58014
58157
  reasoning: true,
58015
58158
  temperature: false,
@@ -58805,45 +58948,46 @@ var init_model_capabilities_generated = __esm(() => {
58805
58948
  input: 0
58806
58949
  }
58807
58950
  },
58808
- "gpt-5.3-chat": {
58809
- id: "gpt-5.3-chat",
58810
- family: "gpt-codex",
58811
- reasoning: true,
58951
+ "gpt-image-1": {
58952
+ id: "gpt-image-1",
58953
+ family: "gpt-image",
58954
+ reasoning: false,
58812
58955
  temperature: false,
58813
- toolCall: true,
58956
+ toolCall: false,
58814
58957
  modalities: {
58815
58958
  input: [
58816
58959
  "text",
58817
58960
  "image"
58818
58961
  ],
58819
58962
  output: [
58820
- "text"
58963
+ "image"
58821
58964
  ]
58822
58965
  },
58823
58966
  limit: {
58824
- context: 128000,
58825
- output: 16384
58967
+ context: 0,
58968
+ output: 0,
58969
+ input: 0
58826
58970
  }
58827
58971
  },
58828
- "gpt-image-1": {
58829
- id: "gpt-image-1",
58830
- family: "gpt-image",
58831
- reasoning: false,
58832
- temperature: false,
58833
- toolCall: false,
58972
+ "thinkingmachines/inkling-nvfp4": {
58973
+ id: "thinkingmachines/Inkling-NVFP4",
58974
+ family: "ling",
58975
+ reasoning: true,
58976
+ temperature: true,
58977
+ toolCall: true,
58834
58978
  modalities: {
58835
58979
  input: [
58836
58980
  "text",
58837
- "image"
58981
+ "image",
58982
+ "audio"
58838
58983
  ],
58839
58984
  output: [
58840
- "image"
58985
+ "text"
58841
58986
  ]
58842
58987
  },
58843
58988
  limit: {
58844
- context: 0,
58845
- output: 0,
58846
- input: 0
58989
+ context: 1048576,
58990
+ output: 262144
58847
58991
  }
58848
58992
  },
58849
58993
  "mistralai/mistral-small-3.2-24b-instruct-2506": {
@@ -61233,25 +61377,6 @@ var init_model_capabilities_generated = __esm(() => {
61233
61377
  output: 8192
61234
61378
  }
61235
61379
  },
61236
- "poolside/laguna-xs-2.1": {
61237
- id: "poolside/laguna-xs-2.1",
61238
- family: "laguna",
61239
- reasoning: true,
61240
- temperature: true,
61241
- toolCall: true,
61242
- modalities: {
61243
- input: [
61244
- "text"
61245
- ],
61246
- output: [
61247
- "text"
61248
- ]
61249
- },
61250
- limit: {
61251
- context: 262144,
61252
- output: 32768
61253
- }
61254
- },
61255
61380
  "poolside/laguna-s-2.1": {
61256
61381
  id: "poolside/laguna-s-2.1",
61257
61382
  family: "laguna-s",
@@ -61642,6 +61767,26 @@ var init_model_capabilities_generated = __esm(() => {
61642
61767
  output: 65536
61643
61768
  }
61644
61769
  },
61770
+ "hf:moonshotai/kimi-k3": {
61771
+ id: "hf:moonshotai/Kimi-K3",
61772
+ family: "kimi-k3",
61773
+ reasoning: true,
61774
+ temperature: true,
61775
+ toolCall: true,
61776
+ modalities: {
61777
+ input: [
61778
+ "text",
61779
+ "image"
61780
+ ],
61781
+ output: [
61782
+ "text"
61783
+ ]
61784
+ },
61785
+ limit: {
61786
+ context: 524288,
61787
+ output: 65536
61788
+ }
61789
+ },
61645
61790
  "hf:openai/gpt-oss-120b": {
61646
61791
  id: "hf:openai/gpt-oss-120b",
61647
61792
  family: "gpt-oss",
@@ -64444,8 +64589,7 @@ var init_model_capabilities_generated = __esm(() => {
64444
64589
  },
64445
64590
  limit: {
64446
64591
  context: 128000,
64447
- output: 16384,
64448
- input: 111616
64592
+ output: 16384
64449
64593
  }
64450
64594
  },
64451
64595
  "openai/gpt-5-image": {
@@ -64684,25 +64828,6 @@ var init_model_capabilities_generated = __esm(() => {
64684
64828
  },
64685
64829
  family: "command-r"
64686
64830
  },
64687
- "nvidia/llama-3.3-nemotron-super-49b-v1.5": {
64688
- id: "nvidia/Llama-3.3-Nemotron-Super-49B-v1.5",
64689
- family: "nemotron",
64690
- reasoning: true,
64691
- temperature: true,
64692
- toolCall: true,
64693
- modalities: {
64694
- input: [
64695
- "text"
64696
- ],
64697
- output: [
64698
- "text"
64699
- ]
64700
- },
64701
- limit: {
64702
- context: 131072,
64703
- output: 131072
64704
- }
64705
- },
64706
64831
  "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free": {
64707
64832
  id: "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
64708
64833
  family: "nemotron",
@@ -64825,26 +64950,6 @@ var init_model_capabilities_generated = __esm(() => {
64825
64950
  },
64826
64951
  family: "lyria"
64827
64952
  },
64828
- "google/gemma-3-4b-it": {
64829
- id: "google/gemma-3-4b-it",
64830
- reasoning: false,
64831
- temperature: true,
64832
- toolCall: false,
64833
- modalities: {
64834
- input: [
64835
- "text",
64836
- "image"
64837
- ],
64838
- output: [
64839
- "text"
64840
- ]
64841
- },
64842
- limit: {
64843
- context: 131072,
64844
- output: 16384
64845
- },
64846
- family: "gemma"
64847
- },
64848
64953
  "google/gemini-2.5-pro-preview": {
64849
64954
  id: "google/gemini-2.5-pro-preview",
64850
64955
  reasoning: true,
@@ -64952,26 +65057,6 @@ var init_model_capabilities_generated = __esm(() => {
64952
65057
  },
64953
65058
  family: "gemini-pro"
64954
65059
  },
64955
- "google/gemma-3-12b-it": {
64956
- id: "google/gemma-3-12b-it",
64957
- reasoning: false,
64958
- temperature: true,
64959
- toolCall: true,
64960
- modalities: {
64961
- input: [
64962
- "text",
64963
- "image"
64964
- ],
64965
- output: [
64966
- "text"
64967
- ]
64968
- },
64969
- limit: {
64970
- context: 131072,
64971
- output: 16384
64972
- },
64973
- family: "gemma"
64974
- },
64975
65060
  "google/gemini-2.5-flash-image": {
64976
65061
  id: "google/gemini-2.5-flash-image",
64977
65062
  reasoning: false,
@@ -66079,7 +66164,7 @@ var init_model_capabilities_generated = __esm(() => {
66079
66164
  "~moonshotai/kimi-latest": {
66080
66165
  id: "~moonshotai/kimi-latest",
66081
66166
  reasoning: true,
66082
- temperature: false,
66167
+ temperature: true,
66083
66168
  toolCall: true,
66084
66169
  modalities: {
66085
66170
  input: [
@@ -66092,7 +66177,7 @@ var init_model_capabilities_generated = __esm(() => {
66092
66177
  },
66093
66178
  limit: {
66094
66179
  context: 1048576,
66095
- output: 262144
66180
+ output: 1048576
66096
66181
  },
66097
66182
  family: "kimi"
66098
66183
  },
@@ -67944,6 +68029,44 @@ var init_model_capabilities_generated = __esm(() => {
67944
68029
  output: 16384
67945
68030
  }
67946
68031
  },
68032
+ "qwen3.6-max": {
68033
+ id: "qwen3.6-max",
68034
+ family: "qwen",
68035
+ reasoning: false,
68036
+ temperature: true,
68037
+ toolCall: true,
68038
+ modalities: {
68039
+ input: [
68040
+ "text"
68041
+ ],
68042
+ output: [
68043
+ "text"
68044
+ ]
68045
+ },
68046
+ limit: {
68047
+ context: 256000,
68048
+ output: 64000
68049
+ }
68050
+ },
68051
+ "qwen3-coder-480b-a35b-instruct-int4-mixed-ar": {
68052
+ id: "qwen3-coder-480b-a35b-instruct-int4-mixed-ar",
68053
+ family: "qwen",
68054
+ reasoning: false,
68055
+ temperature: true,
68056
+ toolCall: true,
68057
+ modalities: {
68058
+ input: [
68059
+ "text"
68060
+ ],
68061
+ output: [
68062
+ "text"
68063
+ ]
68064
+ },
68065
+ limit: {
68066
+ context: 106000,
68067
+ output: 10600
68068
+ }
68069
+ },
67947
68070
  "qwen-mt-plus": {
67948
68071
  id: "qwen-mt-plus",
67949
68072
  family: "qwen",
@@ -69131,26 +69254,6 @@ var init_model_capabilities_generated = __esm(() => {
69131
69254
  output: 4096
69132
69255
  }
69133
69256
  },
69134
- "nvidia/nemotron-nano-12b-v2-vl": {
69135
- id: "nvidia/nemotron-nano-12b-v2-vl",
69136
- family: "nemotron",
69137
- reasoning: true,
69138
- temperature: true,
69139
- toolCall: true,
69140
- modalities: {
69141
- input: [
69142
- "text",
69143
- "image"
69144
- ],
69145
- output: [
69146
- "text"
69147
- ]
69148
- },
69149
- limit: {
69150
- context: 131072,
69151
- output: 131072
69152
- }
69153
- },
69154
69257
  "google/imagen-4.0-ultra-generate-001": {
69155
69258
  id: "google/imagen-4.0-ultra-generate-001",
69156
69259
  family: "imagen",
@@ -72072,11 +72175,11 @@ var init_model_capabilities_generated = __esm(() => {
72072
72175
  output: 128000
72073
72176
  }
72074
72177
  },
72075
- "anthropic/claude-opus-5": {
72076
- id: "anthropic/claude-opus-5",
72077
- family: "claude-opus",
72178
+ "moonshotai/kimi-k3-fast": {
72179
+ id: "moonshotai/kimi-k3-fast",
72180
+ family: "kimi-k3",
72078
72181
  reasoning: true,
72079
- temperature: true,
72182
+ temperature: false,
72080
72183
  toolCall: true,
72081
72184
  modalities: {
72082
72185
  input: [
@@ -72090,7 +72193,7 @@ var init_model_capabilities_generated = __esm(() => {
72090
72193
  },
72091
72194
  limit: {
72092
72195
  context: 1e6,
72093
- output: 128000
72196
+ output: 131072
72094
72197
  }
72095
72198
  },
72096
72199
  "openai/whisper-1": {
@@ -72646,6 +72749,25 @@ var init_model_capabilities_generated = __esm(() => {
72646
72749
  output: 16384
72647
72750
  }
72648
72751
  },
72752
+ "deepseek-r1-0528": {
72753
+ id: "deepseek-r1-0528",
72754
+ family: "deepseek-thinking",
72755
+ reasoning: true,
72756
+ temperature: true,
72757
+ toolCall: true,
72758
+ modalities: {
72759
+ input: [
72760
+ "text"
72761
+ ],
72762
+ output: [
72763
+ "text"
72764
+ ]
72765
+ },
72766
+ limit: {
72767
+ context: 164000,
72768
+ output: 164000
72769
+ }
72770
+ },
72649
72771
  "moonshot-kimi-k2-instruct": {
72650
72772
  id: "moonshot-kimi-k2-instruct",
72651
72773
  family: "kimi-k2",
@@ -73563,6 +73685,27 @@ var init_model_capabilities_generated = __esm(() => {
73563
73685
  output: 32768
73564
73686
  }
73565
73687
  },
73688
+ "qwen/qwen3.7-flash": {
73689
+ id: "qwen/qwen3.7-flash",
73690
+ family: "qwen",
73691
+ reasoning: true,
73692
+ temperature: true,
73693
+ toolCall: true,
73694
+ modalities: {
73695
+ input: [
73696
+ "text",
73697
+ "image",
73698
+ "video"
73699
+ ],
73700
+ output: [
73701
+ "text"
73702
+ ]
73703
+ },
73704
+ limit: {
73705
+ context: 1e6,
73706
+ output: 65536
73707
+ }
73708
+ },
73566
73709
  "~x-ai/grok-latest": {
73567
73710
  id: "~x-ai/grok-latest",
73568
73711
  family: "grok",
@@ -75726,6 +75869,24 @@ var init_model_capabilities_generated = __esm(() => {
75726
75869
  output: 4096
75727
75870
  }
75728
75871
  },
75872
+ "deepseek-v3.1": {
75873
+ id: "deepseek-v3.1",
75874
+ reasoning: true,
75875
+ temperature: true,
75876
+ toolCall: true,
75877
+ modalities: {
75878
+ input: [
75879
+ "text"
75880
+ ],
75881
+ output: [
75882
+ "text"
75883
+ ]
75884
+ },
75885
+ limit: {
75886
+ context: 128000,
75887
+ output: 32000
75888
+ }
75889
+ },
75729
75890
  "doubao-1.5-vision-pro": {
75730
75891
  id: "doubao-1.5-vision-pro",
75731
75892
  reasoning: false,
@@ -76636,15 +76797,14 @@ var init_model_capabilities_generated = __esm(() => {
76636
76797
  modalities: {
76637
76798
  input: [
76638
76799
  "text",
76639
- "image",
76640
- "pdf"
76800
+ "image"
76641
76801
  ],
76642
76802
  output: [
76643
76803
  "text"
76644
76804
  ]
76645
76805
  },
76646
76806
  limit: {
76647
- context: 1050000,
76807
+ context: 372000,
76648
76808
  input: 922000,
76649
76809
  output: 128000
76650
76810
  }
@@ -77878,7 +78038,7 @@ var init_anthropic_categories = __esm(() => {
77878
78038
  ANTHROPIC_CATEGORIES = [
77879
78039
  {
77880
78040
  name: "unspecified-high",
77881
- config: { model: "apitopia/kimi-k3", variant: "max" },
78041
+ config: { model: "kimi-for-coding/k3", variant: "max" },
77882
78042
  description: "Tasks that don't fit other categories, high effort required",
77883
78043
  promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND
77884
78044
  }
@@ -78036,7 +78196,7 @@ var init_kimi_categories = __esm(() => {
78036
78196
  KIMI_CATEGORIES = [
78037
78197
  {
78038
78198
  name: "writing",
78039
- config: { model: "kimi-for-coding/kimi-k3" },
78199
+ config: { model: "kimi-for-coding/k3", variant: "low" },
78040
78200
  description: "Documentation, prose, technical writing",
78041
78201
  promptAppend: WRITING_CATEGORY_PROMPT_APPEND
78042
78202
  }
@@ -78139,7 +78299,7 @@ Approach:
78139
78299
  </Category_Context>
78140
78300
 
78141
78301
  <Caller_Warning>
78142
- THIS CATEGORY USES A SMALLER/FASTER MODEL (gpt-5.4-mini).
78302
+ THIS CATEGORY USES A SMALLER/FASTER MODEL (gpt-5.6-luna-fast).
78143
78303
 
78144
78304
  The model executing this task is optimized for speed over depth. Your prompt MUST be:
78145
78305
 
@@ -78205,14 +78365,15 @@ var init_openai_categories = __esm(() => {
78205
78365
  },
78206
78366
  {
78207
78367
  name: "deep",
78208
- config: { model: "openai/gpt-5.6-terra", variant: "xhigh" },
78368
+ config: { model: "openai/gpt-5.6-sol", variant: "medium" },
78209
78369
  description: "Goal-oriented autonomous problem-solving on hairy problems requiring deep research. ONE goal + ONE deliverable per call \u2014 multiple goals must fan out as parallel `deep` calls, never bundled into one.",
78210
78370
  promptAppend: DEEP_CATEGORY_PROMPT_APPEND,
78211
- resolvePromptAppend: resolveDeepCategoryPromptAppend
78371
+ resolvePromptAppend: resolveDeepCategoryPromptAppend,
78372
+ requiresModel: "gpt-5.6-sol"
78212
78373
  },
78213
78374
  {
78214
78375
  name: "quick",
78215
- config: { model: "apitopia/kimi-for-coding-highspeed" },
78376
+ config: { model: "kimi-for-coding/kimi-for-coding-highspeed" },
78216
78377
  description: "Trivial tasks - single file changes, typo fixes, simple modifications",
78217
78378
  promptAppend: QUICK_CATEGORY_PROMPT_APPEND
78218
78379
  },
@@ -78229,7 +78390,7 @@ var init_openai_categories = __esm(() => {
78229
78390
  function buildCategoryRecord(selector) {
78230
78391
  return Object.fromEntries(BUILTIN_CATEGORIES.map((definition2) => [definition2.name, selector(definition2)]));
78231
78392
  }
78232
- var BUILTIN_CATEGORIES, DEFAULT_CATEGORIES, CATEGORY_PROMPT_APPENDS, CATEGORY_DESCRIPTIONS, CATEGORY_PROMPT_APPEND_RESOLVERS;
78393
+ var BUILTIN_CATEGORIES, DEFAULT_CATEGORIES, CATEGORY_PROMPT_APPENDS, CATEGORY_DESCRIPTIONS, CATEGORY_PROMPT_APPEND_RESOLVERS, BUILTIN_CATEGORY_REQUIRES_MODEL;
78233
78394
  var init_builtin_categories = __esm(() => {
78234
78395
  init_anthropic_categories();
78235
78396
  init_google_categories();
@@ -78245,6 +78406,7 @@ var init_builtin_categories = __esm(() => {
78245
78406
  CATEGORY_PROMPT_APPENDS = buildCategoryRecord((definition2) => definition2.promptAppend);
78246
78407
  CATEGORY_DESCRIPTIONS = buildCategoryRecord((definition2) => definition2.description);
78247
78408
  CATEGORY_PROMPT_APPEND_RESOLVERS = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition2) => definition2.resolvePromptAppend !== undefined).map((definition2) => [definition2.name, definition2.resolvePromptAppend]));
78409
+ BUILTIN_CATEGORY_REQUIRES_MODEL = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition2) => definition2.requiresModel !== undefined).map((definition2) => [definition2.name, definition2.requiresModel]));
78248
78410
  });
78249
78411
 
78250
78412
  // packages/omo-opencode/src/tools/delegate-task/constants.ts
@@ -78337,6 +78499,7 @@ var init_binary_downloader = __esm(() => {
78337
78499
  // packages/omo-opencode/src/shared/agent-variant.ts
78338
78500
  var init_agent_variant = __esm(() => {
78339
78501
  init_agent_display_names();
78502
+ init_model_capabilities3();
78340
78503
  init_model_requirements2();
78341
78504
  });
78342
78505