@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.
- package/README.md +139 -0
- package/README.zh.md +139 -0
- package/dist/api/agent-list.d.ts +51 -0
- package/dist/api/agent-list.js +116 -7
- package/dist/api/bkn-backend.d.ts +16 -0
- package/dist/api/bkn-backend.js +46 -0
- package/dist/api/datasources.d.ts +73 -0
- package/dist/api/datasources.js +218 -0
- package/dist/api/dataviews.d.ts +20 -0
- package/dist/api/dataviews.js +72 -0
- package/dist/api/knowledge-networks.d.ts +84 -0
- package/dist/api/knowledge-networks.js +167 -0
- package/dist/api/ontology-query.d.ts +1 -1
- package/dist/api/ontology-query.js +1 -0
- package/dist/api/vega.d.ts +110 -0
- package/dist/api/vega.js +251 -0
- package/dist/auth/oauth.d.ts +3 -1
- package/dist/auth/oauth.js +12 -9
- package/dist/cli.js +15 -0
- package/dist/client.d.ts +19 -0
- package/dist/client.js +76 -13
- package/dist/commands/agent.d.ts +7 -0
- package/dist/commands/agent.js +392 -13
- package/dist/commands/bkn.d.ts +22 -0
- package/dist/commands/bkn.js +1057 -41
- package/dist/commands/call.js +20 -1
- package/dist/commands/context-loader.js +4 -4
- package/dist/commands/ds.d.ts +7 -0
- package/dist/commands/ds.js +283 -0
- package/dist/commands/vega.d.ts +1 -0
- package/dist/commands/vega.js +663 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +1 -1
- package/dist/resources/agents.d.ts +83 -9
- package/dist/resources/agents.js +46 -10
- package/dist/resources/bkn.d.ts +12 -0
- package/dist/resources/bkn.js +12 -0
- package/dist/resources/knowledge-networks.js +19 -58
- package/dist/utils/crypto.d.ts +10 -0
- package/dist/utils/crypto.js +31 -0
- 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
|
package/dist/api/agent-list.d.ts
CHANGED
|
@@ -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>;
|
package/dist/api/agent-list.js
CHANGED
|
@@ -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
|
-
|
|
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>;
|