@intx/db 0.1.2 → 0.2.2

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 (121) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +21 -2
  3. package/dist/asset-resolution.d.ts +52 -0
  4. package/dist/asset-resolution.js +66 -0
  5. package/dist/catalog-resolution.d.ts +76 -0
  6. package/dist/catalog-resolution.js +151 -0
  7. package/dist/client.d.ts +9 -0
  8. package/dist/client.js +18 -0
  9. package/dist/config.d.ts +11 -0
  10. package/dist/config.js +16 -0
  11. package/dist/connection.d.ts +3 -0
  12. package/dist/connection.js +23 -0
  13. package/dist/credential-resolution.d.ts +110 -0
  14. package/dist/credential-resolution.js +116 -0
  15. package/dist/grant-store.d.ts +3 -0
  16. package/dist/grant-store.js +37 -0
  17. package/dist/index.d.ts +13 -0
  18. package/dist/index.js +12 -0
  19. package/dist/migrate.d.ts +36 -0
  20. package/dist/migrate.js +135 -0
  21. package/dist/model-source-resolution.d.ts +69 -0
  22. package/dist/model-source-resolution.js +165 -0
  23. package/dist/parse-row.d.ts +193 -0
  24. package/dist/parse-row.js +141 -0
  25. package/dist/pg-error.d.ts +3 -0
  26. package/dist/pg-error.js +19 -0
  27. package/dist/pricing.d.ts +15 -0
  28. package/dist/pricing.js +24 -0
  29. package/dist/schema/agent-assets.d.ts +109 -0
  30. package/dist/schema/agent-assets.js +15 -0
  31. package/dist/schema/agents.d.ts +405 -0
  32. package/dist/schema/agents.js +57 -0
  33. package/dist/schema/assets.d.ts +143 -0
  34. package/{src/schema/assets.ts → dist/schema/assets.js} +7 -16
  35. package/dist/schema/auth.d.ts +606 -0
  36. package/dist/schema/auth.js +47 -0
  37. package/dist/schema/catalog.d.ts +794 -0
  38. package/dist/schema/catalog.js +102 -0
  39. package/dist/schema/column-types.d.ts +26 -0
  40. package/dist/schema/column-types.js +15 -0
  41. package/dist/schema/credentials.d.ts +305 -0
  42. package/{src/schema/credentials.ts → dist/schema/credentials.js} +16 -22
  43. package/dist/schema/git-tokens.d.ts +256 -0
  44. package/{src/schema/git-tokens.ts → dist/schema/git-tokens.js} +15 -38
  45. package/dist/schema/grants.d.ts +211 -0
  46. package/dist/schema/grants.js +24 -0
  47. package/dist/schema/index.d.ts +21 -0
  48. package/dist/schema/index.js +21 -0
  49. package/dist/schema/instances.d.ts +262 -0
  50. package/dist/schema/instances.js +39 -0
  51. package/dist/schema/messages.d.ts +414 -0
  52. package/dist/schema/messages.js +71 -0
  53. package/dist/schema/oauth-clients.d.ts +246 -0
  54. package/{src/schema/oauth-clients.ts → dist/schema/oauth-clients.js} +8 -14
  55. package/dist/schema/offerings.d.ts +160 -0
  56. package/dist/schema/offerings.js +18 -0
  57. package/dist/schema/principals.d.ts +128 -0
  58. package/{src/schema/principals.ts → dist/schema/principals.js} +7 -14
  59. package/dist/schema/providers.d.ts +220 -0
  60. package/{src/schema/providers.ts → dist/schema/providers.js} +5 -11
  61. package/dist/schema/roles.d.ts +242 -0
  62. package/dist/schema/roles.js +33 -0
  63. package/dist/schema/session-assets.d.ts +129 -0
  64. package/dist/schema/session-assets.js +28 -0
  65. package/dist/schema/sessions.d.ts +143 -0
  66. package/dist/schema/sessions.js +24 -0
  67. package/dist/schema/sidecar.d.ts +128 -0
  68. package/dist/schema/sidecar.js +18 -0
  69. package/dist/schema/tenants.d.ts +235 -0
  70. package/{src/schema/tenants.ts → dist/schema/tenants.js} +10 -27
  71. package/dist/schema/wallets.d.ts +354 -0
  72. package/dist/schema/wallets.js +41 -0
  73. package/dist/schema/workflow-deployments.d.ts +129 -0
  74. package/dist/schema/workflow-deployments.js +37 -0
  75. package/dist/tenant-hierarchy.d.ts +22 -0
  76. package/dist/tenant-hierarchy.js +55 -0
  77. package/migrations/0029_loose_warlock.sql +1 -0
  78. package/migrations/0030_session_asset_audit_split.sql +5 -0
  79. package/migrations/0031_gigantic_nicolaos.sql +68 -0
  80. package/migrations/0032_lethal_misty_knight.sql +1 -0
  81. package/migrations/0033_old_payback.sql +1 -0
  82. package/migrations/0034_sleepy_songbird.sql +11 -0
  83. package/migrations/0035_violet_giant_man.sql +3 -0
  84. package/migrations/0036_sharp_the_executioner.sql +2 -0
  85. package/migrations/meta/0029_snapshot.json +2664 -0
  86. package/migrations/meta/0030_snapshot.json +2670 -0
  87. package/migrations/meta/0031_snapshot.json +3100 -0
  88. package/migrations/meta/0032_snapshot.json +3106 -0
  89. package/migrations/meta/0033_snapshot.json +3112 -0
  90. package/migrations/meta/0034_snapshot.json +3198 -0
  91. package/migrations/meta/0035_snapshot.json +3225 -0
  92. package/migrations/meta/0036_snapshot.json +3237 -0
  93. package/migrations/meta/_journal.json +56 -0
  94. package/package.json +22 -11
  95. package/drizzle.config.ts +0 -23
  96. package/src/client.ts +0 -24
  97. package/src/config.ts +0 -19
  98. package/src/connection.ts +0 -27
  99. package/src/credential-resolution.ts +0 -378
  100. package/src/grant-store.ts +0 -51
  101. package/src/index.ts +0 -32
  102. package/src/migrate.test.ts +0 -35
  103. package/src/migrate.ts +0 -168
  104. package/src/parse-row.test.ts +0 -113
  105. package/src/parse-row.ts +0 -185
  106. package/src/schema/agent-assets.ts +0 -21
  107. package/src/schema/agents.ts +0 -49
  108. package/src/schema/auth.ts +0 -51
  109. package/src/schema/grants.ts +0 -26
  110. package/src/schema/index.ts +0 -19
  111. package/src/schema/instances.ts +0 -36
  112. package/src/schema/messages.ts +0 -108
  113. package/src/schema/offerings.ts +0 -20
  114. package/src/schema/roles.ts +0 -51
  115. package/src/schema/session-assets.ts +0 -49
  116. package/src/schema/sessions.ts +0 -26
  117. package/src/schema/sidecar.ts +0 -14
  118. package/src/schema/wallets.ts +0 -44
  119. package/src/tenant-hierarchy.ts +0 -34
  120. package/tsconfig.json +0 -4
  121. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,414 @@
