export function hasAssistantPhaseMetadata(message: unknown): boolean { if (!message || typeof message !== "object") { returnfalse;
} if ((message as { role?: unknown }).role !== "assistant") { returnfalse;
} const content = (message as { content?: unknown }).content; if (!Array.isArray(content)) { returnfalse;
} return content.some(
(block) =>
block && typeof block === "object" && typeof (block as { textSignature?: unknown }).textSignature === "string",
);
}
export function extractAssistantText(message: unknown): string | undefined { if (!message || typeof message !== "object") { return undefined;
} if ((message as { role?: unknown }).role !== "assistant") { return undefined;
} const joined =
extractAssistantTextForPhase(message, {
phase: "final_answer",
sanitizeText: sanitizeTextContent,
joinWith: "",
}) ??
extractAssistantTextForPhase(message, {
sanitizeText: sanitizeTextContent,
joinWith: "",
}); const stopReason = (message as { stopReason?: unknown }).stopReason; // Gate on stopReason only — a non-error response with a stale/background errorMessage // should not have its content rewritten with error templates (#13935). const errorContext = stopReason === "error";
return joined ? sanitizeUserFacingText(joined, { errorContext }) : undefined;
}
Messung V0.5 in Prozent
¤ 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.0.11Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
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.