@exla/rudder 0.0.0-stage → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/LICENSE +100 -0
  2. package/README.md +733 -2
  3. package/assets/rudder.icns +0 -0
  4. package/assets/sounds/NOTICE.md +8 -0
  5. package/assets/sounds/ping.mp3 +0 -0
  6. package/dist/agent-attention.d.ts +5 -0
  7. package/dist/agent-attention.js +54 -0
  8. package/dist/agent-attention.js.map +1 -0
  9. package/dist/analytics.d.ts +36 -0
  10. package/dist/analytics.js +178 -0
  11. package/dist/analytics.js.map +1 -0
  12. package/dist/attach-session.d.ts +91 -0
  13. package/dist/attach-session.js +290 -0
  14. package/dist/attach-session.js.map +1 -0
  15. package/dist/auth.d.ts +36 -0
  16. package/dist/auth.js +397 -0
  17. package/dist/auth.js.map +1 -0
  18. package/dist/backends.d.ts +3 -0
  19. package/dist/backends.js +638 -0
  20. package/dist/backends.js.map +1 -0
  21. package/dist/board/board.css +1 -0
  22. package/dist/board/board.js +2 -0
  23. package/dist/board/daemon.d.ts +39 -0
  24. package/dist/board/daemon.js +1510 -0
  25. package/dist/board/daemon.js.map +1 -0
  26. package/dist/brain.d.ts +24 -0
  27. package/dist/brain.js +244 -0
  28. package/dist/brain.js.map +1 -0
  29. package/dist/bus.d.ts +9 -0
  30. package/dist/bus.js +23 -0
  31. package/dist/bus.js.map +1 -0
  32. package/dist/checkout-sync.d.ts +35 -0
  33. package/dist/checkout-sync.js +247 -0
  34. package/dist/checkout-sync.js.map +1 -0
  35. package/dist/cloud.d.ts +51 -0
  36. package/dist/cloud.js +4672 -0
  37. package/dist/cloud.js.map +1 -0
  38. package/dist/codex-binary.d.ts +12 -0
  39. package/dist/codex-binary.js +184 -0
  40. package/dist/codex-binary.js.map +1 -0
  41. package/dist/context-audit.d.ts +21 -0
  42. package/dist/context-audit.js +109 -0
  43. package/dist/context-audit.js.map +1 -0
  44. package/dist/daemon.d.ts +27 -0
  45. package/dist/daemon.js +203 -0
  46. package/dist/daemon.js.map +1 -0
  47. package/dist/effort.d.ts +9 -0
  48. package/dist/effort.js +72 -0
  49. package/dist/effort.js.map +1 -0
  50. package/dist/feedback.d.ts +46 -0
  51. package/dist/feedback.js +173 -0
  52. package/dist/feedback.js.map +1 -0
  53. package/dist/gc.d.ts +3 -0
  54. package/dist/gc.js +262 -0
  55. package/dist/gc.js.map +1 -0
  56. package/dist/git.d.ts +31 -0
  57. package/dist/git.js +455 -0
  58. package/dist/git.js.map +1 -0
  59. package/dist/goal.d.ts +33 -0
  60. package/dist/goal.js +95 -0
  61. package/dist/goal.js.map +1 -0
  62. package/dist/graph.d.ts +93 -0
  63. package/dist/graph.js +372 -0
  64. package/dist/graph.js.map +1 -0
  65. package/dist/handoff.d.ts +110 -0
  66. package/dist/handoff.js +565 -0
  67. package/dist/handoff.js.map +1 -0
  68. package/dist/improve/advisor.d.ts +10 -0
  69. package/dist/improve/advisor.js +115 -0
  70. package/dist/improve/advisor.js.map +1 -0
  71. package/dist/improve/collect.d.ts +49 -0
  72. package/dist/improve/collect.js +274 -0
  73. package/dist/improve/collect.js.map +1 -0
  74. package/dist/improve/gate.d.ts +17 -0
  75. package/dist/improve/gate.js +60 -0
  76. package/dist/improve/gate.js.map +1 -0
  77. package/dist/improve/index.d.ts +9 -0
  78. package/dist/improve/index.js +376 -0
  79. package/dist/improve/index.js.map +1 -0
  80. package/dist/improve/judge.d.ts +32 -0
  81. package/dist/improve/judge.js +114 -0
  82. package/dist/improve/judge.js.map +1 -0
  83. package/dist/improve/mine.d.ts +31 -0
  84. package/dist/improve/mine.js +192 -0
  85. package/dist/improve/mine.js.map +1 -0
  86. package/dist/improve/propose.d.ts +51 -0
  87. package/dist/improve/propose.js +150 -0
  88. package/dist/improve/propose.js.map +1 -0
  89. package/dist/improve/rank.d.ts +16 -0
  90. package/dist/improve/rank.js +49 -0
  91. package/dist/improve/rank.js.map +1 -0
  92. package/dist/improve/schedule.d.ts +1 -0
  93. package/dist/improve/schedule.js +95 -0
  94. package/dist/improve/schedule.js.map +1 -0
  95. package/dist/improve/ship.d.ts +25 -0
  96. package/dist/improve/ship.js +82 -0
  97. package/dist/improve/ship.js.map +1 -0
  98. package/dist/improve/state.d.ts +157 -0
  99. package/dist/improve/state.js +264 -0
  100. package/dist/improve/state.js.map +1 -0
  101. package/dist/index.d.ts +2 -0
  102. package/dist/index.js +88 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/jj-binary.d.ts +36 -0
  105. package/dist/jj-binary.js +143 -0
  106. package/dist/jj-binary.js.map +1 -0
  107. package/dist/jj.d.ts +163 -0
  108. package/dist/jj.js +926 -0
  109. package/dist/jj.js.map +1 -0
  110. package/dist/logger.d.ts +22 -0
  111. package/dist/logger.js +110 -0
  112. package/dist/logger.js.map +1 -0
  113. package/dist/main.d.ts +3 -0
  114. package/dist/main.js +1366 -0
  115. package/dist/main.js.map +1 -0
  116. package/dist/migration.d.ts +82 -0
  117. package/dist/migration.js +198 -0
  118. package/dist/migration.js.map +1 -0
  119. package/dist/models.d.ts +9 -0
  120. package/dist/models.js +623 -0
  121. package/dist/models.js.map +1 -0
  122. package/dist/move-home.d.ts +82 -0
  123. package/dist/move-home.js +472 -0
  124. package/dist/move-home.js.map +1 -0
  125. package/dist/native/darwin-arm64/rudder-native +0 -0
  126. package/dist/native/darwin-x64/rudder-native +0 -0
  127. package/dist/native/linux-x64/rudder-native +0 -0
  128. package/dist/native-agents.d.ts +8 -0
  129. package/dist/native-agents.js +178 -0
  130. package/dist/native-agents.js.map +1 -0
  131. package/dist/native-binary.d.ts +4 -0
  132. package/dist/native-binary.js +140 -0
  133. package/dist/native-binary.js.map +1 -0
  134. package/dist/onboarding.d.ts +11 -0
  135. package/dist/onboarding.js +111 -0
  136. package/dist/onboarding.js.map +1 -0
  137. package/dist/paste-bridge.d.ts +36 -0
  138. package/dist/paste-bridge.js +279 -0
  139. package/dist/paste-bridge.js.map +1 -0
  140. package/dist/plan-mode.d.ts +2 -0
  141. package/dist/plan-mode.js +22 -0
  142. package/dist/plan-mode.js.map +1 -0
  143. package/dist/planner.d.ts +27 -0
  144. package/dist/planner.js +587 -0
  145. package/dist/planner.js.map +1 -0
  146. package/dist/predict.d.ts +67 -0
  147. package/dist/predict.js +369 -0
  148. package/dist/predict.js.map +1 -0
  149. package/dist/qr.d.ts +13 -0
  150. package/dist/qr.js +377 -0
  151. package/dist/qr.js.map +1 -0
  152. package/dist/report.d.ts +74 -0
  153. package/dist/report.js +412 -0
  154. package/dist/report.js.map +1 -0
  155. package/dist/rudder-md.d.ts +33 -0
  156. package/dist/rudder-md.js +142 -0
  157. package/dist/rudder-md.js.map +1 -0
  158. package/dist/run-manager.d.ts +62 -0
  159. package/dist/run-manager.js +1400 -0
  160. package/dist/run-manager.js.map +1 -0
  161. package/dist/scheduler.d.ts +128 -0
  162. package/dist/scheduler.js +955 -0
  163. package/dist/scheduler.js.map +1 -0
  164. package/dist/state.d.ts +127 -0
  165. package/dist/state.js +704 -0
  166. package/dist/state.js.map +1 -0
  167. package/dist/surfaces.d.ts +91 -0
  168. package/dist/surfaces.js +460 -0
  169. package/dist/surfaces.js.map +1 -0
  170. package/dist/task-summary.d.ts +30 -0
  171. package/dist/task-summary.js +472 -0
  172. package/dist/task-summary.js.map +1 -0
  173. package/dist/types.d.ts +492 -0
  174. package/dist/types.js +2 -0
  175. package/dist/types.js.map +1 -0
  176. package/dist/usage.d.ts +198 -0
  177. package/dist/usage.js +830 -0
  178. package/dist/usage.js.map +1 -0
  179. package/dist/util.d.ts +73 -0
  180. package/dist/util.js +399 -0
  181. package/dist/util.js.map +1 -0
  182. package/dist/version-check.d.ts +16 -0
  183. package/dist/version-check.js +269 -0
  184. package/dist/version-check.js.map +1 -0
  185. package/package.json +68 -4
  186. package/scripts/copy-native.mjs +89 -0
  187. package/scripts/postinstall.mjs +34 -0
