@kweaver-ai/kweaver-sdk 0.4.0 → 0.4.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.
Files changed (41) hide show
  1. package/README.md +139 -0
  2. package/README.zh.md +139 -0
  3. package/dist/api/agent-list.d.ts +51 -0
  4. package/dist/api/agent-list.js +116 -7
  5. package/dist/api/bkn-backend.d.ts +16 -0
  6. package/dist/api/bkn-backend.js +46 -0
  7. package/dist/api/datasources.d.ts +73 -0
  8. package/dist/api/datasources.js +218 -0
  9. package/dist/api/dataviews.d.ts +20 -0
  10. package/dist/api/dataviews.js +72 -0
  11. package/dist/api/knowledge-networks.d.ts +84 -0
  12. package/dist/api/knowledge-networks.js +167 -0
  13. package/dist/api/ontology-query.d.ts +1 -1
  14. package/dist/api/ontology-query.js +1 -0
  15. package/dist/api/vega.d.ts +110 -0
  16. package/dist/api/vega.js +251 -0
  17. package/dist/auth/oauth.d.ts +3 -1
  18. package/dist/auth/oauth.js +12 -9
  19. package/dist/cli.js +15 -0
  20. package/dist/client.d.ts +19 -0
  21. package/dist/client.js +76 -13
  22. package/dist/commands/agent.d.ts +7 -0
  23. package/dist/commands/agent.js +392 -13
  24. package/dist/commands/bkn.d.ts +22 -0
  25. package/dist/commands/bkn.js +1057 -41
  26. package/dist/commands/call.js +20 -1
  27. package/dist/commands/context-loader.js +4 -4
  28. package/dist/commands/ds.d.ts +7 -0
  29. package/dist/commands/ds.js +283 -0
  30. package/dist/commands/vega.d.ts +1 -0
  31. package/dist/commands/vega.js +663 -0
  32. package/dist/index.d.ts +3 -2
  33. package/dist/index.js +1 -1
  34. package/dist/resources/agents.d.ts +83 -9
  35. package/dist/resources/agents.js +46 -10
  36. package/dist/resources/bkn.d.ts +12 -0
  37. package/dist/resources/bkn.js +12 -0
  38. package/dist/resources/knowledge-networks.js +19 -58
  39. package/dist/utils/crypto.d.ts +10 -0
  40. package/dist/utils/crypto.js +31 -0
  41. package/package.json +4 -2
