@zhixuan92/multi-model-agent-core 2.8.0 → 3.0.1

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 (101) hide show
  1. package/README.md +10 -6
  2. package/dist/batch-registry.d.ts +60 -0
  3. package/dist/batch-registry.d.ts.map +1 -0
  4. package/dist/batch-registry.js +146 -0
  5. package/dist/batch-registry.js.map +1 -0
  6. package/dist/config/load.d.ts +8 -0
  7. package/dist/config/load.d.ts.map +1 -1
  8. package/dist/config/load.js +12 -0
  9. package/dist/config/load.js.map +1 -1
  10. package/dist/config/schema.d.ts +37 -15
  11. package/dist/config/schema.d.ts.map +1 -1
  12. package/dist/config/schema.js +48 -29
  13. package/dist/config/schema.js.map +1 -1
  14. package/dist/context/context-block-store.d.ts +8 -0
  15. package/dist/context/context-block-store.d.ts.map +1 -1
  16. package/dist/context/context-block-store.js +23 -2
  17. package/dist/context/context-block-store.js.map +1 -1
  18. package/dist/executors/audit.d.ts +7 -0
  19. package/dist/executors/audit.d.ts.map +1 -0
  20. package/dist/executors/audit.js +140 -0
  21. package/dist/executors/audit.js.map +1 -0
  22. package/dist/executors/debug.d.ts +7 -0
  23. package/dist/executors/debug.d.ts.map +1 -0
  24. package/dist/executors/debug.js +65 -0
  25. package/dist/executors/debug.js.map +1 -0
  26. package/dist/executors/delegate.d.ts +28 -0
  27. package/dist/executors/delegate.d.ts.map +1 -0
  28. package/dist/executors/delegate.js +76 -0
  29. package/dist/executors/delegate.js.map +1 -0
  30. package/dist/executors/execute-plan.d.ts +11 -0
  31. package/dist/executors/execute-plan.d.ts.map +1 -0
  32. package/dist/executors/execute-plan.js +128 -0
  33. package/dist/executors/execute-plan.js.map +1 -0
  34. package/dist/executors/index.d.ts +9 -0
  35. package/dist/executors/index.d.ts.map +1 -0
  36. package/dist/executors/index.js +10 -0
  37. package/dist/executors/index.js.map +1 -0
  38. package/dist/executors/retry.d.ts +20 -0
  39. package/dist/executors/retry.d.ts.map +1 -0
  40. package/dist/executors/retry.js +65 -0
  41. package/dist/executors/retry.js.map +1 -0
  42. package/dist/executors/review.d.ts +7 -0
  43. package/dist/executors/review.d.ts.map +1 -0
  44. package/dist/executors/review.js +128 -0
  45. package/dist/executors/review.js.map +1 -0
  46. package/dist/executors/shared-compute.d.ts +4 -0
  47. package/dist/executors/shared-compute.d.ts.map +1 -0
  48. package/dist/executors/shared-compute.js +19 -0
  49. package/dist/executors/shared-compute.js.map +1 -0
  50. package/dist/executors/types.d.ts +65 -0
  51. package/dist/executors/types.d.ts.map +1 -0
  52. package/dist/executors/types.js +2 -0
  53. package/dist/executors/types.js.map +1 -0
  54. package/dist/executors/verify.d.ts +7 -0
  55. package/dist/executors/verify.d.ts.map +1 -0
  56. package/dist/executors/verify.js +105 -0
  57. package/dist/executors/verify.js.map +1 -0
  58. package/dist/index.d.ts +4 -2
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +4 -2
  61. package/dist/index.js.map +1 -1
  62. package/dist/project-context.d.ts +5 -2
  63. package/dist/project-context.d.ts.map +1 -1
  64. package/dist/project-context.js +1 -1
  65. package/dist/project-context.js.map +1 -1
  66. package/dist/tool-schemas/audit.d.ts +27 -0
  67. package/dist/tool-schemas/audit.d.ts.map +1 -0
  68. package/dist/tool-schemas/audit.js +24 -0
  69. package/dist/tool-schemas/audit.js.map +1 -0
  70. package/dist/tool-schemas/debug.d.ts +17 -0
  71. package/dist/tool-schemas/debug.d.ts.map +1 -0
  72. package/dist/tool-schemas/debug.js +21 -0
  73. package/dist/tool-schemas/debug.js.map +1 -0
  74. package/dist/tool-schemas/delegate.d.ts +19 -0
  75. package/dist/tool-schemas/delegate.d.ts.map +1 -0
  76. package/dist/tool-schemas/delegate.js +23 -0
  77. package/dist/tool-schemas/delegate.js.map +1 -0
  78. package/dist/tool-schemas/execute-plan.d.ts +16 -0
  79. package/dist/tool-schemas/execute-plan.d.ts.map +1 -0
  80. package/dist/tool-schemas/execute-plan.js +23 -0
  81. package/dist/tool-schemas/execute-plan.js.map +1 -0
  82. package/dist/tool-schemas/index.d.ts +8 -0
  83. package/dist/tool-schemas/index.d.ts.map +1 -0
  84. package/dist/tool-schemas/index.js +9 -0
  85. package/dist/tool-schemas/index.js.map +1 -0
  86. package/dist/tool-schemas/retry.d.ts +14 -0
  87. package/dist/tool-schemas/retry.d.ts.map +1 -0
  88. package/dist/tool-schemas/retry.js +17 -0
  89. package/dist/tool-schemas/retry.js.map +1 -0
  90. package/dist/tool-schemas/review.d.ts +21 -0
  91. package/dist/tool-schemas/review.d.ts.map +1 -0
  92. package/dist/tool-schemas/review.js +21 -0
  93. package/dist/tool-schemas/review.js.map +1 -0
  94. package/dist/tool-schemas/verify.d.ts +16 -0
  95. package/dist/tool-schemas/verify.d.ts.map +1 -0
  96. package/dist/tool-schemas/verify.js +21 -0
  97. package/dist/tool-schemas/verify.js.map +1 -0
  98. package/dist/types.d.ts +15 -12
  99. package/dist/types.d.ts.map +1 -1
  100. package/dist/types.js.map +1 -1
  101. package/package.json +77 -1
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # @zhixuan92/multi-model-agent-core
2
2
 
