@visiblebase/client 0.1.0 → 0.1.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/README.md CHANGED
@@ -4,8 +4,8 @@
4
4
 
5
5
  它提供两类客户端:
6
6
 
7
- - `UserClient`:给终端用户请求 Runtime
8
- - `AdminClient`:给开发者后端管理 product、签发 `user_token`、维护 Runtime env
7
+ - `UserClient`:给终端用户产品调用 Base
8
+ - `AdminClient`:给可信后端管理 product、签发 `user_token`、维护 Runtime env
9
9
 
10
10
  ## 安装
11
11
 
@@ -17,36 +17,52 @@ pnpm add @visiblebase/client
17
17
 
18
18
  ```ts
19
19
  import { UserClient } from "@visiblebase/client";
20
+ import type { UIMessageChunk } from "ai";
20
21
 
21
22
  const client = new UserClient({
22
- baseUrl: "http://127.0.0.1:3001/viba",
23
- userToken: "ub_xxx",
23
+ base_url: "http://127.0.0.1:3001",
24
+ product_id: "prod_xxx",
25
+ user_token: "ub_xxx",
24
26
  });
25
27
 
26
- const output = await client.text({
27
- model: "gpt-4o-mini",
28
+ const models = await client.models();
29
+
30
+ const message = await client.text({
31
+ model: models.primary(),
28
32
  prompt: "你好",
29
33
  });
34
+
35
+ const stream = await client.stream({
36
+ model: models.primary(),
37
+ prompt: "流式输出一段文案",
38
+ });
39
+
40
+ const reader = stream.getReader();
41
+ const firstChunk: UIMessageChunk | undefined = (await reader.read()).value;
30
42
  ```
31
43
 
44
+ `text()` 固定返回 AI SDK `UIMessage`。`stream()` 固定返回 `ReadableStream<UIMessageChunk>`,适配 Base 侧的 `createUIMessageStreamResponse()` 或 `streamText().toUIMessageStreamResponse()`。
45
+
46
+ `image()` 和 `video()` 也固定返回 AI SDK `UIMessage`,建议用 message 的 file part 表达图片或视频文件。
47
+
32
48
  ## AdminClient
33
49
 
34
50
  ```ts
35
51
  import { AdminClient } from "@visiblebase/client";
36
52
 
37
53
  const admin = new AdminClient({
38
- baseUrl: "http://127.0.0.1:3001/viba",
39
- adminSecretKey: "admin_xxx",
54
+ base_url: "http://127.0.0.1:3001",
55
+ admin_secret_key: "admin_xxx",
40
56
  });
41
57
 
42
58
  const product = await admin.products.create({
43
- code: "demo",
44
59
  name: "Demo Product",
45
60
  });
46
61
 
47
- const token = await admin.users.token({
48
- product_id: product.id,
62
+ const token = await admin.tokens.apply({
63
+ product_id: product.product_id,
49
64
  user_id: "user_123",
65
+ ttl: "30m",
50
66
  });
51
67
  ```
52
68
 
@@ -1,17 +1,17 @@
1
1
  /**
2
2
  * 管理端 SDK。
3
3
  *
4
- * AdminClient 只应该在开发者后端、Console 或其他可信服务端使用。它使用
5
- * admin_secret_key 管理当前 Base env、products,并派发终端用户 user_token
4
+ * AdminClient 只应该在开发者后端、Console 或其他可信服务端使用。当前它负责
5
+ * env、products token 签发;模型配置先交给数据库层,不走单独 SDK
6
6
  */
7
- import type { AdminClientOptions, AdminEnvEntry, AdminEnvUpsertInput, AdminProduct, AdminProductCreateInput, AdminProductIdInput, AdminTokenInput, AdminUserTokenResult, RequestInitLike } from "./types.js";
7
+ import type { AdminClientOptions, AdminEnvEntry, AdminEnvUpsertInput, AdminProduct, AdminProductCreateInput, AdminProductIdInput, AdminTokenApplyInput, AdminTokenApplyResult, RequestInitLike } from "./types.js";
8
8
  /**
9
9
  * VisibleBase 管理端客户端。
10
10
  */