package/dist/models.js ADDED
@@ -0,0 +1,623 @@
1
+ import fsp from "node:fs/promises";
2
+ import fs from "node:fs";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { loadAuthStore, loadConfig } from "./state.js";
6
+ import { rudderHome } from "./util.js";
7
+ const MODELS_DEV_URL = "https://models.dev/api.json";
8
+ const OPENAI_MODELS_URL = "https://api.openai.com/v1/models";
9
+ const ANTHROPIC_MODELS_URL = "https://api.anthropic.com/v1/models?limit=100";
10
+ const ANTHROPIC_VERSION = "2023-06-01";
11
+ const MODELS_DEV_CACHE_MAX_AGE_MS = 24 * 60 * 60 * 1000;
12
+ const MODEL_PICKER_LIMIT = 24;
13
+ let modelCatalogInFlight;
14
+ export async function discoverModelOptions(backend, configuredDefault) {
15
+ const defaultDetail = configuredDefault || "CLI default";
16
+ const options = [{ label: "Default", value: undefined, detail: defaultDetail }];
17
+ const discovered = backend === "claude" ? await discoverClaudeModelsDev() : await discoverCodexModelsDev();
18
+ for (const option of discovered) {
19
+ pushUnique(options, option);
20
+ if (options.length >= MODEL_PICKER_LIMIT) {
21
+ break;
22
+ }
23
+ }
24
+ if (backend === "claude") {
25
+ for (const option of claudeCodeAliasOptions()) {
26
+ pushUnique(options, option);
27
+ }
28
+ }
29
+ if (options.length <= 1) {
30
+ const fallback = backend === "claude" ? await discoverClaudeModelsLocal() : await discoverCodexModelsLocal();
31
+ for (const option of fallback) {
32
+ pushUnique(options, option);
33
+ }
34
+ }
35
+ return options;
36
+ }
37
+ export function fallbackModelOptions(backend, configuredDefault) {
38
+ const defaultDetail = configuredDefault || "CLI default";
39
+ if (backend === "claude") {
40
+ return [
41
+ { label: "Default", value: undefined, detail: defaultDetail },
42
+ ...claudeCodeAliasOptions(),
43
+ ];
44
+ }
45
+ return [
46
+ { label: "Default", value: undefined, detail: defaultDetail },
47
+ { label: "gpt-6.1-sol", value: "gpt-6.1-sol" },
48
+ { label: "gpt-5.6-sol", value: "gpt-5.6-sol" },
49
+ { label: "gpt-5.6-terra", value: "gpt-5.6-terra" },
50
+ { label: "gpt-5.6-luna", value: "gpt-5.6-luna" },
51
+ ];
52
+ }
53
+ async function discoverCodexModelsDev() {
54
+ const data = await readModelsDev();
55
+ const provider = data.openai;
56
+ const entries = Object.entries(provider?.models ?? {})
57
+ .filter(([id, model]) => isUsableTextModel(id, model) && isCodexRelevantModel(id))
58
+ .sort(compareModelEntries("codex"));
59
+ return entries.map(([id, model]) => ({
60
+ label: id,
61
+ value: id,
62
+ detail: shortModelDetail(model),
63
+ }));
64
+ }
65
+ async function discoverClaudeModelsDev() {
66
+ const data = await readModelsDev();
67
+ const provider = data.anthropic;
68
+ const entries = Object.entries(provider?.models ?? {})
69
+ .filter(([id, model]) => id.startsWith("claude-") && isUsableTextModel(id, model) && isClaudePickerModel(id))
70
+ .sort(compareModelEntries("claude"));
71
+ return entries.map(([id, model]) => ({
72
+ label: id,
73
+ value: id,
74
+ detail: modelDetail(model, prettyClaudeModel(id)),
75
+ }));
76
+ }
77
+ async function discoverCodexModelsLocal() {
78
+ const file = path.join(os.homedir(), ".codex", "models_cache.json");
79
+ const raw = await fsp.readFile(file, "utf8").catch(() => "");
80
+ if (!raw) {
81
+ return [];
82
+ }
83
+ let parsed;
84
+ try {
85
+ parsed = JSON.parse(raw);
86
+ }
87
+ catch {
88
+ // A partially-written cache (Codex writing concurrently) should degrade to
89
+ // "no local models" for this source, not reject the whole discovery.
90
+ return [];
91
+ }
92
+ return (parsed.models ?? [])
93
+ .filter((model) => model.slug && model.slug !== "codex-auto-review")
94
+ .map((model) => ({
95
+ label: model.slug || model.display_name || "model",
96
+ value: model.slug,
97
+ detail: model.display_name || model.description || "local Codex cache",
98
+ }));
99
+ }
100
+ async function discoverClaudeModelsLocal() {
101
+ const counts = new Map();
102
+ await collectClaudeProjectModels(path.join(os.homedir(), ".claude", "projects"), counts);
103
+ const recent = [...counts.entries()]
104
+ .filter(([model]) => model !== "<synthetic>")
105
+ .sort((a, b) => b[1] - a[1])
106
+ .map(([model]) => ({
107
+ label: model,
108
+ value: model,
109
+ detail: prettyClaudeModel(model),
110
+ }));
111
+ const options = claudeCodeAliasOptions();
112
+ for (const option of recent) {
113
+ pushUnique(options, option);
114
+ }
115
+ return options;
116
+ }
117
+ async function readModelsDev() {
118
+ if (modelCatalogInFlight) {
119
+ return modelCatalogInFlight;
120
+ }
121
+ modelCatalogInFlight = readMergedModelCatalog().finally(() => {
122
+ modelCatalogInFlight = undefined;
123
+ });
124
+ return modelCatalogInFlight;
125
+ }
126
+ async function readMergedModelCatalog() {
127
+ const cached = await readModelsDevCache();
128
+ let base;
129
+ let shouldWrite = false;
130
+ if (cached && Date.now() - cached.mtimeMs < MODELS_DEV_CACHE_MAX_AGE_MS) {
131
+ base = cached.data;
132
+ }
133
+ else {
134
+ const fresh = await fetchModelsDev().catch(() => null);
135
+ if (fresh) {
136
+ base = fresh;
137
+ shouldWrite = true;
138
+ }
139
+ else {
140
+ base = cached?.data ?? {};
141
+ }
142
+ }
143
+ const merged = cloneModelCatalog(base);
144
+ const added = await mergeLiveAndLocalModels(merged);
145
+ if (shouldWrite || added) {
146
+ await writeModelsDevCache(merged);
147
+ }
148
+ return merged;
149
+ }
150
+ async function fetchModelsDev() {
151
+ const controller = new AbortController();
152
+ const timer = setTimeout(() => controller.abort(), 2500);
153
+ try {
154
+ const response = await fetch(MODELS_DEV_URL, { signal: controller.signal });
155
+ if (!response.ok) {
156
+ throw new Error(`models.dev returned ${response.status}`);
157
+ }
158
+ return await response.json();
159
+ }
160
+ finally {
161
+ clearTimeout(timer);
162
+ }
163
+ }
164
+ async function readModelsDevCache() {
165
+ const file = modelsDevCachePath();
166
+ const [raw, stat] = await Promise.all([
167
+ fsp.readFile(file, "utf8").catch(() => ""),
168
+ fsp.stat(file).catch(() => null),
169
+ ]);
170
+ if (!raw || !stat) {
171
+ return null;
172
+ }
173
+ try {
174
+ return { data: JSON.parse(raw), mtimeMs: stat.mtimeMs };
175
+ }
176
+ catch {
177
+ return null;
178
+ }
179
+ }
180
+ async function writeModelsDevCache(data) {
181
+ const file = modelsDevCachePath();
182
+ await fsp.mkdir(path.dirname(file), { recursive: true });
183
+ await fsp.writeFile(file, JSON.stringify(data), { mode: 0o600 });
184
+ }
185
+ function modelsDevCachePath() {
186
+ // Resolve under RUDDER_HOME (falling back to ~/.rudder) so this TS writer and the
187
+ // native Rust reader (models.rs models_dev_cache_path) agree on the same file when
188
+ // RUDDER_HOME is set — otherwise dynamic model refresh + cached reasoning break.
189
+ return path.join(rudderHome(), "models-dev.json");
190
+ }
191
+ function isUsableTextModel(id, model) {
192
+ if (model.tool_call === false) {
193
+ return false;
194
+ }
195
+ if (isExcludedOpenAiTextModel(id)) {
196
+ return false;
197
+ }
198
+ const output = model.modalities?.output;
199
+ return !output || output.includes("text");
200
+ }
201
+ function claudeCodeAliasOptions() {
202
+ return [
203
+ { label: "opus", value: "opus", detail: "1M context · complex tasks" },
204
+ { label: "fable", value: "fable", detail: "hard, long-running tasks" },
205
+ { label: "sonnet", value: "sonnet", detail: "efficient routine tasks" },
206
+ { label: "haiku", value: "haiku", detail: "fastest quick answers" },
207
+ ];
208
+ }
209
+ function isClaudePickerModel(id) {
210
+ // No family-name allowlist: a brand-new model family (fable, and whatever
211
+ // comes after it) must show up in the picker without a Rudder release. Only
212
+ // the legacy 3.x-generation ids are excluded.
213
+ return !id.includes("3-");
214
+ }
215
+ function isCodexRelevantModel(id) {
216
+ if (id.includes("deep-research") || id.includes("chat-latest")) {
217
+ return false;
218
+ }
219
+ return id.includes("codex") || isGptTextModel(id) || isOSeriesModel(id);
220
+ }
221
+ function compareModelEntries(backend) {
222
+ return (a, b) => {
223
+ const score = backend === "claude" ? scoreClaudeModel : scoreCodexModel;
224
+ const diff = score(b[0], b[1]) - score(a[0], a[1]);
225
+ if (diff !== 0) {
226
+ return diff;
227
+ }
228
+ return (b[1].release_date ?? "").localeCompare(a[1].release_date ?? "") || a[0].localeCompare(b[0]);
229
+ };
230
+ }
231
+ function scoreClaudeModel(id, model) {
232
+ let score = 0;
233
+ if (id.includes("fable"))
234
+ score += 50;
235
+ else if (id.includes("sonnet"))
236
+ score += 40;
237
+ else if (id.includes("opus"))
238
+ score += 35;
239
+ else if (id.includes("haiku"))
240
+ score += 20;
241
+ // An unknown family is likely a NEW tier; rank it above haiku rather than
242
+ // letting it score zero and fall off the picker cut.
243
+ else
244
+ score += 30;
245
+ if (model.reasoning)
246
+ score += 20;
247
+ score += recencyScore(model);
248
+ return score;
249
+ }
250
+ function scoreCodexModel(id, model) {
251
+ let score = 0;
252
+ if (id.includes("codex"))
253
+ score += 60;
254
+ score += gptVersionScore(id);
255
+ if (isOSeriesModel(id))
256
+ score += 25;
257
+ if (model.reasoning)
258
+ score += 20;
259
+ score += recencyScore(model);
260
+ return score;
261
+ }
262
+ async function mergeLiveAndLocalModels(data) {
263
+ let changed = false;
264
+ const [openai, anthropic, codexLocal, claudeLocal] = await Promise.all([
265
+ fetchOpenAIModelCatalog().catch(() => []),
266
+ fetchAnthropicModelCatalog().catch(() => []),
267
+ readCodexLocalModels().catch(() => []),
268
+ readClaudeLocalModelIds().catch(() => []),
269
+ ]);
270
+ for (const model of openai) {
271
+ changed = mergeProviderModel(data, "openai", model.id, model.meta) || changed;
272
+ }
273
+ for (const model of anthropic) {
274
+ changed = mergeProviderModel(data, "anthropic", model.id, model.meta) || changed;
275
+ }
276
+ for (const model of codexLocal) {
277
+ changed = mergeProviderModel(data, "openai", model.id, model.meta) || changed;
278
+ }
279
+ for (const model of claudeLocal) {
280
+ changed = mergeProviderModel(data, "anthropic", model.id, model.meta) || changed;
281
+ }
282
+ return changed;
283
+ }
284
+ async function fetchOpenAIModelCatalog() {
285
+ const authHeaders = await openAIAuthHeaders();
286
+ for (const headers of authHeaders) {
287
+ const response = await fetchJsonWithTimeout(OPENAI_MODELS_URL, { headers }).catch(() => null);
288
+ const rows = response?.data ?? [];
289
+ if (rows.length === 0) {
290
+ continue;
291
+ }
292
+ return rows
293
+ .filter((model) => typeof model.id === "string" && isCodexRelevantModel(model.id) && !isExcludedOpenAiTextModel(model.id))
294
+ .map((model) => ({
295
+ id: model.id,
296
+ meta: {
297
+ id: model.id,
298
+ name: model.id,
299
+ tool_call: true,
300
+ reasoning: isLikelyReasoningModel("codex", model.id),
301
+ release_date: model.created ? new Date(model.created * 1000).toISOString().slice(0, 10) : undefined,
302
+ modalities: { output: ["text"] },
303
+ source: "openai-api",
304
+ created: model.created,
305
+ owned_by: model.owned_by,
306
+ },
307
+ }));
308
+ }
309
+ return [];
310
+ }
311
+ async function fetchAnthropicModelCatalog() {
312
+ const authHeaders = await anthropicAuthHeaders();
313
+ for (const headers of authHeaders) {
314
+ const response = await fetchJsonWithTimeout(ANTHROPIC_MODELS_URL, { headers }).catch(() => null);
315
+ const rows = response?.data ?? [];
316
+ if (rows.length === 0) {
317
+ continue;
318
+ }
319
+ return rows
320
+ .filter((model) => typeof model.id === "string" && model.id.startsWith("claude-") && isClaudePickerModel(model.id))
321
+ .map((model) => ({
322
+ id: model.id,
323
+ meta: {
324
+ id: model.id,
325
+ name: model.display_name || prettyClaudeModel(model.id),
326
+ tool_call: true,
327
+ reasoning: isLikelyReasoningModel("claude", model.id),
328
+ release_date: typeof model.created_at === "string" ? model.created_at.slice(0, 10) : undefined,
329
+ modalities: { output: ["text"] },
330
+ source: "anthropic-api",
331
+ },
332
+ }));
333
+ }
334
+ return [];
335
+ }
336
+ async function readCodexLocalModels() {
337
+ return (await discoverCodexModelsLocal())
338
+ .filter((model) => model.value && isCodexRelevantModel(model.value) && !isExcludedOpenAiTextModel(model.value))
339
+ .map((model) => ({
340
+ id: model.value,
341
+ meta: {
342
+ id: model.value,
343
+ name: model.detail || model.label,
344
+ tool_call: true,
345
+ reasoning: isLikelyReasoningModel("codex", model.value),
346
+ modalities: { output: ["text"] },
347
+ source: "codex-local-cache",
348
+ },
349
+ }));
350
+ }
351
+ async function readClaudeLocalModelIds() {
352
+ const counts = new Map();
353
+ await collectClaudeProjectModels(path.join(os.homedir(), ".claude", "projects"), counts);
354
+ return [...counts.keys()]
355
+ .filter((id) => id.startsWith("claude-") && isClaudePickerModel(id))
356
+ .map((id) => ({
357
+ id,
358
+ meta: {
359
+ id,
360
+ name: prettyClaudeModel(id),
361
+ tool_call: true,
362
+ reasoning: isLikelyReasoningModel("claude", id),
363
+ modalities: { output: ["text"] },
364
+ source: "claude-local-history",
365
+ },
366
+ }));
367
+ }
368
+ async function openAIAuthHeaders() {
369
+ const values = await providerCredentialValues("openai");
370
+ return values.map((value) => ({ Authorization: `Bearer ${value}` }));
371
+ }
372
+ async function anthropicAuthHeaders() {
373
+ const credentials = await providerCredentials("anthropic");
374
+ const headers = [];
375
+ for (const credential of credentials) {
376
+ if (credential.kind === "api_key") {
377
+ headers.push({
378
+ "x-api-key": credential.value,
379
+ "anthropic-version": ANTHROPIC_VERSION,
380
+ });
381
+ }
382
+ else {
383
+ headers.push({
384
+ Authorization: `Bearer ${credential.value}`,
385
+ "anthropic-version": ANTHROPIC_VERSION,
386
+ });
387
+ }
388
+ }
389
+ return headers;
390
+ }
391
+ async function providerCredentialValues(provider) {
392
+ return (await providerCredentials(provider)).map((credential) => credential.value);
393
+ }
394
+ async function providerCredentials(provider) {
395
+ const values = [];
396
+ const envKey = provider === "openai" ? process.env.OPENAI_API_KEY?.trim() : process.env.ANTHROPIC_API_KEY?.trim();
397
+ if (envKey) {
398
+ values.push({ kind: "api_key", value: envKey });
399
+ }
400
+ const [store, config] = await Promise.all([
401
+ loadAuthStore().catch(() => ({ version: 1, profiles: {} })),
402
+ loadConfig().catch(() => undefined),
403
+ ]);
404
+ const ids = provider === "openai"
405
+ ? [
406
+ config?.backends?.codex?.profileId,
407
+ "openai-codex:default",
408
+ "openai:env",
409
+ "openai:default",
410
+ ]
411
+ : [
412
+ config?.backends?.claude?.profileId,
413
+ "anthropic:claude-code",
414
+ "anthropic:env",
415
+ "anthropic:default",
416
+ ];
417
+ for (const id of ids) {
418
+ if (!id) {
419
+ continue;
420
+ }
421
+ addCredential(values, store.profiles[id]);
422
+ }
423
+ const seen = new Set();
424
+ return values.filter((credential) => {
425
+ const key = `${credential.kind}:${credential.value}`;
426
+ if (seen.has(key)) {
427
+ return false;
428
+ }
429
+ seen.add(key);
430
+ return true;
431
+ });
432
+ }
433
+ function addCredential(values, credential) {
434
+ if (!credential) {
435
+ return;
436
+ }
437
+ if (credential.type === "api_key" && credential.key) {
438
+ values.push({ kind: "api_key", value: credential.key });
439
+ }
440
+ else if (credential.type === "token" && credential.token) {
441
+ values.push({ kind: "token", value: credential.token });
442
+ }
443
+ else if (credential.type === "oauth" && credential.access) {
444
+ values.push({ kind: "token", value: credential.access });
445
+ }
446
+ }
447
+ async function fetchJsonWithTimeout(url, init) {
448
+ const controller = new AbortController();
449
+ const timer = setTimeout(() => controller.abort(), 2500);
450
+ try {
451
+ const response = await fetch(url, { ...init, signal: controller.signal });
452
+ if (!response.ok) {
453
+ throw new Error(`${url} returned ${response.status}`);
454
+ }
455
+ return await response.json();
456
+ }
457
+ finally {
458
+ clearTimeout(timer);
459
+ }
460
+ }
461
+ function cloneModelCatalog(data) {
462
+ return JSON.parse(JSON.stringify(data));
463
+ }
464
+ function mergeProviderModel(data, providerId, modelId, meta) {
465
+ if (!modelId) {
466
+ return false;
467
+ }
468
+ const provider = data[providerId] ?? { id: providerId, models: {} };
469
+ const models = provider.models ?? {};
470
+ const previous = models[modelId] ?? {};
471
+ models[modelId] = {
472
+ ...previous,
473
+ ...meta,
474
+ id: modelId,
475
+ };
476
+ data[providerId] = {
477
+ ...provider,
478
+ id: provider.id || providerId,
479
+ models,
480
+ };
481
+ return JSON.stringify(previous) !== JSON.stringify(models[modelId]);
482
+ }
483
+ function isExcludedOpenAiTextModel(id) {
484
+ return /\b(embedding|image|audio|tts|whisper|transcribe|translation|moderation|rerank|realtime|dall-e|search)\b/i.test(id);
485
+ }
486
+ function isGptTextModel(id) {
487
+ return /^gpt-\d/.test(id);
488
+ }
489
+ function isOSeriesModel(id) {
490
+ return /^o\d/.test(id);
491
+ }
492
+ function isLikelyReasoningModel(backend, id) {
493
+ if (backend === "claude") {
494
+ if (!id.startsWith("claude-") || id.includes("haiku") || id.includes("3-")) {
495
+ return id.includes("opus") || id.includes("sonnet") || id.includes("fable");
496
+ }
497
+ return true;
498
+ }
499
+ return isGptTextModel(id) || id.includes("codex") || isOSeriesModel(id);
500
+ }
501
+ function gptVersionScore(id) {
502
+ const match = /^gpt-(\d+)(?:[.-](\d+))?/.exec(id);
503
+ if (!match) {
504
+ return 0;
505
+ }
506
+ const major = Number(match[1]);
507
+ const minor = Number(match[2] ?? "0");
508
+ if (!Number.isFinite(major) || !Number.isFinite(minor)) {
509
+ return 0;
510
+ }
511
+ return 20 + major * 20 + minor;
512
+ }
513
+ function recencyScore(model) {
514
+ const date = model.release_date || model.last_updated;
515
+ if (!date) {
516
+ return 0;
517
+ }
518
+ const timestamp = Date.parse(date);
519
+ if (Number.isNaN(timestamp)) {
520
+ return 0;
521
+ }
522
+ return Math.min(30, Math.max(0, Math.round((timestamp - Date.parse("2024-01-01")) / (30 * 24 * 60 * 60 * 1000))));
523
+ }
524
+ function shortModelDetail(model) {
525
+ return modelDetail(model, "");
526
+ }
527
+ function modelDetail(model, fallbackName) {
528
+ const parts = [];
529
+ if (model.name || fallbackName) {
530
+ parts.push(model.name || fallbackName);
531
+ }
532
+ if (model.limit?.context) {
533
+ parts.push(`${formatNumber(model.limit.context)} context`);
534
+ }
535
+ if (model.release_date) {
536
+ parts.push(model.release_date);
537
+ }
538
+ return parts.join(" · ");
539
+ }
540
+ function formatNumber(value) {
541
+ if (value >= 1_000_000) {
542
+ return `${Math.round(value / 100_000) / 10}M`;
543
+ }
544
+ if (value >= 1_000) {
545
+ return `${Math.round(value / 1000)}K`;
546
+ }
547
+ return String(value);
548
+ }
549
+ async function collectClaudeProjectModels(dir, counts, depth = 0) {
550
+ if (depth > 2 || !fs.existsSync(dir)) {
551
+ return;
552
+ }
553
+ const entries = await fsp.readdir(dir, { withFileTypes: true }).catch(() => []);
554
+ for (const entry of entries.slice(0, 700)) {
555
+ const fullPath = path.join(dir, entry.name);
556
+ if (entry.isDirectory()) {
557
+ await collectClaudeProjectModels(fullPath, counts, depth + 1);
558
+ continue;
559
+ }
560
+ if (!entry.name.endsWith(".jsonl")) {
561
+ continue;
562
+ }
563
+ const raw = await fsp.readFile(fullPath, "utf8").catch(() => "");
564
+ const lines = raw.split(/\r?\n/).slice(-250);
565
+ for (const line of lines) {
566
+ if (!line.trim()) {
567
+ continue;
568
+ }
569
+ try {
570
+ collectModelFields(JSON.parse(line), counts);
571
+ }
572
+ catch {
573
+ // Ignore corrupt or partial JSONL rows from active sessions.
574
+ }
575
+ }
576
+ }
577
+ }
578
+ function collectModelFields(value, counts, depth = 0) {
579
+ if (!value || typeof value !== "object" || depth > 5) {
580
+ return;
581
+ }
582
+ if (Array.isArray(value)) {
583
+ for (const item of value) {
584
+ collectModelFields(item, counts, depth + 1);
585
+ }
586
+ return;
587
+ }
588
+ const record = value;
589
+ if (typeof record.model === "string") {
590
+ counts.set(record.model, (counts.get(record.model) ?? 0) + 1);
591
+ }
592
+ if (record.model && typeof record.model === "object") {
593
+ const model = record.model;
594
+ for (const key of ["id", "name", "model"]) {
595
+ if (typeof model[key] === "string") {
596
+ counts.set(model[key], (counts.get(model[key]) ?? 0) + 1);
597
+ }
598
+ }
599
+ }
600
+ for (const child of Object.values(record)) {
601
+ collectModelFields(child, counts, depth + 1);
602
+ }
603
+ }
604
+ function prettyClaudeModel(model) {
605
+ if (model === "opus" || model === "sonnet") {
606
+ return `${capitalize(model)} latest`;
607
+ }
608
+ return model
609
+ .replace(/^claude-/, "")
610
+ .split("-")
611
+ .map((part) => (/^\d+$/.test(part) ? part : capitalize(part)))
612
+ .join(" ");
613
+ }
614
+ function capitalize(value) {
615
+ return `${value.slice(0, 1).toUpperCase()}${value.slice(1)}`;
616
+ }
617
+ function pushUnique(options, option) {
618
+ if (options.some((existing) => existing.value === option.value)) {
619
+ return;
620
+ }
621
+ options.push(option);
622
+ }
623
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}