@swarmify/agents-cli 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,120 +1,372 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
- import { AGENTS, ensureCommandsDir } from './agents.js';
4
- import { markdownToToml } from './convert.js';
5
- export function discoverSkills(repoPath) {
6
- const skills = [];
7
- const seen = new Set();
8
- const sharedDir = path.join(repoPath, 'shared', 'commands');
9
- if (fs.existsSync(sharedDir)) {
10
- for (const file of fs.readdirSync(sharedDir)) {
11
- if (file.endsWith('.md')) {
12
- const name = file.replace('.md', '');
13
- const sourcePath = path.join(sharedDir, file);
14
- const content = fs.readFileSync(sourcePath, 'utf-8');
15
- const description = extractDescription(content);
16
- skills.push({
17
- name,
18
- description,
19
- sourcePath,
20
- isShared: true,
21
- });
22
- seen.add(name);
3
+ import * as os from 'os';
4
+ import * as yaml from 'yaml';
5
+ import { AGENTS, SKILLS_CAPABLE_AGENTS, ensureSkillsDir } from './agents.js';
6
+ import { readMeta, writeMeta, getAgentsDir } from './state.js';
7
+ const HOME = os.homedir();
8
+ export function getSkillsDir() {
9
+ return path.join(getAgentsDir(), 'skills');
10
+ }
11
+ export function ensureCentralSkillsDir() {
12
+ const dir = getSkillsDir();
13
+ if (!fs.existsSync(dir)) {
14
+ fs.mkdirSync(dir, { recursive: true });
15
+ }
16
+ }
17
+ export function getAgentSkillsDir(agentId) {
18
+ return AGENTS[agentId].skillsDir;
19
+ }
20
+ export function getProjectSkillsDir(agentId, cwd = process.cwd()) {
21
+ return path.join(cwd, `.${agentId}`, 'skills');
22
+ }
23
+ export function validateSkillMetadata(metadata, skillName) {
24
+ const errors = [];
25
+ const warnings = [];
26
+ if (!metadata) {
27
+ errors.push('SKILL.md not found or has no valid frontmatter');
28
+ return { valid: false, errors, warnings };
29
+ }
30
+ // name is required
31
+ if (!metadata.name || metadata.name.trim() === '') {
32
+ errors.push('Missing required field: name');
33
+ }
34
+ else {
35
+ if (metadata.name.length > 64) {
36
+ errors.push(`name exceeds 64 characters (${metadata.name.length})`);
37
+ }
38
+ if (!/^[a-z0-9-]+$/.test(metadata.name)) {
39
+ warnings.push('name should be lowercase with hyphens (e.g., my-skill-name)');
40
+ }
41
+ }
42
+ // description is required
43
+ if (!metadata.description || metadata.description.trim() === '') {
44
+ errors.push('Missing required field: description');
45
+ }
46
+ else if (metadata.description.length > 1024) {
47
+ warnings.push(`description exceeds 1024 characters (${metadata.description.length})`);
48
+ }
49
+ return { valid: errors.length === 0, errors, warnings };
50
+ }
51
+ export function parseSkillMetadata(skillDir) {
52
+ const skillMdPath = path.join(skillDir, 'SKILL.md');
53
+ if (!fs.existsSync(skillMdPath)) {
54
+ return null;
55
+ }
56
+ try {
57
+ const content = fs.readFileSync(skillMdPath, 'utf-8');
58
+ const lines = content.split('\n');
59
+ // Check for YAML frontmatter (required)
60
+ if (lines[0] === '---') {
61
+ const endIndex = lines.slice(1).findIndex((l) => l === '---');
62
+ if (endIndex > 0) {
63
+ const frontmatter = lines.slice(1, endIndex + 1).join('\n');
64
+ const parsed = yaml.parse(frontmatter);
65
+ return {
66
+ name: parsed.name || '',
67
+ description: parsed.description || '',
68
+ author: parsed.author,
69
+ version: parsed.version,
70
+ license: parsed.license,
71
+ keywords: parsed.keywords,
72
+ };
23
73
  }
24
74
  }
75
+ // No valid frontmatter - return null (frontmatter is required)
76
+ return null;
77
+ }
78
+ catch {
79
+ return null;
80
+ }
81
+ }
82
+ export function countSkillRules(skillDir) {
83
+ const rulesDir = path.join(skillDir, 'rules');
84
+ if (!fs.existsSync(rulesDir)) {
85
+ return 0;
25
86
  }
26
- for (const agentId of Object.keys(AGENTS)) {
27
- const agent = AGENTS[agentId];
28
- const agentDir = path.join(repoPath, agentId, agent.commandsSubdir);
29
- if (fs.existsSync(agentDir)) {
30
- const ext = agent.format === 'toml' ? '.toml' : '.md';
31
- for (const file of fs.readdirSync(agentDir)) {
32
- if (file.endsWith(ext)) {
33
- const name = file.replace(ext, '');
34
- if (!seen.has(name)) {
35
- const sourcePath = path.join(agentDir, file);
36
- const content = fs.readFileSync(sourcePath, 'utf-8');
37
- const description = extractDescription(content);
38
- skills.push({
39
- name,
40
- description,
41
- sourcePath,
42
- isShared: false,
43
- agentSpecific: agentId,
44
- });
45
- seen.add(name);
46
- }
87
+ try {
88
+ const files = fs.readdirSync(rulesDir);
89
+ return files.filter((f) => f.endsWith('.md')).length;
90
+ }
91
+ catch {
92
+ return 0;
93
+ }
94
+ }
95
+ export function discoverSkillsFromRepo(repoPath) {
96
+ const skills = [];
97
+ // Look for skills in common locations
98
+ const searchPaths = [
99
+ path.join(repoPath, 'skills'),
100
+ path.join(repoPath, 'agent-skills'),
101
+ repoPath, // Root level skill directories
102
+ ];
103
+ for (const searchPath of searchPaths) {
104
+ if (!fs.existsSync(searchPath))
105
+ continue;
106
+ try {
107
+ const entries = fs.readdirSync(searchPath, { withFileTypes: true });
108
+ for (const entry of entries) {
109
+ if (!entry.isDirectory())
110
+ continue;
111
+ const skillDir = path.join(searchPath, entry.name);
112
+ const skillMdPath = path.join(skillDir, 'SKILL.md');
113
+ if (fs.existsSync(skillMdPath)) {
114
+ const metadata = parseSkillMetadata(skillDir);
115
+ const validation = validateSkillMetadata(metadata, entry.name);
116
+ // Include even if invalid (for discovery/listing with warnings)
117
+ skills.push({
118
+ name: entry.name,
119
+ path: skillDir,
120
+ metadata: metadata || { name: entry.name, description: '' },
121
+ ruleCount: countSkillRules(skillDir),
122
+ validation,
123
+ });
47
124
  }
48
125
  }
49
126
  }
127
+ catch {
128
+ // Skip inaccessible directories
129
+ }
50
130
  }
51
131
  return skills;
52
132
  }
53
- function extractDescription(content) {
54
- const match = content.match(/description:\s*(.+)/i);
55
- if (match)
56
- return match[1].trim();
57
- const tomlMatch = content.match(/description\s*=\s*"([^"]+)"/);
58
- if (tomlMatch)
59
- return tomlMatch[1];
60
- const firstLine = content.split('\n').find((l) => l.trim() && !l.startsWith('---'));
61
- return firstLine?.slice(0, 80) || '';
133
+ export function installSkill(sourcePath, skillName, agents, method = 'symlink') {
134
+ // Validate skill metadata before installation
135
+ const metadata = parseSkillMetadata(sourcePath);
136
+ const validation = validateSkillMetadata(metadata, skillName);
137
+ if (!validation.valid) {
138
+ return {
139
+ success: false,
140
+ error: `Invalid skill: ${validation.errors.join(', ')}`,
141
+ warnings: validation.warnings,
142
+ };
143
+ }
144
+ ensureCentralSkillsDir();
145
+ const centralPath = path.join(getSkillsDir(), skillName);
146
+ // Copy to central location if not already there
147
+ if (!fs.existsSync(centralPath)) {
148
+ try {
149
+ fs.cpSync(sourcePath, centralPath, { recursive: true });
150
+ }
151
+ catch (err) {
152
+ return { success: false, error: `Failed to copy skill: ${err.message}` };
153
+ }
154
+ }
155
+ // Symlink to each agent
156
+ for (const agentId of agents) {
157
+ if (!SKILLS_CAPABLE_AGENTS.includes(agentId)) {
158
+ continue;
159
+ }
160
+ ensureSkillsDir(agentId);
161
+ const agentSkillPath = path.join(getAgentSkillsDir(agentId), skillName);
162
+ // Remove existing if present
163
+ if (fs.existsSync(agentSkillPath)) {
164
+ try {
165
+ fs.rmSync(agentSkillPath, { recursive: true, force: true });
166
+ }
167
+ catch {
168
+ // Ignore removal errors
169
+ }
170
+ }
171
+ try {
172
+ if (method === 'symlink') {
173
+ fs.symlinkSync(centralPath, agentSkillPath, 'dir');
174
+ }
175
+ else {
176
+ fs.cpSync(centralPath, agentSkillPath, { recursive: true });
177
+ }
178
+ }
179
+ catch (err) {
180
+ return {
181
+ success: false,
182
+ error: `Failed to ${method} skill to ${agentId}: ${err.message}`,
183
+ };
184
+ }
185
+ }
186
+ // Update state
187
+ const meta = readMeta();
188
+ meta.skills[skillName] = {
189
+ source: sourcePath,
190
+ ruleCount: countSkillRules(centralPath),
191
+ installations: agents.reduce((acc, agentId) => {
192
+ acc[agentId] = {
193
+ path: path.join(getAgentSkillsDir(agentId), skillName),
194
+ method,
195
+ };
196
+ return acc;
197
+ }, {}),
198
+ };
199
+ writeMeta(meta);
200
+ return { success: true };
62
201
  }
63
- export function resolveSkillSource(repoPath, skillName, agentId) {
64
- const agent = AGENTS[agentId];
65
- const ext = agent.format === 'toml' ? '.toml' : '.md';
66
- const agentSpecific = path.join(repoPath, agentId, agent.commandsSubdir, `${skillName}${ext}`);
67
- if (fs.existsSync(agentSpecific)) {
68
- return agentSpecific;
69
- }
70
- const shared = path.join(repoPath, 'shared', 'commands', `${skillName}.md`);
71
- if (fs.existsSync(shared)) {
72
- return shared;
73
- }
74
- return null;
202
+ export function uninstallSkill(skillName) {
203
+ const meta = readMeta();
204
+ const skillState = meta.skills[skillName];
205
+ if (!skillState) {
206
+ return { success: false, error: `Skill '${skillName}' not found` };
207
+ }
208
+ // Remove from all agents
209
+ for (const [agentId, installation] of Object.entries(skillState.installations)) {
210
+ if (installation?.path && fs.existsSync(installation.path)) {
211
+ try {
212
+ fs.rmSync(installation.path, { recursive: true, force: true });
213
+ }
214
+ catch {
215
+ // Ignore removal errors
216
+ }
217
+ }
218
+ }
219
+ // Remove from central location
220
+ const centralPath = path.join(getSkillsDir(), skillName);
221
+ if (fs.existsSync(centralPath)) {
222
+ try {
223
+ fs.rmSync(centralPath, { recursive: true, force: true });
224
+ }
225
+ catch {
226
+ // Ignore removal errors
227
+ }
228
+ }
229
+ // Update state
230
+ delete meta.skills[skillName];
231
+ writeMeta(meta);
232
+ return { success: true };
233
+ }
234
+ export function listInstalledSkills() {
235
+ const skills = new Map();
236
+ const centralDir = getSkillsDir();
237
+ if (!fs.existsSync(centralDir)) {
238
+ return skills;
239
+ }
240
+ try {
241
+ const entries = fs.readdirSync(centralDir, { withFileTypes: true });
242
+ for (const entry of entries) {
243
+ if (!entry.isDirectory())
244
+ continue;
245
+ const skillDir = path.join(centralDir, entry.name);
246
+ const metadata = parseSkillMetadata(skillDir);
247
+ const validation = validateSkillMetadata(metadata, entry.name);
248
+ if (metadata) {
249
+ skills.set(entry.name, {
250
+ name: entry.name,
251
+ path: skillDir,
252
+ metadata,
253
+ ruleCount: countSkillRules(skillDir),
254
+ validation,
255
+ });
256
+ }
257
+ }
258
+ }
259
+ catch {
260
+ // Ignore errors
261
+ }
262
+ return skills;
263
+ }
264
+ export function listInstalledSkillsWithScope(agentId, cwd = process.cwd()) {
265
+ const results = [];
266
+ // User-scoped skills
267
+ const userSkillsDir = getAgentSkillsDir(agentId);
268
+ if (fs.existsSync(userSkillsDir)) {
269
+ try {
270
+ const entries = fs.readdirSync(userSkillsDir, { withFileTypes: true });
271
+ for (const entry of entries) {
272
+ if (!entry.isDirectory())
273
+ continue;
274
+ const skillDir = path.join(userSkillsDir, entry.name);
275
+ const metadata = parseSkillMetadata(skillDir);
276
+ if (metadata) {
277
+ results.push({
278
+ name: entry.name,
279
+ path: skillDir,
280
+ metadata,
281
+ ruleCount: countSkillRules(skillDir),
282
+ scope: 'user',
283
+ agent: agentId,
284
+ });
285
+ }
286
+ }
287
+ }
288
+ catch {
289
+ // Ignore errors
290
+ }
291
+ }
292
+ // Project-scoped skills
293
+ const projectSkillsDir = getProjectSkillsDir(agentId, cwd);
294
+ if (fs.existsSync(projectSkillsDir)) {
295
+ try {
296
+ const entries = fs.readdirSync(projectSkillsDir, { withFileTypes: true });
297
+ for (const entry of entries) {
298
+ if (!entry.isDirectory())
299
+ continue;
300
+ const skillDir = path.join(projectSkillsDir, entry.name);
301
+ const metadata = parseSkillMetadata(skillDir);
302
+ if (metadata) {
303
+ results.push({
304
+ name: entry.name,
305
+ path: skillDir,
306
+ metadata,
307
+ ruleCount: countSkillRules(skillDir),
308
+ scope: 'project',
309
+ agent: agentId,
310
+ });
311
+ }
312
+ }
313
+ }
314
+ catch {
315
+ // Ignore errors
316
+ }
317
+ }
318
+ return results;
75
319
  }
76
- export function installSkill(sourcePath, agentId, skillName, method = 'symlink') {
77
- const agent = AGENTS[agentId];
78
- ensureCommandsDir(agentId);
79
- const ext = agent.format === 'toml' ? '.toml' : '.md';
80
- const targetPath = path.join(agent.commandsDir, `${skillName}${ext}`);
81
- if (fs.existsSync(targetPath)) {
82
- fs.unlinkSync(targetPath);
83
- }
84
- const sourceContent = fs.readFileSync(sourcePath, 'utf-8');
85
- const sourceIsMarkdown = sourcePath.endsWith('.md');
86
- const needsConversion = agent.format === 'toml' && sourceIsMarkdown;
87
- if (needsConversion) {
88
- const tomlContent = markdownToToml(skillName, sourceContent);
89
- fs.writeFileSync(targetPath, tomlContent, 'utf-8');
90
- return { path: targetPath, method: 'copy' };
91
- }
92
- if (method === 'symlink') {
93
- fs.symlinkSync(sourcePath, targetPath);
94
- return { path: targetPath, method: 'symlink' };
95
- }
96
- fs.copyFileSync(sourcePath, targetPath);
97
- return { path: targetPath, method: 'copy' };
320
+ export function promoteSkillToUser(agentId, skillName, cwd = process.cwd()) {
321
+ const projectSkillsDir = getProjectSkillsDir(agentId, cwd);
322
+ const projectSkillPath = path.join(projectSkillsDir, skillName);
323
+ if (!fs.existsSync(projectSkillPath)) {
324
+ return { success: false, error: `Project skill '${skillName}' not found` };
325
+ }
326
+ ensureSkillsDir(agentId);
327
+ const userSkillPath = path.join(getAgentSkillsDir(agentId), skillName);
328
+ // Check if already exists
329
+ if (fs.existsSync(userSkillPath)) {
330
+ return { success: false, error: `User skill '${skillName}' already exists` };
331
+ }
332
+ try {
333
+ fs.cpSync(projectSkillPath, userSkillPath, { recursive: true });
334
+ return { success: true };
335
+ }
336
+ catch (err) {
337
+ return { success: false, error: `Failed to copy skill: ${err.message}` };
338
+ }
98
339
  }
99
- export function uninstallSkill(agentId, skillName) {
100
- const agent = AGENTS[agentId];
101
- const ext = agent.format === 'toml' ? '.toml' : '.md';
102
- const targetPath = path.join(agent.commandsDir, `${skillName}${ext}`);
103
- if (fs.existsSync(targetPath)) {
104
- fs.unlinkSync(targetPath);
105
- return true;
106
- }
107
- return false;
340
+ export function getSkillInfo(skillName) {
341
+ const centralPath = path.join(getSkillsDir(), skillName);
342
+ if (!fs.existsSync(centralPath)) {
343
+ return null;
344
+ }
345
+ const metadata = parseSkillMetadata(centralPath);
346
+ const validation = validateSkillMetadata(metadata, skillName);
347
+ if (!metadata) {
348
+ return null;
349
+ }
350
+ return {
351
+ name: skillName,
352
+ path: centralPath,
353
+ metadata,
354
+ ruleCount: countSkillRules(centralPath),
355
+ validation,
356
+ };
108
357
  }
109
- export function listInstalledSkills(agentId) {
110
- const agent = AGENTS[agentId];
111
- if (!fs.existsSync(agent.commandsDir)) {
358
+ export function getSkillRules(skillName) {
359
+ const centralPath = path.join(getSkillsDir(), skillName);
360
+ const rulesDir = path.join(centralPath, 'rules');
361
+ if (!fs.existsSync(rulesDir)) {
362
+ return [];
363
+ }
364
+ try {
365
+ const files = fs.readdirSync(rulesDir);
366
+ return files.filter((f) => f.endsWith('.md')).map((f) => f.replace(/\.md$/, ''));
367
+ }
368
+ catch {
112
369
  return [];
113
370
  }
114
- const ext = agent.format === 'toml' ? '.toml' : '.md';
115
- return fs
116
- .readdirSync(agent.commandsDir)
117
- .filter((f) => f.endsWith(ext))
118
- .map((f) => f.replace(ext, ''));
119
371
  }
120
372
  //# sourceMappingURL=skills.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,28 @@
1
- import type { State } from './types.js';
1
+ import type { Meta, State, ScopeConfig, ScopeName } from './types.js';
2
2
  export declare function getAgentsDir(): string;
3
3
  export declare function getPackagesDir(): string;
4
4
  export declare function getReposDir(): string;
5
5
  export declare function ensureAgentsDir(): void;
6
- export declare function createDefaultState(): State;
7
- export declare function readState(): State;
8
- export declare function writeState(state: State): void;
9
- export declare function updateState(updates: Partial<State>): State;
6
+ export declare function createDefaultMeta(): Meta;
7
+ export declare function readMeta(): Meta;
8
+ export declare function writeMeta(meta: Meta): void;
9
+ export declare function updateMeta(updates: Partial<Meta>): Meta;
10
10
  export declare function getRepoLocalPath(source: string): string;
11
11
  export declare function getPackageLocalPath(source: string): string;
12
+ export declare function getScope(scopeName: ScopeName): ScopeConfig | null;
13
+ export declare function setScope(scopeName: ScopeName, config: ScopeConfig): void;
14
+ export declare function removeScope(scopeName: ScopeName): boolean;
15
+ export declare function getScopesByPriority(): Array<{
16
+ name: ScopeName;
17
+ config: ScopeConfig;
18
+ }>;
19
+ export declare function getHighestPriorityScope(): {
20
+ name: ScopeName;
21
+ config: ScopeConfig;
22
+ } | null;
23
+ export declare function getScopePriority(scopeName: ScopeName): number;
24
+ export declare const readState: typeof readMeta;
25
+ export declare const writeState: (state: State) => void;
26
+ export declare const updateState: (updates: Partial<State>) => Meta;
27
+ export declare const createDefaultState: typeof createDefaultMeta;
12
28
  //# sourceMappingURL=state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/lib/state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAQxC,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAUtC;AAED,wBAAgB,kBAAkB,IAAI,KAAK,CAU1C;AAED,wBAAgB,SAAS,IAAI,KAAK,CAWjC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAG7C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAK1D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOvD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAO1D"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/lib/state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAetE,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAUtC;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAUxC;AAED,wBAAgB,QAAQ,IAAI,IAAI,CA6E/B;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAI1C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAKvD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOvD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAO1D;AAID,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW,GAAG,IAAI,CAGjE;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAIxE;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAQzD;AAED,wBAAgB,mBAAmB,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAKrF;AAED,wBAAgB,uBAAuB,IAAI;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAAG,IAAI,CAGzF;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAW7D;AAGD,eAAO,MAAM,SAAS,iBAAW,CAAC;AAClC,eAAO,MAAM,UAAU,GAAI,OAAO,KAAK,SAAqB,CAAC;AAC7D,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,CAAC,KAAK,CAAC,SAAwB,CAAC;AAC5E,eAAO,MAAM,kBAAkB,0BAAoB,CAAC"}