openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
49 lines (48 loc) • 3.12 kB
JavaScript
import { r as createLazyRuntimeModule } from "./lazy-runtime-D-7_JraP.js";
//#region src/infra/approval-handler-adapter-runtime.ts
/** Runtime-context capability key used by channels to register native approval resources. */
const CHANNEL_APPROVAL_NATIVE_RUNTIME_CONTEXT_CAPABILITY = "approval.native";
/** Creates an approval runtime adapter that loads heavy channel code only when delivery hooks run. */
function createLazyChannelApprovalNativeRuntimeAdapter(params) {
const loadRuntime = createLazyRuntimeModule(params.load);
let loadedRuntime = null;
const loadResolvedRuntime = async () => {
const runtime = await loadRuntime();
loadedRuntime = runtime;
return runtime;
};
const loadRequired = async (select) => select(await loadResolvedRuntime());
const loadOptional = async (select) => select(await loadResolvedRuntime());
return {
...params.eventKinds ? { eventKinds: params.eventKinds } : {},
...params.resolveApprovalKind ? { resolveApprovalKind: params.resolveApprovalKind } : {},
availability: {
isConfigured: params.isConfigured,
shouldHandle: params.shouldHandle
},
presentation: {
buildPendingPayload: async (runtimeParams) => (await loadRequired((runtime) => runtime.presentation.buildPendingPayload))(runtimeParams),
buildResolvedResult: async (runtimeParams) => (await loadRequired((runtime) => runtime.presentation.buildResolvedResult))(runtimeParams),
buildExpiredResult: async (runtimeParams) => (await loadRequired((runtime) => runtime.presentation.buildExpiredResult))(runtimeParams)
},
transport: {
prepareTarget: async (runtimeParams) => (await loadRequired((runtime) => runtime.transport.prepareTarget))(runtimeParams),
deliverPending: async (runtimeParams) => (await loadRequired((runtime) => runtime.transport.deliverPending))(runtimeParams),
updateEntry: async (runtimeParams) => await (await loadOptional((runtime) => runtime.transport.updateEntry))?.(runtimeParams),
deleteEntry: async (runtimeParams) => await (await loadOptional((runtime) => runtime.transport.deleteEntry))?.(runtimeParams)
},
interactions: {
bindPending: async (runtimeParams) => (await loadOptional((runtime) => runtime.interactions?.bindPending))?.(runtimeParams) ?? null,
unbindPending: async (runtimeParams) => await (await loadOptional((runtime) => runtime.interactions?.unbindPending))?.(runtimeParams),
clearPendingActions: async (runtimeParams) => await (await loadOptional((runtime) => runtime.interactions?.clearPendingActions))?.(runtimeParams),
cancelDelivered: async (runtimeParams) => await (await loadOptional((runtime) => runtime.interactions?.cancelDelivered))?.(runtimeParams)
},
observe: {
onDeliveryError: (runtimeParams) => loadedRuntime?.observe?.onDeliveryError?.(runtimeParams),
onDuplicateSkipped: (runtimeParams) => loadedRuntime?.observe?.onDuplicateSkipped?.(runtimeParams),
onDelivered: (runtimeParams) => loadedRuntime?.observe?.onDelivered?.(runtimeParams)
}
};
}
//#endregion
export { createLazyChannelApprovalNativeRuntimeAdapter as n, CHANNEL_APPROVAL_NATIVE_RUNTIME_CONTEXT_CAPABILITY as t };