@cloudcli-ai/cloudcli 1.37.0 → 1.37.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/dist/assets/abnfDiagram-N423BO3Z-C4UAoHJb.js +1 -0
  2. package/dist/assets/arc-B8jF-ja9.js +1 -0
  3. package/dist/assets/architectureDiagram-T3A2C74G-C_Wur_CU.js +36 -0
  4. package/dist/assets/blockDiagram-VBNYF7ZC-Cq4P1i8t.js +132 -0
  5. package/dist/assets/c4Diagram-5PPSVZJV-C1wG4eUj.js +10 -0
  6. package/dist/assets/channel-_falYbU1.js +1 -0
  7. package/dist/assets/chunk-2GRJ4B5K-B8fnBG6E.js +1 -0
  8. package/dist/assets/chunk-2Q5K7J3B-WdfPooPJ.js +1 -0
  9. package/dist/assets/chunk-5RXB4S5H-DhZJuG2E.js +231 -0
  10. package/dist/assets/chunk-5VM5RSS4-B0rjslal.js +15 -0
  11. package/dist/assets/chunk-6Q2QTUOP-CG2Oj4jL.js +88 -0
  12. package/dist/assets/chunk-GF5L2VYU-rrl2lRxY.js +206 -0
  13. package/dist/assets/chunk-JWPE2WC7-CjVbrVMA.js +1 -0
  14. package/dist/assets/chunk-KBJHAD2P-CRzKgU8S.js +1 -0
  15. package/dist/assets/chunk-RYQCIY6F-DBz4GTZF.js +1 -0
  16. package/dist/assets/chunk-XXDRQBXY-wHxalsXk.js +1 -0
  17. package/dist/assets/classDiagram-JCYQIIEL-Dn-3CfpR.js +1 -0
  18. package/dist/assets/classDiagram-v2-OCEON4UE-Dn-3CfpR.js +1 -0
  19. package/dist/assets/cose-bilkent-JH36ORCC-s1hygY8e.js +1 -0
  20. package/dist/assets/cynefin-VYW2F7L2-C4LGV15i.js +178 -0
  21. package/dist/assets/cynefinDiagram-MW4NZA55-C5uhu7B3.js +62 -0
  22. package/dist/assets/cytoscape.esm-C10L9Icf.js +331 -0
  23. package/dist/assets/dagre-VZM6K2ZE-B-OBTewm.js +4 -0
  24. package/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  25. package/dist/assets/diagram-7IWD3JNH-BjGKQxih.js +30 -0
  26. package/dist/assets/diagram-B4RE2ZJO-BMKz1X2L.js +3 -0
  27. package/dist/assets/diagram-LBJQPF4R-DNh-GhKC.js +24 -0
  28. package/dist/assets/diagram-Q27KOJAE-BaTG9jPT.js +24 -0
  29. package/dist/assets/diagram-UB23O5K3-BUwo2OvJ.js +41 -0
  30. package/dist/assets/ebnfDiagram-BXEA7PRR-DAZgfzX2.js +1 -0
  31. package/dist/assets/erDiagram-JOGREHBK-1w1CcGEb.js +85 -0
  32. package/dist/assets/flowDiagram-UKHOOZJN-D4EII8Jj.js +156 -0
  33. package/dist/assets/ganttDiagram-PKOTCBZU-ChvJZAgB.js +292 -0
  34. package/dist/assets/gitGraphDiagram-DS77QQ5N-DtOn41S8.js +106 -0
  35. package/dist/assets/graph-Cx-EqisW.js +1 -0
  36. package/dist/assets/index-CzPLBvXT.css +32 -0
  37. package/dist/assets/index-DFkBBuSA.js +1549 -0
  38. package/dist/assets/infoDiagram-6WML65LV-DN_PVEJZ.js +2 -0
  39. package/dist/assets/init-Gi6I4Gst.js +1 -0
  40. package/dist/assets/ishikawaDiagram-WSZJBQD7-DbkF1kXb.js +70 -0
  41. package/dist/assets/journeyDiagram-NVQOT4AX-pJwmhddE.js +139 -0
  42. package/dist/assets/kanban-definition-27J2QSJJ-PPAPgNp5.js +89 -0
  43. package/dist/assets/layout-D6BstSzF.js +1 -0
  44. package/dist/assets/linear-iPR-J9f7.js +1 -0
  45. package/dist/assets/map-CV9uif0g.js +1 -0
  46. package/dist/assets/mermaid.core-BEUL86Z6.js +312 -0
  47. package/dist/assets/mindmap-definition-FAOFIHXS-BvZoBib7.js +96 -0
  48. package/dist/assets/ordinal-Cboi1Yqb.js +1 -0
  49. package/dist/assets/pegDiagram-VL7TDLO6-DhYreaUd.js +1 -0
  50. package/dist/assets/pieDiagram-7S7Q4E2Y-CrOHlyD0.js +39 -0
  51. package/dist/assets/quadrantDiagram-CIZ2JOQS-D4g5yH3t.js +7 -0
  52. package/dist/assets/railroadDiagram-AXF67PYL-Dj39lHlf.js +1 -0
  53. package/dist/assets/requirementDiagram-LRYGKXZP-1AS4Zgm_.js +84 -0
  54. package/dist/assets/sankeyDiagram-W5VNT64P-CKlMn19P.js +40 -0
  55. package/dist/assets/sequenceDiagram-SI44F4Z6-B_j3qyvo.js +162 -0
  56. package/dist/assets/sizeCapture-X5ZJPWSS-Bp2Op16v.js +1 -0
  57. package/dist/assets/stateDiagram-OKZ733FA-C0cN6DoY.js +1 -0
  58. package/dist/assets/stateDiagram-v2-UEYNNEHI-BvBxUUrZ.js +1 -0
  59. package/dist/assets/swimlanes-SLNWSIFB-BEvXOV9b.js +2 -0
  60. package/dist/assets/swimlanesDiagram-ULZ7WXOC-CsE-x4YK.js +8 -0
  61. package/dist/assets/timeline-definition-Z64GVDOM-zdJQinvZ.js +120 -0
  62. package/dist/assets/vennDiagram-T6HMQDX7-DuF1uZMY.js +34 -0
  63. package/dist/assets/wardleyDiagram-T6FBY63Y-B9AlLQup.js +78 -0
  64. package/dist/assets/xychartDiagram-ELKLHX3M-DTJX48Qg.js +7 -0
  65. package/dist/index.html +2 -2
  66. package/dist-server/server/index.js +1 -2
  67. package/dist-server/server/index.js.map +1 -1
  68. package/dist-server/server/modules/agent/agent.module.js +2 -1
  69. package/dist-server/server/modules/agent/agent.module.js.map +1 -1
  70. package/dist-server/server/modules/auth/auth.middleware.js +1 -1
  71. package/dist-server/server/modules/auth/auth.middleware.js.map +1 -1
  72. package/dist-server/server/modules/browser-use/browser-use-runtime.js +10 -0
  73. package/dist-server/server/modules/browser-use/browser-use-runtime.js.map +1 -0
  74. package/dist-server/server/modules/browser-use/browser-use.service.js +3 -6
  75. package/dist-server/server/modules/browser-use/browser-use.service.js.map +1 -1
  76. package/dist-server/server/modules/browser-use/index.js +2 -0
  77. package/dist-server/server/modules/browser-use/index.js.map +1 -1
  78. package/dist-server/server/modules/cli/cli.js +9 -3
  79. package/dist-server/server/modules/cli/cli.js.map +1 -1
  80. package/dist-server/server/modules/cli/cli.module.js +0 -1
  81. package/dist-server/server/modules/cli/cli.module.js.map +1 -1
  82. package/dist-server/server/modules/cli/cli.service.js +0 -18
  83. package/dist-server/server/modules/cli/cli.service.js.map +1 -1
  84. package/dist-server/server/modules/cli/tests/cli-environment-bootstrap.test.js +154 -0
  85. package/dist-server/server/modules/cli/tests/cli-environment-bootstrap.test.js.map +1 -0
  86. package/dist-server/server/modules/cli/tests/cli.service.test.js +0 -3
  87. package/dist-server/server/modules/cli/tests/cli.service.test.js.map +1 -1
  88. package/dist-server/server/modules/commands/commands.routes.js +3 -3
  89. package/dist-server/server/modules/commands/commands.routes.js.map +1 -1
  90. package/dist-server/server/modules/commands/tests/commands.test.js +2 -7
  91. package/dist-server/server/modules/commands/tests/commands.test.js.map +1 -1
  92. package/dist-server/server/modules/database/index.js +2 -0
  93. package/dist-server/server/modules/database/index.js.map +1 -1
  94. package/dist-server/server/modules/database/migrations.js +18 -1
  95. package/dist-server/server/modules/database/migrations.js.map +1 -1
  96. package/dist-server/server/modules/database/repositories/provider-models.js +112 -0
  97. package/dist-server/server/modules/database/repositories/provider-models.js.map +1 -0
  98. package/dist-server/server/modules/database/repositories/sessions.db.js +63 -7
  99. package/dist-server/server/modules/database/repositories/sessions.db.js.map +1 -1
  100. package/dist-server/server/modules/database/schema.js +28 -3
  101. package/dist-server/server/modules/database/schema.js.map +1 -1
  102. package/dist-server/server/modules/database/tests/provider-models.db.integration.test.js +102 -0
  103. package/dist-server/server/modules/database/tests/provider-models.db.integration.test.js.map +1 -0
  104. package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js +2 -1
  105. package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js.map +1 -1
  106. package/dist-server/server/modules/database/tests/sessions.db.integration.test.js +22 -0
  107. package/dist-server/server/modules/database/tests/sessions.db.integration.test.js.map +1 -1
  108. package/dist-server/server/modules/file-tree/file-tree.module.js +5 -1
  109. package/dist-server/server/modules/file-tree/file-tree.module.js.map +1 -1
  110. package/dist-server/server/modules/file-tree/file-tree.service.js +60 -20
  111. package/dist-server/server/modules/file-tree/file-tree.service.js.map +1 -1
  112. package/dist-server/server/modules/file-tree/tests/file-tree.service.test.js +143 -16
  113. package/dist-server/server/modules/file-tree/tests/file-tree.service.test.js.map +1 -1
  114. package/dist-server/server/modules/git/git-branch.service.js +15 -0
  115. package/dist-server/server/modules/git/git-branch.service.js.map +1 -0
  116. package/dist-server/server/modules/git/git.routes.js +15 -7
  117. package/dist-server/server/modules/git/git.routes.js.map +1 -1
  118. package/dist-server/server/modules/git/tests/git-branch.service.test.js +52 -0
  119. package/dist-server/server/modules/git/tests/git-branch.service.test.js.map +1 -0
  120. package/dist-server/server/modules/git/tests/git-init.routes.test.js +84 -0
  121. package/dist-server/server/modules/git/tests/git-init.routes.test.js.map +1 -1
  122. package/dist-server/server/modules/notifications/index.js +3 -1
  123. package/dist-server/server/modules/notifications/index.js.map +1 -1
  124. package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js +22 -1
  125. package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js.map +1 -1
  126. package/dist-server/server/modules/providers/list/claude/claude-models.provider.js +46 -14
  127. package/dist-server/server/modules/providers/list/claude/claude-models.provider.js.map +1 -1
  128. package/dist-server/server/modules/providers/list/claude/claude-runtime.provider.js +259 -60
  129. package/dist-server/server/modules/providers/list/claude/claude-runtime.provider.js.map +1 -1
  130. package/dist-server/server/modules/providers/list/codex/codex-models.provider.js +58 -71
  131. package/dist-server/server/modules/providers/list/codex/codex-models.provider.js.map +1 -1
  132. package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js +1 -54
  133. package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js.map +1 -1
  134. package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js +7 -7
  135. package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js.map +1 -1
  136. package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js +32 -669
  137. package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js.map +1 -1
  138. package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js +105 -328
  139. package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js.map +1 -1
  140. package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js +0 -12
  141. package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js.map +1 -1
  142. package/dist-server/server/modules/providers/provider.routes.js +144 -31
  143. package/dist-server/server/modules/providers/provider.routes.js.map +1 -1
  144. package/dist-server/server/modules/providers/services/provider-models.service.js +167 -199
  145. package/dist-server/server/modules/providers/services/provider-models.service.js.map +1 -1
  146. package/dist-server/server/modules/providers/services/provider-runtime.service.js +2 -2
  147. package/dist-server/server/modules/providers/services/provider-runtime.service.js.map +1 -1
  148. package/dist-server/server/modules/providers/services/session-conversations-search.service.js +75 -11
  149. package/dist-server/server/modules/providers/services/session-conversations-search.service.js.map +1 -1
  150. package/dist-server/server/modules/providers/services/sessions.service.js +62 -3
  151. package/dist-server/server/modules/providers/services/sessions.service.js.map +1 -1
  152. package/dist-server/server/modules/providers/tests/codex-sessions.test.js +53 -17
  153. package/dist-server/server/modules/providers/tests/codex-sessions.test.js.map +1 -1
  154. package/dist-server/server/modules/providers/tests/opencode-models.test.js +15 -126
  155. package/dist-server/server/modules/providers/tests/opencode-models.test.js.map +1 -1
  156. package/dist-server/server/modules/providers/tests/opencode-sessions.test.js +5 -5
  157. package/dist-server/server/modules/providers/tests/opencode-sessions.test.js.map +1 -1
  158. package/dist-server/server/modules/providers/tests/provider-models.service.test.js +175 -292
  159. package/dist-server/server/modules/providers/tests/provider-models.service.test.js.map +1 -1
  160. package/dist-server/server/modules/providers/tests/provider-runtime.service.test.js +2 -6
  161. package/dist-server/server/modules/providers/tests/provider-runtime.service.test.js.map +1 -1
  162. package/dist-server/server/modules/providers/tests/provider-token-usage.service.test.js +1 -0
  163. package/dist-server/server/modules/providers/tests/provider-token-usage.service.test.js.map +1 -1
  164. package/dist-server/server/modules/providers/tests/provider.routes.test.js +161 -0
  165. package/dist-server/server/modules/providers/tests/provider.routes.test.js.map +1 -0
  166. package/dist-server/server/modules/providers/tests/sessions.service.test.js +87 -0
  167. package/dist-server/server/modules/providers/tests/sessions.service.test.js.map +1 -0
  168. package/dist-server/server/modules/websocket/services/chat-websocket.service.js +5 -1
  169. package/dist-server/server/modules/websocket/services/chat-websocket.service.js.map +1 -1
  170. package/dist-server/server/shared/utils.js +8 -0
  171. package/dist-server/server/shared/utils.js.map +1 -1
  172. package/package.json +8 -4
  173. package/scripts/promote-dist-server.mjs +50 -0
  174. package/server/index.ts +1 -2
  175. package/server/modules/agent/agent.module.ts +2 -1
  176. package/server/modules/auth/auth.middleware.ts +2 -2
  177. package/server/modules/browser-use/browser-use-runtime.ts +10 -0
  178. package/server/modules/browser-use/browser-use.service.ts +5 -8
  179. package/server/modules/browser-use/index.ts +3 -0
  180. package/server/modules/cli/cli.module.ts +0 -1
  181. package/server/modules/cli/cli.service.ts +0 -20
  182. package/server/modules/cli/cli.ts +9 -3
  183. package/server/modules/cli/tests/cli-environment-bootstrap.test.ts +186 -0
  184. package/server/modules/cli/tests/cli.service.test.ts +0 -3
  185. package/server/modules/commands/commands.routes.ts +3 -3
  186. package/server/modules/commands/tests/commands.test.ts +2 -7
  187. package/server/modules/database/index.ts +2 -0
  188. package/server/modules/database/migrations.ts +20 -0
  189. package/server/modules/database/repositories/provider-models.ts +168 -0
  190. package/server/modules/database/repositories/sessions.db.ts +85 -8
  191. package/server/modules/database/schema.ts +29 -3
  192. package/server/modules/database/tests/provider-models.db.integration.test.ts +125 -0
  193. package/server/modules/database/tests/sessions-provider-mapping.test.ts +2 -1
  194. package/server/modules/database/tests/sessions.db.integration.test.ts +32 -0
  195. package/server/modules/file-tree/file-tree.module.ts +5 -1
  196. package/server/modules/file-tree/file-tree.service.ts +81 -22
  197. package/server/modules/file-tree/tests/file-tree.service.test.ts +167 -16
  198. package/server/modules/git/git-branch.service.ts +43 -0
  199. package/server/modules/git/git.routes.ts +16 -9
  200. package/server/modules/git/tests/git-branch.service.test.ts +60 -0
  201. package/server/modules/git/tests/git-init.routes.test.ts +83 -0
  202. package/server/modules/notifications/index.ts +2 -0
  203. package/server/modules/notifications/services/notification-orchestrator.service.js +24 -1
  204. package/server/modules/providers/list/claude/claude-models.provider.ts +46 -14
  205. package/server/modules/providers/list/claude/claude-runtime.provider.js +280 -67
  206. package/server/modules/providers/list/codex/codex-models.provider.ts +58 -99
  207. package/server/modules/providers/list/codex/codex-session-synchronizer.provider.ts +1 -60
  208. package/server/modules/providers/list/codex/codex-sessions.provider.ts +7 -7
  209. package/server/modules/providers/list/cursor/cursor-models.provider.ts +32 -710
  210. package/server/modules/providers/list/opencode/opencode-models.provider.ts +105 -413
  211. package/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.ts +0 -13
  212. package/server/modules/providers/provider.routes.ts +190 -33
  213. package/server/modules/providers/services/provider-models.service.ts +223 -288
  214. package/server/modules/providers/services/provider-runtime.service.ts +2 -3
  215. package/server/modules/providers/services/session-conversations-search.service.ts +106 -11
  216. package/server/modules/providers/services/sessions.service.ts +87 -3
  217. package/server/modules/providers/tests/codex-sessions.test.ts +57 -18
  218. package/server/modules/providers/tests/opencode-models.test.ts +34 -135
  219. package/server/modules/providers/tests/opencode-sessions.test.ts +5 -5
  220. package/server/modules/providers/tests/provider-models.service.test.ts +353 -450
  221. package/server/modules/providers/tests/provider-runtime.service.test.ts +2 -6
  222. package/server/modules/providers/tests/provider-token-usage.service.test.ts +1 -0
  223. package/server/modules/providers/tests/provider.routes.test.ts +244 -0
  224. package/server/modules/providers/tests/sessions.service.test.ts +127 -0
  225. package/server/modules/websocket/services/chat-websocket.service.ts +5 -1
  226. package/server/shared/interfaces.ts +4 -6
  227. package/server/shared/types.ts +29 -18
  228. package/server/shared/utils.ts +10 -0
  229. package/server/tsconfig.json +6 -2
  230. package/README.de.md +0 -257
  231. package/README.ja.md +0 -249
  232. package/README.ko.md +0 -249
  233. package/README.md +0 -269
  234. package/README.ru.md +0 -257
  235. package/README.tr.md +0 -258
  236. package/README.zh-CN.md +0 -249
  237. package/README.zh-TW.md +0 -249
  238. package/dist/assets/index-DSlds633.css +0 -32
  239. package/dist/assets/index-eGqPeIEu.js +0 -1531
  240. package/dist-server/server/constants/config.js +0 -6
  241. package/dist-server/server/constants/config.js.map +0 -1
  242. package/server/constants/config.ts +0 -5