1
+ export declare const inferenceTurn: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
+ name: "inference_turn";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: "id";
7
+ tableName: "inference_turn";
8
+ dataType: "string";
9
+ columnType: "PgText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ sessionId: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "session_id";
24
+ tableName: "inference_turn";
25
+ dataType: "string";
26
+ columnType: "PgText";
27
+ data: string;
28
+ driverParam: string;
29
+ notNull: true;
30
+ hasDefault: false;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: [string, ...string[]];
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ instanceId: import("drizzle-orm/pg-core").PgColumn<{
40
+ name: "instance_id";
41
+ tableName: "inference_turn";
42
+ dataType: "string";
43
+ columnType: "PgText";
44
+ data: string;
45
+ driverParam: string;
46
+ notNull: true;
47
+ hasDefault: false;
48
+ isPrimaryKey: false;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: [string, ...string[]];
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ tenantId: import("drizzle-orm/pg-core").PgColumn<{
57
+ name: "tenant_id";
58
+ tableName: "inference_turn";
59
+ dataType: "string";
60
+ columnType: "PgText";
61
+ data: string;
62
+ driverParam: string;
63
+ notNull: true;
64
+ hasDefault: false;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: [string, ...string[]];
69
+ baseColumn: never;
70
+ identity: undefined;
71
+ generated: undefined;
72
+ }, {}, {}>;
73
+ model: import("drizzle-orm/pg-core").PgColumn<{
74
+ name: "model";
75
+ tableName: "inference_turn";
76
+ dataType: "string";
77
+ columnType: "PgText";
78
+ data: string;
79
+ driverParam: string;
80
+ notNull: true;
81
+ hasDefault: false;
82
+ isPrimaryKey: false;
83
+ isAutoincrement: false;
84
+ hasRuntimeDefault: false;
85
+ enumValues: [string, ...string[]];
86
+ baseColumn: never;
87
+ identity: undefined;
88
+ generated: undefined;
89
+ }, {}, {}>;
90
+ status: import("drizzle-orm/pg-core").PgColumn<{
91
+ name: "status";
92
+ tableName: "inference_turn";
93
+ dataType: "string";
94
+ columnType: "PgText";
95
+ data: "failed" | "completed" | "running";
96
+ driverParam: string;
97
+ notNull: true;
98
+ hasDefault: true;
99
+ isPrimaryKey: false;
100
+ isAutoincrement: false;
101
+ hasRuntimeDefault: false;
102
+ enumValues: ["running", "completed", "failed"];
103
+ baseColumn: never;
104
+ identity: undefined;
105
+ generated: undefined;
106
+ }, {}, {}>;
107
+ startedAt: import("drizzle-orm/pg-core").PgColumn<{
108
+ name: "started_at";
109
+ tableName: "inference_turn";
110
+ dataType: "date";
111
+ columnType: "PgTimestamp";
112
+ data: Date;
113
+ driverParam: string;
114
+ notNull: true;
115
+ hasDefault: false;
116
+ isPrimaryKey: false;
117
+ isAutoincrement: false;
118
+ hasRuntimeDefault: false;
119
+ enumValues: undefined;
120
+ baseColumn: never;
121
+ identity: undefined;
122
+ generated: undefined;
123
+ }, {}, {}>;
124
+ endedAt: import("drizzle-orm/pg-core").PgColumn<{
125
+ name: "ended_at";
126
+ tableName: "inference_turn";
127
+ dataType: "date";
128
+ columnType: "PgTimestamp";
129
+ data: Date;
130
+ driverParam: string;
131
+ notNull: false;
132
+ hasDefault: false;
133
+ isPrimaryKey: false;
134
+ isAutoincrement: false;
135
+ hasRuntimeDefault: false;
136
+ enumValues: undefined;
137
+ baseColumn: never;
138
+ identity: undefined;
139
+ generated: undefined;
140
+ }, {}, {}>;
141
+ };
142
+ dialect: "pg";
143
+ }>;
144
+ export declare const turnPart: import("drizzle-orm/pg-core").PgTableWithColumns<{
145
+ name: "turn_part";
146
+ schema: undefined;
147
+ columns: {
148
+ id: import("drizzle-orm/pg-core").PgColumn<{
149
+ name: "id";
150
+ tableName: "turn_part";
151
+ dataType: "string";
152
+ columnType: "PgText";
153
+ data: string;
154
+ driverParam: string;
155
+ notNull: true;
156
+ hasDefault: false;
157
+ isPrimaryKey: true;
158
+ isAutoincrement: false;
159
+ hasRuntimeDefault: false;
160
+ enumValues: [string, ...string[]];
161
+ baseColumn: never;
162
+ identity: undefined;
163
+ generated: undefined;
164
+ }, {}, {}>;
165
+ turnId: import("drizzle-orm/pg-core").PgColumn<{
166
+ name: "turn_id";
167
+ tableName: "turn_part";
168
+ dataType: "string";
169
+ columnType: "PgText";
170
+ data: string;
171
+ driverParam: string;
172
+ notNull: true;
173
+ hasDefault: false;
174
+ isPrimaryKey: false;
175
+ isAutoincrement: false;
176
+ hasRuntimeDefault: false;
177
+ enumValues: [string, ...string[]];
178
+ baseColumn: never;
179
+ identity: undefined;
180
+ generated: undefined;
181
+ }, {}, {}>;
182
+ sessionId: import("drizzle-orm/pg-core").PgColumn<{
183
+ name: "session_id";
184
+ tableName: "turn_part";
185
+ dataType: "string";
186
+ columnType: "PgText";
187
+ data: string;
188
+ driverParam: string;
189
+ notNull: true;
190
+ hasDefault: false;
191
+ isPrimaryKey: false;
192
+ isAutoincrement: false;
193
+ hasRuntimeDefault: false;
194
+ enumValues: [string, ...string[]];
195
+ baseColumn: never;
196
+ identity: undefined;
197
+ generated: undefined;
198
+ }, {}, {}>;
199
+ type: import("drizzle-orm/pg-core").PgColumn<{
200
+ name: "type";
201
+ tableName: "turn_part";
202
+ dataType: "string";
203
+ columnType: "PgText";
204
+ data: "error" | "text" | "reasoning" | "tool" | "file" | "refusal" | "step-start" | "step-finish" | "snapshot" | "patch";
205
+ driverParam: string;
206
+ notNull: true;
207
+ hasDefault: false;
208
+ isPrimaryKey: false;
209
+ isAutoincrement: false;
210
+ hasRuntimeDefault: false;
211
+ enumValues: ["text", "reasoning", "tool", "file", "error", "refusal", "step-start", "step-finish", "snapshot", "patch"];
212
+ baseColumn: never;
213
+ identity: undefined;
214
+ generated: undefined;
215
+ }, {}, {}>;
216
+ content: import("drizzle-orm/pg-core").PgColumn<{
217
+ name: "content";
218
+ tableName: "turn_part";
219
+ dataType: "string";
220
+ columnType: "PgText";
221
+ data: string;
222
+ driverParam: string;
223
+ notNull: false;
224
+ hasDefault: false;
225
+ isPrimaryKey: false;
226
+ isAutoincrement: false;
227
+ hasRuntimeDefault: false;
228
+ enumValues: [string, ...string[]];
229
+ baseColumn: never;
230
+ identity: undefined;
231
+ generated: undefined;
232
+ }, {}, {}>;
233
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
234
+ name: "metadata";
235
+ tableName: "turn_part";
236
+ dataType: "json";
237
+ columnType: "PgJsonb";
238
+ data: unknown;
239
+ driverParam: unknown;
240
+ notNull: false;
241
+ hasDefault: false;
242
+ isPrimaryKey: false;
243
+ isAutoincrement: false;
244
+ hasRuntimeDefault: false;
245
+ enumValues: undefined;
246
+ baseColumn: never;
247
+ identity: undefined;
248
+ generated: undefined;
249
+ }, {}, {}>;
250
+ ordinal: import("drizzle-orm/pg-core").PgColumn<{
251
+ name: "ordinal";
252
+ tableName: "turn_part";
253
+ dataType: "number";
254
+ columnType: "PgInteger";
255
+ data: number;
256
+ driverParam: string | number;
257
+ notNull: true;
258
+ hasDefault: false;
259
+ isPrimaryKey: false;
260
+ isAutoincrement: false;
261
+ hasRuntimeDefault: false;
262
+ enumValues: undefined;
263
+ baseColumn: never;
264
+ identity: undefined;
265
+ generated: undefined;
266
+ }, {}, {}>;
267
+ };
268
+ dialect: "pg";
269
+ }>;
270
+ export declare const sessionMail: import("drizzle-orm/pg-core").PgTableWithColumns<{
271
+ name: "session_mail";
272
+ schema: undefined;
273
+ columns: {
274
+ id: import("drizzle-orm/pg-core").PgColumn<{
275
+ name: "id";
276
+ tableName: "session_mail";
277
+ dataType: "string";
278
+ columnType: "PgText";
279
+ data: string;
280
+ driverParam: string;
281
+ notNull: true;
282
+ hasDefault: false;
283
+ isPrimaryKey: true;
284
+ isAutoincrement: false;
285
+ hasRuntimeDefault: false;
286
+ enumValues: [string, ...string[]];
287
+ baseColumn: never;
288
+ identity: undefined;
289
+ generated: undefined;
290
+ }, {}, {}>;
291
+ sessionId: import("drizzle-orm/pg-core").PgColumn<{
292
+ name: "session_id";
293
+ tableName: "session_mail";
294
+ dataType: "string";
295
+ columnType: "PgText";
296
+ data: string;
297
+ driverParam: string;
298
+ notNull: true;
299
+ hasDefault: false;
300
+ isPrimaryKey: false;
301
+ isAutoincrement: false;
302
+ hasRuntimeDefault: false;
303
+ enumValues: [string, ...string[]];
304
+ baseColumn: never;
305
+ identity: undefined;
306
+ generated: undefined;
307
+ }, {}, {}>;
308
+ instanceId: import("drizzle-orm/pg-core").PgColumn<{
309
+ name: "instance_id";
310
+ tableName: "session_mail";
311
+ dataType: "string";
312
+ columnType: "PgText";
313
+ data: string;
314
+ driverParam: string;
315
+ notNull: false;
316
+ hasDefault: false;
317
+ isPrimaryKey: false;
318
+ isAutoincrement: false;
319
+ hasRuntimeDefault: false;
320
+ enumValues: [string, ...string[]];
321
+ baseColumn: never;
322
+ identity: undefined;
323
+ generated: undefined;
324
+ }, {}, {}>;
325
+ tenantId: import("drizzle-orm/pg-core").PgColumn<{
326
+ name: "tenant_id";
327
+ tableName: "session_mail";
328
+ dataType: "string";
329
+ columnType: "PgText";
330
+ data: string;
331
+ driverParam: string;
332
+ notNull: true;
333
+ hasDefault: false;
334
+ isPrimaryKey: false;
335
+ isAutoincrement: false;
336
+ hasRuntimeDefault: false;
337
+ enumValues: [string, ...string[]];
338
+ baseColumn: never;
339
+ identity: undefined;
340
+ generated: undefined;
341
+ }, {}, {}>;
342
+ direction: import("drizzle-orm/pg-core").PgColumn<{
343
+ name: "direction";
344
+ tableName: "session_mail";
345
+ dataType: "string";
346
+ columnType: "PgText";
347
+ data: "inbound" | "outbound";
348
+ driverParam: string;
349
+ notNull: true;
350
+ hasDefault: false;
351
+ isPrimaryKey: false;
352
+ isAutoincrement: false;
353
+ hasRuntimeDefault: false;
354
+ enumValues: ["inbound", "outbound"];
355
+ baseColumn: never;
356
+ identity: undefined;
357
+ generated: undefined;
358
+ }, {}, {}>;
359
+ status: import("drizzle-orm/pg-core").PgColumn<{
360
+ name: "status";
361
+ tableName: "session_mail";
362
+ dataType: "string";
363
+ columnType: "PgText";
364
+ data: "pending" | "delivered";
365
+ driverParam: string;
366
+ notNull: true;
367
+ hasDefault: true;
368
+ isPrimaryKey: false;
369
+ isAutoincrement: false;
370
+ hasRuntimeDefault: false;
371
+ enumValues: ["pending", "delivered"];
372
+ baseColumn: never;
373
+ identity: undefined;
374
+ generated: undefined;
375
+ }, {}, {}>;
376
+ raw: import("drizzle-orm/pg-core").PgColumn<{
377
+ name: "raw";
378
+ tableName: "session_mail";
379
+ dataType: "custom";
380
+ columnType: "PgCustomColumn";
381
+ data: Uint8Array<ArrayBufferLike>;
382
+ driverParam: Uint8Array<ArrayBufferLike>;
383
+ notNull: true;
384
+ hasDefault: false;
385
+ isPrimaryKey: false;
386
+ isAutoincrement: false;
387
+ hasRuntimeDefault: false;
388
+ enumValues: undefined;
389
+ baseColumn: never;
390
+ identity: undefined;
391
+ generated: undefined;
392
+ }, {}, {
393
+ pgColumnBuilderBrand: "PgCustomColumnBuilderBrand";
394
+ }>;
395
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
396
+ name: "created_at";
397
+ tableName: "session_mail";
398
+ dataType: "date";
399
+ columnType: "PgTimestamp";
400
+ data: Date;
401
+ driverParam: string;
402
+ notNull: true;
403
+ hasDefault: true;
404
+ isPrimaryKey: false;
405
+ isAutoincrement: false;
406
+ hasRuntimeDefault: false;
407
+ enumValues: undefined;
408
+ baseColumn: never;
409
+ identity: undefined;
410
+ generated: undefined;
411
+ }, {}, {}>;
412
+ };
413
+ dialect: "pg";
414
+ }>;
@@ -0,0 +1,71 @@
1
+ import { index, integer, jsonb, pgTable, text, timestamp, } from "drizzle-orm/pg-core";
2
+ import { bytea } from "./column-types.js";
3
+ import { agentInstance } from "./instances.js";
4
+ import { agentSession } from "./sessions.js";
5
+ import { tenant } from "./tenants.js";
6
+ export const inferenceTurn = pgTable("inference_turn", {
7
+ id: text("id").primaryKey(),
8
+ sessionId: text("session_id")
9
+ .notNull()
10
+ .references(() => agentSession.id, { onDelete: "cascade" }),
11
+ instanceId: text("instance_id")
12
+ .notNull()
13
+ .references(() => agentInstance.id, { onDelete: "cascade" }),
14
+ tenantId: text("tenant_id")
15
+ .notNull()
16
+ .references(() => tenant.id, { onDelete: "cascade" }),
17
+ model: text("model").notNull(),
18
+ status: text("status", { enum: ["running", "completed", "failed"] })
19
+ .notNull()
20
+ .default("running"),
21
+ startedAt: timestamp("started_at").notNull(),
22
+ endedAt: timestamp("ended_at"),
23
+ }, (t) => [
24
+ index("inference_turn_instance_id_started_at_idx").on(t.instanceId, t.startedAt),
25
+ ]);
26
+ export const turnPart = pgTable("turn_part", {
27
+ id: text("id").primaryKey(),
28
+ turnId: text("turn_id")
29
+ .notNull()
30
+ .references(() => inferenceTurn.id, { onDelete: "cascade" }),
31
+ sessionId: text("session_id")
32
+ .notNull()
33
+ .references(() => agentSession.id, { onDelete: "cascade" }),
34
+ type: text("type", {
35
+ enum: [
36
+ "text",
37
+ "reasoning",
38
+ "tool",
39
+ "file",
40
+ "error",
41
+ "refusal",
42
+ "step-start",
43
+ "step-finish",
44
+ "snapshot",
45
+ "patch",
46
+ ],
47
+ }).notNull(),
48
+ content: text("content"),
49
+ metadata: jsonb("metadata"),
50
+ ordinal: integer("ordinal").notNull(),
51
+ });
52
+ export const sessionMail = pgTable("session_mail", {
53
+ id: text("id").primaryKey(),
54
+ sessionId: text("session_id")
55
+ .notNull()
56
+ .references(() => agentSession.id, { onDelete: "cascade" }),
57
+ instanceId: text("instance_id").references(() => agentInstance.id, {
58
+ onDelete: "set null",
59
+ }),
60
+ tenantId: text("tenant_id")
61
+ .notNull()
62
+ .references(() => tenant.id, { onDelete: "cascade" }),
63
+ direction: text("direction", { enum: ["inbound", "outbound"] }).notNull(),
64
+ status: text("status", { enum: ["pending", "delivered"] })
65
+ .notNull()
66
+ .default("pending"),
67
+ raw: bytea("raw").notNull(),
68
+ createdAt: timestamp("created_at").notNull().defaultNow(),
69
+ }, (t) => [
70
+ index("session_mail_instance_id_created_at_idx").on(t.instanceId, t.createdAt),
71
+ ]);