UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

155 lines (154 loc) • 7 kB
import "./device-provider-identity-v6nXqNq_.mjs"; //#region src/gateway/worker-environments/placement-projector.ts function createWorkerPlacementRuntimeInstallReader(params) { return { read(record, preparedEnvironment) { if (record.state !== "provisioning" && record.state !== "active") return; const environment = preparedEnvironment === void 0 ? record.environmentId ? params.environments.get(record.environmentId) : void 0 : preparedEnvironment; const observation = record.state === "provisioning" ? record.environmentId ? params.installer.readInstallForEnvironment(record.environmentId) : void 0 : environment?.nodeDeviceId ? params.installer.readInstall(environment.nodeDeviceId) : void 0; if (!observation || observation.transferredBytes <= 0 || record.state === "active" && observation.bundleHash === record.workerBundleHash) return; const { phase, transferredBytes, totalBytes, startedAtMs, updatedAtMs } = observation; return { phase, transferredBytes, totalBytes, startedAtMs, updatedAtMs }; }, version: () => params.installer.version() }; } function readWorkerPlacementIdentity(record, environments, preparedEnvironment) { const environment = preparedEnvironment === void 0 ? record.environmentId ? environments?.get(record.environmentId) : void 0 : preparedEnvironment; if (!environment) return; if (!(record.activeOwnerEpoch !== null ? environment.ownerEpoch === record.activeOwnerEpoch : record.state === "provisioning" || record.state === "syncing" || record.state === "starting")) return; const machine = environments?.readMachineShape(environment.environmentId, preparedEnvironment ?? void 0); return { providerId: environment.providerId, profileId: environment.profileId, ...record.state === "active" && record.executionMode === "worker-turn" && environment.environmentId === record.environmentId && environment.state === "attached" && environment.providerId === "device" && environment.nodeDeviceId && environment.attachedSessionIds.length === 1 && environment.attachedSessionIds[0] === record.sessionId && environment.inference === "worker" ? { inference: "worker" } : {}, ...machine && Object.keys(machine).length ? { machine } : {} }; } function createWorkerPlacementRunnerAvailabilityReader(params) { let version = 0; const read = (record, preparedEnvironment) => { if (record.state !== "active") return; const environment = preparedEnvironment === void 0 ? params.environments.get(record.environmentId) : preparedEnvironment; if (environment?.providerId !== "device" || environment.state !== "attached" || environment.ownerEpoch !== record.activeOwnerEpoch || environment.attachedSessionIds.length !== 1 || environment.attachedSessionIds[0] !== record.sessionId || !environment.nodeDeviceId) return; return { kind: "device", deviceId: environment.nodeDeviceId, status: params.hasCurrentDeviceRunner(environment.nodeDeviceId) ? "available" : "offline" }; }; return { read, markChanged: () => { version += 1; }, version: () => version }; } function projectWorkerPlacementMove(intent) { return { target: intent.target, updatedAtMs: intent.updatedAtMs, ...intent.lastError ? { error: intent.lastError } : {} }; } /** Removes gateway-only identity and turn-claim fields from the operator projection. */ function projectWorkerSessionPlacement(record, diskSpace, runner, identity, failedRecoveryAction, workspaceResultReconciling = false, retryOnSend = false, options = {}) { const { inference, ...provenance } = identity ?? {}; const timing = { generation: record.generation, createdAtMs: record.createdAtMs, updatedAtMs: record.updatedAtMs, stateChangedAtMs: record.stateChangedAtMs }; if (record.state === "local" || record.state === "requested") return { state: record.state, ...timing }; const worker = { ...timing, ...provenance }; const workerRuntimeInstall = options.workerRuntimeInstall ? { workerRuntimeInstall: options.workerRuntimeInstall } : {}; if (record.state === "provisioning") return { state: record.state, ...worker, ...record.environmentId ? { environmentId: record.environmentId } : {}, ...workerRuntimeInstall }; const progress = { ...record.lastTranscriptAckCursor !== null ? { lastTranscriptAckCursor: record.lastTranscriptAckCursor } : {}, ...record.lastLiveEventAckCursor !== null ? { lastLiveEventAckCursor: record.lastLiveEventAckCursor } : {} }; const conflict = record.workspaceResultConflict ? { workspaceResultConflict: record.workspaceResultConflict } : {}; if (record.state === "reclaimed" || record.state === "failed") { const retained = { ...worker, ...record.environmentId ? { environmentId: record.environmentId } : {}, ...record.activeOwnerEpoch !== null ? { activeOwnerEpoch: record.activeOwnerEpoch } : {}, ...record.workspaceBaseManifestRef ? { workspaceBaseManifestRef: record.workspaceBaseManifestRef } : {}, ...record.remoteWorkspaceDir ? { remoteWorkspaceDir: record.remoteWorkspaceDir } : {}, ...record.workerBundleHash ? { workerBundleHash: record.workerBundleHash } : {}, ...progress, ...conflict }; const terminal = { ...record.terminalReason ? { terminalReason: record.terminalReason } : {}, ...record.terminalAtMs !== null ? { terminalAtMs: record.terminalAtMs } : {} }; return record.state === "failed" ? { state: record.state, ...retained, recoveryError: record.recoveryError, ...failedRecoveryAction ? { recoveryAction: failedRecoveryAction } : {}, ...retryOnSend ? { retryOnSend: true } : {}, ...terminal } : { state: record.state, ...retained, ...terminal }; } const bundle = { ...worker, environmentId: record.environmentId, workerBundleHash: record.workerBundleHash }; if (record.state === "syncing") return { state: record.state, ...bundle }; const workspace = { ...bundle, workspaceBaseManifestRef: record.workspaceBaseManifestRef, remoteWorkspaceDir: record.remoteWorkspaceDir }; if (record.state === "starting") return { state: record.state, ...workspace }; return { state: record.state, ...worker, environmentId: record.environmentId, activeOwnerEpoch: record.activeOwnerEpoch, workerBundleHash: record.workerBundleHash, workspaceBaseManifestRef: record.workspaceBaseManifestRef, remoteWorkspaceDir: record.remoteWorkspaceDir, ...progress, ...record.state === "active" && inference ? { inference } : {}, ...record.state === "active" && diskSpace ? { diskSpace } : {}, ...record.state === "active" && runner ? { runner } : {}, ...record.state === "active" ? workerRuntimeInstall : {}, ...workspaceResultReconciling && record.state !== "reconciling" ? { workspaceResultReconciling: true } : {}, ...conflict }; } //#endregion export { readWorkerPlacementIdentity as a, projectWorkerSessionPlacement as i, createWorkerPlacementRuntimeInstallReader as n, projectWorkerPlacementMove as r, createWorkerPlacementRunnerAvailabilityReader as t };