@@ -2,12 +2,9 @@ import { access, readdir } from 'node:fs/promises';
2
2
  import os from 'node:os';
3
3
  import path from 'node:path';
4
4
 
5
- import crossSpawn from 'cross-spawn';
6
-
7
5
  import type { IProviderModels } from '@/shared/interfaces.js';
8
6
  import type {
9
7
  ProviderCurrentActiveModel,
10
- ProviderModelOption,
11
8
  ProviderModelsDefinition,
12
9
  } from '@/shared/types.js';
13
10
  import {
@@ -15,705 +12,36 @@ import {
15
12
  sanitizeLeafDirectoryName,
16
13
  } from '@/shared/utils.js';
17
14
 
18
- export const CURSOR_FALLBACK_MODELS: ProviderModelsDefinition = {
15
+ /** Curated Cursor catalog shipped as immutable CloudCLI defaults. */
16
+ export const CURSOR_PREDEFINED_MODELS: ProviderModelsDefinition = {
19
17
  OPTIONS: [
20
- {
21
- value: "auto",
22
- label: "auto",
23
- description: "Auto",
24
- },
25
- {
26
- value: "composer-2-fast",
27
- label: "composer-2-fast",
28
- description: "Composer 2 Fast",
29
- },
30
- {
31
- value: "composer-2",
32
- label: "composer-2",
33
- description: "Composer 2",
34
- },
35
- {
36
- value: "gpt-5.3-codex-low",
37
- label: "gpt-5.3-codex-low",
38
- description: "Codex 5.3 Low",
39
- },
40
- {
41
- value: "gpt-5.3-codex-low-fast",
42
- label: "gpt-5.3-codex-low-fast",
43
- description: "Codex 5.3 Low Fast",
44
- },
45
- {
46
- value: "gpt-5.3-codex",
47
- label: "gpt-5.3-codex",
48
- description: "Codex 5.3",
49
- },
50
- {
51
- value: "gpt-5.3-codex-fast",
52
- label: "gpt-5.3-codex-fast",
53
- description: "Codex 5.3 Fast",
54
- },
55
- {
56
- value: "gpt-5.3-codex-high",
57
- label: "gpt-5.3-codex-high",
58
- description: "Codex 5.3 High",
59
- },
60
- {
61
- value: "gpt-5.3-codex-high-fast",
62
- label: "gpt-5.3-codex-high-fast",
63
- description: "Codex 5.3 High Fast",
64
- },
65
- {
66
- value: "gpt-5.3-codex-xhigh",
67
- label: "gpt-5.3-codex-xhigh",
68
- description: "Codex 5.3 Extra High",
69
- },
70
- {
71
- value: "gpt-5.3-codex-xhigh-fast",
72
- label: "gpt-5.3-codex-xhigh-fast",
73
- description: "Codex 5.3 Extra High Fast",
74
- },
75
- {
76
- value: "gpt-5.2",
77
- label: "gpt-5.2",
78
- description: "GPT-5.2",
79
- },
80
- {
81
- value: "gpt-5.2-codex-low",
82
- label: "gpt-5.2-codex-low",
83
- description: "Codex 5.2 Low",
84
- },
85
- {
86
- value: "gpt-5.2-codex-low-fast",
87
- label: "gpt-5.2-codex-low-fast",
88
- description: "Codex 5.2 Low Fast",
89
- },
90
- {
91
- value: "gpt-5.2-codex",
92
- label: "gpt-5.2-codex",
93
- description: "Codex 5.2",
94
- },
95
- {
96
- value: "gpt-5.2-codex-fast",
97
- label: "gpt-5.2-codex-fast",
98
- description: "Codex 5.2 Fast",
99
- },
100
- {
101
- value: "gpt-5.2-codex-high",
102
- label: "gpt-5.2-codex-high",
103
- description: "Codex 5.2 High",
104
- },
105
- {
106
- value: "gpt-5.2-codex-high-fast",
107
- label: "gpt-5.2-codex-high-fast",
108
- description: "Codex 5.2 High Fast",
109
- },
110
- {
111
- value: "gpt-5.2-codex-xhigh",
112
- label: "gpt-5.2-codex-xhigh",
113
- description: "Codex 5.2 Extra High",
114
- },
115
- {
116
- value: "gpt-5.2-codex-xhigh-fast",
117
- label: "gpt-5.2-codex-xhigh-fast",
118
- description: "Codex 5.2 Extra High Fast",
119
- },
120
- {
121
- value: "gpt-5.1-codex-max-low",
122
- label: "gpt-5.1-codex-max-low",
123
- description: "Codex 5.1 Max Low",
124
- },
125
- {
126
- value: "gpt-5.1-codex-max-low-fast",
127
- label: "gpt-5.1-codex-max-low-fast",
128
- description: "Codex 5.1 Max Low Fast",
129
- },
130
- {
131
- value: "gpt-5.1-codex-max-medium",
132
- label: "gpt-5.1-codex-max-medium",
133
- description: "Codex 5.1 Max",
134
- },
135
- {
136
- value: "gpt-5.1-codex-max-medium-fast",
137
- label: "gpt-5.1-codex-max-medium-fast",
138
- description: "Codex 5.1 Max Medium Fast",
139
- },
140
- {
141
- value: "gpt-5.1-codex-max-high",
142
- label: "gpt-5.1-codex-max-high",
143
- description: "Codex 5.1 Max High",
144
- },
145
- {
146
- value: "gpt-5.1-codex-max-high-fast",
147
- label: "gpt-5.1-codex-max-high-fast",
148
- description: "Codex 5.1 Max High Fast",
149
- },
150
- {
151
- value: "gpt-5.1-codex-max-xhigh",
152
- label: "gpt-5.1-codex-max-xhigh",
153
- description: "Codex 5.1 Max Extra High",
154
- },
155
- {
156
- value: "gpt-5.1-codex-max-xhigh-fast",
157
- label: "gpt-5.1-codex-max-xhigh-fast",
158
- description: "Codex 5.1 Max Extra High Fast",
159
- },
160
- {
161
- value: "composer-2.5",
162
- label: "composer-2.5",
163
- description: "Composer 2.5",
164
- },
165
- {
166
- value: "gpt-5.5-high",
167
- label: "gpt-5.5-high",
168
- description: "GPT-5.5 1M High",
169
- },
170
- {
171
- value: "gpt-5.5-high-fast",
172
- label: "gpt-5.5-high-fast",
173
- description: "GPT-5.5 High Fast",
174
- },
175
- {
176
- value: "claude-opus-4-7-thinking-high",
177
- label: "claude-opus-4-7-thinking-high",
178
- description: "Opus 4.7 1M High Thinking",
179
- },
180
- {
181
- value: "gpt-5.4-high",
182
- label: "gpt-5.4-high",
183
- description: "GPT-5.4 1M High",
184
- },
185
- {
186
- value: "gpt-5.4-high-fast",
187
- label: "gpt-5.4-high-fast",
188
- description: "GPT-5.4 High Fast",
189
- },
190
- {
191
- value: "claude-4.6-opus-high-thinking",
192
- label: "claude-4.6-opus-high-thinking",
193
- description: "Opus 4.6 1M Thinking",
194
- },
195
- {
196
- value: "claude-4.6-opus-high-thinking-fast",
197
- label: "claude-4.6-opus-high-thinking-fast",
198
- description: "Opus 4.6 1M Thinking Fast",
199
- },
200
- {
201
- value: "composer-2.5-fast",
202
- label: "composer-2.5-fast",
203
- description: "Composer 2.5 Fast",
204
- },
205
- {
206
- value: "gpt-5.5-none",
207
- label: "gpt-5.5-none",
208
- description: "GPT-5.5 1M None",
209
- },
210
- {
211
- value: "gpt-5.5-none-fast",
212
- label: "gpt-5.5-none-fast",
213
- description: "GPT-5.5 None Fast",
214
- },
215
- {
216
- value: "gpt-5.5-low",
217
- label: "gpt-5.5-low",
218
- description: "GPT-5.5 1M Low",
219
- },
220
- {
221
- value: "gpt-5.5-low-fast",
222
- label: "gpt-5.5-low-fast",
223
- description: "GPT-5.5 Low Fast",
224
- },
225
- {
226
- value: "gpt-5.5-medium",
227
- label: "gpt-5.5-medium",
228
- description: "GPT-5.5 1M",
229
- },
230
- {
231
- value: "gpt-5.5-medium-fast",
232
- label: "gpt-5.5-medium-fast",
233
- description: "GPT-5.5 Fast",
234
- },
235
- {
236
- value: "gpt-5.5-extra-high",
237
- label: "gpt-5.5-extra-high",
238
- description: "GPT-5.5 1M Extra High",
239
- },
240
- {
241
- value: "gpt-5.5-extra-high-fast",
242
- label: "gpt-5.5-extra-high-fast",
243
- description: "GPT-5.5 Extra High Fast",
244
- },
245
- {
246
- value: "claude-4.6-sonnet-medium",
247
- label: "claude-4.6-sonnet-medium",
248
- description: "Sonnet 4.6 1M",
249
- },
250
- {
251
- value: "claude-4.6-sonnet-medium-thinking",
252
- label: "claude-4.6-sonnet-medium-thinking",
253
- description: "Sonnet 4.6 1M Thinking",
254
- },
255
- {
256
- value: "claude-opus-4-7-low",
257
- label: "claude-opus-4-7-low",
258
- description: "Opus 4.7 1M Low",
259
- },
260
- {
261
- value: "claude-opus-4-7-low-fast",
262
- label: "claude-opus-4-7-low-fast",
263
- description: "Opus 4.7 1M Low Fast",
264
- },
265
- {
266
- value: "claude-opus-4-7-medium",
267
- label: "claude-opus-4-7-medium",
268
- description: "Opus 4.7 1M Medium",
269
- },
270
- {
271
- value: "claude-opus-4-7-medium-fast",
272
- label: "claude-opus-4-7-medium-fast",
273
- description: "Opus 4.7 1M Medium Fast",
274
- },
275
- {
276
- value: "claude-opus-4-7-high",
277
- label: "claude-opus-4-7-high",
278
- description: "Opus 4.7 1M High",
279
- },
280
- {
281
- value: "claude-opus-4-7-high-fast",
282
- label: "claude-opus-4-7-high-fast",
283
- description: "Opus 4.7 1M High Fast",
284
- },
285
- {
286
- value: "claude-opus-4-7-xhigh",
287
- label: "claude-opus-4-7-xhigh",
288
- description: "Opus 4.7 1M",
289
- },
290
- {
291
- value: "claude-opus-4-7-xhigh-fast",
292
- label: "claude-opus-4-7-xhigh-fast",
293
- description: "Opus 4.7 1M Fast",
294
- },
295
- {
296
- value: "claude-opus-4-7-max",
297
- label: "claude-opus-4-7-max",
298
- description: "Opus 4.7 1M Max",
299
- },
300
- {
301
- value: "claude-opus-4-7-max-fast",
302
- label: "claude-opus-4-7-max-fast",
303
- description: "Opus 4.7 1M Max Fast",
304
- },
305
- {
306
- value: "claude-opus-4-7-thinking-low",
307
- label: "claude-opus-4-7-thinking-low",
308
- description: "Opus 4.7 1M Low Thinking",
309
- },
310
- {
311
- value: "claude-opus-4-7-thinking-low-fast",
312
- label: "claude-opus-4-7-thinking-low-fast",
313
- description: "Opus 4.7 1M Low Thinking Fast",
314
- },
315
- {
316
- value: "claude-opus-4-7-thinking-medium",
317
- label: "claude-opus-4-7-thinking-medium",
318
- description: "Opus 4.7 1M Medium Thinking",
319
- },
320
- {
321
- value: "claude-opus-4-7-thinking-medium-fast",
322
- label: "claude-opus-4-7-thinking-medium-fast",
323
- description: "Opus 4.7 1M Medium Thinking Fast",
324
- },
325
- {
326
- value: "claude-opus-4-7-thinking-high-fast",
327
- label: "claude-opus-4-7-thinking-high-fast",
328
- description: "Opus 4.7 1M High Thinking Fast",
329
- },
330
- {
331
- value: "claude-opus-4-7-thinking-xhigh",
332
- label: "claude-opus-4-7-thinking-xhigh",
333
- description: "Opus 4.7 1M Thinking",
334
- },
335
- {
336
- value: "claude-opus-4-7-thinking-xhigh-fast",
337
- label: "claude-opus-4-7-thinking-xhigh-fast",
338
- description: "Opus 4.7 1M Thinking Fast",
339
- },
340
- {
341
- value: "claude-opus-4-7-thinking-max",
342
- label: "claude-opus-4-7-thinking-max",
343
- description: "Opus 4.7 1M Max Thinking",
344
- },
345
- {
346
- value: "claude-opus-4-7-thinking-max-fast",
347
- label: "claude-opus-4-7-thinking-max-fast",
348
- description: "Opus 4.7 1M Max Thinking Fast",
349
- },
350
- {
351
- value: "grok-build-0.1",
352
- label: "grok-build-0.1",
353
- description: "Grok Build 0.1 1M",
354
- },
355
- {
356
- value: "gpt-5.4-low",
357
- label: "gpt-5.4-low",
358
- description: "GPT-5.4 1M Low",
359
- },
360
- {
361
- value: "gpt-5.4-medium",
362
- label: "gpt-5.4-medium",
363
- description: "GPT-5.4 1M",
364
- },
365
- {
366
- value: "gpt-5.4-medium-fast",
367
- label: "gpt-5.4-medium-fast",
368
- description: "GPT-5.4 Fast",
369
- },
370
- {
371
- value: "gpt-5.4-xhigh",
372
- label: "gpt-5.4-xhigh",
373
- description: "GPT-5.4 1M Extra High",
374
- },
375
- {
376
- value: "gpt-5.4-xhigh-fast",
377
- label: "gpt-5.4-xhigh-fast",
378
- description: "GPT-5.4 Extra High Fast",
379
- },
380
- {
381
- value: "claude-4.6-opus-high",
382
- label: "claude-4.6-opus-high",
383
- description: "Opus 4.6 1M",
384
- },
385
- {
386
- value: "claude-4.6-opus-max",
387
- label: "claude-4.6-opus-max",
388
- description: "Opus 4.6 1M Max",
389
- },
390
- {
391
- value: "claude-4.6-opus-max-thinking",
392
- label: "claude-4.6-opus-max-thinking",
393
- description: "Opus 4.6 1M Max Thinking",
394
- },
395
- {
396
- value: "claude-4.6-opus-max-thinking-fast",
397
- label: "claude-4.6-opus-max-thinking-fast",
398
- description: "Opus 4.6 1M Max Thinking Fast",
399
- },
400
- {
401
- value: "claude-4.5-opus-high",
402
- label: "claude-4.5-opus-high",
403
- description: "Opus 4.5",
404
- },
405
- {
406
- value: "claude-4.5-opus-high-thinking",
407
- label: "claude-4.5-opus-high-thinking",
408
- description: "Opus 4.5 Thinking",
409
- },
410
- {
411
- value: "gpt-5.2-low",
412
- label: "gpt-5.2-low",
413
- description: "GPT-5.2 Low",
414
- },
415
- {
416
- value: "gpt-5.2-low-fast",
417
- label: "gpt-5.2-low-fast",
418
- description: "GPT-5.2 Low Fast",
419
- },
420
- {
421
- value: "gpt-5.2-fast",
422
- label: "gpt-5.2-fast",
423
- description: "GPT-5.2 Fast",
424
- },
425
- {
426
- value: "gpt-5.2-high",
427
- label: "gpt-5.2-high",
428
- description: "GPT-5.2 High",
429
- },
430
- {
431
- value: "gpt-5.2-high-fast",
432
- label: "gpt-5.2-high-fast",
433
- description: "GPT-5.2 High Fast",
434
- },
435
- {
436
- value: "gpt-5.2-xhigh",
437
- label: "gpt-5.2-xhigh",
438
- description: "GPT-5.2 Extra High",
439
- },
440
- {
441
- value: "gpt-5.2-xhigh-fast",
442
- label: "gpt-5.2-xhigh-fast",
443
- description: "GPT-5.2 Extra High Fast",
444
- },
445
- {
446
- value: "gpt-5.4-mini-none",
447
- label: "gpt-5.4-mini-none",
448
- description: "GPT-5.4 Mini None",
449
- },
450
- {
451
- value: "gpt-5.4-mini-low",
452
- label: "gpt-5.4-mini-low",
453
- description: "GPT-5.4 Mini Low",
454
- },
455
- {
456
- value: "gpt-5.4-mini-medium",
457
- label: "gpt-5.4-mini-medium",
458
- description: "GPT-5.4 Mini",
459
- },
460
- {
461
- value: "gpt-5.4-mini-high",
462
- label: "gpt-5.4-mini-high",
463
- description: "GPT-5.4 Mini High",
464
- },
465
- {
466
- value: "gpt-5.4-mini-xhigh",
467
- label: "gpt-5.4-mini-xhigh",
468
- description: "GPT-5.4 Mini Extra High",
469
- },
470
- {
471
- value: "gpt-5.4-nano-none",
472
- label: "gpt-5.4-nano-none",
473
- description: "GPT-5.4 Nano None",
474
- },
475
- {
476
- value: "gpt-5.4-nano-low",
477
- label: "gpt-5.4-nano-low",
478
- description: "GPT-5.4 Nano Low",
479
- },
480
- {
481
- value: "gpt-5.4-nano-medium",
482
- label: "gpt-5.4-nano-medium",
483
- description: "GPT-5.4 Nano",
484
- },
485
- {
486
- value: "gpt-5.4-nano-high",
487
- label: "gpt-5.4-nano-high",
488
- description: "GPT-5.4 Nano High",
489
- },
490
- {
491
- value: "gpt-5.4-nano-xhigh",
492
- label: "gpt-5.4-nano-xhigh",
493
- description: "GPT-5.4 Nano Extra High",
494
- },
495
- {
496
- value: "grok-4.3",
497
- label: "grok-4.3",
498
- description: "Grok 4.3 1M",
499
- },
500
- {
501
- value: "claude-4.5-sonnet",
502
- label: "claude-4.5-sonnet",
503
- description: "Sonnet 4.5",
504
- },
505
- {
506
- value: "claude-4.5-sonnet-thinking",
507
- label: "claude-4.5-sonnet-thinking",
508
- description: "Sonnet 4.5 Thinking",
509
- },
510
- {
511
- value: "gpt-5.1-low",
512
- label: "gpt-5.1-low",
513
- description: "GPT-5.1 Low",
514
- },
515
- {
516
- value: "gpt-5.1",
517
- label: "gpt-5.1",
518
- description: "GPT-5.1",
519
- },
520
- {
521
- value: "gpt-5.1-high",
522
- label: "gpt-5.1-high",
523
- description: "GPT-5.1 High",
524
- },
525
- {
526
- value: "gpt-5.1-codex-mini-low",
527
- label: "gpt-5.1-codex-mini-low",
528
- description: "Codex 5.1 Mini Low",
529
- },
530
- {
531
- value: "gpt-5.1-codex-mini",
532
- label: "gpt-5.1-codex-mini",
533
- description: "Codex 5.1 Mini",
534
- },
535
- {
536
- value: "gpt-5.1-codex-mini-high",
537
- label: "gpt-5.1-codex-mini-high",
538
- description: "Codex 5.1 Mini High",
539
- },
540
- {
541
- value: "claude-4-sonnet",
542
- label: "claude-4-sonnet",
543
- description: "Sonnet 4",
544
- },
545
- {
546
- value: "claude-4-sonnet-thinking",
547
- label: "claude-4-sonnet-thinking",
548
- description: "Sonnet 4 Thinking",
549
- },
550
- {
551
- value: "gpt-5-mini",
552
- label: "gpt-5-mini",
553
- description: "GPT-5 Mini",
554
- },
555
- {
556
- value: "kimi-k2.5",
557
- label: "kimi-k2.5",
558
- description: "Kimi K2.5",
559
- },
18
+ { value: 'auto', label: 'Auto', description: 'Let Cursor choose the model.' },
19
+ {
20
+ value: 'composer-2.5-fast',
21
+ label: 'Composer 2.5 Fast',
22
+ description: 'Cursor Composer 2.5 with faster inference.',
23
+ },
24
+ {
25
+ value: 'composer-2.5',
26
+ label: 'Composer 2.5',
27
+ description: 'Cursor model for efficient, long-running coding tasks.',
28
+ },
29
+ { value: 'gpt-5.6-sol', label: 'GPT-5.6 Sol' },
30
+ { value: 'gpt-5.6-terra', label: 'GPT-5.6 Terra' },
31
+ { value: 'gpt-5.6-luna', label: 'GPT-5.6 Luna' },
32
+ { value: 'gpt-5.5', label: 'GPT-5.5' },
33
+ { value: 'claude-fable-5', label: 'Claude Fable 5' },
34
+ { value: 'claude-opus-5', label: 'Claude Opus 5' },
35
+ { value: 'claude-opus-4-8', label: 'Claude Opus 4.8' },
36
+ { value: 'claude-sonnet-5', label: 'Claude Sonnet 5' },
37
+ { value: 'grok-4.5', label: 'Grok 4.5' },
38
+ { value: 'gemini-3.1-pro', label: 'Gemini 3.1 Pro' },
39
+ { value: 'kimi-k2.5', label: 'Kimi K2.5' },
560
40
  ],
561
- DEFAULT: "composer-2.5-fast",
41
+ DEFAULT: 'auto',
562
42
  };
563
43
 
564
- type CursorModelRow = {
565
- name: string;
566
- description: string;
567
- current: boolean;
568
- default: boolean;
569
- };
570
-
571
- const CURSOR_MODELS_TIMEOUT_MS = 10_000;
572
44
  const CURSOR_CHATS_ROOT = path.join(os.homedir(), '.cursor', 'chats');
573
- // cross-spawn resolves .cmd shims/PATHEXT on Windows and delegates to
574
- // child_process.spawn everywhere else.
575
- const spawnFunction = crossSpawn;
576
- const ANSI_PATTERN = new RegExp(
577
- // eslint-disable-next-line no-control-regex
578
- '[\\u001B\\u009B][[\\]()#;?]*(?:'
579
- + '(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]'
580
- + '|(?:[\\dA-PR-TZcf-ntqry=><~]))',
581
- 'g',
582
- );
583
-
584
- const stripAnsi = (value: string): string => value.replace(ANSI_PATTERN, '');
585
-
586
- const parseModelLine = (line: string): CursorModelRow | null => {
587
- const trimmed = line.trim();
588
-
589
- if (
590
- !trimmed
591
- || trimmed === 'Available models'
592
- || trimmed.startsWith('Loading models')
593
- || trimmed.startsWith('Tip:')
594
- ) {
595
- return null;
596
- }
597
-
598
- const match = trimmed.match(/^(.+?)\s+-\s+(.+)$/);
599
- if (!match) {
600
- return null;
601
- }
602
-
603
- const name = match[1].trim();
604
- let description = match[2].trim();
605
- const current = /\(current\)/i.test(description);
606
- const defaultModel = /\(default\)/i.test(description);
607
-
608
- description = description.replace(/\s*\((current|default)\)/gi, '').replace(/\s{2,}/g, ' ').trim();
609
-
610
- return {
611
- name,
612
- description,
613
- current,
614
- default: defaultModel,
615
- };
616
- };
617
-
618
- const parseModelsOutput = (text: string): CursorModelRow[] => {
619
- const models: CursorModelRow[] = [];
620
-
621
- for (const line of stripAnsi(text).split(/\r?\n/)) {
622
- const parsed = parseModelLine(line);
623
- if (parsed) {
624
- models.push(parsed);
625
- }
626
- }
627
-
628
- return models;
629
- };
630
-
631
- const runCursorListModels = (): Promise<string> => new Promise((resolve, reject) => {
632
- const cursorProcess = spawnFunction('cursor-agent', ['--list-models'], {
633
- env: { ...process.env },
634
- });
635
-
636
- let stdout = '';
637
- let stderr = '';
638
- let settled = false;
639
-
640
- const timer = setTimeout(() => {
641
- cursorProcess.kill('SIGTERM');
642
- if (!settled) {
643
- settled = true;
644
- reject(new Error('cursor-agent --list-models timed out'));
645
- }
646
- }, CURSOR_MODELS_TIMEOUT_MS);
647
-
648
- const finish = (error: Error | null, output: string) => {
649
- if (settled) {
650
- return;
651
- }
652
-
653
- settled = true;
654
- clearTimeout(timer);
655
-
656
- if (error) {
657
- reject(error);
658
- return;
659
- }
660
-
661
- resolve(output);
662
- };
663
-
664
- cursorProcess.stdout?.on('data', (chunk: Buffer) => {
665
- stdout += chunk.toString();
666
- });
667
-
668
- cursorProcess.stderr?.on('data', (chunk: Buffer) => {
669
- stderr += chunk.toString();
670
- });
671
-
672
- cursorProcess.on('error', (error) => {
673
- finish(error instanceof Error ? error : new Error(String(error)), '');
674
- });
675
-
676
- cursorProcess.on('close', (code) => {
677
- if (code !== 0) {
678
- finish(new Error(stderr.trim() || `cursor-agent --list-models exited with code ${code}`), '');
679
- return;
680
- }
681
-
682
- finish(null, stdout);
683
- });
684
- });
685
-
686
- const buildCursorModelsDefinition = (models: CursorModelRow[]): ProviderModelsDefinition => {
687
- const options: ProviderModelOption[] = [];
688
- const seenValues = new Set<string>();
689
-
690
- for (const model of models) {
691
- if (seenValues.has(model.name)) {
692
- continue;
693
- }
694
-
695
- seenValues.add(model.name);
696
- options.push({
697
- value: model.name,
698
- label: model.name,
699
- description: model.description || undefined,
700
- });
701
- }
702
-
703
- if (options.length === 0) {
704
- return CURSOR_FALLBACK_MODELS;
705
- }
706
-
707
- const defaultValue = models.find((model) => model.default)?.name
708
- ?? models.find((model) => model.current)?.name
709
- ?? options[0]?.value
710
- ?? CURSOR_FALLBACK_MODELS.DEFAULT;
711
-
712
- return {
713
- OPTIONS: options,
714
- DEFAULT: defaultValue,
715
- };
716
- };
717
45
 
718
46
  const resolveCursorSessionStorePath = async (sessionId: string): Promise<string | null> => {
719
47
  const safeSessionId = sanitizeLeafDirectoryName(sessionId, 'cursor session id');
@@ -740,26 +68,21 @@ const resolveCursorSessionStorePath = async (sessionId: string): Promise<string
740
68
  return null;
741
69
  };
742
70
 
71
+ /** Provider registry model adapter for Cursor predefined models and session metadata. */
743
72
  export class CursorProviderModels implements IProviderModels {
744
73
  async getSupportedModels(): Promise<ProviderModelsDefinition> {
745
- try {
746
- const stdout = await runCursorListModels();
747
- const models = parseModelsOutput(stdout);
748
- return buildCursorModelsDefinition(models);
749
- } catch {
750
- return CURSOR_FALLBACK_MODELS;
751
- }
74
+ return CURSOR_PREDEFINED_MODELS;
752
75
  }
753
76
 
754
77
  async getCurrentActiveModel(sessionId?: string): Promise<ProviderCurrentActiveModel> {
755
78
  if (!sessionId?.trim()) {
756
- return buildDefaultProviderCurrentActiveModel(await this.getSupportedModels());
79
+ return buildDefaultProviderCurrentActiveModel(CURSOR_PREDEFINED_MODELS);
757
80
  }
758
81
 
759
82
  try {
760
83
  const storeDbPath = await resolveCursorSessionStorePath(sessionId);
761
84
  if (!storeDbPath) {
762
- return buildDefaultProviderCurrentActiveModel(await this.getSupportedModels());
85
+ return buildDefaultProviderCurrentActiveModel(CURSOR_PREDEFINED_MODELS);
763
86
  }
764
87
 
765
88
  const { default: Database } = await import('better-sqlite3');
@@ -775,7 +98,7 @@ export class CursorProviderModels implements IProviderModels {
775
98
  ? Buffer.from(row.value.trim(), 'hex').toString('utf8')
776
99
  : '';
777
100
  if (!metadataText) {
778
- return buildDefaultProviderCurrentActiveModel(await this.getSupportedModels());
101
+ return buildDefaultProviderCurrentActiveModel(CURSOR_PREDEFINED_MODELS);
779
102
  }
780
103
 
781
104
  const metadata = JSON.parse(metadataText) as { lastUsedModel?: string };
@@ -788,10 +111,9 @@ export class CursorProviderModels implements IProviderModels {
788
111
  db.close();
789
112
  }
790
113
  } catch {
791
- // Fall through to the provider default when Cursor metadata cannot be read.
114
+ // Fall through to the curated default when Cursor metadata cannot be read.
792
115
  }
793
116
 
794
- return buildDefaultProviderCurrentActiveModel(await this.getSupportedModels());
117
+ return buildDefaultProviderCurrentActiveModel(CURSOR_PREDEFINED_MODELS);
795
118
  }
796
119
  }
797
-