@prestyj/cli 4.6.4 → 4.10.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 (316) hide show
  1. package/dist/cli/auth.d.ts.map +1 -1
  2. package/dist/cli/auth.js +11 -10
  3. package/dist/cli/auth.js.map +1 -1
  4. package/dist/cli/mcp.js +1 -1
  5. package/dist/cli/shared.d.ts +12 -0
  6. package/dist/cli/shared.d.ts.map +1 -1
  7. package/dist/cli/shared.js +31 -6
  8. package/dist/cli/shared.js.map +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +63 -62
  11. package/dist/cli.js.map +1 -1
  12. package/dist/config.d.ts +7 -14
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +13 -17
  15. package/dist/config.js.map +1 -1
  16. package/dist/core/agent-session-compaction.test.js +1 -1
  17. package/dist/core/agent-session-compaction.test.js.map +1 -1
  18. package/dist/core/agent-session.d.ts +1 -0
  19. package/dist/core/agent-session.d.ts.map +1 -1
  20. package/dist/core/agent-session.js +6 -2
  21. package/dist/core/agent-session.js.map +1 -1
  22. package/dist/core/auth-storage.d.ts +1 -58
  23. package/dist/core/auth-storage.d.ts.map +1 -1
  24. package/dist/core/auth-storage.js +3 -254
  25. package/dist/core/auth-storage.js.map +1 -1
  26. package/dist/core/auto-update.d.ts +4 -26
  27. package/dist/core/auto-update.d.ts.map +1 -1
  28. package/dist/core/auto-update.js +12 -237
  29. package/dist/core/auto-update.js.map +1 -1
  30. package/dist/core/claude-code-version.d.ts +1 -9
  31. package/dist/core/claude-code-version.d.ts.map +1 -1
  32. package/dist/core/claude-code-version.js +2 -105
  33. package/dist/core/claude-code-version.js.map +1 -1
  34. package/dist/core/compaction/compactor.test.js +2 -2
  35. package/dist/core/compaction/compactor.test.js.map +1 -1
  36. package/dist/core/file-lock.d.ts +1 -5
  37. package/dist/core/file-lock.d.ts.map +1 -1
  38. package/dist/core/file-lock.js +2 -75
  39. package/dist/core/file-lock.js.map +1 -1
  40. package/dist/core/logger.d.ts +4 -17
  41. package/dist/core/logger.d.ts.map +1 -1
  42. package/dist/core/logger.js +21 -110
  43. package/dist/core/logger.js.map +1 -1
  44. package/dist/core/lsp/client.d.ts +63 -0
  45. package/dist/core/lsp/client.d.ts.map +1 -0
  46. package/dist/core/lsp/client.js +215 -0
  47. package/dist/core/lsp/client.js.map +1 -0
  48. package/dist/core/lsp/format.d.ts +12 -0
  49. package/dist/core/lsp/format.d.ts.map +1 -0
  50. package/dist/core/lsp/format.js +30 -0
  51. package/dist/core/lsp/format.js.map +1 -0
  52. package/dist/core/lsp/format.test.d.ts +2 -0
  53. package/dist/core/lsp/format.test.d.ts.map +1 -0
  54. package/dist/core/lsp/format.test.js +56 -0
  55. package/dist/core/lsp/format.test.js.map +1 -0
  56. package/dist/core/lsp/integration.test.d.ts +2 -0
  57. package/dist/core/lsp/integration.test.d.ts.map +1 -0
  58. package/dist/core/lsp/integration.test.js +60 -0
  59. package/dist/core/lsp/integration.test.js.map +1 -0
  60. package/dist/core/lsp/jsonrpc.d.ts +32 -0
  61. package/dist/core/lsp/jsonrpc.d.ts.map +1 -0
  62. package/dist/core/lsp/jsonrpc.js +141 -0
  63. package/dist/core/lsp/jsonrpc.js.map +1 -0
  64. package/dist/core/lsp/jsonrpc.test.d.ts +2 -0
  65. package/dist/core/lsp/jsonrpc.test.d.ts.map +1 -0
  66. package/dist/core/lsp/jsonrpc.test.js +127 -0
  67. package/dist/core/lsp/jsonrpc.test.js.map +1 -0
  68. package/dist/core/lsp/manager.d.ts +40 -0
  69. package/dist/core/lsp/manager.d.ts.map +1 -0
  70. package/dist/core/lsp/manager.js +135 -0
  71. package/dist/core/lsp/manager.js.map +1 -0
  72. package/dist/core/lsp/manager.test.d.ts +2 -0
  73. package/dist/core/lsp/manager.test.d.ts.map +1 -0
  74. package/dist/core/lsp/manager.test.js +119 -0
  75. package/dist/core/lsp/manager.test.js.map +1 -0
  76. package/dist/core/lsp/servers.d.ts +45 -0
  77. package/dist/core/lsp/servers.d.ts.map +1 -0
  78. package/dist/core/lsp/servers.js +247 -0
  79. package/dist/core/lsp/servers.js.map +1 -0
  80. package/dist/core/mcp/defaults.d.ts +1 -1
  81. package/dist/core/mcp/defaults.js +1 -1
  82. package/dist/core/mcp/store.d.ts +1 -1
  83. package/dist/core/mcp/store.test.js +1 -1
  84. package/dist/core/mcp/store.test.js.map +1 -1
  85. package/dist/core/model-registry.d.ts +1 -75
  86. package/dist/core/model-registry.d.ts.map +1 -1
  87. package/dist/core/model-registry.js +4 -344
  88. package/dist/core/model-registry.js.map +1 -1
  89. package/dist/core/oauth/anthropic.d.ts +1 -3
  90. package/dist/core/oauth/anthropic.d.ts.map +1 -1
  91. package/dist/core/oauth/anthropic.js +2 -96
  92. package/dist/core/oauth/anthropic.js.map +1 -1
  93. package/dist/core/oauth/gemini.d.ts +1 -3
  94. package/dist/core/oauth/gemini.d.ts.map +1 -1
  95. package/dist/core/oauth/gemini.js +2 -385
  96. package/dist/core/oauth/gemini.js.map +1 -1
  97. package/dist/core/oauth/kimi.d.ts +1 -45
  98. package/dist/core/oauth/kimi.d.ts.map +1 -1
  99. package/dist/core/oauth/kimi.js +2 -277
  100. package/dist/core/oauth/kimi.js.map +1 -1
  101. package/dist/core/oauth/openai.d.ts +1 -3
  102. package/dist/core/oauth/openai.d.ts.map +1 -1
  103. package/dist/core/oauth/openai.js +2 -187
  104. package/dist/core/oauth/openai.js.map +1 -1
  105. package/dist/core/oauth/pkce.d.ts +1 -4
  106. package/dist/core/oauth/pkce.d.ts.map +1 -1
  107. package/dist/core/oauth/pkce.js +2 -16
  108. package/dist/core/oauth/pkce.js.map +1 -1
  109. package/dist/core/oauth/types.d.ts +1 -13
  110. package/dist/core/oauth/types.d.ts.map +1 -1
  111. package/dist/core/process-manager.d.ts +10 -0
  112. package/dist/core/process-manager.d.ts.map +1 -1
  113. package/dist/core/process-manager.js +45 -1
  114. package/dist/core/process-manager.js.map +1 -1
  115. package/dist/core/prompt-commands.d.ts.map +1 -1
  116. package/dist/core/prompt-commands.js +20 -7
  117. package/dist/core/prompt-commands.js.map +1 -1
  118. package/dist/core/session-manager.d.ts +26 -0
  119. package/dist/core/session-manager.d.ts.map +1 -1
  120. package/dist/core/session-manager.js +99 -2
  121. package/dist/core/session-manager.js.map +1 -1
  122. package/dist/core/session-manager.test.d.ts +2 -0
  123. package/dist/core/session-manager.test.d.ts.map +1 -0
  124. package/dist/core/session-manager.test.js +113 -0
  125. package/dist/core/session-manager.test.js.map +1 -0
  126. package/dist/core/settings-manager.d.ts +2 -0
  127. package/dist/core/settings-manager.d.ts.map +1 -1
  128. package/dist/core/settings-manager.js +6 -0
  129. package/dist/core/settings-manager.js.map +1 -1
  130. package/dist/core/telegram.d.ts +1 -112
  131. package/dist/core/telegram.d.ts.map +1 -1
  132. package/dist/core/telegram.js +2 -251
  133. package/dist/core/telegram.js.map +1 -1
  134. package/dist/core/thinking-level.d.ts +1 -4
  135. package/dist/core/thinking-level.d.ts.map +1 -1
  136. package/dist/core/thinking-level.js +3 -58
  137. package/dist/core/thinking-level.js.map +1 -1
  138. package/dist/core/voice-transcriber.d.ts +1 -32
  139. package/dist/core/voice-transcriber.d.ts.map +1 -1
  140. package/dist/core/voice-transcriber.js +3 -112
  141. package/dist/core/voice-transcriber.js.map +1 -1
  142. package/dist/interactive.d.ts.map +1 -1
  143. package/dist/interactive.js +5 -2
  144. package/dist/interactive.js.map +1 -1
  145. package/dist/modes/agent-home-mode.d.ts.map +1 -1
  146. package/dist/modes/agent-home-mode.js +10 -38
  147. package/dist/modes/agent-home-mode.js.map +1 -1
  148. package/dist/modes/serve-mode.d.ts.map +1 -1
  149. package/dist/modes/serve-mode.js +11 -39
  150. package/dist/modes/serve-mode.js.map +1 -1
  151. package/dist/session.d.ts.map +1 -1
  152. package/dist/session.js +13 -6
  153. package/dist/session.js.map +1 -1
  154. package/dist/tools/bash.d.ts.map +1 -1
  155. package/dist/tools/bash.js +6 -3
  156. package/dist/tools/bash.js.map +1 -1
  157. package/dist/tools/edit.d.ts +3 -1
  158. package/dist/tools/edit.d.ts.map +1 -1
  159. package/dist/tools/edit.js +15 -3
  160. package/dist/tools/edit.js.map +1 -1
  161. package/dist/tools/edit.test.js +70 -0
  162. package/dist/tools/edit.test.js.map +1 -1
  163. package/dist/tools/goals.d.ts +1 -1
  164. package/dist/tools/index.d.ts +15 -0
  165. package/dist/tools/index.d.ts.map +1 -1
  166. package/dist/tools/index.js +16 -3
  167. package/dist/tools/index.js.map +1 -1
  168. package/dist/tools/task-send.d.ts +12 -0
  169. package/dist/tools/task-send.d.ts.map +1 -0
  170. package/dist/tools/task-send.js +34 -0
  171. package/dist/tools/task-send.js.map +1 -0
  172. package/dist/tools/task-send.test.d.ts +2 -0
  173. package/dist/tools/task-send.test.d.ts.map +1 -0
  174. package/dist/tools/task-send.test.js +95 -0
  175. package/dist/tools/task-send.test.js.map +1 -0
  176. package/dist/tools/write.d.ts +3 -1
  177. package/dist/tools/write.d.ts.map +1 -1
  178. package/dist/tools/write.js +13 -2
  179. package/dist/tools/write.js.map +1 -1
  180. package/dist/tools/write.test.js +33 -0
  181. package/dist/tools/write.test.js.map +1 -1
  182. package/dist/types.d.ts +2 -0
  183. package/dist/types.d.ts.map +1 -1
  184. package/dist/ui/App.d.ts +16 -0
  185. package/dist/ui/App.d.ts.map +1 -1
  186. package/dist/ui/App.js +126 -12
  187. package/dist/ui/App.js.map +1 -1
  188. package/dist/ui/anchor-pad-reclaim.test.d.ts +2 -0
  189. package/dist/ui/anchor-pad-reclaim.test.d.ts.map +1 -0
  190. package/dist/ui/anchor-pad-reclaim.test.js +146 -0
  191. package/dist/ui/anchor-pad-reclaim.test.js.map +1 -0
  192. package/dist/ui/app-items.d.ts +14 -0
  193. package/dist/ui/app-items.d.ts.map +1 -1
  194. package/dist/ui/app-items.js +13 -0
  195. package/dist/ui/app-items.js.map +1 -1
  196. package/dist/ui/app-items.test.js +17 -1
  197. package/dist/ui/app-items.test.js.map +1 -1
  198. package/dist/ui/atomic-flush-regression.test.d.ts +2 -0
  199. package/dist/ui/atomic-flush-regression.test.d.ts.map +1 -0
  200. package/dist/ui/atomic-flush-regression.test.js +218 -0
  201. package/dist/ui/atomic-flush-regression.test.js.map +1 -0
  202. package/dist/ui/components/AssistantMessage.test.js +32 -1
  203. package/dist/ui/components/AssistantMessage.test.js.map +1 -1
  204. package/dist/ui/components/Footer.d.ts.map +1 -1
  205. package/dist/ui/components/Footer.js +1 -0
  206. package/dist/ui/components/Footer.js.map +1 -1
  207. package/dist/ui/components/InputArea.test.js +11 -5
  208. package/dist/ui/components/InputArea.test.js.map +1 -1
  209. package/dist/ui/components/Markdown.d.ts.map +1 -1
  210. package/dist/ui/components/Markdown.js +9 -1
  211. package/dist/ui/components/Markdown.js.map +1 -1
  212. package/dist/ui/footer-jump-regression.test.js +56 -9
  213. package/dist/ui/footer-jump-regression.test.js.map +1 -1
  214. package/dist/ui/frame-clip-regression.test.d.ts +2 -0
  215. package/dist/ui/frame-clip-regression.test.d.ts.map +1 -0
  216. package/dist/ui/frame-clip-regression.test.js +215 -0
  217. package/dist/ui/frame-clip-regression.test.js.map +1 -0
  218. package/dist/ui/hooks/useTranscriptHistory.d.ts +9 -1
  219. package/dist/ui/hooks/useTranscriptHistory.d.ts.map +1 -1
  220. package/dist/ui/hooks/useTranscriptHistory.js +51 -19
  221. package/dist/ui/hooks/useTranscriptHistory.js.map +1 -1
  222. package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.d.ts +2 -0
  223. package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.d.ts.map +1 -0
  224. package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.js +81 -0
  225. package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.js.map +1 -0
  226. package/dist/ui/live-area-clamp.test.js +37 -0
  227. package/dist/ui/live-area-clamp.test.js.map +1 -1
  228. package/dist/ui/live-area-height.d.ts.map +1 -1
  229. package/dist/ui/live-area-height.js +13 -6
  230. package/dist/ui/live-area-height.js.map +1 -1
  231. package/dist/ui/live-area-height.test.js +9 -0
  232. package/dist/ui/live-area-height.test.js.map +1 -1
  233. package/dist/ui/live-item-flush.d.ts +28 -0
  234. package/dist/ui/live-item-flush.d.ts.map +1 -1
  235. package/dist/ui/live-item-flush.js +44 -0
  236. package/dist/ui/live-item-flush.js.map +1 -1
  237. package/dist/ui/live-item-flush.test.js +83 -1
  238. package/dist/ui/live-item-flush.test.js.map +1 -1
  239. package/dist/ui/login.d.ts.map +1 -1
  240. package/dist/ui/login.js +12 -30
  241. package/dist/ui/login.js.map +1 -1
  242. package/dist/ui/mcp.d.ts +1 -2
  243. package/dist/ui/mcp.d.ts.map +1 -1
  244. package/dist/ui/mcp.js +8 -43
  245. package/dist/ui/mcp.js.map +1 -1
  246. package/dist/ui/pixel.d.ts.map +1 -1
  247. package/dist/ui/pixel.js +10 -38
  248. package/dist/ui/pixel.js.map +1 -1
  249. package/dist/ui/queued-message.test.js +7 -1
  250. package/dist/ui/queued-message.test.js.map +1 -1
  251. package/dist/ui/render.d.ts.map +1 -1
  252. package/dist/ui/render.js +154 -5
  253. package/dist/ui/render.js.map +1 -1
  254. package/dist/ui/sessions.d.ts.map +1 -1
  255. package/dist/ui/sessions.js +10 -42
  256. package/dist/ui/sessions.js.map +1 -1
  257. package/dist/ui/startup-banner-order.test.d.ts +2 -0
  258. package/dist/ui/startup-banner-order.test.d.ts.map +1 -0
  259. package/dist/ui/startup-banner-order.test.js +105 -0
  260. package/dist/ui/startup-banner-order.test.js.map +1 -0
  261. package/dist/ui/streaming-flush-bounce.test.js +41 -20
  262. package/dist/ui/streaming-flush-bounce.test.js.map +1 -1
  263. package/dist/ui/submit-boundary-gap.test.d.ts +2 -0
  264. package/dist/ui/submit-boundary-gap.test.d.ts.map +1 -0
  265. package/dist/ui/submit-boundary-gap.test.js +180 -0
  266. package/dist/ui/submit-boundary-gap.test.js.map +1 -0
  267. package/dist/ui/terminal-history.d.ts.map +1 -1
  268. package/dist/ui/terminal-history.js +28 -9
  269. package/dist/ui/terminal-history.js.map +1 -1
  270. package/dist/ui/terminal-history.test.js +10 -3
  271. package/dist/ui/terminal-history.test.js.map +1 -1
  272. package/dist/ui/testing/screen-recorder.d.ts.map +1 -1
  273. package/dist/ui/testing/screen-recorder.js +11 -1
  274. package/dist/ui/testing/screen-recorder.js.map +1 -1
  275. package/dist/ui/tui-history-parity.test.js +4 -1
  276. package/dist/ui/tui-history-parity.test.js.map +1 -1
  277. package/dist/ui/tui-simulation.test.js +7 -1
  278. package/dist/ui/tui-simulation.test.js.map +1 -1
  279. package/dist/ui/utils/assistant-stream-split.d.ts +7 -0
  280. package/dist/ui/utils/assistant-stream-split.d.ts.map +1 -1
  281. package/dist/ui/utils/assistant-stream-split.js +22 -1
  282. package/dist/ui/utils/assistant-stream-split.js.map +1 -1
  283. package/dist/ui/utils/assistant-stream-split.test.js +14 -0
  284. package/dist/ui/utils/assistant-stream-split.test.js.map +1 -1
  285. package/dist/ui/utils/markdown-renderer.d.ts.map +1 -1
  286. package/dist/ui/utils/markdown-renderer.js +46 -3
  287. package/dist/ui/utils/markdown-renderer.js.map +1 -1
  288. package/dist/ui/utils/markdown-renderer.test.d.ts +2 -0
  289. package/dist/ui/utils/markdown-renderer.test.d.ts.map +1 -0
  290. package/dist/ui/utils/markdown-renderer.test.js +63 -0
  291. package/dist/ui/utils/markdown-renderer.test.js.map +1 -0
  292. package/dist/ui/utils/terminal-graphics.d.ts +28 -1
  293. package/dist/ui/utils/terminal-graphics.d.ts.map +1 -1
  294. package/dist/ui/utils/terminal-graphics.js +44 -3
  295. package/dist/ui/utils/terminal-graphics.js.map +1 -1
  296. package/dist/ui/utils/terminal-graphics.test.js +40 -1
  297. package/dist/ui/utils/terminal-graphics.test.js.map +1 -1
  298. package/dist/utils/session-title.js +1 -1
  299. package/dist/utils/session-title.js.map +1 -1
  300. package/package.json +7 -6
  301. package/dist/core/model-registry.test.d.ts +0 -2
  302. package/dist/core/model-registry.test.d.ts.map +0 -1
  303. package/dist/core/model-registry.test.js +0 -95
  304. package/dist/core/model-registry.test.js.map +0 -1
  305. package/dist/core/oauth/gemini.test.d.ts +0 -2
  306. package/dist/core/oauth/gemini.test.d.ts.map +0 -1
  307. package/dist/core/oauth/gemini.test.js +0 -154
  308. package/dist/core/oauth/gemini.test.js.map +0 -1
  309. package/dist/core/thinking-level.test.d.ts +0 -2
  310. package/dist/core/thinking-level.test.d.ts.map +0 -1
  311. package/dist/core/thinking-level.test.js +0 -51
  312. package/dist/core/thinking-level.test.js.map +0 -1
  313. package/dist/core/voice-transcriber.test.d.ts +0 -2
  314. package/dist/core/voice-transcriber.test.d.ts.map +0 -1
  315. package/dist/core/voice-transcriber.test.js +0 -88
  316. package/dist/core/voice-transcriber.test.js.map +0 -1
