@intelligo-dev/core 1.0.0-beta.1 → 1.0.0-beta.13

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 (355) hide show
  1. package/NOTICE +6 -0
  2. package/README.md +102 -0
  3. package/dist/attachments/errors.d.ts +7 -0
  4. package/dist/attachments/errors.d.ts.map +1 -0
  5. package/dist/attachments/errors.js +11 -0
  6. package/dist/attachments/errors.js.map +1 -0
  7. package/dist/attachments/index.d.ts +8 -0
  8. package/dist/attachments/index.d.ts.map +1 -0
  9. package/dist/attachments/index.js +7 -0
  10. package/dist/attachments/index.js.map +1 -0
  11. package/dist/attachments/service.d.ts +45 -0
  12. package/dist/attachments/service.d.ts.map +1 -0
  13. package/dist/attachments/service.js +100 -0
  14. package/dist/attachments/service.js.map +1 -0
  15. package/dist/attachments/types.d.ts +6 -0
  16. package/dist/attachments/types.d.ts.map +1 -0
  17. package/dist/attachments/types.js +2 -0
  18. package/dist/attachments/types.js.map +1 -0
  19. package/dist/conversations/errors.d.ts +2 -8
  20. package/dist/conversations/errors.d.ts.map +1 -1
  21. package/dist/conversations/errors.js +2 -8
  22. package/dist/conversations/errors.js.map +1 -1
  23. package/dist/conversations/index.d.ts +4 -12
  24. package/dist/conversations/index.d.ts.map +1 -1
  25. package/dist/conversations/index.js +2 -11
  26. package/dist/conversations/index.js.map +1 -1
  27. package/dist/conversations/service.d.ts +49 -61
  28. package/dist/conversations/service.d.ts.map +1 -1
  29. package/dist/conversations/service.js +110 -83
  30. package/dist/conversations/service.js.map +1 -1
  31. package/dist/conversations/types.d.ts +1 -4
  32. package/dist/conversations/types.d.ts.map +1 -1
  33. package/dist/conversations/types.js +0 -3
  34. package/dist/conversations/types.js.map +1 -1
  35. package/dist/db/client.d.ts +21 -10
  36. package/dist/db/client.d.ts.map +1 -1
  37. package/dist/db/client.js +43 -18
  38. package/dist/db/client.js.map +1 -1
  39. package/dist/db/index.d.ts +3 -3
  40. package/dist/db/index.d.ts.map +1 -1
  41. package/dist/db/index.js +3 -7
  42. package/dist/db/index.js.map +1 -1
  43. package/dist/db/schema/agents.d.ts +14 -51
  44. package/dist/db/schema/agents.d.ts.map +1 -1
  45. package/dist/db/schema/agents.js +9 -21
  46. package/dist/db/schema/agents.js.map +1 -1
  47. package/dist/db/schema/ai.d.ts +86 -1556
  48. package/dist/db/schema/ai.d.ts.map +1 -1
  49. package/dist/db/schema/ai.js +32 -236
  50. package/dist/db/schema/ai.js.map +1 -1
  51. package/dist/db/schema/auth.d.ts +5 -34
  52. package/dist/db/schema/auth.d.ts.map +1 -1
  53. package/dist/db/schema/auth.js +25 -56
  54. package/dist/db/schema/auth.js.map +1 -1
  55. package/dist/db/schema/billing.d.ts +136 -107
  56. package/dist/db/schema/billing.d.ts.map +1 -1
  57. package/dist/db/schema/billing.js +72 -60
  58. package/dist/db/schema/billing.js.map +1 -1
  59. package/dist/db/schema/feature-flags.d.ts +3 -12
  60. package/dist/db/schema/feature-flags.d.ts.map +1 -1
  61. package/dist/db/schema/feature-flags.js +3 -12
  62. package/dist/db/schema/feature-flags.js.map +1 -1
  63. package/dist/db/schema/identity.d.ts +12 -274
  64. package/dist/db/schema/identity.d.ts.map +1 -1
  65. package/dist/db/schema/identity.js +19 -104
  66. package/dist/db/schema/identity.js.map +1 -1
  67. package/dist/db/schema/index.d.ts +8 -15
  68. package/dist/db/schema/index.d.ts.map +1 -1
  69. package/dist/db/schema/index.js +12 -42
  70. package/dist/db/schema/index.js.map +1 -1
  71. package/dist/db/schema/notifications.d.ts +3 -17
  72. package/dist/db/schema/notifications.d.ts.map +1 -1
  73. package/dist/db/schema/notifications.js +3 -17
  74. package/dist/db/schema/notifications.js.map +1 -1
  75. package/dist/db/schema/usage.d.ts +94 -77
  76. package/dist/db/schema/usage.d.ts.map +1 -1
  77. package/dist/db/schema/usage.js +59 -89
  78. package/dist/db/schema/usage.js.map +1 -1
  79. package/dist/db/validate.d.ts +2 -11
  80. package/dist/db/validate.d.ts.map +1 -1
  81. package/dist/db/validate.js +6 -17
  82. package/dist/db/validate.js.map +1 -1
  83. package/dist/db/workspace-queries.d.ts +5 -29
  84. package/dist/db/workspace-queries.d.ts.map +1 -1
  85. package/dist/db/workspace-queries.js +5 -29
  86. package/dist/db/workspace-queries.js.map +1 -1
  87. package/dist/documents/classifier.d.ts +5 -12
  88. package/dist/documents/classifier.d.ts.map +1 -1
  89. package/dist/documents/classifier.js +16 -16
  90. package/dist/documents/classifier.js.map +1 -1
  91. package/dist/documents/errors.d.ts +2 -10
  92. package/dist/documents/errors.d.ts.map +1 -1
  93. package/dist/documents/errors.js +2 -10
  94. package/dist/documents/errors.js.map +1 -1
  95. package/dist/documents/index.d.ts +4 -13
  96. package/dist/documents/index.d.ts.map +1 -1
  97. package/dist/documents/index.js +3 -12
  98. package/dist/documents/index.js.map +1 -1
  99. package/dist/documents/service.d.ts +19 -26
  100. package/dist/documents/service.d.ts.map +1 -1
  101. package/dist/documents/service.js +44 -38
  102. package/dist/documents/service.js.map +1 -1
  103. package/dist/documents/types.d.ts +6 -10
  104. package/dist/documents/types.d.ts.map +1 -1
  105. package/dist/documents/types.js +0 -3
  106. package/dist/documents/types.js.map +1 -1
  107. package/dist/email/brand.d.ts +17 -0
  108. package/dist/email/brand.d.ts.map +1 -0
  109. package/dist/email/brand.js +9 -0
  110. package/dist/email/brand.js.map +1 -0
  111. package/dist/email/index.d.ts +4 -4
  112. package/dist/email/index.js +4 -4
  113. package/dist/email/provider.d.ts +1 -7
  114. package/dist/email/provider.d.ts.map +1 -1
  115. package/dist/email/provider.js +10 -19
  116. package/dist/email/provider.js.map +1 -1
  117. package/dist/email/send.d.ts +12 -12
  118. package/dist/email/send.d.ts.map +1 -1
  119. package/dist/email/send.js +5 -19
  120. package/dist/email/send.js.map +1 -1
  121. package/dist/email/senders.d.ts +17 -30
  122. package/dist/email/senders.d.ts.map +1 -1
  123. package/dist/email/senders.js +33 -47
  124. package/dist/email/senders.js.map +1 -1
  125. package/dist/email/templates/base-layout.d.ts +1 -1
  126. package/dist/email/templates/base-layout.d.ts.map +1 -1
  127. package/dist/email/templates/base-layout.js +4 -6
  128. package/dist/email/templates/base-layout.js.map +1 -1
  129. package/dist/email/templates/index.d.ts +10 -10
  130. package/dist/email/templates/index.d.ts.map +1 -1
  131. package/dist/email/templates/index.js +10 -16
  132. package/dist/email/templates/index.js.map +1 -1
  133. package/dist/email/templates/password-reset.d.ts +2 -2
  134. package/dist/email/templates/password-reset.d.ts.map +1 -1
  135. package/dist/email/templates/password-reset.js +10 -22
  136. package/dist/email/templates/password-reset.js.map +1 -1
  137. package/dist/email/templates/payment-failed.d.ts +2 -2
  138. package/dist/email/templates/payment-failed.d.ts.map +1 -1
  139. package/dist/email/templates/payment-failed.js +11 -24
  140. package/dist/email/templates/payment-failed.js.map +1 -1
  141. package/dist/email/templates/quota-warning.d.ts +4 -4
  142. package/dist/email/templates/quota-warning.d.ts.map +1 -1
  143. package/dist/email/templates/quota-warning.js +19 -39
  144. package/dist/email/templates/quota-warning.js.map +1 -1
  145. package/dist/email/templates/subscription-confirmed.d.ts +2 -2
  146. package/dist/email/templates/subscription-confirmed.d.ts.map +1 -1
  147. package/dist/email/templates/subscription-confirmed.js +13 -28
  148. package/dist/email/templates/subscription-confirmed.js.map +1 -1
  149. package/dist/email/templates/trial-expiry.d.ts +2 -2
  150. package/dist/email/templates/trial-expiry.d.ts.map +1 -1
  151. package/dist/email/templates/trial-expiry.js +12 -36
  152. package/dist/email/templates/trial-expiry.js.map +1 -1
  153. package/dist/email/templates/trial-warning.d.ts +2 -2
  154. package/dist/email/templates/trial-warning.d.ts.map +1 -1
  155. package/dist/email/templates/trial-warning.js +15 -32
  156. package/dist/email/templates/trial-warning.js.map +1 -1
  157. package/dist/email/templates/verify-email.d.ts +2 -2
  158. package/dist/email/templates/verify-email.d.ts.map +1 -1
  159. package/dist/email/templates/verify-email.js +10 -22
  160. package/dist/email/templates/verify-email.js.map +1 -1
  161. package/dist/email/templates/welcome.d.ts +2 -2
  162. package/dist/email/templates/welcome.d.ts.map +1 -1
  163. package/dist/email/templates/welcome.js +13 -20
  164. package/dist/email/templates/welcome.js.map +1 -1
  165. package/dist/email/templates/workspace-invitation.d.ts +2 -2
  166. package/dist/email/templates/workspace-invitation.d.ts.map +1 -1
  167. package/dist/email/templates/workspace-invitation.js +12 -26
  168. package/dist/email/templates/workspace-invitation.js.map +1 -1
  169. package/dist/env.d.ts +5 -10
  170. package/dist/env.d.ts.map +1 -1
  171. package/dist/env.js +41 -31
  172. package/dist/env.js.map +1 -1
  173. package/dist/identity/audit.d.ts +11 -24
  174. package/dist/identity/audit.d.ts.map +1 -1
  175. package/dist/identity/audit.js +13 -27
  176. package/dist/identity/audit.js.map +1 -1
  177. package/dist/identity/errors.d.ts +4 -12
  178. package/dist/identity/errors.d.ts.map +1 -1
  179. package/dist/identity/errors.js +2 -8
  180. package/dist/identity/errors.js.map +1 -1
  181. package/dist/identity/index.d.ts +5 -13
  182. package/dist/identity/index.d.ts.map +1 -1
  183. package/dist/identity/index.js +4 -12
  184. package/dist/identity/index.js.map +1 -1
  185. package/dist/identity/service.d.ts +13 -47
  186. package/dist/identity/service.d.ts.map +1 -1
  187. package/dist/identity/service.js +31 -78
  188. package/dist/identity/service.js.map +1 -1
  189. package/dist/identity/types.d.ts +1 -4
  190. package/dist/identity/types.d.ts.map +1 -1
  191. package/dist/identity/types.js +0 -3
  192. package/dist/identity/types.js.map +1 -1
  193. package/dist/index.d.ts +1 -2
  194. package/dist/index.d.ts.map +1 -1
  195. package/dist/index.js +3 -10
  196. package/dist/index.js.map +1 -1
  197. package/dist/logger.d.ts +7 -18
  198. package/dist/logger.d.ts.map +1 -1
  199. package/dist/logger.js +45 -49
  200. package/dist/logger.js.map +1 -1
  201. package/dist/money.d.ts +95 -0
  202. package/dist/money.d.ts.map +1 -0
  203. package/dist/money.js +208 -0
  204. package/dist/money.js.map +1 -0
  205. package/dist/notifications/index.d.ts +9 -43
  206. package/dist/notifications/index.d.ts.map +1 -1
  207. package/dist/notifications/index.js +9 -49
  208. package/dist/notifications/index.js.map +1 -1
  209. package/dist/notifications/triggers.d.ts +9 -32
  210. package/dist/notifications/triggers.d.ts.map +1 -1
  211. package/dist/notifications/triggers.js +21 -58
  212. package/dist/notifications/triggers.js.map +1 -1
  213. package/dist/notifications/types.d.ts +1 -10
  214. package/dist/notifications/types.d.ts.map +1 -1
  215. package/dist/notifications/types.js +0 -9
  216. package/dist/notifications/types.js.map +1 -1
  217. package/dist/prompt.d.ts +38 -0
  218. package/dist/prompt.d.ts.map +1 -0
  219. package/dist/prompt.js +118 -0
  220. package/dist/prompt.js.map +1 -0
  221. package/dist/registry.d.ts +32 -0
  222. package/dist/registry.d.ts.map +1 -0
  223. package/dist/registry.js +60 -0
  224. package/dist/registry.js.map +1 -0
  225. package/dist/request-context.d.ts +49 -0
  226. package/dist/request-context.d.ts.map +1 -0
  227. package/dist/request-context.js +100 -0
  228. package/dist/request-context.js.map +1 -0
  229. package/dist/storage/index.d.ts +65 -0
  230. package/dist/storage/index.d.ts.map +1 -0
  231. package/dist/storage/index.js +109 -0
  232. package/dist/storage/index.js.map +1 -0
  233. package/package.json +74 -24
  234. package/src/attachments/errors.ts +18 -0
  235. package/src/attachments/index.ts +22 -0
  236. package/src/attachments/service.ts +178 -0
  237. package/src/attachments/types.ts +6 -0
  238. package/src/conversations/errors.ts +45 -0
  239. package/src/conversations/index.ts +39 -0
  240. package/src/conversations/service.ts +594 -0
  241. package/src/conversations/types.ts +15 -0
  242. package/src/db/client.ts +91 -0
  243. package/src/db/index.ts +3 -0
  244. package/src/db/migrations/0000_baseline.sql +652 -0
  245. package/src/db/migrations/0001_reconcile_chain_built_databases.sql +53 -0
  246. package/src/db/migrations/0002_webhook_claim_lease.sql +1 -0
  247. package/src/db/migrations/README.md +74 -36
  248. package/src/db/migrations/legacy-chain.json +197 -0
  249. package/src/db/migrations/meta/0000_snapshot.json +4182 -157
  250. package/src/db/migrations/meta/0002_snapshot.json +2478 -368
  251. package/src/db/migrations/meta/_journal.json +6 -279
  252. package/src/db/schema/agents.ts +57 -0
  253. package/src/db/schema/ai.ts +174 -0
  254. package/src/db/schema/auth.ts +183 -0
  255. package/src/db/schema/billing.ts +209 -0
  256. package/src/db/schema/feature-flags.ts +20 -0
  257. package/src/db/schema/identity.ts +250 -0
  258. package/src/db/schema/index.ts +12 -0
  259. package/src/db/schema/notifications.ts +31 -0
  260. package/src/db/schema/usage.ts +269 -0
  261. package/src/db/validate.ts +63 -0
  262. package/src/db/workspace-queries.ts +64 -0
  263. package/src/documents/classifier.ts +61 -0
  264. package/src/documents/errors.ts +44 -0
  265. package/src/documents/index.ts +24 -0
  266. package/src/documents/service.ts +256 -0
  267. package/src/documents/types.ts +24 -0
  268. package/src/email/brand.ts +24 -0
  269. package/src/email/index.ts +19 -0
  270. package/src/email/provider.ts +278 -0
  271. package/src/email/send.ts +169 -0
  272. package/src/email/senders.ts +292 -0
  273. package/src/email/templates/base-layout.tsx +145 -0
  274. package/src/email/templates/index.ts +28 -0
  275. package/src/email/templates/password-reset.tsx +72 -0
  276. package/src/email/templates/payment-failed.tsx +77 -0
  277. package/src/email/templates/quota-warning.tsx +118 -0
  278. package/src/email/templates/subscription-confirmed.tsx +91 -0
  279. package/src/email/templates/trial-expiry.tsx +124 -0
  280. package/src/email/templates/trial-warning.tsx +104 -0
  281. package/src/email/templates/verify-email.tsx +72 -0
  282. package/src/email/templates/welcome.tsx +64 -0
  283. package/src/email/templates/workspace-invitation.tsx +105 -0
  284. package/src/env.ts +180 -0
  285. package/src/identity/audit.ts +65 -0
  286. package/src/identity/errors.ts +44 -0
  287. package/src/identity/index.ts +26 -0
  288. package/src/identity/service.ts +202 -0
  289. package/src/identity/types.ts +28 -0
  290. package/src/index.ts +4 -0
  291. package/src/logger.ts +198 -0
  292. package/src/money.ts +270 -0
  293. package/src/notifications/index.ts +108 -0
  294. package/src/notifications/triggers.ts +158 -0
  295. package/src/notifications/types.ts +18 -0
  296. package/src/prompt.ts +142 -0
  297. package/src/registry.ts +75 -0
  298. package/src/request-context.ts +137 -0
  299. package/src/storage/index.ts +153 -0
  300. package/dist/db/schema/rag.d.ts +0 -171
  301. package/dist/db/schema/rag.d.ts.map +0 -1
  302. package/dist/db/schema/rag.js +0 -42
  303. package/dist/db/schema/rag.js.map +0 -1
  304. package/src/db/migrations/0000_sharp_night_nurse.sql +0 -52
  305. package/src/db/migrations/0001_hesitant_vapor.sql +0 -40
  306. package/src/db/migrations/0002_numerous_lady_vermin.sql +0 -235
  307. package/src/db/migrations/0003_mighty_jean_grey.sql +0 -37
  308. package/src/db/migrations/0004_cynical_grandmaster.sql +0 -2
  309. package/src/db/migrations/0005_careful_switch.sql +0 -8
  310. package/src/db/migrations/0006_tense_blue_marvel.sql +0 -16
  311. package/src/db/migrations/0007_next_squadron_sinister.sql +0 -1
  312. package/src/db/migrations/0008_powerful_scream.sql +0 -39
  313. package/src/db/migrations/0009_sad_ink.sql +0 -1
  314. package/src/db/migrations/0010_shocking_omega_flight.sql +0 -2
  315. package/src/db/migrations/0011_ambiguous_otto_octavius.sql +0 -151
  316. package/src/db/migrations/0011_hnsw_vector_index.sql +0 -17
  317. package/src/db/migrations/0012_user_profiles.sql +0 -30
  318. package/src/db/migrations/0013_trending_seasonal_columns.sql +0 -9
  319. package/src/db/migrations/0014_add_product_type_to_agents.sql +0 -6
  320. package/src/db/migrations/0015_new_v1_tables.sql +0 -149
  321. package/src/db/migrations/0016_document_types.sql +0 -30
  322. package/src/db/migrations/0017_document_metadata.sql +0 -2
  323. package/src/db/migrations/0018_identity_graph.sql +0 -200
  324. package/src/db/migrations/0019_db_driven_prompts.sql +0 -20
  325. package/src/db/migrations/0020_pending_extractions.sql +0 -35
  326. package/src/db/migrations/0021_rag_documents.sql +0 -39
  327. package/src/db/migrations/0022_user_quotas_usage_jsonb.sql +0 -70
  328. package/src/db/migrations/0023_user_facts_user_scoped_unique.sql +0 -17
  329. package/src/db/migrations/0024_user_memories_hnsw.sql +0 -23
  330. package/src/db/migrations/0025_audit_trigger_errcode.sql +0 -21
  331. package/src/db/migrations/0026_user_profile_snapshots_composite_pk.sql +0 -17
  332. package/src/db/migrations/0027_billing_settings_mnt_columns.sql +0 -54
  333. package/src/db/migrations/0028_trial_credits_normalized_email.sql +0 -37
  334. package/src/db/migrations/0029_usage_records_conversation_idx.sql +0 -13
  335. package/src/db/migrations/0030_pending_extractions_composite_idx.sql +0 -11
  336. package/src/db/migrations/0031_rag_documents_hnsw.sql +0 -16
  337. package/src/db/migrations/0032_rate_limit_unique_idx.sql +0 -16
  338. package/src/db/migrations/0033_pending_extractions_partial_idx.sql +0 -18
  339. package/src/db/migrations/0034_rate_limit_count.sql +0 -9
  340. package/src/db/migrations/0035_credit_reservations.sql +0 -24
  341. package/src/db/migrations/0036_executions_audit_jobs.sql +0 -96
  342. package/src/db/migrations/0037_rate_limit_minute_bucket.sql +0 -46
  343. package/src/db/migrations/0038_user_quotas_generic_usage.sql +0 -25
  344. package/src/db/migrations/0039_platform_admin_impersonation.sql +0 -27
  345. package/src/db/migrations/0040_ee_audit_chain.sql +0 -23
  346. package/src/db/migrations/meta/0001_snapshot.json +0 -631
  347. package/src/db/migrations/meta/0003_snapshot.json +0 -2488
  348. package/src/db/migrations/meta/0004_snapshot.json +0 -2500
  349. package/src/db/migrations/meta/0005_snapshot.json +0 -2548
  350. package/src/db/migrations/meta/0006_snapshot.json +0 -2650
  351. package/src/db/migrations/meta/0007_snapshot.json +0 -2657
  352. package/src/db/migrations/meta/0008_snapshot.json +0 -2719
  353. package/src/db/migrations/meta/0009_snapshot.json +0 -2726
  354. package/src/db/migrations/meta/0010_snapshot.json +0 -2739
  355. package/src/db/migrations/meta/0011_snapshot.json +0 -3886
