@kweaver-ai/kweaver-sdk 0.4.1 → 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/dist/api/agent-list.d.ts +44 -0
- package/dist/api/agent-list.js +104 -14
- package/dist/api/bkn-backend.d.ts +16 -0
- package/dist/api/bkn-backend.js +46 -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 +6 -0
- package/dist/client.d.ts +19 -0
- package/dist/client.js +76 -13
- package/dist/commands/agent.js +292 -14
- package/dist/commands/bkn.d.ts +16 -0
- package/dist/commands/bkn.js +259 -4
- package/dist/commands/call.js +20 -1
- 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/knowledge-networks.js +2 -3
- package/package.json +2 -1
package/dist/api/agent-list.d.ts
CHANGED
|
@@ -17,3 +17,47 @@ export interface GetAgentOptions {
|
|
|
17
17
|
businessDomain?: string;
|
|
18
18
|
}
|
|
19
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(/\/+$/, "");
|
|
@@ -13,14 +23,7 @@ export async function listAgents(options) {
|
|
|
13
23
|
});
|
|
14
24
|
const response = await fetch(url, {
|
|
15
25
|
method: "POST",
|
|
16
|
-
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
|
-
},
|
|
26
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
24
27
|
body,
|
|
25
28
|
});
|
|
26
29
|
const responseBody = await response.text();
|
|
@@ -35,14 +38,39 @@ export async function getAgent(options) {
|
|
|
35
38
|
const url = `${base}/api/agent-factory/v3/agent/${encodeURIComponent(agentId)}`;
|
|
36
39
|
const response = await fetch(url, {
|
|
37
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`;
|
|
67
|
+
const response = await fetch(url, {
|
|
68
|
+
method: "POST",
|
|
38
69
|
headers: {
|
|
39
|
-
|
|
40
|
-
"
|
|
41
|
-
authorization: `Bearer ${accessToken}`,
|
|
42
|
-
token: accessToken,
|
|
43
|
-
"x-business-domain": businessDomain,
|
|
44
|
-
"x-language": "zh-CN",
|
|
70
|
+
...buildHeaders(accessToken, businessDomain),
|
|
71
|
+
"content-type": "application/json",
|
|
45
72
|
},
|
|
73
|
+
body,
|
|
46
74
|
});
|
|
47
75
|
const responseBody = await response.text();
|
|
48
76
|
if (!response.ok) {
|
|
@@ -50,3 +78,65 @@ export async function getAgent(options) {
|
|
|
50
78
|
}
|
|
51
79
|
return responseBody;
|
|
52
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
|
+
}
|
|
@@ -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;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
export interface VegaHealthOptions {
|
|
2
|
+
baseUrl: string;
|
|
3
|
+
accessToken: string;
|
|
4
|
+
businessDomain?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function vegaHealth(options: VegaHealthOptions): Promise<string>;
|
|
7
|
+
export interface ListVegaCatalogsOptions {
|
|
8
|
+
baseUrl: string;
|
|
9
|
+
accessToken: string;
|
|
10
|
+
status?: string;
|
|
11
|
+
limit?: number;
|
|
12
|
+
offset?: number;
|
|
13
|
+
businessDomain?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function listVegaCatalogs(options: ListVegaCatalogsOptions): Promise<string>;
|
|
16
|
+
export interface GetVegaCatalogOptions {
|
|
17
|
+
baseUrl: string;
|
|
18
|
+
accessToken: string;
|
|
19
|
+
id: string;
|
|
20
|
+
businessDomain?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function getVegaCatalog(options: GetVegaCatalogOptions): Promise<string>;
|
|
23
|
+
export interface VegaCatalogHealthStatusOptions {
|
|
24
|
+
baseUrl: string;
|
|
25
|
+
accessToken: string;
|
|
26
|
+
ids: string;
|
|
27
|
+
businessDomain?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function vegaCatalogHealthStatus(options: VegaCatalogHealthStatusOptions): Promise<string>;
|
|
30
|
+
export interface TestVegaCatalogConnectionOptions {
|
|
31
|
+
baseUrl: string;
|
|
32
|
+
accessToken: string;
|
|
33
|
+
id: string;
|
|
34
|
+
businessDomain?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function testVegaCatalogConnection(options: TestVegaCatalogConnectionOptions): Promise<string>;
|
|
37
|
+
export interface DiscoverVegaCatalogOptions {
|
|
38
|
+
baseUrl: string;
|
|
39
|
+
accessToken: string;
|
|
40
|
+
id: string;
|
|
41
|
+
wait?: boolean;
|
|
42
|
+
businessDomain?: string;
|
|
43
|
+
}
|
|
44
|
+
export declare function discoverVegaCatalog(options: DiscoverVegaCatalogOptions): Promise<string>;
|
|
45
|
+
export interface ListVegaCatalogResourcesOptions {
|
|
46
|
+
baseUrl: string;
|
|
47
|
+
accessToken: string;
|
|
48
|
+
id: string;
|
|
49
|
+
category?: string;
|
|
50
|
+
limit?: number;
|
|
51
|
+
offset?: number;
|
|
52
|
+
businessDomain?: string;
|
|
53
|
+
}
|
|
54
|
+
export declare function listVegaCatalogResources(options: ListVegaCatalogResourcesOptions): Promise<string>;
|
|
55
|
+
export interface ListVegaResourcesOptions {
|
|
56
|
+
baseUrl: string;
|
|
57
|
+
accessToken: string;
|
|
58
|
+
catalogId?: string;
|
|
59
|
+
category?: string;
|
|
60
|
+
status?: string;
|
|
61
|
+
limit?: number;
|
|
62
|
+
offset?: number;
|
|
63
|
+
businessDomain?: string;
|
|
64
|
+
}
|
|
65
|
+
export declare function listVegaResources(options: ListVegaResourcesOptions): Promise<string>;
|
|
66
|
+
export interface GetVegaResourceOptions {
|
|
67
|
+
baseUrl: string;
|
|
68
|
+
accessToken: string;
|
|
69
|
+
id: string;
|
|
70
|
+
businessDomain?: string;
|
|
71
|
+
}
|
|
72
|
+
export declare function getVegaResource(options: GetVegaResourceOptions): Promise<string>;
|
|
73
|
+
export interface QueryVegaResourceDataOptions {
|
|
74
|
+
baseUrl: string;
|
|
75
|
+
accessToken: string;
|
|
76
|
+
id: string;
|
|
77
|
+
body: string;
|
|
78
|
+
businessDomain?: string;
|
|
79
|
+
}
|
|
80
|
+
export declare function queryVegaResourceData(options: QueryVegaResourceDataOptions): Promise<string>;
|
|
81
|
+
export interface PreviewVegaResourceOptions {
|
|
82
|
+
baseUrl: string;
|
|
83
|
+
accessToken: string;
|
|
84
|
+
id: string;
|
|
85
|
+
limit?: number;
|
|
86
|
+
businessDomain?: string;
|
|
87
|
+
}
|
|
88
|
+
export declare function previewVegaResource(options: PreviewVegaResourceOptions): Promise<string>;
|
|
89
|
+
export interface ListVegaConnectorTypesOptions {
|
|
90
|
+
baseUrl: string;
|
|
91
|
+
accessToken: string;
|
|
92
|
+
businessDomain?: string;
|
|
93
|
+
}
|
|
94
|
+
export declare function listVegaConnectorTypes(options: ListVegaConnectorTypesOptions): Promise<string>;
|
|
95
|
+
export interface GetVegaConnectorTypeOptions {
|
|
96
|
+
baseUrl: string;
|
|
97
|
+
accessToken: string;
|
|
98
|
+
type: string;
|
|
99
|
+
businessDomain?: string;
|
|
100
|
+
}
|
|
101
|
+
export declare function getVegaConnectorType(options: GetVegaConnectorTypeOptions): Promise<string>;
|
|
102
|
+
export interface ListVegaDiscoverTasksOptions {
|
|
103
|
+
baseUrl: string;
|
|
104
|
+
accessToken: string;
|
|
105
|
+
status?: string;
|
|
106
|
+
limit?: number;
|
|
107
|
+
offset?: number;
|
|
108
|
+
businessDomain?: string;
|
|
109
|
+
}
|
|
110
|
+
export declare function listVegaDiscoverTasks(options: ListVegaDiscoverTasksOptions): Promise<string>;
|
package/dist/api/vega.js
ADDED
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { HttpError } from "../utils/http.js";
|
|
2
|
+
const VEGA_BASE = "/api/vega-backend/v1";
|
|
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
|
+
export async function vegaHealth(options) {
|
|
14
|
+
const { baseUrl, accessToken, businessDomain = "bd_public", } = options;
|
|
15
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
16
|
+
const url = `${base}/health`;
|
|
17
|
+
const response = await fetch(url, {
|
|
18
|
+
method: "GET",
|
|
19
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
20
|
+
});
|
|
21
|
+
const body = await response.text();
|
|
22
|
+
if (!response.ok) {
|
|
23
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
24
|
+
}
|
|
25
|
+
return body;
|
|
26
|
+
}
|
|
27
|
+
export async function listVegaCatalogs(options) {
|
|
28
|
+
const { baseUrl, accessToken, status, limit, offset, businessDomain = "bd_public", } = options;
|
|
29
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
30
|
+
const url = new URL(`${base}${VEGA_BASE}/catalogs`);
|
|
31
|
+
if (status)
|
|
32
|
+
url.searchParams.set("status", status);
|
|
33
|
+
if (limit !== undefined)
|
|
34
|
+
url.searchParams.set("limit", String(limit));
|
|
35
|
+
if (offset !== undefined)
|
|
36
|
+
url.searchParams.set("offset", String(offset));
|
|
37
|
+
const response = await fetch(url.toString(), {
|
|
38
|
+
method: "GET",
|
|
39
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
40
|
+
});
|
|
41
|
+
const body = await response.text();
|
|
42
|
+
if (!response.ok) {
|
|
43
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
44
|
+
}
|
|
45
|
+
return body;
|
|
46
|
+
}
|
|
47
|
+
export async function getVegaCatalog(options) {
|
|
48
|
+
const { baseUrl, accessToken, id, businessDomain = "bd_public", } = options;
|
|
49
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
50
|
+
const url = `${base}${VEGA_BASE}/catalogs/${encodeURIComponent(id)}`;
|
|
51
|
+
const response = await fetch(url, {
|
|
52
|
+
method: "GET",
|
|
53
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
54
|
+
});
|
|
55
|
+
const body = await response.text();
|
|
56
|
+
if (!response.ok) {
|
|
57
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
58
|
+
}
|
|
59
|
+
return body;
|
|
60
|
+
}
|
|
61
|
+
export async function vegaCatalogHealthStatus(options) {
|
|
62
|
+
const { baseUrl, accessToken, ids, businessDomain = "bd_public", } = options;
|
|
63
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
64
|
+
const url = new URL(`${base}${VEGA_BASE}/catalogs/health-status`);
|
|
65
|
+
url.searchParams.set("ids", ids);
|
|
66
|
+
const response = await fetch(url.toString(), {
|
|
67
|
+
method: "GET",
|
|
68
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
69
|
+
});
|
|
70
|
+
const body = await response.text();
|
|
71
|
+
if (!response.ok) {
|
|
72
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
73
|
+
}
|
|
74
|
+
return body;
|
|
75
|
+
}
|
|
76
|
+
export async function testVegaCatalogConnection(options) {
|
|
77
|
+
const { baseUrl, accessToken, id, businessDomain = "bd_public", } = options;
|
|
78
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
79
|
+
const url = `${base}${VEGA_BASE}/catalogs/${encodeURIComponent(id)}/test-connection`;
|
|
80
|
+
const response = await fetch(url, {
|
|
81
|
+
method: "POST",
|
|
82
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
83
|
+
});
|
|
84
|
+
const body = await response.text();
|
|
85
|
+
if (!response.ok) {
|
|
86
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
87
|
+
}
|
|
88
|
+
return body;
|
|
89
|
+
}
|
|
90
|
+
export async function discoverVegaCatalog(options) {
|
|
91
|
+
const { baseUrl, accessToken, id, wait, businessDomain = "bd_public", } = options;
|
|
92
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
93
|
+
const endpoint = `${base}${VEGA_BASE}/catalogs/${encodeURIComponent(id)}/discover`;
|
|
94
|
+
let url;
|
|
95
|
+
if (wait !== undefined) {
|
|
96
|
+
const u = new URL(endpoint);
|
|
97
|
+
u.searchParams.set("wait", String(wait));
|
|
98
|
+
url = u.toString();
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
url = endpoint;
|
|
102
|
+
}
|
|
103
|
+
const response = await fetch(url, {
|
|
104
|
+
method: "POST",
|
|
105
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
106
|
+
});
|
|
107
|
+
const body = await response.text();
|
|
108
|
+
if (!response.ok) {
|
|
109
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
110
|
+
}
|
|
111
|
+
return body;
|
|
112
|
+
}
|
|
113
|
+
export async function listVegaCatalogResources(options) {
|
|
114
|
+
const { baseUrl, accessToken, id, category, limit, offset, businessDomain = "bd_public", } = options;
|
|
115
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
116
|
+
const url = new URL(`${base}${VEGA_BASE}/catalogs/${encodeURIComponent(id)}/resources`);
|
|
117
|
+
if (category)
|
|
118
|
+
url.searchParams.set("category", category);
|
|
119
|
+
if (limit !== undefined)
|
|
120
|
+
url.searchParams.set("limit", String(limit));
|
|
121
|
+
if (offset !== undefined)
|
|
122
|
+
url.searchParams.set("offset", String(offset));
|
|
123
|
+
const response = await fetch(url.toString(), {
|
|
124
|
+
method: "GET",
|
|
125
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
126
|
+
});
|
|
127
|
+
const body = await response.text();
|
|
128
|
+
if (!response.ok) {
|
|
129
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
130
|
+
}
|
|
131
|
+
return body;
|
|
132
|
+
}
|
|
133
|
+
export async function listVegaResources(options) {
|
|
134
|
+
const { baseUrl, accessToken, catalogId, category, status, limit, offset, businessDomain = "bd_public", } = options;
|
|
135
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
136
|
+
const url = new URL(`${base}${VEGA_BASE}/resources`);
|
|
137
|
+
if (catalogId)
|
|
138
|
+
url.searchParams.set("catalog_id", catalogId);
|
|
139
|
+
if (category)
|
|
140
|
+
url.searchParams.set("category", category);
|
|
141
|
+
if (status)
|
|
142
|
+
url.searchParams.set("status", status);
|
|
143
|
+
if (limit !== undefined)
|
|
144
|
+
url.searchParams.set("limit", String(limit));
|
|
145
|
+
if (offset !== undefined)
|
|
146
|
+
url.searchParams.set("offset", String(offset));
|
|
147
|
+
const response = await fetch(url.toString(), {
|
|
148
|
+
method: "GET",
|
|
149
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
150
|
+
});
|
|
151
|
+
const body = await response.text();
|
|
152
|
+
if (!response.ok) {
|
|
153
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
154
|
+
}
|
|
155
|
+
return body;
|
|
156
|
+
}
|
|
157
|
+
export async function getVegaResource(options) {
|
|
158
|
+
const { baseUrl, accessToken, id, businessDomain = "bd_public", } = options;
|
|
159
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
160
|
+
const url = `${base}${VEGA_BASE}/resources/${encodeURIComponent(id)}`;
|
|
161
|
+
const response = await fetch(url, {
|
|
162
|
+
method: "GET",
|
|
163
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
164
|
+
});
|
|
165
|
+
const body = await response.text();
|
|
166
|
+
if (!response.ok) {
|
|
167
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
168
|
+
}
|
|
169
|
+
return body;
|
|
170
|
+
}
|
|
171
|
+
export async function queryVegaResourceData(options) {
|
|
172
|
+
const { baseUrl, accessToken, id, body: requestBody, businessDomain = "bd_public", } = options;
|
|
173
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
174
|
+
const url = `${base}${VEGA_BASE}/resources/${encodeURIComponent(id)}/data`;
|
|
175
|
+
const response = await fetch(url, {
|
|
176
|
+
method: "POST",
|
|
177
|
+
headers: {
|
|
178
|
+
...buildHeaders(accessToken, businessDomain),
|
|
179
|
+
"content-type": "application/json",
|
|
180
|
+
},
|
|
181
|
+
body: requestBody,
|
|
182
|
+
});
|
|
183
|
+
const body = await response.text();
|
|
184
|
+
if (!response.ok) {
|
|
185
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
186
|
+
}
|
|
187
|
+
return body;
|
|
188
|
+
}
|
|
189
|
+
export async function previewVegaResource(options) {
|
|
190
|
+
const { baseUrl, accessToken, id, limit = 10, businessDomain = "bd_public", } = options;
|
|
191
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
192
|
+
const url = new URL(`${base}${VEGA_BASE}/resources/${encodeURIComponent(id)}/preview`);
|
|
193
|
+
url.searchParams.set("limit", String(limit));
|
|
194
|
+
const response = await fetch(url.toString(), {
|
|
195
|
+
method: "GET",
|
|
196
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
197
|
+
});
|
|
198
|
+
const body = await response.text();
|
|
199
|
+
if (!response.ok) {
|
|
200
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
201
|
+
}
|
|
202
|
+
return body;
|
|
203
|
+
}
|
|
204
|
+
export async function listVegaConnectorTypes(options) {
|
|
205
|
+
const { baseUrl, accessToken, businessDomain = "bd_public", } = options;
|
|
206
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
207
|
+
const url = `${base}${VEGA_BASE}/connector-types?sort=name&order=asc`;
|
|
208
|
+
const response = await fetch(url, {
|
|
209
|
+
method: "GET",
|
|
210
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
211
|
+
});
|
|
212
|
+
const body = await response.text();
|
|
213
|
+
if (!response.ok) {
|
|
214
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
215
|
+
}
|
|
216
|
+
return body;
|
|
217
|
+
}
|
|
218
|
+
export async function getVegaConnectorType(options) {
|
|
219
|
+
const { baseUrl, accessToken, type, businessDomain = "bd_public", } = options;
|
|
220
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
221
|
+
const url = `${base}${VEGA_BASE}/connector-types/${encodeURIComponent(type)}`;
|
|
222
|
+
const response = await fetch(url, {
|
|
223
|
+
method: "GET",
|
|
224
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
225
|
+
});
|
|
226
|
+
const body = await response.text();
|
|
227
|
+
if (!response.ok) {
|
|
228
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
229
|
+
}
|
|
230
|
+
return body;
|
|
231
|
+
}
|
|
232
|
+
export async function listVegaDiscoverTasks(options) {
|
|
233
|
+
const { baseUrl, accessToken, status, limit, offset, businessDomain = "bd_public", } = options;
|
|
234
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
235
|
+
const url = new URL(`${base}${VEGA_BASE}/discover-tasks`);
|
|
236
|
+
if (status)
|
|
237
|
+
url.searchParams.set("status", status);
|
|
238
|
+
if (limit !== undefined)
|
|
239
|
+
url.searchParams.set("limit", String(limit));
|
|
240
|
+
if (offset !== undefined)
|
|
241
|
+
url.searchParams.set("offset", String(offset));
|
|
242
|
+
const response = await fetch(url.toString(), {
|
|
243
|
+
method: "GET",
|
|
244
|
+
headers: buildHeaders(accessToken, businessDomain),
|
|
245
|
+
});
|
|
246
|
+
const body = await response.text();
|
|
247
|
+
if (!response.ok) {
|
|
248
|
+
throw new HttpError(response.status, response.statusText, body);
|
|
249
|
+
}
|
|
250
|
+
return body;
|
|
251
|
+
}
|
package/dist/auth/oauth.d.ts
CHANGED
|
@@ -46,7 +46,9 @@ export declare function buildAuthorizationUrl(client: ClientConfig, state?: stri
|
|
|
46
46
|
*/
|
|
47
47
|
export declare function callLogoutEndpoint(client: ClientConfig, token: TokenConfig | null): Promise<void>;
|
|
48
48
|
export declare function refreshAccessToken(client: ClientConfig, refreshToken: string): Promise<TokenConfig>;
|
|
49
|
-
export declare function ensureValidToken(
|
|
49
|
+
export declare function ensureValidToken(opts?: {
|
|
50
|
+
forceRefresh?: boolean;
|
|
51
|
+
}): Promise<TokenConfig>;
|
|
50
52
|
export interface AuthLoginOptions {
|
|
51
53
|
baseUrl: string;
|
|
52
54
|
port: number;
|
package/dist/auth/oauth.js
CHANGED
|
@@ -271,13 +271,14 @@ export async function refreshAccessToken(client, refreshToken) {
|
|
|
271
271
|
saveTokenConfig(tokenConfig);
|
|
272
272
|
return tokenConfig;
|
|
273
273
|
}
|
|
274
|
-
export async function ensureValidToken() {
|
|
274
|
+
export async function ensureValidToken(opts) {
|
|
275
275
|
const envToken = process.env.KWEAVER_TOKEN;
|
|
276
276
|
const envBaseUrl = process.env.KWEAVER_BASE_URL;
|
|
277
|
-
if (envToken && envBaseUrl) {
|
|
277
|
+
if (!opts?.forceRefresh && envToken && envBaseUrl) {
|
|
278
|
+
const rawToken = envToken.replace(/^Bearer\s+/i, "");
|
|
278
279
|
return {
|
|
279
280
|
baseUrl: normalizeBaseUrl(envBaseUrl),
|
|
280
|
-
accessToken:
|
|
281
|
+
accessToken: rawToken,
|
|
281
282
|
tokenType: "bearer",
|
|
282
283
|
scope: "openid",
|
|
283
284
|
obtainedAt: new Date().toISOString(),
|
|
@@ -292,12 +293,14 @@ export async function ensureValidToken() {
|
|
|
292
293
|
if (!client || !token) {
|
|
293
294
|
throw new Error(`Missing saved credentials for ${currentPlatform}. Run \`kweaver auth ${currentPlatform}\` first.`);
|
|
294
295
|
}
|
|
295
|
-
if (!
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
296
|
+
if (!opts?.forceRefresh) {
|
|
297
|
+
if (!token.expiresAt) {
|
|
298
|
+
return token;
|
|
299
|
+
}
|
|
300
|
+
const expiresAtMs = Date.parse(token.expiresAt);
|
|
301
|
+
if (Number.isNaN(expiresAtMs) || expiresAtMs - 60_000 > Date.now()) {
|
|
302
|
+
return token;
|
|
303
|
+
}
|
|
301
304
|
}
|
|
302
305
|
if (!token.refreshToken) {
|
|
303
306
|
throw new Error("Access token expired and no refresh token is available. Run auth login again.");
|