@zhixuan92/multi-model-agent-mcp 2.7.5 → 2.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 (42) hide show
  1. package/README.md +74 -0
  2. package/dist/cli.d.ts +23 -2
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +105 -90
  5. package/dist/cli.js.map +1 -1
  6. package/dist/http/auth.d.ts +8 -0
  7. package/dist/http/auth.d.ts.map +1 -0
  8. package/dist/http/auth.js +43 -0
  9. package/dist/http/auth.js.map +1 -0
  10. package/dist/http/cwd-validator.d.ts +11 -0
  11. package/dist/http/cwd-validator.d.ts.map +1 -0
  12. package/dist/http/cwd-validator.js +31 -0
  13. package/dist/http/cwd-validator.js.map +1 -0
  14. package/dist/http/lifecycle-handlers.d.ts +12 -0
  15. package/dist/http/lifecycle-handlers.d.ts.map +1 -0
  16. package/dist/http/lifecycle-handlers.js +87 -0
  17. package/dist/http/lifecycle-handlers.js.map +1 -0
  18. package/dist/http/loopback.d.ts +10 -0
  19. package/dist/http/loopback.d.ts.map +1 -0
  20. package/dist/http/loopback.js +34 -0
  21. package/dist/http/loopback.js.map +1 -0
  22. package/dist/http/project-registry.d.ts +48 -0
  23. package/dist/http/project-registry.d.ts.map +1 -0
  24. package/dist/http/project-registry.js +119 -0
  25. package/dist/http/project-registry.js.map +1 -0
  26. package/dist/http/session-router.d.ts +33 -0
  27. package/dist/http/session-router.d.ts.map +1 -0
  28. package/dist/http/session-router.js +62 -0
  29. package/dist/http/session-router.js.map +1 -0
  30. package/dist/http/status-endpoint.d.ts +20 -0
  31. package/dist/http/status-endpoint.d.ts.map +1 -0
  32. package/dist/http/status-endpoint.js +85 -0
  33. package/dist/http/status-endpoint.js.map +1 -0
  34. package/dist/http/transport.d.ts +14 -0
  35. package/dist/http/transport.d.ts.map +1 -0
  36. package/dist/http/transport.js +209 -0
  37. package/dist/http/transport.js.map +1 -0
  38. package/dist/status-cli.d.ts +2 -0
  39. package/dist/status-cli.d.ts.map +1 -0
  40. package/dist/status-cli.js +68 -0
  41. package/dist/status-cli.js.map +1 -0
  42. package/package.json +4 -3
package/README.md CHANGED
@@ -138,6 +138,80 @@ See the full setup guide with config examples, client-specific instructions, and
138
138
 
