@zhixuan92/multi-model-agent 4.0.1 → 4.0.2
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.
- package/README.md +6 -7
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +9 -24
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +15 -16
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/status.js +1 -1
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/sync-skills.d.ts +62 -0
- package/dist/cli/sync-skills.d.ts.map +1 -0
- package/dist/cli/sync-skills.js +251 -0
- package/dist/cli/sync-skills.js.map +1 -0
- package/dist/http/async-dispatch.d.ts.map +1 -1
- package/dist/http/async-dispatch.js +30 -6
- package/dist/http/async-dispatch.js.map +1 -1
- package/dist/http/handlers/introspection/status.js +1 -1
- package/dist/skills/mma-audit/SKILL.md +1 -1
- package/dist/skills/mma-context-blocks/SKILL.md +1 -1
- package/dist/skills/mma-debug/SKILL.md +1 -1
- package/dist/skills/mma-delegate/SKILL.md +1 -1
- package/dist/skills/mma-execute-plan/SKILL.md +1 -1
- package/dist/skills/mma-explore/SKILL.md +1 -1
- package/dist/skills/mma-investigate/SKILL.md +1 -1
- package/dist/skills/mma-retry/SKILL.md +1 -1
- package/dist/skills/mma-review/SKILL.md +1 -1
- package/dist/skills/mma-verify/SKILL.md +1 -1
- package/dist/skills/multi-model-agent/SKILL.md +1 -1
- package/package.json +3 -2
- package/scripts/postinstall.js +2 -2
- package/dist/cli/install-skill.d.ts +0 -78
- package/dist/cli/install-skill.d.ts.map +0 -1
- package/dist/cli/install-skill.js +0 -304
- package/dist/cli/install-skill.js.map +0 -1
- package/dist/cli/update-skills.d.ts +0 -16
- package/dist/cli/update-skills.d.ts.map +0 -1
- package/dist/cli/update-skills.js +0 -158
- package/dist/cli/update-skills.js.map +0 -1
- package/dist/http/loopback.d.ts +0 -17
- package/dist/http/loopback.d.ts.map +0 -1
- package/dist/http/loopback.js +0 -43
- package/dist/http/loopback.js.map +0 -1
- package/dist/http/router.d.ts +0 -19
- package/dist/http/router.d.ts.map +0 -1
- package/dist/http/router.js +0 -51
- package/dist/http/router.js.map +0 -1
- package/dist/http/wire/delegate-wire.d.ts +0 -4
- package/dist/http/wire/delegate-wire.d.ts.map +0 -1
- package/dist/http/wire/delegate-wire.js +0 -16
- package/dist/http/wire/delegate-wire.js.map +0 -1
- package/dist/http/wire/execute-plan-wire.d.ts +0 -18
- package/dist/http/wire/execute-plan-wire.d.ts.map +0 -1
- package/dist/http/wire/execute-plan-wire.js +0 -26
- package/dist/http/wire/execute-plan-wire.js.map +0 -1
- package/dist/http/wire/registry.d.ts +0 -3
- package/dist/http/wire/registry.d.ts.map +0 -1
- package/dist/http/wire/registry.js +0 -20
- package/dist/http/wire/registry.js.map +0 -1
- package/dist/install/claude-code.d.ts +0 -43
- package/dist/install/claude-code.d.ts.map +0 -1
- package/dist/install/claude-code.js +0 -65
- package/dist/install/claude-code.js.map +0 -1
- package/dist/install/codex-cli.d.ts +0 -27
- package/dist/install/codex-cli.d.ts.map +0 -1
- package/dist/install/codex-cli.js +0 -84
- package/dist/install/codex-cli.js.map +0 -1
- package/dist/install/cursor.d.ts +0 -72
- package/dist/install/cursor.d.ts.map +0 -1
- package/dist/install/cursor.js +0 -81
- package/dist/install/cursor.js.map +0 -1
- package/dist/install/discover.d.ts +0 -27
- package/dist/install/discover.d.ts.map +0 -1
- package/dist/install/discover.js +0 -67
- package/dist/install/discover.js.map +0 -1
- package/dist/install/gemini-cli.d.ts +0 -66
- package/dist/install/gemini-cli.d.ts.map +0 -1
- package/dist/install/gemini-cli.js +0 -111
- package/dist/install/gemini-cli.js.map +0 -1
- package/dist/install/headers.d.ts +0 -17
- package/dist/install/headers.d.ts.map +0 -1
- package/dist/install/headers.js +0 -22
- package/dist/install/headers.js.map +0 -1
- package/dist/install/include-utils.d.ts +0 -27
- package/dist/install/include-utils.d.ts.map +0 -1
- package/dist/install/include-utils.js +0 -90
- package/dist/install/include-utils.js.map +0 -1
- package/dist/install/manifest-resolve.d.ts +0 -17
- package/dist/install/manifest-resolve.d.ts.map +0 -1
- package/dist/install/manifest-resolve.js +0 -78
- package/dist/install/manifest-resolve.js.map +0 -1
- package/dist/install/manifest.d.ts +0 -94
- package/dist/install/manifest.d.ts.map +0 -1
- package/dist/install/manifest.js +0 -234
- package/dist/install/manifest.js.map +0 -1
- package/dist/install/missing-skills.d.ts +0 -20
- package/dist/install/missing-skills.d.ts.map +0 -1
- package/dist/install/missing-skills.js +0 -42
- package/dist/install/missing-skills.js.map +0 -1
- package/dist/install/notify.d.ts +0 -6
- package/dist/install/notify.d.ts.map +0 -1
- package/dist/install/notify.js +0 -13
- package/dist/install/notify.js.map +0 -1
- package/dist/install/orchestrate.d.ts +0 -47
- package/dist/install/orchestrate.d.ts.map +0 -1
- package/dist/install/orchestrate.js +0 -98
- package/dist/install/orchestrate.js.map +0 -1
- package/dist/install/skill-manifest-sync.d.ts +0 -11
- package/dist/install/skill-manifest-sync.d.ts.map +0 -1
- package/dist/install/skill-manifest-sync.js +0 -65
- package/dist/install/skill-manifest-sync.js.map +0 -1
- package/dist/openapi.d.ts +0 -15
- package/dist/openapi.d.ts.map +0 -1
- package/dist/openapi.js +0 -286
- package/dist/openapi.js.map +0 -1
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sync-skills.ts — `mmagent sync-skills` subcommand.
|
|
3
|
+
*
|
|
4
|
+
* Single command for skill management: idempotent upsert of every shipped
|
|
5
|
+
* skill into every detected (or specified) client. Compares canonical
|
|
6
|
+
* SUPPORTED_SKILLS against on-disk SKILL.md and the install manifest, and:
|
|
7
|
+
* - installs skills not present on disk
|
|
8
|
+
* - overwrites skills whose installed version differs from canonical
|
|
9
|
+
* - removes skills no longer in SUPPORTED_SKILLS (orphan cleanup)
|
|
10
|
+
* - rewrites the install manifest to reflect post-sync state
|
|
11
|
+
*
|
|
12
|
+
* Replaces install-skill + update-skills as of 4.0.2.
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* mmagent sync-skills [--target=<client>] [--all-targets] [--dry-run] [--json]
|
|
16
|
+
* [--silent] [--best-effort] [--if-exists]
|
|
17
|
+
*
|
|
18
|
+
* Exit codes:
|
|
19
|
+
* 0 — success (or no clients detected)
|
|
20
|
+
* 1 — one or more skills failed to write/remove
|
|
21
|
+
* 2 — manifest was written by a newer mmagent (FutureManifestError)
|
|
22
|
+
* 3 — explicit --target was not a known client
|
|
23
|
+
*/
|
|
24
|
+
import * as os from 'node:os';
|
|
25
|
+
import * as fs from 'node:fs';
|
|
26
|
+
import * as path from 'node:path';
|
|
27
|
+
import minimist from 'minimist';
|
|
28
|
+
import matter from 'gray-matter';
|
|
29
|
+
import { ALL_CLIENTS, detectClients, listEntries, appendEntry, removeEntry, FutureManifestError, } from '@zhixuan92/multi-model-agent-core/tool-surface/manifest';
|
|
30
|
+
import { SUPPORTED_SKILLS, readSkillContent, getSkillsRoot, } from '@zhixuan92/multi-model-agent-core/tool-surface/discover';
|
|
31
|
+
import { writeSkillToClient, removeSkillFromClient, resolveClientInstallDir, } from '@zhixuan92/multi-model-agent-core/tool-surface/skill-installer';
|
|
32
|
+
export const ExitCode = Object.freeze({
|
|
33
|
+
SUCCESS: 0,
|
|
34
|
+
ERR_PARTIAL: 1,
|
|
35
|
+
ERR_FUTURE_MANIFEST: 2,
|
|
36
|
+
ERR_UNKNOWN_TARGET: 3,
|
|
37
|
+
});
|
|
38
|
+
export function parseArgs(argv) {
|
|
39
|
+
const args = minimist(argv, {
|
|
40
|
+
string: ['target'],
|
|
41
|
+
boolean: ['dry-run', 'json', 'all-targets'],
|
|
42
|
+
alias: { t: 'target', j: 'json' },
|
|
43
|
+
});
|
|
44
|
+
let targets = null;
|
|
45
|
+
if (args.target) {
|
|
46
|
+
const t = Array.isArray(args.target) ? args.target : [args.target];
|
|
47
|
+
targets = t.map((s) => s);
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
targets,
|
|
51
|
+
allTargets: args['all-targets'] === true,
|
|
52
|
+
dryRun: args['dry-run'] === true,
|
|
53
|
+
json: args['json'] === true,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export class UnknownTargetError extends Error {
|
|
57
|
+
code = 'unknown_target';
|
|
58
|
+
constructor(target, valid) {
|
|
59
|
+
super(`Unknown target '${target}'. Valid: ${valid.join(', ')}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function resolveTargets(explicit, allTargets, homeDir) {
|
|
63
|
+
if (allTargets)
|
|
64
|
+
return [...ALL_CLIENTS];
|
|
65
|
+
if (explicit !== null) {
|
|
66
|
+
for (const t of explicit) {
|
|
67
|
+
if (!ALL_CLIENTS.includes(t))
|
|
68
|
+
throw new UnknownTargetError(t, ALL_CLIENTS);
|
|
69
|
+
}
|
|
70
|
+
return Array.from(new Set(explicit));
|
|
71
|
+
}
|
|
72
|
+
return detectClients(homeDir);
|
|
73
|
+
}
|
|
74
|
+
function versionFromContent(content) {
|
|
75
|
+
try {
|
|
76
|
+
const parsed = matter(content);
|
|
77
|
+
const v = parsed.data['version'];
|
|
78
|
+
return typeof v === 'string' && v.length > 0 ? v : 'unknown';
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return 'unknown';
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function manifestPresent(homeDir) {
|
|
85
|
+
return fs.existsSync(path.join(homeDir, '.multi-model', 'install-manifest.json'));
|
|
86
|
+
}
|
|
87
|
+
function readInstalledVersion(skillName, target, homeDir) {
|
|
88
|
+
const dir = resolveClientInstallDir(target, homeDir);
|
|
89
|
+
if (!dir)
|
|
90
|
+
return null;
|
|
91
|
+
const skillFile = path.join(dir, skillName, 'SKILL.md');
|
|
92
|
+
try {
|
|
93
|
+
return versionFromContent(fs.readFileSync(skillFile, 'utf8'));
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export async function runSyncSkills(deps = {}) {
|
|
100
|
+
const argv = deps.argv ?? process.argv.slice(2);
|
|
101
|
+
const homeDir = deps.homeDir ?? os.homedir();
|
|
102
|
+
const skillsRoot = getSkillsRoot(deps.skillsRoot);
|
|
103
|
+
const stdout = deps.stdout ?? process.stdout.write.bind(process.stdout);
|
|
104
|
+
const stderr = deps.stderr ?? process.stderr.write.bind(process.stderr);
|
|
105
|
+
const silent = deps.silent ?? false;
|
|
106
|
+
const bestEffort = deps.bestEffort ?? false;
|
|
107
|
+
const log = silent ? (_) => true : stdout;
|
|
108
|
+
if (deps.ifExists && !manifestPresent(homeDir))
|
|
109
|
+
return ExitCode.SUCCESS;
|
|
110
|
+
const parsed = parseArgs(argv);
|
|
111
|
+
let targets;
|
|
112
|
+
try {
|
|
113
|
+
targets = resolveTargets(parsed.targets, parsed.allTargets, homeDir);
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
if (err instanceof UnknownTargetError) {
|
|
117
|
+
stderr(`mmagent sync-skills: ${err.message}\n`);
|
|
118
|
+
return bestEffort ? 0 : ExitCode.ERR_UNKNOWN_TARGET;
|
|
119
|
+
}
|
|
120
|
+
throw err;
|
|
121
|
+
}
|
|
122
|
+
if (targets.length === 0) {
|
|
123
|
+
if (parsed.json) {
|
|
124
|
+
stdout(JSON.stringify({ targets: [], outcome: 'no-clients-detected' }) + '\n');
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
log('No clients detected. Use --target=<client> or --all-targets.\n');
|
|
128
|
+
}
|
|
129
|
+
return ExitCode.SUCCESS;
|
|
130
|
+
}
|
|
131
|
+
let manifestEntries;
|
|
132
|
+
try {
|
|
133
|
+
manifestEntries = listEntries(homeDir);
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
if (err instanceof FutureManifestError) {
|
|
137
|
+
stderr(`mmagent sync-skills: ${err.message}\n`);
|
|
138
|
+
return bestEffort ? 0 : ExitCode.ERR_FUTURE_MANIFEST;
|
|
139
|
+
}
|
|
140
|
+
if (bestEffort)
|
|
141
|
+
return 0;
|
|
142
|
+
throw err;
|
|
143
|
+
}
|
|
144
|
+
const outcome = {
|
|
145
|
+
installed: [],
|
|
146
|
+
updated: [],
|
|
147
|
+
removed: [],
|
|
148
|
+
upToDate: [],
|
|
149
|
+
errors: [],
|
|
150
|
+
};
|
|
151
|
+
// Pass 1: orphan removal — drop skills that disappeared from the bundle.
|
|
152
|
+
for (const entry of manifestEntries) {
|
|
153
|
+
if (SUPPORTED_SKILLS.includes(entry.name))
|
|
154
|
+
continue;
|
|
155
|
+
for (const target of entry.targets) {
|
|
156
|
+
if (parsed.dryRun) {
|
|
157
|
+
outcome.removed.push({ skill: entry.name, target });
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
try {
|
|
161
|
+
removeSkillFromClient(entry.name, target, homeDir);
|
|
162
|
+
outcome.removed.push({ skill: entry.name, target });
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
outcome.errors.push({
|
|
166
|
+
skill: entry.name,
|
|
167
|
+
target,
|
|
168
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (!parsed.dryRun)
|
|
173
|
+
removeEntry(entry.name, [], homeDir);
|
|
174
|
+
}
|
|
175
|
+
// Pass 2: upsert canonical skills × resolved targets.
|
|
176
|
+
for (const skillName of SUPPORTED_SKILLS) {
|
|
177
|
+
const content = readSkillContent(skillName, skillsRoot);
|
|
178
|
+
if (content === null) {
|
|
179
|
+
outcome.errors.push({
|
|
180
|
+
skill: skillName,
|
|
181
|
+
target: targets[0],
|
|
182
|
+
reason: `Bundled SKILL.md not found at ${path.join(skillsRoot, skillName, 'SKILL.md')}`,
|
|
183
|
+
});
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
const canonicalVersion = versionFromContent(content);
|
|
187
|
+
for (const target of targets) {
|
|
188
|
+
const installedVersion = readInstalledVersion(skillName, target, homeDir);
|
|
189
|
+
const action = installedVersion === null
|
|
190
|
+
? 'install'
|
|
191
|
+
: installedVersion !== canonicalVersion
|
|
192
|
+
? 'update'
|
|
193
|
+
: 'up-to-date';
|
|
194
|
+
if (action === 'up-to-date') {
|
|
195
|
+
outcome.upToDate.push({ skill: skillName, target });
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
if (parsed.dryRun) {
|
|
199
|
+
if (action === 'install') {
|
|
200
|
+
outcome.installed.push({ skill: skillName, target, version: canonicalVersion });
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
outcome.updated.push({ skill: skillName, target, from: installedVersion, to: canonicalVersion });
|
|
204
|
+
}
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
try {
|
|
208
|
+
writeSkillToClient(skillName, content, target, homeDir, skillsRoot, canonicalVersion);
|
|
209
|
+
appendEntry(skillName, canonicalVersion, [target], homeDir);
|
|
210
|
+
if (action === 'install') {
|
|
211
|
+
outcome.installed.push({ skill: skillName, target, version: canonicalVersion });
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
outcome.updated.push({ skill: skillName, target, from: installedVersion, to: canonicalVersion });
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
outcome.errors.push({
|
|
219
|
+
skill: skillName,
|
|
220
|
+
target,
|
|
221
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (parsed.json) {
|
|
227
|
+
stdout(JSON.stringify({ dryRun: parsed.dryRun, targets, outcome }) + '\n');
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
const verb = parsed.dryRun ? 'Would sync' : 'Synced';
|
|
231
|
+
const parts = [];
|
|
232
|
+
if (outcome.installed.length > 0)
|
|
233
|
+
parts.push(`${outcome.installed.length} installed`);
|
|
234
|
+
if (outcome.updated.length > 0)
|
|
235
|
+
parts.push(`${outcome.updated.length} updated`);
|
|
236
|
+
if (outcome.removed.length > 0)
|
|
237
|
+
parts.push(`${outcome.removed.length} orphan removed`);
|
|
238
|
+
if (outcome.upToDate.length > 0)
|
|
239
|
+
parts.push(`${outcome.upToDate.length} up-to-date`);
|
|
240
|
+
if (outcome.errors.length > 0)
|
|
241
|
+
parts.push(`${outcome.errors.length} errors`);
|
|
242
|
+
const summary = parts.length > 0 ? parts.join(', ') : 'nothing to do';
|
|
243
|
+
log(`${verb} ${SUPPORTED_SKILLS.length} skill(s) → ${targets.join(', ')} (${summary}).\n`);
|
|
244
|
+
for (const e of outcome.errors)
|
|
245
|
+
stderr(`error: ${e.skill} → ${e.target}: ${e.reason}\n`);
|
|
246
|
+
}
|
|
247
|
+
if (outcome.errors.length > 0)
|
|
248
|
+
return bestEffort ? 0 : ExitCode.ERR_PARTIAL;
|
|
249
|
+
return ExitCode.SUCCESS;
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=sync-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-skills.js","sourceRoot":"","sources":["../../src/cli/sync-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-dispatch.d.ts","sourceRoot":"","sources":["../../src/http/async-dispatch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,oBAAoB,CAAC,OAAO;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB;;;OAGG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,OAAO,EACnC,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAClC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"async-dispatch.d.ts","sourceRoot":"","sources":["../../src/http/async-dispatch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,oBAAoB,CAAC,OAAO;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB;;;OAGG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,OAAO,EACnC,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAClC,mBAAmB,CA0FrB"}
|
|
@@ -33,15 +33,31 @@ export function asyncDispatch(opts) {
|
|
|
33
33
|
void (async () => {
|
|
34
34
|
try {
|
|
35
35
|
deps.bus.emit({ event: 'task_started', ts: new Date().toISOString(), batchId, taskIndex: 0, route: tool, cwd: projectCwd });
|
|
36
|
-
// Mark the batch as running so
|
|
37
|
-
// "1/1 running, Xs elapsed"
|
|
38
|
-
//
|
|
39
|
-
//
|
|
36
|
+
// Mark the batch as running so /batch/:id polling reports
|
|
37
|
+
// "1/1 running, Xs elapsed" the instant the executor begins.
|
|
38
|
+
// Without bumping the headline snapshot here, the polling endpoint
|
|
39
|
+
// returns the initial "0/N queued" fallback until the runner's first
|
|
40
|
+
// heartbeat arrives — which can be many seconds (or minutes) later
|
|
41
|
+
// because heartbeats fire from inside provider.run. That gap is what
|
|
42
|
+
// made 4.0.1 audits look like the daemon was deadlocked when the
|
|
43
|
+
// only thing actually slow was the LLM call.
|
|
40
44
|
const entry = batchRegistry.get(batchId);
|
|
41
45
|
if (entry) {
|
|
42
46
|
entry.tasksTotal = 1;
|
|
43
47
|
entry.tasksStarted = 1;
|
|
44
48
|
entry.tasksCompleted = 0;
|
|
49
|
+
batchRegistry.updateRunningHeadlineSnapshot(batchId, {
|
|
50
|
+
prefix: `1/1 running, `,
|
|
51
|
+
statsClause: ``,
|
|
52
|
+
dispatchedAt: entry.runningHeadlineSnapshot.dispatchedAt,
|
|
53
|
+
fallback: `1/1 running`,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
// Verbose-stderr breadcrumb so operators tailing the daemon see the
|
|
57
|
+
// executor lifecycle past request_received without grepping the
|
|
58
|
+
// JSONL log. Cheap; gated on diagnostics.verbose.
|
|
59
|
+
if (deps.config.diagnostics?.verbose) {
|
|
60
|
+
process.stdout.write(`[mmagent verbose] event=executor_started ts=${new Date().toISOString()} batch=${batchId} route=${tool}\n`);
|
|
45
61
|
}
|
|
46
62
|
const result = await opts.executor(ctx, batchId);
|
|
47
63
|
const resultObj = result;
|
|
@@ -50,7 +66,11 @@ export function asyncDispatch(opts) {
|
|
|
50
66
|
entryAfter.tasksCompleted = 1;
|
|
51
67
|
batchRegistry.complete(batchId, result);
|
|
52
68
|
const taskCount = Array.isArray(resultObj?.results) ? resultObj.results.length : 0;
|
|
53
|
-
|
|
69
|
+
const durationMs = Date.now() - startedAtMs;
|
|
70
|
+
deps.bus.emit({ event: 'batch_completed', ts: new Date().toISOString(), batchId, tool, durationMs, taskCount });
|
|
71
|
+
if (deps.config.diagnostics?.verbose) {
|
|
72
|
+
process.stdout.write(`[mmagent verbose] event=batch_completed ts=${new Date().toISOString()} batch=${batchId} route=${tool} duration_ms=${durationMs}\n`);
|
|
73
|
+
}
|
|
54
74
|
}
|
|
55
75
|
catch (err) {
|
|
56
76
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -60,7 +80,11 @@ export function asyncDispatch(opts) {
|
|
|
60
80
|
message,
|
|
61
81
|
...(stack !== undefined && { stack }),
|
|
62
82
|
});
|
|
63
|
-
|
|
83
|
+
const durationMs = Date.now() - startedAtMs;
|
|
84
|
+
deps.bus.emit({ event: 'batch_failed', ts: new Date().toISOString(), batchId, tool, durationMs, errorCode: 'runner_crash', errorMessage: message });
|
|
85
|
+
if (deps.config.diagnostics?.verbose) {
|
|
86
|
+
process.stdout.write(`[mmagent verbose] event=batch_failed ts=${new Date().toISOString()} batch=${batchId} route=${tool} duration_ms=${durationMs} error="${message.replace(/"/g, '\\"')}"\n`);
|
|
87
|
+
}
|
|
64
88
|
}
|
|
65
89
|
})();
|
|
66
90
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-dispatch.js","sourceRoot":"","sources":["../../src/http/async-dispatch.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAqB/D;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAmC;IAEnC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEjF,yDAAyD;IACzD,aAAa,CAAC,QAAQ,CAAC;QACrB,OAAO;QACP,UAAU;QACV,IAAI;QACJ,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;QAC1B,QAAQ;QACR,cAAc,EAAE,KAAK;KACtB,CAAC,CAAC;IAEH,yCAAyC;IACzC,MAAM,GAAG,GAAG,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAEvE,uDAAuD;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,YAAY,CAAC,GAAG,EAAE;QAChB,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAS,CAAC,CAAC;gBACnI,
|
|
1
|
+
{"version":3,"file":"async-dispatch.js","sourceRoot":"","sources":["../../src/http/async-dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { homedir } from 'node:os';
|
|
|
4
4
|
import { join } from 'node:path';
|
|
5
5
|
import { sendJson } from '../../errors.js';
|
|
6
6
|
/**
|
|
7
|
-
* The skill manifest is installed by the `
|
|
7
|
+
* The skill manifest is installed by the `sync-skills` CLI.
|
|
8
8
|
* We read it at /status request time — if absent, skillVersion and
|
|
9
9
|
* skillCompatible are both null.
|
|
10
10
|
*/
|
|
@@ -8,7 +8,7 @@ when_to_use: >-
|
|
|
8
8
|
User asks for a doc/spec/config audit OR a methodology skill
|
|
9
9
|
(superpowers:dispatching-parallel-agents, /security-review) points at one AND
|
|
10
10
|
mmagent is running. Audit on PROSE/SPEC docs — use mma-review for source code.
|
|
11
|
-
version: 4.0.
|
|
11
|
+
version: 4.0.2
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
# mma-audit
|
|
@@ -12,7 +12,7 @@ when_to_use: >-
|
|
|
12
12
|
Register once here, then pass the ID via `contextBlockIds` on mma-delegate /
|
|
13
13
|
mma-execute-plan / mma-audit / mma-review / mma-verify / mma-debug /
|
|
14
14
|
mma-investigate. Cheaper and faster than inlining the same content N times.
|
|
15
|
-
version: 4.0.
|
|
15
|
+
version: 4.0.2
|
|
16
16
|
---
|
|
17
17
|
|
|
18
18
|
# mma-context-blocks
|
|
@@ -10,7 +10,7 @@ when_to_use: >-
|
|
|
10
10
|
read files, reproduce, trace — OR a methodology skill
|
|
11
11
|
(superpowers:systematic-debugging) points at the investigation step. Delegate
|
|
12
12
|
the read/reproduce/trace; the main agent stays on the hypothesis and the fix.
|
|
13
|
-
version: 4.0.
|
|
13
|
+
version: 4.0.2
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# mma-debug
|
|
@@ -11,7 +11,7 @@ when_to_use: >-
|
|
|
11
11
|
and keep main context free. If a plan file exists → use mma-execute-plan. If
|
|
12
12
|
the task is audit / review / verify / debug / investigate → use the matching
|
|
13
13
|
specialized skill.
|
|
14
|
-
version: 4.0.
|
|
14
|
+
version: 4.0.2
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
# mma-delegate
|
|
@@ -10,7 +10,7 @@ when_to_use: >-
|
|
|
10
10
|
superpowers:subagent-driven-development / superpowers:executing-plans —
|
|
11
11
|
workers are cheaper and don't pollute main context. Task descriptors must
|
|
12
12
|
match plan headings verbatim.
|
|
13
|
-
version: 4.0.
|
|
13
|
+
version: 4.0.2
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# mma-execute-plan
|
|
@@ -11,7 +11,7 @@ when_to_use: >-
|
|
|
11
11
|
Delegating the read+grep+web-search to a worker keeps your main context on
|
|
12
12
|
judgment. DO NOT use for convergent single-answer questions (where is X
|
|
13
13
|
called, how does Y work) — those are mma-investigate.
|
|
14
|
-
version: 4.0.
|
|
14
|
+
version: 4.0.2
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
# mma-explore
|
|
@@ -12,7 +12,7 @@ when_to_use: >-
|
|
|
12
12
|
git-history queries. OR you are about to read 3+ files / run any grep in main
|
|
13
13
|
context — that's the inline-labor-leakage anti-pattern (AP2); delegate to this
|
|
14
14
|
skill instead.
|
|
15
|
-
version: 4.0.
|
|
15
|
+
version: 4.0.2
|
|
16
16
|
---
|
|
17
17
|
|
|
18
18
|
# mma-investigate
|
|
@@ -10,7 +10,7 @@ when_to_use: >-
|
|
|
10
10
|
you want to re-try the failed indices only. Prefer this over re-dispatching
|
|
11
11
|
the whole batch or inline-retrying — it's idempotent and preserves the
|
|
12
12
|
original batch's diagnostics.
|
|
13
|
-
version: 4.0.
|
|
13
|
+
version: 4.0.2
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# mma-retry
|
|
@@ -10,7 +10,7 @@ when_to_use: >-
|
|
|
10
10
|
AND mmagent is running. Delegate so each file reviews on its own worker; the
|
|
11
11
|
main agent only decides what to merge. Review on SOURCE CODE — use mma-audit
|
|
12
12
|
for prose specs / configs.
|
|
13
|
-
version: 4.0.
|
|
13
|
+
version: 4.0.2
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# mma-review
|
|
@@ -10,7 +10,7 @@ when_to_use: >-
|
|
|
10
10
|
against implemented work BEFORE claiming success. Delegate so each checklist
|
|
11
11
|
item gets independent evidence-gathering on a worker. Use this BEFORE saying
|
|
12
12
|
"done" — never after.
|
|
13
|
-
version: 4.0.
|
|
13
|
+
version: 4.0.2
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# mma-verify
|
|
@@ -11,7 +11,7 @@ when_to_use: >-
|
|
|
11
11
|
tasks — AND mmagent is running. Read this once, pick the matching mma-* skill,
|
|
12
12
|
and delegate there. Applies equally whether the user invoked a superpowers
|
|
13
13
|
methodology skill or asked directly.
|
|
14
|
-
version: 4.0.
|
|
14
|
+
version: 4.0.2
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
# multi-model-agent (router)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhixuan92/multi-model-agent",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Standalone HTTP server for multi-model-agent. Routes tool-invocation work to Claude, Codex, or OpenAI-compatible sub-agents with async-polling REST dispatch and installable skills for Claude Code, Gemini CLI, Codex CLI, and Cursor.",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
|
+
"prebuild": "rm -rf dist",
|
|
46
47
|
"build": "tsc && rm -rf dist/skills && cp -R src/skills dist/skills && node scripts/inject-skill-version.mjs && chmod +x dist/cli/index.js",
|
|
47
48
|
"postinstall": "node scripts/postinstall.js",
|
|
48
49
|
"prepublishOnly": "npm run build"
|
|
@@ -52,7 +53,7 @@
|
|
|
52
53
|
},
|
|
53
54
|
"dependencies": {
|
|
54
55
|
"@asteasolutions/zod-to-openapi": "^8.5.0",
|
|
55
|
-
"@zhixuan92/multi-model-agent-core": "^4.0.
|
|
56
|
+
"@zhixuan92/multi-model-agent-core": "^4.0.2",
|
|
56
57
|
"gray-matter": "^4.0.3",
|
|
57
58
|
"minimist": "^1.2.8",
|
|
58
59
|
"proper-lockfile": "^4.1.2",
|
package/scripts/postinstall.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Runs on every `npm install @zhixuan92/multi-model-agent`.
|
|
6
6
|
*
|
|
7
|
-
* Calls `mmagent
|
|
7
|
+
* Calls `mmagent sync-skills --if-exists --silent --best-effort` so that
|
|
8
8
|
* users who previously installed skills get their Claude Code / Gemini /
|
|
9
9
|
* Codex / Cursor copies refreshed to match this release. Exits 0 on every
|
|
10
10
|
* failure mode so npm install never breaks the user's environment.
|
|
@@ -28,7 +28,7 @@ if (!existsSync(cli)) {
|
|
|
28
28
|
|
|
29
29
|
const child = spawn(
|
|
30
30
|
process.execPath,
|
|
31
|
-
[cli, '
|
|
31
|
+
[cli, 'sync-skills', '--if-exists', '--silent', '--best-effort'],
|
|
32
32
|
{ stdio: 'inherit' },
|
|
33
33
|
);
|
|
34
34
|
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import type { Client } from '@zhixuan92/multi-model-agent-core/tool-surface/manifest';
|
|
2
|
-
export type { Client } from '@zhixuan92/multi-model-agent-core/tool-surface/manifest';
|
|
3
|
-
export { ALL_CLIENTS, detectClients } from '@zhixuan92/multi-model-agent-core/tool-surface/manifest';
|
|
4
|
-
export { SUPPORTED_SKILLS, SkillNotFoundError, getSkillsRoot, readSkillContent, } from '@zhixuan92/multi-model-agent-core/tool-surface/discover';
|
|
5
|
-
export { UnknownTargetError, writeSkillToClient, removeSkillFromClient, } from '@zhixuan92/multi-model-agent-core/tool-surface/skill-installer';
|
|
6
|
-
export type { InstallResult } from '@zhixuan92/multi-model-agent-core/tool-surface/skill-installer';
|
|
7
|
-
export { doInstall, doUninstall } from '@zhixuan92/multi-model-agent-core/tool-surface/skill-installer';
|
|
8
|
-
/**
|
|
9
|
-
* Return codes for `main()`.
|
|
10
|
-
* Exported so callers (e.g. the CLI dispatcher in cli/index.ts) can pass the
|
|
11
|
-
* code to `exit()` without calling `process.exit()` directly.
|
|
12
|
-
*/
|
|
13
|
-
export declare const ExitCode: Readonly<{
|
|
14
|
-
SUCCESS: 0;
|
|
15
|
-
ERR_INVALID_ARGS: 1;
|
|
16
|
-
ERR_SKILL_NOT_FOUND: 2;
|
|
17
|
-
ERR_UNKNOWN_SKILL: 3;
|
|
18
|
-
ERR_NO_TARGETS: 4;
|
|
19
|
-
ERR_WRITER_NOT_IMPLEMENTED: 5;
|
|
20
|
-
ERR_UNKNOWN_TARGET: 7;
|
|
21
|
-
ERR_UNKNOWN: 8;
|
|
22
|
-
}>;
|
|
23
|
-
export interface ParsedArgs {
|
|
24
|
-
skill: string | null;
|
|
25
|
-
/** Explicit --config path, or null if not specified. */
|
|
26
|
-
configPath: string | null;
|
|
27
|
-
uninstall: boolean;
|
|
28
|
-
dryRun: boolean;
|
|
29
|
-
json: boolean;
|
|
30
|
-
targets: Client[] | null;
|
|
31
|
-
allTargets: boolean;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Parse CLI arguments for `install-skill`.
|
|
35
|
-
*
|
|
36
|
-
* NOTE: `stopEarly` is deliberately NOT set on minimist. `stopEarly: true`
|
|
37
|
-
* causes options after the first positional argument to be treated as positional
|
|
38
|
-
* tail, which would misparse a call like:
|
|
39
|
-
* mmagent install-skill mma-delegate --json
|
|
40
|
-
* (--json would be captured in `_` instead of setting the `json` flag).
|
|
41
|
-
* Instead we let minimist consume all arguments normally.
|
|
42
|
-
*/
|
|
43
|
-
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
44
|
-
/**
|
|
45
|
-
* Resolve the target client list.
|
|
46
|
-
* Priority:
|
|
47
|
-
* 1. explicit `--target` arguments (validated against known clients)
|
|
48
|
-
* 2. `--all-targets` → all four known clients
|
|
49
|
-
* 3. auto-detect based on `homeDir`
|
|
50
|
-
*
|
|
51
|
-
* Explicit targets are de-duplicated while preserving order of first occurrence.
|
|
52
|
-
*
|
|
53
|
-
* @throws UnknownTargetError if an explicit target is not a known client.
|
|
54
|
-
*/
|
|
55
|
-
export declare function resolveTargets(explicitTargets: Client[] | null, allTargets: boolean, homeDir: string): Client[];
|
|
56
|
-
export interface MainDeps {
|
|
57
|
-
/** Override argv (defaults to process.argv.slice(2)). */
|
|
58
|
-
argv?: string[];
|
|
59
|
-
/** Home directory (defaults to os.homedir()). */
|
|
60
|
-
homeDir?: string;
|
|
61
|
-
/** Package version string for manifest entries (defaults to '0.0.0'). */
|
|
62
|
-
version?: string;
|
|
63
|
-
/** Override skills root for testing. */
|
|
64
|
-
skillsRoot?: string;
|
|
65
|
-
/** Injectable stdout writer. */
|
|
66
|
-
stdout?: (s: string) => boolean;
|
|
67
|
-
/** Injectable stderr writer. */
|
|
68
|
-
stderr?: (s: string) => boolean;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Main entry point for `mmagent install-skill`.
|
|
72
|
-
*
|
|
73
|
-
* Returns an exit code (one of `ExitCode.*`) instead of calling `process.exit()`
|
|
74
|
-
* directly, so the CLI dispatcher in `cli/index.ts` can control the exit
|
|
75
|
-
* decision and make the function fully unit-testable.
|
|
76
|
-
*/
|
|
77
|
-
export declare function main(deps?: MainDeps): Promise<number>;
|
|
78
|
-
//# sourceMappingURL=install-skill.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install-skill.d.ts","sourceRoot":"","sources":["../../src/cli/install-skill.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yDAAyD,CAAC;AAetF,YAAY,EAAE,MAAM,EAAE,MAAM,yDAAyD,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,GACjB,MAAM,yDAAyD,CAAC;AACjE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,gEAAgE,CAAC;AAIxE,YAAY,EAAE,aAAa,EAAE,MAAM,gEAAgE,CAAC;AACpG,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gEAAgE,CAAC;AAIxG;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;EASnB,CAAC;AAIH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,wDAAwD;IACxD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA6BpD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,EAChC,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAmBV;AAqED,MAAM,WAAW,QAAQ;IACvB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAChC,gCAAgC;IAChC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CACjC;AAED;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,IAAI,GAAE,QAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAiH/D"}
|