@llmops/core 0.5.0-beta.3 → 0.5.0

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.
@@ -1,4 +1,4 @@
1
- const require_db = require('./db-B6s2Fj5e.cjs');
1
+ const require_db = require('./db-B9jJgYNw.cjs');
2
2
  let kysely = require("kysely");
3
3
 
4
4
  //#region src/db/bun-sqlite-dialect.ts
package/dist/db/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- const require_db = require('../db-B6s2Fj5e.cjs');
2
- const require_neon_dialect = require('../neon-dialect-fjqFddrY.cjs');
1
+ const require_db = require('../db-B9jJgYNw.cjs');
2
+ const require_neon_dialect = require('../neon-dialect-BBWePgOv.cjs');
3
3
 
4
4
  exports.SCHEMA_METADATA = require_db.SCHEMA_METADATA;
5
5
  exports.configVariantsSchema = require_db.configVariantsSchema;
@@ -1,2 +1,2 @@
1
- import { $ as SCHEMA_METADATA, A as DatasetsTable, At as variantsSchema, B as LLMRequest, C as Dataset, Ct as playgroundRunsSchema, D as DatasetVersionRecord, Dt as schemas, E as DatasetVersion, Et as providerGuardrailOverridesSchema, F as GuardrailConfig, G as PlaygroundResultsTable, H as Playground, I as GuardrailConfigsTable, J as PlaygroundsTable, K as PlaygroundRun, L as GuardrailResult, M as EnvironmentSecret, N as EnvironmentSecretsTable, O as DatasetVersionRecordsTable, Ot as targetingRulesSchema, P as EnvironmentsTable, Q as ProviderGuardrailOverridesTable, R as GuardrailResults, S as Database, St as playgroundResultsSchema, T as DatasetRecordsTable, Tt as providerConfigsSchema, U as PlaygroundColumn, V as LLMRequestsTable, W as PlaygroundResult, X as ProviderConfigsTable, Y as ProviderConfig, Z as ProviderGuardrailOverride, _ as validateTableData, _t as environmentSecretsSchema, a as createDatabaseFromConnection, at as Variant, b as ConfigVariantsTable, bt as llmRequestsSchema, c as executeWithSchema, ct as VariantsTable, d as getMigrations, dt as configVariantsSchema, et as Selectable, f as matchType, ft as configsSchema, g as validatePartialTableData, gt as datasetsSchema, h as parseTableData, ht as datasetVersionsSchema, i as createDatabase, it as Updateable, j as Environment, jt as workspaceSettingsSchema, k as DatasetVersionsTable, kt as variantVersionsSchema, l as MigrationOptions, lt as WorkspaceSettings, m as parsePartialTableData, mt as datasetVersionRecordsSchema, n as DatabaseOptions, nt as TargetingRule, o as detectDatabaseType, ot as VariantVersion, p as runAutoMigrations, pt as datasetRecordsSchema, q as PlaygroundRunsTable, r as DatabaseType, rt as TargetingRulesTable, s as createNeonDialect, st as VariantVersionsTable, t as DatabaseConnection, tt as TableName, u as MigrationResult, ut as WorkspaceSettingsTable, v as Config, vt as environmentsSchema, w as DatasetRecord, wt as playgroundsSchema, x as ConfigsTable, xt as playgroundColumnSchema, y as ConfigVariant, yt as guardrailConfigsSchema, z as Insertable } from "../index-BtZBaB4H.cjs";
1
+ import { $ as SCHEMA_METADATA, A as DatasetsTable, At as variantsSchema, B as LLMRequest, C as Dataset, Ct as playgroundRunsSchema, D as DatasetVersionRecord, Dt as schemas, E as DatasetVersion, Et as providerGuardrailOverridesSchema, F as GuardrailConfig, G as PlaygroundResultsTable, H as Playground, I as GuardrailConfigsTable, J as PlaygroundsTable, K as PlaygroundRun, L as GuardrailResult, M as EnvironmentSecret, N as EnvironmentSecretsTable, O as DatasetVersionRecordsTable, Ot as targetingRulesSchema, P as EnvironmentsTable, Q as ProviderGuardrailOverridesTable, R as GuardrailResults, S as Database, St as playgroundResultsSchema, T as DatasetRecordsTable, Tt as providerConfigsSchema, U as PlaygroundColumn, V as LLMRequestsTable, W as PlaygroundResult, X as ProviderConfigsTable, Y as ProviderConfig, Z as ProviderGuardrailOverride, _ as validateTableData, _t as environmentSecretsSchema, a as createDatabaseFromConnection, at as Variant, b as ConfigVariantsTable, bt as llmRequestsSchema, c as executeWithSchema, ct as VariantsTable, d as getMigrations, dt as configVariantsSchema, et as Selectable, f as matchType, ft as configsSchema, g as validatePartialTableData, gt as datasetsSchema, h as parseTableData, ht as datasetVersionsSchema, i as createDatabase, it as Updateable, j as Environment, jt as workspaceSettingsSchema, k as DatasetVersionsTable, kt as variantVersionsSchema, l as MigrationOptions, lt as WorkspaceSettings, m as parsePartialTableData, mt as datasetVersionRecordsSchema, n as DatabaseOptions, nt as TargetingRule, o as detectDatabaseType, ot as VariantVersion, p as runAutoMigrations, pt as datasetRecordsSchema, q as PlaygroundRunsTable, r as DatabaseType, rt as TargetingRulesTable, s as createNeonDialect, st as VariantVersionsTable, t as DatabaseConnection, tt as TableName, u as MigrationResult, ut as WorkspaceSettingsTable, v as Config, vt as environmentsSchema, w as DatasetRecord, wt as playgroundsSchema, x as ConfigsTable, xt as playgroundColumnSchema, y as ConfigVariant, yt as guardrailConfigsSchema, z as Insertable } from "../index-BtSgIKup.cjs";
2
2
  export { Config, ConfigVariant, ConfigVariantsTable, ConfigsTable, Database, DatabaseConnection, DatabaseOptions, DatabaseType, Dataset, DatasetRecord, DatasetRecordsTable, DatasetVersion, DatasetVersionRecord, DatasetVersionRecordsTable, DatasetVersionsTable, DatasetsTable, Environment, EnvironmentSecret, EnvironmentSecretsTable, EnvironmentsTable, GuardrailConfig, GuardrailConfigsTable, GuardrailResult, GuardrailResults, Insertable, LLMRequest, LLMRequestsTable, MigrationOptions, MigrationResult, Playground, PlaygroundColumn, PlaygroundResult, PlaygroundResultsTable, PlaygroundRun, PlaygroundRunsTable, PlaygroundsTable, ProviderConfig, ProviderConfigsTable, ProviderGuardrailOverride, ProviderGuardrailOverridesTable, SCHEMA_METADATA, Selectable, TableName, TargetingRule, TargetingRulesTable, Updateable, Variant, VariantVersion, VariantVersionsTable, VariantsTable, WorkspaceSettings, WorkspaceSettingsTable, configVariantsSchema, configsSchema, createDatabase, createDatabaseFromConnection, createNeonDialect, datasetRecordsSchema, datasetVersionRecordsSchema, datasetVersionsSchema, datasetsSchema, detectDatabaseType, environmentSecretsSchema, environmentsSchema, executeWithSchema, getMigrations, guardrailConfigsSchema, llmRequestsSchema, matchType, parsePartialTableData, parseTableData, playgroundColumnSchema, playgroundResultsSchema, playgroundRunsSchema, playgroundsSchema, providerConfigsSchema, providerGuardrailOverridesSchema, runAutoMigrations, schemas, targetingRulesSchema, validatePartialTableData, validateTableData, variantVersionsSchema, variantsSchema, workspaceSettingsSchema };
@@ -1,2 +1,2 @@
1
- import { $ as SCHEMA_METADATA, A as DatasetsTable, At as variantsSchema, B as LLMRequest, C as Dataset, Ct as playgroundRunsSchema, D as DatasetVersionRecord, Dt as schemas, E as DatasetVersion, Et as providerGuardrailOverridesSchema, F as GuardrailConfig, G as PlaygroundResultsTable, H as Playground, I as GuardrailConfigsTable, J as PlaygroundsTable, K as PlaygroundRun, L as GuardrailResult, M as EnvironmentSecret, N as EnvironmentSecretsTable, O as DatasetVersionRecordsTable, Ot as targetingRulesSchema, P as EnvironmentsTable, Q as ProviderGuardrailOverridesTable, R as GuardrailResults, S as Database, St as playgroundResultsSchema, T as DatasetRecordsTable, Tt as providerConfigsSchema, U as PlaygroundColumn, V as LLMRequestsTable, W as PlaygroundResult, X as ProviderConfigsTable, Y as ProviderConfig, Z as ProviderGuardrailOverride, _ as validateTableData, _t as environmentSecretsSchema, a as createDatabaseFromConnection, at as Variant, b as ConfigVariantsTable, bt as llmRequestsSchema, c as executeWithSchema, ct as VariantsTable, d as getMigrations, dt as configVariantsSchema, et as Selectable, f as matchType, ft as configsSchema, g as validatePartialTableData, gt as datasetsSchema, h as parseTableData, ht as datasetVersionsSchema, i as createDatabase, it as Updateable, j as Environment, jt as workspaceSettingsSchema, k as DatasetVersionsTable, kt as variantVersionsSchema, l as MigrationOptions, lt as WorkspaceSettings, m as parsePartialTableData, mt as datasetVersionRecordsSchema, n as DatabaseOptions, nt as TargetingRule, o as detectDatabaseType, ot as VariantVersion, p as runAutoMigrations, pt as datasetRecordsSchema, q as PlaygroundRunsTable, r as DatabaseType, rt as TargetingRulesTable, s as createNeonDialect, st as VariantVersionsTable, t as DatabaseConnection, tt as TableName, u as MigrationResult, ut as WorkspaceSettingsTable, v as Config, vt as environmentsSchema, w as DatasetRecord, wt as playgroundsSchema, x as ConfigsTable, xt as playgroundColumnSchema, y as ConfigVariant, yt as guardrailConfigsSchema, z as Insertable } from "../index-DkZvY6Q3.mjs";
1
+ import { $ as SCHEMA_METADATA, A as DatasetsTable, At as variantsSchema, B as LLMRequest, C as Dataset, Ct as playgroundRunsSchema, D as DatasetVersionRecord, Dt as schemas, E as DatasetVersion, Et as providerGuardrailOverridesSchema, F as GuardrailConfig, G as PlaygroundResultsTable, H as Playground, I as GuardrailConfigsTable, J as PlaygroundsTable, K as PlaygroundRun, L as GuardrailResult, M as EnvironmentSecret, N as EnvironmentSecretsTable, O as DatasetVersionRecordsTable, Ot as targetingRulesSchema, P as EnvironmentsTable, Q as ProviderGuardrailOverridesTable, R as GuardrailResults, S as Database, St as playgroundResultsSchema, T as DatasetRecordsTable, Tt as providerConfigsSchema, U as PlaygroundColumn, V as LLMRequestsTable, W as PlaygroundResult, X as ProviderConfigsTable, Y as ProviderConfig, Z as ProviderGuardrailOverride, _ as validateTableData, _t as environmentSecretsSchema, a as createDatabaseFromConnection, at as Variant, b as ConfigVariantsTable, bt as llmRequestsSchema, c as executeWithSchema, ct as VariantsTable, d as getMigrations, dt as configVariantsSchema, et as Selectable, f as matchType, ft as configsSchema, g as validatePartialTableData, gt as datasetsSchema, h as parseTableData, ht as datasetVersionsSchema, i as createDatabase, it as Updateable, j as Environment, jt as workspaceSettingsSchema, k as DatasetVersionsTable, kt as variantVersionsSchema, l as MigrationOptions, lt as WorkspaceSettings, m as parsePartialTableData, mt as datasetVersionRecordsSchema, n as DatabaseOptions, nt as TargetingRule, o as detectDatabaseType, ot as VariantVersion, p as runAutoMigrations, pt as datasetRecordsSchema, q as PlaygroundRunsTable, r as DatabaseType, rt as TargetingRulesTable, s as createNeonDialect, st as VariantVersionsTable, t as DatabaseConnection, tt as TableName, u as MigrationResult, ut as WorkspaceSettingsTable, v as Config, vt as environmentsSchema, w as DatasetRecord, wt as playgroundsSchema, x as ConfigsTable, xt as playgroundColumnSchema, y as ConfigVariant, yt as guardrailConfigsSchema, z as Insertable } from "../index-LRmy4sz9.mjs";
2
2
  export { Config, ConfigVariant, ConfigVariantsTable, ConfigsTable, Database, DatabaseConnection, DatabaseOptions, DatabaseType, Dataset, DatasetRecord, DatasetRecordsTable, DatasetVersion, DatasetVersionRecord, DatasetVersionRecordsTable, DatasetVersionsTable, DatasetsTable, Environment, EnvironmentSecret, EnvironmentSecretsTable, EnvironmentsTable, GuardrailConfig, GuardrailConfigsTable, GuardrailResult, GuardrailResults, Insertable, LLMRequest, LLMRequestsTable, MigrationOptions, MigrationResult, Playground, PlaygroundColumn, PlaygroundResult, PlaygroundResultsTable, PlaygroundRun, PlaygroundRunsTable, PlaygroundsTable, ProviderConfig, ProviderConfigsTable, ProviderGuardrailOverride, ProviderGuardrailOverridesTable, SCHEMA_METADATA, Selectable, TableName, TargetingRule, TargetingRulesTable, Updateable, Variant, VariantVersion, VariantVersionsTable, VariantsTable, WorkspaceSettings, WorkspaceSettingsTable, configVariantsSchema, configsSchema, createDatabase, createDatabaseFromConnection, createNeonDialect, datasetRecordsSchema, datasetVersionRecordsSchema, datasetVersionsSchema, datasetsSchema, detectDatabaseType, environmentSecretsSchema, environmentsSchema, executeWithSchema, getMigrations, guardrailConfigsSchema, llmRequestsSchema, matchType, parsePartialTableData, parseTableData, playgroundColumnSchema, playgroundResultsSchema, playgroundRunsSchema, playgroundsSchema, providerConfigsSchema, providerGuardrailOverridesSchema, runAutoMigrations, schemas, targetingRulesSchema, validatePartialTableData, validateTableData, variantVersionsSchema, variantsSchema, workspaceSettingsSchema };
