UNPKG

agentfootprint

Version:

The explainable agent framework — backtrack a wrong answer to the exact context that caused it (evidence, not guesses). Built on footprintjs.

50 lines • 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.thinkingForProviders = exports.dispatchThinkingHandler = exports.tagThinkingResponse = void 0; const thinkingHandlerFor_js_1 = require("./thinkingHandlerFor.js"); /** Plain data only; handler functions stay in the chart's build-time closure. */ function tagThinkingResponse(response, answeredBy) { return response.rawThinking === undefined ? response : { ...response, rawThinking: { answeredBy, raw: response.rawThinking }, }; } exports.tagThinkingResponse = tagThinkingResponse; /** Decode only with the handler belonging to the transport that answered. */ function dispatchThinkingHandler(id, handlers, untagged) { return { id, normalize(value) { if (typeof value === 'object' && value !== null && 'answeredBy' in value && typeof value.answeredBy === 'string' && 'raw' in value && Object.hasOwn(handlers, value.answeredBy)) { return handlers[value.answeredBy]?.normalize(value.raw) ?? []; } if (untagged !== undefined) return untagged.normalize(value); throw new TypeError('This thinking does not say which side answered, so no matching handler can read it.'); }, }; } exports.dispatchThinkingHandler = dispatchThinkingHandler; /** Keep explicit override/null intent while routing declared handlers by list index. */ function thinkingForProviders(provider, providers = [], override) { if (override === null) return undefined; const base = override ?? (0, thinkingHandlerFor_js_1.thinkingHandlerFor)(provider); if (providers.length === 0) return base; const handlers = Object.fromEntries(providers.map((entry, index) => [String(index), override ?? (0, thinkingHandlerFor_js_1.thinkingHandlerFor)(entry)])); if (base === undefined && Object.values(handlers).every((handler) => handler === undefined)) return undefined; return dispatchThinkingHandler(`selected-${Object.values(handlers) .map((handler) => handler?.id ?? 'none') .join('-or-')}`, handlers, base); } exports.thinkingForProviders = thinkingForProviders; //# sourceMappingURL=dispatch.js.map