@@ -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 }
@@ -740,10 +735,10 @@ interface GatewayConfig {
740735 }
741736}
742737
743- function readAdditionalRoots ( meta : Record < string , unknown > | null | undefined ) : string [ ] {
738+ function readMetaAdditionalRoots ( meta ? : Record < string , unknown > | null ) : string [ ] | undefined {
744739 const rawRoots = meta ?. [ "additionalRoots" ] ;
745740 if ( ! Array . isArray ( rawRoots ) ) {
746- return [ ] ;
741+ return undefined ;
747742 }
748743
749744 return uniqueStrings ( rawRoots
@@ -752,16 +747,11 @@ function readAdditionalRoots(meta: Record<string, unknown> | null | undefined):
752747 . filter ( value => value . length > 0 ) ) ;
753748}
754749
755- function readAdditionalDirectories ( cwd : string , rawDirectories : unknown ) : string [ ] {
756- if ( rawDirectories === undefined ) {
750+ function readAdditionalDirectories ( cwd : string , additionalDirectories ?: string [ ] , meta ?: Record < string , unknown > | null ) : string [ ] {
751+ const rawDirectories = additionalDirectories ?? readMetaAdditionalRoots ( meta ) ;
752+ if ( ! rawDirectories ) {
757753 return [ ] ;
758754 }
759- if ( rawDirectories === null ) {
760- throw RequestError . invalidParams ( undefined , "additionalDirectories must be an array" ) ;
761- }
762- if ( ! Array . isArray ( rawDirectories ) ) {
763- throw RequestError . invalidParams ( undefined , "additionalDirectories must be an array" ) ;
764- }
765755
766756 const directories : string [ ] = [ ] ;
767757 const seen = new Set < string > ( [ cwd ] ) ;
0 commit comments