@zhixuan92/multi-model-agent-core 3.0.0 → 3.1.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 +24 -21
- package/dist/batch-registry.d.ts +15 -2
- package/dist/batch-registry.d.ts.map +1 -1
- package/dist/batch-registry.js +18 -1
- package/dist/batch-registry.js.map +1 -1
- package/dist/config/load.d.ts +12 -2
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +24 -16
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +3 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +4 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/diagnostics/disconnect-log.d.ts +45 -0
- package/dist/diagnostics/disconnect-log.d.ts.map +1 -1
- package/dist/diagnostics/disconnect-log.js +96 -2
- package/dist/diagnostics/disconnect-log.js.map +1 -1
- package/dist/executors/audit.d.ts.map +1 -1
- package/dist/executors/audit.js +12 -4
- package/dist/executors/audit.js.map +1 -1
- package/dist/executors/debug.d.ts.map +1 -1
- package/dist/executors/debug.js +7 -2
- package/dist/executors/debug.js.map +1 -1
- package/dist/executors/delegate.d.ts.map +1 -1
- package/dist/executors/delegate.js +18 -4
- package/dist/executors/delegate.js.map +1 -1
- package/dist/executors/execute-plan.d.ts.map +1 -1
- package/dist/executors/execute-plan.js +12 -4
- package/dist/executors/execute-plan.js.map +1 -1
- package/dist/executors/retry.d.ts.map +1 -1
- package/dist/executors/retry.js +8 -1
- package/dist/executors/retry.js.map +1 -1
- package/dist/executors/review.d.ts.map +1 -1
- package/dist/executors/review.js +12 -4
- package/dist/executors/review.js.map +1 -1
- package/dist/executors/types.d.ts +20 -5
- package/dist/executors/types.d.ts.map +1 -1
- package/dist/executors/verify.d.ts.map +1 -1
- package/dist/executors/verify.js +12 -4
- package/dist/executors/verify.js.map +1 -1
- package/dist/heartbeat.d.ts +50 -0
- package/dist/heartbeat.d.ts.map +1 -1
- package/dist/heartbeat.js +48 -0
- package/dist/heartbeat.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/reporting/compose-running-headline.d.ts +16 -0
- package/dist/reporting/compose-running-headline.d.ts.map +1 -0
- package/dist/reporting/compose-running-headline.js +29 -0
- package/dist/reporting/compose-running-headline.js.map +1 -0
- package/dist/reporting/compose-terminal-headline.d.ts +8 -0
- package/dist/reporting/compose-terminal-headline.d.ts.map +1 -0
- package/dist/reporting/compose-terminal-headline.js +10 -0
- package/dist/reporting/compose-terminal-headline.js.map +1 -0
- package/dist/reporting/not-applicable.d.ts +9 -0
- package/dist/reporting/not-applicable.d.ts.map +1 -0
- package/dist/reporting/not-applicable.js +12 -0
- package/dist/reporting/not-applicable.js.map +1 -0
- package/dist/run-tasks.d.ts +20 -0
- package/dist/run-tasks.d.ts.map +1 -1
- package/dist/run-tasks.js +78 -3
- package/dist/run-tasks.js.map +1 -1
- package/dist/tool-schemas/audit.d.ts +28 -3
- package/dist/tool-schemas/audit.d.ts.map +1 -1
- package/dist/tool-schemas/audit.js +2 -7
- package/dist/tool-schemas/audit.js.map +1 -1
- package/dist/tool-schemas/debug.d.ts +28 -3
- package/dist/tool-schemas/debug.d.ts.map +1 -1
- package/dist/tool-schemas/debug.js +2 -7
- package/dist/tool-schemas/debug.js.map +1 -1
- package/dist/tool-schemas/delegate.d.ts +28 -3
- package/dist/tool-schemas/delegate.d.ts.map +1 -1
- package/dist/tool-schemas/delegate.js +2 -7
- package/dist/tool-schemas/delegate.js.map +1 -1
- package/dist/tool-schemas/execute-plan.d.ts +28 -3
- package/dist/tool-schemas/execute-plan.d.ts.map +1 -1
- package/dist/tool-schemas/execute-plan.js +2 -7
- package/dist/tool-schemas/execute-plan.js.map +1 -1
- package/dist/tool-schemas/retry.d.ts +28 -3
- package/dist/tool-schemas/retry.d.ts.map +1 -1
- package/dist/tool-schemas/retry.js +2 -7
- package/dist/tool-schemas/retry.js.map +1 -1
- package/dist/tool-schemas/review.d.ts +28 -3
- package/dist/tool-schemas/review.d.ts.map +1 -1
- package/dist/tool-schemas/review.js +2 -7
- package/dist/tool-schemas/review.js.map +1 -1
- package/dist/tool-schemas/shared-output.d.ts +41 -0
- package/dist/tool-schemas/shared-output.d.ts.map +1 -0
- package/dist/tool-schemas/shared-output.js +25 -0
- package/dist/tool-schemas/shared-output.js.map +1 -0
- package/dist/tool-schemas/verify.d.ts +28 -3
- package/dist/tool-schemas/verify.d.ts.map +1 -1
- package/dist/tool-schemas/verify.js +2 -7
- package/dist/tool-schemas/verify.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -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,
|
|
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
|
-
> **
|
|
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
|
-
- **
|
|
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 |
|
|
@@ -62,32 +66,31 @@ for (const r of results) {
|
|
|
62
66
|
|
|
63
67
|
## Diagnostic logging
|
|
64
68
|
|
|
65
|
-
Diagnostic logging
|
|
66
|
-
|
|
67
|
-
It stays disabled when the `diagnostics` block is absent or when `diagnostics.log` is `false` in `~/.multi-model/config.json`.
|
|
68
|
-
|
|
69
|
-
Enable it by adding this minimal config:
|
|
70
|
-
|
|
71
|
-
```json
|
|
72
|
-
{
|
|
73
|
-
"diagnostics": { "log": true }
|
|
74
|
-
}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Optionally set `diagnostics.logDir` to override the default log directory:
|
|
69
|
+
Diagnostic logging and verbose streaming are both OFF by default.
|
|
78
70
|
|
|
79
71
|
```json
|
|
80
72
|
{
|
|
81
73
|
"diagnostics": {
|
|
82
|
-
"log":
|
|
74
|
+
"log": false,
|
|
75
|
+
"verbose": false,
|
|
83
76
|
"logDir": "/some/path"
|
|
84
77
|
}
|
|
85
78
|
}
|
|
86
79
|
```
|
|
87
80
|
|
|
88
|
-
|
|
81
|
+
Two independent axes:
|
|
82
|
+
|
|
83
|
+
- **`diagnostics.log`** — when `true`, append JSONL records to `mmagent-YYYY-MM-DD.jsonl` under `diagnostics.logDir` (defaults to `~/.multi-model/logs/`).
|
|
84
|
+
- **`diagnostics.verbose`** — when `true`, the server emits per-tool-call, per-LLM-turn, per-stage-transition, and per-batch-lifecycle events. If `log` is also true, they're persisted; otherwise they stream only to the server's stderr.
|
|
89
85
|
|
|
90
|
-
|
|
86
|
+
CLI equivalents:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
mmagent serve --verbose # stream events to stderr (no file written)
|
|
90
|
+
mmagent serve --log # persist to JSONL only (no stderr noise)
|
|
91
|
+
mmagent serve --verbose --log # both
|
|
92
|
+
mmagent logs --follow --batch=<id> # tail + filter
|
|
93
|
+
```
|
|
91
94
|
|
|
92
95
|
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
96
|
|
package/dist/batch-registry.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type BatchState = 'pending' | 'awaiting_clarification' | 'complete' | 'failed' | 'expired';
|
|
2
2
|
export declare function isTerminal(s: BatchState): boolean;
|
|
3
|
-
export interface
|
|
3
|
+
export interface BatchEntryInput<Result = unknown> {
|
|
4
4
|
batchId: string;
|
|
5
5
|
projectCwd: string;
|
|
6
6
|
tool: string;
|
|
@@ -19,6 +19,18 @@ export interface BatchEntry<Result = unknown> {
|
|
|
19
19
|
blockIds: string[];
|
|
20
20
|
blocksReleased: boolean;
|
|
21
21
|
expiredAt?: number;
|
|
22
|
+
runningHeadline?: string;
|
|
23
|
+
tasksTotal?: number;
|
|
24
|
+
tasksStarted?: number;
|
|
25
|
+
tasksCompleted?: number;
|
|
26
|
+
lastHeartbeatAt?: number;
|
|
27
|
+
running?: Array<{
|
|
28
|
+
worker: string;
|
|
29
|
+
turn: number;
|
|
30
|
+
}>;
|
|
31
|
+
}
|
|
32
|
+
export interface BatchEntry<Result = unknown> extends BatchEntryInput<Result> {
|
|
33
|
+
runningHeadline: string;
|
|
22
34
|
}
|
|
23
35
|
export interface BatchRegistryOptions {
|
|
24
36
|
clarificationTimeoutMs?: number;
|
|
@@ -39,8 +51,9 @@ export declare class BatchRegistry {
|
|
|
39
51
|
private options;
|
|
40
52
|
private deps;
|
|
41
53
|
constructor(options?: BatchRegistryOptions, deps?: BatchRegistryDeps);
|
|
42
|
-
register(
|
|
54
|
+
register(input: BatchEntryInput): void;
|
|
43
55
|
get(batchId: string): BatchEntry | undefined;
|
|
56
|
+
updateRunningHeadline(batchId: string, headline: string): void;
|
|
44
57
|
delete(batchId: string): boolean;
|
|
45
58
|
size(): number;
|
|
46
59
|
entries(): IterableIterator<BatchEntry>;
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"batch-registry.d.ts","sourceRoot":"","sources":["../src/batch-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/batch-registry.js
CHANGED
|
@@ -20,7 +20,10 @@ export class BatchRegistry {
|
|
|
20
20
|
};
|
|
21
21
|
this.deps = deps;
|
|
22
22
|
}
|
|
23
|
-
register(
|
|
23
|
+
register(input) {
|
|
24
|
+
if (input.runningHeadline === undefined)
|
|
25
|
+
input.runningHeadline = '';
|
|
26
|
+
const entry = input;
|
|
24
27
|
this.map.set(entry.batchId, entry);
|
|
25
28
|
if (this.deps.contextBlockStore) {
|
|
26
29
|
for (const bid of entry.blockIds) {
|
|
@@ -31,6 +34,14 @@ export class BatchRegistry {
|
|
|
31
34
|
get(batchId) {
|
|
32
35
|
return this.map.get(batchId);
|
|
33
36
|
}
|
|
37
|
+
updateRunningHeadline(batchId, headline) {
|
|
38
|
+
const entry = this.map.get(batchId);
|
|
39
|
+
if (!entry)
|
|
40
|
+
return;
|
|
41
|
+
if (isTerminal(entry.state))
|
|
42
|
+
return;
|
|
43
|
+
entry.runningHeadline = headline;
|
|
44
|
+
}
|
|
34
45
|
delete(batchId) {
|
|
35
46
|
return this.map.delete(batchId);
|
|
36
47
|
}
|
|
@@ -133,6 +144,12 @@ export class BatchRegistry {
|
|
|
133
144
|
return count;
|
|
134
145
|
}
|
|
135
146
|
release(entry) {
|
|
147
|
+
entry.runningHeadline = '';
|
|
148
|
+
entry.tasksTotal = undefined;
|
|
149
|
+
entry.tasksStarted = undefined;
|
|
150
|
+
entry.tasksCompleted = undefined;
|
|
151
|
+
entry.lastHeartbeatAt = undefined;
|
|
152
|
+
entry.running = undefined;
|
|
136
153
|
if (entry.blocksReleased)
|
|
137
154
|
return;
|
|
138
155
|
if (this.deps.contextBlockStore) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-registry.js","sourceRoot":"","sources":["../src/batch-registry.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CAAC,CAAa;IACtC,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS,CAAC;AAC/D,CAAC;
|
|
1
|
+
{"version":3,"file":"batch-registry.js","sourceRoot":"","sources":["../src/batch-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/config/load.d.ts
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import type { MultiModelConfig } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Load the auth token for the HTTP server.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
*
|
|
5
|
+
* Env var `MMAGENT_AUTH_TOKEN` wins over any file (and bypasses file validation).
|
|
6
|
+
* File contents must be exactly `<token>\n` — no CRLF, no extra whitespace, and
|
|
7
|
+
* the token body must match `[A-Za-z0-9_\-+=/.]+`. Strict validation up front
|
|
8
|
+
* prevents hard-to-diagnose bearer-token mismatches later.
|
|
6
9
|
*/
|
|
7
10
|
export declare function loadAuthToken(opts: {
|
|
8
11
|
tokenFile: string;
|
|
9
12
|
}): string;
|
|
13
|
+
/**
|
|
14
|
+
* Return the names of openai-compatible agents carrying an inline `apiKey`
|
|
15
|
+
* instead of using `apiKeyEnv`. The schema permits both, but plaintext API
|
|
16
|
+
* keys in a config file are a backup/dotfile/git footgun — serve surfaces
|
|
17
|
+
* this once at startup so the operator can react.
|
|
18
|
+
*/
|
|
19
|
+
export declare function collectInlineApiKeyOffenders(config: MultiModelConfig): string[];
|
|
10
20
|
/**
|
|
11
21
|
* Load and parse a config file by path.
|
|
12
22
|
* 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;
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAiBjE;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAW/E;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgBhF"}
|
package/dist/config/load.js
CHANGED
|
@@ -1,25 +1,39 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import { multiModelConfigSchema } from './schema.js';
|
|
3
|
+
const TOKEN_REGEX = /^[A-Za-z0-9_\-+=/.]+$/;
|
|
3
4
|
/**
|
|
4
5
|
* Load the auth token for the HTTP server.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
|
+
* Env var `MMAGENT_AUTH_TOKEN` wins over any file (and bypasses file validation).
|
|
8
|
+
* File contents must be exactly `<token>\n` — no CRLF, no extra whitespace, and
|
|
9
|
+
* the token body must match `[A-Za-z0-9_\-+=/.]+`. Strict validation up front
|
|
10
|
+
* prevents hard-to-diagnose bearer-token mismatches later.
|
|
7
11
|
*/
|
|
8
12
|
export function loadAuthToken(opts) {
|
|
9
13
|
const envToken = process.env['MMAGENT_AUTH_TOKEN'];
|
|
10
14
|
if (envToken && envToken.length > 0) {
|
|
11
15
|
return envToken;
|
|
12
16
|
}
|
|
13
|
-
|
|
17
|
+
const raw = fs.readFileSync(opts.tokenFile, 'utf-8');
|
|
18
|
+
if (raw.includes('\r\n')) {
|
|
19
|
+
throw new Error(`config error: auth token file has CRLF line ending; use LF only (${opts.tokenFile})`);
|
|
20
|
+
}
|
|
21
|
+
if (!raw.endsWith('\n')) {
|
|
22
|
+
throw new Error(`config error: auth token file must end with exactly one LF (${opts.tokenFile})`);
|
|
23
|
+
}
|
|
24
|
+
const token = raw.slice(0, -1);
|
|
25
|
+
if (!TOKEN_REGEX.test(token)) {
|
|
26
|
+
throw new Error(`config error: auth token file has non-canonical bytes (must match [A-Za-z0-9_\\-+=/.]) (${opts.tokenFile})`);
|
|
27
|
+
}
|
|
28
|
+
return token;
|
|
14
29
|
}
|
|
15
30
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* time, once, so the operator notices.
|
|
31
|
+
* Return the names of openai-compatible agents carrying an inline `apiKey`
|
|
32
|
+
* instead of using `apiKeyEnv`. The schema permits both, but plaintext API
|
|
33
|
+
* keys in a config file are a backup/dotfile/git footgun — serve surfaces
|
|
34
|
+
* this once at startup so the operator can react.
|
|
21
35
|
*/
|
|
22
|
-
function
|
|
36
|
+
export function collectInlineApiKeyOffenders(config) {
|
|
23
37
|
const offenders = [];
|
|
24
38
|
for (const [name, agent] of Object.entries(config.agents)) {
|
|
25
39
|
if (agent.type === 'openai-compatible' &&
|
|
@@ -27,12 +41,7 @@ function warnOnInlineApiKey(config, configPath) {
|
|
|
27
41
|
offenders.push(name);
|
|
28
42
|
}
|
|
29
43
|
}
|
|
30
|
-
|
|
31
|
-
// eslint-disable-next-line no-console
|
|
32
|
-
console.warn(`[multi-model-agent] WARNING: ${configPath} stores an inline \`apiKey\` for ` +
|
|
33
|
-
`agent(s): ${offenders.join(', ')}. Prefer \`apiKeyEnv\` and read the key ` +
|
|
34
|
-
`from an environment variable so it never lands in version control.`);
|
|
35
|
-
}
|
|
44
|
+
return offenders;
|
|
36
45
|
}
|
|
37
46
|
/**
|
|
38
47
|
* Load and parse a config file by path.
|
|
@@ -49,7 +58,6 @@ export async function loadConfigFromFile(path) {
|
|
|
49
58
|
try {
|
|
50
59
|
const raw = JSON.parse(data);
|
|
51
60
|
const parsed = multiModelConfigSchema.parse(raw);
|
|
52
|
-
warnOnInlineApiKey(parsed, path);
|
|
53
61
|
resolve(parsed);
|
|
54
62
|
}
|
|
55
63
|
catch (e) {
|
package/dist/config/load.js.map
CHANGED
|
@@ -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
|
|
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,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAE5C;;;;;;;GAOG;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,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACrD,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oEAAoE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,+DAA+D,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2FAA2F,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IAChI,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAwB;IACnE,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,OAAO,SAAS,CAAC;AACnB,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,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"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export declare const serverConfigSchema: z.ZodObject<{
|
|
|
18
18
|
maxContextBlocksPerProject: z.ZodDefault<z.ZodNumber>;
|
|
19
19
|
shutdownDrainMs: z.ZodDefault<z.ZodNumber>;
|
|
20
20
|
}, z.core.$strip>>;
|
|
21
|
+
autoUpdateSkills: z.ZodDefault<z.ZodBoolean>;
|
|
21
22
|
}, z.core.$strip>>;
|
|
22
23
|
}, z.core.$strict>;
|
|
23
24
|
export declare const multiModelConfigSchema: z.ZodObject<{
|
|
@@ -202,6 +203,7 @@ export declare const multiModelConfigSchema: z.ZodObject<{
|
|
|
202
203
|
diagnostics: z.ZodOptional<z.ZodObject<{
|
|
203
204
|
log: z.ZodDefault<z.ZodBoolean>;
|
|
204
205
|
logDir: z.ZodOptional<z.ZodString>;
|
|
206
|
+
verbose: z.ZodDefault<z.ZodBoolean>;
|
|
205
207
|
}, z.core.$strip>>;
|
|
206
208
|
server: z.ZodDefault<z.ZodObject<{
|
|
207
209
|
bind: z.ZodDefault<z.ZodString>;
|
|
@@ -220,6 +222,7 @@ export declare const multiModelConfigSchema: z.ZodObject<{
|
|
|
220
222
|
maxContextBlocksPerProject: z.ZodDefault<z.ZodNumber>;
|
|
221
223
|
shutdownDrainMs: z.ZodDefault<z.ZodNumber>;
|
|
222
224
|
}, z.core.$strip>>;
|
|
225
|
+
autoUpdateSkills: z.ZodDefault<z.ZodBoolean>;
|
|
223
226
|
}, z.core.$strip>>;
|
|
224
227
|
}, z.core.$strict>;
|
|
225
228
|
/** Inferred type for the standalone server configuration block. */
|
|
@@ -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;
|
|
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;AA8GrB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;kBAUpB,CAAC;AAEZ,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoBxB,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"}
|
package/dist/config/schema.js
CHANGED
|
@@ -80,6 +80,7 @@ const DEFAULT_SERVER = {
|
|
|
80
80
|
port: 7337,
|
|
81
81
|
auth: DEFAULT_SERVER_AUTH,
|
|
82
82
|
limits: DEFAULT_SERVER_LIMITS,
|
|
83
|
+
autoUpdateSkills: true,
|
|
83
84
|
};
|
|
84
85
|
const serverLimitsSchema = z.object({
|
|
85
86
|
maxBodyBytes: z.number().int().positive().default(DEFAULT_SERVER_LIMITS.maxBodyBytes),
|
|
@@ -100,6 +101,7 @@ export const serverConfigSchema = z.object({
|
|
|
100
101
|
tokenFile: z.string().default(DEFAULT_SERVER_AUTH.tokenFile),
|
|
101
102
|
}).default(() => DEFAULT_SERVER_AUTH),
|
|
102
103
|
limits: serverLimitsSchema,
|
|
104
|
+
autoUpdateSkills: z.boolean().default(DEFAULT_SERVER.autoUpdateSkills),
|
|
103
105
|
}).default(() => DEFAULT_SERVER),
|
|
104
106
|
}).strict();
|
|
105
107
|
export const multiModelConfigSchema = z.object({
|
|
@@ -111,6 +113,7 @@ export const multiModelConfigSchema = z.object({
|
|
|
111
113
|
diagnostics: z.object({
|
|
112
114
|
log: z.boolean().default(false),
|
|
113
115
|
logDir: z.string().min(1).optional(),
|
|
116
|
+
verbose: z.boolean().default(false),
|
|
114
117
|
}).optional(),
|
|
115
118
|
server: z.object({
|
|
116
119
|
bind: z.string().default(DEFAULT_SERVER.bind),
|
|
@@ -119,6 +122,7 @@ export const multiModelConfigSchema = z.object({
|
|
|
119
122
|
tokenFile: z.string().default(DEFAULT_SERVER_AUTH.tokenFile),
|
|
120
123
|
}).default(() => DEFAULT_SERVER_AUTH),
|
|
121
124
|
limits: serverLimitsSchema,
|
|
125
|
+
autoUpdateSkills: z.boolean().default(DEFAULT_SERVER.autoUpdateSkills),
|
|
122
126
|
}).default(() => DEFAULT_SERVER),
|
|
123
127
|
}).strict();
|
|
124
128
|
/**
|
|
@@ -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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"}
|
|
@@ -51,6 +51,51 @@ export interface DiagnosticLogger {
|
|
|
51
51
|
cwd: string;
|
|
52
52
|
idleMs: number;
|
|
53
53
|
}): void;
|
|
54
|
+
taskStarted(params: {
|
|
55
|
+
batchId: string;
|
|
56
|
+
taskIndex: number;
|
|
57
|
+
worker?: string;
|
|
58
|
+
}): void;
|
|
59
|
+
taskHeartbeat(params: {
|
|
60
|
+
batchId: string;
|
|
61
|
+
taskIndex: number;
|
|
62
|
+
elapsedMs: number;
|
|
63
|
+
stage?: string;
|
|
64
|
+
}): void;
|
|
65
|
+
taskPhaseChange(params: {
|
|
66
|
+
batchId: string;
|
|
67
|
+
taskIndex: number;
|
|
68
|
+
fromStage: string;
|
|
69
|
+
toStage: string;
|
|
70
|
+
}): void;
|
|
71
|
+
toolCall(params: {
|
|
72
|
+
batchId: string;
|
|
73
|
+
taskIndex: number;
|
|
74
|
+
tool: string;
|
|
75
|
+
durationMs?: number;
|
|
76
|
+
}): void;
|
|
77
|
+
llmTurn(params: {
|
|
78
|
+
batchId: string;
|
|
79
|
+
taskIndex: number;
|
|
80
|
+
turnIndex: number;
|
|
81
|
+
provider?: string;
|
|
82
|
+
inputTokens?: number;
|
|
83
|
+
outputTokens?: number;
|
|
84
|
+
costUSD?: number | null;
|
|
85
|
+
}): void;
|
|
86
|
+
batchCompleted(params: {
|
|
87
|
+
batchId: string;
|
|
88
|
+
tool: string;
|
|
89
|
+
durationMs: number;
|
|
90
|
+
taskCount: number;
|
|
91
|
+
}): void;
|
|
92
|
+
batchFailed(params: {
|
|
93
|
+
batchId: string;
|
|
94
|
+
tool: string;
|
|
95
|
+
durationMs: number;
|
|
96
|
+
errorCode: string;
|
|
97
|
+
errorMessage: string;
|
|
98
|
+
}): void;
|
|
54
99
|
}
|
|
55
100
|
export interface CreateDiagnosticLoggerOptions {
|
|
56
101
|
enabled: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disconnect-log.d.ts","sourceRoot":"","sources":["../../src/diagnostics/disconnect-log.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,cAAc,GACd,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,SAAS,GACT,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,GACT,kBAAkB,GAClB,uBAAuB,CAAC;AAE5B,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAElI,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1E,YAAY,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GAAG,IAAI,CAAC;IACT,eAAe,CAAC,MAAM,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GAAG,IAAI,CAAC;IACT,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;IAGnC,WAAW,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnF,YAAY,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/G,kBAAkB,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5G,eAAe,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnG,cAAc,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,cAAc,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"disconnect-log.d.ts","sourceRoot":"","sources":["../../src/diagnostics/disconnect-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,6 +66,13 @@ export function createDiagnosticLogger(options) {
|
|
|
66
66
|
requestRejected: () => { },
|
|
67
67
|
projectCreated: () => { },
|
|
68
68
|
projectEvicted: () => { },
|
|
69
|
+
taskStarted: () => { },
|
|
70
|
+
taskHeartbeat: () => { },
|
|
71
|
+
taskPhaseChange: () => { },
|
|
72
|
+
toolCall: () => { },
|
|
73
|
+
llmTurn: () => { },
|
|
74
|
+
batchCompleted: () => { },
|
|
75
|
+
batchFailed: () => { },
|
|
69
76
|
};
|
|
70
77
|
}
|
|
71
78
|
const processStartTime = now().getTime();
|
|
@@ -107,7 +114,7 @@ export function createDiagnosticLogger(options) {
|
|
|
107
114
|
catch { /* noop */ }
|
|
108
115
|
}
|
|
109
116
|
mkdirSync(logDir, { recursive: true, mode: 0o700 });
|
|
110
|
-
const fd = openSync(nodePath.join(logDir, `
|
|
117
|
+
const fd = openSync(nodePath.join(logDir, `mmagent-${today}.jsonl`), 'a', 0o600);
|
|
111
118
|
state.fd = fd;
|
|
112
119
|
state.fdDate = today;
|
|
113
120
|
return fd;
|
|
@@ -223,7 +230,7 @@ export function createDiagnosticLogger(options) {
|
|
|
223
230
|
expectedPath: () => {
|
|
224
231
|
if (state.inert)
|
|
225
232
|
return undefined;
|
|
226
|
-
return nodePath.join(logDir, `
|
|
233
|
+
return nodePath.join(logDir, `mmagent-${formatUtcDate(now())}.jsonl`);
|
|
227
234
|
},
|
|
228
235
|
sessionOpen: ({ sessionId, cwd, remoteAddr }) => {
|
|
229
236
|
if (state.inert)
|
|
@@ -290,6 +297,93 @@ export function createDiagnosticLogger(options) {
|
|
|
290
297
|
idleMs,
|
|
291
298
|
});
|
|
292
299
|
},
|
|
300
|
+
taskStarted: ({ batchId, taskIndex, worker }) => {
|
|
301
|
+
if (state.inert)
|
|
302
|
+
return;
|
|
303
|
+
writeLine({
|
|
304
|
+
event: 'task_started',
|
|
305
|
+
ts: now().toISOString(),
|
|
306
|
+
batchId,
|
|
307
|
+
taskIndex,
|
|
308
|
+
...(worker !== undefined ? { worker } : {}),
|
|
309
|
+
});
|
|
310
|
+
},
|
|
311
|
+
taskHeartbeat: ({ batchId, taskIndex, elapsedMs, stage }) => {
|
|
312
|
+
if (state.inert)
|
|
313
|
+
return;
|
|
314
|
+
writeLine({
|
|
315
|
+
event: 'task_heartbeat',
|
|
316
|
+
ts: now().toISOString(),
|
|
317
|
+
batchId,
|
|
318
|
+
taskIndex,
|
|
319
|
+
elapsedMs,
|
|
320
|
+
...(stage !== undefined ? { stage } : {}),
|
|
321
|
+
});
|
|
322
|
+
},
|
|
323
|
+
taskPhaseChange: ({ batchId, taskIndex, fromStage, toStage }) => {
|
|
324
|
+
if (state.inert)
|
|
325
|
+
return;
|
|
326
|
+
writeLine({
|
|
327
|
+
event: 'task_phase_change',
|
|
328
|
+
ts: now().toISOString(),
|
|
329
|
+
batchId,
|
|
330
|
+
taskIndex,
|
|
331
|
+
fromStage,
|
|
332
|
+
toStage,
|
|
333
|
+
});
|
|
334
|
+
},
|
|
335
|
+
toolCall: ({ batchId, taskIndex, tool, durationMs }) => {
|
|
336
|
+
if (state.inert)
|
|
337
|
+
return;
|
|
338
|
+
writeLine({
|
|
339
|
+
event: 'tool_call',
|
|
340
|
+
ts: now().toISOString(),
|
|
341
|
+
batchId,
|
|
342
|
+
taskIndex,
|
|
343
|
+
tool,
|
|
344
|
+
...(durationMs !== undefined ? { durationMs } : {}),
|
|
345
|
+
});
|
|
346
|
+
},
|
|
347
|
+
llmTurn: ({ batchId, taskIndex, turnIndex, provider, inputTokens, outputTokens, costUSD }) => {
|
|
348
|
+
if (state.inert)
|
|
349
|
+
return;
|
|
350
|
+
writeLine({
|
|
351
|
+
event: 'llm_turn',
|
|
352
|
+
ts: now().toISOString(),
|
|
353
|
+
batchId,
|
|
354
|
+
taskIndex,
|
|
355
|
+
turnIndex,
|
|
356
|
+
...(provider !== undefined ? { provider } : {}),
|
|
357
|
+
...(inputTokens !== undefined ? { inputTokens } : {}),
|
|
358
|
+
...(outputTokens !== undefined ? { outputTokens } : {}),
|
|
359
|
+
...(costUSD !== undefined && costUSD !== null ? { costUSD } : {}),
|
|
360
|
+
});
|
|
361
|
+
},
|
|
362
|
+
batchCompleted: ({ batchId, tool, durationMs, taskCount }) => {
|
|
363
|
+
if (state.inert)
|
|
364
|
+
return;
|
|
365
|
+
writeLine({
|
|
366
|
+
event: 'batch_completed',
|
|
367
|
+
ts: now().toISOString(),
|
|
368
|
+
batchId,
|
|
369
|
+
tool,
|
|
370
|
+
durationMs,
|
|
371
|
+
taskCount,
|
|
372
|
+
});
|
|
373
|
+
},
|
|
374
|
+
batchFailed: ({ batchId, tool, durationMs, errorCode, errorMessage }) => {
|
|
375
|
+
if (state.inert)
|
|
376
|
+
return;
|
|
377
|
+
writeLine({
|
|
378
|
+
event: 'batch_failed',
|
|
379
|
+
ts: now().toISOString(),
|
|
380
|
+
batchId,
|
|
381
|
+
tool,
|
|
382
|
+
durationMs,
|
|
383
|
+
errorCode,
|
|
384
|
+
errorMessage,
|
|
385
|
+
});
|
|
386
|
+
},
|
|
293
387
|
};
|
|
294
388
|
}
|
|
295
389
|
//# sourceMappingURL=disconnect-log.js.map
|