@llmops/core 0.2.13 → 0.2.14

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/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as variantsSchema, A as ProviderConfig, B as VariantVersionsTable, C as Environment, D as Insertable, E as EnvironmentsTable, F as TargetingRule, G as configsSchema, H as WorkspaceSettings, I as TargetingRulesTable, J as llmRequestsSchema, K as environmentSecretsSchema, L as Updateable, M as SCHEMA_METADATA, N as Selectable, O as LLMRequest, P as TableName, Q as variantVersionsSchema, R as Variant, S as Database, T as EnvironmentSecretsTable, U as WorkspaceSettingsTable, V as VariantsTable, W as configVariantsSchema, X as schemas, Y as providerConfigsSchema, Z as targetingRulesSchema, _ as validateTableData, a as createDatabaseFromConnection, b as ConfigVariantsTable, c as executeWithSchema, d as getMigrations, et as workspaceSettingsSchema, f as matchType, g as validatePartialTableData, h as parseTableData, i as createDatabase, j as ProviderConfigsTable, k as LLMRequestsTable, l as MigrationOptions, m as parsePartialTableData, n as DatabaseOptions, o as detectDatabaseType, p as runAutoMigrations, q as environmentsSchema, r as DatabaseType, s as createNeonDialect, t as DatabaseConnection, u as MigrationResult, v as Config, w as EnvironmentSecret, x as ConfigsTable, y as ConfigVariant, z as VariantVersion } from "./index-BO5Rse5J.mjs";
1
+ import { $ as variantsSchema, A as ProviderConfig, B as VariantVersionsTable, C as Environment, D as Insertable, E as EnvironmentsTable, F as TargetingRule, G as configsSchema, H as WorkspaceSettings, I as TargetingRulesTable, J as llmRequestsSchema, K as environmentSecretsSchema, L as Updateable, M as SCHEMA_METADATA, N as Selectable, O as LLMRequest, P as TableName, Q as variantVersionsSchema, R as Variant, S as Database, T as EnvironmentSecretsTable, U as WorkspaceSettingsTable, V as VariantsTable, W as configVariantsSchema, X as schemas, Y as providerConfigsSchema, Z as targetingRulesSchema, _ as validateTableData, a as createDatabaseFromConnection, b as ConfigVariantsTable, c as executeWithSchema, d as getMigrations, et as workspaceSettingsSchema, f as matchType, g as validatePartialTableData, h as parseTableData, i as createDatabase, j as ProviderConfigsTable, k as LLMRequestsTable, l as MigrationOptions, m as parsePartialTableData, n as DatabaseOptions, o as detectDatabaseType, p as runAutoMigrations, q as environmentsSchema, r as DatabaseType, s as createNeonDialect, t as DatabaseConnection, u as MigrationResult, v as Config, w as EnvironmentSecret, x as ConfigsTable, y as ConfigVariant, z as VariantVersion } from "./index-COkIT6TH.mjs";
2
2
  import gateway from "@llmops/gateway";
3
3
  import { Kysely } from "kysely";
4
4
  import pino from "pino";