@@ -1,345 +1,5 @@
1
- // Provider display order mirrors `PROVIDERS` in ui/login.tsx so the
2
- // /model selector and login selector sort models identically.
3
- export const MODELS = [
4
- // ── Anthropic ──────────────────────────────────────────
5
- {
6
- id: "claude-fable-5",
7
- name: "Claude Fable 5",
8
- provider: "anthropic",
9
- contextWindow: 1_000_000,
10
- maxOutputTokens: 128_000,
11
- supportsThinking: true,
12
- supportsImages: true,
13
- supportsVideo: false,
14
- costTier: "high",
15
- maxThinkingLevel: "max",
16
- },
17
- {
18
- id: "claude-opus-4-8",
19
- name: "Claude Opus 4.8",
20
- provider: "anthropic",
21
- contextWindow: 1_000_000,
22
- maxOutputTokens: 128_000,
23
- supportsThinking: true,
24
- supportsImages: true,
25
- supportsVideo: false,
26
- costTier: "high",
27
- maxThinkingLevel: "max",
28
- },
29
- {
30
- id: "claude-sonnet-4-6",
31
- name: "Claude Sonnet 4.6",
32
- provider: "anthropic",
33
- contextWindow: 1_000_000,
34
- maxOutputTokens: 64_000,
35
- supportsThinking: true,
36
- supportsImages: true,
37
- supportsVideo: false,
38
- costTier: "medium",
39
- maxThinkingLevel: "max",
40
- },
41
- {
42
- id: "claude-haiku-4-5-20251001",
43
- name: "Claude Haiku 4.5",
44
- provider: "anthropic",
45
- contextWindow: 200_000,
46
- maxOutputTokens: 64_000,
47
- supportsThinking: true,
48
- supportsImages: true,
49
- supportsVideo: false,
50
- costTier: "low",
51
- maxThinkingLevel: "high",
52
- },
53
- // ── OpenAI (Codex) ─────────────────────────────────────
54
- {
55
- id: "gpt-5.5",
56
- name: "GPT-5.5",
57
- provider: "openai",
58
- contextWindow: 1_050_000,
59
- codexContextWindow: 272_000,
60
- maxOutputTokens: 128_000,
61
- supportsThinking: true,
62
- supportsImages: true,
63
- supportsVideo: false,
64
- costTier: "high",
65
- maxThinkingLevel: "xhigh",
66
- },
67
- {
68
- id: "gpt-5.4",
69
- name: "GPT-5.4",
70
- provider: "openai",
71
- contextWindow: 1_050_000,
72
- codexContextWindow: 272_000,
73
- maxOutputTokens: 128_000,
74
- supportsThinking: true,
75
- supportsImages: true,
76
- supportsVideo: false,
77
- costTier: "high",
78
- maxThinkingLevel: "xhigh",
79
- },
80
- {
81
- id: "gpt-5.4-mini",
82
- name: "GPT-5.4 Mini",
83
- provider: "openai",
84
- contextWindow: 400_000,
85
- maxOutputTokens: 128_000,
86
- supportsThinking: true,
87
- supportsImages: true,
88
- supportsVideo: false,
89
- costTier: "low",
90
- maxThinkingLevel: "xhigh",
91
- },
92
- {
93
- id: "gpt-5.3-codex",
94
- name: "GPT-5.3 Codex",
95
- provider: "openai",
96
- contextWindow: 400_000,
97
- maxOutputTokens: 128_000,
98
- supportsThinking: true,
99
- supportsImages: true,
100
- supportsVideo: false,
101
- costTier: "high",
102
- maxThinkingLevel: "xhigh",
103
- },
104
- // ── Gemini ─────────────────────────────────────────────
105
- {
106
- id: "gemini-3.1-flash-lite-preview",
107
- name: "Gemini 3.1 Flash Lite Preview",
108
- provider: "gemini",
109
- contextWindow: 1_048_576,
110
- maxOutputTokens: 65_536,
111
- supportsThinking: true,
112
- supportsImages: true,
113
- supportsVideo: true,
114
- maxVideoBytes: 20 * 1024 * 1024,
115
- costTier: "low",
116
- maxThinkingLevel: "high",
117
- },
118
- {
119
- id: "gemini-3.5-flash",
120
- name: "Gemini 3.5 Flash",
121
- provider: "gemini",
122
- contextWindow: 1_048_576,
123
- maxOutputTokens: 65_536,
124
- supportsThinking: true,
125
- supportsImages: true,
126
- supportsVideo: true,
127
- maxVideoBytes: 20 * 1024 * 1024,
128
- costTier: "low",
129
- maxThinkingLevel: "high",
130
- },
131
- // ── Moonshot (Kimi) ────────────────────────────────────
132
- {
133
- id: "kimi-k2.6",
134
- name: "Kimi K2.6",
135
- provider: "moonshot",
136
- contextWindow: 262_144,
137
- maxOutputTokens: 262_144,
138
- supportsThinking: true,
139
- supportsImages: true,
140
- supportsVideo: true,
141
- maxVideoBytes: 100 * 1024 * 1024,
142
- costTier: "medium",
143
- maxThinkingLevel: "high",
144
- },
145
- // ── Z.AI (GLM) ─────────────────────────────────────────
146
- {
147
- id: "glm-5.1",
148
- name: "GLM-5.1",
149
- provider: "glm",
150
- contextWindow: 204_800,
151
- maxOutputTokens: 131_072,
152
- supportsThinking: true,
153
- supportsImages: false,
154
- supportsVideo: false,
155
- costTier: "medium",
156
- maxThinkingLevel: "high",
157
- },
158
- {
159
- id: "glm-4.7",
160
- name: "GLM-4.7",
161
- provider: "glm",
162
- contextWindow: 200_000,
163
- maxOutputTokens: 131_072,
164
- supportsThinking: true,
165
- supportsImages: false,
166
- supportsVideo: false,
167
- costTier: "low",
168
- maxThinkingLevel: "high",
169
- },
170
- {
171
- id: "glm-4.7-flash",
172
- name: "GLM-4.7 Flash",
173
- provider: "glm",
174
- contextWindow: 200_000,
175
- maxOutputTokens: 131_072,
176
- supportsThinking: true,
177
- supportsImages: false,
178
- supportsVideo: false,
179
- costTier: "low",
180
- maxThinkingLevel: "high",
181
- },
182
- // ── MiniMax ────────────────────────────────────────────
183
- {
184
- id: "MiniMax-M3",
185
- name: "MiniMax M3",
186
- provider: "minimax",
187
- contextWindow: 1_000_000,
188
- maxOutputTokens: 131_072,
189
- supportsThinking: true,
190
- supportsImages: true,
191
- supportsVideo: true,
192
- maxVideoBytes: 50 * 1024 * 1024,
193
- costTier: "medium",
194
- maxThinkingLevel: "high",
195
- },
196
- // ── Xiaomi (MiMo) ──────────────────────────────────────
197
- // Pro series: text-only coding/agentic flagship. The legacy mimo-v2-pro
198
- // auto-routes to v2.5 on 2026-06-01 and is fully deprecated by 2026-06-30.
199
- {
200
- id: "mimo-v2.5-pro",
201
- name: "MiMo-V2.5-Pro",
202
- provider: "xiaomi",
203
- contextWindow: 1_000_000,
204
- maxOutputTokens: 131_072,
205
- supportsThinking: true,
206
- supportsImages: false,
207
- supportsVideo: false,
208
- costTier: "medium",
209
- maxThinkingLevel: "high",
210
- },
211
- // Omni series: native full-modal understanding (image + audio + video).
212
- // Video/image ride the OpenAI-compatible transport as base64 data URLs
213
- // (`video_url`/`image_url`), which the shared transform already emits.
214
- {
215
- id: "mimo-v2.5",
216
- name: "MiMo-V2.5",
217
- provider: "xiaomi",
218
- contextWindow: 1_000_000,
219
- maxOutputTokens: 131_072,
220
- supportsThinking: true,
221
- // MiMo-V2.5 is natively omnimodal (image/audio/video understanding).
222
- supportsImages: true,
223
- supportsVideo: true,
224
- maxVideoBytes: 36 * 1024 * 1024,
225
- costTier: "low",
226
- maxThinkingLevel: "high",
227
- },
228
- // ── DeepSeek ───────────────────────────────────────────
229
- {
230
- id: "deepseek-v4-pro",
231
- name: "DeepSeek V4 Pro",
232
- provider: "deepseek",
233
- contextWindow: 1_048_576,
234
- maxOutputTokens: 384_000,
235
- supportsThinking: true,
236
- supportsImages: false,
237
- supportsVideo: false,
238
- costTier: "high",
239
- // DeepSeek V4 maps `xhigh` → its internal `max` tier.
240
- maxThinkingLevel: "xhigh",
241
- },
242
- {
243
- id: "deepseek-v4-flash",
244
- name: "DeepSeek V4 Flash",
245
- provider: "deepseek",
246
- contextWindow: 1_048_576,
247
- maxOutputTokens: 384_000,
248
- supportsThinking: true,
249
- supportsImages: false,
250
- supportsVideo: false,
251
- costTier: "low",
252
- maxThinkingLevel: "xhigh",
253
- },
254
- // ── OpenRouter ─────────────────────────────────────────
255
- {
256
- id: "qwen/qwen3.6-plus",
257
- name: "Qwen3.6-Plus",
258
- provider: "openrouter",
259
- contextWindow: 1_000_000,
260
- maxOutputTokens: 65_536,
261
- supportsThinking: true,
262
- supportsImages: false,
263
- supportsVideo: false,
264
- costTier: "medium",
265
- maxThinkingLevel: "high",
266
- },
267
- ];
268
- export function getModel(id) {
269
- return MODELS.find((m) => m.id === id);
270
- }
271
- export function getModelsForProvider(provider) {
272
- return MODELS.filter((m) => m.provider === provider);
273
- }
274
- /** Default video payload cap (bytes) when a video model doesn't declare one. */
275
- export const DEFAULT_MAX_VIDEO_BYTES = 20 * 1024 * 1024;
276
- /**
277
- * Max video payload (bytes) the given model's transport accepts before the clip
278
- * must be compressed. Returns `undefined` for models without video support, so
279
- * callers can skip the native-video path entirely.
280
- */
281
- export function getVideoByteLimit(modelId) {
282
- const model = getModel(modelId);
283
- if (!model?.supportsVideo)
284
- return undefined;
285
- return model.maxVideoBytes ?? DEFAULT_MAX_VIDEO_BYTES;
286
- }
287
- export function getDefaultModel(provider) {
288
- if (provider === "xiaomi")
289
- return MODELS.find((m) => m.id === "mimo-v2.5-pro");
290
- if (provider === "openai")
291
- return MODELS.find((m) => m.id === "gpt-5.5");
292
- if (provider === "gemini")
293
- return MODELS.find((m) => m.id === "gemini-3.1-flash-lite-preview");
294
- if (provider === "glm")
295
- return MODELS.find((m) => m.id === "glm-5.1");
296
- if (provider === "moonshot")
297
- return MODELS.find((m) => m.id === "kimi-k2.6");
298
- if (provider === "minimax")
299
- return MODELS.find((m) => m.id === "MiniMax-M3");
300
- if (provider === "deepseek")
301
- return MODELS.find((m) => m.id === "deepseek-v4-pro");
302
- if (provider === "openrouter")
303
- return MODELS.find((m) => m.id === "qwen/qwen3.6-plus");
304
- return MODELS.find((m) => m.id === "claude-sonnet-4-6");
305
- }
306
- export function usesOpenAICodexTransport(options) {
307
- return options?.provider === "openai" && Boolean(options.accountId);
308
- }
309
- export function getContextWindow(modelId, options) {
310
- const model = getModel(modelId);
311
- if (!model)
312
- return 200_000;
313
- if (usesOpenAICodexTransport(options) && model.codexContextWindow) {
314
- return model.codexContextWindow;
315
- }
316
- return model.contextWindow;
317
- }
318
- /**
319
- * The strongest thinking level the given model genuinely uses. Falls back to
320
- * `"high"` for unknown models since every provider we ship accepts it.
321
- */
322
- export function getMaxThinkingLevel(modelId) {
323
- return getModel(modelId)?.maxThinkingLevel ?? "high";
324
- }
325
- /**
326
- * Get the model to use for compaction summarization.
327
- * - Anthropic: always Sonnet 4.6
328
- * - OpenAI: cheapest (Codex Mini)
329
- * - Gemini: use the current model
330
- * - GLM: GLM-4.7 Flash (cheap alternative)
331
- * - Moonshot: use the current model (no cheap alternative)
332
- */
333
- export function getSummaryModel(provider, currentModelId) {
334
- if (provider === "anthropic") {
335
- return MODELS.find((m) => m.id === "claude-sonnet-4-6");
336
- }
337
- if (provider === "openai" || provider === "glm" || provider === "deepseek") {
338
- const low = getModelsForProvider(provider).find((m) => m.costTier === "low");
339
- if (low)
340
- return low;
341
- }
342
- // Moonshot or fallback: use current model
343
- return getModel(currentModelId) ?? getDefaultModel(provider);
344
- }
1
+ // Moved to @prestyj/core. This shim re-exports it so existing relative
2
+ // imports (`./model-registry.js`) and the `@prestyj/cli/models` subpath
3
+ // export keep resolving unchanged.
4
+ export * from "@prestyj/core/models";
345
5
  //# sourceMappingURL=model-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wEAAwE;AACxE,mCAAmC;AACnC,cAAc,sBAAsB,CAAC"}
