@zhixuan92/multi-model-agent-core 4.7.1 → 4.7.2

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 (188) hide show
  1. package/README.md +6 -5
  2. package/dist/bounded-execution/progress-events-subscriber.d.ts +3 -3
  3. package/dist/bounded-execution/progress-events-subscriber.d.ts.map +1 -1
  4. package/dist/bounded-execution/progress-events-subscriber.js +14 -4
  5. package/dist/bounded-execution/progress-events-subscriber.js.map +1 -1
  6. package/dist/bounded-execution/stall-watchdog.d.ts +4 -2
  7. package/dist/bounded-execution/stall-watchdog.d.ts.map +1 -1
  8. package/dist/bounded-execution/stall-watchdog.js +55 -31
  9. package/dist/bounded-execution/stall-watchdog.js.map +1 -1
  10. package/dist/events/envelope-bus.d.ts +22 -0
  11. package/dist/events/envelope-bus.d.ts.map +1 -0
  12. package/dist/events/envelope-bus.js +35 -0
  13. package/dist/events/envelope-bus.js.map +1 -0
  14. package/dist/events/log-writer.d.ts +24 -0
  15. package/dist/events/log-writer.d.ts.map +1 -0
  16. package/dist/events/log-writer.js +52 -0
  17. package/dist/events/log-writer.js.map +1 -0
  18. package/dist/events/plain-log-entry.d.ts +45 -0
  19. package/dist/events/plain-log-entry.d.ts.map +1 -0
  20. package/dist/events/plain-log-entry.js +45 -0
  21. package/dist/events/plain-log-entry.js.map +1 -0
  22. package/dist/events/task-envelope.d.ts +174 -0
  23. package/dist/events/task-envelope.d.ts.map +1 -0
  24. package/dist/events/task-envelope.js +152 -0
  25. package/dist/events/task-envelope.js.map +1 -0
  26. package/dist/events/telemetry-uploader.d.ts +24 -0
  27. package/dist/events/telemetry-uploader.d.ts.map +1 -0
  28. package/dist/events/telemetry-uploader.js +31 -0
  29. package/dist/events/telemetry-uploader.js.map +1 -0
  30. package/dist/events/to-wire-record.d.ts +42 -0
  31. package/dist/events/to-wire-record.d.ts.map +1 -0
  32. package/dist/events/to-wire-record.js +167 -0
  33. package/dist/events/to-wire-record.js.map +1 -0
  34. package/dist/events/{telemetry-types.d.ts → wire-schema.d.ts} +23 -36
  35. package/dist/events/wire-schema.d.ts.map +1 -0
  36. package/dist/events/{telemetry-types.js → wire-schema.js} +2 -9
  37. package/dist/events/wire-schema.js.map +1 -0
  38. package/dist/identity/{auth-token-store.d.ts → claude-oauth.d.ts} +1 -24
  39. package/dist/identity/claude-oauth.d.ts.map +1 -0
  40. package/dist/identity/claude-oauth.js +71 -0
  41. package/dist/identity/claude-oauth.js.map +1 -0
  42. package/dist/index.d.ts +9 -10
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +5 -7
  45. package/dist/index.js.map +1 -1
  46. package/dist/lifecycle/handlers/annotate-stage.d.ts.map +1 -1
  47. package/dist/lifecycle/handlers/annotate-stage.js +11 -5
  48. package/dist/lifecycle/handlers/annotate-stage.js.map +1 -1
  49. package/dist/lifecycle/handlers/rework-stage.js +2 -2
  50. package/dist/lifecycle/handlers/rework-stage.js.map +1 -1
  51. package/dist/lifecycle/handlers/terminal-handlers.d.ts +5 -4
  52. package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
  53. package/dist/lifecycle/handlers/terminal-handlers.js +34 -71
  54. package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
  55. package/dist/lifecycle/lifecycle-context.d.ts +11 -5
  56. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  57. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  58. package/dist/lifecycle/lifecycle-driver.js +96 -9
  59. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  60. package/dist/lifecycle/perform-implementation.js +2 -2
  61. package/dist/lifecycle/perform-implementation.js.map +1 -1
  62. package/dist/lifecycle/task-completion-summary.js +1 -1
  63. package/dist/lifecycle/task-completion-summary.js.map +1 -1
  64. package/dist/lifecycle/task-runner.d.ts +11 -6
  65. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  66. package/dist/lifecycle/task-runner.js +2 -0
  67. package/dist/lifecycle/task-runner.js.map +1 -1
  68. package/dist/providers/claude-session.d.ts +1 -0
  69. package/dist/providers/claude-session.d.ts.map +1 -1
  70. package/dist/providers/claude-session.js +29 -27
  71. package/dist/providers/claude-session.js.map +1 -1
  72. package/dist/providers/claude.js +1 -1
  73. package/dist/providers/claude.js.map +1 -1
  74. package/dist/providers/codex-cli-session.d.ts +4 -2
  75. package/dist/providers/codex-cli-session.d.ts.map +1 -1
  76. package/dist/providers/codex-cli-session.js +47 -46
  77. package/dist/providers/codex-cli-session.js.map +1 -1
  78. package/dist/providers/runner-types.d.ts +3 -3
  79. package/dist/providers/runner-types.d.ts.map +1 -1
  80. package/dist/reporting/structured-report.d.ts +3 -3
  81. package/dist/stores/batch-registry.d.ts +37 -29
  82. package/dist/stores/batch-registry.d.ts.map +1 -1
  83. package/dist/stores/batch-registry.js +18 -23
  84. package/dist/stores/batch-registry.js.map +1 -1
  85. package/dist/tools/audit/schema.d.ts +1 -1
  86. package/dist/tools/review/schema.d.ts +1 -1
  87. package/dist/transport/http-listener.d.ts +1 -1
  88. package/dist/types/enums.d.ts +16 -16
  89. package/dist/types/run-result.d.ts +3 -0
  90. package/dist/types/run-result.d.ts.map +1 -1
  91. package/package.json +21 -29
  92. package/dist/events/caller-response-channel.d.ts +0 -17
  93. package/dist/events/caller-response-channel.d.ts.map +0 -1
  94. package/dist/events/caller-response-channel.js +0 -10
  95. package/dist/events/caller-response-channel.js.map +0 -1
  96. package/dist/events/clamp.d.ts +0 -13
  97. package/dist/events/clamp.d.ts.map +0 -1
  98. package/dist/events/clamp.js +0 -24
  99. package/dist/events/clamp.js.map +0 -1
  100. package/dist/events/cloud-events.d.ts +0 -108
  101. package/dist/events/cloud-events.d.ts.map +0 -1
  102. package/dist/events/cloud-events.js +0 -58
  103. package/dist/events/cloud-events.js.map +0 -1
  104. package/dist/events/concern-classifier.d.ts +0 -9
  105. package/dist/events/concern-classifier.d.ts.map +0 -1
  106. package/dist/events/concern-classifier.js +0 -26
  107. package/dist/events/concern-classifier.js.map +0 -1
  108. package/dist/events/diagnostics-types.d.ts +0 -65
  109. package/dist/events/diagnostics-types.d.ts.map +0 -1
  110. package/dist/events/diagnostics-types.js +0 -2
  111. package/dist/events/diagnostics-types.js.map +0 -1
  112. package/dist/events/event-base.d.ts +0 -14
  113. package/dist/events/event-base.d.ts.map +0 -1
  114. package/dist/events/event-base.js +0 -24
  115. package/dist/events/event-base.js.map +0 -1
  116. package/dist/events/event-builder.d.ts +0 -55
  117. package/dist/events/event-builder.d.ts.map +0 -1
  118. package/dist/events/event-builder.js +0 -557
  119. package/dist/events/event-builder.js.map +0 -1
  120. package/dist/events/event-emitter.d.ts +0 -31
  121. package/dist/events/event-emitter.d.ts.map +0 -1
  122. package/dist/events/event-emitter.js +0 -63
  123. package/dist/events/event-emitter.js.map +0 -1
  124. package/dist/events/http-server-log.d.ts +0 -63
  125. package/dist/events/http-server-log.d.ts.map +0 -1
  126. package/dist/events/http-server-log.js +0 -188
  127. package/dist/events/http-server-log.js.map +0 -1
  128. package/dist/events/index.d.ts +0 -6
  129. package/dist/events/index.d.ts.map +0 -1
  130. package/dist/events/index.js +0 -7
  131. package/dist/events/index.js.map +0 -1
  132. package/dist/events/local-log-sink.d.ts +0 -10
  133. package/dist/events/local-log-sink.d.ts.map +0 -1
  134. package/dist/events/local-log-sink.js +0 -11
  135. package/dist/events/local-log-sink.js.map +0 -1
  136. package/dist/events/normalize.d.ts +0 -18
  137. package/dist/events/normalize.d.ts.map +0 -1
  138. package/dist/events/normalize.js +0 -18
  139. package/dist/events/normalize.js.map +0 -1
  140. package/dist/events/observability-events.d.ts +0 -1324
  141. package/dist/events/observability-events.d.ts.map +0 -1
  142. package/dist/events/observability-events.js +0 -446
  143. package/dist/events/observability-events.js.map +0 -1
  144. package/dist/events/privacy-filter.d.ts +0 -2
  145. package/dist/events/privacy-filter.d.ts.map +0 -1
  146. package/dist/events/privacy-filter.js +0 -10
  147. package/dist/events/privacy-filter.js.map +0 -1
  148. package/dist/events/request-spill.d.ts +0 -16
  149. package/dist/events/request-spill.d.ts.map +0 -1
  150. package/dist/events/request-spill.js +0 -23
  151. package/dist/events/request-spill.js.map +0 -1
  152. package/dist/events/telemetry-channel.d.ts +0 -9
  153. package/dist/events/telemetry-channel.d.ts.map +0 -1
  154. package/dist/events/telemetry-channel.js +0 -16
  155. package/dist/events/telemetry-channel.js.map +0 -1
  156. package/dist/events/telemetry-sink.d.ts +0 -12
  157. package/dist/events/telemetry-sink.d.ts.map +0 -1
  158. package/dist/events/telemetry-sink.js +0 -24
  159. package/dist/events/telemetry-sink.js.map +0 -1
  160. package/dist/events/telemetry-types.d.ts.map +0 -1
  161. package/dist/events/telemetry-types.js.map +0 -1
  162. package/dist/events/verbose-line.d.ts +0 -13
  163. package/dist/events/verbose-line.d.ts.map +0 -1
  164. package/dist/events/verbose-line.js +0 -99
  165. package/dist/events/verbose-line.js.map +0 -1
  166. package/dist/events/verbose-log-channel.d.ts +0 -29
  167. package/dist/events/verbose-log-channel.d.ts.map +0 -1
  168. package/dist/events/verbose-log-channel.js +0 -63
  169. package/dist/events/verbose-log-channel.js.map +0 -1
  170. package/dist/identity/auth-token-store.d.ts.map +0 -1
  171. package/dist/identity/auth-token-store.js +0 -136
  172. package/dist/identity/auth-token-store.js.map +0 -1
  173. package/dist/identity/cwd-validator.d.ts +0 -6
  174. package/dist/identity/cwd-validator.d.ts.map +0 -1
  175. package/dist/identity/cwd-validator.js +0 -28
  176. package/dist/identity/cwd-validator.js.map +0 -1
  177. package/dist/identity/host-allowlist.d.ts +0 -6
  178. package/dist/identity/host-allowlist.d.ts.map +0 -1
  179. package/dist/identity/host-allowlist.js +0 -11
  180. package/dist/identity/host-allowlist.js.map +0 -1
  181. package/dist/identity/index.d.ts +0 -6
  182. package/dist/identity/index.d.ts.map +0 -1
  183. package/dist/identity/index.js +0 -7
  184. package/dist/identity/index.js.map +0 -1
  185. package/dist/identity/ssrf-guard.d.ts +0 -4
  186. package/dist/identity/ssrf-guard.d.ts.map +0 -1
  187. package/dist/identity/ssrf-guard.js +0 -19
  188. package/dist/identity/ssrf-guard.js.map +0 -1
