@zhixuan92/multi-model-agent-core 3.9.1 → 3.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +1 -1
  2. package/dist/model-profiles.json +201 -12
  3. package/dist/observability/events.d.ts +3 -3
  4. package/dist/review/quality-reviewer.d.ts +9 -0
  5. package/dist/review/quality-reviewer.d.ts.map +1 -1
  6. package/dist/review/quality-reviewer.js +31 -5
  7. package/dist/review/quality-reviewer.js.map +1 -1
  8. package/dist/review/spec-reviewer.d.ts +9 -0
  9. package/dist/review/spec-reviewer.d.ts.map +1 -1
  10. package/dist/review/spec-reviewer.js +25 -3
  11. package/dist/review/spec-reviewer.js.map +1 -1
  12. package/dist/routing/model-profiles.d.ts +73 -0
  13. package/dist/routing/model-profiles.d.ts.map +1 -1
  14. package/dist/routing/model-profiles.js +200 -26
  15. package/dist/routing/model-profiles.js.map +1 -1
  16. package/dist/run-tasks/reviewed-lifecycle.d.ts +22 -2
  17. package/dist/run-tasks/reviewed-lifecycle.d.ts.map +1 -1
  18. package/dist/run-tasks/reviewed-lifecycle.js +54 -26
  19. package/dist/run-tasks/reviewed-lifecycle.js.map +1 -1
  20. package/dist/telemetry/event-builder.d.ts +5 -25
  21. package/dist/telemetry/event-builder.d.ts.map +1 -1
  22. package/dist/telemetry/event-builder.js +174 -294
  23. package/dist/telemetry/event-builder.js.map +1 -1
  24. package/dist/telemetry/normalize.d.ts +18 -0
  25. package/dist/telemetry/normalize.d.ts.map +1 -0
  26. package/dist/telemetry/normalize.js +18 -0
  27. package/dist/telemetry/normalize.js.map +1 -0
  28. package/dist/telemetry/types.d.ts +969 -1816
  29. package/dist/telemetry/types.d.ts.map +1 -1
  30. package/dist/telemetry/types.js +204 -345
  31. package/dist/telemetry/types.js.map +1 -1
  32. package/dist/types.d.ts +48 -2
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/types.js +61 -16
  35. package/dist/types.js.map +1 -1
  36. package/package.json +1 -1
@@ -1,132 +1,210 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { computeSavedCostUSD } from '../types.js';
3
- import { extractCanonicalModelName } from '../routing/model-profiles.js';
4
- import { bucketCost, bucketSavedCost, bucketDuration, bucketFileCount, bucketRoundsUsed, bucketTurnCount, } from './bucketing.js';
3
+ import { normalizeModel } from './normalize.js';
5
4
  import { classifyConcern } from './concern-classifier.js';
6
- import { BoundedIdentifier } from './types.js';
7
5
  const KNOWN_CAPABILITIES = new Set(['web_search', 'web_fetch']);
