@use-lattice/litmus 0.121.3

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.
Files changed (199) hide show
  1. package/LICENSE +19 -0
  2. package/dist/src/accounts-Bt1oJb1Z.cjs +219 -0
  3. package/dist/src/accounts-DjOU8Rm3.js +178 -0
  4. package/dist/src/agentic-utils-D03IiXQc.js +153 -0
  5. package/dist/src/agentic-utils-Dh7xaMQM.cjs +180 -0
  6. package/dist/src/agents-C6BIMlZa.js +231 -0
  7. package/dist/src/agents-DvIpNX1L.cjs +666 -0
  8. package/dist/src/agents-ZP0RP9vV.cjs +231 -0
  9. package/dist/src/agents-maJXdjbR.js +665 -0
  10. package/dist/src/aimlapi-BTbQjG2E.cjs +30 -0
  11. package/dist/src/aimlapi-CwMxqfXP.js +30 -0
  12. package/dist/src/audio-BBUdvsde.cjs +97 -0
  13. package/dist/src/audio-D5DPZ7I-.js +97 -0
  14. package/dist/src/base-BEysXrkq.cjs +222 -0
  15. package/dist/src/base-C451JQfq.js +193 -0
  16. package/dist/src/blobs-BY8MDmpo.js +230 -0
  17. package/dist/src/blobs-BgcNn97m.cjs +256 -0
  18. package/dist/src/cache-BBE_lsTA.cjs +4 -0
  19. package/dist/src/cache-BkrqU5Ba.js +237 -0
  20. package/dist/src/cache-DsCxFlsZ.cjs +297 -0
  21. package/dist/src/chat-CPJWDP6a.cjs +289 -0
  22. package/dist/src/chat-CXX3xzkk.cjs +811 -0
  23. package/dist/src/chat-CcDgZFJ4.js +787 -0
  24. package/dist/src/chat-Dz5ZeGO2.js +289 -0
  25. package/dist/src/chatkit-Dw0mKkML.cjs +1158 -0
  26. package/dist/src/chatkit-swAIVuea.js +1157 -0
  27. package/dist/src/chunk-DEq-mXcV.js +15 -0
  28. package/dist/src/claude-agent-sdk-BXZJtOg6.js +379 -0
  29. package/dist/src/claude-agent-sdk-CkfyjDoG.cjs +383 -0
  30. package/dist/src/cloudflare-ai-BzpJcqUH.js +161 -0
  31. package/dist/src/cloudflare-ai-Cmy_R1y2.cjs +161 -0
  32. package/dist/src/cloudflare-gateway-B9tVQKok.cjs +272 -0
  33. package/dist/src/cloudflare-gateway-DrD3ew3H.js +272 -0
  34. package/dist/src/codex-sdk-Dezj9Nwm.js +1056 -0
  35. package/dist/src/codex-sdk-Dl9D4k5B.cjs +1060 -0
  36. package/dist/src/cometapi-C-9YvCHC.js +54 -0
  37. package/dist/src/cometapi-DHgDKoO2.cjs +54 -0
  38. package/dist/src/completion-B8Ctyxpr.js +120 -0
  39. package/dist/src/completion-Cxrt08sj.cjs +131 -0
  40. package/dist/src/createHash-BwgE13yv.cjs +27 -0
  41. package/dist/src/createHash-DmPQkvBh.js +15 -0
  42. package/dist/src/docker-BiqcTwLv.js +80 -0
  43. package/dist/src/docker-C7tEJnP-.cjs +80 -0
  44. package/dist/src/esm-C62Zofr1.cjs +409 -0
  45. package/dist/src/esm-DMVc93eh.js +379 -0
  46. package/dist/src/evalResult-C3NJPQOo.cjs +301 -0
  47. package/dist/src/evalResult-C7JJAPBb.js +295 -0
  48. package/dist/src/evalResult-DoVTZZWI.cjs +2 -0
  49. package/dist/src/extractor-DnMD3fwt.cjs +391 -0
  50. package/dist/src/extractor-DtlL28vL.js +374 -0
  51. package/dist/src/fetch-BTxakTSg.cjs +1133 -0
  52. package/dist/src/fetch-DQckpUFz.js +928 -0
  53. package/dist/src/fileExtensions-DnqA1y9x.js +85 -0
  54. package/dist/src/fileExtensions-bYh77CN8.cjs +114 -0
  55. package/dist/src/genaiTracer-CyZrmaK0.cjs +268 -0
  56. package/dist/src/genaiTracer-D3fD9dNV.js +256 -0
  57. package/dist/src/graders-BNscxFrU.js +13644 -0
  58. package/dist/src/graders-D2oE9Msq.js +2 -0
  59. package/dist/src/graders-c0Ez_w-9.cjs +2 -0
  60. package/dist/src/graders-d0F2M3e9.cjs +14056 -0
  61. package/dist/src/image-0ZhE0VlR.cjs +280 -0
  62. package/dist/src/image-CWE1pdNv.js +257 -0
  63. package/dist/src/image-D9ZK6hwL.js +163 -0
  64. package/dist/src/image-DKZgZITg.cjs +163 -0
  65. package/dist/src/index.cjs +11366 -0
  66. package/dist/src/index.d.cts +19640 -0
  67. package/dist/src/index.d.ts +19641 -0
  68. package/dist/src/index.js +11306 -0
  69. package/dist/src/invariant-Ddh24eXh.js +25 -0
  70. package/dist/src/invariant-kfQ8Bu82.cjs +30 -0
  71. package/dist/src/knowledgeBase-BgPyGFUd.cjs +122 -0
  72. package/dist/src/knowledgeBase-DyHilYaP.js +122 -0
  73. package/dist/src/litellm-CyMeneHS.js +135 -0
  74. package/dist/src/litellm-DWDF73yF.cjs +135 -0
  75. package/dist/src/logger-C40ZGil9.js +717 -0
  76. package/dist/src/logger-DyfK9PBt.cjs +917 -0
  77. package/dist/src/luma-ray-BAU9X_ep.cjs +315 -0
  78. package/dist/src/luma-ray-nwVseBbv.js +313 -0
  79. package/dist/src/messages-B5ADWTTv.js +245 -0
  80. package/dist/src/messages-BCnZfqrS.cjs +257 -0
  81. package/dist/src/meteor-DLZZ3osF.cjs +134 -0
  82. package/dist/src/meteor-DUiCJRC-.js +134 -0
  83. package/dist/src/modelslab-00cveB8L.cjs +163 -0
  84. package/dist/src/modelslab-D9sCU_L7.js +163 -0
  85. package/dist/src/nova-reel-CTapvqYH.js +276 -0
  86. package/dist/src/nova-reel-DlWuuroF.cjs +278 -0
  87. package/dist/src/nova-sonic-5UPWfeMv.cjs +363 -0
  88. package/dist/src/nova-sonic-BhSwQNym.js +363 -0
  89. package/dist/src/openai-BWrJK9d8.cjs +52 -0
  90. package/dist/src/openai-DumO8WQn.js +47 -0
  91. package/dist/src/openclaw-B8brrjC_.cjs +577 -0
  92. package/dist/src/openclaw-Bkayww9q.js +571 -0
  93. package/dist/src/opencode-sdk-7xjoDNiM.cjs +562 -0
  94. package/dist/src/opencode-sdk-SGwAPxht.js +558 -0
  95. package/dist/src/otlpReceiver-CoAHfAN9.cjs +15 -0
  96. package/dist/src/otlpReceiver-oO3EQwI9.js +14 -0
  97. package/dist/src/providerRegistry-4yjhaEM8.js +45 -0
  98. package/dist/src/providerRegistry-DhV4rJIc.cjs +50 -0
  99. package/dist/src/providers-B5RJVG-7.cjs +33609 -0
  100. package/dist/src/providers-BdmZCLzV.js +33262 -0
  101. package/dist/src/providers-CxtRxn8e.js +2 -0
  102. package/dist/src/providers-DnQLNbx1.cjs +3 -0
  103. package/dist/src/pythonUtils-BD0druiM.cjs +275 -0
  104. package/dist/src/pythonUtils-IBhn5YGR.js +249 -0
  105. package/dist/src/quiverai-BDOwZBsM.cjs +213 -0
  106. package/dist/src/quiverai-D3JTF5lD.js +213 -0
  107. package/dist/src/responses-B2LCDCXZ.js +667 -0
  108. package/dist/src/responses-BvNm4Xv9.cjs +685 -0
  109. package/dist/src/rubyUtils-B0NwnfpY.cjs +245 -0
  110. package/dist/src/rubyUtils-BroxzZ7c.cjs +2 -0
  111. package/dist/src/rubyUtils-hqVw5UvJ.js +222 -0
  112. package/dist/src/sagemaker-Cno2V-Sx.js +689 -0
  113. package/dist/src/sagemaker-fV_KUgs5.cjs +691 -0
  114. package/dist/src/server-BOuAXb06.cjs +238 -0
  115. package/dist/src/server-CtI-EWzm.cjs +2 -0
  116. package/dist/src/server-Cy3DZymt.js +189 -0
  117. package/dist/src/slack-CP8xBePa.js +135 -0
  118. package/dist/src/slack-DSQ1yXVb.cjs +135 -0
  119. package/dist/src/store-BwDDaBjb.cjs +246 -0
  120. package/dist/src/store-DcbLC593.cjs +2 -0
  121. package/dist/src/store-IGpqMIkv.js +240 -0
  122. package/dist/src/tables-3Q2cL7So.cjs +373 -0
  123. package/dist/src/tables-Bi2fjr4W.js +288 -0
  124. package/dist/src/telemetry-Bg2WqF79.js +161 -0
  125. package/dist/src/telemetry-D0x6u5kX.cjs +166 -0
  126. package/dist/src/telemetry-DXNimrI0.cjs +2 -0
  127. package/dist/src/text-B_UCRPp2.js +22 -0
  128. package/dist/src/text-CW1cyrwj.cjs +33 -0
  129. package/dist/src/tokenUsageUtils-NYT-WKS6.js +138 -0
  130. package/dist/src/tokenUsageUtils-bVa1ga6f.cjs +173 -0
  131. package/dist/src/transcription-Cl_W16Pr.js +122 -0
  132. package/dist/src/transcription-yt1EecY8.cjs +124 -0
  133. package/dist/src/transform-BCtGrl_W.cjs +228 -0
  134. package/dist/src/transform-Bv6gG2MJ.cjs +1688 -0
  135. package/dist/src/transform-CY1wbpRy.js +1507 -0
  136. package/dist/src/transform-DU8rUL9P.cjs +2 -0
  137. package/dist/src/transform-yWaShiKr.js +216 -0
  138. package/dist/src/transformersAvailability-BGkzavwb.js +35 -0
  139. package/dist/src/transformersAvailability-DKoRtQLy.cjs +35 -0
  140. package/dist/src/types-5aqHpBwE.cjs +3769 -0
  141. package/dist/src/types-Bn6D9c4U.js +3300 -0
  142. package/dist/src/util-BkKlTkI2.js +293 -0
  143. package/dist/src/util-CTh0bfOm.cjs +1119 -0
  144. package/dist/src/util-D17oBwo7.cjs +328 -0
  145. package/dist/src/util-DsS_-v4p.js +613 -0
  146. package/dist/src/util-DuntT1Ga.js +951 -0
  147. package/dist/src/util-aWjdCYMI.cjs +667 -0
  148. package/dist/src/utils-CisQwpjA.js +94 -0
  149. package/dist/src/utils-yWamDvmz.cjs +123 -0
  150. package/dist/tsconfig.tsbuildinfo +1 -0
  151. package/drizzle/0000_lush_hellion.sql +36 -0
  152. package/drizzle/0001_wide_calypso.sql +3 -0
  153. package/drizzle/0002_tidy_juggernaut.sql +1 -0
  154. package/drizzle/0003_lively_naoko.sql +8 -0
  155. package/drizzle/0004_minor_peter_quill.sql +19 -0
  156. package/drizzle/0005_silky_millenium_guard.sql +2 -0
  157. package/drizzle/0006_harsh_caretaker.sql +42 -0
  158. package/drizzle/0007_cloudy_wong.sql +1 -0
  159. package/drizzle/0008_broad_boomer.sql +2 -0
  160. package/drizzle/0009_strong_marten_broadcloak.sql +19 -0
  161. package/drizzle/0010_needy_bishop.sql +11 -0
  162. package/drizzle/0011_moaning_millenium_guard.sql +1 -0
  163. package/drizzle/0012_late_marten_broadcloak.sql +2 -0
  164. package/drizzle/0013_previous_dormammu.sql +9 -0
  165. package/drizzle/0014_lazy_captain_universe.sql +2 -0
  166. package/drizzle/0015_zippy_wallop.sql +29 -0
  167. package/drizzle/0016_jazzy_zemo.sql +2 -0
  168. package/drizzle/0017_reflective_praxagora.sql +4 -0
  169. package/drizzle/0018_fat_vanisher.sql +22 -0
  170. package/drizzle/0019_new_clint_barton.sql +8 -0
  171. package/drizzle/0020_skinny_maverick.sql +1 -0
  172. package/drizzle/0021_mysterious_madelyne_pryor.sql +13 -0
  173. package/drizzle/0022_sleepy_ultimo.sql +25 -0
  174. package/drizzle/0023_wooden_mandrill.sql +2 -0
  175. package/drizzle/AGENTS.md +68 -0
  176. package/drizzle/CLAUDE.md +1 -0
  177. package/drizzle/meta/0000_snapshot.json +221 -0
  178. package/drizzle/meta/0001_snapshot.json +214 -0
  179. package/drizzle/meta/0002_snapshot.json +221 -0
  180. package/drizzle/meta/0005_snapshot.json +369 -0
  181. package/drizzle/meta/0006_snapshot.json +638 -0
  182. package/drizzle/meta/0007_snapshot.json +640 -0
  183. package/drizzle/meta/0008_snapshot.json +649 -0
  184. package/drizzle/meta/0009_snapshot.json +554 -0
  185. package/drizzle/meta/0010_snapshot.json +619 -0
  186. package/drizzle/meta/0011_snapshot.json +627 -0
  187. package/drizzle/meta/0012_snapshot.json +639 -0
  188. package/drizzle/meta/0013_snapshot.json +717 -0
  189. package/drizzle/meta/0014_snapshot.json +717 -0
  190. package/drizzle/meta/0015_snapshot.json +897 -0
  191. package/drizzle/meta/0016_snapshot.json +1031 -0
  192. package/drizzle/meta/0018_snapshot.json +1210 -0
  193. package/drizzle/meta/0019_snapshot.json +1165 -0
  194. package/drizzle/meta/0020_snapshot.json +1232 -0
  195. package/drizzle/meta/0021_snapshot.json +1311 -0
  196. package/drizzle/meta/0022_snapshot.json +1481 -0
  197. package/drizzle/meta/0023_snapshot.json +1496 -0
  198. package/drizzle/meta/_journal.json +174 -0
  199. package/package.json +240 -0
