openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
132 lines (131 loc) • 5.96 kB
JavaScript
import { a as captureRuntimeStateEnvironment } from "./paths-DGIwWbpu.mjs";
import { _ as resolveEffectiveAgentDir } from "./agent-scope-config-CDYpzA0r.mjs";
import "./agent-runtime-id-BZLMe-UU.mjs";
import { t as resolveDefaultModelForAgent } from "./model-selection-config-BdeHEviO.mjs";
import { i as resolveLegacyInheritedAuthAgentId } from "./legacy-inherited-auth-dir-DmZI0WMx.mjs";
import { n as getRegisteredAgentHarness } from "./registry-x-yKA-v_.mjs";
import { t as isCliProvider } from "./model-selection-cli-DjravRCg.mjs";
import { h as resolveSessionPinnedHarnessId } from "./agent-harness-session-key-D8EQIzja.mjs";
import { s as resolveCliRuntimeExecutionProvider } from "./model-runtime-aliases-t0kOML62.mjs";
import { i as resolveSessionRuntimeOverrideForProvider } from "./session-runtime-compat-zlHVO23h.mjs";
import { s as resolveEffectiveAgentRuntime } from "./thinking-runtime--sshEpUp.mjs";
import { s as resolveGatewaySessionStoreTargetWithStore, t as createGatewaySessionEntryReader } from "./session-utils-store-lookup-DugC83hw.mjs";
import { t as resolveSessionSelectedModelRef } from "./session-utils-model-selection-BIBdj57O.mjs";
//#region src/gateway/worker-environments/placement-capabilities.ts
/** Returns the bounded placement contract declared by one active agent runtime. */
function resolveWorkerPlacementCapabilities(runtime) {
const runtimeId = runtime.trim();
if (runtimeId === "openclaw") return {
executionMode: "worker-turn",
devicePlacement: {
requiredNodeCommands: [],
consumesWorkerSlot: true
}
};
const placement = getRegisteredAgentHarness(runtimeId)?.harness.cloudPlacement;
if (!placement) return {};
const requirement = placement.devicePlacement;
if (!requirement) return { executionMode: placement.mode };
const requiredNodeCommands = [...new Set(requirement.requiredNodeCommands)].toSorted();
if (requiredNodeCommands.length > 32 || requiredNodeCommands.some((command) => command.length === 0 || command.length > 128 || command.trim() !== command)) return { executionMode: placement.mode };
return {
executionMode: placement.mode,
devicePlacement: {
requiredNodeCommands,
consumesWorkerSlot: requirement.consumesWorkerSlot
}
};
}
//#endregion
//#region src/gateway/worker-environments/placement-session-runtime.ts
function resolveWorkerPlacementSessionRuntime(params) {
const { provider, model } = resolveSessionSelectedModelRef({
...params,
source: {
entry: params.entry,
readSourceEntry: (key) => {
const target = resolveGatewaySessionStoreTargetWithStore({
...params,
key: params.sessionKey,
preserveQualifiedAddress: true,
clone: false,
readOnly: true,
exactRead: true
});
return createGatewaySessionEntryReader({
...target,
cfg: params.cfg
})(key);
}
}
});
return resolveWorkerPlacementModelRuntime({
...params,
provider,
model
});
}
function resolveWorkerPlacementModelRuntime(params) {
const sessionRuntimeOverride = resolveSessionRuntimeOverrideForProvider(params);
const pinnedHarnessId = resolveSessionPinnedHarnessId(params.entry);
const pinnedCliRuntime = !(pinnedHarnessId !== void 0 && pinnedHarnessId === sessionRuntimeOverride) && sessionRuntimeOverride && isCliProvider(sessionRuntimeOverride, params.cfg, params.metadataSnapshot) ? sessionRuntimeOverride : void 0;
const cliExecutionProvider = pinnedCliRuntime ?? (sessionRuntimeOverride ? void 0 : resolveCliRuntimeExecutionProvider({
...params,
modelId: params.model,
authProfileId: params.entry.authProfileOverride,
preparedAuthDirectories: {
env: params.preparedEnvironment ?? captureRuntimeStateEnvironment(),
get agentDir() {
return resolveEffectiveAgentDir(params.cfg, params.agentId, { env: this.env });
},
get inheritedAuthDir() {
return resolveEffectiveAgentDir(params.cfg, resolveLegacyInheritedAuthAgentId(params.cfg), { env: this.env });
}
}
}));
return pinnedCliRuntime !== void 0 || !sessionRuntimeOverride && isCliProvider(cliExecutionProvider ?? params.provider, params.cfg, params.metadataSnapshot) ? cliExecutionProvider ?? params.provider : resolveEffectiveAgentRuntime({
cfg: params.cfg,
provider: params.provider,
modelId: params.model,
agentScope: {
kind: "prepared",
agentId: params.agentId
},
sessionKey: params.sessionKey,
sessionEntry: params.entry
});
}
function resolveWorkerPlacementExecutionMode(runtime) {
return resolveWorkerPlacementCapabilities(runtime).executionMode;
}
/** Projects the same configured runtime choice a new default-model dashboard session will persist. */
function resolveDefaultWorkerPlacementExecutionMode(params) {
const { provider, model } = resolveDefaultModelForAgent(params);
return resolveWorkerPlacementExecutionMode(resolveWorkerPlacementModelRuntime({
...params,
provider,
model,
entry: {
sessionId: "prepared-pool-presence",
updatedAt: 0
},
sessionKey: `agent:${params.agentId}:dashboard:prepared-pool-presence`
}));
}
function resolveWorkerPlacementSessionRuntimeCapabilities(params) {
return resolveWorkerPlacementCapabilities(resolveWorkerPlacementSessionRuntime(params));
}
function projectWorkerPlacementAgentRuntime(runtime) {
const { source, ...identity } = runtime;
const { executionMode, devicePlacement } = resolveWorkerPlacementCapabilities(runtime.id);
return {
...identity,
cloudPlacementSupported: executionMode !== void 0,
...executionMode ? { cloudPlacementExecutionMode: executionMode } : {},
...devicePlacement ? { devicePlacement } : {},
devicePlacementSupported: devicePlacement !== void 0,
source
};
}
//#endregion
export { resolveWorkerPlacementSessionRuntime as a, resolveWorkerPlacementModelRuntime as i, resolveDefaultWorkerPlacementExecutionMode as n, resolveWorkerPlacementSessionRuntimeCapabilities as o, resolveWorkerPlacementExecutionMode as r, resolveWorkerPlacementCapabilities as s, projectWorkerPlacementAgentRuntime as t };