@revealui/db 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/README.md +0 -4
  2. package/dist/audit-store.d.ts.map +1 -1
  3. package/dist/audit-store.js +1 -1
  4. package/dist/audit-store.js.map +1 -1
  5. package/dist/cleanup/cross-db-cleanup.d.ts +63 -0
  6. package/dist/cleanup/cross-db-cleanup.d.ts.map +1 -0
  7. package/dist/cleanup/cross-db-cleanup.js +150 -0
  8. package/dist/cleanup/cross-db-cleanup.js.map +1 -0
  9. package/dist/cleanup/index.d.ts +10 -0
  10. package/dist/cleanup/index.d.ts.map +1 -0
  11. package/dist/cleanup/index.js +10 -0
  12. package/dist/cleanup/index.js.map +1 -0
  13. package/dist/cleanup/stale-tokens.d.ts +37 -0
  14. package/dist/cleanup/stale-tokens.d.ts.map +1 -0
  15. package/dist/cleanup/stale-tokens.js +113 -0
  16. package/dist/cleanup/stale-tokens.js.map +1 -0
  17. package/dist/client/index.d.ts +13 -0
  18. package/dist/client/index.d.ts.map +1 -1
  19. package/dist/client/index.js +46 -7
  20. package/dist/client/index.js.map +1 -1
  21. package/dist/client/types.d.ts.map +1 -1
  22. package/dist/crypto.d.ts.map +1 -1
  23. package/dist/crypto.js +6 -0
  24. package/dist/crypto.js.map +1 -1
  25. package/dist/index.d.ts +2 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +4 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/log-transport.d.ts.map +1 -1
  30. package/dist/log-transport.js +3 -1
  31. package/dist/log-transport.js.map +1 -1
  32. package/dist/pool.d.ts +1 -4
  33. package/dist/pool.d.ts.map +1 -1
  34. package/dist/pool.js +29 -13
  35. package/dist/pool.js.map +1 -1
  36. package/dist/queries/boards.d.ts +13 -1
  37. package/dist/queries/boards.d.ts.map +1 -1
  38. package/dist/queries/boards.js +5 -2
  39. package/dist/queries/boards.js.map +1 -1
  40. package/dist/queries/code-provenance.d.ts +2 -0
  41. package/dist/queries/code-provenance.d.ts.map +1 -1
  42. package/dist/queries/code-provenance.js +8 -2
  43. package/dist/queries/code-provenance.js.map +1 -1
  44. package/dist/queries/media.d.ts +84 -0
  45. package/dist/queries/media.d.ts.map +1 -0
  46. package/dist/queries/media.js +47 -0
  47. package/dist/queries/media.js.map +1 -0
  48. package/dist/queries/optimized-queries.js +1 -1
  49. package/dist/queries/optimized-queries.js.map +1 -1
  50. package/dist/queries/pages.d.ts +119 -0
  51. package/dist/queries/pages.d.ts.map +1 -0
  52. package/dist/queries/pages.js +61 -0
  53. package/dist/queries/pages.js.map +1 -0
  54. package/dist/queries/posts.d.ts +107 -0
  55. package/dist/queries/posts.d.ts.map +1 -0
  56. package/dist/queries/posts.js +55 -0
  57. package/dist/queries/posts.js.map +1 -0
  58. package/dist/queries/sites.d.ts +127 -0
  59. package/dist/queries/sites.d.ts.map +1 -0
  60. package/dist/queries/sites.js +83 -0
  61. package/dist/queries/sites.js.map +1 -0
  62. package/dist/queries/ticket-comments.d.ts +9 -1
  63. package/dist/queries/ticket-comments.d.ts.map +1 -1
  64. package/dist/queries/ticket-comments.js +4 -0
  65. package/dist/queries/ticket-comments.js.map +1 -1
  66. package/dist/queries/ticket-labels.d.ts +10 -0
  67. package/dist/queries/ticket-labels.d.ts.map +1 -1
  68. package/dist/queries/ticket-labels.js +4 -0
  69. package/dist/queries/ticket-labels.js.map +1 -1
  70. package/dist/queries/tickets.d.ts +1 -1
  71. package/dist/queries/tickets.d.ts.map +1 -1
  72. package/dist/queries/tickets.js +4 -7
  73. package/dist/queries/tickets.js.map +1 -1
  74. package/dist/queries/users.d.ts +109 -0
  75. package/dist/queries/users.d.ts.map +1 -0
  76. package/dist/queries/users.js +44 -0
  77. package/dist/queries/users.js.map +1 -0
  78. package/dist/schema/accounts.d.ts +962 -0
  79. package/dist/schema/accounts.d.ts.map +1 -0
  80. package/dist/schema/accounts.js +115 -0
  81. package/dist/schema/accounts.js.map +1 -0
  82. package/dist/schema/agents.d.ts +167 -3
  83. package/dist/schema/agents.d.ts.map +1 -1
  84. package/dist/schema/agents.js +58 -7
  85. package/dist/schema/agents.js.map +1 -1
  86. package/dist/schema/api-keys.d.ts +17 -0
  87. package/dist/schema/api-keys.d.ts.map +1 -1
  88. package/dist/schema/api-keys.js +3 -0
  89. package/dist/schema/api-keys.js.map +1 -1
  90. package/dist/schema/app-logs.d.ts.map +1 -1
  91. package/dist/schema/app-logs.js.map +1 -1
  92. package/dist/schema/audit-log.d.ts.map +1 -1
  93. package/dist/schema/audit-log.js.map +1 -1
  94. package/dist/schema/cms.d.ts +68 -0
  95. package/dist/schema/cms.d.ts.map +1 -1
  96. package/dist/schema/cms.js +18 -4
  97. package/dist/schema/cms.js.map +1 -1
  98. package/dist/schema/code-provenance.d.ts.map +1 -1
  99. package/dist/schema/code-provenance.js.map +1 -1
  100. package/dist/schema/collab-edits.d.ts.map +1 -1
  101. package/dist/schema/collab-edits.js +2 -2
  102. package/dist/schema/collab-edits.js.map +1 -1
  103. package/dist/schema/coordination.d.ts +967 -0
  104. package/dist/schema/coordination.d.ts.map +1 -0
  105. package/dist/schema/coordination.js +109 -0
  106. package/dist/schema/coordination.js.map +1 -0
  107. package/dist/schema/crdt-operations.d.ts.map +1 -1
  108. package/dist/schema/crdt-operations.js.map +1 -1
  109. package/dist/schema/error-events.d.ts.map +1 -1
  110. package/dist/schema/error-events.js.map +1 -1
  111. package/dist/schema/gdpr.d.ts +529 -0
  112. package/dist/schema/gdpr.d.ts.map +1 -0
  113. package/dist/schema/gdpr.js +93 -0
  114. package/dist/schema/gdpr.js.map +1 -0
  115. package/dist/schema/index.d.ts +41 -1
  116. package/dist/schema/index.d.ts.map +1 -1
  117. package/dist/schema/index.js +82 -0
  118. package/dist/schema/index.js.map +1 -1
  119. package/dist/schema/jobs.d.ts +242 -0
  120. package/dist/schema/jobs.d.ts.map +1 -0
  121. package/dist/schema/jobs.js +48 -0
  122. package/dist/schema/jobs.js.map +1 -0
  123. package/dist/schema/licenses.d.ts +51 -0
  124. package/dist/schema/licenses.d.ts.map +1 -1
  125. package/dist/schema/licenses.js +12 -3
  126. package/dist/schema/licenses.js.map +1 -1
  127. package/dist/schema/magic-links.d.ts +136 -0
  128. package/dist/schema/magic-links.d.ts.map +1 -0
  129. package/dist/schema/magic-links.js +32 -0
  130. package/dist/schema/magic-links.js.map +1 -0
  131. package/dist/schema/marketplace.d.ts +496 -0
  132. package/dist/schema/marketplace.d.ts.map +1 -0
  133. package/dist/schema/marketplace.js +110 -0
  134. package/dist/schema/marketplace.js.map +1 -0
  135. package/dist/schema/node-ids.d.ts.map +1 -1
  136. package/dist/schema/node-ids.js.map +1 -1
  137. package/dist/schema/oauth-accounts.d.ts +205 -0
  138. package/dist/schema/oauth-accounts.d.ts.map +1 -0
  139. package/dist/schema/oauth-accounts.js +35 -0
  140. package/dist/schema/oauth-accounts.js.map +1 -0
  141. package/dist/schema/pages.d.ts +34 -0
  142. package/dist/schema/pages.d.ts.map +1 -1
  143. package/dist/schema/pages.js +14 -4
  144. package/dist/schema/pages.js.map +1 -1
  145. package/dist/schema/passkeys.d.ts +208 -0
  146. package/dist/schema/passkeys.d.ts.map +1 -0
  147. package/dist/schema/passkeys.js +47 -0
  148. package/dist/schema/passkeys.js.map +1 -0
  149. package/dist/schema/password-reset-tokens.d.ts.map +1 -1
  150. package/dist/schema/password-reset-tokens.js +5 -2
  151. package/dist/schema/password-reset-tokens.js.map +1 -1
  152. package/dist/schema/rag.d.ts +566 -0
  153. package/dist/schema/rag.d.ts.map +1 -0
  154. package/dist/schema/rag.js +85 -0
  155. package/dist/schema/rag.js.map +1 -0
  156. package/dist/schema/rate-limits.d.ts.map +1 -1
  157. package/dist/schema/rate-limits.js +5 -2
  158. package/dist/schema/rate-limits.js.map +1 -1
  159. package/dist/schema/rest.d.ts +11 -2
  160. package/dist/schema/rest.d.ts.map +1 -1
  161. package/dist/schema/rest.js +11 -2
  162. package/dist/schema/rest.js.map +1 -1
  163. package/dist/schema/sites.d.ts +34 -0
  164. package/dist/schema/sites.d.ts.map +1 -1
  165. package/dist/schema/sites.js +15 -3
  166. package/dist/schema/sites.js.map +1 -1
  167. package/dist/schema/tenants.d.ts +188 -0
  168. package/dist/schema/tenants.d.ts.map +1 -0
  169. package/dist/schema/tenants.js +15 -0
  170. package/dist/schema/tenants.js.map +1 -0
  171. package/dist/schema/tickets.d.ts.map +1 -1
  172. package/dist/schema/tickets.js +17 -5
  173. package/dist/schema/tickets.js.map +1 -1
  174. package/dist/schema/users.d.ts +259 -0
  175. package/dist/schema/users.d.ts.map +1 -1
  176. package/dist/schema/users.js +39 -3
  177. package/dist/schema/users.js.map +1 -1
  178. package/dist/schema/vector.d.ts +1 -0
  179. package/dist/schema/vector.d.ts.map +1 -1
  180. package/dist/schema/vector.js +2 -0
  181. package/dist/schema/vector.js.map +1 -1
  182. package/dist/schema/waitlist.d.ts.map +1 -1
  183. package/dist/schema/waitlist.js.map +1 -1
  184. package/dist/schema/webhook-events.d.ts +68 -0
  185. package/dist/schema/webhook-events.d.ts.map +1 -0
  186. package/dist/schema/webhook-events.js +17 -0
  187. package/dist/schema/webhook-events.js.map +1 -0
  188. package/dist/schema/yjs-documents.d.ts.map +1 -1
  189. package/dist/schema/yjs-documents.js.map +1 -1
  190. package/dist/scripts/cleanup-expired.d.ts +12 -0
  191. package/dist/scripts/cleanup-expired.d.ts.map +1 -0
  192. package/dist/scripts/cleanup-expired.js +50 -0
  193. package/dist/scripts/cleanup-expired.js.map +1 -0
  194. package/dist/security-audit-storage.d.ts +54 -0
  195. package/dist/security-audit-storage.d.ts.map +1 -0
  196. package/dist/security-audit-storage.js +100 -0
  197. package/dist/security-audit-storage.js.map +1 -0
  198. package/dist/types/database.d.ts +381 -2
  199. package/dist/types/database.d.ts.map +1 -1
  200. package/dist/types/database.js +78 -1
  201. package/dist/types/database.js.map +1 -1
  202. package/dist/types/discover.d.ts +2 -2
  203. package/dist/types/discover.d.ts.map +1 -1
  204. package/dist/types/discover.js +16 -16
  205. package/dist/types/discover.js.map +1 -1
  206. package/dist/types/extract-relationships.d.ts.map +1 -1
  207. package/dist/types/extract-relationships.js.map +1 -1
  208. package/dist/types/generate-contracts.js.map +1 -1
  209. package/dist/types/generate-zod-schemas.js.map +1 -1
  210. package/dist/types/generate.js.map +1 -1
  211. package/dist/types/index.d.ts.map +1 -1
  212. package/dist/types/introspect.d.ts.map +1 -1
  213. package/dist/types/introspect.js +0 -1
  214. package/dist/types/introspect.js.map +1 -1
  215. package/dist/types/stripe-schema.d.ts.map +1 -1
  216. package/dist/types/stripe-schema.js +7 -2
  217. package/dist/types/stripe-schema.js.map +1 -1
  218. package/dist/utils/soft-delete.d.ts +45 -0
  219. package/dist/utils/soft-delete.d.ts.map +1 -0
  220. package/dist/utils/soft-delete.js +45 -0
  221. package/dist/utils/soft-delete.js.map +1 -0
  222. package/dist/validation/cross-db.d.ts +60 -0
  223. package/dist/validation/cross-db.d.ts.map +1 -0
  224. package/dist/validation/cross-db.js +146 -0
  225. package/dist/validation/cross-db.js.map +1 -0
  226. package/package.json +45 -6
