gsd-pi 2.74.0 → 2.75.0-dev.fd2382b9f

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 (1043) hide show
  1. package/README.md +186 -149
  2. package/dist/claude-cli-check.d.ts +10 -0
  3. package/dist/claude-cli-check.js +13 -3
  4. package/dist/cli.js +85 -0
  5. package/dist/headless-events.d.ts +1 -1
  6. package/dist/headless-events.js +5 -2
  7. package/dist/headless-query.js +4 -1
  8. package/dist/headless.js +5 -6
  9. package/dist/help-text.js +23 -0
  10. package/dist/loader.js +0 -0
  11. package/dist/onboarding.js +39 -14
  12. package/dist/resources/extensions/ask-user-questions.js +17 -5
  13. package/dist/resources/extensions/claude-code-cli/models.js +9 -0
  14. package/dist/resources/extensions/claude-code-cli/readiness.js +12 -2
  15. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +76 -4
  16. package/dist/resources/extensions/gsd/activity-log.js +16 -0
  17. package/dist/resources/extensions/gsd/auto/detect-stuck.js +20 -4
  18. package/dist/resources/extensions/gsd/auto/loop.js +214 -14
  19. package/dist/resources/extensions/gsd/auto/phases.js +273 -51
  20. package/dist/resources/extensions/gsd/auto/resolve.js +1 -1
  21. package/dist/resources/extensions/gsd/auto/run-unit.js +10 -1
  22. package/dist/resources/extensions/gsd/auto/session.js +15 -0
  23. package/dist/resources/extensions/gsd/auto-artifact-paths.js +20 -0
  24. package/dist/resources/extensions/gsd/auto-dashboard.js +15 -7
  25. package/dist/resources/extensions/gsd/auto-dispatch.js +123 -7
  26. package/dist/resources/extensions/gsd/auto-loop.js +1 -1
  27. package/dist/resources/extensions/gsd/auto-model-selection.js +64 -10
  28. package/dist/resources/extensions/gsd/auto-post-unit.js +229 -24
  29. package/dist/resources/extensions/gsd/auto-prompts.js +159 -33
  30. package/dist/resources/extensions/gsd/auto-recovery.js +81 -10
  31. package/dist/resources/extensions/gsd/auto-start.js +5 -3
  32. package/dist/resources/extensions/gsd/auto-unit-closeout.js +18 -0
  33. package/dist/resources/extensions/gsd/auto-verification.js +103 -5
  34. package/dist/resources/extensions/gsd/auto-worktree.js +57 -1
  35. package/dist/resources/extensions/gsd/auto.js +84 -27
  36. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +8 -21
  37. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +22 -4
  38. package/dist/resources/extensions/gsd/bootstrap/provider-error-resume.js +5 -3
  39. package/dist/resources/extensions/gsd/bootstrap/query-tools.js +29 -0
  40. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +30 -8
  41. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +83 -9
  42. package/dist/resources/extensions/gsd/cache.js +16 -5
  43. package/dist/resources/extensions/gsd/commands/catalog.js +97 -3
  44. package/dist/resources/extensions/gsd/commands/handlers/core.js +11 -1
  45. package/dist/resources/extensions/gsd/commands/handlers/escalate.js +171 -0
  46. package/dist/resources/extensions/gsd/commands/handlers/ops.js +41 -0
  47. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +295 -37
  48. package/dist/resources/extensions/gsd/commands-add-tests.js +111 -0
  49. package/dist/resources/extensions/gsd/commands-backlog.js +140 -0
  50. package/dist/resources/extensions/gsd/commands-cmux.js +5 -2
  51. package/dist/resources/extensions/gsd/commands-debug.js +388 -0
  52. package/dist/resources/extensions/gsd/commands-do.js +80 -0
  53. package/dist/resources/extensions/gsd/commands-extract-learnings.js +225 -0
  54. package/dist/resources/extensions/gsd/commands-handlers.js +21 -2
  55. package/dist/resources/extensions/gsd/commands-maintenance.js +6 -6
  56. package/dist/resources/extensions/gsd/commands-pr-branch.js +180 -0
  57. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +51 -4
  58. package/dist/resources/extensions/gsd/commands-scan.js +94 -0
  59. package/dist/resources/extensions/gsd/commands-session-report.js +82 -0
  60. package/dist/resources/extensions/gsd/commands-ship.js +187 -0
  61. package/dist/resources/extensions/gsd/commands-workflow-templates.js +101 -2
  62. package/dist/resources/extensions/gsd/custom-workflow-engine.js +74 -54
  63. package/dist/resources/extensions/gsd/db-writer.js +4 -5
  64. package/dist/resources/extensions/gsd/debug-session-store.js +238 -0
  65. package/dist/resources/extensions/gsd/definition-loader.js +7 -0
  66. package/dist/resources/extensions/gsd/docs/preferences-reference.md +17 -2
  67. package/dist/resources/extensions/gsd/doctor-git-checks.js +5 -1
  68. package/dist/resources/extensions/gsd/doctor-proactive.js +4 -1
  69. package/dist/resources/extensions/gsd/doctor-providers.js +48 -20
  70. package/dist/resources/extensions/gsd/doctor-runtime-checks.js +22 -4
  71. package/dist/resources/extensions/gsd/doctor.js +7 -1
  72. package/dist/resources/extensions/gsd/ecosystem/gsd-extension-api.js +144 -0
  73. package/dist/resources/extensions/gsd/ecosystem/loader.js +145 -0
  74. package/dist/resources/extensions/gsd/error-classifier.js +6 -3
  75. package/dist/resources/extensions/gsd/escalation.js +321 -0
  76. package/dist/resources/extensions/gsd/forensics.js +26 -29
  77. package/dist/resources/extensions/gsd/git-service.js +49 -2
  78. package/dist/resources/extensions/gsd/graph-context.js +157 -0
  79. package/dist/resources/extensions/gsd/graph.js +26 -2
  80. package/dist/resources/extensions/gsd/gsd-db.js +822 -18
  81. package/dist/resources/extensions/gsd/guided-flow.js +31 -6
  82. package/dist/resources/extensions/gsd/health-widget-core.js +42 -14
  83. package/dist/resources/extensions/gsd/health-widget.js +7 -4
  84. package/dist/resources/extensions/gsd/index.js +15 -2
  85. package/dist/resources/extensions/gsd/init-wizard.js +1 -0
  86. package/dist/resources/extensions/gsd/journal.js +27 -0
  87. package/dist/resources/extensions/gsd/md-importer.js +3 -4
  88. package/dist/resources/extensions/gsd/memory-store.js +19 -51
  89. package/dist/resources/extensions/gsd/metrics.js +20 -0
  90. package/dist/resources/extensions/gsd/milestone-validation-gates.js +13 -12
  91. package/dist/resources/extensions/gsd/model-cost-table.js +3 -1
  92. package/dist/resources/extensions/gsd/model-router.js +7 -1
  93. package/dist/resources/extensions/gsd/native-git-bridge.js +144 -9
  94. package/dist/resources/extensions/gsd/notification-widget.js +24 -39
  95. package/dist/resources/extensions/gsd/notifications.js +4 -0
  96. package/dist/resources/extensions/gsd/parallel-orchestrator.js +33 -1
  97. package/dist/resources/extensions/gsd/post-execution-checks.js +27 -11
  98. package/dist/resources/extensions/gsd/pre-execution-checks.js +97 -4
  99. package/dist/resources/extensions/gsd/preferences-models.js +21 -3
  100. package/dist/resources/extensions/gsd/preferences-types.js +4 -1
  101. package/dist/resources/extensions/gsd/preferences-validation.js +160 -10
  102. package/dist/resources/extensions/gsd/preferences.js +41 -10
  103. package/dist/resources/extensions/gsd/prompts/add-tests.md +35 -0
  104. package/dist/resources/extensions/gsd/prompts/debug-diagnose.md +25 -0
  105. package/dist/resources/extensions/gsd/prompts/debug-session-manager.md +80 -0
  106. package/dist/resources/extensions/gsd/prompts/execute-task.md +12 -0
  107. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +12 -0
  108. package/dist/resources/extensions/gsd/prompts/refine-slice.md +69 -0
  109. package/dist/resources/extensions/gsd/prompts/scan.md +79 -0
  110. package/dist/resources/extensions/gsd/prompts/workflow-oneshot.md +26 -0
  111. package/dist/resources/extensions/gsd/run-manager.js +37 -17
  112. package/dist/resources/extensions/gsd/safety/evidence-collector.js +15 -30
  113. package/dist/resources/extensions/gsd/slice-parallel-orchestrator.js +12 -2
  114. package/dist/resources/extensions/gsd/state.js +52 -4
  115. package/dist/resources/extensions/gsd/templates/PREFERENCES.md +19 -0
  116. package/dist/resources/extensions/gsd/tools/complete-slice.js +20 -0
  117. package/dist/resources/extensions/gsd/tools/complete-task.js +80 -0
  118. package/dist/resources/extensions/gsd/tools/plan-milestone.js +37 -12
  119. package/dist/resources/extensions/gsd/tools/plan-slice.js +5 -2
  120. package/dist/resources/extensions/gsd/tools/validate-milestone.js +39 -4
  121. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +3 -14
  122. package/dist/resources/extensions/gsd/triage-resolution.js +2 -5
  123. package/dist/resources/extensions/gsd/unit-ownership.js +1 -1
  124. package/dist/resources/extensions/gsd/uok/audit-toggle.js +7 -0
  125. package/dist/resources/extensions/gsd/uok/audit.js +40 -0
  126. package/dist/resources/extensions/gsd/uok/contracts.js +1 -0
  127. package/dist/resources/extensions/gsd/uok/execution-graph.js +179 -0
  128. package/dist/resources/extensions/gsd/uok/flags.js +29 -0
  129. package/dist/resources/extensions/gsd/uok/gate-runner.js +109 -0
  130. package/dist/resources/extensions/gsd/uok/gitops.js +53 -0
  131. package/dist/resources/extensions/gsd/uok/kernel.js +85 -0
  132. package/dist/resources/extensions/gsd/uok/loop-adapter.js +133 -0
  133. package/dist/resources/extensions/gsd/uok/model-policy.js +66 -0
  134. package/dist/resources/extensions/gsd/uok/plan-v2.js +132 -0
  135. package/dist/resources/extensions/gsd/workflow-dispatch.js +64 -0
  136. package/dist/resources/extensions/gsd/workflow-install.js +327 -0
  137. package/dist/resources/extensions/gsd/workflow-logger.js +22 -0
  138. package/dist/resources/extensions/gsd/workflow-manifest.js +16 -69
  139. package/dist/resources/extensions/gsd/workflow-mcp.js +1 -6
  140. package/dist/resources/extensions/gsd/workflow-migration.js +21 -22
  141. package/dist/resources/extensions/gsd/workflow-plugins.js +346 -0
  142. package/dist/resources/extensions/gsd/workflow-projections.js +4 -1
  143. package/dist/resources/extensions/gsd/workflow-reconcile.js +14 -11
  144. package/dist/resources/extensions/gsd/workflow-templates/accessibility-audit.md +88 -0
  145. package/dist/resources/extensions/gsd/workflow-templates/api-breaking-change.md +117 -0
  146. package/dist/resources/extensions/gsd/workflow-templates/bugfix.md +1 -0
  147. package/dist/resources/extensions/gsd/workflow-templates/changelog-gen.md +82 -0
  148. package/dist/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +144 -0
  149. package/dist/resources/extensions/gsd/workflow-templates/dead-code.md +81 -0
  150. package/dist/resources/extensions/gsd/workflow-templates/dep-upgrade.md +1 -0
  151. package/dist/resources/extensions/gsd/workflow-templates/docs-sync.yaml +76 -0
  152. package/dist/resources/extensions/gsd/workflow-templates/env-audit.yaml +88 -0
  153. package/dist/resources/extensions/gsd/workflow-templates/full-project.md +1 -0
  154. package/dist/resources/extensions/gsd/workflow-templates/hotfix.md +1 -0
  155. package/dist/resources/extensions/gsd/workflow-templates/issue-triage.md +84 -0
  156. package/dist/resources/extensions/gsd/workflow-templates/observability-setup.md +133 -0
  157. package/dist/resources/extensions/gsd/workflow-templates/onboarding-check.md +74 -0
  158. package/dist/resources/extensions/gsd/workflow-templates/performance-audit.md +125 -0
  159. package/dist/resources/extensions/gsd/workflow-templates/pr-review.md +67 -0
  160. package/dist/resources/extensions/gsd/workflow-templates/pr-triage.md +83 -0
  161. package/dist/resources/extensions/gsd/workflow-templates/refactor.md +1 -0
  162. package/dist/resources/extensions/gsd/workflow-templates/registry.json +184 -0
  163. package/dist/resources/extensions/gsd/workflow-templates/release.md +118 -0
  164. package/dist/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +99 -0
  165. package/dist/resources/extensions/gsd/workflow-templates/security-audit.md +1 -0
  166. package/dist/resources/extensions/gsd/workflow-templates/small-feature.md +1 -0
  167. package/dist/resources/extensions/gsd/workflow-templates/spike.md +1 -0
  168. package/dist/resources/extensions/gsd/workflow-templates/test-backfill.yaml +73 -0
  169. package/dist/resources/extensions/gsd/worktree-resolver.js +42 -1
  170. package/dist/resources/extensions/remote-questions/commands.js +380 -0
  171. package/dist/resources/extensions/remote-questions/manager.js +39 -5
  172. package/dist/resources/extensions/remote-questions/telegram-adapter.js +79 -4
  173. package/dist/resources/extensions/shared/interview-ui.js +189 -1
  174. package/dist/resources/extensions/shared/layout-utils.js +17 -0
  175. package/dist/resources/extensions/shared/rtk-shared.js +47 -0
  176. package/dist/resources/extensions/shared/rtk.js +3 -46
  177. package/dist/resources/extensions/ttsr/ttsr-manager.js +3 -1
  178. package/dist/resources/skills/create-workflow/SKILL.md +33 -6
  179. package/dist/rtk-shared.d.ts +10 -0
  180. package/dist/rtk-shared.js +47 -0
  181. package/dist/rtk.d.ts +2 -6
  182. package/dist/rtk.js +3 -48
  183. package/dist/shared/workspace-types.d.ts +52 -0
  184. package/dist/shared/workspace-types.js +1 -0
  185. package/dist/tsconfig.extensions.tsbuildinfo +1 -0
  186. package/dist/update-check.d.ts +10 -0
  187. package/dist/update-check.js +24 -3
  188. package/dist/web/standalone/.next/BUILD_ID +1 -1
  189. package/dist/web/standalone/.next/app-path-routes-manifest.json +10 -10
  190. package/dist/web/standalone/.next/build-manifest.json +4 -4
  191. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  192. package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
  193. package/dist/web/standalone/.next/required-server-files.json +3 -3
  194. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  195. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  196. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  197. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  198. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  199. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  200. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  201. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  202. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  203. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  204. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  205. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  206. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  207. package/dist/web/standalone/.next/server/app/_not-found.rsc +4 -4
  208. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  209. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  210. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  211. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  212. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  213. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  214. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  215. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  216. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  217. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  218. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  219. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  220. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  221. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  222. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  223. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  224. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  225. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  226. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  227. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  228. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  229. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  230. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  231. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  232. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  233. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  234. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  235. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  236. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  237. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  238. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  239. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  240. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  241. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  242. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  243. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  244. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  245. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  246. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  247. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  248. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  249. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  250. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  251. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  252. package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
  253. package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  254. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  255. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  256. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  257. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  258. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  259. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  260. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  261. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  262. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  263. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  264. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  265. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  266. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  267. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  268. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  269. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  270. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  271. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  272. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  273. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  274. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  275. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  276. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  277. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  278. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  279. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  280. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  281. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  282. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
  283. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  284. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  285. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  286. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  287. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  288. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  289. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  290. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  291. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  292. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  293. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  294. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  295. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  296. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  297. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  298. package/dist/web/standalone/.next/server/app/index.html +1 -1
  299. package/dist/web/standalone/.next/server/app/index.rsc +5 -5
  300. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  301. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
  302. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  303. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -4
  304. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  305. package/dist/web/standalone/.next/server/app/page.js +2 -2
  306. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  307. package/dist/web/standalone/.next/server/app-paths-manifest.json +10 -10
  308. package/dist/web/standalone/.next/server/chunks/63.js +3 -3
  309. package/dist/web/standalone/.next/server/chunks/6897.js +3 -3
  310. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  311. package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
  312. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  313. package/dist/web/standalone/.next/server/middleware.js +2 -2
  314. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  315. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  316. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  317. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  318. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  319. package/dist/web/standalone/.next/static/chunks/2826.02df9631042cc18e.js +9 -0
  320. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
  321. package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
  322. package/dist/web/standalone/.next/static/chunks/app/page-f1e30ab6bb269149.js +1 -0
  323. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
  324. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
  325. package/dist/web/standalone/.next/static/chunks/{webpack-b868033a5834586d.js → webpack-6c7cda3e318eedb6.js} +1 -1
  326. package/dist/web/standalone/.next/static/css/3e9cdadb4d23b8a4.css +1 -0
  327. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  328. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  329. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  330. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  331. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  332. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  333. package/dist/web/standalone/server.js +1 -1
  334. package/dist/welcome-screen.js +48 -24
  335. package/dist/wizard.js +2 -2
  336. package/dist/worktree-cli.d.ts +6 -5
  337. package/dist/worktree-cli.js +23 -7
  338. package/package.json +5 -4
  339. package/packages/daemon/package.json +2 -2
  340. package/packages/mcp-server/dist/index.d.ts +3 -0
  341. package/packages/mcp-server/dist/index.d.ts.map +1 -1
  342. package/packages/mcp-server/dist/index.js +3 -0
  343. package/packages/mcp-server/dist/index.js.map +1 -1
  344. package/packages/mcp-server/dist/readers/graph.d.ts +87 -0
  345. package/packages/mcp-server/dist/readers/graph.d.ts.map +1 -0
  346. package/packages/mcp-server/dist/readers/graph.js +655 -0
  347. package/packages/mcp-server/dist/readers/graph.js.map +1 -0
  348. package/packages/mcp-server/dist/readers/index.d.ts +2 -0
  349. package/packages/mcp-server/dist/readers/index.d.ts.map +1 -1
  350. package/packages/mcp-server/dist/readers/index.js +1 -0
  351. package/packages/mcp-server/dist/readers/index.js.map +1 -1
  352. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  353. package/packages/mcp-server/dist/server.js +65 -0
  354. package/packages/mcp-server/dist/server.js.map +1 -1
  355. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  356. package/packages/mcp-server/dist/workflow-tools.js +88 -6
  357. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  358. package/packages/mcp-server/package.json +2 -2
  359. package/packages/mcp-server/src/index.ts +15 -0
  360. package/packages/mcp-server/src/readers/graph.test.ts +604 -0
  361. package/packages/mcp-server/src/readers/graph.ts +855 -0
  362. package/packages/mcp-server/src/readers/index.ts +12 -0
  363. package/packages/mcp-server/src/server.ts +83 -0
  364. package/packages/mcp-server/src/workflow-tools.ts +95 -10
  365. package/packages/mcp-server/tsconfig.json +1 -0
  366. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -0
  367. package/packages/native/package.json +2 -2
  368. package/packages/native/tsconfig.tsbuildinfo +1 -0
  369. package/packages/pi-agent-core/package.json +1 -1
  370. package/packages/pi-agent-core/tsconfig.json +1 -0
  371. package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -0
  372. package/packages/pi-ai/dist/index.d.ts +1 -9
  373. package/packages/pi-ai/dist/index.d.ts.map +1 -1
  374. package/packages/pi-ai/dist/index.js +1 -9
  375. package/packages/pi-ai/dist/index.js.map +1 -1
  376. package/packages/pi-ai/dist/models/capability-patches.d.ts +19 -0
  377. package/packages/pi-ai/dist/models/capability-patches.d.ts.map +1 -0
  378. package/packages/pi-ai/dist/models/capability-patches.js +37 -0
  379. package/packages/pi-ai/dist/models/capability-patches.js.map +1 -0
  380. package/packages/pi-ai/dist/{models.custom.d.ts → models/custom.d.ts} +1 -1
  381. package/packages/pi-ai/dist/models/custom.d.ts.map +1 -0
  382. package/packages/pi-ai/dist/{models.custom.js → models/custom.js} +4 -4
  383. package/packages/pi-ai/dist/models/custom.js.map +1 -0
  384. package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts +1550 -0
  385. package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts.map +1 -0
  386. package/packages/pi-ai/dist/models/generated/amazon-bedrock.js +1552 -0
  387. package/packages/pi-ai/dist/models/generated/amazon-bedrock.js.map +1 -0
  388. package/packages/pi-ai/dist/models/generated/anthropic.d.ts +394 -0
  389. package/packages/pi-ai/dist/models/generated/anthropic.d.ts.map +1 -0
  390. package/packages/pi-ai/dist/models/generated/anthropic.js +396 -0
  391. package/packages/pi-ai/dist/models/generated/anthropic.js.map +1 -0
  392. package/packages/pi-ai/dist/models/generated/azure-openai-responses.d.ts +700 -0
  393. package/packages/pi-ai/dist/models/generated/azure-openai-responses.d.ts.map +1 -0
  394. package/packages/pi-ai/dist/models/generated/azure-openai-responses.js +702 -0
  395. package/packages/pi-ai/dist/models/generated/azure-openai-responses.js.map +1 -0
  396. package/packages/pi-ai/dist/models/generated/cerebras.d.ts +71 -0
  397. package/packages/pi-ai/dist/models/generated/cerebras.d.ts.map +1 -0
  398. package/packages/pi-ai/dist/models/generated/cerebras.js +73 -0
  399. package/packages/pi-ai/dist/models/generated/cerebras.js.map +1 -0
  400. package/packages/pi-ai/dist/models/generated/github-copilot.d.ts +590 -0
  401. package/packages/pi-ai/dist/models/generated/github-copilot.d.ts.map +1 -0
  402. package/packages/pi-ai/dist/models/generated/github-copilot.js +444 -0
  403. package/packages/pi-ai/dist/models/generated/github-copilot.js.map +1 -0
  404. package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts +173 -0
  405. package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts.map +1 -0
  406. package/packages/pi-ai/dist/models/generated/google-antigravity.js +175 -0
  407. package/packages/pi-ai/dist/models/generated/google-antigravity.js.map +1 -0
  408. package/packages/pi-ai/dist/models/generated/google-gemini-cli.d.ts +105 -0
  409. package/packages/pi-ai/dist/models/generated/google-gemini-cli.d.ts.map +1 -0
  410. package/packages/pi-ai/dist/models/generated/google-gemini-cli.js +107 -0
  411. package/packages/pi-ai/dist/models/generated/google-gemini-cli.js.map +1 -0
  412. package/packages/pi-ai/dist/models/generated/google-vertex.d.ts +207 -0
  413. package/packages/pi-ai/dist/models/generated/google-vertex.d.ts.map +1 -0
  414. package/packages/pi-ai/dist/models/generated/google-vertex.js +209 -0
  415. package/packages/pi-ai/dist/models/generated/google-vertex.js.map +1 -0
  416. package/packages/pi-ai/dist/models/generated/google.d.ts +462 -0
  417. package/packages/pi-ai/dist/models/generated/google.d.ts.map +1 -0
  418. package/packages/pi-ai/dist/models/generated/google.js +464 -0
  419. package/packages/pi-ai/dist/models/generated/google.js.map +1 -0
  420. package/packages/pi-ai/dist/models/generated/groq.d.ts +156 -0
  421. package/packages/pi-ai/dist/models/generated/groq.d.ts.map +1 -0
  422. package/packages/pi-ai/dist/models/generated/groq.js +158 -0
  423. package/packages/pi-ai/dist/models/generated/groq.js.map +1 -0
  424. package/packages/pi-ai/dist/models/generated/huggingface.d.ts +383 -0
  425. package/packages/pi-ai/dist/models/generated/huggingface.d.ts.map +1 -0
  426. package/packages/pi-ai/dist/models/generated/huggingface.js +347 -0
  427. package/packages/pi-ai/dist/models/generated/huggingface.js.map +1 -0
  428. package/packages/pi-ai/dist/{models.generated.d.ts → models/generated/index.d.ts} +137 -154
  429. package/packages/pi-ai/dist/{models.generated.d.ts.map → models/generated/index.d.ts.map} +1 -1
  430. package/packages/pi-ai/dist/models/generated/index.js +51 -0
  431. package/packages/pi-ai/dist/models/generated/index.js.map +1 -0
  432. package/packages/pi-ai/dist/models/generated/kimi-coding.d.ts +37 -0
  433. package/packages/pi-ai/dist/models/generated/kimi-coding.d.ts.map +1 -0
  434. package/packages/pi-ai/dist/models/generated/kimi-coding.js +39 -0
  435. package/packages/pi-ai/dist/models/generated/kimi-coding.js.map +1 -0
  436. package/packages/pi-ai/dist/models/generated/minimax-cn.d.ts +105 -0
  437. package/packages/pi-ai/dist/models/generated/minimax-cn.d.ts.map +1 -0
  438. package/packages/pi-ai/dist/models/generated/minimax-cn.js +107 -0
  439. package/packages/pi-ai/dist/models/generated/minimax-cn.js.map +1 -0
  440. package/packages/pi-ai/dist/models/generated/minimax.d.ts +105 -0
  441. package/packages/pi-ai/dist/models/generated/minimax.d.ts.map +1 -0
  442. package/packages/pi-ai/dist/models/generated/minimax.js +107 -0
  443. package/packages/pi-ai/dist/models/generated/minimax.js.map +1 -0
  444. package/packages/pi-ai/dist/models/generated/mistral.d.ts +445 -0
  445. package/packages/pi-ai/dist/models/generated/mistral.d.ts.map +1 -0
  446. package/packages/pi-ai/dist/models/generated/mistral.js +447 -0
  447. package/packages/pi-ai/dist/models/generated/mistral.js.map +1 -0
  448. package/packages/pi-ai/dist/models/generated/openai-codex.d.ts +156 -0
  449. package/packages/pi-ai/dist/models/generated/openai-codex.d.ts.map +1 -0
  450. package/packages/pi-ai/dist/models/generated/openai-codex.js +158 -0
  451. package/packages/pi-ai/dist/models/generated/openai-codex.js.map +1 -0
  452. package/packages/pi-ai/dist/models/generated/openai.d.ts +700 -0
  453. package/packages/pi-ai/dist/models/generated/openai.d.ts.map +1 -0
  454. package/packages/pi-ai/dist/models/generated/openai.js +702 -0
  455. package/packages/pi-ai/dist/models/generated/openai.js.map +1 -0
  456. package/packages/pi-ai/dist/models/generated/opencode-go.d.ts +122 -0
  457. package/packages/pi-ai/dist/models/generated/opencode-go.d.ts.map +1 -0
  458. package/packages/pi-ai/dist/models/generated/opencode-go.js +124 -0
  459. package/packages/pi-ai/dist/models/generated/opencode-go.js.map +1 -0
  460. package/packages/pi-ai/dist/models/generated/opencode.d.ts +530 -0
  461. package/packages/pi-ai/dist/models/generated/opencode.d.ts.map +1 -0
  462. package/packages/pi-ai/dist/models/generated/opencode.js +532 -0
  463. package/packages/pi-ai/dist/models/generated/opencode.js.map +1 -0
  464. package/packages/pi-ai/dist/models/generated/openrouter.d.ts +4287 -0
  465. package/packages/pi-ai/dist/models/generated/openrouter.d.ts.map +1 -0
  466. package/packages/pi-ai/dist/models/generated/openrouter.js +4289 -0
  467. package/packages/pi-ai/dist/models/generated/openrouter.js.map +1 -0
  468. package/packages/pi-ai/dist/models/generated/vercel-ai-gateway.d.ts +2604 -0
  469. package/packages/pi-ai/dist/models/generated/vercel-ai-gateway.d.ts.map +1 -0
  470. package/packages/pi-ai/dist/models/generated/vercel-ai-gateway.js +2606 -0
  471. package/packages/pi-ai/dist/models/generated/vercel-ai-gateway.js.map +1 -0
  472. package/packages/pi-ai/dist/models/generated/xai.d.ts +411 -0
  473. package/packages/pi-ai/dist/models/generated/xai.d.ts.map +1 -0
  474. package/packages/pi-ai/dist/models/generated/xai.js +413 -0
  475. package/packages/pi-ai/dist/models/generated/xai.js.map +1 -0
  476. package/packages/pi-ai/dist/models/generated/zai.d.ts +276 -0
  477. package/packages/pi-ai/dist/models/generated/zai.d.ts.map +1 -0
  478. package/packages/pi-ai/dist/models/generated/zai.js +239 -0
  479. package/packages/pi-ai/dist/models/generated/zai.js.map +1 -0
  480. package/packages/pi-ai/dist/models/index.d.ts +27 -0
  481. package/packages/pi-ai/dist/models/index.d.ts.map +1 -0
  482. package/packages/pi-ai/dist/models/index.js +80 -0
  483. package/packages/pi-ai/dist/models/index.js.map +1 -0
  484. package/packages/pi-ai/dist/models.d.ts +1 -36
  485. package/packages/pi-ai/dist/models.d.ts.map +1 -1
  486. package/packages/pi-ai/dist/models.generated.test.js +18 -2
  487. package/packages/pi-ai/dist/models.generated.test.js.map +1 -1
  488. package/packages/pi-ai/dist/models.js +3 -112
  489. package/packages/pi-ai/dist/models.js.map +1 -1
  490. package/packages/pi-ai/dist/models.test.js +6 -5
  491. package/packages/pi-ai/dist/models.test.js.map +1 -1
  492. package/packages/pi-ai/dist/providers/amazon-bedrock.d.ts +22 -1
  493. package/packages/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  494. package/packages/pi-ai/dist/providers/amazon-bedrock.js +40 -6
  495. package/packages/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  496. package/packages/pi-ai/dist/providers/amazon-bedrock.test.d.ts +2 -0
  497. package/packages/pi-ai/dist/providers/amazon-bedrock.test.d.ts.map +1 -0
  498. package/packages/pi-ai/dist/providers/amazon-bedrock.test.js +106 -0
  499. package/packages/pi-ai/dist/providers/amazon-bedrock.test.js.map +1 -0
  500. package/packages/pi-ai/dist/providers/anthropic-auth.test.js +42 -1
  501. package/packages/pi-ai/dist/providers/anthropic-auth.test.js.map +1 -1
  502. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts +20 -1
  503. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
  504. package/packages/pi-ai/dist/providers/anthropic-shared.js +32 -2
  505. package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
  506. package/packages/pi-ai/dist/providers/anthropic-shared.test.js +12 -1
  507. package/packages/pi-ai/dist/providers/anthropic-shared.test.js.map +1 -1
  508. package/packages/pi-ai/dist/providers/anthropic.d.ts +11 -0
  509. package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  510. package/packages/pi-ai/dist/providers/anthropic.js +18 -1
  511. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  512. package/packages/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  513. package/packages/pi-ai/dist/utils/oauth/openai-codex.js +12 -0
  514. package/packages/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
  515. package/packages/pi-ai/package.json +2 -2
  516. package/packages/pi-ai/scripts/generate-models.ts +124 -40
  517. package/packages/pi-ai/src/index.ts +1 -9
  518. package/packages/pi-ai/src/models/capability-patches.ts +43 -0
  519. package/packages/pi-ai/src/{models.custom.ts → models/custom.ts} +4 -4
  520. package/packages/pi-ai/src/models/generated/amazon-bedrock.ts +1554 -0
  521. package/packages/pi-ai/src/models/generated/anthropic.ts +398 -0
  522. package/packages/pi-ai/src/models/generated/azure-openai-responses.ts +704 -0
  523. package/packages/pi-ai/src/models/generated/cerebras.ts +75 -0
  524. package/packages/pi-ai/src/models/generated/github-copilot.ts +446 -0
  525. package/packages/pi-ai/src/models/generated/google-antigravity.ts +177 -0
  526. package/packages/pi-ai/src/models/generated/google-gemini-cli.ts +109 -0
  527. package/packages/pi-ai/src/models/generated/google-vertex.ts +211 -0
  528. package/packages/pi-ai/src/models/generated/google.ts +466 -0
  529. package/packages/pi-ai/src/models/generated/groq.ts +160 -0
  530. package/packages/pi-ai/src/models/generated/huggingface.ts +349 -0
  531. package/packages/pi-ai/src/models/generated/index.ts +52 -0
  532. package/packages/pi-ai/src/models/generated/kimi-coding.ts +41 -0
  533. package/packages/pi-ai/src/models/generated/minimax-cn.ts +109 -0
  534. package/packages/pi-ai/src/models/generated/minimax.ts +109 -0
  535. package/packages/pi-ai/src/models/generated/mistral.ts +449 -0
  536. package/packages/pi-ai/src/models/generated/openai-codex.ts +160 -0
  537. package/packages/pi-ai/src/models/generated/openai.ts +704 -0
  538. package/packages/pi-ai/src/models/generated/opencode-go.ts +126 -0
  539. package/packages/pi-ai/src/models/generated/opencode.ts +534 -0
  540. package/packages/pi-ai/src/models/generated/openrouter.ts +4291 -0
  541. package/packages/pi-ai/src/models/generated/vercel-ai-gateway.ts +2608 -0
  542. package/packages/pi-ai/src/models/generated/xai.ts +415 -0
  543. package/packages/pi-ai/src/models/generated/zai.ts +241 -0
  544. package/packages/pi-ai/src/models/index.ts +106 -0
  545. package/packages/pi-ai/src/models.generated.test.ts +18 -2
  546. package/packages/pi-ai/src/models.test.ts +6 -5
  547. package/packages/pi-ai/src/models.ts +3 -153
  548. package/packages/pi-ai/src/providers/amazon-bedrock.test.ts +164 -0
  549. package/packages/pi-ai/src/providers/amazon-bedrock.ts +41 -7
  550. package/packages/pi-ai/src/providers/anthropic-auth.test.ts +47 -1
  551. package/packages/pi-ai/src/providers/anthropic-shared.test.ts +15 -1
  552. package/packages/pi-ai/src/providers/anthropic-shared.ts +36 -3
  553. package/packages/pi-ai/src/providers/anthropic.ts +19 -1
  554. package/packages/pi-ai/src/utils/oauth/openai-codex.ts +15 -0
  555. package/packages/pi-ai/tsconfig.json +1 -0
  556. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -0
  557. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts +2 -0
  558. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts.map +1 -0
  559. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js +38 -0
  560. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js.map +1 -0
  561. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  562. package/packages/pi-coding-agent/dist/core/agent-session.js +8 -2
  563. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  564. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +14 -0
  565. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  566. package/packages/pi-coding-agent/dist/core/auth-storage.js +34 -0
  567. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  568. package/packages/pi-coding-agent/dist/core/auth-storage.test.js +74 -0
  569. package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
  570. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +476 -1
  571. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -1
  572. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js +32 -0
  573. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js.map +1 -1
  574. package/packages/pi-coding-agent/dist/core/model-registry-env-fallback.test.d.ts +2 -0
  575. package/packages/pi-coding-agent/dist/core/model-registry-env-fallback.test.d.ts.map +1 -0
  576. package/packages/pi-coding-agent/dist/core/model-registry-env-fallback.test.js +52 -0
  577. package/packages/pi-coding-agent/dist/core/model-registry-env-fallback.test.js.map +1 -0
  578. package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  579. package/packages/pi-coding-agent/dist/core/model-registry.js +2 -2
  580. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  581. package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  582. package/packages/pi-coding-agent/dist/core/sdk.js +32 -0
  583. package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
  584. package/packages/pi-coding-agent/dist/core/skill-tool.test.js +2 -2
  585. package/packages/pi-coding-agent/dist/core/skill-tool.test.js.map +1 -1
  586. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/chat-frame-compaction-tone.test.d.ts +2 -0
  587. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/chat-frame-compaction-tone.test.d.ts.map +1 -0
  588. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/chat-frame-compaction-tone.test.js +61 -0
  589. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/chat-frame-compaction-tone.test.js.map +1 -0
  590. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js +11 -0
  591. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js.map +1 -1
  592. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts +1 -0
  593. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  594. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +23 -9
  595. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
  596. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.d.ts +11 -0
  597. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.d.ts.map +1 -0
  598. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js +63 -0
  599. package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js.map +1 -0
  600. package/packages/pi-coding-agent/dist/modes/interactive/components/compaction-summary-message.d.ts +8 -5
  601. package/packages/pi-coding-agent/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  602. package/packages/pi-coding-agent/dist/modes/interactive/components/compaction-summary-message.js +27 -13
  603. package/packages/pi-coding-agent/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  604. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  605. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +48 -34
  606. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  607. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +8 -0
  608. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  609. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +68 -8
  610. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  611. package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  612. package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.js +22 -22
  613. package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.js.map +1 -1
  614. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts +4 -0
  615. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  616. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +315 -51
  617. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  618. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-ordering.test.d.ts +2 -0
  619. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-ordering.test.d.ts.map +1 -0
  620. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-ordering.test.js +38 -0
  621. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-ordering.test.js.map +1 -0
  622. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +14 -0
  623. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  624. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +70 -6
  625. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  626. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts +70 -0
  627. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  628. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js +77 -0
  629. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  630. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +1 -66
  631. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  632. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +1 -75
  633. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  634. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts +1 -1
  635. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  636. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +192 -24
  637. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
  638. package/packages/pi-coding-agent/package.json +1 -1
  639. package/packages/pi-coding-agent/src/core/agent-session-abort-order.test.ts +56 -0
  640. package/packages/pi-coding-agent/src/core/agent-session.ts +12 -6
  641. package/packages/pi-coding-agent/src/core/auth-storage.test.ts +83 -0
  642. package/packages/pi-coding-agent/src/core/auth-storage.ts +35 -0
  643. package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +616 -1
  644. package/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +37 -1
  645. package/packages/pi-coding-agent/src/core/model-registry-env-fallback.test.ts +59 -0
  646. package/packages/pi-coding-agent/src/core/model-registry.ts +2 -1
  647. package/packages/pi-coding-agent/src/core/sdk.ts +41 -0
  648. package/packages/pi-coding-agent/src/core/skill-tool.test.ts +2 -2
  649. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/chat-frame-compaction-tone.test.ts +92 -0
  650. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-execution.test.ts +19 -0
  651. package/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts +25 -10
  652. package/packages/pi-coding-agent/src/modes/interactive/components/chat-frame.ts +87 -0
  653. package/packages/pi-coding-agent/src/modes/interactive/components/compaction-summary-message.ts +36 -15
  654. package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +53 -31
  655. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +83 -7
  656. package/packages/pi-coding-agent/src/modes/interactive/components/user-message.ts +23 -26
  657. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +386 -77
  658. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode-ordering.test.ts +44 -0
  659. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +92 -6
  660. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.ts +83 -0
  661. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +2 -83
  662. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +208 -27
  663. package/packages/pi-coding-agent/src/types/ambient-modules.d.ts +69 -0
  664. package/packages/pi-coding-agent/tsconfig.json +3 -2
  665. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -0
  666. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  667. package/packages/pi-tui/dist/tui.js +9 -2
  668. package/packages/pi-tui/dist/tui.js.map +1 -1
  669. package/packages/pi-tui/package.json +1 -1
  670. package/packages/pi-tui/src/tui.ts +9 -1
  671. package/packages/pi-tui/tsconfig.json +1 -0
  672. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -0
  673. package/packages/rpc-client/package.json +1 -1
  674. package/packages/rpc-client/tsconfig.json +1 -0
  675. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -0
  676. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts +70 -0
  677. package/pkg/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  678. package/pkg/dist/modes/interactive/theme/theme-schema.js +77 -0
  679. package/pkg/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  680. package/pkg/dist/modes/interactive/theme/theme.d.ts +1 -66
  681. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  682. package/pkg/dist/modes/interactive/theme/theme.js +1 -75
  683. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  684. package/pkg/dist/modes/interactive/theme/themes.d.ts +1 -1
  685. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  686. package/pkg/dist/modes/interactive/theme/themes.js +192 -24
  687. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
  688. package/pkg/package.json +1 -1
  689. package/src/resources/extensions/ask-user-questions.ts +24 -6
  690. package/src/resources/extensions/claude-code-cli/models.ts +9 -0
  691. package/src/resources/extensions/claude-code-cli/readiness.ts +13 -2
  692. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +94 -4
  693. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +84 -0
  694. package/src/resources/extensions/gsd/activity-log.ts +21 -0
  695. package/src/resources/extensions/gsd/auto/detect-stuck.ts +22 -4
  696. package/src/resources/extensions/gsd/auto/loop-deps.ts +11 -0
  697. package/src/resources/extensions/gsd/auto/loop.ts +268 -13
  698. package/src/resources/extensions/gsd/auto/phases.ts +349 -64
  699. package/src/resources/extensions/gsd/auto/resolve.ts +1 -1
  700. package/src/resources/extensions/gsd/auto/run-unit.ts +11 -1
  701. package/src/resources/extensions/gsd/auto/session.ts +17 -0
  702. package/src/resources/extensions/gsd/auto-artifact-paths.ts +20 -0
  703. package/src/resources/extensions/gsd/auto-dashboard.ts +21 -4
  704. package/src/resources/extensions/gsd/auto-dispatch.ts +139 -11
  705. package/src/resources/extensions/gsd/auto-loop.ts +1 -1
  706. package/src/resources/extensions/gsd/auto-model-selection.ts +82 -10
  707. package/src/resources/extensions/gsd/auto-post-unit.ts +247 -25
  708. package/src/resources/extensions/gsd/auto-prompts.ts +188 -35
  709. package/src/resources/extensions/gsd/auto-recovery.ts +92 -10
  710. package/src/resources/extensions/gsd/auto-start.ts +8 -6
  711. package/src/resources/extensions/gsd/auto-unit-closeout.ts +25 -1
  712. package/src/resources/extensions/gsd/auto-verification.ts +132 -5
  713. package/src/resources/extensions/gsd/auto-worktree.ts +66 -0
  714. package/src/resources/extensions/gsd/auto.ts +92 -28
  715. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +8 -21
  716. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +22 -4
  717. package/src/resources/extensions/gsd/bootstrap/provider-error-resume.ts +5 -3
  718. package/src/resources/extensions/gsd/bootstrap/query-tools.ts +31 -0
  719. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +38 -8
  720. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +94 -8
  721. package/src/resources/extensions/gsd/cache.ts +16 -5
  722. package/src/resources/extensions/gsd/commands/catalog.ts +90 -3
  723. package/src/resources/extensions/gsd/commands/handlers/core.ts +11 -1
  724. package/src/resources/extensions/gsd/commands/handlers/escalate.ts +216 -0
  725. package/src/resources/extensions/gsd/commands/handlers/ops.ts +41 -0
  726. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +352 -37
  727. package/src/resources/extensions/gsd/commands-add-tests.ts +137 -0
  728. package/src/resources/extensions/gsd/commands-backlog.ts +182 -0
  729. package/src/resources/extensions/gsd/commands-cmux.ts +6 -2
  730. package/src/resources/extensions/gsd/commands-debug.ts +484 -0
  731. package/src/resources/extensions/gsd/commands-do.ts +110 -0
  732. package/src/resources/extensions/gsd/commands-extract-learnings.ts +304 -0
  733. package/src/resources/extensions/gsd/commands-handlers.ts +19 -2
  734. package/src/resources/extensions/gsd/commands-maintenance.ts +6 -6
  735. package/src/resources/extensions/gsd/commands-pr-branch.ts +234 -0
  736. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +58 -4
  737. package/src/resources/extensions/gsd/commands-scan.ts +125 -0
  738. package/src/resources/extensions/gsd/commands-session-report.ts +101 -0
  739. package/src/resources/extensions/gsd/commands-ship.ts +219 -0
  740. package/src/resources/extensions/gsd/commands-workflow-templates.ts +129 -2
  741. package/src/resources/extensions/gsd/custom-workflow-engine.ts +85 -60
  742. package/src/resources/extensions/gsd/db-writer.ts +6 -5
  743. package/src/resources/extensions/gsd/debug-session-store.ts +377 -0
  744. package/src/resources/extensions/gsd/definition-loader.ts +7 -0
  745. package/src/resources/extensions/gsd/docs/preferences-reference.md +17 -2
  746. package/src/resources/extensions/gsd/doctor-git-checks.ts +5 -1
  747. package/src/resources/extensions/gsd/doctor-proactive.ts +4 -1
  748. package/src/resources/extensions/gsd/doctor-providers.ts +52 -22
  749. package/src/resources/extensions/gsd/doctor-runtime-checks.ts +23 -4
  750. package/src/resources/extensions/gsd/doctor-types.ts +1 -0
  751. package/src/resources/extensions/gsd/doctor.ts +7 -1
  752. package/src/resources/extensions/gsd/ecosystem/gsd-extension-api.ts +228 -0
  753. package/src/resources/extensions/gsd/ecosystem/loader.ts +201 -0
  754. package/src/resources/extensions/gsd/error-classifier.ts +6 -3
  755. package/src/resources/extensions/gsd/escalation.ts +367 -0
  756. package/src/resources/extensions/gsd/forensics.ts +25 -29
  757. package/src/resources/extensions/gsd/git-service.ts +68 -1
  758. package/src/resources/extensions/gsd/graph-context.ts +212 -0
  759. package/src/resources/extensions/gsd/graph.ts +33 -3
  760. package/src/resources/extensions/gsd/gsd-db.ts +1083 -21
  761. package/src/resources/extensions/gsd/guided-flow.ts +36 -2
  762. package/src/resources/extensions/gsd/health-widget-core.ts +43 -14
  763. package/src/resources/extensions/gsd/health-widget.ts +7 -3
  764. package/src/resources/extensions/gsd/index.ts +18 -2
  765. package/src/resources/extensions/gsd/init-wizard.ts +3 -2
  766. package/src/resources/extensions/gsd/journal.ts +30 -0
  767. package/src/resources/extensions/gsd/md-importer.ts +3 -5
  768. package/src/resources/extensions/gsd/memory-store.ts +31 -62
  769. package/src/resources/extensions/gsd/metrics.ts +27 -0
  770. package/src/resources/extensions/gsd/milestone-validation-gates.ts +13 -14
  771. package/src/resources/extensions/gsd/model-cost-table.ts +3 -1
  772. package/src/resources/extensions/gsd/model-router.ts +15 -1
  773. package/src/resources/extensions/gsd/native-git-bridge.ts +145 -18
  774. package/src/resources/extensions/gsd/notification-widget.ts +25 -43
  775. package/src/resources/extensions/gsd/notifications.ts +6 -0
  776. package/src/resources/extensions/gsd/parallel-orchestrator.ts +40 -1
  777. package/src/resources/extensions/gsd/post-execution-checks.ts +37 -14
  778. package/src/resources/extensions/gsd/pre-execution-checks.ts +98 -8
  779. package/src/resources/extensions/gsd/preferences-models.ts +21 -3
  780. package/src/resources/extensions/gsd/preferences-types.ts +47 -1
  781. package/src/resources/extensions/gsd/preferences-validation.ts +150 -9
  782. package/src/resources/extensions/gsd/preferences.ts +44 -10
  783. package/src/resources/extensions/gsd/prompts/add-tests.md +35 -0
  784. package/src/resources/extensions/gsd/prompts/debug-diagnose.md +25 -0
  785. package/src/resources/extensions/gsd/prompts/debug-session-manager.md +80 -0
  786. package/src/resources/extensions/gsd/prompts/execute-task.md +12 -0
  787. package/src/resources/extensions/gsd/prompts/plan-milestone.md +12 -0
  788. package/src/resources/extensions/gsd/prompts/refine-slice.md +69 -0
  789. package/src/resources/extensions/gsd/prompts/scan.md +79 -0
  790. package/src/resources/extensions/gsd/prompts/workflow-oneshot.md +26 -0
  791. package/src/resources/extensions/gsd/run-manager.ts +53 -19
  792. package/src/resources/extensions/gsd/safety/evidence-collector.ts +15 -31
  793. package/src/resources/extensions/gsd/session-lock.ts +14 -2
  794. package/src/resources/extensions/gsd/slice-parallel-orchestrator.ts +20 -1
  795. package/src/resources/extensions/gsd/state.ts +59 -4
  796. package/src/resources/extensions/gsd/templates/PREFERENCES.md +19 -0
  797. package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +1 -34
  798. package/src/resources/extensions/gsd/tests/artifact-corruption-2630.test.ts +7 -0
  799. package/src/resources/extensions/gsd/tests/artifacts-table-preserved-on-cache-invalidate.test.ts +177 -0
  800. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +49 -31
  801. package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +20 -0
  802. package/src/resources/extensions/gsd/tests/auto-project-root-env.test.ts +7 -3
  803. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +123 -1
  804. package/src/resources/extensions/gsd/tests/auto-retry-mcp-churn-fixes.test.ts +272 -0
  805. package/src/resources/extensions/gsd/tests/auto-warning-noise-regression.test.ts +117 -0
  806. package/src/resources/extensions/gsd/tests/auto-wrapup-inflight-guard.test.ts +39 -0
  807. package/src/resources/extensions/gsd/tests/autocomplete-regressions-1675.test.ts +39 -0
  808. package/src/resources/extensions/gsd/tests/cold-resume-db-reopen.test.ts +6 -2
  809. package/src/resources/extensions/gsd/tests/commands-backlog.test.ts +158 -0
  810. package/src/resources/extensions/gsd/tests/commands-do.test.ts +175 -0
  811. package/src/resources/extensions/gsd/tests/commands-extract-learnings.test.ts +340 -0
  812. package/src/resources/extensions/gsd/tests/commands-pr-branch.test.ts +68 -0
  813. package/src/resources/extensions/gsd/tests/commands-scan.test.ts +351 -0
  814. package/src/resources/extensions/gsd/tests/commands-session-report.test.ts +82 -0
  815. package/src/resources/extensions/gsd/tests/commands-ship.test.ts +71 -0
  816. package/src/resources/extensions/gsd/tests/commands-workflow-custom.test.ts +22 -6
  817. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +2 -2
  818. package/src/resources/extensions/gsd/tests/complete-task.test.ts +2 -2
  819. package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +63 -0
  820. package/src/resources/extensions/gsd/tests/debug-command-handler.test.ts +905 -0
  821. package/src/resources/extensions/gsd/tests/debug-command-lifecycle.integration.test.ts +1229 -0
  822. package/src/resources/extensions/gsd/tests/debug-session-store.test.ts +565 -0
  823. package/src/resources/extensions/gsd/tests/discuss-milestone-structured-questions.test.ts +64 -0
  824. package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +67 -0
  825. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +62 -18
  826. package/src/resources/extensions/gsd/tests/enhanced-verification-integration.test.ts +5 -0
  827. package/src/resources/extensions/gsd/tests/escalation.test.ts +818 -0
  828. package/src/resources/extensions/gsd/tests/extension-bootstrap-isolation.test.ts +154 -0
  829. package/src/resources/extensions/gsd/tests/finalize-timeout-guard.test.ts +39 -19
  830. package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +106 -0
  831. package/src/resources/extensions/gsd/tests/forensics-hook-key-parse.test.ts +74 -0
  832. package/src/resources/extensions/gsd/tests/graph-context.test.ts +337 -0
  833. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +0 -4
  834. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +44 -1
  835. package/src/resources/extensions/gsd/tests/health-widget.test.ts +9 -3
  836. package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +39 -0
  837. package/src/resources/extensions/gsd/tests/integration/doctor-proactive.test.ts +44 -0
  838. package/src/resources/extensions/gsd/tests/integration/doctor-runtime.test.ts +68 -1
  839. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +109 -11
  840. package/src/resources/extensions/gsd/tests/integration/idle-recovery.test.ts +51 -0
  841. package/src/resources/extensions/gsd/tests/integration/test-isolation.ts +53 -0
  842. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +242 -5
  843. package/src/resources/extensions/gsd/tests/md-importer.test.ts +1 -2
  844. package/src/resources/extensions/gsd/tests/memory-store.test.ts +2 -3
  845. package/src/resources/extensions/gsd/tests/milestone-status-tool.test.ts +3 -2
  846. package/src/resources/extensions/gsd/tests/model-cost-table.test.ts +2 -2
  847. package/src/resources/extensions/gsd/tests/model-router.test.ts +1 -1
  848. package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +59 -0
  849. package/src/resources/extensions/gsd/tests/native-git-bridge-exec-fallback.test.ts +140 -0
  850. package/src/resources/extensions/gsd/tests/notification-widget.test.ts +1 -1
  851. package/src/resources/extensions/gsd/tests/plan-slice.test.ts +17 -0
  852. package/src/resources/extensions/gsd/tests/post-exec-retry-bypass.test.ts +79 -1
  853. package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +105 -1
  854. package/src/resources/extensions/gsd/tests/post-unit-state-rebuild.test.ts +2 -1
  855. package/src/resources/extensions/gsd/tests/pre-execution-checks.test.ts +275 -6
  856. package/src/resources/extensions/gsd/tests/pre-execution-pause-wiring.test.ts +40 -1
  857. package/src/resources/extensions/gsd/tests/preferences.test.ts +214 -1
  858. package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +539 -0
  859. package/src/resources/extensions/gsd/tests/projection-regression.test.ts +7 -0
  860. package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +27 -0
  861. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +24 -0
  862. package/src/resources/extensions/gsd/tests/prompt-db.test.ts +1 -1
  863. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +90 -2
  864. package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +68 -1
  865. package/src/resources/extensions/gsd/tests/remote-notification-from-desktop.test.ts +107 -0
  866. package/src/resources/extensions/gsd/tests/requirements.test.ts +9 -0
  867. package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +153 -0
  868. package/src/resources/extensions/gsd/tests/single-writer-invariant.test.ts +180 -0
  869. package/src/resources/extensions/gsd/tests/slice-context-injection.test.ts +16 -4
  870. package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +3 -0
  871. package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +15 -0
  872. package/src/resources/extensions/gsd/tests/summary-render-parity.test.ts +5 -0
  873. package/src/resources/extensions/gsd/tests/token-profile.test.ts +8 -5
  874. package/src/resources/extensions/gsd/tests/uok-audit-unified.test.ts +101 -0
  875. package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +86 -0
  876. package/src/resources/extensions/gsd/tests/uok-execution-graph.test.ts +69 -0
  877. package/src/resources/extensions/gsd/tests/uok-flags.test.ts +69 -0
  878. package/src/resources/extensions/gsd/tests/uok-gate-runner.test.ts +70 -0
  879. package/src/resources/extensions/gsd/tests/uok-gitops-turn-action.test.ts +85 -0
  880. package/src/resources/extensions/gsd/tests/uok-gitops-wiring.test.ts +35 -0
  881. package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +166 -0
  882. package/src/resources/extensions/gsd/tests/uok-model-policy.test.ts +89 -0
  883. package/src/resources/extensions/gsd/tests/uok-plan-v2-wiring.test.ts +167 -0
  884. package/src/resources/extensions/gsd/tests/uok-preferences.test.ts +42 -0
  885. package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +39 -0
  886. package/src/resources/extensions/gsd/tests/workflow-install.test.ts +113 -0
  887. package/src/resources/extensions/gsd/tests/workflow-logger-wiring.test.ts +232 -0
  888. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +2 -2
  889. package/src/resources/extensions/gsd/tests/workflow-plugins.test.ts +310 -0
  890. package/src/resources/extensions/gsd/tests/workflow-projections.test.ts +7 -0
  891. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +8 -2
  892. package/src/resources/extensions/gsd/tests/worktree-journal-events.test.ts +2 -1
  893. package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +77 -2
  894. package/src/resources/extensions/gsd/tools/complete-slice.ts +26 -0
  895. package/src/resources/extensions/gsd/tools/complete-task.ts +87 -0
  896. package/src/resources/extensions/gsd/tools/plan-milestone.ts +42 -8
  897. package/src/resources/extensions/gsd/tools/plan-slice.ts +6 -1
  898. package/src/resources/extensions/gsd/tools/validate-milestone.ts +48 -3
  899. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +3 -11
  900. package/src/resources/extensions/gsd/triage-resolution.ts +2 -7
  901. package/src/resources/extensions/gsd/types.ts +76 -1
  902. package/src/resources/extensions/gsd/unit-ownership.ts +2 -2
  903. package/src/resources/extensions/gsd/unit-runtime.ts +1 -0
  904. package/src/resources/extensions/gsd/uok/audit-toggle.ts +9 -0
  905. package/src/resources/extensions/gsd/uok/audit.ts +51 -0
  906. package/src/resources/extensions/gsd/uok/contracts.ts +136 -0
  907. package/src/resources/extensions/gsd/uok/execution-graph.ts +241 -0
  908. package/src/resources/extensions/gsd/uok/flags.ts +45 -0
  909. package/src/resources/extensions/gsd/uok/gate-runner.ts +146 -0
  910. package/src/resources/extensions/gsd/uok/gitops.ts +75 -0
  911. package/src/resources/extensions/gsd/uok/kernel.ts +117 -0
  912. package/src/resources/extensions/gsd/uok/loop-adapter.ts +162 -0
  913. package/src/resources/extensions/gsd/uok/model-policy.ts +112 -0
  914. package/src/resources/extensions/gsd/uok/plan-v2.ts +156 -0
  915. package/src/resources/extensions/gsd/workflow-dispatch.ts +106 -0
  916. package/src/resources/extensions/gsd/workflow-install.ts +423 -0
  917. package/src/resources/extensions/gsd/workflow-logger.ts +27 -1
  918. package/src/resources/extensions/gsd/workflow-manifest.ts +17 -104
  919. package/src/resources/extensions/gsd/workflow-mcp.ts +1 -6
  920. package/src/resources/extensions/gsd/workflow-migration.ts +21 -29
  921. package/src/resources/extensions/gsd/workflow-plugins.ts +403 -0
  922. package/src/resources/extensions/gsd/workflow-projections.ts +8 -1
  923. package/src/resources/extensions/gsd/workflow-reconcile.ts +15 -15
  924. package/src/resources/extensions/gsd/workflow-templates/accessibility-audit.md +88 -0
  925. package/src/resources/extensions/gsd/workflow-templates/api-breaking-change.md +117 -0
  926. package/src/resources/extensions/gsd/workflow-templates/bugfix.md +1 -0
  927. package/src/resources/extensions/gsd/workflow-templates/changelog-gen.md +82 -0
  928. package/src/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +144 -0
  929. package/src/resources/extensions/gsd/workflow-templates/dead-code.md +81 -0
  930. package/src/resources/extensions/gsd/workflow-templates/dep-upgrade.md +1 -0
  931. package/src/resources/extensions/gsd/workflow-templates/docs-sync.yaml +76 -0
  932. package/src/resources/extensions/gsd/workflow-templates/env-audit.yaml +88 -0
  933. package/src/resources/extensions/gsd/workflow-templates/full-project.md +1 -0
  934. package/src/resources/extensions/gsd/workflow-templates/hotfix.md +1 -0
  935. package/src/resources/extensions/gsd/workflow-templates/issue-triage.md +84 -0
  936. package/src/resources/extensions/gsd/workflow-templates/observability-setup.md +133 -0
  937. package/src/resources/extensions/gsd/workflow-templates/onboarding-check.md +74 -0
  938. package/src/resources/extensions/gsd/workflow-templates/performance-audit.md +125 -0
  939. package/src/resources/extensions/gsd/workflow-templates/pr-review.md +67 -0
  940. package/src/resources/extensions/gsd/workflow-templates/pr-triage.md +83 -0
  941. package/src/resources/extensions/gsd/workflow-templates/refactor.md +1 -0
  942. package/src/resources/extensions/gsd/workflow-templates/registry.json +184 -0
  943. package/src/resources/extensions/gsd/workflow-templates/release.md +118 -0
  944. package/src/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +99 -0
  945. package/src/resources/extensions/gsd/workflow-templates/security-audit.md +1 -0
  946. package/src/resources/extensions/gsd/workflow-templates/small-feature.md +1 -0
  947. package/src/resources/extensions/gsd/workflow-templates/spike.md +1 -0
  948. package/src/resources/extensions/gsd/workflow-templates/test-backfill.yaml +73 -0
  949. package/src/resources/extensions/gsd/workflow-templates.ts +7 -0
  950. package/src/resources/extensions/gsd/workspace-index.ts +9 -4
  951. package/src/resources/extensions/gsd/worktree-resolver.ts +47 -1
  952. package/src/resources/extensions/remote-questions/commands.ts +480 -0
  953. package/src/resources/extensions/remote-questions/manager.ts +49 -4
  954. package/src/resources/extensions/remote-questions/telegram-adapter.ts +86 -4
  955. package/src/resources/extensions/remote-questions/tests/command-polling.test.ts +246 -0
  956. package/src/resources/extensions/remote-questions/tests/remote-answer-normalization.test.ts +92 -0
  957. package/src/resources/extensions/remote-questions/tests/telegram-commands.test.ts +267 -0
  958. package/src/resources/extensions/shared/interview-ui.ts +195 -1
  959. package/src/resources/extensions/shared/layout-utils.ts +26 -0
  960. package/src/resources/extensions/shared/rtk-shared.ts +58 -0
  961. package/src/resources/extensions/shared/rtk.ts +12 -52
  962. package/src/resources/extensions/shared/tests/interview-preview.test.ts +177 -0
  963. package/src/resources/extensions/shared/tests/preview-layout.test.ts +120 -0
  964. package/src/resources/extensions/ttsr/ttsr-manager.ts +10 -5
  965. package/src/resources/skills/create-workflow/SKILL.md +33 -6
  966. package/dist/web/standalone/.next/static/chunks/2826.dd3dc8bbd3025fa5.js +0 -9
  967. package/dist/web/standalone/.next/static/chunks/app/page-7115e62689b5fd84.js +0 -1
  968. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
  969. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
  970. package/dist/web/standalone/.next/static/css/f6e8833d46e738d8.css +0 -1
  971. package/packages/native/dist/ps/types.d.ts +0 -5
  972. package/packages/native/dist/ps/types.js +0 -2
  973. package/packages/native/src/ps/types.ts +0 -5
  974. package/packages/pi-ai/dist/models.custom.d.ts.map +0 -1
  975. package/packages/pi-ai/dist/models.custom.js.map +0 -1
  976. package/packages/pi-ai/dist/models.generated.js +0 -14343
  977. package/packages/pi-ai/dist/models.generated.js.map +0 -1
  978. package/packages/pi-ai/node_modules/@smithy/node-http-handler/LICENSE +0 -201
  979. package/packages/pi-ai/node_modules/@smithy/node-http-handler/README.md +0 -9
  980. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-cjs/index.js +0 -762
  981. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js +0 -19
  982. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/constants.js +0 -1
  983. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js +0 -9
  984. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/index.js +0 -3
  985. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +0 -230
  986. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +0 -87
  987. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +0 -32
  988. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +0 -169
  989. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js +0 -21
  990. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/server.mock.js +0 -88
  991. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js +0 -36
  992. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js +0 -21
  993. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js +0 -22
  994. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js +0 -23
  995. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
  996. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
  997. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js +0 -21
  998. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/timing.js +0 -4
  999. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js +0 -63
  1000. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts +0 -10
  1001. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts +0 -5
  1002. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts +0 -4
  1003. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +0 -3
  1004. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts +0 -46
  1005. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +0 -24
  1006. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +0 -12
  1007. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +0 -63
  1008. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts +0 -13
  1009. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts +0 -12
  1010. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts +0 -2
  1011. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts +0 -6
  1012. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts +0 -6
  1013. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts +0 -2
  1014. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
  1015. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -6
  1016. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts +0 -13
  1017. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts +0 -8
  1018. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts +0 -10
  1019. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts +0 -5
  1020. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts +0 -4
  1021. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts +0 -3
  1022. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts +0 -46
  1023. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts +0 -24
  1024. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts +0 -12
  1025. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts +0 -63
  1026. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts +0 -13
  1027. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts +0 -12
  1028. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts +0 -2
  1029. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts +0 -6
  1030. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts +0 -6
  1031. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts +0 -2
  1032. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts +0 -5
  1033. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts +0 -6
  1034. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts +0 -13
  1035. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts +0 -8
  1036. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts +0 -12
  1037. package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts +0 -12
  1038. package/packages/pi-ai/node_modules/@smithy/node-http-handler/package.json +0 -68
  1039. package/packages/pi-ai/oauth.d.ts +0 -1
  1040. package/packages/pi-ai/oauth.js +0 -1
  1041. package/packages/pi-ai/src/models.generated.ts +0 -14345
  1042. /package/dist/web/standalone/.next/static/{JpjdI2QtmIkQr4xz6gbhM → jaWw1Jh0TYayjbfOrFe8D}/_buildManifest.js +0 -0
  1043. /package/dist/web/standalone/.next/static/{JpjdI2QtmIkQr4xz6gbhM → jaWw1Jh0TYayjbfOrFe8D}/_ssgManifest.js +0 -0