6
+ const REVIEWED_ROUTES = new Set(['delegate', 'audit', 'review', 'verify', 'debug', 'execute-plan', 'investigate']);
7
+ const QUALITY_ONLY_ROUTES = new Set(['audit', 'review', 'verify', 'debug', 'investigate']);
8
+ const VERIFY_ROUTES = new Set(['delegate', 'execute-plan', 'verify']);
8
9
  export function buildTaskCompletedEvent(ctx) {
9
- const { route, taskSpec, runResult, client, triggeringSkill, parentModel } = ctx;
10
- const terminalStatus = deriveTerminalStatus(runResult);
11
- // errorCode is set only when there's a *real* failure to attribute. R1 forbids
12
- // it on `ok`. For `error` we derive from structuredError + terminationReason.
13
- // For `incomplete` / `timeout` / `cost_exceeded` / `brief_too_vague` /
14
- // `unavailable` — these are non-success outcomes but not error categories;
15
- // leave null unless the runner attached an explicit structured code. Avoids
16
- // the lazy `'other'` fallback that pollutes failure-mode panels.
17
- const errorCode = (() => {
18
- if (terminalStatus === 'ok')
19
- return null;
20
- if (terminalStatus === 'error')
21
- return deriveErrorCode(runResult);
22
- if (runResult.structuredError?.code) {
23
- return runResult.structuredError.code;
24
- }
25
- return null;
26
- })();
27
- const workerStatus = deriveWorkerStatus(runResult);
28
- const escalated = (runResult.escalationLog?.length ?? 0) > 1;
29
- const fallbackTriggered = (runResult.agents?.fallbackOverrides?.length ?? 0) > 0;
30
- const costBucketVal = bucketCost(runResult.usage?.costUSD ?? 0);
31
- const durationBucketVal = bucketDuration(runResult.durationMs ?? 0);
32
- const fileCountBucketVal = bucketFileCount(taskSpec.filePaths?.length ?? 0);
33
- const savedCostUSDRaw = computeSavedCostUSD(runResult.usage?.costUSD ?? null, runResult.usage?.inputTokens ?? 0, runResult.usage?.outputTokens ?? 0, parentModel ?? undefined);
34
- const savedCostBucketVal = bucketSavedCost(savedCostUSDRaw);
35
- const implModelRaw = runResult.models?.implementer ?? null;
36
- const implModel = implModelRaw ? extractCanonicalModelName(implModelRaw) : null;
37
- const implementerModelFamily = deriveModelFamily(implModel);
38
- const implementerModel = normalizeModelForTelemetry(implModel);
39
- const agentType = runResult.agents?.implementer === 'complex' ? 'complex' : 'standard';
40
- const rawCapabilities = runResult.agents?.implementerCapabilities ?? [];
41
- const capabilities = rawCapabilities.map(c => KNOWN_CAPABILITIES.has(c) ? c : 'other');
42
- const toolMode = (runResult.agents?.implementerToolMode ?? 'full');
43
- const topToolNames = deriveTopToolNames(runResult.toolCalls ?? []);
10
+ const { route, runResult, client, parentModel } = ctx;
44
11
  const stages = buildStages(route, runResult);
45
- // v2 fields
46
- const tr = runResult.terminationReason;
47
- const trIsObject = tr && typeof tr === 'object';
12
+ const totalDurationMs = runResult.durationMs ?? stages.reduce((s, st) => s + st.durationMs, 0);
13
+ const savedCostUSD = computeSavedCostUSD(runResult.usage?.costUSD ?? null, runResult.usage?.inputTokens ?? 0, runResult.usage?.outputTokens ?? 0, parentModel ?? undefined);
14
+ const reviewPolicy = ctx.reviewPolicy ?? (QUALITY_ONLY_ROUTES.has(route) ? 'quality_only' : 'full');
15
+ const verifyCommandPresent = ctx.verifyCommandPresent ?? false;
16
+ const implModelRaw = runResult.models?.implementer ?? null;
17
+ const implResult = implModelRaw ? normalizeModel(implModelRaw) : null;
48
18
  const escalationLog = runResult.escalationLog ?? [];
49
19
  const distinctProviders = new Set(escalationLog.map(a => a.provider)).size;
50
20
  const escalationCount = Math.max(0, distinctProviders - 1);
51
21
  return {
52
- type: 'task.completed',
53
22
  eventId: randomUUID(),
54
23
  route,
55
- agentType,
56
- capabilities: [...new Set(capabilities.filter(c => c === 'web_search' || c === 'web_fetch' || c === 'other'))],
57
- toolMode,
58
- triggeredFromSkill: triggeringSkill,
59
24
  client,
60
- fileCountBucket: fileCountBucketVal,
61
- durationBucket: durationBucketVal,
62
- costBucket: costBucketVal,
63
- savedCostBucket: savedCostBucketVal,
64
- implementerModelFamily,
65
- implementerModel,
66
- terminalStatus,
67
- workerStatus,
68
- errorCode,
69
- escalated,
70
- fallbackTriggered,
71
- topToolNames,
72
- stages,
73
- // v2 fields
74
- filesWrittenBucket: bucketFileCount(runResult.filesWritten.length),
75
- c2Promoted: trIsObject ? (tr.wasPromoted ?? false) : false,
76
- workerSelfAssessment: trIsObject ? (tr.workerSelfAssessment ?? null) : null,
77
- concernCount: runResult.concerns?.length ?? 0,
25
+ agentType: runResult.agents?.implementer === 'complex' ? 'complex' : 'standard',
26
+ toolMode: (runResult.agents?.implementerToolMode ?? 'full'),
27
+ capabilities: (runResult.agents?.implementerCapabilities ?? [])
28
+ .filter(c => KNOWN_CAPABILITIES.has(c))
29
+ .slice(0, 3),
30
+ reviewPolicy,
31
+ verifyCommandPresent,
32
+ implementerModel: implResult?.canonical ?? 'custom',
33
+ terminalStatus: deriveTerminalStatus(runResult),
34
+ workerStatus: deriveWorkerStatus(runResult),
35
+ errorCode: deriveErrorCode(runResult),
36
+ parentModelFamily: parentModel ? normalizeModel(parentModel).family : 'other',
37
+ inputTokens: runResult.usage?.inputTokens ?? 0,
38
+ outputTokens: runResult.usage?.outputTokens ?? 0,
39
+ cachedTokens: runResult.usage?.cachedTokens ?? 0,
40
+ reasoningTokens: runResult.usage?.reasoningTokens ?? 0,
41
+ totalDurationMs,
42
+ totalCostUSD: runResult.usage?.costUSD ?? 0,
43
+ totalSavedCostUSD: savedCostUSD,
44
+ concernCount: Math.min(runResult.concerns?.length ?? 0, 150),
78
45
  escalationCount,
79
- fallbackCount: runResult.agents?.fallbackOverrides?.length ?? 0,
80
- turnCountBucket: bucketTurnCount(runResult.turns),
81
- stallTriggered: runResult.stallTriggered ?? false,
46
+ fallbackCount: Math.min(runResult.agents?.fallbackOverrides?.length ?? 0, 20),
47
+ stallCount: Math.min(runResult.stallCount ?? (runResult.stallTriggered ? 1 : 0), 20),
48
+ taskMaxIdleMs: runResult.taskMaxIdleMs ?? null,
82
49
  clarificationRequested: runResult.lifecycleClarificationRequested ?? false,
83
- parentModelFamily: deriveModelFamily(parentModel),
84
- briefQualityWarningCount: runResult.briefQualityWarnings?.length ?? 0,
50
+ briefQualityWarningCount: Math.min(runResult.briefQualityWarnings?.length ?? 0, 20),
51
+ sandboxViolationCount: Math.min(runResult.sandboxViolationCount ?? 0, 100),
52
+ stages,
85
53
  };
86
54
  }
