diff --git a/scripts/lib/wp7-02-controlled-executor.mjs b/scripts/lib/wp7-02-controlled-executor.mjs index 9c88723..82d6177 100644 --- a/scripts/lib/wp7-02-controlled-executor.mjs +++ b/scripts/lib/wp7-02-controlled-executor.mjs @@ -206,6 +206,24 @@ export function normalizeProviderResponse(modelConfig, response) { } export function describeProviderResponseShape(value, depth = 0) { + if (typeof value === "string") { + const trimmed = value.trim(); + const representation = /^data:image\/(?:jpeg|png|webp);base64,/i.test(trimmed) + ? "inline_media" + : /!\[[^\]]*\]\(\s*https?:\/\/[^)\s]+\s*\)/i.test(trimmed) + ? "markdown_uri" + : /^https?:\/\/\S+$/i.test(trimmed) + ? "uri" + : "plain_text"; + return { + kind: "string", + representation, + size: value.length === 0 ? "empty" : value.length > 256 ? "large" : "small", + }; + } + if (typeof value === "number") return { kind: "number" }; + if (typeof value === "boolean") return { kind: "boolean" }; + if (value === null || value === undefined) return { kind: value === null ? "null" : "undefined" }; if (depth >= 6) return { kind: "depth_limit" }; if (Array.isArray(value)) { return { @@ -220,10 +238,7 @@ export function describeProviderResponseShape(value, depth = 0) { kind: "object", }; } - if (typeof value === "string") return { kind: "string", size: value.length === 0 ? "empty" : value.length > 256 ? "large" : "small" }; - if (typeof value === "number") return { kind: "number" }; - if (typeof value === "boolean") return { kind: "boolean" }; - return { kind: value === null ? "null" : "undefined" }; + return { kind: "undefined" }; } export function buildSanitizedResponseEvidence(normalized) {