UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

60 lines (59 loc) 3.31 kB
import { AsyncLocalStorage } from "node:async_hooks"; //#region src/agents/harness/host-private-capabilities.ts const questionAnswerScope = new AsyncLocalStorage(); const questionAnswerCapabilities = /* @__PURE__ */ new WeakMap(); /** Retain the creator's prepared policy; a matching hash alone never grants authority. */ function createAgentQuestionAnswerAuthority(params) { return Object.freeze({ sessionKey: params.sessionKey.trim(), assertActive: params.assertActive, assertCaller: (caller) => { params.assertActive(); const projected = params.project(caller); params.assertActive(); if (!params.fingerprint || projected !== params.fingerprint) throw new Error("question answer caller policy does not match its creator"); } }); } function withAgentQuestionAnswerAuthority(authority, run) { return questionAnswerScope.run(authority, run); } function registerAgentHarnessQuestionAnswerAuthority(hostCapabilities, authority) { questionAnswerCapabilities.set(hostCapabilities, authority); } /** An explicit host carrier cannot fall back to an unrelated ambient creator. */ function resolveAgentQuestionAnswerAuthority(hostCapabilities) { return hostCapabilities ? questionAnswerCapabilities.get(hostCapabilities) : questionAnswerScope.getStore(); } function captureAgentQuestionAnswerAuthority(sessionKey) { const authority = questionAnswerScope.getStore(); authority?.assertActive(); if (authority && authority.sessionKey !== sessionKey.trim()) throw new Error("question creator authority belongs to another session"); return authority; } const scheduledToolProjectionCapabilities = /* @__PURE__ */ new WeakMap(); const ttsProvenanceTransferCapabilities = /* @__PURE__ */ new WeakMap(); function registerAgentHarnessScheduledToolProjectionCapability(params) { scheduledToolProjectionCapabilities.set(params.hostCapabilities, Object.freeze({ ownerPluginId: params.ownerPluginId, create: params.create })); } /** Resolves a private issuer only for the exact authoritative plugin owner. */ function resolveAgentHarnessScheduledToolProjectionCapability(params) { const capability = scheduledToolProjectionCapabilities.get(params.hostCapabilities); return capability?.ownerPluginId === params.ownerPluginId ? capability.create : void 0; } function registerAgentHarnessTtsProvenanceTransferCapability(params) { ttsProvenanceTransferCapabilities.set(params.hostCapabilities, Object.freeze({ ownerPluginId: params.ownerPluginId, transfer: params.transfer })); } /** Resolves private TTS delivery transfer only for the exact authoritative plugin owner. */ function resolveAgentHarnessTtsProvenanceTransferCapability(params) { const capability = ttsProvenanceTransferCapabilities.get(params.hostCapabilities); return capability?.ownerPluginId === params.ownerPluginId ? capability.transfer : void 0; } //#endregion export { registerAgentHarnessTtsProvenanceTransferCapability as a, resolveAgentQuestionAnswerAuthority as c, registerAgentHarnessScheduledToolProjectionCapability as i, withAgentQuestionAnswerAuthority as l, createAgentQuestionAnswerAuthority as n, resolveAgentHarnessScheduledToolProjectionCapability as o, registerAgentHarnessQuestionAnswerAuthority as r, resolveAgentHarnessTtsProvenanceTransferCapability as s, captureAgentQuestionAnswerAuthority as t };