87
- export function buildSessionStartedEvent(snapshot) {
55
+ function buildStages(route, rr) {
56
+ const result = [];
57
+ // implementing — always present
58
+ const impl = buildImplStage(rr);
59
+ if (impl)
60
+ result.push(impl);
61
+ // spec_review — only on reviewed routes with full review
62
+ if (REVIEWED_ROUTES.has(route) && !QUALITY_ONLY_ROUTES.has(route)) {
63
+ const sr = buildReviewStage('spec_review', rr, rr.specReviewStatus ?? null, rr.reviewRounds?.spec ?? null);
64
+ if (sr)
65
+ result.push(sr);
66
+ }
67
+ // spec_rework — only on full review routes
68
+ if (REVIEWED_ROUTES.has(route) && !QUALITY_ONLY_ROUTES.has(route)) {
69
+ const sw = buildReworkStage('spec_rework', rr);
70
+ if (sw)
71
+ result.push(sw);
72
+ }
73
+ // quality_review — on all reviewed routes
74
+ if (REVIEWED_ROUTES.has(route)) {
75
+ const qr = buildReviewStage('quality_review', rr, rr.qualityReviewStatus ?? null, rr.reviewRounds?.quality ?? null);
76
+ if (qr)
77
+ result.push(qr);
78
+ }
79
+ // quality_rework — on all reviewed routes
80
+ if (REVIEWED_ROUTES.has(route)) {
81
+ const qw = buildReworkStage('quality_rework', rr);
82
+ if (qw)
83
+ result.push(qw);
84
+ }
85
+ // diff_review — only on full review routes
86
+ if (REVIEWED_ROUTES.has(route) && !QUALITY_ONLY_ROUTES.has(route)) {
87
+ const dr = buildReviewStage('diff_review', rr, null, null);
88
+ if (dr)
89
+ result.push(dr);
90
+ }
91
+ // verifying — only on delegate, execute-plan, verify routes
92
+ if (VERIFY_ROUTES.has(route)) {
93
+ const vs = buildVerifyStage(rr);
94
+ if (vs)
95
+ result.push(vs);
96
+ }
97
+ // committing — always present
98
+ const cm = buildCommitStage(rr);
99
+ if (cm)
100
+ result.push(cm);
101
+ return result.slice(0, 8);
102
+ }
103
+ function extractStageData(raw, _rr, _stageName) {
104
+ if (!raw || !raw.entered)
105
+ return null;
88
106
  return {
89
- type: 'session.started',
90
- eventId: randomUUID(),
91
- configFlavor: {
92
- defaultTier: snapshot.defaultTier,
93
- diagnosticsEnabled: snapshot.diagnosticsEnabled,
94
- autoUpdateSkills: snapshot.autoUpdateSkills,
95
- },
96
- providersConfigured: [...new Set(snapshot.providersConfigured)],
107
+ model: raw.model ? normalizeModel(raw.model).canonical : 'custom',
108
+ agentTier: (raw.agentTier === 'complex' ? 'reasoning' : 'standard'),
109
+ durationMs: Math.min(raw.durationMs ?? 0, 3_600_000),
110
+ costUSD: Math.max(0, Math.round((raw.costUSD ?? 0) * 1_000_000) / 1_000_000),
111
+ inputTokens: raw.inputTokens ?? 0,
112
+ outputTokens: raw.outputTokens ?? 0,
113
+ cachedTokens: raw.cachedTokens ?? 0,
114
+ reasoningTokens: raw.reasoningTokens ?? 0,
115
+ toolCallCount: raw.toolCallCount ?? 0,
116
+ filesReadCount: raw.filesReadCount ?? 0,
117
+ filesWrittenCount: raw.filesWrittenCount ?? 0,
118
+ turnCount: raw.turnCount ?? 0,
119
+ maxIdleMs: raw.maxIdleMs ?? null,
120
+ totalIdleMs: raw.totalIdleMs ?? null,
121
+ };
122
+ }
123
+ function buildImplStage(rr) {
124
+ const ss = rr.stageStats?.implementing;
125
+ const base = extractStageData(ss, rr, 'implementing');
126
+ if (!base)
127
+ return null;
128
+ return { name: 'implementing', ...base };
129
+ }
130
+ function buildReviewStage(name, rr, status, rounds) {
131
+ const ss = rr.stageStats?.[name];
132
+ const base = extractStageData(ss, rr, name);
133
+ if (!base)
134
+ return null;
135
+ const concernSource = name;
136
+ const stageConcerns = (rr.concerns ?? []).filter(c => c.source === concernSource);
137
+ const categories = [...new Set(stageConcerns.map(c => classifyConcern(c)))];
138
+ const findingsBySeverity = { high: 0, medium: 0, low: 0, style: 0 };
139
+ for (const c of stageConcerns) {
140
+ const sev = c.severity ?? 'medium';
141
+ if (sev in findingsBySeverity) {
142
+ findingsBySeverity[sev] =
143
+ Math.min(findingsBySeverity[sev] + 1, 50);
144
+ }
145
+ }
146
+ let verdict = status ?? 'not_applicable';
147
+ if (verdict === 'approved' && stageConcerns.length > 0) {
148
+ verdict = 'concerns';
149
+ }
150
+ return {
151
+ name,
152
+ ...base,
153
+ verdict,
154
+ roundsUsed: Math.min(rounds ?? 1, 10),
155
+ concernCategories: categories.slice(0, 9),
156
+ findingsBySeverity,
97
157
  };
98
158
  }
99
- export function buildInstallChangedEvent(from, to, trigger) {
159
+ function buildReworkStage(name, rr) {
160
+ const ss = rr.stageStats?.[name];
161
+ const base = extractStageData(ss, rr, name);
162
+ if (!base)
163
+ return null;
164
+ const concernSource = name === 'spec_rework' ? 'spec_review' : 'quality_review';
165
+ const stageConcerns = (rr.concerns ?? []).filter(c => c.source === concernSource);
166
+ const triggeringCategories = [...new Set(stageConcerns.map(c => classifyConcern(c)))];
100
167
  return {
101
- type: 'install.changed',
102
- eventId: randomUUID(),
103
- fromVersion: from,
104
- toVersion: to,
105
- trigger,
168
+ name,
169
+ ...base,
170
+ triggeringConcernCategories: triggeringCategories.slice(0, 9),
106
171
  };
107
172
  }
108
- export function buildSkillInstalledEvent(skillId, client) {
173
+ function buildVerifyStage(rr) {
174
+ const ss = rr.stageStats?.verifying;
175
+ const base = extractStageData(ss, rr, 'verifying');
176
+ if (!base)
177
+ return null;
109
178
  return {
110
- type: 'skill.installed',
111
- eventId: randomUUID(),
112
- skill: skillId,
113
- client: client,
179
+ name: 'verifying',
180
+ ...base,
181
+ outcome: ss?.outcome ?? 'not_applicable',
182
+ skipReason: ss?.outcome === 'skipped' ? (ss?.skipReason ?? 'other') : null,
183
+ };
184
+ }
185
+ function buildCommitStage(rr) {
186
+ const ss = rr.stageStats?.committing;
187
+ const base = extractStageData(ss, rr, 'committing');
188
+ if (!base)
189
+ return null;
190
+ return {
191
+ name: 'committing',
192
+ ...base,
193
+ filesCommittedCount: 0,
194
+ branchCreated: false,
114
195
  };
115
196
  }
116
197
  // ── Derivation helpers ─────────────────────────────────────────────────────
117
198
  function deriveTerminalStatus(rr) {
118
199
  const tr = rr.terminationReason;
119
- // Top-level string literals (handled before any property access)
120
200
  if (tr === 'all_tiers_unavailable')
121
201
  return 'unavailable';
122
202
  if (tr === 'cost_ceiling')
123
203
  return 'cost_exceeded';
124
204
  if (tr === 'round_cap')
125
205
  return 'incomplete';
126
- // Missing terminationReason
127
206
  if (!tr || typeof tr !== 'object')
128
207
  return 'incomplete';
129
- // Object form — read cause
130
208
  switch (tr.cause) {
131
209
  case 'finished': return 'ok';
132
210
  case 'incomplete':
@@ -142,223 +220,25 @@ function deriveTerminalStatus(rr) {
142
220
  }
143
221
  }
144
222
  function deriveErrorCode(rr) {
145
- // Priority 1: structuredError.code if present and in allowlist
146
- if (rr.structuredError?.code) {
223
+ if (rr.structuredError?.code)
147
224
  return rr.structuredError.code;
148
- }
149
- // Priority 2: from terminationReason.cause mapping
150
225
  const tr = rr.terminationReason;
151
226
  if (tr && typeof tr === 'object') {
152
227
  switch (tr.cause) {
153
- case 'api_error': return 'api_error';
154
- case 'network_error': return 'network_error';
228
+ case 'api_error':
155
229
  case 'api_aborted': return 'api_error';
230
+ case 'network_error': return 'network_error';
156
231
  }
157
232
  }
158
- // Priority 3: fallback
159
- return 'other';
233
+ return null;
160
234
  }
161
235
  function deriveWorkerStatus(rr) {
162
236
  const tr = rr.terminationReason;
163
- // Priority 1: terminationReason.cause === 'finished' → use workerSelfAssessment
164
237
  if (tr && typeof tr === 'object' && tr.cause === 'finished' && tr.workerSelfAssessment) {
165
238
  return tr.workerSelfAssessment;
166
239
  }
167
- // Priority 2: RunResult.workerStatus
168
240
  if (rr.workerStatus)
169
241
  return rr.workerStatus;
170
- // Priority 3: fallback
171
242
  return 'failed';
172
243
  }
173
- const SNAKE_TO_CAMEL = {
174
- read_file: 'readFile',
175
- write_file: 'writeFile',
176
- edit_file: 'editFile',
177
- run_shell: 'runShell',
178
- list_files: 'listFiles',
179
- };
180
- /**
181
- * Top-N selection of tool names by call frequency.
182
- * Pipeline:
183
- * 1. snake_case → camelCase normalization (so adapters emitting either form
184
- * collapse to the same tool name in counts)
185
- * 2. shape validation against BoundedIdentifier (any name that passes is
186
- * counted; names that fail shape are dropped — NOT collapsed to 'other')
187
- * 3. top 20 by frequency (matches schema max(20))
188
- */
189
- export function deriveTopToolNames(toolCalls) {
190
- const counts = new Map();
191
- for (const name of toolCalls) {
192
- const canonical = SNAKE_TO_CAMEL[name] ?? name;
193
- if (BoundedIdentifier.safeParse(canonical).success) {
194
- counts.set(canonical, (counts.get(canonical) ?? 0) + 1);
195
- }
196
- }
197
- return Array.from(counts.entries())
198
- .sort((a, b) => b[1] - a[1])
199
- .slice(0, 20)
200
- .map(([name]) => name);
201
- }
202
- function buildStages(route, rr) {
203
- const ss = rr.stageStats;
204
- const reviewedRoutes = new Set(['delegate', 'execute-plan']);
205
- const verifyRoutes = new Set(['delegate', 'execute-plan', 'verify']);
206
- return {
207
- implementing: buildStageStats(ss?.implementing),
208
- verifying: buildVerifyStageStats(ss?.verifying, route, verifyRoutes),
209
- spec_review: buildReviewStageStats(ss?.spec_review, route, reviewedRoutes, 'spec_review', rr.specReviewStatus ?? null, rr.reviewRounds?.spec ?? null, rr),
210
- spec_rework: buildStageStats(ss?.spec_rework),
211
- quality_review: buildReviewStageStats(ss?.quality_review, route, reviewedRoutes, 'quality_review', rr.qualityReviewStatus ?? null, rr.reviewRounds?.quality ?? null, rr),
212
- quality_rework: buildStageStats(ss?.quality_rework),
213
- diff_review: reviewedRoutes.has(route) && ss?.diff_review && ss.diff_review.entered
214
- ? buildReviewStageStats(ss?.diff_review, route, reviewedRoutes, 'diff_review', null, null, rr)
215
- : undefined,
216
- committing: buildStageStats(ss?.committing),
217
- };
218
- }
219
- function buildStageStats(raw) {
220
- if (!raw || !raw.entered) {
221
- return {
222
- entered: false,
223
- durationBucket: null,
224
- costBucket: null,
225
- agentTier: null,
226
- modelFamily: null,
227
- model: null,
228
- };
229
- }
230
- return {
231
- entered: true,
232
- durationBucket: bucketDuration(raw.durationMs ?? 0),
233
- costBucket: bucketCost(raw.costUSD ?? 0),
234
- agentTier: raw.agentTier,
235
- modelFamily: raw.modelFamily,
236
- model: normalizeModelForTelemetry(raw.model ? extractCanonicalModelName(raw.model) : null),
237
- };
238
- }
239
- function buildVerifyStageStats(raw, route, verifyRoutes) {
240
- if (!verifyRoutes.has(route)) {
241
- return {
242
- entered: false,
243
- durationBucket: null,
244
- costBucket: null,
245
- agentTier: null,
246
- modelFamily: null,
247
- model: null,
248
- outcome: null,
249
- skipReason: null,
250
- };
251
- }
252
- if (!raw || !raw.entered) {
253
- return {
254
- entered: false,
255
- durationBucket: null,
256
- costBucket: null,
257
- agentTier: null,
258
- modelFamily: null,
259
- model: null,
260
- outcome: null,
261
- skipReason: null,
262
- };
263
- }
264
- return {
265
- entered: true,
266
- durationBucket: bucketDuration(raw.durationMs ?? 0),
267
- costBucket: bucketCost(raw.costUSD ?? 0),
268
- agentTier: raw.agentTier,
269
- modelFamily: raw.modelFamily,
270
- model: normalizeModelForTelemetry(raw.model ? extractCanonicalModelName(raw.model) : null),
271
- outcome: raw.outcome ?? 'not_applicable',
272
- skipReason: raw.outcome === 'skipped' ? (raw.skipReason ?? 'other') : null,
273
- };
274
- }
275
- function buildReviewStageStats(raw, route, reviewedRoutes, concernSource, reviewStatus, rounds, rr) {
276
- if (!reviewedRoutes.has(route)) {
277
- return {
278
- entered: false,
279
- durationBucket: null,
280
- costBucket: null,
281
- agentTier: null,
282
- modelFamily: null,
283
- model: null,
284
- verdict: null,
285
- roundsUsed: null,
286
- concernCategories: null,
287
- };
288
- }
289
- if (!raw || !raw.entered) {
290
- return {
291
- entered: false,
292
- durationBucket: null,
293
- costBucket: null,
294
- agentTier: null,
295
- modelFamily: null,
296
- model: null,
297
- verdict: null,
298
- roundsUsed: null,
299
- concernCategories: null,
300
- };
301
- }
302
- // Derive verdict: upgrade 'approved' → 'concerns' if concerns exist from this stage
303
- let verdict = reviewStatus ?? 'not_applicable';
304
- if (verdict === 'approved') {
305
- const hasMatchingConcerns = (rr.concerns ?? []).some(c => c.source === concernSource);
306
- if (hasMatchingConcerns) {
307
- verdict = 'concerns';
308
- }
309
- }
310
- // Classify concerns for this stage
311
- const stageConcerns = (rr.concerns ?? []).filter(c => c.source === concernSource);
312
- const categories = [...new Set(stageConcerns.map(c => classifyConcern(c)))];
313
- return {
314
- entered: true,
315
- durationBucket: bucketDuration(raw.durationMs ?? 0),
316
- costBucket: bucketCost(raw.costUSD ?? 0),
317
- agentTier: raw.agentTier,
318
- modelFamily: raw.modelFamily,
319
- model: normalizeModelForTelemetry(raw.model ? extractCanonicalModelName(raw.model) : null),
320
- verdict,
321
- roundsUsed: rounds !== null ? bucketRoundsUsed(rounds) : '1',
322
- concernCategories: categories.length > 0 ? categories : [],
323
- };
324
- }
325
- // ── Model helpers ──────────────────────────────────────────────────────────
326
- export function deriveModelFamily(modelId) {
327
- if (!modelId)
328
- return 'other';
329
- const m = modelId.toLowerCase();
330
- if (m.startsWith('claude'))
331
- return 'claude';
332
- if (m.startsWith('gpt') ||
333
- m.startsWith('openai') ||
334
- m.startsWith('o1') ||
335
- m.startsWith('o3') ||
336
- m.startsWith('o4'))
337
- return 'openai';
338
- if (m.startsWith('gemini'))
339
- return 'gemini';
340
- if (m.startsWith('deepseek'))
341
- return 'deepseek';
342
- if (m.startsWith('grok'))
343
- return 'grok';
344
- if (m.startsWith('mistral'))
345
- return 'mistral';
346
- if (m.startsWith('llama') || m.startsWith('meta-llama/'))
347
- return 'meta';
348
- if (m.startsWith('qwen'))
349
- return 'qwen';
350
- if (m.startsWith('glm'))
351
- return 'zhipu';
352
- if (m.startsWith('kimi'))
353
- return 'kimi';
354
- if (m.startsWith('minimax'))
355
- return 'minimax';
356
- return 'other';
357
- }
358
- export function normalizeModelForTelemetry(modelId) {
359
- if (!modelId)
360
- return 'other';
361
- const result = BoundedIdentifier.safeParse(modelId);
362
- return result.success ? modelId : 'other';
363
- }
364
244
  //# sourceMappingURL=event-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-builder.js","sourceRoot":"","sources":["../../src/telemetry/event-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-builder.js","sourceRoot":"","sources":["../../src/telemetry/event-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { ModelFamily } from '../routing/model-profiles.js';
2
+ export type { ModelFamily };
3
+ /**
4
+ * Normalize a raw model ID into its canonical name and family.
5
+ *
6
+ * Combines prefix stripping (extractCanonicalModelName) with profile
7
+ * lookup (findModelProfile) into a single call. Callers that need both
8
+ * the canonical form and the family without reaching into routing
9
+ * internals should use this entry point.
10
+ *
11
+ * Idempotent: the canonical output of normalizeModel, when fed back
12
+ * in as input, produces the same canonical output.
13
+ */
14
+ export declare function normalizeModel(rawModelId: string): {
15
+ canonical: string;
16
+ family: ModelFamily;
17
+ };
18
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/telemetry/normalize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAI7F"}
@@ -0,0 +1,18 @@
1
+ import { extractCanonicalModelName, findModelProfile } from '../routing/model-profiles.js';
2
+ /**
3
+ * Normalize a raw model ID into its canonical name and family.
4
+ *
5
+ * Combines prefix stripping (extractCanonicalModelName) with profile
6
+ * lookup (findModelProfile) into a single call. Callers that need both
7
+ * the canonical form and the family without reaching into routing
8
+ * internals should use this entry point.
9
+ *
10
+ * Idempotent: the canonical output of normalizeModel, when fed back
11
+ * in as input, produces the same canonical output.
12
+ */
13
+ export function normalizeModel(rawModelId) {
14
+ const canonical = extractCanonicalModelName(rawModelId);
15
+ const family = findModelProfile(canonical).family;
16
+ return { canonical, family };
17
+ }
18
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/telemetry/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAI3F;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,MAAM,SAAS,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC"}