@dexto/core 1.6.0 → 1.6.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.
- package/dist/agent/DextoAgent.cjs +79 -5
- package/dist/agent/DextoAgent.d.ts +24 -2
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +79 -5
- package/dist/agent/agent-options.d.ts +6 -1
- package/dist/agent/agent-options.d.ts.map +1 -1
- package/dist/agent/schemas.d.ts +18 -18
- package/dist/approval/manager.cjs +87 -27
- package/dist/approval/manager.d.ts +10 -1
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +87 -27
- package/dist/approval/schemas.cjs +22 -8
- package/dist/approval/schemas.d.ts +276 -102
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +22 -8
- package/dist/context/manager.cjs +2 -2
- package/dist/context/manager.d.ts +2 -1
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +2 -2
- package/dist/context/types.d.ts +3 -2
- package/dist/context/types.d.ts.map +1 -1
- package/dist/events/index.d.ts +26 -13
- package/dist/events/index.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/types.d.ts +1 -22
- package/dist/hooks/types.d.ts.map +1 -1
- package/dist/llm/executor/provider-options.cjs +223 -28
- package/dist/llm/executor/provider-options.d.ts +3 -37
- package/dist/llm/executor/provider-options.d.ts.map +1 -1
- package/dist/llm/executor/provider-options.js +227 -27
- package/dist/llm/executor/stream-processor.cjs +57 -34
- package/dist/llm/executor/stream-processor.d.ts +12 -4
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/stream-processor.js +55 -32
- package/dist/llm/executor/turn-executor.cjs +66 -44
- package/dist/llm/executor/turn-executor.d.ts +3 -3
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +56 -34
- package/dist/llm/formatters/vercel.cjs +15 -3
- package/dist/llm/formatters/vercel.d.ts +1 -0
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +15 -3
- package/dist/llm/index.cjs +8 -0
- package/dist/llm/index.d.ts +2 -1
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +7 -0
- package/dist/llm/providers/local/schemas.d.ts +2 -2
- package/dist/llm/providers/openrouter-model-registry.cjs +66 -11
- package/dist/llm/providers/openrouter-model-registry.d.ts +26 -0
- package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -1
- package/dist/llm/providers/openrouter-model-registry.js +65 -11
- package/dist/llm/reasoning/anthropic-betas.cjs +31 -0
- package/dist/llm/reasoning/anthropic-betas.d.ts +3 -0
- package/dist/llm/reasoning/anthropic-betas.d.ts.map +1 -0
- package/dist/llm/reasoning/anthropic-betas.js +7 -0
- package/dist/llm/reasoning/anthropic-thinking.cjs +79 -0
- package/dist/llm/reasoning/anthropic-thinking.d.ts +15 -0
- package/dist/llm/reasoning/anthropic-thinking.d.ts.map +1 -0
- package/dist/llm/reasoning/anthropic-thinking.js +52 -0
- package/dist/llm/reasoning/openai-reasoning-effort.cjs +86 -0
- package/dist/llm/reasoning/openai-reasoning-effort.d.ts +5 -0
- package/dist/llm/reasoning/openai-reasoning-effort.d.ts.map +1 -0
- package/dist/llm/reasoning/openai-reasoning-effort.js +61 -0
- package/dist/llm/reasoning/profile.cjs +113 -0
- package/dist/llm/reasoning/profile.d.ts +13 -0
- package/dist/llm/reasoning/profile.d.ts.map +1 -0
- package/dist/llm/reasoning/profile.js +92 -0
- package/dist/llm/reasoning/profiles/anthropic.cjs +61 -0
- package/dist/llm/reasoning/profiles/anthropic.d.ts +8 -0
- package/dist/llm/reasoning/profiles/anthropic.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/anthropic.js +45 -0
- package/dist/llm/reasoning/profiles/bedrock.cjs +54 -0
- package/dist/llm/reasoning/profiles/bedrock.d.ts +3 -0
- package/dist/llm/reasoning/profiles/bedrock.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/bedrock.js +36 -0
- package/dist/llm/reasoning/profiles/google.cjs +45 -0
- package/dist/llm/reasoning/profiles/google.d.ts +9 -0
- package/dist/llm/reasoning/profiles/google.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/google.js +21 -0
- package/dist/llm/reasoning/profiles/openai-compatible.cjs +39 -0
- package/dist/llm/reasoning/profiles/openai-compatible.d.ts +3 -0
- package/dist/llm/reasoning/profiles/openai-compatible.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/openai-compatible.js +16 -0
- package/dist/llm/reasoning/profiles/openai.cjs +41 -0
- package/dist/llm/reasoning/profiles/openai.d.ts +3 -0
- package/dist/llm/reasoning/profiles/openai.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/openai.js +18 -0
- package/dist/llm/reasoning/profiles/openrouter.cjs +83 -0
- package/dist/llm/reasoning/profiles/openrouter.d.ts +10 -0
- package/dist/llm/reasoning/profiles/openrouter.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/openrouter.js +59 -0
- package/dist/llm/reasoning/profiles/shared.cjs +80 -0
- package/dist/llm/reasoning/profiles/shared.d.ts +25 -0
- package/dist/llm/reasoning/profiles/shared.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/shared.js +53 -0
- package/dist/llm/reasoning/profiles/vertex.cjs +46 -0
- package/dist/llm/reasoning/profiles/vertex.d.ts +3 -0
- package/dist/llm/reasoning/profiles/vertex.d.ts.map +1 -0
- package/dist/llm/reasoning/profiles/vertex.js +23 -0
- package/dist/llm/registry/auto-update.cjs +18 -0
- package/dist/llm/registry/auto-update.d.ts.map +1 -1
- package/dist/llm/registry/auto-update.js +18 -0
- package/dist/llm/registry/index.cjs +126 -26
- package/dist/llm/registry/index.d.ts +48 -4
- package/dist/llm/registry/index.d.ts.map +1 -1
- package/dist/llm/registry/index.js +136 -28
- package/dist/llm/registry/models.generated.cjs +5198 -59
- package/dist/llm/registry/models.generated.d.ts +1893 -76
- package/dist/llm/registry/models.generated.d.ts.map +1 -1
- package/dist/llm/registry/models.generated.js +5196 -58
- package/dist/llm/registry/sync.cjs +72 -1
- package/dist/llm/registry/sync.d.ts +21 -1
- package/dist/llm/registry/sync.d.ts.map +1 -1
- package/dist/llm/registry/sync.js +72 -1
- package/dist/llm/resolver.cjs +13 -1
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +13 -1
- package/dist/llm/schemas.cjs +75 -14
- package/dist/llm/schemas.d.ts +84 -27
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +75 -14
- package/dist/llm/services/factory.cjs +55 -8
- package/dist/llm/services/factory.d.ts +1 -1
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +58 -8
- package/dist/llm/services/vercel.cjs +2 -2
- package/dist/llm/services/vercel.js +2 -2
- package/dist/llm/types.d.ts +9 -0
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/logger/default-logger-factory.d.ts +12 -12
- package/dist/logger/v2/dexto-logger.cjs +35 -0
- package/dist/logger/v2/dexto-logger.d.ts +19 -0
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
- package/dist/logger/v2/dexto-logger.js +35 -0
- package/dist/logger/v2/schemas.d.ts +6 -6
- package/dist/logger/v2/test-utils.cjs +2 -0
- package/dist/logger/v2/test-utils.d.ts.map +1 -1
- package/dist/logger/v2/test-utils.js +2 -0
- package/dist/logger/v2/types.d.ts +14 -1
- package/dist/logger/v2/types.d.ts.map +1 -1
- package/dist/mcp/schemas.d.ts +15 -15
- package/dist/memory/schemas.d.ts +4 -4
- package/dist/prompts/index.cjs +9 -0
- package/dist/prompts/index.d.ts +1 -0
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +10 -0
- package/dist/prompts/prompt-manager.cjs +2 -0
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +2 -0
- package/dist/prompts/providers/config-prompt-provider.cjs +11 -1
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +11 -1
- package/dist/prompts/schemas.cjs +2 -2
- package/dist/prompts/schemas.d.ts +7 -7
- package/dist/prompts/schemas.js +2 -2
- package/dist/prompts/types.d.ts +6 -2
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/systemPrompt/in-built-prompts.cjs +5 -5
- package/dist/systemPrompt/in-built-prompts.d.ts +1 -1
- package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
- package/dist/systemPrompt/in-built-prompts.js +5 -5
- package/dist/systemPrompt/schemas.d.ts +5 -5
- package/dist/systemPrompt/types.d.ts +11 -0
- package/dist/systemPrompt/types.d.ts.map +1 -1
- package/dist/tools/display-types.d.ts +10 -0
- package/dist/tools/display-types.d.ts.map +1 -1
- package/dist/tools/index.cjs +3 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/presentation.cjs +49 -0
- package/dist/tools/presentation.d.ts +11 -0
- package/dist/tools/presentation.d.ts.map +1 -0
- package/dist/tools/presentation.js +24 -0
- package/dist/tools/tool-manager.cjs +389 -136
- package/dist/tools/tool-manager.d.ts +36 -24
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +389 -136
- package/dist/tools/types.d.ts +134 -55
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/path.cjs +10 -1
- package/dist/utils/path.d.ts +5 -2
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/path.js +10 -1
- package/dist/utils/service-initializer.d.ts +1 -0
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/package.json +7 -5
|
@@ -21,6 +21,23 @@ class OpenRouterModelRegistry {
|
|
|
21
21
|
refreshPromise = null;
|
|
22
22
|
lastRefreshAttemptAt = null;
|
|
23
23
|
lastUsedApiKey;
|
|
24
|
+
parseExpirationDateEndUtc(expirationDate) {
|
|
25
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(expirationDate.trim());
|
|
26
|
+
if (!match) return null;
|
|
27
|
+
const year = Number(match[1]);
|
|
28
|
+
const monthIndex = Number(match[2]) - 1;
|
|
29
|
+
const day = Number(match[3]);
|
|
30
|
+
if (!Number.isFinite(year) || !Number.isFinite(monthIndex) || !Number.isFinite(day)) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return Date.UTC(year, monthIndex, day, 23, 59, 59, 999);
|
|
34
|
+
}
|
|
35
|
+
isExpired(model) {
|
|
36
|
+
if (!model.expirationDate) return false;
|
|
37
|
+
const expiresAt = this.parseExpirationDateEndUtc(model.expirationDate);
|
|
38
|
+
if (!expiresAt) return false;
|
|
39
|
+
return Date.now() > expiresAt;
|
|
40
|
+
}
|
|
24
41
|
/**
|
|
25
42
|
* Look up a model ID against the OpenRouter catalog.
|
|
26
43
|
* @returns 'valid' if model exists, 'invalid' if not found, 'unknown' if cache is stale/empty
|
|
@@ -38,7 +55,11 @@ class OpenRouterModelRegistry {
|
|
|
38
55
|
this.scheduleRefresh();
|
|
39
56
|
return "unknown";
|
|
40
57
|
}
|
|
41
|
-
|
|
58
|
+
const info = this.models.get(normalized);
|
|
59
|
+
if (info && this.isExpired(info)) {
|
|
60
|
+
return "invalid";
|
|
61
|
+
}
|
|
62
|
+
return info ? "valid" : "invalid";
|
|
42
63
|
}
|
|
43
64
|
/**
|
|
44
65
|
* Get context length for a model ID.
|
|
@@ -53,6 +74,7 @@ class OpenRouterModelRegistry {
|
|
|
53
74
|
return null;
|
|
54
75
|
}
|
|
55
76
|
const info = this.models.get(normalized);
|
|
77
|
+
if (info && this.isExpired(info)) return null;
|
|
56
78
|
return info?.contextLength ?? null;
|
|
57
79
|
}
|
|
58
80
|
/**
|
|
@@ -67,7 +89,9 @@ class OpenRouterModelRegistry {
|
|
|
67
89
|
if (!this.models || this.models.size === 0 || !this.isCacheFresh()) {
|
|
68
90
|
return null;
|
|
69
91
|
}
|
|
70
|
-
|
|
92
|
+
const info = this.models.get(normalized) ?? null;
|
|
93
|
+
if (info && this.isExpired(info)) return null;
|
|
94
|
+
return info;
|
|
71
95
|
}
|
|
72
96
|
/**
|
|
73
97
|
* Schedule a non-blocking background refresh of the model cache.
|
|
@@ -77,6 +101,9 @@ class OpenRouterModelRegistry {
|
|
|
77
101
|
if (apiKey) {
|
|
78
102
|
this.lastUsedApiKey = apiKey;
|
|
79
103
|
}
|
|
104
|
+
if ((process.env.NODE_ENV === "test" || process.env.VITEST) && options?.allowInTests !== true) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
80
107
|
if (this.refreshPromise) {
|
|
81
108
|
return;
|
|
82
109
|
}
|
|
@@ -85,7 +112,7 @@ class OpenRouterModelRegistry {
|
|
|
85
112
|
return;
|
|
86
113
|
}
|
|
87
114
|
this.lastRefreshAttemptAt = now;
|
|
88
|
-
this.refreshPromise = this.refreshInternal(apiKey).catch((error) => {
|
|
115
|
+
this.refreshPromise = this.refreshInternal(apiKey, options?.timeoutMs).catch((error) => {
|
|
89
116
|
logger.warn(
|
|
90
117
|
`Failed to refresh OpenRouter model registry: ${error instanceof Error ? error.message : String(error)}`
|
|
91
118
|
);
|
|
@@ -101,6 +128,9 @@ class OpenRouterModelRegistry {
|
|
|
101
128
|
if (apiKey) {
|
|
102
129
|
this.lastUsedApiKey = apiKey;
|
|
103
130
|
}
|
|
131
|
+
if ((process.env.NODE_ENV === "test" || process.env.VITEST) && options?.allowInTests !== true) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
104
134
|
if (!options?.force && this.refreshPromise) {
|
|
105
135
|
await this.refreshPromise;
|
|
106
136
|
return;
|
|
@@ -117,7 +147,7 @@ class OpenRouterModelRegistry {
|
|
|
117
147
|
} else {
|
|
118
148
|
this.lastRefreshAttemptAt = Date.now();
|
|
119
149
|
}
|
|
120
|
-
const promise = this.refreshInternal(apiKey).finally(() => {
|
|
150
|
+
const promise = this.refreshInternal(apiKey, options?.timeoutMs).finally(() => {
|
|
121
151
|
this.refreshPromise = null;
|
|
122
152
|
});
|
|
123
153
|
this.refreshPromise = promise;
|
|
@@ -130,7 +160,12 @@ class OpenRouterModelRegistry {
|
|
|
130
160
|
if (!this.models || this.models.size === 0) {
|
|
131
161
|
return null;
|
|
132
162
|
}
|
|
133
|
-
|
|
163
|
+
const ids = [];
|
|
164
|
+
for (const info of this.models.values()) {
|
|
165
|
+
if (this.isExpired(info)) continue;
|
|
166
|
+
ids.push(info.id);
|
|
167
|
+
}
|
|
168
|
+
return ids;
|
|
134
169
|
}
|
|
135
170
|
/**
|
|
136
171
|
* Get all cached model info (or null if cache is empty).
|
|
@@ -139,19 +174,20 @@ class OpenRouterModelRegistry {
|
|
|
139
174
|
if (!this.models || this.models.size === 0) {
|
|
140
175
|
return null;
|
|
141
176
|
}
|
|
142
|
-
return Array.from(this.models.values());
|
|
177
|
+
return Array.from(this.models.values()).filter((info) => !this.isExpired(info));
|
|
143
178
|
}
|
|
144
179
|
/**
|
|
145
180
|
* Get cache metadata for debugging/monitoring.
|
|
146
181
|
*/
|
|
147
182
|
getCacheMetadata() {
|
|
183
|
+
const modelCount = this.models ? Array.from(this.models.values()).filter((info) => !this.isExpired(info)).length : 0;
|
|
148
184
|
return {
|
|
149
185
|
lastFetchedAt: this.lastFetchedAt ? new Date(this.lastFetchedAt) : null,
|
|
150
|
-
modelCount
|
|
186
|
+
modelCount,
|
|
151
187
|
isFresh: this.isCacheFresh()
|
|
152
188
|
};
|
|
153
189
|
}
|
|
154
|
-
async refreshInternal(apiKey) {
|
|
190
|
+
async refreshInternal(apiKey, timeoutMs) {
|
|
155
191
|
try {
|
|
156
192
|
const headers = {
|
|
157
193
|
Accept: "application/json"
|
|
@@ -160,7 +196,10 @@ class OpenRouterModelRegistry {
|
|
|
160
196
|
headers.Authorization = `Bearer ${apiKey}`;
|
|
161
197
|
}
|
|
162
198
|
logger.debug("Refreshing OpenRouter model registry from remote source");
|
|
163
|
-
const response = await fetch(OPENROUTER_MODELS_ENDPOINT, {
|
|
199
|
+
const response = await fetch(OPENROUTER_MODELS_ENDPOINT, {
|
|
200
|
+
headers,
|
|
201
|
+
signal: AbortSignal.timeout(timeoutMs ?? 3e4)
|
|
202
|
+
});
|
|
164
203
|
if (!response.ok) {
|
|
165
204
|
const body = await response.text();
|
|
166
205
|
throw new Error(`HTTP ${response.status}: ${body}`);
|
|
@@ -189,7 +228,7 @@ class OpenRouterModelRegistry {
|
|
|
189
228
|
}
|
|
190
229
|
this.models = /* @__PURE__ */ new Map();
|
|
191
230
|
for (const model of parsed.models) {
|
|
192
|
-
if (typeof model === "object" && model.id && typeof model.contextLength === "number") {
|
|
231
|
+
if (typeof model === "object" && typeof model.id === "string" && model.id.trim().length > 0 && typeof model.contextLength === "number") {
|
|
193
232
|
this.models.set(model.id.toLowerCase(), model);
|
|
194
233
|
}
|
|
195
234
|
}
|
|
@@ -254,7 +293,18 @@ class OpenRouterModelRegistry {
|
|
|
254
293
|
} else if (record.top_provider && typeof record.top_provider === "object" && typeof record.top_provider.context_length === "number") {
|
|
255
294
|
contextLength = record.top_provider.context_length;
|
|
256
295
|
}
|
|
257
|
-
|
|
296
|
+
const displayName = typeof record.name === "string" && record.name.trim().length > 0 ? record.name : void 0;
|
|
297
|
+
const expirationDate = typeof record.expiration_date === "string" && record.expiration_date.trim().length > 0 ? record.expiration_date : void 0;
|
|
298
|
+
const supportedParameters = Array.isArray(record.supported_parameters) ? record.supported_parameters.filter(
|
|
299
|
+
(p) => typeof p === "string" && p.trim().length > 0
|
|
300
|
+
) : void 0;
|
|
301
|
+
models.push({
|
|
302
|
+
id,
|
|
303
|
+
contextLength,
|
|
304
|
+
...displayName ? { displayName } : {},
|
|
305
|
+
...expirationDate ? { expirationDate } : {},
|
|
306
|
+
...supportedParameters ? { supportedParameters } : {}
|
|
307
|
+
});
|
|
258
308
|
}
|
|
259
309
|
}
|
|
260
310
|
}
|
|
@@ -283,6 +333,9 @@ async function refreshOpenRouterModelCache(options) {
|
|
|
283
333
|
function getCachedOpenRouterModels() {
|
|
284
334
|
return openRouterModelRegistry.getCachedModels();
|
|
285
335
|
}
|
|
336
|
+
function getCachedOpenRouterModelsWithInfo() {
|
|
337
|
+
return openRouterModelRegistry.getCachedModelsWithInfo();
|
|
338
|
+
}
|
|
286
339
|
function getOpenRouterModelContextLength(modelId) {
|
|
287
340
|
return openRouterModelRegistry.getContextLength(modelId);
|
|
288
341
|
}
|
|
@@ -299,6 +352,7 @@ const __TEST_ONLY__ = {
|
|
|
299
352
|
export {
|
|
300
353
|
__TEST_ONLY__,
|
|
301
354
|
getCachedOpenRouterModels,
|
|
355
|
+
getCachedOpenRouterModelsWithInfo,
|
|
302
356
|
getOpenRouterModelCacheInfo,
|
|
303
357
|
getOpenRouterModelContextLength,
|
|
304
358
|
getOpenRouterModelInfo,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var anthropic_betas_exports = {};
|
|
20
|
+
__export(anthropic_betas_exports, {
|
|
21
|
+
ANTHROPIC_BETA_HEADER: () => ANTHROPIC_BETA_HEADER,
|
|
22
|
+
ANTHROPIC_INTERLEAVED_THINKING_BETA: () => ANTHROPIC_INTERLEAVED_THINKING_BETA
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(anthropic_betas_exports);
|
|
25
|
+
const ANTHROPIC_BETA_HEADER = "anthropic-beta";
|
|
26
|
+
const ANTHROPIC_INTERLEAVED_THINKING_BETA = "interleaved-thinking-2025-05-14";
|
|
27
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
28
|
+
0 && (module.exports = {
|
|
29
|
+
ANTHROPIC_BETA_HEADER,
|
|
30
|
+
ANTHROPIC_INTERLEAVED_THINKING_BETA
|
|
31
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-betas.d.ts","sourceRoot":"","sources":["../../../src/llm/reasoning/anthropic-betas.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAMtD,eAAO,MAAM,mCAAmC,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var anthropic_thinking_exports = {};
|
|
20
|
+
__export(anthropic_thinking_exports, {
|
|
21
|
+
isAnthropicAdaptiveThinkingModel: () => isAnthropicAdaptiveThinkingModel,
|
|
22
|
+
isAnthropicOpusAdaptiveThinkingModel: () => isAnthropicOpusAdaptiveThinkingModel,
|
|
23
|
+
isClaudeVersionAtLeast: () => isClaudeVersionAtLeast,
|
|
24
|
+
parseClaudeVersion: () => parseClaudeVersion,
|
|
25
|
+
supportsAnthropicInterleavedThinking: () => supportsAnthropicInterleavedThinking
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(anthropic_thinking_exports);
|
|
28
|
+
function parseClaudeVersion(model) {
|
|
29
|
+
const modelLower = model.toLowerCase();
|
|
30
|
+
const variantFirst = /claude-(opus|sonnet|haiku)-(\d+)(?:[.-](\d{1,2})(?!\d))?/i.exec(
|
|
31
|
+
modelLower
|
|
32
|
+
);
|
|
33
|
+
if (variantFirst) {
|
|
34
|
+
const [, variant, majorRaw, minorRaw] = variantFirst;
|
|
35
|
+
if (!variant || !majorRaw) return null;
|
|
36
|
+
const major = Number.parseInt(majorRaw, 10);
|
|
37
|
+
const minor = minorRaw ? Number.parseInt(minorRaw, 10) : 0;
|
|
38
|
+
if (!Number.isFinite(major) || !Number.isFinite(minor)) return null;
|
|
39
|
+
return { major, minor, variant };
|
|
40
|
+
}
|
|
41
|
+
const versionFirst = /claude-(\d+)(?:[.-](\d{1,2})(?!\d))?-(opus|sonnet|haiku)/i.exec(
|
|
42
|
+
modelLower
|
|
43
|
+
);
|
|
44
|
+
if (versionFirst) {
|
|
45
|
+
const [, majorRaw, minorRaw, variant] = versionFirst;
|
|
46
|
+
if (!majorRaw || !variant) return null;
|
|
47
|
+
const major = Number.parseInt(majorRaw, 10);
|
|
48
|
+
const minor = minorRaw ? Number.parseInt(minorRaw, 10) : 0;
|
|
49
|
+
if (!Number.isFinite(major) || !Number.isFinite(minor)) return null;
|
|
50
|
+
return { major, minor, variant };
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
function isClaudeVersionAtLeast(version, min) {
|
|
55
|
+
return version.major > min.major || version.major === min.major && version.minor >= min.minor;
|
|
56
|
+
}
|
|
57
|
+
function isAnthropicAdaptiveThinkingModel(model) {
|
|
58
|
+
const version = parseClaudeVersion(model);
|
|
59
|
+
if (!version) return false;
|
|
60
|
+
return isClaudeVersionAtLeast(version, { major: 4, minor: 6 });
|
|
61
|
+
}
|
|
62
|
+
function isAnthropicOpusAdaptiveThinkingModel(model) {
|
|
63
|
+
const version = parseClaudeVersion(model);
|
|
64
|
+
if (!version || version.variant !== "opus") return false;
|
|
65
|
+
return isClaudeVersionAtLeast(version, { major: 4, minor: 6 });
|
|
66
|
+
}
|
|
67
|
+
function supportsAnthropicInterleavedThinking(model) {
|
|
68
|
+
const version = parseClaudeVersion(model);
|
|
69
|
+
if (!version) return false;
|
|
70
|
+
return version.major >= 4;
|
|
71
|
+
}
|
|
72
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
73
|
+
0 && (module.exports = {
|
|
74
|
+
isAnthropicAdaptiveThinkingModel,
|
|
75
|
+
isAnthropicOpusAdaptiveThinkingModel,
|
|
76
|
+
isClaudeVersionAtLeast,
|
|
77
|
+
parseClaudeVersion,
|
|
78
|
+
supportsAnthropicInterleavedThinking
|
|
79
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type ClaudeVariant = 'opus' | 'sonnet' | 'haiku';
|
|
2
|
+
export type ParsedClaudeVersion = {
|
|
3
|
+
major: number;
|
|
4
|
+
minor: number;
|
|
5
|
+
variant?: ClaudeVariant;
|
|
6
|
+
};
|
|
7
|
+
export declare function parseClaudeVersion(model: string): ParsedClaudeVersion | null;
|
|
8
|
+
export declare function isClaudeVersionAtLeast(version: Pick<ParsedClaudeVersion, 'major' | 'minor'>, min: {
|
|
9
|
+
major: number;
|
|
10
|
+
minor: number;
|
|
11
|
+
}): boolean;
|
|
12
|
+
export declare function isAnthropicAdaptiveThinkingModel(model: string): boolean;
|
|
13
|
+
export declare function isAnthropicOpusAdaptiveThinkingModel(model: string): boolean;
|
|
14
|
+
export declare function supportsAnthropicInterleavedThinking(model: string): boolean;
|
|
15
|
+
//# sourceMappingURL=anthropic-thinking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-thinking.d.ts","sourceRoot":"","sources":["../../../src/llm/reasoning/anthropic-thinking.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,CAAC;CAC3B,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAmC5E;AAED,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,OAAO,CAAC,EACrD,GAAG,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC,OAAO,CAET;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMvE;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAI3E;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAM3E"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import "../../chunk-PTJYTZNU.js";
|
|
2
|
+
function parseClaudeVersion(model) {
|
|
3
|
+
const modelLower = model.toLowerCase();
|
|
4
|
+
const variantFirst = /claude-(opus|sonnet|haiku)-(\d+)(?:[.-](\d{1,2})(?!\d))?/i.exec(
|
|
5
|
+
modelLower
|
|
6
|
+
);
|
|
7
|
+
if (variantFirst) {
|
|
8
|
+
const [, variant, majorRaw, minorRaw] = variantFirst;
|
|
9
|
+
if (!variant || !majorRaw) return null;
|
|
10
|
+
const major = Number.parseInt(majorRaw, 10);
|
|
11
|
+
const minor = minorRaw ? Number.parseInt(minorRaw, 10) : 0;
|
|
12
|
+
if (!Number.isFinite(major) || !Number.isFinite(minor)) return null;
|
|
13
|
+
return { major, minor, variant };
|
|
14
|
+
}
|
|
15
|
+
const versionFirst = /claude-(\d+)(?:[.-](\d{1,2})(?!\d))?-(opus|sonnet|haiku)/i.exec(
|
|
16
|
+
modelLower
|
|
17
|
+
);
|
|
18
|
+
if (versionFirst) {
|
|
19
|
+
const [, majorRaw, minorRaw, variant] = versionFirst;
|
|
20
|
+
if (!majorRaw || !variant) return null;
|
|
21
|
+
const major = Number.parseInt(majorRaw, 10);
|
|
22
|
+
const minor = minorRaw ? Number.parseInt(minorRaw, 10) : 0;
|
|
23
|
+
if (!Number.isFinite(major) || !Number.isFinite(minor)) return null;
|
|
24
|
+
return { major, minor, variant };
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
function isClaudeVersionAtLeast(version, min) {
|
|
29
|
+
return version.major > min.major || version.major === min.major && version.minor >= min.minor;
|
|
30
|
+
}
|
|
31
|
+
function isAnthropicAdaptiveThinkingModel(model) {
|
|
32
|
+
const version = parseClaudeVersion(model);
|
|
33
|
+
if (!version) return false;
|
|
34
|
+
return isClaudeVersionAtLeast(version, { major: 4, minor: 6 });
|
|
35
|
+
}
|
|
36
|
+
function isAnthropicOpusAdaptiveThinkingModel(model) {
|
|
37
|
+
const version = parseClaudeVersion(model);
|
|
38
|
+
if (!version || version.variant !== "opus") return false;
|
|
39
|
+
return isClaudeVersionAtLeast(version, { major: 4, minor: 6 });
|
|
40
|
+
}
|
|
41
|
+
function supportsAnthropicInterleavedThinking(model) {
|
|
42
|
+
const version = parseClaudeVersion(model);
|
|
43
|
+
if (!version) return false;
|
|
44
|
+
return version.major >= 4;
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
isAnthropicAdaptiveThinkingModel,
|
|
48
|
+
isAnthropicOpusAdaptiveThinkingModel,
|
|
49
|
+
isClaudeVersionAtLeast,
|
|
50
|
+
parseClaudeVersion,
|
|
51
|
+
supportsAnthropicInterleavedThinking
|
|
52
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var openai_reasoning_effort_exports = {};
|
|
20
|
+
__export(openai_reasoning_effort_exports, {
|
|
21
|
+
coerceOpenAIReasoningEffort: () => coerceOpenAIReasoningEffort,
|
|
22
|
+
getSupportedOpenAIReasoningEfforts: () => getSupportedOpenAIReasoningEfforts,
|
|
23
|
+
supportsOpenAIReasoningEffort: () => supportsOpenAIReasoningEffort
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(openai_reasoning_effort_exports);
|
|
26
|
+
function normalizeOpenAIModelId(model) {
|
|
27
|
+
const id = model.split("/").pop() ?? model;
|
|
28
|
+
return id.toLowerCase();
|
|
29
|
+
}
|
|
30
|
+
function getSupportedOpenAIReasoningEfforts(model) {
|
|
31
|
+
const id = normalizeOpenAIModelId(model);
|
|
32
|
+
if (id.includes("gpt-5-pro")) {
|
|
33
|
+
return ["high"];
|
|
34
|
+
}
|
|
35
|
+
if (id.startsWith("gpt-5.3")) {
|
|
36
|
+
return ["low", "medium", "high", "xhigh"];
|
|
37
|
+
}
|
|
38
|
+
if (id.startsWith("gpt-5.2")) {
|
|
39
|
+
return ["low", "medium", "high", "xhigh"];
|
|
40
|
+
}
|
|
41
|
+
if (id.includes("gpt-5.1-codex-max")) {
|
|
42
|
+
return ["none", "low", "medium", "high", "xhigh"];
|
|
43
|
+
}
|
|
44
|
+
if (id.startsWith("gpt-5.1")) {
|
|
45
|
+
return ["none", "low", "medium", "high"];
|
|
46
|
+
}
|
|
47
|
+
if (id.startsWith("gpt-5")) {
|
|
48
|
+
return ["minimal", "low", "medium", "high"];
|
|
49
|
+
}
|
|
50
|
+
if (id.startsWith("o1") || id.startsWith("o3") || id.startsWith("o4")) {
|
|
51
|
+
return ["low", "medium", "high"];
|
|
52
|
+
}
|
|
53
|
+
return ["low", "medium", "high"];
|
|
54
|
+
}
|
|
55
|
+
function getFallbackOrder(requested) {
|
|
56
|
+
switch (requested) {
|
|
57
|
+
case "none":
|
|
58
|
+
return ["none", "minimal", "low", "medium", "high", "xhigh"];
|
|
59
|
+
case "minimal":
|
|
60
|
+
return ["minimal", "low", "medium", "high", "xhigh"];
|
|
61
|
+
case "low":
|
|
62
|
+
return ["low", "medium", "high", "xhigh"];
|
|
63
|
+
case "medium":
|
|
64
|
+
return ["medium", "high", "xhigh"];
|
|
65
|
+
case "high":
|
|
66
|
+
return ["high", "xhigh"];
|
|
67
|
+
case "xhigh":
|
|
68
|
+
return ["xhigh", "high", "medium", "low", "minimal", "none"];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function coerceOpenAIReasoningEffort(model, requested) {
|
|
72
|
+
const supported = getSupportedOpenAIReasoningEfforts(model);
|
|
73
|
+
for (const candidate of getFallbackOrder(requested)) {
|
|
74
|
+
if (supported.includes(candidate)) return candidate;
|
|
75
|
+
}
|
|
76
|
+
return void 0;
|
|
77
|
+
}
|
|
78
|
+
function supportsOpenAIReasoningEffort(model, effort) {
|
|
79
|
+
return getSupportedOpenAIReasoningEfforts(model).includes(effort);
|
|
80
|
+
}
|
|
81
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
82
|
+
0 && (module.exports = {
|
|
83
|
+
coerceOpenAIReasoningEffort,
|
|
84
|
+
getSupportedOpenAIReasoningEfforts,
|
|
85
|
+
supportsOpenAIReasoningEffort
|
|
86
|
+
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type OpenAIReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
2
|
+
export declare function getSupportedOpenAIReasoningEfforts(model: string): OpenAIReasoningEffort[];
|
|
3
|
+
export declare function coerceOpenAIReasoningEffort(model: string, requested: OpenAIReasoningEffort): OpenAIReasoningEffort | undefined;
|
|
4
|
+
export declare function supportsOpenAIReasoningEffort(model: string, effort: OpenAIReasoningEffort): boolean;
|
|
5
|
+
//# sourceMappingURL=openai-reasoning-effort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-reasoning-effort.d.ts","sourceRoot":"","sources":["../../../src/llm/reasoning/openai-reasoning-effort.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAO7F,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAoCzF;AAmBD,wBAAgB,2BAA2B,CACvC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,qBAAqB,GACjC,qBAAqB,GAAG,SAAS,CAMnC;AAED,wBAAgB,6BAA6B,CACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,qBAAqB,GAC9B,OAAO,CAET"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import "../../chunk-PTJYTZNU.js";
|
|
2
|
+
function normalizeOpenAIModelId(model) {
|
|
3
|
+
const id = model.split("/").pop() ?? model;
|
|
4
|
+
return id.toLowerCase();
|
|
5
|
+
}
|
|
6
|
+
function getSupportedOpenAIReasoningEfforts(model) {
|
|
7
|
+
const id = normalizeOpenAIModelId(model);
|
|
8
|
+
if (id.includes("gpt-5-pro")) {
|
|
9
|
+
return ["high"];
|
|
10
|
+
}
|
|
11
|
+
if (id.startsWith("gpt-5.3")) {
|
|
12
|
+
return ["low", "medium", "high", "xhigh"];
|
|
13
|
+
}
|
|
14
|
+
if (id.startsWith("gpt-5.2")) {
|
|
15
|
+
return ["low", "medium", "high", "xhigh"];
|
|
16
|
+
}
|
|
17
|
+
if (id.includes("gpt-5.1-codex-max")) {
|
|
18
|
+
return ["none", "low", "medium", "high", "xhigh"];
|
|
19
|
+
}
|
|
20
|
+
if (id.startsWith("gpt-5.1")) {
|
|
21
|
+
return ["none", "low", "medium", "high"];
|
|
22
|
+
}
|
|
23
|
+
if (id.startsWith("gpt-5")) {
|
|
24
|
+
return ["minimal", "low", "medium", "high"];
|
|
25
|
+
}
|
|
26
|
+
if (id.startsWith("o1") || id.startsWith("o3") || id.startsWith("o4")) {
|
|
27
|
+
return ["low", "medium", "high"];
|
|
28
|
+
}
|
|
29
|
+
return ["low", "medium", "high"];
|
|
30
|
+
}
|
|
31
|
+
function getFallbackOrder(requested) {
|
|
32
|
+
switch (requested) {
|
|
33
|
+
case "none":
|
|
34
|
+
return ["none", "minimal", "low", "medium", "high", "xhigh"];
|
|
35
|
+
case "minimal":
|
|
36
|
+
return ["minimal", "low", "medium", "high", "xhigh"];
|
|
37
|
+
case "low":
|
|
38
|
+
return ["low", "medium", "high", "xhigh"];
|
|
39
|
+
case "medium":
|
|
40
|
+
return ["medium", "high", "xhigh"];
|
|
41
|
+
case "high":
|
|
42
|
+
return ["high", "xhigh"];
|
|
43
|
+
case "xhigh":
|
|
44
|
+
return ["xhigh", "high", "medium", "low", "minimal", "none"];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function coerceOpenAIReasoningEffort(model, requested) {
|
|
48
|
+
const supported = getSupportedOpenAIReasoningEfforts(model);
|
|
49
|
+
for (const candidate of getFallbackOrder(requested)) {
|
|
50
|
+
if (supported.includes(candidate)) return candidate;
|
|
51
|
+
}
|
|
52
|
+
return void 0;
|
|
53
|
+
}
|
|
54
|
+
function supportsOpenAIReasoningEffort(model, effort) {
|
|
55
|
+
return getSupportedOpenAIReasoningEfforts(model).includes(effort);
|
|
56
|
+
}
|
|
57
|
+
export {
|
|
58
|
+
coerceOpenAIReasoningEffort,
|
|
59
|
+
getSupportedOpenAIReasoningEfforts,
|
|
60
|
+
supportsOpenAIReasoningEffort
|
|
61
|
+
};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var profile_exports = {};
|
|
20
|
+
__export(profile_exports, {
|
|
21
|
+
getReasoningProfile: () => getReasoningProfile,
|
|
22
|
+
supportsReasoningVariant: () => supportsReasoningVariant
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(profile_exports);
|
|
25
|
+
var import_registry = require("../registry/index.js");
|
|
26
|
+
var import_anthropic_thinking = require("./anthropic-thinking.js");
|
|
27
|
+
var import_anthropic = require("./profiles/anthropic.js");
|
|
28
|
+
var import_bedrock = require("./profiles/bedrock.js");
|
|
29
|
+
var import_google = require("./profiles/google.js");
|
|
30
|
+
var import_openai_compatible = require("./profiles/openai-compatible.js");
|
|
31
|
+
var import_openai = require("./profiles/openai.js");
|
|
32
|
+
var import_openrouter = require("./profiles/openrouter.js");
|
|
33
|
+
var import_vertex = require("./profiles/vertex.js");
|
|
34
|
+
var import_shared = require("./profiles/shared.js");
|
|
35
|
+
const ANTHROPIC_PROFILE_CONFIG = {
|
|
36
|
+
includeDisabled: true,
|
|
37
|
+
supportsBudgetTokensForBudgetParadigm: true,
|
|
38
|
+
supportsBudgetTokensForAdaptiveParadigm: false
|
|
39
|
+
};
|
|
40
|
+
const GOOGLE_PROFILE_CONFIG = {
|
|
41
|
+
includeDisabled: true,
|
|
42
|
+
supportsBudgetTokensForBudgetParadigm: true,
|
|
43
|
+
supportsBudgetTokensForThinkingLevelParadigm: false
|
|
44
|
+
};
|
|
45
|
+
function isAnthropicStyleReasoningCapable(provider, model) {
|
|
46
|
+
return (0, import_registry.isReasoningCapableModel)(model, provider) || (0, import_anthropic_thinking.parseClaudeVersion)(model) !== null || (0, import_anthropic_thinking.isAnthropicAdaptiveThinkingModel)(model);
|
|
47
|
+
}
|
|
48
|
+
function getNativeReasoningProfile(provider, model) {
|
|
49
|
+
switch (provider) {
|
|
50
|
+
case "openai":
|
|
51
|
+
if (!(0, import_registry.isReasoningCapableModel)(model, "openai")) {
|
|
52
|
+
return (0, import_shared.nonCapableProfile)();
|
|
53
|
+
}
|
|
54
|
+
return (0, import_openai.buildOpenAIReasoningProfile)(model);
|
|
55
|
+
case "anthropic":
|
|
56
|
+
if (!isAnthropicStyleReasoningCapable("anthropic", model)) {
|
|
57
|
+
return (0, import_shared.nonCapableProfile)();
|
|
58
|
+
}
|
|
59
|
+
return (0, import_anthropic.buildAnthropicReasoningProfile)({ model, ...ANTHROPIC_PROFILE_CONFIG });
|
|
60
|
+
case "bedrock":
|
|
61
|
+
if (!(0, import_registry.isReasoningCapableModel)(model, "bedrock")) {
|
|
62
|
+
return (0, import_shared.nonCapableProfile)();
|
|
63
|
+
}
|
|
64
|
+
return (0, import_bedrock.buildBedrockReasoningProfile)(model);
|
|
65
|
+
case "google":
|
|
66
|
+
if (!(0, import_registry.isReasoningCapableModel)(model, "google")) {
|
|
67
|
+
return (0, import_shared.nonCapableProfile)();
|
|
68
|
+
}
|
|
69
|
+
return (0, import_google.buildGoogleReasoningProfile)({ model, ...GOOGLE_PROFILE_CONFIG });
|
|
70
|
+
case "vertex":
|
|
71
|
+
if (!isAnthropicStyleReasoningCapable("vertex", model)) {
|
|
72
|
+
return (0, import_shared.nonCapableProfile)();
|
|
73
|
+
}
|
|
74
|
+
return (0, import_vertex.buildVertexReasoningProfile)(model);
|
|
75
|
+
case "openai-compatible":
|
|
76
|
+
if (!(0, import_registry.isReasoningCapableModel)(model, "openai-compatible")) {
|
|
77
|
+
return (0, import_shared.nonCapableProfile)();
|
|
78
|
+
}
|
|
79
|
+
return (0, import_openai_compatible.buildOpenAICompatibleReasoningProfile)();
|
|
80
|
+
default:
|
|
81
|
+
return (0, import_shared.nonCapableProfile)();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function toGatewayReasoningProfile(nativeProfile) {
|
|
85
|
+
if (!nativeProfile.capable) {
|
|
86
|
+
return (0, import_shared.nonCapableProfile)();
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
...nativeProfile,
|
|
90
|
+
variants: nativeProfile.variants.map((variant) => ({ ...variant })),
|
|
91
|
+
supportedVariants: [...nativeProfile.supportedVariants],
|
|
92
|
+
supportsBudgetTokens: true
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function getReasoningProfile(provider, model) {
|
|
96
|
+
if ((0, import_openrouter.isOpenRouterGatewayProvider)(provider)) {
|
|
97
|
+
const target = (0, import_openrouter.getOpenRouterReasoningTarget)(model);
|
|
98
|
+
if (!target) {
|
|
99
|
+
return (0, import_shared.nonCapableProfile)();
|
|
100
|
+
}
|
|
101
|
+
const nativeProfile = getNativeReasoningProfile(target.upstreamProvider, target.modelId);
|
|
102
|
+
return toGatewayReasoningProfile(nativeProfile);
|
|
103
|
+
}
|
|
104
|
+
return getNativeReasoningProfile(provider, model);
|
|
105
|
+
}
|
|
106
|
+
function supportsReasoningVariant(profile, variant) {
|
|
107
|
+
return profile.variants.some((entry) => entry.id === variant);
|
|
108
|
+
}
|
|
109
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
110
|
+
0 && (module.exports = {
|
|
111
|
+
getReasoningProfile,
|
|
112
|
+
supportsReasoningVariant
|
|
113
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { LLMProvider } from '../types.js';
|
|
2
|
+
import { type ReasoningProfile } from './profiles/shared.js';
|
|
3
|
+
export type { ReasoningParadigm, ReasoningProfile, ReasoningVariantOption, } from './profiles/shared.js';
|
|
4
|
+
/**
|
|
5
|
+
* Returns exact, model/provider-native reasoning controls available for this model.
|
|
6
|
+
*
|
|
7
|
+
* This is intentionally strict:
|
|
8
|
+
* - No generic preset abstraction at this layer
|
|
9
|
+
* - No guessed variants for unknown paradigms
|
|
10
|
+
*/
|
|
11
|
+
export declare function getReasoningProfile(provider: LLMProvider, model: string): ReasoningProfile;
|
|
12
|
+
export declare function supportsReasoningVariant(profile: ReasoningProfile, variant: string): boolean;
|
|
13
|
+
//# sourceMappingURL=profile.d.ts.map
|