@zhixuan92/multi-model-agent-core 3.0.1 → 3.1.4
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 +15 -16
- 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 +16 -2
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +38 -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 +127 -5
- 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/dist/heartbeat.d.ts
CHANGED
|
@@ -1,9 +1,50 @@
|
|
|
1
1
|
import type { ProgressEvent } from './types.js';
|
|
2
2
|
export type HeartbeatStage = 'implementing' | 'spec_review' | 'spec_rework' | 'quality_review' | 'quality_rework';
|
|
3
|
+
/**
|
|
4
|
+
* Lightweight state snapshot passed to `recordHeartbeat` on every tick (including
|
|
5
|
+
* the final flush). The server uses this — combined with the BatchRegistry entry
|
|
6
|
+
* it already holds — to compose the running headline and push it via
|
|
7
|
+
* `BatchRegistry.updateRunningHeadline`.
|
|
8
|
+
*
|
|
9
|
+
* HeartbeatTimer has no knowledge of BatchRegistry; it only emits this payload.
|
|
10
|
+
*/
|
|
11
|
+
export interface HeartbeatTickInfo {
|
|
12
|
+
batchId: string;
|
|
13
|
+
elapsedMs: number;
|
|
14
|
+
stage: HeartbeatStage;
|
|
15
|
+
stageIndex: number;
|
|
16
|
+
stageCount: number;
|
|
17
|
+
reviewRound?: number;
|
|
18
|
+
maxReviewRounds?: number;
|
|
19
|
+
provider: string;
|
|
20
|
+
progress: {
|
|
21
|
+
filesRead: number;
|
|
22
|
+
filesWritten: number;
|
|
23
|
+
toolCalls: number;
|
|
24
|
+
};
|
|
25
|
+
costUSD: number | null;
|
|
26
|
+
savedCostUSD: number | null;
|
|
27
|
+
/** Populated only on the tick immediately following a stage change. */
|
|
28
|
+
phaseChange?: {
|
|
29
|
+
from: HeartbeatStage;
|
|
30
|
+
to: HeartbeatStage;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
3
33
|
export interface HeartbeatTimerOptions {
|
|
4
34
|
provider: string;
|
|
5
35
|
parentModel?: string;
|
|
6
36
|
intervalMs?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Optional callback invoked on every HeartbeatTimer tick (including the
|
|
39
|
+
* final one). Receives a snapshot of the timer's current state so the
|
|
40
|
+
* caller can compose the running headline from the BatchRegistry entry.
|
|
41
|
+
*
|
|
42
|
+
* Core HeartbeatTimer has no knowledge of BatchRegistry — it only invokes
|
|
43
|
+
* this callback if provided.
|
|
44
|
+
*/
|
|
45
|
+
recordHeartbeat?: (tick: HeartbeatTickInfo) => void;
|
|
46
|
+
/** The batchId this timer belongs to. Required when recordHeartbeat is set. */
|
|
47
|
+
batchId?: string;
|
|
7
48
|
}
|
|
8
49
|
export interface TransitionFields {
|
|
9
50
|
stage?: HeartbeatStage;
|
|
@@ -19,6 +60,8 @@ export declare class HeartbeatTimer {
|
|
|
19
60
|
private readonly onProgress;
|
|
20
61
|
private readonly intervalMs;
|
|
21
62
|
private readonly parentModel;
|
|
63
|
+
private readonly _recordHeartbeat?;
|
|
64
|
+
private readonly _batchId?;
|
|
22
65
|
private timer;
|
|
23
66
|
private startTime;
|
|
24
67
|
private started;
|
|
@@ -34,7 +77,14 @@ export declare class HeartbeatTimer {
|
|
|
34
77
|
private toolCalls;
|
|
35
78
|
private costUSD;
|
|
36
79
|
private savedCostUSD;
|
|
80
|
+
private phaseChangeFrom;
|
|
81
|
+
private phaseChangeTo;
|
|
37
82
|
constructor(onProgress: (event: ProgressEvent) => void, options: HeartbeatTimerOptions);
|
|
83
|
+
/**
|
|
84
|
+
* Returns a snapshot of the timer's current state for use by recordHeartbeat
|
|
85
|
+
* callbacks to compose the running headline.
|
|
86
|
+
*/
|
|
87
|
+
getHeartbeatTickInfo(): HeartbeatTickInfo;
|
|
38
88
|
start(stageCount: number): void;
|
|
39
89
|
stop(): void;
|
|
40
90
|
transition(fields: TransitionFields): void;
|
package/dist/heartbeat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../src/heartbeat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAUhD,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAclH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../src/heartbeat.ts"],"names":[],"mappings":"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"}
|
package/dist/heartbeat.js
CHANGED
|
@@ -20,6 +20,8 @@ export class HeartbeatTimer {
|
|
|
20
20
|
onProgress;
|
|
21
21
|
intervalMs;
|
|
22
22
|
parentModel;
|
|
23
|
+
_recordHeartbeat;
|
|
24
|
+
_batchId;
|
|
23
25
|
timer = null;
|
|
24
26
|
startTime = 0;
|
|
25
27
|
started = false;
|
|
@@ -38,11 +40,47 @@ export class HeartbeatTimer {
|
|
|
38
40
|
// Cost
|
|
39
41
|
costUSD = null;
|
|
40
42
|
savedCostUSD = null;
|
|
43
|
+
// Most recent phase-change, surfaced via getHeartbeatTickInfo so callers can
|
|
44
|
+
// emit task_phase_change events. Cleared after each getHeartbeatTickInfo read.
|
|
45
|
+
phaseChangeFrom = null;
|
|
46
|
+
phaseChangeTo = null;
|
|
41
47
|
constructor(onProgress, options) {
|
|
42
48
|
this.onProgress = onProgress;
|
|
43
49
|
this.provider = options.provider;
|
|
44
50
|
this.parentModel = options.parentModel;
|
|
45
51
|
this.intervalMs = options.intervalMs ?? 5000;
|
|
52
|
+
this._recordHeartbeat = options.recordHeartbeat;
|
|
53
|
+
this._batchId = options.batchId;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Returns a snapshot of the timer's current state for use by recordHeartbeat
|
|
57
|
+
* callbacks to compose the running headline.
|
|
58
|
+
*/
|
|
59
|
+
getHeartbeatTickInfo() {
|
|
60
|
+
const phaseChange = this.phaseChangeFrom !== null && this.phaseChangeTo !== null
|
|
61
|
+
? { from: this.phaseChangeFrom, to: this.phaseChangeTo }
|
|
62
|
+
: undefined;
|
|
63
|
+
// Consume the pending phase change so the next tick doesn't re-fire it.
|
|
64
|
+
this.phaseChangeFrom = null;
|
|
65
|
+
this.phaseChangeTo = null;
|
|
66
|
+
return {
|
|
67
|
+
batchId: this._batchId ?? '',
|
|
68
|
+
elapsedMs: this.startTime > 0 ? Date.now() - this.startTime : 0,
|
|
69
|
+
stage: this.stage,
|
|
70
|
+
stageIndex: this.stageIndex,
|
|
71
|
+
stageCount: this.stageCount,
|
|
72
|
+
reviewRound: this.reviewRound,
|
|
73
|
+
maxReviewRounds: this.maxReviewRounds,
|
|
74
|
+
provider: this.provider,
|
|
75
|
+
progress: {
|
|
76
|
+
filesRead: this.filesRead,
|
|
77
|
+
filesWritten: this.filesWritten,
|
|
78
|
+
toolCalls: this.toolCalls,
|
|
79
|
+
},
|
|
80
|
+
costUSD: this.costUSD,
|
|
81
|
+
savedCostUSD: this.savedCostUSD,
|
|
82
|
+
...(phaseChange !== undefined && { phaseChange }),
|
|
83
|
+
};
|
|
46
84
|
}
|
|
47
85
|
start(stageCount) {
|
|
48
86
|
// Clear any existing timer without emitting final heartbeat
|
|
@@ -99,8 +137,13 @@ export class HeartbeatTimer {
|
|
|
99
137
|
// Apply stage with invariant enforcement
|
|
100
138
|
if (fields.stage !== undefined) {
|
|
101
139
|
const newStageIndex = fields.stageIndex ?? this.stageIndex;
|
|
140
|
+
const prevStage = this.stage;
|
|
102
141
|
this.stage = fields.stage;
|
|
103
142
|
this.stageIndex = newStageIndex;
|
|
143
|
+
if (prevStage !== fields.stage) {
|
|
144
|
+
this.phaseChangeFrom = prevStage;
|
|
145
|
+
this.phaseChangeTo = fields.stage;
|
|
146
|
+
}
|
|
104
147
|
// Auto-clear review fields for implementing
|
|
105
148
|
if (fields.stage === 'implementing') {
|
|
106
149
|
this.reviewRound = undefined;
|
|
@@ -194,6 +237,11 @@ export class HeartbeatTimer {
|
|
|
194
237
|
final,
|
|
195
238
|
headline: this.composeHeadline(elapsed),
|
|
196
239
|
});
|
|
240
|
+
// Push a tick snapshot so the server can recompose the running headline
|
|
241
|
+
// and call BatchRegistry.updateRunningHeadline on every tick.
|
|
242
|
+
if (this._recordHeartbeat) {
|
|
243
|
+
this._recordHeartbeat(this.getHeartbeatTickInfo());
|
|
244
|
+
}
|
|
197
245
|
}
|
|
198
246
|
composeHeadline(elapsed) {
|
|
199
247
|
const prefix = `[${this.stageIndex}/${this.stageCount}] ${STAGE_LABELS[this.stage]}`;
|
package/dist/heartbeat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../src/heartbeat.ts"],"names":[],"mappings":"AAEA,SAAS,aAAa,CAAC,EAAU;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,GAAG,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC;IAC7B,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;AACnC,CAAC;AAID,MAAM,YAAY,GAAmC;IACnD,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;CACjC,CAAC;AAEF,MAAM,aAAa,GAAgC,IAAI,GAAG,CAAC;IACzD,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB;CACjE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../src/heartbeat.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
export { loadConfigFromFile, loadAuthToken } from './config/load.js';
|
|
1
|
+
export { loadConfigFromFile, loadAuthToken, collectInlineApiKeyOffenders } from './config/load.js';
|
|
2
2
|
export { parseConfig, multiModelConfigSchema, serverConfigSchema } from './config/schema.js';
|
|
3
3
|
export type { ServerConfig } from './config/schema.js';
|
|
4
4
|
export type { ToolMode, SandboxPolicy, AgentType, AgentCapability, AgentConfig, Effort, CostTier, RunStatus, TaskSpec, ProviderConfig, CodexProviderConfig, ClaudeProviderConfig, OpenAICompatibleProviderConfig, MultiModelConfig, TokenUsage, RunResult, BatchTimings, BatchProgress, BatchAggregateCost, Provider, RunOptions, RunTasksRuntime, ProgressEvent, InternalRunnerEvent, EligibilityFailureCheck, EligibilityFailure, ProviderEligibility, BriefQualityWarning, BriefQualityPolicy, ReadinessResult, } from './types.js';
|
|
5
5
|
export { ParsedStructuredReport } from './reporting/structured-report.js';
|
|
6
|
+
export { notApplicableSchema, notApplicable, isNotApplicable, type NotApplicable } from './reporting/not-applicable.js';
|
|
7
|
+
export { composeRunningHeadline, type RunningState, type RunningTask } from './reporting/compose-running-headline.js';
|
|
8
|
+
export { composeTerminalHeadline, type TerminalHeadlineInput } from './reporting/compose-terminal-headline.js';
|
|
6
9
|
export { InMemoryContextBlockStore, ContextBlockNotFoundError, } from './context/context-block-store.js';
|
|
7
10
|
export type { ContextBlockStore, RegisteredBlock, InMemoryContextBlockStoreOptions, } from './context/context-block-store.js';
|
|
8
11
|
export { expandContextBlocks } from './context/expand-context-blocks.js';
|
|
@@ -14,7 +17,7 @@ export type { ProjectContext } from './project-context.js';
|
|
|
14
17
|
export { runTasks } from './run-tasks.js';
|
|
15
18
|
export type { RunTasksOptions } from './run-tasks.js';
|
|
16
19
|
export { HeartbeatTimer } from './heartbeat.js';
|
|
17
|
-
export type { HeartbeatTimerOptions, HeartbeatStage, TransitionFields } from './heartbeat.js';
|
|
20
|
+
export type { HeartbeatTimerOptions, HeartbeatStage, TransitionFields, HeartbeatTickInfo, } from './heartbeat.js';
|
|
18
21
|
export { evaluateReadiness, hasScopePillar, hasInputsPillar, hasDoneConditionPillar, hasOutputContractPillar, detectOutsourcedDiscovery, detectBrittleLineAnchors, detectMixedEnvironmentActions, detectConcretePath, detectNamedCodeArtifact, detectReasonableLength, } from './readiness/readiness.js';
|
|
19
22
|
export { resolveAgent } from './routing/resolve-agent.js';
|
|
20
23
|
export type { ResolvedAgent } from './routing/resolve-agent.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
// Config
|
|
2
|
-
export { loadConfigFromFile, loadAuthToken } from './config/load.js';
|
|
2
|
+
export { loadConfigFromFile, loadAuthToken, collectInlineApiKeyOffenders } from './config/load.js';
|
|
3
3
|
export { parseConfig, multiModelConfigSchema, serverConfigSchema } from './config/schema.js';
|
|
4
|
+
export { notApplicableSchema, notApplicable, isNotApplicable } from './reporting/not-applicable.js';
|
|
5
|
+
export { composeRunningHeadline } from './reporting/compose-running-headline.js';
|
|
6
|
+
export { composeTerminalHeadline } from './reporting/compose-terminal-headline.js';
|
|
4
7
|
// Context blocks
|
|
5
8
|
export { InMemoryContextBlockStore, ContextBlockNotFoundError, } from './context/context-block-store.js';
|
|
6
9
|
export { expandContextBlocks } from './context/expand-context-blocks.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAqC7F,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,+BAA+B,CAAC;AACxH,OAAO,EAAE,sBAAsB,EAAuC,MAAM,yCAAyC,CAAC;AACtH,OAAO,EAAE,uBAAuB,EAA8B,MAAM,0CAA0C,CAAC;AAE/G,iBAAiB;AACjB,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,kCAAkC,CAAC;AAM1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,kBAAkB;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,YAAY;AACZ,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAQhD,YAAY;AACZ,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAElC,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAErF,kBAAkB;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAuB3D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEtF,iBAAiB;AACjB,cAAc,qBAAqB,CAAC;AAEpC,cAAc;AACd,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface RunningTask {
|
|
2
|
+
worker: string;
|
|
3
|
+
turn: number;
|
|
4
|
+
}
|
|
5
|
+
export interface RunningState {
|
|
6
|
+
tasksTotal: number;
|
|
7
|
+
tasksStarted: number;
|
|
8
|
+
tasksCompleted: number;
|
|
9
|
+
startedAt: number;
|
|
10
|
+
nowMs: number;
|
|
11
|
+
lastHeartbeatAt: number;
|
|
12
|
+
running: RunningTask[];
|
|
13
|
+
heartbeatIntervalMs?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function composeRunningHeadline(s: RunningState): string;
|
|
16
|
+
//# sourceMappingURL=compose-running-headline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-running-headline.d.ts","sourceRoot":"","sources":["../../src/reporting/compose-running-headline.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAID,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CA6B9D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const DEFAULT_HEARTBEAT_INTERVAL_MS = 15_000;
|
|
2
|
+
export function composeRunningHeadline(s) {
|
|
3
|
+
const tasksTotal = Math.max(0, s.tasksTotal);
|
|
4
|
+
const tasksStarted = Math.min(tasksTotal, Math.max(0, s.tasksStarted));
|
|
5
|
+
const tasksCompleted = Math.min(tasksStarted, Math.max(0, s.tasksCompleted));
|
|
6
|
+
const elapsedS = Math.max(0, Math.floor((s.nowMs - s.startedAt) / 1000));
|
|
7
|
+
const hbInterval = s.heartbeatIntervalMs ?? DEFAULT_HEARTBEAT_INTERVAL_MS;
|
|
8
|
+
const stallThresholdMs = 2 * hbInterval;
|
|
9
|
+
const sinceHeartbeatMs = s.lastHeartbeatAt > 0 ? Math.max(0, s.nowMs - s.lastHeartbeatAt) : 0;
|
|
10
|
+
const stalled = s.lastHeartbeatAt > 0 && sinceHeartbeatMs > stallThresholdMs;
|
|
11
|
+
const stallStr = stalled ? ` (stalled: no heartbeat for ${Math.floor(sinceHeartbeatMs / 1000)}s)` : '';
|
|
12
|
+
if (tasksTotal === 0) {
|
|
13
|
+
return `no tasks, ${elapsedS}s elapsed`;
|
|
14
|
+
}
|
|
15
|
+
if (tasksTotal === 1) {
|
|
16
|
+
if (tasksStarted === 0) {
|
|
17
|
+
return `1/1 queued, ${elapsedS}s elapsed`;
|
|
18
|
+
}
|
|
19
|
+
if (tasksCompleted === 1) {
|
|
20
|
+
return `1/1 complete, ${elapsedS}s elapsed`;
|
|
21
|
+
}
|
|
22
|
+
const w = s.running[0];
|
|
23
|
+
const workerStr = w ? `, worker: ${w.worker} (turn ${w.turn})` : '';
|
|
24
|
+
return `1/1 running, ${elapsedS}s elapsed${stallStr}${workerStr}`;
|
|
25
|
+
}
|
|
26
|
+
const nRunning = Math.max(0, tasksStarted - tasksCompleted);
|
|
27
|
+
return `${tasksCompleted}/${tasksTotal} complete, ${nRunning} running, ${elapsedS}s elapsed${stallStr}`;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=compose-running-headline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-running-headline.js","sourceRoot":"","sources":["../../src/reporting/compose-running-headline.ts"],"names":[],"mappings":"AAgBA,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAE7C,MAAM,UAAU,sBAAsB,CAAC,CAAe;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,CAAC,CAAC,mBAAmB,IAAI,6BAA6B,CAAC;IAC1E,MAAM,gBAAgB,GAAG,CAAC,GAAG,UAAU,CAAC;IACxC,MAAM,gBAAgB,GAAG,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,OAAO,GAAG,CAAC,CAAC,eAAe,GAAG,CAAC,IAAI,gBAAgB,GAAG,gBAAgB,CAAC;IAC7E,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,+BAA+B,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvG,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,aAAa,QAAQ,WAAW,CAAC;IAC1C,CAAC;IAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,eAAe,QAAQ,WAAW,CAAC;QAC5C,CAAC;QACD,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,iBAAiB,QAAQ,WAAW,CAAC;QAC9C,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,gBAAgB,QAAQ,YAAY,QAAQ,GAAG,SAAS,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,cAAc,CAAC,CAAC;IAC5D,OAAO,GAAG,cAAc,IAAI,UAAU,cAAc,QAAQ,aAAa,QAAQ,YAAY,QAAQ,EAAE,CAAC;AAC1G,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface TerminalHeadlineInput {
|
|
2
|
+
tool: string;
|
|
3
|
+
awaitingClarification: boolean;
|
|
4
|
+
tasksTotal: number;
|
|
5
|
+
tasksCompleted: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function composeTerminalHeadline(input: TerminalHeadlineInput): string;
|
|
8
|
+
//# sourceMappingURL=compose-terminal-headline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-terminal-headline.d.ts","sourceRoot":"","sources":["../../src/reporting/compose-terminal-headline.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB,EAAE,OAAO,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAM5E"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function composeTerminalHeadline(input) {
|
|
2
|
+
const { tool, awaitingClarification, tasksTotal, tasksCompleted } = input;
|
|
3
|
+
if (awaitingClarification)
|
|
4
|
+
return `${tool}: awaiting clarification`;
|
|
5
|
+
if (tasksTotal <= 0)
|
|
6
|
+
return `${tool}: no tasks executed`;
|
|
7
|
+
const completed = Math.max(0, Math.min(tasksCompleted, tasksTotal));
|
|
8
|
+
return `${tool}: ${completed}/${tasksTotal} tasks complete`;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=compose-terminal-headline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-terminal-headline.js","sourceRoot":"","sources":["../../src/reporting/compose-terminal-headline.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,uBAAuB,CAAC,KAA4B;IAClE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAC1E,IAAI,qBAAqB;QAAE,OAAO,GAAG,IAAI,0BAA0B,CAAC;IACpE,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,GAAG,IAAI,qBAAqB,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;IACpE,OAAO,GAAG,IAAI,KAAK,SAAS,IAAI,UAAU,iBAAiB,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const notApplicableSchema: z.ZodObject<{
|
|
3
|
+
kind: z.ZodLiteral<"not_applicable">;
|
|
4
|
+
reason: z.ZodString;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
export type NotApplicable = z.infer<typeof notApplicableSchema>;
|
|
7
|
+
export declare function notApplicable(reason: string): NotApplicable;
|
|
8
|
+
export declare function isNotApplicable(v: unknown): v is NotApplicable;
|
|
9
|
+
//# sourceMappingURL=not-applicable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-applicable.d.ts","sourceRoot":"","sources":["../../src/reporting/not-applicable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;iBAG9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAE3D;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,aAAa,CAE9D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const notApplicableSchema = z.object({
|
|
3
|
+
kind: z.literal('not_applicable'),
|
|
4
|
+
reason: z.string().min(1),
|
|
5
|
+
});
|
|
6
|
+
export function notApplicable(reason) {
|
|
7
|
+
return { kind: 'not_applicable', reason };
|
|
8
|
+
}
|
|
9
|
+
export function isNotApplicable(v) {
|
|
10
|
+
return typeof v === 'object' && v !== null && v.kind === 'not_applicable';
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=not-applicable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-applicable.js","sourceRoot":"","sources":["../../src/reporting/not-applicable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC;AAIH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAU;IACxC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAK,CAAmB,CAAC,IAAI,KAAK,gBAAgB,CAAC;AAC/F,CAAC"}
|
package/dist/run-tasks.d.ts
CHANGED
|
@@ -4,6 +4,26 @@ export type RunTasksProgressCallback = (taskIndex: number, event: ProgressEvent)
|
|
|
4
4
|
export interface RunTasksOptions {
|
|
5
5
|
onProgress?: RunTasksProgressCallback;
|
|
6
6
|
runtime?: RunTasksRuntime;
|
|
7
|
+
/** Batch ID this run belongs to; threaded to HeartbeatTimer when set. */
|
|
8
|
+
batchId?: string;
|
|
9
|
+
/** Callback fired on every heartbeat tick with a state snapshot. */
|
|
10
|
+
recordHeartbeat?: (tick: import('./heartbeat.js').HeartbeatTickInfo) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Optional DiagnosticLogger. When present AND `verbose` is true, the
|
|
13
|
+
* runner records per-tool-call + per-LLM-turn events for post-mortem
|
|
14
|
+
* diagnosis of slow tasks. Logger writes are a no-op if diagnostics.log=false,
|
|
15
|
+
* so passing it is always safe.
|
|
16
|
+
*/
|
|
17
|
+
logger?: import('./diagnostics/disconnect-log.js').DiagnosticLogger;
|
|
18
|
+
/**
|
|
19
|
+
* Enable verbose emissions. When true, each tool call and LLM turn is
|
|
20
|
+
* streamed to `verboseStream` (default: process.stderr) so the operator
|
|
21
|
+
* sees the server's work live. Orthogonal to `diagnostics.log` — you
|
|
22
|
+
* can have live streaming without persisting a JSONL file.
|
|
23
|
+
*/
|
|
24
|
+
verbose?: boolean;
|
|
25
|
+
/** Injectable stream target for verbose output. Defaults to process.stderr. */
|
|
26
|
+
verboseStream?: (line: string) => void;
|
|
7
27
|
}
|
|
8
28
|
export declare function runTasks(tasks: TaskSpec[], config: MultiModelConfig, options?: RunTasksOptions): Promise<RunResult[]>;
|
|
9
29
|
//# sourceMappingURL=run-tasks.d.ts.map
|
package/dist/run-tasks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-tasks.d.ts","sourceRoot":"","sources":["../src/run-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EAET,QAAQ,EACR,gBAAgB,EAEhB,aAAa,EACb,eAAe,EAIhB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"run-tasks.d.ts","sourceRoot":"","sources":["../src/run-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EAET,QAAQ,EACR,gBAAgB,EAEhB,aAAa,EACb,eAAe,EAIhB,MAAM,YAAY,CAAC;AAsBpB,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EAAE,EACvB,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA6C7B;AAED,MAAM,MAAM,wBAAwB,GAAG,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,KACjB,IAAI,CAAC;AAEV,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,gBAAgB,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7E;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,iCAAiC,EAAE,gBAAgB,CAAC;IACpE;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AA+pBD,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,SAAS,EAAE,CAAC,CAsHtB"}
|
package/dist/run-tasks.js
CHANGED
|
@@ -124,7 +124,7 @@ function buildFallbackImplReport(result) {
|
|
|
124
124
|
unresolved: [],
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
|
-
async function executeReviewedLifecycle(task, resolved, config, taskIndex, onProgress) {
|
|
127
|
+
async function executeReviewedLifecycle(task, resolved, config, taskIndex, onProgress, heartbeatWiring, diagnostics) {
|
|
128
128
|
const reviewPolicy = task.reviewPolicy ?? 'full';
|
|
129
129
|
const otherSlot = resolved.slot === 'standard' ? 'complex' : 'standard';
|
|
130
130
|
// Partition filePaths into output targets before the worker runs.
|
|
@@ -140,14 +140,93 @@ async function executeReviewedLifecycle(task, resolved, config, taskIndex, onPro
|
|
|
140
140
|
const stageCount = reviewPolicy === 'off' ? 1 :
|
|
141
141
|
reviewPolicy === 'spec_only' ? 3 :
|
|
142
142
|
5;
|
|
143
|
-
const
|
|
144
|
-
|
|
143
|
+
const verbose = diagnostics?.verbose ?? false;
|
|
144
|
+
let lastStageSeen;
|
|
145
|
+
const verboseStreamRaw = verbose
|
|
146
|
+
? (diagnostics?.verboseStream ?? ((line) => { process.stderr.write(line + '\n'); }))
|
|
147
|
+
: undefined;
|
|
148
|
+
const verboseBatchIdEarly = heartbeatWiring?.batchId;
|
|
149
|
+
const shortBatchEarly = verboseBatchIdEarly ? verboseBatchIdEarly.slice(0, 8) : '????????';
|
|
150
|
+
// Start the heartbeat whenever there's a downstream consumer:
|
|
151
|
+
// - onProgress (external progress callback from the runTasks caller)
|
|
152
|
+
// - verbose (stderr stream needs the heartbeat's tool_call / turn_complete relay)
|
|
153
|
+
// - recordHeartbeat (server needs heartbeat ticks to update BatchRegistry)
|
|
154
|
+
// - logger (post-mortem JSONL logging needs the events too)
|
|
155
|
+
// Otherwise there is no point creating a timer.
|
|
156
|
+
const needHeartbeat = onProgress !== undefined ||
|
|
157
|
+
verbose ||
|
|
158
|
+
heartbeatWiring?.recordHeartbeat !== undefined ||
|
|
159
|
+
diagnostics?.logger !== undefined;
|
|
160
|
+
// Synthesize an onProgress sink when the caller didn't pass one — the
|
|
161
|
+
// heartbeat needs a place to emit heartbeat events so the stage-change
|
|
162
|
+
// detector below fires. Discards events if there is no external consumer.
|
|
163
|
+
const synthOnProgress = onProgress ?? (() => { });
|
|
164
|
+
const heartbeat = needHeartbeat
|
|
165
|
+
? new HeartbeatTimer((event) => {
|
|
166
|
+
if (verboseStreamRaw && event.kind === 'heartbeat') {
|
|
167
|
+
// Emit on every heartbeat tick so the operator can confirm
|
|
168
|
+
// the timer is actually firing. Stage-change lines are richer
|
|
169
|
+
// but fire only on transitions; plain ticks let you see
|
|
170
|
+
// per-5s progress inside a long-running stage.
|
|
171
|
+
if (event.stage !== lastStageSeen) {
|
|
172
|
+
if (lastStageSeen !== undefined) {
|
|
173
|
+
verboseStreamRaw(`[mmagent verbose] batch=${shortBatchEarly} task=${taskIndex} stage ${lastStageSeen} → ${event.stage}`);
|
|
174
|
+
}
|
|
175
|
+
lastStageSeen = event.stage;
|
|
176
|
+
}
|
|
177
|
+
const costStr = event.costUSD !== null ? ` cost=$${event.costUSD.toFixed(4)}` : '';
|
|
178
|
+
const roundStr = event.reviewRound !== undefined && event.maxReviewRounds !== undefined
|
|
179
|
+
? ` round=${event.reviewRound}/${event.maxReviewRounds}`
|
|
180
|
+
: '';
|
|
181
|
+
const sinceLastMs = Date.now() - prevEventAtMs;
|
|
182
|
+
verboseStreamRaw(`[mmagent verbose] batch=${shortBatchEarly} task=${taskIndex} heartbeat ${event.elapsed} stage=${event.stage}${roundStr} tools=${event.progress.toolCalls} read=${event.progress.filesRead} wrote=${event.progress.filesWritten} text=${textEmissionChars}c${costStr} idle=${sinceLastMs}ms`);
|
|
183
|
+
}
|
|
184
|
+
synthOnProgress(taskIndex, event);
|
|
185
|
+
}, {
|
|
186
|
+
provider: resolved.provider.config.model,
|
|
187
|
+
parentModel: task.parentModel,
|
|
188
|
+
...(heartbeatWiring?.batchId !== undefined && { batchId: heartbeatWiring.batchId }),
|
|
189
|
+
...(heartbeatWiring?.recordHeartbeat !== undefined && { recordHeartbeat: heartbeatWiring.recordHeartbeat }),
|
|
190
|
+
})
|
|
145
191
|
: undefined;
|
|
146
192
|
heartbeat?.start(stageCount);
|
|
193
|
+
if (verboseStreamRaw) {
|
|
194
|
+
verboseStreamRaw(`[mmagent verbose] batch=${shortBatchEarly} task=${taskIndex} heartbeat ` +
|
|
195
|
+
(heartbeat ? `started (stageCount=${stageCount}, 5s tick)` : 'DISABLED (no consumer)'));
|
|
196
|
+
}
|
|
147
197
|
const implModel = resolved.provider.config.model;
|
|
148
198
|
const progressCounters = { filesRead: 0, filesWritten: 0, toolCalls: 0 };
|
|
149
|
-
const
|
|
199
|
+
const verboseLogger = verbose && diagnostics?.logger ? diagnostics.logger : undefined;
|
|
200
|
+
const verboseBatchId = verboseBatchIdEarly;
|
|
201
|
+
const verboseStream = verboseStreamRaw;
|
|
202
|
+
const shortBatch = shortBatchEarly;
|
|
203
|
+
if (verboseStream) {
|
|
204
|
+
verboseStream(`[mmagent verbose] batch=${shortBatch} task=${taskIndex} start worker=${resolved.provider.config.model}`);
|
|
205
|
+
}
|
|
206
|
+
let prevEventAtMs = verbose ? Date.now() : 0;
|
|
207
|
+
// Wrap whenever we have ANY consumer for InternalRunnerEvent (heartbeat,
|
|
208
|
+
// verbose stream, or verbose logger). Previously this only wrapped when
|
|
209
|
+
// the caller passed onProgress, so --verbose + HTTP handlers (which don't
|
|
210
|
+
// pass onProgress) silently dropped every tool_call / turn_complete event.
|
|
211
|
+
let textEmissionChars = 0;
|
|
212
|
+
const wrappedOnProgress = needHeartbeat
|
|
150
213
|
? (event) => {
|
|
214
|
+
if (event.kind === 'turn_start') {
|
|
215
|
+
if (verbose)
|
|
216
|
+
prevEventAtMs = Date.now();
|
|
217
|
+
if (verboseStream) {
|
|
218
|
+
verboseStream(`[mmagent verbose] batch=${shortBatch} task=${taskIndex} turn_start turn=${event.turn} provider=${event.provider}`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (event.kind === 'text_emission') {
|
|
222
|
+
textEmissionChars += event.chars;
|
|
223
|
+
if (verboseStream && event.chars > 0) {
|
|
224
|
+
const preview = event.preview.length > 60
|
|
225
|
+
? event.preview.slice(0, 57) + '...'
|
|
226
|
+
: event.preview;
|
|
227
|
+
verboseStream(`[mmagent verbose] batch=${shortBatch} task=${taskIndex} text +${event.chars}c (total ${textEmissionChars}) preview="${preview.replace(/\n/g, '\\n')}"`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
151
230
|
if (event.kind === 'tool_call') {
|
|
152
231
|
progressCounters.toolCalls++;
|
|
153
232
|
const name = event.toolSummary.split('(')[0];
|
|
@@ -158,11 +237,47 @@ async function executeReviewedLifecycle(task, resolved, config, taskIndex, onPro
|
|
|
158
237
|
progressCounters.filesWritten++;
|
|
159
238
|
}
|
|
160
239
|
heartbeat?.updateProgress(progressCounters.filesRead, progressCounters.filesWritten, progressCounters.toolCalls);
|
|
240
|
+
const now = verbose ? Date.now() : 0;
|
|
241
|
+
const sincePrevMs = verbose ? now - prevEventAtMs : 0;
|
|
242
|
+
if (verbose)
|
|
243
|
+
prevEventAtMs = now;
|
|
244
|
+
if (verboseLogger && verboseBatchId) {
|
|
245
|
+
verboseLogger.toolCall({
|
|
246
|
+
batchId: verboseBatchId,
|
|
247
|
+
taskIndex,
|
|
248
|
+
tool: event.toolSummary,
|
|
249
|
+
durationMs: sincePrevMs,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
if (verboseStream) {
|
|
253
|
+
verboseStream(`[mmagent verbose] batch=${shortBatch} task=${taskIndex} tool=${event.toolSummary} +${sincePrevMs}ms`);
|
|
254
|
+
}
|
|
161
255
|
}
|
|
162
256
|
if (event.kind === 'turn_complete') {
|
|
163
257
|
const costUSD = computeCostUSD(event.cumulativeInputTokens, event.cumulativeOutputTokens, resolved.provider.config);
|
|
164
258
|
const savedCostUSD = computeSavedCostUSD(costUSD, event.cumulativeInputTokens, event.cumulativeOutputTokens, task.parentModel);
|
|
165
259
|
heartbeat?.updateCost(costUSD, savedCostUSD);
|
|
260
|
+
const nowTurn = verbose ? Date.now() : 0;
|
|
261
|
+
const turnDurMs = verbose ? nowTurn - prevEventAtMs : 0;
|
|
262
|
+
if (verbose)
|
|
263
|
+
prevEventAtMs = nowTurn;
|
|
264
|
+
if (verboseLogger && verboseBatchId) {
|
|
265
|
+
verboseLogger.llmTurn({
|
|
266
|
+
batchId: verboseBatchId,
|
|
267
|
+
taskIndex,
|
|
268
|
+
turnIndex: progressCounters.toolCalls,
|
|
269
|
+
provider: resolved.provider.config.model,
|
|
270
|
+
inputTokens: event.cumulativeInputTokens,
|
|
271
|
+
outputTokens: event.cumulativeOutputTokens,
|
|
272
|
+
costUSD,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
if (verboseStream) {
|
|
276
|
+
const costStr = costUSD !== null ? ` $${costUSD.toFixed(4)}` : '';
|
|
277
|
+
verboseStream(`[mmagent verbose] batch=${shortBatch} task=${taskIndex} ` +
|
|
278
|
+
`turn in=${event.cumulativeInputTokens} out=${event.cumulativeOutputTokens}${costStr} ` +
|
|
279
|
+
`+${turnDurMs}ms (${resolved.provider.config.model})`);
|
|
280
|
+
}
|
|
166
281
|
}
|
|
167
282
|
}
|
|
168
283
|
: undefined;
|
|
@@ -554,7 +669,14 @@ export async function runTasks(tasks, config, options = {}) {
|
|
|
554
669
|
return Promise.resolve(refused);
|
|
555
670
|
}
|
|
556
671
|
const readiness = readinessResults[index];
|
|
557
|
-
return executeReviewedLifecycle(r.task, r.resolved, config, index, options.onProgress
|
|
672
|
+
return executeReviewedLifecycle(r.task, r.resolved, config, index, options.onProgress, {
|
|
673
|
+
batchId: options.batchId,
|
|
674
|
+
recordHeartbeat: options.recordHeartbeat,
|
|
675
|
+
}, {
|
|
676
|
+
logger: options.logger,
|
|
677
|
+
verbose: options.verbose ?? config.diagnostics?.verbose ?? false,
|
|
678
|
+
verboseStream: options.verboseStream,
|
|
679
|
+
}).then((result) => {
|
|
558
680
|
if (readiness && readiness.briefQualityWarnings.length > 0) {
|
|
559
681
|
return { ...result, briefQualityWarnings: readiness.briefQualityWarnings };
|
|
560
682
|
}
|