@@ -0,0 +1,496 @@
1
+ /**
2
+ * MCP Marketplace Tables (Phase 5.5)
3
+ *
4
+ * Community developers publish MCP servers with a per-call price.
5
+ * RevealUI acts as a payment proxy: callers pay via x402 (USDC on Base),
6
+ * RevealUI takes 20%, developer earns 80%.
7
+ *
8
+ * Payment batching: individual USDC micropayments accumulate in
9
+ * marketplace_transactions. Stripe Connect transfers are batched
10
+ * (daily/weekly) rather than immediate — Stripe's minimum transfer is $0.50
11
+ * which exceeds typical per-call amounts.
12
+ */
13
+ /**
14
+ * Registry of community-published MCP servers available through the marketplace.
15
+ * Each server has a per-call price in USDC; callers pay via x402.
16
+ */
17
+ export declare const marketplaceServers: import("drizzle-orm/pg-core").PgTableWithColumns<{
18
+ name: "marketplace_servers";
19
+ schema: undefined;
20
+ columns: {
21
+ id: import("drizzle-orm/pg-core").PgColumn<{
22
+ name: "id";
23
+ tableName: "marketplace_servers";
24
+ dataType: "string";
25
+ columnType: "PgText";
26
+ data: string;
27
+ driverParam: string;
28
+ notNull: true;
29
+ hasDefault: false;
30
+ isPrimaryKey: true;
31
+ isAutoincrement: false;
32
+ hasRuntimeDefault: false;
33
+ enumValues: [string, ...string[]];
34
+ baseColumn: never;
35
+ identity: undefined;
36
+ generated: undefined;
37
+ }, {}, {}>;
38
+ name: import("drizzle-orm/pg-core").PgColumn<{
39
+ name: "name";
40
+ tableName: "marketplace_servers";
41
+ dataType: "string";
42
+ columnType: "PgText";
43
+ data: string;
44
+ driverParam: string;
45
+ notNull: true;
46
+ hasDefault: false;
47
+ isPrimaryKey: false;
48
+ isAutoincrement: false;
49
+ hasRuntimeDefault: false;
50
+ enumValues: [string, ...string[]];
51
+ baseColumn: never;
52
+ identity: undefined;
53
+ generated: undefined;
54
+ }, {}, {}>;
55
+ description: import("drizzle-orm/pg-core").PgColumn<{
56
+ name: "description";
57
+ tableName: "marketplace_servers";
58
+ dataType: "string";
59
+ columnType: "PgText";
60
+ data: string;
61
+ driverParam: string;
62
+ notNull: true;
63
+ hasDefault: false;
64
+ isPrimaryKey: false;
65
+ isAutoincrement: false;
66
+ hasRuntimeDefault: false;
67
+ enumValues: [string, ...string[]];
68
+ baseColumn: never;
69
+ identity: undefined;
70
+ generated: undefined;
71
+ }, {}, {}>;
72
+ url: import("drizzle-orm/pg-core").PgColumn<{
73
+ name: "url";
74
+ tableName: "marketplace_servers";
75
+ dataType: "string";
76
+ columnType: "PgText";
77
+ data: string;
78
+ driverParam: string;
79
+ notNull: true;
80
+ hasDefault: false;
81
+ isPrimaryKey: false;
82
+ isAutoincrement: false;
83
+ hasRuntimeDefault: false;
84
+ enumValues: [string, ...string[]];
85
+ baseColumn: never;
86
+ identity: undefined;
87
+ generated: undefined;
88
+ }, {}, {}>;
89
+ category: import("drizzle-orm/pg-core").PgColumn<{
90
+ name: "category";
91
+ tableName: "marketplace_servers";
92
+ dataType: "string";
93
+ columnType: "PgText";
94
+ data: string;
95
+ driverParam: string;
96
+ notNull: true;
97
+ hasDefault: true;
98
+ isPrimaryKey: false;
99
+ isAutoincrement: false;
100
+ hasRuntimeDefault: false;
101
+ enumValues: [string, ...string[]];
102
+ baseColumn: never;
103
+ identity: undefined;
104
+ generated: undefined;
105
+ }, {}, {}>;
106
+ tags: import("drizzle-orm/pg-core").PgColumn<{
107
+ name: "tags";
108
+ tableName: "marketplace_servers";
109
+ dataType: "array";
110
+ columnType: "PgArray";
111
+ data: string[];
112
+ driverParam: string | string[];
113
+ notNull: true;
114
+ hasDefault: true;
115
+ isPrimaryKey: false;
116
+ isAutoincrement: false;
117
+ hasRuntimeDefault: false;
118
+ enumValues: [string, ...string[]];
119
+ baseColumn: import("drizzle-orm").Column<{
120
+ name: "tags";
121
+ tableName: "marketplace_servers";
122
+ dataType: "string";
123
+ columnType: "PgText";
124
+ data: string;
125
+ driverParam: string;
126
+ notNull: false;
127
+ hasDefault: false;
128
+ isPrimaryKey: false;
129
+ isAutoincrement: false;
130
+ hasRuntimeDefault: false;
131
+ enumValues: [string, ...string[]];
132
+ baseColumn: never;
133
+ identity: undefined;
134
+ generated: undefined;
135
+ }, {}, {}>;
136
+ identity: undefined;
137
+ generated: undefined;
138
+ }, {}, {
139
+ $type: string[];
140
+ baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
141
+ name: "tags";
142
+ dataType: "string";
143
+ columnType: "PgText";
144
+ data: string;
145
+ enumValues: [string, ...string[]];
146
+ driverParam: string;
147
+ }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
148
+ size: undefined;
149
+ }>;
150
+ pricePerCallUsdc: import("drizzle-orm/pg-core").PgColumn<{
151
+ name: "price_per_call_usdc";
152
+ tableName: "marketplace_servers";
153
+ dataType: "string";
154
+ columnType: "PgText";
155
+ data: string;
156
+ driverParam: string;
157
+ notNull: true;
158
+ hasDefault: true;
159
+ isPrimaryKey: false;
160
+ isAutoincrement: false;
161
+ hasRuntimeDefault: false;
162
+ enumValues: [string, ...string[]];
163
+ baseColumn: never;
164
+ identity: undefined;
165
+ generated: undefined;
166
+ }, {}, {}>;
167
+ developerId: import("drizzle-orm/pg-core").PgColumn<{
168
+ name: "developer_id";
169
+ tableName: "marketplace_servers";
170
+ dataType: "string";
171
+ columnType: "PgText";
172
+ data: string;
173
+ driverParam: string;
174
+ notNull: true;
175
+ hasDefault: false;
176
+ isPrimaryKey: false;
177
+ isAutoincrement: false;
178
+ hasRuntimeDefault: false;
179
+ enumValues: [string, ...string[]];
180
+ baseColumn: never;
181
+ identity: undefined;
182
+ generated: undefined;
183
+ }, {}, {}>;
184
+ stripeAccountId: import("drizzle-orm/pg-core").PgColumn<{
185
+ name: "stripe_account_id";
186
+ tableName: "marketplace_servers";
187
+ dataType: "string";
188
+ columnType: "PgText";
189
+ data: string;
190
+ driverParam: string;
191
+ notNull: false;
192
+ hasDefault: false;
193
+ isPrimaryKey: false;
194
+ isAutoincrement: false;
195
+ hasRuntimeDefault: false;
196
+ enumValues: [string, ...string[]];
197
+ baseColumn: never;
198
+ identity: undefined;
199
+ generated: undefined;
200
+ }, {}, {}>;
201
+ status: import("drizzle-orm/pg-core").PgColumn<{
202
+ name: "status";
203
+ tableName: "marketplace_servers";
204
+ dataType: "string";
205
+ columnType: "PgText";
206
+ data: string;
207
+ driverParam: string;
208
+ notNull: true;
209
+ hasDefault: true;
210
+ isPrimaryKey: false;
211
+ isAutoincrement: false;
212
+ hasRuntimeDefault: false;
213
+ enumValues: [string, ...string[]];
214
+ baseColumn: never;
215
+ identity: undefined;
216
+ generated: undefined;
217
+ }, {}, {}>;
218
+ callCount: import("drizzle-orm/pg-core").PgColumn<{
219
+ name: "call_count";
220
+ tableName: "marketplace_servers";
221
+ dataType: "number";
222
+ columnType: "PgInteger";
223
+ data: number;
224
+ driverParam: string | number;
225
+ notNull: true;
226
+ hasDefault: true;
227
+ isPrimaryKey: false;
228
+ isAutoincrement: false;
229
+ hasRuntimeDefault: false;
230
+ enumValues: undefined;
231
+ baseColumn: never;
232
+ identity: undefined;
233
+ generated: undefined;
234
+ }, {}, {}>;
235
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
236
+ name: "metadata";
237
+ tableName: "marketplace_servers";
238
+ dataType: "json";
239
+ columnType: "PgJsonb";
240
+ data: Record<string, unknown>;
241
+ driverParam: unknown;
242
+ notNull: false;
243
+ hasDefault: true;
244
+ isPrimaryKey: false;
245
+ isAutoincrement: false;
246
+ hasRuntimeDefault: false;
247
+ enumValues: undefined;
248
+ baseColumn: never;
249
+ identity: undefined;
250
+ generated: undefined;
251
+ }, {}, {
252
+ $type: Record<string, unknown>;
253
+ }>;
254
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
255
+ name: "created_at";
256
+ tableName: "marketplace_servers";
257
+ dataType: "date";
258
+ columnType: "PgTimestamp";
259
+ data: Date;
260
+ driverParam: string;
261
+ notNull: true;
262
+ hasDefault: true;
263
+ isPrimaryKey: false;
264
+ isAutoincrement: false;
265
+ hasRuntimeDefault: false;
266
+ enumValues: undefined;
267
+ baseColumn: never;
268
+ identity: undefined;
269
+ generated: undefined;
270
+ }, {}, {}>;
271
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
272
+ name: "updated_at";
273
+ tableName: "marketplace_servers";
274
+ dataType: "date";
275
+ columnType: "PgTimestamp";
276
+ data: Date;
277
+ driverParam: string;
278
+ notNull: true;
279
+ hasDefault: true;
280
+ isPrimaryKey: false;
281
+ isAutoincrement: false;
282
+ hasRuntimeDefault: false;
283
+ enumValues: undefined;
284
+ baseColumn: never;
285
+ identity: undefined;
286
+ generated: undefined;
287
+ }, {}, {}>;
288
+ };
289
+ dialect: "pg";
290
+ }>;
291
+ /**
292
+ * Per-call payment ledger.
293
+ * One row per successful marketplace invocation.
294
+ * Used for developer earnings dashboards, payout calculations, and auditing.
295
+ */
296
+ export declare const marketplaceTransactions: import("drizzle-orm/pg-core").PgTableWithColumns<{
297
+ name: "marketplace_transactions";
298
+ schema: undefined;
299
+ columns: {
300
+ id: import("drizzle-orm/pg-core").PgColumn<{
301
+ name: "id";
302
+ tableName: "marketplace_transactions";
303
+ dataType: "string";
304
+ columnType: "PgText";
305
+ data: string;
306
+ driverParam: string;
307
+ notNull: true;
308
+ hasDefault: false;
309
+ isPrimaryKey: true;
310
+ isAutoincrement: false;
311
+ hasRuntimeDefault: false;
312
+ enumValues: [string, ...string[]];
313
+ baseColumn: never;
314
+ identity: undefined;
315
+ generated: undefined;
316
+ }, {}, {}>;
317
+ serverId: import("drizzle-orm/pg-core").PgColumn<{
318
+ name: "server_id";
319
+ tableName: "marketplace_transactions";
320
+ dataType: "string";
321
+ columnType: "PgText";
322
+ data: string;
323
+ driverParam: string;
324
+ notNull: true;
325
+ hasDefault: false;
326
+ isPrimaryKey: false;
327
+ isAutoincrement: false;
328
+ hasRuntimeDefault: false;
329
+ enumValues: [string, ...string[]];
330
+ baseColumn: never;
331
+ identity: undefined;
332
+ generated: undefined;
333
+ }, {}, {}>;
334
+ callerId: import("drizzle-orm/pg-core").PgColumn<{
335
+ name: "caller_id";
336
+ tableName: "marketplace_transactions";
337
+ dataType: "string";
338
+ columnType: "PgText";
339
+ data: string;
340
+ driverParam: string;
341
+ notNull: false;
342
+ hasDefault: false;
343
+ isPrimaryKey: false;
344
+ isAutoincrement: false;
345
+ hasRuntimeDefault: false;
346
+ enumValues: [string, ...string[]];
347
+ baseColumn: never;
348
+ identity: undefined;
349
+ generated: undefined;
350
+ }, {}, {}>;
351
+ amountUsdc: import("drizzle-orm/pg-core").PgColumn<{
352
+ name: "amount_usdc";
353
+ tableName: "marketplace_transactions";
354
+ dataType: "string";
355
+ columnType: "PgText";
356
+ data: string;
357
+ driverParam: string;
358
+ notNull: true;
359
+ hasDefault: false;
360
+ isPrimaryKey: false;
361
+ isAutoincrement: false;
362
+ hasRuntimeDefault: false;
363
+ enumValues: [string, ...string[]];
364
+ baseColumn: never;
365
+ identity: undefined;
366
+ generated: undefined;
367
+ }, {}, {}>;
368
+ platformFeeUsdc: import("drizzle-orm/pg-core").PgColumn<{
369
+ name: "platform_fee_usdc";
370
+ tableName: "marketplace_transactions";
371
+ dataType: "string";
372
+ columnType: "PgText";
373
+ data: string;
374
+ driverParam: string;
375
+ notNull: true;
376
+ hasDefault: false;
377
+ isPrimaryKey: false;
378
+ isAutoincrement: false;
379
+ hasRuntimeDefault: false;
380
+ enumValues: [string, ...string[]];
381
+ baseColumn: never;
382
+ identity: undefined;
383
+ generated: undefined;
384
+ }, {}, {}>;
385
+ developerAmountUsdc: import("drizzle-orm/pg-core").PgColumn<{
386
+ name: "developer_amount_usdc";
387
+ tableName: "marketplace_transactions";
388
+ dataType: "string";
389
+ columnType: "PgText";
390
+ data: string;
391
+ driverParam: string;
392
+ notNull: true;
393
+ hasDefault: false;
394
+ isPrimaryKey: false;
395
+ isAutoincrement: false;
396
+ hasRuntimeDefault: false;
397
+ enumValues: [string, ...string[]];
398
+ baseColumn: never;
399
+ identity: undefined;
400
+ generated: undefined;
401
+ }, {}, {}>;
402
+ stripeTransferId: import("drizzle-orm/pg-core").PgColumn<{
403
+ name: "stripe_transfer_id";
404
+ tableName: "marketplace_transactions";
405
+ dataType: "string";
406
+ columnType: "PgText";
407
+ data: string;
408
+ driverParam: string;
409
+ notNull: false;
410
+ hasDefault: false;
411
+ isPrimaryKey: false;
412
+ isAutoincrement: false;
413
+ hasRuntimeDefault: false;
414
+ enumValues: [string, ...string[]];
415
+ baseColumn: never;
416
+ identity: undefined;
417
+ generated: undefined;
418
+ }, {}, {}>;
419
+ paymentMethod: import("drizzle-orm/pg-core").PgColumn<{
420
+ name: "payment_method";
421
+ tableName: "marketplace_transactions";
422
+ dataType: "string";
423
+ columnType: "PgText";
424
+ data: string;
425
+ driverParam: string;
426
+ notNull: true;
427
+ hasDefault: true;
428
+ isPrimaryKey: false;
429
+ isAutoincrement: false;
430
+ hasRuntimeDefault: false;
431
+ enumValues: [string, ...string[]];
432
+ baseColumn: never;
433
+ identity: undefined;
434
+ generated: undefined;
435
+ }, {}, {}>;
436
+ status: import("drizzle-orm/pg-core").PgColumn<{
437
+ name: "status";
438
+ tableName: "marketplace_transactions";
439
+ dataType: "string";
440
+ columnType: "PgText";
441
+ data: string;
442
+ driverParam: string;
443
+ notNull: true;
444
+ hasDefault: true;
445
+ isPrimaryKey: false;
446
+ isAutoincrement: false;
447
+ hasRuntimeDefault: false;
448
+ enumValues: [string, ...string[]];
449
+ baseColumn: never;
450
+ identity: undefined;
451
+ generated: undefined;
452
+ }, {}, {}>;
453
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
454
+ name: "metadata";
455
+ tableName: "marketplace_transactions";
456
+ dataType: "json";
457
+ columnType: "PgJsonb";
458
+ data: Record<string, unknown>;
459
+ driverParam: unknown;
460
+ notNull: false;
461
+ hasDefault: true;
462
+ isPrimaryKey: false;
463
+ isAutoincrement: false;
464
+ hasRuntimeDefault: false;
465
+ enumValues: undefined;
466
+ baseColumn: never;
467
+ identity: undefined;
468
+ generated: undefined;
469
+ }, {}, {
470
+ $type: Record<string, unknown>;
471
+ }>;
472
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
473
+ name: "created_at";
474
+ tableName: "marketplace_transactions";
475
+ dataType: "date";
476
+ columnType: "PgTimestamp";
477
+ data: Date;
478
+ driverParam: string;
479
+ notNull: true;
480
+ hasDefault: true;
481
+ isPrimaryKey: false;
482
+ isAutoincrement: false;
483
+ hasRuntimeDefault: false;
484
+ enumValues: undefined;
485
+ baseColumn: never;
486
+ identity: undefined;
487
+ generated: undefined;
488
+ }, {}, {}>;
489
+ };
490
+ dialect: "pg";
491
+ }>;
492
+ export type MarketplaceServer = typeof marketplaceServers.$inferSelect;
493
+ export type NewMarketplaceServer = typeof marketplaceServers.$inferInsert;
494
+ export type MarketplaceTransaction = typeof marketplaceTransactions.$inferSelect;
495
+ export type NewMarketplaceTransaction = typeof marketplaceTransactions.$inferInsert;
496
+ //# sourceMappingURL=marketplace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/schema/marketplace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwD7B,CAAC;AAMH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4ClC,CAAC;AAMH,MAAM,MAAM,iBAAiB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAC;AACvE,MAAM,MAAM,oBAAoB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAC;AAC1E,MAAM,MAAM,sBAAsB,GAAG,OAAO,uBAAuB,CAAC,YAAY,CAAC;AACjF,MAAM,MAAM,yBAAyB,GAAG,OAAO,uBAAuB,CAAC,YAAY,CAAC"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * MCP Marketplace Tables (Phase 5.5)
3
+ *
4
+ * Community developers publish MCP servers with a per-call price.
5
+ * RevealUI acts as a payment proxy: callers pay via x402 (USDC on Base),
6
+ * RevealUI takes 20%, developer earns 80%.
7
+ *
8
+ * Payment batching: individual USDC micropayments accumulate in
9
+ * marketplace_transactions. Stripe Connect transfers are batched
10
+ * (daily/weekly) rather than immediate — Stripe's minimum transfer is $0.50
11
+ * which exceeds typical per-call amounts.
12
+ */
13
+ import { integer, jsonb, pgTable, text, timestamp } from 'drizzle-orm/pg-core';
14
+ import { users } from './users.js';
15
+ // =============================================================================
16
+ // Marketplace Servers
17
+ // =============================================================================
18
+ /**
19
+ * Registry of community-published MCP servers available through the marketplace.
20
+ * Each server has a per-call price in USDC; callers pay via x402.
21
+ */
22
+ export const marketplaceServers = pgTable('marketplace_servers', {
23
+ /** Nanoid-style short ID (e.g. 'mcp_abc123xyz') */
24
+ id: text('id').primaryKey(),
25
+ /** Human-readable display name */
26
+ name: text('name').notNull(),
27
+ /** Short description of what the server does */
28
+ description: text('description').notNull(),
29
+ /**
30
+ * Canonical MCP server endpoint (HTTPS required in production).
31
+ * Kept internal — callers invoke via /api/marketplace/servers/:id/invoke.
32
+ */
33
+ url: text('url').notNull(),
34
+ /** Top-level category for discovery filtering */
35
+ category: text('category').notNull().default('other'),
36
+ /** Searchable tags */
37
+ tags: text('tags').array().$type().notNull().default([]),
38
+ /**
39
+ * Per-call price in human-readable USDC (e.g. '0.005' = $0.005).
40
+ * USDC has 6 decimal places; atomic units = price * 1_000_000.
41
+ */
42
+ pricePerCallUsdc: text('price_per_call_usdc').notNull().default('0.001'),
43
+ /** User who published this server */
44
+ developerId: text('developer_id')
45
+ .notNull()
46
+ .references(() => users.id, { onDelete: 'cascade' }),
47
+ /**
48
+ * Stripe Connect Express account ID (acct_...).
49
+ * Populated after the developer completes Connect onboarding.
50
+ * Required before automatic payouts can be initiated.
51
+ */
52
+ stripeAccountId: text('stripe_account_id'),
53
+ /**
54
+ * Lifecycle status:
55
+ * - pending: newly published, not yet discoverable (reserved for future approval flow)
56
+ * - active: discoverable and callable
57
+ * - suspended: temporarily hidden (admin action)
58
+ */
59
+ status: text('status').notNull().default('active'),
60
+ /** Total successful invocations (incremented on each completed call) */
61
+ callCount: integer('call_count').notNull().default(0),
62
+ /** Arbitrary developer-supplied metadata (contact, docs URL, etc.) */
63
+ metadata: jsonb('metadata').$type().default({}),
64
+ createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
65
+ updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
66
+ });
67
+ // =============================================================================
68
+ // Marketplace Transactions
69
+ // =============================================================================
70
+ /**
71
+ * Per-call payment ledger.
72
+ * One row per successful marketplace invocation.
73
+ * Used for developer earnings dashboards, payout calculations, and auditing.
74
+ */
75
+ export const marketplaceTransactions = pgTable('marketplace_transactions', {
76
+ id: text('id').primaryKey(),
77
+ /** Server that was called */
78
+ serverId: text('server_id')
79
+ .notNull()
80
+ .references(() => marketplaceServers.id, { onDelete: 'cascade' }),
81
+ /**
82
+ * User who made the call, if authenticated.
83
+ * Nullable — x402 payments can come from anonymous agents.
84
+ */
85
+ callerId: text('caller_id'),
86
+ /** Total amount paid by caller in human-readable USDC */
87
+ amountUsdc: text('amount_usdc').notNull(),
88
+ /** Platform fee (20%) in human-readable USDC */
89
+ platformFeeUsdc: text('platform_fee_usdc').notNull(),
90
+ /** Developer earnings (80%) in human-readable USDC */
91
+ developerAmountUsdc: text('developer_amount_usdc').notNull(),
92
+ /**
93
+ * Stripe transfer ID (tr_...) once a payout has been initiated.
94
+ * Null until batch payout runs.
95
+ */
96
+ stripeTransferId: text('stripe_transfer_id'),
97
+ /** Payment method used: 'x402' */
98
+ paymentMethod: text('payment_method').notNull().default('x402'),
99
+ /**
100
+ * Transaction status:
101
+ * - pending: payment verified, server call in-flight
102
+ * - completed: server responded successfully
103
+ * - failed: server call failed (payment still taken — refund flow TBD)
104
+ */
105
+ status: text('status').notNull().default('pending'),
106
+ /** Additional context (request hash, network, etc.) */
107
+ metadata: jsonb('metadata').$type().default({}),
108
+ createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
109
+ });
110
+ //# sourceMappingURL=marketplace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/schema/marketplace.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"node-ids.d.ts","sourceRoot":"","sources":["../../src/schema/node-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBzB,CAAA;AAMF,MAAM,MAAM,aAAa,GAAG,OAAO,cAAc,CAAC,YAAY,CAAA;AAC9D,MAAM,MAAM,gBAAgB,GAAG,OAAO,cAAc,CAAC,YAAY,CAAA"}
1
+ {"version":3,"file":"node-ids.d.ts","sourceRoot":"","sources":["../../src/schema/node-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBzB,CAAC;AAMH,MAAM,MAAM,aAAa,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"node-ids.js","sourceRoot":"","sources":["../../src/schema/node-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE9D,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,EAAE;IACxD,yDAAyD;IACzD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAE3B,mCAAmC;IACnC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;IAEzC,2CAA2C;IAC3C,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IAErC,gDAAgD;IAChD,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;IAE1C,aAAa;IACb,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IACjF,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;CAClF,CAAC,CAAA"}
1
+ {"version":3,"file":"node-ids.js","sourceRoot":"","sources":["../../src/schema/node-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,EAAE;IACxD,yDAAyD;IACzD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAE3B,mCAAmC;IACnC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;IAEzC,2CAA2C;IAC3C,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IAErC,gDAAgD;IAChD,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;IAE1C,aAAa;IACb,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IACjF,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;CAClF,CAAC,CAAC"}