@zhixuan92/multi-model-agent 3.0.1 → 3.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.
- package/README.md +7 -3
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +76 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/info.d.ts +22 -0
- package/dist/cli/info.d.ts.map +1 -0
- package/dist/cli/info.js +100 -0
- package/dist/cli/info.js.map +1 -0
- package/dist/cli/install-skill.d.ts.map +1 -1
- package/dist/cli/install-skill.js +44 -39
- package/dist/cli/install-skill.js.map +1 -1
- package/dist/cli/logs.d.ts +15 -0
- package/dist/cli/logs.d.ts.map +1 -0
- package/dist/cli/logs.js +102 -0
- package/dist/cli/logs.js.map +1 -0
- package/dist/cli/serve.d.ts +0 -17
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +117 -2
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/update-skills.d.ts +16 -0
- package/dist/cli/update-skills.d.ts.map +1 -0
- package/dist/cli/update-skills.js +127 -0
- package/dist/cli/update-skills.js.map +1 -0
- package/dist/http/async-dispatch.d.ts.map +1 -1
- package/dist/http/async-dispatch.js +17 -0
- package/dist/http/async-dispatch.js.map +1 -1
- package/dist/http/execution-context.d.ts.map +1 -1
- package/dist/http/execution-context.js +34 -1
- package/dist/http/execution-context.js.map +1 -1
- package/dist/http/handlers/control/batch.d.ts +8 -10
- package/dist/http/handlers/control/batch.d.ts.map +1 -1
- package/dist/http/handlers/control/batch.js +55 -49
- package/dist/http/handlers/control/batch.js.map +1 -1
- package/dist/http/handlers/introspection/health.d.ts +9 -8
- package/dist/http/handlers/introspection/health.d.ts.map +1 -1
- package/dist/http/handlers/introspection/health.js +13 -9
- package/dist/http/handlers/introspection/health.js.map +1 -1
- package/dist/http/server.js +4 -5
- package/dist/http/server.js.map +1 -1
- package/dist/install/manifest.d.ts +8 -4
- package/dist/install/manifest.d.ts.map +1 -1
- package/dist/install/manifest.js +76 -18
- package/dist/install/manifest.js.map +1 -1
- package/dist/skills/_shared/polling.md +50 -23
- package/dist/skills/mma-audit/SKILL.md +12 -3
- package/dist/skills/mma-clarifications/SKILL.md +13 -5
- package/dist/skills/mma-context-blocks/SKILL.md +13 -4
- package/dist/skills/mma-debug/SKILL.md +12 -3
- package/dist/skills/mma-delegate/SKILL.md +13 -3
- package/dist/skills/mma-execute-plan/SKILL.md +13 -3
- package/dist/skills/mma-retry/SKILL.md +11 -3
- package/dist/skills/mma-review/SKILL.md +11 -3
- package/dist/skills/mma-verify/SKILL.md +10 -3
- package/dist/skills/multi-model-agent/SKILL.md +23 -6
- package/package.json +7 -4
- package/scripts/postinstall.js +36 -0
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { sendError, sendJson } from '../../errors.js';
|
|
2
|
+
import { notApplicable } from '@zhixuan92/multi-model-agent-core';
|
|
2
3
|
/**
|
|
3
|
-
* GET /batch/:batchId — poll
|
|
4
|
-
* Optional ?taskIndex=N query param slices a single task result from a
|
|
5
|
-
* complete batch.
|
|
4
|
+
* GET /batch/:batchId — poll a batch.
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
* pending
|
|
9
|
-
* awaiting_clarification → 200
|
|
10
|
-
* complete
|
|
11
|
-
*
|
|
12
|
-
*
|
|
6
|
+
* Status split (Theme 7):
|
|
7
|
+
* - pending → 202 text/plain — body is the runningHeadline
|
|
8
|
+
* - awaiting_clarification → 200 JSON uniform 7-field envelope with proposedInterpretation populated
|
|
9
|
+
* - complete/failed/expired → 200 JSON uniform 7-field envelope
|
|
10
|
+
*
|
|
11
|
+
* Optional ?taskIndex=N slices `results` on a complete envelope.
|
|
13
12
|
*
|
|
14
13
|
* Errors:
|
|
15
14
|
* unknown batchId → 404 not_found
|
|
@@ -19,13 +18,18 @@ import { sendError, sendJson } from '../../errors.js';
|
|
|
19
18
|
export function buildBatchHandler(deps) {
|
|
20
19
|
return async (_req, res, params, ctx) => {
|
|
21
20
|
const { batchId } = params;
|
|
22
|
-
// ── 1. Lookup ──────────────────────────────────────────────────────────
|
|
23
21
|
const entry = deps.batchRegistry.get(batchId);
|
|
24
22
|
if (!entry) {
|
|
25
23
|
sendError(res, 404, 'not_found', `Batch ${batchId} not found`);
|
|
26
24
|
return;
|
|
27
25
|
}
|
|
28
|
-
//
|
|
26
|
+
// Pending → 202 text/plain progress line
|
|
27
|
+
if (entry.state === 'pending') {
|
|
28
|
+
res.writeHead(202, { 'content-type': 'text/plain; charset=utf-8' });
|
|
29
|
+
res.end(entry.runningHeadline || '1/1 queued');
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
// Parse optional taskIndex (only honored on complete state with array results)
|
|
29
33
|
const rawTaskIndex = ctx.url.searchParams.get('taskIndex');
|
|
30
34
|
let taskIndex = null;
|
|
31
35
|
if (rawTaskIndex !== null) {
|
|
@@ -35,47 +39,49 @@ export function buildBatchHandler(deps) {
|
|
|
35
39
|
}
|
|
36
40
|
taskIndex = parseInt(rawTaskIndex, 10);
|
|
37
41
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
42
|
+
if (entry.state === 'awaiting_clarification') {
|
|
43
|
+
const reason = 'batch awaiting clarification';
|
|
44
|
+
sendJson(res, 200, {
|
|
45
|
+
headline: `awaiting clarification: ${entry.proposedInterpretation ?? ''}`.trim(),
|
|
46
|
+
results: notApplicable(reason),
|
|
47
|
+
batchTimings: notApplicable(reason),
|
|
48
|
+
costSummary: notApplicable(reason),
|
|
49
|
+
structuredReport: notApplicable(reason),
|
|
50
|
+
error: notApplicable(reason),
|
|
51
|
+
proposedInterpretation: entry.proposedInterpretation ?? notApplicable('clarification proposed but interpretation unavailable'),
|
|
52
|
+
});
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const fullResult = entry.result;
|
|
56
|
+
if (entry.state === 'failed' || entry.state === 'expired' || !fullResult) {
|
|
57
|
+
const reason = `batch ${entry.state}`;
|
|
58
|
+
const errPayload = entry.error ?? (fullResult && fullResult['error']) ?? notApplicable('batch succeeded');
|
|
59
|
+
sendJson(res, 200, {
|
|
60
|
+
headline: entry.state === 'expired'
|
|
61
|
+
? 'batch expired'
|
|
62
|
+
: entry.state === 'failed'
|
|
63
|
+
? 'batch failed'
|
|
64
|
+
: fullResult?.['headline'] ?? `batch ${entry.state}`,
|
|
65
|
+
results: fullResult?.['results'] ?? notApplicable(reason),
|
|
66
|
+
batchTimings: fullResult?.['batchTimings'] ?? notApplicable(reason),
|
|
67
|
+
costSummary: fullResult?.['costSummary'] ?? notApplicable(reason),
|
|
68
|
+
structuredReport: fullResult?.['structuredReport'] ?? notApplicable(reason),
|
|
69
|
+
error: errPayload,
|
|
70
|
+
proposedInterpretation: fullResult?.['proposedInterpretation'] ?? notApplicable('batch not awaiting clarification'),
|
|
71
|
+
});
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// entry.state === 'complete' with a stored result. Executor emits all 7 fields.
|
|
75
|
+
if (taskIndex !== null) {
|
|
76
|
+
const results = fullResult['results'];
|
|
77
|
+
if (!Array.isArray(results) || taskIndex >= results.length) {
|
|
78
|
+
sendError(res, 404, 'unknown_task_index', `taskIndex ${taskIndex} is out of range (batch has ${Array.isArray(results) ? results.length : 0} result(s))`);
|
|
72
79
|
return;
|
|
73
|
-
default: {
|
|
74
|
-
// Exhaustiveness guard — should never happen
|
|
75
|
-
const _never = entry.state;
|
|
76
|
-
sendError(res, 500, 'internal_error', `Unexpected batch state: ${String(_never)}`);
|
|
77
80
|
}
|
|
81
|
+
sendJson(res, 200, { ...fullResult, results: [results[taskIndex]] });
|
|
82
|
+
return;
|
|
78
83
|
}
|
|
84
|
+
sendJson(res, 200, fullResult);
|
|
79
85
|
};
|
|
80
86
|
}
|
|
81
87
|
//# sourceMappingURL=batch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../../src/http/handlers/control/batch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../../src/http/handlers/control/batch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { RawHandler } from '../../router.js';
|
|
2
|
+
export interface HealthHandlerDeps {
|
|
3
|
+
version: string;
|
|
4
|
+
serverStartedAt: number;
|
|
5
|
+
}
|
|
2
6
|
/**
|
|
3
|
-
* GET /health —
|
|
7
|
+
* GET /health — unauthenticated liveness + minimal identity.
|
|
4
8
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* lives on GET /status.
|
|
8
|
-
*
|
|
9
|
-
* Loopback guard is applied by the server pipeline before the handler
|
|
10
|
-
* is invoked (see LOOPBACK_ONLY_PATHS in server.ts).
|
|
9
|
+
* Returns ok + version + pid + startedAt + uptimeMs so `mmagent info` and
|
|
10
|
+
* external monitoring can verify both reachability and the running instance.
|
|
11
|
+
* Richer operator data (queue depth, active batches) lives on GET /status.
|
|
11
12
|
*/
|
|
12
|
-
export declare function buildHealthHandler(): RawHandler;
|
|
13
|
+
export declare function buildHealthHandler(deps: HealthHandlerDeps): RawHandler;
|
|
13
14
|
//# sourceMappingURL=health.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/introspection/health.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/introspection/health.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,UAAU,CAWtE"}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import { sendJson } from '../../errors.js';
|
|
2
2
|
/**
|
|
3
|
-
* GET /health —
|
|
3
|
+
* GET /health — unauthenticated liveness + minimal identity.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* lives on GET /status.
|
|
8
|
-
*
|
|
9
|
-
* Loopback guard is applied by the server pipeline before the handler
|
|
10
|
-
* is invoked (see LOOPBACK_ONLY_PATHS in server.ts).
|
|
5
|
+
* Returns ok + version + pid + startedAt + uptimeMs so `mmagent info` and
|
|
6
|
+
* external monitoring can verify both reachability and the running instance.
|
|
7
|
+
* Richer operator data (queue depth, active batches) lives on GET /status.
|
|
11
8
|
*/
|
|
12
|
-
export function buildHealthHandler() {
|
|
9
|
+
export function buildHealthHandler(deps) {
|
|
13
10
|
return (_req, res) => {
|
|
14
|
-
|
|
11
|
+
const now = Date.now();
|
|
12
|
+
sendJson(res, 200, {
|
|
13
|
+
ok: true,
|
|
14
|
+
version: deps.version,
|
|
15
|
+
pid: process.pid,
|
|
16
|
+
startedAt: deps.serverStartedAt,
|
|
17
|
+
uptimeMs: now - deps.serverStartedAt,
|
|
18
|
+
});
|
|
15
19
|
};
|
|
16
20
|
}
|
|
17
21
|
//# sourceMappingURL=health.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../../src/http/handlers/introspection/health.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../../src/http/handlers/introspection/health.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAQ3C;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAuB;IACxD,OAAO,CAAC,IAAqB,EAAE,GAAmB,EAAE,EAAE;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;YACjB,EAAE,EAAE,IAAI;YACR,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,IAAI,CAAC,eAAe;YAC/B,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC,eAAe;SACrC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/http/server.js
CHANGED
|
@@ -106,17 +106,16 @@ export async function startServer(config) {
|
|
|
106
106
|
idleEvictionMs: config.server.limits.idleProjectTimeoutMs,
|
|
107
107
|
evictionIntervalMs: Math.min(config.server.limits.idleProjectTimeoutMs, 60_000),
|
|
108
108
|
});
|
|
109
|
-
//
|
|
109
|
+
// Capture serverStartedAt before health registration so /health can expose it.
|
|
110
|
+
const serverStartedAt = Date.now();
|
|
111
|
+
// GET /health — unauthenticated liveness + minimal identity
|
|
110
112
|
const { buildHealthHandler } = await import('./handlers/introspection/health.js');
|
|
111
|
-
router.register('GET', '/health', buildHealthHandler());
|
|
113
|
+
router.register('GET', '/health', buildHealthHandler({ version: SERVER_VERSION, serverStartedAt }));
|
|
112
114
|
// Register tool handlers (Phase 6)
|
|
113
115
|
await registerToolHandlers(router, config, batchRegistry, projectRegistry);
|
|
114
116
|
// Register control handlers (Phase 7)
|
|
115
117
|
await registerControlHandlers(router, config, batchRegistry, projectRegistry);
|
|
116
118
|
// GET /status — operator introspection (registered after registries are ready)
|
|
117
|
-
// Capture serverStartedAt now (after all setup, before listen) so uptimeMs reflects
|
|
118
|
-
// time since the server was fully initialised.
|
|
119
|
-
const serverStartedAt = Date.now();
|
|
120
119
|
const { buildStatusHandler } = await import('./handlers/introspection/status.js');
|
|
121
120
|
router.register('GET', '/status', buildStatusHandler({
|
|
122
121
|
batchRegistry,
|
package/dist/http/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ export declare const ALL_CLIENTS: readonly Client[];
|
|
|
17
17
|
export declare function detectClients(homeDir: string): Client[];
|
|
18
18
|
declare const manifestEntrySchema: z.ZodObject<{
|
|
19
19
|
name: z.ZodString;
|
|
20
|
-
|
|
20
|
+
skillVersion: z.ZodString;
|
|
21
21
|
installedAt: z.ZodNumber;
|
|
22
22
|
targets: z.ZodArray<z.ZodEnum<{
|
|
23
23
|
"claude-code": "claude-code";
|
|
@@ -27,10 +27,10 @@ declare const manifestEntrySchema: z.ZodObject<{
|
|
|
27
27
|
}>>;
|
|
28
28
|
}, z.core.$strip>;
|
|
29
29
|
declare const installManifestSchema: z.ZodObject<{
|
|
30
|
-
version: z.
|
|
30
|
+
version: z.ZodLiteral<2>;
|
|
31
31
|
entries: z.ZodArray<z.ZodObject<{
|
|
32
32
|
name: z.ZodString;
|
|
33
|
-
|
|
33
|
+
skillVersion: z.ZodString;
|
|
34
34
|
installedAt: z.ZodNumber;
|
|
35
35
|
targets: z.ZodArray<z.ZodEnum<{
|
|
36
36
|
"claude-code": "claude-code";
|
|
@@ -42,6 +42,10 @@ declare const installManifestSchema: z.ZodObject<{
|
|
|
42
42
|
}, z.core.$strip>;
|
|
43
43
|
export type InstallManifest = z.infer<typeof installManifestSchema>;
|
|
44
44
|
export type ManifestEntry = z.infer<typeof manifestEntrySchema>;
|
|
45
|
+
/** Thrown when the manifest declares a version newer than this mmagent supports. */
|
|
46
|
+
export declare class FutureManifestError extends Error {
|
|
47
|
+
constructor(version: number);
|
|
48
|
+
}
|
|
45
49
|
/** Thrown when the manifest file exists but cannot be parsed as valid JSON. */
|
|
46
50
|
export declare class ManifestParseError extends Error {
|
|
47
51
|
constructor(manifestPath: string, cause: string);
|
|
@@ -74,7 +78,7 @@ export declare function getEntry(skillName: string, homeDir?: string): ManifestE
|
|
|
74
78
|
*
|
|
75
79
|
* Returns the resulting entry.
|
|
76
80
|
*/
|
|
77
|
-
export declare function appendEntry(skillName: string,
|
|
81
|
+
export declare function appendEntry(skillName: string, skillVersion: string, newTargets: Client[], homeDir?: string): ManifestEntry;
|
|
78
82
|
/**
|
|
79
83
|
* Remove `targets` from the entry for `skillName`.
|
|
80
84
|
* If `targets` is omitted or empty, removes the entire entry.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/install/manifest.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gDAAgD;AAChD,MAAM,MAAM,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnE,8EAA8E;AAC9E,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAAiD,CAAC;AAE3F;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAOvD;AAUD,QAAA,MAAM,mBAAmB;;;;;;;;;;iBAKvB,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;iBAGzB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,+EAA+E;AAC/E,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAGhD;AAED,gFAAgF;AAChF,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ;CAKrD;AAID,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/install/manifest.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gDAAgD;AAChD,MAAM,MAAM,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnE,8EAA8E;AAC9E,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAAiD,CAAC;AAE3F;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAOvD;AAUD,QAAA,MAAM,mBAAmB;;;;;;;;;;iBAKvB,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;iBAGzB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,oFAAoF;AACpF,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,+EAA+E;AAC/E,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAGhD;AAED,gFAAgF;AAChF,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ;CAKrD;AAID,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AA2GD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CAE7D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEvF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,aAAa,CA+Bf;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,MAAM,EAAO,EACtB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,EAAE,CAsBV;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAGxE"}
|
package/dist/install/manifest.js
CHANGED
|
@@ -43,14 +43,21 @@ const MANIFEST_NAME = 'install-manifest.json';
|
|
|
43
43
|
const clientSchema = z.enum(['claude-code', 'gemini', 'codex', 'cursor']);
|
|
44
44
|
const manifestEntrySchema = z.object({
|
|
45
45
|
name: z.string().min(1),
|
|
46
|
-
|
|
46
|
+
skillVersion: z.string().min(1),
|
|
47
47
|
installedAt: z.number().int().nonnegative(),
|
|
48
48
|
targets: z.array(clientSchema),
|
|
49
49
|
});
|
|
50
50
|
const installManifestSchema = z.object({
|
|
51
|
-
version: z.
|
|
51
|
+
version: z.literal(2),
|
|
52
52
|
entries: z.array(manifestEntrySchema),
|
|
53
53
|
});
|
|
54
|
+
/** Thrown when the manifest declares a version newer than this mmagent supports. */
|
|
55
|
+
export class FutureManifestError extends Error {
|
|
56
|
+
constructor(version) {
|
|
57
|
+
super(`install-manifest.json was written by a newer mmagent (version ${version}); upgrade mmagent or remove the file to continue`);
|
|
58
|
+
this.name = 'FutureManifestError';
|
|
59
|
+
}
|
|
60
|
+
}
|
|
54
61
|
/** Thrown when the manifest file exists but cannot be parsed as valid JSON. */
|
|
55
62
|
export class ManifestParseError extends Error {
|
|
56
63
|
constructor(manifestPath, cause) {
|
|
@@ -72,30 +79,81 @@ export function manifestDir(homeDir) {
|
|
|
72
79
|
export function manifestPath(homeDir) {
|
|
73
80
|
return path.join(manifestDir(homeDir), MANIFEST_NAME);
|
|
74
81
|
}
|
|
75
|
-
|
|
82
|
+
function backupCorrupted(p) {
|
|
83
|
+
const backup = `${p}.bak-${Date.now()}`;
|
|
84
|
+
try {
|
|
85
|
+
fs.renameSync(p, backup);
|
|
86
|
+
}
|
|
87
|
+
catch { /* ignore — best effort */ }
|
|
88
|
+
return backup;
|
|
89
|
+
}
|
|
76
90
|
function readManifest(homeDir) {
|
|
77
91
|
const p = manifestPath(homeDir);
|
|
78
92
|
if (!fs.existsSync(p))
|
|
79
93
|
return emptyManifest();
|
|
94
|
+
let raw;
|
|
95
|
+
try {
|
|
96
|
+
raw = fs.readFileSync(p, 'utf-8');
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return emptyManifest();
|
|
100
|
+
}
|
|
101
|
+
let parsed;
|
|
80
102
|
try {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
103
|
+
parsed = JSON.parse(raw);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
const backup = backupCorrupted(p);
|
|
107
|
+
process.stderr.write(`[mmagent] manifest corrupt; rebuilt empty v2 (previous copy at ${backup})\n`);
|
|
108
|
+
const empty = emptyManifest();
|
|
109
|
+
writeManifest(empty, homeDir);
|
|
110
|
+
return empty;
|
|
111
|
+
}
|
|
112
|
+
const parsedVersion = parsed !== null && typeof parsed === 'object' && 'version' in parsed
|
|
113
|
+
? parsed.version
|
|
114
|
+
: undefined;
|
|
115
|
+
if (typeof parsedVersion === 'number' && parsedVersion > 2) {
|
|
116
|
+
throw new FutureManifestError(parsedVersion);
|
|
117
|
+
}
|
|
118
|
+
// v2 — validate strictly
|
|
119
|
+
if (parsedVersion === 2) {
|
|
85
120
|
const result = installManifestSchema.safeParse(parsed);
|
|
86
121
|
if (!result.success) {
|
|
87
122
|
throw new ManifestSchemaValidationError(p, result.error);
|
|
88
123
|
}
|
|
89
124
|
return result.data;
|
|
90
125
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
126
|
+
// v1 (legacy) — migrate to v2.
|
|
127
|
+
// v1 entries have `version` (skill version) instead of `skillVersion`.
|
|
128
|
+
if (parsedVersion === 1 ||
|
|
129
|
+
(parsedVersion === undefined && parsed !== null && typeof parsed === 'object' && 'entries' in parsed)) {
|
|
130
|
+
const v1Entries = Array.isArray(parsed.entries)
|
|
131
|
+
? parsed.entries
|
|
132
|
+
: [];
|
|
133
|
+
const migrated = {
|
|
134
|
+
version: 2,
|
|
135
|
+
entries: v1Entries
|
|
136
|
+
.filter((e) => e && typeof e === 'object' && typeof e.name === 'string')
|
|
137
|
+
.map((e) => ({
|
|
138
|
+
name: e.name,
|
|
139
|
+
skillVersion: typeof e.version === 'string' && e.version.length > 0 ? e.version : 'unknown',
|
|
140
|
+
installedAt: typeof e.installedAt === 'number' ? e.installedAt : 0,
|
|
141
|
+
targets: Array.isArray(e.targets)
|
|
142
|
+
? e.targets.filter((t) => ['claude-code', 'gemini', 'codex', 'cursor'].includes(t))
|
|
143
|
+
: [],
|
|
144
|
+
})),
|
|
145
|
+
};
|
|
146
|
+
// Persist the migration so subsequent reads skip it.
|
|
147
|
+
writeManifest(migrated, homeDir);
|
|
148
|
+
process.stderr.write(`[mmagent] install-manifest.json migrated v1 → v2\n`);
|
|
149
|
+
return migrated;
|
|
98
150
|
}
|
|
151
|
+
// Unknown shape — back up and rebuild empty.
|
|
152
|
+
const backup = backupCorrupted(p);
|
|
153
|
+
process.stderr.write(`[mmagent] manifest unrecognized; rebuilt empty v2 (previous copy at ${backup})\n`);
|
|
154
|
+
const empty = emptyManifest();
|
|
155
|
+
writeManifest(empty, homeDir);
|
|
156
|
+
return empty;
|
|
99
157
|
}
|
|
100
158
|
function writeManifest(manifest, homeDir) {
|
|
101
159
|
fs.mkdirSync(manifestDir(homeDir), { recursive: true, mode: 0o700 });
|
|
@@ -105,7 +163,7 @@ function writeManifest(manifest, homeDir) {
|
|
|
105
163
|
});
|
|
106
164
|
}
|
|
107
165
|
function emptyManifest() {
|
|
108
|
-
return { version:
|
|
166
|
+
return { version: 2, entries: [] };
|
|
109
167
|
}
|
|
110
168
|
// ─── Public API ─────────────────────────────────────────────────────────────
|
|
111
169
|
/**
|
|
@@ -132,7 +190,7 @@ export function getEntry(skillName, homeDir) {
|
|
|
132
190
|
*
|
|
133
191
|
* Returns the resulting entry.
|
|
134
192
|
*/
|
|
135
|
-
export function appendEntry(skillName,
|
|
193
|
+
export function appendEntry(skillName, skillVersion, newTargets, homeDir) {
|
|
136
194
|
const manifest = readManifest(homeDir);
|
|
137
195
|
// De-duplicate incoming targets once, preserving order of first occurrence.
|
|
138
196
|
const seen = new Set();
|
|
@@ -148,14 +206,14 @@ export function appendEntry(skillName, version, newTargets, homeDir) {
|
|
|
148
206
|
if (!existing.targets.includes(t))
|
|
149
207
|
existing.targets.push(t);
|
|
150
208
|
}
|
|
151
|
-
existing.
|
|
209
|
+
existing.skillVersion = skillVersion;
|
|
152
210
|
existing.installedAt = Date.now();
|
|
153
211
|
}
|
|
154
212
|
else {
|
|
155
213
|
// Clone the array so the caller cannot mutate the stored entry.
|
|
156
214
|
manifest.entries.push({
|
|
157
215
|
name: skillName,
|
|
158
|
-
|
|
216
|
+
skillVersion,
|
|
159
217
|
installedAt: Date.now(),
|
|
160
218
|
targets: [...dedupedNewTargets],
|
|
161
219
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/install/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,8EAA8E;AAC9E,MAAM,CAAC,MAAM,WAAW,GAAsB,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE3F;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/E,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxF,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrF,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAE9C,gFAAgF;AAEhF,mDAAmD;AACnD,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG1E,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/install/manifest.ts"],"names":[],"mappings":"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"}
|