@swarmify/agents-cli 1.0.0 → 1.2.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.

Potentially problematic release.


This version of @swarmify/agents-cli might be problematic. Click here for more details.

package/dist/lib/git.js CHANGED
@@ -2,39 +2,126 @@ import simpleGit from 'simple-git';
2
2
  import * as fs from 'fs';
3
3
  import * as path from 'path';
4
4
  import { getRepoLocalPath, getPackageLocalPath } from './state.js';
5
+ /**
6
+ * Parse a source string into a GitSource object.
7
+ *
8
+ * Supported formats:
9
+ * gh:owner/repo -> https://github.com/owner/repo.git
10
+ * gh:owner/repo@branch -> https://github.com/owner/repo.git (ref: branch)
11
+ * owner/repo -> https://github.com/owner/repo.git
12
+ * owner/repo@branch -> https://github.com/owner/repo.git (ref: branch)
13
+ * github.com/owner/repo -> https://github.com/owner/repo.git
14
+ * github.com:owner/repo -> https://github.com/owner/repo.git
15
+ * github.com:owner/repo.git -> https://github.com/owner/repo.git
16
+ * git@github.com:owner/repo.git -> https://github.com/owner/repo.git
17
+ * https://github.com/owner/repo -> https://github.com/owner/repo.git
18
+ * https://github.com/owner/repo.git -> https://github.com/owner/repo.git
19
+ * /path/to/local -> local path
20
+ * ./relative/path -> local path
21
+ */
5
22
  export function parseSource(source) {
6
- if (source.startsWith('gh:')) {
7
- const rest = source.slice(3);
8
- const [repo, ref] = rest.split('@');
23
+ // Split off @ref suffix (but not from URLs with @ in them like git@)
24
+ let ref;
25
+ let cleanSource = source;
26
+ // Handle @ref suffix (only if it's at the end and not part of git@)
27
+ const atIndex = source.lastIndexOf('@');
28
+ if (atIndex > 0 && !source.startsWith('git@') && !source.slice(0, atIndex).includes('://')) {
29
+ // Check if what's after @ looks like a ref (no slashes, no dots except in branch names)
30
+ const possibleRef = source.slice(atIndex + 1);
31
+ if (possibleRef && !possibleRef.includes('/') && !possibleRef.includes(':')) {
32
+ ref = possibleRef;
33
+ cleanSource = source.slice(0, atIndex);
34
+ }
35
+ }
36
+ // gh:owner/repo shorthand
37
+ if (cleanSource.startsWith('gh:')) {
38
+ const repo = cleanSource.slice(3).replace(/\.git$/, '');
39
+ return {
40
+ type: 'github',
41
+ url: `https://github.com/${repo}.git`,
42
+ ref: ref || 'main',
43
+ };
44
+ }
45
+ // git@github.com:owner/repo.git (SSH URL)
46
+ if (cleanSource.startsWith('git@github.com:')) {
47
+ const repo = cleanSource.slice(15).replace(/\.git$/, '');
9
48
  return {
10
49
  type: 'github',
11
50
  url: `https://github.com/${repo}.git`,
12
51
  ref: ref || 'main',
13
52
  };
14
53
  }
15
- if (source.startsWith('http://') || source.startsWith('https://')) {
16
- const [url, ref] = source.split('@');
54
+ // github.com:owner/repo.git (SSH-style without git@)
55
+ if (cleanSource.startsWith('github.com:')) {
56
+ const repo = cleanSource.slice(11).replace(/\.git$/, '');
57
+ return {
58
+ type: 'github',
59
+ url: `https://github.com/${repo}.git`,
60
+ ref: ref || 'main',
61
+ };
62
+ }
63
+ // github.com/owner/repo (domain without protocol)
64
+ if (cleanSource.startsWith('github.com/')) {
65
+ const repo = cleanSource.slice(11).replace(/\.git$/, '');
66
+ return {
67
+ type: 'github',
68
+ url: `https://github.com/${repo}.git`,
69
+ ref: ref || 'main',
70
+ };
71
+ }
72
+ // https:// or http:// URLs
73
+ if (cleanSource.startsWith('http://') || cleanSource.startsWith('https://')) {
74
+ // Check if it's a GitHub URL
75
+ const githubMatch = cleanSource.match(/^https?:\/\/github\.com\/([^/]+\/[^/]+?)(?:\.git)?$/);
76
+ if (githubMatch) {
77
+ return {
78
+ type: 'github',
79
+ url: `https://github.com/${githubMatch[1]}.git`,
80
+ ref: ref || 'main',
81
+ };
82
+ }
83
+ // Generic URL
17
84
  return {
18
85
  type: 'url',
19
- url: url.endsWith('.git') ? url : `${url}.git`,
86
+ url: cleanSource.endsWith('.git') ? cleanSource : `${cleanSource}.git`,
20
87
  ref,
21
88
  };
22
89
  }
23
- if (fs.existsSync(source)) {
90
+ // Local path (absolute or relative)
91
+ if (cleanSource.startsWith('/') || cleanSource.startsWith('./') || cleanSource.startsWith('../')) {
92
+ if (fs.existsSync(cleanSource)) {
93
+ return {
94
+ type: 'local',
95
+ url: path.resolve(cleanSource),
96
+ };
97
+ }
98
+ }
99
+ // Check if it exists as a local path (could be a directory name without ./)
100
+ if (fs.existsSync(cleanSource)) {
24
101
  return {
25
102
  type: 'local',
26
- url: path.resolve(source),
103
+ url: path.resolve(cleanSource),
104
+ };
105
+ }
106
+ // Bare owner/repo format (assumes GitHub)
107
+ if (cleanSource.includes('/') && !cleanSource.includes(':') && !cleanSource.includes('.')) {
108
+ const repo = cleanSource.replace(/\.git$/, '');
109
+ return {
110
+ type: 'github',
111
+ url: `https://github.com/${repo}.git`,
112
+ ref: ref || 'main',
27
113
  };
28
114
  }
29
- if (source.includes('/') && !source.includes(':')) {
30
- const [repo, ref] = source.split('@');
115
+ // Last attempt: treat as GitHub if it looks like owner/repo (with possible .git)
116
+ if (/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_.-]+$/.test(cleanSource)) {
117
+ const repo = cleanSource.replace(/\.git$/, '');
31
118
  return {
32
119
  type: 'github',
33
120
  url: `https://github.com/${repo}.git`,
34
121
  ref: ref || 'main',
35
122
  };
36
123
  }
37
- throw new Error(`Invalid source: ${source}`);
124
+ throw new Error(`Invalid source: ${source}. Supported formats: gh:owner/repo, owner/repo, github.com/owner/repo, https://github.com/owner/repo, or local path`);
38
125
  }
39
126
  export async function cloneOrPull(source, targetDir) {
40
127
  const git = simpleGit();
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { AgentId, InstalledHook } from './types.js';
2
+ export declare function listInstalledHooksWithScope(agentId: AgentId, cwd?: string): InstalledHook[];
3
+ export declare function installHooks(source: string, agents: AgentId[], options?: {
4
+ scope?: 'user' | 'project';
5
+ }): Promise<{
6
+ installed: string[];
7
+ errors: string[];
8
+ }>;
9
+ export declare function removeHook(name: string, agents: AgentId[]): Promise<{
10
+ removed: string[];
11
+ errors: string[];
12
+ }>;
13
+ export declare function promoteHookToUser(agentId: AgentId, name: string, cwd?: string): {
14
+ success: boolean;
15
+ error?: string;
16
+ };
17
+ export declare function discoverHooksFromRepo(repoPath: string): {
18
+ shared: string[];
19
+ agentSpecific: Record<AgentId, string[]>;
20
+ };
21
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/lib/hooks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAwIzD,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,GAAG,GAAE,MAAsB,GAC1B,aAAa,EAAE,CAiCjB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EAAE,EACjB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAO,GAC3C,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAsCpD;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EAAE,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA0BlD;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAsB,GAC1B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAoBtC;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,GACf;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAYhE"}
@@ -0,0 +1,234 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { AGENTS, ALL_AGENT_IDS } from './agents.js';
4
+ const SCRIPT_EXTENSIONS = new Set([
5
+ '.sh',
6
+ '.bash',
7
+ '.zsh',
8
+ '.py',
9
+ '.js',
10
+ '.ts',
11
+ '.mjs',
12
+ '.cjs',
13
+ '.rb',
14
+ '.pl',
15
+ '.ps1',
16
+ '.cmd',
17
+ '.bat',
18
+ ]);
19
+ function isExecutable(mode) {
20
+ return (mode & 0o111) !== 0;
21
+ }
22
+ function getHooksDir(agentId) {
23
+ const agent = AGENTS[agentId];
24
+ return path.join(agent.configDir, agent.hooksDir);
25
+ }
26
+ function getProjectHooksDir(agentId, cwd) {
27
+ const agent = AGENTS[agentId];
28
+ return path.join(cwd, `.${agentId}`, agent.hooksDir);
29
+ }
30
+ function ensureDir(dir) {
31
+ if (!fs.existsSync(dir)) {
32
+ fs.mkdirSync(dir, { recursive: true });
33
+ }
34
+ }
35
+ function removeHookFiles(dir, name) {
36
+ if (!fs.existsSync(dir)) {
37
+ return;
38
+ }
39
+ const files = fs.readdirSync(dir);
40
+ for (const file of files) {
41
+ const ext = path.extname(file);
42
+ const base = path.basename(file, ext);
43
+ if (base === name) {
44
+ const fullPath = path.join(dir, file);
45
+ const stat = fs.statSync(fullPath);
46
+ if (stat.isFile()) {
47
+ fs.unlinkSync(fullPath);
48
+ }
49
+ }
50
+ }
51
+ }
52
+ function listHookEntriesFromDir(dir) {
53
+ if (!fs.existsSync(dir)) {
54
+ return [];
55
+ }
56
+ const files = [];
57
+ for (const file of fs.readdirSync(dir)) {
58
+ const fullPath = path.join(dir, file);
59
+ const stat = fs.statSync(fullPath);
60
+ if (!stat.isFile())
61
+ continue;
62
+ const ext = path.extname(file);
63
+ const base = path.basename(file, ext);
64
+ files.push({
65
+ name: file,
66
+ base,
67
+ ext,
68
+ fullPath,
69
+ isExec: isExecutable(stat.mode),
70
+ });
71
+ }
72
+ const grouped = new Map();
73
+ for (const file of files) {
74
+ const list = grouped.get(file.base) || [];
75
+ list.push(file);
76
+ grouped.set(file.base, list);
77
+ }
78
+ const entries = [];
79
+ for (const [base, group] of grouped) {
80
+ group.sort((a, b) => a.name.localeCompare(b.name));
81
+ const script = group.find((f) => f.isExec) ||
82
+ group.find((f) => SCRIPT_EXTENSIONS.has(f.ext.toLowerCase())) ||
83
+ group[0];
84
+ if (!script)
85
+ continue;
86
+ const data = group.find((f) => f !== script);
87
+ entries.push({
88
+ name: base,
89
+ scriptPath: script.fullPath,
90
+ dataFile: data ? data.fullPath : undefined,
91
+ });
92
+ }
93
+ entries.sort((a, b) => a.name.localeCompare(b.name));
94
+ return entries;
95
+ }
96
+ function buildHookMap(entries) {
97
+ const map = new Map();
98
+ for (const entry of entries) {
99
+ map.set(entry.name, entry);
100
+ }
101
+ return map;
102
+ }
103
+ function copyHook(entry, targetDir) {
104
+ ensureDir(targetDir);
105
+ removeHookFiles(targetDir, entry.name);
106
+ const scriptTarget = path.join(targetDir, path.basename(entry.scriptPath));
107
+ fs.copyFileSync(entry.scriptPath, scriptTarget);
108
+ const scriptStat = fs.statSync(entry.scriptPath);
109
+ fs.chmodSync(scriptTarget, scriptStat.mode);
110
+ if (entry.dataFile) {
111
+ const dataTarget = path.join(targetDir, path.basename(entry.dataFile));
112
+ fs.copyFileSync(entry.dataFile, dataTarget);
113
+ }
114
+ }
115
+ export function listInstalledHooksWithScope(agentId, cwd = process.cwd()) {
116
+ const agent = AGENTS[agentId];
117
+ if (!agent.supportsHooks) {
118
+ return [];
119
+ }
120
+ const results = [];
121
+ const userDir = getHooksDir(agentId);
122
+ const userHooks = listHookEntriesFromDir(userDir);
123
+ for (const hook of userHooks) {
124
+ results.push({
125
+ name: hook.name,
126
+ path: hook.scriptPath,
127
+ dataFile: hook.dataFile,
128
+ scope: 'user',
129
+ agent: agentId,
130
+ });
131
+ }
132
+ const projectDir = getProjectHooksDir(agentId, cwd);
133
+ const projectHooks = listHookEntriesFromDir(projectDir);
134
+ for (const hook of projectHooks) {
135
+ results.push({
136
+ name: hook.name,
137
+ path: hook.scriptPath,
138
+ dataFile: hook.dataFile,
139
+ scope: 'project',
140
+ agent: agentId,
141
+ });
142
+ }
143
+ return results;
144
+ }
145
+ export async function installHooks(source, agents, options = {}) {
146
+ const installed = [];
147
+ const errors = [];
148
+ const scope = options.scope || 'user';
149
+ const cwd = process.cwd();
150
+ const sharedDir = path.join(source, 'shared', 'hooks');
151
+ const sharedHooks = buildHookMap(listHookEntriesFromDir(sharedDir));
152
+ const uniqueAgents = Array.from(new Set(agents));
153
+ for (const agentId of uniqueAgents) {
154
+ const agent = AGENTS[agentId];
155
+ if (!agent || !agent.supportsHooks) {
156
+ errors.push(`${agentId}:Agent does not support hooks`);
157
+ continue;
158
+ }
159
+ const agentDir = path.join(source, agentId, agent.hooksDir);
160
+ const agentHooks = buildHookMap(listHookEntriesFromDir(agentDir));
161
+ const hooks = new Map(sharedHooks);
162
+ for (const [name, entry] of agentHooks) {
163
+ hooks.set(name, entry);
164
+ }
165
+ const targetDir = scope === 'project' ? getProjectHooksDir(agentId, cwd) : getHooksDir(agentId);
166
+ for (const entry of hooks.values()) {
167
+ try {
168
+ copyHook(entry, targetDir);
169
+ installed.push(`${entry.name}:${agentId}`);
170
+ }
171
+ catch (err) {
172
+ errors.push(`${entry.name}:${agentId}:${err.message}`);
173
+ }
174
+ }
175
+ }
176
+ return { installed, errors };
177
+ }
178
+ export async function removeHook(name, agents) {
179
+ const removed = [];
180
+ const errors = [];
181
+ const uniqueAgents = Array.from(new Set(agents));
182
+ for (const agentId of uniqueAgents) {
183
+ const agent = AGENTS[agentId];
184
+ if (!agent || !agent.supportsHooks) {
185
+ errors.push(`${agentId}:Agent does not support hooks`);
186
+ continue;
187
+ }
188
+ try {
189
+ const dir = getHooksDir(agentId);
190
+ const filesBefore = fs.existsSync(dir) ? fs.readdirSync(dir) : [];
191
+ removeHookFiles(dir, name);
192
+ const filesAfter = fs.existsSync(dir) ? fs.readdirSync(dir) : [];
193
+ if (filesBefore.length !== filesAfter.length) {
194
+ removed.push(`${name}:${agentId}`);
195
+ }
196
+ }
197
+ catch (err) {
198
+ errors.push(`${name}:${agentId}:${err.message}`);
199
+ }
200
+ }
201
+ return { removed, errors };
202
+ }
203
+ export function promoteHookToUser(agentId, name, cwd = process.cwd()) {
204
+ const agent = AGENTS[agentId];
205
+ if (!agent.supportsHooks) {
206
+ return { success: false, error: 'Agent does not support hooks' };
207
+ }
208
+ const projectDir = getProjectHooksDir(agentId, cwd);
209
+ const hooks = listHookEntriesFromDir(projectDir);
210
+ const hook = hooks.find((h) => h.name === name);
211
+ if (!hook) {
212
+ return { success: false, error: `Project hook '${name}' not found` };
213
+ }
214
+ try {
215
+ const userDir = getHooksDir(agentId);
216
+ copyHook(hook, userDir);
217
+ return { success: true };
218
+ }
219
+ catch (err) {
220
+ return { success: false, error: err.message };
221
+ }
222
+ }
223
+ export function discoverHooksFromRepo(repoPath) {
224
+ const sharedDir = path.join(repoPath, 'shared', 'hooks');
225
+ const shared = listHookEntriesFromDir(sharedDir).map((h) => h.name);
226
+ const agentSpecific = {};
227
+ for (const agentId of ALL_AGENT_IDS) {
228
+ const agent = AGENTS[agentId];
229
+ const agentDir = path.join(repoPath, agentId, agent.hooksDir);
230
+ agentSpecific[agentId] = listHookEntriesFromDir(agentDir).map((h) => h.name);
231
+ }
232
+ return { shared, agentSpecific };
233
+ }
234
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/lib/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { RegistryType, RegistryConfig, McpServerEntry, RegistrySearchResult, ResolvedPackage } from './types.js';
2
+ export declare function getRegistries(type: RegistryType): Record<string, RegistryConfig>;
3
+ export declare function getEnabledRegistries(type: RegistryType): Array<{
4
+ name: string;
5
+ config: RegistryConfig;
6
+ }>;
7
+ export declare function setRegistry(type: RegistryType, name: string, config: Partial<RegistryConfig>): void;
8
+ export declare function removeRegistry(type: RegistryType, name: string): boolean;
9
+ export declare function searchMcpRegistries(query: string, options?: {
10
+ registry?: string;
11
+ limit?: number;
12
+ }): Promise<RegistrySearchResult[]>;
13
+ export declare function getMcpServerInfo(serverName: string, registryName?: string): Promise<McpServerEntry | null>;
14
+ export declare function searchSkillRegistries(_query: string, _options?: {
15
+ registry?: string;
16
+ limit?: number;
17
+ }): Promise<RegistrySearchResult[]>;
18
+ export declare function search(query: string, options?: {
19
+ type?: RegistryType;
20
+ registry?: string;
21
+ limit?: number;
22
+ }): Promise<RegistrySearchResult[]>;
23
+ export declare function parsePackageIdentifier(identifier: string): {
24
+ type: RegistryType | 'git' | 'unknown';
25
+ name: string;
26
+ };
27
+ export declare function resolvePackage(identifier: string): Promise<ResolvedPackage | null>;
28
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/lib/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,cAAc,EAGd,oBAAoB,EACpB,eAAe,EAChB,MAAM,YAAY,CAAC;AAIpB,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAOhF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC,CAKxG;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAC9B,IAAI,CAYN;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQxE;AA4BD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAyCjC;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CA4BhC;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAWjC;AAED,wBAAsB,MAAM,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAcjC;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG;IAC1D,IAAI,EAAE,YAAY,GAAG,KAAK,GAAG,SAAS,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;CACd,CA4BA;AAED,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA4CxF"}