@sema-agent/core
Version:
Stateless, task-oriented AI agent core
29 lines (28 loc) • 1.66 kB
JavaScript
import { checkedAgentConfigDir } from "../agent-config-dir.js";
import { checkedMediaByteCap } from "../media-byte-cap.js";
import { receiptRefusal, receiveOwnProperties, refuseProxy } from "../own-property-receipt.js";
import { assertNoRetiredRunnerDeps } from "./retired-runner-deps.js";
import { copyReadDenySeat, READ_DENY_DEPLOYMENT_SEATS } from "../read-face-seats.js";
import { holdOwnCredentialValues } from "../secret-env.js";
export function retainRunnerDeps(deps) {
const words = { subject: "RunnerDeps", unit: "seat", moment: "at new Runner" };
refuseProxy(deps, words);
assertNoRetiredRunnerDeps(deps);
const retained = receiveOwnProperties(deps, words);
checkedAgentConfigDir(retained.agentConfigDir, "RunnerDeps.agentConfigDir");
checkedMediaByteCap(retained.mediaByteCapBytes, "RunnerDeps.mediaByteCapBytes");
for (const seat of READ_DENY_DEPLOYMENT_SEATS) {
if (Object.hasOwn(retained, seat))
Object.defineProperty(retained, seat, { value: copyReadDenySeat(Reflect.get(retained, seat)), enumerable: true, writable: true, configurable: true });
}
let consolidationKey;
try {
const chat = retained.memoryConsolidationDriver?.chat;
consolidationKey = typeof chat === "object" && chat !== null ? Reflect.get(chat, "apiKey") : undefined;
}
catch {
throw receiptRefusal("RunnerDeps.memoryConsolidationDriver.chat threw while its apiKey was read at new Runner — refused (the thrown value is not repeated)");
}
holdOwnCredentialValues([typeof consolidationKey === "string" ? consolidationKey : undefined], retained.onNotice);
return retained;
}