import { copyPluginToolMeta } from "../plugins/tools.js"; import { bindAbortRelay } from "../utils/fetch-timeout.js"; import { copyChannelAgentToolMeta } from "./channel-tools.js"; import type { AnyAgentTool } from "./pi-tools.types.js";
function throwAbortError(): never { const err = new Error("Aborted");
err.name = "AbortError"; throw err;
}
/** * Checks if an object is a valid AbortSignal using structural typing. * This is more reliable than `instanceof` across different realms (VM, iframe, etc.) * where the AbortSignal constructor may differ.
*/ function isAbortSignal(obj: unknown): obj is AbortSignal { return obj instanceof AbortSignal;
}
function combineAbortSignals(a?: AbortSignal, b?: AbortSignal): AbortSignal | undefined { if (!a && !b) { return undefined;
} if (a && !b) { return a;
} if (b && !a) { return b;
} if (a?.aborted) { return a;
} if (b?.aborted) { return b;
} if (typeof AbortSignal.any === "function" && isAbortSignal(a) && isAbortSignal(b)) { return AbortSignal.any([a, b]);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.