@didim365/agent-cli-core 0.2.19 → 0.2.20
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.
- package/dist/src/config/providerModels.d.ts +11 -0
- package/dist/src/config/providerModels.js +22 -2
- package/dist/src/config/providerModels.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/providers/providerSelector.js +147 -9
- package/dist/src/providers/providerSelector.js.map +1 -1
- package/package.json +1 -1
|
@@ -72,3 +72,14 @@ export declare function getDefaultModelFromRegistry(providerKey: string): string
|
|
|
72
72
|
* @returns true if the model is valid for the provider
|
|
73
73
|
*/
|
|
74
74
|
export declare function isModelValidForProvider(model: string, providerKey: string): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Check if a model is a registered model (preset or model ID) of a specific provider.
|
|
77
|
+
*
|
|
78
|
+
* Unlike `isModelValidForProvider`, this does NOT consider `allowCustomModels` or `freeformInput`.
|
|
79
|
+
* Returns true only if the model is an exact match in the provider's preset values or model IDs.
|
|
80
|
+
*
|
|
81
|
+
* @param model - Model ID to check
|
|
82
|
+
* @param providerKey - Target provider key
|
|
83
|
+
* @returns true if the model is explicitly registered for the provider
|
|
84
|
+
*/
|
|
85
|
+
export declare function isRegisteredModelForProvider(model: string, providerKey: string): boolean;
|
|
@@ -173,12 +173,32 @@ export function isModelValidForProvider(model, providerKey) {
|
|
|
173
173
|
}
|
|
174
174
|
return false;
|
|
175
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Check if a model is a registered model (preset or model ID) of a specific provider.
|
|
178
|
+
*
|
|
179
|
+
* Unlike `isModelValidForProvider`, this does NOT consider `allowCustomModels` or `freeformInput`.
|
|
180
|
+
* Returns true only if the model is an exact match in the provider's preset values or model IDs.
|
|
181
|
+
*
|
|
182
|
+
* @param model - Model ID to check
|
|
183
|
+
* @param providerKey - Target provider key
|
|
184
|
+
* @returns true if the model is explicitly registered for the provider
|
|
185
|
+
*/
|
|
186
|
+
export function isRegisteredModelForProvider(model, providerKey) {
|
|
187
|
+
const group = PROVIDER_MODEL_REGISTRY[providerKey];
|
|
188
|
+
if (!group)
|
|
189
|
+
return false;
|
|
190
|
+
if (group.freeformInput || group.modelSelectionDisabled)
|
|
191
|
+
return false;
|
|
192
|
+
const presetValues = group.presets.map((p) => p.value);
|
|
193
|
+
const modelIds = group.models.map((m) => m.id);
|
|
194
|
+
return presetValues.includes(model) || modelIds.includes(model);
|
|
195
|
+
}
|
|
176
196
|
/**
|
|
177
197
|
* Determine if a model clearly belongs to another provider based on prefix heuristics.
|
|
178
198
|
*
|
|
179
199
|
* Prefix rules:
|
|
180
200
|
* - `claude-*` → claude
|
|
181
|
-
* - `gpt
|
|
201
|
+
* - `gpt-[0-9]*`, `o[0-9]*` → openai
|
|
182
202
|
* - `gemini-*`, `auto-gemini*` → gemini
|
|
183
203
|
*/
|
|
184
204
|
function isModelOwnedByOtherProvider(model, currentProvider) {
|
|
@@ -186,7 +206,7 @@ function isModelOwnedByOtherProvider(model, currentProvider) {
|
|
|
186
206
|
const normalized = model.toLowerCase();
|
|
187
207
|
const providerPrefixes = {
|
|
188
208
|
claude: [(m) => m.startsWith('claude-')],
|
|
189
|
-
openai: [(m) =>
|
|
209
|
+
openai: [(m) => /^gpt-[0-9]/.test(m), (m) => /^o[0-9]/.test(m)],
|
|
190
210
|
gemini: [
|
|
191
211
|
(m) => m.startsWith('gemini-'),
|
|
192
212
|
(m) => m.startsWith('auto-gemini'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerModels.js","sourceRoot":"","sources":["../../../src/config/providerModels.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"providerModels.js","sourceRoot":"","sources":["../../../src/config/providerModels.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
// This file is auto-generated by the build script (scripts/generate-git-commit-info.js)
|
|
7
7
|
// Do not edit this file manually.
|
|
8
|
-
export const GIT_COMMIT_INFO = '
|
|
8
|
+
export const GIT_COMMIT_INFO = '987cc151f';
|
|
9
9
|
export const CLI_VERSION = '0.30.0';
|
|
10
10
|
//# sourceMappingURL=git-commit.js.map
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { ProviderType, getProviderForAuthType, } from './providerTypes.js';
|
|
7
7
|
import { LlmError, LlmErrorType } from './errors.js';
|
|
8
|
-
import { PROVIDER_MODEL_REGISTRY, getDefaultModelFromRegistry, isModelValidForProvider, } from '../config/providerModels.js';
|
|
8
|
+
import { PROVIDER_MODEL_REGISTRY, getDefaultModelFromRegistry, isModelValidForProvider, isRegisteredModelForProvider, } from '../config/providerModels.js';
|
|
9
9
|
/**
|
|
10
10
|
* Required environment variables per provider.
|
|
11
11
|
*/
|
|
@@ -189,29 +189,167 @@ export function isGeminiSpecificModel(model) {
|
|
|
189
189
|
* @returns Resolved model name appropriate for the provider
|
|
190
190
|
*/
|
|
191
191
|
export function resolveProviderModel(model, provider) {
|
|
192
|
+
// Normalize provider alias to canonical registry key (e.g., 'openai_compatible' → 'openai-compatible')
|
|
193
|
+
const normalizedProvider = normalizeProviderRegistryKey(provider);
|
|
192
194
|
// modelSelectionDisabled providers always use their fixed default
|
|
193
|
-
const group = PROVIDER_MODEL_REGISTRY[
|
|
195
|
+
const group = PROVIDER_MODEL_REGISTRY[normalizedProvider];
|
|
194
196
|
if (group?.modelSelectionDisabled) {
|
|
195
|
-
return getDefaultModelFromRegistry(
|
|
197
|
+
return getDefaultModelFromRegistry(normalizedProvider);
|
|
196
198
|
}
|
|
197
199
|
// Gemini-specific model handling
|
|
198
200
|
if (isGeminiSpecificModel(model)) {
|
|
199
|
-
if (
|
|
201
|
+
if (normalizedProvider === ProviderType.Gemini)
|
|
200
202
|
return model;
|
|
201
203
|
// LLM_MODEL env var: validate before use to prevent cross-provider leak
|
|
202
204
|
const llmModel = process.env['LLM_MODEL'];
|
|
203
|
-
if (llmModel && isModelValidForProvider(llmModel,
|
|
205
|
+
if (llmModel && isModelValidForProvider(llmModel, normalizedProvider)) {
|
|
204
206
|
return llmModel;
|
|
205
207
|
}
|
|
206
208
|
// Gemini-specific model + non-Gemini provider → provider default
|
|
207
|
-
return getDefaultModelFromRegistry(
|
|
209
|
+
return getDefaultModelFromRegistry(normalizedProvider);
|
|
208
210
|
}
|
|
209
|
-
// Non-Gemini model
|
|
210
|
-
|
|
211
|
-
|
|
211
|
+
// Non-Gemini model handling
|
|
212
|
+
const llmModelEnv = process.env['LLM_MODEL'];
|
|
213
|
+
// Cross-provider stale model detection.
|
|
214
|
+
// Two detection strategies work in tandem:
|
|
215
|
+
//
|
|
216
|
+
// 1. Prefix/registry heuristic (isRegisteredModelOfOtherProvider):
|
|
217
|
+
// Catches well-known models like 'claude-sonnet-4-6' or 'gpt-4o'.
|
|
218
|
+
//
|
|
219
|
+
// 2. Non-registered model check (isRegisteredModelForProvider):
|
|
220
|
+
// For freeformInput providers, any model is "valid", so (1) is the only guard.
|
|
221
|
+
// For non-freeformInput providers (Claude/OpenAI), models unknown to ALL providers
|
|
222
|
+
// (e.g., 'gpt-oss-20b' from sLM) pass allowCustomModels validation.
|
|
223
|
+
// If LLM_MODEL differs from model AND model is not in target's registry,
|
|
224
|
+
// this is a provider-switch scenario → prefer LLM_MODEL or default.
|
|
225
|
+
if (llmModelEnv && llmModelEnv !== model) {
|
|
226
|
+
// Strategy 1: model is a known model of another provider (prefix or registry)
|
|
227
|
+
if (isRegisteredModelOfOtherProvider(model, normalizedProvider)) {
|
|
228
|
+
if (isModelValidForProvider(llmModelEnv, normalizedProvider)) {
|
|
229
|
+
return llmModelEnv;
|
|
230
|
+
}
|
|
231
|
+
return getDefaultModelFromRegistry(normalizedProvider);
|
|
232
|
+
}
|
|
233
|
+
// Strategy 2: model is not registered for target provider (non-freeformInput only)
|
|
234
|
+
// On freeformInput, unknown models may be user-specified (--model) → respect them.
|
|
235
|
+
// Exclude models with target provider's own prefix (e.g., 'claude-sonnet-4-20250514'
|
|
236
|
+
// on Claude) — these are legitimate custom versions of the provider's own models
|
|
237
|
+
// accepted via allowCustomModels, not cross-provider leaks.
|
|
238
|
+
const group = PROVIDER_MODEL_REGISTRY[normalizedProvider];
|
|
239
|
+
if (group &&
|
|
240
|
+
!group.freeformInput &&
|
|
241
|
+
!isRegisteredModelForProvider(model, normalizedProvider) &&
|
|
242
|
+
!isOwnProviderPrefix(model, normalizedProvider)) {
|
|
243
|
+
if (isModelValidForProvider(llmModelEnv, normalizedProvider)) {
|
|
244
|
+
return llmModelEnv;
|
|
245
|
+
}
|
|
246
|
+
return getDefaultModelFromRegistry(normalizedProvider);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// No LLM_MODEL: detect stale models using prefix/registry heuristic only.
|
|
250
|
+
// Without LLM_MODEL signal, we cannot distinguish user-specified custom models
|
|
251
|
+
// (e.g., --model my-custom-model) from stale cross-provider models. Delegate
|
|
252
|
+
// to isModelValidForProvider which respects allowCustomModels.
|
|
253
|
+
if (!llmModelEnv &&
|
|
254
|
+
isRegisteredModelOfOtherProvider(model, normalizedProvider)) {
|
|
255
|
+
return getDefaultModelFromRegistry(normalizedProvider);
|
|
256
|
+
}
|
|
257
|
+
if (!isModelValidForProvider(model, normalizedProvider)) {
|
|
258
|
+
return getDefaultModelFromRegistry(normalizedProvider);
|
|
212
259
|
}
|
|
213
260
|
return model;
|
|
214
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* Normalize provider alias to canonical registry key.
|
|
264
|
+
*
|
|
265
|
+
* Maps common aliases (e.g., 'openai_compatible', 'anthropic') to registry keys
|
|
266
|
+
* used in PROVIDER_MODEL_REGISTRY. This prevents registry lookup misses when
|
|
267
|
+
* alias strings are passed from env vars or settings.
|
|
268
|
+
*/
|
|
269
|
+
function normalizeProviderRegistryKey(provider) {
|
|
270
|
+
const normalized = (typeof provider === 'string' ? provider : provider)
|
|
271
|
+
.toLowerCase()
|
|
272
|
+
.trim();
|
|
273
|
+
switch (normalized) {
|
|
274
|
+
case 'openai_compatible':
|
|
275
|
+
case 'slm':
|
|
276
|
+
return 'openai-compatible';
|
|
277
|
+
case 'anthropic':
|
|
278
|
+
return 'claude';
|
|
279
|
+
case 'vertex-ai':
|
|
280
|
+
case 'vertex_ai':
|
|
281
|
+
return 'gemini';
|
|
282
|
+
case 'didim-studio':
|
|
283
|
+
case 'didim_studio':
|
|
284
|
+
return 'didim';
|
|
285
|
+
default:
|
|
286
|
+
return normalized;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Check if a model has the target provider's own naming prefix.
|
|
291
|
+
*
|
|
292
|
+
* E.g., 'claude-sonnet-4-20250514' has Claude's own prefix on Claude provider.
|
|
293
|
+
* These models are legitimate custom/unreleased versions, not cross-provider leaks.
|
|
294
|
+
*/
|
|
295
|
+
function isOwnProviderPrefix(model, provider) {
|
|
296
|
+
const normalized = model.toLowerCase();
|
|
297
|
+
const prefixMap = {
|
|
298
|
+
claude: [(m) => m.startsWith('claude-')],
|
|
299
|
+
openai: [(m) => /^gpt-[0-9]/.test(m), (m) => /^o[0-9]/.test(m)],
|
|
300
|
+
gemini: [
|
|
301
|
+
(m) => m.startsWith('gemini-'),
|
|
302
|
+
(m) => m.startsWith('auto-gemini'),
|
|
303
|
+
],
|
|
304
|
+
};
|
|
305
|
+
const checks = prefixMap[provider];
|
|
306
|
+
if (!checks)
|
|
307
|
+
return false;
|
|
308
|
+
return checks.some((check) => check(normalized));
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Check if a model clearly belongs to another provider.
|
|
312
|
+
*
|
|
313
|
+
* Uses two detection methods:
|
|
314
|
+
* 1. Registry match: exact preset value or model ID in another provider's registry
|
|
315
|
+
* 2. Prefix heuristic: known provider prefixes (claude-*, gpt-[0-9]*, o[0-9]*, gemini-*)
|
|
316
|
+
*
|
|
317
|
+
* This avoids false positives from allowCustomModels/freeformInput, which would
|
|
318
|
+
* incorrectly flag user-specified models (e.g., 'my-custom-llama') as belonging
|
|
319
|
+
* to another provider.
|
|
320
|
+
*/
|
|
321
|
+
function isRegisteredModelOfOtherProvider(model, currentProvider) {
|
|
322
|
+
const normalized = model.toLowerCase();
|
|
323
|
+
// Prefix heuristics for well-known provider model naming conventions
|
|
324
|
+
const providerPrefixes = {
|
|
325
|
+
claude: [(m) => m.startsWith('claude-')],
|
|
326
|
+
openai: [(m) => /^gpt-[0-9]/.test(m), (m) => /^o[0-9]/.test(m)],
|
|
327
|
+
gemini: [
|
|
328
|
+
(m) => m.startsWith('gemini-'),
|
|
329
|
+
(m) => m.startsWith('auto-gemini'),
|
|
330
|
+
],
|
|
331
|
+
};
|
|
332
|
+
for (const [providerKey, checks] of Object.entries(providerPrefixes)) {
|
|
333
|
+
if (providerKey === currentProvider)
|
|
334
|
+
continue;
|
|
335
|
+
if (checks.some((check) => check(normalized)))
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
// Registry match: exact preset/model ID in another provider
|
|
339
|
+
for (const [key, g] of Object.entries(PROVIDER_MODEL_REGISTRY)) {
|
|
340
|
+
if (key === currentProvider ||
|
|
341
|
+
g.freeformInput ||
|
|
342
|
+
g.modelSelectionDisabled) {
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
const presetValues = g.presets.map((p) => p.value);
|
|
346
|
+
const modelIds = g.models.map((m) => m.id);
|
|
347
|
+
if (presetValues.includes(model) || modelIds.includes(model)) {
|
|
348
|
+
return true;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
215
353
|
/**
|
|
216
354
|
* Get API key for a provider from environment.
|
|
217
355
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerSelector.js","sourceRoot":"","sources":["../../../src/providers/providerSelector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,sBAAsB,GAEvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,
|
|
1
|
+
{"version":3,"file":"providerSelector.js","sourceRoot":"","sources":["../../../src/providers/providerSelector.ts"],"names":[],"mappings":"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"}
|