@@ -10,7 +10,9 @@ import { knowledgeDelegationPolicy } from '@/lib/knowledge/application/authoriza
1010import { defineAuthorizedKnowledgeUseCase } from '@/lib/knowledge/application/authorized-knowledge-use-case'
1111import {
1212 ADD_WORKSPACE_FILES_COST_POLICY ,
13+ type KnowledgeBatchExecutionResult ,
1314 requireBoundedKnowledgeBatch ,
15+ rethrowKnowledgeBatchTerminalFailure ,
1416} from '@/lib/knowledge/application/batch-policy'
1517import {
1618 KnowledgeUsageLimitExceededError ,
@@ -63,6 +65,10 @@ export interface AddWorkspaceFilesToKnowledgeBaseResult {
6365 cancelled : boolean
6466}
6567
68+ interface AddWorkspaceFilesExecutionResult
69+ extends AddWorkspaceFilesToKnowledgeBaseResult ,
70+ KnowledgeBatchExecutionResult { }
71+
6672interface AddWorkspaceFilesContext extends ActiveKnowledgeBaseContext {
6773 fileReferences : string [ ]
6874}
@@ -129,7 +135,7 @@ export const addWorkspaceFilesToKnowledgeBase = defineAuthorizedKnowledgeUseCase
129135 fileReferences,
130136 }
131137 } ,
132- async execute ( { principal, input, context } ) : Promise < AddWorkspaceFilesToKnowledgeBaseResult > {
138+ async execute ( { principal, input, context } ) : Promise < AddWorkspaceFilesExecutionResult > {
133139 const prepared : PreparedWorkspaceFile [ ] = [ ]
134140 const failed : string [ ] = [ ]
135141 const canonicalFileIds = new Set < string > ( )
@@ -180,6 +186,7 @@ export const addWorkspaceFilesToKnowledgeBase = defineAuthorizedKnowledgeUseCase
180186 }
181187 const uploadedBy = resolveKnowledgeAttributedUserId ( principal , context )
182188 const added : AddedWorkspaceFileDocument [ ] = [ ]
189+ let terminalFailure : KnowledgeBatchExecutionResult [ 'terminalFailure' ]
183190
184191 for ( const candidate of prepared ) {
185192 if ( input . cancellationSignal ?. aborted ) break
@@ -231,7 +238,8 @@ export const addWorkspaceFilesToKnowledgeBase = defineAuthorizedKnowledgeUseCase
231238 failed . push ( candidate . reference )
232239 continue
233240 }
234- throw error
241+ terminalFailure = { error }
242+ break
235243 }
236244 }
237245
@@ -241,6 +249,7 @@ export const addWorkspaceFilesToKnowledgeBase = defineAuthorizedKnowledgeUseCase
241249 added,
242250 failed,
243251 cancelled : input . cancellationSignal ?. aborted ?? false ,
252+ ...( terminalFailure && { terminalFailure } ) ,
244253 }
245254 } ,
246255 projectAudit : ( { input, context, result } ) =>
@@ -260,29 +269,33 @@ export const addWorkspaceFilesToKnowledgeBase = defineAuthorizedKnowledgeUseCase
260269 } ,
261270 } ) ) ,
262271 afterSuccess : ( { principal, context, result } ) => {
263- const userId = resolveKnowledgeAttributedUserId ( principal , context )
264- for ( const document of result . added ) {
265- PlatformEvents . knowledgeBaseDocumentsUploaded ( {
266- knowledgeBaseId : context . knowledgeBaseId ,
267- documentsCount : 1 ,
268- uploadType : 'single' ,
269- mimeType : document . mimeType ,
270- fileSize : document . fileSize ,
271- } )
272- captureServerEvent (
273- userId ,
274- 'knowledge_base_document_uploaded' ,
275- {
276- knowledge_base_id : context . knowledgeBaseId ,
277- workspace_id : context . workspaceId ,
278- document_count : 1 ,
279- upload_type : 'single' ,
280- } ,
281- {
282- groups : { workspace : context . workspaceId } ,
283- setOnce : { first_document_uploaded_at : new Date ( ) . toISOString ( ) } ,
284- }
285- )
272+ try {
273+ const userId = resolveKnowledgeAttributedUserId ( principal , context )
274+ for ( const document of result . added ) {
275+ PlatformEvents . knowledgeBaseDocumentsUploaded ( {
276+ knowledgeBaseId : context . knowledgeBaseId ,
277+ documentsCount : 1 ,
278+ uploadType : 'single' ,
279+ mimeType : document . mimeType ,
280+ fileSize : document . fileSize ,
281+ } )
282+ captureServerEvent (
283+ userId ,
284+ 'knowledge_base_document_uploaded' ,
285+ {
286+ knowledge_base_id : context . knowledgeBaseId ,
287+ workspace_id : context . workspaceId ,
288+ document_count : 1 ,
289+ upload_type : 'single' ,
290+ } ,
291+ {
292+ groups : { workspace : context . workspaceId } ,
293+ setOnce : { first_document_uploaded_at : new Date ( ) . toISOString ( ) } ,
294+ }
295+ )
296+ }
297+ } finally {
298+ rethrowKnowledgeBatchTerminalFailure ( result )
286299 }
287300 } ,
288301} )
0 commit comments