@visiblebase/client 0.1.0 → 0.1.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 +55 -11
- package/bin/admin/index.d.ts +19 -0
- package/bin/admin/index.d.ts.map +1 -0
- package/bin/admin/index.js +47 -0
- package/bin/admin/index.js.map +1 -0
- package/bin/admin/types.d.ts +14 -0
- package/bin/admin/types.d.ts.map +1 -0
- package/bin/admin/types.js +5 -0
- package/bin/admin/types.js.map +1 -0
- package/bin/http.d.ts +31 -35
- package/bin/http.d.ts.map +1 -1
- package/bin/http.js +33 -20
- package/bin/http.js.map +1 -1
- package/bin/index.d.ts +12 -5
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +12 -4
- package/bin/index.js.map +1 -1
- package/bin/invoker/ai/index.d.ts +139 -0
- package/bin/invoker/ai/index.d.ts.map +1 -0
- package/bin/invoker/ai/index.js +247 -0
- package/bin/invoker/ai/index.js.map +1 -0
- package/bin/invoker/ai/stream.d.ts +8 -0
- package/bin/invoker/ai/stream.d.ts.map +1 -0
- package/bin/invoker/ai/stream.js +17 -0
- package/bin/invoker/ai/stream.js.map +1 -0
- package/bin/invoker/ai/types.d.ts +25 -0
- package/bin/invoker/ai/types.d.ts.map +1 -0
- package/bin/invoker/ai/types.js +5 -0
- package/bin/invoker/ai/types.js.map +1 -0
- package/bin/invoker/env/index.d.ts +31 -0
- package/bin/invoker/env/index.d.ts.map +1 -0
- package/bin/invoker/env/index.js +48 -0
- package/bin/invoker/env/index.js.map +1 -0
- package/bin/invoker/env/types.d.ts +15 -0
- package/bin/invoker/env/types.d.ts.map +1 -0
- package/bin/invoker/env/types.js +5 -0
- package/bin/invoker/env/types.js.map +1 -0
- package/bin/invoker/invoker.d.ts +43 -0
- package/bin/invoker/invoker.d.ts.map +1 -0
- package/bin/invoker/invoker.js +67 -0
- package/bin/invoker/invoker.js.map +1 -0
- package/bin/invoker/products/index.d.ts +46 -0
- package/bin/invoker/products/index.d.ts.map +1 -0
- package/bin/invoker/products/index.js +73 -0
- package/bin/invoker/products/index.js.map +1 -0
- package/bin/invoker/products/types.d.ts +28 -0
- package/bin/invoker/products/types.d.ts.map +1 -0
- package/bin/invoker/products/types.js +5 -0
- package/bin/invoker/products/types.js.map +1 -0
- package/bin/user/index.d.ts +25 -0
- package/bin/user/index.d.ts.map +1 -0
- package/bin/user/index.js +93 -0
- package/bin/user/index.js.map +1 -0
- package/bin/user/types.d.ts +25 -0
- package/bin/user/types.d.ts.map +1 -0
- package/bin/user/types.js +5 -0
- package/bin/user/types.js.map +1 -0
- package/package.json +7 -3
- package/bin/AdminClient.d.ts +0 -53
- package/bin/AdminClient.d.ts.map +0 -1
- package/bin/AdminClient.js +0 -134
- package/bin/AdminClient.js.map +0 -1
- package/bin/UserClient.d.ts +0 -26
- package/bin/UserClient.d.ts.map +0 -1
- package/bin/UserClient.js +0 -75
- package/bin/UserClient.js.map +0 -1
- package/bin/types.d.ts +0 -208
- package/bin/types.d.ts.map +0 -1
- package/bin/types.js +0 -7
- package/bin/types.js.map +0 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Products Service 调用器(对应 core service/products/products-service.ts ProductsService)。
|
|
3
|
+
*
|
|
4
|
+
* 管理端操作:Product CRUD + Token 签发。
|
|
5
|
+
*/
|
|
6
|
+
const PREFIX = "/api/admin/services/products";
|
|
7
|
+
/**
|
|
8
|
+
* Product 和 Token 管理调用器。
|
|
9
|
+
*
|
|
10
|
+
* 通过 AdminClient.products 访问:
|
|
11
|
+
* ```ts
|
|
12
|
+
* await admin.products.list();
|
|
13
|
+
* await admin.products.create({ name: "My App" });
|
|
14
|
+
* await admin.products.tokens.apply({ product_id, user_id });
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class ProductsInvoker {
|
|
18
|
+
/** Token 签发 */
|
|
19
|
+
tokens;
|
|
20
|
+
req;
|
|
21
|
+
constructor(opts) {
|
|
22
|
+
this.req = opts.requestJSON;
|
|
23
|
+
this.tokens = new TokenInvoker(opts);
|
|
24
|
+
}
|
|
25
|
+
/** 列出 Product */
|
|
26
|
+
async list() {
|
|
27
|
+
const body = await this.req(`${PREFIX}/list`, { method: "GET" });
|
|
28
|
+
return body.items;
|
|
29
|
+
}
|
|
30
|
+
/** 创建 */
|
|
31
|
+
create(input) {
|
|
32
|
+
return this.req(`${PREFIX}/create`, {
|
|
33
|
+
method: "POST",
|
|
34
|
+
body: JSON.stringify(input),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/** 暂停 */
|
|
38
|
+
pause(product_id) {
|
|
39
|
+
return this.req(`${PREFIX}/pause`, {
|
|
40
|
+
method: "POST",
|
|
41
|
+
body: JSON.stringify({ product_id }),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/** 激活 */
|
|
45
|
+
activate(product_id) {
|
|
46
|
+
return this.req(`${PREFIX}/activate`, {
|
|
47
|
+
method: "POST",
|
|
48
|
+
body: JSON.stringify({ product_id }),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/** 删除 */
|
|
52
|
+
remove(product_id) {
|
|
53
|
+
return this.req(`${PREFIX}/remove`, {
|
|
54
|
+
method: "POST",
|
|
55
|
+
body: JSON.stringify({ product_id }),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** Token 签发调用器 */
|
|
60
|
+
class TokenInvoker {
|
|
61
|
+
req;
|
|
62
|
+
constructor(opts) {
|
|
63
|
+
this.req = opts.requestJSON;
|
|
64
|
+
}
|
|
65
|
+
/** 签发 user_token */
|
|
66
|
+
apply(input) {
|
|
67
|
+
return this.req(`${PREFIX}/tokens/apply`, {
|
|
68
|
+
method: "POST",
|
|
69
|
+
body: JSON.stringify(input),
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/invoker/products/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,MAAM,GAAG,8BAA8B,CAAC;AAE9C;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAe;IAC1B,eAAe;IACN,MAAM,CAAe;IAEb,GAAG,CAAyD;IAE7E,YAAY,IAEX;QACC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAuB,GAAG,MAAM,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,SAAS;IACT,MAAM,CAAC,KAAyB;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,SAAS,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,SAAS;IACT,KAAK,CAAC,UAAkB;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,QAAQ,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;SACrC,CAAC,CAAC;IACL,CAAC;IAED,SAAS;IACT,QAAQ,CAAC,UAAkB;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,WAAW,EAAE;YACpC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;SACrC,CAAC,CAAC;IACL,CAAC;IAED,SAAS;IACT,MAAM,CAAC,UAAkB;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,SAAS,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;SACrC,CAAC,CAAC;IACL,CAAC;CACF;AAED,kBAAkB;AAClB,MAAM,YAAY;IACC,GAAG,CAAyD;IAE7E,YAAY,IAEX;QACC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;IAC9B,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,KAAsB;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,eAAe,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Product / Token 类型(对应 core service/products/types.ts + core/auth/types.ts)。
|
|
3
|
+
*/
|
|
4
|
+
/** Product 记录 */
|
|
5
|
+
export interface Product {
|
|
6
|
+
product_id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
status: "active" | "paused";
|
|
9
|
+
created_at: string;
|
|
10
|
+
updated_at: string;
|
|
11
|
+
}
|
|
12
|
+
/** 创建 Product 的输入 */
|
|
13
|
+
export interface ProductCreateInput {
|
|
14
|
+
name: string;
|
|
15
|
+
product_id?: string;
|
|
16
|
+
}
|
|
17
|
+
/** 签发 token 的输入 */
|
|
18
|
+
export interface TokenApplyInput {
|
|
19
|
+
product_id: string;
|
|
20
|
+
user_id: string;
|
|
21
|
+
metadata?: Record<string, unknown>;
|
|
22
|
+
ttl?: string | number;
|
|
23
|
+
}
|
|
24
|
+
/** token 签发结果 */
|
|
25
|
+
export interface TokenApplyResult {
|
|
26
|
+
user_token: string;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/invoker/products/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iBAAiB;AACjB,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAqB;AACrB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,mBAAmB;AACnB,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,iBAAiB;AACjB,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/invoker/products/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 终端用户 SDK。
|
|
3
|
+
*/
|
|
4
|
+
import { AIInvoker } from "../invoker/ai/index.js";
|
|
5
|
+
import { ServiceClient } from "../invoker/invoker.js";
|
|
6
|
+
import type { UserClientOptions } from "./types.js";
|
|
7
|
+
export declare class UserClient {
|
|
8
|
+
readonly ai: AIInvoker;
|
|
9
|
+
readonly serverUrl: string;
|
|
10
|
+
readonly token: string | undefined;
|
|
11
|
+
private readonly product_id?;
|
|
12
|
+
private readonly fetchImpl;
|
|
13
|
+
constructor(options: UserClientOptions);
|
|
14
|
+
/** 获取 Service 调用器 */
|
|
15
|
+
service(name: string): ServiceClient;
|
|
16
|
+
/** 列出已注册的 service ID */
|
|
17
|
+
listServices(): Promise<string[]>;
|
|
18
|
+
private json;
|
|
19
|
+
private raw;
|
|
20
|
+
private withAuth;
|
|
21
|
+
private buildInput;
|
|
22
|
+
private requireProductId;
|
|
23
|
+
private requireToken;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAkB,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,YAAY,CAAC;AAWtE,qBAAa,UAAU;IACrB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IAEvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,OAAO,EAAE,iBAAiB;IAuBtC,qBAAqB;IACrB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAUpC,wBAAwB;IAClB,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IASvC,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,GAAG;IASX,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,YAAY;CAGrB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 终端用户 SDK。
|
|
3
|
+
*/
|
|
4
|
+
import { AIInvoker, serializeModel } from "../invoker/ai/index.js";
|
|
5
|
+
import { ServiceClient } from "../invoker/invoker.js";
|
|
6
|
+
import { defaultFetch, normalizeBaseURL, requestJSON, requestRaw, requiredString, } from "../http.js";
|
|
7
|
+
export class UserClient {
|
|
8
|
+
ai;
|
|
9
|
+
serverUrl;
|
|
10
|
+
token;
|
|
11
|
+
product_id;
|
|
12
|
+
fetchImpl;
|
|
13
|
+
constructor(options) {
|
|
14
|
+
if (!options || typeof options !== "object") {
|
|
15
|
+
throw new TypeError("UserClient options are required");
|
|
16
|
+
}
|
|
17
|
+
this.serverUrl = normalizeBaseURL(options.base_url, "base_url");
|
|
18
|
+
this.token = readOptional(options.user_token);
|
|
19
|
+
this.product_id = readOptional(options.product_id);
|
|
20
|
+
this.fetchImpl = options.fetch ?? defaultFetch();
|
|
21
|
+
this.ai = new AIInvoker({
|
|
22
|
+
baseUrl: this.serverUrl,
|
|
23
|
+
token: this.token,
|
|
24
|
+
requestJSON: (path, init) => this.json(path, init),
|
|
25
|
+
requestRaw: (path, init) => this.raw(path, init),
|
|
26
|
+
buildInput: (input) => this.buildInput(input),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
// ===================================================================
|
|
30
|
+
// Service → Action 调用
|
|
31
|
+
// ===================================================================
|
|
32
|
+
/** 获取 Service 调用器 */
|
|
33
|
+
service(name) {
|
|
34
|
+
const id = String(name ?? "").trim();
|
|
35
|
+
if (!id)
|
|
36
|
+
throw new TypeError("service name is required");
|
|
37
|
+
return new ServiceClient((path, init) => this.json(path, init), "/v1/s", id, this.product_id);
|
|
38
|
+
}
|
|
39
|
+
/** 列出已注册的 service ID */
|
|
40
|
+
async listServices() {
|
|
41
|
+
return this.json("/v1/services", { method: "GET" })
|
|
42
|
+
.then((body) => body.items);
|
|
43
|
+
}
|
|
44
|
+
// ===================================================================
|
|
45
|
+
// 内部
|
|
46
|
+
// ===================================================================
|
|
47
|
+
json(path, init) {
|
|
48
|
+
return requestJSON({
|
|
49
|
+
fetch: this.fetchImpl,
|
|
50
|
+
url: `${this.serverUrl}${path}`,
|
|
51
|
+
init: this.withAuth(init),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
raw(path, init) {
|
|
55
|
+
this.requireToken();
|
|
56
|
+
return requestRaw({
|
|
57
|
+
fetch: this.fetchImpl,
|
|
58
|
+
url: `${this.serverUrl}${path}`,
|
|
59
|
+
init: this.withAuth(init),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
withAuth(init) {
|
|
63
|
+
const headers = {
|
|
64
|
+
"content-type": "application/json",
|
|
65
|
+
...init.headers,
|
|
66
|
+
};
|
|
67
|
+
if (this.token)
|
|
68
|
+
headers.authorization = `Bearer ${this.token}`;
|
|
69
|
+
return { ...init, headers };
|
|
70
|
+
}
|
|
71
|
+
buildInput(input) {
|
|
72
|
+
return {
|
|
73
|
+
...input,
|
|
74
|
+
model: serializeModel(input.model),
|
|
75
|
+
product_id: this.requireProductId(),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
requireProductId() {
|
|
79
|
+
if (!this.product_id)
|
|
80
|
+
throw new TypeError("product_id is required for AI calls");
|
|
81
|
+
return this.product_id;
|
|
82
|
+
}
|
|
83
|
+
requireToken() {
|
|
84
|
+
if (!this.token)
|
|
85
|
+
throw new TypeError("user_token is required for this operation");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function readOptional(value) {
|
|
89
|
+
if (value === undefined)
|
|
90
|
+
return undefined;
|
|
91
|
+
return requiredString(value, "option");
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,cAAc,GAGf,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,UAAU;IACZ,EAAE,CAAY;IAEd,SAAS,CAAS;IAClB,KAAK,CAAqB;IAElB,UAAU,CAAU;IACpB,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,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC;QAEjD,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC;YACtB,OAAO,EAAE,IAAI,CAAC,SAAS;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;YAClD,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;YAChD,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,sEAAsE;IACtE,sBAAsB;IACtB,sEAAsE;IAEtE,qBAAqB;IACrB,OAAO,CAAC,IAAY;QAClB,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACzD,OAAO,IAAI,aAAa,CACtB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EACrC,OAAO,EACP,EAAE,EACJ,IAAI,CAAC,UAAU,CAAE,CAAC;IACpB,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,IAAI,CAAsB,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;aACrE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,sEAAsE;IACtE,KAAK;IACL,sEAAsE;IAE9D,IAAI,CAAI,IAAY,EAAE,IAAqB;QACjD,OAAO,WAAW,CAAI;YACpB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE;YAC/B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAC;IACL,CAAC;IAEO,GAAG,CAAC,IAAY,EAAE,IAAqB;QAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,UAAU,CAAC;YAChB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE;YAC/B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAC;IACL,CAAC;IAEO,QAAQ,CAAC,IAAqB;QACpC,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,GAAG,IAAI,CAAC,OAAO;SAChB,CAAC;QACF,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/D,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC;IAC9B,CAAC;IAEO,UAAU,CAAC,KAAuB;QACxC,OAAO;YACL,GAAG,KAAK;YACR,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;YAClC,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE;SACpC,CAAC;IACJ,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;IACpF,CAAC;CACF;AAED,SAAS,YAAY,CAAC,KAAyB;IAC7C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 用户端类型。
|
|
3
|
+
*/
|
|
4
|
+
import type { UIMessage, UIMessageChunk } from "ai";
|
|
5
|
+
import type { FetchLike } from "../http.js";
|
|
6
|
+
import type { UserModelInput } from "../invoker/ai/types.js";
|
|
7
|
+
/** UserClient 构造参数 */
|
|
8
|
+
export interface UserClientOptions {
|
|
9
|
+
base_url: string;
|
|
10
|
+
product_id?: string;
|
|
11
|
+
user_token?: string;
|
|
12
|
+
fetch?: FetchLike;
|
|
13
|
+
}
|
|
14
|
+
/** AI 模态返回类型 */
|
|
15
|
+
export type UserTextResult = UIMessage;
|
|
16
|
+
export type UserStreamChunk = UIMessageChunk;
|
|
17
|
+
export type UserStreamResult = ReadableStream<UserStreamChunk>;
|
|
18
|
+
export type UserImageResult = UIMessage;
|
|
19
|
+
export type UserVideoResult = UIMessage;
|
|
20
|
+
/** 发给任意 service 的输入 */
|
|
21
|
+
export interface UserServiceInput {
|
|
22
|
+
model?: UserModelInput;
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/user/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,sBAAsB;AACtB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,gBAAgB;AAChB,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC;AACvC,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC;AAC7C,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC;AAC/D,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC;AACxC,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC;AAExC,uBAAuB;AACvB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/user/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visiblebase/client",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "VisibleBase user and admin client SDK.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./bin/index.js",
|
|
@@ -37,12 +37,16 @@
|
|
|
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",
|
|
50
|
+
"@ai-sdk/openai": "^2.0.0"
|
|
47
51
|
}
|
|
48
52
|
}
|
package/bin/AdminClient.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 管理端 SDK。
|
|
3
|
-
*
|
|
4
|
-
* AdminClient 只应该在开发者后端、Console 或其他可信服务端使用。它使用
|
|
5
|
-
* admin_secret_key 管理当前 Base 的 env、products,并派发终端用户 user_token。
|
|
6
|
-
*/
|
|
7
|
-
import type { AdminClientOptions, AdminEnvEntry, AdminEnvUpsertInput, AdminProduct, AdminProductCreateInput, AdminProductIdInput, AdminTokenInput, AdminUserTokenResult, RequestInitLike } from "./types.js";
|
|
8
|
-
/**
|
|
9
|
-
* VisibleBase 管理端客户端。
|
|
10
|
-
*/
|
|
11
|
-
export declare class AdminClient {
|
|
12
|
-
readonly env: AdminEnvClient;
|
|
13
|
-
readonly products: AdminProductsClient;
|
|
14
|
-
readonly users: AdminUsersClient;
|
|
15
|
-
private readonly base_url;
|
|
16
|
-
private readonly admin_secret_key;
|
|
17
|
-
private readonly fetchImpl;
|
|
18
|
-
constructor(options: AdminClientOptions);
|
|
19
|
-
requestJSON<T>(path: string, init: RequestInitLike): Promise<T>;
|
|
20
|
-
private withAuthHeaders;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* 管理 product 的资源客户端。
|
|
24
|
-
*/
|
|
25
|
-
export declare class AdminProductsClient {
|
|
26
|
-
private readonly admin;
|
|
27
|
-
constructor(admin: AdminClient);
|
|
28
|
-
list(): Promise<AdminProduct[]>;
|
|
29
|
-
create(input: AdminProductCreateInput): Promise<AdminProduct>;
|
|
30
|
-
pause(input: AdminProductIdInput): Promise<AdminProduct>;
|
|
31
|
-
activate(input: AdminProductIdInput): Promise<AdminProduct>;
|
|
32
|
-
remove(input: AdminProductIdInput): Promise<unknown>;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* 管理 user_token 的资源客户端。
|
|
36
|
-
*/
|
|
37
|
-
export declare class AdminUsersClient {
|
|
38
|
-
private readonly admin;
|
|
39
|
-
constructor(admin: AdminClient);
|
|
40
|
-
token(input: AdminTokenInput): Promise<AdminUserTokenResult>;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* 管理 Runtime Env 的资源客户端。
|
|
44
|
-
*/
|
|
45
|
-
export declare class AdminEnvClient {
|
|
46
|
-
private readonly admin;
|
|
47
|
-
constructor(admin: AdminClient);
|
|
48
|
-
list(): Promise<AdminEnvEntry[]>;
|
|
49
|
-
upsert(input: AdminEnvUpsertInput): Promise<unknown>;
|
|
50
|
-
remove(key: string): Promise<unknown>;
|
|
51
|
-
import(raw: string): Promise<unknown>;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=AdminClient.d.ts.map
|
package/bin/AdminClient.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/bin/AdminClient.js
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 管理端 SDK。
|
|
3
|
-
*
|
|
4
|
-
* AdminClient 只应该在开发者后端、Console 或其他可信服务端使用。它使用
|
|
5
|
-
* admin_secret_key 管理当前 Base 的 env、products,并派发终端用户 user_token。
|
|
6
|
-
*/
|
|
7
|
-
import { defaultFetch, normalizeBaseURL, requestJSON, requiredString } from "./http.js";
|
|
8
|
-
/**
|
|
9
|
-
* VisibleBase 管理端客户端。
|
|
10
|
-
*/
|
|
11
|
-
export class AdminClient {
|
|
12
|
-
env;
|
|
13
|
-
products;
|
|
14
|
-
users;
|
|
15
|
-
base_url;
|
|
16
|
-
admin_secret_key;
|
|
17
|
-
fetchImpl;
|
|
18
|
-
constructor(options) {
|
|
19
|
-
if (!options || typeof options !== "object") {
|
|
20
|
-
throw new TypeError("AdminClient options are required");
|
|
21
|
-
}
|
|
22
|
-
this.base_url = normalizeBaseURL(options.base_url, "base_url");
|
|
23
|
-
this.admin_secret_key = requiredString(options.admin_secret_key ?? process.env.VISIBLEBASE_ADMIN_SECRET_KEY, "admin_secret_key");
|
|
24
|
-
this.fetchImpl = options.fetch ?? defaultFetch();
|
|
25
|
-
this.env = new AdminEnvClient(this);
|
|
26
|
-
this.products = new AdminProductsClient(this);
|
|
27
|
-
this.users = new AdminUsersClient(this);
|
|
28
|
-
}
|
|
29
|
-
requestJSON(path, init) {
|
|
30
|
-
return requestJSON({
|
|
31
|
-
fetch: this.fetchImpl,
|
|
32
|
-
url: `${this.base_url}${path}`,
|
|
33
|
-
init: this.withAuthHeaders(init),
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
withAuthHeaders(init) {
|
|
37
|
-
return {
|
|
38
|
-
...init,
|
|
39
|
-
headers: {
|
|
40
|
-
"content-type": "application/json",
|
|
41
|
-
authorization: `Bearer ${this.admin_secret_key}`,
|
|
42
|
-
...init.headers,
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* 管理 product 的资源客户端。
|
|
49
|
-
*/
|
|
50
|
-
export class AdminProductsClient {
|
|
51
|
-
admin;
|
|
52
|
-
constructor(admin) {
|
|
53
|
-
this.admin = admin;
|
|
54
|
-
}
|
|
55
|
-
async list() {
|
|
56
|
-
const body = await this.admin.requestJSON("/api/admin/products", {
|
|
57
|
-
method: "GET",
|
|
58
|
-
});
|
|
59
|
-
return body.items;
|
|
60
|
-
}
|
|
61
|
-
create(input) {
|
|
62
|
-
return this.admin.requestJSON("/api/admin/products/create", {
|
|
63
|
-
method: "POST",
|
|
64
|
-
body: JSON.stringify(input),
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
pause(input) {
|
|
68
|
-
return this.admin.requestJSON("/api/admin/products/pause", {
|
|
69
|
-
method: "POST",
|
|
70
|
-
body: JSON.stringify(input),
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
activate(input) {
|
|
74
|
-
return this.admin.requestJSON("/api/admin/products/activate", {
|
|
75
|
-
method: "POST",
|
|
76
|
-
body: JSON.stringify(input),
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
remove(input) {
|
|
80
|
-
return this.admin.requestJSON("/api/admin/products/remove", {
|
|
81
|
-
method: "POST",
|
|
82
|
-
body: JSON.stringify(input),
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* 管理 user_token 的资源客户端。
|
|
88
|
-
*/
|
|
89
|
-
export class AdminUsersClient {
|
|
90
|
-
admin;
|
|
91
|
-
constructor(admin) {
|
|
92
|
-
this.admin = admin;
|
|
93
|
-
}
|
|
94
|
-
token(input) {
|
|
95
|
-
return this.admin.requestJSON("/api/admin/users/token", {
|
|
96
|
-
method: "POST",
|
|
97
|
-
body: JSON.stringify(input),
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* 管理 Runtime Env 的资源客户端。
|
|
103
|
-
*/
|
|
104
|
-
export class AdminEnvClient {
|
|
105
|
-
admin;
|
|
106
|
-
constructor(admin) {
|
|
107
|
-
this.admin = admin;
|
|
108
|
-
}
|
|
109
|
-
async list() {
|
|
110
|
-
const body = await this.admin.requestJSON("/api/admin/env", {
|
|
111
|
-
method: "GET",
|
|
112
|
-
});
|
|
113
|
-
return body.items;
|
|
114
|
-
}
|
|
115
|
-
upsert(input) {
|
|
116
|
-
return this.admin.requestJSON("/api/admin/env/upsert", {
|
|
117
|
-
method: "POST",
|
|
118
|
-
body: JSON.stringify(input),
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
remove(key) {
|
|
122
|
-
return this.admin.requestJSON("/api/admin/env/remove", {
|
|
123
|
-
method: "POST",
|
|
124
|
-
body: JSON.stringify({ key }),
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
import(raw) {
|
|
128
|
-
return this.admin.requestJSON("/api/admin/env/import", {
|
|
129
|
-
method: "POST",
|
|
130
|
-
body: JSON.stringify({ raw }),
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=AdminClient.js.map
|
package/bin/AdminClient.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdminClient.js","sourceRoot":"","sources":["../src/AdminClient.ts"],"names":[],"mappings":"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"}
|
package/bin/UserClient.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 终端用户 SDK。
|
|
3
|
-
*
|
|
4
|
-
* UserClient 只面向开发者产品里的终端客户端。它携带 user_token 调用 Runtime,
|
|
5
|
-
* 不接触 provider API key 或管理端密钥。
|
|
6
|
-
*/
|
|
7
|
-
import type { UserClientOptions } from "./types.js";
|
|
8
|
-
/**
|
|
9
|
-
* VisibleBase 终端用户客户端。
|
|
10
|
-
*/
|
|
11
|
-
export declare class UserClient {
|
|
12
|
-
private readonly base_url;
|
|
13
|
-
private readonly user_token;
|
|
14
|
-
private readonly fetchImpl;
|
|
15
|
-
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>;
|
|
21
|
-
private post;
|
|
22
|
-
private requestJSON;
|
|
23
|
-
private request;
|
|
24
|
-
private withAuthHeaders;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=UserClient.d.ts.map
|
package/bin/UserClient.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/bin/UserClient.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 终端用户 SDK。
|
|
3
|
-
*
|
|
4
|
-
* UserClient 只面向开发者产品里的终端客户端。它携带 user_token 调用 Runtime,
|
|
5
|
-
* 不接触 provider API key 或管理端密钥。
|
|
6
|
-
*/
|
|
7
|
-
import { defaultFetch, normalizeBaseURL, requestJSON, requestRaw, requiredString } from "./http.js";
|
|
8
|
-
/**
|
|
9
|
-
* VisibleBase 终端用户客户端。
|
|
10
|
-
*/
|
|
11
|
-
export class UserClient {
|
|
12
|
-
base_url;
|
|
13
|
-
user_token;
|
|
14
|
-
fetchImpl;
|
|
15
|
-
constructor(options) {
|
|
16
|
-
if (!options || typeof options !== "object") {
|
|
17
|
-
throw new TypeError("UserClient options are required");
|
|
18
|
-
}
|
|
19
|
-
this.base_url = normalizeBaseURL(options.base_url, "base_url");
|
|
20
|
-
this.user_token = requiredString(options.user_token, "user_token");
|
|
21
|
-
this.fetchImpl = options.fetch ?? defaultFetch();
|
|
22
|
-
}
|
|
23
|
-
text(input) {
|
|
24
|
-
return this.post("/v1/text", input);
|
|
25
|
-
}
|
|
26
|
-
image(input) {
|
|
27
|
-
return this.post("/v1/image", input);
|
|
28
|
-
}
|
|
29
|
-
audio(input) {
|
|
30
|
-
return this.post("/v1/audio", input);
|
|
31
|
-
}
|
|
32
|
-
async stream(input) {
|
|
33
|
-
const response = await this.request("/v1/stream", {
|
|
34
|
-
method: "POST",
|
|
35
|
-
body: JSON.stringify(input),
|
|
36
|
-
});
|
|
37
|
-
return response.body;
|
|
38
|
-
}
|
|
39
|
-
models() {
|
|
40
|
-
return this.requestJSON("/v1/models", {
|
|
41
|
-
method: "GET",
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
post(path, input) {
|
|
45
|
-
return this.requestJSON(path, {
|
|
46
|
-
method: "POST",
|
|
47
|
-
body: JSON.stringify(input),
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
requestJSON(path, init) {
|
|
51
|
-
return requestJSON({
|
|
52
|
-
fetch: this.fetchImpl,
|
|
53
|
-
url: `${this.base_url}${path}`,
|
|
54
|
-
init: this.withAuthHeaders(init),
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
request(path, init) {
|
|
58
|
-
return requestRaw({
|
|
59
|
-
fetch: this.fetchImpl,
|
|
60
|
-
url: `${this.base_url}${path}`,
|
|
61
|
-
init: this.withAuthHeaders(init),
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
withAuthHeaders(init) {
|
|
65
|
-
return {
|
|
66
|
-
...init,
|
|
67
|
-
headers: {
|
|
68
|
-
"content-type": "application/json",
|
|
69
|
-
authorization: `Bearer ${this.user_token}`,
|
|
70
|
-
...init.headers,
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=UserClient.js.map
|
package/bin/UserClient.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|