11
11
  export declare class AdminClient {
12
12
  readonly env: AdminEnvClient;
13
13
  readonly products: AdminProductsClient;
14
- readonly users: AdminUsersClient;
14
+ readonly tokens: AdminTokensClient;
15
15
  private readonly base_url;
16
16
  private readonly admin_secret_key;
17
17
  private readonly fetchImpl;
@@ -20,7 +20,7 @@ export declare class AdminClient {
20
20
  private withAuthHeaders;
21
21
  }
22
22
  /**
23
- * 管理 product 的资源客户端。
23
+ * Product 管理客户端。
24
24
  */
25
25
  export declare class AdminProductsClient {
26
26
  private readonly admin;
@@ -32,15 +32,15 @@ export declare class AdminProductsClient {
32
32
  remove(input: AdminProductIdInput): Promise<unknown>;
33
33
  }
34
34
  /**
35
- * 管理 user_token 的资源客户端。
35
+ * token 管理客户端。
36
36
  */
37
- export declare class AdminUsersClient {
37
+ export declare class AdminTokensClient {
38
38
  private readonly admin;
39
39
  constructor(admin: AdminClient);
40
- token(input: AdminTokenInput): Promise<AdminUserTokenResult>;
40
+ apply(input: AdminTokenApplyInput): Promise<AdminTokenApplyResult>;
41
41
  }
42
42
  /**
43
- * 管理 Runtime Env 的资源客户端。
43
+ * Runtime env 管理客户端。
44
44
  */
45
45
  export declare class AdminEnvClient {
46
46
  private readonly admin;
@@ -1 +1 @@
1
- {"version":3,"file":"AdminClient.d.ts","sourceRoot":"","sources":["../src/AdminClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EAEpB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,OAAO,EAAE,kBAAkB;IAgBvC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC;IAQ/D,OAAO,CAAC,eAAe;CAUxB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBAExB,KAAK,EAAE,WAAW;IAIxB,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAOrC,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAO7D,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAOxD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAO3D,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;CAMrD;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBAExB,KAAK,EAAE,WAAW;IAI9B,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAM7D;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBAExB,KAAK,EAAE,WAAW;IAIxB,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAOtC,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAOpD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOrC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAMtC"}
1
+ {"version":3,"file":"AdminClient.d.ts","sourceRoot":"","sources":["../src/AdminClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EAErB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,OAAO,EAAE,kBAAkB;IAgBvC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC;IAQ/D,OAAO,CAAC,eAAe;CAUxB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBAExB,KAAK,EAAE,WAAW;IAIxB,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAOrC,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAO7D,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAOxD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAO3D,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;CAMrD;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBAExB,KAAK,EAAE,WAAW;IAI9B,KAAK,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAMnE;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBAExB,KAAK,EAAE,WAAW;IAIxB,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAOtC,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAOpD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOrC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAMtC"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * 管理端 SDK。
3
3
  *
4
- * AdminClient 只应该在开发者后端、Console 或其他可信服务端使用。它使用
5
- * admin_secret_key 管理当前 Base env、products,并派发终端用户 user_token
4
+ * AdminClient 只应该在开发者后端、Console 或其他可信服务端使用。当前它负责
5
+ * env、products token 签发;模型配置先交给数据库层,不走单独 SDK
6
6
  */
7
7
  import { defaultFetch, normalizeBaseURL, requestJSON, requiredString } from "./http.js";
8
8
  /**
@@ -11,7 +11,7 @@ import { defaultFetch, normalizeBaseURL, requestJSON, requiredString } from "./h
11
11
  export class AdminClient {
12
12
  env;
13
13
  products;
14
- users;
14
+ tokens;
15
15
  base_url;
16
16
  admin_secret_key;
17
17
  fetchImpl;
@@ -24,7 +24,7 @@ export class AdminClient {
24
24
  this.fetchImpl = options.fetch ?? defaultFetch();
25
25
  this.env = new AdminEnvClient(this);
26
26
  this.products = new AdminProductsClient(this);
27
- this.users = new AdminUsersClient(this);
27
+ this.tokens = new AdminTokensClient(this);
28
28
  }
29
29
  requestJSON(path, init) {
30
30
  return requestJSON({
@@ -45,7 +45,7 @@ export class AdminClient {
45
45
  }
46
46
  }
47
47
  /**
48
- * 管理 product 的资源客户端。
48
+ * Product 管理客户端。
49
49
  */
50
50
  export class AdminProductsClient {
51
51
  admin;
@@ -84,22 +84,22 @@ export class AdminProductsClient {
84
84
  }
85
85
  }
86
86
  /**
87
- * 管理 user_token 的资源客户端。
87
+ * token 管理客户端。
88
88
  */
89
- export class AdminUsersClient {
89
+ export class AdminTokensClient {
90
90
  admin;
91
91
  constructor(admin) {
92
92
  this.admin = admin;
93
93
  }
94
- token(input) {
95
- return this.admin.requestJSON("/api/admin/users/token", {
94
+ apply(input) {
95
+ return this.admin.requestJSON("/api/admin/tokens/apply", {
96
96
  method: "POST",
97
97
  body: JSON.stringify(input),
98
98
  });
99
99
  }
100
100
  }
101
101
  /**
102
- * 管理 Runtime Env 的资源客户端。
102
+ * Runtime env 管理客户端。
103
103
  */
104
104
  export class AdminEnvClient {
105
105
  admin;
@@ -1 +1 @@
1
- {"version":3,"file":"AdminClient.js","sourceRoot":"","sources":["../src/AdminClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AdminClient.js","sourceRoot":"","sources":["../src/AdminClient.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,60 @@
1
1
  /**
2
2
  * 终端用户 SDK。
3
3
  *
4
- * UserClient 只面向开发者产品里的终端客户端。它携带 user_token 调用 Runtime,
5
- * 不接触 provider API key 或管理端密钥。
4
+ * UserClient 面向具体产品侧代码:它绑定 `base_url + product_id + user_token`,
5
+ * 再通过 `text()/stream()/image()/video()/tts()/asr()` `invoke()` 调 Base。
6
6
  */
7
- import type { UserClientOptions } from "./types.js";
7
+ import type { UserClientOptions, UserImageResult, UserModelCatalog, UserNamedService, UserServiceInput, UserStreamResult, UserTextResult, UserVideoResult } from "./types.js";
8
8
  /**
9
9
  * VisibleBase 终端用户客户端。
10
10
  */
11
11
  export declare class UserClient {
12
12
  private readonly base_url;
13
+ private readonly product_id;
13
14
  private readonly user_token;
14
15
  private readonly fetchImpl;
15
16
  constructor(options: UserClientOptions);
16
- text<T = unknown>(input: Record<string, unknown>): Promise<T>;
17
- image<T = unknown>(input: Record<string, unknown>): Promise<T>;
18
- audio<T = unknown>(input: Record<string, unknown>): Promise<T>;
19
- stream(input: Record<string, unknown>): Promise<unknown>;
20
- models<T = unknown>(): Promise<T>;
17
+ /**
18
+ * 调用 text service。
19
+ */
20
+ text(input: UserServiceInput): Promise<UserTextResult>;
21
+ /**
22
+ * 调用 stream service。
23
+ */
24
+ stream(input: UserServiceInput): Promise<UserStreamResult>;
25
+ /**
26
+ * 调用 image service。
27
+ */
28
+ image(input: UserServiceInput): Promise<UserImageResult>;
29
+ /**
30
+ * 调用 video service。
31
+ */
32
+ video(input: UserServiceInput): Promise<UserVideoResult>;
33
+ /**
34
+ * 调用 TTS service。
35
+ */
36
+ tts<T = unknown>(input: UserServiceInput): Promise<T>;
37
+ /**
38
+ * 调用 ASR service。
39
+ */
40
+ asr<T = unknown>(input: UserServiceInput): Promise<T>;
41
+ /**
42
+ * 调用任意 service。
43
+ */
44
+ invoke<T = unknown>(service: string, input: UserServiceInput): Promise<T>;
45
+ /**
46
+ * 读取当前可用模型目录。
47
+ */
48
+ models(): Promise<UserModelCatalog>;
49
+ /**
50
+ * 读取当前已注册的 service 列表,或创建指定 service 的调用器。
51
+ */
52
+ service(): Promise<string[]>;
53
+ service(name: string): UserNamedService;
21
54
  private post;
22
55
  private requestJSON;
23
56
  private request;
24
57
  private withAuthHeaders;
58
+ private serializeInput;
25
59
  }
26
60
  //# sourceMappingURL=UserClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserClient.d.ts","sourceRoot":"","sources":["../src/UserClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAA8B,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhF;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,OAAO,EAAE,iBAAiB;IAUtC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7D,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI9D,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ9D,MAAM,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC;IAMjC,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,eAAe;CAUxB"}
1
+ {"version":3,"file":"UserClient.d.ts","sourceRoot":"","sources":["../src/UserClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAGV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAGhB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,OAAO,EAAE,iBAAiB;IAWtC;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC;IAItD;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQhE;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIxD;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIxD;;OAEG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIrD;;OAEG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIrD;;OAEG;IACH,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAUzE;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAOzC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAavC,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;CAOvB"}
package/bin/UserClient.js CHANGED
@@ -1,15 +1,17 @@
1
1
  /**
2
2
  * 终端用户 SDK。
3
3
  *
4
- * UserClient 只面向开发者产品里的终端客户端。它携带 user_token 调用 Runtime,
5
- * 不接触 provider API key 或管理端密钥。
4
+ * UserClient 面向具体产品侧代码:它绑定 `base_url + product_id + user_token`,
5
+ * 再通过 `text()/stream()/image()/video()/tts()/asr()` `invoke()` 调 Base。
6
6
  */
7
+ import { parseUserStreamBody } from "./ai-stream.js";
7
8
  import { defaultFetch, normalizeBaseURL, requestJSON, requestRaw, requiredString } from "./http.js";
8
9
  /**
9
10
  * VisibleBase 终端用户客户端。
10
11
  */
11
12
  export class UserClient {
12
13
  base_url;
14
+ product_id;
13
15
  user_token;
14
16
  fetchImpl;
15
17
  constructor(options) {
@@ -17,34 +19,85 @@ export class UserClient {
17
19
  throw new TypeError("UserClient options are required");
18
20
  }
19
21
  this.base_url = normalizeBaseURL(options.base_url, "base_url");
22
+ this.product_id = requiredString(options.product_id, "product_id");
20
23
  this.user_token = requiredString(options.user_token, "user_token");
21
24
  this.fetchImpl = options.fetch ?? defaultFetch();
22
25
  }
26
+ /**
27
+ * 调用 text service。
28
+ */
23
29
  text(input) {
24
30
  return this.post("/v1/text", input);
25
31
  }
32
+ /**
33
+ * 调用 stream service。
34
+ */
35
+ async stream(input) {
36
+ const response = await this.request("/v1/stream", {
37
+ method: "POST",
38
+ body: JSON.stringify(this.serializeInput(input)),
39
+ });
40
+ return parseUserStreamBody(response.body);
41
+ }
42
+ /**
43
+ * 调用 image service。
44
+ */
26
45
  image(input) {
27
46
  return this.post("/v1/image", input);
28
47
  }
29
- audio(input) {
30
- return this.post("/v1/audio", input);
48
+ /**
49
+ * 调用 video service。
50
+ */
51
+ video(input) {
52
+ return this.post("/v1/video", input);
31
53
  }
32
- async stream(input) {
33
- const response = await this.request("/v1/stream", {
54
+ /**
55
+ * 调用 TTS service。
56
+ */
57
+ tts(input) {
58
+ return this.post("/v1/tts", input);
59
+ }
60
+ /**
61
+ * 调用 ASR service。
62
+ */
63
+ asr(input) {
64
+ return this.post("/v1/asr", input);
65
+ }
66
+ /**
67
+ * 调用任意 service。
68
+ */
69
+ invoke(service, input) {
70
+ return this.requestJSON("/v1/invoke", {
34
71
  method: "POST",
35
- body: JSON.stringify(input),
72
+ body: JSON.stringify({
73
+ service,
74
+ ...this.serializeInput(input),
75
+ }),
36
76
  });
37
- return response.body;
38
77
  }
39
- models() {
40
- return this.requestJSON("/v1/models", {
78
+ /**
79
+ * 读取当前可用模型目录。
80
+ */
81
+ async models() {
82
+ const items = await this.requestJSON("/v1/models", {
41
83
  method: "GET",
42
84
  });
85
+ return createModelCatalog(items);
86
+ }
87
+ service(name) {
88
+ if (typeof name === "string" && name.trim()) {
89
+ return {
90
+ invoke: (input) => this.invoke(name, input),
91
+ };
92
+ }
93
+ return this.requestJSON("/v1/services", {
94
+ method: "GET",
95
+ }).then((body) => body.items);
43
96
  }
44
97
  post(path, input) {
45
98
  return this.requestJSON(path, {
46
99
  method: "POST",
47
- body: JSON.stringify(input),
100
+ body: JSON.stringify(this.serializeInput(input)),
48
101
  });
49
102
  }
50
103
  requestJSON(path, init) {
@@ -71,5 +124,29 @@ export class UserClient {
71
124
  },
72
125
  };
73
126
  }
127
+ serializeInput(input) {
128
+ return {
129
+ ...input,
130
+ model: serializeModel(input.model),
131
+ product_id: this.product_id,
132
+ };
133
+ }
134
+ }
135
+ function serializeModel(model) {
136
+ if (!model) {
137
+ return undefined;
138
+ }
139
+ if (typeof model === "string") {
140
+ return model;
141
+ }
142
+ return model.id;
143
+ }
144
+ function createModelCatalog(items) {
145
+ const byId = new Map(items.map((item) => [item.id, Object.freeze({ ...item })]));
146
+ const primary = items.find((item) => item.primary) ?? items[0];
147
+ const catalog = ((id) => byId.get(String(id ?? "").trim()));
148
+ catalog.primary = () => (primary ? byId.get(primary.id) : undefined);
149
+ catalog.all = () => [...byId.values()];
150
+ return catalog;
74
151
  }
75
152
  //# sourceMappingURL=UserClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserClient.js","sourceRoot":"","sources":["../src/UserClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGpG;;GAEG;AACH,MAAM,OAAO,UAAU;IACJ,QAAQ,CAAS;IACjB,UAAU,CAAS;IACnB,SAAS,CAAY;IAEtC,YAAY,OAA0B;QACpC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,CAAc,KAA8B;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAI,UAAU,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAc,KAA8B;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAI,WAAW,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAc,KAA8B;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAI,WAAW,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAA8B;QACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,WAAW,CAAI,YAAY,EAAE;YACvC,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;IAEO,IAAI,CAAI,IAAY,EAAE,KAA8B;QAC1D,OAAO,IAAI,CAAC,WAAW,CAAI,IAAI,EAAE;YAC/B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAEO,WAAW,CAAI,IAAY,EAAE,IAAqB;QACxD,OAAO,WAAW,CAAI;YACpB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE;YAC9B,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IAEO,OAAO,CAAC,IAAY,EAAE,IAAqB;QACjD,OAAO,UAAU,CAAC;YAChB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE;YAC9B,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,IAAqB;QAC3C,OAAO;YACL,GAAG,IAAI;YACP,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,UAAU,EAAE;gBAC1C,GAAG,IAAI,CAAC,OAAO;aAChB;SACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"UserClient.js","sourceRoot":"","sources":["../src/UserClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * AI SDK UIMessage stream 适配模块。
3
+ *
4
+ * Base 侧可以返回 AI SDK 的 `createUIMessageStreamResponse()` 或
5
+ * `streamText().toUIMessageStreamResponse()`;客户端在这里把 HTTP SSE body
6
+ * 还原为产品侧直接消费的 `UIMessageChunk` stream。
7
+ */
8
+ import type { UserRawStreamBody, UserStreamResult } from "./types.js";
9
+ /**
10
+ * 解析 VisibleBase stream service 返回的 AI SDK UIMessage SSE body。
11
+ */
12
+ export declare function parseUserStreamBody(body: UserRawStreamBody): UserStreamResult;
13
+ //# sourceMappingURL=ai-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-stream.d.ts","sourceRoot":"","sources":["../src/ai-stream.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEtE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,CAM7E"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * AI SDK UIMessage stream 适配模块。
3
+ *
4
+ * Base 侧可以返回 AI SDK 的 `createUIMessageStreamResponse()` 或
5
+ * `streamText().toUIMessageStreamResponse()`;客户端在这里把 HTTP SSE body
6
+ * 还原为产品侧直接消费的 `UIMessageChunk` stream。
7
+ */
8
+ import { DefaultChatTransport } from "ai";
9
+ /**
10
+ * 解析 VisibleBase stream service 返回的 AI SDK UIMessage SSE body。
11
+ */
12
+ export function parseUserStreamBody(body) {
13
+ if (!body) {
14
+ throw new Error("VisibleBase stream response body is empty");
15
+ }
16
+ return parser.parse(body);
17
+ }
18
+ /**
19
+ * 暴露 AI SDK 默认 UIMessage stream 解析器。
20
+ */
21
+ class VisibleBaseUIMessageStreamParser extends DefaultChatTransport {
22
+ /**
23
+ * 将字节流转成 AI SDK UIMessage chunk 流。
24
+ */
25
+ parse(stream) {
26
+ return this.processResponseStream(stream);
27
+ }
28
+ }
29
+ const parser = new VisibleBaseUIMessageStreamParser();
30
+ //# sourceMappingURL=ai-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-stream.js","sourceRoot":"","sources":["../src/ai-stream.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,IAAI,CAAC;AAI1C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IACzD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,gCAAiC,SAAQ,oBAA+B;IAC5E;;OAEG;IACH,KAAK,CAAC,MAAkC;QACtC,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAqD,CAAC,CAAC;IAC3F,CAAC;CACF;AAED,MAAM,MAAM,GAAG,IAAI,gCAAgC,EAAE,CAAC"}
package/bin/index.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * 导出终端用户客户端、管理端客户端和 SDK 公共类型。
5
5
  */
6
- export { AdminClient, AdminEnvClient, AdminProductsClient, AdminUsersClient } from "./AdminClient.js";
6
+ export { AdminClient, AdminEnvClient, AdminProductsClient, AdminTokensClient } from "./AdminClient.js";
7
7
  export { UserClient } from "./UserClient.js";
8
- export type { AdminClientOptions, AdminEnvEntry, AdminEnvUpsertInput, AdminProduct, AdminProductCreateInput, AdminProductIdInput, AdminTokenInput, AdminUserTokenResult, FetchLike, FetchResponseLike, RequestInitLike, UserClientOptions, } from "./types.js";
8
+ export type { AdminClientOptions, AdminEnvEntry, AdminEnvUpsertInput, AdminProduct, AdminProductCreateInput, AdminProductIdInput, AdminTokenApplyInput, AdminTokenApplyResult, FetchLike, FetchResponseLike, RequestInitLike, UserClientOptions, UserImageResult, UserModelCatalog, UserModelInput, UserModelRef, UserNamedService, UserRawStreamBody, UserServiceInput, UserStreamChunk, UserStreamResult, UserTextResult, UserVideoResult, } from "./types.js";
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC"}
package/bin/index.js CHANGED
@@ -3,6 +3,6 @@
3
3
  *
4
4
  * 导出终端用户客户端、管理端客户端和 SDK 公共类型。
5
5
  */
6
- export { AdminClient, AdminEnvClient, AdminProductsClient, AdminUsersClient } from "./AdminClient.js";
6
+ export { AdminClient, AdminEnvClient, AdminProductsClient, AdminTokensClient } from "./AdminClient.js";
7
7
  export { UserClient } from "./UserClient.js";
8
8
  //# sourceMappingURL=index.js.map
package/bin/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
package/bin/types.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * @visiblebase/client 公共类型。
3
3
  *
4
- * 这里描述终端用户 SDK 与管理端 SDK 的输入输出,不包含任何请求实现。
4
+ * 这里描述终端用户 SDK、管理端 SDK 和模型选择器的对外契约,不包含具体请求逻辑。
5
5
  */
6
+ import type { UIMessage, UIMessageChunk } from "ai";
6
7
  /**
7
8
  * fetch 返回对象的最小接口。
8
9
  */
@@ -16,18 +17,42 @@ export interface FetchResponseLike {
16
17
  */
17
18
  status: number;
18
19
  /**
19
- * 流式响应体。
20
+ * 原始流式响应体。
20
21
  */
21
- body?: unknown;
22
+ body: UserRawStreamBody;
22
23
  /**
23
- * 读取 JSON 响应体。
24
+ * 读取 JSON
24
25
  */
25
26
  json(): Promise<unknown>;
26
27
  /**
27
- * 读取文本响应体。
28
+ * 读取文本。
28
29
  */
29
30
  text(): Promise<string>;
30
31
  }
32
+ /**
33
+ * `client.text()` 返回的 AI SDK UI message。
34
+ */
35
+ export type UserTextResult = UIMessage;
36
+ /**
37
+ * `client.stream()` 读出的 AI SDK UI message chunk。
38
+ */
39
+ export type UserStreamChunk = UIMessageChunk;
40
+ /**
41
+ * `client.stream()` 返回给产品侧消费的 AI SDK UI message chunk 流。
42
+ */
43
+ export type UserStreamResult = ReadableStream<UserStreamChunk>;
44
+ /**
45
+ * `client.image()` 返回的 AI SDK UI message。
46
+ */
47
+ export type UserImageResult = UIMessage;
48
+ /**
49
+ * `client.video()` 返回的 AI SDK UI message。
50
+ */
51
+ export type UserVideoResult = UIMessage;
52
+ /**
53
+ * fetch 层收到的原始字节流 body。
54
+ */
55
+ export type UserRawStreamBody = ReadableStream<Uint8Array> | null;
31
56
  /**
32
57
  * SDK 使用的 fetch 函数签名。
33
58
  */
@@ -50,7 +75,7 @@ export interface RequestInitLike {
50
75
  */
51
76
  headers?: Record<string, string>;
52
77
  /**
53
- * JSON 序列化后的请求体。
78
+ * 请求体。
54
79
  */
55
80
  body?: string;
56
81
  }
@@ -59,34 +84,106 @@ export interface RequestInitLike {
59
84
  */
60
85
  export interface UserClientOptions {
61
86
  /**
62
- * VisibleBase Runtime 对终端用户开放的 base URL。
87
+ * VisibleBase 对终端用户开放的 base URL。
63
88
  */
64
89
  base_url: string;
90
+ /**
91
+ * 当前客户端绑定的 Product ID。
92
+ */
93
+ product_id: string;
65
94
  /**
66
95
  * 开发者后端签发给终端用户的 user_token。
67
96
  */
68
97
  user_token: string;
69
98
  /**
70
- * 自定义 fetch 实现,主要用于测试或特殊运行环境。
99
+ * 自定义 fetch 实现。
71
100
  */
72
101
  fetch?: FetchLike;
73
102
  }
74
103
  /**
75
- * AdminClient 构造参数。
104
+ * 客户端可见的 Model 引用。
105
+ */
106
+ export interface UserModelRef {
107
+ /**
108
+ * 模型唯一 ID。
109
+ */
110
+ id: string;
111
+ /**
112
+ * 模型展示名称。
113
+ */
114
+ name: string;
115
+ /**
116
+ * Provider 名称。
117
+ */
118
+ provider: string;
119
+ /**
120
+ * 模型说明。
121
+ */
122
+ description: string;
123
+ /**
124
+ * 是否为全局主模型。
125
+ */
126
+ primary: boolean;
127
+ }
128
+ /**
129
+ * 客户端传入的模型标识。
130
+ */
131
+ export type UserModelInput = UserModelRef | string;
132
+ /**
133
+ * 发给任意 service 的标准输入。
134
+ */
135
+ export interface UserServiceInput {
136
+ /**
137
+ * 希望使用的模型。
138
+ *
139
+ * 推荐传 `client.models()` 返回的 `ModelRef`,也允许直接传模型 ID。
140
+ */
141
+ model?: UserModelInput;
142
+ /**
143
+ * 其他 service 自己定义的字段。
144
+ */
145
+ [key: string]: unknown;
146
+ }
147
+ /**
148
+ * `client.models()` 返回的模型目录。
149
+ */
150
+ export interface UserModelCatalog {
151
+ /**
152
+ * 按模型 ID 读取单个模型。
153
+ */
154
+ (id: string): UserModelRef | undefined;
155
+ /**
156
+ * 读取全局主模型。
157
+ */
158
+ primary(): UserModelRef | undefined;
159
+ /**
160
+ * 列出所有模型。
161
+ */
162
+ all(): UserModelRef[];
163
+ }
164
+ /**
165
+ * `client.service(name)` 返回的调用器。
166
+ */
167
+ export interface UserNamedService {
168
+ /**
169
+ * 调用当前 service。
170
+ */
171
+ invoke<T = unknown>(input: UserServiceInput): Promise<T>;
172
+ }
173
+ /**
174
+ * 管理端 SDK 构造参数。
76
175
  */
77
176
  export interface AdminClientOptions {
78
177
  /**
79
- * VisibleBase Runtime 管理端 base URL。
178
+ * Base 管理端 base URL。
80
179
  */
81
180
  base_url: string;
82
181
  /**
83
- * VisibleBase 管理密钥。
84
- *
85
- * 未传入时会读取 `process.env.VISIBLEBASE_ADMIN_SECRET_KEY`。
182
+ * 管理密钥。
86
183
  */
87
184
  admin_secret_key?: string;
88
185
  /**
89
- * 自定义 fetch 实现,主要用于测试或特殊运行环境。
186
+ * 自定义 fetch 实现。
90
187
  */
91
188
  fetch?: FetchLike;
92
189
  }
@@ -99,7 +196,7 @@ export interface AdminEnvEntry {
99
196
  */
100
197
  key: string;
101
198
  /**
102
- * 环境变量明文值。
199
+ * 环境变量值。
103
200
  */
104
201
  value: string;
105
202
  /**
@@ -108,23 +205,23 @@ export interface AdminEnvEntry {
108
205
  source: "dotenv";
109
206
  }
110
207
  /**
111
- * 管理端签发 user_token 的输入。
208
+ * 管理端签发 token 的输入。
112
209
  */
113
- export interface AdminTokenInput {
210
+ export interface AdminTokenApplyInput {
114
211
  /**
115
- * user_token 所属 product_id
212
+ * token 所属 Product ID
116
213
  */
117
214
  product_id: string;
118
215
  /**
119
- * 开发者系统里的终端用户 ID。
216
+ * token 所属用户 ID。
120
217
  */
121
218
  user_id: string;
122
219
  /**
123
- * 写入 user_token 的业务 metadata。
220
+ * 写入 token 的业务元数据。
124
221
  */
125
222
  metadata?: Record<string, unknown>;
126
223
  /**
127
- * token 的有效期。
224
+ * token 有效期。
128
225
  */
129
226
  ttl?: string | number;
130
227
  }
@@ -137,11 +234,11 @@ export interface AdminProduct {
137
234
  */
138
235
  product_id: string;
139
236
  /**
140
- * Product 展示名称。
237
+ * Product 名称。
141
238
  */
142
239
  name: string;
143
240
  /**
144
- * Product 当前状态。
241
+ * Product 状态。
145
242
  */
146
243
  status: "active" | "paused";
147
244
  /**
@@ -154,11 +251,11 @@ export interface AdminProduct {
154
251
  updated_at: string;
155
252
  }
156
253
  /**
157
- * 创建 product 的输入。
254
+ * 创建 Product 的输入。
158
255
  */
159
256
  export interface AdminProductCreateInput {
160
257
  /**
161
- * Product 展示名称。
258
+ * Product 名称。
162
259
  */
163
260
  name: string;
164
261
  }
@@ -172,23 +269,23 @@ export interface AdminProductIdInput {
172
269
  product_id: string;
173
270
  }
174
271
  /**
175
- * 签发 user_token 的返回值。
272
+ * token 签发结果。
176
273
  */
177
- export interface AdminUserTokenResult {
274
+ export interface AdminTokenApplyResult {
178
275
  /**
179
- * 可交给 UserClient 使用的 user_token。
276
+ * user_token。
180
277
  */
181
278
  user_token: string;
182
279
  /**
183
- * user_token 所属 product_id
280
+ * token 所属 Product ID
184
281
  */
185
282
  product_id: string;
186
283
  /**
187
- * user_token 所属 user_id
284
+ * token 所属用户 ID
188
285
  */
189
286
  user_id: string;
190
287
  /**
191
- * 过期时间;未设置 ttl 时为空。
288
+ * token 过期时间。
192
289
  */
193
290
  expires_at?: string;
194
291
  }
@@ -201,7 +298,7 @@ export interface AdminEnvUpsertInput {
201
298
  */
202
299
  key: string;
203
300
  /**
204
- * 环境变量明文值。
301
+ * 环境变量值。
205
302
  */
206
303
  value: string;
207
304
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,EAAE,EAAE,OAAO,CAAC;IAEZ;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzB;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAClE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAE5B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/bin/types.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @visiblebase/client 公共类型。
3
3
  *
4
- * 这里描述终端用户 SDK 与管理端 SDK 的输入输出,不包含任何请求实现。
4
+ * 这里描述终端用户 SDK、管理端 SDK 和模型选择器的对外契约,不包含具体请求逻辑。
5
5
  */
6
6
  export {};
7
7
  //# sourceMappingURL=types.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visiblebase/client",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "VisibleBase user and admin client SDK.",
5
5
  "type": "module",
6
6
  "main": "./bin/index.js",
@@ -37,12 +37,15 @@
37
37
  "scripts": {
38
38
  "build": "tsc",
39
39
  "dev": "tsc --watch",
40
- "typecheck": "tsc --noEmit",
41
- "test": "tsc && node --test test/*.test.mjs",
40
+ "typecheck": "tsc --noEmit && tsc -p tsconfig.test.json",
41
+ "test": "tsc && tsc -p tsconfig.test.json && node --test test/*.test.mjs",
42
42
  "prepack": "npm run build"
43
43
  },
44
44
  "license": "MIT",
45
45
  "devDependencies": {
46
46
  "typescript": "^5.7.0"
47
+ },
48
+ "dependencies": {
49
+ "ai": "^6.0.168"
47
50
  }
48
51
  }