UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

44 lines (43 loc) • 2.3 kB
import { i as executeSqliteQuerySync, o as getNodeSqliteKysely, s as iterateSqliteQuerySync } from "./kysely-sync-DUWzQvCU.mjs"; import { n as normalizeAgentId } from "./agent-id-D1-Q6vR4.mjs"; import "./session-key-DY3MOX4N.mjs"; //#region src/state/agent-provenance.kernel.ts function recordAgentProvenanceInDatabase(database, provenance) { const db = getNodeSqliteKysely(database); const values = { agent_id: provenance.agentId, created_via: provenance.createdVia, creator_agent_id: provenance.creatorAgentId, created_at_ms: provenance.createdAtMs }; executeSqliteQuerySync(database, db.insertInto("agent_provenance").values(values).onConflict((conflict) => conflict.column("agent_id").doUpdateSet({ created_via: values.created_via, creator_agent_id: values.creator_agent_id, created_at_ms: values.created_at_ms }))); } function agentProvenanceFromRow(row) { if (row.created_via !== "operator" && row.created_via !== "agent" && row.created_via !== "claw") throw new Error(`Invalid agent provenance created_via: ${row.created_via}`); return { agentId: row.agent_id, createdVia: row.created_via, creatorAgentId: row.creator_agent_id, createdAtMs: row.created_at_ms }; } function listAgentProvenanceInDatabase(database) { const db = getNodeSqliteKysely(database); return executeSqliteQuerySync(database, db.selectFrom("agent_provenance").selectAll().orderBy("agent_id", "asc")).rows.map(agentProvenanceFromRow); } /** Decode only requested provenance, in the caller's order, including its first error. */ function readAgentProvenanceBatchInDatabase(database, agentIds) { if (agentIds.length === 0) return []; const db = getNodeSqliteKysely(database); const requestedIds = JSON.stringify(agentIds.map(normalizeAgentId)); const query = db.selectFrom((eb) => eb.fn("json_each", [eb.val(requestedIds)]).as("requested")).innerJoin("agent_provenance", "agent_provenance.agent_id", "requested.value").selectAll("agent_provenance").orderBy("requested.key", "asc"); const records = []; for (const row of iterateSqliteQuerySync(database, query)) records.push(agentProvenanceFromRow(row)); return records; } //#endregion export { recordAgentProvenanceInDatabase as i, listAgentProvenanceInDatabase as n, readAgentProvenanceBatchInDatabase as r, agentProvenanceFromRow as t };