139
139
  → **[github.com/zhixuan312/multi-model-agent](https://github.com/zhixuan312/multi-model-agent#quick-start)**
140
140
 
141
+ ## Running as an HTTP daemon
142
+
143
+ The default transport is stdio — Claude Code spawns one `mmagent` process per session. When the Claude Code session ends (compaction, `/clear`, exit), the process dies; the next tool call has to start a fresh one.
144
+
145
+ To survive Claude Code lifecycle events, run `mmagent` as a long-running HTTP daemon. Multiple Claude Code sessions can connect to the same daemon (each pointing at its own project directory), and a client reconnect reuses the project's in-memory stores.
146
+
147
+ ### Start the daemon
148
+
149
+ Foreground (quickest way to try):
150
+
151
+ ```bash
152
+ mmagent serve --http
153
+ # → http://127.0.0.1:7312
154
+ ```
155
+
156
+ Background (macOS launchd / Linux systemd): see `scripts/README.md`.
157
+
158
+ ### Point Claude Code at the daemon
159
+
160
+ In each project's `.mcp.json`:
161
+
162
+ ```jsonc
163
+ {
164
+ "mcpServers": {
165
+ "multi-model-agent": {
166
+ "url": "http://127.0.0.1:7312/?cwd=/absolute/path/to/project"
167
+ }
168
+ }
169
+ }
170
+ ```
171
+
172
+ Two projects = two `.mcp.json` files, each with a different `?cwd=`.
173
+
174
+ ### Auth (optional)
175
+
176
+ For shared development machines:
177
+
178
+ ```jsonc
179
+ // ~/.multi-model/config.json
180
+ {
181
+ "transport": {
182
+ "mode": "http",
183
+ "http": { "auth": { "enabled": true } }
184
+ }
185
+ }
186
+ ```
187
+
188
+ On startup, `mmagent` generates a random token at `~/.multi-model/runtime/token` (mode 600). Paste it into `.mcp.json`:
189
+
190
+ ```jsonc
191
+ {
192
+ "url": "http://127.0.0.1:7312/?cwd=...",
193
+ "headers": { "Authorization": "Bearer <token-from-that-file>" }
194
+ }
195
+ ```
196
+
197
+ ### Check daemon status
198
+
199
+ ```bash
200
+ mmagent status
201
+ # mmagent 2.8.0 · pid 6821 · uptime 3h 24m · http://127.0.0.1:7312
202
+ # Projects (2):
203
+ # /Users/me/project-X 1 sess 7 batches last seen 8s ago
204
+ # /Users/me/project-Y 1 sess 2 batches last seen 4m ago
205
+ ```
206
+
207
+ ### Upgrades
208
+
209
+ `npm i -g @zhixuan92/multi-model-agent-mcp@latest` writes the new binary but does not restart the running daemon. Restart manually:
210
+
211
+ - **launchd**: `launchctl kickstart -k gui/$(id -u)/com.zhixuan92.mmagent`
212
+ - **systemd**: `systemctl --user restart mmagent`
213
+ - **foreground**: `Ctrl-C` and run `mmagent serve --http` again.
214
+
141
215
  ## License
142
216
 
143
217
  [MIT](./LICENSE) — Copyright (c) 2026 Zhang Zhixuan
package/dist/cli.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import { z } from 'zod';
4
4
  import { runTasks } from '@zhixuan92/multi-model-agent-core/run-tasks';
5
- import type { MultiModelConfig, DiagnosticLogger } from '@zhixuan92/multi-model-agent-core';
5
+ import type { MultiModelConfig, DiagnosticLogger, ProjectContext } from '@zhixuan92/multi-model-agent-core';
6
6
  export { computeTimings, computeBatchProgress, computeAggregateCost } from './tools/batch-response.js';
7
7
  export declare const SERVER_NAME = "multi-model-agent";
8
8
  export declare const ASSISTANT_MODEL_NAME = "GPT-5";
@@ -17,7 +17,23 @@ export declare function buildTaskSchema(availableAgents: [string, ...string[]]):
17
17
  done: z.ZodOptional<z.ZodString>;
18
18
  contextBlockIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
19
19
  }, z.core.$strict>;
