@@ -205,8 +205,8 @@ export class CodexAcpClient {
205205 }
206206
207207 async resumeSession ( request : acp . ResumeSessionRequest , onSubscribed ?: ( ) => void ) : Promise < SessionMetadata > {
208- const additionalDirectories = readAdditionalDirectories ( request . cwd , request . additionalDirectories ) ;
209- await this . refreshSkills ( request . cwd , additionalDirectories , request . _meta ) ;
208+ const additionalDirectories = readAdditionalDirectories ( request . cwd , request . additionalDirectories , request . _meta ) ;
209+ await this . refreshSkills ( request . cwd , additionalDirectories ) ;
210210
211211 const response = await this . codexClient . threadResume ( {
212212 config : await this . createSessionConfig ( request . cwd , additionalDirectories , request . mcpServers ?? [ ] ) ,
@@ -227,8 +227,8 @@ export class CodexAcpClient {
227227 }
228228
229229 async loadSession ( request : acp . LoadSessionRequest , onSubscribed ?: ( ) => void ) : Promise < SessionMetadataWithThread > {
230- const additionalDirectories = readAdditionalDirectories ( request . cwd , request . additionalDirectories ) ;
231- await this . refreshSkills ( request . cwd , additionalDirectories , request . _meta ) ;
230+ const additionalDirectories = readAdditionalDirectories ( request . cwd , request . additionalDirectories , request . _meta ) ;
231+ await this . refreshSkills ( request . cwd , additionalDirectories ) ;
232232
233233 const response = await this . codexClient . threadResume ( {
234234 config : await this . createSessionConfig ( request . cwd , additionalDirectories , request . mcpServers ?? [ ] ) ,
@@ -250,8 +250,8 @@ export class CodexAcpClient {
250250 }
251251
252252 async newSession ( request : acp . NewSessionRequest ) : Promise < SessionMetadata > {
253- const additionalDirectories = readAdditionalDirectories ( request . cwd , request . additionalDirectories ) ;
254- await this . refreshSkills ( request . cwd , additionalDirectories , request . _meta ) ;
253+ const additionalDirectories = readAdditionalDirectories ( request . cwd , request . additionalDirectories , request . _meta ) ;
254+ await this . refreshSkills ( request . cwd , additionalDirectories ) ;
255255
256256 const response = await this . codexClient . threadStart ( {
257257 config : await this . createSessionConfig ( request . cwd , additionalDirectories , request . mcpServers ) ,
@@ -365,23 +365,19 @@ export class CodexAcpClient {
365365
366366 private async refreshSkills (
367367 cwd : string ,
368- additionalDirectories : string [ ] ,
369- meta ?: Record < string , unknown > | null
368+ additionalRoots : string [ ]
370369 ) : Promise < void > {
371370 if ( ! cwd ) {
372371 return ;
373372 }
374373
375- const additionalRoots = uniqueStrings ( [
376- ...readAdditionalRoots ( meta ) ,
377- ...additionalDirectories ,
378- ] ) . map ( root => path . join ( root , ".agents" , "skills" ) ) ;
379- if ( ! arraysEqual ( this . skillExtraRoots , additionalRoots ) ) {
380- await this . codexClient . skillsExtraRootsSet ( { extraRoots : additionalRoots } ) ;
381- this . skillExtraRoots = additionalRoots ;
374+ const skillExtraRoots = additionalRoots . map ( root => path . join ( root , ".agents" , "skills" ) ) ;
375+ if ( ! arraysEqual ( this . skillExtraRoots , skillExtraRoots ) ) {
376+ await this . codexClient . skillsExtraRootsSet ( { extraRoots : skillExtraRoots } ) ;
377+ this . skillExtraRoots = skillExtraRoots ;
382378 }
383379 await this . codexClient . listSkills ( {
384- cwds : [ cwd , ...additionalDirectories ] ,
380+ cwds : [ cwd , ...additionalRoots ] ,
385381 forceReload : true ,
386382 } ) ;
387383 }
@@ -493,8 +489,7 @@ export class CodexAcpClient {
493489 ) : Promise < TurnCompletedNotification | null > {
494490 const input = buildPromptItems ( request . prompt ) ;
495491 const effort = modelId . effort as ReasoningEffort | null ; //TODO remove unsafe conversion
496-
497- await this . refreshSkills ( cwd , additionalDirectories , request . _meta ) ;
492+ await this . refreshSkills ( cwd , additionalDirectories ) ;
498493 if ( shouldCancel ?.( ) ) {
499494 return null ;
500495 }
@@ -750,10 +745,10 @@ interface GatewayConfig {
750745 }
751746}
752747
753- function readAdditionalRoots ( meta : Record < string , unknown > | null | undefined ) : string [ ] {
748+ function readMetaAdditionalRoots ( meta ? : Record < string , unknown > | null ) : string [ ] | undefined {
754749 const rawRoots = meta ?. [ "additionalRoots" ] ;
755750 if ( ! Array . isArray ( rawRoots ) ) {
756- return [ ] ;
751+ return undefined ;
757752 }
758753
759754 return uniqueStrings ( rawRoots
@@ -762,16 +757,11 @@ function readAdditionalRoots(meta: Record<string, unknown> | null | undefined):
762757 . filter ( value => value . length > 0 ) ) ;
763758}
764759
765- function readAdditionalDirectories ( cwd : string , rawDirectories : unknown ) : string [ ] {
766- if ( rawDirectories === undefined ) {
760+ function readAdditionalDirectories ( cwd : string , additionalDirectories ?: string [ ] , meta ?: Record < string , unknown > | null ) : string [ ] {
761+ const rawDirectories = additionalDirectories ?? readMetaAdditionalRoots ( meta ) ;
762+ if ( ! rawDirectories ) {
767763 return [ ] ;
768764 }
769- if ( rawDirectories === null ) {
770- throw RequestError . invalidParams ( undefined , "additionalDirectories must be an array" ) ;
771- }
772- if ( ! Array . isArray ( rawDirectories ) ) {
773- throw RequestError . invalidParams ( undefined , "additionalDirectories must be an array" ) ;
774- }
775765
776766 const directories : string [ ] = [ ] ;
777767 const seen = new Set < string > ( [ cwd ] ) ;
0 commit comments