@@ -1,557 +0,0 @@
1
- import { randomUUID } from 'node:crypto';
2
- import { normalizeModel } from './normalize.js';
3
- import { classifyConcern } from './concern-classifier.js';
4
- import { ErrorCode, WireTelemetryRecordSchema } from './telemetry-types.js';
5
- import { bucketFindingsBySeverity } from '../reporting/severity.js';
6
- import { rollupByTier, sumTokens } from '../bounded-execution/cost-rollup.js';
7
- import { priceTokens, resolveRateCard } from '../bounded-execution/cost-compute.js';
8
- import { clampStageCost, clampTaskCost, clampInputTokens, clampOutputTokens, clampCachedTokens, clampToolCallCount, clampFilesReadCount, clampFilesWrittenCount, clampTurnCount, clampDurationMsStage, clampDurationMsTotal, } from './clamp.js';
9
- /**
10
- * Thrown when a stage marked `isLlmStage: true` arrives at the builder
11
- * with no model identifier. Caught one level up by the stage-build loop
12
- * (Task A5b) and converted into a `validation_warnings` diagnostic; the
13
- * offending stage is dropped from the emitted event but the rest of the
14
- * event still ships. Per spec D5 + §6.
15
- */
16
- export class StageModelMissingError extends Error {
17
- stageName;
18
- constructor(stageName) {
19
- super(`Stage '${stageName}' is marked isLlmStage:true but raw.model is null.`);
20
- this.stageName = stageName;
21
- this.name = 'StageModelMissingError';
22
- }
23
- }
24
- const REVIEWED_ROUTES = new Set(['delegate', 'audit', 'review', 'debug', 'execute-plan', 'investigate']);
25
- const QUALITY_ONLY_ROUTES = new Set(['audit', 'review', 'debug', 'investigate']);
26
- /**
27
- * Catches StageModelMissingError thrown by LLM stage builders and converts
28
- * it into a validation warning. The stage is dropped from the emitted event,
29
- * but the rest of the event still ships. Per spec §6 + task A5b.
30
- */
31
- function safeBuild(name, fn, validationWarnings) {
32
- try {
33
- return fn();
34
- }
35
- catch (e) {
36
- if (e instanceof StageModelMissingError) {
37
- validationWarnings.push({ path: `stages.${name}`, rule: 'StageModelMissingError' });
38
- return null;
39
- }
40
- throw e;
41
- }
42
- }
43
- /** Read findings from the v4.4 lifecycle sources:
44
- * - structuredReport.findings → read-only routes (audit/review/debug/investigate/research/explore)
45
- * - structuredReport.reviewConcerns → reviewed write routes (delegate/execute-plan)
46
- *
47
- * Both fields are populated by lifecycle/handlers/annotate-stage.ts. The pre-v4.4
48
- * `runResult.concerns` field is dead — the v4.4 lifecycle never assigns it,
49
- * so reading from there silently produced concernCount=0 on every event.
50
- */
51
- function projectFindings(rr) {
52
- // The annotator handler writes a richer shape than ParsedStructuredReport declares;
53
- // cast to the runtime-actual shape.
54
- const sr = rr.structuredReport;
55
- const out = [];
56
- for (const f of sr?.findings ?? []) {
57
- out.push({
58
- severity: normalizeSeverity(f.severity),
59
- source: 'implementer',
60
- message: f.claim ?? '',
61
- });
62
- }
63
- for (const text of sr?.reviewConcerns ?? []) {
64
- out.push({ severity: 'medium', source: 'review', message: text });
65
- }
66
- return out;
67
- }
68
- function normalizeSeverity(s) {
69
- const v = (s ?? '').toLowerCase().trim();
70
- if (v === 'critical' || v === 'high' || v === 'low')
71
- return v;
72
- return 'medium';
73
- }
74
- export function buildTaskCompletedEvent(ctx) {
75
- const { route, runResult, client, mainModel } = ctx;
76
- const validationWarnings = [];
77
- const stages = buildStages(route, runResult, ctx.gates, validationWarnings);
78
- // Compute per-stage main-model-equivalent cost using the resolved rate card.
79
- // Plugs into StageEntryBase.mainEquivalentCostUSD so the schema stays valid
80
- // without weakening the field to optional.
81
- const mainCard = resolveRateCard(mainModel);
82
- for (const st of stages) {
83
- st.mainEquivalentCostUSD = mainCard
84
- ? priceTokens({ inputTokens: st.inputTokens, outputTokens: st.outputTokens,
85
- cachedReadTokens: st.cachedReadTokens ?? 0, cachedNonReadTokens: st.cachedNonReadTokens ?? 0 }, mainCard)
86
- : null;
87
- }
88
- // Spec D11: when the implementing or rework stage was dropped due to
89
- // StageModelMissingError, omit tierUsage.<tier> entirely — do not let
90
- // another stage's model become the tier attribution.
91
- const droppedImpl = validationWarnings.some(w => w.rule === 'StageModelMissingError'
92
- && (w.path === 'stages.implementing' || w.path === 'stages.rework'));
93
- const droppedTier = (runResult.stageStats?.implementing?.agentTier === 'complex') ? 'complex' : 'standard';
94
- // Gap 3 fix (4.0.3+): R4 invariant `totalDurationMs >= Σ stage.durationMs`
95
- // is satisfied by Math.max-ing the executor wall-clock against the stage
96
- // sum. Pre-fix, runResult.durationMs only covered the implementer's
97
- // shell.run — reviewer/annotator wall-clocks were excluded, making
98
- // totalDurationMs a fraction of reality. The proportional scale-down
99
- // that "fixed" this masked the under-counting by silently shrinking
100
- // every per-stage duration to fit. Now:
101
- //
102
- // 1. Compute the FINAL serialized stage values first (each stage's
103
- // durationMs is already clamped via clampDurationMsStage in
104
- // extractStageData → see line ~233). Per round-2 audit F4: the
105
- // sum MUST be of final serialized values, so post-clamp/round
106
- // drift can't re-introduce R4 violations.
107
- // 2. totalDurationMs = max(executor wall-clock, sum of stage durations).
108
- // For sequential v4 stages this picks the stage sum (correct);
109
- // pre-v4 salvage paths still get runResult.durationMs as floor.
110
- // 3. NO proportional scale-down. Per-stage durations stay truthful.
111
- // If Σ ever exceeded total in some unforeseen path, we'd want to
112
- // see the bug, not silently mask it.
113
- const stageDurationsSum = stages.reduce((s, st) => s + st.durationMs, 0);
114
- const rawTotal = Math.max(runResult.durationMs ?? 0, stageDurationsSum);
115
- const totalDurationMs = clampDurationMsTotal(rawTotal);
116
- // ── Tier-level rollup (§3.2, §3.3) ───────────────────────────────────
117
- // Filter to LLM-billable stages only — synthetic stages (annotated
118
- // placeholder review on read-only routes, the commit stage) carry
119
- // model: 'custom' and would corrupt tier rollup under last-seen
120
- // semantics. Per spec §4.1.1 and §4.1.2.
121
- const llmStages = stages.filter(s => s.isLlmStage);
122
- // Tier-uniformity invariant (spec D9). Every LLM-billable stage at
123
- // a given tier must share the same canonical model id. If violated,
124
- // omit that tier from tierUsage and record a diagnostic — better
125
- // honest-null than silent-wrong attribution.
126
- const tierModels = {};
127
- for (const s of llmStages) {
128
- const tier = s.tier;
129
- const set = tierModels[tier] ?? new Set();
130
- set.add(s.model);
131
- tierModels[tier] = set;
132
- }
133
- const divergentTiers = new Set();
134
- for (const tier of ['standard', 'complex']) {
135
- if ((tierModels[tier]?.size ?? 0) > 1) {
136
- divergentTiers.add(tier);
137
- validationWarnings.push({ path: `tierUsage.${tier}`, rule: 'R-TIER-MODEL-DIVERGENCE' });
138
- }
139
- }
140
- if (droppedImpl) {
141
- divergentTiers.add(droppedTier);
142
- }
143
- const rollupInput = llmStages.filter(s => !divergentTiers.has(s.tier));
144
- const tierUsage = rollupByTier(rollupInput.map(s => ({
145
- tier: s.tier,
146
- model: s.model,
147
- costUSD: s.costUSD,
148
- inputTokens: s.inputTokens,
149
- outputTokens: s.outputTokens,
150
- cachedReadTokens: s.cachedReadTokens ?? 0,
151
- cachedNonReadTokens: s.cachedNonReadTokens ?? 0,
152
- })));
153
- const allTokens = sumTokens(stages.map(s => ({
154
- inputTokens: s.inputTokens,
155
- outputTokens: s.outputTokens,
156
- cachedReadTokens: s.cachedReadTokens ?? 0,
157
- cachedNonReadTokens: s.cachedNonReadTokens ?? 0,
158
- })));
159
- // Honest-null: ANY contributing stage with costUSD: null poisons the total.
160
- // Matches rollupByTier semantics — invariant: Σ tierUsage[T].costUSD === totalCostUSD
161
- // (both null OR both equal).
162
- const anyNullCost = stages.some(s => s.costUSD === null);
163
- const totalCostUSD = stages.length === 0
164
- ? 0
165
- : (anyNullCost ? null : clampTaskCost(stages.reduce((sum, s) => sum + s.costUSD, 0)));
166
- const totalInputTokens = clampInputTokens(allTokens.inputTokens);
167
- const totalOutputTokens = clampOutputTokens(allTokens.outputTokens);
168
- const totalCachedReadTokens = clampCachedTokens(allTokens.cachedReadTokens);
169
- const totalCachedNonReadTokens = clampCachedTokens(allTokens.cachedNonReadTokens);
170
- const mainEquivalentCostUSD = mainCard ? priceTokens(allTokens, mainCard) : null;
171
- const costDeltaVsMainUSD = (totalCostUSD === null || mainEquivalentCostUSD === null)
172
- ? null
173
- : totalCostUSD - mainEquivalentCostUSD;
174
- // Canonicalize mainModel for emission (matches implementerModel emission path).
175
- const mainNormalized = mainModel ? normalizeModel(mainModel) : null;
176
- const reviewPolicy = ctx.reviewPolicy ?? (QUALITY_ONLY_ROUTES.has(route) ? 'quality_only' : 'full');
177
- const verifyCommandPresent = ctx.verifyCommandPresent ?? false;
178
- const implModelRaw = runResult.models?.implementer ?? null;
179
- const implResult = implModelRaw ? normalizeModel(implModelRaw) : null;
180
- const escalationLog = runResult.escalationLog ?? [];
181
- const distinctProviders = new Set(escalationLog.map(a => a.provider)).size;
182
- const escalationCount = Math.max(0, distinctProviders - 1);
183
- // Strip producer-internal isLlmStage before wire emission. Wire schema
184
- // (telemetry-types.ts) does not include this field; backend transformer
185
- // does not read it. Per spec D2.
186
- const wireStages = stages.map(s => {
187
- const { isLlmStage: _drop, ...rest } = s;
188
- return rest;
189
- });
190
- const internalRecord = {
191
- eventId: randomUUID(),
192
- route,
193
- subtype: ctx.taskSpec.subtype ?? null,
194
- client,
195
- agentType: runResult.agents?.implementer === 'complex' ? 'complex' : 'standard',
196
- toolMode: (runResult.agents?.implementerToolMode ?? 'full'),
197
- reviewPolicy,
198
- verifyCommandPresent,
199
- implementerModel: implResult?.canonical
200
- ?? runResult.models?.implementer
201
- ?? runResult.stageStats?.implementing?.model
202
- ?? 'custom',
203
- implementerTier: runResult.stageStats?.implementing?.agentTier ?? 'standard',
204
- terminalStatus: deriveTerminalStatus(runResult),
205
- workerStatus: deriveWorkerStatus(runResult),
206
- errorCode: deriveErrorCode(runResult),
207
- mainModel: mainNormalized?.canonical ?? null,
208
- mainModelFamily: mainNormalized?.family ?? 'other',
209
- tierUsage,
210
- inputTokens: totalInputTokens,
211
- outputTokens: totalOutputTokens,
212
- cachedReadTokens: totalCachedReadTokens,
213
- cachedNonReadTokens: totalCachedNonReadTokens,
214
- totalDurationMs,
215
- totalCostUSD,
216
- mainEquivalentCostUSD,
217
- costDeltaVsMainUSD,
218
- concernCount: Math.min(projectFindings(runResult).length, 150),
219
- escalationCount,
220
- fallbackCount: Math.min(runResult.agents?.fallbackOverrides?.length ?? 0, 20),
221
- stallCount: Math.min(runResult.stallCount ?? (runResult.stallTriggered ? 1 : 0), 20),
222
- taskMaxIdleMs: runResult.taskMaxIdleMs ?? 0,
223
- sandboxViolationCount: Math.min(runResult.sandboxViolationCount ?? 0, 100),
224
- filesWrittenCount: (ctx.realFilesChanged ?? []).length,
225
- stages: wireStages,
226
- validation_warnings: validationWarnings.length > 0 ? validationWarnings : undefined,
227
- };
228
- return buildWirePayload(internalRecord);
229
- }
230
- /**
231
- * Wire payload builder. Internal record fields match the wire schema 1:1
232
- * after the v4.0.3 rename (mainModel/mainModelFamily everywhere — DB column
233
- * is `main_model`, header is `X-MMA-Main-Model`).
234
- *
235
- * v5 — this used to be a `as unknown as WireTelemetryRecord` passthrough.
236
- * The translator is now real: the internal record is passed through Zod
237
- * (`WireTelemetryRecordSchema`) so the wire payload is schema-validated at
238
- * the egress boundary. When the schema rejects, we fall back to the
239
- * passthrough to preserve "best-effort telemetry" semantics — but the
240
- * validation failure is observable on bus emits so backend can detect drift
241
- * before the warehouse 400s. Callers that need strict validation should
242
- * call `WireTelemetryRecordSchema.parse` directly.
243
- */
244
- export function buildWirePayload(internalRecord, opts) {
245
- const parsed = WireTelemetryRecordSchema.safeParse(internalRecord);
246
- if (parsed.success) {
247
- // Schema-strip: drop unknown fields by returning the parsed record. This
248
- // is the v5 contract guarantee — only wire-schema fields cross the
249
- // boundary.
250
- return parsed.data;
251
- }
252
- // Schema rejected — surface the error to the caller and fall back to the
253
- // passthrough so we never silently drop a telemetry row. Backend will
254
- // 400 on schema mismatch; the bus event makes the drift discoverable
255
- // before that point.
256
- opts?.onValidationError?.(parsed.error);
257
- return internalRecord;
258
- }
259
- function buildStages(route, rr, gates, validationWarnings) {
260
- const warnings = validationWarnings ?? [];
261
- const result = [];
262
- const impl = safeBuild('implementing', () => buildImplStage(rr, gates?.['implement']), warnings);
263
- if (impl)
264
- result.push(impl);
265
- if (REVIEWED_ROUTES.has(route)) {
266
- const status = rr.reviewVerdict ?? rr.qualityReviewStatus ?? rr.specReviewStatus ?? null;
267
- const stageRounds = rr.stageStats?.review?.roundsUsed;
268
- const rounds = stageRounds ?? (Math.max(rr.reviewRounds?.spec ?? 0, rr.reviewRounds?.quality ?? 0) || null);
269
- const rev = safeBuild('review', () => buildReviewStage(rr, status, rounds, gates?.['review']), warnings);
270
- if (rev) {
271
- result.push(rev);
272
- }
273
- else if (QUALITY_ONLY_ROUTES.has(route)) {
274
- // Read-only routes (audit/review/debug/investigate) hardcode
275
- // reviewPolicy: 'none' — no LLM reviewer runs. But v5's review stage
276
- // entry is where findingsBySeverity / concernCategories live, and
277
- // the implementer IS the finding producer on these routes. Synthesize
278
- // a zero-metric review stage entry with verdict: 'annotated' (already
279
- // in the v5 verdict enum precisely for this case) so the wire still
280
- // carries the per-severity breakdown that the warehouse columns read
281
- // from stages[?name=review].
282
- const findings = projectFindings(rr);
283
- if (findings.length > 0)
284
- result.push(buildSyntheticReviewStage(findings));
285
- }
286
- }
287
- if (REVIEWED_ROUTES.has(route) && !QUALITY_ONLY_ROUTES.has(route)) {
288
- const rw = safeBuild('rework', () => buildReworkStage(rr, gates?.['rework']), warnings);
289
- if (rw)
290
- result.push(rw);
291
- }
292
- const an = safeBuild('annotating', () => buildAnnotatingStage(rr, gates?.['annotate']), warnings);
293
- if (an)
294
- result.push(an);
295
- const cm = safeBuild('committing', () => buildCommitStage(rr, gates?.['commit']), warnings);
296
- if (cm)
297
- result.push(cm);
298
- return result.slice(0, 8);
299
- }
300
- /**
301
- * Overlay gate telemetry onto an extracted-stage base. Gates are the v5
302
- * canonical source for `durationMs`, `costUSD`, `turnsUsed`. When both
303
- * sources have a value, the gate wins (intentional: the gate is what the
304
- * lifecycle actually produced; stageStats is the legacy mirror that the
305
- * runner-shell and per-stage tracker fill in). Tokens, tool calls, and
306
- * files-read/written remain on stageStats because the gate telemetry block
307
- * doesn't carry them.
308
- */
309
- function applyGateOverlay(base, gate) {
310
- if (!gate)
311
- return base;
312
- const t = gate.telemetry;
313
- return {
314
- ...base,
315
- durationMs: clampDurationMsStage(t.durationMs ?? base.durationMs),
316
- costUSD: clampStageCost(t.costUSD ?? base.costUSD),
317
- turnCount: clampTurnCount(t.turnsUsed ?? base.turnCount),
318
- };
319
- }
320
- function extractStageData(raw, _rr, _stageName) {
321
- if (!raw || !raw.entered)
322
- return null;
323
- return {
324
- model: raw.model ? (normalizeModel(raw.model).canonical ?? raw.model) : null,
325
- tier: raw.agentTier ?? 'standard',
326
- round: raw.round ?? 0,
327
- durationMs: clampDurationMsStage(raw.durationMs ?? 0),
328
- costUSD: clampStageCost(raw.costUSD ?? 0),
329
- inputTokens: clampInputTokens(raw.inputTokens ?? 0),
330
- outputTokens: clampOutputTokens(raw.outputTokens ?? 0),
331
- cachedReadTokens: clampCachedTokens(raw.cachedReadTokens ?? 0),
332
- cachedNonReadTokens: clampCachedTokens(raw.cachedNonReadTokens ?? 0),
333
- toolCallCount: clampToolCallCount(raw.toolCallCount ?? 0),
334
- filesReadCount: clampFilesReadCount(raw.filesReadCount ?? 0),
335
- filesWrittenCount: clampFilesWrittenCount(raw.filesWrittenCount ?? 0),
336
- turnCount: clampTurnCount(raw.turnCount ?? 0),
337
- maxIdleMs: raw.maxIdleMs ?? 0,
338
- totalIdleMs: raw.totalIdleMs ?? 0,
339
- };
340
- }
341
- function buildImplStage(rr, gate) {
342
- const ss = rr.stageStats?.implementing;
343
- let base = extractStageData(ss, rr, 'implementing');
344
- if (!base)
345
- return null;
346
- base = applyGateOverlay(base, gate);
347
- if (base.model === null) {
348
- throw new StageModelMissingError('implementing');
349
- }
350
- return { name: 'implementing', ...base, model: base.model, mainEquivalentCostUSD: null, isLlmStage: true };
351
- }
352
- /** Synthetic review stage entry for read-only routes that hardcode
353
- * reviewPolicy: 'none'. The implementer is the finding producer; v5
354
- * schema puts findingsBySeverity / concernCategories on the review
355
- * stage entry, so this carries them with zero/null operational metrics
356
- * (no actual reviewer LLM call happened) and verdict: 'annotated' (a
357
- * v5 enum value that means "annotator emitted findings, no quality
358
- * verdict reached"). Schema-compliant — no version bump needed. */
359
- function buildSyntheticReviewStage(findings) {
360
- const categories = [...new Set(findings.map(f => classifyConcern(f)))];
361
- const rawBuckets = bucketFindingsBySeverity(findings.map(f => ({ severity: f.severity })));
362
- const findingsBySeverity = {
363
- critical: Math.min(rawBuckets.critical, 200),
364
- high: Math.min(rawBuckets.high, 200),
365
- medium: Math.min(rawBuckets.medium, 200),
366
- low: Math.min(rawBuckets.low, 200),
367
- };
368
- return {
369
- name: 'review',
370
- model: 'custom',
371
- tier: 'standard',
372
- round: 0,
373
- durationMs: 0,
374
- costUSD: 0,
375
- inputTokens: 0,
376
- outputTokens: 0,
377
- cachedReadTokens: 0,
378
- cachedNonReadTokens: 0,
379
- toolCallCount: 0,
380
- filesReadCount: 0,
381
- filesWrittenCount: 0,
382
- turnCount: 0,
383
- maxIdleMs: 0,
384
- totalIdleMs: 0,
385
- mainEquivalentCostUSD: 0,
386
- verdict: 'annotated',
387
- roundsUsed: 1,
388
- concernCategories: categories.slice(0, 9),
389
- findingsBySeverity,
390
- isLlmStage: false,
391
- };
392
- }
393
- function buildReviewStage(rr, status, rounds, gate) {
394
- const ss = rr.stageStats?.review;
395
- let base = extractStageData(ss, rr, 'review');
396
- if (!base)
397
- return null;
398
- base = applyGateOverlay(base, gate);
399
- if (base.model === null) {
400
- throw new StageModelMissingError('review');
401
- }
402
- // v4.4.x: projectFindings reads from structuredReport.findings (read-only
403
- // routes) and structuredReport.reviewConcerns (reviewed write routes). The
404
- // pre-v4.4 rr.concerns field is no longer populated by the lifecycle, so
405
- // reading from there silently produced 0/0/0/0 counts on every wire row.
406
- const stageConcerns = projectFindings(rr).filter(c => c.source === 'spec_review' || c.source === 'quality_review' || c.source === 'review' || c.source === 'implementer');
407
- const categories = [...new Set(stageConcerns.map(c => classifyConcern(c)))];
408
- // 4.0.3+ Gap 2 round-2 F1: use shared bucketFindingsBySeverity helper
409
- // (separate from headline's countHighOrCritical) so the wire's exact
410
- // per-bucket counts can't be conflated by accident with the headline's
411
- // aggregate count. Severity normalization happens inside projectFindings;
412
- // pass through the already-normalized severity.
413
- const rawBuckets = bucketFindingsBySeverity(stageConcerns.map(c => ({ severity: c.severity })));
414
- const findingsBySeverity = {
415
- critical: Math.min(rawBuckets.critical, 200),
416
- high: Math.min(rawBuckets.high, 200),
417
- medium: Math.min(rawBuckets.medium, 200),
418
- low: Math.min(rawBuckets.low, 200),
419
- };
420
- let verdict = status ?? 'not_applicable';
421
- if (verdict === 'approved' && stageConcerns.length > 0) {
422
- verdict = 'concerns';
423
- }
424
- return {
425
- name: 'review',
426
- ...base,
427
- model: base.model,
428
- verdict,
429
- roundsUsed: Math.min(rounds ?? 1, 10),
430
- concernCategories: categories.slice(0, 9),
431
- findingsBySeverity,
432
- mainEquivalentCostUSD: null,
433
- isLlmStage: true,
434
- };
435
- }
436
- function buildReworkStage(rr, gate) {
437
- const ss = rr.stageStats?.rework;
438
- let base = extractStageData(ss, rr, 'rework');
439
- if (!base)
440
- return null;
441
- base = applyGateOverlay(base, gate);
442
- if (base.model === null) {
443
- throw new StageModelMissingError('rework');
444
- }
445
- const stageConcerns = projectFindings(rr).filter(c => c.source === 'spec_review' || c.source === 'quality_review' || c.source === 'review' || c.source === 'implementer');
446
- const triggeringCategories = [...new Set(stageConcerns.map(c => classifyConcern(c)))];
447
- return {
448
- name: 'rework',
449
- ...base,
450
- model: base.model,
451
- triggeringConcernCategories: triggeringCategories.slice(0, 9),
452
- mainEquivalentCostUSD: null,
453
- isLlmStage: true,
454
- };
455
- }
456
- function buildAnnotatingStage(rr, gate) {
457
- const ss = rr.stageStats?.annotating;
458
- let base = extractStageData(ss, rr, 'annotating');
459
- if (!base)
460
- return null;
461
- base = applyGateOverlay(base, gate);
462
- // Annotator is an LLM stage iff the runtime actually invoked a model.
463
- // Per spec §4.1.3, the observable signal is whether stageStats.annotating.model
464
- // was populated. Task A6 fixes the upstream so this is always populated when
465
- // the LLM was called. When null (degraded pure-transform path), the stage
466
- // appears in wire stages[] but is excluded from tier rollup.
467
- const isLlmStage = base.model !== null && base.model !== 'custom';
468
- return {
469
- name: 'annotating',
470
- ...base,
471
- model: base.model || 'custom',
472
- isLlmStage,
473
- mainEquivalentCostUSD: null,
474
- outcome: ss?.outcome ?? 'not_applicable',
475
- skipReason: ss?.outcome === 'skipped' ? (ss?.skipReason ?? 'other') : null,
476
- };
477
- }
478
- function buildCommitStage(rr, gate) {
479
- const ss = rr.stageStats?.committing;
480
- let base = extractStageData(ss, rr, 'committing');
481
- if (!base)
482
- return null;
483
- base = applyGateOverlay(base, gate);
484
- const commits = Array.isArray(rr.commits) ? rr.commits : [];
485
- const allFiles = commits.flatMap((c) => Array.isArray(c?.filesChanged)
486
- ? c.filesChanged.filter((f) => typeof f === 'string')
487
- : []);
488
- const filesCommittedCount = Math.min(new Set(allFiles).size, 1000);
489
- return {
490
- name: 'committing',
491
- ...base,
492
- model: base.model || 'custom',
493
- filesCommittedCount,
494
- // CommitStageRunner does not track branch-creation directly today;
495
- // name-diff against pre-commit refs is unreliable, so we report
496
- // false. A future change can wire this when CommitStageRunner emits
497
- // an explicit signal alongside filesCommittedCount.
498
- branchCreated: false,
499
- mainEquivalentCostUSD: null,
500
- isLlmStage: false,
501
- };
502
- }
503
- // ── Derivation helpers ─────────────────────────────────────────────────────
504
- function deriveTerminalStatus(rr) {
505
- const tr = rr.terminationReason;
506
- if (!tr || typeof tr !== 'object')
507
- return 'incomplete';
508
- switch (tr.cause) {
509
- case 'finished': return 'ok';
510
- case 'incomplete':
511
- case 'degenerate_exhausted': return 'incomplete';
512
- case 'timeout': return 'timeout';
513
- case 'brief_too_vague': return 'brief_too_vague';
514
- case 'api_error':
515
- case 'provider_transport_failure':
516
- case 'api_aborted':
517
- case 'error': return 'error';
518
- default: return 'incomplete';
519
- }
520
- }
521
- const VALID_ERROR_CODES = new Set(ErrorCode.options);
522
- function deriveErrorCode(rr) {
523
- // structuredError.code is the most authoritative signal — the lifecycle
524
- // sets it for specific failure modes.
525
- if (rr.structuredError?.code) {
526
- const code = rr.structuredError.code;
527
- if (VALID_ERROR_CODES.has(code))
528
- return code;
529
- return null;
530
- }
531
- // rr.errorCode carries intentional error codes set by the lifecycle
532
- // (e.g., 'validator_silent_incomplete'). Status-level fallbacks from the
533
- // delegation layer (e.g., 'incomplete', 'error', 'timeout') are NOT
534
- // valid telemetry error codes and are dropped here.
535
- if (rr.errorCode && VALID_ERROR_CODES.has(rr.errorCode)) {
536
- return rr.errorCode;
537
- }
538
- const tr = rr.terminationReason;
539
- if (tr && typeof tr === 'object') {
540
- switch (tr.cause) {
541
- case 'api_error':
542
- case 'api_aborted': return 'provider_api_error';
543
- case 'provider_transport_failure': return 'provider_transport_failure';
544
- }
545
- }
546
- return null;
547
- }
548
- function deriveWorkerStatus(rr) {
549
- const tr = rr.terminationReason;
550
- if (tr && typeof tr === 'object' && tr.cause === 'finished' && tr.workerSelfAssessment) {
551
- return tr.workerSelfAssessment;
552
- }
553
- if (rr.workerStatus)
554
- return rr.workerStatus;
555
- return 'failed';
556
- }
557
- //# sourceMappingURL=event-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-builder.js","sourceRoot":"","sources":["../../src/events/event-builder.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import type { EventType } from './observability-events.js';
2
- export interface EventSink {
3
- readonly name: string;
4
- emit(event: EventType | Record<string, unknown>): void;
5
- }
6
- export type EventListener = (event: Record<string, unknown>) => void;
7
- /**
8
- * Unified event emitter per spec C7. Two output modes:
9
- * - listeners (functions registered via on()) — used by lifecycle handlers
10
- * and tests for inline observation of emitted events.
11
- * - sinks (named handlers registered via constructor or addSink) — used by
12
- * production fan-out to caller-response, verbose-log, telemetry channels.
13
- *
14
- * Both fire on every emit. Secret redaction runs universally at emit;
15
- * per-channel privacy filtering (telemetry-only) lives inside the telemetry
16
- * sink — this preserves the spec C7 two-layer scrubbing rule.
17
- *
18
- * Schema validation fires in dev/test for events with registered schemas;
19
- * unknown event names (e.g. diagnostic time_check, heartbeat_timer)
20
- * pass through without validation.
21
- */
22
- export declare class EventEmitter {
23
- private listeners;
24
- private sinks;
25
- constructor(sinks?: EventSink[]);
26
- on(l: EventListener): void;
27
- off(l: EventListener): void;
28
- addSink(sink: EventSink): void;
29
- emit(event: EventType | Record<string, unknown>): void;
30
- }
31
- //# sourceMappingURL=event-emitter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../src/events/event-emitter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG3D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACxD;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,KAAK,CAAmB;gBAEpB,KAAK,GAAE,SAAS,EAAO;IAInC,EAAE,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAI1B,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAK3B,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAI9B,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CA0BvD"}