openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
38 lines (37 loc) • 2.12 kB
JavaScript
import { r as executeSqliteQuerySync } from "./kysely-sync-COmh4HWh.js";
import { T as ensureColumn } from "./openclaw-state-db-cache-C7ljO0xP.js";
import { K as FIRST_USE_ADDITIVE_AGENT_COLUMN_DEFINITIONS } from "./openclaw-agent-db-maintenance-wTIy-jt-.js";
import { g as runOpenClawAgentWriteTransaction } from "./openclaw-agent-db-CWtDoRbC.js";
import { c as resolveSqliteScope, i as getSessionKysely, m as toDatabaseOptions } from "./session-accessor.sqlite-scope-2KfMzb44.js";
import { j as hasSqliteSessionOwnerColumns, v as publishSessionEntryCacheInvalidation } from "./session-accessor.sqlite-transcript-state-DwF2owZS.js";
//#region src/config/sessions/session-accessor.sqlite-owner.ts
function replaceSessionOwnerInTransaction(database, sessionKey, owner) {
if (!hasSqliteSessionOwnerColumns(database.db)) {
if (!owner?.actor.id) return false;
for (const { columnName, dataType, tableName } of FIRST_USE_ADDITIVE_AGENT_COLUMN_DEFINITIONS) ensureColumn(database.db, tableName, `${columnName} ${dataType}`);
}
if (executeSqliteQuerySync(database.db, getSessionKysely(database.db).updateTable("session_nodes").set({
owner_actor_type: owner?.actor.type ?? null,
owner_actor_id: owner?.actor.id ?? null,
owner_assigned_by_type: owner?.assignedBy?.type ?? null,
owner_assigned_by_id: owner?.assignedBy?.id ?? null,
owner_assigned_at: owner?.assignedAt ?? null
}).where("session_key", "=", sessionKey)).numAffectedRows !== 1n) return false;
publishSessionEntryCacheInvalidation(database);
return true;
}
function assignSessionOwner(scope, params) {
const resolved = resolveSqliteScope(scope);
const options = toDatabaseOptions(resolved);
const owner = {
actor: params.owner,
assignedBy: params.assignedBy,
assignedAt: params.assignedAt ?? Date.now()
};
return runOpenClawAgentWriteTransaction((database) => {
params.assertCurrent?.();
return replaceSessionOwnerInTransaction(database, resolved.sessionKey, owner);
}, options, { operationLabel: "sessions.assign-owner" }) ? owner : null;
}
//#endregion
export { replaceSessionOwnerInTransaction as n, assignSessionOwner as t };