@nyrra/foundry-ai 0.0.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.
- package/dist/chunk-5SYKCKOX.mjs +272 -0
- package/dist/chunk-5SYKCKOX.mjs.map +1 -0
- package/dist/chunk-UQ5CCQR6.mjs +20 -0
- package/dist/chunk-UQ5CCQR6.mjs.map +1 -0
- package/dist/index.cjs +326 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +78 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.mjs +63 -0
- package/dist/index.mjs.map +1 -0
- package/dist/providers/anthropic.cjs +287 -0
- package/dist/providers/anthropic.cjs.map +1 -0
- package/dist/providers/anthropic.d.cts +16 -0
- package/dist/providers/anthropic.d.ts +16 -0
- package/dist/providers/anthropic.mjs +47 -0
- package/dist/providers/anthropic.mjs.map +1 -0
- package/dist/providers/openai.cjs +326 -0
- package/dist/providers/openai.cjs.map +1 -0
- package/dist/providers/openai.d.cts +15 -0
- package/dist/providers/openai.d.ts +15 -0
- package/dist/providers/openai.mjs +84 -0
- package/dist/providers/openai.mjs.map +1 -0
- package/dist/types-cG4EwdjA.d.cts +28 -0
- package/dist/types-cG4EwdjA.d.ts +28 -0
- package/package.json +50 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
// src/config.ts
|
|
2
|
+
var FOUNDRY_URL_ENV = "FOUNDRY_URL";
|
|
3
|
+
var FOUNDRY_TOKEN_ENV = "FOUNDRY_TOKEN";
|
|
4
|
+
var FOUNDRY_ATTRIBUTION_RID_ENV = "FOUNDRY_ATTRIBUTION_RID";
|
|
5
|
+
function loadFoundryConfig(env = process.env) {
|
|
6
|
+
return normalizeResolvedFoundryConfig({
|
|
7
|
+
foundryUrl: requireEnv(env, FOUNDRY_URL_ENV),
|
|
8
|
+
token: requireEnv(env, FOUNDRY_TOKEN_ENV),
|
|
9
|
+
attributionRid: optionalEnv(env, FOUNDRY_ATTRIBUTION_RID_ENV)
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
function normalizeFoundryUrl(foundryUrl) {
|
|
13
|
+
return foundryUrl.trim().replace(/\/+$/, "");
|
|
14
|
+
}
|
|
15
|
+
function resolveFoundryConfig(config, callerName) {
|
|
16
|
+
const normalizedConfig = normalizeResolvedFoundryConfig({
|
|
17
|
+
foundryUrl: typeof config.foundryUrl === "string" ? config.foundryUrl : "",
|
|
18
|
+
token: typeof config.token === "string" ? config.token : "",
|
|
19
|
+
attributionRid: typeof config.attributionRid === "string" ? config.attributionRid : void 0
|
|
20
|
+
});
|
|
21
|
+
if (normalizedConfig.foundryUrl.length === 0) {
|
|
22
|
+
throw new Error(`${callerName} requires config.foundryUrl to be a non-empty string.`);
|
|
23
|
+
}
|
|
24
|
+
if (normalizedConfig.token.length === 0) {
|
|
25
|
+
throw new Error(`${callerName} requires config.token to be a non-empty string.`);
|
|
26
|
+
}
|
|
27
|
+
return normalizedConfig;
|
|
28
|
+
}
|
|
29
|
+
function requireEnv(env, name) {
|
|
30
|
+
const value = optionalEnv(env, name);
|
|
31
|
+
if (value == null) {
|
|
32
|
+
throw new Error(`Missing required environment variable: ${name}`);
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
function optionalEnv(env, name) {
|
|
37
|
+
const value = env[name]?.trim();
|
|
38
|
+
return value ? value : void 0;
|
|
39
|
+
}
|
|
40
|
+
function normalizeResolvedFoundryConfig(config) {
|
|
41
|
+
const attributionRid = config.attributionRid?.trim();
|
|
42
|
+
return {
|
|
43
|
+
foundryUrl: normalizeFoundryUrl(config.foundryUrl),
|
|
44
|
+
token: config.token.trim(),
|
|
45
|
+
attributionRid: attributionRid || void 0
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// src/errors.ts
|
|
50
|
+
var FoundryModelNotFoundError = class extends Error {
|
|
51
|
+
constructor(modelId) {
|
|
52
|
+
super(
|
|
53
|
+
`Unknown model: "${modelId}". Check the catalog for supported aliases or pass a raw Foundry RID directly to a provider adapter.`
|
|
54
|
+
);
|
|
55
|
+
this.name = "FoundryModelNotFoundError";
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// src/models/anthropic-models.ts
|
|
60
|
+
function createAnthropicModel(rid, displayName, lifecycle) {
|
|
61
|
+
return {
|
|
62
|
+
rid,
|
|
63
|
+
provider: "anthropic",
|
|
64
|
+
displayName,
|
|
65
|
+
supportsVision: true,
|
|
66
|
+
supportsResponses: false,
|
|
67
|
+
lifecycle
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
var ANTHROPIC_MODELS = {
|
|
71
|
+
"claude-3.5-haiku": createAnthropicModel(
|
|
72
|
+
"ri.language-model-service..language-model.anthropic-claude-3-5-haiku",
|
|
73
|
+
"Claude 3.5 Haiku",
|
|
74
|
+
"ga"
|
|
75
|
+
),
|
|
76
|
+
"claude-3.7-sonnet": createAnthropicModel(
|
|
77
|
+
"ri.language-model-service..language-model.anthropic-claude-3-7-sonnet",
|
|
78
|
+
"Claude 3.7 Sonnet",
|
|
79
|
+
"ga"
|
|
80
|
+
),
|
|
81
|
+
"claude-haiku-4.5": createAnthropicModel(
|
|
82
|
+
"ri.language-model-service..language-model.anthropic-claude-4-5-haiku",
|
|
83
|
+
"Claude Haiku 4.5",
|
|
84
|
+
"ga"
|
|
85
|
+
),
|
|
86
|
+
"claude-opus-4": createAnthropicModel(
|
|
87
|
+
"ri.language-model-service..language-model.anthropic-claude-4-opus",
|
|
88
|
+
"Claude Opus 4",
|
|
89
|
+
"ga"
|
|
90
|
+
),
|
|
91
|
+
"claude-opus-4.1": createAnthropicModel(
|
|
92
|
+
"ri.language-model-service..language-model.anthropic-claude-4-1-opus",
|
|
93
|
+
"Claude Opus 4.1",
|
|
94
|
+
"ga"
|
|
95
|
+
),
|
|
96
|
+
"claude-opus-4.5": createAnthropicModel(
|
|
97
|
+
"ri.language-model-service..language-model.anthropic-claude-4-5-opus",
|
|
98
|
+
"Claude Opus 4.5",
|
|
99
|
+
"ga"
|
|
100
|
+
),
|
|
101
|
+
"claude-opus-4.6": createAnthropicModel(
|
|
102
|
+
"ri.language-model-service..language-model.anthropic-claude-4-6-opus",
|
|
103
|
+
"Claude Opus 4.6",
|
|
104
|
+
"ga"
|
|
105
|
+
),
|
|
106
|
+
"claude-sonnet-4": createAnthropicModel(
|
|
107
|
+
"ri.language-model-service..language-model.anthropic-claude-4-sonnet",
|
|
108
|
+
"Claude Sonnet 4",
|
|
109
|
+
"ga"
|
|
110
|
+
),
|
|
111
|
+
"claude-sonnet-4.5": createAnthropicModel(
|
|
112
|
+
"ri.language-model-service..language-model.anthropic-claude-4-5-sonnet",
|
|
113
|
+
"Claude Sonnet 4.5",
|
|
114
|
+
"ga"
|
|
115
|
+
),
|
|
116
|
+
"claude-sonnet-4.6": createAnthropicModel(
|
|
117
|
+
"ri.language-model-service..language-model.anthropic-claude-4-6-sonnet",
|
|
118
|
+
"Claude Sonnet 4.6",
|
|
119
|
+
"ga"
|
|
120
|
+
)
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
// src/models/openai-models.ts
|
|
124
|
+
function createOpenAIModel(rid, displayName, {
|
|
125
|
+
lifecycle,
|
|
126
|
+
supportsVision = true
|
|
127
|
+
}) {
|
|
128
|
+
return {
|
|
129
|
+
rid,
|
|
130
|
+
provider: "openai",
|
|
131
|
+
displayName,
|
|
132
|
+
supportsVision,
|
|
133
|
+
supportsResponses: true,
|
|
134
|
+
lifecycle
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
var OPENAI_MODELS = {
|
|
138
|
+
"gpt-4.1": createOpenAIModel("ri.language-model-service..language-model.gpt-4-1", "GPT-4.1", {
|
|
139
|
+
lifecycle: "ga"
|
|
140
|
+
}),
|
|
141
|
+
"gpt-4.1-mini": createOpenAIModel(
|
|
142
|
+
"ri.language-model-service..language-model.gpt-4-1-mini",
|
|
143
|
+
"GPT-4.1 Mini",
|
|
144
|
+
{ lifecycle: "ga" }
|
|
145
|
+
),
|
|
146
|
+
"gpt-4.1-nano": createOpenAIModel(
|
|
147
|
+
"ri.language-model-service..language-model.gpt-4-1-nano",
|
|
148
|
+
"GPT-4.1 Nano",
|
|
149
|
+
{ lifecycle: "ga" }
|
|
150
|
+
),
|
|
151
|
+
"gpt-4o": createOpenAIModel("ri.language-model-service..language-model.gpt-4-o", "GPT-4o", {
|
|
152
|
+
lifecycle: "ga"
|
|
153
|
+
}),
|
|
154
|
+
"gpt-4o-mini": createOpenAIModel(
|
|
155
|
+
"ri.language-model-service..language-model.gpt-4-o-mini",
|
|
156
|
+
"GPT-4o Mini",
|
|
157
|
+
{ lifecycle: "ga" }
|
|
158
|
+
),
|
|
159
|
+
"gpt-5": createOpenAIModel("ri.language-model-service..language-model.gpt-5", "GPT-5", {
|
|
160
|
+
lifecycle: "ga"
|
|
161
|
+
}),
|
|
162
|
+
"gpt-5-codex": createOpenAIModel(
|
|
163
|
+
"ri.language-model-service..language-model.gpt-5-codex",
|
|
164
|
+
"GPT-5 Codex",
|
|
165
|
+
{ lifecycle: "ga", supportsVision: false }
|
|
166
|
+
),
|
|
167
|
+
"gpt-5-mini": createOpenAIModel(
|
|
168
|
+
"ri.language-model-service..language-model.gpt-5-mini",
|
|
169
|
+
"GPT-5 Mini",
|
|
170
|
+
{ lifecycle: "ga" }
|
|
171
|
+
),
|
|
172
|
+
"gpt-5-nano": createOpenAIModel(
|
|
173
|
+
"ri.language-model-service..language-model.gpt-5-nano",
|
|
174
|
+
"GPT-5 Nano",
|
|
175
|
+
{ lifecycle: "ga" }
|
|
176
|
+
),
|
|
177
|
+
"gpt-5.1": createOpenAIModel("ri.language-model-service..language-model.gpt-5-1", "GPT-5.1", {
|
|
178
|
+
lifecycle: "ga"
|
|
179
|
+
}),
|
|
180
|
+
"gpt-5.1-codex": createOpenAIModel(
|
|
181
|
+
"ri.language-model-service..language-model.gpt-5-1-codex",
|
|
182
|
+
"GPT-5.1 Codex",
|
|
183
|
+
{ lifecycle: "ga", supportsVision: false }
|
|
184
|
+
),
|
|
185
|
+
"gpt-5.1-codex-mini": createOpenAIModel(
|
|
186
|
+
"ri.language-model-service..language-model.gpt-5-1-codex-mini",
|
|
187
|
+
"GPT-5.1 Codex Mini",
|
|
188
|
+
{ lifecycle: "ga", supportsVision: false }
|
|
189
|
+
),
|
|
190
|
+
"gpt-5.2": createOpenAIModel("ri.language-model-service..language-model.gpt-5-2", "GPT-5.2", {
|
|
191
|
+
lifecycle: "experimental"
|
|
192
|
+
}),
|
|
193
|
+
"gpt-5.4": createOpenAIModel("ri.language-model-service..language-model.gpt-5-4", "GPT-5.4", {
|
|
194
|
+
lifecycle: "experimental"
|
|
195
|
+
}),
|
|
196
|
+
o3: createOpenAIModel("ri.language-model-service..language-model.o-3", "o3", { lifecycle: "ga" }),
|
|
197
|
+
"o4-mini": createOpenAIModel("ri.language-model-service..language-model.o-4-mini", "o4 Mini", {
|
|
198
|
+
lifecycle: "ga"
|
|
199
|
+
})
|
|
200
|
+
};
|
|
201
|
+
var OPENAI_REASONING_MODEL_IDS = /* @__PURE__ */ new Set([
|
|
202
|
+
"gpt-5",
|
|
203
|
+
"gpt-5-mini",
|
|
204
|
+
"gpt-5-nano",
|
|
205
|
+
"gpt-5.2",
|
|
206
|
+
"gpt-5.4",
|
|
207
|
+
"o3",
|
|
208
|
+
"o4-mini"
|
|
209
|
+
]);
|
|
210
|
+
var OPENAI_REASONING_MODEL_TARGETS = /* @__PURE__ */ new Set([
|
|
211
|
+
...OPENAI_REASONING_MODEL_IDS,
|
|
212
|
+
...Object.entries(OPENAI_MODELS).filter(([modelId]) => OPENAI_REASONING_MODEL_IDS.has(modelId)).map(([, metadata]) => metadata.rid)
|
|
213
|
+
]);
|
|
214
|
+
function isKnownOpenAIReasoningTarget(modelId) {
|
|
215
|
+
return OPENAI_REASONING_MODEL_TARGETS.has(modelId);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// src/models/catalog.ts
|
|
219
|
+
var MODEL_CATALOG = {
|
|
220
|
+
...OPENAI_MODELS,
|
|
221
|
+
...ANTHROPIC_MODELS
|
|
222
|
+
};
|
|
223
|
+
var MODEL_CATALOG_BY_RID = Object.fromEntries(
|
|
224
|
+
Object.values(MODEL_CATALOG).map((metadata) => [metadata.rid, metadata])
|
|
225
|
+
);
|
|
226
|
+
function getModelMetadata(modelId) {
|
|
227
|
+
return MODEL_CATALOG[modelId];
|
|
228
|
+
}
|
|
229
|
+
function hasKnownModel(modelId) {
|
|
230
|
+
return getModelMetadata(modelId) != null;
|
|
231
|
+
}
|
|
232
|
+
function resolveModelTarget(modelId) {
|
|
233
|
+
const metadata = getModelMetadata(modelId) ?? getModelMetadataByRid(modelId);
|
|
234
|
+
return {
|
|
235
|
+
rid: metadata?.rid ?? modelId,
|
|
236
|
+
metadata
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
function resolveKnownModelMetadata(modelId) {
|
|
240
|
+
const metadata = getModelMetadata(modelId);
|
|
241
|
+
if (metadata == null) {
|
|
242
|
+
throw new FoundryModelNotFoundError(modelId);
|
|
243
|
+
}
|
|
244
|
+
return metadata;
|
|
245
|
+
}
|
|
246
|
+
function resolveModelRid(modelId) {
|
|
247
|
+
return resolveKnownModelMetadata(modelId).rid;
|
|
248
|
+
}
|
|
249
|
+
function resolveModelProvider(modelId) {
|
|
250
|
+
return resolveKnownModelMetadata(modelId).provider;
|
|
251
|
+
}
|
|
252
|
+
function getModelMetadataByRid(modelRid) {
|
|
253
|
+
return MODEL_CATALOG_BY_RID[modelRid];
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export {
|
|
257
|
+
loadFoundryConfig,
|
|
258
|
+
resolveFoundryConfig,
|
|
259
|
+
FoundryModelNotFoundError,
|
|
260
|
+
ANTHROPIC_MODELS,
|
|
261
|
+
OPENAI_MODELS,
|
|
262
|
+
isKnownOpenAIReasoningTarget,
|
|
263
|
+
MODEL_CATALOG,
|
|
264
|
+
MODEL_CATALOG_BY_RID,
|
|
265
|
+
getModelMetadata,
|
|
266
|
+
hasKnownModel,
|
|
267
|
+
resolveModelTarget,
|
|
268
|
+
resolveKnownModelMetadata,
|
|
269
|
+
resolveModelRid,
|
|
270
|
+
resolveModelProvider
|
|
271
|
+
};
|
|
272
|
+
//# sourceMappingURL=chunk-5SYKCKOX.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/errors.ts","../src/models/anthropic-models.ts","../src/models/openai-models.ts","../src/models/catalog.ts"],"sourcesContent":["import type { FoundryConfig } from './types.js';\n\nconst FOUNDRY_URL_ENV = 'FOUNDRY_URL';\nconst FOUNDRY_TOKEN_ENV = 'FOUNDRY_TOKEN';\nconst FOUNDRY_ATTRIBUTION_RID_ENV = 'FOUNDRY_ATTRIBUTION_RID';\n\nexport function loadFoundryConfig(env: NodeJS.ProcessEnv = process.env): FoundryConfig {\n return normalizeResolvedFoundryConfig({\n foundryUrl: requireEnv(env, FOUNDRY_URL_ENV),\n token: requireEnv(env, FOUNDRY_TOKEN_ENV),\n attributionRid: optionalEnv(env, FOUNDRY_ATTRIBUTION_RID_ENV),\n });\n}\n\nexport function normalizeFoundryUrl(foundryUrl: string): string {\n return foundryUrl.trim().replace(/\\/+$/, '');\n}\n\nexport function resolveFoundryConfig(config: FoundryConfig, callerName: string): FoundryConfig {\n const normalizedConfig = normalizeResolvedFoundryConfig({\n foundryUrl: typeof config.foundryUrl === 'string' ? config.foundryUrl : '',\n token: typeof config.token === 'string' ? config.token : '',\n attributionRid: typeof config.attributionRid === 'string' ? config.attributionRid : undefined,\n });\n\n if (normalizedConfig.foundryUrl.length === 0) {\n throw new Error(`${callerName} requires config.foundryUrl to be a non-empty string.`);\n }\n\n if (normalizedConfig.token.length === 0) {\n throw new Error(`${callerName} requires config.token to be a non-empty string.`);\n }\n\n return normalizedConfig;\n}\n\nfunction requireEnv(env: NodeJS.ProcessEnv, name: string): string {\n const value = optionalEnv(env, name);\n\n if (value == null) {\n throw new Error(`Missing required environment variable: ${name}`);\n }\n\n return value;\n}\n\nfunction optionalEnv(env: NodeJS.ProcessEnv, name: string): string | undefined {\n const value = env[name]?.trim();\n\n return value ? value : undefined;\n}\n\nfunction normalizeResolvedFoundryConfig(config: {\n foundryUrl: string;\n token: string;\n attributionRid?: string;\n}): FoundryConfig {\n const attributionRid = config.attributionRid?.trim();\n\n return {\n foundryUrl: normalizeFoundryUrl(config.foundryUrl),\n token: config.token.trim(),\n attributionRid: attributionRid || undefined,\n };\n}\n","export class FoundryModelNotFoundError extends Error {\n constructor(modelId: string) {\n super(\n `Unknown model: \"${modelId}\". Check the catalog for supported aliases or pass a raw Foundry RID directly to a provider adapter.`,\n );\n this.name = 'FoundryModelNotFoundError';\n }\n}\n","import type { KnownAnthropicModelId, ModelLifecycle, ModelMetadata } from '../types.js';\n\nfunction createAnthropicModel(\n rid: string,\n displayName: string,\n lifecycle: ModelLifecycle,\n): ModelMetadata {\n return {\n rid,\n provider: 'anthropic',\n displayName,\n supportsVision: true,\n supportsResponses: false,\n lifecycle,\n };\n}\n\nexport const ANTHROPIC_MODELS = {\n 'claude-3.5-haiku': createAnthropicModel(\n 'ri.language-model-service..language-model.anthropic-claude-3-5-haiku',\n 'Claude 3.5 Haiku',\n 'ga',\n ),\n 'claude-3.7-sonnet': createAnthropicModel(\n 'ri.language-model-service..language-model.anthropic-claude-3-7-sonnet',\n 'Claude 3.7 Sonnet',\n 'ga',\n ),\n 'claude-haiku-4.5': createAnthropicModel(\n 'ri.language-model-service..language-model.anthropic-claude-4-5-haiku',\n 'Claude Haiku 4.5',\n 'ga',\n ),\n 'claude-opus-4': createAnthropicModel(\n 'ri.language-model-service..language-model.anthropic-claude-4-opus',\n 'Claude Opus 4',\n 'ga',\n ),\n 'claude-opus-4.1': createAnthropicModel(\n 'ri.language-model-service..language-model.anthropic-claude-4-1-opus',\n 'Claude Opus 4.1',\n 'ga',\n ),\n 'claude-opus-4.5': createAnthropicModel(\n 'ri.language-model-service..language-model.anthropic-claude-4-5-opus',\n 'Claude Opus 4.5',\n 'ga',\n ),\n 'claude-opus-4.6': createAnthropicModel(\n 'ri.language-model-service..language-model.anthropic-claude-4-6-opus',\n 'Claude Opus 4.6',\n 'ga',\n ),\n 'claude-sonnet-4': createAnthropicModel(\n 'ri.language-model-service..language-model.anthropic-claude-4-sonnet',\n 'Claude Sonnet 4',\n 'ga',\n ),\n 'claude-sonnet-4.5': createAnthropicModel(\n 'ri.language-model-service..language-model.anthropic-claude-4-5-sonnet',\n 'Claude Sonnet 4.5',\n 'ga',\n ),\n 'claude-sonnet-4.6': createAnthropicModel(\n 'ri.language-model-service..language-model.anthropic-claude-4-6-sonnet',\n 'Claude Sonnet 4.6',\n 'ga',\n ),\n} as const satisfies Record<KnownAnthropicModelId, ModelMetadata>;\n","import type { KnownOpenAIModelId, ModelLifecycle, ModelMetadata } from '../types.js';\n\nfunction createOpenAIModel(\n rid: string,\n displayName: string,\n {\n lifecycle,\n supportsVision = true,\n }: {\n lifecycle: ModelLifecycle;\n supportsVision?: boolean;\n },\n): ModelMetadata {\n return {\n rid,\n provider: 'openai',\n displayName,\n supportsVision,\n supportsResponses: true,\n lifecycle,\n };\n}\n\nexport const OPENAI_MODELS = {\n 'gpt-4.1': createOpenAIModel('ri.language-model-service..language-model.gpt-4-1', 'GPT-4.1', {\n lifecycle: 'ga',\n }),\n 'gpt-4.1-mini': createOpenAIModel(\n 'ri.language-model-service..language-model.gpt-4-1-mini',\n 'GPT-4.1 Mini',\n { lifecycle: 'ga' },\n ),\n 'gpt-4.1-nano': createOpenAIModel(\n 'ri.language-model-service..language-model.gpt-4-1-nano',\n 'GPT-4.1 Nano',\n { lifecycle: 'ga' },\n ),\n 'gpt-4o': createOpenAIModel('ri.language-model-service..language-model.gpt-4-o', 'GPT-4o', {\n lifecycle: 'ga',\n }),\n 'gpt-4o-mini': createOpenAIModel(\n 'ri.language-model-service..language-model.gpt-4-o-mini',\n 'GPT-4o Mini',\n { lifecycle: 'ga' },\n ),\n 'gpt-5': createOpenAIModel('ri.language-model-service..language-model.gpt-5', 'GPT-5', {\n lifecycle: 'ga',\n }),\n 'gpt-5-codex': createOpenAIModel(\n 'ri.language-model-service..language-model.gpt-5-codex',\n 'GPT-5 Codex',\n { lifecycle: 'ga', supportsVision: false },\n ),\n 'gpt-5-mini': createOpenAIModel(\n 'ri.language-model-service..language-model.gpt-5-mini',\n 'GPT-5 Mini',\n { lifecycle: 'ga' },\n ),\n 'gpt-5-nano': createOpenAIModel(\n 'ri.language-model-service..language-model.gpt-5-nano',\n 'GPT-5 Nano',\n { lifecycle: 'ga' },\n ),\n 'gpt-5.1': createOpenAIModel('ri.language-model-service..language-model.gpt-5-1', 'GPT-5.1', {\n lifecycle: 'ga',\n }),\n 'gpt-5.1-codex': createOpenAIModel(\n 'ri.language-model-service..language-model.gpt-5-1-codex',\n 'GPT-5.1 Codex',\n { lifecycle: 'ga', supportsVision: false },\n ),\n 'gpt-5.1-codex-mini': createOpenAIModel(\n 'ri.language-model-service..language-model.gpt-5-1-codex-mini',\n 'GPT-5.1 Codex Mini',\n { lifecycle: 'ga', supportsVision: false },\n ),\n 'gpt-5.2': createOpenAIModel('ri.language-model-service..language-model.gpt-5-2', 'GPT-5.2', {\n lifecycle: 'experimental',\n }),\n 'gpt-5.4': createOpenAIModel('ri.language-model-service..language-model.gpt-5-4', 'GPT-5.4', {\n lifecycle: 'experimental',\n }),\n o3: createOpenAIModel('ri.language-model-service..language-model.o-3', 'o3', { lifecycle: 'ga' }),\n 'o4-mini': createOpenAIModel('ri.language-model-service..language-model.o-4-mini', 'o4 Mini', {\n lifecycle: 'ga',\n }),\n} as const satisfies Record<KnownOpenAIModelId, ModelMetadata>;\n\nconst OPENAI_REASONING_MODEL_IDS = new Set<KnownOpenAIModelId>([\n 'gpt-5',\n 'gpt-5-mini',\n 'gpt-5-nano',\n 'gpt-5.2',\n 'gpt-5.4',\n 'o3',\n 'o4-mini',\n]);\n\nconst OPENAI_REASONING_MODEL_TARGETS = new Set<string>([\n ...OPENAI_REASONING_MODEL_IDS,\n ...Object.entries(OPENAI_MODELS)\n .filter(([modelId]) => OPENAI_REASONING_MODEL_IDS.has(modelId as KnownOpenAIModelId))\n .map(([, metadata]) => metadata.rid),\n]);\n\nexport function isKnownOpenAIReasoningTarget(modelId: string): boolean {\n return OPENAI_REASONING_MODEL_TARGETS.has(modelId);\n}\n","import { FoundryModelNotFoundError } from '../errors.js';\nimport type { KnownModelId, ModelMetadata, ModelProvider, ResolvedModelTarget } from '../types.js';\nimport { ANTHROPIC_MODELS } from './anthropic-models.js';\nimport { OPENAI_MODELS } from './openai-models.js';\n\nexport const MODEL_CATALOG = {\n ...OPENAI_MODELS,\n ...ANTHROPIC_MODELS,\n} as const satisfies Record<KnownModelId, ModelMetadata>;\nexport const MODEL_CATALOG_BY_RID = Object.fromEntries(\n Object.values(MODEL_CATALOG).map((metadata) => [metadata.rid, metadata]),\n) as Record<string, ModelMetadata>;\n\nexport function getModelMetadata(modelId: string): ModelMetadata | undefined {\n return MODEL_CATALOG[modelId as KnownModelId];\n}\n\nexport function hasKnownModel(modelId: string): modelId is KnownModelId {\n return getModelMetadata(modelId) != null;\n}\n\nexport function resolveModelTarget(modelId: string): ResolvedModelTarget {\n const metadata = getModelMetadata(modelId) ?? getModelMetadataByRid(modelId);\n\n return {\n rid: metadata?.rid ?? modelId,\n metadata,\n };\n}\n\nexport function resolveKnownModelMetadata(modelId: string): ModelMetadata {\n const metadata = getModelMetadata(modelId);\n\n if (metadata == null) {\n throw new FoundryModelNotFoundError(modelId);\n }\n\n return metadata;\n}\n\nexport function resolveModelRid(modelId: string): string {\n return resolveKnownModelMetadata(modelId).rid;\n}\n\nexport function resolveModelProvider(modelId: string): ModelProvider {\n return resolveKnownModelMetadata(modelId).provider;\n}\n\nfunction getModelMetadataByRid(modelRid: string): ModelMetadata | undefined {\n return MODEL_CATALOG_BY_RID[modelRid];\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// src/middleware.ts
|
|
2
|
+
import { wrapLanguageModel } from "ai";
|
|
3
|
+
function wrapFoundryLanguageModel(model, options) {
|
|
4
|
+
return wrapLanguageModel({
|
|
5
|
+
model,
|
|
6
|
+
middleware: {
|
|
7
|
+
specificationVersion: "v3",
|
|
8
|
+
transformParams: async ({ params }) => {
|
|
9
|
+
return options.transformParams?.(params) ?? params;
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
modelId: options.modelId,
|
|
13
|
+
providerId: options.providerId
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export {
|
|
18
|
+
wrapFoundryLanguageModel
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=chunk-UQ5CCQR6.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/middleware.ts"],"sourcesContent":["import { wrapLanguageModel } from 'ai';\n\ntype FoundryLanguageModel = Parameters<typeof wrapLanguageModel>[0]['model'];\ntype FoundryCallOptions = Parameters<FoundryLanguageModel['doGenerate']>[0];\n\nexport function wrapFoundryLanguageModel(\n model: FoundryLanguageModel,\n options: {\n modelId: string;\n providerId: string;\n transformParams?: (params: FoundryCallOptions) => FoundryCallOptions;\n },\n): FoundryLanguageModel {\n return wrapLanguageModel({\n model,\n middleware: {\n specificationVersion: 'v3',\n transformParams: async ({ params }) => {\n return options.transformParams?.(params) ?? params;\n },\n },\n modelId: options.modelId,\n providerId: options.providerId,\n });\n}\n"],"mappings":";AAAA,SAAS,yBAAyB;AAK3B,SAAS,yBACd,OACA,SAKsB;AACtB,SAAO,kBAAkB;AAAA,IACvB;AAAA,IACA,YAAY;AAAA,MACV,sBAAsB;AAAA,MACtB,iBAAiB,OAAO,EAAE,OAAO,MAAM;AACrC,eAAO,QAAQ,kBAAkB,MAAM,KAAK;AAAA,MAC9C;AAAA,IACF;AAAA,IACA,SAAS,QAAQ;AAAA,IACjB,YAAY,QAAQ;AAAA,EACtB,CAAC;AACH;","names":[]}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,326 @@
|
|
|
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
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var src_exports = {};
|
|
22
|
+
__export(src_exports, {
|
|
23
|
+
ANTHROPIC_MODELS: () => ANTHROPIC_MODELS,
|
|
24
|
+
ANTHROPIC_MODEL_IDS: () => ANTHROPIC_MODEL_IDS,
|
|
25
|
+
FoundryModelNotFoundError: () => FoundryModelNotFoundError,
|
|
26
|
+
MODEL_CATALOG: () => MODEL_CATALOG,
|
|
27
|
+
MODEL_CATALOG_BY_RID: () => MODEL_CATALOG_BY_RID,
|
|
28
|
+
OPENAI_MODELS: () => OPENAI_MODELS,
|
|
29
|
+
OPENAI_MODEL_IDS: () => OPENAI_MODEL_IDS,
|
|
30
|
+
getModelMetadata: () => getModelMetadata,
|
|
31
|
+
hasKnownModel: () => hasKnownModel,
|
|
32
|
+
loadFoundryConfig: () => loadFoundryConfig,
|
|
33
|
+
resolveKnownModelMetadata: () => resolveKnownModelMetadata,
|
|
34
|
+
resolveModelProvider: () => resolveModelProvider,
|
|
35
|
+
resolveModelRid: () => resolveModelRid,
|
|
36
|
+
resolveModelTarget: () => resolveModelTarget
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(src_exports);
|
|
39
|
+
|
|
40
|
+
// src/config.ts
|
|
41
|
+
var FOUNDRY_URL_ENV = "FOUNDRY_URL";
|
|
42
|
+
var FOUNDRY_TOKEN_ENV = "FOUNDRY_TOKEN";
|
|
43
|
+
var FOUNDRY_ATTRIBUTION_RID_ENV = "FOUNDRY_ATTRIBUTION_RID";
|
|
44
|
+
function loadFoundryConfig(env = process.env) {
|
|
45
|
+
return normalizeResolvedFoundryConfig({
|
|
46
|
+
foundryUrl: requireEnv(env, FOUNDRY_URL_ENV),
|
|
47
|
+
token: requireEnv(env, FOUNDRY_TOKEN_ENV),
|
|
48
|
+
attributionRid: optionalEnv(env, FOUNDRY_ATTRIBUTION_RID_ENV)
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function normalizeFoundryUrl(foundryUrl) {
|
|
52
|
+
return foundryUrl.trim().replace(/\/+$/, "");
|
|
53
|
+
}
|
|
54
|
+
function requireEnv(env, name) {
|
|
55
|
+
const value = optionalEnv(env, name);
|
|
56
|
+
if (value == null) {
|
|
57
|
+
throw new Error(`Missing required environment variable: ${name}`);
|
|
58
|
+
}
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
function optionalEnv(env, name) {
|
|
62
|
+
const value = env[name]?.trim();
|
|
63
|
+
return value ? value : void 0;
|
|
64
|
+
}
|
|
65
|
+
function normalizeResolvedFoundryConfig(config) {
|
|
66
|
+
const attributionRid = config.attributionRid?.trim();
|
|
67
|
+
return {
|
|
68
|
+
foundryUrl: normalizeFoundryUrl(config.foundryUrl),
|
|
69
|
+
token: config.token.trim(),
|
|
70
|
+
attributionRid: attributionRid || void 0
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// src/errors.ts
|
|
75
|
+
var FoundryModelNotFoundError = class extends Error {
|
|
76
|
+
constructor(modelId) {
|
|
77
|
+
super(
|
|
78
|
+
`Unknown model: "${modelId}". Check the catalog for supported aliases or pass a raw Foundry RID directly to a provider adapter.`
|
|
79
|
+
);
|
|
80
|
+
this.name = "FoundryModelNotFoundError";
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// src/models/anthropic-models.ts
|
|
85
|
+
function createAnthropicModel(rid, displayName, lifecycle) {
|
|
86
|
+
return {
|
|
87
|
+
rid,
|
|
88
|
+
provider: "anthropic",
|
|
89
|
+
displayName,
|
|
90
|
+
supportsVision: true,
|
|
91
|
+
supportsResponses: false,
|
|
92
|
+
lifecycle
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
var ANTHROPIC_MODELS = {
|
|
96
|
+
"claude-3.5-haiku": createAnthropicModel(
|
|
97
|
+
"ri.language-model-service..language-model.anthropic-claude-3-5-haiku",
|
|
98
|
+
"Claude 3.5 Haiku",
|
|
99
|
+
"ga"
|
|
100
|
+
),
|
|
101
|
+
"claude-3.7-sonnet": createAnthropicModel(
|
|
102
|
+
"ri.language-model-service..language-model.anthropic-claude-3-7-sonnet",
|
|
103
|
+
"Claude 3.7 Sonnet",
|
|
104
|
+
"ga"
|
|
105
|
+
),
|
|
106
|
+
"claude-haiku-4.5": createAnthropicModel(
|
|
107
|
+
"ri.language-model-service..language-model.anthropic-claude-4-5-haiku",
|
|
108
|
+
"Claude Haiku 4.5",
|
|
109
|
+
"ga"
|
|
110
|
+
),
|
|
111
|
+
"claude-opus-4": createAnthropicModel(
|
|
112
|
+
"ri.language-model-service..language-model.anthropic-claude-4-opus",
|
|
113
|
+
"Claude Opus 4",
|
|
114
|
+
"ga"
|
|
115
|
+
),
|
|
116
|
+
"claude-opus-4.1": createAnthropicModel(
|
|
117
|
+
"ri.language-model-service..language-model.anthropic-claude-4-1-opus",
|
|
118
|
+
"Claude Opus 4.1",
|
|
119
|
+
"ga"
|
|
120
|
+
),
|
|
121
|
+
"claude-opus-4.5": createAnthropicModel(
|
|
122
|
+
"ri.language-model-service..language-model.anthropic-claude-4-5-opus",
|
|
123
|
+
"Claude Opus 4.5",
|
|
124
|
+
"ga"
|
|
125
|
+
),
|
|
126
|
+
"claude-opus-4.6": createAnthropicModel(
|
|
127
|
+
"ri.language-model-service..language-model.anthropic-claude-4-6-opus",
|
|
128
|
+
"Claude Opus 4.6",
|
|
129
|
+
"ga"
|
|
130
|
+
),
|
|
131
|
+
"claude-sonnet-4": createAnthropicModel(
|
|
132
|
+
"ri.language-model-service..language-model.anthropic-claude-4-sonnet",
|
|
133
|
+
"Claude Sonnet 4",
|
|
134
|
+
"ga"
|
|
135
|
+
),
|
|
136
|
+
"claude-sonnet-4.5": createAnthropicModel(
|
|
137
|
+
"ri.language-model-service..language-model.anthropic-claude-4-5-sonnet",
|
|
138
|
+
"Claude Sonnet 4.5",
|
|
139
|
+
"ga"
|
|
140
|
+
),
|
|
141
|
+
"claude-sonnet-4.6": createAnthropicModel(
|
|
142
|
+
"ri.language-model-service..language-model.anthropic-claude-4-6-sonnet",
|
|
143
|
+
"Claude Sonnet 4.6",
|
|
144
|
+
"ga"
|
|
145
|
+
)
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
// src/models/openai-models.ts
|
|
149
|
+
function createOpenAIModel(rid, displayName, {
|
|
150
|
+
lifecycle,
|
|
151
|
+
supportsVision = true
|
|
152
|
+
}) {
|
|
153
|
+
return {
|
|
154
|
+
rid,
|
|
155
|
+
provider: "openai",
|
|
156
|
+
displayName,
|
|
157
|
+
supportsVision,
|
|
158
|
+
supportsResponses: true,
|
|
159
|
+
lifecycle
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
var OPENAI_MODELS = {
|
|
163
|
+
"gpt-4.1": createOpenAIModel("ri.language-model-service..language-model.gpt-4-1", "GPT-4.1", {
|
|
164
|
+
lifecycle: "ga"
|
|
165
|
+
}),
|
|
166
|
+
"gpt-4.1-mini": createOpenAIModel(
|
|
167
|
+
"ri.language-model-service..language-model.gpt-4-1-mini",
|
|
168
|
+
"GPT-4.1 Mini",
|
|
169
|
+
{ lifecycle: "ga" }
|
|
170
|
+
),
|
|
171
|
+
"gpt-4.1-nano": createOpenAIModel(
|
|
172
|
+
"ri.language-model-service..language-model.gpt-4-1-nano",
|
|
173
|
+
"GPT-4.1 Nano",
|
|
174
|
+
{ lifecycle: "ga" }
|
|
175
|
+
),
|
|
176
|
+
"gpt-4o": createOpenAIModel("ri.language-model-service..language-model.gpt-4-o", "GPT-4o", {
|
|
177
|
+
lifecycle: "ga"
|
|
178
|
+
}),
|
|
179
|
+
"gpt-4o-mini": createOpenAIModel(
|
|
180
|
+
"ri.language-model-service..language-model.gpt-4-o-mini",
|
|
181
|
+
"GPT-4o Mini",
|
|
182
|
+
{ lifecycle: "ga" }
|
|
183
|
+
),
|
|
184
|
+
"gpt-5": createOpenAIModel("ri.language-model-service..language-model.gpt-5", "GPT-5", {
|
|
185
|
+
lifecycle: "ga"
|
|
186
|
+
}),
|
|
187
|
+
"gpt-5-codex": createOpenAIModel(
|
|
188
|
+
"ri.language-model-service..language-model.gpt-5-codex",
|
|
189
|
+
"GPT-5 Codex",
|
|
190
|
+
{ lifecycle: "ga", supportsVision: false }
|
|
191
|
+
),
|
|
192
|
+
"gpt-5-mini": createOpenAIModel(
|
|
193
|
+
"ri.language-model-service..language-model.gpt-5-mini",
|
|
194
|
+
"GPT-5 Mini",
|
|
195
|
+
{ lifecycle: "ga" }
|
|
196
|
+
),
|
|
197
|
+
"gpt-5-nano": createOpenAIModel(
|
|
198
|
+
"ri.language-model-service..language-model.gpt-5-nano",
|
|
199
|
+
"GPT-5 Nano",
|
|
200
|
+
{ lifecycle: "ga" }
|
|
201
|
+
),
|
|
202
|
+
"gpt-5.1": createOpenAIModel("ri.language-model-service..language-model.gpt-5-1", "GPT-5.1", {
|
|
203
|
+
lifecycle: "ga"
|
|
204
|
+
}),
|
|
205
|
+
"gpt-5.1-codex": createOpenAIModel(
|
|
206
|
+
"ri.language-model-service..language-model.gpt-5-1-codex",
|
|
207
|
+
"GPT-5.1 Codex",
|
|
208
|
+
{ lifecycle: "ga", supportsVision: false }
|
|
209
|
+
),
|
|
210
|
+
"gpt-5.1-codex-mini": createOpenAIModel(
|
|
211
|
+
"ri.language-model-service..language-model.gpt-5-1-codex-mini",
|
|
212
|
+
"GPT-5.1 Codex Mini",
|
|
213
|
+
{ lifecycle: "ga", supportsVision: false }
|
|
214
|
+
),
|
|
215
|
+
"gpt-5.2": createOpenAIModel("ri.language-model-service..language-model.gpt-5-2", "GPT-5.2", {
|
|
216
|
+
lifecycle: "experimental"
|
|
217
|
+
}),
|
|
218
|
+
"gpt-5.4": createOpenAIModel("ri.language-model-service..language-model.gpt-5-4", "GPT-5.4", {
|
|
219
|
+
lifecycle: "experimental"
|
|
220
|
+
}),
|
|
221
|
+
o3: createOpenAIModel("ri.language-model-service..language-model.o-3", "o3", { lifecycle: "ga" }),
|
|
222
|
+
"o4-mini": createOpenAIModel("ri.language-model-service..language-model.o-4-mini", "o4 Mini", {
|
|
223
|
+
lifecycle: "ga"
|
|
224
|
+
})
|
|
225
|
+
};
|
|
226
|
+
var OPENAI_REASONING_MODEL_IDS = /* @__PURE__ */ new Set([
|
|
227
|
+
"gpt-5",
|
|
228
|
+
"gpt-5-mini",
|
|
229
|
+
"gpt-5-nano",
|
|
230
|
+
"gpt-5.2",
|
|
231
|
+
"gpt-5.4",
|
|
232
|
+
"o3",
|
|
233
|
+
"o4-mini"
|
|
234
|
+
]);
|
|
235
|
+
var OPENAI_REASONING_MODEL_TARGETS = /* @__PURE__ */ new Set([
|
|
236
|
+
...OPENAI_REASONING_MODEL_IDS,
|
|
237
|
+
...Object.entries(OPENAI_MODELS).filter(([modelId]) => OPENAI_REASONING_MODEL_IDS.has(modelId)).map(([, metadata]) => metadata.rid)
|
|
238
|
+
]);
|
|
239
|
+
|
|
240
|
+
// src/models/catalog.ts
|
|
241
|
+
var MODEL_CATALOG = {
|
|
242
|
+
...OPENAI_MODELS,
|
|
243
|
+
...ANTHROPIC_MODELS
|
|
244
|
+
};
|
|
245
|
+
var MODEL_CATALOG_BY_RID = Object.fromEntries(
|
|
246
|
+
Object.values(MODEL_CATALOG).map((metadata) => [metadata.rid, metadata])
|
|
247
|
+
);
|
|
248
|
+
function getModelMetadata(modelId) {
|
|
249
|
+
return MODEL_CATALOG[modelId];
|
|
250
|
+
}
|
|
251
|
+
function hasKnownModel(modelId) {
|
|
252
|
+
return getModelMetadata(modelId) != null;
|
|
253
|
+
}
|
|
254
|
+
function resolveModelTarget(modelId) {
|
|
255
|
+
const metadata = getModelMetadata(modelId) ?? getModelMetadataByRid(modelId);
|
|
256
|
+
return {
|
|
257
|
+
rid: metadata?.rid ?? modelId,
|
|
258
|
+
metadata
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
function resolveKnownModelMetadata(modelId) {
|
|
262
|
+
const metadata = getModelMetadata(modelId);
|
|
263
|
+
if (metadata == null) {
|
|
264
|
+
throw new FoundryModelNotFoundError(modelId);
|
|
265
|
+
}
|
|
266
|
+
return metadata;
|
|
267
|
+
}
|
|
268
|
+
function resolveModelRid(modelId) {
|
|
269
|
+
return resolveKnownModelMetadata(modelId).rid;
|
|
270
|
+
}
|
|
271
|
+
function resolveModelProvider(modelId) {
|
|
272
|
+
return resolveKnownModelMetadata(modelId).provider;
|
|
273
|
+
}
|
|
274
|
+
function getModelMetadataByRid(modelRid) {
|
|
275
|
+
return MODEL_CATALOG_BY_RID[modelRid];
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// src/types.ts
|
|
279
|
+
var OPENAI_MODEL_IDS = [
|
|
280
|
+
"gpt-4.1",
|
|
281
|
+
"gpt-4.1-mini",
|
|
282
|
+
"gpt-4.1-nano",
|
|
283
|
+
"gpt-4o",
|
|
284
|
+
"gpt-4o-mini",
|
|
285
|
+
"gpt-5",
|
|
286
|
+
"gpt-5-codex",
|
|
287
|
+
"gpt-5-mini",
|
|
288
|
+
"gpt-5-nano",
|
|
289
|
+
"gpt-5.1",
|
|
290
|
+
"gpt-5.1-codex",
|
|
291
|
+
"gpt-5.1-codex-mini",
|
|
292
|
+
"gpt-5.2",
|
|
293
|
+
"gpt-5.4",
|
|
294
|
+
"o3",
|
|
295
|
+
"o4-mini"
|
|
296
|
+
];
|
|
297
|
+
var ANTHROPIC_MODEL_IDS = [
|
|
298
|
+
"claude-3.5-haiku",
|
|
299
|
+
"claude-3.7-sonnet",
|
|
300
|
+
"claude-haiku-4.5",
|
|
301
|
+
"claude-opus-4",
|
|
302
|
+
"claude-opus-4.1",
|
|
303
|
+
"claude-opus-4.5",
|
|
304
|
+
"claude-opus-4.6",
|
|
305
|
+
"claude-sonnet-4",
|
|
306
|
+
"claude-sonnet-4.5",
|
|
307
|
+
"claude-sonnet-4.6"
|
|
308
|
+
];
|
|
309
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
310
|
+
0 && (module.exports = {
|
|
311
|
+
ANTHROPIC_MODELS,
|
|
312
|
+
ANTHROPIC_MODEL_IDS,
|
|
313
|
+
FoundryModelNotFoundError,
|
|
314
|
+
MODEL_CATALOG,
|
|
315
|
+
MODEL_CATALOG_BY_RID,
|
|
316
|
+
OPENAI_MODELS,
|
|
317
|
+
OPENAI_MODEL_IDS,
|
|
318
|
+
getModelMetadata,
|
|
319
|
+
hasKnownModel,
|
|
320
|
+
loadFoundryConfig,
|
|
321
|
+
resolveKnownModelMetadata,
|
|
322
|
+
resolveModelProvider,
|
|
323
|
+
resolveModelRid,
|
|
324
|
+
resolveModelTarget
|
|
325
|
+
});
|
|
326
|
+
//# sourceMappingURL=index.cjs.map
|