@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.
Files changed (100) hide show
  1. package/README.md +15 -16
  2. package/dist/batch-registry.d.ts +15 -2
  3. package/dist/batch-registry.d.ts.map +1 -1
  4. package/dist/batch-registry.js +18 -1
  5. package/dist/batch-registry.js.map +1 -1
  6. package/dist/config/load.d.ts +16 -2
  7. package/dist/config/load.d.ts.map +1 -1
  8. package/dist/config/load.js +38 -16
  9. package/dist/config/load.js.map +1 -1
  10. package/dist/config/schema.d.ts +3 -0
  11. package/dist/config/schema.d.ts.map +1 -1
  12. package/dist/config/schema.js +4 -0
  13. package/dist/config/schema.js.map +1 -1
  14. package/dist/diagnostics/disconnect-log.d.ts +45 -0
  15. package/dist/diagnostics/disconnect-log.d.ts.map +1 -1
  16. package/dist/diagnostics/disconnect-log.js +96 -2
  17. package/dist/diagnostics/disconnect-log.js.map +1 -1
  18. package/dist/executors/audit.d.ts.map +1 -1
  19. package/dist/executors/audit.js +12 -4
  20. package/dist/executors/audit.js.map +1 -1
  21. package/dist/executors/debug.d.ts.map +1 -1
  22. package/dist/executors/debug.js +7 -2
  23. package/dist/executors/debug.js.map +1 -1
  24. package/dist/executors/delegate.d.ts.map +1 -1
  25. package/dist/executors/delegate.js +18 -4
  26. package/dist/executors/delegate.js.map +1 -1
  27. package/dist/executors/execute-plan.d.ts.map +1 -1
  28. package/dist/executors/execute-plan.js +12 -4
  29. package/dist/executors/execute-plan.js.map +1 -1
  30. package/dist/executors/retry.d.ts.map +1 -1
  31. package/dist/executors/retry.js +8 -1
  32. package/dist/executors/retry.js.map +1 -1
  33. package/dist/executors/review.d.ts.map +1 -1
  34. package/dist/executors/review.js +12 -4
  35. package/dist/executors/review.js.map +1 -1
  36. package/dist/executors/types.d.ts +20 -5
  37. package/dist/executors/types.d.ts.map +1 -1
  38. package/dist/executors/verify.d.ts.map +1 -1
  39. package/dist/executors/verify.js +12 -4
  40. package/dist/executors/verify.js.map +1 -1
  41. package/dist/heartbeat.d.ts +50 -0
  42. package/dist/heartbeat.d.ts.map +1 -1
  43. package/dist/heartbeat.js +48 -0
  44. package/dist/heartbeat.js.map +1 -1
  45. package/dist/index.d.ts +5 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +4 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/reporting/compose-running-headline.d.ts +16 -0
  50. package/dist/reporting/compose-running-headline.d.ts.map +1 -0
  51. package/dist/reporting/compose-running-headline.js +29 -0
  52. package/dist/reporting/compose-running-headline.js.map +1 -0
  53. package/dist/reporting/compose-terminal-headline.d.ts +8 -0
  54. package/dist/reporting/compose-terminal-headline.d.ts.map +1 -0
  55. package/dist/reporting/compose-terminal-headline.js +10 -0
  56. package/dist/reporting/compose-terminal-headline.js.map +1 -0
  57. package/dist/reporting/not-applicable.d.ts +9 -0
  58. package/dist/reporting/not-applicable.d.ts.map +1 -0
  59. package/dist/reporting/not-applicable.js +12 -0
  60. package/dist/reporting/not-applicable.js.map +1 -0
  61. package/dist/run-tasks.d.ts +20 -0
  62. package/dist/run-tasks.d.ts.map +1 -1
  63. package/dist/run-tasks.js +127 -5
  64. package/dist/run-tasks.js.map +1 -1
  65. package/dist/tool-schemas/audit.d.ts +28 -3
  66. package/dist/tool-schemas/audit.d.ts.map +1 -1
  67. package/dist/tool-schemas/audit.js +2 -7
  68. package/dist/tool-schemas/audit.js.map +1 -1
  69. package/dist/tool-schemas/debug.d.ts +28 -3
  70. package/dist/tool-schemas/debug.d.ts.map +1 -1
  71. package/dist/tool-schemas/debug.js +2 -7
  72. package/dist/tool-schemas/debug.js.map +1 -1
  73. package/dist/tool-schemas/delegate.d.ts +28 -3
  74. package/dist/tool-schemas/delegate.d.ts.map +1 -1
  75. package/dist/tool-schemas/delegate.js +2 -7
  76. package/dist/tool-schemas/delegate.js.map +1 -1
  77. package/dist/tool-schemas/execute-plan.d.ts +28 -3
  78. package/dist/tool-schemas/execute-plan.d.ts.map +1 -1
  79. package/dist/tool-schemas/execute-plan.js +2 -7
  80. package/dist/tool-schemas/execute-plan.js.map +1 -1
  81. package/dist/tool-schemas/retry.d.ts +28 -3
  82. package/dist/tool-schemas/retry.d.ts.map +1 -1
  83. package/dist/tool-schemas/retry.js +2 -7
  84. package/dist/tool-schemas/retry.js.map +1 -1
  85. package/dist/tool-schemas/review.d.ts +28 -3
  86. package/dist/tool-schemas/review.d.ts.map +1 -1
  87. package/dist/tool-schemas/review.js +2 -7
  88. package/dist/tool-schemas/review.js.map +1 -1
  89. package/dist/tool-schemas/shared-output.d.ts +41 -0
  90. package/dist/tool-schemas/shared-output.d.ts.map +1 -0
  91. package/dist/tool-schemas/shared-output.js +25 -0
  92. package/dist/tool-schemas/shared-output.js.map +1 -0
  93. package/dist/tool-schemas/verify.d.ts +28 -3
  94. package/dist/tool-schemas/verify.d.ts.map +1 -1
  95. package/dist/tool-schemas/verify.js +2 -7
  96. package/dist/tool-schemas/verify.js.map +1 -1
  97. package/dist/types.d.ts +2 -0
  98. package/dist/types.d.ts.map +1 -1
  99. package/dist/types.js.map +1 -1
  100. package/package.json +1 -1
@@ -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;
@@ -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;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,eAAe,CAAqB;IAG5C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,SAAS,CAAK;IAGtB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,YAAY,CAAuB;gBAGzC,UAAU,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAC1C,OAAO,EAAE,qBAAqB;IAQhC,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAyB/B,IAAI,IAAI,IAAI;IAUZ,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IA0E1C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInC,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI;IAIzG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQ1C,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAOhF,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMrE,OAAO,CAAC,IAAI;IA0BZ,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,iBAAiB;CAa1B"}
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]}`;
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../src/heartbeat.ts"],"names":[],"mappings":"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"}
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';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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;AACrE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAsC7F,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;AAGhD,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"}
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"}
@@ -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
@@ -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;AAqBpB,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;CAC3B;AA0hBD,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,SAAS,EAAE,CAAC,CA+GtB"}
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 heartbeat = onProgress
144
- ? new HeartbeatTimer((event) => onProgress(taskIndex, event), { provider: resolved.provider.config.model, parentModel: task.parentModel })
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 wrappedOnProgress = onProgress
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).then((result) => {
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
  }