@@ -31,16 +31,43 @@ class ConfigLoader {
3131 }
3232
3333 async getAgentDependencies ( agentId ) {
34- const config = await this . load ( ) ;
35- const dependencies = config [ 'agent-dependencies' ] || { } ;
36-
37- // Always include core files
38- const coreFiles = dependencies [ 'core-files' ] || [ ] ;
39-
40- // Add agent-specific dependencies
41- const agentDeps = dependencies [ agentId ] || [ ] ;
34+ // Use DependencyResolver to dynamically parse agent dependencies
35+ const DependencyResolver = require ( '../../lib/dependency-resolver' ) ;
36+ const resolver = new DependencyResolver ( path . join ( __dirname , '..' , '..' , '..' ) ) ;
4237
43- return [ ...coreFiles , ...agentDeps ] ;
38+ try {
39+ const agentDeps = await resolver . resolveAgentDependencies ( agentId ) ;
40+
41+ // Convert to flat list of file paths
42+ const depPaths = [ ] ;
43+
44+ // Add core files
45+ const config = await this . load ( ) ;
46+ const coreFiles = config [ 'agent-dependencies' ] ?. [ 'core-files' ] || [ ] ;
47+ depPaths . push ( ...coreFiles ) ;
48+
49+ // Add agent file itself is already handled by installer
50+
51+ // Add all resolved resources
52+ for ( const resource of agentDeps . resources ) {
53+ const filePath = `.bmad-core/${ resource . type } /${ resource . id } .md` ;
54+ if ( ! depPaths . includes ( filePath ) ) {
55+ depPaths . push ( filePath ) ;
56+ }
57+ }
58+
59+ return depPaths ;
60+ } catch ( error ) {
61+ console . warn ( `Failed to dynamically resolve dependencies for ${ agentId } : ${ error . message } ` ) ;
62+
63+ // Fall back to static config
64+ const config = await this . load ( ) ;
65+ const dependencies = config [ 'agent-dependencies' ] || { } ;
66+ const coreFiles = dependencies [ 'core-files' ] || [ ] ;
67+ const agentDeps = dependencies [ agentId ] || [ ] ;
68+
69+ return [ ...coreFiles , ...agentDeps ] ;
70+ }
4471 }
4572
4673 async getIdeConfiguration ( ide ) {
0 commit comments