@zhixuan92/multi-model-agent 4.7.19 → 4.8.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.
Files changed (37) hide show
  1. package/README.md +10 -7
  2. package/dist/http/handlers/control/batch.d.ts +2 -0
  3. package/dist/http/handlers/control/batch.d.ts.map +1 -1
  4. package/dist/http/handlers/control/batch.js +17 -1
  5. package/dist/http/handlers/control/batch.js.map +1 -1
  6. package/dist/http/handlers/tools/journal-recall.d.ts +4 -0
  7. package/dist/http/handlers/tools/journal-recall.d.ts.map +1 -0
  8. package/dist/http/handlers/tools/journal-recall.js +40 -0
  9. package/dist/http/handlers/tools/journal-recall.js.map +1 -0
  10. package/dist/http/handlers/tools/journal-record.d.ts +4 -0
  11. package/dist/http/handlers/tools/journal-record.d.ts.map +1 -0
  12. package/dist/http/handlers/tools/journal-record.js +35 -0
  13. package/dist/http/handlers/tools/journal-record.js.map +1 -0
  14. package/dist/http/handlers/tools/research.d.ts.map +1 -1
  15. package/dist/http/handlers/tools/research.js +0 -1
  16. package/dist/http/handlers/tools/research.js.map +1 -1
  17. package/dist/http/server.d.ts.map +1 -1
  18. package/dist/http/server.js +6 -2
  19. package/dist/http/server.js.map +1 -1
  20. package/dist/skill-install/discover.d.ts +1 -1
  21. package/dist/skill-install/discover.d.ts.map +1 -1
  22. package/dist/skill-install/discover.js +2 -0
  23. package/dist/skill-install/discover.js.map +1 -1
  24. package/dist/skills/mma-audit/SKILL.md +6 -2
  25. package/dist/skills/mma-context-blocks/SKILL.md +1 -1
  26. package/dist/skills/mma-debug/SKILL.md +6 -2
  27. package/dist/skills/mma-delegate/SKILL.md +3 -9
  28. package/dist/skills/mma-execute-plan/SKILL.md +3 -9
  29. package/dist/skills/mma-explore/SKILL.md +54 -27
  30. package/dist/skills/mma-investigate/SKILL.md +6 -2
  31. package/dist/skills/mma-journal-recall/SKILL.md +242 -0
  32. package/dist/skills/mma-journal-record/SKILL.md +189 -0
  33. package/dist/skills/mma-research/SKILL.md +14 -5
  34. package/dist/skills/mma-retry/SKILL.md +4 -4
  35. package/dist/skills/mma-review/SKILL.md +6 -2
  36. package/dist/skills/multi-model-agent/SKILL.md +7 -3
  37. package/package.json +2 -2
@@ -2,7 +2,7 @@
2
2
  name: mma-research
3
3
  description: >-
4
4
  Use when you need external multi-source research with citations — arxiv,
5
- semantic_scholar, github_search, rss, brave-with-site:-filters — for a focused
5
+ semantic_scholar, github_search, brave-with-site:-filters — for a focused
6
6
  question. Worker is bibliographic, not opinionated. Pair with mma-investigate
7
7
  (internal) under mma-explore for divergent landscape scans.
8
8
  when_to_use: >-
@@ -10,7 +10,7 @@ when_to_use: >-
10
10
  others do, what published methods exist) AND mmagent is running. Delegate the
11
11
  multi-source web/adapter research to a worker so the main context stays on
12
12
  judgment. NOT for codebase questions — those are mma-investigate.
13
- version: 4.7.19
13
+ version: 4.8.0
14
14
  ---
15
15
 
16
16
  # mma-research
@@ -18,8 +18,8 @@ version: 4.7.19
18
18
  ## Overview
19
19
 
20
20
  Run external multi-source research via a single mmagent worker. The worker
21
- consults configured adapters (arxiv, semantic_scholar, github_search, rss) and
22
- — when Brave keys are configured — escalates to `web_search` with `site:`
21
+ consults configured adapters (arxiv, semantic_scholar, github_search) and
22
+ — when Brave keys are configured — escalates to Brave web search with `site:`
23
23
  filters. The worker is bibliographic: it returns a numbered narrative with a
24
24
  `## Sources used` table. It does not opinion or rank.
25
25
 
