@aleph-alpha/chat-kit 2.1.1 → 2.3.0
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/{CkInput.vue_vue_type_script_setup_true_lang-DPZedAQS.js → CkInput.vue_vue_type_script_setup_true_lang-DYTizPsB.js} +361 -72
- package/dist/chat-kit.css +40 -5
- package/dist/components/base/CkDropZoneOverlay/CkDropZoneIllustration.vue.d.ts +4 -0
- package/dist/components/base/CkDropZoneOverlay/CkDropZoneIllustration.vue.d.ts.map +1 -0
- package/dist/components/base/CkDropZoneOverlay/CkDropZoneOverlay.stories.d.ts +17 -0
- package/dist/components/base/CkDropZoneOverlay/CkDropZoneOverlay.stories.d.ts.map +1 -0
- package/dist/components/base/CkDropZoneOverlay/CkDropZoneOverlay.vue.d.ts +31 -0
- package/dist/components/base/CkDropZoneOverlay/CkDropZoneOverlay.vue.d.ts.map +1 -0
- package/dist/components/base/CkDropZoneOverlay/index.d.ts +3 -0
- package/dist/components/base/CkDropZoneOverlay/index.d.ts.map +1 -0
- package/dist/components/base/CkDropZoneOverlay/types.d.ts +88 -0
- package/dist/components/base/CkDropZoneOverlay/types.d.ts.map +1 -0
- package/dist/components/base/CkFeedbackDialog/CkFeedbackDialog.vue.d.ts.map +1 -1
- package/dist/components/base/CkFileItemsList/CkFileItemsList.stories.d.ts +7 -0
- package/dist/components/base/CkFileItemsList/CkFileItemsList.stories.d.ts.map +1 -1
- package/dist/components/base/CkFileItemsList/CkFileItemsList.vue.d.ts +1 -0
- package/dist/components/base/CkFileItemsList/CkFileItemsList.vue.d.ts.map +1 -1
- package/dist/components/base/CkFileItemsList/types.d.ts +9 -0
- package/dist/components/base/CkFileItemsList/types.d.ts.map +1 -1
- package/dist/components/base/index.d.ts +2 -0
- package/dist/components/base/index.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +19 -18
- package/dist/composables/fileUpload/index.d.ts.map +1 -1
- package/dist/composables/fileUpload/types.d.ts +1 -1
- package/dist/composables/fileUpload/types.d.ts.map +1 -1
- package/dist/composables/fileUpload/useFileUpload.d.ts.map +1 -1
- package/dist/composables/index.js +1 -1
- package/dist/{index-BPXg1Yf6.js → index-THzZwfMU.js} +45 -23
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -20
- package/package.json +1 -1
- package/src/components/base/CkDropZoneOverlay/CkDropZoneIllustration.vue +125 -0
- package/src/components/base/CkDropZoneOverlay/CkDropZoneOverlay.spec.ts +104 -0
- package/src/components/base/CkDropZoneOverlay/CkDropZoneOverlay.stories.ts +130 -0
- package/src/components/base/CkDropZoneOverlay/CkDropZoneOverlay.vue +272 -0
- package/src/components/base/CkDropZoneOverlay/index.ts +2 -0
- package/src/components/base/CkDropZoneOverlay/types.ts +93 -0
- package/src/components/base/CkFeedbackDialog/CkFeedbackDialog.vue +22 -1
- package/src/components/base/CkFileItemsList/CkFileItemsList.spec.ts +67 -0
- package/src/components/base/CkFileItemsList/CkFileItemsList.stories.ts +48 -0
- package/src/components/base/CkFileItemsList/CkFileItemsList.vue +78 -4
- package/src/components/base/CkFileItemsList/types.ts +9 -0
- package/src/components/base/index.ts +7 -0
- package/src/components/index.ts +5 -0
- package/src/composables/fileUpload/index.spec.ts +18 -7
- package/src/composables/fileUpload/index.ts +39 -19
- package/src/composables/fileUpload/types.ts +1 -1
- package/src/composables/fileUpload/useFileUpload.spec.ts +26 -0
- package/src/composables/fileUpload/useFileUpload.ts +12 -3
- package/src/composables/fileUpload/useFileUploadWrapper.ts +1 -1
- package/src/index.ts +5 -0
package/src/components/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ export {
|
|
|
3
3
|
CkAgentMessage,
|
|
4
4
|
CkConversationLayout,
|
|
5
5
|
CkCopyMessageActionButton,
|
|
6
|
+
CkDropZoneOverlay,
|
|
6
7
|
CkFeedbackButton,
|
|
7
8
|
CkFeedbackDialog,
|
|
8
9
|
CkFileItemsList,
|
|
@@ -21,6 +22,10 @@ export {
|
|
|
21
22
|
} from './base';
|
|
22
23
|
export type {
|
|
23
24
|
CkConversationLayoutProps,
|
|
25
|
+
CkDropZoneOverlayProps,
|
|
26
|
+
CkDropZoneOverlayEmits,
|
|
27
|
+
CkDropZoneRejection,
|
|
28
|
+
CkDropZoneRejectionReason,
|
|
24
29
|
CkFeedbackButtonProps,
|
|
25
30
|
CkFeedbackDialogEmits,
|
|
26
31
|
CkFeedbackDialogProps,
|
|
@@ -63,11 +63,11 @@ describe('fileUpload index', () => {
|
|
|
63
63
|
expect(workflowConfig.workflow_name).toBe('DocumentAI');
|
|
64
64
|
});
|
|
65
65
|
|
|
66
|
-
it('
|
|
66
|
+
it('does not send the legacy workflow definition field', () => {
|
|
67
|
+
// The search-stores API dropped the redundant `definition` field
|
|
68
|
+
// (it duplicated `workflow_name`); sending it now breaks store creation.
|
|
67
69
|
const { workflowConfig } = defaultDocumentUploadConfig;
|
|
68
|
-
expect(workflowConfig.definition).
|
|
69
|
-
workflow_name: 'DocumentAI',
|
|
70
|
-
});
|
|
70
|
+
expect(workflowConfig.definition).toBeUndefined();
|
|
71
71
|
});
|
|
72
72
|
|
|
73
73
|
it('configures initialization parameters', () => {
|
|
@@ -83,7 +83,16 @@ describe('fileUpload index', () => {
|
|
|
83
83
|
.parameters as Record<string, unknown>;
|
|
84
84
|
const extraction = params.document_extraction as Record<string, unknown>;
|
|
85
85
|
|
|
86
|
-
expect(extraction.pdf_reader).toEqual({
|
|
86
|
+
expect(extraction.pdf_reader).toEqual({
|
|
87
|
+
kind: 'vision',
|
|
88
|
+
batch_size: 10,
|
|
89
|
+
ignore_headers_footers: true,
|
|
90
|
+
max_tokens: 16384,
|
|
91
|
+
model: 'gemini-2.5-flash',
|
|
92
|
+
retries: 3,
|
|
93
|
+
timeout: 120,
|
|
94
|
+
workers: 4,
|
|
95
|
+
});
|
|
87
96
|
expect(extraction.docx_reader).toEqual({
|
|
88
97
|
kind: 'docx',
|
|
89
98
|
batch_size: 10,
|
|
@@ -121,10 +130,12 @@ describe('fileUpload index', () => {
|
|
|
121
130
|
unknown
|
|
122
131
|
>;
|
|
123
132
|
expect(chunkExtraction.chunker).toEqual({
|
|
124
|
-
kind: '
|
|
133
|
+
kind: 'recursive',
|
|
125
134
|
batch_size: 1,
|
|
126
135
|
include_image_descriptions: false,
|
|
127
|
-
|
|
136
|
+
chunk_overlap: 200,
|
|
137
|
+
chunk_size: 1200,
|
|
138
|
+
separators: ['\n\n', '\n', ' ', '.', ',', ''],
|
|
128
139
|
});
|
|
129
140
|
});
|
|
130
141
|
|
|
@@ -22,40 +22,60 @@ export const defaultDocumentUploadConfig: DocumentUploadConfig = {
|
|
|
22
22
|
workflowConfig: {
|
|
23
23
|
name: WORKFLOW_ID,
|
|
24
24
|
workflow_name: 'DocumentAI',
|
|
25
|
-
definition: { workflow_name: 'DocumentAI' },
|
|
26
25
|
parameters: {
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
chunk_extraction: {
|
|
27
|
+
chunker: {
|
|
28
|
+
batch_size: 1,
|
|
29
|
+
chunk_overlap: 200,
|
|
30
|
+
chunk_size: 1200,
|
|
31
|
+
include_image_descriptions: false,
|
|
32
|
+
kind: 'recursive',
|
|
33
|
+
separators: ['\n\n', '\n', ' ', '.', ',', ''],
|
|
34
|
+
},
|
|
29
35
|
},
|
|
30
36
|
document_extraction: {
|
|
31
|
-
pdf_reader: { kind: 'pypdf', batch_size: 10 },
|
|
32
37
|
docx_reader: {
|
|
33
|
-
kind: 'docx',
|
|
34
38
|
batch_size: 10,
|
|
39
|
+
kind: 'docx',
|
|
35
40
|
split_by_sections: false,
|
|
36
41
|
},
|
|
37
|
-
|
|
38
|
-
xlsx_reader: {
|
|
39
|
-
kind: 'xlsx',
|
|
42
|
+
markdown_reader: {
|
|
40
43
|
batch_size: 10,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
kind: 'markdown',
|
|
45
|
+
},
|
|
46
|
+
pdf_reader: {
|
|
47
|
+
batch_size: 10,
|
|
48
|
+
ignore_headers_footers: true,
|
|
49
|
+
kind: 'vision',
|
|
50
|
+
max_tokens: 16384,
|
|
51
|
+
model: 'gemini-2.5-flash',
|
|
52
|
+
retries: 3,
|
|
53
|
+
timeout: 120,
|
|
54
|
+
workers: 4,
|
|
44
55
|
},
|
|
45
|
-
markdown_reader: { kind: 'markdown', batch_size: 10 },
|
|
46
56
|
plaintext_reader: {
|
|
47
|
-
kind: 'plaintext',
|
|
48
57
|
batch_size: 10,
|
|
58
|
+
kind: 'plaintext',
|
|
49
59
|
max_content_size: 500000,
|
|
50
60
|
min_space_ratio: 0.02,
|
|
51
61
|
},
|
|
62
|
+
pptx_reader: {
|
|
63
|
+
batch_size: 10,
|
|
64
|
+
include_notes: true,
|
|
65
|
+
kind: 'pptx',
|
|
66
|
+
},
|
|
67
|
+
xlsx_reader: {
|
|
68
|
+
batch_size: 10,
|
|
69
|
+
include_empty_sheets: false,
|
|
70
|
+
kind: 'xlsx',
|
|
71
|
+
max_cols: 100,
|
|
72
|
+
max_rows: 10000,
|
|
73
|
+
},
|
|
52
74
|
},
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
include_image_descriptions: false,
|
|
58
|
-
chunk_size: 200,
|
|
75
|
+
initialization: {
|
|
76
|
+
store: {
|
|
77
|
+
batch_size: 10,
|
|
78
|
+
pages_per_part: 25,
|
|
59
79
|
},
|
|
60
80
|
},
|
|
61
81
|
},
|
|
@@ -128,6 +128,32 @@ describe('useFileUpload runWorkflow', () => {
|
|
|
128
128
|
expect(upload.getFileState('key-1')?.status).toBe('success');
|
|
129
129
|
expect(upload.getFileState('key-1')?.metadata.documentId).toBeUndefined();
|
|
130
130
|
});
|
|
131
|
+
|
|
132
|
+
it('marks involved files failed on a bare SSE `error` event (no status field)', async () => {
|
|
133
|
+
const captured: { cb?: (event: SseEvent) => void } = {};
|
|
134
|
+
const events: string[] = [];
|
|
135
|
+
const upload = useFileUpload({
|
|
136
|
+
client: createMockClient(captured),
|
|
137
|
+
workflowId: 'wf',
|
|
138
|
+
storeId: 'ss-1',
|
|
139
|
+
onEvent: (e) => events.push(e.type),
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
upload.files.value.set('key-1', makeEntry('key-1', 'file-1'));
|
|
143
|
+
|
|
144
|
+
await upload.runWorkflow(['file-1']);
|
|
145
|
+
captured.cb!({
|
|
146
|
+
event: 'error',
|
|
147
|
+
data: JSON.stringify({ error: 'ActivityError: Activity task failed' }),
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
expect(upload.getFileState('key-1')?.status).toBe('failed');
|
|
151
|
+
expect(upload.getFileState('key-1')?.error?.message).toBe(
|
|
152
|
+
'ActivityError: Activity task failed',
|
|
153
|
+
);
|
|
154
|
+
expect(upload.workflowRun.value?.status).toBe('failed');
|
|
155
|
+
expect(events).toContain('workflow:failed');
|
|
156
|
+
});
|
|
131
157
|
});
|
|
132
158
|
|
|
133
159
|
describe('useFileUpload maxFilesPerUpload', () => {
|
|
@@ -1126,6 +1126,7 @@ export function useFileUpload(
|
|
|
1126
1126
|
let data: {
|
|
1127
1127
|
id?: string;
|
|
1128
1128
|
status?: string;
|
|
1129
|
+
error?: string;
|
|
1129
1130
|
documents?: Array<{ document_id?: string; file_id?: string }>;
|
|
1130
1131
|
};
|
|
1131
1132
|
try {
|
|
@@ -1134,6 +1135,11 @@ export function useFileUpload(
|
|
|
1134
1135
|
data = {};
|
|
1135
1136
|
}
|
|
1136
1137
|
|
|
1138
|
+
const isFailure =
|
|
1139
|
+
data.status === 'failed' ||
|
|
1140
|
+
data.status === 'error' ||
|
|
1141
|
+
event.event === 'error';
|
|
1142
|
+
|
|
1137
1143
|
const runEvent: WorkflowRunEvent = {
|
|
1138
1144
|
id: data.id ?? '',
|
|
1139
1145
|
status: data.status ?? event.event,
|
|
@@ -1149,16 +1155,19 @@ export function useFileUpload(
|
|
|
1149
1155
|
Array.isArray(data.documents) ? data.documents : [],
|
|
1150
1156
|
);
|
|
1151
1157
|
emit({ type: 'workflow:completed', runId });
|
|
1152
|
-
} else if (
|
|
1158
|
+
} else if (isFailure) {
|
|
1153
1159
|
workflowRun.value.status = 'failed';
|
|
1154
1160
|
workflowRun.value.completedAt = now();
|
|
1161
|
+
const message =
|
|
1162
|
+
(typeof data.error === 'string' && data.error.trim()) ||
|
|
1163
|
+
`Workflow run ${runId} failed.`;
|
|
1155
1164
|
workflowRun.value.error = {
|
|
1156
1165
|
code: 'WORKFLOW_RUN_FAILED',
|
|
1157
|
-
message
|
|
1166
|
+
message,
|
|
1158
1167
|
};
|
|
1159
1168
|
const workflowErr: FileUploadError = {
|
|
1160
1169
|
code: 'UPLOAD_FAILED',
|
|
1161
|
-
message
|
|
1170
|
+
message,
|
|
1162
1171
|
occurredAt: now(),
|
|
1163
1172
|
};
|
|
1164
1173
|
for (const key of involvedStateKeys) {
|
package/src/index.ts
CHANGED
|
@@ -66,6 +66,7 @@ export {
|
|
|
66
66
|
CkConversation,
|
|
67
67
|
CkConversationLayout,
|
|
68
68
|
CkCopyMessageActionButton,
|
|
69
|
+
CkDropZoneOverlay,
|
|
69
70
|
CkFeedbackButton,
|
|
70
71
|
CkFeedbackDialog,
|
|
71
72
|
CkFileItemsList,
|
|
@@ -87,6 +88,10 @@ export {
|
|
|
87
88
|
export type {
|
|
88
89
|
CkConversationLayoutProps,
|
|
89
90
|
CkConversationProps,
|
|
91
|
+
CkDropZoneOverlayProps,
|
|
92
|
+
CkDropZoneOverlayEmits,
|
|
93
|
+
CkDropZoneRejection,
|
|
94
|
+
CkDropZoneRejectionReason,
|
|
90
95
|
CkFeedbackButtonProps,
|
|
91
96
|
CkFeedbackDialogEmits,
|
|
92
97
|
CkFeedbackDialogProps,
|