UNPKG

@juspay/neurolink

Version:

The pipe layer of an AI nervous system: one interface connecting provider neurons to your application, across three inference types — generate, stream and decide. `decide` returns typed, calibrated judgements from a non-generative model (~400ms, ~$0.00002

86 lines (85 loc) • 3.63 kB
/** Content visible to the caller; thinking and empty text are not useful output. */ export function hasUsefulClaudeContent(value) { if (!value || typeof value !== "object") { return false; } const block = value; if (Array.isArray(block.content)) { return block.content.some(hasUsefulClaudeContent); } if (block.type === "thinking" || block.type === "redacted_thinking") { return false; } if (typeof block.text === "string" && block.text.trim().length > 0) { return true; } if (typeof block.refusal === "string" && block.refusal.trim().length > 0) { return true; } return ((block.type === "tool_use" || block.type === "server_tool_use") && typeof block.name === "string" && block.name.length > 0 && block.input !== undefined); } /** A complete JSON response becomes observable when its body has been read. */ export function observeClaudeJsonOutput(metadata, value, at = Date.now()) { if (!value || typeof value !== "object" || !Array.isArray(value.content)) { metadata.firstUsefulOutputStatus = "not_observed"; metadata.firstUsefulOutputUnavailableReason = "unrecognized_response"; return; } if (hasUsefulClaudeContent(value)) { metadata.firstUsefulOutputAt = at; metadata.firstUsefulOutputStatus = "observed"; metadata.firstUsefulOutputEvent = "json_response.content"; } else { metadata.firstUsefulOutputStatus = "no_useful_output"; delete metadata.firstUsefulOutputAt; delete metadata.firstUsefulOutputEvent; } delete metadata.firstUsefulOutputUnavailableReason; } /** Keep unavailable observations distinct from a complete stream with no output. */ export function observeClaudeStreamOutput(metadata, data) { delete metadata.firstUsefulOutputAt; delete metadata.firstUsefulOutputEvent; delete metadata.firstUsefulOutputUnavailableReason; if (!data.observationIncomplete && data.firstUsefulOutputAt !== undefined) { metadata.firstUsefulOutputAt = data.firstUsefulOutputAt; metadata.firstUsefulOutputEvent = data.firstUsefulOutputEvent; metadata.firstUsefulOutputStatus = "observed"; } else if (!data.observationIncomplete && data.messageStopReceived) { metadata.firstUsefulOutputStatus = "no_useful_output"; } else { metadata.firstUsefulOutputStatus = "not_observed"; metadata.firstUsefulOutputUnavailableReason = data.observationIncomplete ? "incomplete_observation" : "stream_incomplete"; } } /** Final records always explain whether useful-output latency was observed. */ export function claudeOutputLogFields(metadata, requestStartTime) { const at = metadata.firstUsefulOutputAt; if (typeof at === "number" && Number.isFinite(at)) { return { firstUsefulOutputMs: Math.max(0, at - requestStartTime), firstUsefulOutputStatus: "observed", firstUsefulOutputEvent: typeof metadata.firstUsefulOutputEvent === "string" ? metadata.firstUsefulOutputEvent : "translated_output", }; } return metadata.firstUsefulOutputStatus === "no_useful_output" ? { firstUsefulOutputStatus: "no_useful_output" } : { firstUsefulOutputStatus: "not_observed", firstUsefulOutputUnavailableReason: typeof metadata.firstUsefulOutputUnavailableReason === "string" ? metadata.firstUsefulOutputUnavailableReason : "response_not_observed", }; }