@@ -62,7 +62,7 @@ Obtain a free API key from [Semantic Scholar API](https://www.semanticscholar.or
62
62
  **Degraded behavior:**
63
63
 
64
64
  If the Semantic Scholar API key is not configured:
65
- - The worker continues with available adapters (arxiv, github_search, rss, brave-search)
65
+ - The worker continues with available adapters (arxiv, github_search, brave-search)
66
66
  - Semantic Scholar queries are skipped without errors
67
67
  - Research completes successfully but may lack academic-paper coverage
68
68
  - No failure occurs; graceful fallback is automatic
@@ -157,6 +157,7 @@ Each `results[N]` is the v5 `ComposePayload`:
157
157
  | `findings` | The deliverable. `source: 'implementer'`. Empty `findings` on a research route means "no signal found" — still a valid completion. |
158
158
  | `workerSelfAssessment` | `'done'` or `'failed'` — never `done_with_concerns`. |
159
159
  | `blockId` | Always `null` — research is a task route, not register-context-block. |
160
+ | `contextBlockId` | The terminal context block id for this read-route task (its report as a reusable block). Pass it into a later call's `contextBlockIds` for delta follow-ups. |
160
161
 
161
162
  Legacy aliases (still emitted for back-compat):
162
163
 
@@ -166,6 +167,14 @@ results[0].structuredReport.sourcesUsed[] // table of sources tried
166
167
  results[0].output // raw narrative report
167
168
  ```
168
169
 
170
+ ## Terminal context block
171
+
172
+ Every completed **read-route** task (audit / review / debug / investigate / research) auto-registers a reusable terminal context block containing its report (headline + findings). The block id is returned on each per-task result as **`contextBlockId`**. Write routes (delegate / execute-plan / retry) return `contextBlockId: null` — their record is the commit, not a block. This block is immutable, lives for the session duration, and counts against the project's `maxEntries` quota (default 500).
173
+
174
+ Use it for delta follow-ups — feed prior results' block ids into a later call's `contextBlockIds`, filtering out nulls:
175
+
176
+ contextBlockIds: priorResults.map(r => r.contextBlockId).filter((id) => id !== null)
177
+
169
178
  ## Best practices
170
179
 
171
180
  - Keep `researchQuestion` topical (keywords, not full sentences).
@@ -10,7 +10,7 @@ when_to_use: >-
10
10
  re-try the failed indices only. Prefer this over re-dispatching the whole
11
11
  batch or inline-retrying — it's idempotent and preserves the original batch's
12
12
  diagnostics.
13
- version: 4.7.19
13
+ version: 4.8.0
14
14
  ---
15
15
 
16
16
  # mma-retry
@@ -167,7 +167,7 @@ Each task result is the per-task wire object (`ComposePayload`):
167
167
  | `findings` | Issues surfaced by the worker or reviewer. `severity` = `critical` \| `high` \| `medium` \| `low`. `source` = `implementer` \| `reviewer`. |
168
168
  | `filesChanged` | File paths modified (empty for read-only routes). |
169
169
  | `commitSha` | Git SHA of the committed diff; `null` for read-only routes or when commit was skipped. |
170
- | `blockId` | `terminalBlockId` pass to `contextBlockIds` in a follow-up task to chain results without re-inlining. |
170
+ | `blockId` | Always `null` (retry replays write tasks; `contextBlockId` is `null` too no terminal block). |
171
171
 
172
172
  **The stages array** (always 9 rows) is the canonical telemetry log. `outcome` is one of:
173
173
  - `advance` — stage ran and produced its payload
@@ -214,8 +214,8 @@ Retry preserves the ORIGINAL config (prompt, agentType, filePaths, reviewPolicy)
214
214
 
215
215
  ## Terminal context block
216
216
 
217
- Every completed task automatically registers a terminal markdown context block containing the full task report. The `blockId` is returned in each task result as `terminalBlockId`. This block is immutable, lives for the session duration, and counts against the project's `maxEntries` quota (default 500).
217
+ Write-route tasks (delegate / execute-plan / retry) do NOT register a terminal context block their durable record is the commit (`commitSha` + changed files). The per-task result's `contextBlockId` is always `null` for these routes. Read routes (audit / review / debug / investigate / research) return a non-null `contextBlockId`; see those skills for the delta-follow-up recipe.
218
218
 
219
- Note: the retry batch produces its own terminal context blocks for each re-run task. The original batch's terminal context blocks remain intact and are not overwritten.
219
+ Note: a re-run **read-route** task registers its own terminal context block (`contextBlockId`); re-run write tasks register none. Original-batch blocks remain intact and are not overwritten.
220
220
 
221
221
  @include _shared/error-handling.md
@@ -10,7 +10,7 @@ when_to_use: >-
10
10
  AND mmagent is running. Delegate so each file reviews on its own worker; the
11
11
  main agent only decides what to merge. Review on SOURCE CODE — use mma-audit
12
12
  for prose specs / configs.
13
- version: 4.7.19
13
+ version: 4.8.0
14
14
  ---
15
15
 
16
16
  # mma-review
@@ -163,7 +163,11 @@ Self-review and cross-model review are not the same thing. The whole reason to d
163
163
 
164
164
  ## Terminal context block
165
165
 
166
- Every completed task automatically registers a terminal markdown context block containing the full task report (headline, annotated findings, and per-file review notes). The `blockId` is returned in each task result as `terminalBlockId`. This block is immutable, lives for the session duration, and counts against the project's `maxEntries` quota (default 500).
166
+ Every completed **read-route** task (audit / review / debug / investigate / research) auto-registers a reusable terminal context block containing its report (headline + findings). The block id is returned on each per-task result as **`contextBlockId`**. Write routes (delegate / execute-plan / retry) return `contextBlockId: null` — their record is the commit, not a block. This block is immutable, lives for the session duration, and counts against the project's `maxEntries` quota (default 500).
167
+
168
+ Use it for delta follow-ups — feed prior results' block ids into a later call's `contextBlockIds`, filtering out nulls:
169
+
170
+ contextBlockIds: priorResults.map(r => r.contextBlockId).filter((id) => id !== null)
167
171
 
168
172
  **Use cases:**
169
173
  - Pass round-N review findings to round N+1 via `contextBlockIds`
@@ -11,7 +11,7 @@ when_to_use: >-
11
11
  tasks — AND mmagent is running. Read this once, pick the matching mma-* skill,
12
12
  and delegate there. Applies equally whether the user invoked a superpowers
13
13
  methodology skill or asked directly.
14
- version: 4.7.19
14
+ version: 4.8.0
15
15
  ---
16
16
 
17
17
  # multi-model-agent (router)
@@ -63,7 +63,7 @@ digraph picker {
63
63
  | `mma-review` | Review code for quality, security, performance, correctness. Pass acceptance checklists in the brief if you need verification-style checks. |
64
64
  | `mma-debug` | Debug a failure with a structured hypothesis |
65
65
  | `mma-investigate` | Codebase Q&A — structured answer with `file:line` citations + confidence |
66
- | `mma-explore` | Divergent ideation from codebase + web research — use before `superpowers:brainstorming` |
66
+ | `mma-explore` | Divergent ideation from codebase + web research + prior-learnings recall — use before `superpowers:brainstorming` |
67
67
  | `mma-delegate` | Ad-hoc implementation / research with no plan file |
68
68
  | `mma-retry` | Re-run specific failed/incomplete tasks from a previous batch by index |
69
69
  | `mma-context-blocks` | Register a reused doc once; reference by ID across N tasks |
@@ -181,7 +181,11 @@ Context blocks are immutable after creation. To update content, register a new b
181
181
 
182
182
  ## Terminal context block
183
183
 
184
- Every completed task across all routes automatically registers a terminal markdown context block with the full task report. The `blockId` is in each task result as `terminalBlockId`. This block is immutable, lives for the session duration (or idle-evicts after 24 h), and counts against the `maxEntries` quota. Use `terminalBlockId` values in downstream `contextBlockIds` to chain findings across workflow steps without re-inlining report content. No caller action needed blocks are registered server-side at task completion.
184
+ Every completed **read-route** task (audit / review / debug / investigate / research) auto-registers a reusable terminal context block containing its report (headline + findings). The block id is returned on each per-task result as **`contextBlockId`**. Write routes (delegate / execute-plan / retry) return `contextBlockId: null` their record is the commit, not a block. This block is immutable, lives for the session duration, and counts against the project's `maxEntries` quota (default 500).
185
+
186
+ Use it for delta follow-ups — feed prior results' block ids into a later call's `contextBlockIds`, filtering out nulls:
187
+
188
+ contextBlockIds: priorResults.map(r => r.contextBlockId).filter((id) => id !== null)
185
189
 
186
190
  ## General flow
187
191
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhixuan92/multi-model-agent",
3
- "version": "4.7.19",
3
+ "version": "4.8.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.",
@@ -53,7 +53,7 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "@asteasolutions/zod-to-openapi": "^8.5.0",
56
- "@zhixuan92/multi-model-agent-core": "^4.7.19",
56
+ "@zhixuan92/multi-model-agent-core": "^4.8.0",
57
57
  "gray-matter": "^4.0.3",
58
58
  "minimist": "^1.2.8",
59
59
  "proper-lockfile": "^4.1.2",