@nyrra/foundry-ai 0.0.2-rc.0 → 0.0.2-rc.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/README.md CHANGED
@@ -14,6 +14,10 @@ pnpm add @nyrra/foundry-ai ai @ai-sdk/openai
14
14
  pnpm add @nyrra/foundry-ai ai @ai-sdk/anthropic
15
15
  ```
16
16
 
17
+ ```bash
18
+ pnpm add @nyrra/foundry-ai ai @ai-sdk/google
19
+ ```
20
+
17
21
  ## Usage
18
22
 
19
23
  ```ts
@@ -42,6 +46,7 @@ console.log(result.text);
42
46
  - `@nyrra/foundry-ai`
43
47
  - `@nyrra/foundry-ai/openai`
44
48
  - `@nyrra/foundry-ai/anthropic`
49
+ - `@nyrra/foundry-ai/google`
45
50
 
46
51
  There is no published registry helper. Compose multi-provider routing in application code with AI SDK `createProviderRegistry`.
47
52
 
@@ -49,6 +54,33 @@ There is no published registry helper. Compose multi-provider routing in applica
49
54
 
50
55
  - OpenAI traffic always uses Foundry-safe compatibility defaults where required.
51
56
  - `providerOptions.openai.store=true` throws before the request is sent.
52
- - Unknown model strings pass through as raw Foundry RIDs when you call a provider factory directly.
57
+ - Unknown model strings pass through as raw targets when you call a provider factory directly.
58
+ - OpenAI, Anthropic, and Google friendly aliases resolve through the shared catalog.
59
+ - The Google adapter rewrites the AI SDK's `x-goog-api-key` auth into the bearer-token header that Foundry expects.
60
+
61
+ ## Verification
62
+
63
+ The examples are demos. The canonical verification surface is the live capability matrix in [`src/__tests__/foundry.live.test.ts`](./src/__tests__/foundry.live.test.ts).
64
+
65
+ Each live run writes structured artifacts under `.memory/capability-runs/<run-id>/` and `pnpm test:live` refreshes the checked-in matrix docs from the latest artifact even when a capability fails.
66
+
67
+ <!-- live-matrix:start -->
68
+ ## Live Capability Matrix
69
+
70
+ Generated from the latest local live verification artifact checked into this branch.
71
+
72
+ Latest snapshot: `2026-03-28T02-23-38.080Z-f7c393`
73
+
74
+ - Models: openai=`gpt-5-mini`, anthropic=`claude-sonnet-4.6`, google=`gemini-3.1-flash-lite`
75
+ - Status Counts: `pass`: 29, `skipped`: 18, `proxy-rejected`: 2
76
+
77
+ | Provider | Pass | Skipped | Proxy Rejected | Unsupported | Fail |
78
+ |---|---:|---:|---:|---:|---:|
79
+ | anthropic | 9 | 6 | 1 | 0 | 0 |
80
+ | google | 9 | 7 | 0 | 0 | 0 |
81
+ | openai | 11 | 5 | 1 | 0 | 0 |
82
+
83
+ See [docs/live-capability-matrix.md](./docs/live-capability-matrix.md) for the full row-by-row matrix and non-pass details.
84
+ <!-- live-matrix:end -->
53
85
 
54
86
  See the repo root README for the full catalog, examples, and release notes.
@@ -120,6 +120,55 @@ var ANTHROPIC_MODELS = {
120
120
  )
121
121
  };
122
122
 
123
+ // src/models/google-models.ts
124
+ function createGoogleModel(rid, displayName, lifecycle) {
125
+ return {
126
+ rid,
127
+ provider: "google",
128
+ displayName,
129
+ supportsVision: true,
130
+ supportsResponses: false,
131
+ lifecycle
132
+ };
133
+ }
134
+ var GOOGLE_MODELS = {
135
+ "gemini-2.5-pro": createGoogleModel(
136
+ "ri.language-model-service..language-model.gemini-2-5-pro",
137
+ "Gemini 2.5 Pro",
138
+ "ga"
139
+ ),
140
+ "gemini-2.5-flash": createGoogleModel(
141
+ "ri.language-model-service..language-model.gemini-2-5-flash",
142
+ "Gemini 2.5 Flash",
143
+ "ga"
144
+ ),
145
+ "gemini-2.5-flash-lite": createGoogleModel(
146
+ "ri.language-model-service..language-model.gemini-2-5-flash-lite",
147
+ "Gemini 2.5 Flash Lite",
148
+ "ga"
149
+ ),
150
+ "gemini-3-pro": createGoogleModel(
151
+ "ri.language-model-service..language-model.gemini-3-pro",
152
+ "Gemini 3 Pro (Preview)",
153
+ "sunset"
154
+ ),
155
+ "gemini-3-flash": createGoogleModel(
156
+ "ri.language-model-service..language-model.gemini-3-flash",
157
+ "Gemini 3 Flash (Preview)",
158
+ "ga"
159
+ ),
160
+ "gemini-3.1-pro": createGoogleModel(
161
+ "ri.language-model-service..language-model.gemini-3-1-pro",
162
+ "Gemini 3.1 Pro (Preview)",
163
+ "ga"
164
+ ),
165
+ "gemini-3.1-flash-lite": createGoogleModel(
166
+ "ri.language-model-service..language-model.gemini-3-1-flash-lite",
167
+ "Gemini 3.1 Flash Lite (Preview)",
168
+ "experimental"
169
+ )
170
+ };
171
+
123
172
  // src/models/openai-models.ts