package/dist/db/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { A as schemas, C as llmRequestsSchema, D as playgroundsSchema, E as playgroundRunsSchema, M as variantVersionsSchema, N as variantsSchema, O as providerConfigsSchema, P as workspaceSettingsSchema, S as guardrailConfigsSchema, T as playgroundResultsSchema, _ as datasetVersionRecordsSchema, a as matchType, b as environmentSecretsSchema, d as validatePartialTableData, f as validateTableData, g as datasetRecordsSchema, h as configsSchema, i as getMigrations, j as targetingRulesSchema, k as providerGuardrailOverridesSchema, l as parsePartialTableData, m as configVariantsSchema, n as createDatabaseFromConnection, o as runAutoMigrations, p as SCHEMA_METADATA, r as detectDatabaseType, t as createDatabase, u as parseTableData, v as datasetVersionsSchema, w as playgroundColumnSchema, x as environmentsSchema, y as datasetsSchema } from "../db-DdV835WT.mjs";
1
+ import { A as schemas, C as llmRequestsSchema, D as playgroundsSchema, E as playgroundRunsSchema, M as variantVersionsSchema, N as variantsSchema, O as providerConfigsSchema, P as workspaceSettingsSchema, S as guardrailConfigsSchema, T as playgroundResultsSchema, _ as datasetVersionRecordsSchema, a as matchType, b as environmentSecretsSchema, d as validatePartialTableData, f as validateTableData, g as datasetRecordsSchema, h as configsSchema, i as getMigrations, j as targetingRulesSchema, k as providerGuardrailOverridesSchema, l as parsePartialTableData, m as configVariantsSchema, n as createDatabaseFromConnection, o as runAutoMigrations, p as SCHEMA_METADATA, r as detectDatabaseType, t as createDatabase, u as parseTableData, v as datasetVersionsSchema, w as playgroundColumnSchema, x as environmentsSchema, y as datasetsSchema } from "../db-DX_QaIkx.mjs";
2
2
  import { n as executeWithSchema, t as createNeonDialect } from "../neon-dialect-DySGBYUi.mjs";
3
3
 
4
4
  export { SCHEMA_METADATA, configVariantsSchema, configsSchema, createDatabase, createDatabaseFromConnection, createNeonDialect, datasetRecordsSchema, datasetVersionRecordsSchema, datasetVersionsSchema, datasetsSchema, detectDatabaseType, environmentSecretsSchema, environmentsSchema, executeWithSchema, getMigrations, guardrailConfigsSchema, llmRequestsSchema, matchType, parsePartialTableData, parseTableData, playgroundColumnSchema, playgroundResultsSchema, playgroundRunsSchema, playgroundsSchema, providerConfigsSchema, providerGuardrailOverridesSchema, runAutoMigrations, schemas, targetingRulesSchema, validatePartialTableData, validateTableData, variantVersionsSchema, variantsSchema, workspaceSettingsSchema };
@@ -14352,9 +14352,21 @@ function createDatabase(connection) {
14352
14352
  return new kysely.Kysely({ dialect: connection.dialect });
14353
14353
  }
14354
14354
  /**
14355
- * Auto-detect database type from connection object
14355
+ * Check if a string looks like a Neon connection string
14356
+ */
14357
+ function isNeonConnectionString(str) {
14358
+ return str.includes(".neon.tech") || str.includes("neon.tech") || str.includes("@neon-");
14359
+ }
14360
+ /**
14361
+ * Auto-detect database type from connection object or string
14356
14362
  */