@@ -1374,12 +1374,14 @@ declare const createWorkspaceSettingsDataLayer: (db: Kysely<Database>) => {
1374
1374
  //#region src/datalayer/providerConfigs.d.ts
1375
1375
  declare const createProviderConfig: z$1.ZodObject<{
1376
1376
  providerId: z$1.ZodString;
1377
+ slug: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
1377
1378
  name: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
1378
1379
  config: z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>;
1379
1380
  enabled: z$1.ZodDefault<z$1.ZodOptional<z$1.ZodBoolean>>;
1380
1381
  }, z$1.core.$strip>;
1381
1382
  declare const updateProviderConfig: z$1.ZodObject<{
1382
1383
  id: z$1.ZodUUID;
1384
+ slug: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
1383
1385
  name: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
1384
1386
  config: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>>;
1385
1387
  enabled: z$1.ZodOptional<z$1.ZodBoolean>;
@@ -1399,6 +1401,7 @@ declare const listProviderConfigs: z$1.ZodObject<{
1399
1401
  }, z$1.core.$strip>;
1400
1402
  declare const createProviderConfigsDataLayer: (db: Kysely<Database>) => {
1401
1403
  createProviderConfig: (params: z$1.infer<typeof createProviderConfig>) => Promise<{
1404
+ slug: string | null;
1402
1405
  name: string | null;
1403
1406
  id: string;
1404
1407
  createdAt: Date;
@@ -1408,6 +1411,7 @@ declare const createProviderConfigsDataLayer: (db: Kysely<Database>) => {
1408
1411
  config: Record<string, unknown>;
1409
1412
  } | undefined>;
1410
1413
  updateProviderConfig: (params: z$1.infer<typeof updateProviderConfig>) => Promise<{
1414
+ slug: string | null;
1411
1415
  name: string | null;
1412
1416
  id: string;
1413
1417
  createdAt: Date;
@@ -1417,6 +1421,7 @@ declare const createProviderConfigsDataLayer: (db: Kysely<Database>) => {
1417
1421
  config: Record<string, unknown>;
1418
1422
  } | undefined>;
1419
1423
  getProviderConfigById: (params: z$1.infer<typeof getProviderConfigById>) => Promise<{
1424
+ slug: string | null;
1420
1425
  name: string | null;
1421
1426
  id: string;
1422
1427
  createdAt: Date;
@@ -1426,6 +1431,7 @@ declare const createProviderConfigsDataLayer: (db: Kysely<Database>) => {
1426
1431
  config: Record<string, unknown>;
1427
1432
  } | undefined>;
1428
1433
  getProviderConfigByProviderId: (params: z$1.infer<typeof getProviderConfigByProviderId>) => Promise<{
1434
+ slug: string | null;
1429
1435
  name: string | null;
1430
1436
  id: string;
1431
1437
  createdAt: Date;
@@ -1435,6 +1441,7 @@ declare const createProviderConfigsDataLayer: (db: Kysely<Database>) => {
1435
1441
  config: Record<string, unknown>;
1436
1442
  } | undefined>;
1437
1443
  deleteProviderConfig: (params: z$1.infer<typeof deleteProviderConfig>) => Promise<{
1444
+ slug: string | null;
1438
1445
  name: string | null;
1439
1446
  id: string;
1440
1447
  createdAt: Date;
@@ -1444,6 +1451,7 @@ declare const createProviderConfigsDataLayer: (db: Kysely<Database>) => {
1444
1451
  config: Record<string, unknown>;
1445
1452
  } | undefined>;
1446
1453
  listProviderConfigs: (params?: z$1.infer<typeof listProviderConfigs>) => Promise<{
1454
+ slug: string | null;
1447
1455
  name: string | null;
1448
1456
  id: string;
1449
1457
  createdAt: Date;
@@ -1458,6 +1466,7 @@ declare const createProviderConfigsDataLayer: (db: Kysely<Database>) => {
1458
1466
  * Useful for the dashboard UI where you want to set/update a provider config
1459
1467
  */
1460
1468
  upsertProviderConfig: (params: z$1.infer<typeof createProviderConfig>) => Promise<{
1469
+ slug: string | null;
1461
1470
  name: string | null;
1462
1471
  id: string;
1463
1472
  createdAt: Date;
@@ -1911,10 +1920,12 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
1911
1920
  } | undefined>;
1912
1921
  createProviderConfig: (params: zod33.infer<zod33.ZodObject<{
1913
1922
  providerId: zod33.ZodString;
1923
+ slug: zod33.ZodOptional<zod33.ZodNullable<zod33.ZodString>>;
1914
1924
  name: zod33.ZodOptional<zod33.ZodNullable<zod33.ZodString>>;
1915
1925
  config: zod33.ZodRecord<zod33.ZodString, zod33.ZodUnknown>;
1916
1926
  enabled: zod33.ZodDefault<zod33.ZodOptional<zod33.ZodBoolean>>;
1917
1927
  }, better_auth0.$strip>>) => Promise<{
1928
+ slug: string | null;
1918
1929
  name: string | null;
1919
1930
  id: string;
1920
1931
  createdAt: Date;
@@ -1925,10 +1936,12 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
1925
1936
  } | undefined>;
1926
1937
  updateProviderConfig: (params: zod33.infer<zod33.ZodObject<{
1927
1938
  id: zod33.ZodUUID;
1939
+ slug: zod33.ZodOptional<zod33.ZodNullable<zod33.ZodString>>;
1928
1940
  name: zod33.ZodOptional<zod33.ZodNullable<zod33.ZodString>>;
1929
1941
  config: zod33.ZodOptional<zod33.ZodRecord<zod33.ZodString, zod33.ZodUnknown>>;
1930
1942
  enabled: zod33.ZodOptional<zod33.ZodBoolean>;
1931
1943
  }, better_auth0.$strip>>) => Promise<{
1944
+ slug: string | null;
1932
1945
  name: string | null;
1933
1946
  id: string;
1934
1947
  createdAt: Date;
@@ -1940,6 +1953,7 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
1940
1953
  getProviderConfigById: (params: zod33.infer<zod33.ZodObject<{
1941
1954
  id: zod33.ZodUUID;
1942
1955
  }, better_auth0.$strip>>) => Promise<{
1956
+ slug: string | null;
1943
1957
  name: string | null;
1944
1958
  id: string;
1945
1959
  createdAt: Date;
@@ -1951,6 +1965,7 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
1951
1965
  getProviderConfigByProviderId: (params: zod33.infer<zod33.ZodObject<{
1952
1966
  providerId: zod33.ZodString;
1953
1967
  }, better_auth0.$strip>>) => Promise<{
1968
+ slug: string | null;
1954
1969
  name: string | null;
1955
1970
  id: string;
1956
1971
  createdAt: Date;
@@ -1962,6 +1977,7 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
1962
1977
  deleteProviderConfig: (params: zod33.infer<zod33.ZodObject<{
1963
1978
  id: zod33.ZodUUID;
1964
1979
  }, better_auth0.$strip>>) => Promise<{
1980
+ slug: string | null;
1965
1981
  name: string | null;
1966
1982
  id: string;
1967
1983
  createdAt: Date;
@@ -1974,6 +1990,7 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
1974
1990
  limit: zod33.ZodOptional<zod33.ZodNumber>;
1975
1991
  offset: zod33.ZodOptional<zod33.ZodNumber>;
1976
1992
  }, better_auth0.$strip>>) => Promise<{
1993
+ slug: string | null;
1977
1994
  name: string | null;
1978
1995
  id: string;
1979
1996
  createdAt: Date;
@@ -1985,10 +2002,12 @@ declare const createDataLayer: (db: Kysely<Database>) => Promise<{
1985
2002
  countProviderConfigs: () => Promise<number>;
1986
2003
  upsertProviderConfig: (params: zod33.infer<zod33.ZodObject<{
1987
2004
  providerId: zod33.ZodString;
2005
+ slug: zod33.ZodOptional<zod33.ZodNullable<zod33.ZodString>>;
1988
2006
  name: zod33.ZodOptional<zod33.ZodNullable<zod33.ZodString>>;
1989
2007
  config: zod33.ZodRecord<zod33.ZodString, zod33.ZodUnknown>;
1990
2008
  enabled: zod33.ZodDefault<zod33.ZodOptional<zod33.ZodBoolean>>;
1991
2009
  }, better_auth0.$strip>>) => Promise<{
2010
+ slug: string | null;
1992
2011
  name: string | null;
1993
2012
  id: string;
1994
2013
  createdAt: Date;
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { A as literal, C as variantsSchema, D as any, E as _enum, F as union, I as unknown, M as object, N as record, O as array, P as string, S as variantVersionsSchema, T as zod_default, _ as environmentsSchema, a as matchType, b as schemas, c as logger, d as validatePartialTableData, f as validateTableData, g as environmentSecretsSchema, h as configsSchema, i as getMigrations, j as number, k as boolean, l as parsePartialTableData, m as configVariantsSchema, n as createDatabaseFromConnection, o as runAutoMigrations, p as SCHEMA_METADATA, r as detectDatabaseType, s as getAuthClientOptions, t as createDatabase, u as parseTableData, v as llmRequestsSchema, w as workspaceSettingsSchema, x as targetingRulesSchema, y as providerConfigsSchema } from "./db-DohlAqJU.mjs";
1
+ import { A as literal, C as variantsSchema, D as any, E as _enum, F as union, I as unknown, M as object, N as record, O as array, P as string, S as variantVersionsSchema, T as zod_default, _ as environmentsSchema, a as matchType, b as schemas, c as logger, d as validatePartialTableData, f as validateTableData, g as environmentSecretsSchema, h as configsSchema, i as getMigrations, j as number, k as boolean, l as parsePartialTableData, m as configVariantsSchema, n as createDatabaseFromConnection, o as runAutoMigrations, p as SCHEMA_METADATA, r as detectDatabaseType, s as getAuthClientOptions, t as createDatabase, u as parseTableData, v as llmRequestsSchema, w as workspaceSettingsSchema, x as targetingRulesSchema, y as providerConfigsSchema } from "./db-B-EsQtOz.mjs";
2
2
  import { n as executeWithSchema, t as createNeonDialect } from "./neon-dialect-DySGBYUi.mjs";
3
3
  import gateway from "@llmops/gateway";
4
4
  import { sql } from "kysely";
@@ -1795,14 +1795,33 @@ const createLLMRequestsDataLayer = (db) => {
1795
1795
 
1796
1796
  //#endregion
1797
1797
  //#region src/datalayer/providerConfigs.ts
1798
+ /**
1799
+ * Generate a unique slug for a provider config.
1800
+ * If the base slug already exists, appends -01, -02, etc.
1801
+ */
1802
+ async function generateUniqueSlug(db, baseSlug) {
1803
+ const existing = await db.selectFrom("provider_configs").select("slug").where("slug", "like", `${baseSlug}%`).execute();
1804
+ if (existing.length === 0) return baseSlug;
1805
+ const existingSlugs = new Set(existing.map((e) => e.slug));
1806
+ if (!existingSlugs.has(baseSlug)) return baseSlug;
1807
+ let counter = 1;
1808
+ while (counter < 100) {
1809
+ const candidateSlug = `${baseSlug}-${counter.toString().padStart(2, "0")}`;
1810
+ if (!existingSlugs.has(candidateSlug)) return candidateSlug;
1811
+ counter++;
1812
+ }
1813
+ return `${baseSlug}-${randomUUID().slice(0, 8)}`;
1814
+ }
1798
1815
  const createProviderConfig = zod_default.object({
1799
1816
  providerId: zod_default.string().min(1),
1817
+ slug: zod_default.string().nullable().optional(),
1800
1818
  name: zod_default.string().nullable().optional(),
1801
1819
  config: zod_default.record(zod_default.string(), zod_default.unknown()),
1802
1820
  enabled: zod_default.boolean().optional().default(true)
1803
1821
  });
1804
1822
  const updateProviderConfig = zod_default.object({
1805
1823
  id: zod_default.uuidv4(),
1824
+ slug: zod_default.string().nullable().optional(),
1806
1825
  name: zod_default.string().nullable().optional(),
1807
1826
  config: zod_default.record(zod_default.string(), zod_default.unknown()).optional(),
1808
1827
  enabled: zod_default.boolean().optional()
@@ -1819,10 +1838,12 @@ const createProviderConfigsDataLayer = (db) => {
1819
1838
  createProviderConfig: async (params) => {
1820
1839
  const value = await createProviderConfig.safeParseAsync(params);
1821
1840
  if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
1822
- const { providerId, name, config, enabled } = value.data;
1841
+ const { providerId, slug, name, config, enabled } = value.data;
1842
+ const finalSlug = slug ?? await generateUniqueSlug(db, providerId);
1823
1843
  return db.insertInto("provider_configs").values({
1824
1844
  id: randomUUID(),
1825
1845
  providerId,
1846
+ slug: finalSlug,
1826
1847
  name: name ?? null,
1827
1848
  config: JSON.stringify(config),
1828
1849
  enabled,
@@ -1833,8 +1854,9 @@ const createProviderConfigsDataLayer = (db) => {
1833
1854
  updateProviderConfig: async (params) => {
1834
1855
  const value = await updateProviderConfig.safeParseAsync(params);
1835
1856
  if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
1836
- const { id, name, config, enabled } = value.data;
1857
+ const { id, slug, name, config, enabled } = value.data;
1837
1858
  const updateData = { updatedAt: (/* @__PURE__ */ new Date()).toISOString() };
1859
+ if (slug !== void 0) updateData.slug = slug;
1838
1860
  if (name !== void 0) updateData.name = name;
1839
1861
  if (config !== void 0) updateData.config = JSON.stringify(config);
1840
1862
  if (enabled !== void 0) updateData.enabled = enabled;
@@ -1871,17 +1893,23 @@ const createProviderConfigsDataLayer = (db) => {
1871
1893
  upsertProviderConfig: async (params) => {
1872
1894
  const value = await createProviderConfig.safeParseAsync(params);
1873
1895
  if (!value.success) throw new LLMOpsError(`Invalid parameters: ${value.error.message}`);
1874
- const { providerId, name, config, enabled } = value.data;
1896
+ const { providerId, slug, name, config, enabled } = value.data;
1875
1897
  const existing = await db.selectFrom("provider_configs").selectAll().where("providerId", "=", providerId).executeTakeFirst();
1876
- if (existing) return db.updateTable("provider_configs").set({
1877
- name: name ?? existing.name,
1878
- config: JSON.stringify(config),
1879
- enabled,
1880
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
1881
- }).where("id", "=", existing.id).returningAll().executeTakeFirst();
1898
+ if (existing) {
1899
+ const finalSlug$1 = slug ?? existing.slug ?? await generateUniqueSlug(db, providerId);
1900
+ return db.updateTable("provider_configs").set({
1901
+ slug: finalSlug$1,
1902
+ name: name ?? existing.name,
1903
+ config: JSON.stringify(config),
1904
+ enabled,
1905
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
1906
+ }).where("id", "=", existing.id).returningAll().executeTakeFirst();
1907
+ }
1908
+ const finalSlug = slug ?? await generateUniqueSlug(db, providerId);
1882
1909
  return db.insertInto("provider_configs").values({
1883
1910
  id: randomUUID(),
1884
1911
  providerId,
1912
+ slug: finalSlug,
1885
1913
  name: name ?? null,
1886
1914
  config: JSON.stringify(config),
1887
1915
  enabled,
@@ -1,3 +1,3 @@
1
- const require_neon_dialect = require('./neon-dialect-BQey5lUw.cjs');
1
+ const require_neon_dialect = require('./neon-dialect-BR1nZmKX.cjs');
2
2
 
3
3
  exports.createNeonDialect = require_neon_dialect.createNeonDialect;
@@ -1,4 +1,4 @@
1
- const require_db = require('./db-BOe6mM51.cjs');
1
+ const require_db = require('./db-Du2xmkGS.cjs');
2
2
  let kysely_neon = require("kysely-neon");
3
3
  require("@neondatabase/serverless");
4
4
 
@@ -1,4 +1,4 @@
1
- const require_db = require('./db-BOe6mM51.cjs');
1
+ const require_db = require('./db-Du2xmkGS.cjs');
2
2
  let kysely = require("kysely");
3
3
 
4
4
  //#region src/db/node-sqlite-dialect.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llmops/core",
3
- "version": "0.2.13",
3
+ "version": "0.2.14",
4
4
  "description": "Core LLMOps functionality and utilities",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -54,7 +54,7 @@
54
54
  "kysely": "^0.28.8",
55
55
  "kysely-neon": "^2.0.2",
56
56
  "pino": "^10.1.0",
57
- "@llmops/gateway": "^0.2.13"
57
+ "@llmops/gateway": "^0.2.14"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@types/ws": "^8.18.1"