package/README.md ADDED
@@ -0,0 +1,139 @@
1
+ # @kweaver-ai/kweaver-sdk
2
+
3
+ TypeScript SDK and CLI for [KWeaver](https://github.com/kweaver-ai/kweaver-sdk) — gives AI agents and applications programmatic access to knowledge networks and Decision Agents.
4
+
5
+ [中文文档](README.zh.md)
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ # CLI (global)
11
+ npm install -g @kweaver-ai/kweaver-sdk
12
+
13
+ # Library
14
+ npm install @kweaver-ai/kweaver-sdk
15
+ ```
16
+
17
+ Requires **Node.js >= 22**.
18
+
19
+ ## Quick Start
20
+
21
+ ### Authenticate
22
+
23
+ ```bash
24
+ kweaver auth login https://your-kweaver-instance.com
25
+ ```
26
+
27
+ Or use environment variables:
28
+
29
+ ```bash
30
+ export KWEAVER_BASE_URL=https://your-kweaver-instance.com
31
+ export KWEAVER_TOKEN=your-token
32
+ ```
33
+
34
+ ### Simple API (recommended)
35
+
36
+ ```typescript
37
+ import kweaver from "@kweaver-ai/kweaver-sdk/kweaver";
38
+
39
+ // Zero-config: reads credentials saved by `kweaver auth login`
40
+ kweaver.configure({ config: true, bknId: "your-bkn-id", agentId: "your-agent-id" });
41
+
42
+ // Search the knowledge network
43
+ const results = await kweaver.search("What risks exist in the supply chain?");
44
+ for (const concept of results.concepts) console.log(concept.concept_name);
45
+
46
+ // Chat with an agent
47
+ const reply = await kweaver.chat("Summarise the top 3 risks");
48
+ console.log(reply.text);
49
+
50
+ // After modifying object types or adding datasources, rebuild the BKN index
51
+ await kweaver.weaver({ wait: true });
52
+
53
+ // List available BKNs and agents
54
+ const bknList = await kweaver.bkns();
55
+ const agentList = await kweaver.agents();
56
+ ```
57
+
58
+ ### Full Client API (advanced)
59
+
60
+ ```typescript
61
+ import { KWeaverClient } from "@kweaver-ai/kweaver-sdk";
62
+
63
+ // Zero-config: reads credentials saved by `kweaver auth login`
64
+ const client = new KWeaverClient();
65
+
66
+ // Or pass credentials explicitly
67
+ const client = new KWeaverClient({
68
+ baseUrl: "https://your-kweaver-instance.com",
69
+ accessToken: "your-token",
70
+ });
71
+
72
+ // Knowledge networks
73
+ const kns = await client.knowledgeNetworks.list({ limit: 10 });
74
+ const ots = await client.knowledgeNetworks.listObjectTypes("bkn-id");
75
+ const rts = await client.knowledgeNetworks.listRelationTypes("bkn-id");
76
+ const ats = await client.knowledgeNetworks.listActionTypes("bkn-id");
77
+
78
+ // Agent chat (single-shot)
79
+ const reply = await client.agents.chat("agent-id", "Hello");
80
+ console.log(reply.text, reply.conversationId);
81
+
82
+ // Agent chat (streaming)
83
+ await client.agents.stream("agent-id", "Hello", {
84
+ onTextDelta: (chunk) => process.stdout.write(chunk),
85
+ });
86
+
87
+ // BKN engine — instance queries, subgraph, action execution
88
+ const instances = await client.bkn.queryInstances("bkn-id", "ot-id", { limit: 20 });
89
+ const graph = await client.bkn.querySubgraph("bkn-id", { /* path spec */ });
90
+ await client.bkn.executeAction("bkn-id", "at-id", { /* params */ });
91
+ const logs = await client.bkn.listActionLogs("bkn-id");
92
+
93
+ // Context Loader (semantic search over a BKN via MCP)
94
+ const cl = client.contextLoader(mcpUrl, "bkn-id");
95
+ const results = await cl.search({ query: "hypertension treatment" });
96
+ ```
97
+
98
+ ## CLI Reference
99
+
100
+ ```
101
+ kweaver auth login/status/list/use/delete/logout
102
+ kweaver token
103
+ kweaver bkn list/get/stats/export/create/update/delete
104
+ kweaver bkn object-type list/get/create/update/delete/query/properties
105
+ kweaver bkn relation-type list/get/create/update/delete
106
+ kweaver bkn action-type list/query/execute
107
+ kweaver bkn subgraph
108
+ kweaver bkn action-execution get
109
+ kweaver bkn action-log list/get/cancel
110
+ kweaver agent list/get/chat/sessions/history
111
+ kweaver context-loader config set/use/list/show
112
+ kweaver context-loader kn-search/query-object-instance/...
113
+ kweaver call <path> [-X METHOD] [-d BODY] [-H header]
114
+ ```
115
+
116
+ ## Environment Variables
117
+
118
+ | Variable | Description |
119
+ |---|---|
120
+ | `KWEAVER_BASE_URL` | KWeaver instance URL |
121
+ | `KWEAVER_BUSINESS_DOMAIN` | Business domain identifier |
122
+ | `KWEAVER_TOKEN` | Access token |
123
+
124
+ ## Using with AI Agents
125
+
126
+ Install the KWeaver skill for Claude Code, Cursor, or other AI coding agents:
127
+
128
+ ```bash
129
+ npx skills add kweaver-ai/kweaver-sdk --skill kweaver-core
130
+ ```
131
+
132
+ ## Links
133
+
134
+ - [GitHub](https://github.com/kweaver-ai/kweaver-sdk)
135
+ - [Python SDK on PyPI](https://pypi.org/project/kweaver-sdk/)
136
+
137
+ ## License
138
+
139
+ MIT
package/README.zh.md ADDED
@@ -0,0 +1,139 @@
1
+ # @kweaver-ai/kweaver-sdk
2
+
3
+ KWeaver TypeScript SDK 和 CLI — 让 AI 智能体与应用程序以编程方式访问知识网络和 Decision Agent。
4
+
5
+ [English](README.md)
6
+
7
+ ## 安装
8
+
9
+ ```bash
10
+ # 全局安装 CLI
11
+ npm install -g @kweaver-ai/kweaver-sdk
12
+
13
+ # 作为库使用
14
+ npm install @kweaver-ai/kweaver-sdk
15
+ ```
16
+
17
+ 需要 **Node.js >= 22**。
18
+
19
+ ## 快速上手
20
+
21
+ ### 认证
22
+
23
+ ```bash
24
+ kweaver auth login https://your-kweaver-instance.com
25
+ ```
26
+
27
+ 或使用环境变量:
28
+
29
+ ```bash
30
+ export KWEAVER_BASE_URL=https://your-kweaver-instance.com
31
+ export KWEAVER_TOKEN=your-token
32
+ ```
33
+
34
+ ### 简洁 API(推荐)
35
+
36
+ ```typescript
37
+ import kweaver from "@kweaver-ai/kweaver-sdk/kweaver";
38
+
39
+ // 使用 `kweaver auth login` 保存的凭据,零配置
40
+ kweaver.configure({ config: true, bknId: "your-bkn-id", agentId: "your-agent-id" });
41
+
42
+ // 搜索知识网络
43
+ const results = await kweaver.search("供应链有哪些关键风险?");
44
+ for (const concept of results.concepts) console.log(concept.concept_name);
45
+
46
+ // 与 Agent 对话
47
+ const reply = await kweaver.chat("总结前三大风险");
48
+ console.log(reply.text);
49
+
50
+ // 接入数据源或修改对象类后,重建 BKN 索引
51
+ await kweaver.weaver({ wait: true });
52
+
53
+ // 查看所有 BKN 和 Agent
54
+ const bknList = await kweaver.bkns();
55
+ const agentList = await kweaver.agents();
56
+ ```
57
+
58
+ ### 底层客户端(高级用法)
59
+
60
+ ```typescript
61
+ import { KWeaverClient } from "@kweaver-ai/kweaver-sdk";
62
+
63
+ // 零配置:自动读取 `kweaver auth login` 保存的凭据
64
+ const client = new KWeaverClient();
65
+
66
+ // 或显式传入凭据
67
+ const client = new KWeaverClient({
68
+ baseUrl: "https://your-kweaver-instance.com",
69
+ accessToken: "your-token",
70
+ });
71
+
72
+ // 知识网络
73
+ const kns = await client.knowledgeNetworks.list({ limit: 10 });
74
+ const ots = await client.knowledgeNetworks.listObjectTypes("bkn-id");
75
+ const rts = await client.knowledgeNetworks.listRelationTypes("bkn-id");
76
+ const ats = await client.knowledgeNetworks.listActionTypes("bkn-id");
77
+
78
+ // Agent 对话(单次)
79
+ const reply = await client.agents.chat("agent-id", "你好");
80
+ console.log(reply.text, reply.conversationId);
81
+
82
+ // Agent 对话(流式)
83
+ await client.agents.stream("agent-id", "你好", {
84
+ onTextDelta: (chunk) => process.stdout.write(chunk),
85
+ });
86
+
87
+ // BKN 引擎:实例查询、子图、Action 执行
88
+ const instances = await client.bkn.queryInstances("bkn-id", "ot-id", { limit: 20 });
89
+ const graph = await client.bkn.querySubgraph("bkn-id", { /* 路径规格 */ });
90
+ await client.bkn.executeAction("bkn-id", "at-id", { /* 参数 */ });
91
+ const logs = await client.bkn.listActionLogs("bkn-id");
92
+
93
+ // Context Loader(通过 MCP 对 BKN 做语义搜索)
94
+ const cl = client.contextLoader(mcpUrl, "bkn-id");
95
+ const results = await cl.search({ query: "高血压 治疗" });
96
+ ```
97
+
98
+ ## 命令速查
99
+
100
+ ```
101
+ kweaver auth login/status/list/use/delete/logout
102
+ kweaver token
103
+ kweaver bkn list/get/stats/export/create/update/delete
104
+ kweaver bkn object-type list/get/create/update/delete/query/properties
105
+ kweaver bkn relation-type list/get/create/update/delete
106
+ kweaver bkn action-type list/query/execute
107
+ kweaver bkn subgraph
108
+ kweaver bkn action-execution get
109
+ kweaver bkn action-log list/get/cancel
110
+ kweaver agent list/get/chat/sessions/history
111
+ kweaver context-loader config set/use/list/show
112
+ kweaver context-loader kn-search/query-object-instance/...
113
+ kweaver call <path> [-X METHOD] [-d BODY] [-H header]
114
+ ```
115
+
116
+ ## 环境变量
117
+
118
+ | 变量 | 说明 |
119
+ |---|---|
120
+ | `KWEAVER_BASE_URL` | KWeaver 实例地址 |
121
+ | `KWEAVER_BUSINESS_DOMAIN` | 业务域标识 |
122
+ | `KWEAVER_TOKEN` | 访问令牌 |
123
+
124
+ ## 在 AI 智能体中使用
125
+
126
+ 为 Claude Code、Cursor 等 AI 编程助手安装 KWeaver 技能:
127
+
128
+ ```bash
129
+ npx skills add kweaver-ai/kweaver-sdk --skill kweaver-core
130
+ ```
131
+
132
+ ## 相关链接
133
+
134
+ - [GitHub](https://github.com/kweaver-ai/kweaver-sdk)
135
+ - [Python SDK on PyPI](https://pypi.org/project/kweaver-sdk/)
136
+
137
+ ## 许可证
138
+
139
+ MIT
@@ -10,3 +10,54 @@ export interface ListAgentsOptions {
10
10
  is_to_square?: number;
11
11
  }
12
12
  export declare function listAgents(options: ListAgentsOptions): Promise<string>;
13
+ export interface GetAgentOptions {
14
+ baseUrl: string;
15
+ accessToken: string;
16
+ agentId: string;
17
+ businessDomain?: string;
18
+ }
19
+ export declare function getAgent(options: GetAgentOptions): Promise<string>;
20
+ export interface GetAgentByKeyOptions {
21
+ baseUrl: string;
22
+ accessToken: string;
23
+ key: string;
24
+ businessDomain?: string;
25
+ }
26
+ export declare function getAgentByKey(options: GetAgentByKeyOptions): Promise<string>;
27
+ export interface CreateAgentOptions {
28
+ baseUrl: string;
29
+ accessToken: string;
30
+ body: string;
31
+ businessDomain?: string;
32
+ }
33
+ export declare function createAgent(options: CreateAgentOptions): Promise<string>;
34
+ export interface UpdateAgentOptions {
35
+ baseUrl: string;
36
+ accessToken: string;
37
+ agentId: string;
38
+ body: string;
39
+ businessDomain?: string;
40
+ }
41
+ export declare function updateAgent(options: UpdateAgentOptions): Promise<string>;
42
+ export interface DeleteAgentOptions {
43
+ baseUrl: string;
44
+ accessToken: string;
45
+ agentId: string;
46
+ businessDomain?: string;
47
+ }
48
+ export declare function deleteAgent(options: DeleteAgentOptions): Promise<void>;
49
+ export interface PublishAgentOptions {
50
+ baseUrl: string;
51
+ accessToken: string;
52
+ agentId: string;
53
+ body?: string;
54
+ businessDomain?: string;
55
+ }
56
+ export declare function publishAgent(options: PublishAgentOptions): Promise<string>;
57
+ export interface UnpublishAgentOptions {
58
+ baseUrl: string;
59
+ accessToken: string;
60
+ agentId: string;
61
+ businessDomain?: string;
62
+ }
63
+ export declare function unpublishAgent(options: UnpublishAgentOptions): Promise<void>;
@@ -1,4 +1,14 @@
1
1
  import { HttpError } from "../utils/http.js";
2
+ function buildHeaders(accessToken, businessDomain) {
3
+ return {
4
+ accept: "application/json, text/plain, */*",
5
+ "accept-language": "zh-CN",
6
+ authorization: `Bearer ${accessToken}`,
7
+ token: accessToken,
8
+ "x-business-domain": businessDomain,
9
+ "x-language": "zh-CN",
10
+ };
11
+ }
2
12
  export async function listAgents(options) {
3
13
  const { baseUrl, accessToken, businessDomain = "bd_public", name = "", offset = 0, limit = 50, category_id = "", custom_space_id = "", is_to_square = 1, } = options;
4
14
  const base = baseUrl.replace(/\/+$/, "");
@@ -11,16 +21,53 @@ export async function listAgents(options) {
11
21
  custom_space_id,
12
22
  is_to_square,
13
23
  });
24
+ const response = await fetch(url, {
25
+ method: "POST",
26
+ headers: buildHeaders(accessToken, businessDomain),
27
+ body,
28
+ });
29
+ const responseBody = await response.text();
30
+ if (!response.ok) {
31
+ throw new HttpError(response.status, response.statusText, responseBody);
32
+ }
33
+ return responseBody;
34
+ }
35
+ export async function getAgent(options) {
36
+ const { baseUrl, accessToken, agentId, businessDomain = "bd_public", } = options;
37
+ const base = baseUrl.replace(/\/+$/, "");
38
+ const url = `${base}/api/agent-factory/v3/agent/${encodeURIComponent(agentId)}`;
39
+ const response = await fetch(url, {
40
+ method: "GET",
41
+ headers: buildHeaders(accessToken, businessDomain),
42
+ });
43
+ const responseBody = await response.text();
44
+ if (!response.ok) {
45
+ throw new HttpError(response.status, response.statusText, responseBody);
46
+ }
47
+ return responseBody;
48
+ }
49
+ export async function getAgentByKey(options) {
50
+ const { baseUrl, accessToken, key, businessDomain = "bd_public", } = options;
51
+ const base = baseUrl.replace(/\/+$/, "");
52
+ const url = `${base}/api/agent-factory/v3/agent/by-key/${encodeURIComponent(key)}`;
53
+ const response = await fetch(url, {
54
+ method: "GET",
55
+ headers: buildHeaders(accessToken, businessDomain),
56
+ });
57
+ const responseBody = await response.text();
58
+ if (!response.ok) {
59
+ throw new HttpError(response.status, response.statusText, responseBody);
60
+ }
61
+ return responseBody;
62
+ }
63
+ export async function createAgent(options) {
64
+ const { baseUrl, accessToken, body, businessDomain = "bd_public", } = options;
65
+ const base = baseUrl.replace(/\/+$/, "");
66
+ const url = `${base}/api/agent-factory/v3/agent`;
14
67
  const response = await fetch(url, {
15
68
  method: "POST",
16
69
  headers: {
17
- accept: "application/json, text/plain, */*",
18
- "accept-language": "zh-CN",
19
- authorization: `Bearer ${accessToken}`,
20
- token: accessToken,
21
- "x-business-domain": businessDomain,
22
- "x-language": "zh-CN",
23
- "x-requested-with": "XMLHttpRequest",
70
+ ...buildHeaders(accessToken, businessDomain),
24
71
  "content-type": "application/json",
25
72
  },
26
73
  body,
@@ -31,3 +78,65 @@ export async function listAgents(options) {
31
78
  }
32
79
  return responseBody;
33
80
  }
81
+ export async function updateAgent(options) {
82
+ const { baseUrl, accessToken, agentId, body, businessDomain = "bd_public", } = options;
83
+ const base = baseUrl.replace(/\/+$/, "");
84
+ const url = `${base}/api/agent-factory/v3/agent/${encodeURIComponent(agentId)}`;
85
+ const response = await fetch(url, {
86
+ method: "PUT",
87
+ headers: {
88
+ ...buildHeaders(accessToken, businessDomain),
89
+ "content-type": "application/json",
90
+ },
91
+ body,
92
+ });
93
+ const responseBody = await response.text();
94
+ if (!response.ok) {
95
+ throw new HttpError(response.status, response.statusText, responseBody);
96
+ }
97
+ return responseBody;
98
+ }
99
+ export async function deleteAgent(options) {
100
+ const { baseUrl, accessToken, agentId, businessDomain = "bd_public", } = options;
101
+ const base = baseUrl.replace(/\/+$/, "");
102
+ const url = `${base}/api/agent-factory/v3/agent/${encodeURIComponent(agentId)}`;
103
+ const response = await fetch(url, {
104
+ method: "DELETE",
105
+ headers: buildHeaders(accessToken, businessDomain),
106
+ });
107
+ if (!response.ok) {
108
+ const responseBody = await response.text();
109
+ throw new HttpError(response.status, response.statusText, responseBody);
110
+ }
111
+ }
112
+ export async function publishAgent(options) {
113
+ const { baseUrl, accessToken, agentId, body = "{}", businessDomain = "bd_public", } = options;
114
+ const base = baseUrl.replace(/\/+$/, "");
115
+ const url = `${base}/api/agent-factory/v3/agent/${encodeURIComponent(agentId)}/publish`;
116
+ const response = await fetch(url, {
117
+ method: "POST",
118
+ headers: {
119
+ ...buildHeaders(accessToken, businessDomain),
120
+ "content-type": "application/json",
121
+ },
122
+ body,
123
+ });
124
+ const responseBody = await response.text();
125
+ if (!response.ok) {
126
+ throw new HttpError(response.status, response.statusText, responseBody);
127
+ }
128
+ return responseBody;
129
+ }
130
+ export async function unpublishAgent(options) {
131
+ const { baseUrl, accessToken, agentId, businessDomain = "bd_public", } = options;
132
+ const base = baseUrl.replace(/\/+$/, "");
133
+ const url = `${base}/api/agent-factory/v3/agent/${encodeURIComponent(agentId)}/unpublish`;
134
+ const response = await fetch(url, {
135
+ method: "PUT",
136
+ headers: buildHeaders(accessToken, businessDomain),
137
+ });
138
+ if (!response.ok) {
139
+ const responseBody = await response.text();
140
+ throw new HttpError(response.status, response.statusText, responseBody);
141
+ }
142
+ }
@@ -0,0 +1,16 @@
1
+ export interface UploadBknOptions {
2
+ baseUrl: string;
3
+ accessToken: string;
4
+ tarBuffer: Buffer;
5
+ businessDomain?: string;
6
+ branch?: string;
7
+ }
8
+ export declare function uploadBkn(options: UploadBknOptions): Promise<string>;
9
+ export interface DownloadBknOptions {
10
+ baseUrl: string;
11
+ accessToken: string;
12
+ knId: string;
13
+ businessDomain?: string;
14
+ branch?: string;
15
+ }
16
+ export declare function downloadBkn(options: DownloadBknOptions): Promise<Buffer>;
@@ -0,0 +1,46 @@
1
+ import { HttpError } from "../utils/http.js";
2
+ function buildHeaders(accessToken, businessDomain) {
3
+ return {
4
+ accept: "application/json, text/plain, */*",
5
+ "accept-language": "zh-cn",
6
+ authorization: `Bearer ${accessToken}`,
7
+ token: accessToken,
8
+ "x-business-domain": businessDomain,
9
+ "x-language": "zh-cn",
10
+ };
11
+ }
12
+ export async function uploadBkn(options) {
13
+ const { baseUrl, accessToken, tarBuffer, businessDomain = "bd_public", branch = "main", } = options;
14
+ const base = baseUrl.replace(/\/+$/, "");
15
+ const url = new URL(`${base}/api/bkn-backend/v1/bkns`);
16
+ url.searchParams.set("branch", branch);
17
+ const form = new FormData();
18
+ form.append("file", new Blob([new Uint8Array(tarBuffer)], { type: "application/octet-stream" }), "bkn.tar");
19
+ const headers = buildHeaders(accessToken, businessDomain);
20
+ const response = await fetch(url.toString(), {
21
+ method: "POST",
22
+ headers,
23
+ body: form,
24
+ });
25
+ const body = await response.text();
26
+ if (!response.ok) {
27
+ throw new HttpError(response.status, response.statusText, body);
28
+ }
29
+ return body;
30
+ }
31
+ export async function downloadBkn(options) {
32
+ const { baseUrl, accessToken, knId, businessDomain = "bd_public", branch = "main", } = options;
33
+ const base = baseUrl.replace(/\/+$/, "");
34
+ const url = new URL(`${base}/api/bkn-backend/v1/bkns/${encodeURIComponent(knId)}`);
35
+ url.searchParams.set("branch", branch);
36
+ const response = await fetch(url.toString(), {
37
+ method: "GET",
38
+ headers: buildHeaders(accessToken, businessDomain),
39
+ });
40
+ if (!response.ok) {
41
+ const body = await response.text();
42
+ throw new HttpError(response.status, response.statusText, body);
43
+ }
44
+ const arrayBuffer = await response.arrayBuffer();
45
+ return Buffer.from(arrayBuffer);
46
+ }
@@ -0,0 +1,73 @@
1
+ export interface TestDatasourceOptions {
2
+ baseUrl: string;
3
+ accessToken: string;
4
+ type: string;
5
+ host: string;
6
+ port: number;
7
+ database: string;
8
+ account: string;
9
+ password: string;
10
+ schema?: string;
11
+ businessDomain?: string;
12
+ }
13
+ export declare function testDatasource(options: TestDatasourceOptions): Promise<void>;
14
+ export interface CreateDatasourceOptions {
15
+ baseUrl: string;
16
+ accessToken: string;
17
+ name: string;
18
+ type: string;
19
+ host: string;
20
+ port: number;
21
+ database: string;
22
+ account: string;
23
+ password: string;
24
+ schema?: string;
25
+ comment?: string;
26
+ businessDomain?: string;
27
+ }
28
+ export declare function createDatasource(options: CreateDatasourceOptions): Promise<string>;
29
+ export interface ListDatasourcesOptions {
30
+ baseUrl: string;
31
+ accessToken: string;
32
+ keyword?: string;
33
+ type?: string;
34
+ businessDomain?: string;
35
+ }
36
+ export declare function listDatasources(options: ListDatasourcesOptions): Promise<string>;
37
+ export interface GetDatasourceOptions {
38
+ baseUrl: string;
39
+ accessToken: string;
40
+ id: string;
41
+ businessDomain?: string;
42
+ }
43
+ export declare function getDatasource(options: GetDatasourceOptions): Promise<string>;
44
+ export interface DeleteDatasourceOptions {
45
+ baseUrl: string;
46
+ accessToken: string;
47
+ id: string;
48
+ businessDomain?: string;
49
+ }
50
+ export declare function deleteDatasource(options: DeleteDatasourceOptions): Promise<void>;
51
+ export interface ListTablesOptions {
52
+ baseUrl: string;
53
+ accessToken: string;
54
+ id: string;
55
+ keyword?: string;
56
+ limit?: number;
57
+ offset?: number;
58
+ businessDomain?: string;
59
+ }
60
+ export declare function listTables(options: ListTablesOptions): Promise<string>;
61
+ export interface ListTablesWithColumnsOptions extends ListTablesOptions {
62
+ autoScan?: boolean;
63
+ }
64
+ /** List tables with column details. Optionally triggers metadata scan if no tables found. */
65
+ export declare function listTablesWithColumns(options: ListTablesWithColumnsOptions): Promise<string>;
66
+ export interface ScanMetadataOptions {
67
+ baseUrl: string;
68
+ accessToken: string;
69
+ id: string;
70
+ dsType?: string;
71
+ businessDomain?: string;
72
+ }
73
+ export declare function scanMetadata(options: ScanMetadataOptions): Promise<string>;