openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
47 lines (46 loc) • 2.64 kB
JavaScript
import { a as resolveAgentsApiNativeToolPolicy, i as resolveAgentsApiEnvironment, n as agentsApiConfigSchema, r as requireAgentsApiSessionFingerprint } from "./config-9TiZiL1V.mjs";
import { t as AgentsApiClient } from "./agentsapi-client-4xhmrPo7.mjs";
import { i as resolveAgentsApiSessionAccessError } from "./agentsapi-errors-Ck7jiWFW.mjs";
import { t as buildAgentsApiMcpTools } from "./agentsapi-mcp-C_31-nqY.mjs";
import { createHash } from "node:crypto";
//#region extensions/agentsapi/agentsapi-binding-migration.ts
/** The binding owner calls this once, under its lease, before admitting legacy state. */
async function migrateAgentsApiBinding(binding, params, readPluginConfig, assertCurrent) {
const assertMigrationCurrent = () => {
assertCurrent();
params.abortSignal?.throwIfAborted();
};
assertMigrationCurrent();
const config = agentsApiConfigSchema.parse(readPluginConfig() ?? {});
const environment = resolveAgentsApiEnvironment(config, params.workspaceDir);
const { webSearchEnabled } = resolveAgentsApiNativeToolPolicy(params, config);
const mcpTools = await buildAgentsApiMcpTools(params);
assertMigrationCurrent();
const identity = [
params.model.id,
params.resolvedApiKey,
...environment.type === "self_hosted" || environment.network != null ? [environment] : [],
...mcpTools.length ? [mcpTools] : []
];
const fingerprint = createHash("sha256").update(JSON.stringify(identity)).digest("hex");
if (binding.authFingerprint !== fingerprint || !webSearchEnabled || environment.type === "self_hosted" && config.executorController) throw new Error("Agents API legacy binding cannot verify the original model, API key, environment, MCP, or web-search policy; restore the original configuration and API key and retry, or reset the OpenClaw session to settle the saved native session with a currently authorized key. The saved binding has been retained.");
try {
const signal = params.abortSignal ? AbortSignal.any([params.abortSignal, AbortSignal.timeout(3e4)]) : AbortSignal.timeout(3e4);
const session = await new AgentsApiClient(params.resolvedApiKey, assertMigrationCurrent).session(binding.sessionId, signal);
assertMigrationCurrent();
if (session.id !== binding.sessionId) throw new Error("Agents API returned a different session during legacy migration");
} catch (error) {
throw resolveAgentsApiSessionAccessError(error, binding.sessionId);
}
return {
sessionId: binding.sessionId,
configFingerprint: requireAgentsApiSessionFingerprint({
model: params.model.id,
environment,
mcpTools,
webSearchEnabled
})
};
}
//#endregion
export { migrateAgentsApiBinding as t };