@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.
- package/NOTICE +6 -0
- package/README.md +102 -0
- package/dist/attachments/errors.d.ts +7 -0
- package/dist/attachments/errors.d.ts.map +1 -0
- package/dist/attachments/errors.js +11 -0
- package/dist/attachments/errors.js.map +1 -0
- package/dist/attachments/index.d.ts +8 -0
- package/dist/attachments/index.d.ts.map +1 -0
- package/dist/attachments/index.js +7 -0
- package/dist/attachments/index.js.map +1 -0
- package/dist/attachments/service.d.ts +45 -0
- package/dist/attachments/service.d.ts.map +1 -0
- package/dist/attachments/service.js +100 -0
- package/dist/attachments/service.js.map +1 -0
- package/dist/attachments/types.d.ts +6 -0
- package/dist/attachments/types.d.ts.map +1 -0
- package/dist/attachments/types.js +2 -0
- package/dist/attachments/types.js.map +1 -0
- package/dist/conversations/errors.d.ts +2 -8
- package/dist/conversations/errors.d.ts.map +1 -1
- package/dist/conversations/errors.js +2 -8
- package/dist/conversations/errors.js.map +1 -1
- package/dist/conversations/index.d.ts +4 -12
- package/dist/conversations/index.d.ts.map +1 -1
- package/dist/conversations/index.js +2 -11
- package/dist/conversations/index.js.map +1 -1
- package/dist/conversations/service.d.ts +49 -61
- package/dist/conversations/service.d.ts.map +1 -1
- package/dist/conversations/service.js +110 -83
- package/dist/conversations/service.js.map +1 -1
- package/dist/conversations/types.d.ts +1 -4
- package/dist/conversations/types.d.ts.map +1 -1
- package/dist/conversations/types.js +0 -3
- package/dist/conversations/types.js.map +1 -1
- package/dist/db/client.d.ts +21 -10
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +43 -18
- package/dist/db/client.js.map +1 -1
- package/dist/db/index.d.ts +3 -3
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +3 -7
- package/dist/db/index.js.map +1 -1
- package/dist/db/schema/agents.d.ts +14 -51
- package/dist/db/schema/agents.d.ts.map +1 -1
- package/dist/db/schema/agents.js +9 -21
- package/dist/db/schema/agents.js.map +1 -1
- package/dist/db/schema/ai.d.ts +86 -1556
- package/dist/db/schema/ai.d.ts.map +1 -1
- package/dist/db/schema/ai.js +32 -236
- package/dist/db/schema/ai.js.map +1 -1
- package/dist/db/schema/auth.d.ts +5 -34
- package/dist/db/schema/auth.d.ts.map +1 -1
- package/dist/db/schema/auth.js +25 -56
- package/dist/db/schema/auth.js.map +1 -1
- package/dist/db/schema/billing.d.ts +136 -107
- package/dist/db/schema/billing.d.ts.map +1 -1
- package/dist/db/schema/billing.js +72 -60
- package/dist/db/schema/billing.js.map +1 -1
- package/dist/db/schema/feature-flags.d.ts +3 -12
- package/dist/db/schema/feature-flags.d.ts.map +1 -1
- package/dist/db/schema/feature-flags.js +3 -12
- package/dist/db/schema/feature-flags.js.map +1 -1
- package/dist/db/schema/identity.d.ts +12 -274
- package/dist/db/schema/identity.d.ts.map +1 -1
- package/dist/db/schema/identity.js +19 -104
- package/dist/db/schema/identity.js.map +1 -1
- package/dist/db/schema/index.d.ts +8 -15
- package/dist/db/schema/index.d.ts.map +1 -1
- package/dist/db/schema/index.js +12 -42
- package/dist/db/schema/index.js.map +1 -1
- package/dist/db/schema/notifications.d.ts +3 -17
- package/dist/db/schema/notifications.d.ts.map +1 -1
- package/dist/db/schema/notifications.js +3 -17
- package/dist/db/schema/notifications.js.map +1 -1
- package/dist/db/schema/usage.d.ts +94 -77
- package/dist/db/schema/usage.d.ts.map +1 -1
- package/dist/db/schema/usage.js +59 -89
- package/dist/db/schema/usage.js.map +1 -1
- package/dist/db/validate.d.ts +2 -11
- package/dist/db/validate.d.ts.map +1 -1
- package/dist/db/validate.js +6 -17
- package/dist/db/validate.js.map +1 -1
- package/dist/db/workspace-queries.d.ts +5 -29
- package/dist/db/workspace-queries.d.ts.map +1 -1
- package/dist/db/workspace-queries.js +5 -29
- package/dist/db/workspace-queries.js.map +1 -1
- package/dist/documents/classifier.d.ts +5 -12
- package/dist/documents/classifier.d.ts.map +1 -1
- package/dist/documents/classifier.js +16 -16
- package/dist/documents/classifier.js.map +1 -1
- package/dist/documents/errors.d.ts +2 -10
- package/dist/documents/errors.d.ts.map +1 -1
- package/dist/documents/errors.js +2 -10
- package/dist/documents/errors.js.map +1 -1
- package/dist/documents/index.d.ts +4 -13
- package/dist/documents/index.d.ts.map +1 -1
- package/dist/documents/index.js +3 -12
- package/dist/documents/index.js.map +1 -1
- package/dist/documents/service.d.ts +19 -26
- package/dist/documents/service.d.ts.map +1 -1
- package/dist/documents/service.js +44 -38
- package/dist/documents/service.js.map +1 -1
- package/dist/documents/types.d.ts +6 -10
- package/dist/documents/types.d.ts.map +1 -1
- package/dist/documents/types.js +0 -3
- package/dist/documents/types.js.map +1 -1
- package/dist/email/brand.d.ts +17 -0
- package/dist/email/brand.d.ts.map +1 -0
- package/dist/email/brand.js +9 -0
- package/dist/email/brand.js.map +1 -0
- package/dist/email/index.d.ts +4 -4
- package/dist/email/index.js +4 -4
- package/dist/email/provider.d.ts +1 -7
- package/dist/email/provider.d.ts.map +1 -1
- package/dist/email/provider.js +10 -19
- package/dist/email/provider.js.map +1 -1
- package/dist/email/send.d.ts +12 -12
- package/dist/email/send.d.ts.map +1 -1
- package/dist/email/send.js +5 -19
- package/dist/email/send.js.map +1 -1
- package/dist/email/senders.d.ts +17 -30
- package/dist/email/senders.d.ts.map +1 -1
- package/dist/email/senders.js +33 -47
- package/dist/email/senders.js.map +1 -1
- package/dist/email/templates/base-layout.d.ts +1 -1
- package/dist/email/templates/base-layout.d.ts.map +1 -1
- package/dist/email/templates/base-layout.js +4 -6
- package/dist/email/templates/base-layout.js.map +1 -1
- package/dist/email/templates/index.d.ts +10 -10
- package/dist/email/templates/index.d.ts.map +1 -1
- package/dist/email/templates/index.js +10 -16
- package/dist/email/templates/index.js.map +1 -1
- package/dist/email/templates/password-reset.d.ts +2 -2
- package/dist/email/templates/password-reset.d.ts.map +1 -1
- package/dist/email/templates/password-reset.js +10 -22
- package/dist/email/templates/password-reset.js.map +1 -1
- package/dist/email/templates/payment-failed.d.ts +2 -2
- package/dist/email/templates/payment-failed.d.ts.map +1 -1
- package/dist/email/templates/payment-failed.js +11 -24
- package/dist/email/templates/payment-failed.js.map +1 -1
- package/dist/email/templates/quota-warning.d.ts +4 -4
- package/dist/email/templates/quota-warning.d.ts.map +1 -1
- package/dist/email/templates/quota-warning.js +19 -39
- package/dist/email/templates/quota-warning.js.map +1 -1
- package/dist/email/templates/subscription-confirmed.d.ts +2 -2
- package/dist/email/templates/subscription-confirmed.d.ts.map +1 -1
- package/dist/email/templates/subscription-confirmed.js +13 -28
- package/dist/email/templates/subscription-confirmed.js.map +1 -1
- package/dist/email/templates/trial-expiry.d.ts +2 -2
- package/dist/email/templates/trial-expiry.d.ts.map +1 -1
- package/dist/email/templates/trial-expiry.js +12 -36
- package/dist/email/templates/trial-expiry.js.map +1 -1
- package/dist/email/templates/trial-warning.d.ts +2 -2
- package/dist/email/templates/trial-warning.d.ts.map +1 -1
- package/dist/email/templates/trial-warning.js +15 -32
- package/dist/email/templates/trial-warning.js.map +1 -1
- package/dist/email/templates/verify-email.d.ts +2 -2
- package/dist/email/templates/verify-email.d.ts.map +1 -1
- package/dist/email/templates/verify-email.js +10 -22
- package/dist/email/templates/verify-email.js.map +1 -1
- package/dist/email/templates/welcome.d.ts +2 -2
- package/dist/email/templates/welcome.d.ts.map +1 -1
- package/dist/email/templates/welcome.js +13 -20
- package/dist/email/templates/welcome.js.map +1 -1
- package/dist/email/templates/workspace-invitation.d.ts +2 -2
- package/dist/email/templates/workspace-invitation.d.ts.map +1 -1
- package/dist/email/templates/workspace-invitation.js +12 -26
- package/dist/email/templates/workspace-invitation.js.map +1 -1
- package/dist/env.d.ts +5 -10
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +41 -31
- package/dist/env.js.map +1 -1
- package/dist/identity/audit.d.ts +11 -24
- package/dist/identity/audit.d.ts.map +1 -1
- package/dist/identity/audit.js +13 -27
- package/dist/identity/audit.js.map +1 -1
- package/dist/identity/errors.d.ts +4 -12
- package/dist/identity/errors.d.ts.map +1 -1
- package/dist/identity/errors.js +2 -8
- package/dist/identity/errors.js.map +1 -1
- package/dist/identity/index.d.ts +5 -13
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +4 -12
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/service.d.ts +13 -47
- package/dist/identity/service.d.ts.map +1 -1
- package/dist/identity/service.js +31 -78
- package/dist/identity/service.js.map +1 -1
- package/dist/identity/types.d.ts +1 -4
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/identity/types.js +0 -3
- package/dist/identity/types.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -10
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +7 -18
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +45 -49
- package/dist/logger.js.map +1 -1
- package/dist/money.d.ts +95 -0
- package/dist/money.d.ts.map +1 -0
- package/dist/money.js +208 -0
- package/dist/money.js.map +1 -0
- package/dist/notifications/index.d.ts +9 -43
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +9 -49
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/triggers.d.ts +9 -32
- package/dist/notifications/triggers.d.ts.map +1 -1
- package/dist/notifications/triggers.js +21 -58
- package/dist/notifications/triggers.js.map +1 -1
- package/dist/notifications/types.d.ts +1 -10
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/notifications/types.js +0 -9
- package/dist/notifications/types.js.map +1 -1
- package/dist/prompt.d.ts +38 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +118 -0
- package/dist/prompt.js.map +1 -0
- package/dist/registry.d.ts +32 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +60 -0
- package/dist/registry.js.map +1 -0
- package/dist/request-context.d.ts +49 -0
- package/dist/request-context.d.ts.map +1 -0
- package/dist/request-context.js +100 -0
- package/dist/request-context.js.map +1 -0
- package/dist/storage/index.d.ts +65 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +109 -0
- package/dist/storage/index.js.map +1 -0
- package/package.json +74 -24
- package/src/attachments/errors.ts +18 -0
- package/src/attachments/index.ts +22 -0
- package/src/attachments/service.ts +178 -0
- package/src/attachments/types.ts +6 -0
- package/src/conversations/errors.ts +45 -0
- package/src/conversations/index.ts +39 -0
- package/src/conversations/service.ts +594 -0
- package/src/conversations/types.ts +15 -0
- package/src/db/client.ts +91 -0
- package/src/db/index.ts +3 -0
- package/src/db/migrations/0000_baseline.sql +652 -0
- package/src/db/migrations/0001_reconcile_chain_built_databases.sql +53 -0
- package/src/db/migrations/0002_webhook_claim_lease.sql +1 -0
- package/src/db/migrations/README.md +74 -36
- package/src/db/migrations/legacy-chain.json +197 -0
- package/src/db/migrations/meta/0000_snapshot.json +4182 -157
- package/src/db/migrations/meta/0002_snapshot.json +2478 -368
- package/src/db/migrations/meta/_journal.json +6 -279
- package/src/db/schema/agents.ts +57 -0
- package/src/db/schema/ai.ts +174 -0
- package/src/db/schema/auth.ts +183 -0
- package/src/db/schema/billing.ts +209 -0
- package/src/db/schema/feature-flags.ts +20 -0
- package/src/db/schema/identity.ts +250 -0
- package/src/db/schema/index.ts +12 -0
- package/src/db/schema/notifications.ts +31 -0
- package/src/db/schema/usage.ts +269 -0
- package/src/db/validate.ts +63 -0
- package/src/db/workspace-queries.ts +64 -0
- package/src/documents/classifier.ts +61 -0
- package/src/documents/errors.ts +44 -0
- package/src/documents/index.ts +24 -0
- package/src/documents/service.ts +256 -0
- package/src/documents/types.ts +24 -0
- package/src/email/brand.ts +24 -0
- package/src/email/index.ts +19 -0
- package/src/email/provider.ts +278 -0
- package/src/email/send.ts +169 -0
- package/src/email/senders.ts +292 -0
- package/src/email/templates/base-layout.tsx +145 -0
- package/src/email/templates/index.ts +28 -0
- package/src/email/templates/password-reset.tsx +72 -0
- package/src/email/templates/payment-failed.tsx +77 -0
- package/src/email/templates/quota-warning.tsx +118 -0
- package/src/email/templates/subscription-confirmed.tsx +91 -0
- package/src/email/templates/trial-expiry.tsx +124 -0
- package/src/email/templates/trial-warning.tsx +104 -0
- package/src/email/templates/verify-email.tsx +72 -0
- package/src/email/templates/welcome.tsx +64 -0
- package/src/email/templates/workspace-invitation.tsx +105 -0
- package/src/env.ts +180 -0
- package/src/identity/audit.ts +65 -0
- package/src/identity/errors.ts +44 -0
- package/src/identity/index.ts +26 -0
- package/src/identity/service.ts +202 -0
- package/src/identity/types.ts +28 -0
- package/src/index.ts +4 -0
- package/src/logger.ts +198 -0
- package/src/money.ts +270 -0
- package/src/notifications/index.ts +108 -0
- package/src/notifications/triggers.ts +158 -0
- package/src/notifications/types.ts +18 -0
- package/src/prompt.ts +142 -0
- package/src/registry.ts +75 -0
- package/src/request-context.ts +137 -0
- package/src/storage/index.ts +153 -0
- package/dist/db/schema/rag.d.ts +0 -171
- package/dist/db/schema/rag.d.ts.map +0 -1
- package/dist/db/schema/rag.js +0 -42
- package/dist/db/schema/rag.js.map +0 -1
- package/src/db/migrations/0000_sharp_night_nurse.sql +0 -52
- package/src/db/migrations/0001_hesitant_vapor.sql +0 -40
- package/src/db/migrations/0002_numerous_lady_vermin.sql +0 -235
- package/src/db/migrations/0003_mighty_jean_grey.sql +0 -37
- package/src/db/migrations/0004_cynical_grandmaster.sql +0 -2
- package/src/db/migrations/0005_careful_switch.sql +0 -8
- package/src/db/migrations/0006_tense_blue_marvel.sql +0 -16
- package/src/db/migrations/0007_next_squadron_sinister.sql +0 -1
- package/src/db/migrations/0008_powerful_scream.sql +0 -39
- package/src/db/migrations/0009_sad_ink.sql +0 -1
- package/src/db/migrations/0010_shocking_omega_flight.sql +0 -2
- package/src/db/migrations/0011_ambiguous_otto_octavius.sql +0 -151
- package/src/db/migrations/0011_hnsw_vector_index.sql +0 -17
- package/src/db/migrations/0012_user_profiles.sql +0 -30
- package/src/db/migrations/0013_trending_seasonal_columns.sql +0 -9
- package/src/db/migrations/0014_add_product_type_to_agents.sql +0 -6
- package/src/db/migrations/0015_new_v1_tables.sql +0 -149
- package/src/db/migrations/0016_document_types.sql +0 -30
- package/src/db/migrations/0017_document_metadata.sql +0 -2
- package/src/db/migrations/0018_identity_graph.sql +0 -200
- package/src/db/migrations/0019_db_driven_prompts.sql +0 -20
- package/src/db/migrations/0020_pending_extractions.sql +0 -35
- package/src/db/migrations/0021_rag_documents.sql +0 -39
- package/src/db/migrations/0022_user_quotas_usage_jsonb.sql +0 -70
- package/src/db/migrations/0023_user_facts_user_scoped_unique.sql +0 -17
- package/src/db/migrations/0024_user_memories_hnsw.sql +0 -23
- package/src/db/migrations/0025_audit_trigger_errcode.sql +0 -21
- package/src/db/migrations/0026_user_profile_snapshots_composite_pk.sql +0 -17
- package/src/db/migrations/0027_billing_settings_mnt_columns.sql +0 -54
- package/src/db/migrations/0028_trial_credits_normalized_email.sql +0 -37
- package/src/db/migrations/0029_usage_records_conversation_idx.sql +0 -13
- package/src/db/migrations/0030_pending_extractions_composite_idx.sql +0 -11
- package/src/db/migrations/0031_rag_documents_hnsw.sql +0 -16
- package/src/db/migrations/0032_rate_limit_unique_idx.sql +0 -16
- package/src/db/migrations/0033_pending_extractions_partial_idx.sql +0 -18
- package/src/db/migrations/0034_rate_limit_count.sql +0 -9
- package/src/db/migrations/0035_credit_reservations.sql +0 -24
- package/src/db/migrations/0036_executions_audit_jobs.sql +0 -96
- package/src/db/migrations/0037_rate_limit_minute_bucket.sql +0 -46
- package/src/db/migrations/0038_user_quotas_generic_usage.sql +0 -25
- package/src/db/migrations/0039_platform_admin_impersonation.sql +0 -27
- package/src/db/migrations/0040_ee_audit_chain.sql +0 -23
- package/src/db/migrations/meta/0001_snapshot.json +0 -631
- package/src/db/migrations/meta/0003_snapshot.json +0 -2488
- package/src/db/migrations/meta/0004_snapshot.json +0 -2500
- package/src/db/migrations/meta/0005_snapshot.json +0 -2548
- package/src/db/migrations/meta/0006_snapshot.json +0 -2650
- package/src/db/migrations/meta/0007_snapshot.json +0 -2657
- package/src/db/migrations/meta/0008_snapshot.json +0 -2719
- package/src/db/migrations/meta/0009_snapshot.json +0 -2726
- package/src/db/migrations/meta/0010_snapshot.json +0 -2739
- package/src/db/migrations/meta/0011_snapshot.json +0 -3886
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/db/schema/auth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/db/schema/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EACL,OAAO,EACP,IAAI,EACJ,SAAS,EACT,OAAO,EACP,KAAK,EACL,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAE7B,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAC1B,OAAO,EACP;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;IACvC,aAAa,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACjE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,EAAE,kDAAkD;IACtF,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACzD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACzD,mBAAmB,EAAE,OAAO,CAAC,sBAAsB,CAAC;SACjD,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;IACjB,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,mEAAmE;IAC5G,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,oCAAoC;IAC3G;;;;OAIG;IACH,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAClB,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClD,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;IAC7B,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC;CACrC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,6DAA6D;IAC7D,KAAK,CAAC,gBAAgB,CAAC;SACpB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SACd,KAAK,CAAC,GAAG,CAAA,GAAG,KAAK,CAAC,IAAI,cAAc,CAAC;CACzC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAC7B,UAAU,EACV;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;SACpB,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;IACvC,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC5C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;IAC7B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;IAC7B;;;OAGG;IACH,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;IACvC;;;;OAIG;IACH,oBAAoB,EAAE,IAAI,CAAC,wBAAwB,CAAC;IACpD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACzD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAC5D,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAC7B,UAAU,EACV;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;SACpB,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtD,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;IACzC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;IACjC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC;IACnC,oBAAoB,EAAE,SAAS,CAAC,yBAAyB,CAAC;IAC1D,qBAAqB,EAAE,SAAS,CAAC,0BAA0B,CAAC;IAC5D,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;IACpB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;IACzB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACzD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAC5D,CAAC;AAEF,oDAAoD;AACpD,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE;IACpD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACxC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC5C,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACzD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE;IAClD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;IAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACzD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAC3B,QAAQ,EACR;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;SACpC,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC7D,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;SACpB,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACzD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,KAAK,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;IAC5D,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IAC5C,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAC7C,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,MAAM,CACb;CACF,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAC/B,YAAY,EACZ;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;SACpC,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC7D,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAChC,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC5C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE;QACvD,QAAQ,EAAE,UAAU;KACrB,CAAC;IACF,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACzD,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAC1D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,KAAK,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;IAChE,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;CAC9C,CACF,CAAC"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Tables for managing subscriptions, plans, credits, and finance events.
|
|
5
|
-
* Used by Stripe integration for subscription and credit-based billing.
|
|
6
|
-
*
|
|
7
|
-
* Pattern: snake_case columns in PostgreSQL, camelCase TypeScript API (via Drizzle mapping)
|
|
2
|
+
* Plans, subscriptions, credit ledgers, purchases and Stripe events.
|
|
3
|
+
* Amounts in the credit ledgers are micros of their currency.
|
|
8
4
|
*/
|
|
9
5
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
6
|
+
* The registered plan catalogue, copied into rows so a subscription can
|
|
7
|
+
* reference its plan. The catalogue is the source: the rows are written
|
|
8
|
+
* from it at boot, and an edit made here is overwritten by the next one.
|
|
12
9
|
*/
|
|
13
10
|
export declare const plans: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
14
11
|
name: "plans";
|
|
@@ -255,10 +252,7 @@ export declare const plans: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
255
252
|
};
|
|
256
253
|
dialect: "pg";
|
|
257
254
|
}>;
|
|
258
|
-
/**
|
|
259
|
-
* Subscriptions table - Workspace subscription state
|
|
260
|
-
* Each workspace has one active subscription (unique constraint)
|
|
261
|
-
*/
|
|
255
|
+
/** One subscription per workspace (unique constraint). */
|
|
262
256
|
export declare const subscriptions: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
263
257
|
name: "subscriptions";
|
|
264
258
|
schema: undefined;
|
|
@@ -470,10 +464,7 @@ export declare const subscriptions: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
470
464
|
};
|
|
471
465
|
dialect: "pg";
|
|
472
466
|
}>;
|
|
473
|
-
/**
|
|
474
|
-
* Credit balances table - Credit mode balance tracking
|
|
475
|
-
* Each workspace has one credit balance record (unique constraint on workspaceId)
|
|
476
|
-
*/
|
|
467
|
+
/** One credit balance per workspace (unique constraint). */
|
|
477
468
|
export declare const creditBalances: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
478
469
|
name: "credit_balances";
|
|
479
470
|
schema: undefined;
|
|
@@ -512,28 +503,11 @@ export declare const creditBalances: import("drizzle-orm/pg-core").PgTableWithCo
|
|
|
512
503
|
identity: undefined;
|
|
513
504
|
generated: undefined;
|
|
514
505
|
}, {}, {}>;
|
|
515
|
-
|
|
516
|
-
name: "
|
|
517
|
-
tableName: "credit_balances";
|
|
518
|
-
dataType: "number";
|
|
519
|
-
columnType: "PgInteger";
|
|
520
|
-
data: number;
|
|
521
|
-
driverParam: string | number;
|
|
522
|
-
notNull: true;
|
|
523
|
-
hasDefault: true;
|
|
524
|
-
isPrimaryKey: false;
|
|
525
|
-
isAutoincrement: false;
|
|
526
|
-
hasRuntimeDefault: false;
|
|
527
|
-
enumValues: undefined;
|
|
528
|
-
baseColumn: never;
|
|
529
|
-
identity: undefined;
|
|
530
|
-
generated: undefined;
|
|
531
|
-
}, {}, {}>;
|
|
532
|
-
totalPurchased: import("drizzle-orm/pg-core").PgColumn<{
|
|
533
|
-
name: "total_purchased";
|
|
506
|
+
balanceMicros: import("drizzle-orm/pg-core").PgColumn<{
|
|
507
|
+
name: "balance_micros";
|
|
534
508
|
tableName: "credit_balances";
|
|
535
509
|
dataType: "number";
|
|
536
|
-
columnType: "
|
|
510
|
+
columnType: "PgBigInt53";
|
|
537
511
|
data: number;
|
|
538
512
|
driverParam: string | number;
|
|
539
513
|
notNull: true;
|
|
@@ -546,11 +520,11 @@ export declare const creditBalances: import("drizzle-orm/pg-core").PgTableWithCo
|
|
|
546
520
|
identity: undefined;
|
|
547
521
|
generated: undefined;
|
|
548
522
|
}, {}, {}>;
|
|
549
|
-
|
|
550
|
-
name: "
|
|
523
|
+
totalPurchasedMicros: import("drizzle-orm/pg-core").PgColumn<{
|
|
524
|
+
name: "total_purchased_micros";
|
|
551
525
|
tableName: "credit_balances";
|
|
552
526
|
dataType: "number";
|
|
553
|
-
columnType: "
|
|
527
|
+
columnType: "PgBigInt53";
|
|
554
528
|
data: number;
|
|
555
529
|
driverParam: string | number;
|
|
556
530
|
notNull: true;
|
|
@@ -563,11 +537,11 @@ export declare const creditBalances: import("drizzle-orm/pg-core").PgTableWithCo
|
|
|
563
537
|
identity: undefined;
|
|
564
538
|
generated: undefined;
|
|
565
539
|
}, {}, {}>;
|
|
566
|
-
|
|
567
|
-
name: "
|
|
540
|
+
totalUsedMicros: import("drizzle-orm/pg-core").PgColumn<{
|
|
541
|
+
name: "total_used_micros";
|
|
568
542
|
tableName: "credit_balances";
|
|
569
543
|
dataType: "number";
|
|
570
|
-
columnType: "
|
|
544
|
+
columnType: "PgBigInt53";
|
|
571
545
|
data: number;
|
|
572
546
|
driverParam: string | number;
|
|
573
547
|
notNull: true;
|
|
@@ -580,36 +554,19 @@ export declare const creditBalances: import("drizzle-orm/pg-core").PgTableWithCo
|
|
|
580
554
|
identity: undefined;
|
|
581
555
|
generated: undefined;
|
|
582
556
|
}, {}, {}>;
|
|
583
|
-
|
|
584
|
-
name: "
|
|
585
|
-
tableName: "credit_balances";
|
|
586
|
-
dataType: "number";
|
|
587
|
-
columnType: "PgInteger";
|
|
588
|
-
data: number;
|
|
589
|
-
driverParam: string | number;
|
|
590
|
-
notNull: true;
|
|
591
|
-
hasDefault: true;
|
|
592
|
-
isPrimaryKey: false;
|
|
593
|
-
isAutoincrement: false;
|
|
594
|
-
hasRuntimeDefault: false;
|
|
595
|
-
enumValues: undefined;
|
|
596
|
-
baseColumn: never;
|
|
597
|
-
identity: undefined;
|
|
598
|
-
generated: undefined;
|
|
599
|
-
}, {}, {}>;
|
|
600
|
-
totalUsedMnt: import("drizzle-orm/pg-core").PgColumn<{
|
|
601
|
-
name: "total_used_mnt";
|
|
557
|
+
currency: import("drizzle-orm/pg-core").PgColumn<{
|
|
558
|
+
name: "currency";
|
|
602
559
|
tableName: "credit_balances";
|
|
603
|
-
dataType: "
|
|
604
|
-
columnType: "
|
|
605
|
-
data:
|
|
606
|
-
driverParam: string
|
|
560
|
+
dataType: "string";
|
|
561
|
+
columnType: "PgText";
|
|
562
|
+
data: string;
|
|
563
|
+
driverParam: string;
|
|
607
564
|
notNull: true;
|
|
608
565
|
hasDefault: true;
|
|
609
566
|
isPrimaryKey: false;
|
|
610
567
|
isAutoincrement: false;
|
|
611
568
|
hasRuntimeDefault: false;
|
|
612
|
-
enumValues:
|
|
569
|
+
enumValues: [string, ...string[]];
|
|
613
570
|
baseColumn: never;
|
|
614
571
|
identity: undefined;
|
|
615
572
|
generated: undefined;
|
|
@@ -635,11 +592,8 @@ export declare const creditBalances: import("drizzle-orm/pg-core").PgTableWithCo
|
|
|
635
592
|
dialect: "pg";
|
|
636
593
|
}>;
|
|
637
594
|
/**
|
|
638
|
-
*
|
|
639
|
-
*
|
|
640
|
-
* model price changes and FX moves can be deployed without a code push.
|
|
641
|
-
*
|
|
642
|
-
* Convention: exactly one row with id = "default".
|
|
595
|
+
* Singleton (id = "default") holding the FX rate and margin, so they change
|
|
596
|
+
* without a deploy. Read per request, cached 60s in-process.
|
|
643
597
|
*/
|
|
644
598
|
export declare const billingSettings: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
645
599
|
name: "billing_settings";
|
|
@@ -662,11 +616,28 @@ export declare const billingSettings: import("drizzle-orm/pg-core").PgTableWithC
|
|
|
662
616
|
identity: undefined;
|
|
663
617
|
generated: undefined;
|
|
664
618
|
}, {}, {}>;
|
|
665
|
-
|
|
666
|
-
name: "
|
|
619
|
+
currency: import("drizzle-orm/pg-core").PgColumn<{
|
|
620
|
+
name: "currency";
|
|
621
|
+
tableName: "billing_settings";
|
|
622
|
+
dataType: "string";
|
|
623
|
+
columnType: "PgText";
|
|
624
|
+
data: string;
|
|
625
|
+
driverParam: string;
|
|
626
|
+
notNull: true;
|
|
627
|
+
hasDefault: true;
|
|
628
|
+
isPrimaryKey: false;
|
|
629
|
+
isAutoincrement: false;
|
|
630
|
+
hasRuntimeDefault: false;
|
|
631
|
+
enumValues: [string, ...string[]];
|
|
632
|
+
baseColumn: never;
|
|
633
|
+
identity: undefined;
|
|
634
|
+
generated: undefined;
|
|
635
|
+
}, {}, {}>;
|
|
636
|
+
usdRateMicros: import("drizzle-orm/pg-core").PgColumn<{
|
|
637
|
+
name: "usd_rate_micros";
|
|
667
638
|
tableName: "billing_settings";
|
|
668
639
|
dataType: "number";
|
|
669
|
-
columnType: "
|
|
640
|
+
columnType: "PgBigInt53";
|
|
670
641
|
data: number;
|
|
671
642
|
driverParam: string | number;
|
|
672
643
|
notNull: true;
|
|
@@ -679,8 +650,8 @@ export declare const billingSettings: import("drizzle-orm/pg-core").PgTableWithC
|
|
|
679
650
|
identity: undefined;
|
|
680
651
|
generated: undefined;
|
|
681
652
|
}, {}, {}>;
|
|
682
|
-
|
|
683
|
-
name: "
|
|
653
|
+
marginBp: import("drizzle-orm/pg-core").PgColumn<{
|
|
654
|
+
name: "margin_bp";
|
|
684
655
|
tableName: "billing_settings";
|
|
685
656
|
dataType: "number";
|
|
686
657
|
columnType: "PgInteger";
|
|
@@ -716,10 +687,7 @@ export declare const billingSettings: import("drizzle-orm/pg-core").PgTableWithC
|
|
|
716
687
|
};
|
|
717
688
|
dialect: "pg";
|
|
718
689
|
}>;
|
|
719
|
-
/**
|
|
720
|
-
* Credit purchases table - One-time credit purchases
|
|
721
|
-
* Tracks all credit purchase transactions
|
|
722
|
-
*/
|
|
690
|
+
/** One-time credit purchases. */
|
|
723
691
|
export declare const creditPurchases: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
724
692
|
name: "credit_purchases";
|
|
725
693
|
schema: undefined;
|
|
@@ -758,14 +726,14 @@ export declare const creditPurchases: import("drizzle-orm/pg-core").PgTableWithC
|
|
|
758
726
|
identity: undefined;
|
|
759
727
|
generated: undefined;
|
|
760
728
|
}, {}, {}>;
|
|
761
|
-
|
|
762
|
-
name: "
|
|
729
|
+
priceMinor: import("drizzle-orm/pg-core").PgColumn<{
|
|
730
|
+
name: "price_minor";
|
|
763
731
|
tableName: "credit_purchases";
|
|
764
732
|
dataType: "number";
|
|
765
733
|
columnType: "PgInteger";
|
|
766
734
|
data: number;
|
|
767
735
|
driverParam: string | number;
|
|
768
|
-
notNull:
|
|
736
|
+
notNull: false;
|
|
769
737
|
hasDefault: false;
|
|
770
738
|
isPrimaryKey: false;
|
|
771
739
|
isAutoincrement: false;
|
|
@@ -775,14 +743,31 @@ export declare const creditPurchases: import("drizzle-orm/pg-core").PgTableWithC
|
|
|
775
743
|
identity: undefined;
|
|
776
744
|
generated: undefined;
|
|
777
745
|
}, {}, {}>;
|
|
778
|
-
|
|
779
|
-
name: "
|
|
746
|
+
priceCurrency: import("drizzle-orm/pg-core").PgColumn<{
|
|
747
|
+
name: "price_currency";
|
|
748
|
+
tableName: "credit_purchases";
|
|
749
|
+
dataType: "string";
|
|
750
|
+
columnType: "PgText";
|
|
751
|
+
data: string;
|
|
752
|
+
driverParam: string;
|
|
753
|
+
notNull: false;
|
|
754
|
+
hasDefault: false;
|
|
755
|
+
isPrimaryKey: false;
|
|
756
|
+
isAutoincrement: false;
|
|
757
|
+
hasRuntimeDefault: false;
|
|
758
|
+
enumValues: [string, ...string[]];
|
|
759
|
+
baseColumn: never;
|
|
760
|
+
identity: undefined;
|
|
761
|
+
generated: undefined;
|
|
762
|
+
}, {}, {}>;
|
|
763
|
+
grantedMicros: import("drizzle-orm/pg-core").PgColumn<{
|
|
764
|
+
name: "granted_micros";
|
|
780
765
|
tableName: "credit_purchases";
|
|
781
766
|
dataType: "number";
|
|
782
|
-
columnType: "
|
|
767
|
+
columnType: "PgBigInt53";
|
|
783
768
|
data: number;
|
|
784
769
|
driverParam: string | number;
|
|
785
|
-
notNull:
|
|
770
|
+
notNull: false;
|
|
786
771
|
hasDefault: false;
|
|
787
772
|
isPrimaryKey: false;
|
|
788
773
|
isAutoincrement: false;
|
|
@@ -792,6 +777,23 @@ export declare const creditPurchases: import("drizzle-orm/pg-core").PgTableWithC
|
|
|
792
777
|
identity: undefined;
|
|
793
778
|
generated: undefined;
|
|
794
779
|
}, {}, {}>;
|
|
780
|
+
grantedCurrency: import("drizzle-orm/pg-core").PgColumn<{
|
|
781
|
+
name: "granted_currency";
|
|
782
|
+
tableName: "credit_purchases";
|
|
783
|
+
dataType: "string";
|
|
784
|
+
columnType: "PgText";
|
|
785
|
+
data: string;
|
|
786
|
+
driverParam: string;
|
|
787
|
+
notNull: false;
|
|
788
|
+
hasDefault: false;
|
|
789
|
+
isPrimaryKey: false;
|
|
790
|
+
isAutoincrement: false;
|
|
791
|
+
hasRuntimeDefault: false;
|
|
792
|
+
enumValues: [string, ...string[]];
|
|
793
|
+
baseColumn: never;
|
|
794
|
+
identity: undefined;
|
|
795
|
+
generated: undefined;
|
|
796
|
+
}, {}, {}>;
|
|
795
797
|
stripePaymentIntentId: import("drizzle-orm/pg-core").PgColumn<{
|
|
796
798
|
name: "stripe_payment_intent_id";
|
|
797
799
|
tableName: "credit_purchases";
|
|
@@ -863,10 +865,7 @@ export declare const creditPurchases: import("drizzle-orm/pg-core").PgTableWithC
|
|
|
863
865
|
};
|
|
864
866
|
dialect: "pg";
|
|
865
867
|
}>;
|
|
866
|
-
/**
|
|
867
|
-
* Finance events table - Audit trail for all Stripe events
|
|
868
|
-
* Ensures idempotent webhook processing and financial audit trail
|
|
869
|
-
*/
|
|
868
|
+
/** Every Stripe event, for idempotent webhook processing and audit. */
|
|
870
869
|
export declare const financeEvents: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
871
870
|
name: "finance_events";
|
|
872
871
|
schema: undefined;
|
|
@@ -939,8 +938,8 @@ export declare const financeEvents: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
939
938
|
identity: undefined;
|
|
940
939
|
generated: undefined;
|
|
941
940
|
}, {}, {}>;
|
|
942
|
-
|
|
943
|
-
name: "
|
|
941
|
+
amountMinor: import("drizzle-orm/pg-core").PgColumn<{
|
|
942
|
+
name: "amount_minor";
|
|
944
943
|
tableName: "finance_events";
|
|
945
944
|
dataType: "number";
|
|
946
945
|
columnType: "PgInteger";
|
|
@@ -990,6 +989,23 @@ export declare const financeEvents: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
990
989
|
identity: undefined;
|
|
991
990
|
generated: undefined;
|
|
992
991
|
}, {}, {}>;
|
|
992
|
+
claimedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
993
|
+
name: "claimed_at";
|
|
994
|
+
tableName: "finance_events";
|
|
995
|
+
dataType: "date";
|
|
996
|
+
columnType: "PgTimestamp";
|
|
997
|
+
data: Date;
|
|
998
|
+
driverParam: string;
|
|
999
|
+
notNull: false;
|
|
1000
|
+
hasDefault: false;
|
|
1001
|
+
isPrimaryKey: false;
|
|
1002
|
+
isAutoincrement: false;
|
|
1003
|
+
hasRuntimeDefault: false;
|
|
1004
|
+
enumValues: undefined;
|
|
1005
|
+
baseColumn: never;
|
|
1006
|
+
identity: undefined;
|
|
1007
|
+
generated: undefined;
|
|
1008
|
+
}, {}, {}>;
|
|
993
1009
|
processedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
994
1010
|
name: "processed_at";
|
|
995
1011
|
tableName: "finance_events";
|
|
@@ -1028,16 +1044,12 @@ export declare const financeEvents: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
1028
1044
|
dialect: "pg";
|
|
1029
1045
|
}>;
|
|
1030
1046
|
/**
|
|
1031
|
-
*
|
|
1032
|
-
*
|
|
1033
|
-
*
|
|
1034
|
-
*
|
|
1035
|
-
*
|
|
1036
|
-
*
|
|
1037
|
-
* ignored by the sum (cleanup cron deletes them).
|
|
1038
|
-
*
|
|
1039
|
-
* This is the seed of the Phase 2 `credit_reservations` table from the
|
|
1040
|
-
* v2 architecture plan (ADR-0004).
|
|
1047
|
+
* Closes the admission → settlement race. Admission inserts a reservation
|
|
1048
|
+
* for the worst-case estimate inside the same transaction that sums the
|
|
1049
|
+
* other active reservations, so concurrent requests cannot all be admitted
|
|
1050
|
+
* against the same balance. Settlement closes the reservation; abandoned
|
|
1051
|
+
* ones expire via `expires_at`, are ignored by the sum, and are deleted by
|
|
1052
|
+
* a cleanup job.
|
|
1041
1053
|
*/
|
|
1042
1054
|
export declare const creditReservations: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
1043
1055
|
name: "credit_reservations";
|
|
@@ -1094,15 +1106,15 @@ export declare const creditReservations: import("drizzle-orm/pg-core").PgTableWi
|
|
|
1094
1106
|
identity: undefined;
|
|
1095
1107
|
generated: undefined;
|
|
1096
1108
|
}, {}, {}>;
|
|
1097
|
-
|
|
1098
|
-
name: "
|
|
1109
|
+
estimatedMicros: import("drizzle-orm/pg-core").PgColumn<{
|
|
1110
|
+
name: "estimated_micros";
|
|
1099
1111
|
tableName: "credit_reservations";
|
|
1100
1112
|
dataType: "number";
|
|
1101
|
-
columnType: "
|
|
1113
|
+
columnType: "PgBigInt53";
|
|
1102
1114
|
data: number;
|
|
1103
1115
|
driverParam: string | number;
|
|
1104
1116
|
notNull: true;
|
|
1105
|
-
hasDefault:
|
|
1117
|
+
hasDefault: true;
|
|
1106
1118
|
isPrimaryKey: false;
|
|
1107
1119
|
isAutoincrement: false;
|
|
1108
1120
|
hasRuntimeDefault: false;
|
|
@@ -1111,6 +1123,23 @@ export declare const creditReservations: import("drizzle-orm/pg-core").PgTableWi
|
|
|
1111
1123
|
identity: undefined;
|
|
1112
1124
|
generated: undefined;
|
|
1113
1125
|
}, {}, {}>;
|
|
1126
|
+
currency: import("drizzle-orm/pg-core").PgColumn<{
|
|
1127
|
+
name: "currency";
|
|
1128
|
+
tableName: "credit_reservations";
|
|
1129
|
+
dataType: "string";
|
|
1130
|
+
columnType: "PgText";
|
|
1131
|
+
data: string;
|
|
1132
|
+
driverParam: string;
|
|
1133
|
+
notNull: true;
|
|
1134
|
+
hasDefault: true;
|
|
1135
|
+
isPrimaryKey: false;
|
|
1136
|
+
isAutoincrement: false;
|
|
1137
|
+
hasRuntimeDefault: false;
|
|
1138
|
+
enumValues: [string, ...string[]];
|
|
1139
|
+
baseColumn: never;
|
|
1140
|
+
identity: undefined;
|
|
1141
|
+
generated: undefined;
|
|
1142
|
+
}, {}, {}>;
|
|
1114
1143
|
status: import("drizzle-orm/pg-core").PgColumn<{
|
|
1115
1144
|
name: "status";
|
|
1116
1145
|
tableName: "credit_reservations";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../../src/db/schema/billing.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../../src/db/schema/billing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Tables for managing subscriptions, plans, credits, and finance events.
|
|
5
|
-
* Used by Stripe integration for subscription and credit-based billing.
|
|
6
|
-
*
|
|
7
|
-
* Pattern: snake_case columns in PostgreSQL, camelCase TypeScript API (via Drizzle mapping)
|
|
2
|
+
* Plans, subscriptions, credit ledgers, purchases and Stripe events.
|
|
3
|
+
* Amounts in the credit ledgers are micros of their currency.
|
|
8
4
|
*/
|
|
9
|
-
import { pgTable, text, timestamp, integer, boolean, index, unique, } from "drizzle-orm/pg-core";
|
|
10
|
-
import { organization } from "./auth";
|
|
5
|
+
import { pgTable, text, timestamp, integer, bigint, boolean, index, unique, } from "drizzle-orm/pg-core";
|
|
6
|
+
import { organization } from "./auth.js";
|
|
11
7
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* The registered plan catalogue, copied into rows so a subscription can
|
|
9
|
+
* reference its plan. The catalogue is the source: the rows are written
|
|
10
|
+
* from it at boot, and an edit made here is overwritten by the next one.
|
|
14
11
|
*/
|
|
15
12
|
export const plans = pgTable("plans", {
|
|
16
13
|
id: text("id").primaryKey(),
|
|
17
14
|
name: text("name").notNull(),
|
|
18
15
|
slug: text("slug").notNull().unique(),
|
|
19
16
|
description: text("description"),
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Whole major units — 29 is twenty-nine of the currency, not cents —
|
|
19
|
+
* rounded from the catalogue's price. 0 for free. The row names no
|
|
20
|
+
* currency; readers take the deployment's billing currency.
|
|
21
|
+
*/
|
|
22
|
+
priceMonthly: integer("price_monthly").notNull(),
|
|
23
|
+
/** Whole major units, as `priceMonthly`. 0 when the plan has no yearly price. */
|
|
24
|
+
priceYearly: integer("price_yearly").notNull(),
|
|
22
25
|
stripePriceIdMonthly: text("stripe_price_id_monthly"),
|
|
23
26
|
stripePriceIdYearly: text("stripe_price_id_yearly"),
|
|
24
27
|
features: text("features").notNull(), // JSON string array
|
|
@@ -28,10 +31,7 @@ export const plans = pgTable("plans", {
|
|
|
28
31
|
createdAt: timestamp("created_at").notNull().defaultNow(),
|
|
29
32
|
updatedAt: timestamp("updated_at").notNull().defaultNow(),
|
|
30
33
|
});
|
|
31
|
-
/**
|
|
32
|
-
* Subscriptions table - Workspace subscription state
|
|
33
|
-
* Each workspace has one active subscription (unique constraint)
|
|
34
|
-
*/
|
|
34
|
+
/** One subscription per workspace (unique constraint). */
|
|
35
35
|
export const subscriptions = pgTable("subscriptions", {
|
|
36
36
|
id: text("id").primaryKey(),
|
|
37
37
|
workspaceId: text("workspace_id")
|
|
@@ -53,60 +53,65 @@ export const subscriptions = pgTable("subscriptions", {
|
|
|
53
53
|
index("subscriptions_workspace_id_idx").on(table.workspaceId),
|
|
54
54
|
unique("subscriptions_workspace_id_unique").on(table.workspaceId),
|
|
55
55
|
]);
|
|
56
|
-
/**
|
|
57
|
-
* Credit balances table - Credit mode balance tracking
|
|
58
|
-
* Each workspace has one credit balance record (unique constraint on workspaceId)
|
|
59
|
-
*/
|
|
56
|
+
/** One credit balance per workspace (unique constraint). */
|
|
60
57
|
export const creditBalances = pgTable("credit_balances", {
|
|
61
58
|
id: text("id").primaryKey(),
|
|
62
59
|
workspaceId: text("workspace_id")
|
|
63
60
|
.notNull()
|
|
64
61
|
.unique()
|
|
65
62
|
.references(() => organization.id, { onDelete: "cascade" }),
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
63
|
+
/** The balance, in micros of `currency`. */
|
|
64
|
+
balanceMicros: bigint("balance_micros", { mode: "number" })
|
|
65
|
+
.notNull()
|
|
66
|
+
.default(0),
|
|
67
|
+
totalPurchasedMicros: bigint("total_purchased_micros", { mode: "number" })
|
|
68
|
+
.notNull()
|
|
69
|
+
.default(0),
|
|
70
|
+
totalUsedMicros: bigint("total_used_micros", { mode: "number" })
|
|
71
|
+
.notNull()
|
|
72
|
+
.default(0),
|
|
73
|
+
/** What this ledger is denominated in; a write in another is refused. */
|
|
74
|
+
currency: text("currency").notNull().default("USD"),
|
|
73
75
|
updatedAt: timestamp("updated_at").notNull().defaultNow(),
|
|
74
76
|
});
|
|
75
77
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* model price changes and FX moves can be deployed without a code push.
|
|
79
|
-
*
|
|
80
|
-
* Convention: exactly one row with id = "default".
|
|
78
|
+
* Singleton (id = "default") holding the FX rate and margin, so they change
|
|
79
|
+
* without a deploy. Read per request, cached 60s in-process.
|
|
81
80
|
*/
|
|
82
81
|
export const billingSettings = pgTable("billing_settings", {
|
|
83
82
|
id: text("id").primaryKey(),
|
|
84
|
-
/**
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
|
|
83
|
+
/** The deployment's billing currency — every ledger row is in this. */
|
|
84
|
+
currency: text("currency").notNull().default("USD"),
|
|
85
|
+
/** What one USD costs in it, in micros: 1_000_000 is a USD deployment. */
|
|
86
|
+
usdRateMicros: bigint("usd_rate_micros", { mode: "number" })
|
|
87
|
+
.notNull()
|
|
88
|
+
.default(1000000),
|
|
89
|
+
/** Margin over provider cost, in basis points of a multiplier: 40_000 = 4×. */
|
|
90
|
+
marginBp: integer("margin_bp").notNull().default(40000),
|
|
88
91
|
updatedAt: timestamp("updated_at").notNull().defaultNow(),
|
|
89
92
|
});
|
|
90
|
-
/**
|
|
91
|
-
* Credit purchases table - One-time credit purchases
|
|
92
|
-
* Tracks all credit purchase transactions
|
|
93
|
-
*/
|
|
93
|
+
/** One-time credit purchases. */
|
|
94
94
|
export const creditPurchases = pgTable("credit_purchases", {
|
|
95
95
|
id: text("id").primaryKey(),
|
|
96
96
|
workspaceId: text("workspace_id")
|
|
97
97
|
.notNull()
|
|
98
98
|
.references(() => organization.id, { onDelete: "cascade" }),
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
/** What the buyer paid, in minor units of `priceCurrency`. */
|
|
100
|
+
priceMinor: integer("price_minor"),
|
|
101
|
+
priceCurrency: text("price_currency"),
|
|
102
|
+
/**
|
|
103
|
+
* What the workspace was granted, in micros of `grantedCurrency`.
|
|
104
|
+
* Separate from the price on purpose: a pack sold for $5 grants an
|
|
105
|
+
* amount of the billing currency, which is a different unit.
|
|
106
|
+
*/
|
|
107
|
+
grantedMicros: bigint("granted_micros", { mode: "number" }),
|
|
108
|
+
grantedCurrency: text("granted_currency"),
|
|
101
109
|
stripePaymentIntentId: text("stripe_payment_intent_id"),
|
|
102
110
|
stripeCheckoutSessionId: text("stripe_checkout_session_id"),
|
|
103
111
|
status: text("status").notNull().default("pending"), // pending|completed|failed
|
|
104
112
|
createdAt: timestamp("created_at").notNull().defaultNow(),
|
|
105
113
|
}, (table) => [index("credit_purchases_workspace_id_idx").on(table.workspaceId)]);
|
|
106
|
-
/**
|
|
107
|
-
* Finance events table - Audit trail for all Stripe events
|
|
108
|
-
* Ensures idempotent webhook processing and financial audit trail
|
|
109
|
-
*/
|
|
114
|
+
/** Every Stripe event, for idempotent webhook processing and audit. */
|
|
110
115
|
export const financeEvents = pgTable("finance_events", {
|
|
111
116
|
id: text("id").primaryKey(),
|
|
112
117
|
workspaceId: text("workspace_id").references(() => organization.id, {
|
|
@@ -114,32 +119,39 @@ export const financeEvents = pgTable("finance_events", {
|
|
|
114
119
|
}),
|
|
115
120
|
stripeEventId: text("stripe_event_id").notNull().unique(),
|
|
116
121
|
type: text("type").notNull(), // e.g., "checkout.session.completed", "invoice.paid"
|
|
117
|
-
|
|
118
|
-
|
|
122
|
+
/** Stripe's own amount, in the minor units of `currency`. */
|
|
123
|
+
amountMinor: integer("amount_minor"),
|
|
124
|
+
currency: text("currency").default("USD"),
|
|
119
125
|
metadata: text("metadata"), // JSON string
|
|
126
|
+
/**
|
|
127
|
+
* When a delivery took the event for processing. A lease: a claim
|
|
128
|
+
* older than the webhook's lease is taken as a delivery that died.
|
|
129
|
+
*/
|
|
130
|
+
claimedAt: timestamp("claimed_at"),
|
|
131
|
+
/** Set once the handlers finished; the event is never run again. */
|
|
120
132
|
processedAt: timestamp("processed_at"),
|
|
121
133
|
createdAt: timestamp("created_at").notNull().defaultNow(),
|
|
122
134
|
});
|
|
123
135
|
/**
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* ignored by the sum (cleanup cron deletes them).
|
|
131
|
-
*
|
|
132
|
-
* This is the seed of the Phase 2 `credit_reservations` table from the
|
|
133
|
-
* v2 architecture plan (ADR-0004).
|
|
136
|
+
* Closes the admission → settlement race. Admission inserts a reservation
|
|
137
|
+
* for the worst-case estimate inside the same transaction that sums the
|
|
138
|
+
* other active reservations, so concurrent requests cannot all be admitted
|
|
139
|
+
* against the same balance. Settlement closes the reservation; abandoned
|
|
140
|
+
* ones expire via `expires_at`, are ignored by the sum, and are deleted by
|
|
141
|
+
* a cleanup job.
|
|
134
142
|
*/
|
|
135
143
|
export const creditReservations = pgTable("credit_reservations", {
|
|
136
144
|
id: text("id").primaryKey(),
|
|
137
145
|
workspaceId: text("workspace_id")
|
|
138
146
|
.notNull()
|
|
139
147
|
.references(() => organization.id, { onDelete: "cascade" }),
|
|
140
|
-
/** Correlates admission with settlement
|
|
148
|
+
/** Correlates admission with settlement. */
|
|
141
149
|
requestId: text("request_id").notNull().unique(),
|
|
142
|
-
|
|
150
|
+
/** The hold, in micros of `currency`. */
|
|
151
|
+
estimatedMicros: bigint("estimated_micros", { mode: "number" })
|
|
152
|
+
.notNull()
|
|
153
|
+
.default(0),
|
|
154
|
+
currency: text("currency").notNull().default("USD"),
|
|
143
155
|
status: text("status").notNull().default("active"), // active | settled
|
|
144
156
|
createdAt: timestamp("created_at").notNull().defaultNow(),
|
|
145
157
|
expiresAt: timestamp("expires_at").notNull(),
|