openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
65 lines (64 loc) • 3.08 kB
JavaScript
import { l as normalizeOptionalString } from "./string-coerce-CIXf7egm.js";
import { n as normalizeAgentId } from "./agent-id-CeT3w4ap.js";
import { m as resolveAgentWorkspaceDir } from "./agent-scope-config-DcbEhP0R.js";
import { O as parseAgentSessionKey } from "./session-key-BnWWjqNc.js";
import "./agent-scope-DbtJyKUL.js";
import { t as ErrorCodes } from "./gateway-error-details-w0nAGBBp.js";
import { ri as validateSessionsDiffParams } from "./src-BiL5aQto.js";
import { d as errorShape } from "./error-codes-Bo8q2D1o.js";
import { n as resolveRequestedSessionAgentId } from "./session-request-agent-CCRSEGCB.js";
import { i as loadGatewaySessionEntryReadOnly } from "./session-utils-store-CInT2loy.js";
import "./session-utils-Cai0_C6U.js";
import { t as assertValidParams } from "./validation-pzrlzFvo.js";
import { r as loadCheckoutDiff, t as applySessionDiffBaseline } from "./session-diff-4NmIUYc_.js";
//#region src/gateway/server-methods/sessions-diff.ts
async function loadSessionDiff(params) {
const empty = (unavailableReason) => ({
sessionKey: params.sessionKey,
files: [],
additions: 0,
deletions: 0,
...unavailableReason ? { unavailableReason } : {}
});
const { cfg, agentId: loadedAgentId, entry, storePath, canonicalKey } = loadGatewaySessionEntryReadOnly(params.sessionKey, { agentId: params.agentId });
if (!entry?.sessionId || !storePath) return empty("unknown_session");
const agentId = normalizeAgentId(loadedAgentId ?? parseAgentSessionKey(canonicalKey)?.agentId ?? params.agentId ?? parseAgentSessionKey(params.sessionKey)?.agentId);
const cwd = normalizeOptionalString(entry.spawnedCwd) ?? normalizeOptionalString(entry.spawnedWorkspaceDir) ?? normalizeOptionalString(resolveAgentWorkspaceDir(cfg, agentId));
if (!cwd) return empty("unknown_session");
if (params.scope === "commit") {
if (!params.commit) throw new TypeError("commit scope requires a commit");
return await loadCheckoutDiff({
commit: params.commit,
cwd,
scope: "commit",
sessionKey: params.sessionKey
});
}
return await applySessionDiffBaseline({
baseline: entry.sessionDiffBaseline,
diff: await loadCheckoutDiff({
cwd,
scope: params.scope ?? "all",
sessionKey: params.sessionKey
}),
sessionId: entry.sessionId
});
}
const sessionsDiffHandlers = { "sessions.diff": async ({ params, respond, context }) => {
if (!assertValidParams(params, validateSessionsDiffParams, "sessions.diff", respond)) return;
if ((params.scope ?? "all") === "commit" !== (params.commit !== void 0)) {
respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "invalid sessions.diff params: commit must be set if and only if scope is commit"));
return;
}
const requestedAgent = resolveRequestedSessionAgentId(context.getRuntimeConfig(), params.sessionKey, params.agentId);
if (!requestedAgent.ok) {
respond(false, void 0, requestedAgent.error);
return;
}
respond(true, await loadSessionDiff({
...params,
...requestedAgent.agentId ? { agentId: requestedAgent.agentId } : {}
}));
} };
//#endregion
export { sessionsDiffHandlers };