@@ -1,4 +1,2 @@
1
- import type { OAuthCredentials, OAuthLoginCallbacks } from "./types.js";
2
- export declare function loginAnthropic(callbacks: OAuthLoginCallbacks): Promise<OAuthCredentials>;
3
- export declare function refreshAnthropicToken(refreshToken: string): Promise<OAuthCredentials>;
1
+ export { loginAnthropic, refreshAnthropicToken } from "@prestyj/core";
4
2
  //# sourceMappingURL=anthropic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/anthropic.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAkExE,wBAAsB,cAAc,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0B9F;AAqBD,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAU3F"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/anthropic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,97 +1,3 @@
1
- import crypto from "node:crypto";
2
- import { generatePKCE } from "./pkce.js";
3
- import { getClaudeCliUserAgent } from "../claude-code-version.js";
4
- const CLIENT_ID = atob("OWQxYzI1MGEtZTYxYi00NGQ5LTg4ZWQtNTk0NGQxOTYyZjVl");
5
- const AUTHORIZE_URL = "https://claude.ai/oauth/authorize";
6
- // Anthropic migrated OAuth from console.anthropic.com to platform.claude.com
7
- // in Claude Code v2.1.81+. Try the new endpoint first, fall back to the old one
8
- // so a transient outage on either edge doesn't wipe the user's credentials.
9
- const TOKEN_URLS = [
10
- "https://platform.claude.com/v1/oauth/token",
11
- "https://console.anthropic.com/v1/oauth/token",
12
- ];
13
- const REDIRECT_URI = "https://platform.claude.com/oauth/code/callback";
14
- const SCOPES = "org:create_api_key user:profile user:inference user:sessions:claude_code user:mcp_servers user:file_upload";
15
- async function postTokenRequest(body, label) {
16
- const encoded = JSON.stringify(body);
17
- // Claude Code identity. Anthropic's OAuth edge intermittently rejects
18
- // requests without a recognized claude-cli UA + oauth beta header. Resolve
19
- // the UA version dynamically so it tracks real Claude Code releases.
20
- const headers = {
21
- "Content-Type": "application/json",
22
- "User-Agent": await getClaudeCliUserAgent(),
23
- "anthropic-beta": "oauth-2025-04-20",
24
- };
25
- let lastError = null;
26
- for (const url of TOKEN_URLS) {
27
- let response;
28
- try {
29
- response = await fetch(url, { method: "POST", headers, body: encoded });
30
- }
31
- catch (err) {
32
- lastError = err instanceof Error ? err : new Error(String(err));
33
- continue;
34
- }
35
- if (response.ok) {
36
- return (await response.json());
37
- }
38
- const text = await response.text();
39
- // 4xx is an authoritative auth failure (invalid_grant, invalid_client, etc.)
40
- // — don't paper over it by trying another endpoint, the result will be the
41
- // same and the caller relies on this signal to wipe stale creds.
42
- if (response.status >= 400 && response.status < 500) {
43
- throw new Error(`Anthropic ${label} failed (${response.status}): ${text}`);
44
- }
45
- lastError = new Error(`Anthropic ${label} failed (${response.status}): ${text}`);
46
- }
47
- throw lastError ?? new Error(`Anthropic ${label} failed: all endpoints unreachable`);
48
- }
49
- function toCredentials(data) {
50
- return {
51
- accessToken: data.access_token,
52
- refreshToken: data.refresh_token,
53
- expiresAt: Date.now() + data.expires_in * 1000 - 5 * 60 * 1000,
54
- };
55
- }
56
- export async function loginAnthropic(callbacks) {
57
- const { verifier, challenge } = await generatePKCE();
58
- const state = crypto.randomBytes(16).toString("hex");
59
- const params = new URLSearchParams({
60
- code: "true",
61
- client_id: CLIENT_ID,
62
- response_type: "code",
63
- redirect_uri: REDIRECT_URI,
64
- scope: SCOPES,
65
- code_challenge: challenge,
66
- code_challenge_method: "S256",
67
- state,
68
- });
69
- const authUrl = `${AUTHORIZE_URL}?${params}`;
70
- callbacks.onOpenUrl(authUrl);
71
- const raw = await callbacks.onPromptCode("Paste the code from the browser (format: code#state):");
72
- const parts = raw.trim().split("#");
73
- if (parts.length !== 2 || !parts[0] || parts[1] !== state) {
74
- throw new Error("Invalid code or state mismatch. Please try again.");
75
- }
76
- return exchangeAnthropicCode(parts[0], parts[1], verifier);
77
- }
78
- async function exchangeAnthropicCode(code, state, verifier) {
79
- const data = await postTokenRequest({
80
- grant_type: "authorization_code",
81
- client_id: CLIENT_ID,
82
- code,
83
- state,
84
- redirect_uri: REDIRECT_URI,
85
- code_verifier: verifier,
86
- }, "token exchange");
87
- return toCredentials(data);
88
- }
89
- export async function refreshAnthropicToken(refreshToken) {
90
- const data = await postTokenRequest({
91
- grant_type: "refresh_token",
92
- client_id: CLIENT_ID,
93
- refresh_token: refreshToken,
94
- }, "token refresh");
95
- return toCredentials(data);
96
- }
1
+ // Moved to @prestyj/core.
2
+ export { loginAnthropic, refreshAnthropicToken } from "@prestyj/core";
97
3
  //# sourceMappingURL=anthropic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/core/oauth/anthropic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/core/oauth/anthropic.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,4 +1,2 @@
1
- import type { OAuthCredentials, OAuthLoginCallbacks } from "./types.js";
2
- export declare function loginGemini(callbacks: OAuthLoginCallbacks): Promise<OAuthCredentials>;
3
- export declare function refreshGeminiToken(refreshToken: string): Promise<OAuthCredentials>;
1
+ export { loginGemini, refreshGeminiToken } from "@prestyj/core";
4
2
  //# sourceMappingURL=gemini.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/gemini.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAwFxE,wBAAsB,WAAW,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2C3F;AAED,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAcxF"}
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/gemini.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}