@amaster.ai/client 1.1.52-beta.1 → 1.1.52
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/index.cjs +0 -283
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -135
- package/dist/index.d.ts +3 -135
- package/dist/index.js +0 -283
- package/dist/index.js.map +1 -1
- package/package.json +11 -14
- package/types/index.d.ts +0 -36
- package/types/knowledge.d.ts +0 -160
package/dist/index.d.ts
CHANGED
|
@@ -6,8 +6,6 @@ import { BpmClient } from '@amaster.ai/bpm-client';
|
|
|
6
6
|
export { ActivityInstanceTree, CamundaVariable, HistoryActivityInstance, HistoryProcessInstance, HistoryTask, ProcessInstance, ProcessVariable, Task, TaskFormSchema, TaskQueryParams, UserOperationLog } from '@amaster.ai/bpm-client';
|
|
7
7
|
import { WorkflowClient } from '@amaster.ai/workflow-client';
|
|
8
8
|
export { WorkflowAsyncRunDetailResponse, WorkflowAsyncRunResponse, WorkflowAsyncRunStatus, WorkflowCallbackConfig, WorkflowFile, WorkflowInputValue, WorkflowNodeUsage, WorkflowRunDetailOptions, WorkflowRunRequest, WorkflowRunResponse, WorkflowRunUsage, WorkflowUsageSummary } from '@amaster.ai/workflow-client';
|
|
9
|
-
import { ClientResult, MiniProgramRuntime, HttpClient } from '@amaster.ai/http-client';
|
|
10
|
-
export { ClientError, ClientResult, HttpClient, RequestConfig } from '@amaster.ai/http-client';
|
|
11
9
|
import { ASRClientConfig, ASRClient, ASRHttpClientConfig, ASRHttpClient } from '@amaster.ai/asr-client';
|
|
12
10
|
export { ASRClient, ASRClientConfig, ASRHttpClient, ASRHttpClientConfig, ASRLanguage } from '@amaster.ai/asr-client';
|
|
13
11
|
import { CopilotClient } from '@amaster.ai/copilot-client';
|
|
@@ -18,128 +16,8 @@ import { TTSClientConfig, TTSClient } from '@amaster.ai/tts-client';
|
|
|
18
16
|
export { TTSClient, TTSClientConfig, TTSRuntime, TTSSnapshot, TTSSpeakController, TTSSpeakControllerOptions, TTSSpeakOptions, TTSStorageAdapter, createTTSSpeakController, preprocessTTSContent, splitTextIntoFragments } from '@amaster.ai/tts-client';
|
|
19
17
|
import { S3Client } from '@amaster.ai/s3-client';
|
|
20
18
|
export { S3Client, S3Metadata, S3UploadOptions, S3UploadProgress, S3UploadProgressPhase, UploadRes } from '@amaster.ai/s3-client';
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
type KnowledgeDocumentListStatus = KnowledgeDocumentStatus | "all";
|
|
24
|
-
type KnowledgeRoles = string | string[];
|
|
25
|
-
type KnowledgeDatasetIdResponse = {
|
|
26
|
-
dataset_id: string;
|
|
27
|
-
};
|
|
28
|
-
type KnowledgeDocument = {
|
|
29
|
-
id: string;
|
|
30
|
-
name: string;
|
|
31
|
-
data_source_type?: string;
|
|
32
|
-
doc_type?: string | null;
|
|
33
|
-
doc_form?: string | null;
|
|
34
|
-
indexing_status?: string;
|
|
35
|
-
display_status?: string;
|
|
36
|
-
enabled?: boolean;
|
|
37
|
-
archived?: boolean;
|
|
38
|
-
word_count?: number;
|
|
39
|
-
hit_count?: number;
|
|
40
|
-
position?: number;
|
|
41
|
-
created_at?: number;
|
|
42
|
-
updated_at?: number;
|
|
43
|
-
completed_segments?: number;
|
|
44
|
-
total_segments?: number;
|
|
45
|
-
[key: string]: unknown;
|
|
46
|
-
};
|
|
47
|
-
type KnowledgeDocumentListResponse = {
|
|
48
|
-
data: KnowledgeDocument[];
|
|
49
|
-
total: number;
|
|
50
|
-
page: number;
|
|
51
|
-
limit: number;
|
|
52
|
-
has_more: boolean;
|
|
53
|
-
};
|
|
54
|
-
type KnowledgeIndexingStatus = {
|
|
55
|
-
id: string;
|
|
56
|
-
name?: string;
|
|
57
|
-
indexing_status?: string;
|
|
58
|
-
processing_started_at?: number | null;
|
|
59
|
-
parsing_completed_at?: number | null;
|
|
60
|
-
cleaning_completed_at?: number | null;
|
|
61
|
-
splitting_completed_at?: number | null;
|
|
62
|
-
completed_at?: number | null;
|
|
63
|
-
paused_at?: number | null;
|
|
64
|
-
stopped_at?: number | null;
|
|
65
|
-
completed_segments?: number;
|
|
66
|
-
total_segments?: number;
|
|
67
|
-
error?: string | null;
|
|
68
|
-
[key: string]: unknown;
|
|
69
|
-
};
|
|
70
|
-
type KnowledgeIndexingStatusResponse = {
|
|
71
|
-
data: KnowledgeIndexingStatus[];
|
|
72
|
-
};
|
|
73
|
-
type KnowledgeUploadResponse = {
|
|
74
|
-
document: KnowledgeDocument;
|
|
75
|
-
batch: string;
|
|
76
|
-
};
|
|
77
|
-
type KnowledgeMetadataField = {
|
|
78
|
-
id: string;
|
|
79
|
-
name: string;
|
|
80
|
-
type?: "string" | "number" | "time" | string;
|
|
81
|
-
value: unknown;
|
|
82
|
-
};
|
|
83
|
-
type KnowledgeMetadataOperation = {
|
|
84
|
-
document_id: string;
|
|
85
|
-
metadata_list: KnowledgeMetadataField[];
|
|
86
|
-
partial_update?: boolean;
|
|
87
|
-
};
|
|
88
|
-
type KnowledgeMetadataUpdateRequest = {
|
|
89
|
-
operation_data: KnowledgeMetadataOperation[];
|
|
90
|
-
};
|
|
91
|
-
type KnowledgeResolveOptions = {
|
|
92
|
-
datasetId: string;
|
|
93
|
-
orgCode?: string;
|
|
94
|
-
refresh?: boolean;
|
|
95
|
-
} | {
|
|
96
|
-
datasetId?: string;
|
|
97
|
-
orgCode: string;
|
|
98
|
-
refresh?: boolean;
|
|
99
|
-
};
|
|
100
|
-
type KnowledgeGetDatasetIdOptions = {
|
|
101
|
-
orgCode: string;
|
|
102
|
-
refresh?: boolean;
|
|
103
|
-
};
|
|
104
|
-
type KnowledgeListDocumentsOptions = KnowledgeResolveOptions & {
|
|
105
|
-
page?: number;
|
|
106
|
-
limit?: number;
|
|
107
|
-
keyword?: string;
|
|
108
|
-
status?: KnowledgeDocumentListStatus;
|
|
109
|
-
sort?: string;
|
|
110
|
-
fetch?: boolean | string;
|
|
111
|
-
appCode?: string;
|
|
112
|
-
roles?: KnowledgeRoles;
|
|
113
|
-
};
|
|
114
|
-
type KnowledgeUploadDocumentOptions = KnowledgeResolveOptions & {
|
|
115
|
-
file: File | Blob;
|
|
116
|
-
fileName?: string;
|
|
117
|
-
appCode?: string;
|
|
118
|
-
config?: Record<string, unknown>;
|
|
119
|
-
};
|
|
120
|
-
type KnowledgeIndexingStatusOptions = KnowledgeResolveOptions & {
|
|
121
|
-
batch: string;
|
|
122
|
-
};
|
|
123
|
-
type KnowledgeWaitForIndexingOptions = KnowledgeIndexingStatusOptions & {
|
|
124
|
-
intervalMs?: number;
|
|
125
|
-
timeoutMs?: number;
|
|
126
|
-
};
|
|
127
|
-
type KnowledgeDeleteDocumentOptions = KnowledgeResolveOptions & {
|
|
128
|
-
documentId: string;
|
|
129
|
-
appCode?: string;
|
|
130
|
-
};
|
|
131
|
-
type KnowledgeUpdateDocumentsMetadataOptions = KnowledgeResolveOptions & KnowledgeMetadataUpdateRequest;
|
|
132
|
-
type KnowledgeClient = {
|
|
133
|
-
getDatasetId(options: KnowledgeGetDatasetIdOptions): Promise<ClientResult<KnowledgeDatasetIdResponse>>;
|
|
134
|
-
listDocuments(options: KnowledgeListDocumentsOptions): Promise<ClientResult<KnowledgeDocumentListResponse>>;
|
|
135
|
-
uploadDocument(options: KnowledgeUploadDocumentOptions): Promise<ClientResult<KnowledgeUploadResponse>>;
|
|
136
|
-
getIndexingStatus(options: KnowledgeIndexingStatusOptions): Promise<ClientResult<KnowledgeIndexingStatusResponse>>;
|
|
137
|
-
waitForIndexing(options: KnowledgeWaitForIndexingOptions): Promise<ClientResult<KnowledgeIndexingStatusResponse>>;
|
|
138
|
-
deleteDocument(options: KnowledgeDeleteDocumentOptions): Promise<ClientResult<null>>;
|
|
139
|
-
updateDocumentsMetadata(options: KnowledgeUpdateDocumentsMetadataOptions): Promise<ClientResult<{
|
|
140
|
-
result: string;
|
|
141
|
-
}>>;
|
|
142
|
-
};
|
|
19
|
+
import { MiniProgramRuntime, HttpClient } from '@amaster.ai/http-client';
|
|
20
|
+
export { ClientError, ClientResult, HttpClient, RequestConfig } from '@amaster.ai/http-client';
|
|
143
21
|
|
|
144
22
|
/**
|
|
145
23
|
* Amaster Client Configuration Options
|
|
@@ -295,16 +173,6 @@ interface AmasterClient {
|
|
|
295
173
|
* ```
|
|
296
174
|
*/
|
|
297
175
|
workflow: WorkflowClient;
|
|
298
|
-
/**
|
|
299
|
-
* Knowledge base document management module
|
|
300
|
-
*
|
|
301
|
-
* @example
|
|
302
|
-
* ```typescript
|
|
303
|
-
* await client.knowledge.listDocuments({ orgCode: 'org-123', appCode: 'demo-app' });
|
|
304
|
-
* await client.knowledge.uploadDocument({ orgCode: 'org-123', appCode: 'demo-app', file });
|
|
305
|
-
* ```
|
|
306
|
-
*/
|
|
307
|
-
knowledge: KnowledgeClient;
|
|
308
176
|
/**
|
|
309
177
|
* ASR (Automatic Speech Recognition) module - WebSocket-based real-time speech recognition
|
|
310
178
|
*
|
|
@@ -569,4 +437,4 @@ interface AmasterClient {
|
|
|
569
437
|
*/
|
|
570
438
|
declare function createClient(options?: AmasterClientOptions): AmasterClient;
|
|
571
439
|
|
|
572
|
-
export { type AmasterClient, type AmasterClientOptions,
|
|
440
|
+
export { type AmasterClient, type AmasterClientOptions, createClient };
|
package/dist/index.js
CHANGED
|
@@ -11,287 +11,6 @@ export { createTTSSpeakController, preprocessTTSContent, splitTextIntoFragments
|
|
|
11
11
|
import { createS3Client } from '@amaster.ai/s3-client';
|
|
12
12
|
import { createHttpClient } from '@amaster.ai/http-client';
|
|
13
13
|
|
|
14
|
-
// src/client.ts
|
|
15
|
-
|
|
16
|
-
// src/knowledge.ts
|
|
17
|
-
var KNOWLEDGE_OPENAPI_BASE = "/api/knowledge/v1";
|
|
18
|
-
var DEFAULT_WAIT_INTERVAL_MS = 2500;
|
|
19
|
-
var DEFAULT_WAIT_TIMEOUT_MS = 12e4;
|
|
20
|
-
var TERMINAL_INDEXING_STATUSES = /* @__PURE__ */ new Set(["completed", "error", "paused", "stopped"]);
|
|
21
|
-
function createErrorResult(message, status, details) {
|
|
22
|
-
return {
|
|
23
|
-
data: null,
|
|
24
|
-
error: {
|
|
25
|
-
message,
|
|
26
|
-
status,
|
|
27
|
-
details
|
|
28
|
-
},
|
|
29
|
-
status
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
function normalizeAppHeaderValue(value) {
|
|
33
|
-
const normalized = value?.trim();
|
|
34
|
-
return normalized || void 0;
|
|
35
|
-
}
|
|
36
|
-
function normalizeRolesHeaderValue(roles) {
|
|
37
|
-
if (!roles) {
|
|
38
|
-
return void 0;
|
|
39
|
-
}
|
|
40
|
-
if (Array.isArray(roles)) {
|
|
41
|
-
return JSON.stringify(roles);
|
|
42
|
-
}
|
|
43
|
-
const normalized = roles.trim();
|
|
44
|
-
return normalized || void 0;
|
|
45
|
-
}
|
|
46
|
-
function buildKnowledgeHeaders(options) {
|
|
47
|
-
const headers = {};
|
|
48
|
-
const appCode = normalizeAppHeaderValue(options.appCode);
|
|
49
|
-
const roles = normalizeRolesHeaderValue(options.roles);
|
|
50
|
-
if (appCode) {
|
|
51
|
-
headers["X-App-Code"] = appCode;
|
|
52
|
-
}
|
|
53
|
-
if (roles) {
|
|
54
|
-
headers["X-App-User-Roles"] = roles;
|
|
55
|
-
}
|
|
56
|
-
return Object.keys(headers).length > 0 ? headers : void 0;
|
|
57
|
-
}
|
|
58
|
-
function resolveUploadFilename(file, fileName) {
|
|
59
|
-
const normalized = fileName?.trim();
|
|
60
|
-
if (normalized) {
|
|
61
|
-
return normalized;
|
|
62
|
-
}
|
|
63
|
-
if ("name" in file && typeof file.name === "string" && file.name.trim()) {
|
|
64
|
-
return file.name.trim();
|
|
65
|
-
}
|
|
66
|
-
return void 0;
|
|
67
|
-
}
|
|
68
|
-
function appendUploadFile(formData, file, fileName) {
|
|
69
|
-
const resolvedFileName = resolveUploadFilename(file, fileName);
|
|
70
|
-
if (resolvedFileName) {
|
|
71
|
-
formData.append("file", file, resolvedFileName);
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
formData.append("file", file);
|
|
75
|
-
}
|
|
76
|
-
function isTerminalIndexingStatus(status) {
|
|
77
|
-
return TERMINAL_INDEXING_STATUSES.has(String(status || "").toLowerCase());
|
|
78
|
-
}
|
|
79
|
-
function isIndexingStatusDone(response) {
|
|
80
|
-
const statuses = response?.data || [];
|
|
81
|
-
return statuses.length > 0 && statuses.every((item) => isTerminalIndexingStatus(item.indexing_status));
|
|
82
|
-
}
|
|
83
|
-
function sleep(ms) {
|
|
84
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
85
|
-
}
|
|
86
|
-
function createKnowledgeClient(http) {
|
|
87
|
-
const datasetIdCache = /* @__PURE__ */ new Map();
|
|
88
|
-
async function getDatasetId(options) {
|
|
89
|
-
const orgCode = options.orgCode?.trim();
|
|
90
|
-
if (!orgCode) {
|
|
91
|
-
return createErrorResult("orgCode is required to resolve datasetId", 400);
|
|
92
|
-
}
|
|
93
|
-
const cachedDatasetId = datasetIdCache.get(orgCode);
|
|
94
|
-
if (cachedDatasetId && !options.refresh) {
|
|
95
|
-
return {
|
|
96
|
-
data: { dataset_id: cachedDatasetId },
|
|
97
|
-
error: null,
|
|
98
|
-
status: 200
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
const result = await http.request({
|
|
102
|
-
url: `${KNOWLEDGE_OPENAPI_BASE}/datasets/current-id`,
|
|
103
|
-
method: "get",
|
|
104
|
-
params: {
|
|
105
|
-
org_code: orgCode
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
if (result.data?.dataset_id) {
|
|
109
|
-
datasetIdCache.set(orgCode, result.data.dataset_id);
|
|
110
|
-
} else {
|
|
111
|
-
datasetIdCache.delete(orgCode);
|
|
112
|
-
}
|
|
113
|
-
return result;
|
|
114
|
-
}
|
|
115
|
-
async function resolveDatasetId(options) {
|
|
116
|
-
if (options.datasetId?.trim()) {
|
|
117
|
-
return {
|
|
118
|
-
data: options.datasetId.trim(),
|
|
119
|
-
error: null,
|
|
120
|
-
status: 200
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
if (!options.orgCode?.trim()) {
|
|
124
|
-
return createErrorResult("Either datasetId or orgCode is required", 400);
|
|
125
|
-
}
|
|
126
|
-
const result = await getDatasetId({
|
|
127
|
-
orgCode: options.orgCode,
|
|
128
|
-
refresh: options.refresh
|
|
129
|
-
});
|
|
130
|
-
if (!result.data?.dataset_id) {
|
|
131
|
-
return {
|
|
132
|
-
data: null,
|
|
133
|
-
error: result.error || {
|
|
134
|
-
message: "Failed to resolve datasetId",
|
|
135
|
-
status: result.status
|
|
136
|
-
},
|
|
137
|
-
status: result.status
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
return {
|
|
141
|
-
data: result.data.dataset_id,
|
|
142
|
-
error: null,
|
|
143
|
-
status: result.status,
|
|
144
|
-
headers: result.headers
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
function invalidateCacheOnNotFound(options, status) {
|
|
148
|
-
if (status !== 404 || options.datasetId || !options.orgCode?.trim()) {
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
datasetIdCache.delete(options.orgCode.trim());
|
|
152
|
-
}
|
|
153
|
-
async function getIndexingStatus(options) {
|
|
154
|
-
const datasetId = await resolveDatasetId(options);
|
|
155
|
-
if (!datasetId.data) {
|
|
156
|
-
return createErrorResult(
|
|
157
|
-
datasetId.error?.message || "Failed to resolve datasetId",
|
|
158
|
-
datasetId.status,
|
|
159
|
-
datasetId.error?.details
|
|
160
|
-
);
|
|
161
|
-
}
|
|
162
|
-
const result = await http.request({
|
|
163
|
-
url: `${KNOWLEDGE_OPENAPI_BASE}/datasets/${encodeURIComponent(
|
|
164
|
-
datasetId.data
|
|
165
|
-
)}/batch/${encodeURIComponent(options.batch)}/indexing-status`,
|
|
166
|
-
method: "get"
|
|
167
|
-
});
|
|
168
|
-
invalidateCacheOnNotFound(options, result.status);
|
|
169
|
-
return result;
|
|
170
|
-
}
|
|
171
|
-
return {
|
|
172
|
-
getDatasetId,
|
|
173
|
-
async listDocuments(options) {
|
|
174
|
-
const datasetId = await resolveDatasetId(options);
|
|
175
|
-
if (!datasetId.data) {
|
|
176
|
-
return createErrorResult(
|
|
177
|
-
datasetId.error?.message || "Failed to resolve datasetId",
|
|
178
|
-
datasetId.status,
|
|
179
|
-
datasetId.error?.details
|
|
180
|
-
);
|
|
181
|
-
}
|
|
182
|
-
const useMetadataFilter = !!(options.appCode || options.roles);
|
|
183
|
-
const result = await http.request({
|
|
184
|
-
url: `${KNOWLEDGE_OPENAPI_BASE}/datasets/${encodeURIComponent(datasetId.data)}/documents${useMetadataFilter ? "/v2" : ""}`,
|
|
185
|
-
method: "get",
|
|
186
|
-
headers: buildKnowledgeHeaders({
|
|
187
|
-
appCode: options.appCode,
|
|
188
|
-
roles: options.roles
|
|
189
|
-
}),
|
|
190
|
-
params: {
|
|
191
|
-
page: options.page,
|
|
192
|
-
limit: options.limit,
|
|
193
|
-
keyword: options.keyword,
|
|
194
|
-
status: options.status === "all" ? void 0 : options.status,
|
|
195
|
-
sort: options.sort,
|
|
196
|
-
fetch: options.fetch === void 0 ? void 0 : String(options.fetch)
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
invalidateCacheOnNotFound(options, result.status);
|
|
200
|
-
return result;
|
|
201
|
-
},
|
|
202
|
-
async uploadDocument(options) {
|
|
203
|
-
const datasetId = await resolveDatasetId(options);
|
|
204
|
-
if (!datasetId.data) {
|
|
205
|
-
return createErrorResult(
|
|
206
|
-
datasetId.error?.message || "Failed to resolve datasetId",
|
|
207
|
-
datasetId.status,
|
|
208
|
-
datasetId.error?.details
|
|
209
|
-
);
|
|
210
|
-
}
|
|
211
|
-
const formData = new FormData();
|
|
212
|
-
appendUploadFile(formData, options.file, options.fileName);
|
|
213
|
-
if (options.config !== void 0) {
|
|
214
|
-
formData.append("data", JSON.stringify(options.config));
|
|
215
|
-
}
|
|
216
|
-
const result = await http.request({
|
|
217
|
-
url: `${KNOWLEDGE_OPENAPI_BASE}/datasets/${encodeURIComponent(datasetId.data)}/documents/upload`,
|
|
218
|
-
method: "post",
|
|
219
|
-
headers: buildKnowledgeHeaders({
|
|
220
|
-
appCode: options.appCode
|
|
221
|
-
}),
|
|
222
|
-
data: formData
|
|
223
|
-
});
|
|
224
|
-
invalidateCacheOnNotFound(options, result.status);
|
|
225
|
-
return result;
|
|
226
|
-
},
|
|
227
|
-
getIndexingStatus,
|
|
228
|
-
async waitForIndexing(options) {
|
|
229
|
-
const startedAt = Date.now();
|
|
230
|
-
const intervalMs = Math.max(1, options.intervalMs ?? DEFAULT_WAIT_INTERVAL_MS);
|
|
231
|
-
const timeoutMs = Math.max(intervalMs, options.timeoutMs ?? DEFAULT_WAIT_TIMEOUT_MS);
|
|
232
|
-
let lastResult = null;
|
|
233
|
-
while (Date.now() - startedAt <= timeoutMs) {
|
|
234
|
-
lastResult = await getIndexingStatus(options);
|
|
235
|
-
if (lastResult.error) {
|
|
236
|
-
return lastResult;
|
|
237
|
-
}
|
|
238
|
-
if (isIndexingStatusDone(lastResult.data)) {
|
|
239
|
-
return lastResult;
|
|
240
|
-
}
|
|
241
|
-
await sleep(intervalMs);
|
|
242
|
-
}
|
|
243
|
-
return createErrorResult(
|
|
244
|
-
"Timed out waiting for document indexing to finish",
|
|
245
|
-
408,
|
|
246
|
-
lastResult?.data
|
|
247
|
-
);
|
|
248
|
-
},
|
|
249
|
-
async deleteDocument(options) {
|
|
250
|
-
const datasetId = await resolveDatasetId(options);
|
|
251
|
-
if (!datasetId.data) {
|
|
252
|
-
return createErrorResult(
|
|
253
|
-
datasetId.error?.message || "Failed to resolve datasetId",
|
|
254
|
-
datasetId.status,
|
|
255
|
-
datasetId.error?.details
|
|
256
|
-
);
|
|
257
|
-
}
|
|
258
|
-
const result = await http.request({
|
|
259
|
-
url: `${KNOWLEDGE_OPENAPI_BASE}/datasets/${encodeURIComponent(
|
|
260
|
-
datasetId.data
|
|
261
|
-
)}/documents/${encodeURIComponent(options.documentId)}`,
|
|
262
|
-
method: "delete",
|
|
263
|
-
headers: buildKnowledgeHeaders({
|
|
264
|
-
appCode: options.appCode
|
|
265
|
-
})
|
|
266
|
-
});
|
|
267
|
-
invalidateCacheOnNotFound(options, result.status);
|
|
268
|
-
return result;
|
|
269
|
-
},
|
|
270
|
-
async updateDocumentsMetadata(options) {
|
|
271
|
-
const datasetId = await resolveDatasetId(options);
|
|
272
|
-
if (!datasetId.data) {
|
|
273
|
-
return createErrorResult(
|
|
274
|
-
datasetId.error?.message || "Failed to resolve datasetId",
|
|
275
|
-
datasetId.status,
|
|
276
|
-
datasetId.error?.details
|
|
277
|
-
);
|
|
278
|
-
}
|
|
279
|
-
const result = await http.request({
|
|
280
|
-
url: `${KNOWLEDGE_OPENAPI_BASE}/datasets/${encodeURIComponent(datasetId.data)}/documents/metadata`,
|
|
281
|
-
method: "post",
|
|
282
|
-
headers: {
|
|
283
|
-
"Content-Type": "application/json"
|
|
284
|
-
},
|
|
285
|
-
data: {
|
|
286
|
-
operation_data: options.operation_data
|
|
287
|
-
}
|
|
288
|
-
});
|
|
289
|
-
invalidateCacheOnNotFound(options, result.status);
|
|
290
|
-
return result;
|
|
291
|
-
}
|
|
292
|
-
};
|
|
293
|
-
}
|
|
294
|
-
|
|
295
14
|
// src/client.ts
|
|
296
15
|
function createClient(options = {}) {
|
|
297
16
|
const {
|
|
@@ -409,7 +128,6 @@ function createClient(options = {}) {
|
|
|
409
128
|
env
|
|
410
129
|
});
|
|
411
130
|
const functionClient = createFunctionClient(authenticatedHttpClient);
|
|
412
|
-
const knowledge = createKnowledgeClient(authenticatedHttpClient);
|
|
413
131
|
const copilot = createCopilotClient(
|
|
414
132
|
authenticatedHttpClient,
|
|
415
133
|
baseURL,
|
|
@@ -436,7 +154,6 @@ function createClient(options = {}) {
|
|
|
436
154
|
asrHttp,
|
|
437
155
|
copilot,
|
|
438
156
|
function: functionClient,
|
|
439
|
-
knowledge,
|
|
440
157
|
tts,
|
|
441
158
|
s3,
|
|
442
159
|
http: authenticatedHttpClient,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/knowledge.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { type ClientResult, type HttpClient } from \"@amaster.ai/http-client\";\n\nconst KNOWLEDGE_OPENAPI_BASE = \"/api/knowledge/v1\";\nconst DEFAULT_WAIT_INTERVAL_MS = 2500;\nconst DEFAULT_WAIT_TIMEOUT_MS = 120000;\nconst TERMINAL_INDEXING_STATUSES = new Set([\"completed\", \"error\", \"paused\", \"stopped\"]);\n\nexport type KnowledgeDocumentStatus = \"completed\" | \"indexing\" | \"error\" | \"paused\";\nexport type KnowledgeDocumentListStatus = KnowledgeDocumentStatus | \"all\";\nexport type KnowledgeRoles = string | string[];\n\nexport type KnowledgeDatasetIdResponse = {\n dataset_id: string;\n};\n\nexport type KnowledgeDocument = {\n id: string;\n name: string;\n data_source_type?: string;\n doc_type?: string | null;\n doc_form?: string | null;\n indexing_status?: string;\n display_status?: string;\n enabled?: boolean;\n archived?: boolean;\n word_count?: number;\n hit_count?: number;\n position?: number;\n created_at?: number;\n updated_at?: number;\n completed_segments?: number;\n total_segments?: number;\n [key: string]: unknown;\n};\n\nexport type KnowledgeDocumentListResponse = {\n data: KnowledgeDocument[];\n total: number;\n page: number;\n limit: number;\n has_more: boolean;\n};\n\nexport type KnowledgeIndexingStatus = {\n id: string;\n name?: string;\n indexing_status?: string;\n processing_started_at?: number | null;\n parsing_completed_at?: number | null;\n cleaning_completed_at?: number | null;\n splitting_completed_at?: number | null;\n completed_at?: number | null;\n paused_at?: number | null;\n stopped_at?: number | null;\n completed_segments?: number;\n total_segments?: number;\n error?: string | null;\n [key: string]: unknown;\n};\n\nexport type KnowledgeIndexingStatusResponse = {\n data: KnowledgeIndexingStatus[];\n};\n\nexport type KnowledgeUploadResponse = {\n document: KnowledgeDocument;\n batch: string;\n};\n\nexport type KnowledgeMetadataField = {\n id: string;\n name: string;\n type?: \"string\" | \"number\" | \"time\" | string;\n value: unknown;\n};\n\nexport type KnowledgeMetadataOperation = {\n document_id: string;\n metadata_list: KnowledgeMetadataField[];\n partial_update?: boolean;\n};\n\nexport type KnowledgeMetadataUpdateRequest = {\n operation_data: KnowledgeMetadataOperation[];\n};\n\nexport type KnowledgeResolveOptions =\n | {\n datasetId: string;\n orgCode?: string;\n refresh?: boolean;\n }\n | {\n datasetId?: string;\n orgCode: string;\n refresh?: boolean;\n };\n\nexport type KnowledgeGetDatasetIdOptions = {\n orgCode: string;\n refresh?: boolean;\n};\n\nexport type KnowledgeListDocumentsOptions = KnowledgeResolveOptions & {\n page?: number;\n limit?: number;\n keyword?: string;\n status?: KnowledgeDocumentListStatus;\n sort?: string;\n fetch?: boolean | string;\n appCode?: string;\n roles?: KnowledgeRoles;\n};\n\nexport type KnowledgeUploadDocumentOptions = KnowledgeResolveOptions & {\n file: File | Blob;\n fileName?: string;\n appCode?: string;\n config?: Record<string, unknown>;\n};\n\nexport type KnowledgeIndexingStatusOptions = KnowledgeResolveOptions & {\n batch: string;\n};\n\nexport type KnowledgeWaitForIndexingOptions = KnowledgeIndexingStatusOptions & {\n intervalMs?: number;\n timeoutMs?: number;\n};\n\nexport type KnowledgeDeleteDocumentOptions = KnowledgeResolveOptions & {\n documentId: string;\n appCode?: string;\n};\n\nexport type KnowledgeUpdateDocumentsMetadataOptions = KnowledgeResolveOptions &\n KnowledgeMetadataUpdateRequest;\n\nexport type KnowledgeClient = {\n getDatasetId(\n options: KnowledgeGetDatasetIdOptions\n ): Promise<ClientResult<KnowledgeDatasetIdResponse>>;\n listDocuments(\n options: KnowledgeListDocumentsOptions\n ): Promise<ClientResult<KnowledgeDocumentListResponse>>;\n uploadDocument(\n options: KnowledgeUploadDocumentOptions\n ): Promise<ClientResult<KnowledgeUploadResponse>>;\n getIndexingStatus(\n options: KnowledgeIndexingStatusOptions\n ): Promise<ClientResult<KnowledgeIndexingStatusResponse>>;\n waitForIndexing(\n options: KnowledgeWaitForIndexingOptions\n ): Promise<ClientResult<KnowledgeIndexingStatusResponse>>;\n deleteDocument(options: KnowledgeDeleteDocumentOptions): Promise<ClientResult<null>>;\n updateDocumentsMetadata(\n options: KnowledgeUpdateDocumentsMetadataOptions\n ): Promise<ClientResult<{ result: string }>>;\n};\n\nfunction createErrorResult<T>(\n message: string,\n status: number,\n details?: unknown\n): ClientResult<T> {\n return {\n data: null,\n error: {\n message,\n status,\n details,\n },\n status,\n };\n}\n\nfunction normalizeAppHeaderValue(value?: string): string | undefined {\n const normalized = value?.trim();\n return normalized || undefined;\n}\n\nfunction normalizeRolesHeaderValue(roles?: KnowledgeRoles): string | undefined {\n if (!roles) {\n return undefined;\n }\n if (Array.isArray(roles)) {\n return JSON.stringify(roles);\n }\n const normalized = roles.trim();\n return normalized || undefined;\n}\n\nfunction buildKnowledgeHeaders(options: {\n appCode?: string;\n roles?: KnowledgeRoles;\n}): Record<string, string> | undefined {\n const headers: Record<string, string> = {};\n const appCode = normalizeAppHeaderValue(options.appCode);\n const roles = normalizeRolesHeaderValue(options.roles);\n\n if (appCode) {\n headers[\"X-App-Code\"] = appCode;\n }\n if (roles) {\n headers[\"X-App-User-Roles\"] = roles;\n }\n\n return Object.keys(headers).length > 0 ? headers : undefined;\n}\n\nfunction resolveUploadFilename(file: File | Blob, fileName?: string): string | undefined {\n const normalized = fileName?.trim();\n if (normalized) {\n return normalized;\n }\n if (\"name\" in file && typeof file.name === \"string\" && file.name.trim()) {\n return file.name.trim();\n }\n return undefined;\n}\n\nfunction appendUploadFile(formData: FormData, file: File | Blob, fileName?: string): void {\n const resolvedFileName = resolveUploadFilename(file, fileName);\n if (resolvedFileName) {\n formData.append(\"file\", file, resolvedFileName);\n return;\n }\n formData.append(\"file\", file);\n}\n\nfunction isTerminalIndexingStatus(status?: string): boolean {\n return TERMINAL_INDEXING_STATUSES.has(String(status || \"\").toLowerCase());\n}\n\nfunction isIndexingStatusDone(response: KnowledgeIndexingStatusResponse | null): boolean {\n const statuses = response?.data || [];\n return statuses.length > 0 && statuses.every((item) => isTerminalIndexingStatus(item.indexing_status));\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function createKnowledgeClient(http: HttpClient): KnowledgeClient {\n const datasetIdCache = new Map<string, string>();\n\n async function getDatasetId(\n options: KnowledgeGetDatasetIdOptions\n ): Promise<ClientResult<KnowledgeDatasetIdResponse>> {\n const orgCode = options.orgCode?.trim();\n if (!orgCode) {\n return createErrorResult(\"orgCode is required to resolve datasetId\", 400);\n }\n\n const cachedDatasetId = datasetIdCache.get(orgCode);\n if (cachedDatasetId && !options.refresh) {\n return {\n data: { dataset_id: cachedDatasetId },\n error: null,\n status: 200,\n };\n }\n\n const result = await http.request<KnowledgeDatasetIdResponse>({\n url: `${KNOWLEDGE_OPENAPI_BASE}/datasets/current-id`,\n method: \"get\",\n params: {\n org_code: orgCode,\n },\n });\n\n if (result.data?.dataset_id) {\n datasetIdCache.set(orgCode, result.data.dataset_id);\n } else {\n datasetIdCache.delete(orgCode);\n }\n\n return result;\n }\n\n async function resolveDatasetId(\n options: KnowledgeResolveOptions\n ): Promise<ClientResult<string>> {\n if (options.datasetId?.trim()) {\n return {\n data: options.datasetId.trim(),\n error: null,\n status: 200,\n };\n }\n\n if (!options.orgCode?.trim()) {\n return createErrorResult(\"Either datasetId or orgCode is required\", 400);\n }\n\n const result = await getDatasetId({\n orgCode: options.orgCode,\n refresh: options.refresh,\n });\n\n if (!result.data?.dataset_id) {\n return {\n data: null,\n error:\n result.error ||\n {\n message: \"Failed to resolve datasetId\",\n status: result.status,\n },\n status: result.status,\n };\n }\n\n return {\n data: result.data.dataset_id,\n error: null,\n status: result.status,\n headers: result.headers,\n };\n }\n\n function invalidateCacheOnNotFound(options: KnowledgeResolveOptions, status: number): void {\n if (status !== 404 || options.datasetId || !options.orgCode?.trim()) {\n return;\n }\n datasetIdCache.delete(options.orgCode.trim());\n }\n\n async function getIndexingStatus(\n options: KnowledgeIndexingStatusOptions\n ): Promise<ClientResult<KnowledgeIndexingStatusResponse>> {\n const datasetId = await resolveDatasetId(options);\n if (!datasetId.data) {\n return createErrorResult(\n datasetId.error?.message || \"Failed to resolve datasetId\",\n datasetId.status,\n datasetId.error?.details\n );\n }\n\n const result = await http.request<KnowledgeIndexingStatusResponse>({\n url: `${KNOWLEDGE_OPENAPI_BASE}/datasets/${encodeURIComponent(\n datasetId.data\n )}/batch/${encodeURIComponent(options.batch)}/indexing-status`,\n method: \"get\",\n });\n\n invalidateCacheOnNotFound(options, result.status);\n return result;\n }\n\n return {\n getDatasetId,\n\n async listDocuments(\n options: KnowledgeListDocumentsOptions\n ): Promise<ClientResult<KnowledgeDocumentListResponse>> {\n const datasetId = await resolveDatasetId(options);\n if (!datasetId.data) {\n return createErrorResult(\n datasetId.error?.message || \"Failed to resolve datasetId\",\n datasetId.status,\n datasetId.error?.details\n );\n }\n\n const useMetadataFilter = !!(options.appCode || options.roles);\n const result = await http.request<KnowledgeDocumentListResponse>({\n url: `${KNOWLEDGE_OPENAPI_BASE}/datasets/${encodeURIComponent(datasetId.data)}/documents${\n useMetadataFilter ? \"/v2\" : \"\"\n }`,\n method: \"get\",\n headers: buildKnowledgeHeaders({\n appCode: options.appCode,\n roles: options.roles,\n }),\n params: {\n page: options.page,\n limit: options.limit,\n keyword: options.keyword,\n status: options.status === \"all\" ? undefined : options.status,\n sort: options.sort,\n fetch: options.fetch === undefined ? undefined : String(options.fetch),\n },\n });\n\n invalidateCacheOnNotFound(options, result.status);\n return result;\n },\n\n async uploadDocument(\n options: KnowledgeUploadDocumentOptions\n ): Promise<ClientResult<KnowledgeUploadResponse>> {\n const datasetId = await resolveDatasetId(options);\n if (!datasetId.data) {\n return createErrorResult(\n datasetId.error?.message || \"Failed to resolve datasetId\",\n datasetId.status,\n datasetId.error?.details\n );\n }\n\n const formData = new FormData();\n appendUploadFile(formData, options.file, options.fileName);\n\n if (options.config !== undefined) {\n formData.append(\"data\", JSON.stringify(options.config));\n }\n\n const result = await http.request<KnowledgeUploadResponse>({\n url: `${KNOWLEDGE_OPENAPI_BASE}/datasets/${encodeURIComponent(datasetId.data)}/documents/upload`,\n method: \"post\",\n headers: buildKnowledgeHeaders({\n appCode: options.appCode,\n }),\n data: formData,\n });\n\n invalidateCacheOnNotFound(options, result.status);\n return result;\n },\n\n getIndexingStatus,\n\n async waitForIndexing(\n options: KnowledgeWaitForIndexingOptions\n ): Promise<ClientResult<KnowledgeIndexingStatusResponse>> {\n const startedAt = Date.now();\n const intervalMs = Math.max(1, options.intervalMs ?? DEFAULT_WAIT_INTERVAL_MS);\n const timeoutMs = Math.max(intervalMs, options.timeoutMs ?? DEFAULT_WAIT_TIMEOUT_MS);\n let lastResult: ClientResult<KnowledgeIndexingStatusResponse> | null = null;\n\n while (Date.now() - startedAt <= timeoutMs) {\n lastResult = await getIndexingStatus(options);\n\n if (lastResult.error) {\n return lastResult;\n }\n\n if (isIndexingStatusDone(lastResult.data)) {\n return lastResult;\n }\n\n await sleep(intervalMs);\n }\n\n return createErrorResult(\n \"Timed out waiting for document indexing to finish\",\n 408,\n lastResult?.data\n );\n },\n\n async deleteDocument(options: KnowledgeDeleteDocumentOptions): Promise<ClientResult<null>> {\n const datasetId = await resolveDatasetId(options);\n if (!datasetId.data) {\n return createErrorResult(\n datasetId.error?.message || \"Failed to resolve datasetId\",\n datasetId.status,\n datasetId.error?.details\n );\n }\n\n const result = await http.request<null>({\n url: `${KNOWLEDGE_OPENAPI_BASE}/datasets/${encodeURIComponent(\n datasetId.data\n )}/documents/${encodeURIComponent(options.documentId)}`,\n method: \"delete\",\n headers: buildKnowledgeHeaders({\n appCode: options.appCode,\n }),\n });\n\n invalidateCacheOnNotFound(options, result.status);\n return result;\n },\n\n async updateDocumentsMetadata(\n options: KnowledgeUpdateDocumentsMetadataOptions\n ): Promise<ClientResult<{ result: string }>> {\n const datasetId = await resolveDatasetId(options);\n if (!datasetId.data) {\n return createErrorResult(\n datasetId.error?.message || \"Failed to resolve datasetId\",\n datasetId.status,\n datasetId.error?.details\n );\n }\n\n const result = await http.request<{ result: string }>({\n url: `${KNOWLEDGE_OPENAPI_BASE}/datasets/${encodeURIComponent(datasetId.data)}/documents/metadata`,\n method: \"post\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n data: {\n operation_data: options.operation_data,\n },\n });\n\n invalidateCacheOnNotFound(options, result.status);\n return result;\n },\n };\n}\n","/**\n * ============================================================================\n * @amaster.ai/client - Unified Amaster Client\n * ============================================================================\n *\n * Supabase-inspired unified API client for the Amaster platform\n *\n * Features:\n * - Single client instance for all services (auth, entity, bpm, workflow)\n * - Automatic token management and refresh\n * - Auto-attach authentication to all requests\n * - Centralized error handling\n *\n * @example\n * ```typescript\n * const client = createClient({\n * onUnauthorized: () => window.location.href = '/login'\n * });\n *\n * // Login\n * await client.auth.login({ email, password });\n *\n * // All subsequent requests automatically include auth token\n * await client.entity.list('default', 'users');\n * await client.bpm.startProcess('approval', { amount: 1000 });\n * await client.bpm.getTasks({ assignee: 'currentUserId' });\n * ```\n */\n\nimport { createAuthClient, type AuthClient } from \"@amaster.ai/auth-client\";\nimport { createEntityClient, type EntityClient } from \"@amaster.ai/entity-client\";\nimport { createBpmClient, type BpmClient } from \"@amaster.ai/bpm-client\";\nimport { createWorkflowClient, type WorkflowClient } from \"@amaster.ai/workflow-client\";\nimport {\n createASRClient,\n createASRHttpClient,\n type ASRClientConfig,\n type ASRClient,\n type ASRHttpClientConfig,\n type ASRHttpClient,\n} from \"@amaster.ai/asr-client\";\nimport { createCopilotClient, type CopilotClient } from \"@amaster.ai/copilot-client\";\nimport { createFunctionClient, type FunctionClient } from \"@amaster.ai/function-client\";\nimport { createTTSClient, TTSClientConfig, type TTSClient } from \"@amaster.ai/tts-client\";\nimport { createS3Client, type S3Client } from \"@amaster.ai/s3-client\";\nimport {\n createHttpClient,\n type HttpClient,\n type RequestConfig,\n type ClientResult,\n} from \"@amaster.ai/http-client\";\nimport { createKnowledgeClient, type KnowledgeClient } from \"./knowledge\";\nimport type { AmasterClient, AmasterClientOptions } from \"./types\";\n\n/**\n * Create a unified Amaster client instance\n *\n * This function creates a single client that provides access to all Amaster services:\n * - Authentication (login, register, logout)\n * - Entity CRUD operations\n * - BPM (Business Process Management)\n * - Workflow execution\n *\n * All sub-clients automatically share the same HTTP client and authentication state,\n * ensuring that tokens are consistently attached to all requests.\n *\n * @param options - Client configuration options\n * @returns A unified Amaster client instance\n *\n * @example\n * ```typescript\n * // Basic usage\n * const client = createClient();\n *\n * // With authentication callbacks\n * const client = createClient({\n * onUnauthorized: () => {\n * // Redirect to login or show auth modal\n * window.location.href = '/login';\n * },\n * onTokenExpired: () => {\n * console.log('Token expired, refreshing...');\n * }\n * });\n *\n * // Login\n * await client.auth.login({\n * email: 'user@example.com',\n * password: 'password123'\n * });\n *\n * // Now all requests automatically include the auth token\n * const users = await client.entity.list('default', 'users');\n * const tasks = await client.bpm.getTasks({ assignee: 'currentUserId' });\n * ```\n */\nexport function createClient(options: AmasterClientOptions = {}): AmasterClient {\n const {\n baseURL,\n env = \"dev\",\n headers = {},\n onUnauthorized,\n onTokenExpired,\n autoHandleOAuthCallback,\n autoRedirectAfterLogin,\n runtime,\n } = options;\n\n // Create the base HTTP client\n const baseHttpClient = createHttpClient({\n baseURL,\n headers,\n runtime,\n });\n\n // Create the auth client first using the same base HTTP implementation so\n // mini-program request handling stays consistent across all modules.\n const auth: AuthClient = createAuthClient({\n baseURL,\n headers,\n onTokenExpired,\n onUnauthorized,\n autoHandleOAuthCallback,\n autoRedirectAfterLogin,\n runtime,\n });\n\n // Create a wrapper HTTP client that automatically adds the auth token\n const createAuthenticatedHttpClient = (): HttpClient => {\n // Track if we're currently refreshing to avoid multiple simultaneous refreshes\n let isRefreshing = false;\n let refreshPromise: Promise<boolean> | null = null;\n\n /**\n * Check if 401 error is due to token expiration\n * Traefik JWT plugin returns plain text like \"Jwt is expired\" or \"Token is expired\"\n */\n function isTokenExpired(result: ClientResult<unknown>): boolean {\n if (result.status !== 401) return false;\n\n // Check error message (could be from backend JSON response)\n if (result.error?.message && /expired/i.test(result.error.message)) {\n return true;\n }\n\n // Check error details (traefik returns plain text in details)\n if (result.error?.details) {\n const details = result.error.details;\n if (typeof details === \"string\" && /expired/i.test(details)) {\n return true;\n }\n // Also check if details is an object with message field\n if (typeof details === \"object\" && details !== null) {\n const detailsObj = details as Record<string, unknown>;\n if (typeof detailsObj.message === \"string\" && /expired/i.test(detailsObj.message)) {\n return true;\n }\n }\n }\n\n // Check raw data (could be plain text from traefik)\n if (typeof result.data === \"string\" && /expired/i.test(result.data)) {\n return true;\n }\n\n // If we have a token but got 401, assume it might be expired\n return !!auth.getAccessToken();\n }\n\n return {\n async request<T>(config: RequestConfig): Promise<ClientResult<T>> {\n // Get the current token from auth client\n const token = auth.getAccessToken();\n\n // Merge Authorization header with existing headers\n const authHeaders = token ? { Authorization: `Bearer ${token}` } : {};\n const mergedConfig: RequestConfig = {\n ...config,\n headers: {\n ...config.headers,\n ...authHeaders,\n },\n };\n\n // Make the request with the updated config\n let result = await baseHttpClient.request<T>(mergedConfig);\n\n // Handle 401 errors with automatic token refresh\n if (result.status === 401 && isTokenExpired(result)) {\n // Attempt to refresh token\n if (!isRefreshing) {\n isRefreshing = true;\n refreshPromise = (async () => {\n try {\n const refreshResult = await auth.refreshToken();\n return !!refreshResult.data;\n } finally {\n isRefreshing = false;\n refreshPromise = null;\n }\n })();\n }\n\n const refreshed = await refreshPromise;\n\n if (refreshed) {\n // Retry with new token\n const newToken = auth.getAccessToken();\n result = await baseHttpClient.request<T>({\n ...config,\n headers: {\n ...config.headers,\n ...(newToken ? { Authorization: `Bearer ${newToken}` } : {}),\n },\n });\n }\n }\n\n // Trigger unauthorized if still 401\n if (result.status === 401 && onUnauthorized) {\n onUnauthorized();\n }\n\n return result;\n },\n };\n };\n\n const authenticatedHttpClient = createAuthenticatedHttpClient();\n\n let cachedUserUid: string | null = null;\n\n auth.on(\"login\", (user: { uid?: string }) => {\n cachedUserUid = user?.uid ?? null;\n });\n auth.on(\"logout\", () => {\n cachedUserUid = null;\n });\n\n if (auth.isAuthenticated()) {\n auth\n .getMe()\n .then((result) => {\n if (result.data?.uid) {\n cachedUserUid = result.data.uid;\n }\n })\n .catch(() => {});\n }\n\n // Create other clients using the authenticated HTTP client\n const entity: EntityClient = createEntityClient(authenticatedHttpClient);\n const bpm: BpmClient = createBpmClient(authenticatedHttpClient);\n const workflow: WorkflowClient = createWorkflowClient(authenticatedHttpClient, {\n env,\n });\n const functionClient: FunctionClient = createFunctionClient(authenticatedHttpClient);\n const knowledge: KnowledgeClient = createKnowledgeClient(authenticatedHttpClient);\n const copilot: CopilotClient = createCopilotClient(\n authenticatedHttpClient,\n baseURL,\n () => auth.getAccessToken(),\n () => cachedUserUid\n );\n const s3: S3Client = createS3Client(authenticatedHttpClient);\n\n // ASR and TTS clients use WebSocket, pass token getter for authentication\n // Token can be appended to WebSocket URL as query parameter\n const asr: (config: ASRClientConfig) => ASRClient = createASRClient({\n getAccessToken: () => auth.getAccessToken(),\n });\n const asrHttp: (config: ASRHttpClientConfig) => ASRHttpClient = createASRHttpClient({\n getAccessToken: () => auth.getAccessToken(),\n http: authenticatedHttpClient,\n });\n const tts: (config: TTSClientConfig) => TTSClient = createTTSClient({\n getAccessToken: () => auth.getAccessToken(),\n });\n\n // Return unified client interface\n const client: AmasterClient = {\n auth,\n entity,\n bpm,\n workflow,\n asr,\n asrHttp,\n copilot,\n function: functionClient,\n knowledge,\n tts,\n s3,\n http: authenticatedHttpClient,\n\n // Expose token management methods from auth client\n isAuthenticated: () => auth.isAuthenticated(),\n getAccessToken: () => auth.getAccessToken(),\n setAccessToken: (token: string) => auth.setAccessToken(token),\n clearAuth: () => auth.clearAuth(),\n };\n\n return client;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * ============================================================================\n * @amaster.ai/client - Unified Amaster Client\n * ============================================================================\n *\n * Supabase-inspired unified API client for the Amaster platform\n *\n * Features:\n * - Single client instance for all services (auth, entity, bpm, workflow)\n * - Automatic token management and refresh\n * - Auto-attach authentication to all requests\n * - Centralized error handling\n *\n * @example\n * ```typescript\n * const client = createClient({\n * onUnauthorized: () => window.location.href = '/login'\n * });\n *\n * // Login\n * await client.auth.login({ email, password });\n *\n * // All subsequent requests automatically include auth token\n * await client.entity.list('default', 'users');\n * await client.bpm.startProcess('approval', { amount: 1000 });\n * await client.bpm.getTasks({ assignee: 'currentUserId' });\n * ```\n */\n\nimport { createAuthClient, type AuthClient } from \"@amaster.ai/auth-client\";\nimport { createEntityClient, type EntityClient } from \"@amaster.ai/entity-client\";\nimport { createBpmClient, type BpmClient } from \"@amaster.ai/bpm-client\";\nimport { createWorkflowClient, type WorkflowClient } from \"@amaster.ai/workflow-client\";\nimport {\n createASRClient,\n createASRHttpClient,\n type ASRClientConfig,\n type ASRClient,\n type ASRHttpClientConfig,\n type ASRHttpClient,\n} from \"@amaster.ai/asr-client\";\nimport { createCopilotClient, type CopilotClient } from \"@amaster.ai/copilot-client\";\nimport { createFunctionClient, type FunctionClient } from \"@amaster.ai/function-client\";\nimport { createTTSClient, TTSClientConfig, type TTSClient } from \"@amaster.ai/tts-client\";\nimport { createS3Client, type S3Client } from \"@amaster.ai/s3-client\";\nimport {\n createHttpClient,\n type HttpClient,\n type RequestConfig,\n type ClientResult,\n} from \"@amaster.ai/http-client\";\nimport type { AmasterClient, AmasterClientOptions } from \"./types\";\n\n/**\n * Create a unified Amaster client instance\n *\n * This function creates a single client that provides access to all Amaster services:\n * - Authentication (login, register, logout)\n * - Entity CRUD operations\n * - BPM (Business Process Management)\n * - Workflow execution\n *\n * All sub-clients automatically share the same HTTP client and authentication state,\n * ensuring that tokens are consistently attached to all requests.\n *\n * @param options - Client configuration options\n * @returns A unified Amaster client instance\n *\n * @example\n * ```typescript\n * // Basic usage\n * const client = createClient();\n *\n * // With authentication callbacks\n * const client = createClient({\n * onUnauthorized: () => {\n * // Redirect to login or show auth modal\n * window.location.href = '/login';\n * },\n * onTokenExpired: () => {\n * console.log('Token expired, refreshing...');\n * }\n * });\n *\n * // Login\n * await client.auth.login({\n * email: 'user@example.com',\n * password: 'password123'\n * });\n *\n * // Now all requests automatically include the auth token\n * const users = await client.entity.list('default', 'users');\n * const tasks = await client.bpm.getTasks({ assignee: 'currentUserId' });\n * ```\n */\nexport function createClient(options: AmasterClientOptions = {}): AmasterClient {\n const {\n baseURL,\n env = \"dev\",\n headers = {},\n onUnauthorized,\n onTokenExpired,\n autoHandleOAuthCallback,\n autoRedirectAfterLogin,\n runtime,\n } = options;\n\n // Create the base HTTP client\n const baseHttpClient = createHttpClient({\n baseURL,\n headers,\n runtime,\n });\n\n // Create the auth client first using the same base HTTP implementation so\n // mini-program request handling stays consistent across all modules.\n const auth: AuthClient = createAuthClient({\n baseURL,\n headers,\n onTokenExpired,\n onUnauthorized,\n autoHandleOAuthCallback,\n autoRedirectAfterLogin,\n runtime,\n });\n\n // Create a wrapper HTTP client that automatically adds the auth token\n const createAuthenticatedHttpClient = (): HttpClient => {\n // Track if we're currently refreshing to avoid multiple simultaneous refreshes\n let isRefreshing = false;\n let refreshPromise: Promise<boolean> | null = null;\n\n /**\n * Check if 401 error is due to token expiration\n * Traefik JWT plugin returns plain text like \"Jwt is expired\" or \"Token is expired\"\n */\n function isTokenExpired(result: ClientResult<unknown>): boolean {\n if (result.status !== 401) return false;\n\n // Check error message (could be from backend JSON response)\n if (result.error?.message && /expired/i.test(result.error.message)) {\n return true;\n }\n\n // Check error details (traefik returns plain text in details)\n if (result.error?.details) {\n const details = result.error.details;\n if (typeof details === \"string\" && /expired/i.test(details)) {\n return true;\n }\n // Also check if details is an object with message field\n if (typeof details === \"object\" && details !== null) {\n const detailsObj = details as Record<string, unknown>;\n if (typeof detailsObj.message === \"string\" && /expired/i.test(detailsObj.message)) {\n return true;\n }\n }\n }\n\n // Check raw data (could be plain text from traefik)\n if (typeof result.data === \"string\" && /expired/i.test(result.data)) {\n return true;\n }\n\n // If we have a token but got 401, assume it might be expired\n return !!auth.getAccessToken();\n }\n\n return {\n async request<T>(config: RequestConfig): Promise<ClientResult<T>> {\n // Get the current token from auth client\n const token = auth.getAccessToken();\n\n // Merge Authorization header with existing headers\n const authHeaders = token ? { Authorization: `Bearer ${token}` } : {};\n const mergedConfig: RequestConfig = {\n ...config,\n headers: {\n ...config.headers,\n ...authHeaders,\n },\n };\n\n // Make the request with the updated config\n let result = await baseHttpClient.request<T>(mergedConfig);\n\n // Handle 401 errors with automatic token refresh\n if (result.status === 401 && isTokenExpired(result)) {\n // Attempt to refresh token\n if (!isRefreshing) {\n isRefreshing = true;\n refreshPromise = (async () => {\n try {\n const refreshResult = await auth.refreshToken();\n return !!refreshResult.data;\n } finally {\n isRefreshing = false;\n refreshPromise = null;\n }\n })();\n }\n\n const refreshed = await refreshPromise;\n\n if (refreshed) {\n // Retry with new token\n const newToken = auth.getAccessToken();\n result = await baseHttpClient.request<T>({\n ...config,\n headers: {\n ...config.headers,\n ...(newToken ? { Authorization: `Bearer ${newToken}` } : {}),\n },\n });\n }\n }\n\n // Trigger unauthorized if still 401\n if (result.status === 401 && onUnauthorized) {\n onUnauthorized();\n }\n\n return result;\n },\n };\n };\n\n const authenticatedHttpClient = createAuthenticatedHttpClient();\n\n let cachedUserUid: string | null = null;\n\n auth.on(\"login\", (user: { uid?: string }) => {\n cachedUserUid = user?.uid ?? null;\n });\n auth.on(\"logout\", () => {\n cachedUserUid = null;\n });\n\n if (auth.isAuthenticated()) {\n auth\n .getMe()\n .then((result) => {\n if (result.data?.uid) {\n cachedUserUid = result.data.uid;\n }\n })\n .catch(() => {});\n }\n\n // Create other clients using the authenticated HTTP client\n const entity: EntityClient = createEntityClient(authenticatedHttpClient);\n const bpm: BpmClient = createBpmClient(authenticatedHttpClient);\n const workflow: WorkflowClient = createWorkflowClient(authenticatedHttpClient, {\n env,\n });\n const functionClient: FunctionClient = createFunctionClient(authenticatedHttpClient);\n const copilot: CopilotClient = createCopilotClient(\n authenticatedHttpClient,\n baseURL,\n () => auth.getAccessToken(),\n () => cachedUserUid\n );\n const s3: S3Client = createS3Client(authenticatedHttpClient);\n\n // ASR and TTS clients use WebSocket, pass token getter for authentication\n // Token can be appended to WebSocket URL as query parameter\n const asr: (config: ASRClientConfig) => ASRClient = createASRClient({\n getAccessToken: () => auth.getAccessToken(),\n });\n const asrHttp: (config: ASRHttpClientConfig) => ASRHttpClient = createASRHttpClient({\n getAccessToken: () => auth.getAccessToken(),\n http: authenticatedHttpClient,\n });\n const tts: (config: TTSClientConfig) => TTSClient = createTTSClient({\n getAccessToken: () => auth.getAccessToken(),\n });\n\n // Return unified client interface\n const client: AmasterClient = {\n auth,\n entity,\n bpm,\n workflow,\n asr,\n asrHttp,\n copilot,\n function: functionClient,\n tts,\n s3,\n http: authenticatedHttpClient,\n\n // Expose token management methods from auth client\n isAuthenticated: () => auth.isAuthenticated(),\n getAccessToken: () => auth.getAccessToken(),\n setAccessToken: (token: string) => auth.setAccessToken(token),\n clearAuth: () => auth.clearAuth(),\n };\n\n return client;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amaster.ai/client",
|
|
3
|
-
"version": "1.1.52
|
|
3
|
+
"version": "1.1.52",
|
|
4
4
|
"description": "Unified API client for Amaster platform - All services in one package",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -26,9 +26,6 @@
|
|
|
26
26
|
"workflow": [
|
|
27
27
|
"./types/workflow.d.ts"
|
|
28
28
|
],
|
|
29
|
-
"knowledge": [
|
|
30
|
-
"./types/knowledge.d.ts"
|
|
31
|
-
],
|
|
32
29
|
"asr": [
|
|
33
30
|
"./types/asr.d.ts"
|
|
34
31
|
],
|
|
@@ -75,16 +72,16 @@
|
|
|
75
72
|
"registry": "https://registry.npmjs.org/"
|
|
76
73
|
},
|
|
77
74
|
"dependencies": {
|
|
78
|
-
"@amaster.ai/
|
|
79
|
-
"@amaster.ai/
|
|
80
|
-
"@amaster.ai/
|
|
81
|
-
"@amaster.ai/function-client": "1.1.52
|
|
82
|
-
"@amaster.ai/
|
|
83
|
-
"@amaster.ai/
|
|
84
|
-
"@amaster.ai/
|
|
85
|
-
"@amaster.ai/s3-client": "1.1.52
|
|
86
|
-
"@amaster.ai/
|
|
87
|
-
"@amaster.ai/
|
|
75
|
+
"@amaster.ai/auth-client": "1.1.52",
|
|
76
|
+
"@amaster.ai/bpm-client": "1.1.52",
|
|
77
|
+
"@amaster.ai/copilot-client": "1.1.52",
|
|
78
|
+
"@amaster.ai/function-client": "1.1.52",
|
|
79
|
+
"@amaster.ai/entity-client": "1.1.52",
|
|
80
|
+
"@amaster.ai/asr-client": "1.1.52",
|
|
81
|
+
"@amaster.ai/http-client": "1.1.52",
|
|
82
|
+
"@amaster.ai/s3-client": "1.1.52",
|
|
83
|
+
"@amaster.ai/tts-client": "1.1.52",
|
|
84
|
+
"@amaster.ai/workflow-client": "1.1.52"
|
|
88
85
|
},
|
|
89
86
|
"peerDependencies": {
|
|
90
87
|
"axios": "^1.11.0"
|