@@ -16,7 +16,7 @@ import { IModelService } from '../../../../../../editor/common/services/model.js
1616import { localize } from '../../../../../../nls.js' ;
1717import { IConfigurationService } from '../../../../../../platform/configuration/common/configuration.js' ;
1818import { IExtensionDescription } from '../../../../../../platform/extensions/common/extensions.js' ;
19- import { IFileService } from '../../../../../../platform/files/common/files.js' ;
19+ import { FileOperationError , FileOperationResult , IFileService } from '../../../../../../platform/files/common/files.js' ;
2020import { IExtensionService } from '../../../../../services/extensions/common/extensions.js' ;
2121import { IInstantiationService } from '../../../../../../platform/instantiation/common/instantiation.js' ;
2222import { ILabelService } from '../../../../../../platform/label/common/label.js' ;
@@ -387,7 +387,7 @@ export class PromptsService extends Disposable implements IPromptsService {
387387 let agentFiles = await this . listPromptFiles ( PromptsType . agent , token ) ;
388388 const disabledAgents = this . getDisabledPromptFiles ( PromptsType . agent ) ;
389389 agentFiles = agentFiles . filter ( promptPath => ! disabledAgents . has ( promptPath . uri ) ) ;
390- const customAgents = await Promise . all (
390+ const customAgentsResults = await Promise . allSettled (
391391 agentFiles . map ( async ( promptPath ) : Promise < ICustomAgent > => {
392392 const uri = promptPath . uri ;
393393 const ast = await this . parseNew ( uri , token ) ;
@@ -432,6 +432,23 @@ export class PromptsService extends Disposable implements IPromptsService {
432432 return { uri, name, description, model, tools, handOffs, argumentHint, target, infer, agentInstructions, source } ;
433433 } )
434434 ) ;
435+
436+ const customAgents : ICustomAgent [ ] = [ ] ;
437+ for ( let i = 0 ; i < customAgentsResults . length ; i ++ ) {
438+ const result = customAgentsResults [ i ] ;
439+ if ( result . status === 'fulfilled' ) {
440+ customAgents . push ( result . value ) ;
441+ } else {
442+ const uri = agentFiles [ i ] . uri ;
443+ const error = result . reason ;
444+ if ( error instanceof FileOperationError && error . fileOperationResult === FileOperationResult . FILE_NOT_FOUND ) {
445+ this . logger . warn ( `[computeCustomAgents] Skipping agent file that does not exist: ${ uri } ` , error . message ) ;
446+ } else {
447+ this . logger . error ( `[computeCustomAgents] Failed to parse agent file: ${ uri } ` , error ) ;
448+ }
449+ }
450+ }
451+
435452 return customAgents ;
436453 }
437454
0 commit comments