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
JavaScript
;
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