@@ -1,43 +1,13 @@
1
- /**
2
- * Drizzle Database Schema
3
- *
4
- * Central export point for all database tables.
5
- * This file will be extended in future phases with workspace, billing, and AI schemas.
6
- */
7
- // Auth tables (Better-Auth managed)
8
- export * from "./auth";
9
- // Organization/Workspace tables are managed by Better-Auth organization plugin (Phase 10)
10
- // Tables: organization, member, invitation (auto-created by plugin on first API use)
11
- // These tables are NOT in our Drizzle schema — Better-Auth manages them directly.
12
- // Access via Better-Auth API: auth.api.listOrganizations(), auth.api.createInvitation(), etc.
13
- //
14
- // Organization plugin indexes (TECH-02 verified pattern):
15
- // Better-Auth's organization plugin creates these indexes automatically:
16
- // - member.organizationId (workspace member lookup)
17
- // - member.userId (user's memberships lookup)
18
- // - invitation.organizationId (workspace invitations lookup)
19
- // - invitation.email (invited email lookup)
20
- // These indexes are created by Better-Auth when tables are auto-created on first use.
21
- // No manual migration needed — plugin handles all schema management.
22
- // Billing tables (Phase 11)
23
- export * from "./billing";
24
- // Usage tracking tables (Phase 12)
25
- export * from "./usage";
26
- // Notification tables (Phase 14)
27
- export * from "./notifications";
28
- // Feature flags (Phase 15)
29
- export * from "./feature-flags";
30
- // AI tables (Phase 16)
31
- export * from "./ai";
32
- // Agents table (Phase 37)
33
- export * from "./agents";
34
- // User Identity Graph (AI-ARCHITECTURE Phase B)
35
- // Four tables that back the cross-product memory system:
36
- // user_facts, user_memories, user_profile_snapshots, user_memory_audit.
37
- export * from "./identity";
38
- // RAG documents table (AI-ARCHITECTURE Phase H)
39
- // Single shared table that backs every collection in
40
- // @intelligo-dev/agents/rag. Per-collection wrappers live in the
41
- // product packages.
42
- export * from "./rag";
1
+ // Better-Auth's tables, including organization, member and invitation.
2
+ // Product code goes through the Better-Auth API rather than querying the
3
+ // organization tables directly, so membership and role rules stay in one
4
+ // place.
5
+ export * from "./auth.js";
6
+ export * from "./billing.js";
7
+ export * from "./usage.js";
8
+ export * from "./notifications.js";
9
+ export * from "./feature-flags.js";
10
+ export * from "./ai.js";
11
+ export * from "./agents.js";
12
+ export * from "./identity.js";
43
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oCAAoC;AACpC,cAAc,QAAQ,CAAC;AAEvB,0FAA0F;AAC1F,qFAAqF;AACrF,kFAAkF;AAClF,8FAA8F;AAC9F,EAAE;AACF,0DAA0D;AAC1D,yEAAyE;AACzE,oDAAoD;AACpD,8CAA8C;AAC9C,6DAA6D;AAC7D,4CAA4C;AAC5C,sFAAsF;AACtF,qEAAqE;AAErE,4BAA4B;AAC5B,cAAc,WAAW,CAAC;AAE1B,mCAAmC;AACnC,cAAc,SAAS,CAAC;AAExB,iCAAiC;AACjC,cAAc,iBAAiB,CAAC;AAEhC,2BAA2B;AAC3B,cAAc,iBAAiB,CAAC;AAEhC,uBAAuB;AACvB,cAAc,MAAM,CAAC;AAErB,0BAA0B;AAC1B,cAAc,UAAU,CAAC;AAEzB,gDAAgD;AAChD,yDAAyD;AACzD,wEAAwE;AACxE,cAAc,YAAY,CAAC;AAE3B,gDAAgD;AAChD,qDAAqD;AACrD,iEAAiE;AACjE,oBAAoB;AACpB,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,SAAS;AACT,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
@@ -1,21 +1,7 @@
1
1
  /**
2
- * Notifications Database Schema
3
- *
4
- * Persistent notifications for users (quota warnings, payment events, team updates).
5
- * These are user-scoped (not workspace-scoped) so a user sees all their notifications
6
- * across workspaces in one place.
7
- *
8
- * Pattern: snake_case columns in PostgreSQL, camelCase TypeScript API (via Drizzle mapping)
9
- */
10
- /**
11
- * Notifications table - User-facing notification records (NOTIF-06)
12
- *
13
- * Each notification has a type (matching NotificationType), a title/message for display,
14
- * and optional metadata for additional context. The isRead flag supports read/unread
15
- * filtering for the notification bell badge.
16
- *
17
- * userId references Better-Auth's user table by convention (no FK constraint).
18
- * workspaceId is nullable — some notifications are user-level (e.g., payment_failed).
2
+ * User-scoped, not workspace-scoped, so a user sees their notifications from
3
+ * every workspace in one place. `userId` references the users table by
4
+ * convention (no FK); `workspaceId` is null for user-level notifications.
19
5
  */
