@@ -104,11 +104,50 @@ test('validateCodexManifest 支持最多 1024 字符的多行代码块 defaultPr
104104 ) ;
105105} ) ;
106106
107- test ( 'validateClaudeManifest 校验 agents 配置有效性 ' , ( ) => {
107+ test ( 'validateClaudeManifest 支持 agents 为可选配置,并兼容字符串或数组格式 ' , ( ) => {
108108 const service = createService ( ) ;
109+
110+ // 1. 省略 agents 或传空数组正常通过
111+ assert . deepEqual ( service . validateClaudeManifest ( { name : 'bugfix-agent' } ) . agents , [ ] ) ;
112+ assert . deepEqual (
113+ service . validateClaudeManifest ( { name : 'bugfix-agent' , agents : [ ] } ) . agents ,
114+ [ ]
115+ ) ;
116+ assert . deepEqual (
117+ service . validateClaudeManifest ( { name : 'bugfix-agent' , agents : '' } ) . agents ,
118+ [ ]
119+ ) ;
120+
121+ // 2. 支持单个字符串路径
122+ assert . deepEqual (
123+ service . validateClaudeManifest ( {
124+ name : 'bugfix-agent' ,
125+ agents : './agents/claude' ,
126+ } ) . agents ,
127+ [ 'agents/claude' ]
128+ ) ;
129+
130+ // 3. 支持数组格式路径列表
131+ assert . deepEqual (
132+ service . validateClaudeManifest ( {
133+ name : 'bugfix-agent' ,
134+ agents : [ './agents/claude/worker.md' , './agents/claude/reviewer.md' ] ,
135+ } ) . agents ,
136+ [ 'agents/claude/worker.md' , 'agents/claude/reviewer.md' ]
137+ ) ;
138+
139+ // 4. 非法相对路径(非 ./ 开头)仍应拦截
140+ assert . throws (
141+ ( ) => service . validateClaudeManifest ( { name : 'bugfix-agent' , agents : 'invalid/path' } ) ,
142+ / a g e n t s 必 须 是 \. \/ 开 头 的 相 对 路 径 /
143+ ) ;
109144 assert . throws (
110- ( ) => service . validateClaudeManifest ( { name : 'bugfix-agent' , agents : [ ] } ) ,
111- / \. c l a u d e - p l u g i n \/ p l u g i n \. j s o n 必 须 声 明 a g e n t s /
145+ ( ) =>
146+ service . validateClaudeManifest ( {
147+ name : 'bugfix-agent' ,
148+ agents : [ 'invalid/path' ] ,
149+ } ) ,
150+ / a g e n t s 必 须 是 \. \/ 开 头 的 相 对 路 径 /
112151 ) ;
113152} ) ;
114153
0 commit comments