@zhixuan92/multi-model-agent 3.11.1 → 3.12.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 +3 -1
- package/dist/http/handlers/tools/explore.d.ts +4 -0
- package/dist/http/handlers/tools/explore.d.ts.map +1 -0
- package/dist/http/handlers/tools/explore.js +79 -0
- package/dist/http/handlers/tools/explore.js.map +1 -0
- package/dist/http/middleware/caller-identity.js +1 -1
- package/dist/http/middleware/caller-identity.js.map +1 -1
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js +5 -2
- package/dist/http/server.js.map +1 -1
- package/dist/install/discover.d.ts +1 -1
- package/dist/install/discover.d.ts.map +1 -1
- package/dist/install/discover.js +1 -0
- package/dist/install/discover.js.map +1 -1
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +6 -0
- package/dist/openapi.js.map +1 -1
- 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-explore/SKILL.md +199 -0
- package/dist/skills/mma-investigate/SKILL.md +2 -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 +10 -8
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -111,6 +111,7 @@ Skills are the surface your AI client sees. `mmagent install-skill` writes them
|
|
|
111
111
|
| `mma-delegate` | `POST /delegate` | Ad-hoc implementation or research tasks **without** a plan file — run them in parallel on cheap workers. |
|
|
112
112
|
| `mma-execute-plan` | `POST /execute-plan` | A plan / spec markdown exists on disk with numbered task headings; implement one or more tasks from it. |
|
|
113
113
|
| `mma-investigate` | `POST /investigate` | Answer a question about *this* codebase ("how does X work", "where is Y called") without burning main-context tokens on grep + reads. |
|
|
114
|
+
| `mma-explore` | `POST /explore` | Divergent ideation — 3-5 distinct threads from parallel codebase + web research, before `superpowers:brainstorming`. Not for "where is X" questions (use `mma-investigate`). |
|
|
114
115
|
| `mma-debug` | `POST /debug` | A test fails, a build breaks, or behavior is unexpected — delegate the reproduce/trace, keep the hypothesis on the main agent. |
|
|
115
116
|
| `mma-review` | `POST /review` | Source-code review (pre-merge, post-implementation, security-focused). One worker per file, in parallel. |
|
|
116
117
|
| `mma-audit` | `POST /audit` | Audit a prose document — spec, config, PR description — for correctness, security, or style. |
|
|
@@ -228,7 +229,7 @@ Generated on first `mmagent serve`. Retrieve with `mmagent print-token`, or set
|
|
|
228
229
|
|
|
229
230
|
## REST API
|
|
230
231
|
|
|
231
|
-
|
|
232
|
+
16 endpoints. All tool endpoints are async: they return `202 { batchId, statusUrl }` immediately and the executor runs in the background. Poll `GET /batch/:id` for the terminal envelope.
|
|
232
233
|
|
|
233
234
|
| Endpoint | Purpose |
|
|
234
235
|
|---|---|
|
|
@@ -240,6 +241,7 @@ Generated on first `mmagent serve`. Retrieve with `mmagent print-token`, or set
|
|
|
240
241
|
| `POST /execute-plan?cwd=<abs>` | Implement from a plan file |
|
|
241
242
|
| `POST /retry?cwd=<abs>` | Re-run specific tasks from a previous batch |
|
|
242
243
|
| `POST /investigate?cwd=<abs>` | Codebase Q&A — structured answer with file:line citations + confidence |
|
|
244
|
+
| `POST /explore?cwd=<abs>` | Divergent ideation — 3-5 distinct threads from internal codebase + external web research |
|
|
243
245
|
| `GET /batch/:id[?taskIndex=N]` | Poll a batch: `202 text/plain` (pending) or `200 application/json` (terminal). `?taskIndex=N` slices on complete state |
|
|
244
246
|
| `POST /context-blocks?cwd=<abs>` | Register a reusable context block |
|
|
245
247
|
| `DELETE /context-blocks/:id?cwd=<abs>` | Delete a context block |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/tools/explore.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,CAwEjE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import { realpathSync } from 'node:fs';
|
|
3
|
+
import * as explore from '@zhixuan92/multi-model-agent-core/tool-schemas/explore';
|
|
4
|
+
import { executeExplore } from '@zhixuan92/multi-model-agent-core/executors/explore';
|
|
5
|
+
import { sendError, sendJson } from '../../errors.js';
|
|
6
|
+
import { asyncDispatch } from '../../async-dispatch.js';
|
|
7
|
+
import { emitRequestReceived } from '../../request-observability.js';
|
|
8
|
+
import { canonicalizeFilePaths } from '../../canonicalize-file-paths.js';
|
|
9
|
+
import { assertCrossTierConfigured } from '../../cross-tier-guard.js';
|
|
10
|
+
import { resolveReadOnlyReviewFlag } from '@zhixuan92/multi-model-agent-core/config/read-only-review-flag';
|
|
11
|
+
export function buildExploreHandler(deps) {
|
|
12
|
+
return async (req, res, _params, ctx) => {
|
|
13
|
+
const parsed = explore.inputSchema.safeParse(ctx.body);
|
|
14
|
+
if (!parsed.success) {
|
|
15
|
+
sendError(res, 400, 'invalid_request', 'Request body validation failed', {
|
|
16
|
+
fieldErrors: parsed.error.flatten(),
|
|
17
|
+
});
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const input = parsed.data;
|
|
21
|
+
const flag = resolveReadOnlyReviewFlag();
|
|
22
|
+
if (flag.isEnabledFor('explore') && !assertCrossTierConfigured(deps.config, res))
|
|
23
|
+
return;
|
|
24
|
+
const cwd = ctx.cwd;
|
|
25
|
+
const reserveResult = deps.projectRegistry.reserveProject(cwd);
|
|
26
|
+
if (!reserveResult.ok) {
|
|
27
|
+
sendError(res, 503, reserveResult.error, reserveResult.message);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const pc = reserveResult.projectContext;
|
|
31
|
+
pc.lastActivityAt = Date.now();
|
|
32
|
+
deps.projectRegistry.cancelReservation(cwd);
|
|
33
|
+
const blockIds = input.contextBlockIds ?? [];
|
|
34
|
+
const resolvedContextBlocks = [];
|
|
35
|
+
const missingBlocks = [];
|
|
36
|
+
for (const id of blockIds) {
|
|
37
|
+
const content = pc.contextBlocks.get(id);
|
|
38
|
+
if (content === undefined) {
|
|
39
|
+
missingBlocks.push(id);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
resolvedContextBlocks.push({ id, content });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (missingBlocks.length > 0) {
|
|
46
|
+
sendError(res, 400, 'context_block_not_found', 'one or more context block IDs do not exist', { missingBlocks });
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const rawPaths = input.anchors ?? [];
|
|
50
|
+
const canonResult = canonicalizeFilePaths(rawPaths, cwd);
|
|
51
|
+
if (!Array.isArray(canonResult)) {
|
|
52
|
+
sendError(res, 400, 'invalid_request', 'one or more anchors escape cwd', { fieldErrors: canonResult.fieldErrors });
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const canonicalizedAnchors = canonResult;
|
|
56
|
+
const realCwd = realpathSync(cwd);
|
|
57
|
+
const relativeAnchorsForPrompt = canonicalizedAnchors.map(p => {
|
|
58
|
+
const rel = path.relative(realCwd, p);
|
|
59
|
+
return rel === '' ? '.' : rel;
|
|
60
|
+
});
|
|
61
|
+
const { batchId, statusUrl } = asyncDispatch({
|
|
62
|
+
tool: 'explore',
|
|
63
|
+
projectCwd: cwd,
|
|
64
|
+
blockIds,
|
|
65
|
+
batchRegistry: deps.batchRegistry,
|
|
66
|
+
projectContext: pc,
|
|
67
|
+
deps,
|
|
68
|
+
executor: async (executionCtx) => executeExplore(executionCtx, {
|
|
69
|
+
input,
|
|
70
|
+
resolvedContextBlocks,
|
|
71
|
+
canonicalizedAnchors,
|
|
72
|
+
relativeAnchorsForPrompt,
|
|
73
|
+
}),
|
|
74
|
+
});
|
|
75
|
+
await emitRequestReceived({ config: deps.config, batchId, route: req.url ?? '', parsed: input });
|
|
76
|
+
sendJson(res, 202, { batchId, statusUrl });
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=explore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explore.js","sourceRoot":"","sources":["../../../../src/http/handlers/tools/explore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const CLIENT_ALLOWLIST = new Set(['claude-code', 'cursor', 'codex-cli', 'gemini-cli']);
|
|
2
2
|
const SKILL_ALLOWLIST = new Set([
|
|
3
3
|
'mma-delegate', 'mma-audit', 'mma-review', 'mma-verify', 'mma-debug',
|
|
4
|
-
'mma-execute-plan', 'mma-retry', 'mma-investigate',
|
|
4
|
+
'mma-execute-plan', 'mma-retry', 'mma-investigate', 'mma-explore',
|
|
5
5
|
'mma-context-blocks', 'mma-clarifications',
|
|
6
6
|
]);
|
|
7
7
|
/** Default identity when no caller headers are present. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caller-identity.js","sourceRoot":"","sources":["../../../src/http/middleware/caller-identity.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AACvF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW;IACpE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"caller-identity.js","sourceRoot":"","sources":["../../../src/http/middleware/caller-identity.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AACvF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW;IACpE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa;IACjE,oBAAoB,EAAE,oBAAoB;CAC3C,CAAC,CAAC;AAUH,2DAA2D;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,YAAY,EAAE,OAAO;IACrB,WAAW,EAAE,QAAQ;CACtB,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,GAAoB;IACxD,MAAM,SAAS,GAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAwB,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAC5F,MAAM,QAAQ,GAAI,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAwB,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAEjG,MAAM,YAAY,GAAG,CAAC,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACjE,CAAC,CAAE,SAA0B;QAC7B,CAAC,CAAC,OAAO,CAAC;IAEZ,IAAI,WAAwB,CAAC;IAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,WAAW,GAAG,QAAQ,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IACnE,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAKrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAiB7D,eAAO,MAAM,cAAc,QAAsB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,iGAAiG;IACjG,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,6EAA6E;IAC7E,aAAa,EAAE,aAAa,CAAC;IAC7B,+EAA+E;IAC/E,eAAe,EAAE,eAAe,CAAC;IACjC,kGAAkG;IAClG,eAAe,EAAE,MAAM,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAKrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAiB7D,eAAO,MAAM,cAAc,QAAsB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,iGAAiG;IACjG,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,6EAA6E;IAC7E,aAAa,EAAE,aAAa,CAAC;IAC7B,+EAA+E;IAC/E,eAAe,EAAE,eAAe,CAAC;IACjC,kGAAkG;IAClG,eAAe,EAAE,MAAM,CAAC;CACzB;AAwJD,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CA6E9E"}
|
package/dist/http/server.js
CHANGED
|
@@ -28,7 +28,7 @@ const LOOPBACK_ONLY_PATHS = new Set(['/health', '/status']);
|
|
|
28
28
|
const AUTH_EXEMPT_PATHS = new Set(['/health']);
|
|
29
29
|
/** Routes that require a `cwd` query parameter (validated by cwd-validator middleware). */
|
|
30
30
|
const CWD_REQUIRED_PATHS = new Set([
|
|
31
|
-
'/delegate', '/tools/delegate', '/audit', '/review', '/verify', '/debug', '/execute-plan', '/retry', '/investigate',
|
|
31
|
+
'/delegate', '/tools/delegate', '/audit', '/review', '/verify', '/debug', '/execute-plan', '/retry', '/investigate', '/explore',
|
|
32
32
|
'/control/retry', '/control/batch-slice', '/context-blocks',
|
|
33
33
|
]);
|
|
34
34
|
/**
|
|
@@ -44,6 +44,7 @@ async function registerToolHandlers(router, config, batchRegistry, projectRegist
|
|
|
44
44
|
const { buildExecutePlanHandler } = await import('./handlers/tools/execute-plan.js');
|
|
45
45
|
const { buildRetryHandler } = await import('./handlers/tools/retry.js');
|
|
46
46
|
const { buildInvestigateHandler } = await import('./handlers/tools/investigate.js');
|
|
47
|
+
const { buildExploreHandler } = await import('./handlers/tools/explore.js');
|
|
47
48
|
const { createHttpServerLog } = await import('@zhixuan92/multi-model-agent-core');
|
|
48
49
|
// For tool handlers, we need MultiModelConfig which is part of ServerConfig only
|
|
49
50
|
// when the full mmagent.config.json is loaded. In test/minimal configs that only
|
|
@@ -56,7 +57,7 @@ async function registerToolHandlers(router, config, batchRegistry, projectRegist
|
|
|
56
57
|
// Server started with server-only config (e.g. tests): register stubs that return 503
|
|
57
58
|
for (const [method, path] of [
|
|
58
59
|
['POST', '/delegate'], ['POST', '/audit'], ['POST', '/review'],
|
|
59
|
-
['POST', '/verify'], ['POST', '/debug'], ['POST', '/execute-plan'], ['POST', '/retry'], ['POST', '/investigate'],
|
|
60
|
+
['POST', '/verify'], ['POST', '/debug'], ['POST', '/execute-plan'], ['POST', '/retry'], ['POST', '/investigate'], ['POST', '/explore'],
|
|
60
61
|
]) {
|
|
61
62
|
router.register(method, path, (_req, res, _params, _ctx) => {
|
|
62
63
|
sendError(res, 503, 'no_agent_config', 'Server started without agent configuration; provide a full mmagent.config.json');
|
|
@@ -89,6 +90,7 @@ async function registerToolHandlers(router, config, batchRegistry, projectRegist
|
|
|
89
90
|
const executePlanHandler = buildExecutePlanHandler(deps);
|
|
90
91
|
const retryHandler = buildRetryHandler(deps);
|
|
91
92
|
const investigateHandler = buildInvestigateHandler(deps);
|
|
93
|
+
const exploreHandler = buildExploreHandler(deps);
|
|
92
94
|
router.register('POST', '/delegate', delegateHandler);
|
|
93
95
|
router.register('POST', '/tools/delegate', delegateHandler);
|
|
94
96
|
router.register('POST', '/audit', auditHandler);
|
|
@@ -98,6 +100,7 @@ async function registerToolHandlers(router, config, batchRegistry, projectRegist
|
|
|
98
100
|
router.register('POST', '/execute-plan', executePlanHandler);
|
|
99
101
|
router.register('POST', '/retry', retryHandler);
|
|
100
102
|
router.register('POST', '/investigate', investigateHandler);
|
|
103
|
+
router.register('POST', '/explore', exploreHandler);
|
|
101
104
|
}
|
|
102
105
|
/**
|
|
103
106
|
* Registers control handlers (GET /batch/:batchId, POST/DELETE /context-blocks,
|
package/dist/http/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACvG,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,gFAAgF;AAChF,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,6CAA6C;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAyB,CAAC;QAC9E,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;AAelD,mDAAmD;AACnD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAE5D,8CAA8C;AAC9C,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAE/C,2FAA2F;AAC3F,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const SUPPORTED_SKILLS: readonly ["multi-model-agent", "mma-delegate", "mma-audit", "mma-review", "mma-verify", "mma-debug", "mma-execute-plan", "mma-retry", "mma-context-blocks", "mma-clarifications", "mma-investigate"];
|
|
1
|
+
export declare const SUPPORTED_SKILLS: readonly ["multi-model-agent", "mma-delegate", "mma-audit", "mma-review", "mma-verify", "mma-debug", "mma-execute-plan", "mma-retry", "mma-context-blocks", "mma-clarifications", "mma-investigate", "mma-explore"];
|
|
2
2
|
/** Thrown when a skill's SKILL.md cannot be read from the bundled skills directory. */
|
|
3
3
|
export declare class SkillNotFoundError extends Error {
|
|
4
4
|
readonly code: "skill_not_found";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/install/discover.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/install/discover.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,qNAanB,CAAC;AAEX,uFAAuF;AACvF,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAG,iBAAiB,CAAU;gBAC/B,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAOnD;AAQD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQtF"}
|
package/dist/install/discover.js
CHANGED
|
@@ -15,6 +15,7 @@ export const SUPPORTED_SKILLS = [
|
|
|
15
15
|
'mma-context-blocks',
|
|
16
16
|
'mma-clarifications',
|
|
17
17
|
'mma-investigate',
|
|
18
|
+
'mma-explore',
|
|
18
19
|
];
|
|
19
20
|
/** Thrown when a skill's SKILL.md cannot be read from the bundled skills directory. */
|
|
20
21
|
export class SkillNotFoundError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/install/discover.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+DAA+D;AAC/D,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,mBAAmB;IACnB,cAAc;IACd,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,kBAAkB;IAClB,WAAW;IACX,oBAAoB;IACpB,oBAAoB;IACpB,iBAAiB;
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/install/discover.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+DAA+D;AAC/D,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,mBAAmB;IACnB,cAAc;IACd,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,kBAAkB;IAClB,WAAW;IACX,oBAAoB;IACpB,oBAAoB;IACpB,iBAAiB;IACjB,aAAa;CACL,CAAC;AAEX,uFAAuF;AACvF,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,GAAG,iBAA0B,CAAC;IAC3C,YAAY,SAAiB,EAAE,WAAmB;QAChD,KAAK,CACH,UAAU,SAAS,eAAe;YAClC,YAAY,WAAW,IAAI;YAC3B,qBAAqB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnD,CAAC;IACJ,CAAC;CACF;AAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CACtC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5C,IAAI,EACJ,QAAQ,CACT,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,UAAmB;IAC/C,OAAO,UAAU,IAAI,mBAAmB,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,UAAmB;IACrE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC9E,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/dist/openapi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAkDA,qEAAqE;AACrE,QAAA,MAAM,aAAa;;;;;;;;CAMlB,CAAC;AAyDF,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyIzD;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAExE;AAGD,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/openapi.js
CHANGED
|
@@ -15,6 +15,7 @@ import * as debug from '@zhixuan92/multi-model-agent-core/tool-schemas/debug';
|
|
|
15
15
|
import * as executePlan from '@zhixuan92/multi-model-agent-core/tool-schemas/execute-plan';
|
|
16
16
|
import * as retry from '@zhixuan92/multi-model-agent-core/tool-schemas/retry';
|
|
17
17
|
import * as investigate from '@zhixuan92/multi-model-agent-core/tool-schemas/investigate';
|
|
18
|
+
import * as explore from '@zhixuan92/multi-model-agent-core/tool-schemas/explore';
|
|
18
19
|
// Extend Zod once with openapi support.
|
|
19
20
|
extendZodWithOpenApi(z);
|
|
20
21
|
/** Sort an object's keys recursively for deterministic JSON serialization. */
|
|
@@ -70,6 +71,11 @@ const TOOL_ENDPOINTS = [
|
|
|
70
71
|
summary: 'Investigate the codebase and answer a question with structured citations',
|
|
71
72
|
schema: investigate.inputSchema,
|
|
72
73
|
},
|
|
74
|
+
{
|
|
75
|
+
path: '/explore',
|
|
76
|
+
summary: 'Explore a topic with parallel internal codebase search and external web research',
|
|
77
|
+
schema: explore.inputSchema,
|
|
78
|
+
},
|
|
73
79
|
];
|
|
74
80
|
function registerToolEndpoint(registry, row) {
|
|
75
81
|
registry.registerPath({
|
package/dist/openapi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,6EAA6E;AAC7E,8CAA8C;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,yDAAyD,CAAC;AACpF,OAAO,KAAK,KAAK,MAAM,sDAAsD,CAAC;AAC9E,OAAO,KAAK,MAAM,MAAM,uDAAuD,CAAC;AAChF,OAAO,KAAK,MAAM,MAAM,uDAAuD,CAAC;AAChF,OAAO,KAAK,KAAK,MAAM,sDAAsD,CAAC;AAC9E,OAAO,KAAK,WAAW,MAAM,6DAA6D,CAAC;AAC3F,OAAO,KAAK,KAAK,MAAM,sDAAsD,CAAC;AAC9E,OAAO,KAAK,WAAW,MAAM,4DAA4D,CAAC;
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
|
|
@@ -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.
|
|
11
|
+
version: 3.12.0
|
|
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.
|
|
15
|
+
version: 3.12.0
|
|
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.
|
|
15
|
+
version: 3.12.0
|
|
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.
|
|
13
|
+
version: 3.12.0
|
|
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.
|
|
14
|
+
version: 3.12.0
|
|
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.
|
|
13
|
+
version: 3.12.0
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# mma-execute-plan
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mma-explore
|
|
3
|
+
description: >-
|
|
4
|
+
Use when you need divergent ideation — 3-5 threads from parallel internal
|
|
5
|
+
codebase + external web research, before superpowers:brainstorming. Not for
|
|
6
|
+
"where is X" questions (use mma-investigate).
|
|
7
|
+
when_to_use: >-
|
|
8
|
+
You are about to brainstorm or plan (including superpowers:brainstorming) and
|
|
9
|
+
need a broad landscape scan before narrowing. The question is exploratory
|
|
10
|
+
(what are our options, what approaches exist, survey how others handle).
|
|
11
|
+
Delegating the read+grep+web-search to a worker keeps your main context on
|
|
12
|
+
judgment. DO NOT use for convergent single-answer questions (where is X
|
|
13
|
+
called, how does Y work) — those are mma-investigate.
|
|
14
|
+
version: 3.12.0
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# mma-explore
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
Explore the codebase AND the web in parallel, synthesizing 3–5 distinct directions with cross-thread synthesis. Each direction carries its own citations and a confidence assessment. The worker runs internal (grep/read) and external (web search) searches concurrently; you receive a diverged option set you can weigh and narrow in a downstream brainstorming step.
|
|
22
|
+
|
|
23
|
+
**Core principle:** Exploration is divergent (survey, enumerate, compare). Synthesis turns raw threads into ranked, citable directions. The main agent stays on judgment — deciding which directions to pursue and what tradeoffs matter.
|
|
24
|
+
|
|
25
|
+
## When to Use
|
|
26
|
+
|
|
27
|
+
**First decision — output shape:**
|
|
28
|
+
- Want **one** synthesized answer with citations? → use `mma-investigate` (don't continue here)
|
|
29
|
+
- Want **multiple** distinct directions to weigh (3–5 threads + cross-thread synthesis)? → continue here
|
|
30
|
+
|
|
31
|
+
Internal-vs-external is not your decision; explore always runs both.
|
|
32
|
+
|
|
33
|
+
```dot
|
|
34
|
+
digraph when_to_use {
|
|
35
|
+
"Exploratory question?" [shape=diamond];
|
|
36
|
+
"Convergent single-answer?" [shape=diamond];
|
|
37
|
+
"About to brainstorm/plan?" [shape=diamond];
|
|
38
|
+
"mma-explore" [shape=box];
|
|
39
|
+
"mma-investigate" [shape=box];
|
|
40
|
+
"Inline search (1–2 queries)" [shape=box];
|
|
41
|
+
|
|
42
|
+
"Exploratory question?" -> "Convergent single-answer?";
|
|
43
|
+
"Convergent single-answer?" -> "mma-investigate" [label="yes"];
|
|
44
|
+
"Convergent single-answer?" -> "About to brainstorm/plan?";
|
|
45
|
+
"About to brainstorm/plan?" -> "mma-explore" [label="yes"];
|
|
46
|
+
"About to brainstorm/plan?" -> "Inline search (1–2 queries)" [label="no — narrow enough"];
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Use when:**
|
|
51
|
+
- "What are our options for handling auth across microservices?"
|
|
52
|
+
- "What approaches exist for real-time sync in this codebase?"
|
|
53
|
+
- "Survey how the industry handles schema migration rollbacks"
|
|
54
|
+
- You're about to run `superpowers:brainstorming` and need a broad option set
|
|
55
|
+
- The question requires both internal codebase knowledge AND external research
|
|
56
|
+
- Tradeoff analysis where you need multiple perspectives before committing
|
|
57
|
+
|
|
58
|
+
**Don't use when:**
|
|
59
|
+
- "Where is X called?" or "How does Y work?" → `mma-investigate` (convergent)
|
|
60
|
+
- You already know the landscape and just need to choose → go straight to `superpowers:brainstorming`
|
|
61
|
+
- The question is about git history → `git log` / `git blame`
|
|
62
|
+
- You need to MODIFY code → use `mma-delegate` after exploring + brainstorming
|
|
63
|
+
- The scope is narrow enough for 1–2 inline reads/searches → do it yourself
|
|
64
|
+
|
|
65
|
+
## Endpoint
|
|
66
|
+
|
|
67
|
+
`POST /explore?cwd=<abs-path>`
|
|
68
|
+
|
|
69
|
+
@include _shared/auth.md
|
|
70
|
+
|
|
71
|
+
## Request body
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"question": "What are our options for handling auth across microservices?",
|
|
76
|
+
"filePaths": ["/project/src/auth/"],
|
|
77
|
+
"contextBlockIds": []
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
| Field | Type | Required | Notes |
|
|
82
|
+
|---|---|---|---|
|
|
83
|
+
| `question` | string | yes | Natural-language exploratory question. Phrase it broadly — "options for", "approaches to", "how others handle". |
|
|
84
|
+
| `filePaths` | string[] | no | Anchor paths the worker starts internal search from. Worker may search beyond. |
|
|
85
|
+
| `contextBlockIds` | string[] | no | IDs from `mma-context-blocks` — enables follow-up / delta exploration |
|
|
86
|
+
| `tools` | `'none' \| 'readonly'` | no | Default `'readonly'`. `'no-shell'` and `'full'` are rejected — exploration is read-only |
|
|
87
|
+
|
|
88
|
+
> Worker tier for `mma-explore` is hardcoded to `complex` and is not caller-configurable. Sending `agentType` is rejected with HTTP 400.
|
|
89
|
+
|
|
90
|
+
**Anchor broad questions with `filePaths`:**
|
|
91
|
+
|
|
92
|
+
❌ `{ "question": "What are our options for state management?" }` — searches entire repo + web blindly
|
|
93
|
+
✅ `{ "question": "What are our options for state management?", "filePaths": ["src/components/", "src/hooks/"] }` — internal search bounded; web search still broad
|
|
94
|
+
|
|
95
|
+
**Why:** the worker runs both internal and external searches under its cost ceiling. Anchors keep the internal search focused so more budget goes to synthesis.
|
|
96
|
+
|
|
97
|
+
## Full example
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
BATCH=$(curl -f --show-error -s -X POST \
|
|
101
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
102
|
+
-H "Content-Type: application/json" \
|
|
103
|
+
-d '{"question":"What are our options for handling auth across microservices?"}' \
|
|
104
|
+
"http://localhost:$PORT/explore?cwd=/project")
|
|
105
|
+
BATCH_ID=$(echo "$BATCH" | jq -r '.batchId')
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
@include _shared/polling.md
|
|
109
|
+
|
|
110
|
+
@include _shared/response-shape.md
|
|
111
|
+
|
|
112
|
+
## Per-task report shape
|
|
113
|
+
|
|
114
|
+
Each task carries an `exploration` field on its per-task report:
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"exploration": {
|
|
119
|
+
"threads": [
|
|
120
|
+
{
|
|
121
|
+
"id": "T1",
|
|
122
|
+
"direction": "Centralized auth gateway with JWT propagation",
|
|
123
|
+
"rationale": "Fits existing Node.js infra; team already familiar with JWT",
|
|
124
|
+
"confidence": { "level": "high", "rationale": "Cited from internal auth module + 3 external sources" },
|
|
125
|
+
"citations": [
|
|
126
|
+
{ "source": "internal", "file": "src/auth/middleware.ts", "lines": "12-45", "claim": "Existing JWT validation pipeline" },
|
|
127
|
+
{ "source": "external", "url": "https://example.com/auth-patterns", "claim": "Gateway pattern is industry standard for polyglot services" }
|
|
128
|
+
],
|
|
129
|
+
"tradeoffs": ["Adds latency hop per request", "Single point of failure without redundancy"]
|
|
130
|
+
}
|
|
131
|
+
],
|
|
132
|
+
"synthesis": {
|
|
133
|
+
"summary": "Three broad families: gateway-based, sidecar-based, and library-based. Gateway fits our stack best.",
|
|
134
|
+
"comparativeNotes": "Gateway and sidecar both support polyglot; library is simpler but binds to Node.js.",
|
|
135
|
+
"recommendedStartingPoint": "T1 — gateway-based, because it reuses existing auth middleware."
|
|
136
|
+
},
|
|
137
|
+
"sourcesUsed": {
|
|
138
|
+
"internal": { "filesRead": 12, "grepResults": 45 },
|
|
139
|
+
"external": { "searchesPerformed": 5, "pagesFetched": 8 }
|
|
140
|
+
},
|
|
141
|
+
"diagnostics": {
|
|
142
|
+
"malformedCitationLines": 0,
|
|
143
|
+
"missingRequiredSections": [],
|
|
144
|
+
"invalidRequiredSections": []
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
`workerStatus` is one of `done`, `done_with_concerns`, `needs_context`, `blocked`. When `done_with_concerns`, the per-task report carries `incompleteReason` (`turn_cap`, `cost_cap`, `timeout`, or `missing_sections`). When `needs_context`, the worker flagged a `[needs_context]` bullet under `## Unresolved` — re-dispatch with extra context (anchor paths, a context block, or a clarification turn).
|
|
151
|
+
|
|
152
|
+
## Reading the findings (3.10.5+)
|
|
153
|
+
|
|
154
|
+
The terminal envelope's `results[N].annotatedFindings` is a list of structured
|
|
155
|
+
findings the reviewer extracted and scored from the explorer's narrative.
|
|
156
|
+
Every finding has the same shape:
|
|
157
|
+
|
|
158
|
+
| Field | Type | Notes |
|
|
159
|
+
|---|---|---|
|
|
160
|
+
| `id` | string | Reviewer-assigned, e.g. `F1`, `F2`. |
|
|
161
|
+
| `severity` | `'critical' \| 'high' \| 'medium' \| 'low'` | 4-tier. |
|
|
162
|
+
| `claim` | string | One-sentence summary. |
|
|
163
|
+
| `evidence` | string ≥20 chars | Quoted from worker output when grounded. |
|
|
164
|
+
| `suggestion?` | string | Optional fix recommendation. |
|
|
165
|
+
| `reviewerConfidence` | `number \| null` | 0–100; `null` from deterministic fallback. |
|
|
166
|
+
| `evidenceGrounded` | boolean | True iff `evidence` is verbatim from worker output. |
|
|
167
|
+
|
|
168
|
+
`qualityReviewVerdict` is `'annotated'` (normal), `'skipped'` (kill switch), or `'error'` (reviewer transport failure). See `mma-investigate` SKILL.md for finding-rendering conventions — same shape.
|
|
169
|
+
|
|
170
|
+
## Best practices
|
|
171
|
+
|
|
172
|
+
This skill is one step in the larger flow described in `multi-model-agent` → "Best practices". Recipes that involve `mma-explore`:
|
|
173
|
+
|
|
174
|
+
- **Recipe E — Explore-brainstorm-plan.** `mma-explore` → `superpowers:brainstorming` → write the plan → `mma-execute-plan`. Exploration produces a broad option set; brainstorming evaluates and narrows it; the narrowed direction becomes a plan. Run `/explore` before `superpowers:brainstorming` for divergent ideation — the brainstorm works better when it has multiple concrete directions to compare.
|
|
175
|
+
|
|
176
|
+
- **Recipe F — Explore-investigate.** Start broad with `mma-explore` to identify promising directions, then use `mma-investigate` to deep-dive a specific thread that emerged. The exploration's `synthesis.recommendedStartingPoint` tells you where to focus the investigation.
|
|
177
|
+
|
|
178
|
+
Anti-pattern alert: **`inline-research-leakage`** (AP3). If you find yourself running multiple WebSearch + grep calls just to enumerate options, delegate to explore instead. The worker runs internal and external searches in parallel on its cheap budget; you read the synthesis.
|
|
179
|
+
|
|
180
|
+
## Common pitfalls
|
|
181
|
+
|
|
182
|
+
❌ **Asking a convergent question**
|
|
183
|
+
> question: "Where is the auth middleware defined?"
|
|
184
|
+
|
|
185
|
+
That's a single-answer codebase question — use `mma-investigate`. Explore is designed for divergent questions that benefit from multiple angles.
|
|
186
|
+
|
|
187
|
+
❌ **Skipping brainstorming after explore**
|
|
188
|
+
Exploration produces threads, not decisions. Always feed the results into `superpowers:brainstorming` (or equivalent planning) before committing to a direction. The exploration is input to judgment, not a substitute for it.
|
|
189
|
+
|
|
190
|
+
❌ **Expecting exhaustive coverage**
|
|
191
|
+
Explore samples the codebase and the web under a cost ceiling. It produces 3–5 representative threads, not an exhaustive survey. If a thread is missing, re-dispatch with tighter `filePaths` anchors or a `contextBlockIds` delta.
|
|
192
|
+
|
|
193
|
+
❌ **Treating `done_with_concerns` as failure**
|
|
194
|
+
The worker still produced threads and a synthesis. Read them — partial coverage with `incompleteReason: 'turn_cap'` often surfaces enough directions to start brainstorming. Re-dispatch with a tighter scope only if the threads are unusable.
|
|
195
|
+
|
|
196
|
+
❌ **Inline-research instead of delegating**
|
|
197
|
+
About to run 3+ WebSearch + grep calls just to enumerate options? That's the wrong tradeoff — the worker searches on its cheap budget; you read its synthesis on yours.
|
|
198
|
+
|
|
199
|
+
@include _shared/error-handling.md
|
|
@@ -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.
|
|
15
|
+
version: 3.12.0
|
|
16
16
|
---
|
|
17
17
|
|
|
18
18
|
# mma-investigate
|
|
@@ -54,6 +54,7 @@ digraph when_to_use {
|
|
|
54
54
|
- It's about web docs / external APIs → `WebSearch` / `WebFetch`
|
|
55
55
|
- It's about git history → `git log` / `git blame`
|
|
56
56
|
- You need to MODIFY code based on the finding → `mma-delegate` (research + edit)
|
|
57
|
+
- You want to consider multiple distinct directions, not converge on one answer → `mma-explore` (divergent ideation, codebase + web)
|
|
57
58
|
|
|
58
59
|
## Endpoint
|
|
59
60
|
|
|
@@ -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.
|
|
13
|
+
version: 3.12.0
|
|
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.
|
|
13
|
+
version: 3.12.0
|
|
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.
|
|
13
|
+
version: 3.12.0
|
|
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.
|
|
14
|
+
version: 3.12.0
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
# multi-model-agent (router)
|
|
@@ -32,12 +32,14 @@ digraph picker {
|
|
|
32
32
|
"Verify a checklist?" [shape=diamond];
|
|
33
33
|
"Debug a failure?" [shape=diamond];
|
|
34
34
|
"Codebase question?" [shape=diamond];
|
|
35
|
+
"Convergent or divergent?" [shape=diamond];
|
|
35
36
|
"mma-execute-plan" [shape=box];
|
|
36
37
|
"mma-audit" [shape=box];
|
|
37
38
|
"mma-review" [shape=box];
|
|
38
39
|
"mma-verify" [shape=box];
|
|
39
40
|
"mma-debug" [shape=box];
|
|
40
41
|
"mma-investigate" [shape=box];
|
|
42
|
+
"mma-explore" [shape=box];
|
|
41
43
|
"mma-delegate" [shape=box];
|
|
42
44
|
|
|
43
45
|
"Plan/spec file on disk?" -> "mma-execute-plan" [label="yes"];
|
|
@@ -50,8 +52,10 @@ digraph picker {
|
|
|
50
52
|
"Verify a checklist?" -> "Debug a failure?" [label="no"];
|
|
51
53
|
"Debug a failure?" -> "mma-debug" [label="yes"];
|
|
52
54
|
"Debug a failure?" -> "Codebase question?" [label="no"];
|
|
53
|
-
"Codebase question?" -> "
|
|
55
|
+
"Codebase question?" -> "Convergent or divergent?" [label="yes"];
|
|
54
56
|
"Codebase question?" -> "mma-delegate" [label="no — ad-hoc"];
|
|
57
|
+
"Convergent or divergent?" -> "mma-investigate" [label="convergent (one answer)"];
|
|
58
|
+
"Convergent or divergent?" -> "mma-explore" [label="divergent (3-5 directions)"];
|
|
55
59
|
}
|
|
56
60
|
```
|
|
57
61
|
|
|
@@ -63,6 +67,7 @@ digraph picker {
|
|
|
63
67
|
| `mma-verify` | Verify work against a checklist (one item per worker, parallel) |
|
|
64
68
|
| `mma-debug` | Debug a failure with a structured hypothesis |
|
|
65
69
|
| `mma-investigate` | Codebase Q&A — structured answer with `file:line` citations + confidence |
|
|
70
|
+
| `mma-explore` | Divergent ideation from codebase + web research — use before `superpowers:brainstorming` |
|
|
66
71
|
| `mma-delegate` | Ad-hoc implementation / research with no plan file |
|
|
67
72
|
| `mma-retry` | Re-run specific failed/incomplete tasks from a previous batch by index |
|
|
68
73
|
| `mma-context-blocks` | Register a reused doc once; reference by ID across N tasks |
|
|
@@ -132,8 +137,7 @@ When `mma-execute-plan` returns mixed `done` / `done_with_concerns` / `failed`,
|
|
|
132
137
|
```bash
|
|
133
138
|
PORT=7337
|
|
134
139
|
if ! curl -sf "http://127.0.0.1:$PORT/health" >/dev/null 2>&1; then
|
|
135
|
-
mmagent serve >/dev/null 2>&1 &
|
|
136
|
-
disown
|
|
140
|
+
mmagent serve >/dev/null 2>&1 & disown
|
|
137
141
|
for _ in 1 2 3 4 5 6 7 8 9 10; do
|
|
138
142
|
sleep 0.5
|
|
139
143
|
curl -sf "http://127.0.0.1:$PORT/health" >/dev/null 2>&1 && break
|
|
@@ -141,10 +145,7 @@ if ! curl -sf "http://127.0.0.1:$PORT/health" >/dev/null 2>&1; then
|
|
|
141
145
|
fi
|
|
142
146
|
```
|
|
143
147
|
|
|
144
|
-
Idempotent: already-running daemon → curl succeeds → no-op.
|
|
145
|
-
|
|
146
|
-
❌ `mmagent serve` (no `&`) — blocks forever, never reaches the next step.
|
|
147
|
-
✅ `mmagent serve >/dev/null 2>&1 & disown` — backgrounded, releases the shell.
|
|
148
|
+
Idempotent: already-running daemon → curl succeeds → no-op. Background `mmagent serve` (with `& disown`) — never run it foreground (it would block the rest of the script).
|
|
148
149
|
|
|
149
150
|
## Auth token
|
|
150
151
|
|
|
@@ -172,6 +173,7 @@ Every other route hardcodes its tier and rejects `agentType` with HTTP 400:
|
|
|
172
173
|
| `mma-debug` | `complex` |
|
|
173
174
|
| `mma-verify` | `complex` |
|
|
174
175
|
| `mma-investigate` | `complex` |
|
|
176
|
+
| `mma-explore` | `complex` (all three workers — internal, external, synthesizer) |
|
|
175
177
|
|
|
176
178
|
If you need `complex` tier on plan-style work, dispatch via `mma-delegate` with the plan task as the prompt and `agentType: "complex"`.
|
|
177
179
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhixuan92/multi-model-agent",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.12.0",
|
|
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.
|
|
55
|
+
"@zhixuan92/multi-model-agent-core": "^3.12.0",
|
|
56
56
|
"gray-matter": "^4.0.3",
|
|
57
57
|
"minimist": "^1.2.8",
|
|
58
58
|
"proper-lockfile": "^4.1.2",
|