@sema-agent/core
Version:
Stateless, task-oriented AI agent core
22 lines (21 loc) • 1.15 kB
JavaScript
import { adjudicateDerivedRoute, fallbackToPrimaryNotice, sameRouteIdentity, unroutableSeatNotice } from "../../brain/route-adjudicator.js";
import { deliverEngineNotice } from "../types.js";
export async function derivedRouteFallsBack(args) {
try {
if (sameRouteIdentity(args.derived, args.primary))
return false;
const verdict = await adjudicateDerivedRoute({ brain: args.brain, model: args.derived, getApiKeyAndHeaders: args.getApiKeyAndHeaders });
if (verdict === undefined || verdict.ok)
return false;
const shared = { seat: args.seat, from: args.derived.id, verdict, ...(args.sessionId !== undefined ? { sessionId: args.sessionId } : {}), ...(args.runId !== undefined ? { runId: args.runId } : {}) };
const refuse = args.onBrokenPairing === "refuse";
if (refuse)
deliverEngineNotice(args.onNotice, unroutableSeatNotice({ ...shared, primary: args.primary.id }));
else
deliverEngineNotice(args.onNotice, fallbackToPrimaryNotice({ ...shared, to: args.primary.id }));
return !refuse;
}
catch {
return false;
}
}