vertex-ai-proxy 1.2.0 → 1.3.0
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/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +355 -51
- package/dist/cli.js.map +1 -1
- package/dist/discover.d.ts +19 -0
- package/dist/discover.d.ts.map +1 -0
- package/dist/discover.js +99 -0
- package/dist/discover.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +284 -36
- package/dist/index.js.map +1 -1
- package/dist/regions.d.ts +54 -0
- package/dist/regions.d.ts.map +1 -0
- package/dist/regions.js +328 -0
- package/dist/regions.js.map +1 -0
- package/package.json +1 -1
package/dist/regions.js
ADDED
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vertex AI Model Region Discovery v2
|
|
3
|
+
*
|
|
4
|
+
* Discovers which Claude models are available in which regions
|
|
5
|
+
* by testing each known model in each region.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import * as os from 'os';
|
|
10
|
+
import { GoogleAuth } from 'google-auth-library';
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Constants
|
|
13
|
+
// ============================================================================
|
|
14
|
+
const DATA_DIR = path.join(os.homedir(), '.vertex_proxy');
|
|
15
|
+
const CACHE_FILE = path.join(DATA_DIR, 'model-regions.json');
|
|
16
|
+
const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
17
|
+
// All known Vertex AI regions that support Claude
|
|
18
|
+
export const ALL_REGIONS = [
|
|
19
|
+
'us-central1',
|
|
20
|
+
'us-east1',
|
|
21
|
+
'us-east4',
|
|
22
|
+
'us-east5',
|
|
23
|
+
'us-south1',
|
|
24
|
+
'us-west1',
|
|
25
|
+
'us-west4',
|
|
26
|
+
'europe-west1',
|
|
27
|
+
'europe-west2',
|
|
28
|
+
'europe-west3',
|
|
29
|
+
'europe-west4',
|
|
30
|
+
'europe-west9',
|
|
31
|
+
'asia-east1',
|
|
32
|
+
'asia-east2',
|
|
33
|
+
'asia-northeast1',
|
|
34
|
+
'asia-northeast3',
|
|
35
|
+
'asia-south1',
|
|
36
|
+
'asia-southeast1',
|
|
37
|
+
'australia-southeast1',
|
|
38
|
+
'me-central1',
|
|
39
|
+
'me-west1',
|
|
40
|
+
'northamerica-northeast1',
|
|
41
|
+
'southamerica-east1'
|
|
42
|
+
];
|
|
43
|
+
// Known Claude model versions to check
|
|
44
|
+
export const CLAUDE_MODELS = [
|
|
45
|
+
'claude-opus-4-5@20251101',
|
|
46
|
+
'claude-sonnet-4-5@20250929',
|
|
47
|
+
'claude-sonnet-4@20250514',
|
|
48
|
+
'claude-haiku-4-5@20251001',
|
|
49
|
+
'claude-opus-4@20250410',
|
|
50
|
+
'claude-3-5-sonnet-v2@20241022',
|
|
51
|
+
'claude-3-5-sonnet@20240620',
|
|
52
|
+
'claude-3-5-haiku@20241022',
|
|
53
|
+
'claude-3-opus@20240229',
|
|
54
|
+
'claude-3-sonnet@20240229',
|
|
55
|
+
'claude-3-haiku@20240307'
|
|
56
|
+
];
|
|
57
|
+
// Gemini models - usually available in different regions
|
|
58
|
+
export const GEMINI_MODELS = [
|
|
59
|
+
'gemini-3-pro-preview',
|
|
60
|
+
'gemini-3-pro-image-preview',
|
|
61
|
+
'gemini-2.5-pro',
|
|
62
|
+
'gemini-2.5-flash',
|
|
63
|
+
'gemini-2.5-flash-lite',
|
|
64
|
+
'gemini-2.0-flash',
|
|
65
|
+
'gemini-1.5-pro',
|
|
66
|
+
'gemini-1.5-flash'
|
|
67
|
+
];
|
|
68
|
+
// ============================================================================
|
|
69
|
+
// Cache Management
|
|
70
|
+
// ============================================================================
|
|
71
|
+
function ensureDataDir() {
|
|
72
|
+
if (!fs.existsSync(DATA_DIR)) {
|
|
73
|
+
fs.mkdirSync(DATA_DIR, { recursive: true });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export function loadRegionCache() {
|
|
77
|
+
try {
|
|
78
|
+
if (fs.existsSync(CACHE_FILE)) {
|
|
79
|
+
const data = JSON.parse(fs.readFileSync(CACHE_FILE, 'utf8'));
|
|
80
|
+
return data;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (e) { }
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
export function saveRegionCache(cache) {
|
|
87
|
+
ensureDataDir();
|
|
88
|
+
fs.writeFileSync(CACHE_FILE, JSON.stringify(cache, null, 2));
|
|
89
|
+
}
|
|
90
|
+
export function isCacheValid(cache, projectId) {
|
|
91
|
+
if (!cache)
|
|
92
|
+
return false;
|
|
93
|
+
if (cache.projectId !== projectId)
|
|
94
|
+
return false;
|
|
95
|
+
if (Date.now() - cache.lastUpdated > CACHE_TTL_MS)
|
|
96
|
+
return false;
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
// ============================================================================
|
|
100
|
+
// Model Discovery
|
|
101
|
+
// ============================================================================
|
|
102
|
+
async function getAccessToken() {
|
|
103
|
+
const auth = new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/cloud-platform' });
|
|
104
|
+
const client = await auth.getClient();
|
|
105
|
+
const tokenResponse = await client.getAccessToken();
|
|
106
|
+
return tokenResponse.token || '';
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check if a Claude model is available in a specific region
|
|
110
|
+
* by attempting a minimal API call
|
|
111
|
+
*/
|
|
112
|
+
async function checkClaudeModelInRegion(projectId, region, modelId, accessToken) {
|
|
113
|
+
// Try to make a minimal rawPredict call with very small input
|
|
114
|
+
const url = `https://${region}-aiplatform.googleapis.com/v1/projects/${projectId}/locations/${region}/publishers/anthropic/models/${modelId}:rawPredict`;
|
|
115
|
+
const testRequest = {
|
|
116
|
+
anthropic_version: 'vertex-2023-10-16',
|
|
117
|
+
max_tokens: 1,
|
|
118
|
+
messages: [{ role: 'user', content: 'hi' }]
|
|
119
|
+
};
|
|
120
|
+
try {
|
|
121
|
+
const response = await fetch(url, {
|
|
122
|
+
method: 'POST',
|
|
123
|
+
headers: {
|
|
124
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
125
|
+
'Content-Type': 'application/json'
|
|
126
|
+
},
|
|
127
|
+
body: JSON.stringify(testRequest),
|
|
128
|
+
signal: AbortSignal.timeout(15000)
|
|
129
|
+
});
|
|
130
|
+
// Model is available if we get a successful response OR a rate limit error
|
|
131
|
+
// (rate limit means the model exists but we hit quota)
|
|
132
|
+
if (response.ok) {
|
|
133
|
+
return { available: true };
|
|
134
|
+
}
|
|
135
|
+
const text = await response.text();
|
|
136
|
+
// Rate limit or quota exceeded = model exists
|
|
137
|
+
if (response.status === 429 || text.includes('quota') || text.includes('rate')) {
|
|
138
|
+
return { available: true };
|
|
139
|
+
}
|
|
140
|
+
// Model not found in this region
|
|
141
|
+
if (response.status === 404 ||
|
|
142
|
+
text.includes('not found') ||
|
|
143
|
+
text.includes('does not exist') ||
|
|
144
|
+
text.includes('not supported') ||
|
|
145
|
+
text.includes('is not available')) {
|
|
146
|
+
return { available: false };
|
|
147
|
+
}
|
|
148
|
+
// Permission denied might mean model exists but not enabled
|
|
149
|
+
if (response.status === 403 && text.includes('permission')) {
|
|
150
|
+
return { available: false, error: 'permission_denied' };
|
|
151
|
+
}
|
|
152
|
+
// Other errors - assume not available but log
|
|
153
|
+
return { available: false, error: `${response.status}: ${text.slice(0, 100)}` };
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
if (e.name === 'TimeoutError' || e.message?.includes('timeout')) {
|
|
157
|
+
return { available: false, error: 'timeout' };
|
|
158
|
+
}
|
|
159
|
+
return { available: false, error: e.message?.slice(0, 100) };
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Check if a Gemini model is available in a specific region
|
|
164
|
+
*/
|
|
165
|
+
async function checkGeminiModelInRegion(projectId, region, modelId, accessToken) {
|
|
166
|
+
const url = `https://${region}-aiplatform.googleapis.com/v1/projects/${projectId}/locations/${region}/publishers/google/models/${modelId}:generateContent`;
|
|
167
|
+
const testRequest = {
|
|
168
|
+
contents: [{ role: 'user', parts: [{ text: 'hi' }] }],
|
|
169
|
+
generationConfig: { maxOutputTokens: 1 }
|
|
170
|
+
};
|
|
171
|
+
try {
|
|
172
|
+
const response = await fetch(url, {
|
|
173
|
+
method: 'POST',
|
|
174
|
+
headers: {
|
|
175
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
176
|
+
'Content-Type': 'application/json'
|
|
177
|
+
},
|
|
178
|
+
body: JSON.stringify(testRequest),
|
|
179
|
+
signal: AbortSignal.timeout(15000)
|
|
180
|
+
});
|
|
181
|
+
if (response.ok) {
|
|
182
|
+
return { available: true };
|
|
183
|
+
}
|
|
184
|
+
const text = await response.text();
|
|
185
|
+
if (response.status === 429 || text.includes('quota') || text.includes('rate')) {
|
|
186
|
+
return { available: true };
|
|
187
|
+
}
|
|
188
|
+
if (response.status === 404 || text.includes('not found')) {
|
|
189
|
+
return { available: false };
|
|
190
|
+
}
|
|
191
|
+
return { available: false, error: `${response.status}` };
|
|
192
|
+
}
|
|
193
|
+
catch (e) {
|
|
194
|
+
return { available: false, error: e.message?.slice(0, 50) };
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
export async function discoverModelRegions(options) {
|
|
198
|
+
const { projectId, regions = ALL_REGIONS, models = CLAUDE_MODELS, includeGemini = false, onProgress, concurrency = 3 // Lower concurrency to avoid rate limits
|
|
199
|
+
} = options;
|
|
200
|
+
const accessToken = await getAccessToken();
|
|
201
|
+
const cache = {
|
|
202
|
+
version: 2,
|
|
203
|
+
projectId,
|
|
204
|
+
lastUpdated: Date.now(),
|
|
205
|
+
models: {}
|
|
206
|
+
};
|
|
207
|
+
const allModels = [...models];
|
|
208
|
+
if (includeGemini) {
|
|
209
|
+
allModels.push(...GEMINI_MODELS);
|
|
210
|
+
}
|
|
211
|
+
let completed = 0;
|
|
212
|
+
const total = allModels.length * regions.length;
|
|
213
|
+
// Process each model
|
|
214
|
+
for (const modelId of allModels) {
|
|
215
|
+
const isGemini = GEMINI_MODELS.includes(modelId);
|
|
216
|
+
const availableRegions = [];
|
|
217
|
+
const checkedRegions = [];
|
|
218
|
+
// Check regions in batches
|
|
219
|
+
for (let i = 0; i < regions.length; i += concurrency) {
|
|
220
|
+
const batch = regions.slice(i, i + concurrency);
|
|
221
|
+
const results = await Promise.all(batch.map(async (region) => {
|
|
222
|
+
onProgress?.({
|
|
223
|
+
total,
|
|
224
|
+
completed,
|
|
225
|
+
currentModel: modelId,
|
|
226
|
+
currentRegion: region
|
|
227
|
+
});
|
|
228
|
+
const result = isGemini
|
|
229
|
+
? await checkGeminiModelInRegion(projectId, region, modelId, accessToken)
|
|
230
|
+
: await checkClaudeModelInRegion(projectId, region, modelId, accessToken);
|
|
231
|
+
completed++;
|
|
232
|
+
return { region, available: result.available, error: result.error };
|
|
233
|
+
}));
|
|
234
|
+
for (const { region, available, error } of results) {
|
|
235
|
+
checkedRegions.push(region);
|
|
236
|
+
if (available) {
|
|
237
|
+
availableRegions.push(region);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// Small delay between batches to avoid rate limiting
|
|
241
|
+
await new Promise(resolve => setTimeout(resolve, 200));
|
|
242
|
+
}
|
|
243
|
+
cache.models[modelId] = {
|
|
244
|
+
modelId,
|
|
245
|
+
provider: isGemini ? 'google' : 'anthropic',
|
|
246
|
+
availableRegions,
|
|
247
|
+
checkedRegions,
|
|
248
|
+
lastChecked: Date.now()
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
saveRegionCache(cache);
|
|
252
|
+
return cache;
|
|
253
|
+
}
|
|
254
|
+
// ============================================================================
|
|
255
|
+
// Helper Functions
|
|
256
|
+
// ============================================================================
|
|
257
|
+
/**
|
|
258
|
+
* Get the best region for a model based on cache
|
|
259
|
+
*/
|
|
260
|
+
export function getBestRegion(modelId, preferredRegions) {
|
|
261
|
+
const cache = loadRegionCache();
|
|
262
|
+
if (!cache)
|
|
263
|
+
return null;
|
|
264
|
+
const modelInfo = cache.models[modelId];
|
|
265
|
+
if (!modelInfo || modelInfo.availableRegions.length === 0)
|
|
266
|
+
return null;
|
|
267
|
+
// Prefer requested regions
|
|
268
|
+
if (preferredRegions) {
|
|
269
|
+
for (const region of preferredRegions) {
|
|
270
|
+
if (modelInfo.availableRegions.includes(region)) {
|
|
271
|
+
return region;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// Default priority: us-east5 > us-central1 > europe-west1
|
|
276
|
+
const priority = ['us-east5', 'us-central1', 'europe-west1', 'us-east1'];
|
|
277
|
+
for (const region of priority) {
|
|
278
|
+
if (modelInfo.availableRegions.includes(region)) {
|
|
279
|
+
return region;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return modelInfo.availableRegions[0];
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Get all regions for a model
|
|
286
|
+
*/
|
|
287
|
+
export function getModelRegions(modelId) {
|
|
288
|
+
const cache = loadRegionCache();
|
|
289
|
+
if (!cache)
|
|
290
|
+
return [];
|
|
291
|
+
const modelInfo = cache.models[modelId];
|
|
292
|
+
return modelInfo?.availableRegions || [];
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Format cache for display
|
|
296
|
+
*/
|
|
297
|
+
export function formatCacheForDisplay(cache) {
|
|
298
|
+
const lines = [];
|
|
299
|
+
lines.push(`Model Region Cache (v${cache.version})`);
|
|
300
|
+
lines.push(`${'='.repeat(50)}`);
|
|
301
|
+
lines.push(`Project: ${cache.projectId}`);
|
|
302
|
+
lines.push(`Updated: ${new Date(cache.lastUpdated).toISOString()}`);
|
|
303
|
+
lines.push(`Age: ${Math.round((Date.now() - cache.lastUpdated) / 1000 / 60)} minutes`);
|
|
304
|
+
lines.push(``);
|
|
305
|
+
// Group by provider
|
|
306
|
+
const byProvider = { anthropic: [], google: [] };
|
|
307
|
+
for (const model of Object.values(cache.models)) {
|
|
308
|
+
byProvider[model.provider]?.push(model);
|
|
309
|
+
}
|
|
310
|
+
const providerNames = {
|
|
311
|
+
anthropic: '🤖 Claude Models',
|
|
312
|
+
google: '✨ Gemini Models'
|
|
313
|
+
};
|
|
314
|
+
for (const [provider, models] of Object.entries(byProvider)) {
|
|
315
|
+
if (models.length === 0)
|
|
316
|
+
continue;
|
|
317
|
+
lines.push(`\n${providerNames[provider] || provider}`);
|
|
318
|
+
lines.push(`${'─'.repeat(50)}`);
|
|
319
|
+
for (const model of models.sort((a, b) => a.modelId.localeCompare(b.modelId))) {
|
|
320
|
+
const regionCount = model.availableRegions.length;
|
|
321
|
+
const status = regionCount > 0 ? `✓ ${regionCount} regions` : '✗ not available';
|
|
322
|
+
lines.push(` ${model.modelId}`);
|
|
323
|
+
lines.push(` ${status}: ${model.availableRegions.join(', ') || 'none'}`);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
return lines.join('\n');
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=regions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regions.js","sourceRoot":"","sources":["../src/regions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED