@llmops/core 0.1.5-beta.2 → 0.1.6-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-Bp2qbl5F.cjs → bun-sqlite-dialect-CYbkeI0s.cjs} +1 -1
- package/dist/db/index.cjs +1 -1
- package/dist/db/index.d.cts +1 -1
- package/dist/db/index.d.mts +1 -1
- package/dist/db/index.mjs +1 -1
- package/dist/{db-eEfIe5dO.cjs → db-C_u1BuaR.cjs} +11 -2
- package/dist/{db-DSzwrW4p.mjs → db-D78x_Elf.mjs} +9 -0
- package/dist/{index-mUSLoeGU.d.mts → index-CCfvTBvD.d.cts} +43 -25
- package/dist/{index-BO7DYWFs.d.cts → index-fgiyw393.d.mts} +43 -25
- package/dist/index.cjs +107 -18
- package/dist/index.d.cts +67 -5
- package/dist/index.d.mts +67 -5
- package/dist/index.mjs +107 -18
- package/dist/{node-sqlite-dialect-b2V910TJ.cjs → node-sqlite-dialect-BSbNUAzj.cjs} +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_db = require('./db-
|
|
1
|
+
const require_db = require('./db-C_u1BuaR.cjs');
|
|
2
2
|
let __llmops_gateway = require("@llmops/gateway");
|
|
3
3
|
__llmops_gateway = require_db.__toESM(__llmops_gateway);
|
|
4
4
|
let kysely = require("kysely");
|
|
@@ -1286,7 +1286,8 @@ const createConfigVariantDataLayer = (db) => {
|
|
|
1286
1286
|
return {
|
|
1287
1287
|
...versionData,
|
|
1288
1288
|
configId: resolvedConfigId,
|
|
1289
|
-
variantId: configVariant.variantId
|
|
1289
|
+
variantId: configVariant.variantId,
|
|
1290
|
+
environmentId
|
|
1290
1291
|
};
|
|
1291
1292
|
}
|
|
1292
1293
|
};
|
|
@@ -1456,6 +1457,7 @@ const insertLLMRequestSchema = require_db.zod_default.object({
|
|
|
1456
1457
|
requestId: require_db.zod_default.string().uuid(),
|
|
1457
1458
|
configId: require_db.zod_default.string().uuid().nullable().optional(),
|
|
1458
1459
|
variantId: require_db.zod_default.string().uuid().nullable().optional(),
|
|
1460
|
+
environmentId: require_db.zod_default.string().uuid().nullable().optional(),
|
|
1459
1461
|
provider: require_db.zod_default.string(),
|
|
1460
1462
|
model: require_db.zod_default.string(),
|
|
1461
1463
|
promptTokens: require_db.zod_default.number().int().default(0),
|
|
@@ -1479,17 +1481,24 @@ const listRequestsSchema = require_db.zod_default.object({
|
|
|
1479
1481
|
limit: require_db.zod_default.number().int().positive().max(1e3).default(100),
|
|
1480
1482
|
offset: require_db.zod_default.number().int().nonnegative().default(0),
|
|
1481
1483
|
configId: require_db.zod_default.string().uuid().optional(),
|
|
1484
|
+
variantId: require_db.zod_default.string().uuid().optional(),
|
|
1485
|
+
environmentId: require_db.zod_default.string().uuid().optional(),
|
|
1482
1486
|
provider: require_db.zod_default.string().optional(),
|
|
1483
1487
|
model: require_db.zod_default.string().optional(),
|
|
1484
1488
|
startDate: require_db.zod_default.date().optional(),
|
|
1485
|
-
endDate: require_db.zod_default.date().optional()
|
|
1489
|
+
endDate: require_db.zod_default.date().optional(),
|
|
1490
|
+
tags: require_db.zod_default.record(require_db.zod_default.string(), require_db.zod_default.array(require_db.zod_default.string())).optional()
|
|
1486
1491
|
});
|
|
1487
1492
|
/**
|
|
1488
|
-
* Schema for date range queries
|
|
1493
|
+
* Schema for date range queries with optional filters
|
|
1489
1494
|
*/
|
|
1490
1495
|
const dateRangeSchema = require_db.zod_default.object({
|
|
1491
1496
|
startDate: require_db.zod_default.date(),
|
|
1492
|
-
endDate: require_db.zod_default.date()
|
|
1497
|
+
endDate: require_db.zod_default.date(),
|
|
1498
|
+
configId: require_db.zod_default.string().uuid().optional(),
|
|
1499
|
+
variantId: require_db.zod_default.string().uuid().optional(),
|
|
1500
|
+
environmentId: require_db.zod_default.string().uuid().optional(),
|
|
1501
|
+
tags: require_db.zod_default.record(require_db.zod_default.string(), require_db.zod_default.array(require_db.zod_default.string())).optional()
|
|
1493
1502
|
});
|
|
1494
1503
|
/**
|
|
1495
1504
|
* Schema for cost summary with grouping
|
|
@@ -1497,6 +1506,10 @@ const dateRangeSchema = require_db.zod_default.object({
|
|
|
1497
1506
|
const costSummarySchema = require_db.zod_default.object({
|
|
1498
1507
|
startDate: require_db.zod_default.date(),
|
|
1499
1508
|
endDate: require_db.zod_default.date(),
|
|
1509
|
+
configId: require_db.zod_default.string().uuid().optional(),
|
|
1510
|
+
variantId: require_db.zod_default.string().uuid().optional(),
|
|
1511
|
+
environmentId: require_db.zod_default.string().uuid().optional(),
|
|
1512
|
+
tags: require_db.zod_default.record(require_db.zod_default.string(), require_db.zod_default.array(require_db.zod_default.string())).optional(),
|
|
1500
1513
|
groupBy: require_db.zod_default.enum([
|
|
1501
1514
|
"day",
|
|
1502
1515
|
"hour",
|
|
@@ -1526,6 +1539,7 @@ const createLLMRequestsDataLayer = (db) => {
|
|
|
1526
1539
|
requestId: req.requestId,
|
|
1527
1540
|
configId: req.configId ?? null,
|
|
1528
1541
|
variantId: req.variantId ?? null,
|
|
1542
|
+
environmentId: req.environmentId ?? null,
|
|
1529
1543
|
provider: req.provider,
|
|
1530
1544
|
model: req.model,
|
|
1531
1545
|
promptTokens: req.promptTokens,
|
|
@@ -1557,6 +1571,7 @@ const createLLMRequestsDataLayer = (db) => {
|
|
|
1557
1571
|
requestId: req.requestId,
|
|
1558
1572
|
configId: req.configId ?? null,
|
|
1559
1573
|
variantId: req.variantId ?? null,
|
|
1574
|
+
environmentId: req.environmentId ?? null,
|
|
1560
1575
|
provider: req.provider,
|
|
1561
1576
|
model: req.model,
|
|
1562
1577
|
promptTokens: req.promptTokens,
|
|
@@ -1579,14 +1594,43 @@ const createLLMRequestsDataLayer = (db) => {
|
|
|
1579
1594
|
listRequests: async (params) => {
|
|
1580
1595
|
const result = await listRequestsSchema.safeParseAsync(params || {});
|
|
1581
1596
|
if (!result.success) throw new LLMOpsError(`Invalid parameters: ${result.error.message}`);
|
|
1582
|
-
const { limit, offset, configId, provider, model, startDate, endDate } = result.data;
|
|
1597
|
+
const { limit, offset, configId, variantId, environmentId, provider, model, startDate, endDate, tags } = result.data;
|
|
1598
|
+
console.log("[listRequests] Parsed filters:", {
|
|
1599
|
+
configId,
|
|
1600
|
+
variantId,
|
|
1601
|
+
environmentId,
|
|
1602
|
+
provider,
|
|
1603
|
+
model
|
|
1604
|
+
});
|
|
1583
1605
|
let baseQuery = db.selectFrom("llm_requests");
|
|
1584
|
-
if (configId)
|
|
1606
|
+
if (configId) {
|
|
1607
|
+
console.log("[listRequests] Adding configId filter:", configId);
|
|
1608
|
+
baseQuery = baseQuery.where("configId", "=", configId);
|
|
1609
|
+
}
|
|
1610
|
+
if (variantId) {
|
|
1611
|
+
console.log("[listRequests] Adding variantId filter:", variantId);
|
|
1612
|
+
baseQuery = baseQuery.where("variantId", "=", variantId);
|
|
1613
|
+
}
|
|
1614
|
+
if (environmentId) {
|
|
1615
|
+
console.log("[listRequests] Adding environmentId filter:", environmentId);
|
|
1616
|
+
baseQuery = baseQuery.where("environmentId", "=", environmentId);
|
|
1617
|
+
}
|
|
1585
1618
|
if (provider) baseQuery = baseQuery.where("provider", "=", provider);
|
|
1586
1619
|
if (model) baseQuery = baseQuery.where("model", "=", model);
|
|
1587
1620
|
if (startDate) baseQuery = baseQuery.where(kysely.sql`${col("createdAt")} >= ${startDate.toISOString()}`);
|
|
1588
1621
|
if (endDate) baseQuery = baseQuery.where(kysely.sql`${col("createdAt")} <= ${endDate.toISOString()}`);
|
|
1589
|
-
|
|
1622
|
+
if (tags && Object.keys(tags).length > 0) for (const [key, values] of Object.entries(tags)) {
|
|
1623
|
+
if (values.length === 0) continue;
|
|
1624
|
+
if (values.length === 1) baseQuery = baseQuery.where(kysely.sql`${col("tags")}->>${key} = ${values[0]}`);
|
|
1625
|
+
else {
|
|
1626
|
+
const valueList = kysely.sql.join(values.map((v) => kysely.sql`${v}`));
|
|
1627
|
+
baseQuery = baseQuery.where(kysely.sql`${col("tags")}->>${key} IN (${valueList})`);
|
|
1628
|
+
}
|
|
1629
|
+
}
|
|
1630
|
+
const countQuery = baseQuery.select(kysely.sql`COUNT(*)`.as("total"));
|
|
1631
|
+
console.log("[listRequests] Count SQL:", countQuery.compile().sql);
|
|
1632
|
+
console.log("[listRequests] Count params:", countQuery.compile().parameters);
|
|
1633
|
+
const countResult = await countQuery.executeTakeFirst();
|
|
1590
1634
|
const total = Number(countResult?.total ?? 0);
|
|
1591
1635
|
return {
|
|
1592
1636
|
data: await baseQuery.selectAll().orderBy("createdAt", "desc").limit(limit).offset(offset).execute(),
|
|
@@ -1601,8 +1645,8 @@ const createLLMRequestsDataLayer = (db) => {
|
|
|
1601
1645
|
getTotalCost: async (params) => {
|
|
1602
1646
|
const result = await dateRangeSchema.safeParseAsync(params);
|
|
1603
1647
|
if (!result.success) throw new LLMOpsError(`Invalid parameters: ${result.error.message}`);
|
|
1604
|
-
const { startDate, endDate } = result.data;
|
|
1605
|
-
|
|
1648
|
+
const { startDate, endDate, configId, variantId, environmentId, tags } = result.data;
|
|
1649
|
+
let query = db.selectFrom("llm_requests").select([
|
|
1606
1650
|
kysely.sql`COALESCE(SUM(${col("cost")}), 0)`.as("totalCost"),
|
|
1607
1651
|
kysely.sql`COALESCE(SUM(${col("inputCost")}), 0)`.as("totalInputCost"),
|
|
1608
1652
|
kysely.sql`COALESCE(SUM(${col("outputCost")}), 0)`.as("totalOutputCost"),
|
|
@@ -1610,7 +1654,19 @@ const createLLMRequestsDataLayer = (db) => {
|
|
|
1610
1654
|
kysely.sql`COALESCE(SUM(${col("completionTokens")}), 0)`.as("totalCompletionTokens"),
|
|
1611
1655
|
kysely.sql`COALESCE(SUM(${col("totalTokens")}), 0)`.as("totalTokens"),
|
|
1612
1656
|
kysely.sql`COUNT(*)`.as("requestCount")
|
|
1613
|
-
]).where(kysely.sql`${col("createdAt")} >= ${startDate.toISOString()}`).where(kysely.sql`${col("createdAt")} <= ${endDate.toISOString()}`)
|
|
1657
|
+
]).where(kysely.sql`${col("createdAt")} >= ${startDate.toISOString()}`).where(kysely.sql`${col("createdAt")} <= ${endDate.toISOString()}`);
|
|
1658
|
+
if (configId) query = query.where("configId", "=", configId);
|
|
1659
|
+
if (variantId) query = query.where("variantId", "=", variantId);
|
|
1660
|
+
if (environmentId) query = query.where("environmentId", "=", environmentId);
|
|
1661
|
+
if (tags && Object.keys(tags).length > 0) for (const [key, values] of Object.entries(tags)) {
|
|
1662
|
+
if (values.length === 0) continue;
|
|
1663
|
+
if (values.length === 1) query = query.where(kysely.sql`${col("tags")}->>${key} = ${values[0]}`);
|
|
1664
|
+
else {
|
|
1665
|
+
const valueList = kysely.sql.join(values.map((v) => kysely.sql`${v}`));
|
|
1666
|
+
query = query.where(kysely.sql`${col("tags")}->>${key} IN (${valueList})`);
|
|
1667
|
+
}
|
|
1668
|
+
}
|
|
1669
|
+
return await query.executeTakeFirst();
|
|
1614
1670
|
},
|
|
1615
1671
|
getCostByModel: async (params) => {
|
|
1616
1672
|
const result = await dateRangeSchema.safeParseAsync(params);
|
|
@@ -1676,18 +1732,31 @@ const createLLMRequestsDataLayer = (db) => {
|
|
|
1676
1732
|
getCostSummary: async (params) => {
|
|
1677
1733
|
const result = await costSummarySchema.safeParseAsync(params);
|
|
1678
1734
|
if (!result.success) throw new LLMOpsError(`Invalid parameters: ${result.error.message}`);
|
|
1679
|
-
const { startDate, endDate, groupBy } = result.data;
|
|
1680
|
-
|
|
1735
|
+
const { startDate, endDate, groupBy, configId, variantId, environmentId, tags } = result.data;
|
|
1736
|
+
let baseQuery = db.selectFrom("llm_requests").where(kysely.sql`${col("createdAt")} >= ${startDate.toISOString()}`).where(kysely.sql`${col("createdAt")} <= ${endDate.toISOString()}`);
|
|
1737
|
+
if (configId) baseQuery = baseQuery.where("configId", "=", configId);
|
|
1738
|
+
if (variantId) baseQuery = baseQuery.where("variantId", "=", variantId);
|
|
1739
|
+
if (environmentId) baseQuery = baseQuery.where("environmentId", "=", environmentId);
|
|
1740
|
+
if (tags && Object.keys(tags).length > 0) for (const [key, values] of Object.entries(tags)) {
|
|
1741
|
+
if (values.length === 0) continue;
|
|
1742
|
+
if (values.length === 1) baseQuery = baseQuery.where(kysely.sql`${col("tags")}->>${key} = ${values[0]}`);
|
|
1743
|
+
else {
|
|
1744
|
+
const valueList = kysely.sql.join(values.map((v) => kysely.sql`${v}`));
|
|
1745
|
+
baseQuery = baseQuery.where(kysely.sql`${col("tags")}->>${key} IN (${valueList})`);
|
|
1746
|
+
}
|
|
1747
|
+
}
|
|
1681
1748
|
switch (groupBy) {
|
|
1682
1749
|
case "day": return baseQuery.select([
|
|
1683
1750
|
kysely.sql`DATE(${col("createdAt")})`.as("groupKey"),
|
|
1684
1751
|
kysely.sql`COALESCE(SUM(${col("cost")}), 0)`.as("totalCost"),
|
|
1685
|
-
kysely.sql`COUNT(*)`.as("requestCount")
|
|
1752
|
+
kysely.sql`COUNT(*)`.as("requestCount"),
|
|
1753
|
+
kysely.sql`COALESCE(SUM(${col("totalTokens")}), 0)`.as("totalTokens")
|
|
1686
1754
|
]).groupBy(kysely.sql`DATE(${col("createdAt")})`).orderBy(kysely.sql`DATE(${col("createdAt")})`, "asc").execute();
|
|
1687
1755
|
case "hour": return baseQuery.select([
|
|
1688
1756
|
kysely.sql`DATE_TRUNC('hour', ${col("createdAt")})`.as("groupKey"),
|
|
1689
1757
|
kysely.sql`COALESCE(SUM(${col("cost")}), 0)`.as("totalCost"),
|
|
1690
|
-
kysely.sql`COUNT(*)`.as("requestCount")
|
|
1758
|
+
kysely.sql`COUNT(*)`.as("requestCount"),
|
|
1759
|
+
kysely.sql`COALESCE(SUM(${col("totalTokens")}), 0)`.as("totalTokens")
|
|
1691
1760
|
]).groupBy(kysely.sql`DATE_TRUNC('hour', ${col("createdAt")})`).orderBy(kysely.sql`DATE_TRUNC('hour', ${col("createdAt")})`, "asc").execute();
|
|
1692
1761
|
case "model": return baseQuery.select([
|
|
1693
1762
|
kysely.sql`${col("provider")} || '/' || ${col("model")}`.as("groupKey"),
|
|
@@ -1714,8 +1783,8 @@ const createLLMRequestsDataLayer = (db) => {
|
|
|
1714
1783
|
getRequestStats: async (params) => {
|
|
1715
1784
|
const result = await dateRangeSchema.safeParseAsync(params);
|
|
1716
1785
|
if (!result.success) throw new LLMOpsError(`Invalid parameters: ${result.error.message}`);
|
|
1717
|
-
const { startDate, endDate } = result.data;
|
|
1718
|
-
|
|
1786
|
+
const { startDate, endDate, configId, variantId, environmentId, tags } = result.data;
|
|
1787
|
+
let query = db.selectFrom("llm_requests").select([
|
|
1719
1788
|
kysely.sql`COUNT(*)`.as("totalRequests"),
|
|
1720
1789
|
kysely.sql`COUNT(CASE WHEN ${col("statusCode")} >= 200 AND ${col("statusCode")} < 300 THEN 1 END)`.as("successfulRequests"),
|
|
1721
1790
|
kysely.sql`COUNT(CASE WHEN ${col("statusCode")} >= 400 THEN 1 END)`.as("failedRequests"),
|
|
@@ -1723,7 +1792,27 @@ const createLLMRequestsDataLayer = (db) => {
|
|
|
1723
1792
|
kysely.sql`AVG(${col("latencyMs")})`.as("avgLatencyMs"),
|
|
1724
1793
|
kysely.sql`MAX(${col("latencyMs")})`.as("maxLatencyMs"),
|
|
1725
1794
|
kysely.sql`MIN(${col("latencyMs")})`.as("minLatencyMs")
|
|
1726
|
-
]).where(kysely.sql`${col("createdAt")} >= ${startDate.toISOString()}`).where(kysely.sql`${col("createdAt")} <= ${endDate.toISOString()}`)
|
|
1795
|
+
]).where(kysely.sql`${col("createdAt")} >= ${startDate.toISOString()}`).where(kysely.sql`${col("createdAt")} <= ${endDate.toISOString()}`);
|
|
1796
|
+
if (configId) query = query.where("configId", "=", configId);
|
|
1797
|
+
if (variantId) query = query.where("variantId", "=", variantId);
|
|
1798
|
+
if (environmentId) query = query.where("environmentId", "=", environmentId);
|
|
1799
|
+
if (tags && Object.keys(tags).length > 0) for (const [key, values] of Object.entries(tags)) {
|
|
1800
|
+
if (values.length === 0) continue;
|
|
1801
|
+
if (values.length === 1) query = query.where(kysely.sql`${col("tags")}->>${key} = ${values[0]}`);
|
|
1802
|
+
else {
|
|
1803
|
+
const valueList = kysely.sql.join(values.map((v) => kysely.sql`${v}`));
|
|
1804
|
+
query = query.where(kysely.sql`${col("tags")}->>${key} IN (${valueList})`);
|
|
1805
|
+
}
|
|
1806
|
+
}
|
|
1807
|
+
return await query.executeTakeFirst();
|
|
1808
|
+
},
|
|
1809
|
+
getDistinctTags: async () => {
|
|
1810
|
+
return (await kysely.sql`
|
|
1811
|
+
SELECT DISTINCT key, value
|
|
1812
|
+
FROM llm_requests, jsonb_each_text(tags) AS t(key, value)
|
|
1813
|
+
WHERE tags != '{}'::jsonb
|
|
1814
|
+
ORDER BY key, value
|
|
1815
|
+
`.execute(db)).rows;
|
|
1727
1816
|
}
|
|
1728
1817
|
};
|
|
1729
1818
|
};
|
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as TableName, B as configVariantsSchema, C as EnvironmentSecretsTable, D as LLMRequestsTable, E as LLMRequest, F as VariantVersion, G as schemas, H as environmentSecretsSchema, I as VariantVersionsTable, J as variantsSchema, K as targetingRulesSchema, L as VariantsTable, M as TargetingRulesTable, N as Updateable, O as SCHEMA_METADATA, P as Variant, R as WorkspaceSettings, S as EnvironmentSecret, T as Insertable, U as environmentsSchema, V as configsSchema, W as llmRequestsSchema, Y as workspaceSettingsSchema, _ as ConfigVariant, a as createDatabaseFromConnection, b as Database, c as MigrationResult, d as runAutoMigrations, f as parsePartialTableData, g as Config, h as validateTableData, i as createDatabase, j as TargetingRule, k as Selectable, l as getMigrations, m as validatePartialTableData, n as DatabaseOptions, o as detectDatabaseType, p as parseTableData, q as variantVersionsSchema, r as DatabaseType, s as MigrationOptions, t as DatabaseConnection, u as matchType, v as ConfigVariantsTable, w as EnvironmentsTable, x as Environment, y as ConfigsTable, z as WorkspaceSettingsTable } from "./index-
|
|
1
|
+
import { A as TableName, B as configVariantsSchema, C as EnvironmentSecretsTable, D as LLMRequestsTable, E as LLMRequest, F as VariantVersion, G as schemas, H as environmentSecretsSchema, I as VariantVersionsTable, J as variantsSchema, K as targetingRulesSchema, L as VariantsTable, M as TargetingRulesTable, N as Updateable, O as SCHEMA_METADATA, P as Variant, R as WorkspaceSettings, S as EnvironmentSecret, T as Insertable, U as environmentsSchema, V as configsSchema, W as llmRequestsSchema, Y as workspaceSettingsSchema, _ as ConfigVariant, a as createDatabaseFromConnection, b as Database, c as MigrationResult, d as runAutoMigrations, f as parsePartialTableData, g as Config, h as validateTableData, i as createDatabase, j as TargetingRule, k as Selectable, l as getMigrations, m as validatePartialTableData, n as DatabaseOptions, o as detectDatabaseType, p as parseTableData, q as variantVersionsSchema, r as DatabaseType, s as MigrationOptions, t as DatabaseConnection, u as matchType, v as ConfigVariantsTable, w as EnvironmentsTable, x as Environment, y as ConfigsTable, z as WorkspaceSettingsTable } from "./index-CCfvTBvD.cjs";
|
|
2
2
|
import { Kysely } from "kysely";
|
|
3
3
|
import * as zod0 from "zod";
|
|
4
4
|
import z$1, { z } from "zod";
|
|
@@ -1519,6 +1519,7 @@ declare const insertLLMRequestSchema: z$1.ZodObject<{
|
|
|
1519
1519
|
requestId: z$1.ZodString;
|
|
1520
1520
|
configId: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
|
|
1521
1521
|
variantId: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
|
|
1522
|
+
environmentId: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
|
|
1522
1523
|
provider: z$1.ZodString;
|
|
1523
1524
|
model: z$1.ZodString;
|
|
1524
1525
|
promptTokens: z$1.ZodDefault<z$1.ZodNumber>;
|
|
@@ -1543,17 +1544,24 @@ declare const listRequestsSchema: z$1.ZodObject<{
|
|
|
1543
1544
|
limit: z$1.ZodDefault<z$1.ZodNumber>;
|
|
1544
1545
|
offset: z$1.ZodDefault<z$1.ZodNumber>;
|
|
1545
1546
|
configId: z$1.ZodOptional<z$1.ZodString>;
|
|
1547
|
+
variantId: z$1.ZodOptional<z$1.ZodString>;
|
|
1548
|
+
environmentId: z$1.ZodOptional<z$1.ZodString>;
|
|
1546
1549
|
provider: z$1.ZodOptional<z$1.ZodString>;
|
|
1547
1550
|
model: z$1.ZodOptional<z$1.ZodString>;
|
|
1548
1551
|
startDate: z$1.ZodOptional<z$1.ZodDate>;
|
|
1549
1552
|
endDate: z$1.ZodOptional<z$1.ZodDate>;
|
|
1553
|
+
tags: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodArray<z$1.ZodString>>>;
|
|
1550
1554
|
}, z$1.core.$strip>;
|
|
1551
1555
|
/**
|
|
1552
|
-
* Schema for date range queries
|
|
1556
|
+
* Schema for date range queries with optional filters
|
|
1553
1557
|
*/
|
|
1554
1558
|
declare const dateRangeSchema: z$1.ZodObject<{
|
|
1555
1559
|
startDate: z$1.ZodDate;
|
|
1556
1560
|
endDate: z$1.ZodDate;
|
|
1561
|
+
configId: z$1.ZodOptional<z$1.ZodString>;
|
|
1562
|
+
variantId: z$1.ZodOptional<z$1.ZodString>;
|
|
1563
|
+
environmentId: z$1.ZodOptional<z$1.ZodString>;
|
|
1564
|
+
tags: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodArray<z$1.ZodString>>>;
|
|
1557
1565
|
}, z$1.core.$strip>;
|
|
1558
1566
|
/**
|
|
1559
1567
|
* Schema for cost summary with grouping
|
|
@@ -1561,6 +1569,10 @@ declare const dateRangeSchema: z$1.ZodObject<{
|
|
|
1561
1569
|
declare const costSummarySchema: z$1.ZodObject<{
|
|
1562
1570
|
startDate: z$1.ZodDate;
|
|
1563
1571
|
endDate: z$1.ZodDate;
|
|
1572
|
+
configId: z$1.ZodOptional<z$1.ZodString>;
|
|
1573
|
+
variantId: z$1.ZodOptional<z$1.ZodString>;
|
|
1574
|
+
environmentId: z$1.ZodOptional<z$1.ZodString>;
|
|
1575
|
+
tags: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodArray<z$1.ZodString>>>;
|
|
1564
1576
|
groupBy: z$1.ZodOptional<z$1.ZodEnum<{
|
|
1565
1577
|
provider: "provider";
|
|
1566
1578
|
model: "model";
|
|
@@ -1585,6 +1597,7 @@ declare const createLLMRequestsDataLayer: (db: Kysely<Database>) => {
|
|
|
1585
1597
|
variantId: string | null;
|
|
1586
1598
|
id: string;
|
|
1587
1599
|
provider: string;
|
|
1600
|
+
environmentId: string | null;
|
|
1588
1601
|
requestId: string;
|
|
1589
1602
|
model: string;
|
|
1590
1603
|
promptTokens: number;
|
|
@@ -1613,6 +1626,7 @@ declare const createLLMRequestsDataLayer: (db: Kysely<Database>) => {
|
|
|
1613
1626
|
variantId: string | null;
|
|
1614
1627
|
id: string;
|
|
1615
1628
|
provider: string;
|
|
1629
|
+
environmentId: string | null;
|
|
1616
1630
|
requestId: string;
|
|
1617
1631
|
model: string;
|
|
1618
1632
|
promptTokens: number;
|
|
@@ -1643,6 +1657,7 @@ declare const createLLMRequestsDataLayer: (db: Kysely<Database>) => {
|
|
|
1643
1657
|
variantId: string | null;
|
|
1644
1658
|
id: string;
|
|
1645
1659
|
provider: string;
|
|
1660
|
+
environmentId: string | null;
|
|
1646
1661
|
requestId: string;
|
|
1647
1662
|
model: string;
|
|
1648
1663
|
promptTokens: number;
|
|
@@ -1662,7 +1677,7 @@ declare const createLLMRequestsDataLayer: (db: Kysely<Database>) => {
|
|
|
1662
1677
|
updatedAt: Date;
|
|
1663
1678
|
} | undefined>;
|
|
1664
1679
|
/**
|
|
1665
|
-
* Get total cost for a date range
|
|
1680
|
+
* Get total cost for a date range with optional filters
|
|
1666
1681
|
*/
|
|
1667
1682
|
getTotalCost: (params: z$1.infer<typeof dateRangeSchema>) => Promise<{
|
|
1668
1683
|
totalCost: number;
|
|
@@ -1723,7 +1738,7 @@ declare const createLLMRequestsDataLayer: (db: Kysely<Database>) => {
|
|
|
1723
1738
|
date: string;
|
|
1724
1739
|
}[]>;
|
|
1725
1740
|
/**
|
|
1726
|
-
* Get cost summary with flexible grouping
|
|
1741
|
+
* Get cost summary with flexible grouping and optional filters
|
|
1727
1742
|
*/
|
|
1728
1743
|
getCostSummary: (params: z$1.infer<typeof costSummarySchema>) => Promise<{
|
|
1729
1744
|
totalCost: number;
|
|
@@ -1731,7 +1746,7 @@ declare const createLLMRequestsDataLayer: (db: Kysely<Database>) => {
|
|
|
1731
1746
|
groupKey: string;
|
|
1732
1747
|
}[]>;
|
|
1733
1748
|
/**
|
|
1734
|
-
* Get request count and stats for a time range
|
|
1749
|
+
* Get request count and stats for a time range with optional filters
|
|
1735
1750
|
*/
|
|
1736
1751
|
getRequestStats: (params: z$1.infer<typeof dateRangeSchema>) => Promise<{
|
|
1737
1752
|
avgLatencyMs: number;
|
|
@@ -1742,6 +1757,14 @@ declare const createLLMRequestsDataLayer: (db: Kysely<Database>) => {
|
|
|
1742
1757
|
maxLatencyMs: number;
|
|
1743
1758
|
minLatencyMs: number;
|
|
1744
1759
|
} | undefined>;
|
|
1760
|
+
/**
|
|
1761
|
+
* Get all distinct tag key-value pairs from llm_requests
|
|
1762
|
+
* Used for populating tag filter dropdowns in the UI
|
|
1763
|
+
*/
|
|
1764
|
+
getDistinctTags: () => Promise<{
|
|
1765
|
+
key: string;
|
|
1766
|
+
value: string;
|
|
1767
|
+
}[]>;
|
|
1745
1768
|
};
|
|
1746
1769
|
//#endregion
|
|
1747
1770
|
//#region src/datalayer/index.d.ts
|
|
@@ -2176,6 +2199,7 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
|
|
|
2176
2199
|
variantId: string | null;
|
|
2177
2200
|
id: string;
|
|
2178
2201
|
provider: string;
|
|
2202
|
+
environmentId: string | null;
|
|
2179
2203
|
requestId: string;
|
|
2180
2204
|
model: string;
|
|
2181
2205
|
promptTokens: number;
|
|
@@ -2198,16 +2222,20 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
|
|
|
2198
2222
|
limit: zod0.ZodDefault<zod0.ZodNumber>;
|
|
2199
2223
|
offset: zod0.ZodDefault<zod0.ZodNumber>;
|
|
2200
2224
|
configId: zod0.ZodOptional<zod0.ZodString>;
|
|
2225
|
+
variantId: zod0.ZodOptional<zod0.ZodString>;
|
|
2226
|
+
environmentId: zod0.ZodOptional<zod0.ZodString>;
|
|
2201
2227
|
provider: zod0.ZodOptional<zod0.ZodString>;
|
|
2202
2228
|
model: zod0.ZodOptional<zod0.ZodString>;
|
|
2203
2229
|
startDate: zod0.ZodOptional<zod0.ZodDate>;
|
|
2204
2230
|
endDate: zod0.ZodOptional<zod0.ZodDate>;
|
|
2231
|
+
tags: zod0.ZodOptional<zod0.ZodRecord<zod0.ZodString, zod0.ZodArray<zod0.ZodString>>>;
|
|
2205
2232
|
}, zod_v4_core0.$strip>>) => Promise<{
|
|
2206
2233
|
data: {
|
|
2207
2234
|
configId: string | null;
|
|
2208
2235
|
variantId: string | null;
|
|
2209
2236
|
id: string;
|
|
2210
2237
|
provider: string;
|
|
2238
|
+
environmentId: string | null;
|
|
2211
2239
|
requestId: string;
|
|
2212
2240
|
model: string;
|
|
2213
2241
|
promptTokens: number;
|
|
@@ -2235,6 +2263,7 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
|
|
|
2235
2263
|
variantId: string | null;
|
|
2236
2264
|
id: string;
|
|
2237
2265
|
provider: string;
|
|
2266
|
+
environmentId: string | null;
|
|
2238
2267
|
requestId: string;
|
|
2239
2268
|
model: string;
|
|
2240
2269
|
promptTokens: number;
|
|
@@ -2256,6 +2285,10 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
|
|
|
2256
2285
|
getTotalCost: (params: zod0.infer<zod0.ZodObject<{
|
|
2257
2286
|
startDate: zod0.ZodDate;
|
|
2258
2287
|
endDate: zod0.ZodDate;
|
|
2288
|
+
configId: zod0.ZodOptional<zod0.ZodString>;
|
|
2289
|
+
variantId: zod0.ZodOptional<zod0.ZodString>;
|
|
2290
|
+
environmentId: zod0.ZodOptional<zod0.ZodString>;
|
|
2291
|
+
tags: zod0.ZodOptional<zod0.ZodRecord<zod0.ZodString, zod0.ZodArray<zod0.ZodString>>>;
|
|
2259
2292
|
}, zod_v4_core0.$strip>>) => Promise<{
|
|
2260
2293
|
totalCost: number;
|
|
2261
2294
|
totalInputCost: number;
|
|
@@ -2268,6 +2301,10 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
|
|
|
2268
2301
|
getCostByModel: (params: zod0.infer<zod0.ZodObject<{
|
|
2269
2302
|
startDate: zod0.ZodDate;
|
|
2270
2303
|
endDate: zod0.ZodDate;
|
|
2304
|
+
configId: zod0.ZodOptional<zod0.ZodString>;
|
|
2305
|
+
variantId: zod0.ZodOptional<zod0.ZodString>;
|
|
2306
|
+
environmentId: zod0.ZodOptional<zod0.ZodString>;
|
|
2307
|
+
tags: zod0.ZodOptional<zod0.ZodRecord<zod0.ZodString, zod0.ZodArray<zod0.ZodString>>>;
|
|
2271
2308
|
}, zod_v4_core0.$strip>>) => Promise<{
|
|
2272
2309
|
provider: string;
|
|
2273
2310
|
model: string;
|
|
@@ -2281,6 +2318,10 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
|
|
|
2281
2318
|
getCostByProvider: (params: zod0.infer<zod0.ZodObject<{
|
|
2282
2319
|
startDate: zod0.ZodDate;
|
|
2283
2320
|
endDate: zod0.ZodDate;
|
|
2321
|
+
configId: zod0.ZodOptional<zod0.ZodString>;
|
|
2322
|
+
variantId: zod0.ZodOptional<zod0.ZodString>;
|
|
2323
|
+
environmentId: zod0.ZodOptional<zod0.ZodString>;
|
|
2324
|
+
tags: zod0.ZodOptional<zod0.ZodRecord<zod0.ZodString, zod0.ZodArray<zod0.ZodString>>>;
|
|
2284
2325
|
}, zod_v4_core0.$strip>>) => Promise<{
|
|
2285
2326
|
provider: string;
|
|
2286
2327
|
totalCost: number;
|
|
@@ -2293,6 +2334,10 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
|
|
|
2293
2334
|
getCostByConfig: (params: zod0.infer<zod0.ZodObject<{
|
|
2294
2335
|
startDate: zod0.ZodDate;
|
|
2295
2336
|
endDate: zod0.ZodDate;
|
|
2337
|
+
configId: zod0.ZodOptional<zod0.ZodString>;
|
|
2338
|
+
variantId: zod0.ZodOptional<zod0.ZodString>;
|
|
2339
|
+
environmentId: zod0.ZodOptional<zod0.ZodString>;
|
|
2340
|
+
tags: zod0.ZodOptional<zod0.ZodRecord<zod0.ZodString, zod0.ZodArray<zod0.ZodString>>>;
|
|
2296
2341
|
}, zod_v4_core0.$strip>>) => Promise<{
|
|
2297
2342
|
configId: string | null;
|
|
2298
2343
|
totalCost: number;
|
|
@@ -2306,6 +2351,10 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
|
|
|
2306
2351
|
getDailyCosts: (params: zod0.infer<zod0.ZodObject<{
|
|
2307
2352
|
startDate: zod0.ZodDate;
|
|
2308
2353
|
endDate: zod0.ZodDate;
|
|
2354
|
+
configId: zod0.ZodOptional<zod0.ZodString>;
|
|
2355
|
+
variantId: zod0.ZodOptional<zod0.ZodString>;
|
|
2356
|
+
environmentId: zod0.ZodOptional<zod0.ZodString>;
|
|
2357
|
+
tags: zod0.ZodOptional<zod0.ZodRecord<zod0.ZodString, zod0.ZodArray<zod0.ZodString>>>;
|
|
2309
2358
|
}, zod_v4_core0.$strip>>) => Promise<{
|
|
2310
2359
|
totalCost: number;
|
|
2311
2360
|
totalInputCost: number;
|
|
@@ -2317,6 +2366,10 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
|
|
|
2317
2366
|
getCostSummary: (params: zod0.infer<zod0.ZodObject<{
|
|
2318
2367
|
startDate: zod0.ZodDate;
|
|
2319
2368
|
endDate: zod0.ZodDate;
|
|
2369
|
+
configId: zod0.ZodOptional<zod0.ZodString>;
|
|
2370
|
+
variantId: zod0.ZodOptional<zod0.ZodString>;
|
|
2371
|
+
environmentId: zod0.ZodOptional<zod0.ZodString>;
|
|
2372
|
+
tags: zod0.ZodOptional<zod0.ZodRecord<zod0.ZodString, zod0.ZodArray<zod0.ZodString>>>;
|
|
2320
2373
|
groupBy: zod0.ZodOptional<zod0.ZodEnum<{
|
|
2321
2374
|
provider: "provider";
|
|
2322
2375
|
model: "model";
|
|
@@ -2332,6 +2385,10 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
|
|
|
2332
2385
|
getRequestStats: (params: zod0.infer<zod0.ZodObject<{
|
|
2333
2386
|
startDate: zod0.ZodDate;
|
|
2334
2387
|
endDate: zod0.ZodDate;
|
|
2388
|
+
configId: zod0.ZodOptional<zod0.ZodString>;
|
|
2389
|
+
variantId: zod0.ZodOptional<zod0.ZodString>;
|
|
2390
|
+
environmentId: zod0.ZodOptional<zod0.ZodString>;
|
|
2391
|
+
tags: zod0.ZodOptional<zod0.ZodRecord<zod0.ZodString, zod0.ZodArray<zod0.ZodString>>>;
|
|
2335
2392
|
}, zod_v4_core0.$strip>>) => Promise<{
|
|
2336
2393
|
avgLatencyMs: number;
|
|
2337
2394
|
totalRequests: number;
|
|
@@ -2341,6 +2398,10 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
|
|
|
2341
2398
|
maxLatencyMs: number;
|
|
2342
2399
|
minLatencyMs: number;
|
|
2343
2400
|
} | undefined>;
|
|
2401
|
+
getDistinctTags: () => Promise<{
|
|
2402
|
+
key: string;
|
|
2403
|
+
value: string;
|
|
2404
|
+
}[]>;
|
|
2344
2405
|
createEnvironmentSecret: (params: zod0.infer<zod0.ZodObject<{
|
|
2345
2406
|
environmentId: zod0.ZodUUID;
|
|
2346
2407
|
keyName: zod0.ZodString;
|
|
@@ -2636,6 +2697,7 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
|
|
|
2636
2697
|
}, zod_v4_core0.$strip>>) => Promise<{
|
|
2637
2698
|
configId: string;
|
|
2638
2699
|
variantId: string;
|
|
2700
|
+
environmentId: string;
|
|
2639
2701
|
version: number;
|
|
2640
2702
|
provider: string;
|
|
2641
2703
|
modelName: string;
|