autodev-cli 1.4.164 → 1.4.165
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.
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.ProviderModels = void 0;
|
|
8
8
|
exports.friendlyModelName = friendlyModelName;
|
|
9
9
|
exports.resolveConfiguredModel = resolveConfiguredModel;
|
|
10
|
+
const liveModels_1 = require("./liveModels");
|
|
10
11
|
/** Exact raw-id → friendly-name overrides (fast path for the common Claude ids). */
|
|
11
12
|
const FRIENDLY_OVERRIDES = {
|
|
12
13
|
'claude-opus-4-8': 'Opus 4.8',
|
|
@@ -74,7 +75,7 @@ class ProviderModels {
|
|
|
74
75
|
* Must always resolve to a non-empty list — implementations fall back to
|
|
75
76
|
* `list()` on any failure so the picker never goes empty.
|
|
76
77
|
*/
|
|
77
|
-
async listLive() { return this.list(); }
|
|
78
|
+
async listLive() { return (0, liveModels_1.filterChatModels)(this.list()); }
|
|
78
79
|
resolve(id) {
|
|
79
80
|
if (!id) {
|
|
80
81
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderModels.js","sourceRoot":"","sources":["../../../src/providers/base/ProviderModels.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,0EAA0E;AAC1E,8DAA8D;AAC9D,8EAA8E;;;
|
|
1
|
+
{"version":3,"file":"ProviderModels.js","sourceRoot":"","sources":["../../../src/providers/base/ProviderModels.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,15 @@ export interface LiveModelOptions {
|
|
|
28
28
|
now?: () => number;
|
|
29
29
|
fetchImpl?: FetchLike;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Name-only heuristic: is this model id a TEXT chat/completion model?
|
|
33
|
+
* Used for entries (and static lists) that carry no modality field.
|
|
34
|
+
*/
|
|
35
|
+
export declare function isChatModelId(id: string): boolean;
|
|
36
|
+
/** Is this live `/v1/models` entry a chat model? Modality field wins; else name heuristic. */
|
|
37
|
+
export declare function isChatEntry(id: string, o?: Record<string, unknown>): boolean;
|
|
38
|
+
/** Drop non-chat (media/audio/embedding) entries from a catalog list. */
|
|
39
|
+
export declare function filterChatModels(models: ModelInfo[]): ModelInfo[];
|
|
31
40
|
/** "grok-4.6" → "Grok 4.6"; "grok-4.20-0309-non-reasoning" → "Grok 4.20 0309 Non Reasoning". */
|
|
32
41
|
export declare function deriveModelLabel(id: string): string;
|
|
33
42
|
/**
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
// • The returned shape is byte-for-byte the same { id, label, contextLimit }.
|
|
14
14
|
// ---------------------------------------------------------------------------
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.isChatModelId = isChatModelId;
|
|
17
|
+
exports.isChatEntry = isChatEntry;
|
|
18
|
+
exports.filterChatModels = filterChatModels;
|
|
16
19
|
exports.deriveModelLabel = deriveModelLabel;
|
|
17
20
|
exports.mapLiveEntries = mapLiveEntries;
|
|
18
21
|
exports.fetchLiveModels = fetchLiveModels;
|
|
@@ -20,6 +23,73 @@ exports.__clearLiveModelCache = __clearLiveModelCache;
|
|
|
20
23
|
const CACHE = new Map();
|
|
21
24
|
const DEFAULT_TTL_MS = 60_000;
|
|
22
25
|
const DEFAULT_TIMEOUT_MS = 4_000;
|
|
26
|
+
// ── chat/completion filter ───────────────────────────────────────────────────
|
|
27
|
+
// The picker should only surface TEXT chat/completion models. A provider's
|
|
28
|
+
// `/v1/models` can also list media-generation (image/video), audio (tts/whisper)
|
|
29
|
+
// and embedding models — those aren't usable as an agent's chat model.
|
|
30
|
+
//
|
|
31
|
+
// Name heuristic: ids matching these are excluded. Vision-INPUT chat models
|
|
32
|
+
// (e.g. grok-vision) do NOT match any token here, so they are kept.
|
|
33
|
+
const NON_CHAT_ID_RE = /(imagine|image|video|whisper|embedding|embed)/i;
|
|
34
|
+
// `tts` only as a whole token (so it can't swallow an unrelated substring).
|
|
35
|
+
const TTS_ID_RE = /(^|[-_/])tts([-_/]|$)/i;
|
|
36
|
+
/**
|
|
37
|
+
* Name-only heuristic: is this model id a TEXT chat/completion model?
|
|
38
|
+
* Used for entries (and static lists) that carry no modality field.
|
|
39
|
+
*/
|
|
40
|
+
function isChatModelId(id) {
|
|
41
|
+
const s = String(id ?? '').trim().toLowerCase();
|
|
42
|
+
if (!s)
|
|
43
|
+
return false;
|
|
44
|
+
if (NON_CHAT_ID_RE.test(s))
|
|
45
|
+
return false;
|
|
46
|
+
if (TTS_ID_RE.test(s))
|
|
47
|
+
return false;
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Prefer the API's own modality/type field when a `/v1/models` entry carries one.
|
|
52
|
+
* Returns true when the entry is definitively NON-chat (image/video/audio/embedding),
|
|
53
|
+
* false when definitively chat/text, and undefined when the entry says nothing —
|
|
54
|
+
* in which case the caller falls back to the name heuristic.
|
|
55
|
+
*/
|
|
56
|
+
function nonChatByModality(o) {
|
|
57
|
+
const outs = o['output_modalities'] ?? o['output_modality'] ?? o['modalities'];
|
|
58
|
+
const arr = Array.isArray(outs) ? outs : (typeof outs === 'string' ? [outs] : null);
|
|
59
|
+
if (arr && arr.length) {
|
|
60
|
+
const mods = arr.map((x) => String(x).toLowerCase());
|
|
61
|
+
const hasText = mods.includes('text');
|
|
62
|
+
const hasMedia = mods.some((m) => ['image', 'video', 'audio', 'embedding'].includes(m));
|
|
63
|
+
if (hasText)
|
|
64
|
+
return false; // emits text → it's a chat/completion model
|
|
65
|
+
if (hasMedia)
|
|
66
|
+
return true; // emits only media → not a chat model
|
|
67
|
+
}
|
|
68
|
+
const type = o['type'] ?? o['modality'];
|
|
69
|
+
if (typeof type === 'string') {
|
|
70
|
+
const t = type.toLowerCase();
|
|
71
|
+
if (/(image|video|audio|embed|tts|whisper|speech)/.test(t))
|
|
72
|
+
return true;
|
|
73
|
+
if (/(chat|text|completion|language)/.test(t))
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
/** Is this live `/v1/models` entry a chat model? Modality field wins; else name heuristic. */
|
|
79
|
+
function isChatEntry(id, o) {
|
|
80
|
+
if (o) {
|
|
81
|
+
const byModality = nonChatByModality(o);
|
|
82
|
+
if (byModality === true)
|
|
83
|
+
return false;
|
|
84
|
+
if (byModality === false)
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
return isChatModelId(id);
|
|
88
|
+
}
|
|
89
|
+
/** Drop non-chat (media/audio/embedding) entries from a catalog list. */
|
|
90
|
+
function filterChatModels(models) {
|
|
91
|
+
return models.filter((m) => isChatModelId(m.id));
|
|
92
|
+
}
|
|
23
93
|
/** "grok-4.6" → "Grok 4.6"; "grok-4.20-0309-non-reasoning" → "Grok 4.20 0309 Non Reasoning". */
|
|
24
94
|
function deriveModelLabel(id) {
|
|
25
95
|
const cleaned = String(id ?? '').trim();
|
|
@@ -45,16 +115,21 @@ function mapLiveEntries(data, staticModels, defaultContextLimit) {
|
|
|
45
115
|
for (const raw of data) {
|
|
46
116
|
let id = '';
|
|
47
117
|
let ctxRaw = 0;
|
|
118
|
+
let obj;
|
|
48
119
|
if (raw && typeof raw === 'object') {
|
|
49
|
-
|
|
50
|
-
id = String(
|
|
51
|
-
ctxRaw = Number(
|
|
120
|
+
obj = raw;
|
|
121
|
+
id = String(obj['id'] ?? '').trim();
|
|
122
|
+
ctxRaw = Number(obj['context_length'] ?? obj['context_window'] ?? obj['contextLimit'] ?? 0);
|
|
52
123
|
}
|
|
53
124
|
else if (typeof raw === 'string') {
|
|
54
125
|
id = raw.trim();
|
|
55
126
|
}
|
|
56
127
|
if (!id)
|
|
57
128
|
continue;
|
|
129
|
+
// Keep only TEXT chat/completion models — drop image/video/audio/embedding.
|
|
130
|
+
// The API's own modality field wins when present; otherwise the name heuristic.
|
|
131
|
+
if (!isChatEntry(id, obj))
|
|
132
|
+
continue;
|
|
58
133
|
const key = id.toLowerCase();
|
|
59
134
|
if (seen.has(key))
|
|
60
135
|
continue;
|
|
@@ -109,8 +184,11 @@ async function doFetch(opts, token) {
|
|
|
109
184
|
* Only SUCCESSFUL live results are cached; a fallback never poisons the cache.
|
|
110
185
|
*/
|
|
111
186
|
async function fetchLiveModels(opts) {
|
|
187
|
+
// The static fallback is filtered the same way as the live list so the picker
|
|
188
|
+
// never surfaces a media/embedding model regardless of which path is taken.
|
|
189
|
+
const staticChat = filterChatModels(opts.staticModels);
|
|
112
190
|
if (!opts.token || !String(opts.token).trim())
|
|
113
|
-
return
|
|
191
|
+
return staticChat;
|
|
114
192
|
const now = opts.now ?? (() => Date.now());
|
|
115
193
|
const ttl = opts.ttlMs ?? DEFAULT_TTL_MS;
|
|
116
194
|
const cached = CACHE.get(opts.family);
|
|
@@ -121,7 +199,7 @@ async function fetchLiveModels(opts) {
|
|
|
121
199
|
CACHE.set(opts.family, { ts: now(), models: live });
|
|
122
200
|
return live.slice();
|
|
123
201
|
}
|
|
124
|
-
return
|
|
202
|
+
return staticChat;
|
|
125
203
|
}
|
|
126
204
|
/** Test-only: reset the per-process cache between cases. */
|
|
127
205
|
function __clearLiveModelCache() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveModels.js","sourceRoot":"","sources":["../../../src/providers/base/liveModels.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,sCAAsC;AACtC,EAAE;AACF,uCAAuC;AACvC,+EAA+E;AAC/E,kFAAkF;AAClF,0DAA0D;AAC1D,gFAAgF;AAChF,gEAAgE;AAChE,gFAAgF;AAChF,8EAA8E;;
|
|
1
|
+
{"version":3,"file":"liveModels.js","sourceRoot":"","sources":["../../../src/providers/base/liveModels.ts"],"names":[],"mappings":"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"}
|