@lastbrain/ai-ui-core 1.0.25 → 1.0.27

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.
@@ -1,6 +1,7 @@
1
- import type { ClientConfig, ModelRef, AiTextRequest, AiTextResponse, AiImageRequest, AiImageResponse, AiEmbedRequest, AiEmbedResponse, AiStatus } from "../types";
1
+ import type { ClientConfig, ModelRef, AiTextRequest, AiTextResponse, AiImageRequest, AiImageResponse, AiEmbedRequest, AiEmbedResponse, AiStatus, GatewayModelsResponse } from "../types";
2
2
  export declare function createClient(config: ClientConfig): {
3
3
  getModels: () => Promise<ModelRef[]>;
4
+ getAllAvailableModels: () => Promise<GatewayModelsResponse>;
4
5
  generateText: (req: AiTextRequest) => Promise<AiTextResponse>;
5
6
  generateImage: (req: AiImageRequest) => Promise<AiImageResponse>;
6
7
  embed: (req: AiEmbedRequest) => Promise<AiEmbedResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"createClient.d.ts","sourceRoot":"","sources":["../../src/client/createClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,QAAQ,EACT,MAAM,UAAU,CAAC;AAoGlB,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY;qBAsBnB,OAAO,CAAC,QAAQ,EAAE,CAAC;wBAqCd,aAAa,KAAG,OAAO,CAAC,cAAc,CAAC;yBAoCtC,cAAc,KAAG,OAAO,CAAC,eAAe,CAAC;iBAqDjD,cAAc,KAAG,OAAO,CAAC,eAAe,CAAC;qBAkBvC,OAAO,CAAC,QAAQ,CAAC;EAyB9C"}
1
+ {"version":3,"file":"createClient.d.ts","sourceRoot":"","sources":["../../src/client/createClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,QAAQ,EACR,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAwGlB,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY;qBAsBnB,OAAO,CAAC,QAAQ,EAAE,CAAC;iCAqKP,OAAO,CAAC,qBAAqB,CAAC;wBAhIrC,aAAa,KAAG,OAAO,CAAC,cAAc,CAAC;yBAoCtC,cAAc,KAAG,OAAO,CAAC,eAAe,CAAC;iBAqDjD,cAAc,KAAG,OAAO,CAAC,eAAe,CAAC;qBAkBvC,OAAO,CAAC,QAAQ,CAAC;EAiD9C"}
@@ -54,6 +54,10 @@ function buildUrl(baseUrl, endpoint) {
54
54
  // Auth endpoints need /auth/ prefix for internal
55
55
  status: { internal: "/auth/status", external: "/status" },
56
56
  provider: { internal: "/auth/provider", external: "/provider" },
57
+ "gateway-models": {
58
+ internal: "/public/gateway-models",
59
+ external: "/gateway-models",
60
+ },
57
61
  // Other endpoints
58
62
  "track-usage": { internal: "/track-usage", external: "/track-usage" },
59
63
  "ai/embed": { internal: "/ai/embed", external: "/ai/embed" },
@@ -218,8 +222,26 @@ export function createClient(config) {
218
222
  throw normalizeError(error);
219
223
  }
220
224
  }
225
+ /**
226
+ * Get ALL available models from Vercel AI Gateway (not filtered by user settings)
227
+ */
228
+ async function getAllAvailableModels() {
229
+ try {
230
+ const url = buildUrl(config.baseUrl, "gateway-models");
231
+ const response = await fetchWithRetry(url, {
232
+ method: "GET",
233
+ headers: createHeaders(),
234
+ signal: createAbortSignal(),
235
+ }, { retries, delay: INITIAL_RETRY_DELAY });
236
+ return response;
237
+ }
238
+ catch (error) {
239
+ throw normalizeError(error);
240
+ }
241
+ }
221
242
  return {
222
243
  getModels,
244
+ getAllAvailableModels,
223
245
  generateText,
224
246
  generateImage,
225
247
  embed,
@@ -1 +1 @@
1
- {"version":3,"file":"enhanced-gateway.d.ts","sourceRoot":"","sources":["../../../src/route-handlers/nextjs/enhanced-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiKxD,wBAAsB,GAAG,CACvB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,8BAGjD;AAED,wBAAsB,IAAI,CACxB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,8BAGjD;AAED,wBAAsB,GAAG,CACvB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,8BAGjD;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,8BAGjD"}
1
+ {"version":3,"file":"enhanced-gateway.d.ts","sourceRoot":"","sources":["../../../src/route-handlers/nextjs/enhanced-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAsKxD,wBAAsB,GAAG,CACvB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,8BAGjD;AAED,wBAAsB,IAAI,CACxB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,8BAGjD;AAED,wBAAsB,GAAG,CACvB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,8BAGjD;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,8BAGjD"}
@@ -27,19 +27,24 @@ function mapAuthRouteToPublicRoute(path) {
27
27
  "auth/prompts/stats": "prompts/stats",
28
28
  prompts: "prompts", // Direct mapping for prompts
29
29
  "prompts/stats": "prompts/stats", // Direct mapping for stats
30
+ // Gateway models - ALL available models from Vercel AI
31
+ "gateway-models": "gateway-models",
32
+ "public/gateway-models": "gateway-models",
30
33
  // AI Models - Available
31
34
  "auth/ai-models-available": "ai/models/available",
32
35
  "ai-models-available": "ai/models/available",
33
36
  "ai/models/available": "ai/models/available", // Direct mapping
34
- // AI Models - User models
37
+ // AI Models - User models (with both slash and dash variants)
35
38
  "auth/ai-models-user": "ai/user/models",
36
39
  "auth/user-models": "ai/user/models",
37
40
  "ai-models-user": "ai/user/models",
38
41
  "user-models": "ai/user/models",
42
+ "user/models": "ai/user/models", // After removing "ai/" prefix
39
43
  "ai/user/models": "ai/user/models", // Direct mapping
40
44
  // AI Models - Toggle
41
45
  "auth/ai-models-toggle": "ai/user/models/toggle",
42
46
  "ai-models-toggle": "ai/user/models/toggle",
47
+ "user/models/toggle": "ai/user/models/toggle", // After removing "ai/" prefix
43
48
  "ai/user/models/toggle": "ai/user/models/toggle", // Direct mapping
44
49
  // Text generation
45
50
  "auth/generate-text": "text-ai",
@@ -50,7 +55,6 @@ function mapAuthRouteToPublicRoute(path) {
50
55
  // Status and provider
51
56
  status: "status",
52
57
  provider: "provider",
53
- "public/gateway-models": "provider",
54
58
  "public/status": "status",
55
59
  };
56
60
  // Try exact match first
@@ -10,6 +10,29 @@ export interface ModelRef {
10
10
  imageTokens?: number;
11
11
  };
12
12
  }
13
+ export interface GatewayModel {
14
+ id: string;
15
+ name: string;
16
+ type: "text" | "image" | "embedding" | "audio" | "video" | "language";
17
+ provider: string;
18
+ max_tokens?: number;
19
+ tags?: string[];
20
+ pricing?: {
21
+ input?: number;
22
+ output?: number;
23
+ image?: number;
24
+ };
25
+ }
26
+ export interface GatewayProvider {
27
+ name: string;
28
+ display_name: string;
29
+ models: GatewayModel[];
30
+ }
31
+ export interface GatewayModelsResponse {
32
+ providers: GatewayProvider[];
33
+ stale?: boolean;
34
+ cached_at?: string;
35
+ }
13
36
  export interface AiTextRequest {
14
37
  model: string;
15
38
  prompt: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,GAAG,sBAAsB,GAAG,cAAc,CAAC;IACvE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lastbrain/ai-ui-core",
3
- "version": "1.0.25",
3
+ "version": "1.0.27",
4
4
  "description": "Framework-agnostic core library for LastBrain AI UI Kit",
5
5
  "private": false,
6
6
  "type": "module",
@@ -8,6 +8,7 @@ import type {
8
8
  AiEmbedRequest,
9
9
  AiEmbedResponse,
10
10
  AiStatus,
11
+ GatewayModelsResponse,
11
12
  } from "../types";
12
13
  import { normalizeError } from "../errors/normalizeError";
13
14
 
@@ -88,6 +89,10 @@ function buildUrl(baseUrl: string, endpoint: string): string {
88
89
  // Auth endpoints need /auth/ prefix for internal
89
90
  status: { internal: "/auth/status", external: "/status" },
90
91
  provider: { internal: "/auth/provider", external: "/provider" },
92
+ "gateway-models": {
93
+ internal: "/public/gateway-models",
94
+ external: "/gateway-models",
95
+ },
91
96
  // Other endpoints
92
97
  "track-usage": { internal: "/track-usage", external: "/track-usage" },
93
98
  "ai/embed": { internal: "/ai/embed", external: "/ai/embed" },
@@ -292,8 +297,32 @@ export function createClient(config: ClientConfig) {
292
297
  }
293
298
  }
294
299
 
300
+ /**
301
+ * Get ALL available models from Vercel AI Gateway (not filtered by user settings)
302
+ */
303
+ async function getAllAvailableModels(): Promise<GatewayModelsResponse> {
304
+ try {
305
+ const url = buildUrl(config.baseUrl, "gateway-models");
306
+
307
+ const response = await fetchWithRetry<GatewayModelsResponse>(
308
+ url,
309
+ {
310
+ method: "GET",
311
+ headers: createHeaders(),
312
+ signal: createAbortSignal(),
313
+ },
314
+ { retries, delay: INITIAL_RETRY_DELAY }
315
+ );
316
+
317
+ return response;
318
+ } catch (error) {
319
+ throw normalizeError(error);
320
+ }
321
+ }
322
+
295
323
  return {
296
324
  getModels,
325
+ getAllAvailableModels,
297
326
  generateText,
298
327
  generateImage,
299
328
  embed,
@@ -37,21 +37,27 @@ function mapAuthRouteToPublicRoute(path: string): string {
37
37
  prompts: "prompts", // Direct mapping for prompts
38
38
  "prompts/stats": "prompts/stats", // Direct mapping for stats
39
39
 
40
+ // Gateway models - ALL available models from Vercel AI
41
+ "gateway-models": "gateway-models",
42
+ "public/gateway-models": "gateway-models",
43
+
40
44
  // AI Models - Available
41
45
  "auth/ai-models-available": "ai/models/available",
42
46
  "ai-models-available": "ai/models/available",
43
47
  "ai/models/available": "ai/models/available", // Direct mapping
44
48
 
45
- // AI Models - User models
49
+ // AI Models - User models (with both slash and dash variants)
46
50
  "auth/ai-models-user": "ai/user/models",
47
51
  "auth/user-models": "ai/user/models",
48
52
  "ai-models-user": "ai/user/models",
49
53
  "user-models": "ai/user/models",
54
+ "user/models": "ai/user/models", // After removing "ai/" prefix
50
55
  "ai/user/models": "ai/user/models", // Direct mapping
51
56
 
52
57
  // AI Models - Toggle
53
58
  "auth/ai-models-toggle": "ai/user/models/toggle",
54
59
  "ai-models-toggle": "ai/user/models/toggle",
60
+ "user/models/toggle": "ai/user/models/toggle", // After removing "ai/" prefix
55
61
  "ai/user/models/toggle": "ai/user/models/toggle", // Direct mapping
56
62
 
57
63
  // Text generation
@@ -65,7 +71,6 @@ function mapAuthRouteToPublicRoute(path: string): string {
65
71
  // Status and provider
66
72
  status: "status",
67
73
  provider: "provider",
68
- "public/gateway-models": "provider",
69
74
  "public/status": "status",
70
75
  };
71
76
 
@@ -11,6 +11,32 @@ export interface ModelRef {
11
11
  };
12
12
  }
13
13
 
14
+ export interface GatewayModel {
15
+ id: string;
16
+ name: string;
17
+ type: "text" | "image" | "embedding" | "audio" | "video" | "language";
18
+ provider: string;
19
+ max_tokens?: number;
20
+ tags?: string[];
21
+ pricing?: {
22
+ input?: number;
23
+ output?: number;
24
+ image?: number;
25
+ };
26
+ }
27
+
28
+ export interface GatewayProvider {
29
+ name: string;
30
+ display_name: string;
31
+ models: GatewayModel[];
32
+ }
33
+
34
+ export interface GatewayModelsResponse {
35
+ providers: GatewayProvider[];
36
+ stale?: boolean;
37
+ cached_at?: string;
38
+ }
39
+
14
40
  export interface AiTextRequest {
15
41
  model: string;
16
42
  prompt: string;