@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
@@ -0,0 +1,218 @@
1
+ import { HttpError } from "../utils/http.js";
2
+ import { encryptPassword } from "../utils/crypto.js";
3
+ const HTTPS_PROTOCOLS = new Set(["maxcompute", "anyshare7", "opensearch"]);
4
+ function connectProtocol(dsType) {
5
+ return HTTPS_PROTOCOLS.has(dsType) ? "https" : "jdbc";
6
+ }
7
+ function makeBinData(type, host, port, database, account, password, schema) {
8
+ const d = {
9
+ host,
10
+ port,
11
+ database_name: database,
12
+ connect_protocol: connectProtocol(type),
13
+ account,
14
+ password: encryptPassword(password),
15
+ };
16
+ if (schema !== undefined && schema !== "") {
17
+ d.schema = schema;
18
+ }
19
+ return d;
20
+ }
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
+ export async function testDatasource(options) {
32
+ const { baseUrl, accessToken, type, host, port, database, account, password, schema, businessDomain = "bd_public", } = options;
33
+ const base = baseUrl.replace(/\/+$/, "");
34
+ const url = `${base}/api/data-connection/v1/datasource/test`;
35
+ const body = JSON.stringify({
36
+ type,
37
+ bin_data: makeBinData(type, host, port, database, account, password, schema),
38
+ });
39
+ const response = await fetch(url, {
40
+ method: "POST",
41
+ headers: {
42
+ ...buildHeaders(accessToken, businessDomain),
43
+ "content-type": "application/json",
44
+ },
45
+ body,
46
+ });
47
+ if (!response.ok) {
48
+ const responseBody = await response.text();
49
+ throw new HttpError(response.status, response.statusText, responseBody);
50
+ }
51
+ }
52
+ export async function createDatasource(options) {
53
+ const { baseUrl, accessToken, name, type, host, port, database, account, password, schema, comment, businessDomain = "bd_public", } = options;
54
+ const base = baseUrl.replace(/\/+$/, "");
55
+ const url = `${base}/api/data-connection/v1/datasource`;
56
+ const bodyObj = {
57
+ name,
58
+ type,
59
+ bin_data: makeBinData(type, host, port, database, account, password, schema),
60
+ };
61
+ if (comment) {
62
+ bodyObj.comment = comment;
63
+ }
64
+ const response = await fetch(url, {
65
+ method: "POST",
66
+ headers: {
67
+ ...buildHeaders(accessToken, businessDomain),
68
+ "content-type": "application/json",
69
+ },
70
+ body: JSON.stringify(bodyObj),
71
+ });
72
+ const responseBody = await response.text();
73
+ if (!response.ok) {
74
+ throw new HttpError(response.status, response.statusText, responseBody);
75
+ }
76
+ return responseBody;
77
+ }
78
+ export async function listDatasources(options) {
79
+ const { baseUrl, accessToken, keyword, type, businessDomain = "bd_public", } = options;
80
+ const base = baseUrl.replace(/\/+$/, "");
81
+ const url = new URL(`${base}/api/data-connection/v1/datasource`);
82
+ if (keyword)
83
+ url.searchParams.set("keyword", keyword);
84
+ if (type)
85
+ url.searchParams.set("type", type);
86
+ const response = await fetch(url.toString(), {
87
+ method: "GET",
88
+ headers: buildHeaders(accessToken, businessDomain),
89
+ });
90
+ const body = await response.text();
91
+ if (!response.ok) {
92
+ throw new HttpError(response.status, response.statusText, body);
93
+ }
94
+ return body;
95
+ }
96
+ export async function getDatasource(options) {
97
+ const { baseUrl, accessToken, id, businessDomain = "bd_public", } = options;
98
+ const base = baseUrl.replace(/\/+$/, "");
99
+ const url = `${base}/api/data-connection/v1/datasource/${encodeURIComponent(id)}`;
100
+ const response = await fetch(url, {
101
+ method: "GET",
102
+ headers: buildHeaders(accessToken, businessDomain),
103
+ });
104
+ const body = await response.text();
105
+ if (!response.ok) {
106
+ throw new HttpError(response.status, response.statusText, body);
107
+ }
108
+ return body;
109
+ }
110
+ export async function deleteDatasource(options) {
111
+ const { baseUrl, accessToken, id, businessDomain = "bd_public", } = options;
112
+ const base = baseUrl.replace(/\/+$/, "");
113
+ const url = `${base}/api/data-connection/v1/datasource/${encodeURIComponent(id)}`;
114
+ const response = await fetch(url, {
115
+ method: "DELETE",
116
+ headers: buildHeaders(accessToken, businessDomain),
117
+ });
118
+ if (!response.ok) {
119
+ const body = await response.text();
120
+ throw new HttpError(response.status, response.statusText, body);
121
+ }
122
+ }
123
+ export async function listTables(options) {
124
+ const { baseUrl, accessToken, id, keyword, limit = -1, offset, businessDomain = "bd_public", } = options;
125
+ const base = baseUrl.replace(/\/+$/, "");
126
+ const url = new URL(`${base}/api/data-connection/v1/metadata/data-source/${encodeURIComponent(id)}`);
127
+ url.searchParams.set("limit", String(limit));
128
+ if (keyword)
129
+ url.searchParams.set("keyword", keyword);
130
+ if (offset !== undefined)
131
+ url.searchParams.set("offset", String(offset));
132
+ const response = await fetch(url.toString(), {
133
+ method: "GET",
134
+ headers: buildHeaders(accessToken, businessDomain),
135
+ });
136
+ const body = await response.text();
137
+ if (!response.ok) {
138
+ throw new HttpError(response.status, response.statusText, body);
139
+ }
140
+ return body;
141
+ }
142
+ /** List tables with column details. Optionally triggers metadata scan if no tables found. */
143
+ export async function listTablesWithColumns(options) {
144
+ const { id, autoScan = true, ...rest } = options;
145
+ let body = await listTables({ ...rest, id });
146
+ const parsed = JSON.parse(body);
147
+ let items = Array.isArray(parsed) ? parsed : (parsed.entries ?? parsed.data ?? []);
148
+ if (items.length === 0 && autoScan) {
149
+ await scanMetadata({
150
+ baseUrl: rest.baseUrl,
151
+ accessToken: rest.accessToken,
152
+ id,
153
+ businessDomain: rest.businessDomain,
154
+ });
155
+ body = await listTables({ ...rest, id });
156
+ const parsed2 = JSON.parse(body);
157
+ items = Array.isArray(parsed2) ? parsed2 : (parsed2.entries ?? parsed2.data ?? []);
158
+ }
159
+ const base = rest.baseUrl.replace(/\/+$/, "");
160
+ const tables = [];
161
+ for (const t of items) {
162
+ const tableId = String(t.id ?? "");
163
+ const tableName = String(t.name ?? "");
164
+ let columnsRaw = (t.columns ?? t.fields ?? []);
165
+ if (columnsRaw.length === 0 && tableId) {
166
+ const tableUrl = `${base}/api/data-connection/v1/metadata/table/${encodeURIComponent(tableId)}?limit=-1`;
167
+ const colResponse = await fetch(tableUrl, {
168
+ method: "GET",
169
+ headers: buildHeaders(rest.accessToken, rest.businessDomain ?? "bd_public"),
170
+ });
171
+ const colData = (await colResponse.json());
172
+ columnsRaw = Array.isArray(colData) ? colData : (colData.entries ?? colData.data ?? []);
173
+ }
174
+ const columns = columnsRaw.map((c) => ({
175
+ name: String(c.name ?? c.field_name ?? ""),
176
+ type: String(c.type ?? c.field_type ?? "varchar"),
177
+ comment: typeof c.comment === "string" ? c.comment : undefined,
178
+ }));
179
+ tables.push({ name: tableName, columns });
180
+ }
181
+ return JSON.stringify(tables);
182
+ }
183
+ export async function scanMetadata(options) {
184
+ const { baseUrl, accessToken, id, dsType = "mysql", businessDomain = "bd_public", } = options;
185
+ const base = baseUrl.replace(/\/+$/, "");
186
+ const scanUrl = `${base}/api/data-connection/v1/metadata/scan`;
187
+ const statusUrl = (taskId) => `${base}/api/data-connection/v1/metadata/scan/${taskId}`;
188
+ const scanBody = JSON.stringify({
189
+ scan_name: `sdk_scan_${id.slice(0, 8)}`,
190
+ type: 0,
191
+ ds_info: { ds_id: id, ds_type: dsType },
192
+ use_default_template: true,
193
+ use_multi_threads: true,
194
+ status: "open",
195
+ });
196
+ const scanResponse = await fetch(scanUrl, {
197
+ method: "POST",
198
+ headers: {
199
+ ...buildHeaders(accessToken, businessDomain),
200
+ "content-type": "application/json",
201
+ },
202
+ body: scanBody,
203
+ });
204
+ const scanResult = await scanResponse.json();
205
+ const taskId = scanResult.id ?? "";
206
+ for (let i = 0; i < 30; i += 1) {
207
+ await new Promise((r) => setTimeout(r, 2000));
208
+ const statusResponse = await fetch(statusUrl(taskId), {
209
+ method: "GET",
210
+ headers: buildHeaders(accessToken, businessDomain),
211
+ });
212
+ const statusData = (await statusResponse.json());
213
+ if (statusData.status === "success" || statusData.status === "fail") {
214
+ break;
215
+ }
216
+ }
217
+ return taskId;
218
+ }
@@ -0,0 +1,20 @@
1
+ export interface CreateDataViewOptions {
2
+ baseUrl: string;
3
+ accessToken: string;
4
+ name: string;
5
+ datasourceId: string;
6
+ table: string;
7
+ fields?: Array<{
8
+ name: string;
9
+ type: string;
10
+ }>;
11
+ businessDomain?: string;
12
+ }
13
+ export declare function createDataView(options: CreateDataViewOptions): Promise<string>;
14
+ export interface GetDataViewOptions {
15
+ baseUrl: string;
16
+ accessToken: string;
17
+ id: string;
18
+ businessDomain?: string;
19
+ }
20
+ export declare function getDataView(options: GetDataViewOptions): Promise<string>;
@@ -0,0 +1,72 @@
1
+ import { createHash } from "node:crypto";
2
+ import { HttpError } from "../utils/http.js";
3
+ function buildHeaders(accessToken, businessDomain) {
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
+ }
13
+ function extractViewId(data) {
14
+ if (Array.isArray(data) && data.length > 0) {
15
+ const item = data[0];
16
+ if (typeof item === "string")
17
+ return item;
18
+ if (item && typeof item === "object" && "id" in item) {
19
+ return String(item.id ?? "");
20
+ }
21
+ }
22
+ if (data && typeof data === "object" && "id" in data) {
23
+ return String(data.id ?? "");
24
+ }
25
+ return null;
26
+ }
27
+ export async function createDataView(options) {
28
+ const { baseUrl, accessToken, name, datasourceId, table, fields = [], businessDomain = "bd_public", } = options;
29
+ const viewId = createHash("md5").update(`${datasourceId}:${table}`).digest("hex").slice(0, 35);
30
+ const body = JSON.stringify([
31
+ {
32
+ id: viewId,
33
+ name,
34
+ technical_name: table,
35
+ type: "atomic",
36
+ query_type: "SQL",
37
+ data_source_id: datasourceId,
38
+ group_id: datasourceId,
39
+ fields,
40
+ },
41
+ ]);
42
+ const base = baseUrl.replace(/\/+$/, "");
43
+ const url = `${base}/api/mdl-data-model/v1/data-views`;
44
+ const response = await fetch(url, {
45
+ method: "POST",
46
+ headers: {
47
+ ...buildHeaders(accessToken, businessDomain),
48
+ "content-type": "application/json",
49
+ },
50
+ body,
51
+ });
52
+ const responseBody = await response.text();
53
+ if (!response.ok) {
54
+ throw new HttpError(response.status, response.statusText, responseBody);
55
+ }
56
+ const createdId = extractViewId(JSON.parse(responseBody));
57
+ return createdId ?? viewId;
58
+ }
59
+ export async function getDataView(options) {
60
+ const { baseUrl, accessToken, id, businessDomain = "bd_public", } = options;
61
+ const base = baseUrl.replace(/\/+$/, "");
62
+ const url = `${base}/api/mdl-data-model/v1/data-views/${encodeURIComponent(id)}`;
63
+ const response = await fetch(url, {
64
+ method: "GET",
65
+ headers: buildHeaders(accessToken, businessDomain),
66
+ });
67
+ const body = await response.text();
68
+ if (!response.ok) {
69
+ throw new HttpError(response.status, response.statusText, body);
70
+ }
71
+ return body;
72
+ }
@@ -55,3 +55,87 @@ export interface ListSchemaTypesOptions {
55
55
  export declare function listObjectTypes(options: ListSchemaTypesOptions): Promise<string>;
56
56
  export declare function listRelationTypes(options: ListSchemaTypesOptions): Promise<string>;
57
57
  export declare function listActionTypes(options: ListSchemaTypesOptions): Promise<string>;
58
+ export interface GetObjectTypeOptions {
59
+ baseUrl: string;
60
+ accessToken: string;
61
+ knId: string;
62
+ otId: string;
63
+ businessDomain?: string;
64
+ branch?: string;
65
+ }
66
+ export declare function getObjectType(options: GetObjectTypeOptions): Promise<string>;
67
+ export interface CreateObjectTypesOptions {
68
+ baseUrl: string;
69
+ accessToken: string;
70
+ knId: string;
71
+ body: string;
72
+ businessDomain?: string;
73
+ branch?: string;
74
+ }
75
+ export declare function createObjectTypes(options: CreateObjectTypesOptions): Promise<string>;
76
+ export interface UpdateObjectTypeOptions {
77
+ baseUrl: string;
78
+ accessToken: string;
79
+ knId: string;
80
+ otId: string;
81
+ body: string;
82
+ businessDomain?: string;
83
+ }
84
+ export declare function updateObjectType(options: UpdateObjectTypeOptions): Promise<string>;
85
+ export interface DeleteObjectTypesOptions {
86
+ baseUrl: string;
87
+ accessToken: string;
88
+ knId: string;
89
+ otIds: string;
90
+ businessDomain?: string;
91
+ }
92
+ export declare function deleteObjectTypes(options: DeleteObjectTypesOptions): Promise<void>;
93
+ export interface GetRelationTypeOptions {
94
+ baseUrl: string;
95
+ accessToken: string;
96
+ knId: string;
97
+ rtId: string;
98
+ businessDomain?: string;
99
+ branch?: string;
100
+ }
101
+ export declare function getRelationType(options: GetRelationTypeOptions): Promise<string>;
102
+ export interface CreateRelationTypesOptions {
103
+ baseUrl: string;
104
+ accessToken: string;
105
+ knId: string;
106
+ body: string;
107
+ businessDomain?: string;
108
+ branch?: string;
109
+ }
110
+ export declare function createRelationTypes(options: CreateRelationTypesOptions): Promise<string>;
111
+ export interface UpdateRelationTypeOptions {
112
+ baseUrl: string;
113
+ accessToken: string;
114
+ knId: string;
115
+ rtId: string;
116
+ body: string;
117
+ businessDomain?: string;
118
+ }
119
+ export declare function updateRelationType(options: UpdateRelationTypeOptions): Promise<string>;
120
+ export interface DeleteRelationTypesOptions {
121
+ baseUrl: string;
122
+ accessToken: string;
123
+ knId: string;
124
+ rtIds: string;
125
+ businessDomain?: string;
126
+ }
127
+ export declare function deleteRelationTypes(options: DeleteRelationTypesOptions): Promise<void>;
128
+ export interface BuildKnowledgeNetworkOptions {
129
+ baseUrl: string;
130
+ accessToken: string;
131
+ knId: string;
132
+ businessDomain?: string;
133
+ }
134
+ export declare function buildKnowledgeNetwork(options: BuildKnowledgeNetworkOptions): Promise<void>;
135
+ export interface GetBuildStatusOptions {
136
+ baseUrl: string;
137
+ accessToken: string;
138
+ knId: string;
139
+ businessDomain?: string;
140
+ }
141
+ export declare function getBuildStatus(options: GetBuildStatusOptions): Promise<string>;
@@ -156,3 +156,170 @@ export async function listActionTypes(options) {
156
156
  }
157
157
  return body;
158
158
  }
