openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
44 lines (43 loc) • 2.3 kB
JavaScript
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 };