@kweaver-ai/kweaver-sdk 0.5.1 → 0.5.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 +6 -1
- package/README.zh.md +5 -0
- package/dist/api/agent-chat.d.ts +1 -1
- package/dist/api/agent-chat.js +4 -4
- package/dist/api/agent-list.d.ts +35 -0
- package/dist/api/agent-list.js +86 -12
- package/dist/api/bkn-backend.d.ts +60 -0
- package/dist/api/bkn-backend.js +103 -10
- package/dist/api/conversations.d.ts +6 -3
- package/dist/api/conversations.js +26 -27
- package/dist/api/dataflow.js +1 -10
- package/dist/api/datasources.js +1 -10
- package/dist/api/dataviews.js +1 -10
- package/dist/api/headers.d.ts +9 -0
- package/dist/api/headers.js +25 -0
- package/dist/api/knowledge-networks.d.ts +41 -0
- package/dist/api/knowledge-networks.js +69 -22
- package/dist/api/ontology-query.d.ts +14 -1
- package/dist/api/ontology-query.js +63 -49
- package/dist/api/semantic-search.js +2 -12
- package/dist/api/skills.d.ts +141 -0
- package/dist/api/skills.js +216 -0
- package/dist/api/vega.d.ts +63 -0
- package/dist/api/vega.js +130 -10
- package/dist/auth/oauth.d.ts +5 -1
- package/dist/auth/oauth.js +293 -94
- package/dist/cli.js +28 -4
- package/dist/client.d.ts +3 -0
- package/dist/client.js +4 -0
- package/dist/commands/agent.d.ts +33 -1
- package/dist/commands/agent.js +721 -49
- package/dist/commands/auth.js +156 -33
- package/dist/commands/bkn-ops.d.ts +77 -0
- package/dist/commands/bkn-ops.js +1056 -0
- package/dist/commands/bkn-query.d.ts +14 -0
- package/dist/commands/bkn-query.js +370 -0
- package/dist/commands/bkn-schema.d.ts +135 -0
- package/dist/commands/bkn-schema.js +1461 -0
- package/dist/commands/bkn-utils.d.ts +36 -0
- package/dist/commands/bkn-utils.js +102 -0
- package/dist/commands/bkn.d.ts +7 -113
- package/dist/commands/bkn.js +175 -2429
- package/dist/commands/dataview.d.ts +7 -0
- package/dist/commands/dataview.js +38 -2
- package/dist/commands/ds.d.ts +1 -0
- package/dist/commands/ds.js +8 -1
- package/dist/commands/import-csv.d.ts +2 -0
- package/dist/commands/import-csv.js +3 -2
- package/dist/commands/skill.d.ts +26 -0
- package/dist/commands/skill.js +524 -0
- package/dist/commands/vega.js +371 -14
- package/dist/config/jwt.d.ts +6 -0
- package/dist/config/jwt.js +21 -0
- package/dist/config/store.d.ts +37 -5
- package/dist/config/store.js +363 -30
- package/dist/index.d.ts +6 -1
- package/dist/index.js +5 -1
- package/dist/resources/bkn.d.ts +4 -0
- package/dist/resources/bkn.js +4 -0
- package/dist/resources/conversations.d.ts +5 -2
- package/dist/resources/conversations.js +17 -3
- package/dist/resources/skills.d.ts +47 -0
- package/dist/resources/skills.js +47 -0
- package/dist/resources/vega.d.ts +11 -0
- package/dist/resources/vega.js +37 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -133,6 +133,10 @@ const health = await client.vega.health();
|
|
|
133
133
|
// Context Loader (semantic search over a BKN via MCP)
|
|
134
134
|
const cl = client.contextLoader(mcpUrl, "bkn-id");
|
|
135
135
|
const results = await cl.search({ query: "hypertension treatment" });
|
|
136
|
+
|
|
137
|
+
// Skills (registry + market + progressive read)
|
|
138
|
+
const skills = await client.skills.market({ name: "kweaver" });
|
|
139
|
+
const skillMd = await client.skills.fetchContent("skill-id");
|
|
136
140
|
```
|
|
137
141
|
|
|
138
142
|
## CLI Reference
|
|
@@ -145,7 +149,7 @@ kweaver auth status/list/use/delete/logout
|
|
|
145
149
|
kweaver config show / list-bd / set-bd <value> # platform business domain — after login
|
|
146
150
|
kweaver token
|
|
147
151
|
kweaver ds list/get/delete/tables/connect
|
|
148
|
-
kweaver ds import-csv <ds_id> --files <glob> [--table-prefix <p>] [--batch-size 500]
|
|
152
|
+
kweaver ds import-csv <ds_id> --files <glob> [--table-prefix <p>] [--batch-size 500] [--recreate]
|
|
149
153
|
kweaver dataview list/find/get/query/delete
|
|
150
154
|
kweaver bkn list/get/stats/export/create/update/delete
|
|
151
155
|
kweaver bkn create-from-ds <ds_id> --name <name> [--tables t1,t2] [--build]
|
|
@@ -158,6 +162,7 @@ kweaver bkn subgraph / search
|
|
|
158
162
|
kweaver bkn action-execution get
|
|
159
163
|
kweaver bkn action-log list/get/cancel
|
|
160
164
|
kweaver agent list/get/create/update/delete/chat/sessions/history/publish/unpublish
|
|
165
|
+
kweaver skill list/market/get/register/status/delete/content/read-file/download/install
|
|
161
166
|
kweaver vega health/stats/inspect/catalog/resource/connector-type
|
|
162
167
|
kweaver context-loader config set/use/list/show
|
|
163
168
|
kweaver context-loader kn-search/query-object-instance/...
|
package/README.zh.md
CHANGED
|
@@ -122,6 +122,10 @@ const queryRows = await client.dataviews.query(viewId, {
|
|
|
122
122
|
// Context Loader(通过 MCP 对 BKN 做语义搜索)
|
|
123
123
|
const cl = client.contextLoader(mcpUrl, "bkn-id");
|
|
124
124
|
const results = await cl.search({ query: "高血压 治疗" });
|
|
125
|
+
|
|
126
|
+
// Skill(注册表/市场/渐进式读取)
|
|
127
|
+
const skills = await client.skills.market({ name: "kweaver" });
|
|
128
|
+
const skillMd = await client.skills.fetchContent("skill-id");
|
|
125
129
|
```
|
|
126
130
|
|
|
127
131
|
## 命令速查
|
|
@@ -143,6 +147,7 @@ kweaver bkn subgraph
|
|
|
143
147
|
kweaver bkn action-execution get
|
|
144
148
|
kweaver bkn action-log list/get/cancel
|
|
145
149
|
kweaver agent list/get/chat/sessions/history
|
|
150
|
+
kweaver skill list/market/get/register/status/delete/content/read-file/download/install
|
|
146
151
|
kweaver context-loader config set/use/list/show
|
|
147
152
|
kweaver context-loader kn-search/query-object-instance/...
|
|
148
153
|
kweaver call <path> [-X METHOD] [-d BODY] [-H header]
|
package/dist/api/agent-chat.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export interface AgentInfo {
|
|
|
41
41
|
key: string;
|
|
42
42
|
version: string;
|
|
43
43
|
}
|
|
44
|
-
export declare function buildChatUrl(baseUrl: string,
|
|
44
|
+
export declare function buildChatUrl(baseUrl: string, agentKey: string): string;
|
|
45
45
|
export declare function buildAgentInfoUrl(baseUrl: string, agentId: string, version: string): string;
|
|
46
46
|
export declare function fetchAgentInfo(options: {
|
|
47
47
|
baseUrl: string;
|
package/dist/api/agent-chat.js
CHANGED
|
@@ -2,9 +2,9 @@ import { fetchTextOrThrow, HttpError } from "../utils/http.js";
|
|
|
2
2
|
import { normalizeDisplayText } from "../utils/display-text.js";
|
|
3
3
|
const CHAT_PATH = "/api/agent-factory/v1/app";
|
|
4
4
|
const AGENT_INFO_PATH = "/api/agent-factory/v3/agent-market/agent";
|
|
5
|
-
export function buildChatUrl(baseUrl,
|
|
5
|
+
export function buildChatUrl(baseUrl, agentKey) {
|
|
6
6
|
const base = baseUrl.replace(/\/+$/, "");
|
|
7
|
-
return `${base}${CHAT_PATH}/${
|
|
7
|
+
return `${base}${CHAT_PATH}/${agentKey}/chat/completion`;
|
|
8
8
|
}
|
|
9
9
|
export function buildAgentInfoUrl(baseUrl, agentId, version) {
|
|
10
10
|
const base = baseUrl.replace(/\/+$/, "");
|
|
@@ -233,7 +233,7 @@ function applySseDataLine(line, state, verbose, onTextDelta, onProgress) {
|
|
|
233
233
|
}
|
|
234
234
|
export async function sendChatRequest(options) {
|
|
235
235
|
const { baseUrl, accessToken, agentId, agentKey, agentVersion, query, conversationId, stream, verbose, businessDomain = "bd_public", } = options;
|
|
236
|
-
const url = buildChatUrl(baseUrl,
|
|
236
|
+
const url = buildChatUrl(baseUrl, agentKey);
|
|
237
237
|
const body = {
|
|
238
238
|
agent_id: agentId,
|
|
239
239
|
agent_key: agentKey,
|
|
@@ -292,7 +292,7 @@ export async function sendChatRequest(options) {
|
|
|
292
292
|
export async function sendChatRequestStream(options, callbacks) {
|
|
293
293
|
const opts = { ...options, stream: true };
|
|
294
294
|
const { baseUrl, accessToken, agentId, agentKey, agentVersion, query, conversationId, verbose, businessDomain = "bd_public", } = opts;
|
|
295
|
-
const url = buildChatUrl(baseUrl,
|
|
295
|
+
const url = buildChatUrl(baseUrl, agentKey);
|
|
296
296
|
const body = {
|
|
297
297
|
agent_id: agentId,
|
|
298
298
|
agent_key: agentKey,
|
package/dist/api/agent-list.d.ts
CHANGED
|
@@ -51,6 +51,7 @@ export interface PublishAgentOptions {
|
|
|
51
51
|
accessToken: string;
|
|
52
52
|
agentId: string;
|
|
53
53
|
body?: string;
|
|
54
|
+
categoryId?: string;
|
|
54
55
|
businessDomain?: string;
|
|
55
56
|
}
|
|
56
57
|
export declare function publishAgent(options: PublishAgentOptions): Promise<string>;
|
|
@@ -61,3 +62,37 @@ export interface UnpublishAgentOptions {
|
|
|
61
62
|
businessDomain?: string;
|
|
62
63
|
}
|
|
63
64
|
export declare function unpublishAgent(options: UnpublishAgentOptions): Promise<void>;
|
|
65
|
+
export interface ListPersonalAgentsOptions {
|
|
66
|
+
baseUrl: string;
|
|
67
|
+
accessToken: string;
|
|
68
|
+
businessDomain?: string;
|
|
69
|
+
name?: string;
|
|
70
|
+
pagination_marker_str?: string;
|
|
71
|
+
publish_status?: string;
|
|
72
|
+
publish_to_be?: string;
|
|
73
|
+
size?: number;
|
|
74
|
+
}
|
|
75
|
+
export declare function listPersonalAgents(options: ListPersonalAgentsOptions): Promise<string>;
|
|
76
|
+
export interface ListPublishedAgentTemplatesOptions {
|
|
77
|
+
baseUrl: string;
|
|
78
|
+
accessToken: string;
|
|
79
|
+
businessDomain?: string;
|
|
80
|
+
category_id?: string;
|
|
81
|
+
name?: string;
|
|
82
|
+
pagination_marker_str?: string;
|
|
83
|
+
size?: number;
|
|
84
|
+
}
|
|
85
|
+
export declare function listPublishedAgentTemplates(options: ListPublishedAgentTemplatesOptions): Promise<string>;
|
|
86
|
+
export interface GetPublishedAgentTemplateOptions {
|
|
87
|
+
baseUrl: string;
|
|
88
|
+
accessToken: string;
|
|
89
|
+
templateId: string;
|
|
90
|
+
businessDomain?: string;
|
|
91
|
+
}
|
|
92
|
+
export declare function getPublishedAgentTemplate(options: GetPublishedAgentTemplateOptions): Promise<string>;
|
|
93
|
+
export interface ListAgentCategoriesOptions {
|
|
94
|
+
baseUrl: string;
|
|
95
|
+
accessToken: string;
|
|
96
|
+
businessDomain?: string;
|
|
97
|
+
}
|
|
98
|
+
export declare function listAgentCategories(options: ListAgentCategoriesOptions): Promise<string>;
|
package/dist/api/agent-list.js
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import { HttpError } from "../utils/http.js";
|
|
2
|
-
|
|
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
|
+
import { buildHeaders } from "./headers.js";
|
|
12
3
|
export async function listAgents(options) {
|
|
13
4
|
const { baseUrl, accessToken, businessDomain = "bd_public", name = "", offset = 0, limit = 50, category_id = "", custom_space_id = "", is_to_square = 1, } = options;
|
|
14
5
|
const base = baseUrl.replace(/\/+$/, "");
|
|
@@ -110,16 +101,25 @@ export async function deleteAgent(options) {
|
|
|
110
101
|
}
|
|
111
102
|
}
|
|
112
103
|
export async function publishAgent(options) {
|
|
113
|
-
const { baseUrl, accessToken, agentId, body
|
|
104
|
+
const { baseUrl, accessToken, agentId, body, categoryId, businessDomain = "bd_public", } = options;
|
|
114
105
|
const base = baseUrl.replace(/\/+$/, "");
|
|
115
106
|
const url = `${base}/api/agent-factory/v3/agent/${encodeURIComponent(agentId)}/publish`;
|
|
107
|
+
// Build default body if not provided
|
|
108
|
+
const requestBody = body || JSON.stringify({
|
|
109
|
+
business_domain_id: "bd_public",
|
|
110
|
+
category_ids: categoryId ? [categoryId] : [],
|
|
111
|
+
description: "",
|
|
112
|
+
publish_to_where: ["square"],
|
|
113
|
+
publish_to_bes: ["skill_agent"],
|
|
114
|
+
pms_control: null,
|
|
115
|
+
});
|
|
116
116
|
const response = await fetch(url, {
|
|
117
117
|
method: "POST",
|
|
118
118
|
headers: {
|
|
119
119
|
...buildHeaders(accessToken, businessDomain),
|
|
120
120
|
"content-type": "application/json",
|
|
121
121
|
},
|
|
122
|
-
body,
|
|
122
|
+
body: requestBody,
|
|
123
123
|
});
|
|
124
124
|
const responseBody = await response.text();
|
|
125
125
|
if (!response.ok) {
|
|
@@ -140,3 +140,77 @@ export async function unpublishAgent(options) {
|
|
|
140
140
|
throw new HttpError(response.status, response.statusText, responseBody);
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
|
+
export async function listPersonalAgents(options) {
|
|
144
|
+
const { baseUrl, accessToken, businessDomain = "bd_public", name = "", pagination_marker_str = "", publish_status = "", publish_to_be = "", size = 48, } = options;
|
|
145
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
146
|
+
const params = new URLSearchParams();
|
|
147
|
+
if (name)
|
|
148
|
+
params.append("name", name);
|
|
149
|
+
if (pagination_marker_str)
|
|
150
|
+
params.append("pagination_marker_str", pagination_marker_str);
|
|
151
|
+
if (publish_status)
|
|
152
|
+
params.append("publish_status", publish_status);
|
|
153
|
+
if (publish_to_be)
|
|
154
|
+
params.append("publish_to_be", publish_to_be);
|
|
155
|
+
params.append("size", String(size));
|
|
156
|
+
const url = `${base}/api/agent-factory/v3/personal-space/agent-list?${params.toString()}`;
|
|
157
|
+
const response = await fetch(url, {
|
|
158
|
+
method: "GET",
|
|
159
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
160
|
+
});
|
|
161
|
+
const responseBody = await response.text();
|
|
162
|
+
if (!response.ok) {
|
|
163
|
+
throw new HttpError(response.status, response.statusText, responseBody);
|
|
164
|
+
}
|
|
165
|
+
return responseBody;
|
|
166
|
+
}
|
|
167
|
+
export async function listPublishedAgentTemplates(options) {
|
|
168
|
+
const { baseUrl, accessToken, businessDomain = "bd_public", category_id = "", name = "", pagination_marker_str = "", size = 48, } = options;
|
|
169
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
170
|
+
const params = new URLSearchParams();
|
|
171
|
+
if (category_id)
|
|
172
|
+
params.append("category_id", category_id);
|
|
173
|
+
if (name)
|
|
174
|
+
params.append("name", name);
|
|
175
|
+
if (pagination_marker_str)
|
|
176
|
+
params.append("pagination_marker_str", pagination_marker_str);
|
|
177
|
+
params.append("size", String(size));
|
|
178
|
+
const url = `${base}/api/agent-factory/v3/published/agent-tpl?${params.toString()}`;
|
|
179
|
+
const response = await fetch(url, {
|
|
180
|
+
method: "GET",
|
|
181
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
182
|
+
});
|
|
183
|
+
const responseBody = await response.text();
|
|
184
|
+
if (!response.ok) {
|
|
185
|
+
throw new HttpError(response.status, response.statusText, responseBody);
|
|
186
|
+
}
|
|
187
|
+
return responseBody;
|
|
188
|
+
}
|
|
189
|
+
export async function getPublishedAgentTemplate(options) {
|
|
190
|
+
const { baseUrl, accessToken, templateId, businessDomain = "bd_public", } = options;
|
|
191
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
192
|
+
const url = `${base}/api/agent-factory/v3/published/agent-tpl/${encodeURIComponent(templateId)}`;
|
|
193
|
+
const response = await fetch(url, {
|
|
194
|
+
method: "GET",
|
|
195
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
196
|
+
});
|
|
197
|
+
const responseBody = await response.text();
|
|
198
|
+
if (!response.ok) {
|
|
199
|
+
throw new HttpError(response.status, response.statusText, responseBody);
|
|
200
|
+
}
|
|
201
|
+
return responseBody;
|
|
202
|
+
}
|
|
203
|
+
export async function listAgentCategories(options) {
|
|
204
|
+
const { baseUrl, accessToken, businessDomain = "bd_public", } = options;
|
|
205
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
206
|
+
const url = `${base}/api/agent-factory/v3/category`;
|
|
207
|
+
const response = await fetch(url, {
|
|
208
|
+
method: "GET",
|
|
209
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
210
|
+
});
|
|
211
|
+
const responseBody = await response.text();
|
|
212
|
+
if (!response.ok) {
|
|
213
|
+
throw new HttpError(response.status, response.statusText, responseBody);
|
|
214
|
+
}
|
|
215
|
+
return responseBody;
|
|
216
|
+
}
|
|
@@ -6,6 +6,66 @@ export interface UploadBknOptions {
|
|
|
6
6
|
branch?: string;
|
|
7
7
|
}
|
|
8
8
|
export declare function uploadBkn(options: UploadBknOptions): Promise<string>;
|
|
9
|
+
export interface BknBackendBaseOptions {
|
|
10
|
+
baseUrl: string;
|
|
11
|
+
accessToken: string;
|
|
12
|
+
businessDomain?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface BknBackendKnOptions extends BknBackendBaseOptions {
|
|
15
|
+
knId: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ConceptGroupOptions extends BknBackendKnOptions {
|
|
18
|
+
cgId: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ConceptGroupBodyOptions extends BknBackendKnOptions {
|
|
21
|
+
body: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ConceptGroupMutateOptions extends ConceptGroupOptions {
|
|
24
|
+
body: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ConceptGroupRemoveMembersOptions extends ConceptGroupOptions {
|
|
27
|
+
otIds: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function listConceptGroups(opts: BknBackendKnOptions): Promise<string>;
|
|
30
|
+
export declare function getConceptGroup(opts: ConceptGroupOptions): Promise<string>;
|
|
31
|
+
export declare function createConceptGroup(opts: ConceptGroupBodyOptions): Promise<string>;
|
|
32
|
+
export declare function updateConceptGroup(opts: ConceptGroupMutateOptions): Promise<string>;
|
|
33
|
+
export declare function deleteConceptGroup(opts: ConceptGroupOptions): Promise<string>;
|
|
34
|
+
export declare function addConceptGroupMembers(opts: ConceptGroupMutateOptions): Promise<string>;
|
|
35
|
+
export declare function removeConceptGroupMembers(opts: ConceptGroupRemoveMembersOptions): Promise<string>;
|
|
36
|
+
export interface ActionScheduleOptions extends BknBackendKnOptions {
|
|
37
|
+
scheduleId: string;
|
|
38
|
+
}
|
|
39
|
+
export interface ActionScheduleBodyOptions extends BknBackendKnOptions {
|
|
40
|
+
body: string;
|
|
41
|
+
}
|
|
42
|
+
export interface ActionScheduleMutateOptions extends ActionScheduleOptions {
|
|
43
|
+
body: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ActionScheduleDeleteOptions extends BknBackendKnOptions {
|
|
46
|
+
scheduleIds: string;
|
|
47
|
+
}
|
|
48
|
+
export declare function listActionSchedules(opts: BknBackendKnOptions): Promise<string>;
|
|
49
|
+
export declare function getActionSchedule(opts: ActionScheduleOptions): Promise<string>;
|
|
50
|
+
export declare function createActionSchedule(opts: ActionScheduleBodyOptions): Promise<string>;
|
|
51
|
+
export declare function updateActionSchedule(opts: ActionScheduleMutateOptions): Promise<string>;
|
|
52
|
+
export declare function setActionScheduleStatus(opts: ActionScheduleMutateOptions): Promise<string>;
|
|
53
|
+
export declare function deleteActionSchedules(opts: ActionScheduleDeleteOptions): Promise<string>;
|
|
54
|
+
export interface JobOptions extends BknBackendKnOptions {
|
|
55
|
+
jobId: string;
|
|
56
|
+
}
|
|
57
|
+
export interface JobDeleteOptions extends BknBackendKnOptions {
|
|
58
|
+
jobIds: string;
|
|
59
|
+
}
|
|
60
|
+
export declare function listJobs(opts: BknBackendKnOptions): Promise<string>;
|
|
61
|
+
export declare function getJob(opts: JobOptions): Promise<string>;
|
|
62
|
+
export declare function getJobTasks(opts: JobOptions): Promise<string>;
|
|
63
|
+
export declare function deleteJobs(opts: JobDeleteOptions): Promise<string>;
|
|
64
|
+
export interface RelationTypePathsOptions extends BknBackendKnOptions {
|
|
65
|
+
body: string;
|
|
66
|
+
}
|
|
67
|
+
export declare function queryRelationTypePaths(opts: RelationTypePathsOptions): Promise<string>;
|
|
68
|
+
export declare function listBknResources(opts: BknBackendBaseOptions): Promise<string>;
|
|
9
69
|
export interface DownloadBknOptions {
|
|
10
70
|
baseUrl: string;
|
|
11
71
|
accessToken: string;
|
package/dist/api/bkn-backend.js
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import { HttpError } from "../utils/http.js";
|
|
2
|
-
|
|
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
|
+
import { buildHeaders } from "./headers.js";
|
|
12
3
|
export async function uploadBkn(options) {
|
|
13
4
|
const { baseUrl, accessToken, tarBuffer, businessDomain = "bd_public", branch = "main", } = options;
|
|
14
5
|
const base = baseUrl.replace(/\/+$/, "");
|
|
@@ -28,6 +19,108 @@ export async function uploadBkn(options) {
|
|
|
28
19
|
}
|
|
29
20
|
return body;
|
|
30
21
|
}
|
|
22
|
+
const BKN_BASE = "/api/bkn-backend/v1";
|
|
23
|
+
function knUrl(baseUrl, knId, path) {
|
|
24
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
25
|
+
return `${base}${BKN_BASE}/knowledge-networks/${encodeURIComponent(knId)}/${path}`;
|
|
26
|
+
}
|
|
27
|
+
function baseUrlOnly(baseUrl, path) {
|
|
28
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
29
|
+
return `${base}${BKN_BASE}/${path}`;
|
|
30
|
+
}
|
|
31
|
+
async function bknGet(url, accessToken, businessDomain = "bd_public") {
|
|
32
|
+
const response = await fetch(url, { method: "GET", headers: buildHeaders(accessToken, businessDomain) });
|
|
33
|
+
const body = await response.text();
|
|
34
|
+
if (!response.ok)
|
|
35
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
36
|
+
return body;
|
|
37
|
+
}
|
|
38
|
+
async function bknPost(url, accessToken, reqBody, businessDomain = "bd_public") {
|
|
39
|
+
const response = await fetch(url, {
|
|
40
|
+
method: "POST",
|
|
41
|
+
headers: { ...buildHeaders(accessToken, businessDomain), "content-type": "application/json" },
|
|
42
|
+
body: reqBody,
|
|
43
|
+
});
|
|
44
|
+
const body = await response.text();
|
|
45
|
+
if (!response.ok)
|
|
46
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
47
|
+
return body;
|
|
48
|
+
}
|
|
49
|
+
async function bknPut(url, accessToken, reqBody, businessDomain = "bd_public") {
|
|
50
|
+
const response = await fetch(url, {
|
|
51
|
+
method: "PUT",
|
|
52
|
+
headers: { ...buildHeaders(accessToken, businessDomain), "content-type": "application/json" },
|
|
53
|
+
body: reqBody,
|
|
54
|
+
});
|
|
55
|
+
const body = await response.text();
|
|
56
|
+
if (!response.ok)
|
|
57
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
58
|
+
return body;
|
|
59
|
+
}
|
|
60
|
+
async function bknDelete(url, accessToken, businessDomain = "bd_public") {
|
|
61
|
+
const response = await fetch(url, { method: "DELETE", headers: buildHeaders(accessToken, businessDomain) });
|
|
62
|
+
const body = await response.text();
|
|
63
|
+
if (!response.ok)
|
|
64
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
65
|
+
return body;
|
|
66
|
+
}
|
|
67
|
+
export function listConceptGroups(opts) {
|
|
68
|
+
return bknGet(knUrl(opts.baseUrl, opts.knId, "concept-groups"), opts.accessToken, opts.businessDomain);
|
|
69
|
+
}
|
|
70
|
+
export function getConceptGroup(opts) {
|
|
71
|
+
return bknGet(knUrl(opts.baseUrl, opts.knId, `concept-groups/${encodeURIComponent(opts.cgId)}`), opts.accessToken, opts.businessDomain);
|
|
72
|
+
}
|
|
73
|
+
export function createConceptGroup(opts) {
|
|
74
|
+
return bknPost(knUrl(opts.baseUrl, opts.knId, "concept-groups"), opts.accessToken, opts.body, opts.businessDomain);
|
|
75
|
+
}
|
|
76
|
+
export function updateConceptGroup(opts) {
|
|
77
|
+
return bknPut(knUrl(opts.baseUrl, opts.knId, `concept-groups/${encodeURIComponent(opts.cgId)}`), opts.accessToken, opts.body, opts.businessDomain);
|
|
78
|
+
}
|
|
79
|
+
export function deleteConceptGroup(opts) {
|
|
80
|
+
return bknDelete(knUrl(opts.baseUrl, opts.knId, `concept-groups/${encodeURIComponent(opts.cgId)}`), opts.accessToken, opts.businessDomain);
|
|
81
|
+
}
|
|
82
|
+
export function addConceptGroupMembers(opts) {
|
|
83
|
+
return bknPost(knUrl(opts.baseUrl, opts.knId, `concept-groups/${encodeURIComponent(opts.cgId)}/object-types`), opts.accessToken, opts.body, opts.businessDomain);
|
|
84
|
+
}
|
|
85
|
+
export function removeConceptGroupMembers(opts) {
|
|
86
|
+
return bknDelete(knUrl(opts.baseUrl, opts.knId, `concept-groups/${encodeURIComponent(opts.cgId)}/object-types/${opts.otIds}`), opts.accessToken, opts.businessDomain);
|
|
87
|
+
}
|
|
88
|
+
export function listActionSchedules(opts) {
|
|
89
|
+
return bknGet(knUrl(opts.baseUrl, opts.knId, "action-schedules"), opts.accessToken, opts.businessDomain);
|
|
90
|
+
}
|
|
91
|
+
export function getActionSchedule(opts) {
|
|
92
|
+
return bknGet(knUrl(opts.baseUrl, opts.knId, `action-schedules/${encodeURIComponent(opts.scheduleId)}`), opts.accessToken, opts.businessDomain);
|
|
93
|
+
}
|
|
94
|
+
export function createActionSchedule(opts) {
|
|
95
|
+
return bknPost(knUrl(opts.baseUrl, opts.knId, "action-schedules"), opts.accessToken, opts.body, opts.businessDomain);
|
|
96
|
+
}
|
|
97
|
+
export function updateActionSchedule(opts) {
|
|
98
|
+
return bknPut(knUrl(opts.baseUrl, opts.knId, `action-schedules/${encodeURIComponent(opts.scheduleId)}`), opts.accessToken, opts.body, opts.businessDomain);
|
|
99
|
+
}
|
|
100
|
+
export function setActionScheduleStatus(opts) {
|
|
101
|
+
return bknPut(knUrl(opts.baseUrl, opts.knId, `action-schedules/${encodeURIComponent(opts.scheduleId)}/status`), opts.accessToken, opts.body, opts.businessDomain);
|
|
102
|
+
}
|
|
103
|
+
export function deleteActionSchedules(opts) {
|
|
104
|
+
return bknDelete(knUrl(opts.baseUrl, opts.knId, `action-schedules/${opts.scheduleIds}`), opts.accessToken, opts.businessDomain);
|
|
105
|
+
}
|
|
106
|
+
export function listJobs(opts) {
|
|
107
|
+
return bknGet(knUrl(opts.baseUrl, opts.knId, "jobs"), opts.accessToken, opts.businessDomain);
|
|
108
|
+
}
|
|
109
|
+
export function getJob(opts) {
|
|
110
|
+
return bknGet(knUrl(opts.baseUrl, opts.knId, `jobs/${encodeURIComponent(opts.jobId)}`), opts.accessToken, opts.businessDomain);
|
|
111
|
+
}
|
|
112
|
+
export function getJobTasks(opts) {
|
|
113
|
+
return bknGet(knUrl(opts.baseUrl, opts.knId, `jobs/${encodeURIComponent(opts.jobId)}/tasks`), opts.accessToken, opts.businessDomain);
|
|
114
|
+
}
|
|
115
|
+
export function deleteJobs(opts) {
|
|
116
|
+
return bknDelete(knUrl(opts.baseUrl, opts.knId, `jobs/${opts.jobIds}`), opts.accessToken, opts.businessDomain);
|
|
117
|
+
}
|
|
118
|
+
export function queryRelationTypePaths(opts) {
|
|
119
|
+
return bknPost(knUrl(opts.baseUrl, opts.knId, "relation-type-paths"), opts.accessToken, opts.body, opts.businessDomain);
|
|
120
|
+
}
|
|
121
|
+
export function listBknResources(opts) {
|
|
122
|
+
return bknGet(baseUrlOnly(opts.baseUrl, "resources"), opts.accessToken, opts.businessDomain);
|
|
123
|
+
}
|
|
31
124
|
export async function downloadBkn(options) {
|
|
32
125
|
const { baseUrl, accessToken, knId, businessDomain = "bd_public", branch = "main", } = options;
|
|
33
126
|
const base = baseUrl.replace(/\/+$/, "");
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
export interface ListConversationsOptions {
|
|
2
2
|
baseUrl: string;
|
|
3
3
|
accessToken: string;
|
|
4
|
-
|
|
4
|
+
agentKey: string;
|
|
5
5
|
businessDomain?: string;
|
|
6
|
-
|
|
6
|
+
page?: number;
|
|
7
|
+
size?: number;
|
|
7
8
|
}
|
|
8
9
|
export interface ListMessagesOptions {
|
|
9
10
|
baseUrl: string;
|
|
10
11
|
accessToken: string;
|
|
12
|
+
agentKey: string;
|
|
11
13
|
conversationId: string;
|
|
12
14
|
businessDomain?: string;
|
|
13
|
-
limit?: number;
|
|
14
15
|
}
|
|
15
16
|
export interface GetTracesOptions {
|
|
16
17
|
baseUrl: string;
|
|
17
18
|
accessToken: string;
|
|
19
|
+
agentId: string;
|
|
18
20
|
conversationId: string;
|
|
21
|
+
businessDomain?: string;
|
|
19
22
|
}
|
|
20
23
|
/**
|
|
21
24
|
* List conversations for an agent.
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
function buildConversationsUrl(baseUrl,
|
|
1
|
+
function buildConversationsUrl(baseUrl, agentKey) {
|
|
2
2
|
const base = baseUrl.replace(/\/+$/, "");
|
|
3
|
-
return `${base}/api/agent-
|
|
3
|
+
return `${base}/api/agent-factory/v1/app/${agentKey}/conversation`;
|
|
4
4
|
}
|
|
5
|
-
function buildMessagesUrl(baseUrl, conversationId) {
|
|
5
|
+
function buildMessagesUrl(baseUrl, agentKey, conversationId) {
|
|
6
6
|
const base = baseUrl.replace(/\/+$/, "");
|
|
7
|
-
return `${base}/api/agent-
|
|
7
|
+
return `${base}/api/agent-factory/v1/app/${agentKey}/conversation/${conversationId}`;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* List conversations for an agent.
|
|
11
11
|
* Returns empty array on 404 (endpoint may not be available in all deployments).
|
|
12
12
|
*/
|
|
13
13
|
export async function listConversations(opts) {
|
|
14
|
-
const { baseUrl, accessToken,
|
|
15
|
-
const url = new URL(buildConversationsUrl(baseUrl,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
14
|
+
const { baseUrl, accessToken, agentKey, businessDomain = "bd_public", page = 1, size = 10 } = opts;
|
|
15
|
+
const url = new URL(buildConversationsUrl(baseUrl, agentKey));
|
|
16
|
+
url.searchParams.set("page", String(page));
|
|
17
|
+
url.searchParams.set("size", String(size));
|
|
19
18
|
const response = await fetch(url.toString(), {
|
|
20
19
|
method: "GET",
|
|
21
20
|
headers: {
|
|
@@ -25,29 +24,35 @@ export async function listConversations(opts) {
|
|
|
25
24
|
"x-business-domain": businessDomain,
|
|
26
25
|
},
|
|
27
26
|
});
|
|
28
|
-
if (response.status === 404) {
|
|
29
|
-
return "[]";
|
|
30
|
-
}
|
|
31
27
|
const body = await response.text();
|
|
32
28
|
if (!response.ok) {
|
|
33
29
|
throw new Error(`listConversations failed: HTTP ${response.status} ${response.statusText} — ${body.slice(0, 200)}`);
|
|
34
30
|
}
|
|
35
31
|
return body || "[]";
|
|
36
32
|
}
|
|
37
|
-
function buildTracesUrl(baseUrl, conversationId) {
|
|
33
|
+
function buildTracesUrl(baseUrl, agentId, conversationId) {
|
|
38
34
|
const base = baseUrl.replace(/\/+$/, "");
|
|
39
|
-
return `${base}/api/agent-
|
|
35
|
+
return `${base}/api/agent-factory/v1/observability/agent/${agentId}/conversation/${conversationId}/session`;
|
|
40
36
|
}
|
|
41
37
|
export async function getTracesByConversation(opts) {
|
|
42
|
-
const { baseUrl, accessToken, conversationId } = opts;
|
|
43
|
-
const url = buildTracesUrl(baseUrl, conversationId);
|
|
38
|
+
const { baseUrl, accessToken, agentId, conversationId, businessDomain = "bd_public" } = opts;
|
|
39
|
+
const url = buildTracesUrl(baseUrl, agentId, conversationId);
|
|
44
40
|
const response = await fetch(url, {
|
|
45
|
-
method: "
|
|
41
|
+
method: "POST",
|
|
46
42
|
headers: {
|
|
43
|
+
"Content-Type": "application/json",
|
|
47
44
|
accept: "application/json",
|
|
48
45
|
authorization: `Bearer ${accessToken}`,
|
|
49
46
|
token: accessToken,
|
|
47
|
+
"x-business-domain": businessDomain,
|
|
50
48
|
},
|
|
49
|
+
body: JSON.stringify({
|
|
50
|
+
agent_id: agentId,
|
|
51
|
+
start_time: 1,
|
|
52
|
+
end_time: Date.now() + 86400000,
|
|
53
|
+
page: 1,
|
|
54
|
+
size: 50,
|
|
55
|
+
}),
|
|
51
56
|
});
|
|
52
57
|
const body = await response.text();
|
|
53
58
|
if (!response.ok) {
|
|
@@ -60,12 +65,9 @@ export async function getTracesByConversation(opts) {
|
|
|
60
65
|
* Returns empty array on 404 (endpoint may not be available in all deployments).
|
|
61
66
|
*/
|
|
62
67
|
export async function listMessages(opts) {
|
|
63
|
-
const { baseUrl, accessToken, conversationId, businessDomain = "bd_public"
|
|
64
|
-
const url =
|
|
65
|
-
|
|
66
|
-
url.searchParams.set("limit", String(limit));
|
|
67
|
-
}
|
|
68
|
-
const response = await fetch(url.toString(), {
|
|
68
|
+
const { baseUrl, accessToken, agentKey, conversationId, businessDomain = "bd_public" } = opts;
|
|
69
|
+
const url = buildMessagesUrl(baseUrl, agentKey, conversationId);
|
|
70
|
+
const response = await fetch(url, {
|
|
69
71
|
method: "GET",
|
|
70
72
|
headers: {
|
|
71
73
|
accept: "application/json",
|
|
@@ -74,12 +76,9 @@ export async function listMessages(opts) {
|
|
|
74
76
|
"x-business-domain": businessDomain,
|
|
75
77
|
},
|
|
76
78
|
});
|
|
77
|
-
if (response.status === 404) {
|
|
78
|
-
return "[]";
|
|
79
|
-
}
|
|
80
79
|
const body = await response.text();
|
|
81
80
|
if (!response.ok) {
|
|
82
81
|
throw new Error(`listMessages failed: HTTP ${response.status} ${response.statusText} — ${body.slice(0, 200)}`);
|
|
83
82
|
}
|
|
84
|
-
return body || "
|
|
83
|
+
return body || "{}";
|
|
85
84
|
}
|
package/dist/api/dataflow.js
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import { HttpError } from "../utils/http.js";
|
|
2
|
-
|
|
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
|
+
import { buildHeaders } from "./headers.js";
|
|
12
3
|
function debugLog(method, url, headers, body) {
|
|
13
4
|
if (!process.env["KWEAVER_DEBUG_HTTP"])
|
|
14
5
|
return;
|
package/dist/api/datasources.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { HttpError } from "../utils/http.js";
|
|
2
2
|
import { encryptPassword } from "../utils/crypto.js";
|
|
3
|
+
import { buildHeaders } from "./headers.js";
|
|
3
4
|
const HTTPS_PROTOCOLS = new Set(["maxcompute", "anyshare7", "opensearch"]);
|
|
4
5
|
function connectProtocol(dsType) {
|
|
5
6
|
return HTTPS_PROTOCOLS.has(dsType) ? "https" : "jdbc";
|
|
@@ -18,16 +19,6 @@ function makeBinData(type, host, port, database, account, password, schema) {
|
|
|
18
19
|
}
|
|
19
20
|
return d;
|
|
20
21
|
}
|
|
21
|
-
function buildHeaders(accessToken, businessDomain) {
|
|
22
|
-
return {
|
|
23
|
-
accept: "application/json, text/plain, */*",
|
|
24
|
-
"accept-language": "zh-cn",
|
|
25
|
-
authorization: `Bearer ${accessToken}`,
|
|
26
|
-
token: accessToken,
|
|
27
|
-
"x-business-domain": businessDomain,
|
|
28
|
-
"x-language": "zh-cn",
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
22
|
export async function testDatasource(options) {
|
|
32
23
|
const { baseUrl, accessToken, type, host, port, database, account, password, schema, businessDomain = "bd_public", } = options;
|
|
33
24
|
const base = baseUrl.replace(/\/+$/, "");
|
package/dist/api/dataviews.js
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { HttpError } from "../utils/http.js";
|
|
3
|
-
|
|
4
|
-
return {
|
|
5
|
-
accept: "application/json, text/plain, */*",
|
|
6
|
-
"accept-language": "zh-cn",
|
|
7
|
-
authorization: `Bearer ${accessToken}`,
|
|
8
|
-
token: accessToken,
|
|
9
|
-
"x-business-domain": businessDomain,
|
|
10
|
-
"x-language": "zh-cn",
|
|
11
|
-
};
|
|
12
|
-
}
|
|
3
|
+
import { buildHeaders } from "./headers.js";
|
|
13
4
|
function extractViewId(data) {
|
|
14
5
|
if (Array.isArray(data) && data.length > 0) {
|
|
15
6
|
const item = data[0];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared HTTP header builder for all KWeaver API calls.
|
|
3
|
+
*
|
|
4
|
+
* Supports optional x-account-id / x-account-type headers read from
|
|
5
|
+
* environment variables KWEAVER_ACCOUNT_ID and KWEAVER_ACCOUNT_TYPE.
|
|
6
|
+
* These are required by older platform versions (e.g. dip-poc.aishu.cn)
|
|
7
|
+
* that do not infer account info from the token automatically.
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildHeaders(accessToken: string, businessDomain: string): Record<string, string>;
|