* Telemetry helper for tengu_auto_mode_outcome. All string fields are * enum-like values (outcome, model name, classifier type, failure kind) — * never code or file paths, so the AnalyticsMetadata casts are safe.
(
outcome: AutoModeOutcome,
model: string,
extra?: {
classifierType?: string
failureKind?: string
durationMs?: number
mainLoopTokens?: number
classifierInputTokens?: number
classifierTokensEst?: number
transcriptActualTokens?: number
transcriptLimitTokens?: number
},
)
| 1423 | * never code or file paths, so the AnalyticsMetadata casts are safe. |
| 1424 | */ |
| 1425 | function logAutoModeOutcome( |
| 1426 | outcome: AutoModeOutcome, |
| 1427 | model: string, |
| 1428 | extra?: { |
| 1429 | classifierType?: string |
| 1430 | failureKind?: string |
| 1431 | durationMs?: number |
| 1432 | mainLoopTokens?: number |
| 1433 | classifierInputTokens?: number |
| 1434 | classifierTokensEst?: number |
| 1435 | transcriptActualTokens?: number |
| 1436 | transcriptLimitTokens?: number |
| 1437 | }, |
| 1438 | ): void { |
| 1439 | const { classifierType, failureKind, ...rest } = extra ?? {} |
| 1440 | logEvent('tengu_auto_mode_outcome', { |
| 1441 | outcome: |
| 1442 | outcome as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 1443 | classifierModel: |
| 1444 | model as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 1445 | ...(classifierType !== undefined && { |
| 1446 | classifierType: |
| 1447 | classifierType as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 1448 | }), |
| 1449 | ...(failureKind !== undefined && { |
| 1450 | failureKind: |
| 1451 | failureKind as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 1452 | }), |
| 1453 | ...rest, |
| 1454 | }) |
| 1455 | } |
| 1456 | |
| 1457 | /** |
| 1458 | * Detect API 400 "prompt is too long: N tokens > M maximum" errors and |
no test coverage detected