@@ -0,0 +1,373 @@
1
+ const require_logger = require("./logger-DyfK9PBt.cjs");
2
+ const require_types = require("./types-5aqHpBwE.cjs");
3
+ let path = require("path");
4
+ path = require_logger.__toESM(path);
5
+ let drizzle_orm = require("drizzle-orm");
6
+ let better_sqlite3 = require("better-sqlite3");
7
+ better_sqlite3 = require_logger.__toESM(better_sqlite3);
8
+ let drizzle_orm_better_sqlite3 = require("drizzle-orm/better-sqlite3");
9
+ let drizzle_orm_logger = require("drizzle-orm/logger");
10
+ let drizzle_orm_sqlite_core = require("drizzle-orm/sqlite-core");
11
+ //#region src/database/index.ts
12
+ var DrizzleLogWriter = class {
13
+ write(message) {
14
+ if (require_logger.getEnvBool("PROMPTFOO_ENABLE_DATABASE_LOGS", false)) require_logger.logger.debug(`Drizzle: ${message}`);
15
+ }
16
+ };
17
+ let dbInstance = null;
18
+ let sqliteInstance = null;
19
+ function getDbPath() {
20
+ return path.resolve(require_logger.getConfigDirectoryPath(true), "promptfoo.db");
21
+ }
22
+ function getDbSignalPath() {
23
+ return path.resolve(require_logger.getConfigDirectoryPath(true), "evalLastWritten");
24
+ }
25
+ function getDb() {
26
+ if (!dbInstance) {
27
+ const isMemoryDb = require_logger.getEnvBool("IS_TESTING");
28
+ sqliteInstance = new better_sqlite3.default(isMemoryDb ? ":memory:" : getDbPath());
29
+ sqliteInstance.pragma("foreign_keys = ON");
30
+ if (!isMemoryDb && !require_logger.getEnvBool("PROMPTFOO_DISABLE_WAL_MODE", false)) try {
31
+ sqliteInstance.pragma("journal_mode = WAL");
32
+ const result = sqliteInstance.prepare("PRAGMA journal_mode").get();
33
+ if (result.journal_mode.toLowerCase() === "wal") require_logger.logger.debug("Successfully enabled SQLite WAL mode");
34
+ else require_logger.logger.warn(`Failed to enable WAL mode (got '${result.journal_mode}'). Database performance may be reduced. This can happen on network filesystems. Set PROMPTFOO_DISABLE_WAL_MODE=true to suppress this warning.`);
35
+ sqliteInstance.pragma("wal_autocheckpoint = 1000");
36
+ sqliteInstance.pragma("synchronous = NORMAL");
37
+ } catch (err) {
38
+ require_logger.logger.warn(`Error configuring SQLite WAL mode: ${err}. Database will use default journal mode. Performance may be reduced. This can happen on network filesystems or certain containerized environments. Set PROMPTFOO_DISABLE_WAL_MODE=true to suppress this warning.`);
39
+ }
40
+ const drizzleLogger = new drizzle_orm_logger.DefaultLogger({ writer: new DrizzleLogWriter() });
41
+ dbInstance = (0, drizzle_orm_better_sqlite3.drizzle)(sqliteInstance, { logger: drizzleLogger });
42
+ }
43
+ return dbInstance;
44
+ }
45
+ //#endregion
46
+ //#region src/database/tables.ts
47
+ const promptsTable = (0, drizzle_orm_sqlite_core.sqliteTable)("prompts", {
48
+ id: (0, drizzle_orm_sqlite_core.text)("id").primaryKey(),
49
+ createdAt: (0, drizzle_orm_sqlite_core.integer)("created_at").notNull().default(drizzle_orm.sql`CURRENT_TIMESTAMP`),
50
+ prompt: (0, drizzle_orm_sqlite_core.text)("prompt").notNull()
51
+ }, (table) => ({ createdAtIdx: (0, drizzle_orm_sqlite_core.index)("prompts_created_at_idx").on(table.createdAt) }));
52
+ const tagsTable = (0, drizzle_orm_sqlite_core.sqliteTable)("tags", {
53
+ id: (0, drizzle_orm_sqlite_core.text)("id").primaryKey(),
54
+ name: (0, drizzle_orm_sqlite_core.text)("name").notNull(),
55
+ value: (0, drizzle_orm_sqlite_core.text)("value").notNull()
56
+ }, (table) => ({
57
+ nameIdx: (0, drizzle_orm_sqlite_core.index)("tags_name_idx").on(table.name),
58
+ uniqueNameValue: (0, drizzle_orm_sqlite_core.uniqueIndex)("tags_name_value_unique").on(table.name, table.value)
59
+ }));
60
+ const evalsTable = (0, drizzle_orm_sqlite_core.sqliteTable)("evals", {
61
+ id: (0, drizzle_orm_sqlite_core.text)("id").primaryKey(),
62
+ createdAt: (0, drizzle_orm_sqlite_core.integer)("created_at").notNull().default(drizzle_orm.sql`CURRENT_TIMESTAMP`),
63
+ author: (0, drizzle_orm_sqlite_core.text)("author"),
64
+ description: (0, drizzle_orm_sqlite_core.text)("description"),
65
+ results: (0, drizzle_orm_sqlite_core.text)("results", { mode: "json" }).$type().notNull(),
66
+ config: (0, drizzle_orm_sqlite_core.text)("config", { mode: "json" }).$type().notNull(),
67
+ prompts: (0, drizzle_orm_sqlite_core.text)("prompts", { mode: "json" }).$type(),
68
+ vars: (0, drizzle_orm_sqlite_core.text)("vars", { mode: "json" }).$type(),
69
+ runtimeOptions: (0, drizzle_orm_sqlite_core.text)("runtime_options", { mode: "json" }).$type(),
70
+ isRedteam: (0, drizzle_orm_sqlite_core.integer)("is_redteam", { mode: "boolean" }).notNull().default(false)
71
+ }, (table) => ({
72
+ createdAtIdx: (0, drizzle_orm_sqlite_core.index)("evals_created_at_idx").on(table.createdAt),
73
+ authorIdx: (0, drizzle_orm_sqlite_core.index)("evals_author_idx").on(table.author),
74
+ isRedteamIdx: (0, drizzle_orm_sqlite_core.index)("evals_is_redteam_idx").on(table.isRedteam)
75
+ }));
76
+ const evalResultsTable = (0, drizzle_orm_sqlite_core.sqliteTable)("eval_results", {
77
+ id: (0, drizzle_orm_sqlite_core.text)("id").primaryKey(),
78
+ createdAt: (0, drizzle_orm_sqlite_core.integer)("created_at").notNull().default(drizzle_orm.sql`CURRENT_TIMESTAMP`),
79
+ updatedAt: (0, drizzle_orm_sqlite_core.integer)("updated_at").notNull().default(drizzle_orm.sql`CURRENT_TIMESTAMP`),
80
+ evalId: (0, drizzle_orm_sqlite_core.text)("eval_id").notNull().references(() => evalsTable.id),
81
+ promptIdx: (0, drizzle_orm_sqlite_core.integer)("prompt_idx").notNull(),
82
+ testIdx: (0, drizzle_orm_sqlite_core.integer)("test_idx").notNull(),
83
+ testCase: (0, drizzle_orm_sqlite_core.text)("test_case", { mode: "json" }).$type().notNull(),
84
+ prompt: (0, drizzle_orm_sqlite_core.text)("prompt", { mode: "json" }).$type().notNull(),
85
+ promptId: (0, drizzle_orm_sqlite_core.text)("prompt_id").references(() => promptsTable.id),
86
+ provider: (0, drizzle_orm_sqlite_core.text)("provider", { mode: "json" }).$type().notNull(),
87
+ latencyMs: (0, drizzle_orm_sqlite_core.integer)("latency_ms"),
88
+ cost: (0, drizzle_orm_sqlite_core.real)("cost"),
89
+ response: (0, drizzle_orm_sqlite_core.text)("response", { mode: "json" }).$type(),
90
+ error: (0, drizzle_orm_sqlite_core.text)("error"),
91
+ failureReason: (0, drizzle_orm_sqlite_core.integer)("failure_reason").default(require_types.ResultFailureReason.NONE).notNull(),
92
+ success: (0, drizzle_orm_sqlite_core.integer)("success", { mode: "boolean" }).notNull(),
93
+ score: (0, drizzle_orm_sqlite_core.real)("score").notNull(),
94
+ gradingResult: (0, drizzle_orm_sqlite_core.text)("grading_result", { mode: "json" }).$type(),
95
+ namedScores: (0, drizzle_orm_sqlite_core.text)("named_scores", { mode: "json" }).$type(),
96
+ metadata: (0, drizzle_orm_sqlite_core.text)("metadata", { mode: "json" }).$type()
97
+ }, (table) => ({
98
+ evalIdIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_eval_id_idx").on(table.evalId),
99
+ testIdxIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_test_idx").on(table.testIdx),
100
+ evalTestIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_eval_test_idx").on(table.evalId, table.testIdx),
101
+ evalSuccessIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_eval_success_idx").on(table.evalId, table.success),
102
+ evalFailureIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_eval_failure_idx").on(table.evalId, table.failureReason),
103
+ evalTestSuccessIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_eval_test_success_idx").on(table.evalId, table.testIdx, table.success),
104
+ responseIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_response_idx").on(table.response),
105
+ gradingResultReasonIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_grading_result_reason_idx").on(drizzle_orm.sql`json_extract(${table.gradingResult}, '$.reason')`),
106
+ gradingResultCommentIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_grading_result_comment_idx").on(drizzle_orm.sql`json_extract(${table.gradingResult}, '$.comment')`),
107
+ testCaseVarsIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_test_case_vars_idx").on(drizzle_orm.sql`json_extract(${table.testCase}, '$.vars')`),
108
+ testCaseMetadataIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_test_case_metadata_idx").on(drizzle_orm.sql`json_extract(${table.metadata}, '$')`),
109
+ namedScoresIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_named_scores_idx").on(drizzle_orm.sql`json_extract(${table.namedScores}, '$')`),
110
+ metadataIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_metadata_idx").on(drizzle_orm.sql`json_extract(${table.metadata}, '$')`),
111
+ metadataPluginIdIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_metadata_plugin_id_idx").on(drizzle_orm.sql`json_extract(${table.metadata}, '$.pluginId')`),
112
+ metadataStrategyIdIdx: (0, drizzle_orm_sqlite_core.index)("eval_result_metadata_strategy_id_idx").on(drizzle_orm.sql`json_extract(${table.metadata}, '$.strategyId')`)
113
+ }));
114
+ const evalsToPromptsTable = (0, drizzle_orm_sqlite_core.sqliteTable)("evals_to_prompts", {
115
+ evalId: (0, drizzle_orm_sqlite_core.text)("eval_id").notNull().references(() => evalsTable.id, { onDelete: "cascade" }),
116
+ promptId: (0, drizzle_orm_sqlite_core.text)("prompt_id").notNull().references(() => promptsTable.id)
117
+ }, (t) => ({
118
+ pk: (0, drizzle_orm_sqlite_core.primaryKey)({ columns: [t.evalId, t.promptId] }),
119
+ evalIdIdx: (0, drizzle_orm_sqlite_core.index)("evals_to_prompts_eval_id_idx").on(t.evalId),
120
+ promptIdIdx: (0, drizzle_orm_sqlite_core.index)("evals_to_prompts_prompt_id_idx").on(t.promptId)
121
+ }));
122
+ (0, drizzle_orm.relations)(promptsTable, ({ many }) => ({ evalsToPrompts: many(evalsToPromptsTable) }));
123
+ const evalsToTagsTable = (0, drizzle_orm_sqlite_core.sqliteTable)("evals_to_tags", {
124
+ evalId: (0, drizzle_orm_sqlite_core.text)("eval_id").notNull().references(() => evalsTable.id),
125
+ tagId: (0, drizzle_orm_sqlite_core.text)("tag_id").notNull().references(() => tagsTable.id)
126
+ }, (t) => ({
127
+ pk: (0, drizzle_orm_sqlite_core.primaryKey)({ columns: [t.evalId, t.tagId] }),
128
+ evalIdIdx: (0, drizzle_orm_sqlite_core.index)("evals_to_tags_eval_id_idx").on(t.evalId),
129
+ tagIdIdx: (0, drizzle_orm_sqlite_core.index)("evals_to_tags_tag_id_idx").on(t.tagId)
130
+ }));
131
+ (0, drizzle_orm.relations)(tagsTable, ({ many }) => ({ evalsToTags: many(evalsToTagsTable) }));
132
+ (0, drizzle_orm.relations)(evalsToTagsTable, ({ one }) => ({
133
+ eval: one(evalsTable, {
134
+ fields: [evalsToTagsTable.evalId],
135
+ references: [evalsTable.id]
136
+ }),
137
+ tag: one(tagsTable, {
138
+ fields: [evalsToTagsTable.tagId],
139
+ references: [tagsTable.id]
140
+ })
141
+ }));
142
+ const blobAssetsTable = (0, drizzle_orm_sqlite_core.sqliteTable)("blob_assets", {
143
+ hash: (0, drizzle_orm_sqlite_core.text)("hash").primaryKey(),
144
+ sizeBytes: (0, drizzle_orm_sqlite_core.integer)("size_bytes").notNull(),
145
+ mimeType: (0, drizzle_orm_sqlite_core.text)("mime_type").notNull(),
146
+ provider: (0, drizzle_orm_sqlite_core.text)("provider").notNull(),
147
+ createdAt: (0, drizzle_orm_sqlite_core.integer)("created_at").notNull().default(drizzle_orm.sql`CURRENT_TIMESTAMP`)
148
+ }, (table) => ({
149
+ providerIdx: (0, drizzle_orm_sqlite_core.index)("blob_assets_provider_idx").on(table.provider),
150
+ createdAtIdx: (0, drizzle_orm_sqlite_core.index)("blob_assets_created_at_idx").on(table.createdAt),
151
+ mimeTypeIdx: (0, drizzle_orm_sqlite_core.index)("blob_assets_mime_type_idx").on(table.mimeType)
152
+ }));
153
+ const blobReferencesTable = (0, drizzle_orm_sqlite_core.sqliteTable)("blob_references", {
154
+ id: (0, drizzle_orm_sqlite_core.text)("id").primaryKey(),
155
+ blobHash: (0, drizzle_orm_sqlite_core.text)("blob_hash").notNull().references(() => blobAssetsTable.hash, { onDelete: "cascade" }),
156
+ evalId: (0, drizzle_orm_sqlite_core.text)("eval_id").notNull().references(() => evalsTable.id, { onDelete: "cascade" }),
157
+ testIdx: (0, drizzle_orm_sqlite_core.integer)("test_idx"),
158
+ promptIdx: (0, drizzle_orm_sqlite_core.integer)("prompt_idx"),
159
+ location: (0, drizzle_orm_sqlite_core.text)("location"),
160
+ kind: (0, drizzle_orm_sqlite_core.text)("kind"),
161
+ createdAt: (0, drizzle_orm_sqlite_core.integer)("created_at").notNull().default(drizzle_orm.sql`CURRENT_TIMESTAMP`)
162
+ }, (table) => ({
163
+ blobIdx: (0, drizzle_orm_sqlite_core.index)("blob_references_blob_idx").on(table.blobHash),
164
+ evalIdx: (0, drizzle_orm_sqlite_core.index)("blob_references_eval_idx").on(table.evalId),
165
+ blobCreatedAtIdx: (0, drizzle_orm_sqlite_core.index)("blob_references_blob_created_at_idx").on(table.blobHash, table.createdAt)
166
+ }));
167
+ const datasetsTable = (0, drizzle_orm_sqlite_core.sqliteTable)("datasets", {
168
+ id: (0, drizzle_orm_sqlite_core.text)("id").primaryKey(),
169
+ tests: (0, drizzle_orm_sqlite_core.text)("tests", { mode: "json" }).$type(),
170
+ createdAt: (0, drizzle_orm_sqlite_core.integer)("created_at").notNull().default(drizzle_orm.sql`CURRENT_TIMESTAMP`)
171
+ }, (table) => ({ createdAtIdx: (0, drizzle_orm_sqlite_core.index)("datasets_created_at_idx").on(table.createdAt) }));
172
+ const evalsToDatasetsTable = (0, drizzle_orm_sqlite_core.sqliteTable)("evals_to_datasets", {
173
+ evalId: (0, drizzle_orm_sqlite_core.text)("eval_id").notNull().references(() => evalsTable.id),
174
+ datasetId: (0, drizzle_orm_sqlite_core.text)("dataset_id").notNull().references(() => datasetsTable.id)
175
+ }, (t) => ({
176
+ pk: (0, drizzle_orm_sqlite_core.primaryKey)({ columns: [t.evalId, t.datasetId] }),
177
+ evalIdIdx: (0, drizzle_orm_sqlite_core.index)("evals_to_datasets_eval_id_idx").on(t.evalId),
178
+ datasetIdIdx: (0, drizzle_orm_sqlite_core.index)("evals_to_datasets_dataset_id_idx").on(t.datasetId)
179
+ }));
180
+ (0, drizzle_orm.relations)(datasetsTable, ({ many }) => ({ evalsToDatasets: many(evalsToDatasetsTable) }));
181
+ (0, drizzle_orm.relations)(evalsTable, ({ many }) => ({
182
+ evalsToPrompts: many(evalsToPromptsTable),
183
+ evalsToDatasets: many(evalsToDatasetsTable),
184
+ evalsToTags: many(evalsToTagsTable)
185
+ }));
186
+ (0, drizzle_orm.relations)(evalsToPromptsTable, ({ one }) => ({
187
+ eval: one(evalsTable, {
188
+ fields: [evalsToPromptsTable.evalId],
189
+ references: [evalsTable.id]
190
+ }),
191
+ prompt: one(promptsTable, {
192
+ fields: [evalsToPromptsTable.promptId],
193
+ references: [promptsTable.id]
194
+ })
195
+ }));
196
+ (0, drizzle_orm.relations)(evalsToDatasetsTable, ({ one }) => ({
197
+ eval: one(evalsTable, {
198
+ fields: [evalsToDatasetsTable.evalId],
199
+ references: [evalsTable.id]
200
+ }),
201
+ dataset: one(datasetsTable, {
202
+ fields: [evalsToDatasetsTable.datasetId],
203
+ references: [datasetsTable.id]
204
+ })
205
+ }));
206
+ (0, drizzle_orm_sqlite_core.sqliteTable)("configs", {
207
+ id: (0, drizzle_orm_sqlite_core.text)("id").primaryKey(),
208
+ createdAt: (0, drizzle_orm_sqlite_core.integer)("created_at").notNull().default(drizzle_orm.sql`CURRENT_TIMESTAMP`),
209
+ updatedAt: (0, drizzle_orm_sqlite_core.integer)("updated_at").notNull().default(drizzle_orm.sql`CURRENT_TIMESTAMP`),
210
+ name: (0, drizzle_orm_sqlite_core.text)("name").notNull(),
211
+ type: (0, drizzle_orm_sqlite_core.text)("type").notNull(),
212
+ config: (0, drizzle_orm_sqlite_core.text)("config", { mode: "json" }).notNull()
213
+ }, (table) => ({
214
+ createdAtIdx: (0, drizzle_orm_sqlite_core.index)("configs_created_at_idx").on(table.createdAt),
215
+ typeIdx: (0, drizzle_orm_sqlite_core.index)("configs_type_idx").on(table.type)
216
+ }));
217
+ (0, drizzle_orm_sqlite_core.sqliteTable)("model_audits", {
218
+ id: (0, drizzle_orm_sqlite_core.text)("id").primaryKey(),
219
+ createdAt: (0, drizzle_orm_sqlite_core.integer)("created_at").notNull().default(drizzle_orm.sql`CURRENT_TIMESTAMP`),
220
+ updatedAt: (0, drizzle_orm_sqlite_core.integer)("updated_at").notNull().default(drizzle_orm.sql`CURRENT_TIMESTAMP`),
221
+ name: (0, drizzle_orm_sqlite_core.text)("name"),
222
+ author: (0, drizzle_orm_sqlite_core.text)("author"),
223
+ modelPath: (0, drizzle_orm_sqlite_core.text)("model_path").notNull(),
224
+ modelType: (0, drizzle_orm_sqlite_core.text)("model_type"),
225
+ results: (0, drizzle_orm_sqlite_core.text)("results", { mode: "json" }).$type().notNull(),
226
+ checks: (0, drizzle_orm_sqlite_core.text)("checks", { mode: "json" }).$type(),
227
+ issues: (0, drizzle_orm_sqlite_core.text)("issues", { mode: "json" }).$type(),
228
+ hasErrors: (0, drizzle_orm_sqlite_core.integer)("has_errors", { mode: "boolean" }).notNull(),
229
+ totalChecks: (0, drizzle_orm_sqlite_core.integer)("total_checks"),
230
+ passedChecks: (0, drizzle_orm_sqlite_core.integer)("passed_checks"),
231
+ failedChecks: (0, drizzle_orm_sqlite_core.integer)("failed_checks"),
232
+ metadata: (0, drizzle_orm_sqlite_core.text)("metadata", { mode: "json" }).$type(),
233
+ modelId: (0, drizzle_orm_sqlite_core.text)("model_id"),
234
+ revisionSha: (0, drizzle_orm_sqlite_core.text)("revision_sha"),
235
+ contentHash: (0, drizzle_orm_sqlite_core.text)("content_hash"),
236
+ modelSource: (0, drizzle_orm_sqlite_core.text)("model_source"),
237
+ sourceLastModified: (0, drizzle_orm_sqlite_core.integer)("source_last_modified"),
238
+ scannerVersion: (0, drizzle_orm_sqlite_core.text)("scanner_version")
239
+ }, (table) => ({
240
+ createdAtIdx: (0, drizzle_orm_sqlite_core.index)("model_audits_created_at_idx").on(table.createdAt),
241
+ modelPathIdx: (0, drizzle_orm_sqlite_core.index)("model_audits_model_path_idx").on(table.modelPath),
242
+ hasErrorsIdx: (0, drizzle_orm_sqlite_core.index)("model_audits_has_errors_idx").on(table.hasErrors),
243
+ modelTypeIdx: (0, drizzle_orm_sqlite_core.index)("model_audits_model_type_idx").on(table.modelType),
244
+ modelIdIdx: (0, drizzle_orm_sqlite_core.index)("model_audits_model_id_idx").on(table.modelId),
245
+ revisionShaIdx: (0, drizzle_orm_sqlite_core.index)("model_audits_revision_sha_idx").on(table.revisionSha),
246
+ contentHashIdx: (0, drizzle_orm_sqlite_core.index)("model_audits_content_hash_idx").on(table.contentHash),
247
+ modelRevisionIdx: (0, drizzle_orm_sqlite_core.index)("model_audits_model_revision_idx").on(table.modelId, table.revisionSha),
248
+ modelContentIdx: (0, drizzle_orm_sqlite_core.index)("model_audits_model_content_idx").on(table.modelId, table.contentHash)
249
+ }));
250
+ const tracesTable = (0, drizzle_orm_sqlite_core.sqliteTable)("traces", {
251
+ id: (0, drizzle_orm_sqlite_core.text)("id").primaryKey(),
252
+ traceId: (0, drizzle_orm_sqlite_core.text)("trace_id").notNull().unique(),
253
+ evaluationId: (0, drizzle_orm_sqlite_core.text)("evaluation_id").notNull().references(() => evalsTable.id),
254
+ testCaseId: (0, drizzle_orm_sqlite_core.text)("test_case_id").notNull(),
255
+ createdAt: (0, drizzle_orm_sqlite_core.integer)("created_at").notNull().default(drizzle_orm.sql`CURRENT_TIMESTAMP`),
256
+ metadata: (0, drizzle_orm_sqlite_core.text)("metadata", { mode: "json" }).$type()
257
+ }, (table) => ({
258
+ evaluationIdx: (0, drizzle_orm_sqlite_core.index)("traces_evaluation_idx").on(table.evaluationId),
259
+ traceIdIdx: (0, drizzle_orm_sqlite_core.index)("traces_trace_id_idx").on(table.traceId)
260
+ }));
261
+ const spansTable = (0, drizzle_orm_sqlite_core.sqliteTable)("spans", {
262
+ id: (0, drizzle_orm_sqlite_core.text)("id").primaryKey(),
263
+ traceId: (0, drizzle_orm_sqlite_core.text)("trace_id").notNull().references(() => tracesTable.traceId),
264
+ spanId: (0, drizzle_orm_sqlite_core.text)("span_id").notNull(),
265
+ parentSpanId: (0, drizzle_orm_sqlite_core.text)("parent_span_id"),
266
+ name: (0, drizzle_orm_sqlite_core.text)("name").notNull(),
267
+ startTime: (0, drizzle_orm_sqlite_core.integer)("start_time").notNull(),
268
+ endTime: (0, drizzle_orm_sqlite_core.integer)("end_time"),
269
+ attributes: (0, drizzle_orm_sqlite_core.text)("attributes", { mode: "json" }).$type(),
270
+ statusCode: (0, drizzle_orm_sqlite_core.integer)("status_code"),
271
+ statusMessage: (0, drizzle_orm_sqlite_core.text)("status_message")
272
+ }, (table) => ({
273
+ traceIdIdx: (0, drizzle_orm_sqlite_core.index)("spans_trace_id_idx").on(table.traceId),
274
+ spanIdIdx: (0, drizzle_orm_sqlite_core.index)("spans_span_id_idx").on(table.spanId)
275
+ }));
276
+ (0, drizzle_orm.relations)(tracesTable, ({ one, many }) => ({
277
+ eval: one(evalsTable, {
278
+ fields: [tracesTable.evaluationId],
279
+ references: [evalsTable.id]
280
+ }),
281
+ spans: many(spansTable)
282
+ }));
283
+ (0, drizzle_orm.relations)(spansTable, ({ one }) => ({ trace: one(tracesTable, {
284
+ fields: [spansTable.traceId],
285
+ references: [tracesTable.traceId]
286
+ }) }));
287
+ //#endregion
288
+ Object.defineProperty(exports, "blobAssetsTable", {
289
+ enumerable: true,
290
+ get: function() {
291
+ return blobAssetsTable;
292
+ }
293
+ });
294
+ Object.defineProperty(exports, "blobReferencesTable", {
295
+ enumerable: true,
296
+ get: function() {
297
+ return blobReferencesTable;
298
+ }
299
+ });
300
+ Object.defineProperty(exports, "datasetsTable", {
301
+ enumerable: true,
302
+ get: function() {
303
+ return datasetsTable;
304
+ }
305
+ });
306
+ Object.defineProperty(exports, "evalResultsTable", {
307
+ enumerable: true,
308
+ get: function() {
309
+ return evalResultsTable;
310
+ }
311
+ });
312
+ Object.defineProperty(exports, "evalsTable", {
313
+ enumerable: true,
314
+ get: function() {
315
+ return evalsTable;
316
+ }
317
+ });
318
+ Object.defineProperty(exports, "evalsToDatasetsTable", {
319
+ enumerable: true,
320
+ get: function() {
321
+ return evalsToDatasetsTable;
322
+ }
323
+ });
324
+ Object.defineProperty(exports, "evalsToPromptsTable", {
325
+ enumerable: true,
326
+ get: function() {
327
+ return evalsToPromptsTable;
328
+ }
329
+ });
330
+ Object.defineProperty(exports, "evalsToTagsTable", {
331
+ enumerable: true,
332
+ get: function() {
333
+ return evalsToTagsTable;
334
+ }
335
+ });
336
+ Object.defineProperty(exports, "getDb", {
337
+ enumerable: true,
338
+ get: function() {
339
+ return getDb;
340
+ }
341
+ });
342
+ Object.defineProperty(exports, "getDbSignalPath", {
343
+ enumerable: true,
344
+ get: function() {
345
+ return getDbSignalPath;
346
+ }
347
+ });
348
+ Object.defineProperty(exports, "promptsTable", {
349
+ enumerable: true,
350
+ get: function() {
351
+ return promptsTable;
352
+ }
353
+ });
354
+ Object.defineProperty(exports, "spansTable", {
355
+ enumerable: true,
356
+ get: function() {
357
+ return spansTable;
358
+ }
359
+ });
360
+ Object.defineProperty(exports, "tagsTable", {
361
+ enumerable: true,
362
+ get: function() {
363
+ return tagsTable;
364
+ }
365
+ });
366
+ Object.defineProperty(exports, "tracesTable", {
367
+ enumerable: true,
368
+ get: function() {
369
+ return tracesTable;
370
+ }
371
+ });
372
+
373
+ //# sourceMappingURL=tables-3Q2cL7So.cjs.map
@@ -0,0 +1,288 @@
1
+ import { _ as getConfigDirectoryPath, r as logger, v as getEnvBool } from "./logger-C40ZGil9.js";
2
+ import { g as ResultFailureReason } from "./types-Bn6D9c4U.js";
3
+ import * as path$1 from "path";
4
+ import { relations, sql } from "drizzle-orm";
5
+ import Database from "better-sqlite3";
6
+ import { drizzle } from "drizzle-orm/better-sqlite3";
7
+ import { DefaultLogger } from "drizzle-orm/logger";
8
+ import { index, integer, primaryKey, real, sqliteTable, text, uniqueIndex } from "drizzle-orm/sqlite-core";
9
+ //#region src/database/index.ts
10
+ var DrizzleLogWriter = class {
11
+ write(message) {
12
+ if (getEnvBool("PROMPTFOO_ENABLE_DATABASE_LOGS", false)) logger.debug(`Drizzle: ${message}`);
13
+ }
14
+ };
15
+ let dbInstance = null;
16
+ let sqliteInstance = null;
17
+ function getDbPath() {
18
+ return path$1.resolve(getConfigDirectoryPath(true), "promptfoo.db");
19
+ }
20
+ function getDbSignalPath() {
21
+ return path$1.resolve(getConfigDirectoryPath(true), "evalLastWritten");
22
+ }
23
+ function getDb() {
24
+ if (!dbInstance) {
25
+ const isMemoryDb = getEnvBool("IS_TESTING");
26
+ sqliteInstance = new Database(isMemoryDb ? ":memory:" : getDbPath());
27
+ sqliteInstance.pragma("foreign_keys = ON");
28
+ if (!isMemoryDb && !getEnvBool("PROMPTFOO_DISABLE_WAL_MODE", false)) try {
29
+ sqliteInstance.pragma("journal_mode = WAL");
30
+ const result = sqliteInstance.prepare("PRAGMA journal_mode").get();
31
+ if (result.journal_mode.toLowerCase() === "wal") logger.debug("Successfully enabled SQLite WAL mode");
32
+ else logger.warn(`Failed to enable WAL mode (got '${result.journal_mode}'). Database performance may be reduced. This can happen on network filesystems. Set PROMPTFOO_DISABLE_WAL_MODE=true to suppress this warning.`);
33
+ sqliteInstance.pragma("wal_autocheckpoint = 1000");
34
+ sqliteInstance.pragma("synchronous = NORMAL");
35
+ } catch (err) {
36
+ logger.warn(`Error configuring SQLite WAL mode: ${err}. Database will use default journal mode. Performance may be reduced. This can happen on network filesystems or certain containerized environments. Set PROMPTFOO_DISABLE_WAL_MODE=true to suppress this warning.`);
37
+ }
38
+ const drizzleLogger = new DefaultLogger({ writer: new DrizzleLogWriter() });
39
+ dbInstance = drizzle(sqliteInstance, { logger: drizzleLogger });
40
+ }
41
+ return dbInstance;
42
+ }
43
+ //#endregion
44
+ //#region src/database/tables.ts
45
+ const promptsTable = sqliteTable("prompts", {
46
+ id: text("id").primaryKey(),
47
+ createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`),
48
+ prompt: text("prompt").notNull()
49
+ }, (table) => ({ createdAtIdx: index("prompts_created_at_idx").on(table.createdAt) }));
50
+ const tagsTable = sqliteTable("tags", {
51
+ id: text("id").primaryKey(),
52
+ name: text("name").notNull(),
53
+ value: text("value").notNull()
54
+ }, (table) => ({
55
+ nameIdx: index("tags_name_idx").on(table.name),
56
+ uniqueNameValue: uniqueIndex("tags_name_value_unique").on(table.name, table.value)
57
+ }));
58
+ const evalsTable = sqliteTable("evals", {
59
+ id: text("id").primaryKey(),
60
+ createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`),
61
+ author: text("author"),
62
+ description: text("description"),
63
+ results: text("results", { mode: "json" }).$type().notNull(),
64
+ config: text("config", { mode: "json" }).$type().notNull(),
65
+ prompts: text("prompts", { mode: "json" }).$type(),
66
+ vars: text("vars", { mode: "json" }).$type(),
67
+ runtimeOptions: text("runtime_options", { mode: "json" }).$type(),
68
+ isRedteam: integer("is_redteam", { mode: "boolean" }).notNull().default(false)
69
+ }, (table) => ({
70
+ createdAtIdx: index("evals_created_at_idx").on(table.createdAt),
71
+ authorIdx: index("evals_author_idx").on(table.author),
72
+ isRedteamIdx: index("evals_is_redteam_idx").on(table.isRedteam)
73
+ }));
74
+ const evalResultsTable = sqliteTable("eval_results", {
75
+ id: text("id").primaryKey(),
76
+ createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`),
77
+ updatedAt: integer("updated_at").notNull().default(sql`CURRENT_TIMESTAMP`),
78
+ evalId: text("eval_id").notNull().references(() => evalsTable.id),
79
+ promptIdx: integer("prompt_idx").notNull(),
80
+ testIdx: integer("test_idx").notNull(),
81
+ testCase: text("test_case", { mode: "json" }).$type().notNull(),
82
+ prompt: text("prompt", { mode: "json" }).$type().notNull(),
83
+ promptId: text("prompt_id").references(() => promptsTable.id),
84
+ provider: text("provider", { mode: "json" }).$type().notNull(),
85
+ latencyMs: integer("latency_ms"),
86
+ cost: real("cost"),
87
+ response: text("response", { mode: "json" }).$type(),
88
+ error: text("error"),
89
+ failureReason: integer("failure_reason").default(ResultFailureReason.NONE).notNull(),
90
+ success: integer("success", { mode: "boolean" }).notNull(),
91
+ score: real("score").notNull(),
92
+ gradingResult: text("grading_result", { mode: "json" }).$type(),
93
+ namedScores: text("named_scores", { mode: "json" }).$type(),
94
+ metadata: text("metadata", { mode: "json" }).$type()
95
+ }, (table) => ({
96
+ evalIdIdx: index("eval_result_eval_id_idx").on(table.evalId),
97
+ testIdxIdx: index("eval_result_test_idx").on(table.testIdx),
98
+ evalTestIdx: index("eval_result_eval_test_idx").on(table.evalId, table.testIdx),
99
+ evalSuccessIdx: index("eval_result_eval_success_idx").on(table.evalId, table.success),
100
+ evalFailureIdx: index("eval_result_eval_failure_idx").on(table.evalId, table.failureReason),
101
+ evalTestSuccessIdx: index("eval_result_eval_test_success_idx").on(table.evalId, table.testIdx, table.success),
102
+ responseIdx: index("eval_result_response_idx").on(table.response),
103
+ gradingResultReasonIdx: index("eval_result_grading_result_reason_idx").on(sql`json_extract(${table.gradingResult}, '$.reason')`),
104
+ gradingResultCommentIdx: index("eval_result_grading_result_comment_idx").on(sql`json_extract(${table.gradingResult}, '$.comment')`),
105
+ testCaseVarsIdx: index("eval_result_test_case_vars_idx").on(sql`json_extract(${table.testCase}, '$.vars')`),
106
+ testCaseMetadataIdx: index("eval_result_test_case_metadata_idx").on(sql`json_extract(${table.metadata}, '$')`),
107
+ namedScoresIdx: index("eval_result_named_scores_idx").on(sql`json_extract(${table.namedScores}, '$')`),
108
+ metadataIdx: index("eval_result_metadata_idx").on(sql`json_extract(${table.metadata}, '$')`),
109
+ metadataPluginIdIdx: index("eval_result_metadata_plugin_id_idx").on(sql`json_extract(${table.metadata}, '$.pluginId')`),
110
+ metadataStrategyIdIdx: index("eval_result_metadata_strategy_id_idx").on(sql`json_extract(${table.metadata}, '$.strategyId')`)
111
+ }));
112
+ const evalsToPromptsTable = sqliteTable("evals_to_prompts", {
113
+ evalId: text("eval_id").notNull().references(() => evalsTable.id, { onDelete: "cascade" }),
114
+ promptId: text("prompt_id").notNull().references(() => promptsTable.id)
115
+ }, (t) => ({
116
+ pk: primaryKey({ columns: [t.evalId, t.promptId] }),
117
+ evalIdIdx: index("evals_to_prompts_eval_id_idx").on(t.evalId),
118
+ promptIdIdx: index("evals_to_prompts_prompt_id_idx").on(t.promptId)
119
+ }));
120
+ relations(promptsTable, ({ many }) => ({ evalsToPrompts: many(evalsToPromptsTable) }));
121
+ const evalsToTagsTable = sqliteTable("evals_to_tags", {
122
+ evalId: text("eval_id").notNull().references(() => evalsTable.id),
123
+ tagId: text("tag_id").notNull().references(() => tagsTable.id)
124
+ }, (t) => ({
125
+ pk: primaryKey({ columns: [t.evalId, t.tagId] }),
126
+ evalIdIdx: index("evals_to_tags_eval_id_idx").on(t.evalId),
127
+ tagIdIdx: index("evals_to_tags_tag_id_idx").on(t.tagId)
128
+ }));
129
+ relations(tagsTable, ({ many }) => ({ evalsToTags: many(evalsToTagsTable) }));
130
+ relations(evalsToTagsTable, ({ one }) => ({
131
+ eval: one(evalsTable, {
132
+ fields: [evalsToTagsTable.evalId],
133
+ references: [evalsTable.id]
134
+ }),
135
+ tag: one(tagsTable, {
136
+ fields: [evalsToTagsTable.tagId],
137
+ references: [tagsTable.id]
138
+ })
139
+ }));
140
+ const blobAssetsTable = sqliteTable("blob_assets", {
141
+ hash: text("hash").primaryKey(),
142
+ sizeBytes: integer("size_bytes").notNull(),
143
+ mimeType: text("mime_type").notNull(),
144
+ provider: text("provider").notNull(),
145
+ createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`)
146
+ }, (table) => ({
147
+ providerIdx: index("blob_assets_provider_idx").on(table.provider),
148
+ createdAtIdx: index("blob_assets_created_at_idx").on(table.createdAt),
149
+ mimeTypeIdx: index("blob_assets_mime_type_idx").on(table.mimeType)
150
+ }));
151
+ const blobReferencesTable = sqliteTable("blob_references", {
152
+ id: text("id").primaryKey(),
153
+ blobHash: text("blob_hash").notNull().references(() => blobAssetsTable.hash, { onDelete: "cascade" }),
154
+ evalId: text("eval_id").notNull().references(() => evalsTable.id, { onDelete: "cascade" }),
155
+ testIdx: integer("test_idx"),
156
+ promptIdx: integer("prompt_idx"),
157
+ location: text("location"),
158
+ kind: text("kind"),
159
+ createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`)
160
+ }, (table) => ({
161
+ blobIdx: index("blob_references_blob_idx").on(table.blobHash),
162
+ evalIdx: index("blob_references_eval_idx").on(table.evalId),
163
+ blobCreatedAtIdx: index("blob_references_blob_created_at_idx").on(table.blobHash, table.createdAt)
164
+ }));
165
+ const datasetsTable = sqliteTable("datasets", {
166
+ id: text("id").primaryKey(),
167
+ tests: text("tests", { mode: "json" }).$type(),
168
+ createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`)
169
+ }, (table) => ({ createdAtIdx: index("datasets_created_at_idx").on(table.createdAt) }));
170
+ const evalsToDatasetsTable = sqliteTable("evals_to_datasets", {
171
+ evalId: text("eval_id").notNull().references(() => evalsTable.id),
172
+ datasetId: text("dataset_id").notNull().references(() => datasetsTable.id)
173
+ }, (t) => ({
174
+ pk: primaryKey({ columns: [t.evalId, t.datasetId] }),
175
+ evalIdIdx: index("evals_to_datasets_eval_id_idx").on(t.evalId),
176
+ datasetIdIdx: index("evals_to_datasets_dataset_id_idx").on(t.datasetId)
177
+ }));
178
+ relations(datasetsTable, ({ many }) => ({ evalsToDatasets: many(evalsToDatasetsTable) }));
179
+ relations(evalsTable, ({ many }) => ({
180
+ evalsToPrompts: many(evalsToPromptsTable),
181
+ evalsToDatasets: many(evalsToDatasetsTable),
182
+ evalsToTags: many(evalsToTagsTable)
183
+ }));
184
+ relations(evalsToPromptsTable, ({ one }) => ({
185
+ eval: one(evalsTable, {
186
+ fields: [evalsToPromptsTable.evalId],
187
+ references: [evalsTable.id]
188
+ }),
189
+ prompt: one(promptsTable, {
190
+ fields: [evalsToPromptsTable.promptId],
191
+ references: [promptsTable.id]
192
+ })
193
+ }));
194
+ relations(evalsToDatasetsTable, ({ one }) => ({
195
+ eval: one(evalsTable, {
196
+ fields: [evalsToDatasetsTable.evalId],
197
+ references: [evalsTable.id]
198
+ }),
199
+ dataset: one(datasetsTable, {
200
+ fields: [evalsToDatasetsTable.datasetId],
201
+ references: [datasetsTable.id]
202
+ })
203
+ }));
204
+ sqliteTable("configs", {
205
+ id: text("id").primaryKey(),
206
+ createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`),
207
+ updatedAt: integer("updated_at").notNull().default(sql`CURRENT_TIMESTAMP`),
208
+ name: text("name").notNull(),
209
+ type: text("type").notNull(),
210
+ config: text("config", { mode: "json" }).notNull()
211
+ }, (table) => ({
212
+ createdAtIdx: index("configs_created_at_idx").on(table.createdAt),
213
+ typeIdx: index("configs_type_idx").on(table.type)
214
+ }));
215
+ sqliteTable("model_audits", {
216
+ id: text("id").primaryKey(),
217
+ createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`),
218
+ updatedAt: integer("updated_at").notNull().default(sql`CURRENT_TIMESTAMP`),
219
+ name: text("name"),
220
+ author: text("author"),
221
+ modelPath: text("model_path").notNull(),
222
+ modelType: text("model_type"),
223
+ results: text("results", { mode: "json" }).$type().notNull(),
224
+ checks: text("checks", { mode: "json" }).$type(),
225
+ issues: text("issues", { mode: "json" }).$type(),
226
+ hasErrors: integer("has_errors", { mode: "boolean" }).notNull(),
227
+ totalChecks: integer("total_checks"),
228
+ passedChecks: integer("passed_checks"),
229
+ failedChecks: integer("failed_checks"),
230
+ metadata: text("metadata", { mode: "json" }).$type(),
231
+ modelId: text("model_id"),
232
+ revisionSha: text("revision_sha"),
233
+ contentHash: text("content_hash"),
234
+ modelSource: text("model_source"),
235
+ sourceLastModified: integer("source_last_modified"),
236
+ scannerVersion: text("scanner_version")
237
+ }, (table) => ({
238
+ createdAtIdx: index("model_audits_created_at_idx").on(table.createdAt),
239
+ modelPathIdx: index("model_audits_model_path_idx").on(table.modelPath),
240
+ hasErrorsIdx: index("model_audits_has_errors_idx").on(table.hasErrors),
241
+ modelTypeIdx: index("model_audits_model_type_idx").on(table.modelType),
242
+ modelIdIdx: index("model_audits_model_id_idx").on(table.modelId),
243
+ revisionShaIdx: index("model_audits_revision_sha_idx").on(table.revisionSha),
244
+ contentHashIdx: index("model_audits_content_hash_idx").on(table.contentHash),
245
+ modelRevisionIdx: index("model_audits_model_revision_idx").on(table.modelId, table.revisionSha),
246
+ modelContentIdx: index("model_audits_model_content_idx").on(table.modelId, table.contentHash)
247
+ }));
248
+ const tracesTable = sqliteTable("traces", {
249
+ id: text("id").primaryKey(),
250
+ traceId: text("trace_id").notNull().unique(),
251
+ evaluationId: text("evaluation_id").notNull().references(() => evalsTable.id),
252
+ testCaseId: text("test_case_id").notNull(),
253
+ createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`),
254
+ metadata: text("metadata", { mode: "json" }).$type()
255
+ }, (table) => ({
256
+ evaluationIdx: index("traces_evaluation_idx").on(table.evaluationId),
257
+ traceIdIdx: index("traces_trace_id_idx").on(table.traceId)
258
+ }));
259
+ const spansTable = sqliteTable("spans", {
260
+ id: text("id").primaryKey(),
261
+ traceId: text("trace_id").notNull().references(() => tracesTable.traceId),
262
+ spanId: text("span_id").notNull(),
263
+ parentSpanId: text("parent_span_id"),
264
+ name: text("name").notNull(),
265
+ startTime: integer("start_time").notNull(),
266
+ endTime: integer("end_time"),
267
+ attributes: text("attributes", { mode: "json" }).$type(),
268
+ statusCode: integer("status_code"),
269
+ statusMessage: text("status_message")
270
+ }, (table) => ({
271
+ traceIdIdx: index("spans_trace_id_idx").on(table.traceId),
272
+ spanIdIdx: index("spans_span_id_idx").on(table.spanId)
273
+ }));
274
+ relations(tracesTable, ({ one, many }) => ({
275
+ eval: one(evalsTable, {
276
+ fields: [tracesTable.evaluationId],
277
+ references: [evalsTable.id]
278
+ }),
279
+ spans: many(spansTable)
280
+ }));
281
+ relations(spansTable, ({ one }) => ({ trace: one(tracesTable, {
282
+ fields: [spansTable.traceId],
283
+ references: [tracesTable.traceId]
284
+ }) }));
285
+ //#endregion
286
+ export { evalsTable as a, evalsToTagsTable as c, tagsTable as d, tracesTable as f, evalResultsTable as i, promptsTable as l, getDbSignalPath as m, blobReferencesTable as n, evalsToDatasetsTable as o, getDb as p, datasetsTable as r, evalsToPromptsTable as s, blobAssetsTable as t, spansTable as u };
287
+
288
+ //# sourceMappingURL=tables-Bi2fjr4W.js.map