14357
14363
  function detectDatabaseType(db) {
14364
+ if (typeof db === "string") {
14365
+ if (isNeonConnectionString(db)) return "neon";
14366
+ if (db.startsWith("postgres://") || db.startsWith("postgresql://")) return "postgres";
14367
+ if (db.startsWith("mysql://")) return "mysql";
14368
+ return null;
14369
+ }
14358
14370
  if (!db || typeof db !== "object" && typeof db !== "function") return null;
14359
14371
  if ("createDriver" in db) {
14360
14372
  if (db instanceof kysely.SqliteDialect) return "sqlite";
@@ -14385,12 +14397,12 @@ async function createDatabaseFromConnection(rawConnection, options) {
14385
14397
  case "sqlite":
14386
14398
  if ("aggregate" in rawConnection && !("createSession" in rawConnection)) dialect = new kysely.SqliteDialect({ database: rawConnection });
14387
14399
  else if ("fileControl" in rawConnection) {
14388
- const { BunSqliteDialect } = await Promise.resolve().then(() => require("./bun-sqlite-dialect-gGK75m-T.cjs"));
14400
+ const { BunSqliteDialect } = await Promise.resolve().then(() => require("./bun-sqlite-dialect-DQa87s1D.cjs"));
14389
14401
  dialect = new BunSqliteDialect({ database: rawConnection });
14390
14402
  } else if ("createSession" in rawConnection && typeof window === "undefined") try {
14391
14403
  const { DatabaseSync } = await import("node:sqlite");
14392
14404
  if (rawConnection instanceof DatabaseSync) {
14393
- const { NodeSqliteDialect } = await Promise.resolve().then(() => require("./node-sqlite-dialect-DR6hDh7D.cjs"));
14405
+ const { NodeSqliteDialect } = await Promise.resolve().then(() => require("./node-sqlite-dialect-DLKHH0RE.cjs"));
14394
14406
  dialect = new NodeSqliteDialect({ database: rawConnection });
14395
14407
  }
14396
14408
  } catch {}
@@ -14406,23 +14418,20 @@ async function createDatabaseFromConnection(rawConnection, options) {
14406
14418
  }
14407
14419
  });
14408
14420
  break;
14409
- case "neon":
14410
- if (schema && schema !== "public") {
14411
- const { Pool, neonConfig } = await import("@neondatabase/serverless");
14412
- const { default: ws } = await import("ws");
14413
- neonConfig.webSocketConstructor = ws;
14414
- const connectionString = typeof rawConnection === "string" ? rawConnection : process.env.NEON_PG_URL || "";
14415
- dialect = new kysely.PostgresDialect({
14416
- pool: new Pool({ connectionString: connectionString.includes("currentSchema") ? connectionString.split("currentSchema=")[1].split("&")[0] === "public" ? connectionString.replace(/currentSchema=[^&]*&?/, "") : connectionString : connectionString }),
14417
- onCreateConnection: async (connection) => {
14418
- await connection.executeQuery(kysely.CompiledQuery.raw(`SET search_path TO "${schema}"`));
14419
- }
14420
- });
14421
- } else {
14422
- const { createNeonDialect } = await Promise.resolve().then(() => require("./neon-dialect-aLfG_zN7.cjs"));
14423
- dialect = createNeonDialect(rawConnection);
14421
+ case "neon": {
14422
+ if (typeof rawConnection === "function") {
14423
+ const { createNeonDialect: createNeonDialect$1 } = await Promise.resolve().then(() => require("./neon-dialect-BBGTCnek.cjs"));
14424
+ dialect = createNeonDialect$1(rawConnection);
14425
+ break;
14424
14426
  }
14427
+ const connectionString = typeof rawConnection === "string" && rawConnection || process.env.NEON_CONNECTION_STRING || process.env.NEON_PG_URL || process.env.DATABASE_URL || process.env.POSTGRES_URL || "";
14428
+ if (!connectionString) throw new Error("Neon connection string is required. Pass it directly as the database option or set one of: NEON_CONNECTION_STRING, NEON_PG_URL, DATABASE_URL, POSTGRES_URL");
14429
+ const { neon } = await import("@neondatabase/serverless");
14430
+ const sql$1 = neon(connectionString);
14431
+ const { createNeonDialect } = await Promise.resolve().then(() => require("./neon-dialect-BBGTCnek.cjs"));
14432
+ dialect = createNeonDialect(sql$1);
14425
14433
  break;
14434
+ }
14426
14435
  case "mssql":
14427
14436
  if ("createDriver" in rawConnection) dialect = rawConnection;
14428
14437
  break;
@@ -14328,9 +14328,21 @@ function createDatabase(connection) {
14328
14328
  return new Kysely({ dialect: connection.dialect });
14329
14329
  }
14330
14330
  /**
14331
- * Auto-detect database type from connection object
14331
+ * Check if a string looks like a Neon connection string
14332
+ */
14333
+ function isNeonConnectionString(str) {
14334
+ return str.includes(".neon.tech") || str.includes("neon.tech") || str.includes("@neon-");
14335
+ }
14336
+ /**
14337
+ * Auto-detect database type from connection object or string
14332
14338
  */
14333
14339
  function detectDatabaseType(db) {
14340
+ if (typeof db === "string") {
14341
+ if (isNeonConnectionString(db)) return "neon";
14342
+ if (db.startsWith("postgres://") || db.startsWith("postgresql://")) return "postgres";
14343
+ if (db.startsWith("mysql://")) return "mysql";
14344
+ return null;
14345
+ }
14334
14346
  if (!db || typeof db !== "object" && typeof db !== "function") return null;
14335
14347
  if ("createDriver" in db) {
14336
14348
  if (db instanceof SqliteDialect) return "sqlite";
@@ -14382,23 +14394,20 @@ async function createDatabaseFromConnection(rawConnection, options) {
14382
14394
  }
14383
14395
  });
14384
14396
  break;
14385
- case "neon":
14386
- if (schema && schema !== "public") {
14387
- const { Pool, neonConfig } = await import("@neondatabase/serverless");
14388
- const { default: ws } = await import("ws");
14389
- neonConfig.webSocketConstructor = ws;
14390
- const connectionString = typeof rawConnection === "string" ? rawConnection : process.env.NEON_PG_URL || "";
14391
- dialect = new PostgresDialect({
14392
- pool: new Pool({ connectionString: connectionString.includes("currentSchema") ? connectionString.split("currentSchema=")[1].split("&")[0] === "public" ? connectionString.replace(/currentSchema=[^&]*&?/, "") : connectionString : connectionString }),
14393
- onCreateConnection: async (connection) => {
14394
- await connection.executeQuery(CompiledQuery.raw(`SET search_path TO "${schema}"`));
14395
- }
14396
- });
14397
- } else {
14398
- const { createNeonDialect } = await import("./neon-dialect-Hmo08nUq.mjs");
14399
- dialect = createNeonDialect(rawConnection);
14397
+ case "neon": {
14398
+ if (typeof rawConnection === "function") {
14399
+ const { createNeonDialect: createNeonDialect$1 } = await import("./neon-dialect-Hmo08nUq.mjs");
14400
+ dialect = createNeonDialect$1(rawConnection);
14401
+ break;
14400
14402
  }
14403
+ const connectionString = typeof rawConnection === "string" && rawConnection || process.env.NEON_CONNECTION_STRING || process.env.NEON_PG_URL || process.env.DATABASE_URL || process.env.POSTGRES_URL || "";
14404
+ if (!connectionString) throw new Error("Neon connection string is required. Pass it directly as the database option or set one of: NEON_CONNECTION_STRING, NEON_PG_URL, DATABASE_URL, POSTGRES_URL");
14405
+ const { neon } = await import("@neondatabase/serverless");
14406
+ const sql$1 = neon(connectionString);
14407
+ const { createNeonDialect } = await import("./neon-dialect-Hmo08nUq.mjs");
14408
+ dialect = createNeonDialect(sql$1);
14401
14409
  break;
14410
+ }
14402
14411
  case "mssql":
14403
14412
  if ("createDriver" in rawConnection) dialect = rawConnection;
14404
14413
  break;
@@ -1,7 +1,7 @@
1
1
  import { ColumnType, Dialect, Generated, Kysely, MssqlDialect, MysqlDialect, PostgresDialect, SqliteDialect } from "kysely";
2
- import { NeonQueryFunction } from "@neondatabase/serverless";
3
2
  import * as zod0 from "zod";
4
3
  import { z } from "zod";
4
+ import { NeonQueryFunction } from "@neondatabase/serverless";
5
5
 
6
6
  //#region src/db/schema.d.ts
7
7
  declare const configsSchema: z.ZodObject<{
@@ -2946,7 +2946,7 @@ type DatabaseConnection = {
2946
2946
  */
2947
2947
  declare function createDatabase(connection: DatabaseConnection): Kysely<Database>;
2948
2948
  /**
2949
- * Auto-detect database type from connection object
2949
+ * Auto-detect database type from connection object or string
2950
2950
  */
2951
2951
  declare function detectDatabaseType(db: unknown): DatabaseType | null;
2952
2952
  /**
@@ -1,7 +1,7 @@
1
1
  import { ColumnType, Dialect, Generated, Kysely, MssqlDialect, MysqlDialect, PostgresDialect, SqliteDialect } from "kysely";
2
+ import { NeonQueryFunction } from "@neondatabase/serverless";
2
3
  import * as zod0 from "zod";
3
4
  import { z } from "zod";
4
- import { NeonQueryFunction } from "@neondatabase/serverless";
5
5
 
6
6
  //#region src/db/schema.d.ts
7
7
  declare const configsSchema: z.ZodObject<{
@@ -2946,7 +2946,7 @@ type DatabaseConnection = {
2946
2946
  */
2947
2947
  declare function createDatabase(connection: DatabaseConnection): Kysely<Database>;
2948
2948
  /**
2949
- * Auto-detect database type from connection object
2949
+ * Auto-detect database type from connection object or string
2950
2950
  */
2951
2951
  declare function detectDatabaseType(db: unknown): DatabaseType | null;
2952
2952
  /**
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- const require_db = require('./db-B6s2Fj5e.cjs');
2
- const require_neon_dialect = require('./neon-dialect-fjqFddrY.cjs');
1
+ const require_db = require('./db-B9jJgYNw.cjs');
2
+ const require_neon_dialect = require('./neon-dialect-BBWePgOv.cjs');
3
3
  let __llmops_gateway = require("@llmops/gateway");
4
4
  __llmops_gateway = require_db.__toESM(__llmops_gateway);
5
5
  let kysely = require("kysely");
@@ -92,6 +92,171 @@ let SupportedProviders = /* @__PURE__ */ function(SupportedProviders$1) {
92
92
  return SupportedProviders$1;
93
93
  }({});
94
94
 
95
+ //#endregion
96
+ //#region src/providers/default-providers.ts
97
+ /**
98
+ * Top providers with simple API key authentication.
99
+ * Providers requiring additional config (Azure, Bedrock, Vertex) are excluded
100
+ * as they need endpoint/region info that can't be auto-detected.
101
+ */
102
+ const DEFAULT_PROVIDER_MAPPINGS = [
103
+ {
104
+ provider: SupportedProviders.OPENAI,
105
+ slug: "openai",
106
+ envVar: "OPENAI_API_KEY"
107
+ },
108
+ {
109
+ provider: SupportedProviders.ANTHROPIC,
110
+ slug: "anthropic",
111
+ envVar: "ANTHROPIC_API_KEY"
112
+ },
113
+ {
114
+ provider: SupportedProviders.GOOGLE,
115
+ slug: "google",
116
+ envVar: "GOOGLE_API_KEY"
117
+ },
118
+ {
119
+ provider: SupportedProviders.MISTRAL_AI,
120
+ slug: "mistral",
121
+ envVar: "MISTRAL_API_KEY"
122
+ },
123
+ {
124
+ provider: SupportedProviders.GROQ,
125
+ slug: "groq",
126
+ envVar: "GROQ_API_KEY"
127
+ },
128
+ {
129
+ provider: SupportedProviders.COHERE,
130
+ slug: "cohere",
131
+ envVar: "COHERE_API_KEY"
132
+ },
133
+ {
134
+ provider: SupportedProviders.TOGETHER_AI,
135
+ slug: "together",
136
+ envVar: "TOGETHER_API_KEY"
137
+ },
138
+ {
139
+ provider: SupportedProviders.PERPLEXITY_AI,
140
+ slug: "perplexity",
141
+ envVar: "PERPLEXITY_API_KEY"
142
+ },
143
+ {
144
+ provider: SupportedProviders.DEEPSEEK,
145
+ slug: "deepseek",
146
+ envVar: "DEEPSEEK_API_KEY"
147
+ },
148
+ {
149
+ provider: SupportedProviders.FIREWORKS_AI,
150
+ slug: "fireworks",
151
+ envVar: "FIREWORKS_API_KEY"
152
+ },
153
+ {
154
+ provider: SupportedProviders.OPENROUTER,
155
+ slug: "openrouter",
156
+ envVar: "OPENROUTER_API_KEY"
157
+ },
158
+ {
159
+ provider: SupportedProviders.X_AI,
160
+ slug: "xai",
161
+ envVar: "XAI_API_KEY"
162
+ },
163
+ {
164
+ provider: SupportedProviders.CEREBRAS,
165
+ slug: "cerebras",
166
+ envVar: "CEREBRAS_API_KEY"
167
+ },
168
+ {
169
+ provider: SupportedProviders.SAMBANOVA,
170
+ slug: "sambanova",
171
+ envVar: "SAMBANOVA_API_KEY"
172
+ },
173
+ {
174
+ provider: SupportedProviders.HUGGINGFACE,
175
+ slug: "huggingface",
176
+ envVar: "HUGGINGFACE_API_KEY"
177
+ },
178
+ {
179
+ provider: SupportedProviders.REPLICATE,
180
+ slug: "replicate",
181
+ envVar: "REPLICATE_API_TOKEN"
182
+ },
183
+ {
184
+ provider: SupportedProviders.AI21,
185
+ slug: "ai21",
186
+ envVar: "AI21_API_KEY"
187
+ },
188
+ {
189
+ provider: SupportedProviders.DEEPINFRA,
190
+ slug: "deepinfra",
191
+ envVar: "DEEPINFRA_API_KEY"
192
+ }
193
+ ];
194
+ /**
195
+ * Get default provider configurations from environment variables.
196
+ *
197
+ * Scans for known API key environment variables and creates
198
+ * InlineProviderConfig entries for each one found.
199
+ *
200
+ * @param env - Environment variables object (defaults to process.env)
201
+ * @returns Array of auto-configured providers
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * // With OPENAI_API_KEY and ANTHROPIC_API_KEY set in environment:
206
+ * const defaults = getDefaultProviders();
207
+ * // Returns:
208
+ * // [
209
+ * // { provider: 'openai', slug: 'openai', apiKey: '...' },
210
+ * // { provider: 'anthropic', slug: 'anthropic', apiKey: '...' }
211
+ * // ]
212
+ * ```
213
+ */
214
+ function getDefaultProviders(env = process.env) {
215
+ const providers = [];
216
+ for (const mapping of DEFAULT_PROVIDER_MAPPINGS) {
217
+ const apiKey = env[mapping.envVar];
218
+ if (apiKey) providers.push({
219
+ provider: mapping.provider,
220
+ slug: mapping.slug,
221
+ apiKey
222
+ });
223
+ }
224
+ return providers;
225
+ }
226
+ /**
227
+ * Merge user-provided providers with default providers.
228
+ *
229
+ * User-provided providers take precedence:
230
+ * - If a user specifies a provider with the same slug, the default is ignored
231
+ * - If a user specifies the same provider type with a different slug, both are kept
232
+ *
233
+ * @param userProviders - User-configured providers (may be undefined)
234
+ * @param env - Environment variables object (defaults to process.env)
235
+ * @returns Merged array of providers (user configs + non-conflicting defaults)
236
+ *
237
+ * @example
238
+ * ```typescript
239
+ * // User overrides openai with custom slug
240
+ * const merged = mergeWithDefaultProviders([
241
+ * { provider: 'openai', slug: 'my-openai', apiKey: 'custom-key' }
242
+ * ]);
243
+ * // Default 'openai' slug is still added if OPENAI_API_KEY is set,
244
+ * // user's 'my-openai' is kept as separate config
245
+ * ```
246
+ */
247
+ function mergeWithDefaultProviders(userProviders, env = process.env) {
248
+ const defaults = getDefaultProviders(env);
249
+ if (!userProviders || userProviders.length === 0) return defaults;
250
+ const userSlugs = new Set(userProviders.map((p) => p.slug));
251
+ const nonConflictingDefaults = defaults.filter((d) => !userSlugs.has(d.slug));
252
+ return [...userProviders, ...nonConflictingDefaults];
253
+ }
254
+ /**
255
+ * List of supported default provider environment variables.
256
+ * Useful for documentation or debugging.
257
+ */
258
+ const DEFAULT_PROVIDER_ENV_VARS = DEFAULT_PROVIDER_MAPPINGS.map((m) => m.envVar);
259
+
95
260
  //#endregion
96
261
  //#region src/schemas/openai.ts
97
262
  const chatCompletionContentPartTextSchema = require_db.object({
@@ -451,12 +616,19 @@ const inlineProviderConfigSchema = require_db.object({
451
616
  * Schema for providers array
452
617
  */
453
618
  const providersConfigSchema = require_db.array(inlineProviderConfigSchema).optional();
454
- const llmopsConfigSchema = require_db.object({
619
+ /**
620
+ * Base schema without refinements (used for transform)
621
+ */
622
+ const llmopsConfigBaseSchema = require_db.object({
455
623
  database: require_db.any().optional(),
456
624
  basePath: require_db.string().min(1, "Base path is required and cannot be empty").refine((path) => path.startsWith("/"), "Base path must start with a forward slash"),
457
625
  schema: require_db.string().optional().default("llmops"),
458
626
  providers: providersConfigSchema
459
- }).refine((config) => config.database !== void 0 || config.providers && config.providers.length > 0, "Either database or providers must be configured");
627
+ });
628
+ const llmopsConfigSchema = llmopsConfigBaseSchema.transform((config) => ({
629
+ ...config,
630
+ providers: mergeWithDefaultProviders(config.providers)
631
+ })).refine((config) => config.database !== void 0 || config.providers && config.providers.length > 0, "Either database or providers must be configured. Set a database connection, configure providers explicitly, or set API key environment variables (e.g., OPENAI_API_KEY).");
460
632
  function validateLLMOpsConfig(config) {
461
633
  const result = llmopsConfigSchema.safeParse(config);
462
634
  if (!result.success) {
@@ -3756,6 +3928,7 @@ var ManifestRouter = class {
3756
3928
 
3757
3929
  //#endregion
3758
3930
  exports.CacheService = CacheService;
3931
+ exports.DEFAULT_PROVIDER_ENV_VARS = DEFAULT_PROVIDER_ENV_VARS;
3759
3932
  exports.FileCacheBackend = FileCacheBackend;
3760
3933
  exports.MS = MS;
3761
3934
  exports.ManifestBuilder = ManifestBuilder;
@@ -3808,12 +3981,14 @@ Object.defineProperty(exports, 'gateway', {
3808
3981
  exports.generateId = generateId;
3809
3982
  exports.getAuthClientOptions = require_db.getAuthClientOptions;
3810
3983
  exports.getDefaultPricingProvider = getDefaultPricingProvider;
3984
+ exports.getDefaultProviders = getDefaultProviders;
3811
3985
  exports.getMigrations = require_db.getMigrations;
3812
3986
  exports.guardrailConfigsSchema = require_db.guardrailConfigsSchema;
3813
3987
  exports.llmRequestsSchema = require_db.llmRequestsSchema;
3814
3988
  exports.llmopsConfigSchema = llmopsConfigSchema;
3815
3989
  exports.logger = require_db.logger;
3816
3990
  exports.matchType = require_db.matchType;
3991
+ exports.mergeWithDefaultProviders = mergeWithDefaultProviders;
3817
3992
  exports.microDollarsToDollars = microDollarsToDollars;
3818
3993
  exports.parsePartialTableData = require_db.parsePartialTableData;
3819
3994
  exports.parseTableData = require_db.parseTableData;
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as SCHEMA_METADATA, A as DatasetsTable, At as variantsSchema, B as LLMRequest, C as Dataset, Ct as playgroundRunsSchema, D as DatasetVersionRecord, Dt as schemas, E as DatasetVersion, Et as providerGuardrailOverridesSchema, F as GuardrailConfig, G as PlaygroundResultsTable, H as Playground, I as GuardrailConfigsTable, J as PlaygroundsTable, K as PlaygroundRun, L as GuardrailResult, M as EnvironmentSecret, N as EnvironmentSecretsTable, O as DatasetVersionRecordsTable, Ot as targetingRulesSchema, P as EnvironmentsTable, Q as ProviderGuardrailOverridesTable, R as GuardrailResults, S as Database, St as playgroundResultsSchema, T as DatasetRecordsTable, Tt as providerConfigsSchema, U as PlaygroundColumn, V as LLMRequestsTable, W as PlaygroundResult, X as ProviderConfigsTable, Y as ProviderConfig, Z as ProviderGuardrailOverride, _ as validateTableData, _t as environmentSecretsSchema, a as createDatabaseFromConnection, at as Variant, b as ConfigVariantsTable, bt as llmRequestsSchema, c as executeWithSchema, ct as VariantsTable, d as getMigrations, dt as configVariantsSchema, et as Selectable, f as matchType, ft as configsSchema, g as validatePartialTableData, gt as datasetsSchema, h as parseTableData, ht as datasetVersionsSchema, i as createDatabase, it as Updateable, j as Environment, jt as workspaceSettingsSchema, k as DatasetVersionsTable, kt as variantVersionsSchema, l as MigrationOptions, lt as WorkspaceSettings, m as parsePartialTableData, mt as datasetVersionRecordsSchema, n as DatabaseOptions, nt as TargetingRule, o as detectDatabaseType, ot as VariantVersion, p as runAutoMigrations, pt as datasetRecordsSchema, q as PlaygroundRunsTable, r as DatabaseType, rt as TargetingRulesTable, s as createNeonDialect, st as VariantVersionsTable, t as DatabaseConnection, tt as TableName, u as MigrationResult, ut as WorkspaceSettingsTable, v as Config, vt as environmentsSchema, w as DatasetRecord, wt as playgroundsSchema, x as ConfigsTable, xt as playgroundColumnSchema, y as ConfigVariant, yt as guardrailConfigsSchema, z as Insertable } from "./index-BtZBaB4H.cjs";
1
+ import { $ as SCHEMA_METADATA, A as DatasetsTable, At as variantsSchema, B as LLMRequest, C as Dataset, Ct as playgroundRunsSchema, D as DatasetVersionRecord, Dt as schemas, E as DatasetVersion, Et as providerGuardrailOverridesSchema, F as GuardrailConfig, G as PlaygroundResultsTable, H as Playground, I as GuardrailConfigsTable, J as PlaygroundsTable, K as PlaygroundRun, L as GuardrailResult, M as EnvironmentSecret, N as EnvironmentSecretsTable, O as DatasetVersionRecordsTable, Ot as targetingRulesSchema, P as EnvironmentsTable, Q as ProviderGuardrailOverridesTable, R as GuardrailResults, S as Database, St as playgroundResultsSchema, T as DatasetRecordsTable, Tt as providerConfigsSchema, U as PlaygroundColumn, V as LLMRequestsTable, W as PlaygroundResult, X as ProviderConfigsTable, Y as ProviderConfig, Z as ProviderGuardrailOverride, _ as validateTableData, _t as environmentSecretsSchema, a as createDatabaseFromConnection, at as Variant, b as ConfigVariantsTable, bt as llmRequestsSchema, c as executeWithSchema, ct as VariantsTable, d as getMigrations, dt as configVariantsSchema, et as Selectable, f as matchType, ft as configsSchema, g as validatePartialTableData, gt as datasetsSchema, h as parseTableData, ht as datasetVersionsSchema, i as createDatabase, it as Updateable, j as Environment, jt as workspaceSettingsSchema, k as DatasetVersionsTable, kt as variantVersionsSchema, l as MigrationOptions, lt as WorkspaceSettings, m as parsePartialTableData, mt as datasetVersionRecordsSchema, n as DatabaseOptions, nt as TargetingRule, o as detectDatabaseType, ot as VariantVersion, p as runAutoMigrations, pt as datasetRecordsSchema, q as PlaygroundRunsTable, r as DatabaseType, rt as TargetingRulesTable, s as createNeonDialect, st as VariantVersionsTable, t as DatabaseConnection, tt as TableName, u as MigrationResult, ut as WorkspaceSettingsTable, v as Config, vt as environmentsSchema, w as DatasetRecord, wt as playgroundsSchema, x as ConfigsTable, xt as playgroundColumnSchema, y as ConfigVariant, yt as guardrailConfigsSchema, z as Insertable } from "./index-BtSgIKup.cjs";
2
2
  import * as kysely0 from "kysely";
3
3
  import { Kysely } from "kysely";
4
4
  import z$1, { z } from "zod";
@@ -418,8 +418,58 @@ interface InlineProviderConfig extends Partial<BaseProviderConfig> {
418
418
  /** Array of inline provider configurations */
419
419
  type InlineProvidersConfig = InlineProviderConfig[];
420
420
  //#endregion
421
+ //#region src/providers/default-providers.d.ts
422
+ /**
423
+ * Get default provider configurations from environment variables.
424
+ *
425
+ * Scans for known API key environment variables and creates
426
+ * InlineProviderConfig entries for each one found.
427
+ *
428
+ * @param env - Environment variables object (defaults to process.env)
429
+ * @returns Array of auto-configured providers
430
+ *
431
+ * @example
432
+ * ```typescript
433
+ * // With OPENAI_API_KEY and ANTHROPIC_API_KEY set in environment:
434
+ * const defaults = getDefaultProviders();
435
+ * // Returns:
436
+ * // [
437
+ * // { provider: 'openai', slug: 'openai', apiKey: '...' },
438
+ * // { provider: 'anthropic', slug: 'anthropic', apiKey: '...' }
439
+ * // ]
440
+ * ```
441
+ */
442
+ declare function getDefaultProviders(env?: Record<string, string | undefined>): InlineProviderConfig[];
443
+ /**
444
+ * Merge user-provided providers with default providers.
445
+ *
446
+ * User-provided providers take precedence:
447
+ * - If a user specifies a provider with the same slug, the default is ignored
448
+ * - If a user specifies the same provider type with a different slug, both are kept
449
+ *
450
+ * @param userProviders - User-configured providers (may be undefined)
451
+ * @param env - Environment variables object (defaults to process.env)
452
+ * @returns Merged array of providers (user configs + non-conflicting defaults)
453
+ *
454
+ * @example
455
+ * ```typescript
456
+ * // User overrides openai with custom slug
457
+ * const merged = mergeWithDefaultProviders([
458
+ * { provider: 'openai', slug: 'my-openai', apiKey: 'custom-key' }
459
+ * ]);
460
+ * // Default 'openai' slug is still added if OPENAI_API_KEY is set,
461
+ * // user's 'my-openai' is kept as separate config
462
+ * ```
463
+ */
464
+ declare function mergeWithDefaultProviders(userProviders: InlineProviderConfig[] | undefined, env?: Record<string, string | undefined>): InlineProviderConfig[];
465
+ /**
466
+ * List of supported default provider environment variables.
467
+ * Useful for documentation or debugging.
468
+ */
469
+ declare const DEFAULT_PROVIDER_ENV_VARS: string[];
470
+ //#endregion
421
471
  //#region src/schemas/config.d.ts
422
- declare const llmopsConfigSchema: z.ZodObject<{
472
+ declare const llmopsConfigSchema: z.ZodPipe<z.ZodObject<{
423
473
  database: z.ZodOptional<z.ZodAny>;
424
474
  basePath: z.ZodString;
425
475
  schema: z.ZodDefault<z.ZodOptional<z.ZodString>>;
@@ -431,7 +481,25 @@ declare const llmopsConfigSchema: z.ZodObject<{
431
481
  requestTimeout: z.ZodOptional<z.ZodNumber>;
432
482
  forwardHeaders: z.ZodOptional<z.ZodArray<z.ZodString>>;
433
483
  }, z.core.$loose>>>;
434
- }, z.core.$strip>;
484
+ }, z.core.$strip>, z.ZodTransform<{
485
+ providers: InlineProviderConfig[];
486
+ basePath: string;
487
+ schema: string;
488
+ database?: any;
489
+ }, {
490
+ basePath: string;
491
+ schema: string;
492
+ database?: any;
493
+ providers?: {
494
+ [x: string]: unknown;
495
+ provider: string;
496
+ slug: string;
497
+ apiKey?: string | undefined;
498
+ customHost?: string | undefined;
499
+ requestTimeout?: number | undefined;
500
+ forwardHeaders?: string[] | undefined;
501
+ }[] | undefined;
502
+ }>>;
435
503
  /**
436
504
  * Validated LLMOps configuration
437
505
  *
@@ -3848,4 +3916,4 @@ declare class ManifestRouter {
3848
3916
  routeWithWeights(configIdOrSlug: string, environmentId: string, context?: RoutingContext): RoutingResult | null;
3849
3917
  }
3850
3918
  //#endregion
3851
- export { type AnthropicProviderConfig, type AnyProviderConfig, AuthClientDatabaseConfig, AuthClientOptions, type AzureAIProviderConfig, type AzureOpenAIProviderConfig, BaseCacheConfig, type BaseProviderConfig, type BedrockProviderConfig, CacheBackend, CacheBackendType, CacheConfig, CacheEntry, CacheOptions, CacheService, CacheStats, ChatCompletionCreateParamsBase, Config, ConfigVariant, ConfigVariantsDataLayer, ConfigVariantsTable, ConfigsDataLayer, ConfigsTable, type CortexProviderConfig, CostResult, DataLayer, Database, DatabaseConnection, DatabaseOptions, DatabaseType, Dataset, DatasetRecord, DatasetRecordsTable, DatasetVersion, DatasetVersionRecord, DatasetVersionRecordsTable, DatasetVersionsTable, DatasetsDataLayer, DatasetsTable, Environment, EnvironmentSecret, EnvironmentSecretsDataLayer, EnvironmentSecretsTable, EnvironmentsDataLayer, EnvironmentsTable, FileCacheBackend, FileCacheConfig, type FireworksAIProviderConfig, GatewayManifest, type GoogleProviderConfig, GuardrailConfig, GuardrailConfigsDataLayer, GuardrailConfigsTable, GuardrailResult, GuardrailResults, type HuggingFaceProviderConfig, type InlineProviderConfig, type InlineProvidersConfig, Insertable, LLMOpsClient, LLMOpsConfig, type LLMOpsConfigInput, LLMRequest, LLMRequestInsert, LLMRequestsDataLayer, LLMRequestsTable, MS, ManifestBuilder, ManifestConfig, ManifestEnvironment, ManifestGuardrail, ManifestProviderGuardrailOverride, ManifestRouter, ManifestService, ManifestTargetingRule, ManifestVariantVersion, MemoryCacheBackend, MemoryCacheConfig, MigrationOptions, MigrationResult, type MistralAIProviderConfig, ModelPricing, ModelsDevPricingProvider, type OpenAIProviderConfig, type OracleProviderConfig, Playground, PlaygroundColumn, PlaygroundResult, PlaygroundResultsDataLayer, PlaygroundResultsTable, PlaygroundRun, PlaygroundRunsDataLayer, PlaygroundRunsTable, PlaygroundsDataLayer, PlaygroundsTable, Prettify, PricingProvider, ProviderConfig, type ProviderConfigMap, ProviderConfigsDataLayer, ProviderConfigsTable, ProviderGuardrailOverride, ProviderGuardrailOverridesDataLayer, ProviderGuardrailOverridesTable, type ProvidersConfig, RoutingContext, RoutingResult, SCHEMA_METADATA, type SagemakerProviderConfig, Selectable, type StabilityAIProviderConfig, SupportedProviders, TableName, TargetingRule, TargetingRulesDataLayer, TargetingRulesTable, Updateable, UsageData, type ValidatedLLMOpsConfig, Variant, VariantJsonData, VariantVersion, VariantVersionsDataLayer, VariantVersionsTable, VariantsDataLayer, VariantsTable, type VertexAIProviderConfig, type WorkersAIProviderConfig, WorkspaceSettings, WorkspaceSettingsDataLayer, WorkspaceSettingsTable, calculateCost, chatCompletionCreateParamsBaseSchema, configVariantsSchema, configsSchema, createConfigDataLayer, createConfigVariantDataLayer, createDataLayer, createDatabase, createDatabaseFromConnection, createDatasetsDataLayer, createEnvironmentDataLayer, createEnvironmentSecretDataLayer, createGuardrailConfigsDataLayer, createLLMRequestsDataLayer, createNeonDialect, createPlaygroundDataLayer, createPlaygroundResultsDataLayer, createPlaygroundRunsDataLayer, createProviderConfigsDataLayer, createProviderGuardrailOverridesDataLayer, createTargetingRulesDataLayer, createVariantDataLayer, createVariantVersionsDataLayer, createWorkspaceSettingsDataLayer, datasetRecordsSchema, datasetVersionRecordsSchema, datasetVersionsSchema, datasetsSchema, detectDatabaseType, dollarsToMicroDollars, environmentSecretsSchema, environmentsSchema, executeWithSchema, formatCost, gateway, generateId, getAuthClientOptions, getDefaultPricingProvider, getMigrations, guardrailConfigsSchema, llmRequestsSchema, llmopsConfigSchema, logger, matchType, microDollarsToDollars, parsePartialTableData, parseTableData, playgroundColumnSchema, playgroundResultsSchema, playgroundRunsSchema, playgroundsSchema, providerConfigsSchema, providerGuardrailOverridesSchema, runAutoMigrations, schemas, targetingRulesSchema, validateLLMOpsConfig, validatePartialTableData, validateTableData, variantJsonDataSchema, variantVersionsSchema, variantsSchema, workspaceSettingsSchema };
3919
+ export { type AnthropicProviderConfig, type AnyProviderConfig, AuthClientDatabaseConfig, AuthClientOptions, type AzureAIProviderConfig, type AzureOpenAIProviderConfig, BaseCacheConfig, type BaseProviderConfig, type BedrockProviderConfig, CacheBackend, CacheBackendType, CacheConfig, CacheEntry, CacheOptions, CacheService, CacheStats, ChatCompletionCreateParamsBase, Config, ConfigVariant, ConfigVariantsDataLayer, ConfigVariantsTable, ConfigsDataLayer, ConfigsTable, type CortexProviderConfig, CostResult, DEFAULT_PROVIDER_ENV_VARS, DataLayer, Database, DatabaseConnection, DatabaseOptions, DatabaseType, Dataset, DatasetRecord, DatasetRecordsTable, DatasetVersion, DatasetVersionRecord, DatasetVersionRecordsTable, DatasetVersionsTable, DatasetsDataLayer, DatasetsTable, Environment, EnvironmentSecret, EnvironmentSecretsDataLayer, EnvironmentSecretsTable, EnvironmentsDataLayer, EnvironmentsTable, FileCacheBackend, FileCacheConfig, type FireworksAIProviderConfig, GatewayManifest, type GoogleProviderConfig, GuardrailConfig, GuardrailConfigsDataLayer, GuardrailConfigsTable, GuardrailResult, GuardrailResults, type HuggingFaceProviderConfig, type InlineProviderConfig, type InlineProvidersConfig, Insertable, LLMOpsClient, LLMOpsConfig, type LLMOpsConfigInput, LLMRequest, LLMRequestInsert, LLMRequestsDataLayer, LLMRequestsTable, MS, ManifestBuilder, ManifestConfig, ManifestEnvironment, ManifestGuardrail, ManifestProviderGuardrailOverride, ManifestRouter, ManifestService, ManifestTargetingRule, ManifestVariantVersion, MemoryCacheBackend, MemoryCacheConfig, MigrationOptions, MigrationResult, type MistralAIProviderConfig, ModelPricing, ModelsDevPricingProvider, type OpenAIProviderConfig, type OracleProviderConfig, Playground, PlaygroundColumn, PlaygroundResult, PlaygroundResultsDataLayer, PlaygroundResultsTable, PlaygroundRun, PlaygroundRunsDataLayer, PlaygroundRunsTable, PlaygroundsDataLayer, PlaygroundsTable, Prettify, PricingProvider, ProviderConfig, type ProviderConfigMap, ProviderConfigsDataLayer, ProviderConfigsTable, ProviderGuardrailOverride, ProviderGuardrailOverridesDataLayer, ProviderGuardrailOverridesTable, type ProvidersConfig, RoutingContext, RoutingResult, SCHEMA_METADATA, type SagemakerProviderConfig, Selectable, type StabilityAIProviderConfig, SupportedProviders, TableName, TargetingRule, TargetingRulesDataLayer, TargetingRulesTable, Updateable, UsageData, type ValidatedLLMOpsConfig, Variant, VariantJsonData, VariantVersion, VariantVersionsDataLayer, VariantVersionsTable, VariantsDataLayer, VariantsTable, type VertexAIProviderConfig, type WorkersAIProviderConfig, WorkspaceSettings, WorkspaceSettingsDataLayer, WorkspaceSettingsTable, calculateCost, chatCompletionCreateParamsBaseSchema, configVariantsSchema, configsSchema, createConfigDataLayer, createConfigVariantDataLayer, createDataLayer, createDatabase, createDatabaseFromConnection, createDatasetsDataLayer, createEnvironmentDataLayer, createEnvironmentSecretDataLayer, createGuardrailConfigsDataLayer, createLLMRequestsDataLayer, createNeonDialect, createPlaygroundDataLayer, createPlaygroundResultsDataLayer, createPlaygroundRunsDataLayer, createProviderConfigsDataLayer, createProviderGuardrailOverridesDataLayer, createTargetingRulesDataLayer, createVariantDataLayer, createVariantVersionsDataLayer, createWorkspaceSettingsDataLayer, datasetRecordsSchema, datasetVersionRecordsSchema, datasetVersionsSchema, datasetsSchema, detectDatabaseType, dollarsToMicroDollars, environmentSecretsSchema, environmentsSchema, executeWithSchema, formatCost, gateway, generateId, getAuthClientOptions, getDefaultPricingProvider, getDefaultProviders, getMigrations, guardrailConfigsSchema, llmRequestsSchema, llmopsConfigSchema, logger, matchType, mergeWithDefaultProviders, microDollarsToDollars, parsePartialTableData, parseTableData, playgroundColumnSchema, playgroundResultsSchema, playgroundRunsSchema, playgroundsSchema, providerConfigsSchema, providerGuardrailOverridesSchema, runAutoMigrations, schemas, targetingRulesSchema, validateLLMOpsConfig, validatePartialTableData, validateTableData, variantJsonDataSchema, variantVersionsSchema, variantsSchema, workspaceSettingsSchema };
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as SCHEMA_METADATA, A as DatasetsTable, At as variantsSchema, B as LLMRequest, C as Dataset, Ct as playgroundRunsSchema, D as DatasetVersionRecord, Dt as schemas, E as DatasetVersion, Et as providerGuardrailOverridesSchema, F as GuardrailConfig, G as PlaygroundResultsTable, H as Playground, I as GuardrailConfigsTable, J as PlaygroundsTable, K as PlaygroundRun, L as GuardrailResult, M as EnvironmentSecret, N as EnvironmentSecretsTable, O as DatasetVersionRecordsTable, Ot as targetingRulesSchema, P as EnvironmentsTable, Q as ProviderGuardrailOverridesTable, R as GuardrailResults, S as Database, St as playgroundResultsSchema, T as DatasetRecordsTable, Tt as providerConfigsSchema, U as PlaygroundColumn, V as LLMRequestsTable, W as PlaygroundResult, X as ProviderConfigsTable, Y as ProviderConfig, Z as ProviderGuardrailOverride, _ as validateTableData, _t as environmentSecretsSchema, a as createDatabaseFromConnection, at as Variant, b as ConfigVariantsTable, bt as llmRequestsSchema, c as executeWithSchema, ct as VariantsTable, d as getMigrations, dt as configVariantsSchema, et as Selectable, f as matchType, ft as configsSchema, g as validatePartialTableData, gt as datasetsSchema, h as parseTableData, ht as datasetVersionsSchema, i as createDatabase, it as Updateable, j as Environment, jt as workspaceSettingsSchema, k as DatasetVersionsTable, kt as variantVersionsSchema, l as MigrationOptions, lt as WorkspaceSettings, m as parsePartialTableData, mt as datasetVersionRecordsSchema, n as DatabaseOptions, nt as TargetingRule, o as detectDatabaseType, ot as VariantVersion, p as runAutoMigrations, pt as datasetRecordsSchema, q as PlaygroundRunsTable, r as DatabaseType, rt as TargetingRulesTable, s as createNeonDialect, st as VariantVersionsTable, t as DatabaseConnection, tt as TableName, u as MigrationResult, ut as WorkspaceSettingsTable, v as Config, vt as environmentsSchema, w as DatasetRecord, wt as playgroundsSchema, x as ConfigsTable, xt as playgroundColumnSchema, y as ConfigVariant, yt as guardrailConfigsSchema, z as Insertable } from "./index-DkZvY6Q3.mjs";
1
+ import { $ as SCHEMA_METADATA, A as DatasetsTable, At as variantsSchema, B as LLMRequest, C as Dataset, Ct as playgroundRunsSchema, D as DatasetVersionRecord, Dt as schemas, E as DatasetVersion, Et as providerGuardrailOverridesSchema, F as GuardrailConfig, G as PlaygroundResultsTable, H as Playground, I as GuardrailConfigsTable, J as PlaygroundsTable, K as PlaygroundRun, L as GuardrailResult, M as EnvironmentSecret, N as EnvironmentSecretsTable, O as DatasetVersionRecordsTable, Ot as targetingRulesSchema, P as EnvironmentsTable, Q as ProviderGuardrailOverridesTable, R as GuardrailResults, S as Database, St as playgroundResultsSchema, T as DatasetRecordsTable, Tt as providerConfigsSchema, U as PlaygroundColumn, V as LLMRequestsTable, W as PlaygroundResult, X as ProviderConfigsTable, Y as ProviderConfig, Z as ProviderGuardrailOverride, _ as validateTableData, _t as environmentSecretsSchema, a as createDatabaseFromConnection, at as Variant, b as ConfigVariantsTable, bt as llmRequestsSchema, c as executeWithSchema, ct as VariantsTable, d as getMigrations, dt as configVariantsSchema, et as Selectable, f as matchType, ft as configsSchema, g as validatePartialTableData, gt as datasetsSchema, h as parseTableData, ht as datasetVersionsSchema, i as createDatabase, it as Updateable, j as Environment, jt as workspaceSettingsSchema, k as DatasetVersionsTable, kt as variantVersionsSchema, l as MigrationOptions, lt as WorkspaceSettings, m as parsePartialTableData, mt as datasetVersionRecordsSchema, n as DatabaseOptions, nt as TargetingRule, o as detectDatabaseType, ot as VariantVersion, p as runAutoMigrations, pt as datasetRecordsSchema, q as PlaygroundRunsTable, r as DatabaseType, rt as TargetingRulesTable, s as createNeonDialect, st as VariantVersionsTable, t as DatabaseConnection, tt as TableName, u as MigrationResult, ut as WorkspaceSettingsTable, v as Config, vt as environmentsSchema, w as DatasetRecord, wt as playgroundsSchema, x as ConfigsTable, xt as playgroundColumnSchema, y as ConfigVariant, yt as guardrailConfigsSchema, z as Insertable } from "./index-LRmy4sz9.mjs";
2
2
  import gateway from "@llmops/gateway";
3
3
  import * as kysely0 from "kysely";
4
4
  import { Kysely } from "kysely";
@@ -418,8 +418,58 @@ interface InlineProviderConfig extends Partial<BaseProviderConfig> {
418
418
  /** Array of inline provider configurations */
419
419
  type InlineProvidersConfig = InlineProviderConfig[];
420
420
  //#endregion
421
+ //#region src/providers/default-providers.d.ts
422
+ /**
423
+ * Get default provider configurations from environment variables.
424
+ *
425
+ * Scans for known API key environment variables and creates
426
+ * InlineProviderConfig entries for each one found.
427
+ *
428
+ * @param env - Environment variables object (defaults to process.env)
429
+ * @returns Array of auto-configured providers
430
+ *
431
+ * @example
432
+ * ```typescript
433
+ * // With OPENAI_API_KEY and ANTHROPIC_API_KEY set in environment:
434
+ * const defaults = getDefaultProviders();
435
+ * // Returns:
436
+ * // [
437
+ * // { provider: 'openai', slug: 'openai', apiKey: '...' },
438
+ * // { provider: 'anthropic', slug: 'anthropic', apiKey: '...' }
439
+ * // ]
440
+ * ```
441
+ */
442
+ declare function getDefaultProviders(env?: Record<string, string | undefined>): InlineProviderConfig[];
443
+ /**
444
+ * Merge user-provided providers with default providers.
445
+ *
446
+ * User-provided providers take precedence:
447
+ * - If a user specifies a provider with the same slug, the default is ignored
448
+ * - If a user specifies the same provider type with a different slug, both are kept
449
+ *
450
+ * @param userProviders - User-configured providers (may be undefined)
451
+ * @param env - Environment variables object (defaults to process.env)
452
+ * @returns Merged array of providers (user configs + non-conflicting defaults)
453
+ *
454
+ * @example
455
+ * ```typescript
456
+ * // User overrides openai with custom slug
457
+ * const merged = mergeWithDefaultProviders([
458
+ * { provider: 'openai', slug: 'my-openai', apiKey: 'custom-key' }
459
+ * ]);
460
+ * // Default 'openai' slug is still added if OPENAI_API_KEY is set,
461
+ * // user's 'my-openai' is kept as separate config
462
+ * ```
463
+ */
464
+ declare function mergeWithDefaultProviders(userProviders: InlineProviderConfig[] | undefined, env?: Record<string, string | undefined>): InlineProviderConfig[];
465
+ /**
466
+ * List of supported default provider environment variables.
467
+ * Useful for documentation or debugging.
468
+ */
469
+ declare const DEFAULT_PROVIDER_ENV_VARS: string[];
470
+ //#endregion
421
471
  //#region src/schemas/config.d.ts
422
- declare const llmopsConfigSchema: z.ZodObject<{
472
+ declare const llmopsConfigSchema: z.ZodPipe<z.ZodObject<{
423
473
  database: z.ZodOptional<z.ZodAny>;
424
474
  basePath: z.ZodString;
425
475
  schema: z.ZodDefault<z.ZodOptional<z.ZodString>>;
@@ -431,7 +481,25 @@ declare const llmopsConfigSchema: z.ZodObject<{
431
481
  requestTimeout: z.ZodOptional<z.ZodNumber>;
432
482
  forwardHeaders: z.ZodOptional<z.ZodArray<z.ZodString>>;
433
483
  }, z.core.$loose>>>;
434
- }, z.core.$strip>;
484
+ }, z.core.$strip>, z.ZodTransform<{
485
+ providers: InlineProviderConfig[];
486
+ basePath: string;
487
+ schema: string;
488
+ database?: any;
489
+ }, {
490
+ basePath: string;
491
+ schema: string;
492
+ database?: any;
493
+ providers?: {
494
+ [x: string]: unknown;
495
+ provider: string;
496
+ slug: string;
497
+ apiKey?: string | undefined;
498
+ customHost?: string | undefined;
499
+ requestTimeout?: number | undefined;
500
+ forwardHeaders?: string[] | undefined;
501
+ }[] | undefined;
502
+ }>>;
435
503
  /**
436
504
  * Validated LLMOps configuration
437
505
  *
@@ -3848,4 +3916,4 @@ declare class ManifestRouter {
3848
3916
  routeWithWeights(configIdOrSlug: string, environmentId: string, context?: RoutingContext): RoutingResult | null;
3849
3917
  }
3850
3918
  //#endregion
3851
- export { type AnthropicProviderConfig, type AnyProviderConfig, AuthClientDatabaseConfig, AuthClientOptions, type AzureAIProviderConfig, type AzureOpenAIProviderConfig, BaseCacheConfig, type BaseProviderConfig, type BedrockProviderConfig, CacheBackend, CacheBackendType, CacheConfig, CacheEntry, CacheOptions, CacheService, CacheStats, ChatCompletionCreateParamsBase, type Config, type ConfigVariant, type ConfigVariantsDataLayer, type ConfigVariantsTable, type ConfigsDataLayer, type ConfigsTable, type CortexProviderConfig, CostResult, type DataLayer, type Database, DatabaseConnection, DatabaseOptions, DatabaseType, type Dataset, type DatasetRecord, DatasetRecordsTable, type DatasetVersion, type DatasetVersionRecord, DatasetVersionRecordsTable, DatasetVersionsTable, type DatasetsDataLayer, DatasetsTable, type Environment, type EnvironmentSecret, type EnvironmentSecretsDataLayer, type EnvironmentSecretsTable, type EnvironmentsDataLayer, type EnvironmentsTable, FileCacheBackend, FileCacheConfig, type FireworksAIProviderConfig, type GatewayManifest, type GoogleProviderConfig, type GuardrailConfig, type GuardrailConfigsDataLayer, GuardrailConfigsTable, type GuardrailResult, type GuardrailResults, type HuggingFaceProviderConfig, type InlineProviderConfig, type InlineProvidersConfig, Insertable, LLMOpsClient, LLMOpsConfig, type LLMOpsConfigInput, type LLMRequest, type LLMRequestInsert, type LLMRequestsDataLayer, LLMRequestsTable, MS, ManifestBuilder, type ManifestConfig, type ManifestEnvironment, type ManifestGuardrail, type ManifestProviderGuardrailOverride, ManifestRouter, ManifestService, type ManifestTargetingRule, type ManifestVariantVersion, MemoryCacheBackend, MemoryCacheConfig, MigrationOptions, MigrationResult, type MistralAIProviderConfig, ModelPricing, ModelsDevPricingProvider, type OpenAIProviderConfig, type OracleProviderConfig, type Playground, type PlaygroundColumn, type PlaygroundResult, type PlaygroundResultsDataLayer, PlaygroundResultsTable, type PlaygroundRun, type PlaygroundRunsDataLayer, PlaygroundRunsTable, type PlaygroundsDataLayer, PlaygroundsTable, Prettify, PricingProvider, type ProviderConfig, type ProviderConfigMap, type ProviderConfigsDataLayer, ProviderConfigsTable, type ProviderGuardrailOverride, type ProviderGuardrailOverridesDataLayer, ProviderGuardrailOverridesTable, type ProvidersConfig, type RoutingContext, type RoutingResult, SCHEMA_METADATA, type SagemakerProviderConfig, Selectable, type StabilityAIProviderConfig, SupportedProviders, type TableName, type TargetingRule, type TargetingRulesDataLayer, type TargetingRulesTable, Updateable, UsageData, type ValidatedLLMOpsConfig, type Variant, VariantJsonData, type VariantVersion, type VariantVersionsDataLayer, VariantVersionsTable, type VariantsDataLayer, type VariantsTable, type VertexAIProviderConfig, type WorkersAIProviderConfig, type WorkspaceSettings, type WorkspaceSettingsDataLayer, WorkspaceSettingsTable, calculateCost, chatCompletionCreateParamsBaseSchema, configVariantsSchema, configsSchema, createConfigDataLayer, createConfigVariantDataLayer, createDataLayer, createDatabase, createDatabaseFromConnection, createDatasetsDataLayer, createEnvironmentDataLayer, createEnvironmentSecretDataLayer, createGuardrailConfigsDataLayer, createLLMRequestsDataLayer, createNeonDialect, createPlaygroundDataLayer, createPlaygroundResultsDataLayer, createPlaygroundRunsDataLayer, createProviderConfigsDataLayer, createProviderGuardrailOverridesDataLayer, createTargetingRulesDataLayer, createVariantDataLayer, createVariantVersionsDataLayer, createWorkspaceSettingsDataLayer, datasetRecordsSchema, datasetVersionRecordsSchema, datasetVersionsSchema, datasetsSchema, detectDatabaseType, dollarsToMicroDollars, environmentSecretsSchema, environmentsSchema, executeWithSchema, formatCost, gateway, generateId, getAuthClientOptions, getDefaultPricingProvider, getMigrations, guardrailConfigsSchema, llmRequestsSchema, llmopsConfigSchema, logger, matchType, microDollarsToDollars, parsePartialTableData, parseTableData, playgroundColumnSchema, playgroundResultsSchema, playgroundRunsSchema, playgroundsSchema, providerConfigsSchema, providerGuardrailOverridesSchema, runAutoMigrations, schemas, targetingRulesSchema, validateLLMOpsConfig, validatePartialTableData, validateTableData, variantJsonDataSchema, variantVersionsSchema, variantsSchema, workspaceSettingsSchema };
3919
+ export { type AnthropicProviderConfig, type AnyProviderConfig, AuthClientDatabaseConfig, AuthClientOptions, type AzureAIProviderConfig, type AzureOpenAIProviderConfig, BaseCacheConfig, type BaseProviderConfig, type BedrockProviderConfig, CacheBackend, CacheBackendType, CacheConfig, CacheEntry, CacheOptions, CacheService, CacheStats, ChatCompletionCreateParamsBase, type Config, type ConfigVariant, type ConfigVariantsDataLayer, type ConfigVariantsTable, type ConfigsDataLayer, type ConfigsTable, type CortexProviderConfig, CostResult, DEFAULT_PROVIDER_ENV_VARS, type DataLayer, type Database, DatabaseConnection, DatabaseOptions, DatabaseType, type Dataset, type DatasetRecord, DatasetRecordsTable, type DatasetVersion, type DatasetVersionRecord, DatasetVersionRecordsTable, DatasetVersionsTable, type DatasetsDataLayer, DatasetsTable, type Environment, type EnvironmentSecret, type EnvironmentSecretsDataLayer, type EnvironmentSecretsTable, type EnvironmentsDataLayer, type EnvironmentsTable, FileCacheBackend, FileCacheConfig, type FireworksAIProviderConfig, type GatewayManifest, type GoogleProviderConfig, type GuardrailConfig, type GuardrailConfigsDataLayer, GuardrailConfigsTable, type GuardrailResult, type GuardrailResults, type HuggingFaceProviderConfig, type InlineProviderConfig, type InlineProvidersConfig, Insertable, LLMOpsClient, LLMOpsConfig, type LLMOpsConfigInput, type LLMRequest, type LLMRequestInsert, type LLMRequestsDataLayer, LLMRequestsTable, MS, ManifestBuilder, type ManifestConfig, type ManifestEnvironment, type ManifestGuardrail, type ManifestProviderGuardrailOverride, ManifestRouter, ManifestService, type ManifestTargetingRule, type ManifestVariantVersion, MemoryCacheBackend, MemoryCacheConfig, MigrationOptions, MigrationResult, type MistralAIProviderConfig, ModelPricing, ModelsDevPricingProvider, type OpenAIProviderConfig, type OracleProviderConfig, type Playground, type PlaygroundColumn, type PlaygroundResult, type PlaygroundResultsDataLayer, PlaygroundResultsTable, type PlaygroundRun, type PlaygroundRunsDataLayer, PlaygroundRunsTable, type PlaygroundsDataLayer, PlaygroundsTable, Prettify, PricingProvider, type ProviderConfig, type ProviderConfigMap, type ProviderConfigsDataLayer, ProviderConfigsTable, type ProviderGuardrailOverride, type ProviderGuardrailOverridesDataLayer, ProviderGuardrailOverridesTable, type ProvidersConfig, type RoutingContext, type RoutingResult, SCHEMA_METADATA, type SagemakerProviderConfig, Selectable, type StabilityAIProviderConfig, SupportedProviders, type TableName, type TargetingRule, type TargetingRulesDataLayer, type TargetingRulesTable, Updateable, UsageData, type ValidatedLLMOpsConfig, type Variant, VariantJsonData, type VariantVersion, type VariantVersionsDataLayer, VariantVersionsTable, type VariantsDataLayer, type VariantsTable, type VertexAIProviderConfig, type WorkersAIProviderConfig, type WorkspaceSettings, type WorkspaceSettingsDataLayer, WorkspaceSettingsTable, calculateCost, chatCompletionCreateParamsBaseSchema, configVariantsSchema, configsSchema, createConfigDataLayer, createConfigVariantDataLayer, createDataLayer, createDatabase, createDatabaseFromConnection, createDatasetsDataLayer, createEnvironmentDataLayer, createEnvironmentSecretDataLayer, createGuardrailConfigsDataLayer, createLLMRequestsDataLayer, createNeonDialect, createPlaygroundDataLayer, createPlaygroundResultsDataLayer, createPlaygroundRunsDataLayer, createProviderConfigsDataLayer, createProviderGuardrailOverridesDataLayer, createTargetingRulesDataLayer, createVariantDataLayer, createVariantVersionsDataLayer, createWorkspaceSettingsDataLayer, datasetRecordsSchema, datasetVersionRecordsSchema, datasetVersionsSchema, datasetsSchema, detectDatabaseType, dollarsToMicroDollars, environmentSecretsSchema, environmentsSchema, executeWithSchema, formatCost, gateway, generateId, getAuthClientOptions, getDefaultPricingProvider, getDefaultProviders, getMigrations, guardrailConfigsSchema, llmRequestsSchema, llmopsConfigSchema, logger, matchType, mergeWithDefaultProviders, microDollarsToDollars, parsePartialTableData, parseTableData, playgroundColumnSchema, playgroundResultsSchema, playgroundRunsSchema, playgroundsSchema, providerConfigsSchema, providerGuardrailOverridesSchema, runAutoMigrations, schemas, targetingRulesSchema, validateLLMOpsConfig, validatePartialTableData, validateTableData, variantJsonDataSchema, variantVersionsSchema, variantsSchema, workspaceSettingsSchema };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { A as schemas, B as literal, C as llmRequestsSchema, D as playgroundsSchema, E as playgroundRunsSchema, F as zod_default, G as union, H as object, I as _enum, K as unknown, L as any, M as variantVersionsSchema, N as variantsSchema, O as providerConfigsSchema, P as workspaceSettingsSchema, R as array, S as guardrailConfigsSchema, T as playgroundResultsSchema, U as record, V as number, W as string, _ as datasetVersionRecordsSchema, a as matchType, b as environmentSecretsSchema, c as logger, d as validatePartialTableData, f as validateTableData, g as datasetRecordsSchema, h as configsSchema, i as getMigrations, j as targetingRulesSchema, k as providerGuardrailOverridesSchema, 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 datasetVersionsSchema, w as playgroundColumnSchema, x as environmentsSchema, y as datasetsSchema, z as boolean } from "./db-DdV835WT.mjs";
1
+ import { A as schemas, B as literal, C as llmRequestsSchema, D as playgroundsSchema, E as playgroundRunsSchema, F as zod_default, G as union, H as object, I as _enum, K as unknown, L as any, M as variantVersionsSchema, N as variantsSchema, O as providerConfigsSchema, P as workspaceSettingsSchema, R as array, S as guardrailConfigsSchema, T as playgroundResultsSchema, U as record, V as number, W as string, _ as datasetVersionRecordsSchema, a as matchType, b as environmentSecretsSchema, c as logger, d as validatePartialTableData, f as validateTableData, g as datasetRecordsSchema, h as configsSchema, i as getMigrations, j as targetingRulesSchema, k as providerGuardrailOverridesSchema, 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 datasetVersionsSchema, w as playgroundColumnSchema, x as environmentsSchema, y as datasetsSchema, z as boolean } from "./db-DX_QaIkx.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";
@@ -88,6 +88,171 @@ let SupportedProviders = /* @__PURE__ */ function(SupportedProviders$1) {
88
88
  return SupportedProviders$1;
89
89
  }({});
90
90
 
91
+ //#endregion
92
+ //#region src/providers/default-providers.ts
93
+ /**
94
+ * Top providers with simple API key authentication.
95
+ * Providers requiring additional config (Azure, Bedrock, Vertex) are excluded
96
+ * as they need endpoint/region info that can't be auto-detected.
97
+ */
98
+ const DEFAULT_PROVIDER_MAPPINGS = [
99
+ {
100
+ provider: SupportedProviders.OPENAI,
101
+ slug: "openai",
102
+ envVar: "OPENAI_API_KEY"
103
+ },
104
+ {
105
+ provider: SupportedProviders.ANTHROPIC,
106
+ slug: "anthropic",
107
+ envVar: "ANTHROPIC_API_KEY"
108
+ },
109
+ {
110
+ provider: SupportedProviders.GOOGLE,
111
+ slug: "google",
112
+ envVar: "GOOGLE_API_KEY"
113
+ },
114
+ {
115
+ provider: SupportedProviders.MISTRAL_AI,
116
+ slug: "mistral",
117
+ envVar: "MISTRAL_API_KEY"
118
+ },
119
+ {
120
+ provider: SupportedProviders.GROQ,
121
+ slug: "groq",
122
+ envVar: "GROQ_API_KEY"
123
+ },
124
+ {
125
+ provider: SupportedProviders.COHERE,
126
+ slug: "cohere",
127
+ envVar: "COHERE_API_KEY"
128
+ },
129
+ {
130
+ provider: SupportedProviders.TOGETHER_AI,
131
+ slug: "together",
132
+ envVar: "TOGETHER_API_KEY"
133
+ },
134
+ {
135
+ provider: SupportedProviders.PERPLEXITY_AI,
136
+ slug: "perplexity",
137
+ envVar: "PERPLEXITY_API_KEY"
138
+ },
139
+ {
140
+ provider: SupportedProviders.DEEPSEEK,
141
+ slug: "deepseek",
142
+ envVar: "DEEPSEEK_API_KEY"
143
+ },
144
+ {
145
+ provider: SupportedProviders.FIREWORKS_AI,
146
+ slug: "fireworks",
147
+ envVar: "FIREWORKS_API_KEY"
148
+ },
149
+ {
150
+ provider: SupportedProviders.OPENROUTER,
151
+ slug: "openrouter",
152
+ envVar: "OPENROUTER_API_KEY"
153
+ },
154
+ {
155
+ provider: SupportedProviders.X_AI,
156
+ slug: "xai",
157
+ envVar: "XAI_API_KEY"
158
+ },
159
+ {
160
+ provider: SupportedProviders.CEREBRAS,
161
+ slug: "cerebras",
162
+ envVar: "CEREBRAS_API_KEY"
163
+ },
164
+ {
165
+ provider: SupportedProviders.SAMBANOVA,
166
+ slug: "sambanova",
167
+ envVar: "SAMBANOVA_API_KEY"
168
+ },
169
+ {
170
+ provider: SupportedProviders.HUGGINGFACE,
171
+ slug: "huggingface",
172
+ envVar: "HUGGINGFACE_API_KEY"
173
+ },
174
+ {
175
+ provider: SupportedProviders.REPLICATE,
176
+ slug: "replicate",
177
+ envVar: "REPLICATE_API_TOKEN"
178
+ },
179
+ {
180
+ provider: SupportedProviders.AI21,
181
+ slug: "ai21",
182
+ envVar: "AI21_API_KEY"
183
+ },
184
+ {
185
+ provider: SupportedProviders.DEEPINFRA,
186
+ slug: "deepinfra",
187
+ envVar: "DEEPINFRA_API_KEY"
188
+ }
189
+ ];
190
+ /**
191
+ * Get default provider configurations from environment variables.
192
+ *
193
+ * Scans for known API key environment variables and creates
194
+ * InlineProviderConfig entries for each one found.
195
+ *
196
+ * @param env - Environment variables object (defaults to process.env)
197
+ * @returns Array of auto-configured providers
198
+ *
199
+ * @example
200
+ * ```typescript
201
+ * // With OPENAI_API_KEY and ANTHROPIC_API_KEY set in environment:
202
+ * const defaults = getDefaultProviders();
203
+ * // Returns:
204
+ * // [
205
+ * // { provider: 'openai', slug: 'openai', apiKey: '...' },
206
+ * // { provider: 'anthropic', slug: 'anthropic', apiKey: '...' }
207
+ * // ]
208
+ * ```
209
+ */
210
+ function getDefaultProviders(env = process.env) {
211
+ const providers = [];
212
+ for (const mapping of DEFAULT_PROVIDER_MAPPINGS) {
213
+ const apiKey = env[mapping.envVar];
214
+ if (apiKey) providers.push({
215
+ provider: mapping.provider,
216
+ slug: mapping.slug,
217
+ apiKey
218
+ });
219
+ }
220
+ return providers;
221
+ }
222
+ /**
223
+ * Merge user-provided providers with default providers.
224
+ *
225
+ * User-provided providers take precedence:
226
+ * - If a user specifies a provider with the same slug, the default is ignored
227
+ * - If a user specifies the same provider type with a different slug, both are kept
228
+ *
229
+ * @param userProviders - User-configured providers (may be undefined)
230
+ * @param env - Environment variables object (defaults to process.env)
231
+ * @returns Merged array of providers (user configs + non-conflicting defaults)
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * // User overrides openai with custom slug
236
+ * const merged = mergeWithDefaultProviders([
237
+ * { provider: 'openai', slug: 'my-openai', apiKey: 'custom-key' }
238
+ * ]);
239
+ * // Default 'openai' slug is still added if OPENAI_API_KEY is set,
240
+ * // user's 'my-openai' is kept as separate config
241
+ * ```
242
+ */
243
+ function mergeWithDefaultProviders(userProviders, env = process.env) {
244
+ const defaults = getDefaultProviders(env);
245
+ if (!userProviders || userProviders.length === 0) return defaults;
246
+ const userSlugs = new Set(userProviders.map((p) => p.slug));
247
+ const nonConflictingDefaults = defaults.filter((d) => !userSlugs.has(d.slug));
248
+ return [...userProviders, ...nonConflictingDefaults];
249
+ }
250
+ /**
251
+ * List of supported default provider environment variables.
252
+ * Useful for documentation or debugging.
253
+ */
254
+ const DEFAULT_PROVIDER_ENV_VARS = DEFAULT_PROVIDER_MAPPINGS.map((m) => m.envVar);
255
+
91
256
  //#endregion
92
257
  //#region src/schemas/openai.ts
93
258
  const chatCompletionContentPartTextSchema = object({
@@ -447,12 +612,19 @@ const inlineProviderConfigSchema = object({
447
612
  * Schema for providers array
448
613
  */
449
614
  const providersConfigSchema = array(inlineProviderConfigSchema).optional();
450
- const llmopsConfigSchema = object({
615
+ /**
616
+ * Base schema without refinements (used for transform)
617
+ */
618
+ const llmopsConfigBaseSchema = object({
451
619
  database: any().optional(),
452
620
  basePath: string().min(1, "Base path is required and cannot be empty").refine((path$1) => path$1.startsWith("/"), "Base path must start with a forward slash"),
453
621
  schema: string().optional().default("llmops"),
454
622
  providers: providersConfigSchema
455
- }).refine((config) => config.database !== void 0 || config.providers && config.providers.length > 0, "Either database or providers must be configured");
623
+ });
624
+ const llmopsConfigSchema = llmopsConfigBaseSchema.transform((config) => ({
625
+ ...config,
626
+ providers: mergeWithDefaultProviders(config.providers)
627
+ })).refine((config) => config.database !== void 0 || config.providers && config.providers.length > 0, "Either database or providers must be configured. Set a database connection, configure providers explicitly, or set API key environment variables (e.g., OPENAI_API_KEY).");
456
628
  function validateLLMOpsConfig(config) {
457
629
  const result = llmopsConfigSchema.safeParse(config);
458
630
  if (!result.success) {
@@ -3751,4 +3923,4 @@ var ManifestRouter = class {
3751
3923
  };
3752
3924
 
3753
3925
  //#endregion
3754
- export { CacheService, FileCacheBackend, MS, ManifestBuilder, ManifestRouter, ManifestService, MemoryCacheBackend, ModelsDevPricingProvider, SCHEMA_METADATA, SupportedProviders, calculateCost, chatCompletionCreateParamsBaseSchema, configVariantsSchema, configsSchema, createConfigDataLayer, createConfigVariantDataLayer, createDataLayer, createDatabase, createDatabaseFromConnection, createDatasetsDataLayer, createEnvironmentDataLayer, createEnvironmentSecretDataLayer, createGuardrailConfigsDataLayer, createLLMRequestsDataLayer, createNeonDialect, createPlaygroundDataLayer, createPlaygroundResultsDataLayer, createPlaygroundRunsDataLayer, createProviderConfigsDataLayer, createProviderGuardrailOverridesDataLayer, createTargetingRulesDataLayer, createVariantDataLayer, createVariantVersionsDataLayer, createWorkspaceSettingsDataLayer, datasetRecordsSchema, datasetVersionRecordsSchema, datasetVersionsSchema, datasetsSchema, detectDatabaseType, dollarsToMicroDollars, environmentSecretsSchema, environmentsSchema, executeWithSchema, formatCost, gateway, generateId, getAuthClientOptions, getDefaultPricingProvider, getMigrations, guardrailConfigsSchema, llmRequestsSchema, llmopsConfigSchema, logger, matchType, microDollarsToDollars, parsePartialTableData, parseTableData, playgroundColumnSchema, playgroundResultsSchema, playgroundRunsSchema, playgroundsSchema, providerConfigsSchema, providerGuardrailOverridesSchema, runAutoMigrations, schemas, targetingRulesSchema, validateLLMOpsConfig, validatePartialTableData, validateTableData, variantJsonDataSchema, variantVersionsSchema, variantsSchema, workspaceSettingsSchema };
3926
+ export { CacheService, DEFAULT_PROVIDER_ENV_VARS, FileCacheBackend, MS, ManifestBuilder, ManifestRouter, ManifestService, MemoryCacheBackend, ModelsDevPricingProvider, SCHEMA_METADATA, SupportedProviders, calculateCost, chatCompletionCreateParamsBaseSchema, configVariantsSchema, configsSchema, createConfigDataLayer, createConfigVariantDataLayer, createDataLayer, createDatabase, createDatabaseFromConnection, createDatasetsDataLayer, createEnvironmentDataLayer, createEnvironmentSecretDataLayer, createGuardrailConfigsDataLayer, createLLMRequestsDataLayer, createNeonDialect, createPlaygroundDataLayer, createPlaygroundResultsDataLayer, createPlaygroundRunsDataLayer, createProviderConfigsDataLayer, createProviderGuardrailOverridesDataLayer, createTargetingRulesDataLayer, createVariantDataLayer, createVariantVersionsDataLayer, createWorkspaceSettingsDataLayer, datasetRecordsSchema, datasetVersionRecordsSchema, datasetVersionsSchema, datasetsSchema, detectDatabaseType, dollarsToMicroDollars, environmentSecretsSchema, environmentsSchema, executeWithSchema, formatCost, gateway, generateId, getAuthClientOptions, getDefaultPricingProvider, getDefaultProviders, getMigrations, guardrailConfigsSchema, llmRequestsSchema, llmopsConfigSchema, logger, matchType, mergeWithDefaultProviders, microDollarsToDollars, parsePartialTableData, parseTableData, playgroundColumnSchema, playgroundResultsSchema, playgroundRunsSchema, playgroundsSchema, providerConfigsSchema, providerGuardrailOverridesSchema, runAutoMigrations, schemas, targetingRulesSchema, validateLLMOpsConfig, validatePartialTableData, validateTableData, variantJsonDataSchema, variantVersionsSchema, variantsSchema, workspaceSettingsSchema };
@@ -1,3 +1,3 @@
1
- const require_neon_dialect = require('./neon-dialect-fjqFddrY.cjs');
1
+ const require_neon_dialect = require('./neon-dialect-BBWePgOv.cjs');
2
2
 
3
3
  exports.createNeonDialect = require_neon_dialect.createNeonDialect;
@@ -1,4 +1,4 @@
1
- const require_db = require('./db-B6s2Fj5e.cjs');
1
+ const require_db = require('./db-B9jJgYNw.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-B6s2Fj5e.cjs');
1
+ const require_db = require('./db-B9jJgYNw.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.5.0-beta.3",
3
+ "version": "0.5.0",
4
4
  "description": "Core LLMOps functionality and utilities",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -55,7 +55,7 @@
55
55
  "kysely": "^0.28.8",
56
56
  "kysely-neon": "^2.0.2",
57
57
  "pino": "^10.1.0",
58
- "@llmops/gateway": "^0.5.0-beta.3"
58
+ "@llmops/gateway": "^0.5.0"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@types/json-logic-js": "^2.0.8",