@openguardrails/moltguard
Version:
AI agent security plugin for OpenClaw: prompt injection detection, PII sanitization, and monitoring dashboard
496 lines (476 loc) • 28.7 kB
JavaScript
export const id = 113;
export const ids = [113];
export const modules = {
/***/ 3853:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ DV: () => (/* binding */ haveSameKeys),
/* harmony export */ He: () => (/* binding */ orderSelectedFields),
/* harmony export */ Ll: () => (/* binding */ getColumnNameAndConfig),
/* harmony export */ Lq: () => (/* binding */ isConfig),
/* harmony export */ XJ: () => (/* binding */ applyMixins),
/* harmony export */ YD: () => (/* binding */ getTableColumns),
/* harmony export */ a6: () => (/* binding */ mapResultRow),
/* harmony export */ q: () => (/* binding */ mapUpdateSet),
/* harmony export */ zN: () => (/* binding */ getTableLikeName)
/* harmony export */ });
/* harmony import */ var _column_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2345);
/* harmony import */ var _entity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9724);
/* harmony import */ var _sql_sql_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(183);
/* harmony import */ var _subquery_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6453);
/* harmony import */ var _table_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8407);
/* harmony import */ var _view_common_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6146);
function mapResultRow(columns, row, joinsNotNullableMap) {
const nullifyMap = {};
const result = columns.reduce(
(result2, { path, field }, columnIndex) => {
let decoder;
if ((0,_entity_js__WEBPACK_IMPORTED_MODULE_0__.is)(field, _column_js__WEBPACK_IMPORTED_MODULE_1__/* .Column */ .V)) {
decoder = field;
} else if ((0,_entity_js__WEBPACK_IMPORTED_MODULE_0__.is)(field, _sql_sql_js__WEBPACK_IMPORTED_MODULE_2__/* .SQL */ .Xs)) {
decoder = field.decoder;
} else {
decoder = field.sql.decoder;
}
let node = result2;
for (const [pathChunkIndex, pathChunk] of path.entries()) {
if (pathChunkIndex < path.length - 1) {
if (!(pathChunk in node)) {
node[pathChunk] = {};
}
node = node[pathChunk];
} else {
const rawValue = row[columnIndex];
const value = node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue);
if (joinsNotNullableMap && (0,_entity_js__WEBPACK_IMPORTED_MODULE_0__.is)(field, _column_js__WEBPACK_IMPORTED_MODULE_1__/* .Column */ .V) && path.length === 2) {
const objectName = path[0];
if (!(objectName in nullifyMap)) {
nullifyMap[objectName] = value === null ? (0,_table_js__WEBPACK_IMPORTED_MODULE_3__/* .getTableName */ .Io)(field.table) : false;
} else if (typeof nullifyMap[objectName] === "string" && nullifyMap[objectName] !== (0,_table_js__WEBPACK_IMPORTED_MODULE_3__/* .getTableName */ .Io)(field.table)) {
nullifyMap[objectName] = false;
}
}
}
}
return result2;
},
{}
);
if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {
for (const [objectName, tableName] of Object.entries(nullifyMap)) {
if (typeof tableName === "string" && !joinsNotNullableMap[tableName]) {
result[objectName] = null;
}
}
}
return result;
}
function orderSelectedFields(fields, pathPrefix) {
return Object.entries(fields).reduce((result, [name, field]) => {
if (typeof name !== "string") {
return result;
}
const newPath = pathPrefix ? [...pathPrefix, name] : [name];
if ((0,_entity_js__WEBPACK_IMPORTED_MODULE_0__.is)(field, _column_js__WEBPACK_IMPORTED_MODULE_1__/* .Column */ .V) || (0,_entity_js__WEBPACK_IMPORTED_MODULE_0__.is)(field, _sql_sql_js__WEBPACK_IMPORTED_MODULE_2__/* .SQL */ .Xs) || (0,_entity_js__WEBPACK_IMPORTED_MODULE_0__.is)(field, _sql_sql_js__WEBPACK_IMPORTED_MODULE_2__/* .SQL */ .Xs.Aliased)) {
result.push({ path: newPath, field });
} else if ((0,_entity_js__WEBPACK_IMPORTED_MODULE_0__.is)(field, _table_js__WEBPACK_IMPORTED_MODULE_3__/* .Table */ .XI)) {
result.push(...orderSelectedFields(field[_table_js__WEBPACK_IMPORTED_MODULE_3__/* .Table */ .XI.Symbol.Columns], newPath));
} else {
result.push(...orderSelectedFields(field, newPath));
}
return result;
}, []);
}
function haveSameKeys(left, right) {
const leftKeys = Object.keys(left);
const rightKeys = Object.keys(right);
if (leftKeys.length !== rightKeys.length) {
return false;
}
for (const [index, key] of leftKeys.entries()) {
if (key !== rightKeys[index]) {
return false;
}
}
return true;
}
function mapUpdateSet(table, values) {
const entries = Object.entries(values).filter(([, value]) => value !== void 0).map(([key, value]) => {
if ((0,_entity_js__WEBPACK_IMPORTED_MODULE_0__.is)(value, _sql_sql_js__WEBPACK_IMPORTED_MODULE_2__/* .SQL */ .Xs) || (0,_entity_js__WEBPACK_IMPORTED_MODULE_0__.is)(value, _column_js__WEBPACK_IMPORTED_MODULE_1__/* .Column */ .V)) {
return [key, value];
} else {
return [key, new _sql_sql_js__WEBPACK_IMPORTED_MODULE_2__/* .Param */ .Iw(value, table[_table_js__WEBPACK_IMPORTED_MODULE_3__/* .Table */ .XI.Symbol.Columns][key])];
}
});
if (entries.length === 0) {
throw new Error("No values to set");
}
return Object.fromEntries(entries);
}
function applyMixins(baseClass, extendedClasses) {
for (const extendedClass of extendedClasses) {
for (const name of Object.getOwnPropertyNames(extendedClass.prototype)) {
if (name === "constructor")
continue;
Object.defineProperty(
baseClass.prototype,
name,
Object.getOwnPropertyDescriptor(extendedClass.prototype, name) || /* @__PURE__ */ Object.create(null)
);
}
}
}
function getTableColumns(table) {
return table[_table_js__WEBPACK_IMPORTED_MODULE_3__/* .Table */ .XI.Symbol.Columns];
}
function getTableLikeName(table) {
return (0,_entity_js__WEBPACK_IMPORTED_MODULE_0__.is)(table, _subquery_js__WEBPACK_IMPORTED_MODULE_4__/* .Subquery */ .n) ? table._.alias : (0,_entity_js__WEBPACK_IMPORTED_MODULE_0__.is)(table, _sql_sql_js__WEBPACK_IMPORTED_MODULE_2__/* .View */ .Ss) ? table[_view_common_js__WEBPACK_IMPORTED_MODULE_5__/* .ViewBaseConfig */ .n].name : (0,_entity_js__WEBPACK_IMPORTED_MODULE_0__.is)(table, _sql_sql_js__WEBPACK_IMPORTED_MODULE_2__/* .SQL */ .Xs) ? void 0 : table[_table_js__WEBPACK_IMPORTED_MODULE_3__/* .Table */ .XI.Symbol.IsAlias] ? table[_table_js__WEBPACK_IMPORTED_MODULE_3__/* .Table */ .XI.Symbol.Name] : table[_table_js__WEBPACK_IMPORTED_MODULE_3__/* .Table */ .XI.Symbol.BaseName];
}
function getColumnNameAndConfig(a, b) {
return {
name: typeof a === "string" && a.length > 0 ? a : "",
config: typeof a === "object" ? a : b
};
}
const _ = {};
const __ = {};
function isConfig(data) {
if (typeof data !== "object" || data === null)
return false;
if (data.constructor.name !== "Object")
return false;
if ("logger" in data) {
const type = typeof data["logger"];
if (type !== "boolean" && (type !== "object" || typeof data["logger"]["logQuery"] !== "function") && type !== "undefined")
return false;
return true;
}
if ("schema" in data) {
const type = typeof data["logger"];
if (type !== "object" && type !== "undefined")
return false;
return true;
}
if ("casing" in data) {
const type = typeof data["logger"];
if (type !== "string" && type !== "undefined")
return false;
return true;
}
if ("mode" in data) {
if (data["mode"] !== "default" || data["mode"] !== "planetscale" || data["mode"] !== void 0)
return false;
return true;
}
if ("connection" in data) {
const type = typeof data["connection"];
if (type !== "string" && type !== "object" && type !== "undefined")
return false;
return true;
}
if ("client" in data) {
const type = typeof data["client"];
if (type !== "object" && type !== "function" && type !== "undefined")
return false;
return true;
}
if (Object.keys(data).length === 0)
return true;
return false;
}
//# sourceMappingURL=utils.js.map
/***/ }),
/***/ 5518:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
agentPermissions: () => (/* binding */ agentPermissions),
agenticHoursLocal: () => (/* binding */ agenticHoursLocal),
agents: () => (/* binding */ agents),
detectionResults: () => (/* binding */ detectionResults),
gatewayActivity: () => (/* binding */ gatewayActivity),
magicLinks: () => (/* binding */ magicLinks),
policies: () => (/* binding */ policies),
scannerDefinitions: () => (/* binding */ scannerDefinitions),
settings: () => (/* binding */ settings),
toolCallObservations: () => (/* binding */ toolCallObservations),
usageLogs: () => (/* binding */ usageLogs),
userSessions: () => (/* binding */ userSessions)
});
// EXTERNAL MODULE: ../../node_modules/.pnpm/drizzle-orm@0.36.4_@libsql+client@0.14.0_@types+better-sqlite3@7.6.13_@types+react@18.3.28_be_bhyfo6jtf7gmzt2fsdpal3g2vq/node_modules/drizzle-orm/mysql-core/table.js + 19 modules
var table = __webpack_require__(2104);
// EXTERNAL MODULE: ../../node_modules/.pnpm/drizzle-orm@0.36.4_@libsql+client@0.14.0_@types+better-sqlite3@7.6.13_@types+react@18.3.28_be_bhyfo6jtf7gmzt2fsdpal3g2vq/node_modules/drizzle-orm/mysql-core/columns/varchar.js
var varchar = __webpack_require__(9499);
// EXTERNAL MODULE: ../../node_modules/.pnpm/drizzle-orm@0.36.4_@libsql+client@0.14.0_@types+better-sqlite3@7.6.13_@types+react@18.3.28_be_bhyfo6jtf7gmzt2fsdpal3g2vq/node_modules/drizzle-orm/mysql-core/columns/text.js
var columns_text = __webpack_require__(4195);
// EXTERNAL MODULE: ../../node_modules/.pnpm/drizzle-orm@0.36.4_@libsql+client@0.14.0_@types+better-sqlite3@7.6.13_@types+react@18.3.28_be_bhyfo6jtf7gmzt2fsdpal3g2vq/node_modules/drizzle-orm/mysql-core/columns/datetime.js
var datetime = __webpack_require__(2913);
// EXTERNAL MODULE: ../../node_modules/.pnpm/drizzle-orm@0.36.4_@libsql+client@0.14.0_@types+better-sqlite3@7.6.13_@types+react@18.3.28_be_bhyfo6jtf7gmzt2fsdpal3g2vq/node_modules/drizzle-orm/mysql-core/columns/json.js
var json = __webpack_require__(2298);
// EXTERNAL MODULE: ../../node_modules/.pnpm/drizzle-orm@0.36.4_@libsql+client@0.14.0_@types+better-sqlite3@7.6.13_@types+react@18.3.28_be_bhyfo6jtf7gmzt2fsdpal3g2vq/node_modules/drizzle-orm/entity.js
var entity = __webpack_require__(9724);
;// CONCATENATED MODULE: ../../node_modules/.pnpm/drizzle-orm@0.36.4_@libsql+client@0.14.0_@types+better-sqlite3@7.6.13_@types+react@18.3.28_be_bhyfo6jtf7gmzt2fsdpal3g2vq/node_modules/drizzle-orm/mysql-core/indexes.js
class IndexBuilderOn {
constructor(name, unique) {
this.name = name;
this.unique = unique;
}
static [entity/* entityKind */.i] = "MySqlIndexBuilderOn";
on(...columns) {
return new IndexBuilder(this.name, columns, this.unique);
}
}
class IndexBuilder {
static [entity/* entityKind */.i] = "MySqlIndexBuilder";
/** @internal */
config;
constructor(name, columns, unique) {
this.config = {
name,
columns,
unique
};
}
using(using) {
this.config.using = using;
return this;
}
algorythm(algorythm) {
this.config.algorythm = algorythm;
return this;
}
lock(lock) {
this.config.lock = lock;
return this;
}
/** @internal */
build(table) {
return new Index(this.config, table);
}
}
class Index {
static [entity/* entityKind */.i] = "MySqlIndex";
config;
constructor(config, table) {
this.config = { ...config, table };
}
}
function index(name) {
return new IndexBuilderOn(name, false);
}
function uniqueIndex(name) {
return new IndexBuilderOn(name, true);
}
//# sourceMappingURL=indexes.js.map
// EXTERNAL MODULE: ../../node_modules/.pnpm/drizzle-orm@0.36.4_@libsql+client@0.14.0_@types+better-sqlite3@7.6.13_@types+react@18.3.28_be_bhyfo6jtf7gmzt2fsdpal3g2vq/node_modules/drizzle-orm/mysql-core/columns/boolean.js
var columns_boolean = __webpack_require__(1994);
// EXTERNAL MODULE: ../../node_modules/.pnpm/drizzle-orm@0.36.4_@libsql+client@0.14.0_@types+better-sqlite3@7.6.13_@types+react@18.3.28_be_bhyfo6jtf7gmzt2fsdpal3g2vq/node_modules/drizzle-orm/mysql-core/columns/float.js
var columns_float = __webpack_require__(8220);
// EXTERNAL MODULE: ../../node_modules/.pnpm/drizzle-orm@0.36.4_@libsql+client@0.14.0_@types+better-sqlite3@7.6.13_@types+react@18.3.28_be_bhyfo6jtf7gmzt2fsdpal3g2vq/node_modules/drizzle-orm/mysql-core/columns/int.js
var columns_int = __webpack_require__(2475);
;// CONCATENATED MODULE: ../../packages/db/dist/schema/mysql.js
// ─── Settings ─────────────────────────────────────────────────
const settings = (0,table/* mysqlTable */.Nn)("settings", {
key: (0,varchar/* varchar */.yf)("key", { length: 255 }).primaryKey(),
value: (0,columns_text/* text */.Qq)("value").notNull(),
updatedAt: (0,datetime/* datetime */.w$)("updated_at").notNull().$defaultFn(() => new Date()),
});
// ─── Agents ─────────────────────────────────────────────────────
const agents = (0,table/* mysqlTable */.Nn)("agents", {
id: (0,varchar/* varchar */.yf)("id", { length: 36 }).primaryKey().$defaultFn(() => crypto.randomUUID()),
tenantId: (0,varchar/* varchar */.yf)("tenant_id", { length: 64 }).notNull().default("default"),
name: (0,varchar/* varchar */.yf)("name", { length: 255 }).notNull(),
description: (0,columns_text/* text */.Qq)("description"),
provider: (0,varchar/* varchar */.yf)("provider", { length: 50 }).notNull().default("custom"),
status: (0,varchar/* varchar */.yf)("status", { length: 50 }).notNull().default("inactive"),
lastSeenAt: (0,datetime/* datetime */.w$)("last_seen_at"),
metadata: (0,json/* json */.Pq)("metadata").notNull().default({}),
createdAt: (0,datetime/* datetime */.w$)("created_at").notNull().$defaultFn(() => new Date()),
updatedAt: (0,datetime/* datetime */.w$)("updated_at").notNull().$defaultFn(() => new Date()),
}, (table) => ({
statusIdx: index("idx_agents_status").on(table.status),
tenantIdIdx: index("idx_agents_tenant_id").on(table.tenantId),
}));
// ─── Scanner Definitions ────────────────────────────────────────
const scannerDefinitions = (0,table/* mysqlTable */.Nn)("scanner_definitions", {
id: (0,varchar/* varchar */.yf)("id", { length: 36 }).primaryKey().$defaultFn(() => crypto.randomUUID()),
tenantId: (0,varchar/* varchar */.yf)("tenant_id", { length: 64 }).notNull().default("default"),
scannerId: (0,varchar/* varchar */.yf)("scanner_id", { length: 10 }).notNull(),
name: (0,varchar/* varchar */.yf)("name", { length: 255 }).notNull(),
description: (0,columns_text/* text */.Qq)("description").notNull(),
config: (0,json/* json */.Pq)("config").notNull().default({}),
isEnabled: (0,columns_boolean/* boolean */.zM)("is_enabled").notNull().default(true),
isDefault: (0,columns_boolean/* boolean */.zM)("is_default").notNull().default(false),
}, (table) => ({
scannerIdIdx: index("idx_scanner_defs_scanner_id").on(table.scannerId),
tenantIdIdx: index("idx_scanner_defs_tenant_id").on(table.tenantId),
}));
// ─── Policies ───────────────────────────────────────────────────
const policies = (0,table/* mysqlTable */.Nn)("policies", {
id: (0,varchar/* varchar */.yf)("id", { length: 36 }).primaryKey().$defaultFn(() => crypto.randomUUID()),
tenantId: (0,varchar/* varchar */.yf)("tenant_id", { length: 64 }).notNull().default("default"),
name: (0,varchar/* varchar */.yf)("name", { length: 255 }).notNull(),
description: (0,columns_text/* text */.Qq)("description"),
scannerIds: (0,json/* json */.Pq)("scanner_ids").notNull().default([]),
action: (0,varchar/* varchar */.yf)("action", { length: 50 }).notNull().default("log"),
sensitivityThreshold: (0,columns_float/* float */.fV)("sensitivity_threshold").notNull().default(0.5),
isEnabled: (0,columns_boolean/* boolean */.zM)("is_enabled").notNull().default(true),
createdAt: (0,datetime/* datetime */.w$)("created_at").notNull().$defaultFn(() => new Date()),
updatedAt: (0,datetime/* datetime */.w$)("updated_at").notNull().$defaultFn(() => new Date()),
}, (table) => ({
tenantIdIdx: index("idx_policies_tenant_id").on(table.tenantId),
}));
// ─── Usage Logs ─────────────────────────────────────────────────
const usageLogs = (0,table/* mysqlTable */.Nn)("usage_logs", {
id: (0,varchar/* varchar */.yf)("id", { length: 36 }).primaryKey().$defaultFn(() => crypto.randomUUID()),
tenantId: (0,varchar/* varchar */.yf)("tenant_id", { length: 64 }).notNull().default("default"),
agentId: (0,varchar/* varchar */.yf)("agent_id", { length: 36 }),
endpoint: (0,varchar/* varchar */.yf)("endpoint", { length: 255 }).notNull(),
statusCode: (0,columns_int/* int */.Wh)("status_code").notNull(),
responseSafe: (0,columns_boolean/* boolean */.zM)("response_safe"),
categories: (0,json/* json */.Pq)("categories").notNull().default([]),
latencyMs: (0,columns_int/* int */.Wh)("latency_ms").notNull(),
requestId: (0,varchar/* varchar */.yf)("request_id", { length: 64 }).notNull(),
createdAt: (0,datetime/* datetime */.w$)("created_at").notNull().$defaultFn(() => new Date()),
}, (table) => ({
agentIdIdx: index("idx_usage_logs_agent_id").on(table.agentId),
createdAtIdx: index("idx_usage_logs_created_at").on(table.createdAt),
tenantIdIdx: index("idx_usage_logs_tenant_id").on(table.tenantId),
}));
// ─── Detection Results ──────────────────────────────────────────
const detectionResults = (0,table/* mysqlTable */.Nn)("detection_results", {
id: (0,varchar/* varchar */.yf)("id", { length: 36 }).primaryKey().$defaultFn(() => crypto.randomUUID()),
tenantId: (0,varchar/* varchar */.yf)("tenant_id", { length: 64 }).notNull().default("default"),
agentId: (0,varchar/* varchar */.yf)("agent_id", { length: 36 }),
safe: (0,columns_boolean/* boolean */.zM)("safe").notNull(),
categories: (0,json/* json */.Pq)("categories").notNull().default([]),
sensitivityScore: (0,columns_float/* float */.fV)("sensitivity_score").notNull().default(0),
findings: (0,json/* json */.Pq)("findings").notNull().default([]),
latencyMs: (0,columns_int/* int */.Wh)("latency_ms").notNull(),
requestId: (0,varchar/* varchar */.yf)("request_id", { length: 64 }).notNull(),
// Static scan fields
scanType: (0,varchar/* varchar */.yf)("scan_type", { length: 16 }).notNull().default("dynamic"), // "static" or "dynamic"
filePath: (0,columns_text/* text */.Qq)("file_path"), // Relative path from workspace for static scans
fileType: (0,varchar/* varchar */.yf)("file_type", { length: 16 }), // "soul", "agent", "memory", "task", "skill", "plugin", "other"
createdAt: (0,datetime/* datetime */.w$)("created_at").notNull().$defaultFn(() => new Date()),
}, (table) => ({
agentIdIdx: index("idx_detection_results_agent_id").on(table.agentId),
createdAtIdx: index("idx_detection_results_created_at").on(table.createdAt),
tenantIdIdx: index("idx_detection_results_tenant_id").on(table.tenantId),
scanTypeIdx: index("idx_detection_results_scan_type").on(table.scanType),
}));
// ─── Tool Call Observations ─────────────────────────────────────
const toolCallObservations = (0,table/* mysqlTable */.Nn)("tool_call_observations", {
id: (0,varchar/* varchar */.yf)("id", { length: 36 }).primaryKey().$defaultFn(() => crypto.randomUUID()),
tenantId: (0,varchar/* varchar */.yf)("tenant_id", { length: 64 }).notNull().default("default"),
agentId: (0,varchar/* varchar */.yf)("agent_id", { length: 36 }).notNull(),
sessionKey: (0,varchar/* varchar */.yf)("session_key", { length: 255 }),
toolName: (0,varchar/* varchar */.yf)("tool_name", { length: 255 }).notNull(),
category: (0,varchar/* varchar */.yf)("category", { length: 64 }),
accessPattern: (0,varchar/* varchar */.yf)("access_pattern", { length: 32 }),
paramsJson: (0,json/* json */.Pq)("params_json"),
phase: (0,varchar/* varchar */.yf)("phase", { length: 16 }).notNull(),
resultJson: (0,json/* json */.Pq)("result_json"),
error: (0,columns_text/* text */.Qq)("error"),
durationMs: (0,columns_int/* int */.Wh)("duration_ms"),
blocked: (0,columns_boolean/* boolean */.zM)("blocked").notNull().default(false),
blockReason: (0,columns_text/* text */.Qq)("block_reason"),
timestamp: (0,datetime/* datetime */.w$)("timestamp").notNull().$defaultFn(() => new Date()),
}, (table) => ({
agentIdIdx: index("idx_tool_obs_agent_id").on(table.agentId),
toolNameIdx: index("idx_tool_obs_tool_name").on(table.toolName),
timestampIdx: index("idx_tool_obs_timestamp").on(table.timestamp),
tenantIdIdx: index("idx_tool_obs_tenant_id").on(table.tenantId),
}));
// ─── Gateway Activity ─────────────────────────────────────────
// Records of gateway sanitization and restoration events
const gatewayActivity = (0,table/* mysqlTable */.Nn)("gateway_activity", {
id: (0,varchar/* varchar */.yf)("id", { length: 36 }).primaryKey().$defaultFn(() => crypto.randomUUID()),
tenantId: (0,varchar/* varchar */.yf)("tenant_id", { length: 64 }).notNull().default("default"),
eventId: (0,varchar/* varchar */.yf)("event_id", { length: 128 }).notNull(), // From gateway: gw-timestamp-counter-type
requestId: (0,varchar/* varchar */.yf)("request_id", { length: 64 }).notNull(), // gw-timestamp-counter
timestamp: (0,datetime/* datetime */.w$)("timestamp").notNull(),
type: (0,varchar/* varchar */.yf)("type", { length: 16 }).notNull(), // "sanitize" or "restore"
direction: (0,varchar/* varchar */.yf)("direction", { length: 16 }).notNull(), // "request" or "response"
backend: (0,varchar/* varchar */.yf)("backend", { length: 32 }).notNull(), // "openai", "anthropic", "gemini"
endpoint: (0,varchar/* varchar */.yf)("endpoint", { length: 255 }).notNull(), // e.g., "/v1/chat/completions"
model: (0,varchar/* varchar */.yf)("model", { length: 128 }),
redactionCount: (0,columns_int/* int */.Wh)("redaction_count").notNull().default(0),
categories: (0,json/* json */.Pq)("categories").notNull().default({}), // { email: 2, secret: 1 }
durationMs: (0,columns_int/* int */.Wh)("duration_ms"),
createdAt: (0,datetime/* datetime */.w$)("created_at").notNull().$defaultFn(() => new Date()),
}, (table) => ({
requestIdIdx: index("idx_gateway_activity_request_id").on(table.requestId),
timestampIdx: index("idx_gateway_activity_timestamp").on(table.timestamp),
typeIdx: index("idx_gateway_activity_type").on(table.type),
tenantIdIdx: index("idx_gateway_activity_tenant_id").on(table.tenantId),
}));
// ─── Agent Permissions ────────────────────────────────────────
const agentPermissions = (0,table/* mysqlTable */.Nn)("agent_permissions", {
id: (0,varchar/* varchar */.yf)("id", { length: 36 }).primaryKey().$defaultFn(() => crypto.randomUUID()),
tenantId: (0,varchar/* varchar */.yf)("tenant_id", { length: 64 }).notNull().default("default"),
agentId: (0,varchar/* varchar */.yf)("agent_id", { length: 36 }).notNull(),
toolName: (0,varchar/* varchar */.yf)("tool_name", { length: 255 }).notNull(),
category: (0,varchar/* varchar */.yf)("category", { length: 64 }),
accessPattern: (0,varchar/* varchar */.yf)("access_pattern", { length: 32 }),
targetsJson: (0,json/* json */.Pq)("targets_json").notNull().default([]),
callCount: (0,columns_int/* int */.Wh)("call_count").notNull().default(0),
errorCount: (0,columns_int/* int */.Wh)("error_count").notNull().default(0),
firstSeen: (0,datetime/* datetime */.w$)("first_seen").notNull().$defaultFn(() => new Date()),
lastSeen: (0,datetime/* datetime */.w$)("last_seen").notNull().$defaultFn(() => new Date()),
}, (table) => ({
agentIdIdx: index("idx_agent_perms_agent_id").on(table.agentId),
toolNameIdx: index("idx_agent_perms_tool_name").on(table.toolName),
tenantIdIdx: index("idx_agent_perms_tenant_id").on(table.tenantId),
uniqueAgentTool: index("idx_agent_perms_unique").on(table.tenantId, table.agentId, table.toolName),
}));
// ─── Magic Links ─────────────────────────────────────────────
const magicLinks = (0,table/* mysqlTable */.Nn)("magic_links", {
id: (0,varchar/* varchar */.yf)("id", { length: 36 }).primaryKey(),
email: (0,varchar/* varchar */.yf)("email", { length: 255 }).notNull(),
token: (0,columns_text/* text */.Qq)("token").notNull(),
expiresAt: (0,varchar/* varchar */.yf)("expires_at", { length: 32 }).notNull(),
usedAt: (0,varchar/* varchar */.yf)("used_at", { length: 32 }),
createdAt: (0,varchar/* varchar */.yf)("created_at", { length: 32 }).notNull(),
}, (table) => ({
tokenIdx: index("idx_magic_links_token").on(table.token),
emailIdx: index("idx_magic_links_email").on(table.email),
}));
// ─── User Sessions ────────────────────────────────────────────
const userSessions = (0,table/* mysqlTable */.Nn)("user_sessions", {
id: (0,varchar/* varchar */.yf)("id", { length: 36 }).primaryKey(),
email: (0,varchar/* varchar */.yf)("email", { length: 255 }).notNull(),
token: (0,columns_text/* text */.Qq)("token").notNull(),
expiresAt: (0,varchar/* varchar */.yf)("expires_at", { length: 32 }).notNull(),
createdAt: (0,varchar/* varchar */.yf)("created_at", { length: 32 }).notNull(),
}, (table) => ({
tokenIdx: index("idx_user_sessions_token").on(table.token),
emailIdx: index("idx_user_sessions_email").on(table.email),
}));
// ─── Agentic Hours ──────────────────────────────────────────────
// Daily aggregated duration metrics per agent
const agenticHoursLocal = (0,table/* mysqlTable */.Nn)("agentic_hours_local", {
id: (0,varchar/* varchar */.yf)("id", { length: 36 }).primaryKey().$defaultFn(() => crypto.randomUUID()),
tenantId: (0,varchar/* varchar */.yf)("tenant_id", { length: 64 }).notNull().default("default"),
agentId: (0,varchar/* varchar */.yf)("agent_id", { length: 36 }).notNull(),
date: (0,varchar/* varchar */.yf)("date", { length: 10 }).notNull(), // YYYY-MM-DD
toolCallDurationMs: (0,columns_int/* int */.Wh)("tool_call_duration_ms").notNull().default(0),
llmDurationMs: (0,columns_int/* int */.Wh)("llm_duration_ms").notNull().default(0),
totalDurationMs: (0,columns_int/* int */.Wh)("total_duration_ms").notNull().default(0),
toolCallCount: (0,columns_int/* int */.Wh)("tool_call_count").notNull().default(0),
llmCallCount: (0,columns_int/* int */.Wh)("llm_call_count").notNull().default(0),
sessionCount: (0,columns_int/* int */.Wh)("session_count").notNull().default(0),
blockCount: (0,columns_int/* int */.Wh)("block_count").notNull().default(0),
riskEventCount: (0,columns_int/* int */.Wh)("risk_event_count").notNull().default(0),
createdAt: (0,datetime/* datetime */.w$)("created_at").notNull().$defaultFn(() => new Date()),
updatedAt: (0,datetime/* datetime */.w$)("updated_at").notNull().$defaultFn(() => new Date()),
}, (table) => ({
agentDateIdx: index("idx_agentic_hours_agent_date").on(table.tenantId, table.agentId, table.date),
tenantDateIdx: index("idx_agentic_hours_tenant_date").on(table.tenantId, table.date),
}));
//# sourceMappingURL=mysql.js.map
/***/ })
};
//# sourceMappingURL=113.index.js.map