






















@@ -2,11 +2,13 @@ import type { StreamFn } from "@mariozechner/pi-agent-core";
22import { fireAndForgetBoundedHook } from "../../../hooks/fire-and-forget.js";
33import {
44diagnosticErrorCategory,
5+diagnosticErrorFailureKind,
56diagnosticProviderRequestIdHash,
67} from "../../../infra/diagnostic-error-metadata.js";
78import {
89emitTrustedDiagnosticEvent,
910type DiagnosticEventInput,
11+type DiagnosticMemoryUsage,
1012} from "../../../infra/diagnostic-events.js";
1113import {
1214createChildDiagnosticTraceContext,
@@ -41,7 +43,7 @@ type ModelCallEventBase = Omit<
4143>;
4244type ModelCallErrorFields = Pick<
4345Extract<DiagnosticEventInput, { type: "model.call.error" }>,
44-"errorCategory" | "upstreamRequestIdHash"
46+"errorCategory" | "failureKind" | "memory" | "upstreamRequestIdHash"
4547>;
4648type ModelCallEndedHookFields = Pick<
4749PluginHookModelCallEndedEvent,
@@ -51,6 +53,7 @@ type ModelCallEndedHookFields = Pick<
5153| "requestPayloadBytes"
5254| "responseStreamBytes"
5355| "timeToFirstByteMs"
56+| "failureKind"
5457| "upstreamRequestIdHash"
5558>;
5659type ModelCallSizeTimingFields = Pick<
@@ -152,12 +155,29 @@ function baseModelCallEvent(
152155153156function modelCallErrorFields(err: unknown): ModelCallErrorFields {
154157const upstreamRequestIdHash = diagnosticProviderRequestIdHash(err);
158+const failureKind = diagnosticErrorFailureKind(err);
155159return {
156160errorCategory: diagnosticErrorCategory(err),
161+ ...(failureKind ? { failureKind, memory: processMemoryUsageSnapshot() } : {}),
157162 ...(upstreamRequestIdHash ? { upstreamRequestIdHash } : {}),
158163};
159164}
160165166+function processMemoryUsageSnapshot(): DiagnosticMemoryUsage | undefined {
167+try {
168+const memory = process.memoryUsage();
169+return {
170+rssBytes: memory.rss,
171+heapTotalBytes: memory.heapTotal,
172+heapUsedBytes: memory.heapUsed,
173+externalBytes: memory.external,
174+arrayBuffersBytes: memory.arrayBuffers,
175+};
176+} catch {
177+return undefined;
178+}
179+}
180+161181function modelCallHookEventBase(eventBase: ModelCallEventBase): PluginHookModelCallStartedEvent {
162182return {
163183runId: eventBase.runId,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。