@verdict-ai/db 0.0.0-stage → 0.1.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.
Files changed (47) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +21 -2
  3. package/dist/auth.d.ts +34 -0
  4. package/dist/auth.js +80 -0
  5. package/dist/auth.js.map +1 -0
  6. package/dist/d1.d.ts +1034 -0
  7. package/dist/d1.js +21 -0
  8. package/dist/d1.js.map +1 -0
  9. package/dist/dialects.d.ts +14 -0
  10. package/dist/dialects.js +66 -0
  11. package/dist/dialects.js.map +1 -0
  12. package/dist/documents.d.ts +87 -0
  13. package/dist/documents.js +45 -0
  14. package/dist/documents.js.map +1 -0
  15. package/dist/errors.d.ts +7 -0
  16. package/dist/errors.js +21 -0
  17. package/dist/errors.js.map +1 -0
  18. package/dist/index.d.ts +9 -0
  19. package/dist/index.js +12 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/postgres.d.ts +1925 -0
  22. package/dist/postgres.js +63 -0
  23. package/dist/postgres.js.map +1 -0
  24. package/dist/queries.d.ts +31 -0
  25. package/dist/queries.js +68 -0
  26. package/dist/queries.js.map +1 -0
  27. package/dist/schema/pg.d.ts +1892 -0
  28. package/dist/schema/pg.js +90 -0
  29. package/dist/schema/pg.js.map +1 -0
  30. package/dist/schema/sqlite.d.ts +2050 -0
  31. package/dist/schema/sqlite.js +90 -0
  32. package/dist/schema/sqlite.js.map +1 -0
  33. package/dist/sqlite.d.ts +25 -0
  34. package/dist/sqlite.js +64 -0
  35. package/dist/sqlite.js.map +1 -0
  36. package/dist/store.d.ts +47 -0
  37. package/dist/store.js +149 -0
  38. package/dist/store.js.map +1 -0
  39. package/drizzle/0000_init.sql +66 -0
  40. package/drizzle/0001_idempotency.sql +12 -0
  41. package/drizzle/meta/0000_snapshot.json +452 -0
  42. package/drizzle/meta/0001_snapshot.json +527 -0
  43. package/drizzle/meta/_journal.json +20 -0
  44. package/drizzle/pg/0000_init.sql +78 -0
  45. package/drizzle/pg/meta/0000_snapshot.json +605 -0
  46. package/drizzle/pg/meta/_journal.json +13 -0
  47. package/package.json +81 -3
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Defines Postgres document tables and query indexes.
3
+ * JSON documents hold full domain state; tenant and key indexes support scoped lookups and reservations.
4
+ */
5
+ /**
6
+ * Drizzle schema — Postgres dialect; mirrors the SQLite table plan.
7
+ *
8
+ * Design: documents (rubric / evaluation) are stored as JSON blobs — their shapes are owned by the zod schemas in
9
+ * @verdict-ai/core and evolve quickly. Columns exist only for what we query or report on: tenant, status, score, timestamps,
10
+ * and a denormalized `ratings` table for calibration / inter-rater analytics.
11
+ */
12
+ import { index, integer, doublePrecision, boolean, jsonb, pgTable, text, uniqueIndex } from "drizzle-orm/pg-core";
13
+ export const rubrics = pgTable("rubrics", {
14
+ id: text("id").primaryKey(),
15
+ tenantId: text("tenant_id"),
16
+ name: text("name").notNull(),
17
+ version: text("version").notNull().default("1"),
18
+ /** Full StoredRubric JSON (zod-validated by core). */
19
+ doc: jsonb("doc").notNull().$type(),
20
+ createdAt: text("created_at").notNull(),
21
+ updatedAt: text("updated_at").notNull(),
22
+ }, (t) => [index("rubrics_tenant_created").on(t.tenantId, t.createdAt)]);
23
+ export const evaluations = pgTable("evaluations", {
24
+ id: text("id").primaryKey(),
25
+ tenantId: text("tenant_id"),
26
+ rubricId: text("rubric_id"),
27
+ rubricName: text("rubric_name").notNull(),
28
+ subjectName: text("subject_name"),
29
+ status: text("status").notNull(), // queued | running | pending_human | completed | failed
30
+ score: doublePrecision("score"),
31
+ grade: text("grade"),
32
+ passed: boolean("passed"),
33
+ pendingHuman: integer("pending_human").notNull().default(0),
34
+ decisionCalls: integer("decision_calls").notNull().default(0),
35
+ llmCalls: integer("llm_calls").notNull().default(0),
36
+ inputTokens: integer("input_tokens").notNull().default(0),
37
+ durationMs: integer("duration_ms").notNull().default(0),
38
+ /** Full Evaluation JSON (frozen rubric, evidence, criteria, ratings). */
39
+ doc: jsonb("doc").notNull().$type(),
40
+ createdAt: text("created_at").notNull(),
41
+ updatedAt: text("updated_at").notNull(),
42
+ }, (t) => [
43
+ index("evaluations_tenant_created").on(t.tenantId, t.createdAt),
44
+ index("evaluations_rubric_created").on(t.rubricId, t.createdAt),
45
+ index("evaluations_tenant_status").on(t.tenantId, t.status),
46
+ ]);
47
+ /** One row per rating — lets you ask "how do Jev's confidences track human agreement for rubric X" with plain SQL. */
48
+ export const ratings = pgTable("ratings", {
49
+ id: text("id").primaryKey(),
50
+ evaluationId: text("evaluation_id").notNull(),
51
+ tenantId: text("tenant_id"),
52
+ rubricId: text("rubric_id"),
53
+ criterionId: text("criterion_id").notNull(),
54
+ raterId: text("rater_id").notNull(),
55
+ judgeType: text("judge_type").notNull(), // decision | llm | human | benchmark | panel
56
+ status: text("status").notNull(), // scored | pending | error
57
+ score: doublePrecision("score"),
58
+ normalized: doublePrecision("normalized"),
59
+ confidence: doublePrecision("confidence"),
60
+ model: text("model"),
61
+ createdAt: text("created_at").notNull(),
62
+ }, (t) => [
63
+ index("ratings_evaluation").on(t.evaluationId),
64
+ index("ratings_rubric_criterion").on(t.rubricId, t.criterionId),
65
+ index("ratings_tenant_judge").on(t.tenantId, t.judgeType),
66
+ ]);
67
+ export const apiKeys = pgTable("api_keys", {
68
+ id: text("id").primaryKey(),
69
+ tenantId: text("tenant_id").notNull(),
70
+ name: text("name").notNull(),
71
+ /** sha256(hex) of the plaintext key; the plaintext is shown once at creation. */
72
+ keyHash: text("key_hash").notNull(),
73
+ /** First 8 chars of the key, for display (`vk_live_ab12…`). */
74
+ prefix: text("prefix").notNull(),
75
+ createdAt: text("created_at").notNull(),
76
+ lastUsedAt: text("last_used_at"),
77
+ revokedAt: text("revoked_at"),
78
+ }, (t) => [uniqueIndex("api_keys_hash").on(t.keyHash), index("api_keys_tenant").on(t.tenantId)]);
79
+ export const idempotencyKeys = pgTable("idempotency_keys", {
80
+ tenantId: text("tenant_id"),
81
+ key: text("key").notNull(),
82
+ fingerprint: text("fingerprint").notNull(),
83
+ targetType: text("target_type").notNull().$type(),
84
+ targetId: text("target_id"),
85
+ targetIds: jsonb("target_ids").$type(),
86
+ createdAt: text("created_at").notNull(),
87
+ expiresAt: text("expires_at").notNull(),
88
+ }, t => [uniqueIndex("idempotency_keys_tenant_key").on(t.tenantId, t.key)]);
89
+ export const schema = { rubrics, evaluations, ratings, apiKeys, idempotencyKeys };
90
+ //# sourceMappingURL=pg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg.js","sourceRoot":"","sources":["../../src/schema/pg.ts"],"names":[],"mappings":"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"}