20
- export declare function buildMcpServer(config: Parameters<typeof runTasks>[1], logger: DiagnosticLogger, options?: {
20
+ /**
21
+ * Batch cache for `retry_tasks`. Every `delegate_tasks` call stashes the
22
+ * original `TaskSpec[]` under a UUID so the caller can later ask us to
23
+ * re-dispatch specific indices without re-transmitting the briefs. Two
24
+ * bounds (enforced by `BatchCache` in core):
25
+ *
26
+ * - TTL (30 min from creation): keeps stale batches from lingering
27
+ * through a long session. TTL is from-creation (not from-last-access).
28
+ * - LRU cap (100 entries): prevents unbounded growth from a chatty
29
+ * caller that never retries.
30
+ *
31
+ * The `BatchCache` instance lives on `projectContext.batchCache` so it is
32
+ * shared across all sessions attached to the same project root.
33
+ */
34
+ export declare function buildMcpServer(config: Parameters<typeof runTasks>[1], logger: DiagnosticLogger, options: {
35
+ projectContext: ProjectContext;
36
+ sessionId?: string;
21
37
  /** Character threshold that triggers auto-switch from 'full' to
22
38
  * 'summary' response mode when the caller uses `responseMode: 'auto'`
23
39
  * (the default). Defaults to 65_536, tuned for Claude Code's inline
@@ -55,4 +71,9 @@ export declare function discoverConfig(): Promise<MultiModelConfig>;
55
71
  export declare function installStdioLifecycleHandlers(logger: DiagnosticLogger): void;
56
72
  /** Test-only. Not exported from the package public surface. */
57
73
  export declare function __resetStdioLifecycleHandlersForTests(): void;
74
+ export declare function parseHttpFlags(args: string[]): {
75
+ mode: 'http';
76
+ port?: number;
77
+ bind?: string;
78
+ } | undefined;
58
79
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AAEvE,OAAO,KAAK,EACV,gBAAgB,EAOhB,gBAAgB,EACjB,MAAM,mCAAmC,CAAC;AAoB3C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEvG,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAG5C,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAmBD,eAAO,MAAM,cAAc,QAAc,CAAC;AAE1C,wBAAgB,eAAe,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;;;;;;;;mBAkBrE;AAkCD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,EACtC,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE;IACR;;;;;wEAKoE;IACpE,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,OAAO,QAAQ,CAAC;CACzC,aA+XF;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CA4BhE;AAWD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAoE5E;AAED,+DAA+D;AAC/D,wBAAgB,qCAAqC,IAAI,IAAI,CAa5D"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AAEvE,OAAO,KAAK,EACV,gBAAgB,EAOhB,gBAAgB,EAChB,cAAc,EACf,MAAM,mCAAmC,CAAC;AAmB3C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEvG,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAG5C,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAmBD,eAAO,MAAM,cAAc,QAAc,CAAC;AAE1C,wBAAgB,eAAe,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;;;;;;;;mBAkBrE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,EACtC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE;IACP,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;wEAKoE;IACpE,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,OAAO,QAAQ,CAAC;CACzC,aAiWF;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CA4BhE;AAWD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAoE5E;AAED,+DAA+D;AAC/D,wBAAgB,qCAAqC,IAAI,IAAI,CAa5D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAYzG"}
package/dist/cli.js CHANGED
@@ -11,7 +11,7 @@ import { z } from 'zod';
11
11
  import { loadConfigFromFile } from '@zhixuan92/multi-model-agent-core/config/load';
12
12
  import { parseConfig } from '@zhixuan92/multi-model-agent-core/config/schema';
13
13
  import { runTasks } from '@zhixuan92/multi-model-agent-core/run-tasks';
14
- import { InMemoryContextBlockStore, createDiagnosticLogger } from '@zhixuan92/multi-model-agent-core';
14
+ import { createDiagnosticLogger, createProjectContext } from '@zhixuan92/multi-model-agent-core';
15
15
  import { renderProviderRoutingMatrix } from './routing/render-provider-routing-matrix.js';
16
16
  import { computeTimings, computeBatchProgress, computeAggregateCost, } from './tools/batch-response.js';
17
17
  import { buildUnifiedResponse, withDiagnostics } from './tools/shared.js';
@@ -23,7 +23,6 @@ import { registerReviewCode } from './tools/review-code.js';
23
23
  import { registerVerifyWork } from './tools/verify-work.js';
24
24
  import { compileDelegateTasks } from '@zhixuan92/multi-model-agent-core/intake/compilers/delegate';
25
25
  import { runIntakePipeline } from '@zhixuan92/multi-model-agent-core/intake/pipeline';
26
- import { ClarificationStore } from '@zhixuan92/multi-model-agent-core/intake/clarification-store';
27
26
  import { registerConfirmClarifications } from './tools/confirm-clarifications.js';
28
27
  export { computeTimings, computeBatchProgress, computeAggregateCost } from './tools/batch-response.js';
29
28
  export const SERVER_NAME = 'multi-model-agent';
@@ -64,34 +63,18 @@ export function buildTaskSchema(availableAgents) {
64
63
  * Batch cache for `retry_tasks`. Every `delegate_tasks` call stashes the
65
64
  * original `TaskSpec[]` under a UUID so the caller can later ask us to
66
65
  * re-dispatch specific indices without re-transmitting the briefs. Two
67
- * bounds:
66
+ * bounds (enforced by `BatchCache` in core):
68
67
  *
69
68
  * - TTL (30 min from creation): keeps stale batches from lingering
70
- * through a long session. TTL is from-creation (not from-last-access),
71
- * matching `InMemoryContextBlockStore` — a batch used at minute 29
72
- * still dies at minute 30. Access does NOT refresh the expiry.
69
+ * through a long session. TTL is from-creation (not from-last-access).
73
70
  * - LRU cap (100 entries): prevents unbounded growth from a chatty
74
- * caller that never retries. Eviction is true LRU (least-recently-
75
- * *used*, not least-recently-inserted): a batch that is still being
76
- * retried stays hot and a newer but unused batch will be evicted
77
- * first. This matters when a caller is iterating on one task while
78
- * dispatching unrelated batches in parallel.
71
+ * caller that never retries.
79
72
  *
80
- * Eviction on TTL is lazy (checked on `retry_tasks` lookup). Eviction on
81
- * the LRU cap is eager (runs after every `rememberBatch`).
82
- *
83
- * LRU implementation note: we use JavaScript's `Map` which preserves
84
- * insertion order on iteration. To "touch" an entry on access, we
85
- * `delete` it and re-`set` it, which moves it to the end of the
86
- * iteration order. `Map.keys().next().value` is then the oldest-*accessed*
87
- * entry (not the oldest-inserted entry), giving us O(1) LRU without a
88
- * separate priority structure. The helpers `touchBatch` (on access) and
89
- * the eviction loop in `rememberBatch` (on insert) are the only two
90
- * places that mutate the Map.
73
+ * The `BatchCache` instance lives on `projectContext.batchCache` so it is
74
+ * shared across all sessions attached to the same project root.
91
75
  */
92
- const BATCH_TTL_MS = 30 * 60 * 1000;
93
- const BATCH_MAX = 100;
94
76
  export function buildMcpServer(config, logger, options) {
77
+ const { projectContext } = options;
95
78
  const agentKeys = config.agents ? Object.keys(config.agents) : [];
96
79
  if (agentKeys.length === 0) {
97
80
  throw new Error('buildMcpServer requires at least one configured agent.');
@@ -103,9 +86,9 @@ export function buildMcpServer(config, logger, options) {
103
86
  }
104
87
  const resolvedThreshold = envThreshold
105
88
  ?? config.defaults.largeResponseThresholdChars
106
- ?? options?.largeResponseThresholdChars
89
+ ?? options.largeResponseThresholdChars
107
90
  ?? DEFAULT_LARGE_RESPONSE_THRESHOLD_CHARS;
108
- const runTasksImpl = options?._testRunTasksOverride ?? runTasks;
91
+ const runTasksImpl = options._testRunTasksOverride ?? runTasks;
109
92
  // Resolve parentModel once: env var > config > undefined
110
93
  const resolvedParentModel = process.env.PARENT_MODEL_NAME || config.defaults.parentModel || undefined;
111
94
  function injectDefaults(tasks) {
@@ -116,7 +99,7 @@ export function buildMcpServer(config, logger, options) {
116
99
  timeoutMs: config.defaults.timeoutMs,
117
100
  maxCostUSD: config.defaults.maxCostUSD,
118
101
  sandboxPolicy: config.defaults.sandboxPolicy,
119
- cwd: process.cwd(),
102
+ cwd: projectContext.cwd,
120
103
  reviewPolicy: 'full',
121
104
  effort: undefined,
122
105
  parentModel: resolvedParentModel,
@@ -127,41 +110,10 @@ export function buildMcpServer(config, logger, options) {
127
110
  name: SERVER_NAME,
128
111
  version: SERVER_VERSION,
129
112
  });
130
- // One context-block store per server instance. Persists across calls
131
- // within a single `buildMcpServer(...)` lifetime so `register_context_block`
132
- // followed by multiple `delegate_tasks` with `contextBlockIds` works.
133
- const contextBlockStore = new InMemoryContextBlockStore();
134
- // Clarification store for intake clarification flow
135
- const clarificationStore = new ClarificationStore();
136
- // Per-server batch cache for `retry_tasks`. See the LRU comment block
137
- // above for eviction semantics.
138
- const batchCache = new Map();
139
- const rememberBatch = (tasks) => {
140
- const id = randomUUID();
141
- batchCache.set(id, { tasks, expiresAt: Date.now() + BATCH_TTL_MS });
142
- // Evict the least-recently-USED entry (not least-recently-inserted).
143
- // `touchBatch` below moves accessed entries to the end of insertion
144
- // order, so `keys().next().value` is the true LRU head.
145
- while (batchCache.size > BATCH_MAX) {
146
- const lru = batchCache.keys().next().value;
147
- if (lru)
148
- batchCache.delete(lru);
149
- else
150
- break;
151
- }
152
- return id;
153
- };
154
- /**
155
- * Mark a batch as recently used by reinserting it at the tail of the
156
- * Map's iteration order. `touchBatch` is called on every successful
157
- * `retry_tasks` lookup so a frequently-retried batch does not get
158
- * evicted by `rememberBatch`'s LRU loop. Does NOT refresh the TTL —
159
- * expiry stays at the original creation time.
160
- */
161
- const touchBatch = (id, entry) => {
162
- batchCache.delete(id);
163
- batchCache.set(id, entry);
164
- };
113
+ // Stores sourced from projectContext shared across all sessions for this project.
114
+ const contextBlockStore = projectContext.contextBlocks;
115
+ const clarificationStore = projectContext.clarifications;
116
+ const batchCache = projectContext.batchCache;
165
117
  const availableAgents = agentKeys;
166
118
  server.tool('delegate_tasks', 'General-purpose task dispatch — use only when no specialized route fits. ' +
167
119
  'Try specialized tools first: audit_document (auditing), review_code (reviewing), verify_work (verifying), debug_task (debugging), execute_plan (implementing from a written plan/spec file on disk). ' +
@@ -198,8 +150,9 @@ export function buildMcpServer(config, logger, options) {
198
150
  // Execute ready tasks through normal dispatch
199
151
  let results = [];
200
152
  const readySpecs = intakeResult.ready.map(r => r.task);
201
- const batchId = rememberBatch(readySpecs.length > 0 ? readySpecs : tasks);
153
+ const batchId = batchCache.remember(readySpecs.length > 0 ? readySpecs : tasks);
202
154
  const batchStartMs = Date.now();
155
+ let batchAborted = false;
203
156
  try {
204
157
  if (readySpecs.length > 0) {
205
158
  const resolvedTasks = injectDefaults(readySpecs);
@@ -210,11 +163,23 @@ export function buildMcpServer(config, logger, options) {
210
163
  intakeResult.intakeProgress.executedDrafts = results.length;
211
164
  }
212
165
  }
166
+ catch (err) {
167
+ batchAborted = true;
168
+ throw err;
169
+ }
213
170
  finally {
214
- // Always attach results so get_batch_slice/retry_tasks can find the batch
215
- const batchEntry = batchCache.get(batchId);
216
- if (batchEntry)
217
- batchEntry.results = results;
171
+ if (batchAborted) {
172
+ try {
173
+ batchCache.abort(batchId);
174
+ }
175
+ catch { /* already terminal */ }
176
+ }
177
+ else {
178
+ try {
179
+ batchCache.complete(batchId, results);
180
+ }
181
+ catch { /* already terminal */ }
182
+ }
218
183
  }
219
184
  const wallClockMs = Date.now() - batchStartMs;
220
185
  // Create clarification set if needed
@@ -289,19 +254,12 @@ export function buildMcpServer(config, logger, options) {
289
254
  .describe('Zero-based indices (into the original batch) of the tasks to re-run'),
290
255
  }, async ({ batchId, taskIndices }) => {
291
256
  const batch = batchCache.get(batchId);
292
- if (!batch || batch.expiresAt < Date.now()) {
293
- // Proactively drop the expired entry so subsequent lookups see
294
- // the same "unknown" result and the cache doesn't slowly fill
295
- // with stale rows that are never touched again.
296
- if (batch)
297
- batchCache.delete(batchId);
257
+ if (!batch) {
298
258
  throw new Error(`batch "${batchId}" is unknown or expired — re-dispatch with full task specs via delegate_tasks`);
299
259
  }
300
- // Mark this batch as recently used so the LRU eviction in
301
- // `rememberBatch` doesn't drop a hot entry when newer batches
302
- // arrive. Does NOT refresh TTL — a batch created 29 minutes ago
303
- // still dies at minute 30 even if it's retried heavily.
304
- touchBatch(batchId, batch);
260
+ // Mark this batch as recently used so the LRU eviction does not
261
+ // drop a hot entry when newer batches arrive. Does NOT refresh TTL.
262
+ batchCache.touch(batchId);
305
263
  for (const i of taskIndices) {
306
264
  if (i < 0 || i >= batch.tasks.length) {
307
265
  throw new Error(`index ${i} is out of range for batch ${batchId} (size ${batch.tasks.length})`);
@@ -310,18 +268,32 @@ export function buildMcpServer(config, logger, options) {
310
268
  const subset = taskIndices.map((i) => batch.tasks[i]);
311
269
  // Create a fresh batch for the retried tasks so the original batch
312
270
  // entry is preserved and get_batch_slice can still retrieve it.
313
- const retryBatchId = rememberBatch(subset);
271
+ const retryBatchId = batchCache.remember(subset);
314
272
  const batchStartMs = Date.now();
315
273
  let results = [];
274
+ let retryAborted = false;
316
275
  try {
317
276
  results = await runTasksImpl(injectDefaults(subset), config, {
318
277
  runtime: { contextBlockStore },
319
278
  });
320
279
  }
280
+ catch (err) {
281
+ retryAborted = true;
282
+ throw err;
283
+ }
321
284
  finally {
322
- const retryEntry = batchCache.get(retryBatchId);
323
- if (retryEntry)
324
- retryEntry.results = results;
285
+ if (retryAborted) {
286
+ try {
287
+ batchCache.abort(retryBatchId);
288
+ }
289
+ catch { /* already terminal */ }
290
+ }
291
+ else {
292
+ try {
293
+ batchCache.complete(retryBatchId, results);
294
+ }
295
+ catch { /* already terminal */ }
296
+ }
325
297
  }
326
298
  const wallClockMs = Date.now() - batchStartMs;
327
299
  // Apply auto-escape truncation
@@ -346,9 +318,7 @@ batch is expired or evicted, re-dispatch via delegate_tasks with the full specs.
346
318
  taskIndex: z.number().int().min(0).optional().describe('0-based task index. Omit for all tasks.'),
347
319
  }, async ({ batchId, taskIndex }) => {
348
320
  const entry = batchCache.get(batchId);
349
- if (!entry || entry.expiresAt < Date.now()) {
350
- if (entry)
351
- batchCache.delete(batchId);
321
+ if (!entry) {
352
322
  return {
353
323
  content: [{
354
324
  type: 'text',
@@ -356,7 +326,7 @@ batch is expired or evicted, re-dispatch via delegate_tasks with the full specs.
356
326
  }],
357
327
  };
358
328
  }
359
- touchBatch(batchId, entry);
329
+ batchCache.touch(batchId);
360
330
  if (!entry.results) {
361
331
  return {
362
332
  content: [{
@@ -398,7 +368,7 @@ batch is expired or evicted, re-dispatch via delegate_tasks with the full specs.
398
368
  registerExecutePlan(server, config, logger, contextBlockStore);
399
369
  registerReviewCode(server, config, logger, contextBlockStore);
400
370
  registerVerifyWork(server, config, logger, contextBlockStore);
401
- registerConfirmClarifications(server, config, logger, clarificationStore, runTasksImpl, rememberBatch);
371
+ registerConfirmClarifications(server, config, logger, clarificationStore, runTasksImpl, batchCache.remember.bind(batchCache));
402
372
  return server;
403
373
  }
404
374
  /**
@@ -535,14 +505,34 @@ export function __resetStdioLifecycleHandlersForTests() {
535
505
  process.off('SIGABRT', installedLifecycleHandlers.signals.SIGABRT);
536
506
  installedLifecycleHandlers = null;
537
507
  }
508
+ export function parseHttpFlags(args) {
509
+ if (!args.includes('--http'))
510
+ return undefined;
511
+ const portIdx = args.indexOf('--port');
512
+ const bindIdx = args.indexOf('--bind');
513
+ let port;
514
+ if (portIdx >= 0 && args[portIdx + 1]) {
515
+ const n = Number.parseInt(args[portIdx + 1], 10);
516
+ if (!Number.isFinite(n) || n <= 0)
517
+ throw new Error(`--port requires a positive integer, got: ${args[portIdx + 1]}`);
518
+ port = n;
519
+ }
520
+ const bind = bindIdx >= 0 ? args[bindIdx + 1] : undefined;
521
+ return { mode: 'http', port, bind };
522
+ }
538
523
  async function main() {
539
524
  const args = process.argv.slice(2);
525
+ if (args[0] === 'status') {
526
+ const { runStatusCli } = await import('./status-cli.js');
527
+ await runStatusCli(args.slice(1));
528
+ return;
529
+ }
540
530
  if (args[0] === '--help' || args[0] === '-h') {
541
- console.log('Usage: multi-model-agent serve [--config <path>]');
531
+ console.log('Usage: multi-model-agent serve [--http [--port N] [--bind ADDR]] [--config <path>]');
542
532
  process.exit(0);
543
533
  }
544
534
  if (args[0] !== 'serve') {
545
- console.error('Usage: multi-model-agent serve [--config <path>]');
535
+ console.error('Usage: multi-model-agent serve [--http [--port N] [--bind ADDR]] [--config <path>]');
546
536
  process.exit(1);
547
537
  }
548
538
  const config = await discoverConfig();
@@ -551,6 +541,30 @@ async function main() {
551
541
  console.error('No agents configured. Create ~/.multi-model/config.json or pass --config <path>.');
552
542
  process.exit(1);
553
543
  }
544
+ const httpFlags = parseHttpFlags(args);
545
+ if (httpFlags) {
546
+ const effectiveConfig = {
547
+ ...config,
548
+ transport: {
549
+ mode: 'http',
550
+ http: {
551
+ ...config.transport.http,
552
+ ...(httpFlags.port !== undefined ? { port: httpFlags.port } : {}),
553
+ ...(httpFlags.bind !== undefined ? { bind: httpFlags.bind } : {}),
554
+ },
555
+ },
556
+ };
557
+ const { startHttpDaemon } = await import('./http/transport.js');
558
+ await startHttpDaemon(effectiveConfig);
559
+ return;
560
+ }
561
+ if (config.transport.mode === 'http') {
562
+ // config says http mode even though CLI flag was absent
563
+ const { startHttpDaemon } = await import('./http/transport.js');
564
+ await startHttpDaemon(config);
565
+ return;
566
+ }
567
+ // stdio path — unchanged from today
554
568
  const enabled = config.diagnostics?.log ?? false;
555
569
  const logDir = config.diagnostics?.logDir;
556
570
  const logger = createDiagnosticLogger({ enabled, logDir });
@@ -560,7 +574,8 @@ async function main() {
560
574
  process.stderr.write(`[multi-model-agent] diagnostic log: ${diagnosticLogPath}\n`);
561
575
  }
562
576
  installStdioLifecycleHandlers(logger);
563
- const server = buildMcpServer(config, logger);
577
+ const projectContext = createProjectContext(process.cwd());
578
+ const server = buildMcpServer(config, logger, { projectContext });
564
579
  const transport = new StdioServerTransport();
565
580
  await server.connect(transport);
566
581
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function loadToken(tokenPath: string): string;
2
+ export declare function validateAuthHeader(header: string | undefined, expected: string): {
3
+ ok: true;
4
+ } | {
5
+ ok: false;
6
+ reason: 'missing' | 'malformed' | 'mismatch';
7
+ };
8
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/http/auth.ts"],"names":[],"mappings":"AAUA,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkBnD;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,GACf;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAA;CAAE,CAU5E"}
@@ -0,0 +1,43 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import * as os from 'node:os';
4
+ import { randomBytes, timingSafeEqual } from 'node:crypto';
5
+ function expandHome(p) {
6
+ if (p.startsWith('~/'))
7
+ return path.join(os.homedir(), p.slice(2));
8
+ return p;
9
+ }
10
+ export function loadToken(tokenPath) {
11
+ const resolved = expandHome(tokenPath);
12
+ if (fs.existsSync(resolved)) {
13
+ const stat = fs.statSync(resolved);
14
+ // Warn (do not fail) if the existing file has group/other read/write bits set.
15
+ // Failing hard would break users who already have a token file with default umask.
16
+ if ((stat.mode & 0o077) !== 0) {
17
+ process.stderr.write(`[multi-model-agent] warning: token file ${resolved} has insecure permissions (mode ${(stat.mode & 0o777).toString(8)}); recommend 'chmod 0600 ${resolved}'\n`);
18
+ }
19
+ return fs.readFileSync(resolved, 'utf8').trim();
20
+ }
21
+ const dir = path.dirname(resolved);
22
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
23
+ const token = randomBytes(32).toString('base64url');
24
+ fs.writeFileSync(resolved, token + '\n', { mode: 0o600 });
25
+ return token;
26
+ }
27
+ export function validateAuthHeader(header, expected) {
28
+ if (!header)
29
+ return { ok: false, reason: 'missing' };
30
+ const parts = header.split(/\s+/);
31
+ if (parts.length !== 2)
32
+ return { ok: false, reason: 'malformed' };
33
+ if (parts[0].toLowerCase() !== 'bearer')
34
+ return { ok: false, reason: 'malformed' };
35
+ const presented = Buffer.from(parts[1]);
36
+ const expectedBuf = Buffer.from(expected);
37
+ if (presented.length !== expectedBuf.length)
38
+ return { ok: false, reason: 'mismatch' };
39
+ if (!timingSafeEqual(presented, expectedBuf))
40
+ return { ok: false, reason: 'mismatch' };
41
+ return { ok: true };
42
+ }
43
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/http/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE3D,SAAS,UAAU,CAAC,CAAS;IAC3B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnC,+EAA+E;QAC/E,mFAAmF;QACnF,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2CAA2C,QAAQ,mCAAmC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,4BAA4B,QAAQ,KAAK,CAC/J,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAA0B,EAC1B,QAAgB;IAEhB,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAClE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACnF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACtF,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACvF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export type CwdValidationError = 'missing_cwd' | 'invalid_cwd' | 'cwd_not_dir';
2
+ export type CwdValidationResult = {
3
+ ok: true;
4
+ canonicalCwd: string;
5
+ } | {
6
+ ok: false;
7
+ error: CwdValidationError;
8
+ message: string;
9
+ };
10
+ export declare function validateCwd(cwd: string | undefined): CwdValidationResult;
11
+ //# sourceMappingURL=cwd-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cwd-validator.d.ts","sourceRoot":"","sources":["../../src/http/cwd-validator.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,CAAC;AAE/E,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB,CAoBxE"}