3
- **Runtime library for multi-model-agent.** Import it to run multi-provider agent tasks directly from your own Node program — same routing, supervision, and review pipeline, no MCP client needed.
3
+ **Runtime library for multi-model-agent.** Import it to run multi-provider agent tasks directly from your own Node program — same routing, supervision, and review pipeline, without the HTTP server.
4
4
 
5
- > **Just want your AI assistant to delegate work?** Install [`@zhixuan92/multi-model-agent-mcp`](https://www.npmjs.com/package/@zhixuan92/multi-model-agent-mcp) instead — it wraps this library in an MCP server.
5
+ > **Want the standalone service instead?** Install [`@zhixuan92/multi-model-agent`](https://www.npmjs.com/package/@zhixuan92/multi-model-agent) — it wraps this library in a local HTTP daemon with client-installable skills for Claude Code, Gemini CLI, Codex CLI, and Cursor.
6
6
 
7
7
  ## Install
8
8
 
@@ -36,21 +36,25 @@ for (const r of results) {
36
36
  - **Routing engine** — capability filter → agent type → cheapest qualifier
37
37
  - **`runTasks`** — parallel dispatch, returns per-task results with usage, cost, files touched, status, and escalation log
38
38
  - **Reviewed lifecycle** — spec review + quality review by a different agent, auto-commit of file changes, file artifact verification
39
- - **Config schema** — Zod-validated, same contract as the MCP server
39
+ - **Executors** — pure `execute<Tool>(ctx, input)` functions for delegate, audit, review, verify, debug, execute-plan, retry (used by the HTTP server package)
40
+ - **Tool schemas** — Zod-validated input shapes for each tool, exportable via `./tool-schemas/*`
41
+ - **BatchRegistry** — server-wide state machine for pending / awaiting_clarification / complete / failed / expired batches with context-block refcount pinning
40
42
  - **Sandboxed tools** — `readFile`, `writeFile`, `grep`, `glob`, `listFiles`, `runShell` with `cwd-only` confinement
41
43
 
42
44
  ## Subpath exports
43
45
 
44
46
  | Subpath | What |
45
47
  |---|---|
46
- | `./config/schema` | `parseConfig`, `multiModelConfigSchema` |
47
- | `./config/load` | `loadConfigFromFile` |
48
+ | `./config/schema` | `parseConfig`, `multiModelConfigSchema`, `serverConfigSchema` |
49
+ | `./config/load` | `loadConfigFromFile`, `loadAuthToken` |
48
50
  | `./routing/resolve-agent` | `resolveAgent` — resolves agent type to provider |
49
51
  | `./routing/model-profiles` | Model cost/tier profiles |
50
52
  | `./provider` | `createProvider` factory |
51
53
  | `./run-tasks` | `runTasks` parallel dispatcher, `RunTasksOptions` |
52
54
  | `./heartbeat` | `HeartbeatTimer` — periodic progress heartbeat emitter |
53
55
  | `./types` | All shared types |
56
+ | `./executors` | Pure `execute<Tool>(ctx, input)` functions and `ExecutionContext` type |
57
+ | `./tool-schemas` | Zod input/output schemas for each tool |
54
58
  | `./intake/pipeline` | `runIntakePipeline` — compile → infer → classify → resolve |
55
59
  | `./intake/types` | `DraftTask`, `Source`, `IntakeResult`, `ClarificationEntry` |
56
60
  | `./intake/classify` | `classifyDraft` — deterministic classification heuristic |
@@ -87,7 +91,7 @@ Optionally set `diagnostics.logDir` to override the default log directory:
87
91
 
88
92
  When `diagnostics.logDir` is omitted, logs default to `~/.multi-model/logs/`.
89
93
 
90
- When enabled, the MCP diagnostic logger appends JSONL records to `mcp-YYYY-MM-DD.jsonl` in append mode.
94
+ When enabled, the diagnostic logger appends JSONL records to `mmagent-YYYY-MM-DD.jsonl` in append mode.
91
95
 
92
96
  Only crash/disconnect diagnostic events are logged: `startup`, `request_start`, `request_complete`, `shutdown`, and `error`. This is a crash-diagnosis log, not a progress feed.
93
97
 
@@ -0,0 +1,60 @@
1
+ export type BatchState = 'pending' | 'awaiting_clarification' | 'complete' | 'failed' | 'expired';
2
+ export declare function isTerminal(s: BatchState): boolean;
3
+ export interface BatchEntry<Result = unknown> {
4
+ batchId: string;
5
+ projectCwd: string;
6
+ tool: string;
7
+ state: BatchState;
8
+ result?: Result;
9
+ error?: {
10
+ code: string;
11
+ message: string;
12
+ stack?: string;
13
+ };
14
+ proposedInterpretation?: string;
15
+ confirmedInterpretation?: string;
16
+ resolveClarification?: (interpretation: string) => void;
17
+ startedAt: number;
18
+ stateChangedAt: number;
19
+ blockIds: string[];
20
+ blocksReleased: boolean;
21
+ expiredAt?: number;
22
+ }
23
+ export interface BatchRegistryOptions {
24
+ clarificationTimeoutMs?: number;
25
+ batchTtlMs?: number;
26
+ }
27
+ export interface BatchRegistryDeps {
28
+ contextBlockStore?: {
29
+ pin(id: string): void;
30
+ unpin(id: string): void;
31
+ };
32
+ }
33
+ export declare class InvalidBatchStateError extends Error {
34
+ currentState: BatchState;
35
+ constructor(currentState: BatchState);
36
+ }
37
+ export declare class BatchRegistry {
38
+ private map;
39
+ private options;
40
+ private deps;
41
+ constructor(options?: BatchRegistryOptions, deps?: BatchRegistryDeps);
42
+ register(entry: BatchEntry): void;
43
+ get(batchId: string): BatchEntry | undefined;
44
+ delete(batchId: string): boolean;
45
+ size(): number;
46
+ entries(): IterableIterator<BatchEntry>;
47
+ complete<R>(batchId: string, result: R): void;
48
+ fail(batchId: string, error: {
49
+ code: string;
50
+ message: string;
51
+ stack?: string;
52
+ }): void;
53
+ requestClarification(batchId: string, proposal: string): void;
54
+ resumeFromClarification(batchId: string, interpretation: string): void;
55
+ runClarificationTimeoutSweep(): void;
56
+ runExpirySweep(): void;
57
+ countActiveForProject(cwd: string): number;
58
+ private release;
59
+ }
60
+ //# sourceMappingURL=batch-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-registry.d.ts","sourceRoot":"","sources":["../src/batch-registry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,wBAAwB,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElG,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAEjD;AAED,MAAM,WAAW,UAAU,CAAC,MAAM,GAAG,OAAO;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,oBAAoB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE;QAClB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC;CACH;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC5B,YAAY,EAAE,UAAU;gBAAxB,YAAY,EAAE,UAAU;CAI5C;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAiC;IAC5C,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,IAAI,CAAoB;gBAEpB,OAAO,GAAE,oBAAyB,EAAE,IAAI,GAAE,iBAAsB;IAQ5E,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IASjC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI5C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIhC,IAAI,IAAI,MAAM;IAId,OAAO,IAAI,gBAAgB,CAAC,UAAU,CAAC;IAIvC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI;IAU7C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAUrF,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS7D,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAgBtE,4BAA4B,IAAI,IAAI;IAepC,cAAc,IAAI,IAAI;IAuBtB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAU1C,OAAO,CAAC,OAAO;CAShB"}
@@ -0,0 +1,146 @@
1
+ export function isTerminal(s) {
2
+ return s === 'complete' || s === 'failed' || s === 'expired';
3
+ }
4
+ export class InvalidBatchStateError extends Error {
5
+ currentState;
6
+ constructor(currentState) {
7
+ super(`invalid_batch_state: currently ${currentState}`);
8
+ this.currentState = currentState;
9
+ this.name = 'InvalidBatchStateError';
10
+ }
11
+ }
12
+ export class BatchRegistry {
13
+ map = new Map();
14
+ options;
15
+ deps;
16
+ constructor(options = {}, deps = {}) {
17
+ this.options = {
18
+ clarificationTimeoutMs: options.clarificationTimeoutMs ?? 24 * 60 * 60 * 1000,
19
+ batchTtlMs: options.batchTtlMs ?? 60 * 60 * 1000,
20
+ };
21
+ this.deps = deps;
22
+ }
23
+ register(entry) {
24
+ this.map.set(entry.batchId, entry);
25
+ if (this.deps.contextBlockStore) {
26
+ for (const bid of entry.blockIds) {
27
+ this.deps.contextBlockStore.pin(bid);
28
+ }
29
+ }
30
+ }
31
+ get(batchId) {
32
+ return this.map.get(batchId);
33
+ }
34
+ delete(batchId) {
35
+ return this.map.delete(batchId);
36
+ }
37
+ size() {
38
+ return this.map.size;
39
+ }
40
+ entries() {
41
+ return this.map.values();
42
+ }
43
+ complete(batchId, result) {
44
+ const entry = this.map.get(batchId);
45
+ if (!entry)
46
+ return;
47
+ if (isTerminal(entry.state))
48
+ return; // idempotent
49
+ entry.state = 'complete';
50
+ entry.result = result;
51
+ entry.stateChangedAt = Date.now();
52
+ this.release(entry);
53
+ }
54
+ fail(batchId, error) {
55
+ const entry = this.map.get(batchId);
56
+ if (!entry)
57
+ return;
58
+ if (isTerminal(entry.state))
59
+ return; // idempotent
60
+ entry.state = 'failed';
61
+ entry.error = error;
62
+ entry.stateChangedAt = Date.now();
63
+ this.release(entry);
64
+ }
65
+ requestClarification(batchId, proposal) {
66
+ const entry = this.map.get(batchId);
67
+ if (!entry)
68
+ return;
69
+ if (entry.state !== 'pending')
70
+ throw new InvalidBatchStateError(entry.state);
71
+ entry.state = 'awaiting_clarification';
72
+ entry.proposedInterpretation = proposal;
73
+ entry.stateChangedAt = Date.now();
74
+ }
75
+ resumeFromClarification(batchId, interpretation) {
76
+ const entry = this.map.get(batchId);
77
+ if (!entry)
78
+ return;
79
+ if (entry.state !== 'awaiting_clarification') {
80
+ // idempotency: if already resumed with THIS interpretation, no-op
81
+ if (entry.confirmedInterpretation === interpretation)
82
+ return;
83
+ throw new InvalidBatchStateError(entry.state);
84
+ }
85
+ entry.confirmedInterpretation = interpretation;
86
+ entry.state = 'pending';
87
+ entry.stateChangedAt = Date.now();
88
+ const resolver = entry.resolveClarification;
89
+ entry.resolveClarification = undefined;
90
+ if (resolver)
91
+ resolver(interpretation);
92
+ }
93
+ runClarificationTimeoutSweep() {
94
+ const now = Date.now();
95
+ for (const entry of this.map.values()) {
96
+ if (entry.state === 'awaiting_clarification' &&
97
+ now - entry.stateChangedAt > this.options.clarificationTimeoutMs) {
98
+ entry.state = 'failed';
99
+ entry.error = { code: 'clarification_abandoned', message: 'Clarification not received within timeout' };
100
+ entry.stateChangedAt = now;
101
+ this.release(entry);
102
+ }
103
+ }
104
+ }
105
+ runExpirySweep() {
106
+ const now = Date.now();
107
+ const toDelete = [];
108
+ for (const entry of this.map.values()) {
109
+ if (entry.state === 'expired') {
110
+ // second-pass: delete entries that were already marked expired
111
+ toDelete.push(entry.batchId);
112
+ }
113
+ else if ((entry.state === 'complete' || entry.state === 'failed') &&
114
+ now - entry.stateChangedAt > this.options.batchTtlMs) {
115
+ // first-pass: transition terminal entries to expired
116
+ entry.state = 'expired';
117
+ entry.expiredAt = now;
118
+ entry.stateChangedAt = now;
119
+ this.release(entry);
120
+ }
121
+ }
122
+ for (const batchId of toDelete) {
123
+ this.map.delete(batchId);
124
+ }
125
+ }
126
+ countActiveForProject(cwd) {
127
+ let count = 0;
128
+ for (const entry of this.map.values()) {
129
+ if (entry.projectCwd === cwd && !isTerminal(entry.state)) {
130
+ count++;
131
+ }
132
+ }
133
+ return count;
134
+ }
135
+ release(entry) {
136
+ if (entry.blocksReleased)
137
+ return;
138
+ if (this.deps.contextBlockStore) {
139
+ for (const bid of entry.blockIds) {
140
+ this.deps.contextBlockStore.unpin(bid);
141
+ }
142
+ }
143
+ entry.blocksReleased = true;
144
+ }
145
+ }
146
+ //# sourceMappingURL=batch-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-registry.js","sourceRoot":"","sources":["../src/batch-registry.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,12 @@
1
1
  import type { MultiModelConfig } from '../types.js';
2
+ /**
3
+ * Load the auth token for the HTTP server.
4
+ * If `MMAGENT_AUTH_TOKEN` is set in the environment, it wins over any file.
5
+ * Otherwise reads and returns the file at `opts.tokenFile`.
6
+ */
7
+ export declare function loadAuthToken(opts: {
8
+ tokenFile: string;
9
+ }): string;
2
10
  /**
3
11
  * Load and parse a config file by path.
4
12
  * No auto-lookup — callers must provide the path.
@@ -1 +1 @@
1
- {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA6BpD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiBhF"}
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAMjE;AA6BD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiBhF"}
@@ -1,5 +1,17 @@
1
1
  import fs from 'fs';
2
2
  import { multiModelConfigSchema } from './schema.js';
3
+ /**
4
+ * Load the auth token for the HTTP server.
5
+ * If `MMAGENT_AUTH_TOKEN` is set in the environment, it wins over any file.
6
+ * Otherwise reads and returns the file at `opts.tokenFile`.
7
+ */
8
+ export function loadAuthToken(opts) {
9
+ const envToken = process.env['MMAGENT_AUTH_TOKEN'];
10
+ if (envToken && envToken.length > 0) {
11
+ return envToken;
12
+ }
13
+ return fs.readFileSync(opts.tokenFile, 'utf-8').trim();
14
+ }
3
15
  /**
4
16
  * Warn if any openai-compatible agent in the parsed config carries an
5
17
  * inline `apiKey` instead of using `apiKeyEnv`. The schema permits both,
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAwB,EAAE,UAAkB;IACtE,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,IACE,KAAK,CAAC,IAAI,KAAK,mBAAmB;YAClC,OAAQ,KAA8B,CAAC,MAAM,KAAK,QAAQ,EAC1D,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,sCAAsC;QACtC,OAAO,CAAC,IAAI,CACV,gCAAgC,UAAU,mCAAmC;YAC3E,aAAa,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C;YAC3E,oEAAoE,CACvE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACvC,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7B,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjD,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACjC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChG,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAA2B;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACnD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAwB,EAAE,UAAkB;IACtE,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,IACE,KAAK,CAAC,IAAI,KAAK,mBAAmB;YAClC,OAAQ,KAA8B,CAAC,MAAM,KAAK,QAAQ,EAC1D,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,sCAAsC;QACtC,OAAO,CAAC,IAAI,CACV,gCAAgC,UAAU,mCAAmC;YAC3E,aAAa,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C;YAC3E,oEAAoE,CACvE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACvC,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7B,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjD,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACjC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChG,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,25 @@
1
1
  import { z } from 'zod';
2
2
  import type { MultiModelConfig } from '../types.js';
3
+ export declare const serverConfigSchema: z.ZodObject<{
4
+ server: z.ZodDefault<z.ZodObject<{
5
+ bind: z.ZodDefault<z.ZodString>;
6
+ port: z.ZodDefault<z.ZodNumber>;
7
+ auth: z.ZodDefault<z.ZodObject<{
8
+ tokenFile: z.ZodDefault<z.ZodString>;
9
+ }, z.core.$strip>>;
10
+ limits: z.ZodDefault<z.ZodObject<{
11
+ maxBodyBytes: z.ZodDefault<z.ZodNumber>;
12
+ batchTtlMs: z.ZodDefault<z.ZodNumber>;
13
+ idleProjectTimeoutMs: z.ZodDefault<z.ZodNumber>;
14
+ clarificationTimeoutMs: z.ZodDefault<z.ZodNumber>;
15
+ projectCap: z.ZodDefault<z.ZodNumber>;
16
+ maxBatchCacheSize: z.ZodDefault<z.ZodNumber>;
17
+ maxContextBlockBytes: z.ZodDefault<z.ZodNumber>;
18
+ maxContextBlocksPerProject: z.ZodDefault<z.ZodNumber>;
19
+ shutdownDrainMs: z.ZodDefault<z.ZodNumber>;
20
+ }, z.core.$strip>>;
21
+ }, z.core.$strip>>;
22
+ }, z.core.$strict>;
3
23
  export declare const multiModelConfigSchema: z.ZodObject<{
4
24
  agents: z.ZodObject<{
5
25
  standard: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -183,25 +203,27 @@ export declare const multiModelConfigSchema: z.ZodObject<{
183
203
  log: z.ZodDefault<z.ZodBoolean>;
184
204
  logDir: z.ZodOptional<z.ZodString>;
185
205
  }, z.core.$strip>>;
186
- transport: z.ZodDefault<z.ZodObject<{
187
- mode: z.ZodDefault<z.ZodEnum<{
188
- stdio: "stdio";
189
- http: "http";
190
- }>>;
191
- http: z.ZodDefault<z.ZodObject<{
192
- bind: z.ZodDefault<z.ZodString>;
193
- port: z.ZodDefault<z.ZodNumber>;
194
- auth: z.ZodDefault<z.ZodObject<{
195
- enabled: z.ZodDefault<z.ZodBoolean>;
196
- tokenPath: z.ZodDefault<z.ZodString>;
197
- }, z.core.$strip>>;
198
- projectIdleEvictionMs: z.ZodDefault<z.ZodNumber>;
206
+ server: z.ZodDefault<z.ZodObject<{
207
+ bind: z.ZodDefault<z.ZodString>;
208
+ port: z.ZodDefault<z.ZodNumber>;
209
+ auth: z.ZodDefault<z.ZodObject<{
210
+ tokenFile: z.ZodDefault<z.ZodString>;
211
+ }, z.core.$strip>>;
212
+ limits: z.ZodDefault<z.ZodObject<{
213
+ maxBodyBytes: z.ZodDefault<z.ZodNumber>;
214
+ batchTtlMs: z.ZodDefault<z.ZodNumber>;
215
+ idleProjectTimeoutMs: z.ZodDefault<z.ZodNumber>;
216
+ clarificationTimeoutMs: z.ZodDefault<z.ZodNumber>;
199
217
  projectCap: z.ZodDefault<z.ZodNumber>;
218
+ maxBatchCacheSize: z.ZodDefault<z.ZodNumber>;
219
+ maxContextBlockBytes: z.ZodDefault<z.ZodNumber>;
220
+ maxContextBlocksPerProject: z.ZodDefault<z.ZodNumber>;
200
221
  shutdownDrainMs: z.ZodDefault<z.ZodNumber>;
201
- sessionIdleTimeoutMs: z.ZodDefault<z.ZodNumber>;
202
222
  }, z.core.$strip>>;
203
223
  }, z.core.$strip>>;
204
- }, z.core.$strip>;
224
+ }, z.core.$strict>;
225
+ /** Inferred type for the standalone server configuration block. */
226
+ export type ServerConfig = z.infer<typeof serverConfigSchema>;
205
227
  export interface ParsedConfigSuccess {
206
228
  config: MultiModelConfig;
207
229
  success: true;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,gBAAgB,EACjB,MAAM,aAAa,CAAC;AA2GrB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAWjC,CAAC;AAEH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,EAAE,IAAI,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,KAAK,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,mBAAmB,CAAA;AAEzE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAE1D"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,gBAAgB,EACjB,MAAM,aAAa,CAAC;AA6GrB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;kBASpB,CAAC;AAEZ,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkBxB,CAAC;AAEZ,mEAAmE;AACnE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,EAAE,IAAI,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,KAAK,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,mBAAmB,CAAA;AAEzE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAE1D"}
@@ -56,40 +56,52 @@ const defaultsSchema = z.object({
56
56
  tools: 'full',
57
57
  sandboxPolicy: 'cwd-only',
58
58
  }));
59
- // Named constants are the single source of truth for transport defaults.
59
+ // Named constants are the single source of truth for server defaults.
60
60
  // Each .default(() => ({...})) references the same constant so changing a
61
61
  // value here = one edit, not three. Zod 4 requires explicit defaults at each
62
62
  // wrapper level when the parent field is omitted; `.default({})` alone does
63
63
  // not cascade to fill in leaf defaults.
64
- const DEFAULT_TRANSPORT_AUTH = {
65
- enabled: false,
66
- tokenPath: '~/.multi-model/runtime/token',
64
+ const DEFAULT_SERVER_AUTH = {
65
+ tokenFile: '~/.multi-model/auth-token',
67
66
  };
68
- const DEFAULT_TRANSPORT_HTTP = {
69
- bind: '127.0.0.1',
70
- port: 7312,
71
- auth: DEFAULT_TRANSPORT_AUTH,
72
- projectIdleEvictionMs: 60 * 60 * 1000,
73
- projectCap: 50,
67
+ const DEFAULT_SERVER_LIMITS = {
68
+ maxBodyBytes: 10_485_760,
69
+ batchTtlMs: 3_600_000,
70
+ idleProjectTimeoutMs: 1_800_000,
71
+ clarificationTimeoutMs: 86_400_000,
72
+ projectCap: 200,
73
+ maxBatchCacheSize: 500,
74
+ maxContextBlockBytes: 524_288,
75
+ maxContextBlocksPerProject: 32,
74
76
  shutdownDrainMs: 30_000,
75
- sessionIdleTimeoutMs: 30 * 60 * 1000,
76
77
  };
77
- const httpTransportSchema = z.object({
78
- bind: z.string().default(DEFAULT_TRANSPORT_HTTP.bind),
79
- port: z.number().int().positive().default(DEFAULT_TRANSPORT_HTTP.port),
80
- auth: z.object({
81
- enabled: z.boolean().default(DEFAULT_TRANSPORT_AUTH.enabled),
82
- tokenPath: z.string().default(DEFAULT_TRANSPORT_AUTH.tokenPath),
83
- }).default(() => DEFAULT_TRANSPORT_AUTH),
84
- projectIdleEvictionMs: z.number().int().positive().default(DEFAULT_TRANSPORT_HTTP.projectIdleEvictionMs),
85
- projectCap: z.number().int().positive().default(DEFAULT_TRANSPORT_HTTP.projectCap),
86
- shutdownDrainMs: z.number().int().positive().default(DEFAULT_TRANSPORT_HTTP.shutdownDrainMs),
87
- sessionIdleTimeoutMs: z.number().int().positive().default(DEFAULT_TRANSPORT_HTTP.sessionIdleTimeoutMs),
88
- }).default(() => DEFAULT_TRANSPORT_HTTP);
89
- const transportSchema = z.object({
90
- mode: z.enum(['stdio', 'http']).default('stdio'),
91
- http: httpTransportSchema,
92
- }).default(() => ({ mode: 'stdio', http: DEFAULT_TRANSPORT_HTTP }));
78
+ const DEFAULT_SERVER = {
79
+ bind: '127.0.0.1',
80
+ port: 7337,
81
+ auth: DEFAULT_SERVER_AUTH,
82
+ limits: DEFAULT_SERVER_LIMITS,
83
+ };
84
+ const serverLimitsSchema = z.object({
85
+ maxBodyBytes: z.number().int().positive().default(DEFAULT_SERVER_LIMITS.maxBodyBytes),
86
+ batchTtlMs: z.number().int().positive().default(DEFAULT_SERVER_LIMITS.batchTtlMs),
87
+ idleProjectTimeoutMs: z.number().int().positive().default(DEFAULT_SERVER_LIMITS.idleProjectTimeoutMs),
88
+ clarificationTimeoutMs: z.number().int().positive().default(DEFAULT_SERVER_LIMITS.clarificationTimeoutMs),
89
+ projectCap: z.number().int().positive().default(DEFAULT_SERVER_LIMITS.projectCap),
90
+ maxBatchCacheSize: z.number().int().positive().default(DEFAULT_SERVER_LIMITS.maxBatchCacheSize),
91
+ maxContextBlockBytes: z.number().int().positive().default(DEFAULT_SERVER_LIMITS.maxContextBlockBytes),
92
+ maxContextBlocksPerProject: z.number().int().positive().default(DEFAULT_SERVER_LIMITS.maxContextBlocksPerProject),
93
+ shutdownDrainMs: z.number().int().positive().default(DEFAULT_SERVER_LIMITS.shutdownDrainMs),
94
+ }).default(() => DEFAULT_SERVER_LIMITS);
95
+ export const serverConfigSchema = z.object({
96
+ server: z.object({
97
+ bind: z.string().default(DEFAULT_SERVER.bind),
98
+ port: z.number().int().nonnegative().default(DEFAULT_SERVER.port),
99
+ auth: z.object({
100
+ tokenFile: z.string().default(DEFAULT_SERVER_AUTH.tokenFile),
101
+ }).default(() => DEFAULT_SERVER_AUTH),
102
+ limits: serverLimitsSchema,
103
+ }).default(() => DEFAULT_SERVER),
104
+ }).strict();
93
105
  export const multiModelConfigSchema = z.object({
94
106
  agents: z.object({
95
107
  standard: agentConfigSchema,
@@ -100,8 +112,15 @@ export const multiModelConfigSchema = z.object({
100
112
  log: z.boolean().default(false),
101
113
  logDir: z.string().min(1).optional(),
102
114
  }).optional(),
103
- transport: transportSchema,
104
- });
115
+ server: z.object({
116
+ bind: z.string().default(DEFAULT_SERVER.bind),
117
+ port: z.number().int().nonnegative().default(DEFAULT_SERVER.port),
118
+ auth: z.object({
119
+ tokenFile: z.string().default(DEFAULT_SERVER_AUTH.tokenFile),
120
+ }).default(() => DEFAULT_SERVER_AUTH),
121
+ limits: serverLimitsSchema,
122
+ }).default(() => DEFAULT_SERVER),
123
+ }).strict();
105
124
  /**
106
125
  * Parse a raw config object — validates schema, no side effects.
107
126
  * Does NOT load from disk.
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,14 @@ export declare class InMemoryContextBlockStore implements ContextBlockStore {
70
70
  }): RegisteredBlock;
71
71
  get(id: string): string | undefined;
72
72
  delete(id: string): boolean;
73
+ /** Increment the pin (reference) count for an entry. Pinned entries are
74
+ * skipped during LRU eviction. No-op if the entry is unknown. */
75
+ pin(id: string): void;
76
+ /** Decrement the pin count for an entry. No-op if the entry is unknown or
77
+ * the count is already zero. */
78
+ unpin(id: string): void;
79
+ /** Return the current pin count for an entry, or 0 if unknown. */
80
+ refcount(id: string): number;
73
81
  get size(): number;
74
82
  clear(): void;
75
83
  private evictIfOverBound;
@@ -1 +1 @@
1
- {"version":3,"file":"context-block-store.d.ts","sourceRoot":"","sources":["../../src/context/context-block-store.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC;yDACqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAC;IACnE;yEACqE;IACrE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;aACtB,EAAE,EAAE,MAAM;gBAAV,EAAE,EAAE,MAAM;CAQvC;AAcD,MAAM,WAAW,gCAAgC;IAC/C,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;IACjE,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAK;gBAEL,IAAI,GAAE,gCAAqC;IAKvD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,eAAe;IAYtE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAenC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI3B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,gBAAgB;CAczB"}
1
+ {"version":3,"file":"context-block-store.d.ts","sourceRoot":"","sources":["../../src/context/context-block-store.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC;yDACqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAC;IACnE;yEACqE;IACrE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;aACtB,EAAE,EAAE,MAAM;gBAAV,EAAE,EAAE,MAAM;CAQvC;AAiBD,MAAM,WAAW,gCAAgC;IAC/C,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;IACjE,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAK;gBAEL,IAAI,GAAE,gCAAqC;IAKvD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,eAAe;IAYtE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAenC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI3B;sEACkE;IAClE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKrB;qCACiC;IACjC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKvB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAI5B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,gBAAgB;CAgBzB"}
@@ -41,7 +41,7 @@ export class InMemoryContextBlockStore {
41
41
  register(content, opts = {}) {
42
42
  const id = opts.id ?? randomUUID();
43
43
  const now = Date.now();
44
- this.entries.set(id, { content, addedAtMs: now, lastAccessTick: ++this.tick });
44
+ this.entries.set(id, { content, addedAtMs: now, lastAccessTick: ++this.tick, pinCount: 0 });
45
45
  this.evictIfOverBound();
46
46
  return {
47
47
  id,
@@ -67,6 +67,24 @@ export class InMemoryContextBlockStore {
67
67
  delete(id) {
68
68
  return this.entries.delete(id);
69
69
  }
70
+ /** Increment the pin (reference) count for an entry. Pinned entries are
71
+ * skipped during LRU eviction. No-op if the entry is unknown. */
72
+ pin(id) {
73
+ const entry = this.entries.get(id);
74
+ if (entry)
75
+ entry.pinCount += 1;
76
+ }
77
+ /** Decrement the pin count for an entry. No-op if the entry is unknown or
78
+ * the count is already zero. */
79
+ unpin(id) {
80
+ const entry = this.entries.get(id);
81
+ if (entry && entry.pinCount > 0)
82
+ entry.pinCount -= 1;
83
+ }
84
+ /** Return the current pin count for an entry, or 0 if unknown. */
85
+ refcount(id) {
86
+ return this.entries.get(id)?.pinCount ?? 0;
87
+ }
70
88
  get size() {
71
89
  return this.entries.size;
72
90
  }
@@ -78,6 +96,9 @@ export class InMemoryContextBlockStore {
78
96
  let oldestId;
79
97
  let oldestTick = Infinity;
80
98
  for (const [id, entry] of this.entries) {
99
+ // Skip pinned entries — they are held by active BatchRegistry entries
100
+ if (entry.pinCount > 0)
101
+ continue;
81
102
  if (entry.lastAccessTick < oldestTick) {
82
103
  oldestTick = entry.lastAccessTick;
83
104
  oldestId = id;
@@ -86,7 +107,7 @@ export class InMemoryContextBlockStore {
86
107
  if (oldestId)
87
108
  this.entries.delete(oldestId);
88
109
  else
89
- break;
110
+ break; // all entries pinned — cannot evict
90
111
  }
91
112
  }
92
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context-block-store.js","sourceRoot":"","sources":["../../src/context/context-block-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiCrD;;;;;GAKG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IACtB;IAA5B,YAA4B,EAAU;QACpC,KAAK,CACH,kBAAkB,EAAE,2BAA2B;YAC/C,4DAA4D;YAC5D,kFAAkF,CACnF,CAAC;QALwB,OAAE,GAAF,EAAE,CAAQ;QAMpC,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAqBD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,yBAAyB;IAC5B,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IACnC,KAAK,CAAS;IACd,UAAU,CAAS;IACnB,IAAI,GAAG,CAAC,CAAC;IAEjB,YAAY,OAAyC,EAAE;QACrD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;IAC3C,CAAC;IAED,QAAQ,CAAC,OAAe,EAAE,OAAwB,EAAE;QAClD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO;YACL,EAAE;YACF,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC3D,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,0BAA0B;YAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,oCAAoC;QACpC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QACtB,KAAK,CAAC,cAAc,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;QACnC,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3C,IAAI,QAA4B,CAAC;YACjC,IAAI,UAAU,GAAG,QAAQ,CAAC;YAC1B,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvC,IAAI,KAAK,CAAC,cAAc,GAAG,UAAU,EAAE,CAAC;oBACtC,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC;oBAClC,QAAQ,GAAG,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;YACD,IAAI,QAAQ;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;;gBACvC,MAAM;QACb,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"context-block-store.js","sourceRoot":"","sources":["../../src/context/context-block-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ExecutionContext, ExecutorOutput } from './types.js';
2
+ import type { Input } from '../tool-schemas/audit.js';
3
+ export interface AuditOutput extends ExecutorOutput {
4
+ contextBlockId?: string;
5
+ }
6
+ export declare function executeAudit(ctx: ExecutionContext, input: Input): Promise<AuditOutput>;
7
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/executors/audit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAgGtD,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,WAAW,CAAC,CAsEtB"}