Skip to content

Commit 50d520f

Browse files
committed
fix: file cleanup for Claude when streaming
1 parent 2c8da38 commit 50d520f

File tree

1 file changed

+22
-20
lines changed

1 file changed

+22
-20
lines changed

src/backend/src/modules/puterai/ClaudeService.js

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,26 @@ class ClaudeService extends BaseService {
213213
})());
214214
await Promise.all(promises);
215215
}
216+
const cleanup_files = async () => {
217+
const promises = [];
218+
for ( const task of file_delete_tasks ) promises.push((async () => {
219+
try {
220+
await this.anthropic.beta.files.delete(
221+
task.file_id,
222+
{ betas: ['files-api-2025-04-14'] }
223+
);
224+
} catch (e) {
225+
this.errors.report('claude:file-delete-task', {
226+
source: e,
227+
trace: true,
228+
alarm: true,
229+
extra: { file_id: task.file_id },
230+
});
231+
}
232+
})());
233+
await Promise.all(promises);
234+
};
235+
216236

217237
if ( beta_mode ) {
218238
Object.assign(sdk_params, { betas: ['files-api-2025-04-14'] });
@@ -286,31 +306,13 @@ class ClaudeService extends BaseService {
286306
init_chat_stream,
287307
stream: true,
288308
usage_promise: usage_promise,
309+
finally_fn: cleanup_files,
289310
});
290311
}
291312

292313
const msg = await anthropic.messages.create(sdk_params);
314+
await cleanup_files();
293315

294-
{
295-
for ( const task of file_delete_tasks ) {
296-
(async () => {
297-
try {
298-
await this.anthropic.beta.files.delete(
299-
task.file_id,
300-
{ betas: ['files-api-2025-04-14'] }
301-
);
302-
} catch (e) {
303-
this.errors.report('claude:file-delete-task', {
304-
source: e,
305-
trace: true,
306-
alarm: true,
307-
extra: { file_id: task.file_id },
308-
});
309-
}
310-
})();
311-
}
312-
}
313-
314316
return {
315317
message: msg,
316318
usage: msg.usage,

0 commit comments

Comments
 (0)