159
+ export async function getObjectType(options) {
160
+ const { baseUrl, accessToken, knId, otId, businessDomain = "bd_public", branch = "main", } = options;
161
+ const base = baseUrl.replace(/\/+$/, "");
162
+ const url = new URL(`${base}/api/ontology-manager/v1/knowledge-networks/${encodeURIComponent(knId)}/object-types/${encodeURIComponent(otId)}`);
163
+ url.searchParams.set("branch", branch);
164
+ const response = await fetch(url.toString(), {
165
+ method: "GET",
166
+ headers: buildHeaders(accessToken, businessDomain),
167
+ });
168
+ const body = await response.text();
169
+ if (!response.ok) {
170
+ throw new HttpError(response.status, response.statusText, body);
171
+ }
172
+ return body;
173
+ }
174
+ export async function createObjectTypes(options) {
175
+ const { baseUrl, accessToken, knId, body, businessDomain = "bd_public", branch = "main", } = options;
176
+ const base = baseUrl.replace(/\/+$/, "");
177
+ const url = new URL(`${base}/api/ontology-manager/v1/knowledge-networks/${encodeURIComponent(knId)}/object-types`);
178
+ url.searchParams.set("branch", branch);
179
+ const response = await fetch(url.toString(), {
180
+ method: "POST",
181
+ headers: {
182
+ ...buildHeaders(accessToken, businessDomain),
183
+ "content-type": "application/json",
184
+ },
185
+ body,
186
+ });
187
+ const responseBody = await response.text();
188
+ if (!response.ok) {
189
+ throw new HttpError(response.status, response.statusText, responseBody);
190
+ }
191
+ return responseBody;
192
+ }
193
+ export async function updateObjectType(options) {
194
+ const { baseUrl, accessToken, knId, otId, body, businessDomain = "bd_public", } = options;
195
+ const base = baseUrl.replace(/\/+$/, "");
196
+ const url = `${base}/api/ontology-manager/v1/knowledge-networks/${encodeURIComponent(knId)}/object-types/${encodeURIComponent(otId)}`;
197
+ const response = await fetch(url, {
198
+ method: "PUT",
199
+ headers: {
200
+ ...buildHeaders(accessToken, businessDomain),
201
+ "content-type": "application/json",
202
+ },
203
+ body,
204
+ });
205
+ const responseBody = await response.text();
206
+ if (!response.ok) {
207
+ throw new HttpError(response.status, response.statusText, responseBody);
208
+ }
209
+ return responseBody;
210
+ }
211
+ export async function deleteObjectTypes(options) {
212
+ const { baseUrl, accessToken, knId, otIds, businessDomain = "bd_public", } = options;
213
+ const base = baseUrl.replace(/\/+$/, "");
214
+ const url = `${base}/api/ontology-manager/v1/knowledge-networks/${encodeURIComponent(knId)}/object-types/${encodeURIComponent(otIds)}`;
215
+ const response = await fetch(url, {
216
+ method: "DELETE",
217
+ headers: buildHeaders(accessToken, businessDomain),
218
+ });
219
+ if (!response.ok) {
220
+ const body = await response.text();
221
+ throw new HttpError(response.status, response.statusText, body);
222
+ }
223
+ }
224
+ export async function getRelationType(options) {
225
+ const { baseUrl, accessToken, knId, rtId, businessDomain = "bd_public", branch = "main", } = options;
226
+ const base = baseUrl.replace(/\/+$/, "");
227
+ const url = new URL(`${base}/api/ontology-manager/v1/knowledge-networks/${encodeURIComponent(knId)}/relation-types/${encodeURIComponent(rtId)}`);
228
+ url.searchParams.set("branch", branch);
229
+ const response = await fetch(url.toString(), {
230
+ method: "GET",
231
+ headers: buildHeaders(accessToken, businessDomain),
232
+ });
233
+ const body = await response.text();
234
+ if (!response.ok) {
235
+ throw new HttpError(response.status, response.statusText, body);
236
+ }
237
+ return body;
238
+ }
239
+ export async function createRelationTypes(options) {
240
+ const { baseUrl, accessToken, knId, body, businessDomain = "bd_public", branch = "main", } = options;
241
+ const base = baseUrl.replace(/\/+$/, "");
242
+ const url = new URL(`${base}/api/ontology-manager/v1/knowledge-networks/${encodeURIComponent(knId)}/relation-types`);
243
+ url.searchParams.set("branch", branch);
244
+ const response = await fetch(url.toString(), {
245
+ method: "POST",
246
+ headers: {
247
+ ...buildHeaders(accessToken, businessDomain),
248
+ "content-type": "application/json",
249
+ },
250
+ body,
251
+ });
252
+ const responseBody = await response.text();
253
+ if (!response.ok) {
254
+ throw new HttpError(response.status, response.statusText, responseBody);
255
+ }
256
+ return responseBody;
257
+ }
258
+ export async function updateRelationType(options) {
259
+ const { baseUrl, accessToken, knId, rtId, body, businessDomain = "bd_public", } = options;
260
+ const base = baseUrl.replace(/\/+$/, "");
261
+ const url = `${base}/api/ontology-manager/v1/knowledge-networks/${encodeURIComponent(knId)}/relation-types/${encodeURIComponent(rtId)}`;
262
+ const response = await fetch(url, {
263
+ method: "PUT",
264
+ headers: {
265
+ ...buildHeaders(accessToken, businessDomain),
266
+ "content-type": "application/json",
267
+ },
268
+ body,
269
+ });
270
+ const responseBody = await response.text();
271
+ if (!response.ok) {
272
+ throw new HttpError(response.status, response.statusText, responseBody);
273
+ }
274
+ return responseBody;
275
+ }
276
+ export async function deleteRelationTypes(options) {
277
+ const { baseUrl, accessToken, knId, rtIds, businessDomain = "bd_public", } = options;
278
+ const base = baseUrl.replace(/\/+$/, "");
279
+ const url = `${base}/api/ontology-manager/v1/knowledge-networks/${encodeURIComponent(knId)}/relation-types/${encodeURIComponent(rtIds)}`;
280
+ const response = await fetch(url, {
281
+ method: "DELETE",
282
+ headers: buildHeaders(accessToken, businessDomain),
283
+ });
284
+ if (!response.ok) {
285
+ const body = await response.text();
286
+ throw new HttpError(response.status, response.statusText, body);
287
+ }
288
+ }
289
+ export async function buildKnowledgeNetwork(options) {
290
+ const { baseUrl, accessToken, knId, businessDomain = "bd_public", } = options;
291
+ const base = baseUrl.replace(/\/+$/, "");
292
+ const url = `${base}/api/ontology-manager/v1/knowledge-networks/${encodeURIComponent(knId)}/jobs`;
293
+ const body = JSON.stringify({
294
+ name: `sdk_build_${knId.slice(0, 8)}`,
295
+ job_type: "full",
296
+ });
297
+ const response = await fetch(url, {
298
+ method: "POST",
299
+ headers: {
300
+ ...buildHeaders(accessToken, businessDomain),
301
+ "content-type": "application/json",
302
+ },
303
+ body,
304
+ });
305
+ if (!response.ok) {
306
+ const responseBody = await response.text();
307
+ throw new HttpError(response.status, response.statusText, responseBody);
308
+ }
309
+ }
310
+ export async function getBuildStatus(options) {
311
+ const { baseUrl, accessToken, knId, businessDomain = "bd_public", } = options;
312
+ const base = baseUrl.replace(/\/+$/, "");
313
+ const url = new URL(`${base}/api/ontology-manager/v1/knowledge-networks/${encodeURIComponent(knId)}/jobs`);
314
+ url.searchParams.set("limit", "1");
315
+ url.searchParams.set("direction", "desc");
316
+ const response = await fetch(url.toString(), {
317
+ method: "GET",
318
+ headers: buildHeaders(accessToken, businessDomain),
319
+ });
320
+ const body = await response.text();
321
+ if (!response.ok) {
322
+ throw new HttpError(response.status, response.statusText, body);
323
+ }
324
+ return body;
325
+ }
@@ -20,7 +20,7 @@ export interface ObjectTypePropertiesOptions extends OntologyQueryBaseOptions {
20
20
  excludeSystemProperties?: string[];
21
21
  }
22
22
  export declare function objectTypeProperties(options: ObjectTypePropertiesOptions): Promise<string>;
23
- /** Subgraph: POST */
23
+ /** Subgraph: POST with X-HTTP-Method-Override: GET */
24
24
  export interface SubgraphOptions extends OntologyQueryBaseOptions {
25
25
  body: string;
26
26
  includeLogicParams?: boolean;
@@ -83,6 +83,7 @@ export async function subgraph(options) {
83
83
  const headers = {
84
84
  ...buildHeaders(accessToken, businessDomain),
85
85
  "content-type": "application/json",
86
+ "X-HTTP-Method-Override": "GET",
86
87
  };
87
88
  const response = await fetch(url.toString(), {
88
89
  method: "POST",