@cydm/pie 2.7.14 → 2.7.15

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.
@@ -2389,20 +2389,41 @@ var NodeHttpClient = class {
2389
2389
  waiting = null;
2390
2390
  w(value);
2391
2391
  };
2392
+ let pendingFailureLog = null;
2393
+ let failureLogged = false;
2394
+ const classifyFailure = (e) => {
2395
+ if (signal?.aborted === true || isAbortErrorMessage(e.message)) {
2396
+ return { level: "INFO", message: `Request [${reqTag}] SSE stream aborted by caller`, extra: { error: e.message } };
2397
+ }
2398
+ if (requestTimeoutError) {
2399
+ return { level: "WARN", message: `Request [${reqTag}] SSE stream failed (request timeout)`, extra: { error: e.message } };
2400
+ }
2401
+ if (e.message === "SSE stream aborted" || e.message === "SSE stream closed before end" || e.message === "SSE stream ended before response completed") {
2402
+ return { level: "WARN", message: `Request [${reqTag}] SSE stream closed by remote`, extra: { error: e.message } };
2403
+ }
2404
+ return { level: "ERROR", message: `Request [${reqTag}] SSE stream error`, extra: { error: e.message } };
2405
+ };
2406
+ const logFailureIfDelivered = () => {
2407
+ if (failureLogged || !pendingFailureLog) return;
2408
+ failureLogged = true;
2409
+ const entry = pendingFailureLog;
2410
+ pendingFailureLog = null;
2411
+ logHttp(entry.level, entry.message, entry.extra);
2412
+ };
2413
+ const logUndeliveredFailure = () => {
2414
+ if (failureLogged || !pendingFailureLog) return;
2415
+ failureLogged = true;
2416
+ const entry = pendingFailureLog;
2417
+ pendingFailureLog = null;
2418
+ logHttp("DEBUG", `${entry.message} (not consumed by the reader)`, entry.extra);
2419
+ };
2392
2420
  const failStream = (e) => {
2393
2421
  if (done && error) return;
2422
+ const firstFailure = !error;
2394
2423
  error = e;
2395
2424
  done = true;
2425
+ if (firstFailure) pendingFailureLog = classifyFailure(e);
2396
2426
  wake({ done: true, value: void 0 });
2397
- if (signal?.aborted === true || isAbortErrorMessage(e.message)) {
2398
- logHttp("INFO", `Request [${reqTag}] SSE stream aborted by caller`, { error: e.message });
2399
- } else if (requestTimeoutError) {
2400
- logHttp("WARN", `Request [${reqTag}] SSE stream failed (request timeout)`, { error: e.message });
2401
- } else if (e.message === "SSE stream aborted" || e.message === "SSE stream closed before end" || e.message === "SSE stream ended before response completed") {
2402
- logHttp("WARN", `Request [${reqTag}] SSE stream closed by remote`, { error: e.message });
2403
- } else {
2404
- logHttp("ERROR", `Request [${reqTag}] SSE stream error`, { error: e.message });
2405
- }
2406
2427
  };
2407
2428
  const flushBuffer = (final = false) => {
2408
2429
  if (final) {
@@ -2462,16 +2483,19 @@ var NodeHttpClient = class {
2462
2483
  });
2463
2484
  });
2464
2485
  res.on("error", (e) => {
2486
+ if (/aborted|econnreset|socket hang up/i.test(e.message)) {
2487
+ failStream(requestTimeoutError ?? new Error("SSE stream aborted"));
2488
+ return;
2489
+ }
2465
2490
  failStream(requestTimeoutError ?? e);
2466
2491
  });
2467
2492
  res.on("aborted", () => {
2493
+ if (consumerClosed || done) return;
2468
2494
  failStream(requestTimeoutError ?? new Error("SSE stream aborted"));
2469
2495
  });
2470
2496
  res.on("close", () => {
2471
2497
  if (consumerClosed) return;
2472
- if (!done || !res.complete) {
2473
- failStream(requestTimeoutError ?? new Error("SSE stream closed before end"));
2474
- }
2498
+ if (!done || !res.complete) failStream(requestTimeoutError ?? new Error("SSE stream closed before end"));
2475
2499
  });
2476
2500
  try {
2477
2501
  while (true) {
@@ -2485,7 +2509,10 @@ var NodeHttpClient = class {
2485
2509
  queueHead = 0;
2486
2510
  }
2487
2511
  if (done) {
2488
- if (error) throw error;
2512
+ if (error) {
2513
+ logFailureIfDelivered();
2514
+ throw error;
2515
+ }
2489
2516
  return;
2490
2517
  }
2491
2518
  const waitResult = await new Promise((r) => {
@@ -2495,6 +2522,7 @@ var NodeHttpClient = class {
2495
2522
  }
2496
2523
  } finally {
2497
2524
  consumerClosed = true;
2525
+ logUndeliveredFailure();
2498
2526
  if (signal && abortHandler) {
2499
2527
  signal.removeEventListener("abort", abortHandler);
2500
2528
  }
@@ -4,7 +4,7 @@ import {
4
4
  disposeModelTransports,
5
5
  streamSimple,
6
6
  validateToolArguments
7
- } from "./chunk-N4252GH3.js";
7
+ } from "./chunk-NM2JLPJ6.js";
8
8
 
9
9
  // ../../packages/agent-core/src/failure.ts
10
10
  function getAgentFailureMetadata(error) {
@@ -8,8 +8,8 @@ import {
8
8
  createToolCallerIdentity,
9
9
  getAgentFailureMetadata,
10
10
  getToolCallerIdentity
11
- } from "./chunk-5YU6MU2N.js";
12
- import "./chunk-N4252GH3.js";
11
+ } from "./chunk-TDHVB2FH.js";
12
+ import "./chunk-NM2JLPJ6.js";
13
13
  import "./chunk-XXGYUYXI.js";
14
14
  import "./chunk-LZQXQOPJ.js";
15
15
  export {
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __createRequire } from "node:module"; const require = __createRequire(import.meta.url);
2
2
  import {
3
3
  EventStream
4
- } from "./chunk-N4252GH3.js";
4
+ } from "./chunk-NM2JLPJ6.js";
5
5
  import "./chunk-XXGYUYXI.js";
6
6
  import "./chunk-LZQXQOPJ.js";
7
7