@aleph-alpha/chat-kit 2.1.0 → 2.1.1
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/composables/fileUpload/index.d.ts +1 -1
- package/dist/composables/fileUpload/index.d.ts.map +1 -1
- package/dist/composables/fileUpload/types.d.ts +11 -1
- package/dist/composables/fileUpload/types.d.ts.map +1 -1
- package/dist/composables/fileUpload/useFileUpload.d.ts.map +1 -1
- package/dist/composables/fileUpload/useFileUploadWrapper.d.ts.map +1 -1
- package/dist/composables/index.js +1 -1
- package/dist/{index-DrtHeZpl.js → index-BPXg1Yf6.js} +34 -8
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/composables/fileUpload/index.spec.ts +21 -0
- package/src/composables/fileUpload/index.ts +2 -0
- package/src/composables/fileUpload/types.ts +15 -1
- package/src/composables/fileUpload/useFileUpload.spec.ts +147 -0
- package/src/composables/fileUpload/useFileUpload.ts +18 -4
- package/src/composables/fileUpload/useFileUploadWrapper.spec.ts +202 -0
- package/src/composables/fileUpload/useFileUploadWrapper.ts +25 -3
|
@@ -3,6 +3,6 @@ import { createDocumentUploadProvider } from './useFileUploadWrapper';
|
|
|
3
3
|
export declare const defaultDocumentUploadConfig: DocumentUploadConfig;
|
|
4
4
|
declare const useDocumentUploadWithDefaultConfig: (conversationIdRef: import("vue").MaybeRef<string>) => import("./types").DocumentUploadReturn;
|
|
5
5
|
export { useDocumentUploadWithDefaultConfig, createDocumentUploadProvider };
|
|
6
|
-
export type { DocumentUploadConfig, DocumentUploadProvider, FileEntry, FileStatus, } from './types';
|
|
6
|
+
export type { DocumentUploadConfig, DocumentUploadProvider, DocumentUploadReturn, HandleFilesSelectedOptions, FileEntry, FileStatus, } from './types';
|
|
7
7
|
export { SdkError, defaultEndpoints } from './types';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composables/fileUpload/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAItE,eAAO,MAAM,2BAA2B,EAAE,oBAsEzC,CAAC;AAEF,QAAA,MAA2B,kCAAkC,+FACF,CAAC;AAE5D,OAAO,EAAE,kCAAkC,EAAE,4BAA4B,EAAE,CAAC;AAE5E,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,SAAS,EACT,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composables/fileUpload/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAItE,eAAO,MAAM,2BAA2B,EAAE,oBAsEzC,CAAC;AAEF,QAAA,MAA2B,kCAAkC,+FACF,CAAC;AAE5D,OAAO,EAAE,kCAAkC,EAAE,4BAA4B,EAAE,CAAC;AAE5E,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,EAC1B,SAAS,EACT,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -245,6 +245,7 @@ export interface DocumentUploadConfig {
|
|
|
245
245
|
workflowConfig: Record<string, unknown>;
|
|
246
246
|
persist?: boolean;
|
|
247
247
|
maxConcurrency?: number;
|
|
248
|
+
maxFilesPerUpload?: number;
|
|
248
249
|
headers?: Record<string, string>;
|
|
249
250
|
onEvent?: (event: UploadEvent) => void;
|
|
250
251
|
}
|
|
@@ -255,13 +256,21 @@ export interface DocumentUploadReturn {
|
|
|
255
256
|
upload: UseFileUploadReturn;
|
|
256
257
|
storeId: Ref<string>;
|
|
257
258
|
fileInput: Ref<HTMLInputElement | null>;
|
|
259
|
+
maxFilesPerUpload: number;
|
|
258
260
|
uploadFiles: (files: File[]) => Promise<UploadResult | undefined>;
|
|
259
261
|
unassignedFiles: ComputedRef<FileEntry[]>;
|
|
260
262
|
assignFilesToMessage: (messageId: string) => void;
|
|
261
263
|
getFilesForMessage: (messageId: string) => FileEntry[];
|
|
262
264
|
stampResponseId: (responseId: string, localMessageId: string) => void;
|
|
263
265
|
purgeCompletedFiles: () => void;
|
|
264
|
-
handleFilesSelected: (event: Event) => void;
|
|
266
|
+
handleFilesSelected: (event: Event, options?: HandleFilesSelectedOptions) => void;
|
|
267
|
+
}
|
|
268
|
+
export interface HandleFilesSelectedOptions {
|
|
269
|
+
onFilesExceeded?: (info: {
|
|
270
|
+
selected: number;
|
|
271
|
+
allowed: number;
|
|
272
|
+
kept: number;
|
|
273
|
+
}) => void;
|
|
265
274
|
}
|
|
266
275
|
export interface UseFileUploadOptions {
|
|
267
276
|
client: HttpClient;
|
|
@@ -270,6 +279,7 @@ export interface UseFileUploadOptions {
|
|
|
270
279
|
endpoints?: EndpointResolver;
|
|
271
280
|
persist?: PersistOptions | boolean;
|
|
272
281
|
maxConcurrency?: number;
|
|
282
|
+
maxFilesPerUpload?: number;
|
|
273
283
|
retryPolicy?: RetryPolicy;
|
|
274
284
|
validators?: ValidatorFn[];
|
|
275
285
|
onEvent?: (event: UploadEvent) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/composables/fileUpload/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/composables/fileUpload/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFileUpload.d.ts","sourceRoot":"","sources":["../../../src/composables/fileUpload/useFileUpload.ts"],"names":[],"mappings":"AACA,OAAO,EAkBL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAKzB,MAAM,SAAS,CAAC;AAEjB,cAAc,SAAS,CAAC;AAybxB,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,
|
|
1
|
+
{"version":3,"file":"useFileUpload.d.ts","sourceRoot":"","sources":["../../../src/composables/fileUpload/useFileUpload.ts"],"names":[],"mappings":"AACA,OAAO,EAkBL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAKzB,MAAM,SAAS,CAAC;AAEjB,cAAc,SAAS,CAAC;AAybxB,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,CA2yBrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFileUploadWrapper.d.ts","sourceRoot":"","sources":["../../../src/composables/fileUpload/useFileUploadWrapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,oBAAoB,EACpB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"useFileUploadWrapper.d.ts","sourceRoot":"","sources":["../../../src/composables/fileUpload/useFileUploadWrapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,oBAAoB,EACpB,sBAAsB,EAIvB,MAAM,SAAS,CAAC;AAiJjB,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,oBAAoB,GAC3B,sBAAsB,CAsPxB"}
|
|
@@ -588,7 +588,12 @@ function useFileUpload(options) {
|
|
|
588
588
|
let storeId = options.storeId ?? "";
|
|
589
589
|
const endpoints = options.endpoints ?? defaultEndpoints;
|
|
590
590
|
const retryPolicy = options.retryPolicy ?? DEFAULT_RETRY_POLICY;
|
|
591
|
-
const constraints = {
|
|
591
|
+
const constraints = {
|
|
592
|
+
...DEFAULT_CONSTRAINTS,
|
|
593
|
+
...options.maxFilesPerUpload != null && {
|
|
594
|
+
maxFilesPerUpload: options.maxFilesPerUpload
|
|
595
|
+
}
|
|
596
|
+
};
|
|
592
597
|
const validators = options.validators ?? [];
|
|
593
598
|
const maxConcurrency = options.maxConcurrency ?? 3;
|
|
594
599
|
const files = ref(/* @__PURE__ */ new Map());
|
|
@@ -757,10 +762,13 @@ function useFileUpload(options) {
|
|
|
757
762
|
}
|
|
758
763
|
async function upload(params) {
|
|
759
764
|
const fileList = Array.isArray(params.files) ? params.files : [params.files];
|
|
760
|
-
|
|
765
|
+
const activeFileCount = [...files.value.values()].filter(
|
|
766
|
+
(e) => e.status !== "failed" && e.status !== "cancelled" && e.status !== "removed"
|
|
767
|
+
).length;
|
|
768
|
+
if (activeFileCount + fileList.length > constraints.maxFilesPerUpload) {
|
|
761
769
|
throw new SdkError(
|
|
762
770
|
"MAX_FILES_EXCEEDED",
|
|
763
|
-
`Cannot upload ${fileList.length}
|
|
771
|
+
`Cannot upload ${fileList.length} file(s) — ${activeFileCount} already active, maximum is ${constraints.maxFilesPerUpload}.`
|
|
764
772
|
);
|
|
765
773
|
}
|
|
766
774
|
const mergedMeta = {
|
|
@@ -1088,7 +1096,9 @@ function useFileUpload(options) {
|
|
|
1088
1096
|
if (data.status === "completed") {
|
|
1089
1097
|
workflowRun.value.status = "completed";
|
|
1090
1098
|
workflowRun.value.completedAt = now();
|
|
1091
|
-
completeInvolvedFiles(
|
|
1099
|
+
completeInvolvedFiles(
|
|
1100
|
+
Array.isArray(data.documents) ? data.documents : []
|
|
1101
|
+
);
|
|
1092
1102
|
emit({ type: "workflow:completed", runId });
|
|
1093
1103
|
} else if (data.status === "failed" || data.status === "error") {
|
|
1094
1104
|
workflowRun.value.status = "failed";
|
|
@@ -1319,7 +1329,8 @@ function createDocumentUploadProvider(config) {
|
|
|
1319
1329
|
searchStoreConfig,
|
|
1320
1330
|
workflowConfig,
|
|
1321
1331
|
persist = true,
|
|
1322
|
-
maxConcurrency = 3
|
|
1332
|
+
maxConcurrency = 3,
|
|
1333
|
+
maxFilesPerUpload
|
|
1323
1334
|
} = config;
|
|
1324
1335
|
const defaultHeaders = {
|
|
1325
1336
|
"x-user-id": userId,
|
|
@@ -1384,6 +1395,7 @@ function createDocumentUploadProvider(config) {
|
|
|
1384
1395
|
workflowId,
|
|
1385
1396
|
persist,
|
|
1386
1397
|
maxConcurrency,
|
|
1398
|
+
maxFilesPerUpload,
|
|
1387
1399
|
onEvent
|
|
1388
1400
|
});
|
|
1389
1401
|
}
|
|
@@ -1392,6 +1404,7 @@ function createDocumentUploadProvider(config) {
|
|
|
1392
1404
|
function useDocumentUpload(conversationIdRef) {
|
|
1393
1405
|
const fileInput = ref(null);
|
|
1394
1406
|
const upload = getUploadInstance();
|
|
1407
|
+
const resolvedMaxFiles = upload.getSupportedFileTypes().maxFilesPerUpload;
|
|
1395
1408
|
const storeId = ref(resolvedStoreId ?? "");
|
|
1396
1409
|
const currentScope = shallowRef(
|
|
1397
1410
|
upload.scopeBy("conversationId", toValue(conversationIdRef))
|
|
@@ -1467,16 +1480,29 @@ function createDocumentUploadProvider(config) {
|
|
|
1467
1480
|
upload.removeFile(entry.id, { removeFromRemote: false });
|
|
1468
1481
|
}
|
|
1469
1482
|
}
|
|
1470
|
-
function handleFilesSelected(event) {
|
|
1483
|
+
function handleFilesSelected(event, options) {
|
|
1471
1484
|
const input = event.target;
|
|
1472
|
-
|
|
1473
|
-
|
|
1485
|
+
let fileList = Array.from(input.files ?? []);
|
|
1486
|
+
const availableSlots = resolvedMaxFiles - unassignedFiles.value.length;
|
|
1487
|
+
if (fileList.length > availableSlots) {
|
|
1488
|
+
const kept = Math.max(0, availableSlots);
|
|
1489
|
+
options?.onFilesExceeded?.({
|
|
1490
|
+
selected: fileList.length,
|
|
1491
|
+
allowed: availableSlots,
|
|
1492
|
+
kept
|
|
1493
|
+
});
|
|
1494
|
+
fileList = fileList.slice(0, kept);
|
|
1495
|
+
}
|
|
1496
|
+
if (fileList.length > 0) {
|
|
1497
|
+
uploadFiles(fileList);
|
|
1498
|
+
}
|
|
1474
1499
|
input.value = "";
|
|
1475
1500
|
}
|
|
1476
1501
|
return {
|
|
1477
1502
|
upload,
|
|
1478
1503
|
storeId,
|
|
1479
1504
|
fileInput,
|
|
1505
|
+
maxFilesPerUpload: resolvedMaxFiles,
|
|
1480
1506
|
uploadFiles,
|
|
1481
1507
|
unassignedFiles,
|
|
1482
1508
|
assignFilesToMessage,
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { u } from "./useMessageHandler-CMdy-lm0.js";
|
|
2
2
|
import { C, d, p, u as u2, a } from "./useChatKitLabels-ZutacPad.js";
|
|
3
|
-
import { S, c, d as d2, a as a2, u as u3, b, e, f } from "./index-
|
|
3
|
+
import { S, c, d as d2, a as a2, u as u3, b, e, f } from "./index-BPXg1Yf6.js";
|
|
4
4
|
import { _, a as a3, b as b2, C as C2, c as c2, d as d3, e as e2, f as f2, g, h, i, j, k, l, m, n, o, p as p2, q, r, s, t } from "./CkInput.vue_vue_type_script_setup_true_lang-DPZedAQS.js";
|
|
5
5
|
export {
|
|
6
6
|
C as CHAT_KIT_LABELS,
|
package/package.json
CHANGED
|
@@ -10,6 +10,7 @@ vi.mock('./useFileUploadWrapper', () => ({
|
|
|
10
10
|
upload: {},
|
|
11
11
|
storeId: { value: '' },
|
|
12
12
|
fileInput: { value: null },
|
|
13
|
+
maxFilesPerUpload: config.maxFilesPerUpload ?? 20,
|
|
13
14
|
uploadFiles: vi.fn(),
|
|
14
15
|
unassignedFiles: { value: [] },
|
|
15
16
|
assignFilesToMessage: vi.fn(),
|
|
@@ -143,6 +144,10 @@ describe('fileUpload index', () => {
|
|
|
143
144
|
additionalProperties: true,
|
|
144
145
|
});
|
|
145
146
|
});
|
|
147
|
+
|
|
148
|
+
it('does not set maxFilesPerUpload by default', () => {
|
|
149
|
+
expect(defaultDocumentUploadConfig.maxFilesPerUpload).toBeUndefined();
|
|
150
|
+
});
|
|
146
151
|
});
|
|
147
152
|
|
|
148
153
|
describe('createDocumentUploadProvider', () => {
|
|
@@ -187,6 +192,22 @@ describe('fileUpload index', () => {
|
|
|
187
192
|
};
|
|
188
193
|
expect(provider._config).toBe(customConfig);
|
|
189
194
|
});
|
|
195
|
+
|
|
196
|
+
it('passes maxFilesPerUpload through config', () => {
|
|
197
|
+
const customConfig: DocumentUploadConfig = {
|
|
198
|
+
...defaultDocumentUploadConfig,
|
|
199
|
+
maxFilesPerUpload: 5,
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
const provider = createDocumentUploadProvider(
|
|
203
|
+
customConfig,
|
|
204
|
+
) as unknown as {
|
|
205
|
+
useDocumentUpload: (id: string) => { maxFilesPerUpload: number };
|
|
206
|
+
_config: DocumentUploadConfig;
|
|
207
|
+
};
|
|
208
|
+
const result = provider.useDocumentUpload('conv-1');
|
|
209
|
+
expect(result.maxFilesPerUpload).toBe(5);
|
|
210
|
+
});
|
|
190
211
|
});
|
|
191
212
|
|
|
192
213
|
describe('useDocumentUploadWithDefaultConfig', () => {
|
|
@@ -345,6 +345,7 @@ export interface DocumentUploadConfig {
|
|
|
345
345
|
workflowConfig: Record<string, unknown>;
|
|
346
346
|
persist?: boolean;
|
|
347
347
|
maxConcurrency?: number;
|
|
348
|
+
maxFilesPerUpload?: number;
|
|
348
349
|
headers?: Record<string, string>;
|
|
349
350
|
onEvent?: (event: UploadEvent) => void;
|
|
350
351
|
}
|
|
@@ -359,13 +360,25 @@ export interface DocumentUploadReturn {
|
|
|
359
360
|
upload: UseFileUploadReturn;
|
|
360
361
|
storeId: Ref<string>;
|
|
361
362
|
fileInput: Ref<HTMLInputElement | null>;
|
|
363
|
+
maxFilesPerUpload: number;
|
|
362
364
|
uploadFiles: (files: File[]) => Promise<UploadResult | undefined>;
|
|
363
365
|
unassignedFiles: ComputedRef<FileEntry[]>;
|
|
364
366
|
assignFilesToMessage: (messageId: string) => void;
|
|
365
367
|
getFilesForMessage: (messageId: string) => FileEntry[];
|
|
366
368
|
stampResponseId: (responseId: string, localMessageId: string) => void;
|
|
367
369
|
purgeCompletedFiles: () => void;
|
|
368
|
-
handleFilesSelected: (
|
|
370
|
+
handleFilesSelected: (
|
|
371
|
+
event: Event,
|
|
372
|
+
options?: HandleFilesSelectedOptions,
|
|
373
|
+
) => void;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
export interface HandleFilesSelectedOptions {
|
|
377
|
+
onFilesExceeded?: (info: {
|
|
378
|
+
selected: number;
|
|
379
|
+
allowed: number;
|
|
380
|
+
kept: number;
|
|
381
|
+
}) => void;
|
|
369
382
|
}
|
|
370
383
|
|
|
371
384
|
// ---------------------------------------------------------------------------
|
|
@@ -379,6 +392,7 @@ export interface UseFileUploadOptions {
|
|
|
379
392
|
endpoints?: EndpointResolver;
|
|
380
393
|
persist?: PersistOptions | boolean;
|
|
381
394
|
maxConcurrency?: number;
|
|
395
|
+
maxFilesPerUpload?: number;
|
|
382
396
|
retryPolicy?: RetryPolicy;
|
|
383
397
|
validators?: ValidatorFn[];
|
|
384
398
|
onEvent?: (event: UploadEvent) => void;
|
|
@@ -29,6 +29,10 @@ function makeEntry(id: string, remoteFileId: string): FileEntry {
|
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
function makeSuccessEntry(id: string, remoteFileId: string): FileEntry {
|
|
33
|
+
return { ...makeEntry(id, remoteFileId), status: 'success', progress: 100 };
|
|
34
|
+
}
|
|
35
|
+
|
|
32
36
|
/**
|
|
33
37
|
* Mock `HttpClient` whose `stream` captures the subscriber so the test can
|
|
34
38
|
* drive SSE events synchronously. `post` resolves the workflow run id.
|
|
@@ -47,6 +51,18 @@ function createMockClient(captured: { cb?: (event: SseEvent) => void }) {
|
|
|
47
51
|
} as unknown as HttpClient;
|
|
48
52
|
}
|
|
49
53
|
|
|
54
|
+
function createUploadMockClient() {
|
|
55
|
+
return {
|
|
56
|
+
get: vi.fn(),
|
|
57
|
+
delete: vi.fn(),
|
|
58
|
+
post: vi.fn().mockResolvedValue([{ id: 'remote-1' }]),
|
|
59
|
+
stream: vi.fn(() => ({
|
|
60
|
+
subscribe: vi.fn(),
|
|
61
|
+
close: vi.fn(),
|
|
62
|
+
})),
|
|
63
|
+
} as unknown as HttpClient;
|
|
64
|
+
}
|
|
65
|
+
|
|
50
66
|
function completeEvent(
|
|
51
67
|
documents: Array<{ document_id?: string; file_id?: string }>,
|
|
52
68
|
): SseEvent {
|
|
@@ -60,6 +76,10 @@ function completeEvent(
|
|
|
60
76
|
};
|
|
61
77
|
}
|
|
62
78
|
|
|
79
|
+
function createFile(name: string, size = 100): File {
|
|
80
|
+
return new File(['x'.repeat(size)], name, { type: 'application/pdf' });
|
|
81
|
+
}
|
|
82
|
+
|
|
63
83
|
describe('useFileUpload runWorkflow', () => {
|
|
64
84
|
it('stamps documentId onto each file from the completed event, matched by file_id', async () => {
|
|
65
85
|
const captured: { cb?: (event: SseEvent) => void } = {};
|
|
@@ -109,3 +129,130 @@ describe('useFileUpload runWorkflow', () => {
|
|
|
109
129
|
expect(upload.getFileState('key-1')?.metadata.documentId).toBeUndefined();
|
|
110
130
|
});
|
|
111
131
|
});
|
|
132
|
+
|
|
133
|
+
describe('useFileUpload maxFilesPerUpload', () => {
|
|
134
|
+
it('uses default maxFilesPerUpload of 20 when not configured', () => {
|
|
135
|
+
const upload = useFileUpload({
|
|
136
|
+
client: createUploadMockClient(),
|
|
137
|
+
workflowId: 'wf',
|
|
138
|
+
storeId: 'ss-1',
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
const constraints = upload.getSupportedFileTypes();
|
|
142
|
+
expect(constraints.maxFilesPerUpload).toBe(20);
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
it('respects custom maxFilesPerUpload from options', () => {
|
|
146
|
+
const upload = useFileUpload({
|
|
147
|
+
client: createUploadMockClient(),
|
|
148
|
+
workflowId: 'wf',
|
|
149
|
+
storeId: 'ss-1',
|
|
150
|
+
maxFilesPerUpload: 5,
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
const constraints = upload.getSupportedFileTypes();
|
|
154
|
+
expect(constraints.maxFilesPerUpload).toBe(5);
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
it('throws MAX_FILES_EXCEEDED when batch exceeds limit', async () => {
|
|
158
|
+
const upload = useFileUpload({
|
|
159
|
+
client: createUploadMockClient(),
|
|
160
|
+
workflowId: 'wf',
|
|
161
|
+
storeId: 'ss-1',
|
|
162
|
+
maxFilesPerUpload: 2,
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
const files = [
|
|
166
|
+
createFile('a.pdf'),
|
|
167
|
+
createFile('b.pdf'),
|
|
168
|
+
createFile('c.pdf'),
|
|
169
|
+
];
|
|
170
|
+
|
|
171
|
+
await expect(upload.upload({ id: 'g1', files })).rejects.toMatchObject({
|
|
172
|
+
code: 'MAX_FILES_EXCEEDED',
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
it('throws MAX_FILES_EXCEEDED when active files plus new batch exceeds limit', async () => {
|
|
177
|
+
const client = createUploadMockClient();
|
|
178
|
+
(client.post as ReturnType<typeof vi.fn>).mockResolvedValue([
|
|
179
|
+
{ id: 'remote-1' },
|
|
180
|
+
]);
|
|
181
|
+
|
|
182
|
+
const upload = useFileUpload({
|
|
183
|
+
client,
|
|
184
|
+
workflowId: 'wf',
|
|
185
|
+
storeId: 'ss-1',
|
|
186
|
+
maxFilesPerUpload: 3,
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
upload.files.value.set('existing-1', makeSuccessEntry('existing-1', 'r-1'));
|
|
190
|
+
upload.files.value.set('existing-2', makeSuccessEntry('existing-2', 'r-2'));
|
|
191
|
+
|
|
192
|
+
await expect(
|
|
193
|
+
upload.upload({
|
|
194
|
+
id: 'g2',
|
|
195
|
+
files: [createFile('a.pdf'), createFile('b.pdf')],
|
|
196
|
+
}),
|
|
197
|
+
).rejects.toMatchObject({
|
|
198
|
+
code: 'MAX_FILES_EXCEEDED',
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
it('allows upload when active files plus new batch is within limit', async () => {
|
|
203
|
+
const client = createUploadMockClient();
|
|
204
|
+
(client.post as ReturnType<typeof vi.fn>).mockResolvedValue([
|
|
205
|
+
{ id: 'remote-new' },
|
|
206
|
+
]);
|
|
207
|
+
|
|
208
|
+
const upload = useFileUpload({
|
|
209
|
+
client,
|
|
210
|
+
workflowId: 'wf',
|
|
211
|
+
storeId: 'ss-1',
|
|
212
|
+
maxFilesPerUpload: 3,
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
upload.files.value.set('existing-1', makeSuccessEntry('existing-1', 'r-1'));
|
|
216
|
+
|
|
217
|
+
const result = await upload.upload({
|
|
218
|
+
id: 'g3',
|
|
219
|
+
files: [createFile('a.pdf'), createFile('b.pdf')],
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
expect(result.results).toHaveLength(2);
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
it('does not count failed/cancelled/removed files towards active count', async () => {
|
|
226
|
+
const client = createUploadMockClient();
|
|
227
|
+
(client.post as ReturnType<typeof vi.fn>).mockResolvedValue([
|
|
228
|
+
{ id: 'remote-new' },
|
|
229
|
+
]);
|
|
230
|
+
|
|
231
|
+
const upload = useFileUpload({
|
|
232
|
+
client,
|
|
233
|
+
workflowId: 'wf',
|
|
234
|
+
storeId: 'ss-1',
|
|
235
|
+
maxFilesPerUpload: 2,
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
const failedEntry: FileEntry = {
|
|
239
|
+
...makeEntry('failed-1', 'r-f1'),
|
|
240
|
+
status: 'failed',
|
|
241
|
+
error: { code: 'UPLOAD_FAILED', message: 'err', occurredAt: 'now' },
|
|
242
|
+
};
|
|
243
|
+
const cancelledEntry: FileEntry = {
|
|
244
|
+
...makeEntry('cancelled-1', 'r-c1'),
|
|
245
|
+
status: 'cancelled',
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
upload.files.value.set('failed-1', failedEntry);
|
|
249
|
+
upload.files.value.set('cancelled-1', cancelledEntry);
|
|
250
|
+
|
|
251
|
+
const result = await upload.upload({
|
|
252
|
+
id: 'g4',
|
|
253
|
+
files: [createFile('a.pdf'), createFile('b.pdf')],
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
expect(result.results).toHaveLength(2);
|
|
257
|
+
});
|
|
258
|
+
});
|
|
@@ -473,7 +473,12 @@ export function useFileUpload(
|
|
|
473
473
|
let storeId = options.storeId ?? '';
|
|
474
474
|
const endpoints: EndpointResolver = options.endpoints ?? defaultEndpoints;
|
|
475
475
|
const retryPolicy: RetryPolicy = options.retryPolicy ?? DEFAULT_RETRY_POLICY;
|
|
476
|
-
const constraints: FileConstraints = {
|
|
476
|
+
const constraints: FileConstraints = {
|
|
477
|
+
...DEFAULT_CONSTRAINTS,
|
|
478
|
+
...(options.maxFilesPerUpload != null && {
|
|
479
|
+
maxFilesPerUpload: options.maxFilesPerUpload,
|
|
480
|
+
}),
|
|
481
|
+
};
|
|
477
482
|
const validators: ValidatorFn[] = options.validators ?? [];
|
|
478
483
|
const maxConcurrency = options.maxConcurrency ?? 3;
|
|
479
484
|
|
|
@@ -701,10 +706,17 @@ export function useFileUpload(
|
|
|
701
706
|
? params.files
|
|
702
707
|
: [params.files];
|
|
703
708
|
|
|
704
|
-
|
|
709
|
+
const activeFileCount = [...files.value.values()].filter(
|
|
710
|
+
(e) =>
|
|
711
|
+
e.status !== 'failed' &&
|
|
712
|
+
e.status !== 'cancelled' &&
|
|
713
|
+
e.status !== 'removed',
|
|
714
|
+
).length;
|
|
715
|
+
|
|
716
|
+
if (activeFileCount + fileList.length > constraints.maxFilesPerUpload) {
|
|
705
717
|
throw new SdkError(
|
|
706
718
|
'MAX_FILES_EXCEEDED',
|
|
707
|
-
`Cannot upload ${fileList.length}
|
|
719
|
+
`Cannot upload ${fileList.length} file(s) — ${activeFileCount} already active, maximum is ${constraints.maxFilesPerUpload}.`,
|
|
708
720
|
);
|
|
709
721
|
}
|
|
710
722
|
|
|
@@ -1133,7 +1145,9 @@ export function useFileUpload(
|
|
|
1133
1145
|
if (data.status === 'completed') {
|
|
1134
1146
|
workflowRun.value.status = 'completed';
|
|
1135
1147
|
workflowRun.value.completedAt = now();
|
|
1136
|
-
completeInvolvedFiles(
|
|
1148
|
+
completeInvolvedFiles(
|
|
1149
|
+
Array.isArray(data.documents) ? data.documents : [],
|
|
1150
|
+
);
|
|
1137
1151
|
emit({ type: 'workflow:completed', runId });
|
|
1138
1152
|
} else if (data.status === 'failed' || data.status === 'error') {
|
|
1139
1153
|
workflowRun.value.status = 'failed';
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { createDocumentUploadProvider } from './useFileUploadWrapper';
|
|
2
|
+
import type { DocumentUploadConfig } from './types';
|
|
3
|
+
|
|
4
|
+
function createFile(name: string, size = 100): File {
|
|
5
|
+
return new File(['x'.repeat(size)], name, { type: 'application/pdf' });
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function createMockFetchResponse(body: unknown, status = 200) {
|
|
9
|
+
return Promise.resolve({
|
|
10
|
+
ok: status >= 200 && status < 300,
|
|
11
|
+
status,
|
|
12
|
+
headers: new Headers({ 'content-length': '1' }),
|
|
13
|
+
json: () => Promise.resolve(body),
|
|
14
|
+
body: null,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function makeInputEvent(files: File[]): Event {
|
|
19
|
+
const input = document.createElement('input');
|
|
20
|
+
input.type = 'file';
|
|
21
|
+
Object.defineProperty(input, 'files', {
|
|
22
|
+
value: files,
|
|
23
|
+
writable: true,
|
|
24
|
+
});
|
|
25
|
+
return { target: input } as unknown as Event;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function buildConfig(
|
|
29
|
+
overrides?: Partial<DocumentUploadConfig>,
|
|
30
|
+
): DocumentUploadConfig {
|
|
31
|
+
return {
|
|
32
|
+
baseUrl: 'https://test.example.com',
|
|
33
|
+
userId: 'user-1',
|
|
34
|
+
workflowId: 'wf-1',
|
|
35
|
+
searchStoreConfig: {
|
|
36
|
+
models: [
|
|
37
|
+
{
|
|
38
|
+
type: 'dense',
|
|
39
|
+
dimension: 1024,
|
|
40
|
+
distance: 'cosine',
|
|
41
|
+
modality: 'text',
|
|
42
|
+
embedding_model: 'test-model',
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
fusion_strategy: { type: 'rrf' },
|
|
46
|
+
},
|
|
47
|
+
workflowConfig: { name: 'wf-1' },
|
|
48
|
+
...overrides,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
describe('useFileUploadWrapper handleFilesSelected', () => {
|
|
53
|
+
let fetchMock: ReturnType<typeof vi.fn>;
|
|
54
|
+
|
|
55
|
+
beforeEach(() => {
|
|
56
|
+
fetchMock = vi.fn();
|
|
57
|
+
vi.stubGlobal('fetch', fetchMock);
|
|
58
|
+
|
|
59
|
+
fetchMock.mockImplementation((url: string, init?: RequestInit) => {
|
|
60
|
+
const method = init?.method ?? 'GET';
|
|
61
|
+
|
|
62
|
+
if (method === 'GET' && url.includes('search-stores')) {
|
|
63
|
+
return createMockFetchResponse([{ id: 'store-1' }]);
|
|
64
|
+
}
|
|
65
|
+
if (method === 'POST' && url.includes('/files')) {
|
|
66
|
+
return createMockFetchResponse([{ id: 'remote-1' }]);
|
|
67
|
+
}
|
|
68
|
+
if (method === 'POST' && url.includes('/workflows')) {
|
|
69
|
+
return createMockFetchResponse({ id: 'run-1' });
|
|
70
|
+
}
|
|
71
|
+
if (url.includes('/event-stream')) {
|
|
72
|
+
return createMockFetchResponse(null, 200).then((res) => ({
|
|
73
|
+
...res,
|
|
74
|
+
body: new ReadableStream({
|
|
75
|
+
start(controller) {
|
|
76
|
+
controller.close();
|
|
77
|
+
},
|
|
78
|
+
}),
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
return createMockFetchResponse({});
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
afterEach(() => {
|
|
86
|
+
vi.unstubAllGlobals();
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it('exposes maxFilesPerUpload from config', () => {
|
|
90
|
+
const provider = createDocumentUploadProvider(
|
|
91
|
+
buildConfig({ maxFilesPerUpload: 7 }),
|
|
92
|
+
);
|
|
93
|
+
const result = provider.useDocumentUpload('conv-1');
|
|
94
|
+
expect(result.maxFilesPerUpload).toBe(7);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it('defaults maxFilesPerUpload to 20 when not configured', () => {
|
|
98
|
+
const provider = createDocumentUploadProvider(buildConfig());
|
|
99
|
+
const result = provider.useDocumentUpload('conv-1');
|
|
100
|
+
expect(result.maxFilesPerUpload).toBe(20);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
it('uploads all files when within the limit', async () => {
|
|
104
|
+
const provider = createDocumentUploadProvider(
|
|
105
|
+
buildConfig({ maxFilesPerUpload: 5 }),
|
|
106
|
+
);
|
|
107
|
+
const { handleFilesSelected } = provider.useDocumentUpload('conv-1');
|
|
108
|
+
|
|
109
|
+
const onFilesExceeded = vi.fn();
|
|
110
|
+
const event = makeInputEvent([createFile('a.pdf'), createFile('b.pdf')]);
|
|
111
|
+
|
|
112
|
+
handleFilesSelected(event, { onFilesExceeded });
|
|
113
|
+
|
|
114
|
+
expect(onFilesExceeded).not.toHaveBeenCalled();
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it('truncates files to available slots and calls onFilesExceeded', () => {
|
|
118
|
+
const provider = createDocumentUploadProvider(
|
|
119
|
+
buildConfig({ maxFilesPerUpload: 2 }),
|
|
120
|
+
);
|
|
121
|
+
const { handleFilesSelected } = provider.useDocumentUpload('conv-1');
|
|
122
|
+
|
|
123
|
+
const onFilesExceeded = vi.fn();
|
|
124
|
+
const event = makeInputEvent([
|
|
125
|
+
createFile('a.pdf'),
|
|
126
|
+
createFile('b.pdf'),
|
|
127
|
+
createFile('c.pdf'),
|
|
128
|
+
createFile('d.pdf'),
|
|
129
|
+
]);
|
|
130
|
+
|
|
131
|
+
handleFilesSelected(event, { onFilesExceeded });
|
|
132
|
+
|
|
133
|
+
expect(onFilesExceeded).toHaveBeenCalledWith({
|
|
134
|
+
selected: 4,
|
|
135
|
+
allowed: 2,
|
|
136
|
+
kept: 2,
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
it('resets input value after handling', () => {
|
|
141
|
+
const provider = createDocumentUploadProvider(
|
|
142
|
+
buildConfig({ maxFilesPerUpload: 5 }),
|
|
143
|
+
);
|
|
144
|
+
const { handleFilesSelected } = provider.useDocumentUpload('conv-1');
|
|
145
|
+
|
|
146
|
+
const event = makeInputEvent([createFile('a.pdf')]);
|
|
147
|
+
const input = (event as any).target as HTMLInputElement;
|
|
148
|
+
|
|
149
|
+
const valueSetter = vi.spyOn(input, 'value', 'set');
|
|
150
|
+
|
|
151
|
+
handleFilesSelected(event);
|
|
152
|
+
|
|
153
|
+
expect(valueSetter).toHaveBeenCalledWith('');
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
it('does not upload when no slots are available', async () => {
|
|
157
|
+
const provider = createDocumentUploadProvider(
|
|
158
|
+
buildConfig({ maxFilesPerUpload: 0 }),
|
|
159
|
+
);
|
|
160
|
+
const { handleFilesSelected } = provider.useDocumentUpload('conv-1');
|
|
161
|
+
|
|
162
|
+
const onFilesExceeded = vi.fn();
|
|
163
|
+
const event = makeInputEvent([createFile('a.pdf')]);
|
|
164
|
+
|
|
165
|
+
handleFilesSelected(event, { onFilesExceeded });
|
|
166
|
+
|
|
167
|
+
expect(onFilesExceeded).toHaveBeenCalledWith({
|
|
168
|
+
selected: 1,
|
|
169
|
+
allowed: 0,
|
|
170
|
+
kept: 0,
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
it('does not call onFilesExceeded when exactly at the limit', () => {
|
|
175
|
+
const provider = createDocumentUploadProvider(
|
|
176
|
+
buildConfig({ maxFilesPerUpload: 3 }),
|
|
177
|
+
);
|
|
178
|
+
const { handleFilesSelected } = provider.useDocumentUpload('conv-1');
|
|
179
|
+
|
|
180
|
+
const onFilesExceeded = vi.fn();
|
|
181
|
+
const event = makeInputEvent([
|
|
182
|
+
createFile('a.pdf'),
|
|
183
|
+
createFile('b.pdf'),
|
|
184
|
+
createFile('c.pdf'),
|
|
185
|
+
]);
|
|
186
|
+
|
|
187
|
+
handleFilesSelected(event, { onFilesExceeded });
|
|
188
|
+
|
|
189
|
+
expect(onFilesExceeded).not.toHaveBeenCalled();
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
it('works without onFilesExceeded callback (no crash)', () => {
|
|
193
|
+
const provider = createDocumentUploadProvider(
|
|
194
|
+
buildConfig({ maxFilesPerUpload: 1 }),
|
|
195
|
+
);
|
|
196
|
+
const { handleFilesSelected } = provider.useDocumentUpload('conv-1');
|
|
197
|
+
|
|
198
|
+
const event = makeInputEvent([createFile('a.pdf'), createFile('b.pdf')]);
|
|
199
|
+
|
|
200
|
+
expect(() => handleFilesSelected(event)).not.toThrow();
|
|
201
|
+
});
|
|
202
|
+
});
|
|
@@ -9,6 +9,7 @@ import type {
|
|
|
9
9
|
DocumentUploadConfig,
|
|
10
10
|
DocumentUploadProvider,
|
|
11
11
|
DocumentUploadReturn,
|
|
12
|
+
HandleFilesSelectedOptions,
|
|
12
13
|
UploadEvent,
|
|
13
14
|
} from './types';
|
|
14
15
|
import { useFileUpload } from './useFileUpload';
|
|
@@ -166,6 +167,7 @@ export function createDocumentUploadProvider(
|
|
|
166
167
|
workflowConfig,
|
|
167
168
|
persist = true,
|
|
168
169
|
maxConcurrency = 3,
|
|
170
|
+
maxFilesPerUpload,
|
|
169
171
|
} = config;
|
|
170
172
|
|
|
171
173
|
const defaultHeaders: Record<string, string> = {
|
|
@@ -249,6 +251,7 @@ export function createDocumentUploadProvider(
|
|
|
249
251
|
workflowId,
|
|
250
252
|
persist,
|
|
251
253
|
maxConcurrency,
|
|
254
|
+
maxFilesPerUpload,
|
|
252
255
|
onEvent,
|
|
253
256
|
});
|
|
254
257
|
}
|
|
@@ -262,6 +265,7 @@ export function createDocumentUploadProvider(
|
|
|
262
265
|
): DocumentUploadReturn {
|
|
263
266
|
const fileInput = ref<HTMLInputElement | null>(null);
|
|
264
267
|
const upload = getUploadInstance();
|
|
268
|
+
const resolvedMaxFiles = upload.getSupportedFileTypes().maxFilesPerUpload;
|
|
265
269
|
const storeId = ref<string>(resolvedStoreId ?? '');
|
|
266
270
|
|
|
267
271
|
const currentScope = shallowRef<ScopedFileView | null>(
|
|
@@ -360,10 +364,27 @@ export function createDocumentUploadProvider(
|
|
|
360
364
|
}
|
|
361
365
|
}
|
|
362
366
|
|
|
363
|
-
function handleFilesSelected(
|
|
367
|
+
function handleFilesSelected(
|
|
368
|
+
event: Event,
|
|
369
|
+
options?: HandleFilesSelectedOptions,
|
|
370
|
+
) {
|
|
364
371
|
const input = event.target as HTMLInputElement;
|
|
365
|
-
|
|
366
|
-
|
|
372
|
+
let fileList = Array.from(input.files ?? []);
|
|
373
|
+
const availableSlots = resolvedMaxFiles - unassignedFiles.value.length;
|
|
374
|
+
|
|
375
|
+
if (fileList.length > availableSlots) {
|
|
376
|
+
const kept = Math.max(0, availableSlots);
|
|
377
|
+
options?.onFilesExceeded?.({
|
|
378
|
+
selected: fileList.length,
|
|
379
|
+
allowed: availableSlots,
|
|
380
|
+
kept,
|
|
381
|
+
});
|
|
382
|
+
fileList = fileList.slice(0, kept);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
if (fileList.length > 0) {
|
|
386
|
+
uploadFiles(fileList);
|
|
387
|
+
}
|
|
367
388
|
input.value = '';
|
|
368
389
|
}
|
|
369
390
|
|
|
@@ -371,6 +392,7 @@ export function createDocumentUploadProvider(
|
|
|
371
392
|
upload,
|
|
372
393
|
storeId,
|
|
373
394
|
fileInput,
|
|
395
|
+
maxFilesPerUpload: resolvedMaxFiles,
|
|
374
396
|
uploadFiles,
|
|
375
397
|
unassignedFiles,
|
|
376
398
|
assignFilesToMessage,
|