@zhixuan92/multi-model-agent 3.10.1 → 3.10.3
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 +2 -2
- package/dist/cli/serve.d.ts +1 -0
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +17 -5
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/update-skills.d.ts.map +1 -1
- package/dist/cli/update-skills.js +31 -0
- package/dist/cli/update-skills.js.map +1 -1
- package/dist/http/execution-context.d.ts.map +1 -1
- package/dist/http/execution-context.js +3 -15
- package/dist/http/execution-context.js.map +1 -1
- package/dist/http/handlers/control/batch.d.ts.map +1 -1
- package/dist/http/handlers/control/batch.js +7 -2
- package/dist/http/handlers/control/batch.js.map +1 -1
- package/dist/install/missing-skills.d.ts +13 -0
- package/dist/install/missing-skills.d.ts.map +1 -0
- package/dist/install/missing-skills.js +33 -0
- package/dist/install/missing-skills.js.map +1 -0
- package/dist/skills/mma-audit/SKILL.md +1 -1
- package/dist/skills/mma-clarifications/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-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/dist/telemetry/recorder.js +25 -2
- package/dist/telemetry/recorder.js.map +1 -1
- package/package.json +2 -2
- package/dist/circle.d.ts +0 -15
- package/dist/circle.d.ts.map +0 -1
- package/dist/circle.js +0 -20
- package/dist/circle.js.map +0 -1
- package/dist/utils/triangle.d.ts +0 -11
- package/dist/utils/triangle.d.ts.map +0 -1
- package/dist/utils/triangle.js +0 -22
- package/dist/utils/triangle.js.map +0 -1
package/README.md
CHANGED
|
@@ -84,7 +84,7 @@ Two ways — pick one:
|
|
|
84
84
|
|
|
85
85
|
```bash
|
|
86
86
|
mmagent serve # 127.0.0.1:7337 by default
|
|
87
|
-
curl -s http://localhost:7337/health # → {"ok":true,"version":"3.10.
|
|
87
|
+
curl -s http://localhost:7337/health # → {"ok":true,"version":"3.10.3",...}
|
|
88
88
|
```
|
|
89
89
|
|
|
90
90
|
For an always-on background install (survives reboots): [launchd / systemd templates](./scripts/README.md).
|
|
@@ -287,7 +287,7 @@ Full design rationale: [DIRECTION.md](https://github.com/zhixuan312/multi-model-
|
|
|
287
287
|
|
|
288
288
|
## What's new
|
|
289
289
|
|
|
290
|
-
Latest: **3.10.
|
|
290
|
+
Latest: **3.10.3** — critical telemetry hotfix + UX polish. **3.10.2 silently dropped every emitted event** because the new emit-time R4 validation tripped on a 1ms clock-skew between `runResult.durationMs` and per-stage `durationMs`. Fixed by enforcing R4 by construction in the event builder. Also: skill manifest backfill on upgrade (resolves the "mma-investigate not registered" bug for users who upgraded across v3.4.0); live-elapsed polling headlines (no more stale repeated elapsed between heartbeats); tiered server stdout (default-quiet, `--verbose` for full firehose with throttled heartbeats). Full history: [CHANGELOG](https://github.com/zhixuan312/multi-model-agent/blob/master/CHANGELOG.md).
|
|
291
291
|
|
|
292
292
|
## Full documentation
|
|
293
293
|
|
package/dist/cli/serve.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MultiModelConfig } from '@zhixuan92/multi-model-agent-core';
|
|
2
|
+
export declare function maybeAutoUpdateSkills(config: MultiModelConfig, stderr: (s: string) => boolean): Promise<void>;
|
|
2
3
|
/** A running server handle returned by startServe(). */
|
|
3
4
|
export interface ServeHandle {
|
|
4
5
|
/** The port the server is listening on (useful when port=0 for ephemeral). */
|
package/dist/cli/serve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAyB1E,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,GAC7B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AA6BD,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAYD;;;;;;;;;;;;GAYG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,IAAI,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAkC,GACzD,OAAO,CAAC,WAAW,CAAC,CAkKtB"}
|
package/dist/cli/serve.js
CHANGED
|
@@ -28,6 +28,8 @@ import { Queue } from '../telemetry/queue.js';
|
|
|
28
28
|
import { runUpdateSkills } from './update-skills.js';
|
|
29
29
|
import { listEntries, FutureManifestError } from '../install/manifest.js';
|
|
30
30
|
import { readSkillContent } from './install-skill.js';
|
|
31
|
+
import { findMissingSkills } from '../install/missing-skills.js';
|
|
32
|
+
import { SUPPORTED_SKILLS } from '../install/discover.js';
|
|
31
33
|
import matter from 'gray-matter';
|
|
32
34
|
function isSkillBehind(entryName, entrySkillVersion) {
|
|
33
35
|
const src = readSkillContent(entryName);
|
|
@@ -42,7 +44,7 @@ function isSkillBehind(entryName, entrySkillVersion) {
|
|
|
42
44
|
return false;
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
|
-
async function maybeAutoUpdateSkills(config, stderr) {
|
|
47
|
+
export async function maybeAutoUpdateSkills(config, stderr) {
|
|
46
48
|
let entries;
|
|
47
49
|
try {
|
|
48
50
|
entries = listEntries();
|
|
@@ -55,11 +57,18 @@ async function maybeAutoUpdateSkills(config, stderr) {
|
|
|
55
57
|
return; // best-effort — never let manifest IO issues block serve
|
|
56
58
|
}
|
|
57
59
|
const behind = entries.filter((e) => isSkillBehind(e.name, e.skillVersion));
|
|
58
|
-
|
|
60
|
+
const missing = findMissingSkills(entries, SUPPORTED_SKILLS);
|
|
61
|
+
if (behind.length === 0 && missing.length === 0)
|
|
59
62
|
return;
|
|
60
63
|
if (!config.server.autoUpdateSkills) {
|
|
61
|
-
|
|
62
|
-
`
|
|
64
|
+
if (behind.length > 0) {
|
|
65
|
+
stderr(`[mmagent] ${behind.length} skill(s) out of date: ${behind.map((e) => e.name).join(', ')}. ` +
|
|
66
|
+
`Run 'mmagent update-skills' to refresh (or set server.autoUpdateSkills=true in config).\n`);
|
|
67
|
+
}
|
|
68
|
+
if (missing.length > 0) {
|
|
69
|
+
stderr(`[mmagent] ${missing.length} new skill(s) available: ${missing.map((m) => m.name).join(', ')}. ` +
|
|
70
|
+
`Run 'mmagent install-skill --all' to install.\n`);
|
|
71
|
+
}
|
|
63
72
|
return;
|
|
64
73
|
}
|
|
65
74
|
const deadlineMs = 5000;
|
|
@@ -68,7 +77,10 @@ async function maybeAutoUpdateSkills(config, stderr) {
|
|
|
68
77
|
runUpdateSkills({ silent: true, bestEffort: true }),
|
|
69
78
|
new Promise((resolve) => setTimeout(() => resolve(), deadlineMs)),
|
|
70
79
|
]);
|
|
71
|
-
|
|
80
|
+
if (behind.length > 0)
|
|
81
|
+
process.stdout.write(`[mmagent] auto-updated ${behind.length} skill(s)\n`);
|
|
82
|
+
if (missing.length > 0)
|
|
83
|
+
process.stdout.write(`[mmagent] auto-installed ${missing.length} new skill(s): ${missing.map((m) => m.name).join(', ')}\n`);
|
|
72
84
|
}
|
|
73
85
|
catch {
|
|
74
86
|
// bestEffort swallows inside; extra safety here.
|
package/dist/cli/serve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,SAAS,aAAa,CAAC,SAAiB,EAAE,iBAAyB;IACjE,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,CAAC,oDAAoD;IACpF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,iBAAiB,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,SAAS,aAAa,CAAC,SAAiB,EAAE,iBAAyB;IACjE,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,CAAC,oDAAoD;IACpF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,iBAAiB,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAwB,EACxB,MAA8B;IAE9B,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;YACvC,MAAM,CAAC,sBAAsB,GAAG,CAAC,OAAO,gCAAgC,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,OAAO,CAAC,yDAAyD;IACnE,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,gBAAgD,CAAC,CAAC;IAC7F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAExD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CACJ,aAAa,MAAM,CAAC,MAAM,0BAA0B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBAC5F,2FAA2F,CAC5F,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CACJ,aAAa,OAAO,CAAC,MAAM,4BAA4B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBAChG,iDAAiD,CAClD,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YACnD,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;SACxE,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,MAAM,CAAC,MAAM,aAAa,CAAC,CAAC;QAClG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,CAAC,MAAM,kBAAkB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtJ,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAyB,CAAC;QACjF,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,CAAS,EAAE,CAAS;IACzC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,OAAO,CAAC,CAAC,CAAC,CAAC,4CAA4C;IACzD,CAAC;IACD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,GAAG,IAAI,CAAC;IACtC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,GAAG,IAAI,CAAC;IACtC,OAAO,IAAI,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB;IACnC,OAAO,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,UAAU,CAAC;AACzE,CAAC;AAcD;;;GAGG;AACH,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB,uEAAuE;AACvE,IAAI,SAAmC,CAAC;AACxC,IAAI,QAAkC,CAAC;AAEvC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAwB,EACxB,OAAgC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAE1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzD,oFAAoF;IACpF,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5C,gEAAgE;IAChE,wEAAwE;IACxE,oEAAoE;IACpE,sEAAsE;IACtE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAA2C,CAAC,CAAC;IAE/E,yEAAyE;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,wEAAwE;IACxE,8DAA8D;IAC9D,oDAAoD;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACvD,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAA4B,CAAC;QACnE,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAI,SAAiB,CAAC,oBAA0C,CAAC;YACrF,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;gBACzB,SAAiB,CAAC,oBAAoB,GAAG,CAAC,CAAC;gBAC5C,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC1B,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnF,MAAM,CAAC,sEAAsE,CAAC,CAAC;gBAC/E,MAAM,CAAC,0DAA0D,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;IAE7D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC3D,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,CAAC;QACH,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;IAED,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;QACnC,MAAM,OAAO,GACX,WAAW,KAAK,IAAI;YAClB,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC;gBAC9C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,WAAW,CAAC;QACpB,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,cAAc,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,sDAAsD,eAAe,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzI,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,4EAA4E;IAC5E,2EAA2E;IAC3E,4EAA4E;IAC5E,wEAAwE;IACxE,qEAAqE;IACrE,gEAAgE;IAChE,MAAM,0BAA0B,GAAG,4DAA4D,CAAC;IAChG,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAC3D,MAAM,iBAAiB,GAAG,WAAW,KAAK,SAAS;QACjD,CAAC,CAAC,0BAA0B;QAC5B,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,OAAO,GAAmB,IAAI,CAAC;IACnC,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,GAAG,IAAI,OAAO,CAAC;YACpB,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC;YACzB,GAAG,EAAE,OAAO;YACZ,QAAQ,EAAE,iBAAiB;SAC5B,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,MAAM,eAAe,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAE,CAAC,CAAC;QAClD,MAAM,CACJ,4DAA4D,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAC3F,UAAU;YACV,cAAc,SAAS,iBAAiB;YACxC,sCAAsC;YACtC,2BAA2B;YAC3B,cAAc;YACd,yBAAyB,SAAS,KAAK,CACxC,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,GAAyB,EAAE,EAAE;QAClD,IAAI,YAAY;YAAE,OAAO;QACzB,YAAY,GAAG,IAAI,CAAC;QACpB,MAAM,CAAC,sBAAsB,GAAG,oCAAoC,CAAC,CAAC;QACtE,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrE,cAAc;aACX,KAAK,CAAC,GAAG,EAAE,GAA8B,CAAC,CAAC;aAC3C,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;aAC1B,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACnB,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,8BAA8B,GAAG,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,6EAA6E;IAC7E,2EAA2E;IAC3E,0EAA0E;IAC1E,SAAS,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC3C,QAAQ,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEjC,2EAA2E;IAC3E,kDAAkD;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAEzD,qEAAqE;IACrE,6EAA6E;IAC7E,0EAA0E;IAC1E,mFAAmF;IACnF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACzE,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,+BAA+B,OAAO,WAAW,IAAI,IAAI,OAAO,CAAC,IAAI,UAAU,OAAO,CAAC,GAAG,YAAY,EAAE,WAAW,MAAM,IAAI,CAC9H,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;QACzE,kEAAkE;IACpE,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IAEzE,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,mEAAmE;YACnE,4CAA4C;YAC5C,IAAI,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACjD,IAAI,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC9C,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAqB,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-skills.d.ts","sourceRoot":"","sources":["../../src/cli/update-skills.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-skills.d.ts","sourceRoot":"","sources":["../../src/cli/update-skills.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CACjC;AAsBD,wBAAsB,eAAe,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqHlF"}
|
|
@@ -21,6 +21,8 @@ import * as fs from 'node:fs';
|
|
|
21
21
|
import matter from 'gray-matter';
|
|
22
22
|
import { FutureManifestError, listEntries, removeEntry, appendEntry, } from '../install/manifest.js';
|
|
23
23
|
import { readSkillContent, writeSkillToClient, removeSkillFromClient, getSkillsRoot, } from './install-skill.js';
|
|
24
|
+
import { findMissingSkills } from '../install/missing-skills.js';
|
|
25
|
+
import { SUPPORTED_SKILLS } from '../install/discover.js';
|
|
24
26
|
function versionFromSkillContent(content) {
|
|
25
27
|
try {
|
|
26
28
|
const parsed = matter(content);
|
|
@@ -106,6 +108,35 @@ export async function runUpdateSkills(deps = {}) {
|
|
|
106
108
|
}
|
|
107
109
|
summary.updated.push(entry.name);
|
|
108
110
|
}
|
|
111
|
+
// Backfill: install skills that are in SUPPORTED_SKILLS but missing from the
|
|
112
|
+
// manifest (e.g. mma-investigate added in a later release). Targets are the
|
|
113
|
+
// union of all client targets already opted into.
|
|
114
|
+
const postEntries = listEntries(homeDir);
|
|
115
|
+
const missing = findMissingSkills(postEntries, SUPPORTED_SKILLS);
|
|
116
|
+
for (const m of missing) {
|
|
117
|
+
const content = readSkillContent(m.name, skillsRoot);
|
|
118
|
+
if (content === null)
|
|
119
|
+
continue;
|
|
120
|
+
const skillVersion = versionFromSkillContent(content);
|
|
121
|
+
if (!silent)
|
|
122
|
+
logInfo(`[mmagent] installing missing skill: ${m.name} → ${m.targets.join(', ')}\n`);
|
|
123
|
+
for (const target of m.targets) {
|
|
124
|
+
try {
|
|
125
|
+
writeSkillToClient(m.name, content, target, homeDir, skillsRoot, skillVersion);
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
summary.errors.push({
|
|
129
|
+
skill: m.name,
|
|
130
|
+
target,
|
|
131
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (!dryRun) {
|
|
136
|
+
appendEntry(m.name, skillVersion, m.targets, homeDir);
|
|
137
|
+
}
|
|
138
|
+
summary.updated.push(m.name);
|
|
139
|
+
}
|
|
109
140
|
if (json) {
|
|
110
141
|
stdout(JSON.stringify(summary) + '\n');
|
|
111
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-skills.js","sourceRoot":"","sources":["../../src/cli/update-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,WAAW,GAGZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,GACd,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"update-skills.js","sourceRoot":"","sources":["../../src/cli/update-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-context.d.ts","sourceRoot":"","sources":["../../src/http/execution-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"execution-context.d.ts","sourceRoot":"","sources":["../../src/http/execution-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,mCAAmC,CAAC;AAE3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,gBAAgB,CAmClB"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// packages/server/src/http/execution-context.ts
|
|
2
|
-
import { composeRunningHeadline } from '@zhixuan92/multi-model-agent-core';
|
|
3
1
|
import { buildExecutionContext as buildCoreExecutionContext } from '@zhixuan92/multi-model-agent-core/executors/execution-context';
|
|
4
2
|
import { getRecorder } from '../telemetry/recorder.js';
|
|
5
3
|
/**
|
|
@@ -17,19 +15,9 @@ export function buildExecutionContext(deps, pc, batchId, route) {
|
|
|
17
15
|
return;
|
|
18
16
|
entry.lastHeartbeatAt = Date.now();
|
|
19
17
|
entry.running = [{ worker: tick.provider, turn: Math.max(1, tick.stageIndex) }];
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
: composeRunningHeadline({
|
|
24
|
-
tasksTotal,
|
|
25
|
-
tasksStarted: entry.tasksStarted ?? 0,
|
|
26
|
-
tasksCompleted: entry.tasksCompleted ?? 0,
|
|
27
|
-
startedAt: entry.startedAt,
|
|
28
|
-
nowMs: Date.now(),
|
|
29
|
-
lastHeartbeatAt: entry.lastHeartbeatAt,
|
|
30
|
-
running: entry.running,
|
|
31
|
-
});
|
|
32
|
-
deps.batchRegistry.updateRunningHeadline(effectiveBatchId, headline);
|
|
18
|
+
if (tick.snapshot) {
|
|
19
|
+
deps.batchRegistry.updateRunningHeadlineSnapshot(effectiveBatchId, tick.snapshot);
|
|
20
|
+
}
|
|
33
21
|
};
|
|
34
22
|
let recorder;
|
|
35
23
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-context.js","sourceRoot":"","sources":["../../src/http/execution-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"execution-context.js","sourceRoot":"","sources":["../../src/http/execution-context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,IAAI,yBAAyB,EAAE,MAAM,+DAA+D,CAAC;AAGnI,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAiB,EACjB,EAAkB,EAClB,OAAe,EACf,KAAc;IAEd,MAAM,eAAe,GAAG,CAAC,IAAuB,EAAE,EAAE;QAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACnC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpF,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,QAAkD,CAAC;IACvD,IAAI,CAAC;QACH,iFAAiF;QACjF,gFAAgF;QAChF,+EAA+E;QAC/E,iFAAiF;QACjF,QAAQ,GAAG,WAAW,EAA6C,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;IAED,OAAO,yBAAyB,CAAC;QAC/B,cAAc,EAAE,EAAE;QAClB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,iBAAiB,EAAE,EAAE,CAAC,aAAa;QACnC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAC7C,OAAO;QACP,eAAe;QACf,QAAQ;QACR,KAAK;KACN,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/control/batch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAiB,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/control/batch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAiB,KAAK,aAAa,EAAiB,MAAM,mCAAmC,CAAC;AAErG,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,UAAU,CAkGpE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { sendError, sendJson } from '../../errors.js';
|
|
2
|
-
import { notApplicable } from '@zhixuan92/multi-model-agent-core';
|
|
2
|
+
import { notApplicable, formatElapsed } from '@zhixuan92/multi-model-agent-core';
|
|
3
3
|
/**
|
|
4
4
|
* GET /batch/:batchId — poll a batch.
|
|
5
5
|
*
|
|
@@ -25,8 +25,13 @@ export function buildBatchHandler(deps) {
|
|
|
25
25
|
}
|
|
26
26
|
// Pending → 202 text/plain progress line
|
|
27
27
|
if (entry.state === 'pending') {
|
|
28
|
+
const snap = entry.runningHeadlineSnapshot;
|
|
29
|
+
const elapsedMs = Date.now() - snap.dispatchedAt;
|
|
30
|
+
const headline = snap.prefix
|
|
31
|
+
? `${snap.prefix}${formatElapsed(elapsedMs)}${snap.statsClause}`
|
|
32
|
+
: snap.fallback;
|
|
28
33
|
res.writeHead(202, { 'content-type': 'text/plain; charset=utf-8' });
|
|
29
|
-
res.end(
|
|
34
|
+
res.end(headline);
|
|
30
35
|
return;
|
|
31
36
|
}
|
|
32
37
|
// Parse optional taskIndex (only honored on complete state with array results)
|
|
@@ -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;AAEtD,OAAO,EAAE,aAAa,EAAsB,MAAM,mCAAmC,CAAC;
|
|
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;AAEtD,OAAO,EAAE,aAAa,EAAsB,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAMrG;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAsB;IACtD,OAAO,KAAK,EACV,IAAqB,EACrB,GAAmB,EACnB,MAA8B,EAC9B,GAAG,EACH,EAAE;QACF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,OAAO,YAAY,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,yCAAyC;QACzC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,uBAAuB,CAAC;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM;gBAC1B,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;gBAChE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAClB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,2BAA2B,EAAE,CAAC,CAAC;YACpE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClB,OAAO;QACT,CAAC;QAED,+EAA+E;QAC/E,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChC,SAAS,CACP,GAAG,EACH,GAAG,EACH,oBAAoB,EACpB,kDAAkD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CACjF,CAAC;gBACF,OAAO;YACT,CAAC;YACD,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,KAAK,wBAAwB,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC9C,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;gBACjB,QAAQ,EAAE,2BAA2B,KAAK,CAAC,sBAAsB,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;gBAChF,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;gBAC9B,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC;gBACnC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC;gBAClC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC;gBACvC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;gBAC5B,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,IAAI,aAAa,CAAC,uDAAuD,CAAC;aAC/H,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,MAA6C,CAAC;QAEvE,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;YACzE,MAAM,MAAM,GAAG,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAAC;YAC1G,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;gBACjB,QAAQ,EACN,KAAK,CAAC,KAAK,KAAK,SAAS;oBACvB,CAAC,CAAC,eAAe;oBACjB,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ;wBACxB,CAAC,CAAC,cAAc;wBAChB,CAAC,CAAE,UAAU,EAAE,CAAC,UAAU,CAAwB,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE;gBAClF,OAAO,EAAG,UAAU,EAAE,CAAC,SAAS,CAAa,IAAI,aAAa,CAAC,MAAM,CAAC;gBACtE,YAAY,EAAG,UAAU,EAAE,CAAC,cAAc,CAAa,IAAI,aAAa,CAAC,MAAM,CAAC;gBAChF,WAAW,EAAG,UAAU,EAAE,CAAC,aAAa,CAAa,IAAI,aAAa,CAAC,MAAM,CAAC;gBAC9E,gBAAgB,EAAG,UAAU,EAAE,CAAC,kBAAkB,CAAa,IAAI,aAAa,CAAC,MAAM,CAAC;gBACxF,KAAK,EAAE,UAAU;gBACjB,sBAAsB,EACnB,UAAU,EAAE,CAAC,wBAAwB,CAAa,IAAI,aAAa,CAAC,kCAAkC,CAAC;aAC3G,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,gFAAgF;QAChF,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC3D,SAAS,CACP,GAAG,EACH,GAAG,EACH,oBAAoB,EACpB,aAAa,SAAS,+BAA+B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAC9G,CAAC;gBACF,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ManifestEntry, Client } from './manifest.js';
|
|
2
|
+
export interface MissingSkill {
|
|
3
|
+
name: string;
|
|
4
|
+
targets: Client[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Skills present in `supportedSkills` but not in `manifestEntries`. The
|
|
8
|
+
* `targets` for each missing skill is the union of all targets currently
|
|
9
|
+
* in the manifest, preserving first-seen order. Returns [] when the
|
|
10
|
+
* manifest is empty (the user never opted in to any mma skills).
|
|
11
|
+
*/
|
|
12
|
+
export declare function findMissingSkills(manifestEntries: ManifestEntry[], supportedSkills: readonly string[]): MissingSkill[];
|
|
13
|
+
//# sourceMappingURL=missing-skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"missing-skills.d.ts","sourceRoot":"","sources":["../../src/install/missing-skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,aAAa,EAAE,EAChC,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC,YAAY,EAAE,CAUhB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills present in `supportedSkills` but not in `manifestEntries`. The
|
|
3
|
+
* `targets` for each missing skill is the union of all targets currently
|
|
4
|
+
* in the manifest, preserving first-seen order. Returns [] when the
|
|
5
|
+
* manifest is empty (the user never opted in to any mma skills).
|
|
6
|
+
*/
|
|
7
|
+
export function findMissingSkills(manifestEntries, supportedSkills) {
|
|
8
|
+
if (manifestEntries.length === 0)
|
|
9
|
+
return [];
|
|
10
|
+
const targets = unionTargets(manifestEntries);
|
|
11
|
+
// If every entry has empty targets (corrupt or never-completed install),
|
|
12
|
+
// treat as no opted-in clients — same as an empty manifest.
|
|
13
|
+
if (targets.length === 0)
|
|
14
|
+
return [];
|
|
15
|
+
const installedNames = new Set(manifestEntries.map((e) => e.name));
|
|
16
|
+
return supportedSkills
|
|
17
|
+
.filter((name) => !installedNames.has(name))
|
|
18
|
+
.map((name) => ({ name, targets: [...targets] })); // defensive copy per skill
|
|
19
|
+
}
|
|
20
|
+
function unionTargets(entries) {
|
|
21
|
+
const seen = new Set();
|
|
22
|
+
const out = [];
|
|
23
|
+
for (const e of entries) {
|
|
24
|
+
for (const t of e.targets) {
|
|
25
|
+
if (!seen.has(t)) {
|
|
26
|
+
seen.add(t);
|
|
27
|
+
out.push(t);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=missing-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"missing-skills.js","sourceRoot":"","sources":["../../src/install/missing-skills.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,eAAgC,EAChC,eAAkC;IAElC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAC9C,yEAAyE;IACzE,4DAA4D;IAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,OAAO,eAAe;SACnB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,2BAA2B;AACnF,CAAC;AAED,SAAS,YAAY,CAAC,OAAwB;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACZ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -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: 3.10.
|
|
11
|
+
version: 3.10.3
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
# mma-audit
|
|
@@ -12,7 +12,7 @@ when_to_use: >-
|
|
|
12
12
|
`proposedInterpretation` is a hard gate — the batch is paused, not
|
|
13
13
|
informational. The batch will not complete until the caller responds. Treating
|
|
14
14
|
it as advisory is the clarification-as-info anti-pattern (AP5).
|
|
15
|
-
version: 3.10.
|
|
15
|
+
version: 3.10.3
|
|
16
16
|
---
|
|
17
17
|
|
|
18
18
|
# mma-clarifications
|
|
@@ -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: 3.10.
|
|
15
|
+
version: 3.10.3
|
|
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: 3.10.
|
|
13
|
+
version: 3.10.3
|
|
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: 3.10.
|
|
14
|
+
version: 3.10.3
|
|
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: 3.10.
|
|
13
|
+
version: 3.10.3
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# mma-execute-plan
|
|
@@ -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: 3.10.
|
|
15
|
+
version: 3.10.3
|
|
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: 3.10.
|
|
13
|
+
version: 3.10.3
|
|
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: 3.10.
|
|
13
|
+
version: 3.10.3
|
|
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: 3.10.
|
|
13
|
+
version: 3.10.3
|
|
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: 3.10.
|
|
14
|
+
version: 3.10.3
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
# multi-model-agent (router)
|
|
@@ -6,7 +6,7 @@ import { deleteInstallId } from './install-id.js';
|
|
|
6
6
|
import { buildInstallMeta } from './install-meta.js';
|
|
7
7
|
import { Queue } from './queue.js';
|
|
8
8
|
import { readGeneration, bumpGeneration } from './generation.js';
|
|
9
|
-
import { SCHEMA_VERSION } from '@zhixuan92/multi-model-agent-core/telemetry/types';
|
|
9
|
+
import { SCHEMA_VERSION, TaskCompletedEventSchema, ValidatedTaskCompletedEventSchema } from '@zhixuan92/multi-model-agent-core/telemetry/types';
|
|
10
10
|
import { buildTaskCompletedEvent, } from '@zhixuan92/multi-model-agent-core/telemetry/event-builder';
|
|
11
11
|
let _recorder = null;
|
|
12
12
|
export function getRecorder() {
|
|
@@ -66,7 +66,30 @@ function _buildRecorder(opts) {
|
|
|
66
66
|
const d = decide(homeDir);
|
|
67
67
|
if (!d.enabled)
|
|
68
68
|
return;
|
|
69
|
-
|
|
69
|
+
const event = buildTaskCompletedEvent(ctx);
|
|
70
|
+
// Validate against the BASE schema (caps, types, enums) — these are
|
|
71
|
+
// non-negotiable wire-format constraints. Drop only on those failures.
|
|
72
|
+
// SuperRefine cross-field rules (R1–R11) are checked separately and
|
|
73
|
+
// logged as warnings, but do NOT drop the event: backend uses
|
|
74
|
+
// passthrough so degenerate rows can be filtered at query time, and
|
|
75
|
+
// 3.10.2's drop-on-superRefine behaviour silently lost real telemetry
|
|
76
|
+
// on 1ms clock-skew (R4) and other measurement-precision edge cases.
|
|
77
|
+
const baseParsed = TaskCompletedEventSchema.safeParse(event);
|
|
78
|
+
if (!baseParsed.success) {
|
|
79
|
+
console.warn('mma-telemetry: dropping schema-invalid event', {
|
|
80
|
+
eventId: event.eventId,
|
|
81
|
+
issues: baseParsed.error.issues.map((e) => ({ path: e.path.join('.'), message: e.message })),
|
|
82
|
+
});
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const refined = ValidatedTaskCompletedEventSchema.safeParse(baseParsed.data);
|
|
86
|
+
if (!refined.success) {
|
|
87
|
+
console.warn('mma-telemetry: cross-field validation warning (event still emitted)', {
|
|
88
|
+
eventId: event.eventId,
|
|
89
|
+
issues: refined.error.issues.map((e) => ({ path: e.path.join('.'), message: e.message })),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
enqueue(baseParsed.data);
|
|
70
93
|
}
|
|
71
94
|
catch {
|
|
72
95
|
dropped++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/telemetry/recorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/telemetry/recorder.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhixuan92/multi-model-agent",
|
|
3
|
-
"version": "3.10.
|
|
3
|
+
"version": "3.10.3",
|
|
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.",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@asteasolutions/zod-to-openapi": "^8.5.0",
|
|
55
|
-
"@zhixuan92/multi-model-agent-core": "^3.10.
|
|
55
|
+
"@zhixuan92/multi-model-agent-core": "^3.10.3",
|
|
56
56
|
"gray-matter": "^4.0.3",
|
|
57
57
|
"minimist": "^1.2.8",
|
|
58
58
|
"proper-lockfile": "^4.1.2",
|
package/dist/circle.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Calculates the area of a circle given its radius.
|
|
3
|
-
*
|
|
4
|
-
* @param radius - The radius of the circle (must be positive).
|
|
5
|
-
* @returns The area of the circle (π * radius²).
|
|
6
|
-
* @throws {RangeError} If `radius` is not a positive number.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```ts
|
|
10
|
-
* circleArea(1); // ≈ 3.14159
|
|
11
|
-
* circleArea(2.5); // ≈ 19.63495
|
|
12
|
-
* ```
|
|
13
|
-
*/
|
|
14
|
-
export declare function circleArea(radius: number): number;
|
|
15
|
-
//# sourceMappingURL=circle.d.ts.map
|
package/dist/circle.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"circle.d.ts","sourceRoot":"","sources":["../src/circle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMjD"}
|
package/dist/circle.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Calculates the area of a circle given its radius.
|
|
3
|
-
*
|
|
4
|
-
* @param radius - The radius of the circle (must be positive).
|
|
5
|
-
* @returns The area of the circle (π * radius²).
|
|
6
|
-
* @throws {RangeError} If `radius` is not a positive number.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```ts
|
|
10
|
-
* circleArea(1); // ≈ 3.14159
|
|
11
|
-
* circleArea(2.5); // ≈ 19.63495
|
|
12
|
-
* ```
|
|
13
|
-
*/
|
|
14
|
-
export function circleArea(radius) {
|
|
15
|
-
if (radius <= 0) {
|
|
16
|
-
throw new RangeError(`radius must be a positive number, got ${radius}`);
|
|
17
|
-
}
|
|
18
|
-
return Math.PI * radius * radius;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=circle.js.map
|
package/dist/circle.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"circle.js","sourceRoot":"","sources":["../src/circle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,UAAU,CAAC,yCAAyC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;AACnC,CAAC"}
|
package/dist/utils/triangle.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Calculates the area of a triangle given its base and height.
|
|
3
|
-
*
|
|
4
|
-
* @param base - The length of the triangle's base. Must be a positive number.
|
|
5
|
-
* @param height - The height of the triangle. Must be a positive number.
|
|
6
|
-
* @returns The area of the triangle (0.5 × base × height).
|
|
7
|
-
* @throws {TypeError} If either argument is not a finite number.
|
|
8
|
-
* @throws {RangeError} If either argument is not positive (> 0).
|
|
9
|
-
*/
|
|
10
|
-
export declare function triangleArea(base: number, height: number): number;
|
|
11
|
-
//# sourceMappingURL=triangle.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"triangle.d.ts","sourceRoot":"","sources":["../../src/utils/triangle.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAWjE"}
|
package/dist/utils/triangle.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Calculates the area of a triangle given its base and height.
|
|
3
|
-
*
|
|
4
|
-
* @param base - The length of the triangle's base. Must be a positive number.
|
|
5
|
-
* @param height - The height of the triangle. Must be a positive number.
|
|
6
|
-
* @returns The area of the triangle (0.5 × base × height).
|
|
7
|
-
* @throws {TypeError} If either argument is not a finite number.
|
|
8
|
-
* @throws {RangeError} If either argument is not positive (> 0).
|
|
9
|
-
*/
|
|
10
|
-
export function triangleArea(base, height) {
|
|
11
|
-
if (!Number.isFinite(base) || !Number.isFinite(height)) {
|
|
12
|
-
throw new TypeError('base and height must be finite numbers');
|
|
13
|
-
}
|
|
14
|
-
if (base <= 0) {
|
|
15
|
-
throw new RangeError(`base must be positive, received ${base}`);
|
|
16
|
-
}
|
|
17
|
-
if (height <= 0) {
|
|
18
|
-
throw new RangeError(`height must be positive, received ${height}`);
|
|
19
|
-
}
|
|
20
|
-
return (base * height) / 2;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=triangle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"triangle.js","sourceRoot":"","sources":["../../src/utils/triangle.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,MAAc;IACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,UAAU,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,UAAU,CAAC,qCAAqC,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC"}
|