20
6
  export declare const notifications: import("drizzle-orm/pg-core").PgTableWithColumns<{
21
7
  name: "notifications";
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../src/db/schema/notifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBzB,CAAC;AAGF,MAAM,MAAM,YAAY,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC"}
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../src/db/schema/notifications.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC"}
@@ -1,22 +1,8 @@
1
- /**
2
- * Notifications Database Schema
3
- *
4
- * Persistent notifications for users (quota warnings, payment events, team updates).
5
- * These are user-scoped (not workspace-scoped) so a user sees all their notifications
6
- * across workspaces in one place.
7
- *
8
- * Pattern: snake_case columns in PostgreSQL, camelCase TypeScript API (via Drizzle mapping)
9
- */
10
1
  import { pgTable, text, timestamp, boolean, index } from "drizzle-orm/pg-core";
11
2
  /**
12
- * Notifications table - User-facing notification records (NOTIF-06)
13
- *
14
- * Each notification has a type (matching NotificationType), a title/message for display,
15
- * and optional metadata for additional context. The isRead flag supports read/unread
16
- * filtering for the notification bell badge.
17
- *
18
- * userId references Better-Auth's user table by convention (no FK constraint).
19
- * workspaceId is nullable — some notifications are user-level (e.g., payment_failed).
3
+ * User-scoped, not workspace-scoped, so a user sees their notifications from
4
+ * every workspace in one place. `userId` references the users table by
5
+ * convention (no FK); `workspaceId` is null for user-level notifications.
20
6
  */
21
7
  export const notifications = pgTable("notifications", {
22
8
  id: text("id")
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../../src/db/schema/notifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAClC,eAAe,EACf;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;SACX,UAAU,EAAE;SACZ,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACxC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IACjC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;IACjC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IAClC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,KAAK,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IACnD,KAAK,CAAC,mCAAmC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACzE,KAAK,CAAC,8BAA8B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CAC1D,CACF,CAAC"}
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../../src/db/schema/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAClC,eAAe,EACf;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;SACX,UAAU,EAAE;SACZ,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACxC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IACjC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;IACjC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IAClC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,KAAK,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IACnD,KAAK,CAAC,mCAAmC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACzE,KAAK,CAAC,8BAA8B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CAC1D,CACF,CAAC"}
@@ -1,18 +1,10 @@
1
1
  /**
2
- * Usage Tracking Database Schema
3
- *
4
- * Tables for tracking per-request token consumption and aggregated monthly usage.
5
- * Used by the quota enforcement engine to check limits before AI requests
6
- * and record consumption atomically after completion.
7
- *
8
- * Pattern: snake_case columns in PostgreSQL, camelCase TypeScript API (via Drizzle mapping)
2
+ * Token consumption per request and aggregated per period, which the quota
3
+ * engine checks before AI requests and records into after them.
9
4
  */
10
5
  /**
11
- * Usage Records table - Per-request token tracking (QUOTA-05)
12
- *
13
- * Every AI request creates one record with input/output/total tokens,
14
- * the model used, and the agent that handled it. This provides the
15
- * detailed breakdown for per-model and per-agent reporting (QUOTA-07).
6
+ * One row per AI request: tokens, model and agent, for per-model and
7
+ * per-agent reporting.
16
8
  */
17
9
  export declare const usageRecords: import("drizzle-orm/pg-core").PgTableWithColumns<{
18
10
  name: "usage_records";
@@ -171,11 +163,11 @@ export declare const usageRecords: import("drizzle-orm/pg-core").PgTableWithColu
171
163
  identity: undefined;
172
164
  generated: undefined;
173
165
  }, {}, {}>;
174
- cost: import("drizzle-orm/pg-core").PgColumn<{
175
- name: "cost";
166
+ providerCostMicros: import("drizzle-orm/pg-core").PgColumn<{
167
+ name: "provider_cost_micros";
176
168
  tableName: "usage_records";
177
169
  dataType: "number";
178
- columnType: "PgReal";
170
+ columnType: "PgBigInt53";
179
171
  data: number;
180
172
  driverParam: string | number;
181
173
  notNull: true;
@@ -188,11 +180,11 @@ export declare const usageRecords: import("drizzle-orm/pg-core").PgTableWithColu
188
180
  identity: undefined;
189
181
  generated: undefined;
190
182
  }, {}, {}>;
191
- marginMultiplier: import("drizzle-orm/pg-core").PgColumn<{
192
- name: "margin_multiplier";
183
+ marginBp: import("drizzle-orm/pg-core").PgColumn<{
184
+ name: "margin_bp";
193
185
  tableName: "usage_records";
194
186
  dataType: "number";
195
- columnType: "PgReal";
187
+ columnType: "PgInteger";
196
188
  data: number;
197
189
  driverParam: string | number;
198
190
  notNull: true;
@@ -205,11 +197,11 @@ export declare const usageRecords: import("drizzle-orm/pg-core").PgTableWithColu
205
197
  identity: undefined;
206
198
  generated: undefined;
207
199
  }, {}, {}>;
208
- fxRate: import("drizzle-orm/pg-core").PgColumn<{
209
- name: "fx_rate";
200
+ usdRateMicros: import("drizzle-orm/pg-core").PgColumn<{
201
+ name: "usd_rate_micros";
210
202
  tableName: "usage_records";
211
203
  dataType: "number";
212
- columnType: "PgReal";
204
+ columnType: "PgBigInt53";
213
205
  data: number;
214
206
  driverParam: string | number;
215
207
  notNull: true;
@@ -222,11 +214,11 @@ export declare const usageRecords: import("drizzle-orm/pg-core").PgTableWithColu
222
214
  identity: undefined;
223
215
  generated: undefined;
224
216
  }, {}, {}>;
225
- chargedMnt: import("drizzle-orm/pg-core").PgColumn<{
226
- name: "charged_mnt";
217
+ chargedMicros: import("drizzle-orm/pg-core").PgColumn<{
218
+ name: "charged_micros";
227
219
  tableName: "usage_records";
228
220
  dataType: "number";
229
- columnType: "PgInteger";
221
+ columnType: "PgBigInt53";
230
222
  data: number;
231
223
  driverParam: string | number;
232
224
  notNull: true;
@@ -239,6 +231,23 @@ export declare const usageRecords: import("drizzle-orm/pg-core").PgTableWithColu
239
231
  identity: undefined;
240
232
  generated: undefined;
241
233
  }, {}, {}>;
234
+ currency: import("drizzle-orm/pg-core").PgColumn<{
235
+ name: "currency";
236
+ tableName: "usage_records";
237
+ dataType: "string";
238
+ columnType: "PgText";
239
+ data: string;
240
+ driverParam: string;
241
+ notNull: true;
242
+ hasDefault: true;
243
+ isPrimaryKey: false;
244
+ isAutoincrement: false;
245
+ hasRuntimeDefault: false;
246
+ enumValues: [string, ...string[]];
247
+ baseColumn: never;
248
+ identity: undefined;
249
+ generated: undefined;
250
+ }, {}, {}>;
242
251
  requestId: import("drizzle-orm/pg-core").PgColumn<{
243
252
  name: "request_id";
244
253
  tableName: "usage_records";
@@ -328,11 +337,8 @@ export declare const usageRecords: import("drizzle-orm/pg-core").PgTableWithColu
328
337
  dialect: "pg";
329
338
  }>;
330
339
  /**
331
- * Monthly Usage table - Aggregated monthly totals for fast quota checks
332
- *
333
- * Instead of SUM(totalTokens) on every request, we increment a counter atomically.
334
- * One row per workspace per billing period. The usage_records table provides
335
- * the detailed breakdown for reporting; this table provides O(1) quota checks.
340
+ * One row per workspace per billing period, incremented atomically, so a
341
+ * quota check is O(1) instead of a SUM over usage_records.
336
342
  */
337
343
  export declare const monthlyUsage: import("drizzle-orm/pg-core").PgTableWithColumns<{
338
344
  name: "monthly_usage";
@@ -423,11 +429,11 @@ export declare const monthlyUsage: import("drizzle-orm/pg-core").PgTableWithColu
423
429
  identity: undefined;
424
430
  generated: undefined;
425
431
  }, {}, {}>;
426
- chargedMnt: import("drizzle-orm/pg-core").PgColumn<{
427
- name: "charged_mnt";
432
+ allowanceUsedMicros: import("drizzle-orm/pg-core").PgColumn<{
433
+ name: "allowance_used_micros";
428
434
  tableName: "monthly_usage";
429
435
  dataType: "number";
430
- columnType: "PgInteger";
436
+ columnType: "PgBigInt53";
431
437
  data: number;
432
438
  driverParam: string | number;
433
439
  notNull: true;
@@ -440,6 +446,23 @@ export declare const monthlyUsage: import("drizzle-orm/pg-core").PgTableWithColu
440
446
  identity: undefined;
441
447
  generated: undefined;
442
448
  }, {}, {}>;
449
+ currency: import("drizzle-orm/pg-core").PgColumn<{
450
+ name: "currency";
451
+ tableName: "monthly_usage";
452
+ dataType: "string";
453
+ columnType: "PgText";
454
+ data: string;
455
+ driverParam: string;
456
+ notNull: true;
457
+ hasDefault: true;
458
+ isPrimaryKey: false;
459
+ isAutoincrement: false;
460
+ hasRuntimeDefault: false;
461
+ enumValues: [string, ...string[]];
462
+ baseColumn: never;
463
+ identity: undefined;
464
+ generated: undefined;
465
+ }, {}, {}>;
443
466
  requestCount: import("drizzle-orm/pg-core").PgColumn<{
444
467
  name: "request_count";
445
468
  tableName: "monthly_usage";
@@ -478,14 +501,9 @@ export declare const monthlyUsage: import("drizzle-orm/pg-core").PgTableWithColu
478
501
  dialect: "pg";
479
502
  }>;
480
503
  /**
481
- * Trial Credits table - One-time trial credit allocation per workspace (TRIAL-01)
482
- *
483
- * Each new workspace receives 100K trial tokens on creation.
484
- * The unique constraint on workspace_id enforces one trial per workspace (TRIAL-07).
485
- * Trial credits are separate from purchased credits (credit_balances).
486
- * They act as a fallback when plan quota is exceeded or credit balance is zero.
487
- *
488
- * Status flow: active → depleted (credits hit 0) or active → converted (paid plan)
504
+ * One-time trial grant, one per workspace (unique constraint). Separate from
505
+ * purchased credits; used when the plan quota is exceeded or the credit
506
+ * balance is zero. Status: active → depleted, converted or expired.
489
507
  */
490
508
  export declare const trialCredits: import("drizzle-orm/pg-core").PgTableWithColumns<{
491
509
  name: "trial_credits";
@@ -576,11 +594,11 @@ export declare const trialCredits: import("drizzle-orm/pg-core").PgTableWithColu
576
594
  identity: undefined;
577
595
  generated: undefined;
578
596
  }, {}, {}>;
579
- initialCreditsMnt: import("drizzle-orm/pg-core").PgColumn<{
580
- name: "initial_credits_mnt";
597
+ initialMicros: import("drizzle-orm/pg-core").PgColumn<{
598
+ name: "initial_micros";
581
599
  tableName: "trial_credits";
582
600
  dataType: "number";
583
- columnType: "PgInteger";
601
+ columnType: "PgBigInt53";
584
602
  data: number;
585
603
  driverParam: string | number;
586
604
  notNull: true;
@@ -593,11 +611,11 @@ export declare const trialCredits: import("drizzle-orm/pg-core").PgTableWithColu
593
611
  identity: undefined;
594
612
  generated: undefined;
595
613
  }, {}, {}>;
596
- creditsUsedMnt: import("drizzle-orm/pg-core").PgColumn<{
597
- name: "credits_used_mnt";
614
+ usedMicros: import("drizzle-orm/pg-core").PgColumn<{
615
+ name: "used_micros";
598
616
  tableName: "trial_credits";
599
617
  dataType: "number";
600
- columnType: "PgInteger";
618
+ columnType: "PgBigInt53";
601
619
  data: number;
602
620
  driverParam: string | number;
603
621
  notNull: true;
@@ -610,11 +628,11 @@ export declare const trialCredits: import("drizzle-orm/pg-core").PgTableWithColu
610
628
  identity: undefined;
611
629
  generated: undefined;
612
630
  }, {}, {}>;
613
- creditsRemainingMnt: import("drizzle-orm/pg-core").PgColumn<{
614
- name: "credits_remaining_mnt";
631
+ remainingMicros: import("drizzle-orm/pg-core").PgColumn<{
632
+ name: "remaining_micros";
615
633
  tableName: "trial_credits";
616
634
  dataType: "number";
617
- columnType: "PgInteger";
635
+ columnType: "PgBigInt53";
618
636
  data: number;
619
637
  driverParam: string | number;
620
638
  notNull: true;
@@ -627,6 +645,23 @@ export declare const trialCredits: import("drizzle-orm/pg-core").PgTableWithColu
627
645
  identity: undefined;
628
646
  generated: undefined;
629
647
  }, {}, {}>;
648
+ currency: import("drizzle-orm/pg-core").PgColumn<{
649
+ name: "currency";
650
+ tableName: "trial_credits";
651
+ dataType: "string";
652
+ columnType: "PgText";
653
+ data: string;
654
+ driverParam: string;
655
+ notNull: true;
656
+ hasDefault: true;
657
+ isPrimaryKey: false;
658
+ isAutoincrement: false;
659
+ hasRuntimeDefault: false;
660
+ enumValues: [string, ...string[]];
661
+ baseColumn: never;
662
+ identity: undefined;
663
+ generated: undefined;
664
+ }, {}, {}>;
630
665
  status: import("drizzle-orm/pg-core").PgColumn<{
631
666
  name: "status";
632
667
  tableName: "trial_credits";
@@ -767,20 +802,10 @@ export declare const trialCredits: import("drizzle-orm/pg-core").PgTableWithColu
767
802
  dialect: "pg";
768
803
  }>;
769
804
  /**
770
- * Rate Limit Entries table - Sliding window rate limiting (QUOTA-10)
771
- *
772
- * One row per (workspace, endpoint, minute bucket), with a counter.
773
- * Each request upserts the row and atomically increments `count`, so N
774
- * concurrent requests observe 1..N and exactly `limit` are admitted.
775
- *
776
- * An earlier version used ON CONFLICT DO NOTHING, which admitted
777
- * exactly ONE request per minute on every plan — the per-plan limit was
778
- * never consulted. See packages/billing/src/rate-limit.ts.
779
- *
780
- * Old buckets are deleted by the billing-maintenance cron.
781
- *
782
- * Database-backed rate limiting is the correct choice for <10K users
783
- * (no Redis dependency, per architecture decisions).
805
+ * One row per (workspace, endpoint, minute bucket). Each request upserts the
806
+ * row and atomically increments `count`, so N concurrent requests observe
807
+ * 1..N and exactly `limit` are admitted. Old buckets are deleted by the
808
+ * billing-maintenance job.
784
809
  */
785
810
  export declare const rateLimitEntries: import("drizzle-orm/pg-core").PgTableWithColumns<{
786
811
  name: "rate_limit_entries";
@@ -892,15 +917,9 @@ export declare const rateLimitEntries: import("drizzle-orm/pg-core").PgTableWith
892
917
  dialect: "pg";
893
918
  }>;
894
919
  /**
895
- * Notification History table - Tracks sent notifications for deduplication
896
- *
897
- * Records each notification sent (quota warnings, trial alerts) with a
898
- * period-based deduplication key. The unique constraint on
899
- * (workspaceId, type, periodKey) prevents sending the same notification
900
- * twice in the same billing period.
901
- *
902
- * Phase 14 will update the channel from "console" to "email" and use
903
- * Resend for actual delivery. For now, notifications are logged to console.
920
+ * Sent quota and trial notifications. The unique constraint on
921
+ * (workspaceId, type, periodKey) keeps one notification from being sent
922
+ * twice in a billing period.
904
923
  */
905
924
  export declare const notificationHistory: import("drizzle-orm/pg-core").PgTableWithColumns<{
906
925
  name: "notification_history";
@@ -1029,11 +1048,9 @@ export declare const notificationHistory: import("drizzle-orm/pg-core").PgTableW
1029
1048
  dialect: "pg";
1030
1049
  }>;
1031
1050
  /**
1032
- * User Quotas table — per-user, per-action usage counters.
1033
- *
1034
- * One row per user (not per period — one-time payment model). Counters
1035
- * live in the `usage` JSONB map and increment atomically in SQL, so a
1036
- * quota check is O(1) with no SUM over usage_records.
1051
+ * Per-user, per-action usage counters, one row per user and workspace (not
1052
+ * per period). Counters live in the `usage` JSONB map and increment
1053
+ * atomically in SQL, so a quota check is O(1).
1037
1054
  */
1038
1055
  export declare const userQuotas: import("drizzle-orm/pg-core").PgTableWithColumns<{
1039
1056
  name: "user_quotas";
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/db/schema/usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/db/schema/usage.ts"],"names":[],"mappings":"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"}