Files
wehub-resource-sync c48612c494
CI / E2E Tests (push) Has been cancelled
CI / Lint, Typecheck & Unit Tests (push) Has been cancelled
Docs Build / Build docs site (push) Has been cancelled
Publish @openmaic packages / Build, validate & publish (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:23 +08:00

29 lines
1.2 KiB
TypeScript

/** Typed pass-through of provider-specific per-tool-call metadata (e.g. Gemini
* thought_signature) so multi-turn tool conversations don't error. Stored on
* the pi ToolCall, re-emitted on the next turn's assistant message part. */
export type ToolCallProviderMetadata = Record<string, Record<string, unknown>>;
interface ToolCallPartLike {
providerMetadata?: ToolCallProviderMetadata;
providerOptions?: ToolCallProviderMetadata;
// AI SDK fullStream tool-call parts carry many other fields (type, toolCallId,
// toolName, input, ...); accept them so callers can pass a part literal.
[key: string]: unknown;
}
/** Ingest: capture providerMetadata from an AI SDK fullStream tool-call part. */
export function captureToolCallMetadata(
part: ToolCallPartLike,
): ToolCallProviderMetadata | undefined {
const meta = part.providerMetadata ?? part.providerOptions;
if (!meta || Object.keys(meta).length === 0) return undefined;
return meta;
}
/** Egress: re-emit as providerOptions on the next turn's tool-call message part. */
export function emitToolCallProviderOptions(
meta: ToolCallProviderMetadata | undefined,
): ToolCallProviderMetadata | undefined {
return meta && Object.keys(meta).length > 0 ? meta : undefined;
}