From cb12ceb82c90ebc5da45c4827ae47e09790075a9 Mon Sep 17 00:00:00 2001 From: Vikhyath Mondreti Date: Wed, 7 Jan 2026 15:32:37 -0800 Subject: [PATCH] fix(preproc-errors): should not charge base execution cost in this case (#2719) * fix(preproc-errors): should not charge base execution cost in this case * remove comment --- apps/sim/lib/execution/preprocessing.ts | 1 + .../sim/lib/logs/execution/logging-session.ts | 25 ++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/apps/sim/lib/execution/preprocessing.ts b/apps/sim/lib/execution/preprocessing.ts index b0fcc6c1b9..cab28145e0 100644 --- a/apps/sim/lib/execution/preprocessing.ts +++ b/apps/sim/lib/execution/preprocessing.ts @@ -541,6 +541,7 @@ async function logPreprocessingError(params: { stackTrace: undefined, }, traceSpans: [], + skipCost: true, // Preprocessing errors should not charge - no execution occurred }) logger.debug(`[${requestId}] Logged preprocessing error to database`, { diff --git a/apps/sim/lib/logs/execution/logging-session.ts b/apps/sim/lib/logs/execution/logging-session.ts index 37004d688d..d618be12bc 100644 --- a/apps/sim/lib/logs/execution/logging-session.ts +++ b/apps/sim/lib/logs/execution/logging-session.ts @@ -45,6 +45,7 @@ export interface SessionErrorCompleteParams { stackTrace?: string } traceSpans?: TraceSpan[] + skipCost?: boolean } export interface SessionCancelledParams { @@ -342,7 +343,7 @@ export class LoggingSession { } try { - const { endedAt, totalDurationMs, error, traceSpans } = params + const { endedAt, totalDurationMs, error, traceSpans, skipCost } = params const endTime = endedAt ? new Date(endedAt) : new Date() const durationMs = typeof totalDurationMs === 'number' ? totalDurationMs : 0 @@ -350,19 +351,31 @@ export class LoggingSession { const hasProvidedSpans = Array.isArray(traceSpans) && traceSpans.length > 0 - const costSummary = hasProvidedSpans - ? calculateCostSummary(traceSpans) - : { - totalCost: BASE_EXECUTION_CHARGE, + const costSummary = skipCost + ? { + totalCost: 0, totalInputCost: 0, totalOutputCost: 0, totalTokens: 0, totalPromptTokens: 0, totalCompletionTokens: 0, - baseExecutionCharge: BASE_EXECUTION_CHARGE, + baseExecutionCharge: 0, modelCost: 0, models: {}, } + : hasProvidedSpans + ? calculateCostSummary(traceSpans) + : { + totalCost: BASE_EXECUTION_CHARGE, + totalInputCost: 0, + totalOutputCost: 0, + totalTokens: 0, + totalPromptTokens: 0, + totalCompletionTokens: 0, + baseExecutionCharge: BASE_EXECUTION_CHARGE, + modelCost: 0, + models: {}, + } const message = error?.message || 'Execution failed before starting blocks'