@llmops/core 0.3.0 → 0.3.2-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{bun-sqlite-dialect-BNaQHMpk.cjs → bun-sqlite-dialect-B5rfiYIH.cjs} +1 -1
- package/dist/db/index.cjs +4 -2
- package/dist/db/index.d.cts +2 -2
- package/dist/db/index.d.mts +2 -2
- package/dist/db/index.mjs +2 -2
- package/dist/{db-B-EsQtOz.mjs → db-Bkg85wso.mjs} +125 -3
- package/dist/{db-Du2xmkGS.cjs → db-CCKBHjuz.cjs} +139 -5
- package/dist/{index-COkIT6TH.d.mts → index-BMN3ZSTf.d.mts} +398 -2
- package/dist/{index-CunWjFE4.d.cts → index-nsx8vXII.d.cts} +433 -37
- package/dist/index.cjs +261 -5
- package/dist/index.d.cts +576 -8
- package/dist/index.d.mts +848 -280
- package/dist/index.mjs +257 -5
- package/dist/{neon-dialect-BR1nZmKX.cjs → neon-dialect-DmI-frVR.cjs} +1 -1
- package/dist/{neon-dialect-B-Q6mmbI.cjs → neon-dialect-q-8lApt2.cjs} +1 -1
- package/dist/{node-sqlite-dialect-DpdAEbyp.cjs → node-sqlite-dialect-uTc3IyPv.cjs} +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_db = require('./db-
|
|
2
|
-
const require_neon_dialect = require('./neon-dialect-
|
|
1
|
+
const require_db = require('./db-CCKBHjuz.cjs');
|
|
2
|
+
const require_neon_dialect = require('./neon-dialect-DmI-frVR.cjs');
|
|
3
3
|
let __llmops_gateway = require("@llmops/gateway");
|
|
4
4
|
__llmops_gateway = require_db.__toESM(__llmops_gateway);
|
|
5
5
|
let kysely = require("kysely");
|
|
@@ -358,6 +358,17 @@ const chatCompletionCreateParamsBaseSchema = require_db.object({
|
|
|
358
358
|
web_search_options: webSearchOptionsSchema.optional()
|
|
359
359
|
});
|
|
360
360
|
/**
|
|
361
|
+
* Schema for variant message - simplified message format for variant config
|
|
362
|
+
*/
|
|
363
|
+
const variantMessageSchema = require_db.object({
|
|
364
|
+
role: require_db._enum([
|
|
365
|
+
"system",
|
|
366
|
+
"user",
|
|
367
|
+
"assistant"
|
|
368
|
+
]),
|
|
369
|
+
content: require_db.string()
|
|
370
|
+
});
|
|
371
|
+
/**
|
|
361
372
|
* Schema for variant jsonData - these are the parameters that can be
|
|
362
373
|
* configured per variant to override the default chat completion settings.
|
|
363
374
|
* This is a subset of ChatCompletionCreateParamsBase that makes sense to
|
|
@@ -365,6 +376,7 @@ const chatCompletionCreateParamsBaseSchema = require_db.object({
|
|
|
365
376
|
*/
|
|
366
377
|
const variantJsonDataSchema = require_db.object({
|
|
367
378
|
system_prompt: require_db.string().optional(),
|
|
379
|
+
messages: require_db.array(variantMessageSchema).optional(),
|
|
368
380
|
model: require_db.string().optional(),
|
|
369
381
|
audio: chatCompletionAudioParamSchema.optional().nullable(),
|
|
370
382
|
frequency_penalty: require_db.number().min(-2).max(2).optional().nullable(),
|
|
@@ -1446,6 +1458,99 @@ const createEnvironmentSecretDataLayer = (db) => {
|
|
|
1446
1458
|
};
|
|
1447
1459
|
};
|
|
1448
1460
|
|
|
1461
|
+
//#endregion
|
|
1462
|
+
//#region src/datalayer/guardrailConfigs.ts
|
|
1463
|
+
const createGuardrailConfig = require_db.zod_default.object({
|
|
1464
|
+
name: require_db.zod_default.string().min(1),
|
|
1465
|
+
pluginId: require_db.zod_default.string().min(1),
|
|
1466
|
+
functionId: require_db.zod_default.string().min(1),
|
|
1467
|
+
hookType: require_db.zod_default.enum(["beforeRequestHook", "afterRequestHook"]),
|
|
1468
|
+
parameters: require_db.zod_default.record(require_db.zod_default.string(), require_db.zod_default.unknown()).optional().default({}),
|
|
1469
|
+
enabled: require_db.zod_default.boolean().optional().default(true),
|
|
1470
|
+
priority: require_db.zod_default.number().int().optional().default(0),
|
|
1471
|
+
onFail: require_db.zod_default.enum(["block", "log"]).optional().default("block")
|
|
1472
|
+
});
|
|
1473
|
+
const updateGuardrailConfig = require_db.zod_default.object({
|
|
1474
|
+
id: require_db.zod_default.string().uuid(),
|
|
1475
|
+
name: require_db.zod_default.string().min(1).optional(),
|
|
1476
|
+
hookType: require_db.zod_default.enum(["beforeRequestHook", "afterRequestHook"]).optional(),
|
|
1477
|
+
parameters: require_db.zod_default.record(require_db.zod_default.string(), require_db.zod_default.unknown()).optional(),
|
|
1478
|
+
enabled: require_db.zod_default.boolean().optional(),
|
|
1479
|
+
priority: require_db.zod_default.number().int().optional(),
|
|
1480
|
+
onFail: require_db.zod_default.enum(["block", "log"]).optional()
|
|
1481
|
+
});
|
|
1482
|
+
const getGuardrailConfigById = require_db.zod_default.object({ id: require_db.zod_default.string().uuid() });
|
|
1483
|
+
const deleteGuardrailConfig = require_db.zod_default.object({ id: require_db.zod_default.string().uuid() });
|
|
1484
|
+
const listGuardrailConfigs = require_db.zod_default.object({
|
|
1485
|
+
limit: require_db.zod_default.number().int().positive().optional(),
|
|
1486
|
+
offset: require_db.zod_default.number().int().nonnegative().optional(),
|
|
1487
|
+
hookType: require_db.zod_default.enum(["beforeRequestHook", "afterRequestHook"]).optional(),
|
|
1488
|
+
enabled: require_db.zod_default.boolean().optional()
|
|
1489
|
+
});
|
|
1490
|
+
const createGuardrailConfigsDataLayer = (db) => {
|
|
1491
|
+
return {
|
|
1492
|
+
createGuardrailConfig: async (params) => {
|
|
1493
|
+
const value = await createGuardrailConfig.safeParseAsync(params);
|
|
1494
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
1495
|
+
const { name, pluginId, functionId, hookType, parameters, enabled, priority, onFail } = value.data;
|
|
1496
|
+
return db.insertInto("guardrail_configs").values({
|
|
1497
|
+
id: (0, node_crypto.randomUUID)(),
|
|
1498
|
+
name,
|
|
1499
|
+
pluginId,
|
|
1500
|
+
functionId,
|
|
1501
|
+
hookType,
|
|
1502
|
+
parameters: JSON.stringify(parameters),
|
|
1503
|
+
enabled,
|
|
1504
|
+
priority,
|
|
1505
|
+
onFail,
|
|
1506
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
1507
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
1508
|
+
}).returningAll().executeTakeFirst();
|
|
1509
|
+
},
|
|
1510
|
+
updateGuardrailConfig: async (params) => {
|
|
1511
|
+
const value = await updateGuardrailConfig.safeParseAsync(params);
|
|
1512
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
1513
|
+
const { id, name, hookType, parameters, enabled, priority, onFail } = value.data;
|
|
1514
|
+
const updateData = { updatedAt: (/* @__PURE__ */ new Date()).toISOString() };
|
|
1515
|
+
if (name !== void 0) updateData.name = name;
|
|
1516
|
+
if (hookType !== void 0) updateData.hookType = hookType;
|
|
1517
|
+
if (parameters !== void 0) updateData.parameters = JSON.stringify(parameters);
|
|
1518
|
+
if (enabled !== void 0) updateData.enabled = enabled;
|
|
1519
|
+
if (priority !== void 0) updateData.priority = priority;
|
|
1520
|
+
if (onFail !== void 0) updateData.onFail = onFail;
|
|
1521
|
+
return db.updateTable("guardrail_configs").set(updateData).where("id", "=", id).returningAll().executeTakeFirst();
|
|
1522
|
+
},
|
|
1523
|
+
getGuardrailConfigById: async (params) => {
|
|
1524
|
+
const value = await getGuardrailConfigById.safeParseAsync(params);
|
|
1525
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
1526
|
+
const { id } = value.data;
|
|
1527
|
+
return db.selectFrom("guardrail_configs").selectAll().where("id", "=", id).executeTakeFirst();
|
|
1528
|
+
},
|
|
1529
|
+
deleteGuardrailConfig: async (params) => {
|
|
1530
|
+
const value = await deleteGuardrailConfig.safeParseAsync(params);
|
|
1531
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
1532
|
+
const { id } = value.data;
|
|
1533
|
+
return db.deleteFrom("guardrail_configs").where("id", "=", id).returningAll().executeTakeFirst();
|
|
1534
|
+
},
|
|
1535
|
+
listGuardrailConfigs: async (params) => {
|
|
1536
|
+
const value = await listGuardrailConfigs.safeParseAsync(params || {});
|
|
1537
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
1538
|
+
const { limit = 100, offset = 0, hookType, enabled } = value.data;
|
|
1539
|
+
let query = db.selectFrom("guardrail_configs").selectAll().orderBy("priority", "desc").orderBy("createdAt", "desc").limit(limit).offset(offset);
|
|
1540
|
+
if (hookType !== void 0) query = query.where("hookType", "=", hookType);
|
|
1541
|
+
if (enabled !== void 0) query = query.where("enabled", "=", enabled);
|
|
1542
|
+
return query.execute();
|
|
1543
|
+
},
|
|
1544
|
+
countGuardrailConfigs: async () => {
|
|
1545
|
+
const result = await db.selectFrom("guardrail_configs").select(db.fn.countAll().as("count")).executeTakeFirst();
|
|
1546
|
+
return Number(result?.count ?? 0);
|
|
1547
|
+
},
|
|
1548
|
+
getEnabledGuardrailsByHookType: async (hookType) => {
|
|
1549
|
+
return db.selectFrom("guardrail_configs").selectAll().where("hookType", "=", hookType).where("enabled", "=", true).orderBy("priority", "desc").execute();
|
|
1550
|
+
}
|
|
1551
|
+
};
|
|
1552
|
+
};
|
|
1553
|
+
|
|
1449
1554
|
//#endregion
|
|
1450
1555
|
//#region src/datalayer/llmRequests.ts
|
|
1451
1556
|
/**
|
|
@@ -1935,6 +2040,111 @@ const createProviderConfigsDataLayer = (db) => {
|
|
|
1935
2040
|
};
|
|
1936
2041
|
};
|
|
1937
2042
|
|
|
2043
|
+
//#endregion
|
|
2044
|
+
//#region src/datalayer/providerGuardrailOverrides.ts
|
|
2045
|
+
const createProviderGuardrailOverride = require_db.zod_default.object({
|
|
2046
|
+
providerConfigId: require_db.zod_default.string().uuid(),
|
|
2047
|
+
guardrailConfigId: require_db.zod_default.string().uuid(),
|
|
2048
|
+
enabled: require_db.zod_default.boolean().optional().default(true),
|
|
2049
|
+
parameters: require_db.zod_default.record(require_db.zod_default.string(), require_db.zod_default.unknown()).nullable().optional()
|
|
2050
|
+
});
|
|
2051
|
+
const updateProviderGuardrailOverride = require_db.zod_default.object({
|
|
2052
|
+
id: require_db.zod_default.string().uuid(),
|
|
2053
|
+
enabled: require_db.zod_default.boolean().optional(),
|
|
2054
|
+
parameters: require_db.zod_default.record(require_db.zod_default.string(), require_db.zod_default.unknown()).nullable().optional()
|
|
2055
|
+
});
|
|
2056
|
+
const getOverrideById = require_db.zod_default.object({ id: require_db.zod_default.string().uuid() });
|
|
2057
|
+
const deleteOverride = require_db.zod_default.object({ id: require_db.zod_default.string().uuid() });
|
|
2058
|
+
const getOverridesByProviderConfigId = require_db.zod_default.object({ providerConfigId: require_db.zod_default.string().uuid() });
|
|
2059
|
+
const getOverridesByGuardrailConfigId = require_db.zod_default.object({ guardrailConfigId: require_db.zod_default.string().uuid() });
|
|
2060
|
+
const getOverrideByProviderAndGuardrail = require_db.zod_default.object({
|
|
2061
|
+
providerConfigId: require_db.zod_default.string().uuid(),
|
|
2062
|
+
guardrailConfigId: require_db.zod_default.string().uuid()
|
|
2063
|
+
});
|
|
2064
|
+
const createProviderGuardrailOverridesDataLayer = (db) => {
|
|
2065
|
+
return {
|
|
2066
|
+
createProviderGuardrailOverride: async (params) => {
|
|
2067
|
+
const value = await createProviderGuardrailOverride.safeParseAsync(params);
|
|
2068
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
2069
|
+
const { providerConfigId, guardrailConfigId, enabled, parameters } = value.data;
|
|
2070
|
+
return db.insertInto("provider_guardrail_overrides").values({
|
|
2071
|
+
id: (0, node_crypto.randomUUID)(),
|
|
2072
|
+
providerConfigId,
|
|
2073
|
+
guardrailConfigId,
|
|
2074
|
+
enabled,
|
|
2075
|
+
parameters: parameters ? JSON.stringify(parameters) : null,
|
|
2076
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
2077
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2078
|
+
}).returningAll().executeTakeFirst();
|
|
2079
|
+
},
|
|
2080
|
+
updateProviderGuardrailOverride: async (params) => {
|
|
2081
|
+
const value = await updateProviderGuardrailOverride.safeParseAsync(params);
|
|
2082
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
2083
|
+
const { id, enabled, parameters } = value.data;
|
|
2084
|
+
const updateData = { updatedAt: (/* @__PURE__ */ new Date()).toISOString() };
|
|
2085
|
+
if (enabled !== void 0) updateData.enabled = enabled;
|
|
2086
|
+
if (parameters !== void 0) updateData.parameters = parameters ? JSON.stringify(parameters) : null;
|
|
2087
|
+
return db.updateTable("provider_guardrail_overrides").set(updateData).where("id", "=", id).returningAll().executeTakeFirst();
|
|
2088
|
+
},
|
|
2089
|
+
getOverrideById: async (params) => {
|
|
2090
|
+
const value = await getOverrideById.safeParseAsync(params);
|
|
2091
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
2092
|
+
const { id } = value.data;
|
|
2093
|
+
return db.selectFrom("provider_guardrail_overrides").selectAll().where("id", "=", id).executeTakeFirst();
|
|
2094
|
+
},
|
|
2095
|
+
deleteProviderGuardrailOverride: async (params) => {
|
|
2096
|
+
const value = await deleteOverride.safeParseAsync(params);
|
|
2097
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
2098
|
+
const { id } = value.data;
|
|
2099
|
+
return db.deleteFrom("provider_guardrail_overrides").where("id", "=", id).returningAll().executeTakeFirst();
|
|
2100
|
+
},
|
|
2101
|
+
getOverridesByProviderConfigId: async (params) => {
|
|
2102
|
+
const value = await getOverridesByProviderConfigId.safeParseAsync(params);
|
|
2103
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
2104
|
+
const { providerConfigId } = value.data;
|
|
2105
|
+
return db.selectFrom("provider_guardrail_overrides").selectAll().where("providerConfigId", "=", providerConfigId).execute();
|
|
2106
|
+
},
|
|
2107
|
+
getOverridesByGuardrailConfigId: async (params) => {
|
|
2108
|
+
const value = await getOverridesByGuardrailConfigId.safeParseAsync(params);
|
|
2109
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
2110
|
+
const { guardrailConfigId } = value.data;
|
|
2111
|
+
return db.selectFrom("provider_guardrail_overrides").selectAll().where("guardrailConfigId", "=", guardrailConfigId).execute();
|
|
2112
|
+
},
|
|
2113
|
+
getOverrideByProviderAndGuardrail: async (params) => {
|
|
2114
|
+
const value = await getOverrideByProviderAndGuardrail.safeParseAsync(params);
|
|
2115
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
2116
|
+
const { providerConfigId, guardrailConfigId } = value.data;
|
|
2117
|
+
return db.selectFrom("provider_guardrail_overrides").selectAll().where("providerConfigId", "=", providerConfigId).where("guardrailConfigId", "=", guardrailConfigId).executeTakeFirst();
|
|
2118
|
+
},
|
|
2119
|
+
upsertProviderGuardrailOverride: async (params) => {
|
|
2120
|
+
const value = await createProviderGuardrailOverride.safeParseAsync(params);
|
|
2121
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
2122
|
+
const { providerConfigId, guardrailConfigId, enabled, parameters } = value.data;
|
|
2123
|
+
const existing = await db.selectFrom("provider_guardrail_overrides").selectAll().where("providerConfigId", "=", providerConfigId).where("guardrailConfigId", "=", guardrailConfigId).executeTakeFirst();
|
|
2124
|
+
if (existing) return db.updateTable("provider_guardrail_overrides").set({
|
|
2125
|
+
enabled,
|
|
2126
|
+
parameters: parameters ? JSON.stringify(parameters) : null,
|
|
2127
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2128
|
+
}).where("id", "=", existing.id).returningAll().executeTakeFirst();
|
|
2129
|
+
return db.insertInto("provider_guardrail_overrides").values({
|
|
2130
|
+
id: (0, node_crypto.randomUUID)(),
|
|
2131
|
+
providerConfigId,
|
|
2132
|
+
guardrailConfigId,
|
|
2133
|
+
enabled,
|
|
2134
|
+
parameters: parameters ? JSON.stringify(parameters) : null,
|
|
2135
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
2136
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2137
|
+
}).returningAll().executeTakeFirst();
|
|
2138
|
+
},
|
|
2139
|
+
deleteOverridesByGuardrailConfigId: async (params) => {
|
|
2140
|
+
const value = await getOverridesByGuardrailConfigId.safeParseAsync(params);
|
|
2141
|
+
if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
|
|
2142
|
+
const { guardrailConfigId } = value.data;
|
|
2143
|
+
return db.deleteFrom("provider_guardrail_overrides").where("guardrailConfigId", "=", guardrailConfigId).execute();
|
|
2144
|
+
}
|
|
2145
|
+
};
|
|
2146
|
+
};
|
|
2147
|
+
|
|
1938
2148
|
//#endregion
|
|
1939
2149
|
//#region src/datalayer/targetingRules.ts
|
|
1940
2150
|
const createTargetingRule = require_db.zod_default.object({
|
|
@@ -2408,8 +2618,10 @@ const createDataLayer = async (db) => {
|
|
|
2408
2618
|
...createConfigVariantDataLayer(db),
|
|
2409
2619
|
...createEnvironmentDataLayer(db),
|
|
2410
2620
|
...createEnvironmentSecretDataLayer(db),
|
|
2621
|
+
...createGuardrailConfigsDataLayer(db),
|
|
2411
2622
|
...createLLMRequestsDataLayer(db),
|
|
2412
2623
|
...createProviderConfigsDataLayer(db),
|
|
2624
|
+
...createProviderGuardrailOverridesDataLayer(db),
|
|
2413
2625
|
...createTargetingRulesDataLayer(db),
|
|
2414
2626
|
...createVariantDataLayer(db),
|
|
2415
2627
|
...createVariantVersionsDataLayer(db),
|
|
@@ -2634,14 +2846,16 @@ var ManifestBuilder = class {
|
|
|
2634
2846
|
* Build the complete routing manifest from database
|
|
2635
2847
|
*/
|
|
2636
2848
|
async build() {
|
|
2637
|
-
const [configs, environments, environmentSecrets, targetingRules, configVariants, variantVersions, providerConfigs] = await Promise.all([
|
|
2849
|
+
const [configs, environments, environmentSecrets, targetingRules, configVariants, variantVersions, providerConfigs, guardrailConfigs, providerGuardrailOverridesData] = await Promise.all([
|
|
2638
2850
|
this.db.selectFrom("configs").selectAll().execute(),
|
|
2639
2851
|
this.db.selectFrom("environments").selectAll().execute(),
|
|
2640
2852
|
this.db.selectFrom("environment_secrets").selectAll().execute(),
|
|
2641
2853
|
this.db.selectFrom("targeting_rules").where("enabled", "=", true).selectAll().execute(),
|
|
2642
2854
|
this.db.selectFrom("config_variants").selectAll().execute(),
|
|
2643
2855
|
this.db.selectFrom("variant_versions").selectAll().execute(),
|
|
2644
|
-
this.db.selectFrom("provider_configs").selectAll().execute()
|
|
2856
|
+
this.db.selectFrom("provider_configs").selectAll().execute(),
|
|
2857
|
+
this.db.selectFrom("guardrail_configs").where("enabled", "=", true).selectAll().execute(),
|
|
2858
|
+
this.db.selectFrom("provider_guardrail_overrides").selectAll().execute()
|
|
2645
2859
|
]);
|
|
2646
2860
|
const manifestConfigs = {};
|
|
2647
2861
|
const configsBySlug = {};
|
|
@@ -2734,6 +2948,39 @@ var ManifestBuilder = class {
|
|
|
2734
2948
|
if (b.priority !== a.priority) return b.priority - a.priority;
|
|
2735
2949
|
return b.weight - a.weight;
|
|
2736
2950
|
});
|
|
2951
|
+
const beforeRequestGuardrails = [];
|
|
2952
|
+
const afterRequestGuardrails = [];
|
|
2953
|
+
require_db.logger.info(`[ManifestBuilder] Found ${guardrailConfigs.length} enabled guardrail configs`);
|
|
2954
|
+
for (const guardrail of guardrailConfigs) {
|
|
2955
|
+
const parameters = typeof guardrail.parameters === "string" ? JSON.parse(guardrail.parameters) : guardrail.parameters;
|
|
2956
|
+
const manifestGuardrail = {
|
|
2957
|
+
id: guardrail.id,
|
|
2958
|
+
name: guardrail.name,
|
|
2959
|
+
pluginId: guardrail.pluginId,
|
|
2960
|
+
functionId: guardrail.functionId,
|
|
2961
|
+
hookType: guardrail.hookType,
|
|
2962
|
+
parameters: parameters ?? {},
|
|
2963
|
+
priority: guardrail.priority,
|
|
2964
|
+
onFail: guardrail.onFail
|
|
2965
|
+
};
|
|
2966
|
+
if (guardrail.hookType === "beforeRequestHook") beforeRequestGuardrails.push(manifestGuardrail);
|
|
2967
|
+
else afterRequestGuardrails.push(manifestGuardrail);
|
|
2968
|
+
}
|
|
2969
|
+
beforeRequestGuardrails.sort((a, b) => b.priority - a.priority);
|
|
2970
|
+
afterRequestGuardrails.sort((a, b) => b.priority - a.priority);
|
|
2971
|
+
const providerGuardrailOverrides = {};
|
|
2972
|
+
for (const override of providerGuardrailOverridesData) {
|
|
2973
|
+
const parameters = typeof override.parameters === "string" ? JSON.parse(override.parameters) : override.parameters;
|
|
2974
|
+
const manifestOverride = {
|
|
2975
|
+
id: override.id,
|
|
2976
|
+
providerConfigId: override.providerConfigId,
|
|
2977
|
+
guardrailConfigId: override.guardrailConfigId,
|
|
2978
|
+
enabled: override.enabled,
|
|
2979
|
+
parameters: parameters ?? null
|
|
2980
|
+
};
|
|
2981
|
+
if (!providerGuardrailOverrides[override.providerConfigId]) providerGuardrailOverrides[override.providerConfigId] = [];
|
|
2982
|
+
providerGuardrailOverrides[override.providerConfigId].push(manifestOverride);
|
|
2983
|
+
}
|
|
2737
2984
|
return {
|
|
2738
2985
|
version: Date.now(),
|
|
2739
2986
|
builtAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
@@ -2742,7 +2989,12 @@ var ManifestBuilder = class {
|
|
|
2742
2989
|
environments: manifestEnvironments,
|
|
2743
2990
|
environmentsBySlug,
|
|
2744
2991
|
routingTable,
|
|
2745
|
-
secretToEnvironment
|
|
2992
|
+
secretToEnvironment,
|
|
2993
|
+
guardrails: {
|
|
2994
|
+
beforeRequestHook: beforeRequestGuardrails,
|
|
2995
|
+
afterRequestHook: afterRequestGuardrails
|
|
2996
|
+
},
|
|
2997
|
+
providerGuardrailOverrides
|
|
2746
2998
|
};
|
|
2747
2999
|
}
|
|
2748
3000
|
};
|
|
@@ -2966,9 +3218,11 @@ exports.configsSchema = require_db.configsSchema;
|
|
|
2966
3218
|
exports.createDataLayer = createDataLayer;
|
|
2967
3219
|
exports.createDatabase = require_db.createDatabase;
|
|
2968
3220
|
exports.createDatabaseFromConnection = require_db.createDatabaseFromConnection;
|
|
3221
|
+
exports.createGuardrailConfigsDataLayer = createGuardrailConfigsDataLayer;
|
|
2969
3222
|
exports.createLLMRequestsDataLayer = createLLMRequestsDataLayer;
|
|
2970
3223
|
exports.createNeonDialect = require_neon_dialect.createNeonDialect;
|
|
2971
3224
|
exports.createProviderConfigsDataLayer = createProviderConfigsDataLayer;
|
|
3225
|
+
exports.createProviderGuardrailOverridesDataLayer = createProviderGuardrailOverridesDataLayer;
|
|
2972
3226
|
exports.createWorkspaceSettingsDataLayer = createWorkspaceSettingsDataLayer;
|
|
2973
3227
|
exports.detectDatabaseType = require_db.detectDatabaseType;
|
|
2974
3228
|
exports.dollarsToMicroDollars = dollarsToMicroDollars;
|
|
@@ -2986,6 +3240,7 @@ exports.generateId = generateId;
|
|
|
2986
3240
|
exports.getAuthClientOptions = require_db.getAuthClientOptions;
|
|
2987
3241
|
exports.getDefaultPricingProvider = getDefaultPricingProvider;
|
|
2988
3242
|
exports.getMigrations = require_db.getMigrations;
|
|
3243
|
+
exports.guardrailConfigsSchema = require_db.guardrailConfigsSchema;
|
|
2989
3244
|
exports.llmRequestsSchema = require_db.llmRequestsSchema;
|
|
2990
3245
|
exports.llmopsConfigSchema = llmopsConfigSchema;
|
|
2991
3246
|
exports.logger = require_db.logger;
|
|
@@ -2994,6 +3249,7 @@ exports.microDollarsToDollars = microDollarsToDollars;
|
|
|
2994
3249
|
exports.parsePartialTableData = require_db.parsePartialTableData;
|
|
2995
3250
|
exports.parseTableData = require_db.parseTableData;
|
|
2996
3251
|
exports.providerConfigsSchema = require_db.providerConfigsSchema;
|
|
3252
|
+
exports.providerGuardrailOverridesSchema = require_db.providerGuardrailOverridesSchema;
|
|
2997
3253
|
exports.runAutoMigrations = require_db.runAutoMigrations;
|
|
2998
3254
|
exports.schemas = require_db.schemas;
|
|
2999
3255
|
exports.targetingRulesSchema = require_db.targetingRulesSchema;
|