diff --git a/extensions/diagnostics-otel/src/service.otlp-export.test.ts b/extensions/diagnostics-otel/src/service.otlp-export.test.ts index 91c6bce21ae6..b213797d1273 100644 --- a/extensions/diagnostics-otel/src/service.otlp-export.test.ts +++ b/extensions/diagnostics-otel/src/service.otlp-export.test.ts @@ -33,10 +33,8 @@ import { waitForDiagnosticEventsDrained, } from "openclaw/plugin-sdk/diagnostic-runtime"; import { afterEach, beforeEach, expect, test, vi } from "vitest"; -import { - runModelCallAndCaptureTraceparent, - startLocalOtlpReceiver, -} from "../../../test/e2e/qa-lab/runtime/otel-test-support.js"; +import { runModelCallAndCaptureTraceparent } from "../../../test/e2e/qa-lab/runtime/otel-model-call.test-support.js"; +import { startLocalOtlpReceiver } from "../../../test/e2e/qa-lab/runtime/otel-test-support.js"; import { createDiagnosticsOtelService } from "./service.js"; import { createOtelContext, diff --git a/test/e2e/qa-lab/runtime/otel-model-call.test-support.ts b/test/e2e/qa-lab/runtime/otel-model-call.test-support.ts new file mode 100644 index 000000000000..38d6370a907a --- /dev/null +++ b/test/e2e/qa-lab/runtime/otel-model-call.test-support.ts @@ -0,0 +1,33 @@ +import type { StreamFn } from "openclaw/plugin-sdk/agent-core"; +import type { DiagnosticTraceContext } from "openclaw/plugin-sdk/diagnostic-runtime"; +import { wrapStreamFnWithDiagnosticModelCallEvents } from "../../../../src/agents/embedded-agent-runner/run/attempt.model-diagnostic-events.js"; + +export function runModelCallAndCaptureTraceparent(params: { + trace: DiagnosticTraceContext; + runId: string; + callId: string; + provider: string; + model: string; +}): string | undefined { + let outboundTraceparent: string | undefined; + const wrapped = wrapStreamFnWithDiagnosticModelCallEvents( + (( + _model: Parameters[0], + _context: Parameters[1], + options: Parameters[2], + ) => { + outboundTraceparent = options?.headers?.traceparent; + return undefined as never; + }) as StreamFn, + { + runId: params.runId, + provider: params.provider, + model: params.model, + trace: params.trace, + nextCallId: () => params.callId, + suppressPluginHooks: true, + }, + ); + void wrapped({} as never, {} as never); + return outboundTraceparent; +} diff --git a/test/e2e/qa-lab/runtime/otel-test-support.ts b/test/e2e/qa-lab/runtime/otel-test-support.ts index 4bc834a1e713..f20edb2838d2 100644 --- a/test/e2e/qa-lab/runtime/otel-test-support.ts +++ b/test/e2e/qa-lab/runtime/otel-test-support.ts @@ -1,9 +1,6 @@ import { createServer, type IncomingMessage, type ServerResponse } from "node:http"; import { Socket } from "node:net"; import { gunzipSync } from "node:zlib"; -import type { StreamFn } from "openclaw/plugin-sdk/agent-core"; -import type { DiagnosticTraceContext } from "openclaw/plugin-sdk/diagnostic-runtime"; -import { wrapStreamFnWithDiagnosticModelCallEvents } from "../../../../src/agents/embedded-agent-runner/run/attempt.model-diagnostic-events.js"; export type OtlpSignal = "logs" | "metrics" | "traces"; @@ -116,36 +113,6 @@ export function createRecentTraceSummary() { }; } -export function runModelCallAndCaptureTraceparent(params: { - trace: DiagnosticTraceContext; - runId: string; - callId: string; - provider: string; - model: string; -}): string | undefined { - let outboundTraceparent: string | undefined; - const wrapped = wrapStreamFnWithDiagnosticModelCallEvents( - (( - _model: Parameters[0], - _context: Parameters[1], - options: Parameters[2], - ) => { - outboundTraceparent = options?.headers?.traceparent; - return undefined as never; - }) as StreamFn, - { - runId: params.runId, - provider: params.provider, - model: params.model, - trace: params.trace, - nextCallId: () => params.callId, - suppressPluginHooks: true, - }, - ); - void wrapped({} as never, {} as never); - return outboundTraceparent; -} - const OTLP_SIGNAL_PATHS = new Map([ ["/v1/traces", "traces"], ["/v1/metrics", "metrics"],