124
173
  function createOpenAIModel(rid, displayName, {
125
174
  lifecycle,
@@ -218,7 +267,8 @@ function isKnownOpenAIReasoningTarget(modelId) {
218
267
  // src/models/catalog.ts
219
268
  var MODEL_CATALOG = {
220
269
  ...OPENAI_MODELS,
221
- ...ANTHROPIC_MODELS
270
+ ...ANTHROPIC_MODELS,
271
+ ...GOOGLE_MODELS
222
272
  };
223
273
  var MODEL_CATALOG_BY_RID = Object.fromEntries(
224
274
  Object.values(MODEL_CATALOG).map((metadata) => [metadata.rid, metadata])
@@ -258,6 +308,7 @@ export {
258
308
  resolveFoundryConfig,
259
309
  FoundryModelNotFoundError,
260
310
  ANTHROPIC_MODELS,
311
+ GOOGLE_MODELS,
261
312
  OPENAI_MODELS,
262
313
  isKnownOpenAIReasoningTarget,
263
314
  MODEL_CATALOG,
@@ -269,4 +320,4 @@ export {
269
320
  resolveModelRid,
270
321
  resolveModelProvider
271
322
  };
272
- //# sourceMappingURL=chunk-5SYKCKOX.mjs.map
323
+ //# sourceMappingURL=chunk-QPX75PWC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/config.ts","../src/errors.ts","../src/models/anthropic-models.ts","../src/models/google-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 { KnownGoogleModelId, ModelLifecycle, ModelMetadata } from '../types.js';\n\nfunction createGoogleModel(\n rid: string,\n displayName: string,\n lifecycle: ModelLifecycle,\n): ModelMetadata {\n return {\n rid,\n provider: 'google',\n displayName,\n supportsVision: true,\n supportsResponses: false,\n lifecycle,\n };\n}\n\nexport const GOOGLE_MODELS = {\n 'gemini-2.5-pro': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-2-5-pro',\n 'Gemini 2.5 Pro',\n 'ga',\n ),\n 'gemini-2.5-flash': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-2-5-flash',\n 'Gemini 2.5 Flash',\n 'ga',\n ),\n 'gemini-2.5-flash-lite': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-2-5-flash-lite',\n 'Gemini 2.5 Flash Lite',\n 'ga',\n ),\n 'gemini-3-pro': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-3-pro',\n 'Gemini 3 Pro (Preview)',\n 'sunset',\n ),\n 'gemini-3-flash': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-3-flash',\n 'Gemini 3 Flash (Preview)',\n 'ga',\n ),\n 'gemini-3.1-pro': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-3-1-pro',\n 'Gemini 3.1 Pro (Preview)',\n 'ga',\n ),\n 'gemini-3.1-flash-lite': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-3-1-flash-lite',\n 'Gemini 3.1 Flash Lite (Preview)',\n 'experimental',\n ),\n} as const satisfies Record<KnownGoogleModelId, 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 { GOOGLE_MODELS } from './google-models.js';\nimport { OPENAI_MODELS } from './openai-models.js';\n\nexport const MODEL_CATALOG = {\n ...OPENAI_MODELS,\n ...ANTHROPIC_MODELS,\n ...GOOGLE_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":[]}
package/dist/index.cjs CHANGED
@@ -23,6 +23,8 @@ __export(src_exports, {
23
23
  ANTHROPIC_MODELS: () => ANTHROPIC_MODELS,
24
24
  ANTHROPIC_MODEL_IDS: () => ANTHROPIC_MODEL_IDS,
25
25
  FoundryModelNotFoundError: () => FoundryModelNotFoundError,
26
+ GOOGLE_MODELS: () => GOOGLE_MODELS,
27
+ GOOGLE_MODEL_IDS: () => GOOGLE_MODEL_IDS,
26
28
  MODEL_CATALOG: () => MODEL_CATALOG,
27
29
  MODEL_CATALOG_BY_RID: () => MODEL_CATALOG_BY_RID,
28
30
  OPENAI_MODELS: () => OPENAI_MODELS,
@@ -145,6 +147,55 @@ var ANTHROPIC_MODELS = {
145
147
  )
146
148
  };
147
149
 
150
+ // src/models/google-models.ts
151
+ function createGoogleModel(rid, displayName, lifecycle) {
152
+ return {
153
+ rid,
154
+ provider: "google",
155
+ displayName,
156
+ supportsVision: true,
157
+ supportsResponses: false,
158
+ lifecycle
159
+ };
160
+ }
161
+ var GOOGLE_MODELS = {
162
+ "gemini-2.5-pro": createGoogleModel(
163
+ "ri.language-model-service..language-model.gemini-2-5-pro",
164
+ "Gemini 2.5 Pro",
165
+ "ga"
166
+ ),
167
+ "gemini-2.5-flash": createGoogleModel(
168
+ "ri.language-model-service..language-model.gemini-2-5-flash",
169
+ "Gemini 2.5 Flash",
170
+ "ga"
171
+ ),
172
+ "gemini-2.5-flash-lite": createGoogleModel(
173
+ "ri.language-model-service..language-model.gemini-2-5-flash-lite",
174
+ "Gemini 2.5 Flash Lite",
175
+ "ga"
176
+ ),
177
+ "gemini-3-pro": createGoogleModel(
178
+ "ri.language-model-service..language-model.gemini-3-pro",
179
+ "Gemini 3 Pro (Preview)",
180
+ "sunset"
181
+ ),
182
+ "gemini-3-flash": createGoogleModel(
183
+ "ri.language-model-service..language-model.gemini-3-flash",
184
+ "Gemini 3 Flash (Preview)",
185
+ "ga"
186
+ ),
187
+ "gemini-3.1-pro": createGoogleModel(
188
+ "ri.language-model-service..language-model.gemini-3-1-pro",
189
+ "Gemini 3.1 Pro (Preview)",
190
+ "ga"
191
+ ),
192
+ "gemini-3.1-flash-lite": createGoogleModel(
193
+ "ri.language-model-service..language-model.gemini-3-1-flash-lite",
194
+ "Gemini 3.1 Flash Lite (Preview)",
195
+ "experimental"
196
+ )
197
+ };
198
+
148
199
  // src/models/openai-models.ts
149
200
  function createOpenAIModel(rid, displayName, {
150
201
  lifecycle,
@@ -240,7 +291,8 @@ var OPENAI_REASONING_MODEL_TARGETS = /* @__PURE__ */ new Set([
240
291
  // src/models/catalog.ts
241
292
  var MODEL_CATALOG = {
242
293
  ...OPENAI_MODELS,
243
- ...ANTHROPIC_MODELS
294
+ ...ANTHROPIC_MODELS,
295
+ ...GOOGLE_MODELS
244
296
  };
245
297
  var MODEL_CATALOG_BY_RID = Object.fromEntries(
246
298
  Object.values(MODEL_CATALOG).map((metadata) => [metadata.rid, metadata])
@@ -306,11 +358,22 @@ var ANTHROPIC_MODEL_IDS = [
306
358
  "claude-sonnet-4.5",
307
359
  "claude-sonnet-4.6"
308
360
  ];
361
+ var GOOGLE_MODEL_IDS = [
362
+ "gemini-2.5-pro",
363
+ "gemini-2.5-flash",
364
+ "gemini-2.5-flash-lite",
365
+ "gemini-3-pro",
366
+ "gemini-3-flash",
367
+ "gemini-3.1-pro",
368
+ "gemini-3.1-flash-lite"
369
+ ];
309
370
  // Annotate the CommonJS export names for ESM import in node:
310
371
  0 && (module.exports = {
311
372
  ANTHROPIC_MODELS,
312
373
  ANTHROPIC_MODEL_IDS,
313
374
  FoundryModelNotFoundError,
375
+ GOOGLE_MODELS,
376
+ GOOGLE_MODEL_IDS,
314
377
  MODEL_CATALOG,
315
378
  MODEL_CATALOG_BY_RID,
316
379
  OPENAI_MODELS,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/config.ts","../src/errors.ts","../src/models/anthropic-models.ts","../src/models/openai-models.ts","../src/models/catalog.ts","../src/types.ts"],"sourcesContent":["export { loadFoundryConfig } from './config.js';\nexport { FoundryModelNotFoundError } from './errors.js';\nexport { ANTHROPIC_MODELS } from './models/anthropic-models.js';\nexport {\n getModelMetadata,\n hasKnownModel,\n MODEL_CATALOG,\n MODEL_CATALOG_BY_RID,\n resolveKnownModelMetadata,\n resolveModelProvider,\n resolveModelRid,\n resolveModelTarget,\n} from './models/catalog.js';\nexport { OPENAI_MODELS } from './models/openai-models.js';\nexport type {\n AnthropicModelId,\n FoundryConfig,\n KnownAnthropicModelId,\n KnownModelId,\n KnownOpenAIModelId,\n ModelLifecycle,\n ModelMetadata,\n ModelProvider,\n OpenAIModelId,\n ResolvedModelTarget,\n} from './types.js';\nexport { ANTHROPIC_MODEL_IDS, OPENAI_MODEL_IDS } from './types.js';\n","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","export interface FoundryConfig {\n foundryUrl: string;\n token: string;\n attributionRid?: string;\n}\n\nexport const OPENAI_MODEL_IDS = [\n 'gpt-4.1',\n 'gpt-4.1-mini',\n 'gpt-4.1-nano',\n 'gpt-4o',\n 'gpt-4o-mini',\n 'gpt-5',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'gpt-5-nano',\n 'gpt-5.1',\n 'gpt-5.1-codex',\n 'gpt-5.1-codex-mini',\n 'gpt-5.2',\n 'gpt-5.4',\n 'o3',\n 'o4-mini',\n] as const;\n\nexport type KnownOpenAIModelId = (typeof OPENAI_MODEL_IDS)[number];\n\nexport type OpenAIModelId = KnownOpenAIModelId | (string & {});\n\nexport const ANTHROPIC_MODEL_IDS = [\n 'claude-3.5-haiku',\n 'claude-3.7-sonnet',\n 'claude-haiku-4.5',\n 'claude-opus-4',\n 'claude-opus-4.1',\n 'claude-opus-4.5',\n 'claude-opus-4.6',\n 'claude-sonnet-4',\n 'claude-sonnet-4.5',\n 'claude-sonnet-4.6',\n] as const;\n\nexport type KnownAnthropicModelId = (typeof ANTHROPIC_MODEL_IDS)[number];\n\nexport type AnthropicModelId = KnownAnthropicModelId | (string & {});\n\nexport type KnownModelId = KnownOpenAIModelId | KnownAnthropicModelId;\n\nexport type ModelProvider = 'openai' | 'anthropic';\nexport type ModelLifecycle = 'ga' | 'experimental' | 'deprecated';\n\nexport interface ModelMetadata {\n rid: string;\n provider: ModelProvider;\n displayName: string;\n supportsVision: boolean;\n supportsResponses: boolean;\n lifecycle: ModelLifecycle;\n}\n\nexport interface ResolvedModelTarget {\n rid: string;\n metadata?: ModelMetadata;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/config.ts","../src/errors.ts","../src/models/anthropic-models.ts","../src/models/google-models.ts","../src/models/openai-models.ts","../src/models/catalog.ts","../src/types.ts"],"sourcesContent":["export { loadFoundryConfig } from './config.js';\nexport { FoundryModelNotFoundError } from './errors.js';\nexport { ANTHROPIC_MODELS } from './models/anthropic-models.js';\nexport {\n getModelMetadata,\n hasKnownModel,\n MODEL_CATALOG,\n MODEL_CATALOG_BY_RID,\n resolveKnownModelMetadata,\n resolveModelProvider,\n resolveModelRid,\n resolveModelTarget,\n} from './models/catalog.js';\nexport { GOOGLE_MODELS } from './models/google-models.js';\nexport { OPENAI_MODELS } from './models/openai-models.js';\nexport type {\n AnthropicModelId,\n FoundryConfig,\n GoogleModelId,\n KnownAnthropicModelId,\n KnownGoogleModelId,\n KnownModelId,\n KnownOpenAIModelId,\n ModelLifecycle,\n ModelMetadata,\n ModelProvider,\n OpenAIModelId,\n ResolvedModelTarget,\n} from './types.js';\nexport { ANTHROPIC_MODEL_IDS, GOOGLE_MODEL_IDS, OPENAI_MODEL_IDS } from './types.js';\n","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 { KnownGoogleModelId, ModelLifecycle, ModelMetadata } from '../types.js';\n\nfunction createGoogleModel(\n rid: string,\n displayName: string,\n lifecycle: ModelLifecycle,\n): ModelMetadata {\n return {\n rid,\n provider: 'google',\n displayName,\n supportsVision: true,\n supportsResponses: false,\n lifecycle,\n };\n}\n\nexport const GOOGLE_MODELS = {\n 'gemini-2.5-pro': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-2-5-pro',\n 'Gemini 2.5 Pro',\n 'ga',\n ),\n 'gemini-2.5-flash': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-2-5-flash',\n 'Gemini 2.5 Flash',\n 'ga',\n ),\n 'gemini-2.5-flash-lite': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-2-5-flash-lite',\n 'Gemini 2.5 Flash Lite',\n 'ga',\n ),\n 'gemini-3-pro': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-3-pro',\n 'Gemini 3 Pro (Preview)',\n 'sunset',\n ),\n 'gemini-3-flash': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-3-flash',\n 'Gemini 3 Flash (Preview)',\n 'ga',\n ),\n 'gemini-3.1-pro': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-3-1-pro',\n 'Gemini 3.1 Pro (Preview)',\n 'ga',\n ),\n 'gemini-3.1-flash-lite': createGoogleModel(\n 'ri.language-model-service..language-model.gemini-3-1-flash-lite',\n 'Gemini 3.1 Flash Lite (Preview)',\n 'experimental',\n ),\n} as const satisfies Record<KnownGoogleModelId, 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 { GOOGLE_MODELS } from './google-models.js';\nimport { OPENAI_MODELS } from './openai-models.js';\n\nexport const MODEL_CATALOG = {\n ...OPENAI_MODELS,\n ...ANTHROPIC_MODELS,\n ...GOOGLE_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","export interface FoundryConfig {\n foundryUrl: string;\n token: string;\n attributionRid?: string;\n}\n\nexport const OPENAI_MODEL_IDS = [\n 'gpt-4.1',\n 'gpt-4.1-mini',\n 'gpt-4.1-nano',\n 'gpt-4o',\n 'gpt-4o-mini',\n 'gpt-5',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'gpt-5-nano',\n 'gpt-5.1',\n 'gpt-5.1-codex',\n 'gpt-5.1-codex-mini',\n 'gpt-5.2',\n 'gpt-5.4',\n 'o3',\n 'o4-mini',\n] as const;\n\nexport type KnownOpenAIModelId = (typeof OPENAI_MODEL_IDS)[number];\n\nexport type OpenAIModelId = KnownOpenAIModelId | (string & {});\n\nexport const ANTHROPIC_MODEL_IDS = [\n 'claude-3.5-haiku',\n 'claude-3.7-sonnet',\n 'claude-haiku-4.5',\n 'claude-opus-4',\n 'claude-opus-4.1',\n 'claude-opus-4.5',\n 'claude-opus-4.6',\n 'claude-sonnet-4',\n 'claude-sonnet-4.5',\n 'claude-sonnet-4.6',\n] as const;\n\nexport type KnownAnthropicModelId = (typeof ANTHROPIC_MODEL_IDS)[number];\n\nexport type AnthropicModelId = KnownAnthropicModelId | (string & {});\n\nexport const GOOGLE_MODEL_IDS = [\n 'gemini-2.5-pro',\n 'gemini-2.5-flash',\n 'gemini-2.5-flash-lite',\n 'gemini-3-pro',\n 'gemini-3-flash',\n 'gemini-3.1-pro',\n 'gemini-3.1-flash-lite',\n] as const;\n\nexport type KnownGoogleModelId = (typeof GOOGLE_MODEL_IDS)[number];\n\nexport type GoogleModelId = KnownGoogleModelId | (string & {});\n\nexport type KnownModelId = KnownOpenAIModelId | KnownAnthropicModelId | KnownGoogleModelId;\n\nexport type ModelProvider = 'openai' | 'anthropic' | 'google';\nexport type ModelLifecycle = 'ga' | 'experimental' | 'sunset' | 'deprecated';\n\nexport interface ModelMetadata {\n rid: string;\n provider: ModelProvider;\n displayName: string;\n supportsVision: boolean;\n supportsResponses: boolean;\n lifecycle: ModelLifecycle;\n}\n\nexport interface ResolvedModelTarget {\n rid: string;\n metadata?: ModelMetadata;\n}\n"],"mappings":"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","names":[]}
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as FoundryConfig, M as ModelMetadata, K as KnownModelId, a as ModelProvider, R as ResolvedModelTarget } from './types-cG4EwdjA.cjs';
2
- export { A as ANTHROPIC_MODEL_IDS, b as AnthropicModelId, c as KnownAnthropicModelId, d as KnownOpenAIModelId, e as ModelLifecycle, O as OPENAI_MODEL_IDS, f as OpenAIModelId } from './types-cG4EwdjA.cjs';
1
+ import { F as FoundryConfig, M as ModelMetadata, K as KnownModelId, a as ModelProvider, R as ResolvedModelTarget } from './types-Dxb5JHjl.cjs';
2
+ export { A as ANTHROPIC_MODEL_IDS, b as AnthropicModelId, G as GOOGLE_MODEL_IDS, c as GoogleModelId, d as KnownAnthropicModelId, e as KnownGoogleModelId, f as KnownOpenAIModelId, g as ModelLifecycle, O as OPENAI_MODEL_IDS, h as OpenAIModelId } from './types-Dxb5JHjl.cjs';
3
3
 
4
4
  declare function loadFoundryConfig(env?: NodeJS.ProcessEnv): FoundryConfig;
5
5
 
@@ -21,6 +21,13 @@ declare const ANTHROPIC_MODELS: {
21
21
  };
22
22
 
23
23
  declare const MODEL_CATALOG: {
24
+ readonly 'gemini-2.5-pro': ModelMetadata;
25
+ readonly 'gemini-2.5-flash': ModelMetadata;
26
+ readonly 'gemini-2.5-flash-lite': ModelMetadata;
27
+ readonly 'gemini-3-pro': ModelMetadata;
28
+ readonly 'gemini-3-flash': ModelMetadata;
29
+ readonly 'gemini-3.1-pro': ModelMetadata;
30
+ readonly 'gemini-3.1-flash-lite': ModelMetadata;
24
31
  readonly 'claude-3.5-haiku': ModelMetadata;
25
32
  readonly 'claude-3.7-sonnet': ModelMetadata;
26
33
  readonly 'claude-haiku-4.5': ModelMetadata;
@@ -56,6 +63,16 @@ declare function resolveKnownModelMetadata(modelId: string): ModelMetadata;
56
63
  declare function resolveModelRid(modelId: string): string;
57
64
  declare function resolveModelProvider(modelId: string): ModelProvider;
58
65
 
66
+ declare const GOOGLE_MODELS: {
67
+ readonly 'gemini-2.5-pro': ModelMetadata;
68
+ readonly 'gemini-2.5-flash': ModelMetadata;
69
+ readonly 'gemini-2.5-flash-lite': ModelMetadata;
70
+ readonly 'gemini-3-pro': ModelMetadata;
71
+ readonly 'gemini-3-flash': ModelMetadata;
72
+ readonly 'gemini-3.1-pro': ModelMetadata;
73
+ readonly 'gemini-3.1-flash-lite': ModelMetadata;
74
+ };
75
+
59
76
  declare const OPENAI_MODELS: {
60
77
  readonly 'gpt-4.1': ModelMetadata;
61
78
  readonly 'gpt-4.1-mini': ModelMetadata;
@@ -75,4 +92,4 @@ declare const OPENAI_MODELS: {
75
92
  readonly 'o4-mini': ModelMetadata;
76
93
  };
77
94
 
78
- export { ANTHROPIC_MODELS, FoundryConfig, FoundryModelNotFoundError, KnownModelId, MODEL_CATALOG, MODEL_CATALOG_BY_RID, ModelMetadata, ModelProvider, OPENAI_MODELS, ResolvedModelTarget, getModelMetadata, hasKnownModel, loadFoundryConfig, resolveKnownModelMetadata, resolveModelProvider, resolveModelRid, resolveModelTarget };
95
+ export { ANTHROPIC_MODELS, FoundryConfig, FoundryModelNotFoundError, GOOGLE_MODELS, KnownModelId, MODEL_CATALOG, MODEL_CATALOG_BY_RID, ModelMetadata, ModelProvider, OPENAI_MODELS, ResolvedModelTarget, getModelMetadata, hasKnownModel, loadFoundryConfig, resolveKnownModelMetadata, resolveModelProvider, resolveModelRid, resolveModelTarget };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as FoundryConfig, M as ModelMetadata, K as KnownModelId, a as ModelProvider, R as ResolvedModelTarget } from './types-cG4EwdjA.js';
2
- export { A as ANTHROPIC_MODEL_IDS, b as AnthropicModelId, c as KnownAnthropicModelId, d as KnownOpenAIModelId, e as ModelLifecycle, O as OPENAI_MODEL_IDS, f as OpenAIModelId } from './types-cG4EwdjA.js';
1
+ import { F as FoundryConfig, M as ModelMetadata, K as KnownModelId, a as ModelProvider, R as ResolvedModelTarget } from './types-Dxb5JHjl.js';
2
+ export { A as ANTHROPIC_MODEL_IDS, b as AnthropicModelId, G as GOOGLE_MODEL_IDS, c as GoogleModelId, d as KnownAnthropicModelId, e as KnownGoogleModelId, f as KnownOpenAIModelId, g as ModelLifecycle, O as OPENAI_MODEL_IDS, h as OpenAIModelId } from './types-Dxb5JHjl.js';
3
3
 
4
4
  declare function loadFoundryConfig(env?: NodeJS.ProcessEnv): FoundryConfig;
5
5
 
@@ -21,6 +21,13 @@ declare const ANTHROPIC_MODELS: {
21
21
  };
22
22
 
23
23
  declare const MODEL_CATALOG: {
24
+ readonly 'gemini-2.5-pro': ModelMetadata;
25
+ readonly 'gemini-2.5-flash': ModelMetadata;
26
+ readonly 'gemini-2.5-flash-lite': ModelMetadata;
27
+ readonly 'gemini-3-pro': ModelMetadata;
28
+ readonly 'gemini-3-flash': ModelMetadata;
29
+ readonly 'gemini-3.1-pro': ModelMetadata;
30
+ readonly 'gemini-3.1-flash-lite': ModelMetadata;
24
31
  readonly 'claude-3.5-haiku': ModelMetadata;
25
32
  readonly 'claude-3.7-sonnet': ModelMetadata;
26
33
  readonly 'claude-haiku-4.5': ModelMetadata;
@@ -56,6 +63,16 @@ declare function resolveKnownModelMetadata(modelId: string): ModelMetadata;
56
63
  declare function resolveModelRid(modelId: string): string;
57
64
  declare function resolveModelProvider(modelId: string): ModelProvider;
58
65
 
66
+ declare const GOOGLE_MODELS: {
67
+ readonly 'gemini-2.5-pro': ModelMetadata;
68
+ readonly 'gemini-2.5-flash': ModelMetadata;
69
+ readonly 'gemini-2.5-flash-lite': ModelMetadata;
70
+ readonly 'gemini-3-pro': ModelMetadata;
71
+ readonly 'gemini-3-flash': ModelMetadata;
72
+ readonly 'gemini-3.1-pro': ModelMetadata;
73
+ readonly 'gemini-3.1-flash-lite': ModelMetadata;
74
+ };
75
+
59
76
  declare const OPENAI_MODELS: {
60
77
  readonly 'gpt-4.1': ModelMetadata;
61
78
  readonly 'gpt-4.1-mini': ModelMetadata;
@@ -75,4 +92,4 @@ declare const OPENAI_MODELS: {
75
92
  readonly 'o4-mini': ModelMetadata;
76
93
  };
77
94
 
78
- export { ANTHROPIC_MODELS, FoundryConfig, FoundryModelNotFoundError, KnownModelId, MODEL_CATALOG, MODEL_CATALOG_BY_RID, ModelMetadata, ModelProvider, OPENAI_MODELS, ResolvedModelTarget, getModelMetadata, hasKnownModel, loadFoundryConfig, resolveKnownModelMetadata, resolveModelProvider, resolveModelRid, resolveModelTarget };
95
+ export { ANTHROPIC_MODELS, FoundryConfig, FoundryModelNotFoundError, GOOGLE_MODELS, KnownModelId, MODEL_CATALOG, MODEL_CATALOG_BY_RID, ModelMetadata, ModelProvider, OPENAI_MODELS, ResolvedModelTarget, getModelMetadata, hasKnownModel, loadFoundryConfig, resolveKnownModelMetadata, resolveModelProvider, resolveModelRid, resolveModelTarget };
package/dist/index.mjs CHANGED
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  ANTHROPIC_MODELS,
3
3
  FoundryModelNotFoundError,
4
+ GOOGLE_MODELS,
4
5
  MODEL_CATALOG,
5
6
  MODEL_CATALOG_BY_RID,
6
7
  OPENAI_MODELS,
@@ -11,7 +12,7 @@ import {
11
12
  resolveModelProvider,
12
13
  resolveModelRid,
13
14
  resolveModelTarget
14
- } from "./chunk-5SYKCKOX.mjs";
15
+ } from "./chunk-QPX75PWC.mjs";
15
16
 
16
17
  // src/types.ts
17
18
  var OPENAI_MODEL_IDS = [
@@ -44,10 +45,21 @@ var ANTHROPIC_MODEL_IDS = [
44
45
  "claude-sonnet-4.5",
45
46
  "claude-sonnet-4.6"
46
47
  ];
48
+ var GOOGLE_MODEL_IDS = [
49
+ "gemini-2.5-pro",
50
+ "gemini-2.5-flash",
51
+ "gemini-2.5-flash-lite",
52
+ "gemini-3-pro",
53
+ "gemini-3-flash",
54
+ "gemini-3.1-pro",
55
+ "gemini-3.1-flash-lite"
56
+ ];
47
57
  export {
48
58
  ANTHROPIC_MODELS,
49
59
  ANTHROPIC_MODEL_IDS,
50
60
  FoundryModelNotFoundError,
61
+ GOOGLE_MODELS,
62
+ GOOGLE_MODEL_IDS,
51
63
  MODEL_CATALOG,
52
64
  MODEL_CATALOG_BY_RID,
53
65
  OPENAI_MODELS,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts"],"sourcesContent":["export interface FoundryConfig {\n foundryUrl: string;\n token: string;\n attributionRid?: string;\n}\n\nexport const OPENAI_MODEL_IDS = [\n 'gpt-4.1',\n 'gpt-4.1-mini',\n 'gpt-4.1-nano',\n 'gpt-4o',\n 'gpt-4o-mini',\n 'gpt-5',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'gpt-5-nano',\n 'gpt-5.1',\n 'gpt-5.1-codex',\n 'gpt-5.1-codex-mini',\n 'gpt-5.2',\n 'gpt-5.4',\n 'o3',\n 'o4-mini',\n] as const;\n\nexport type KnownOpenAIModelId = (typeof OPENAI_MODEL_IDS)[number];\n\nexport type OpenAIModelId = KnownOpenAIModelId | (string & {});\n\nexport const ANTHROPIC_MODEL_IDS = [\n 'claude-3.5-haiku',\n 'claude-3.7-sonnet',\n 'claude-haiku-4.5',\n 'claude-opus-4',\n 'claude-opus-4.1',\n 'claude-opus-4.5',\n 'claude-opus-4.6',\n 'claude-sonnet-4',\n 'claude-sonnet-4.5',\n 'claude-sonnet-4.6',\n] as const;\n\nexport type KnownAnthropicModelId = (typeof ANTHROPIC_MODEL_IDS)[number];\n\nexport type AnthropicModelId = KnownAnthropicModelId | (string & {});\n\nexport type KnownModelId = KnownOpenAIModelId | KnownAnthropicModelId;\n\nexport type ModelProvider = 'openai' | 'anthropic';\nexport type ModelLifecycle = 'ga' | 'experimental' | 'deprecated';\n\nexport interface ModelMetadata {\n rid: string;\n provider: ModelProvider;\n displayName: string;\n supportsVision: boolean;\n supportsResponses: boolean;\n lifecycle: ModelLifecycle;\n}\n\nexport interface ResolvedModelTarget {\n rid: string;\n metadata?: ModelMetadata;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAMO,IAAM,mBAAmB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAMO,IAAM,sBAAsB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["export interface FoundryConfig {\n foundryUrl: string;\n token: string;\n attributionRid?: string;\n}\n\nexport const OPENAI_MODEL_IDS = [\n 'gpt-4.1',\n 'gpt-4.1-mini',\n 'gpt-4.1-nano',\n 'gpt-4o',\n 'gpt-4o-mini',\n 'gpt-5',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'gpt-5-nano',\n 'gpt-5.1',\n 'gpt-5.1-codex',\n 'gpt-5.1-codex-mini',\n 'gpt-5.2',\n 'gpt-5.4',\n 'o3',\n 'o4-mini',\n] as const;\n\nexport type KnownOpenAIModelId = (typeof OPENAI_MODEL_IDS)[number];\n\nexport type OpenAIModelId = KnownOpenAIModelId | (string & {});\n\nexport const ANTHROPIC_MODEL_IDS = [\n 'claude-3.5-haiku',\n 'claude-3.7-sonnet',\n 'claude-haiku-4.5',\n 'claude-opus-4',\n 'claude-opus-4.1',\n 'claude-opus-4.5',\n 'claude-opus-4.6',\n 'claude-sonnet-4',\n 'claude-sonnet-4.5',\n 'claude-sonnet-4.6',\n] as const;\n\nexport type KnownAnthropicModelId = (typeof ANTHROPIC_MODEL_IDS)[number];\n\nexport type AnthropicModelId = KnownAnthropicModelId | (string & {});\n\nexport const GOOGLE_MODEL_IDS = [\n 'gemini-2.5-pro',\n 'gemini-2.5-flash',\n 'gemini-2.5-flash-lite',\n 'gemini-3-pro',\n 'gemini-3-flash',\n 'gemini-3.1-pro',\n 'gemini-3.1-flash-lite',\n] as const;\n\nexport type KnownGoogleModelId = (typeof GOOGLE_MODEL_IDS)[number];\n\nexport type GoogleModelId = KnownGoogleModelId | (string & {});\n\nexport type KnownModelId = KnownOpenAIModelId | KnownAnthropicModelId | KnownGoogleModelId;\n\nexport type ModelProvider = 'openai' | 'anthropic' | 'google';\nexport type ModelLifecycle = 'ga' | 'experimental' | 'sunset' | 'deprecated';\n\nexport interface ModelMetadata {\n rid: string;\n provider: ModelProvider;\n displayName: string;\n supportsVision: boolean;\n supportsResponses: boolean;\n lifecycle: ModelLifecycle;\n}\n\nexport interface ResolvedModelTarget {\n rid: string;\n metadata?: ModelMetadata;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAMO,IAAM,mBAAmB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAMO,IAAM,sBAAsB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAMO,IAAM,mBAAmB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
@@ -133,6 +133,55 @@ var ANTHROPIC_MODELS = {
133
133
  )
134
134
  };
135
135
 
136
+ // src/models/google-models.ts
137
+ function createGoogleModel(rid, displayName, lifecycle) {
138
+ return {
139
+ rid,
140
+ provider: "google",
141
+ displayName,
142
+ supportsVision: true,
143
+ supportsResponses: false,
144
+ lifecycle
145
+ };
146
+ }
147
+ var GOOGLE_MODELS = {
148
+ "gemini-2.5-pro": createGoogleModel(
149
+ "ri.language-model-service..language-model.gemini-2-5-pro",
150
+ "Gemini 2.5 Pro",
151
+ "ga"
152
+ ),
153
+ "gemini-2.5-flash": createGoogleModel(
154
+ "ri.language-model-service..language-model.gemini-2-5-flash",
155
+ "Gemini 2.5 Flash",
156
+ "ga"
157
+ ),
158
+ "gemini-2.5-flash-lite": createGoogleModel(
159
+ "ri.language-model-service..language-model.gemini-2-5-flash-lite",
160
+ "Gemini 2.5 Flash Lite",
161
+ "ga"
162
+ ),
163
+ "gemini-3-pro": createGoogleModel(
164
+ "ri.language-model-service..language-model.gemini-3-pro",
165
+ "Gemini 3 Pro (Preview)",
166
+ "sunset"
167
+ ),
168
+ "gemini-3-flash": createGoogleModel(
169
+ "ri.language-model-service..language-model.gemini-3-flash",
170
+ "Gemini 3 Flash (Preview)",
171
+ "ga"
172
+ ),
173
+ "gemini-3.1-pro": createGoogleModel(
174
+ "ri.language-model-service..language-model.gemini-3-1-pro",
175
+ "Gemini 3.1 Pro (Preview)",
176
+ "ga"
177
+ ),
178
+ "gemini-3.1-flash-lite": createGoogleModel(
179
+ "ri.language-model-service..language-model.gemini-3-1-flash-lite",
180
+ "Gemini 3.1 Flash Lite (Preview)",
181
+ "experimental"
182
+ )
183
+ };
184
+
136
185
  // src/models/openai-models.ts
137
186
  function createOpenAIModel(rid, displayName, {
138
187
  lifecycle,
@@ -228,7 +277,8 @@ var OPENAI_REASONING_MODEL_TARGETS = /* @__PURE__ */ new Set([
228
277
  // src/models/catalog.ts
229
278
  var MODEL_CATALOG = {
230
279
  ...OPENAI_MODELS,
231
- ...ANTHROPIC_MODELS
280
+ ...ANTHROPIC_MODELS,
281
+ ...GOOGLE_MODELS
232
282
  };
233
283
  var MODEL_CATALOG_BY_RID = Object.fromEntries(
234
284
  Object.values(MODEL_CATALOG).map((metadata) => [metadata.rid, metadata])