@@ -0,0 +1,4289 @@
1
+ // This file is auto-generated by scripts/generate-models.ts
2
+ // Do not edit manually - run 'npm run generate-models' to update
3
+ export const OPENROUTER_MODELS = {
4
+ "ai21/jamba-large-1.7": {
5
+ id: "ai21/jamba-large-1.7",
6
+ name: "AI21: Jamba Large 1.7",
7
+ api: "openai-completions",
8
+ provider: "openrouter",
9
+ baseUrl: "https://openrouter.ai/api/v1",
10
+ reasoning: false,
11
+ input: ["text"],
12
+ cost: {
13
+ input: 2,
14
+ output: 8,
15
+ cacheRead: 0,
16
+ cacheWrite: 0,
17
+ },
18
+ contextWindow: 256000,
19
+ maxTokens: 4096,
20
+ },
21
+ "alibaba/tongyi-deepresearch-30b-a3b": {
22
+ id: "alibaba/tongyi-deepresearch-30b-a3b",
23
+ name: "Tongyi DeepResearch 30B A3B",
24
+ api: "openai-completions",
25
+ provider: "openrouter",
26
+ baseUrl: "https://openrouter.ai/api/v1",
27
+ reasoning: true,
28
+ input: ["text"],
29
+ cost: {
30
+ input: 0.09,
31
+ output: 0.44999999999999996,
32
+ cacheRead: 0.09,
33
+ cacheWrite: 0,
34
+ },
35
+ contextWindow: 131072,
36
+ maxTokens: 131072,
37
+ },
38
+ "allenai/olmo-3.1-32b-instruct": {
39
+ id: "allenai/olmo-3.1-32b-instruct",
40
+ name: "AllenAI: Olmo 3.1 32B Instruct",
41
+ api: "openai-completions",
42
+ provider: "openrouter",
43
+ baseUrl: "https://openrouter.ai/api/v1",
44
+ reasoning: false,
45
+ input: ["text"],
46
+ cost: {
47
+ input: 0.19999999999999998,
48
+ output: 0.6,
49
+ cacheRead: 0,
50
+ cacheWrite: 0,
51
+ },
52
+ contextWindow: 65536,
53
+ maxTokens: 4096,
54
+ },
55
+ "amazon/nova-2-lite-v1": {
56
+ id: "amazon/nova-2-lite-v1",
57
+ name: "Amazon: Nova 2 Lite",
58
+ api: "openai-completions",
59
+ provider: "openrouter",
60
+ baseUrl: "https://openrouter.ai/api/v1",
61
+ reasoning: true,
62
+ input: ["text", "image"],
63
+ cost: {
64
+ input: 0.3,
65
+ output: 2.5,
66
+ cacheRead: 0,
67
+ cacheWrite: 0,
68
+ },
69
+ contextWindow: 1000000,
70
+ maxTokens: 65535,
71
+ },
72
+ "amazon/nova-lite-v1": {
73
+ id: "amazon/nova-lite-v1",
74
+ name: "Amazon: Nova Lite 1.0",
75
+ api: "openai-completions",
76
+ provider: "openrouter",
77
+ baseUrl: "https://openrouter.ai/api/v1",
78
+ reasoning: false,
79
+ input: ["text", "image"],
80
+ cost: {
81
+ input: 0.06,
82
+ output: 0.24,
83
+ cacheRead: 0,
84
+ cacheWrite: 0,
85
+ },
86
+ contextWindow: 300000,
87
+ maxTokens: 5120,
88
+ },
89
+ "amazon/nova-micro-v1": {
90
+ id: "amazon/nova-micro-v1",
91
+ name: "Amazon: Nova Micro 1.0",
92
+ api: "openai-completions",
93
+ provider: "openrouter",
94
+ baseUrl: "https://openrouter.ai/api/v1",
95
+ reasoning: false,
96
+ input: ["text"],
97
+ cost: {
98
+ input: 0.035,
99
+ output: 0.14,
100
+ cacheRead: 0,
101
+ cacheWrite: 0,
102
+ },
103
+ contextWindow: 128000,
104
+ maxTokens: 5120,
105
+ },
106
+ "amazon/nova-premier-v1": {
107
+ id: "amazon/nova-premier-v1",
108
+ name: "Amazon: Nova Premier 1.0",
109
+ api: "openai-completions",
110
+ provider: "openrouter",
111
+ baseUrl: "https://openrouter.ai/api/v1",
112
+ reasoning: false,
113
+ input: ["text", "image"],
114
+ cost: {
115
+ input: 2.5,
116
+ output: 12.5,
117
+ cacheRead: 0.625,
118
+ cacheWrite: 0,
119
+ },
120
+ contextWindow: 1000000,
121
+ maxTokens: 32000,
122
+ },
123
+ "amazon/nova-pro-v1": {
124
+ id: "amazon/nova-pro-v1",
125
+ name: "Amazon: Nova Pro 1.0",
126
+ api: "openai-completions",
127
+ provider: "openrouter",
128
+ baseUrl: "https://openrouter.ai/api/v1",
129
+ reasoning: false,
130
+ input: ["text", "image"],
131
+ cost: {
132
+ input: 0.7999999999999999,
133
+ output: 3.1999999999999997,
134
+ cacheRead: 0,
135
+ cacheWrite: 0,
136
+ },
137
+ contextWindow: 300000,
138
+ maxTokens: 5120,
139
+ },
140
+ "anthropic/claude-3-haiku": {
141
+ id: "anthropic/claude-3-haiku",
142
+ name: "Anthropic: Claude 3 Haiku",
143
+ api: "openai-completions",
144
+ provider: "openrouter",
145
+ baseUrl: "https://openrouter.ai/api/v1",
146
+ reasoning: false,
147
+ input: ["text", "image"],
148
+ cost: {
149
+ input: 0.25,
150
+ output: 1.25,
151
+ cacheRead: 0.03,
152
+ cacheWrite: 0.3,
153
+ },
154
+ contextWindow: 200000,
155
+ maxTokens: 4096,
156
+ },
157
+ "anthropic/claude-3.5-haiku": {
158
+ id: "anthropic/claude-3.5-haiku",
159
+ name: "Anthropic: Claude 3.5 Haiku",
160
+ api: "openai-completions",
161
+ provider: "openrouter",
162
+ baseUrl: "https://openrouter.ai/api/v1",
163
+ reasoning: false,
164
+ input: ["text", "image"],
165
+ cost: {
166
+ input: 0.7999999999999999,
167
+ output: 4,
168
+ cacheRead: 0.08,
169
+ cacheWrite: 1,
170
+ },
171
+ contextWindow: 200000,
172
+ maxTokens: 8192,
173
+ },
174
+ "anthropic/claude-3.7-sonnet": {
175
+ id: "anthropic/claude-3.7-sonnet",
176
+ name: "Anthropic: Claude 3.7 Sonnet",
177
+ api: "openai-completions",
178
+ provider: "openrouter",
179
+ baseUrl: "https://openrouter.ai/api/v1",
180
+ reasoning: true,
181
+ input: ["text", "image"],
182
+ cost: {
183
+ input: 3,
184
+ output: 15,
185
+ cacheRead: 0.3,
186
+ cacheWrite: 3.75,
187
+ },
188
+ contextWindow: 200000,
189
+ maxTokens: 128000,
190
+ },
191
+ "anthropic/claude-3.7-sonnet:thinking": {
192
+ id: "anthropic/claude-3.7-sonnet:thinking",
193
+ name: "Anthropic: Claude 3.7 Sonnet (thinking)",
194
+ api: "openai-completions",
195
+ provider: "openrouter",
196
+ baseUrl: "https://openrouter.ai/api/v1",
197
+ reasoning: true,
198
+ input: ["text", "image"],
199
+ cost: {
200
+ input: 3,
201
+ output: 15,
202
+ cacheRead: 0.3,
203
+ cacheWrite: 3.75,
204
+ },
205
+ contextWindow: 200000,
206
+ maxTokens: 64000,
207
+ },
208
+ "anthropic/claude-haiku-4.5": {
209
+ id: "anthropic/claude-haiku-4.5",
210
+ name: "Anthropic: Claude Haiku 4.5",
211
+ api: "openai-completions",
212
+ provider: "openrouter",
213
+ baseUrl: "https://openrouter.ai/api/v1",
214
+ reasoning: true,
215
+ input: ["text", "image"],
216
+ cost: {
217
+ input: 1,
218
+ output: 5,
219
+ cacheRead: 0.09999999999999999,
220
+ cacheWrite: 1.25,
221
+ },
222
+ contextWindow: 200000,
223
+ maxTokens: 64000,
224
+ },
225
+ "anthropic/claude-opus-4": {
226
+ id: "anthropic/claude-opus-4",
227
+ name: "Anthropic: Claude Opus 4",
228
+ api: "openai-completions",
229
+ provider: "openrouter",
230
+ baseUrl: "https://openrouter.ai/api/v1",
231
+ reasoning: true,
232
+ input: ["text", "image"],
233
+ cost: {
234
+ input: 15,
235
+ output: 75,
236
+ cacheRead: 1.5,
237
+ cacheWrite: 18.75,
238
+ },
239
+ contextWindow: 200000,
240
+ maxTokens: 32000,
241
+ },
242
+ "anthropic/claude-opus-4.1": {
243
+ id: "anthropic/claude-opus-4.1",
244
+ name: "Anthropic: Claude Opus 4.1",
245
+ api: "openai-completions",
246
+ provider: "openrouter",
247
+ baseUrl: "https://openrouter.ai/api/v1",
248
+ reasoning: true,
249
+ input: ["text", "image"],
250
+ cost: {
251
+ input: 15,
252
+ output: 75,
253
+ cacheRead: 1.5,
254
+ cacheWrite: 18.75,
255
+ },
256
+ contextWindow: 200000,
257
+ maxTokens: 32000,
258
+ },
259
+ "anthropic/claude-opus-4.5": {
260
+ id: "anthropic/claude-opus-4.5",
261
+ name: "Anthropic: Claude Opus 4.5",
262
+ api: "openai-completions",
263
+ provider: "openrouter",
264
+ baseUrl: "https://openrouter.ai/api/v1",
265
+ reasoning: true,
266
+ input: ["text", "image"],
267
+ cost: {
268
+ input: 5,
269
+ output: 25,
270
+ cacheRead: 0.5,
271
+ cacheWrite: 6.25,
272
+ },
273
+ contextWindow: 200000,
274
+ maxTokens: 64000,
275
+ },
276
+ "anthropic/claude-opus-4.6": {
277
+ id: "anthropic/claude-opus-4.6",
278
+ name: "Anthropic: Claude Opus 4.6",
279
+ api: "openai-completions",
280
+ provider: "openrouter",
281
+ baseUrl: "https://openrouter.ai/api/v1",
282
+ reasoning: true,
283
+ input: ["text", "image"],
284
+ cost: {
285
+ input: 5,
286
+ output: 25,
287
+ cacheRead: 0.5,
288
+ cacheWrite: 6.25,
289
+ },
290
+ contextWindow: 1000000,
291
+ maxTokens: 128000,
292
+ },
293
+ "anthropic/claude-opus-4.7": {
294
+ id: "anthropic/claude-opus-4.7",
295
+ name: "Anthropic: Claude Opus 4.7",
296
+ api: "openai-completions",
297
+ provider: "openrouter",
298
+ baseUrl: "https://openrouter.ai/api/v1",
299
+ reasoning: true,
300
+ input: ["text", "image"],
301
+ cost: {
302
+ input: 5,
303
+ output: 25,
304
+ cacheRead: 0.5,
305
+ cacheWrite: 6.25,
306
+ },
307
+ contextWindow: 1000000,
308
+ maxTokens: 128000,
309
+ },
310
+ "anthropic/claude-opus-4.6-fast": {
311
+ id: "anthropic/claude-opus-4.6-fast",
312
+ name: "Anthropic: Claude Opus 4.6 (Fast)",
313
+ api: "openai-completions",
314
+ provider: "openrouter",
315
+ baseUrl: "https://openrouter.ai/api/v1",
316
+ reasoning: true,
317
+ input: ["text", "image"],
318
+ cost: {
319
+ input: 30,
320
+ output: 150,
321
+ cacheRead: 3,
322
+ cacheWrite: 37.5,
323
+ },
324
+ contextWindow: 1000000,
325
+ maxTokens: 128000,
326
+ },
327
+ "anthropic/claude-sonnet-4": {
328
+ id: "anthropic/claude-sonnet-4",
329
+ name: "Anthropic: Claude Sonnet 4",
330
+ api: "openai-completions",
331
+ provider: "openrouter",
332
+ baseUrl: "https://openrouter.ai/api/v1",
333
+ reasoning: true,
334
+ input: ["text", "image"],
335
+ cost: {
336
+ input: 3,
337
+ output: 15,
338
+ cacheRead: 0.3,
339
+ cacheWrite: 3.75,
340
+ },
341
+ contextWindow: 1000000,
342
+ maxTokens: 64000,
343
+ },
344
+ "anthropic/claude-sonnet-4.5": {
345
+ id: "anthropic/claude-sonnet-4.5",
346
+ name: "Anthropic: Claude Sonnet 4.5",
347
+ api: "openai-completions",
348
+ provider: "openrouter",
349
+ baseUrl: "https://openrouter.ai/api/v1",
350
+ reasoning: true,
351
+ input: ["text", "image"],
352
+ cost: {
353
+ input: 3,
354
+ output: 15,
355
+ cacheRead: 0.3,
356
+ cacheWrite: 3.75,
357
+ },
358
+ contextWindow: 1000000,
359
+ maxTokens: 64000,
360
+ },
361
+ "anthropic/claude-sonnet-4.6": {
362
+ id: "anthropic/claude-sonnet-4.6",
363
+ name: "Anthropic: Claude Sonnet 4.6",
364
+ api: "openai-completions",
365
+ provider: "openrouter",
366
+ baseUrl: "https://openrouter.ai/api/v1",
367
+ reasoning: true,
368
+ input: ["text", "image"],
369
+ cost: {
370
+ input: 3,
371
+ output: 15,
372
+ cacheRead: 0.3,
373
+ cacheWrite: 3.75,
374
+ },
375
+ contextWindow: 1000000,
376
+ maxTokens: 128000,
377
+ },
378
+ "arcee-ai/trinity-large-preview:free": {
379
+ id: "arcee-ai/trinity-large-preview:free",
380
+ name: "Arcee AI: Trinity Large Preview (free)",
381
+ api: "openai-completions",
382
+ provider: "openrouter",
383
+ baseUrl: "https://openrouter.ai/api/v1",
384
+ reasoning: false,
385
+ input: ["text"],
386
+ cost: {
387
+ input: 0,
388
+ output: 0,
389
+ cacheRead: 0,
390
+ cacheWrite: 0,
391
+ },
392
+ contextWindow: 131000,
393
+ maxTokens: 4096,
394
+ },
395
+ "arcee-ai/trinity-large-thinking": {
396
+ id: "arcee-ai/trinity-large-thinking",
397
+ name: "Arcee AI: Trinity Large Thinking",
398
+ api: "openai-completions",
399
+ provider: "openrouter",
400
+ baseUrl: "https://openrouter.ai/api/v1",
401
+ reasoning: true,
402
+ input: ["text"],
403
+ cost: {
404
+ input: 0.22,
405
+ output: 0.85,
406
+ cacheRead: 0,
407
+ cacheWrite: 0,
408
+ },
409
+ contextWindow: 262144,
410
+ maxTokens: 262144,
411
+ },
412
+ "arcee-ai/trinity-mini": {
413
+ id: "arcee-ai/trinity-mini",
414
+ name: "Arcee AI: Trinity Mini",
415
+ api: "openai-completions",
416
+ provider: "openrouter",
417
+ baseUrl: "https://openrouter.ai/api/v1",
418
+ reasoning: true,
419
+ input: ["text"],
420
+ cost: {
421
+ input: 0.045,
422
+ output: 0.15,
423
+ cacheRead: 0,
424
+ cacheWrite: 0,
425
+ },
426
+ contextWindow: 131072,
427
+ maxTokens: 131072,
428
+ },
429
+ "arcee-ai/virtuoso-large": {
430
+ id: "arcee-ai/virtuoso-large",
431
+ name: "Arcee AI: Virtuoso Large",
432
+ api: "openai-completions",
433
+ provider: "openrouter",
434
+ baseUrl: "https://openrouter.ai/api/v1",
435
+ reasoning: false,
436
+ input: ["text"],
437
+ cost: {
438
+ input: 0.75,
439
+ output: 1.2,
440
+ cacheRead: 0,
441
+ cacheWrite: 0,
442
+ },
443
+ contextWindow: 131072,
444
+ maxTokens: 64000,
445
+ },
446
+ "auto": {
447
+ id: "auto",
448
+ name: "Auto",
449
+ api: "openai-completions",
450
+ provider: "openrouter",
451
+ baseUrl: "https://openrouter.ai/api/v1",
452
+ reasoning: true,
453
+ input: ["text", "image"],
454
+ cost: {
455
+ input: 0,
456
+ output: 0,
457
+ cacheRead: 0,
458
+ cacheWrite: 0,
459
+ },
460
+ contextWindow: 2000000,
461
+ maxTokens: 30000,
462
+ },
463
+ "baidu/ernie-4.5-21b-a3b": {
464
+ id: "baidu/ernie-4.5-21b-a3b",
465
+ name: "Baidu: ERNIE 4.5 21B A3B",
466
+ api: "openai-completions",
467
+ provider: "openrouter",
468
+ baseUrl: "https://openrouter.ai/api/v1",
469
+ reasoning: false,
470
+ input: ["text"],
471
+ cost: {
472
+ input: 0.07,
473
+ output: 0.28,
474
+ cacheRead: 0,
475
+ cacheWrite: 0,
476
+ },
477
+ contextWindow: 120000,
478
+ maxTokens: 8000,
479
+ },
480
+ "baidu/ernie-4.5-vl-28b-a3b": {
481
+ id: "baidu/ernie-4.5-vl-28b-a3b",
482
+ name: "Baidu: ERNIE 4.5 VL 28B A3B",
483
+ api: "openai-completions",
484
+ provider: "openrouter",
485
+ baseUrl: "https://openrouter.ai/api/v1",
486
+ reasoning: true,
487
+ input: ["text", "image"],
488
+ cost: {
489
+ input: 0.14,
490
+ output: 0.56,
491
+ cacheRead: 0,
492
+ cacheWrite: 0,
493
+ },
494
+ contextWindow: 30000,
495
+ maxTokens: 8000,
496
+ },
497
+ "bytedance-seed/seed-1.6": {
498
+ id: "bytedance-seed/seed-1.6",
499
+ name: "ByteDance Seed: Seed 1.6",
500
+ api: "openai-completions",
501
+ provider: "openrouter",
502
+ baseUrl: "https://openrouter.ai/api/v1",
503
+ reasoning: true,
504
+ input: ["text", "image"],
505
+ cost: {
506
+ input: 0.25,
507
+ output: 2,
508
+ cacheRead: 0,
509
+ cacheWrite: 0,
510
+ },
511
+ contextWindow: 262144,
512
+ maxTokens: 32768,
513
+ },
514
+ "bytedance-seed/seed-1.6-flash": {
515
+ id: "bytedance-seed/seed-1.6-flash",
516
+ name: "ByteDance Seed: Seed 1.6 Flash",
517
+ api: "openai-completions",
518
+ provider: "openrouter",
519
+ baseUrl: "https://openrouter.ai/api/v1",
520
+ reasoning: true,
521
+ input: ["text", "image"],
522
+ cost: {
523
+ input: 0.075,
524
+ output: 0.3,
525
+ cacheRead: 0,
526
+ cacheWrite: 0,
527
+ },
528
+ contextWindow: 262144,
529
+ maxTokens: 32768,
530
+ },
531
+ "bytedance-seed/seed-2.0-lite": {
532
+ id: "bytedance-seed/seed-2.0-lite",
533
+ name: "ByteDance Seed: Seed-2.0-Lite",
534
+ api: "openai-completions",
535
+ provider: "openrouter",
536
+ baseUrl: "https://openrouter.ai/api/v1",
537
+ reasoning: true,
538
+ input: ["text", "image"],
539
+ cost: {
540
+ input: 0.25,
541
+ output: 2,
542
+ cacheRead: 0,
543
+ cacheWrite: 0,
544
+ },
545
+ contextWindow: 262144,
546
+ maxTokens: 131072,
547
+ },
548
+ "bytedance-seed/seed-2.0-mini": {
549
+ id: "bytedance-seed/seed-2.0-mini",
550
+ name: "ByteDance Seed: Seed-2.0-Mini",
551
+ api: "openai-completions",
552
+ provider: "openrouter",
553
+ baseUrl: "https://openrouter.ai/api/v1",
554
+ reasoning: true,
555
+ input: ["text", "image"],
556
+ cost: {
557
+ input: 0.09999999999999999,
558
+ output: 0.39999999999999997,
559
+ cacheRead: 0,
560
+ cacheWrite: 0,
561
+ },
562
+ contextWindow: 262144,
563
+ maxTokens: 131072,
564
+ },
565
+ "cohere/command-r-08-2024": {
566
+ id: "cohere/command-r-08-2024",
567
+ name: "Cohere: Command R (08-2024)",
568
+ api: "openai-completions",
569
+ provider: "openrouter",
570
+ baseUrl: "https://openrouter.ai/api/v1",
571
+ reasoning: false,
572
+ input: ["text"],
573
+ cost: {
574
+ input: 0.15,
575
+ output: 0.6,
576
+ cacheRead: 0,
577
+ cacheWrite: 0,
578
+ },
579
+ contextWindow: 128000,
580
+ maxTokens: 4000,
581
+ },
582
+ "cohere/command-r-plus-08-2024": {
583
+ id: "cohere/command-r-plus-08-2024",
584
+ name: "Cohere: Command R+ (08-2024)",
585
+ api: "openai-completions",
586
+ provider: "openrouter",
587
+ baseUrl: "https://openrouter.ai/api/v1",
588
+ reasoning: false,
589
+ input: ["text"],
590
+ cost: {
591
+ input: 2.5,
592
+ output: 10,
593
+ cacheRead: 0,
594
+ cacheWrite: 0,
595
+ },
596
+ contextWindow: 128000,
597
+ maxTokens: 4000,
598
+ },
599
+ "deepseek/deepseek-chat": {
600
+ id: "deepseek/deepseek-chat",
601
+ name: "DeepSeek: DeepSeek V3",
602
+ api: "openai-completions",
603
+ provider: "openrouter",
604
+ baseUrl: "https://openrouter.ai/api/v1",
605
+ reasoning: false,
606
+ input: ["text"],
607
+ cost: {
608
+ input: 0.32,
609
+ output: 0.8899999999999999,
610
+ cacheRead: 0,
611
+ cacheWrite: 0,
612
+ },
613
+ contextWindow: 163840,
614
+ maxTokens: 163840,
615
+ },
616
+ "deepseek/deepseek-chat-v3-0324": {
617
+ id: "deepseek/deepseek-chat-v3-0324",
618
+ name: "DeepSeek: DeepSeek V3 0324",
619
+ api: "openai-completions",
620
+ provider: "openrouter",
621
+ baseUrl: "https://openrouter.ai/api/v1",
622
+ reasoning: true,
623
+ input: ["text"],
624
+ cost: {
625
+ input: 0.19999999999999998,
626
+ output: 0.77,
627
+ cacheRead: 0.135,
628
+ cacheWrite: 0,
629
+ },
630
+ contextWindow: 163840,
631
+ maxTokens: 4096,
632
+ },
633
+ "deepseek/deepseek-chat-v3.1": {
634
+ id: "deepseek/deepseek-chat-v3.1",
635
+ name: "DeepSeek: DeepSeek V3.1",
636
+ api: "openai-completions",
637
+ provider: "openrouter",
638
+ baseUrl: "https://openrouter.ai/api/v1",
639
+ reasoning: true,
640
+ input: ["text"],
641
+ cost: {
642
+ input: 0.15,
643
+ output: 0.75,
644
+ cacheRead: 0,
645
+ cacheWrite: 0,
646
+ },
647
+ contextWindow: 32768,
648
+ maxTokens: 7168,
649
+ },
650
+ "deepseek/deepseek-r1": {
651
+ id: "deepseek/deepseek-r1",
652
+ name: "DeepSeek: R1",
653
+ api: "openai-completions",
654
+ provider: "openrouter",
655
+ baseUrl: "https://openrouter.ai/api/v1",
656
+ reasoning: true,
657
+ input: ["text"],
658
+ cost: {
659
+ input: 0.7,
660
+ output: 2.5,
661
+ cacheRead: 0,
662
+ cacheWrite: 0,
663
+ },
664
+ contextWindow: 64000,
665
+ maxTokens: 16000,
666
+ },
667
+ "deepseek/deepseek-r1-0528": {
668
+ id: "deepseek/deepseek-r1-0528",
669
+ name: "DeepSeek: R1 0528",
670
+ api: "openai-completions",
671
+ provider: "openrouter",
672
+ baseUrl: "https://openrouter.ai/api/v1",
673
+ reasoning: true,
674
+ input: ["text"],
675
+ cost: {
676
+ input: 0.5,
677
+ output: 2.1500000000000004,
678
+ cacheRead: 0.35,
679
+ cacheWrite: 0,
680
+ },
681
+ contextWindow: 163840,
682
+ maxTokens: 4096,
683
+ },
684
+ "deepseek/deepseek-v3.1-terminus": {
685
+ id: "deepseek/deepseek-v3.1-terminus",
686
+ name: "DeepSeek: DeepSeek V3.1 Terminus",
687
+ api: "openai-completions",
688
+ provider: "openrouter",
689
+ baseUrl: "https://openrouter.ai/api/v1",
690
+ reasoning: true,
691
+ input: ["text"],
692
+ cost: {
693
+ input: 0.21,
694
+ output: 0.7899999999999999,
695
+ cacheRead: 0.1300000002,
696
+ cacheWrite: 0,
697
+ },
698
+ contextWindow: 163840,
699
+ maxTokens: 4096,
700
+ },
701
+ "deepseek/deepseek-v3.2": {
702
+ id: "deepseek/deepseek-v3.2",
703
+ name: "DeepSeek: DeepSeek V3.2",
704
+ api: "openai-completions",
705
+ provider: "openrouter",
706
+ baseUrl: "https://openrouter.ai/api/v1",
707
+ reasoning: true,
708
+ input: ["text"],
709
+ cost: {
710
+ input: 0.26,
711
+ output: 0.38,
712
+ cacheRead: 0.13,
713
+ cacheWrite: 0,
714
+ },
715
+ contextWindow: 163840,
716
+ maxTokens: 4096,
717
+ },
718
+ "deepseek/deepseek-v3.2-exp": {
719
+ id: "deepseek/deepseek-v3.2-exp",
720
+ name: "DeepSeek: DeepSeek V3.2 Exp",
721
+ api: "openai-completions",
722
+ provider: "openrouter",
723
+ baseUrl: "https://openrouter.ai/api/v1",
724
+ reasoning: true,
725
+ input: ["text"],
726
+ cost: {
727
+ input: 0.27,
728
+ output: 0.41,
729
+ cacheRead: 0,
730
+ cacheWrite: 0,
731
+ },
732
+ contextWindow: 163840,
733
+ maxTokens: 65536,
734
+ },
735
+ "essentialai/rnj-1-instruct": {
736
+ id: "essentialai/rnj-1-instruct",
737
+ name: "EssentialAI: Rnj 1 Instruct",
738
+ api: "openai-completions",
739
+ provider: "openrouter",
740
+ baseUrl: "https://openrouter.ai/api/v1",
741
+ reasoning: false,
742
+ input: ["text"],
743
+ cost: {
744
+ input: 0.15,
745
+ output: 0.15,
746
+ cacheRead: 0,
747
+ cacheWrite: 0,
748
+ },
749
+ contextWindow: 32768,
750
+ maxTokens: 4096,
751
+ },
752
+ "google/gemini-2.0-flash-001": {
753
+ id: "google/gemini-2.0-flash-001",
754
+ name: "Google: Gemini 2.0 Flash",
755
+ api: "openai-completions",
756
+ provider: "openrouter",
757
+ baseUrl: "https://openrouter.ai/api/v1",
758
+ reasoning: false,
759
+ input: ["text", "image"],
760
+ cost: {
761
+ input: 0.09999999999999999,
762
+ output: 0.39999999999999997,
763
+ cacheRead: 0.024999999999999998,
764
+ cacheWrite: 0.08333333333333334,
765
+ },
766
+ contextWindow: 1048576,
767
+ maxTokens: 8192,
768
+ },
769
+ "google/gemini-2.0-flash-lite-001": {
770
+ id: "google/gemini-2.0-flash-lite-001",
771
+ name: "Google: Gemini 2.0 Flash Lite",
772
+ api: "openai-completions",
773
+ provider: "openrouter",
774
+ baseUrl: "https://openrouter.ai/api/v1",
775
+ reasoning: false,
776
+ input: ["text", "image"],
777
+ cost: {
778
+ input: 0.075,
779
+ output: 0.3,
780
+ cacheRead: 0,
781
+ cacheWrite: 0,
782
+ },
783
+ contextWindow: 1048576,
784
+ maxTokens: 8192,
785
+ },
786
+ "google/gemini-2.5-flash": {
787
+ id: "google/gemini-2.5-flash",
788
+ name: "Google: Gemini 2.5 Flash",
789
+ api: "openai-completions",
790
+ provider: "openrouter",
791
+ baseUrl: "https://openrouter.ai/api/v1",
792
+ reasoning: true,
793
+ input: ["text", "image"],
794
+ cost: {
795
+ input: 0.3,
796
+ output: 2.5,
797
+ cacheRead: 0.03,
798
+ cacheWrite: 0.08333333333333334,
799
+ },
800
+ contextWindow: 1048576,
801
+ maxTokens: 65535,
802
+ },
803
+ "google/gemini-2.5-flash-lite": {
804
+ id: "google/gemini-2.5-flash-lite",
805
+ name: "Google: Gemini 2.5 Flash Lite",
806
+ api: "openai-completions",
807
+ provider: "openrouter",
808
+ baseUrl: "https://openrouter.ai/api/v1",
809
+ reasoning: true,
810
+ input: ["text", "image"],
811
+ cost: {
812
+ input: 0.09999999999999999,
813
+ output: 0.39999999999999997,
814
+ cacheRead: 0.01,
815
+ cacheWrite: 0.08333333333333334,
816
+ },
817
+ contextWindow: 1048576,
818
+ maxTokens: 65535,
819
+ },
820
+ "google/gemini-2.5-flash-lite-preview-09-2025": {
821
+ id: "google/gemini-2.5-flash-lite-preview-09-2025",
822
+ name: "Google: Gemini 2.5 Flash Lite Preview 09-2025",
823
+ api: "openai-completions",
824
+ provider: "openrouter",
825
+ baseUrl: "https://openrouter.ai/api/v1",
826
+ reasoning: true,
827
+ input: ["text", "image"],
828
+ cost: {
829
+ input: 0.09999999999999999,
830
+ output: 0.39999999999999997,
831
+ cacheRead: 0.01,
832
+ cacheWrite: 0.08333333333333334,
833
+ },
834
+ contextWindow: 1048576,
835
+ maxTokens: 65535,
836
+ },
837
+ "google/gemini-2.5-pro": {
838
+ id: "google/gemini-2.5-pro",
839
+ name: "Google: Gemini 2.5 Pro",
840
+ api: "openai-completions",
841
+ provider: "openrouter",
842
+ baseUrl: "https://openrouter.ai/api/v1",
843
+ reasoning: true,
844
+ input: ["text", "image"],
845
+ cost: {
846
+ input: 1.25,
847
+ output: 10,
848
+ cacheRead: 0.125,
849
+ cacheWrite: 0.375,
850
+ },
851
+ contextWindow: 1048576,
852
+ maxTokens: 65536,
853
+ },
854
+ "google/gemini-2.5-pro-preview": {
855
+ id: "google/gemini-2.5-pro-preview",
856
+ name: "Google: Gemini 2.5 Pro Preview 06-05",
857
+ api: "openai-completions",
858
+ provider: "openrouter",
859
+ baseUrl: "https://openrouter.ai/api/v1",
860
+ reasoning: true,
861
+ input: ["text", "image"],
862
+ cost: {
863
+ input: 1.25,
864
+ output: 10,
865
+ cacheRead: 0.125,
866
+ cacheWrite: 0.375,
867
+ },
868
+ contextWindow: 1048576,
869
+ maxTokens: 65536,
870
+ },
871
+ "google/gemini-2.5-pro-preview-05-06": {
872
+ id: "google/gemini-2.5-pro-preview-05-06",
873
+ name: "Google: Gemini 2.5 Pro Preview 05-06",
874
+ api: "openai-completions",
875
+ provider: "openrouter",
876
+ baseUrl: "https://openrouter.ai/api/v1",
877
+ reasoning: true,
878
+ input: ["text", "image"],
879
+ cost: {
880
+ input: 1.25,
881
+ output: 10,
882
+ cacheRead: 0.125,
883
+ cacheWrite: 0.375,
884
+ },
885
+ contextWindow: 1048576,
886
+ maxTokens: 65535,
887
+ },
888
+ "google/gemini-3-flash-preview": {
889
+ id: "google/gemini-3-flash-preview",
890
+ name: "Google: Gemini 3 Flash Preview",
891
+ api: "openai-completions",
892
+ provider: "openrouter",
893
+ baseUrl: "https://openrouter.ai/api/v1",
894
+ reasoning: true,
895
+ input: ["text", "image"],
896
+ cost: {
897
+ input: 0.5,
898
+ output: 3,
899
+ cacheRead: 0.049999999999999996,
900
+ cacheWrite: 0.08333333333333334,
901
+ },
902
+ contextWindow: 1048576,
903
+ maxTokens: 65536,
904
+ },
905
+ "google/gemini-3.1-flash-lite-preview": {
906
+ id: "google/gemini-3.1-flash-lite-preview",
907
+ name: "Google: Gemini 3.1 Flash Lite Preview",
908
+ api: "openai-completions",
909
+ provider: "openrouter",
910
+ baseUrl: "https://openrouter.ai/api/v1",
911
+ reasoning: true,
912
+ input: ["text", "image"],
913
+ cost: {
914
+ input: 0.25,
915
+ output: 1.5,
916
+ cacheRead: 0.024999999999999998,
917
+ cacheWrite: 0.08333333333333334,
918
+ },
919
+ contextWindow: 1048576,
920
+ maxTokens: 65536,
921
+ },
922
+ "google/gemini-3.1-pro-preview": {
923
+ id: "google/gemini-3.1-pro-preview",
924
+ name: "Google: Gemini 3.1 Pro Preview",
925
+ api: "openai-completions",
926
+ provider: "openrouter",
927
+ baseUrl: "https://openrouter.ai/api/v1",
928
+ reasoning: true,
929
+ input: ["text", "image"],
930
+ cost: {
931
+ input: 2,
932
+ output: 12,
933
+ cacheRead: 0.19999999999999998,
934
+ cacheWrite: 0.375,
935
+ },
936
+ contextWindow: 1048576,
937
+ maxTokens: 65536,
938
+ },
939
+ "google/gemini-3.1-pro-preview-customtools": {
940
+ id: "google/gemini-3.1-pro-preview-customtools",
941
+ name: "Google: Gemini 3.1 Pro Preview Custom Tools",
942
+ api: "openai-completions",
943
+ provider: "openrouter",
944
+ baseUrl: "https://openrouter.ai/api/v1",
945
+ reasoning: true,
946
+ input: ["text", "image"],
947
+ cost: {
948
+ input: 2,
949
+ output: 12,
950
+ cacheRead: 0.19999999999999998,
951
+ cacheWrite: 0.375,
952
+ },
953
+ contextWindow: 1048576,
954
+ maxTokens: 65536,
955
+ },
956
+ "google/gemma-4-26b-a4b-it": {
957
+ id: "google/gemma-4-26b-a4b-it",
958
+ name: "Google: Gemma 4 26B A4B ",
959
+ api: "openai-completions",
960
+ provider: "openrouter",
961
+ baseUrl: "https://openrouter.ai/api/v1",
962
+ reasoning: true,
963
+ input: ["text", "image"],
964
+ cost: {
965
+ input: 0.12,
966
+ output: 0.39999999999999997,
967
+ cacheRead: 0,
968
+ cacheWrite: 0,
969
+ },
970
+ contextWindow: 262144,
971
+ maxTokens: 262144,
972
+ },
973
+ "google/gemma-4-26b-a4b-it:free": {
974
+ id: "google/gemma-4-26b-a4b-it:free",
975
+ name: "Google: Gemma 4 26B A4B (free)",
976
+ api: "openai-completions",
977
+ provider: "openrouter",
978
+ baseUrl: "https://openrouter.ai/api/v1",
979
+ reasoning: true,
980
+ input: ["text", "image"],
981
+ cost: {
982
+ input: 0,
983
+ output: 0,
984
+ cacheRead: 0,
985
+ cacheWrite: 0,
986
+ },
987
+ contextWindow: 262144,
988
+ maxTokens: 32768,
989
+ },
990
+ "google/gemma-4-31b-it": {
991
+ id: "google/gemma-4-31b-it",
992
+ name: "Google: Gemma 4 31B",
993
+ api: "openai-completions",
994
+ provider: "openrouter",
995
+ baseUrl: "https://openrouter.ai/api/v1",
996
+ reasoning: true,
997
+ input: ["text", "image"],
998
+ cost: {
999
+ input: 0.14,
1000
+ output: 0.39999999999999997,
1001
+ cacheRead: 0,
1002
+ cacheWrite: 0,
1003
+ },
1004
+ contextWindow: 262144,
1005
+ maxTokens: 131072,
1006
+ },
1007
+ "google/gemma-4-31b-it:free": {
1008
+ id: "google/gemma-4-31b-it:free",
1009
+ name: "Google: Gemma 4 31B (free)",
1010
+ api: "openai-completions",
1011
+ provider: "openrouter",
1012
+ baseUrl: "https://openrouter.ai/api/v1",
1013
+ reasoning: true,
1014
+ input: ["text", "image"],
1015
+ cost: {
1016
+ input: 0,
1017
+ output: 0,
1018
+ cacheRead: 0,
1019
+ cacheWrite: 0,
1020
+ },
1021
+ contextWindow: 262144,
1022
+ maxTokens: 32768,
1023
+ },
1024
+ "inception/mercury": {
1025
+ id: "inception/mercury",
1026
+ name: "Inception: Mercury",
1027
+ api: "openai-completions",
1028
+ provider: "openrouter",
1029
+ baseUrl: "https://openrouter.ai/api/v1",
1030
+ reasoning: false,
1031
+ input: ["text"],
1032
+ cost: {
1033
+ input: 0.25,
1034
+ output: 0.75,
1035
+ cacheRead: 0.024999999999999998,
1036
+ cacheWrite: 0,
1037
+ },
1038
+ contextWindow: 128000,
1039
+ maxTokens: 32000,
1040
+ },
1041
+ "inception/mercury-2": {
1042
+ id: "inception/mercury-2",
1043
+ name: "Inception: Mercury 2",
1044
+ api: "openai-completions",
1045
+ provider: "openrouter",
1046
+ baseUrl: "https://openrouter.ai/api/v1",
1047
+ reasoning: true,
1048
+ input: ["text"],
1049
+ cost: {
1050
+ input: 0.25,
1051
+ output: 0.75,
1052
+ cacheRead: 0.024999999999999998,
1053
+ cacheWrite: 0,
1054
+ },
1055
+ contextWindow: 128000,
1056
+ maxTokens: 50000,
1057
+ },
1058
+ "inception/mercury-coder": {
1059
+ id: "inception/mercury-coder",
1060
+ name: "Inception: Mercury Coder",
1061
+ api: "openai-completions",
1062
+ provider: "openrouter",
1063
+ baseUrl: "https://openrouter.ai/api/v1",
1064
+ reasoning: false,
1065
+ input: ["text"],
1066
+ cost: {
1067
+ input: 0.25,
1068
+ output: 0.75,
1069
+ cacheRead: 0.024999999999999998,
1070
+ cacheWrite: 0,
1071
+ },
1072
+ contextWindow: 128000,
1073
+ maxTokens: 32000,
1074
+ },
1075
+ "kwaipilot/kat-coder-pro-v2": {
1076
+ id: "kwaipilot/kat-coder-pro-v2",
1077
+ name: "Kwaipilot: KAT-Coder-Pro V2",
1078
+ api: "openai-completions",
1079
+ provider: "openrouter",
1080
+ baseUrl: "https://openrouter.ai/api/v1",
1081
+ reasoning: false,
1082
+ input: ["text"],
1083
+ cost: {
1084
+ input: 0.3,
1085
+ output: 1.2,
1086
+ cacheRead: 0.06,
1087
+ cacheWrite: 0,
1088
+ },
1089
+ contextWindow: 256000,
1090
+ maxTokens: 80000,
1091
+ },
1092
+ "meituan/longcat-flash-chat": {
1093
+ id: "meituan/longcat-flash-chat",
1094
+ name: "Meituan: LongCat Flash Chat",
1095
+ api: "openai-completions",
1096
+ provider: "openrouter",
1097
+ baseUrl: "https://openrouter.ai/api/v1",
1098
+ reasoning: false,
1099
+ input: ["text"],
1100
+ cost: {
1101
+ input: 0.19999999999999998,
1102
+ output: 0.7999999999999999,
1103
+ cacheRead: 0.19999999999999998,
1104
+ cacheWrite: 0,
1105
+ },
1106
+ contextWindow: 131072,
1107
+ maxTokens: 131072,
1108
+ },
1109
+ "meta-llama/llama-3-8b-instruct": {
1110
+ id: "meta-llama/llama-3-8b-instruct",
1111
+ name: "Meta: Llama 3 8B Instruct",
1112
+ api: "openai-completions",
1113
+ provider: "openrouter",
1114
+ baseUrl: "https://openrouter.ai/api/v1",
1115
+ reasoning: false,
1116
+ input: ["text"],
1117
+ cost: {
1118
+ input: 0.03,
1119
+ output: 0.04,
1120
+ cacheRead: 0,
1121
+ cacheWrite: 0,
1122
+ },
1123
+ contextWindow: 8192,
1124
+ maxTokens: 16384,
1125
+ },
1126
+ "meta-llama/llama-3.1-70b-instruct": {
1127
+ id: "meta-llama/llama-3.1-70b-instruct",
1128
+ name: "Meta: Llama 3.1 70B Instruct",
1129
+ api: "openai-completions",
1130
+ provider: "openrouter",
1131
+ baseUrl: "https://openrouter.ai/api/v1",
1132
+ reasoning: false,
1133
+ input: ["text"],
1134
+ cost: {
1135
+ input: 0.39999999999999997,
1136
+ output: 0.39999999999999997,
1137
+ cacheRead: 0,
1138
+ cacheWrite: 0,
1139
+ },
1140
+ contextWindow: 131072,
1141
+ maxTokens: 4096,
1142
+ },
1143
+ "meta-llama/llama-3.1-8b-instruct": {
1144
+ id: "meta-llama/llama-3.1-8b-instruct",
1145
+ name: "Meta: Llama 3.1 8B Instruct",
1146
+ api: "openai-completions",
1147
+ provider: "openrouter",
1148
+ baseUrl: "https://openrouter.ai/api/v1",
1149
+ reasoning: false,
1150
+ input: ["text"],
1151
+ cost: {
1152
+ input: 0.02,
1153
+ output: 0.049999999999999996,
1154
+ cacheRead: 0,
1155
+ cacheWrite: 0,
1156
+ },
1157
+ contextWindow: 16384,
1158
+ maxTokens: 16384,
1159
+ },
1160
+ "meta-llama/llama-3.3-70b-instruct": {
1161
+ id: "meta-llama/llama-3.3-70b-instruct",
1162
+ name: "Meta: Llama 3.3 70B Instruct",
1163
+ api: "openai-completions",
1164
+ provider: "openrouter",
1165
+ baseUrl: "https://openrouter.ai/api/v1",
1166
+ reasoning: false,
1167
+ input: ["text"],
1168
+ cost: {
1169
+ input: 0.09999999999999999,
1170
+ output: 0.32,
1171
+ cacheRead: 0,
1172
+ cacheWrite: 0,
1173
+ },
1174
+ contextWindow: 131072,
1175
+ maxTokens: 16384,
1176
+ },
1177
+ "meta-llama/llama-3.3-70b-instruct:free": {
1178
+ id: "meta-llama/llama-3.3-70b-instruct:free",
1179
+ name: "Meta: Llama 3.3 70B Instruct (free)",
1180
+ api: "openai-completions",
1181
+ provider: "openrouter",
1182
+ baseUrl: "https://openrouter.ai/api/v1",
1183
+ reasoning: false,
1184
+ input: ["text"],
1185
+ cost: {
1186
+ input: 0,
1187
+ output: 0,
1188
+ cacheRead: 0,
1189
+ cacheWrite: 0,
1190
+ },
1191
+ contextWindow: 65536,
1192
+ maxTokens: 4096,
1193
+ },
1194
+ "meta-llama/llama-4-maverick": {
1195
+ id: "meta-llama/llama-4-maverick",
1196
+ name: "Meta: Llama 4 Maverick",
1197
+ api: "openai-completions",
1198
+ provider: "openrouter",
1199
+ baseUrl: "https://openrouter.ai/api/v1",
1200
+ reasoning: false,
1201
+ input: ["text", "image"],
1202
+ cost: {
1203
+ input: 0.15,
1204
+ output: 0.6,
1205
+ cacheRead: 0,
1206
+ cacheWrite: 0,
1207
+ },
1208
+ contextWindow: 1048576,
1209
+ maxTokens: 16384,
1210
+ },
1211
+ "meta-llama/llama-4-scout": {
1212
+ id: "meta-llama/llama-4-scout",
1213
+ name: "Meta: Llama 4 Scout",
1214
+ api: "openai-completions",
1215
+ provider: "openrouter",
1216
+ baseUrl: "https://openrouter.ai/api/v1",
1217
+ reasoning: false,
1218
+ input: ["text", "image"],
1219
+ cost: {
1220
+ input: 0.08,
1221
+ output: 0.3,
1222
+ cacheRead: 0,
1223
+ cacheWrite: 0,
1224
+ },
1225
+ contextWindow: 327680,
1226
+ maxTokens: 16384,
1227
+ },
1228
+ "minimax/minimax-m1": {
1229
+ id: "minimax/minimax-m1",
1230
+ name: "MiniMax: MiniMax M1",
1231
+ api: "openai-completions",
1232
+ provider: "openrouter",
1233
+ baseUrl: "https://openrouter.ai/api/v1",
1234
+ reasoning: true,
1235
+ input: ["text"],
1236
+ cost: {
1237
+ input: 0.39999999999999997,
1238
+ output: 2.2,
1239
+ cacheRead: 0,
1240
+ cacheWrite: 0,
1241
+ },
1242
+ contextWindow: 1000000,
1243
+ maxTokens: 40000,
1244
+ },
1245
+ "minimax/minimax-m2": {
1246
+ id: "minimax/minimax-m2",
1247
+ name: "MiniMax: MiniMax M2",
1248
+ api: "openai-completions",
1249
+ provider: "openrouter",
1250
+ baseUrl: "https://openrouter.ai/api/v1",
1251
+ reasoning: true,
1252
+ input: ["text"],
1253
+ cost: {
1254
+ input: 0.255,
1255
+ output: 1,
1256
+ cacheRead: 0.03,
1257
+ cacheWrite: 0,
1258
+ },
1259
+ contextWindow: 196608,
1260
+ maxTokens: 196608,
1261
+ },
1262
+ "minimax/minimax-m2.1": {
1263
+ id: "minimax/minimax-m2.1",
1264
+ name: "MiniMax: MiniMax M2.1",
1265
+ api: "openai-completions",
1266
+ provider: "openrouter",
1267
+ baseUrl: "https://openrouter.ai/api/v1",
1268
+ reasoning: true,
1269
+ input: ["text"],
1270
+ cost: {
1271
+ input: 0.29,
1272
+ output: 0.95,
1273
+ cacheRead: 0.03,
1274
+ cacheWrite: 0,
1275
+ },
1276
+ contextWindow: 196608,
1277
+ maxTokens: 196608,
1278
+ },
1279
+ "minimax/minimax-m2.5": {
1280
+ id: "minimax/minimax-m2.5",
1281
+ name: "MiniMax: MiniMax M2.5",
1282
+ api: "openai-completions",
1283
+ provider: "openrouter",
1284
+ baseUrl: "https://openrouter.ai/api/v1",
1285
+ reasoning: true,
1286
+ input: ["text"],
1287
+ cost: {
1288
+ input: 0.118,
1289
+ output: 0.9900000000000001,
1290
+ cacheRead: 0.059,
1291
+ cacheWrite: 0,
1292
+ },
1293
+ contextWindow: 196608,
1294
+ maxTokens: 65536,
1295
+ },
1296
+ "minimax/minimax-m2.5:free": {
1297
+ id: "minimax/minimax-m2.5:free",
1298
+ name: "MiniMax: MiniMax M2.5 (free)",
1299
+ api: "openai-completions",
1300
+ provider: "openrouter",
1301
+ baseUrl: "https://openrouter.ai/api/v1",
1302
+ reasoning: true,
1303
+ input: ["text"],
1304
+ cost: {
1305
+ input: 0,
1306
+ output: 0,
1307
+ cacheRead: 0,
1308
+ cacheWrite: 0,
1309
+ },
1310
+ contextWindow: 196608,
1311
+ maxTokens: 8192,
1312
+ },
1313
+ "minimax/minimax-m2.7": {
1314
+ id: "minimax/minimax-m2.7",
1315
+ name: "MiniMax: MiniMax M2.7",
1316
+ api: "openai-completions",
1317
+ provider: "openrouter",
1318
+ baseUrl: "https://openrouter.ai/api/v1",
1319
+ reasoning: true,
1320
+ input: ["text"],
1321
+ cost: {
1322
+ input: 0.3,
1323
+ output: 1.2,
1324
+ cacheRead: 0.059,
1325
+ cacheWrite: 0,
1326
+ },
1327
+ contextWindow: 196608,
1328
+ maxTokens: 4096,
1329
+ },
1330
+ "mistralai/codestral-2508": {
1331
+ id: "mistralai/codestral-2508",
1332
+ name: "Mistral: Codestral 2508",
1333
+ api: "openai-completions",
1334
+ provider: "openrouter",
1335
+ baseUrl: "https://openrouter.ai/api/v1",
1336
+ reasoning: false,
1337
+ input: ["text"],
1338
+ cost: {
1339
+ input: 0.3,
1340
+ output: 0.8999999999999999,
1341
+ cacheRead: 0.03,
1342
+ cacheWrite: 0,
1343
+ },
1344
+ contextWindow: 256000,
1345
+ maxTokens: 4096,
1346
+ },
1347
+ "mistralai/devstral-2512": {
1348
+ id: "mistralai/devstral-2512",
1349
+ name: "Mistral: Devstral 2 2512",
1350
+ api: "openai-completions",
1351
+ provider: "openrouter",
1352
+ baseUrl: "https://openrouter.ai/api/v1",
1353
+ reasoning: false,
1354
+ input: ["text"],
1355
+ cost: {
1356
+ input: 0.39999999999999997,
1357
+ output: 2,
1358
+ cacheRead: 0.04,
1359
+ cacheWrite: 0,
1360
+ },
1361
+ contextWindow: 262144,
1362
+ maxTokens: 4096,
1363
+ },
1364
+ "mistralai/devstral-medium": {
1365
+ id: "mistralai/devstral-medium",
1366
+ name: "Mistral: Devstral Medium",
1367
+ api: "openai-completions",
1368
+ provider: "openrouter",
1369
+ baseUrl: "https://openrouter.ai/api/v1",
1370
+ reasoning: false,
1371
+ input: ["text"],
1372
+ cost: {
1373
+ input: 0.39999999999999997,
1374
+ output: 2,
1375
+ cacheRead: 0.04,
1376
+ cacheWrite: 0,
1377
+ },
1378
+ contextWindow: 131072,
1379
+ maxTokens: 4096,
1380
+ },
1381
+ "mistralai/devstral-small": {
1382
+ id: "mistralai/devstral-small",
1383
+ name: "Mistral: Devstral Small 1.1",
1384
+ api: "openai-completions",
1385
+ provider: "openrouter",
1386
+ baseUrl: "https://openrouter.ai/api/v1",
1387
+ reasoning: false,
1388
+ input: ["text"],
1389
+ cost: {
1390
+ input: 0.09999999999999999,
1391
+ output: 0.3,
1392
+ cacheRead: 0.01,
1393
+ cacheWrite: 0,
1394
+ },
1395
+ contextWindow: 131072,
1396
+ maxTokens: 4096,
1397
+ },
1398
+ "mistralai/ministral-14b-2512": {
1399
+ id: "mistralai/ministral-14b-2512",
1400
+ name: "Mistral: Ministral 3 14B 2512",
1401
+ api: "openai-completions",
1402
+ provider: "openrouter",
1403
+ baseUrl: "https://openrouter.ai/api/v1",
1404
+ reasoning: false,
1405
+ input: ["text", "image"],
1406
+ cost: {
1407
+ input: 0.19999999999999998,
1408
+ output: 0.19999999999999998,
1409
+ cacheRead: 0.02,
1410
+ cacheWrite: 0,
1411
+ },
1412
+ contextWindow: 262144,
1413
+ maxTokens: 4096,
1414
+ },
1415
+ "mistralai/ministral-3b-2512": {
1416
+ id: "mistralai/ministral-3b-2512",
1417
+ name: "Mistral: Ministral 3 3B 2512",
1418
+ api: "openai-completions",
1419
+ provider: "openrouter",
1420
+ baseUrl: "https://openrouter.ai/api/v1",
1421
+ reasoning: false,
1422
+ input: ["text", "image"],
1423
+ cost: {
1424
+ input: 0.09999999999999999,
1425
+ output: 0.09999999999999999,
1426
+ cacheRead: 0.01,
1427
+ cacheWrite: 0,
1428
+ },
1429
+ contextWindow: 131072,
1430
+ maxTokens: 4096,
1431
+ },
1432
+ "mistralai/ministral-8b-2512": {
1433
+ id: "mistralai/ministral-8b-2512",
1434
+ name: "Mistral: Ministral 3 8B 2512",
1435
+ api: "openai-completions",
1436
+ provider: "openrouter",
1437
+ baseUrl: "https://openrouter.ai/api/v1",
1438
+ reasoning: false,
1439
+ input: ["text", "image"],
1440
+ cost: {
1441
+ input: 0.15,
1442
+ output: 0.15,
1443
+ cacheRead: 0.015,
1444
+ cacheWrite: 0,
1445
+ },
1446
+ contextWindow: 262144,
1447
+ maxTokens: 4096,
1448
+ },
1449
+ "mistralai/mistral-large": {
1450
+ id: "mistralai/mistral-large",
1451
+ name: "Mistral Large",
1452
+ api: "openai-completions",
1453
+ provider: "openrouter",
1454
+ baseUrl: "https://openrouter.ai/api/v1",
1455
+ reasoning: false,
1456
+ input: ["text"],
1457
+ cost: {
1458
+ input: 2,
1459
+ output: 6,
1460
+ cacheRead: 0.19999999999999998,
1461
+ cacheWrite: 0,
1462
+ },
1463
+ contextWindow: 128000,
1464
+ maxTokens: 4096,
1465
+ },
1466
+ "mistralai/mistral-large-2407": {
1467
+ id: "mistralai/mistral-large-2407",
1468
+ name: "Mistral Large 2407",
1469
+ api: "openai-completions",
1470
+ provider: "openrouter",
1471
+ baseUrl: "https://openrouter.ai/api/v1",
1472
+ reasoning: false,
1473
+ input: ["text"],
1474
+ cost: {
1475
+ input: 2,
1476
+ output: 6,
1477
+ cacheRead: 0.19999999999999998,
1478
+ cacheWrite: 0,
1479
+ },
1480
+ contextWindow: 131072,
1481
+ maxTokens: 4096,
1482
+ },
1483
+ "mistralai/mistral-large-2411": {
1484
+ id: "mistralai/mistral-large-2411",
1485
+ name: "Mistral Large 2411",
1486
+ api: "openai-completions",
1487
+ provider: "openrouter",
1488
+ baseUrl: "https://openrouter.ai/api/v1",
1489
+ reasoning: false,
1490
+ input: ["text"],
1491
+ cost: {
1492
+ input: 2,
1493
+ output: 6,
1494
+ cacheRead: 0.19999999999999998,
1495
+ cacheWrite: 0,
1496
+ },
1497
+ contextWindow: 131072,
1498
+ maxTokens: 4096,
1499
+ },
1500
+ "mistralai/mistral-large-2512": {
1501
+ id: "mistralai/mistral-large-2512",
1502
+ name: "Mistral: Mistral Large 3 2512",
1503
+ api: "openai-completions",
1504
+ provider: "openrouter",
1505
+ baseUrl: "https://openrouter.ai/api/v1",
1506
+ reasoning: false,
1507
+ input: ["text", "image"],
1508
+ cost: {
1509
+ input: 0.5,
1510
+ output: 1.5,
1511
+ cacheRead: 0.049999999999999996,
1512
+ cacheWrite: 0,
1513
+ },
1514
+ contextWindow: 262144,
1515
+ maxTokens: 4096,
1516
+ },
1517
+ "mistralai/mistral-medium-3": {
1518
+ id: "mistralai/mistral-medium-3",
1519
+ name: "Mistral: Mistral Medium 3",
1520
+ api: "openai-completions",
1521
+ provider: "openrouter",
1522
+ baseUrl: "https://openrouter.ai/api/v1",
1523
+ reasoning: false,
1524
+ input: ["text", "image"],
1525
+ cost: {
1526
+ input: 0.39999999999999997,
1527
+ output: 2,
1528
+ cacheRead: 0.04,
1529
+ cacheWrite: 0,
1530
+ },
1531
+ contextWindow: 131072,
1532
+ maxTokens: 4096,
1533
+ },
1534
+ "mistralai/mistral-medium-3.1": {
1535
+ id: "mistralai/mistral-medium-3.1",
1536
+ name: "Mistral: Mistral Medium 3.1",
1537
+ api: "openai-completions",
1538
+ provider: "openrouter",
1539
+ baseUrl: "https://openrouter.ai/api/v1",
1540
+ reasoning: false,
1541
+ input: ["text", "image"],
1542
+ cost: {
1543
+ input: 0.39999999999999997,
1544
+ output: 2,
1545
+ cacheRead: 0.04,
1546
+ cacheWrite: 0,
1547
+ },
1548
+ contextWindow: 131072,
1549
+ maxTokens: 4096,
1550
+ },
1551
+ "mistralai/mistral-nemo": {
1552
+ id: "mistralai/mistral-nemo",
1553
+ name: "Mistral: Mistral Nemo",
1554
+ api: "openai-completions",
1555
+ provider: "openrouter",
1556
+ baseUrl: "https://openrouter.ai/api/v1",
1557
+ reasoning: false,
1558
+ input: ["text"],
1559
+ cost: {
1560
+ input: 0.02,
1561
+ output: 0.04,
1562
+ cacheRead: 0,
1563
+ cacheWrite: 0,
1564
+ },
1565
+ contextWindow: 131072,
1566
+ maxTokens: 16384,
1567
+ },
1568
+ "mistralai/mistral-saba": {
1569
+ id: "mistralai/mistral-saba",
1570
+ name: "Mistral: Saba",
1571
+ api: "openai-completions",
1572
+ provider: "openrouter",
1573
+ baseUrl: "https://openrouter.ai/api/v1",
1574
+ reasoning: false,
1575
+ input: ["text"],
1576
+ cost: {
1577
+ input: 0.19999999999999998,
1578
+ output: 0.6,
1579
+ cacheRead: 0.02,
1580
+ cacheWrite: 0,
1581
+ },
1582
+ contextWindow: 32768,
1583
+ maxTokens: 4096,
1584
+ },
1585
+ "mistralai/mistral-small-2603": {
1586
+ id: "mistralai/mistral-small-2603",
1587
+ name: "Mistral: Mistral Small 4",
1588
+ api: "openai-completions",
1589
+ provider: "openrouter",
1590
+ baseUrl: "https://openrouter.ai/api/v1",
1591
+ reasoning: true,
1592
+ input: ["text", "image"],
1593
+ cost: {
1594
+ input: 0.15,
1595
+ output: 0.6,
1596
+ cacheRead: 0.015,
1597
+ cacheWrite: 0,
1598
+ },
1599
+ contextWindow: 262144,
1600
+ maxTokens: 4096,
1601
+ },
1602
+ "mistralai/mistral-small-3.2-24b-instruct": {
1603
+ id: "mistralai/mistral-small-3.2-24b-instruct",
1604
+ name: "Mistral: Mistral Small 3.2 24B",
1605
+ api: "openai-completions",
1606
+ provider: "openrouter",
1607
+ baseUrl: "https://openrouter.ai/api/v1",
1608
+ reasoning: false,
1609
+ input: ["text", "image"],
1610
+ cost: {
1611
+ input: 0.075,
1612
+ output: 0.19999999999999998,
1613
+ cacheRead: 0,
1614
+ cacheWrite: 0,
1615
+ },
1616
+ contextWindow: 128000,
1617
+ maxTokens: 4096,
1618
+ },
1619
+ "mistralai/mistral-small-creative": {
1620
+ id: "mistralai/mistral-small-creative",
1621
+ name: "Mistral: Mistral Small Creative",
1622
+ api: "openai-completions",
1623
+ provider: "openrouter",
1624
+ baseUrl: "https://openrouter.ai/api/v1",
1625
+ reasoning: false,
1626
+ input: ["text"],
1627
+ cost: {
1628
+ input: 0.09999999999999999,
1629
+ output: 0.3,
1630
+ cacheRead: 0.01,
1631
+ cacheWrite: 0,
1632
+ },
1633
+ contextWindow: 32768,
1634
+ maxTokens: 4096,
1635
+ },
1636
+ "mistralai/mixtral-8x22b-instruct": {
1637
+ id: "mistralai/mixtral-8x22b-instruct",
1638
+ name: "Mistral: Mixtral 8x22B Instruct",
1639
+ api: "openai-completions",
1640
+ provider: "openrouter",
1641
+ baseUrl: "https://openrouter.ai/api/v1",
1642
+ reasoning: false,
1643
+ input: ["text"],
1644
+ cost: {
1645
+ input: 2,
1646
+ output: 6,
1647
+ cacheRead: 0.19999999999999998,
1648
+ cacheWrite: 0,
1649
+ },
1650
+ contextWindow: 65536,
1651
+ maxTokens: 4096,
1652
+ },
1653
+ "mistralai/mixtral-8x7b-instruct": {
1654
+ id: "mistralai/mixtral-8x7b-instruct",
1655
+ name: "Mistral: Mixtral 8x7B Instruct",
1656
+ api: "openai-completions",
1657
+ provider: "openrouter",
1658
+ baseUrl: "https://openrouter.ai/api/v1",
1659
+ reasoning: false,
1660
+ input: ["text"],
1661
+ cost: {
1662
+ input: 0.54,
1663
+ output: 0.54,
1664
+ cacheRead: 0,
1665
+ cacheWrite: 0,
1666
+ },
1667
+ contextWindow: 32768,
1668
+ maxTokens: 16384,
1669
+ },
1670
+ "mistralai/pixtral-large-2411": {
1671
+ id: "mistralai/pixtral-large-2411",
1672
+ name: "Mistral: Pixtral Large 2411",
1673
+ api: "openai-completions",
1674
+ provider: "openrouter",
1675
+ baseUrl: "https://openrouter.ai/api/v1",
1676
+ reasoning: false,
1677
+ input: ["text", "image"],
1678
+ cost: {
1679
+ input: 2,
1680
+ output: 6,
1681
+ cacheRead: 0.19999999999999998,
1682
+ cacheWrite: 0,
1683
+ },
1684
+ contextWindow: 131072,
1685
+ maxTokens: 4096,
1686
+ },
1687
+ "mistralai/voxtral-small-24b-2507": {
1688
+ id: "mistralai/voxtral-small-24b-2507",
1689
+ name: "Mistral: Voxtral Small 24B 2507",
1690
+ api: "openai-completions",
1691
+ provider: "openrouter",
1692
+ baseUrl: "https://openrouter.ai/api/v1",
1693
+ reasoning: false,
1694
+ input: ["text"],
1695
+ cost: {
1696
+ input: 0.09999999999999999,
1697
+ output: 0.3,
1698
+ cacheRead: 0.01,
1699
+ cacheWrite: 0,
1700
+ },
1701
+ contextWindow: 32000,
1702
+ maxTokens: 4096,
1703
+ },
1704
+ "moonshotai/kimi-k2": {
1705
+ id: "moonshotai/kimi-k2",
1706
+ name: "MoonshotAI: Kimi K2 0711",
1707
+ api: "openai-completions",
1708
+ provider: "openrouter",
1709
+ baseUrl: "https://openrouter.ai/api/v1",
1710
+ reasoning: false,
1711
+ input: ["text"],
1712
+ cost: {
1713
+ input: 0.5700000000000001,
1714
+ output: 2.3,
1715
+ cacheRead: 0,
1716
+ cacheWrite: 0,
1717
+ },
1718
+ contextWindow: 131072,
1719
+ maxTokens: 131072,
1720
+ },
1721
+ "moonshotai/kimi-k2-0905": {
1722
+ id: "moonshotai/kimi-k2-0905",
1723
+ name: "MoonshotAI: Kimi K2 0905",
1724
+ api: "openai-completions",
1725
+ provider: "openrouter",
1726
+ baseUrl: "https://openrouter.ai/api/v1",
1727
+ reasoning: false,
1728
+ input: ["text"],
1729
+ cost: {
1730
+ input: 0.39999999999999997,
1731
+ output: 2,
1732
+ cacheRead: 0,
1733
+ cacheWrite: 0,
1734
+ },
1735
+ contextWindow: 262144,
1736
+ maxTokens: 262144,
1737
+ },
1738
+ "moonshotai/kimi-k2-thinking": {
1739
+ id: "moonshotai/kimi-k2-thinking",
1740
+ name: "MoonshotAI: Kimi K2 Thinking",
1741
+ api: "openai-completions",
1742
+ provider: "openrouter",
1743
+ baseUrl: "https://openrouter.ai/api/v1",
1744
+ reasoning: true,
1745
+ input: ["text"],
1746
+ cost: {
1747
+ input: 0.6,
1748
+ output: 2.5,
1749
+ cacheRead: 0,
1750
+ cacheWrite: 0,
1751
+ },
1752
+ contextWindow: 262144,
1753
+ maxTokens: 4096,
1754
+ },
1755
+ "moonshotai/kimi-k2.5": {
1756
+ id: "moonshotai/kimi-k2.5",
1757
+ name: "MoonshotAI: Kimi K2.5",
1758
+ api: "openai-completions",
1759
+ provider: "openrouter",
1760
+ baseUrl: "https://openrouter.ai/api/v1",
1761
+ reasoning: true,
1762
+ input: ["text", "image"],
1763
+ cost: {
1764
+ input: 0.41,
1765
+ output: 2.06,
1766
+ cacheRead: 0.07,
1767
+ cacheWrite: 0,
1768
+ },
1769
+ contextWindow: 262144,
1770
+ maxTokens: 4096,
1771
+ },
1772
+ "nex-agi/deepseek-v3.1-nex-n1": {
1773
+ id: "nex-agi/deepseek-v3.1-nex-n1",
1774
+ name: "Nex AGI: DeepSeek V3.1 Nex N1",
1775
+ api: "openai-completions",
1776
+ provider: "openrouter",
1777
+ baseUrl: "https://openrouter.ai/api/v1",
1778
+ reasoning: false,
1779
+ input: ["text"],
1780
+ cost: {
1781
+ input: 0.135,
1782
+ output: 0.5,
1783
+ cacheRead: 0,
1784
+ cacheWrite: 0,
1785
+ },
1786
+ contextWindow: 131072,
1787
+ maxTokens: 163840,
1788
+ },
1789
+ "nvidia/llama-3.1-nemotron-70b-instruct": {
1790
+ id: "nvidia/llama-3.1-nemotron-70b-instruct",
1791
+ name: "NVIDIA: Llama 3.1 Nemotron 70B Instruct",
1792
+ api: "openai-completions",
1793
+ provider: "openrouter",
1794
+ baseUrl: "https://openrouter.ai/api/v1",
1795
+ reasoning: false,
1796
+ input: ["text"],
1797
+ cost: {
1798
+ input: 1.2,
1799
+ output: 1.2,
1800
+ cacheRead: 0,
1801
+ cacheWrite: 0,
1802
+ },
1803
+ contextWindow: 131072,
1804
+ maxTokens: 16384,
1805
+ },
1806
+ "nvidia/llama-3.3-nemotron-super-49b-v1.5": {
1807
+ id: "nvidia/llama-3.3-nemotron-super-49b-v1.5",
1808
+ name: "NVIDIA: Llama 3.3 Nemotron Super 49B V1.5",
1809
+ api: "openai-completions",
1810
+ provider: "openrouter",
1811
+ baseUrl: "https://openrouter.ai/api/v1",
1812
+ reasoning: true,
1813
+ input: ["text"],
1814
+ cost: {
1815
+ input: 0.09999999999999999,
1816
+ output: 0.39999999999999997,
1817
+ cacheRead: 0,
1818
+ cacheWrite: 0,
1819
+ },
1820
+ contextWindow: 131072,
1821
+ maxTokens: 4096,
1822
+ },
1823
+ "nvidia/nemotron-3-nano-30b-a3b": {
1824
+ id: "nvidia/nemotron-3-nano-30b-a3b",
1825
+ name: "NVIDIA: Nemotron 3 Nano 30B A3B",
1826
+ api: "openai-completions",
1827
+ provider: "openrouter",
1828
+ baseUrl: "https://openrouter.ai/api/v1",
1829
+ reasoning: true,
1830
+ input: ["text"],
1831
+ cost: {
1832
+ input: 0.049999999999999996,
1833
+ output: 0.19999999999999998,
1834
+ cacheRead: 0,
1835
+ cacheWrite: 0,
1836
+ },
1837
+ contextWindow: 262144,
1838
+ maxTokens: 4096,
1839
+ },
1840
+ "nvidia/nemotron-3-nano-30b-a3b:free": {
1841
+ id: "nvidia/nemotron-3-nano-30b-a3b:free",
1842
+ name: "NVIDIA: Nemotron 3 Nano 30B A3B (free)",
1843
+ api: "openai-completions",
1844
+ provider: "openrouter",
1845
+ baseUrl: "https://openrouter.ai/api/v1",
1846
+ reasoning: true,
1847
+ input: ["text"],
1848
+ cost: {
1849
+ input: 0,
1850
+ output: 0,
1851
+ cacheRead: 0,
1852
+ cacheWrite: 0,
1853
+ },
1854
+ contextWindow: 256000,
1855
+ maxTokens: 4096,
1856
+ },
1857
+ "nvidia/nemotron-3-super-120b-a12b": {
1858
+ id: "nvidia/nemotron-3-super-120b-a12b",
1859
+ name: "NVIDIA: Nemotron 3 Super",
1860
+ api: "openai-completions",
1861
+ provider: "openrouter",
1862
+ baseUrl: "https://openrouter.ai/api/v1",
1863
+ reasoning: true,
1864
+ input: ["text"],
1865
+ cost: {
1866
+ input: 0.09999999999999999,
1867
+ output: 0.5,
1868
+ cacheRead: 0.09999999999999999,
1869
+ cacheWrite: 0,
1870
+ },
1871
+ contextWindow: 262144,
1872
+ maxTokens: 4096,
1873
+ },
1874
+ "nvidia/nemotron-3-super-120b-a12b:free": {
1875
+ id: "nvidia/nemotron-3-super-120b-a12b:free",
1876
+ name: "NVIDIA: Nemotron 3 Super (free)",
1877
+ api: "openai-completions",
1878
+ provider: "openrouter",
1879
+ baseUrl: "https://openrouter.ai/api/v1",
1880
+ reasoning: true,
1881
+ input: ["text"],
1882
+ cost: {
1883
+ input: 0,
1884
+ output: 0,
1885
+ cacheRead: 0,
1886
+ cacheWrite: 0,
1887
+ },
1888
+ contextWindow: 262144,
1889
+ maxTokens: 262144,
1890
+ },
1891
+ "nvidia/nemotron-nano-12b-v2-vl:free": {
1892
+ id: "nvidia/nemotron-nano-12b-v2-vl:free",
1893
+ name: "NVIDIA: Nemotron Nano 12B 2 VL (free)",
1894
+ api: "openai-completions",
1895
+ provider: "openrouter",
1896
+ baseUrl: "https://openrouter.ai/api/v1",
1897
+ reasoning: true,
1898
+ input: ["text", "image"],
1899
+ cost: {
1900
+ input: 0,
1901
+ output: 0,
1902
+ cacheRead: 0,
1903
+ cacheWrite: 0,
1904
+ },
1905
+ contextWindow: 128000,
1906
+ maxTokens: 128000,
1907
+ },
1908
+ "nvidia/nemotron-nano-9b-v2": {
1909
+ id: "nvidia/nemotron-nano-9b-v2",
1910
+ name: "NVIDIA: Nemotron Nano 9B V2",
1911
+ api: "openai-completions",
1912
+ provider: "openrouter",
1913
+ baseUrl: "https://openrouter.ai/api/v1",
1914
+ reasoning: true,
1915
+ input: ["text"],
1916
+ cost: {
1917
+ input: 0.04,
1918
+ output: 0.16,
1919
+ cacheRead: 0,
1920
+ cacheWrite: 0,
1921
+ },
1922
+ contextWindow: 131072,
1923
+ maxTokens: 4096,
1924
+ },
1925
+ "nvidia/nemotron-nano-9b-v2:free": {
1926
+ id: "nvidia/nemotron-nano-9b-v2:free",
1927
+ name: "NVIDIA: Nemotron Nano 9B V2 (free)",
1928
+ api: "openai-completions",
1929
+ provider: "openrouter",
1930
+ baseUrl: "https://openrouter.ai/api/v1",
1931
+ reasoning: true,
1932
+ input: ["text"],
1933
+ cost: {
1934
+ input: 0,
1935
+ output: 0,
1936
+ cacheRead: 0,
1937
+ cacheWrite: 0,
1938
+ },
1939
+ contextWindow: 128000,
1940
+ maxTokens: 4096,
1941
+ },
1942
+ "openai/gpt-3.5-turbo": {
1943
+ id: "openai/gpt-3.5-turbo",
1944
+ name: "OpenAI: GPT-3.5 Turbo",
1945
+ api: "openai-completions",
1946
+ provider: "openrouter",
1947
+ baseUrl: "https://openrouter.ai/api/v1",
1948
+ reasoning: false,
1949
+ input: ["text"],
1950
+ cost: {
1951
+ input: 0.5,
1952
+ output: 1.5,
1953
+ cacheRead: 0,
1954
+ cacheWrite: 0,
1955
+ },
1956
+ contextWindow: 16385,
1957
+ maxTokens: 4096,
1958
+ },
1959
+ "openai/gpt-3.5-turbo-0613": {
1960
+ id: "openai/gpt-3.5-turbo-0613",
1961
+ name: "OpenAI: GPT-3.5 Turbo (older v0613)",
1962
+ api: "openai-completions",
1963
+ provider: "openrouter",
1964
+ baseUrl: "https://openrouter.ai/api/v1",
1965
+ reasoning: false,
1966
+ input: ["text"],
1967
+ cost: {
1968
+ input: 1,
1969
+ output: 2,
1970
+ cacheRead: 0,
1971
+ cacheWrite: 0,
1972
+ },
1973
+ contextWindow: 4095,
1974
+ maxTokens: 4096,
1975
+ },
1976
+ "openai/gpt-3.5-turbo-16k": {
1977
+ id: "openai/gpt-3.5-turbo-16k",
1978
+ name: "OpenAI: GPT-3.5 Turbo 16k",
1979
+ api: "openai-completions",
1980
+ provider: "openrouter",
1981
+ baseUrl: "https://openrouter.ai/api/v1",
1982
+ reasoning: false,
1983
+ input: ["text"],
1984
+ cost: {
1985
+ input: 3,
1986
+ output: 4,
1987
+ cacheRead: 0,
1988
+ cacheWrite: 0,
1989
+ },
1990
+ contextWindow: 16385,
1991
+ maxTokens: 4096,
1992
+ },
1993
+ "openai/gpt-4": {
1994
+ id: "openai/gpt-4",
1995
+ name: "OpenAI: GPT-4",
1996
+ api: "openai-completions",
1997
+ provider: "openrouter",
1998
+ baseUrl: "https://openrouter.ai/api/v1",
1999
+ reasoning: false,
2000
+ input: ["text"],
2001
+ cost: {
2002
+ input: 30,
2003
+ output: 60,
2004
+ cacheRead: 0,
2005
+ cacheWrite: 0,
2006
+ },
2007
+ contextWindow: 8191,
2008
+ maxTokens: 4096,
2009
+ },
2010
+ "openai/gpt-4-0314": {
2011
+ id: "openai/gpt-4-0314",
2012
+ name: "OpenAI: GPT-4 (older v0314)",
2013
+ api: "openai-completions",
2014
+ provider: "openrouter",
2015
+ baseUrl: "https://openrouter.ai/api/v1",
2016
+ reasoning: false,
2017
+ input: ["text"],
2018
+ cost: {
2019
+ input: 30,
2020
+ output: 60,
2021
+ cacheRead: 0,
2022
+ cacheWrite: 0,
2023
+ },
2024
+ contextWindow: 8191,
2025
+ maxTokens: 4096,
2026
+ },
2027
+ "openai/gpt-4-1106-preview": {
2028
+ id: "openai/gpt-4-1106-preview",
2029
+ name: "OpenAI: GPT-4 Turbo (older v1106)",
2030
+ api: "openai-completions",
2031
+ provider: "openrouter",
2032
+ baseUrl: "https://openrouter.ai/api/v1",
2033
+ reasoning: false,
2034
+ input: ["text"],
2035
+ cost: {
2036
+ input: 10,
2037
+ output: 30,
2038
+ cacheRead: 0,
2039
+ cacheWrite: 0,
2040
+ },
2041
+ contextWindow: 128000,
2042
+ maxTokens: 4096,
2043
+ },
2044
+ "openai/gpt-4-turbo": {
2045
+ id: "openai/gpt-4-turbo",
2046
+ name: "OpenAI: GPT-4 Turbo",
2047
+ api: "openai-completions",
2048
+ provider: "openrouter",
2049
+ baseUrl: "https://openrouter.ai/api/v1",
2050
+ reasoning: false,
2051
+ input: ["text", "image"],
2052
+ cost: {
2053
+ input: 10,
2054
+ output: 30,
2055
+ cacheRead: 0,
2056
+ cacheWrite: 0,
2057
+ },
2058
+ contextWindow: 128000,
2059
+ maxTokens: 4096,
2060
+ },
2061
+ "openai/gpt-4-turbo-preview": {
2062
+ id: "openai/gpt-4-turbo-preview",
2063
+ name: "OpenAI: GPT-4 Turbo Preview",
2064
+ api: "openai-completions",
2065
+ provider: "openrouter",
2066
+ baseUrl: "https://openrouter.ai/api/v1",
2067
+ reasoning: false,
2068
+ input: ["text"],
2069
+ cost: {
2070
+ input: 10,
2071
+ output: 30,
2072
+ cacheRead: 0,
2073
+ cacheWrite: 0,
2074
+ },
2075
+ contextWindow: 128000,
2076
+ maxTokens: 4096,
2077
+ },
2078
+ "openai/gpt-4.1": {
2079
+ id: "openai/gpt-4.1",
2080
+ name: "OpenAI: GPT-4.1",
2081
+ api: "openai-completions",
2082
+ provider: "openrouter",
2083
+ baseUrl: "https://openrouter.ai/api/v1",
2084
+ reasoning: false,
2085
+ input: ["text", "image"],
2086
+ cost: {
2087
+ input: 2,
2088
+ output: 8,
2089
+ cacheRead: 0.5,
2090
+ cacheWrite: 0,
2091
+ },
2092
+ contextWindow: 1047576,
2093
+ maxTokens: 4096,
2094
+ },
2095
+ "openai/gpt-4.1-mini": {
2096
+ id: "openai/gpt-4.1-mini",
2097
+ name: "OpenAI: GPT-4.1 Mini",
2098
+ api: "openai-completions",
2099
+ provider: "openrouter",
2100
+ baseUrl: "https://openrouter.ai/api/v1",
2101
+ reasoning: false,
2102
+ input: ["text", "image"],
2103
+ cost: {
2104
+ input: 0.39999999999999997,
2105
+ output: 1.5999999999999999,
2106
+ cacheRead: 0.09999999999999999,
2107
+ cacheWrite: 0,
2108
+ },
2109
+ contextWindow: 1047576,
2110
+ maxTokens: 32768,
2111
+ },
2112
+ "openai/gpt-4.1-nano": {
2113
+ id: "openai/gpt-4.1-nano",
2114
+ name: "OpenAI: GPT-4.1 Nano",
2115
+ api: "openai-completions",
2116
+ provider: "openrouter",
2117
+ baseUrl: "https://openrouter.ai/api/v1",
2118
+ reasoning: false,
2119
+ input: ["text", "image"],
2120
+ cost: {
2121
+ input: 0.09999999999999999,
2122
+ output: 0.39999999999999997,
2123
+ cacheRead: 0.024999999999999998,
2124
+ cacheWrite: 0,
2125
+ },
2126
+ contextWindow: 1047576,
2127
+ maxTokens: 32768,
2128
+ },
2129
+ "openai/gpt-4o": {
2130
+ id: "openai/gpt-4o",
2131
+ name: "OpenAI: GPT-4o",
2132
+ api: "openai-completions",
2133
+ provider: "openrouter",
2134
+ baseUrl: "https://openrouter.ai/api/v1",
2135
+ reasoning: false,
2136
+ input: ["text", "image"],
2137
+ cost: {
2138
+ input: 2.5,
2139
+ output: 10,
2140
+ cacheRead: 0,
2141
+ cacheWrite: 0,
2142
+ },
2143
+ contextWindow: 128000,
2144
+ maxTokens: 16384,
2145
+ },
2146
+ "openai/gpt-4o-2024-05-13": {
2147
+ id: "openai/gpt-4o-2024-05-13",
2148
+ name: "OpenAI: GPT-4o (2024-05-13)",
2149
+ api: "openai-completions",
2150
+ provider: "openrouter",
2151
+ baseUrl: "https://openrouter.ai/api/v1",
2152
+ reasoning: false,
2153
+ input: ["text", "image"],
2154
+ cost: {
2155
+ input: 5,
2156
+ output: 15,
2157
+ cacheRead: 0,
2158
+ cacheWrite: 0,
2159
+ },
2160
+ contextWindow: 128000,
2161
+ maxTokens: 4096,
2162
+ },
2163
+ "openai/gpt-4o-2024-08-06": {
2164
+ id: "openai/gpt-4o-2024-08-06",
2165
+ name: "OpenAI: GPT-4o (2024-08-06)",
2166
+ api: "openai-completions",
2167
+ provider: "openrouter",
2168
+ baseUrl: "https://openrouter.ai/api/v1",
2169
+ reasoning: false,
2170
+ input: ["text", "image"],
2171
+ cost: {
2172
+ input: 2.5,
2173
+ output: 10,
2174
+ cacheRead: 1.25,
2175
+ cacheWrite: 0,
2176
+ },
2177
+ contextWindow: 128000,
2178
+ maxTokens: 16384,
2179
+ },
2180
+ "openai/gpt-4o-2024-11-20": {
2181
+ id: "openai/gpt-4o-2024-11-20",
2182
+ name: "OpenAI: GPT-4o (2024-11-20)",
2183
+ api: "openai-completions",
2184
+ provider: "openrouter",
2185
+ baseUrl: "https://openrouter.ai/api/v1",
2186
+ reasoning: false,
2187
+ input: ["text", "image"],
2188
+ cost: {
2189
+ input: 2.5,
2190
+ output: 10,
2191
+ cacheRead: 1.25,
2192
+ cacheWrite: 0,
2193
+ },
2194
+ contextWindow: 128000,
2195
+ maxTokens: 16384,
2196
+ },
2197
+ "openai/gpt-4o-audio-preview": {
2198
+ id: "openai/gpt-4o-audio-preview",
2199
+ name: "OpenAI: GPT-4o Audio",
2200
+ api: "openai-completions",
2201
+ provider: "openrouter",
2202
+ baseUrl: "https://openrouter.ai/api/v1",
2203
+ reasoning: false,
2204
+ input: ["text"],
2205
+ cost: {
2206
+ input: 2.5,
2207
+ output: 10,
2208
+ cacheRead: 0,
2209
+ cacheWrite: 0,
2210
+ },
2211
+ contextWindow: 128000,
2212
+ maxTokens: 16384,
2213
+ },
2214
+ "openai/gpt-4o-mini": {
2215
+ id: "openai/gpt-4o-mini",
2216
+ name: "OpenAI: GPT-4o-mini",
2217
+ api: "openai-completions",
2218
+ provider: "openrouter",
2219
+ baseUrl: "https://openrouter.ai/api/v1",
2220
+ reasoning: false,
2221
+ input: ["text", "image"],
2222
+ cost: {
2223
+ input: 0.15,
2224
+ output: 0.6,
2225
+ cacheRead: 0.075,
2226
+ cacheWrite: 0,
2227
+ },
2228
+ contextWindow: 128000,
2229
+ maxTokens: 16384,
2230
+ },
2231
+ "openai/gpt-4o-mini-2024-07-18": {
2232
+ id: "openai/gpt-4o-mini-2024-07-18",
2233
+ name: "OpenAI: GPT-4o-mini (2024-07-18)",
2234
+ api: "openai-completions",
2235
+ provider: "openrouter",
2236
+ baseUrl: "https://openrouter.ai/api/v1",
2237
+ reasoning: false,
2238
+ input: ["text", "image"],
2239
+ cost: {
2240
+ input: 0.15,
2241
+ output: 0.6,
2242
+ cacheRead: 0.075,
2243
+ cacheWrite: 0,
2244
+ },
2245
+ contextWindow: 128000,
2246
+ maxTokens: 16384,
2247
+ },
2248
+ "openai/gpt-4o:extended": {
2249
+ id: "openai/gpt-4o:extended",
2250
+ name: "OpenAI: GPT-4o (extended)",
2251
+ api: "openai-completions",
2252
+ provider: "openrouter",
2253
+ baseUrl: "https://openrouter.ai/api/v1",
2254
+ reasoning: false,
2255
+ input: ["text", "image"],
2256
+ cost: {
2257
+ input: 6,
2258
+ output: 18,
2259
+ cacheRead: 0,
2260
+ cacheWrite: 0,
2261
+ },
2262
+ contextWindow: 128000,
2263
+ maxTokens: 64000,
2264
+ },
2265
+ "openai/gpt-5": {
2266
+ id: "openai/gpt-5",
2267
+ name: "OpenAI: GPT-5",
2268
+ api: "openai-completions",
2269
+ provider: "openrouter",
2270
+ baseUrl: "https://openrouter.ai/api/v1",
2271
+ reasoning: true,
2272
+ input: ["text", "image"],
2273
+ cost: {
2274
+ input: 1.25,
2275
+ output: 10,
2276
+ cacheRead: 0.125,
2277
+ cacheWrite: 0,
2278
+ },
2279
+ contextWindow: 400000,
2280
+ maxTokens: 128000,
2281
+ },
2282
+ "openai/gpt-5-codex": {
2283
+ id: "openai/gpt-5-codex",
2284
+ name: "OpenAI: GPT-5 Codex",
2285
+ api: "openai-completions",
2286
+ provider: "openrouter",
2287
+ baseUrl: "https://openrouter.ai/api/v1",
2288
+ reasoning: true,
2289
+ input: ["text", "image"],
2290
+ cost: {
2291
+ input: 1.25,
2292
+ output: 10,
2293
+ cacheRead: 0.125,
2294
+ cacheWrite: 0,
2295
+ },
2296
+ contextWindow: 400000,
2297
+ maxTokens: 128000,
2298
+ },
2299
+ "openai/gpt-5-image": {
2300
+ id: "openai/gpt-5-image",
2301
+ name: "OpenAI: GPT-5 Image",
2302
+ api: "openai-completions",
2303
+ provider: "openrouter",
2304
+ baseUrl: "https://openrouter.ai/api/v1",
2305
+ reasoning: true,
2306
+ input: ["text", "image"],
2307
+ cost: {
2308
+ input: 10,
2309
+ output: 10,
2310
+ cacheRead: 1.25,
2311
+ cacheWrite: 0,
2312
+ },
2313
+ contextWindow: 400000,
2314
+ maxTokens: 128000,
2315
+ },
2316
+ "openai/gpt-5-image-mini": {
2317
+ id: "openai/gpt-5-image-mini",
2318
+ name: "OpenAI: GPT-5 Image Mini",
2319
+ api: "openai-completions",
2320
+ provider: "openrouter",
2321
+ baseUrl: "https://openrouter.ai/api/v1",
2322
+ reasoning: true,
2323
+ input: ["text", "image"],
2324
+ cost: {
2325
+ input: 2.5,
2326
+ output: 2,
2327
+ cacheRead: 0.25,
2328
+ cacheWrite: 0,
2329
+ },
2330
+ contextWindow: 400000,
2331
+ maxTokens: 128000,
2332
+ },
2333
+ "openai/gpt-5-mini": {
2334
+ id: "openai/gpt-5-mini",
2335
+ name: "OpenAI: GPT-5 Mini",
2336
+ api: "openai-completions",
2337
+ provider: "openrouter",
2338
+ baseUrl: "https://openrouter.ai/api/v1",
2339
+ reasoning: true,
2340
+ input: ["text", "image"],
2341
+ cost: {
2342
+ input: 0.25,
2343
+ output: 2,
2344
+ cacheRead: 0.024999999999999998,
2345
+ cacheWrite: 0,
2346
+ },
2347
+ contextWindow: 400000,
2348
+ maxTokens: 128000,
2349
+ },
2350
+ "openai/gpt-5-nano": {
2351
+ id: "openai/gpt-5-nano",
2352
+ name: "OpenAI: GPT-5 Nano",
2353
+ api: "openai-completions",
2354
+ provider: "openrouter",
2355
+ baseUrl: "https://openrouter.ai/api/v1",
2356
+ reasoning: true,
2357
+ input: ["text", "image"],
2358
+ cost: {
2359
+ input: 0.049999999999999996,
2360
+ output: 0.39999999999999997,
2361
+ cacheRead: 0.01,
2362
+ cacheWrite: 0,
2363
+ },
2364
+ contextWindow: 400000,
2365
+ maxTokens: 4096,
2366
+ },
2367
+ "openai/gpt-5-pro": {
2368
+ id: "openai/gpt-5-pro",
2369
+ name: "OpenAI: GPT-5 Pro",
2370
+ api: "openai-completions",
2371
+ provider: "openrouter",
2372
+ baseUrl: "https://openrouter.ai/api/v1",
2373
+ reasoning: true,
2374
+ input: ["text", "image"],
2375
+ cost: {
2376
+ input: 15,
2377
+ output: 120,
2378
+ cacheRead: 0,
2379
+ cacheWrite: 0,
2380
+ },
2381
+ contextWindow: 400000,
2382
+ maxTokens: 128000,
2383
+ },
2384
+ "openai/gpt-5.1": {
2385
+ id: "openai/gpt-5.1",
2386
+ name: "OpenAI: GPT-5.1",
2387
+ api: "openai-completions",
2388
+ provider: "openrouter",
2389
+ baseUrl: "https://openrouter.ai/api/v1",
2390
+ reasoning: true,
2391
+ input: ["text", "image"],
2392
+ cost: {
2393
+ input: 1.25,
2394
+ output: 10,
2395
+ cacheRead: 0.13,
2396
+ cacheWrite: 0,
2397
+ },
2398
+ contextWindow: 400000,
2399
+ maxTokens: 128000,
2400
+ },
2401
+ "openai/gpt-5.1-chat": {
2402
+ id: "openai/gpt-5.1-chat",
2403
+ name: "OpenAI: GPT-5.1 Chat",
2404
+ api: "openai-completions",
2405
+ provider: "openrouter",
2406
+ baseUrl: "https://openrouter.ai/api/v1",
2407
+ reasoning: false,
2408
+ input: ["text", "image"],
2409
+ cost: {
2410
+ input: 1.25,
2411
+ output: 10,
2412
+ cacheRead: 0.125,
2413
+ cacheWrite: 0,
2414
+ },
2415
+ contextWindow: 128000,
2416
+ maxTokens: 16384,
2417
+ },
2418
+ "openai/gpt-5.1-codex": {
2419
+ id: "openai/gpt-5.1-codex",
2420
+ name: "OpenAI: GPT-5.1-Codex",
2421
+ api: "openai-completions",
2422
+ provider: "openrouter",
2423
+ baseUrl: "https://openrouter.ai/api/v1",
2424
+ reasoning: true,
2425
+ input: ["text", "image"],
2426
+ cost: {
2427
+ input: 1.25,
2428
+ output: 10,
2429
+ cacheRead: 0.125,
2430
+ cacheWrite: 0,
2431
+ },
2432
+ contextWindow: 400000,
2433
+ maxTokens: 128000,
2434
+ },
2435
+ "openai/gpt-5.1-codex-max": {
2436
+ id: "openai/gpt-5.1-codex-max",
2437
+ name: "OpenAI: GPT-5.1-Codex-Max",
2438
+ api: "openai-completions",
2439
+ provider: "openrouter",
2440
+ baseUrl: "https://openrouter.ai/api/v1",
2441
+ reasoning: true,
2442
+ input: ["text", "image"],
2443
+ cost: {
2444
+ input: 1.25,
2445
+ output: 10,
2446
+ cacheRead: 0.125,
2447
+ cacheWrite: 0,
2448
+ },
2449
+ contextWindow: 400000,
2450
+ maxTokens: 128000,
2451
+ },
2452
+ "openai/gpt-5.1-codex-mini": {
2453
+ id: "openai/gpt-5.1-codex-mini",
2454
+ name: "OpenAI: GPT-5.1-Codex-Mini",
2455
+ api: "openai-completions",
2456
+ provider: "openrouter",
2457
+ baseUrl: "https://openrouter.ai/api/v1",
2458
+ reasoning: true,
2459
+ input: ["text", "image"],
2460
+ cost: {
2461
+ input: 0.25,
2462
+ output: 2,
2463
+ cacheRead: 0.03,
2464
+ cacheWrite: 0,
2465
+ },
2466
+ contextWindow: 400000,
2467
+ maxTokens: 128000,
2468
+ },
2469
+ "openai/gpt-5.2": {
2470
+ id: "openai/gpt-5.2",
2471
+ name: "OpenAI: GPT-5.2",
2472
+ api: "openai-completions",
2473
+ provider: "openrouter",
2474
+ baseUrl: "https://openrouter.ai/api/v1",
2475
+ reasoning: true,
2476
+ input: ["text", "image"],
2477
+ cost: {
2478
+ input: 1.75,
2479
+ output: 14,
2480
+ cacheRead: 0.175,
2481
+ cacheWrite: 0,
2482
+ },
2483
+ contextWindow: 400000,
2484
+ maxTokens: 128000,
2485
+ },
2486
+ "openai/gpt-5.2-chat": {
2487
+ id: "openai/gpt-5.2-chat",
2488
+ name: "OpenAI: GPT-5.2 Chat",
2489
+ api: "openai-completions",
2490
+ provider: "openrouter",
2491
+ baseUrl: "https://openrouter.ai/api/v1",
2492
+ reasoning: false,
2493
+ input: ["text", "image"],
2494
+ cost: {
2495
+ input: 1.75,
2496
+ output: 14,
2497
+ cacheRead: 0.175,
2498
+ cacheWrite: 0,
2499
+ },
2500
+ contextWindow: 128000,
2501
+ maxTokens: 32000,
2502
+ },
2503
+ "openai/gpt-5.2-codex": {
2504
+ id: "openai/gpt-5.2-codex",
2505
+ name: "OpenAI: GPT-5.2-Codex",
2506
+ api: "openai-completions",
2507
+ provider: "openrouter",
2508
+ baseUrl: "https://openrouter.ai/api/v1",
2509
+ reasoning: true,
2510
+ input: ["text", "image"],
2511
+ cost: {
2512
+ input: 1.75,
2513
+ output: 14,
2514
+ cacheRead: 0.175,
2515
+ cacheWrite: 0,
2516
+ },
2517
+ contextWindow: 400000,
2518
+ maxTokens: 128000,
2519
+ },
2520
+ "openai/gpt-5.2-pro": {
2521
+ id: "openai/gpt-5.2-pro",
2522
+ name: "OpenAI: GPT-5.2 Pro",
2523
+ api: "openai-completions",
2524
+ provider: "openrouter",
2525
+ baseUrl: "https://openrouter.ai/api/v1",
2526
+ reasoning: true,
2527
+ input: ["text", "image"],
2528
+ cost: {
2529
+ input: 21,
2530
+ output: 168,
2531
+ cacheRead: 0,
2532
+ cacheWrite: 0,
2533
+ },
2534
+ contextWindow: 400000,
2535
+ maxTokens: 128000,
2536
+ },
2537
+ "openai/gpt-5.3-chat": {
2538
+ id: "openai/gpt-5.3-chat",
2539
+ name: "OpenAI: GPT-5.3 Chat",
2540
+ api: "openai-completions",
2541
+ provider: "openrouter",
2542
+ baseUrl: "https://openrouter.ai/api/v1",
2543
+ reasoning: false,
2544
+ input: ["text", "image"],
2545
+ cost: {
2546
+ input: 1.75,
2547
+ output: 14,
2548
+ cacheRead: 0.175,
2549
+ cacheWrite: 0,
2550
+ },
2551
+ contextWindow: 128000,
2552
+ maxTokens: 16384,
2553
+ },
2554
+ "openai/gpt-5.3-codex": {
2555
+ id: "openai/gpt-5.3-codex",
2556
+ name: "OpenAI: GPT-5.3-Codex",
2557
+ api: "openai-completions",
2558
+ provider: "openrouter",
2559
+ baseUrl: "https://openrouter.ai/api/v1",
2560
+ reasoning: true,
2561
+ input: ["text", "image"],
2562
+ cost: {
2563
+ input: 1.75,
2564
+ output: 14,
2565
+ cacheRead: 0.175,
2566
+ cacheWrite: 0,
2567
+ },
2568
+ contextWindow: 400000,
2569
+ maxTokens: 128000,
2570
+ },
2571
+ "openai/gpt-5.4": {
2572
+ id: "openai/gpt-5.4",
2573
+ name: "OpenAI: GPT-5.4",
2574
+ api: "openai-completions",
2575
+ provider: "openrouter",
2576
+ baseUrl: "https://openrouter.ai/api/v1",
2577
+ reasoning: true,
2578
+ input: ["text", "image"],
2579
+ cost: {
2580
+ input: 2.5,
2581
+ output: 15,
2582
+ cacheRead: 0.25,
2583
+ cacheWrite: 0,
2584
+ },
2585
+ contextWindow: 1050000,
2586
+ maxTokens: 128000,
2587
+ },
2588
+ "openai/gpt-5.4-mini": {
2589
+ id: "openai/gpt-5.4-mini",
2590
+ name: "OpenAI: GPT-5.4 Mini",
2591
+ api: "openai-completions",
2592
+ provider: "openrouter",
2593
+ baseUrl: "https://openrouter.ai/api/v1",
2594
+ reasoning: true,
2595
+ input: ["text", "image"],
2596
+ cost: {
2597
+ input: 0.75,
2598
+ output: 4.5,
2599
+ cacheRead: 0.075,
2600
+ cacheWrite: 0,
2601
+ },
2602
+ contextWindow: 400000,
2603
+ maxTokens: 128000,
2604
+ },
2605
+ "openai/gpt-5.4-nano": {
2606
+ id: "openai/gpt-5.4-nano",
2607
+ name: "OpenAI: GPT-5.4 Nano",
2608
+ api: "openai-completions",
2609
+ provider: "openrouter",
2610
+ baseUrl: "https://openrouter.ai/api/v1",
2611
+ reasoning: true,
2612
+ input: ["text", "image"],
2613
+ cost: {
2614
+ input: 0.19999999999999998,
2615
+ output: 1.25,
2616
+ cacheRead: 0.02,
2617
+ cacheWrite: 0,
2618
+ },
2619
+ contextWindow: 400000,
2620
+ maxTokens: 128000,
2621
+ },
2622
+ "openai/gpt-5.4-pro": {
2623
+ id: "openai/gpt-5.4-pro",
2624
+ name: "OpenAI: GPT-5.4 Pro",
2625
+ api: "openai-completions",
2626
+ provider: "openrouter",
2627
+ baseUrl: "https://openrouter.ai/api/v1",
2628
+ reasoning: true,
2629
+ input: ["text", "image"],
2630
+ cost: {
2631
+ input: 30,
2632
+ output: 180,
2633
+ cacheRead: 0,
2634
+ cacheWrite: 0,
2635
+ },
2636
+ contextWindow: 1050000,
2637
+ maxTokens: 128000,
2638
+ },
2639
+ "openai/gpt-audio": {
2640
+ id: "openai/gpt-audio",
2641
+ name: "OpenAI: GPT Audio",
2642
+ api: "openai-completions",
2643
+ provider: "openrouter",
2644
+ baseUrl: "https://openrouter.ai/api/v1",
2645
+ reasoning: false,
2646
+ input: ["text"],
2647
+ cost: {
2648
+ input: 2.5,
2649
+ output: 10,
2650
+ cacheRead: 0,
2651
+ cacheWrite: 0,
2652
+ },
2653
+ contextWindow: 128000,
2654
+ maxTokens: 16384,
2655
+ },
2656
+ "openai/gpt-audio-mini": {
2657
+ id: "openai/gpt-audio-mini",
2658
+ name: "OpenAI: GPT Audio Mini",
2659
+ api: "openai-completions",
2660
+ provider: "openrouter",
2661
+ baseUrl: "https://openrouter.ai/api/v1",
2662
+ reasoning: false,
2663
+ input: ["text"],
2664
+ cost: {
2665
+ input: 0.6,
2666
+ output: 2.4,
2667
+ cacheRead: 0,
2668
+ cacheWrite: 0,
2669
+ },
2670
+ contextWindow: 128000,
2671
+ maxTokens: 16384,
2672
+ },
2673
+ "openai/gpt-oss-120b": {
2674
+ id: "openai/gpt-oss-120b",
2675
+ name: "OpenAI: gpt-oss-120b",
2676
+ api: "openai-completions",
2677
+ provider: "openrouter",
2678
+ baseUrl: "https://openrouter.ai/api/v1",
2679
+ reasoning: true,
2680
+ input: ["text"],
2681
+ cost: {
2682
+ input: 0.039,
2683
+ output: 0.19,
2684
+ cacheRead: 0,
2685
+ cacheWrite: 0,
2686
+ },
2687
+ contextWindow: 131072,
2688
+ maxTokens: 4096,
2689
+ },
2690
+ "openai/gpt-oss-120b:free": {
2691
+ id: "openai/gpt-oss-120b:free",
2692
+ name: "OpenAI: gpt-oss-120b (free)",
2693
+ api: "openai-completions",
2694
+ provider: "openrouter",
2695
+ baseUrl: "https://openrouter.ai/api/v1",
2696
+ reasoning: true,
2697
+ input: ["text"],
2698
+ cost: {
2699
+ input: 0,
2700
+ output: 0,
2701
+ cacheRead: 0,
2702
+ cacheWrite: 0,
2703
+ },
2704
+ contextWindow: 131072,
2705
+ maxTokens: 131072,
2706
+ },
2707
+ "openai/gpt-oss-20b": {
2708
+ id: "openai/gpt-oss-20b",
2709
+ name: "OpenAI: gpt-oss-20b",
2710
+ api: "openai-completions",
2711
+ provider: "openrouter",
2712
+ baseUrl: "https://openrouter.ai/api/v1",
2713
+ reasoning: true,
2714
+ input: ["text"],
2715
+ cost: {
2716
+ input: 0.03,
2717
+ output: 0.14,
2718
+ cacheRead: 0,
2719
+ cacheWrite: 0,
2720
+ },
2721
+ contextWindow: 131072,
2722
+ maxTokens: 4096,
2723
+ },
2724
+ "openai/gpt-oss-20b:free": {
2725
+ id: "openai/gpt-oss-20b:free",
2726
+ name: "OpenAI: gpt-oss-20b (free)",
2727
+ api: "openai-completions",
2728
+ provider: "openrouter",
2729
+ baseUrl: "https://openrouter.ai/api/v1",
2730
+ reasoning: true,
2731
+ input: ["text"],
2732
+ cost: {
2733
+ input: 0,
2734
+ output: 0,
2735
+ cacheRead: 0,
2736
+ cacheWrite: 0,
2737
+ },
2738
+ contextWindow: 131072,
2739
+ maxTokens: 8192,
2740
+ },
2741
+ "openai/gpt-oss-safeguard-20b": {
2742
+ id: "openai/gpt-oss-safeguard-20b",
2743
+ name: "OpenAI: gpt-oss-safeguard-20b",
2744
+ api: "openai-completions",
2745
+ provider: "openrouter",
2746
+ baseUrl: "https://openrouter.ai/api/v1",
2747
+ reasoning: true,
2748
+ input: ["text"],
2749
+ cost: {
2750
+ input: 0.075,
2751
+ output: 0.3,
2752
+ cacheRead: 0.037,
2753
+ cacheWrite: 0,
2754
+ },
2755
+ contextWindow: 131072,
2756
+ maxTokens: 65536,
2757
+ },
2758
+ "openai/o1": {
2759
+ id: "openai/o1",
2760
+ name: "OpenAI: o1",
2761
+ api: "openai-completions",
2762
+ provider: "openrouter",
2763
+ baseUrl: "https://openrouter.ai/api/v1",
2764
+ reasoning: true,
2765
+ input: ["text", "image"],
2766
+ cost: {
2767
+ input: 15,
2768
+ output: 60,
2769
+ cacheRead: 7.5,
2770
+ cacheWrite: 0,
2771
+ },
2772
+ contextWindow: 200000,
2773
+ maxTokens: 100000,
2774
+ },
2775
+ "openai/o3": {
2776
+ id: "openai/o3",
2777
+ name: "OpenAI: o3",
2778
+ api: "openai-completions",
2779
+ provider: "openrouter",
2780
+ baseUrl: "https://openrouter.ai/api/v1",
2781
+ reasoning: true,
2782
+ input: ["text", "image"],
2783
+ cost: {
2784
+ input: 2,
2785
+ output: 8,
2786
+ cacheRead: 0.5,
2787
+ cacheWrite: 0,
2788
+ },
2789
+ contextWindow: 200000,
2790
+ maxTokens: 100000,
2791
+ },
2792
+ "openai/o3-deep-research": {
2793
+ id: "openai/o3-deep-research",
2794
+ name: "OpenAI: o3 Deep Research",
2795
+ api: "openai-completions",
2796
+ provider: "openrouter",
2797
+ baseUrl: "https://openrouter.ai/api/v1",
2798
+ reasoning: true,
2799
+ input: ["text", "image"],
2800
+ cost: {
2801
+ input: 10,
2802
+ output: 40,
2803
+ cacheRead: 2.5,
2804
+ cacheWrite: 0,
2805
+ },
2806
+ contextWindow: 200000,
2807
+ maxTokens: 100000,
2808
+ },
2809
+ "openai/o3-mini": {
2810
+ id: "openai/o3-mini",
2811
+ name: "OpenAI: o3 Mini",
2812
+ api: "openai-completions",
2813
+ provider: "openrouter",
2814
+ baseUrl: "https://openrouter.ai/api/v1",
2815
+ reasoning: true,
2816
+ input: ["text"],
2817
+ cost: {
2818
+ input: 1.1,
2819
+ output: 4.4,
2820
+ cacheRead: 0.55,
2821
+ cacheWrite: 0,
2822
+ },
2823
+ contextWindow: 200000,
2824
+ maxTokens: 100000,
2825
+ },
2826
+ "openai/o3-mini-high": {
2827
+ id: "openai/o3-mini-high",
2828
+ name: "OpenAI: o3 Mini High",
2829
+ api: "openai-completions",
2830
+ provider: "openrouter",
2831
+ baseUrl: "https://openrouter.ai/api/v1",
2832
+ reasoning: true,
2833
+ input: ["text"],
2834
+ cost: {
2835
+ input: 1.1,
2836
+ output: 4.4,
2837
+ cacheRead: 0.55,
2838
+ cacheWrite: 0,
2839
+ },
2840
+ contextWindow: 200000,
2841
+ maxTokens: 100000,
2842
+ },
2843
+ "openai/o3-pro": {
2844
+ id: "openai/o3-pro",
2845
+ name: "OpenAI: o3 Pro",
2846
+ api: "openai-completions",
2847
+ provider: "openrouter",
2848
+ baseUrl: "https://openrouter.ai/api/v1",
2849
+ reasoning: true,
2850
+ input: ["text", "image"],
2851
+ cost: {
2852
+ input: 20,
2853
+ output: 80,
2854
+ cacheRead: 0,
2855
+ cacheWrite: 0,
2856
+ },
2857
+ contextWindow: 200000,
2858
+ maxTokens: 100000,
2859
+ },
2860
+ "openai/o4-mini": {
2861
+ id: "openai/o4-mini",
2862
+ name: "OpenAI: o4 Mini",
2863
+ api: "openai-completions",
2864
+ provider: "openrouter",
2865
+ baseUrl: "https://openrouter.ai/api/v1",
2866
+ reasoning: true,
2867
+ input: ["text", "image"],
2868
+ cost: {
2869
+ input: 1.1,
2870
+ output: 4.4,
2871
+ cacheRead: 0.275,
2872
+ cacheWrite: 0,
2873
+ },
2874
+ contextWindow: 200000,
2875
+ maxTokens: 100000,
2876
+ },
2877
+ "openai/o4-mini-deep-research": {
2878
+ id: "openai/o4-mini-deep-research",
2879
+ name: "OpenAI: o4 Mini Deep Research",
2880
+ api: "openai-completions",
2881
+ provider: "openrouter",
2882
+ baseUrl: "https://openrouter.ai/api/v1",
2883
+ reasoning: true,
2884
+ input: ["text", "image"],
2885
+ cost: {
2886
+ input: 2,
2887
+ output: 8,
2888
+ cacheRead: 0.5,
2889
+ cacheWrite: 0,
2890
+ },
2891
+ contextWindow: 200000,
2892
+ maxTokens: 100000,
2893
+ },
2894
+ "openai/o4-mini-high": {
2895
+ id: "openai/o4-mini-high",
2896
+ name: "OpenAI: o4 Mini High",
2897
+ api: "openai-completions",
2898
+ provider: "openrouter",
2899
+ baseUrl: "https://openrouter.ai/api/v1",
2900
+ reasoning: true,
2901
+ input: ["text", "image"],
2902
+ cost: {
2903
+ input: 1.1,
2904
+ output: 4.4,
2905
+ cacheRead: 0.275,
2906
+ cacheWrite: 0,
2907
+ },
2908
+ contextWindow: 200000,
2909
+ maxTokens: 100000,
2910
+ },
2911
+ "openrouter/auto": {
2912
+ id: "openrouter/auto",
2913
+ name: "Auto Router",
2914
+ api: "openai-completions",
2915
+ provider: "openrouter",
2916
+ baseUrl: "https://openrouter.ai/api/v1",
2917
+ reasoning: true,
2918
+ input: ["text", "image"],
2919
+ cost: {
2920
+ input: -1000000,
2921
+ output: -1000000,
2922
+ cacheRead: 0,
2923
+ cacheWrite: 0,
2924
+ },
2925
+ contextWindow: 2000000,
2926
+ maxTokens: 4096,
2927
+ },
2928
+ "openrouter/free": {
2929
+ id: "openrouter/free",
2930
+ name: "Free Models Router",
2931
+ api: "openai-completions",
2932
+ provider: "openrouter",
2933
+ baseUrl: "https://openrouter.ai/api/v1",
2934
+ reasoning: true,
2935
+ input: ["text", "image"],
2936
+ cost: {
2937
+ input: 0,
2938
+ output: 0,
2939
+ cacheRead: 0,
2940
+ cacheWrite: 0,
2941
+ },
2942
+ contextWindow: 200000,
2943
+ maxTokens: 4096,
2944
+ },
2945
+ "prime-intellect/intellect-3": {
2946
+ id: "prime-intellect/intellect-3",
2947
+ name: "Prime Intellect: INTELLECT-3",
2948
+ api: "openai-completions",
2949
+ provider: "openrouter",
2950
+ baseUrl: "https://openrouter.ai/api/v1",
2951
+ reasoning: true,
2952
+ input: ["text"],
2953
+ cost: {
2954
+ input: 0.19999999999999998,
2955
+ output: 1.1,
2956
+ cacheRead: 0,
2957
+ cacheWrite: 0,
2958
+ },
2959
+ contextWindow: 131072,
2960
+ maxTokens: 131072,
2961
+ },
2962
+ "qwen/qwen-2.5-72b-instruct": {
2963
+ id: "qwen/qwen-2.5-72b-instruct",
2964
+ name: "Qwen2.5 72B Instruct",
2965
+ api: "openai-completions",
2966
+ provider: "openrouter",
2967
+ baseUrl: "https://openrouter.ai/api/v1",
2968
+ reasoning: false,
2969
+ input: ["text"],
2970
+ cost: {
2971
+ input: 0.12,
2972
+ output: 0.39,
2973
+ cacheRead: 0,
2974
+ cacheWrite: 0,
2975
+ },
2976
+ contextWindow: 32768,
2977
+ maxTokens: 16384,
2978
+ },
2979
+ "qwen/qwen-2.5-7b-instruct": {
2980
+ id: "qwen/qwen-2.5-7b-instruct",
2981
+ name: "Qwen: Qwen2.5 7B Instruct",
2982
+ api: "openai-completions",
2983
+ provider: "openrouter",
2984
+ baseUrl: "https://openrouter.ai/api/v1",
2985
+ reasoning: false,
2986
+ input: ["text"],
2987
+ cost: {
2988
+ input: 0.04,
2989
+ output: 0.09999999999999999,
2990
+ cacheRead: 0,
2991
+ cacheWrite: 0,
2992
+ },
2993
+ contextWindow: 32768,
2994
+ maxTokens: 32768,
2995
+ },
2996
+ "qwen/qwen-max": {
2997
+ id: "qwen/qwen-max",
2998
+ name: "Qwen: Qwen-Max ",
2999
+ api: "openai-completions",
3000
+ provider: "openrouter",
3001
+ baseUrl: "https://openrouter.ai/api/v1",
3002
+ reasoning: false,
3003
+ input: ["text"],
3004
+ cost: {
3005
+ input: 1.04,
3006
+ output: 4.16,
3007
+ cacheRead: 0.20800000000000002,
3008
+ cacheWrite: 0,
3009
+ },
3010
+ contextWindow: 32768,
3011
+ maxTokens: 8192,
3012
+ },
3013
+ "qwen/qwen-plus": {
3014
+ id: "qwen/qwen-plus",
3015
+ name: "Qwen: Qwen-Plus",
3016
+ api: "openai-completions",
3017
+ provider: "openrouter",
3018
+ baseUrl: "https://openrouter.ai/api/v1",
3019
+ reasoning: false,
3020
+ input: ["text"],
3021
+ cost: {
3022
+ input: 0.26,
3023
+ output: 0.78,
3024
+ cacheRead: 0.052000000000000005,
3025
+ cacheWrite: 0,
3026
+ },
3027
+ contextWindow: 1000000,
3028
+ maxTokens: 32768,
3029
+ },
3030
+ "qwen/qwen-plus-2025-07-28": {
3031
+ id: "qwen/qwen-plus-2025-07-28",
3032
+ name: "Qwen: Qwen Plus 0728",
3033
+ api: "openai-completions",
3034
+ provider: "openrouter",
3035
+ baseUrl: "https://openrouter.ai/api/v1",
3036
+ reasoning: false,
3037
+ input: ["text"],
3038
+ cost: {
3039
+ input: 0.26,
3040
+ output: 0.78,
3041
+ cacheRead: 0,
3042
+ cacheWrite: 0,
3043
+ },
3044
+ contextWindow: 1000000,
3045
+ maxTokens: 32768,
3046
+ },
3047
+ "qwen/qwen-plus-2025-07-28:thinking": {
3048
+ id: "qwen/qwen-plus-2025-07-28:thinking",
3049
+ name: "Qwen: Qwen Plus 0728 (thinking)",
3050
+ api: "openai-completions",
3051
+ provider: "openrouter",
3052
+ baseUrl: "https://openrouter.ai/api/v1",
3053
+ reasoning: true,
3054
+ input: ["text"],
3055
+ cost: {
3056
+ input: 0.26,
3057
+ output: 0.78,
3058
+ cacheRead: 0,
3059
+ cacheWrite: 0,
3060
+ },
3061
+ contextWindow: 1000000,
3062
+ maxTokens: 32768,
3063
+ },
3064
+ "qwen/qwen-turbo": {
3065
+ id: "qwen/qwen-turbo",
3066
+ name: "Qwen: Qwen-Turbo",
3067
+ api: "openai-completions",
3068
+ provider: "openrouter",
3069
+ baseUrl: "https://openrouter.ai/api/v1",
3070
+ reasoning: false,
3071
+ input: ["text"],
3072
+ cost: {
3073
+ input: 0.0325,
3074
+ output: 0.13,
3075
+ cacheRead: 0.006500000000000001,
3076
+ cacheWrite: 0,
3077
+ },
3078
+ contextWindow: 131072,
3079
+ maxTokens: 8192,
3080
+ },
3081
+ "qwen/qwen-vl-max": {
3082
+ id: "qwen/qwen-vl-max",
3083
+ name: "Qwen: Qwen VL Max",
3084
+ api: "openai-completions",
3085
+ provider: "openrouter",
3086
+ baseUrl: "https://openrouter.ai/api/v1",
3087
+ reasoning: false,
3088
+ input: ["text", "image"],
3089
+ cost: {
3090
+ input: 0.52,
3091
+ output: 2.08,
3092
+ cacheRead: 0,
3093
+ cacheWrite: 0,
3094
+ },
3095
+ contextWindow: 131072,
3096
+ maxTokens: 32768,
3097
+ },
3098
+ "qwen/qwen3-14b": {
3099
+ id: "qwen/qwen3-14b",
3100
+ name: "Qwen: Qwen3 14B",
3101
+ api: "openai-completions",
3102
+ provider: "openrouter",
3103
+ baseUrl: "https://openrouter.ai/api/v1",
3104
+ reasoning: true,
3105
+ input: ["text"],
3106
+ cost: {
3107
+ input: 0.06,
3108
+ output: 0.24,
3109
+ cacheRead: 0,
3110
+ cacheWrite: 0,
3111
+ },
3112
+ contextWindow: 40960,
3113
+ maxTokens: 40960,
3114
+ },
3115
+ "qwen/qwen3-235b-a22b": {
3116
+ id: "qwen/qwen3-235b-a22b",
3117
+ name: "Qwen: Qwen3 235B A22B",
3118
+ api: "openai-completions",
3119
+ provider: "openrouter",
3120
+ baseUrl: "https://openrouter.ai/api/v1",
3121
+ reasoning: true,
3122
+ input: ["text"],
3123
+ cost: {
3124
+ input: 0.45499999999999996,
3125
+ output: 1.8199999999999998,
3126
+ cacheRead: 0,
3127
+ cacheWrite: 0,
3128
+ },
3129
+ contextWindow: 131072,
3130
+ maxTokens: 8192,
3131
+ },
3132
+ "qwen/qwen3-235b-a22b-2507": {
3133
+ id: "qwen/qwen3-235b-a22b-2507",
3134
+ name: "Qwen: Qwen3 235B A22B Instruct 2507",
3135
+ api: "openai-completions",
3136
+ provider: "openrouter",
3137
+ baseUrl: "https://openrouter.ai/api/v1",
3138
+ reasoning: true,
3139
+ input: ["text"],
3140
+ cost: {
3141
+ input: 0.071,
3142
+ output: 0.09999999999999999,
3143
+ cacheRead: 0,
3144
+ cacheWrite: 0,
3145
+ },
3146
+ contextWindow: 262144,
3147
+ maxTokens: 4096,
3148
+ },
3149
+ "qwen/qwen3-235b-a22b-thinking-2507": {
3150
+ id: "qwen/qwen3-235b-a22b-thinking-2507",
3151
+ name: "Qwen: Qwen3 235B A22B Thinking 2507",
3152
+ api: "openai-completions",
3153
+ provider: "openrouter",
3154
+ baseUrl: "https://openrouter.ai/api/v1",
3155
+ reasoning: true,
3156
+ input: ["text"],
3157
+ cost: {
3158
+ input: 0.14950000000000002,
3159
+ output: 1.495,
3160
+ cacheRead: 0,
3161
+ cacheWrite: 0,
3162
+ },
3163
+ contextWindow: 131072,
3164
+ maxTokens: 4096,
3165
+ },
3166
+ "qwen/qwen3-30b-a3b": {
3167
+ id: "qwen/qwen3-30b-a3b",
3168
+ name: "Qwen: Qwen3 30B A3B",
3169
+ api: "openai-completions",
3170
+ provider: "openrouter",
3171
+ baseUrl: "https://openrouter.ai/api/v1",
3172
+ reasoning: true,
3173
+ input: ["text"],
3174
+ cost: {
3175
+ input: 0.08,
3176
+ output: 0.28,
3177
+ cacheRead: 0,
3178
+ cacheWrite: 0,
3179
+ },
3180
+ contextWindow: 40960,
3181
+ maxTokens: 40960,
3182
+ },
3183
+ "qwen/qwen3-30b-a3b-instruct-2507": {
3184
+ id: "qwen/qwen3-30b-a3b-instruct-2507",
3185
+ name: "Qwen: Qwen3 30B A3B Instruct 2507",
3186
+ api: "openai-completions",
3187
+ provider: "openrouter",
3188
+ baseUrl: "https://openrouter.ai/api/v1",
3189
+ reasoning: false,
3190
+ input: ["text"],
3191
+ cost: {
3192
+ input: 0.09,
3193
+ output: 0.3,
3194
+ cacheRead: 0,
3195
+ cacheWrite: 0,
3196
+ },
3197
+ contextWindow: 262144,
3198
+ maxTokens: 262144,
3199
+ },
3200
+ "qwen/qwen3-30b-a3b-thinking-2507": {
3201
+ id: "qwen/qwen3-30b-a3b-thinking-2507",
3202
+ name: "Qwen: Qwen3 30B A3B Thinking 2507",
3203
+ api: "openai-completions",
3204
+ provider: "openrouter",
3205
+ baseUrl: "https://openrouter.ai/api/v1",
3206
+ reasoning: true,
3207
+ input: ["text"],
3208
+ cost: {
3209
+ input: 0.08,
3210
+ output: 0.39999999999999997,
3211
+ cacheRead: 0.08,
3212
+ cacheWrite: 0,
3213
+ },
3214
+ contextWindow: 131072,
3215
+ maxTokens: 131072,
3216
+ },
3217
+ "qwen/qwen3-32b": {
3218
+ id: "qwen/qwen3-32b",
3219
+ name: "Qwen: Qwen3 32B",
3220
+ api: "openai-completions",
3221
+ provider: "openrouter",
3222
+ baseUrl: "https://openrouter.ai/api/v1",
3223
+ reasoning: true,
3224
+ input: ["text"],
3225
+ cost: {
3226
+ input: 0.08,
3227
+ output: 0.24,
3228
+ cacheRead: 0.04,
3229
+ cacheWrite: 0,
3230
+ },
3231
+ contextWindow: 40960,
3232
+ maxTokens: 40960,
3233
+ },
3234
+ "qwen/qwen3-8b": {
3235
+ id: "qwen/qwen3-8b",
3236
+ name: "Qwen: Qwen3 8B",
3237
+ api: "openai-completions",
3238
+ provider: "openrouter",
3239
+ baseUrl: "https://openrouter.ai/api/v1",
3240
+ reasoning: true,
3241
+ input: ["text"],
3242
+ cost: {
3243
+ input: 0.049999999999999996,
3244
+ output: 0.39999999999999997,
3245
+ cacheRead: 0.049999999999999996,
3246
+ cacheWrite: 0,
3247
+ },
3248
+ contextWindow: 40960,
3249
+ maxTokens: 8192,
3250
+ },
3251
+ "qwen/qwen3-coder": {
3252
+ id: "qwen/qwen3-coder",
3253
+ name: "Qwen: Qwen3 Coder 480B A35B",
3254
+ api: "openai-completions",
3255
+ provider: "openrouter",
3256
+ baseUrl: "https://openrouter.ai/api/v1",
3257
+ reasoning: false,
3258
+ input: ["text"],
3259
+ cost: {
3260
+ input: 0.22,
3261
+ output: 1,
3262
+ cacheRead: 0.022,
3263
+ cacheWrite: 0,
3264
+ },
3265
+ contextWindow: 262144,
3266
+ maxTokens: 4096,
3267
+ },
3268
+ "qwen/qwen3-coder-30b-a3b-instruct": {
3269
+ id: "qwen/qwen3-coder-30b-a3b-instruct",
3270
+ name: "Qwen: Qwen3 Coder 30B A3B Instruct",
3271
+ api: "openai-completions",
3272
+ provider: "openrouter",
3273
+ baseUrl: "https://openrouter.ai/api/v1",
3274
+ reasoning: false,
3275
+ input: ["text"],
3276
+ cost: {
3277
+ input: 0.07,
3278
+ output: 0.27,
3279
+ cacheRead: 0,
3280
+ cacheWrite: 0,
3281
+ },
3282
+ contextWindow: 160000,
3283
+ maxTokens: 32768,
3284
+ },
3285
+ "qwen/qwen3-coder-flash": {
3286
+ id: "qwen/qwen3-coder-flash",
3287
+ name: "Qwen: Qwen3 Coder Flash",
3288
+ api: "openai-completions",
3289
+ provider: "openrouter",
3290
+ baseUrl: "https://openrouter.ai/api/v1",
3291
+ reasoning: false,
3292
+ input: ["text"],
3293
+ cost: {
3294
+ input: 0.195,
3295
+ output: 0.975,
3296
+ cacheRead: 0.039,
3297
+ cacheWrite: 0,
3298
+ },
3299
+ contextWindow: 1000000,
3300
+ maxTokens: 65536,
3301
+ },
3302
+ "qwen/qwen3-coder-next": {
3303
+ id: "qwen/qwen3-coder-next",
3304
+ name: "Qwen: Qwen3 Coder Next",
3305
+ api: "openai-completions",
3306
+ provider: "openrouter",
3307
+ baseUrl: "https://openrouter.ai/api/v1",
3308
+ reasoning: false,
3309
+ input: ["text"],
3310
+ cost: {
3311
+ input: 0.15,
3312
+ output: 0.7999999999999999,
3313
+ cacheRead: 0.12,
3314
+ cacheWrite: 0,
3315
+ },
3316
+ contextWindow: 262144,
3317
+ maxTokens: 262144,
3318
+ },
3319
+ "qwen/qwen3-coder-plus": {
3320
+ id: "qwen/qwen3-coder-plus",
3321
+ name: "Qwen: Qwen3 Coder Plus",
3322
+ api: "openai-completions",
3323
+ provider: "openrouter",
3324
+ baseUrl: "https://openrouter.ai/api/v1",
3325
+ reasoning: false,
3326
+ input: ["text"],
3327
+ cost: {
3328
+ input: 0.65,
3329
+ output: 3.25,
3330
+ cacheRead: 0.13,
3331
+ cacheWrite: 0,
3332
+ },
3333
+ contextWindow: 1000000,
3334
+ maxTokens: 65536,
3335
+ },
3336
+ "qwen/qwen3-coder:free": {
3337
+ id: "qwen/qwen3-coder:free",
3338
+ name: "Qwen: Qwen3 Coder 480B A35B (free)",
3339
+ api: "openai-completions",
3340
+ provider: "openrouter",
3341
+ baseUrl: "https://openrouter.ai/api/v1",
3342
+ reasoning: false,
3343
+ input: ["text"],
3344
+ cost: {
3345
+ input: 0,
3346
+ output: 0,
3347
+ cacheRead: 0,
3348
+ cacheWrite: 0,
3349
+ },
3350
+ contextWindow: 262000,
3351
+ maxTokens: 262000,
3352
+ },
3353
+ "qwen/qwen3-max": {
3354
+ id: "qwen/qwen3-max",
3355
+ name: "Qwen: Qwen3 Max",
3356
+ api: "openai-completions",
3357
+ provider: "openrouter",
3358
+ baseUrl: "https://openrouter.ai/api/v1",
3359
+ reasoning: false,
3360
+ input: ["text"],
3361
+ cost: {
3362
+ input: 0.78,
3363
+ output: 3.9,
3364
+ cacheRead: 0.156,
3365
+ cacheWrite: 0,
3366
+ },
3367
+ contextWindow: 262144,
3368
+ maxTokens: 32768,
3369
+ },
3370
+ "qwen/qwen3-max-thinking": {
3371
+ id: "qwen/qwen3-max-thinking",
3372
+ name: "Qwen: Qwen3 Max Thinking",
3373
+ api: "openai-completions",
3374
+ provider: "openrouter",
3375
+ baseUrl: "https://openrouter.ai/api/v1",
3376
+ reasoning: true,
3377
+ input: ["text"],
3378
+ cost: {
3379
+ input: 0.78,
3380
+ output: 3.9,
3381
+ cacheRead: 0,
3382
+ cacheWrite: 0,
3383
+ },
3384
+ contextWindow: 262144,
3385
+ maxTokens: 32768,
3386
+ },
3387
+ "qwen/qwen3-next-80b-a3b-instruct": {
3388
+ id: "qwen/qwen3-next-80b-a3b-instruct",
3389
+ name: "Qwen: Qwen3 Next 80B A3B Instruct",
3390
+ api: "openai-completions",
3391
+ provider: "openrouter",
3392
+ baseUrl: "https://openrouter.ai/api/v1",
3393
+ reasoning: false,
3394
+ input: ["text"],
3395
+ cost: {
3396
+ input: 0.09,
3397
+ output: 1.1,
3398
+ cacheRead: 0,
3399
+ cacheWrite: 0,
3400
+ },
3401
+ contextWindow: 262144,
3402
+ maxTokens: 4096,
3403
+ },
3404
+ "qwen/qwen3-next-80b-a3b-instruct:free": {
3405
+ id: "qwen/qwen3-next-80b-a3b-instruct:free",
3406
+ name: "Qwen: Qwen3 Next 80B A3B Instruct (free)",
3407
+ api: "openai-completions",
3408
+ provider: "openrouter",
3409
+ baseUrl: "https://openrouter.ai/api/v1",
3410
+ reasoning: false,
3411
+ input: ["text"],
3412
+ cost: {
3413
+ input: 0,
3414
+ output: 0,
3415
+ cacheRead: 0,
3416
+ cacheWrite: 0,
3417
+ },
3418
+ contextWindow: 262144,
3419
+ maxTokens: 4096,
3420
+ },
3421
+ "qwen/qwen3-next-80b-a3b-thinking": {
3422
+ id: "qwen/qwen3-next-80b-a3b-thinking",
3423
+ name: "Qwen: Qwen3 Next 80B A3B Thinking",
3424
+ api: "openai-completions",
3425
+ provider: "openrouter",
3426
+ baseUrl: "https://openrouter.ai/api/v1",
3427
+ reasoning: true,
3428
+ input: ["text"],
3429
+ cost: {
3430
+ input: 0.0975,
3431
+ output: 0.78,
3432
+ cacheRead: 0,
3433
+ cacheWrite: 0,
3434
+ },
3435
+ contextWindow: 131072,
3436
+ maxTokens: 32768,
3437
+ },
3438
+ "qwen/qwen3-vl-235b-a22b-instruct": {
3439
+ id: "qwen/qwen3-vl-235b-a22b-instruct",
3440
+ name: "Qwen: Qwen3 VL 235B A22B Instruct",
3441
+ api: "openai-completions",
3442
+ provider: "openrouter",
3443
+ baseUrl: "https://openrouter.ai/api/v1",
3444
+ reasoning: false,
3445
+ input: ["text", "image"],
3446
+ cost: {
3447
+ input: 0.19999999999999998,
3448
+ output: 0.88,
3449
+ cacheRead: 0.11,
3450
+ cacheWrite: 0,
3451
+ },
3452
+ contextWindow: 262144,
3453
+ maxTokens: 4096,
3454
+ },
3455
+ "qwen/qwen3-vl-235b-a22b-thinking": {
3456
+ id: "qwen/qwen3-vl-235b-a22b-thinking",
3457
+ name: "Qwen: Qwen3 VL 235B A22B Thinking",
3458
+ api: "openai-completions",
3459
+ provider: "openrouter",
3460
+ baseUrl: "https://openrouter.ai/api/v1",
3461
+ reasoning: true,
3462
+ input: ["text", "image"],
3463
+ cost: {
3464
+ input: 0.26,
3465
+ output: 2.6,
3466
+ cacheRead: 0,
3467
+ cacheWrite: 0,
3468
+ },
3469
+ contextWindow: 131072,
3470
+ maxTokens: 32768,
3471
+ },
3472
+ "qwen/qwen3-vl-30b-a3b-instruct": {
3473
+ id: "qwen/qwen3-vl-30b-a3b-instruct",
3474
+ name: "Qwen: Qwen3 VL 30B A3B Instruct",
3475
+ api: "openai-completions",
3476
+ provider: "openrouter",
3477
+ baseUrl: "https://openrouter.ai/api/v1",
3478
+ reasoning: false,
3479
+ input: ["text", "image"],
3480
+ cost: {
3481
+ input: 0.13,
3482
+ output: 0.52,
3483
+ cacheRead: 0,
3484
+ cacheWrite: 0,
3485
+ },
3486
+ contextWindow: 131072,
3487
+ maxTokens: 32768,
3488
+ },
3489
+ "qwen/qwen3-vl-30b-a3b-thinking": {
3490
+ id: "qwen/qwen3-vl-30b-a3b-thinking",
3491
+ name: "Qwen: Qwen3 VL 30B A3B Thinking",
3492
+ api: "openai-completions",
3493
+ provider: "openrouter",
3494
+ baseUrl: "https://openrouter.ai/api/v1",
3495
+ reasoning: true,
3496
+ input: ["text", "image"],
3497
+ cost: {
3498
+ input: 0.13,
3499
+ output: 1.56,
3500
+ cacheRead: 0,
3501
+ cacheWrite: 0,
3502
+ },
3503
+ contextWindow: 131072,
3504
+ maxTokens: 32768,
3505
+ },
3506
+ "qwen/qwen3-vl-32b-instruct": {
3507
+ id: "qwen/qwen3-vl-32b-instruct",
3508
+ name: "Qwen: Qwen3 VL 32B Instruct",
3509
+ api: "openai-completions",
3510
+ provider: "openrouter",
3511
+ baseUrl: "https://openrouter.ai/api/v1",
3512
+ reasoning: false,
3513
+ input: ["text", "image"],
3514
+ cost: {
3515
+ input: 0.10400000000000001,
3516
+ output: 0.41600000000000004,
3517
+ cacheRead: 0,
3518
+ cacheWrite: 0,
3519
+ },
3520
+ contextWindow: 131072,
3521
+ maxTokens: 32768,
3522
+ },
3523
+ "qwen/qwen3-vl-8b-instruct": {
3524
+ id: "qwen/qwen3-vl-8b-instruct",
3525
+ name: "Qwen: Qwen3 VL 8B Instruct",
3526
+ api: "openai-completions",
3527
+ provider: "openrouter",
3528
+ baseUrl: "https://openrouter.ai/api/v1",
3529
+ reasoning: false,
3530
+ input: ["text", "image"],
3531
+ cost: {
3532
+ input: 0.08,
3533
+ output: 0.5,
3534
+ cacheRead: 0,
3535
+ cacheWrite: 0,
3536
+ },
3537
+ contextWindow: 131072,
3538
+ maxTokens: 32768,
3539
+ },
3540
+ "qwen/qwen3-vl-8b-thinking": {
3541
+ id: "qwen/qwen3-vl-8b-thinking",
3542
+ name: "Qwen: Qwen3 VL 8B Thinking",
3543
+ api: "openai-completions",
3544
+ provider: "openrouter",
3545
+ baseUrl: "https://openrouter.ai/api/v1",
3546
+ reasoning: true,
3547
+ input: ["text", "image"],
3548
+ cost: {
3549
+ input: 0.117,
3550
+ output: 1.365,
3551
+ cacheRead: 0,
3552
+ cacheWrite: 0,
3553
+ },
3554
+ contextWindow: 131072,
3555
+ maxTokens: 32768,
3556
+ },
3557
+ "qwen/qwen3.5-122b-a10b": {
3558
+ id: "qwen/qwen3.5-122b-a10b",
3559
+ name: "Qwen: Qwen3.5-122B-A10B",
3560
+ api: "openai-completions",
3561
+ provider: "openrouter",
3562
+ baseUrl: "https://openrouter.ai/api/v1",
3563
+ reasoning: true,
3564
+ input: ["text", "image"],
3565
+ cost: {
3566
+ input: 0.26,
3567
+ output: 2.08,
3568
+ cacheRead: 0,
3569
+ cacheWrite: 0,
3570
+ },
3571
+ contextWindow: 262144,
3572
+ maxTokens: 65536,
3573
+ },
3574
+ "qwen/qwen3.5-27b": {
3575
+ id: "qwen/qwen3.5-27b",
3576
+ name: "Qwen: Qwen3.5-27B",
3577
+ api: "openai-completions",
3578
+ provider: "openrouter",
3579
+ baseUrl: "https://openrouter.ai/api/v1",
3580
+ reasoning: true,
3581
+ input: ["text", "image"],
3582
+ cost: {
3583
+ input: 0.195,
3584
+ output: 1.56,
3585
+ cacheRead: 0,
3586
+ cacheWrite: 0,
3587
+ },
3588
+ contextWindow: 262144,
3589
+ maxTokens: 65536,
3590
+ },
3591
+ "qwen/qwen3.5-35b-a3b": {
3592
+ id: "qwen/qwen3.5-35b-a3b",
3593
+ name: "Qwen: Qwen3.5-35B-A3B",
3594
+ api: "openai-completions",
3595
+ provider: "openrouter",
3596
+ baseUrl: "https://openrouter.ai/api/v1",
3597
+ reasoning: true,
3598
+ input: ["text", "image"],
3599
+ cost: {
3600
+ input: 0.1625,
3601
+ output: 1.3,
3602
+ cacheRead: 0,
3603
+ cacheWrite: 0,
3604
+ },
3605
+ contextWindow: 262144,
3606
+ maxTokens: 65536,
3607
+ },
3608
+ "qwen/qwen3.5-397b-a17b": {
3609
+ id: "qwen/qwen3.5-397b-a17b",
3610
+ name: "Qwen: Qwen3.5 397B A17B",
3611
+ api: "openai-completions",
3612
+ provider: "openrouter",
3613
+ baseUrl: "https://openrouter.ai/api/v1",
3614
+ reasoning: true,
3615
+ input: ["text", "image"],
3616
+ cost: {
3617
+ input: 0.39,
3618
+ output: 2.34,
3619
+ cacheRead: 0,
3620
+ cacheWrite: 0,
3621
+ },
3622
+ contextWindow: 262144,
3623
+ maxTokens: 65536,
3624
+ },
3625
+ "qwen/qwen3.5-9b": {
3626
+ id: "qwen/qwen3.5-9b",
3627
+ name: "Qwen: Qwen3.5-9B",
3628
+ api: "openai-completions",
3629
+ provider: "openrouter",
3630
+ baseUrl: "https://openrouter.ai/api/v1",
3631
+ reasoning: true,
3632
+ input: ["text", "image"],
3633
+ cost: {
3634
+ input: 0.049999999999999996,
3635
+ output: 0.15,
3636
+ cacheRead: 0,
3637
+ cacheWrite: 0,
3638
+ },
3639
+ contextWindow: 256000,
3640
+ maxTokens: 32768,
3641
+ },
3642
+ "qwen/qwen3.5-flash-02-23": {
3643
+ id: "qwen/qwen3.5-flash-02-23",
3644
+ name: "Qwen: Qwen3.5-Flash",
3645
+ api: "openai-completions",
3646
+ provider: "openrouter",
3647
+ baseUrl: "https://openrouter.ai/api/v1",
3648
+ reasoning: true,
3649
+ input: ["text", "image"],
3650
+ cost: {
3651
+ input: 0.065,
3652
+ output: 0.26,
3653
+ cacheRead: 0,
3654
+ cacheWrite: 0,
3655
+ },
3656
+ contextWindow: 1000000,
3657
+ maxTokens: 65536,
3658
+ },
3659
+ "qwen/qwen3.5-plus-02-15": {
3660
+ id: "qwen/qwen3.5-plus-02-15",
3661
+ name: "Qwen: Qwen3.5 Plus 2026-02-15",
3662
+ api: "openai-completions",
3663
+ provider: "openrouter",
3664
+ baseUrl: "https://openrouter.ai/api/v1",
3665
+ reasoning: true,
3666
+ input: ["text", "image"],
3667
+ cost: {
3668
+ input: 0.26,
3669
+ output: 1.56,
3670
+ cacheRead: 0,
3671
+ cacheWrite: 0,
3672
+ },
3673
+ contextWindow: 1000000,
3674
+ maxTokens: 65536,
3675
+ },
3676
+ "qwen/qwen3.6-plus": {
3677
+ id: "qwen/qwen3.6-plus",
3678
+ name: "Qwen: Qwen3.6 Plus",
3679
+ api: "openai-completions",
3680
+ provider: "openrouter",
3681
+ baseUrl: "https://openrouter.ai/api/v1",
3682
+ reasoning: true,
3683
+ input: ["text", "image"],
3684
+ cost: {
3685
+ input: 0.325,
3686
+ output: 1.95,
3687
+ cacheRead: 0,
3688
+ cacheWrite: 0,
3689
+ },
3690
+ contextWindow: 1000000,
3691
+ maxTokens: 65536,
3692
+ },
3693
+ "qwen/qwq-32b": {
3694
+ id: "qwen/qwq-32b",
3695
+ name: "Qwen: QwQ 32B",
3696
+ api: "openai-completions",
3697
+ provider: "openrouter",
3698
+ baseUrl: "https://openrouter.ai/api/v1",
3699
+ reasoning: true,
3700
+ input: ["text"],
3701
+ cost: {
3702
+ input: 0.15,
3703
+ output: 0.58,
3704
+ cacheRead: 0,
3705
+ cacheWrite: 0,
3706
+ },
3707
+ contextWindow: 131072,
3708
+ maxTokens: 131072,
3709
+ },
3710
+ "rekaai/reka-edge": {
3711
+ id: "rekaai/reka-edge",
3712
+ name: "Reka Edge",
3713
+ api: "openai-completions",
3714
+ provider: "openrouter",
3715
+ baseUrl: "https://openrouter.ai/api/v1",
3716
+ reasoning: false,
3717
+ input: ["text", "image"],
3718
+ cost: {
3719
+ input: 0.09999999999999999,
3720
+ output: 0.09999999999999999,
3721
+ cacheRead: 0,
3722
+ cacheWrite: 0,
3723
+ },
3724
+ contextWindow: 16384,
3725
+ maxTokens: 16384,
3726
+ },
3727
+ "relace/relace-search": {
3728
+ id: "relace/relace-search",
3729
+ name: "Relace: Relace Search",
3730
+ api: "openai-completions",
3731
+ provider: "openrouter",
3732
+ baseUrl: "https://openrouter.ai/api/v1",
3733
+ reasoning: false,
3734
+ input: ["text"],
3735
+ cost: {
3736
+ input: 1,
3737
+ output: 3,
3738
+ cacheRead: 0,
3739
+ cacheWrite: 0,
3740
+ },
3741
+ contextWindow: 256000,
3742
+ maxTokens: 128000,
3743
+ },
3744
+ "sao10k/l3-euryale-70b": {
3745
+ id: "sao10k/l3-euryale-70b",
3746
+ name: "Sao10k: Llama 3 Euryale 70B v2.1",
3747
+ api: "openai-completions",
3748
+ provider: "openrouter",
3749
+ baseUrl: "https://openrouter.ai/api/v1",
3750
+ reasoning: false,
3751
+ input: ["text"],
3752
+ cost: {
3753
+ input: 1.48,
3754
+ output: 1.48,
3755
+ cacheRead: 0,
3756
+ cacheWrite: 0,
3757
+ },
3758
+ contextWindow: 8192,
3759
+ maxTokens: 8192,
3760
+ },
3761
+ "sao10k/l3.1-euryale-70b": {
3762
+ id: "sao10k/l3.1-euryale-70b",
3763
+ name: "Sao10K: Llama 3.1 Euryale 70B v2.2",
3764
+ api: "openai-completions",
3765
+ provider: "openrouter",
3766
+ baseUrl: "https://openrouter.ai/api/v1",
3767
+ reasoning: false,
3768
+ input: ["text"],
3769
+ cost: {
3770
+ input: 0.85,
3771
+ output: 0.85,
3772
+ cacheRead: 0,
3773
+ cacheWrite: 0,
3774
+ },
3775
+ contextWindow: 131072,
3776
+ maxTokens: 16384,
3777
+ },
3778
+ "stepfun/step-3.5-flash": {
3779
+ id: "stepfun/step-3.5-flash",
3780
+ name: "StepFun: Step 3.5 Flash",
3781
+ api: "openai-completions",
3782
+ provider: "openrouter",
3783
+ baseUrl: "https://openrouter.ai/api/v1",
3784
+ reasoning: true,
3785
+ input: ["text"],
3786
+ cost: {
3787
+ input: 0.09999999999999999,
3788
+ output: 0.3,
3789
+ cacheRead: 0,
3790
+ cacheWrite: 0,
3791
+ },
3792
+ contextWindow: 262144,
3793
+ maxTokens: 65536,
3794
+ },
3795
+ "thedrummer/rocinante-12b": {
3796
+ id: "thedrummer/rocinante-12b",
3797
+ name: "TheDrummer: Rocinante 12B",
3798
+ api: "openai-completions",
3799
+ provider: "openrouter",
3800
+ baseUrl: "https://openrouter.ai/api/v1",
3801
+ reasoning: false,
3802
+ input: ["text"],
3803
+ cost: {
3804
+ input: 0.16999999999999998,
3805
+ output: 0.43,
3806
+ cacheRead: 0,
3807
+ cacheWrite: 0,
3808
+ },
3809
+ contextWindow: 32768,
3810
+ maxTokens: 32768,
3811
+ },
3812
+ "thedrummer/unslopnemo-12b": {
3813
+ id: "thedrummer/unslopnemo-12b",
3814
+ name: "TheDrummer: UnslopNemo 12B",
3815
+ api: "openai-completions",
3816
+ provider: "openrouter",
3817
+ baseUrl: "https://openrouter.ai/api/v1",
3818
+ reasoning: false,
3819
+ input: ["text"],
3820
+ cost: {
3821
+ input: 0.39999999999999997,
3822
+ output: 0.39999999999999997,
3823
+ cacheRead: 0,
3824
+ cacheWrite: 0,
3825
+ },
3826
+ contextWindow: 32768,
3827
+ maxTokens: 32768,
3828
+ },
3829
+ "tngtech/deepseek-r1t2-chimera": {
3830
+ id: "tngtech/deepseek-r1t2-chimera",
3831
+ name: "TNG: DeepSeek R1T2 Chimera",
3832
+ api: "openai-completions",
3833
+ provider: "openrouter",
3834
+ baseUrl: "https://openrouter.ai/api/v1",
3835
+ reasoning: true,
3836
+ input: ["text"],
3837
+ cost: {
3838
+ input: 0.3,
3839
+ output: 1.1,
3840
+ cacheRead: 0.15,
3841
+ cacheWrite: 0,
3842
+ },
3843
+ contextWindow: 163840,
3844
+ maxTokens: 163840,
3845
+ },
3846
+ "upstage/solar-pro-3": {
3847
+ id: "upstage/solar-pro-3",
3848
+ name: "Upstage: Solar Pro 3",
3849
+ api: "openai-completions",
3850
+ provider: "openrouter",
3851
+ baseUrl: "https://openrouter.ai/api/v1",
3852
+ reasoning: true,
3853
+ input: ["text"],
3854
+ cost: {
3855
+ input: 0.15,
3856
+ output: 0.6,
3857
+ cacheRead: 0.015,
3858
+ cacheWrite: 0,
3859
+ },
3860
+ contextWindow: 128000,
3861
+ maxTokens: 4096,
3862
+ },
3863
+ "x-ai/grok-3": {
3864
+ id: "x-ai/grok-3",
3865
+ name: "xAI: Grok 3",
3866
+ api: "openai-completions",
3867
+ provider: "openrouter",
3868
+ baseUrl: "https://openrouter.ai/api/v1",
3869
+ reasoning: false,
3870
+ input: ["text"],
3871
+ cost: {
3872
+ input: 3,
3873
+ output: 15,
3874
+ cacheRead: 0.75,
3875
+ cacheWrite: 0,
3876
+ },
3877
+ contextWindow: 131072,
3878
+ maxTokens: 4096,
3879
+ },
3880
+ "x-ai/grok-3-beta": {
3881
+ id: "x-ai/grok-3-beta",
3882
+ name: "xAI: Grok 3 Beta",
3883
+ api: "openai-completions",
3884
+ provider: "openrouter",
3885
+ baseUrl: "https://openrouter.ai/api/v1",
3886
+ reasoning: false,
3887
+ input: ["text"],
3888
+ cost: {
3889
+ input: 3,
3890
+ output: 15,
3891
+ cacheRead: 0.75,
3892
+ cacheWrite: 0,
3893
+ },
3894
+ contextWindow: 131072,
3895
+ maxTokens: 4096,
3896
+ },
3897
+ "x-ai/grok-3-mini": {
3898
+ id: "x-ai/grok-3-mini",
3899
+ name: "xAI: Grok 3 Mini",
3900
+ api: "openai-completions",
3901
+ provider: "openrouter",
3902
+ baseUrl: "https://openrouter.ai/api/v1",
3903
+ reasoning: true,
3904
+ input: ["text"],
3905
+ cost: {
3906
+ input: 0.3,
3907
+ output: 0.5,
3908
+ cacheRead: 0.075,
3909
+ cacheWrite: 0,
3910
+ },
3911
+ contextWindow: 131072,
3912
+ maxTokens: 4096,
3913
+ },
3914
+ "x-ai/grok-3-mini-beta": {
3915
+ id: "x-ai/grok-3-mini-beta",
3916
+ name: "xAI: Grok 3 Mini Beta",
3917
+ api: "openai-completions",
3918
+ provider: "openrouter",
3919
+ baseUrl: "https://openrouter.ai/api/v1",
3920
+ reasoning: true,
3921
+ input: ["text"],
3922
+ cost: {
3923
+ input: 0.3,
3924
+ output: 0.5,
3925
+ cacheRead: 0.075,
3926
+ cacheWrite: 0,
3927
+ },
3928
+ contextWindow: 131072,
3929
+ maxTokens: 4096,
3930
+ },
3931
+ "x-ai/grok-4": {
3932
+ id: "x-ai/grok-4",
3933
+ name: "xAI: Grok 4",
3934
+ api: "openai-completions",
3935
+ provider: "openrouter",
3936
+ baseUrl: "https://openrouter.ai/api/v1",
3937
+ reasoning: true,
3938
+ input: ["text", "image"],
3939
+ cost: {
3940
+ input: 3,
3941
+ output: 15,
3942
+ cacheRead: 0.75,
3943
+ cacheWrite: 0,
3944
+ },
3945
+ contextWindow: 256000,
3946
+ maxTokens: 4096,
3947
+ },
3948
+ "x-ai/grok-4-fast": {
3949
+ id: "x-ai/grok-4-fast",
3950
+ name: "xAI: Grok 4 Fast",
3951
+ api: "openai-completions",
3952
+ provider: "openrouter",
3953
+ baseUrl: "https://openrouter.ai/api/v1",
3954
+ reasoning: true,
3955
+ input: ["text", "image"],
3956
+ cost: {
3957
+ input: 0.19999999999999998,
3958
+ output: 0.5,
3959
+ cacheRead: 0.049999999999999996,
3960
+ cacheWrite: 0,
3961
+ },
3962
+ contextWindow: 2000000,
3963
+ maxTokens: 30000,
3964
+ },
3965
+ "x-ai/grok-4.1-fast": {
3966
+ id: "x-ai/grok-4.1-fast",
3967
+ name: "xAI: Grok 4.1 Fast",
3968
+ api: "openai-completions",
3969
+ provider: "openrouter",
3970
+ baseUrl: "https://openrouter.ai/api/v1",
3971
+ reasoning: true,
3972
+ input: ["text", "image"],
3973
+ cost: {
3974
+ input: 0.19999999999999998,
3975
+ output: 0.5,
3976
+ cacheRead: 0.049999999999999996,
3977
+ cacheWrite: 0,
3978
+ },
3979
+ contextWindow: 2000000,
3980
+ maxTokens: 30000,
3981
+ },
3982
+ "x-ai/grok-4.20": {
3983
+ id: "x-ai/grok-4.20",
3984
+ name: "xAI: Grok 4.20",
3985
+ api: "openai-completions",
3986
+ provider: "openrouter",
3987
+ baseUrl: "https://openrouter.ai/api/v1",
3988
+ reasoning: true,
3989
+ input: ["text", "image"],
3990
+ cost: {
3991
+ input: 2,
3992
+ output: 6,
3993
+ cacheRead: 0.19999999999999998,
3994
+ cacheWrite: 0,
3995
+ },
3996
+ contextWindow: 2000000,
3997
+ maxTokens: 4096,
3998
+ },
3999
+ "x-ai/grok-code-fast-1": {
4000
+ id: "x-ai/grok-code-fast-1",
4001
+ name: "xAI: Grok Code Fast 1",
4002
+ api: "openai-completions",
4003
+ provider: "openrouter",
4004
+ baseUrl: "https://openrouter.ai/api/v1",
4005
+ reasoning: true,
4006
+ input: ["text"],
4007
+ cost: {
4008
+ input: 0.19999999999999998,
4009
+ output: 1.5,
4010
+ cacheRead: 0.02,
4011
+ cacheWrite: 0,
4012
+ },
4013
+ contextWindow: 256000,
4014
+ maxTokens: 10000,
4015
+ },
4016
+ "xiaomi/mimo-v2-flash": {
4017
+ id: "xiaomi/mimo-v2-flash",
4018
+ name: "Xiaomi: MiMo-V2-Flash",
4019
+ api: "openai-completions",
4020
+ provider: "openrouter",
4021
+ baseUrl: "https://openrouter.ai/api/v1",
4022
+ reasoning: true,
4023
+ input: ["text"],
4024
+ cost: {
4025
+ input: 0.09,
4026
+ output: 0.29,
4027
+ cacheRead: 0.045,
4028
+ cacheWrite: 0,
4029
+ },
4030
+ contextWindow: 262144,
4031
+ maxTokens: 65536,
4032
+ },
4033
+ "xiaomi/mimo-v2-omni": {
4034
+ id: "xiaomi/mimo-v2-omni",
4035
+ name: "Xiaomi: MiMo-V2-Omni",
4036
+ api: "openai-completions",
4037
+ provider: "openrouter",
4038
+ baseUrl: "https://openrouter.ai/api/v1",
4039
+ reasoning: true,
4040
+ input: ["text", "image"],
4041
+ cost: {
4042
+ input: 0.39999999999999997,
4043
+ output: 2,
4044
+ cacheRead: 0.08,
4045
+ cacheWrite: 0,
4046
+ },
4047
+ contextWindow: 262144,
4048
+ maxTokens: 65536,
4049
+ },
4050
+ "xiaomi/mimo-v2-pro": {
4051
+ id: "xiaomi/mimo-v2-pro",
4052
+ name: "Xiaomi: MiMo-V2-Pro",
4053
+ api: "openai-completions",
4054
+ provider: "openrouter",
4055
+ baseUrl: "https://openrouter.ai/api/v1",
4056
+ reasoning: true,
4057
+ input: ["text"],
4058
+ cost: {
4059
+ input: 1,
4060
+ output: 3,
4061
+ cacheRead: 0.19999999999999998,
4062
+ cacheWrite: 0,
4063
+ },
4064
+ contextWindow: 1048576,
4065
+ maxTokens: 131072,
4066
+ },
4067
+ "z-ai/glm-4-32b": {
4068
+ id: "z-ai/glm-4-32b",
4069
+ name: "Z.ai: GLM 4 32B ",
4070
+ api: "openai-completions",
4071
+ provider: "openrouter",
4072
+ baseUrl: "https://openrouter.ai/api/v1",
4073
+ reasoning: false,
4074
+ input: ["text"],
4075
+ cost: {
4076
+ input: 0.09999999999999999,
4077
+ output: 0.09999999999999999,
4078
+ cacheRead: 0,
4079
+ cacheWrite: 0,
4080
+ },
4081
+ contextWindow: 128000,
4082
+ maxTokens: 4096,
4083
+ },
4084
+ "z-ai/glm-4.5": {
4085
+ id: "z-ai/glm-4.5",
4086
+ name: "Z.ai: GLM 4.5",
4087
+ api: "openai-completions",
4088
+ provider: "openrouter",
4089
+ baseUrl: "https://openrouter.ai/api/v1",
4090
+ reasoning: true,
4091
+ input: ["text"],
4092
+ cost: {
4093
+ input: 0.6,
4094
+ output: 2.2,
4095
+ cacheRead: 0.11,
4096
+ cacheWrite: 0,
4097
+ },
4098
+ contextWindow: 131072,
4099
+ maxTokens: 98304,
4100
+ },
4101
+ "z-ai/glm-4.5-air": {
4102
+ id: "z-ai/glm-4.5-air",
4103
+ name: "Z.ai: GLM 4.5 Air",
4104
+ api: "openai-completions",
4105
+ provider: "openrouter",
4106
+ baseUrl: "https://openrouter.ai/api/v1",
4107
+ reasoning: true,
4108
+ input: ["text"],
4109
+ cost: {
4110
+ input: 0.13,
4111
+ output: 0.85,
4112
+ cacheRead: 0.024999999999999998,
4113
+ cacheWrite: 0,
4114
+ },
4115
+ contextWindow: 131072,
4116
+ maxTokens: 98304,
4117
+ },
4118
+ "z-ai/glm-4.5-air:free": {
4119
+ id: "z-ai/glm-4.5-air:free",
4120
+ name: "Z.ai: GLM 4.5 Air (free)",
4121
+ api: "openai-completions",
4122
+ provider: "openrouter",
4123
+ baseUrl: "https://openrouter.ai/api/v1",
4124
+ reasoning: true,
4125
+ input: ["text"],
4126
+ cost: {
4127
+ input: 0,
4128
+ output: 0,
4129
+ cacheRead: 0,
4130
+ cacheWrite: 0,
4131
+ },
4132
+ contextWindow: 131072,
4133
+ maxTokens: 96000,
4134
+ },
4135
+ "z-ai/glm-4.5v": {
4136
+ id: "z-ai/glm-4.5v",
4137
+ name: "Z.ai: GLM 4.5V",
4138
+ api: "openai-completions",
4139
+ provider: "openrouter",
4140
+ baseUrl: "https://openrouter.ai/api/v1",
4141
+ reasoning: true,
4142
+ input: ["text", "image"],
4143
+ cost: {
4144
+ input: 0.6,
4145
+ output: 1.7999999999999998,
4146
+ cacheRead: 0.11,
4147
+ cacheWrite: 0,
4148
+ },
4149
+ contextWindow: 65536,
4150
+ maxTokens: 16384,
4151
+ },
4152
+ "z-ai/glm-4.6": {
4153
+ id: "z-ai/glm-4.6",
4154
+ name: "Z.ai: GLM 4.6",
4155
+ api: "openai-completions",
4156
+ provider: "openrouter",
4157
+ baseUrl: "https://openrouter.ai/api/v1",
4158
+ reasoning: true,
4159
+ input: ["text"],
4160
+ cost: {
4161
+ input: 0.39,
4162
+ output: 1.9,
4163
+ cacheRead: 0,
4164
+ cacheWrite: 0,
4165
+ },
4166
+ contextWindow: 204800,
4167
+ maxTokens: 204800,
4168
+ },
4169
+ "z-ai/glm-4.6v": {
4170
+ id: "z-ai/glm-4.6v",
4171
+ name: "Z.ai: GLM 4.6V",
4172
+ api: "openai-completions",
4173
+ provider: "openrouter",
4174
+ baseUrl: "https://openrouter.ai/api/v1",
4175
+ reasoning: true,
4176
+ input: ["text", "image"],
4177
+ cost: {
4178
+ input: 0.3,
4179
+ output: 0.8999999999999999,
4180
+ cacheRead: 0,
4181
+ cacheWrite: 0,
4182
+ },
4183
+ contextWindow: 131072,
4184
+ maxTokens: 131072,
4185
+ },
4186
+ "z-ai/glm-4.7": {
4187
+ id: "z-ai/glm-4.7",
4188
+ name: "Z.ai: GLM 4.7",
4189
+ api: "openai-completions",
4190
+ provider: "openrouter",
4191
+ baseUrl: "https://openrouter.ai/api/v1",
4192
+ reasoning: true,
4193
+ input: ["text"],
4194
+ cost: {
4195
+ input: 0.39,
4196
+ output: 1.75,
4197
+ cacheRead: 0.195,
4198
+ cacheWrite: 0,
4199
+ },
4200
+ contextWindow: 202752,
4201
+ maxTokens: 65535,
4202
+ },
4203
+ "z-ai/glm-4.7-flash": {
4204
+ id: "z-ai/glm-4.7-flash",
4205
+ name: "Z.ai: GLM 4.7 Flash",
4206
+ api: "openai-completions",
4207
+ provider: "openrouter",
4208
+ baseUrl: "https://openrouter.ai/api/v1",
4209
+ reasoning: true,
4210
+ input: ["text"],
4211
+ cost: {
4212
+ input: 0.06,
4213
+ output: 0.39999999999999997,
4214
+ cacheRead: 0.0100000002,
4215
+ cacheWrite: 0,
4216
+ },
4217
+ contextWindow: 202752,
4218
+ maxTokens: 4096,
4219
+ },
4220
+ "z-ai/glm-5": {
4221
+ id: "z-ai/glm-5",
4222
+ name: "Z.ai: GLM 5",
4223
+ api: "openai-completions",
4224
+ provider: "openrouter",
4225
+ baseUrl: "https://openrouter.ai/api/v1",
4226
+ reasoning: true,
4227
+ input: ["text"],
4228
+ cost: {
4229
+ input: 0.6,
4230
+ output: 1.9,
4231
+ cacheRead: 0.119,
4232
+ cacheWrite: 0,
4233
+ },
4234
+ contextWindow: 80000,
4235
+ maxTokens: 131072,
4236
+ },
4237
+ "z-ai/glm-5-turbo": {
4238
+ id: "z-ai/glm-5-turbo",
4239
+ name: "Z.ai: GLM 5 Turbo",
4240
+ api: "openai-completions",
4241
+ provider: "openrouter",
4242
+ baseUrl: "https://openrouter.ai/api/v1",
4243
+ reasoning: true,
4244
+ input: ["text"],
4245
+ cost: {
4246
+ input: 1.2,
4247
+ output: 4,
4248
+ cacheRead: 0.24,
4249
+ cacheWrite: 0,
4250
+ },
4251
+ contextWindow: 202752,
4252
+ maxTokens: 131072,
4253
+ },
4254
+ "z-ai/glm-5.1": {
4255
+ id: "z-ai/glm-5.1",
4256
+ name: "Z.ai: GLM 5.1",
4257
+ api: "openai-completions",
4258
+ provider: "openrouter",
4259
+ baseUrl: "https://openrouter.ai/api/v1",
4260
+ reasoning: true,
4261
+ input: ["text"],
4262
+ cost: {
4263
+ input: 0.95,
4264
+ output: 3.15,
4265
+ cacheRead: 0.475,
4266
+ cacheWrite: 0,
4267
+ },
4268
+ contextWindow: 202752,
4269
+ maxTokens: 65535,
4270
+ },
4271
+ "z-ai/glm-5v-turbo": {
4272
+ id: "z-ai/glm-5v-turbo",
4273
+ name: "Z.ai: GLM 5V Turbo",
4274
+ api: "openai-completions",
4275
+ provider: "openrouter",
4276
+ baseUrl: "https://openrouter.ai/api/v1",
4277
+ reasoning: true,
4278
+ input: ["text", "image"],
4279
+ cost: {
4280
+ input: 1.2,
4281
+ output: 4,
4282
+ cacheRead: 0.24,
4283
+ cacheWrite: 0,
4284
+ },
4285
+ contextWindow: 202752,
4286
+ maxTokens: 131072,
4287
+ },
4288
+ };
4289
+ //# sourceMappingURL=openrouter.js.map