@pipeline-builder/pipeline-data 4.3.2 → 4.3.4

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 (56) hide show
  1. package/lib/api/crud-service.d.ts +7 -0
  2. package/lib/api/crud-service.js +14 -3
  3. package/lib/api/ecosystem-privacy.d.ts +25 -0
  4. package/lib/api/ecosystem-privacy.js +58 -0
  5. package/lib/api/pipeline-step-resolution.d.ts +111 -0
  6. package/lib/api/pipeline-step-resolution.js +163 -0
  7. package/lib/api/plugin-consumption-policy.d.ts +8 -2
  8. package/lib/api/plugin-consumption-policy.js +20 -3
  9. package/lib/api/plugin-resolution.d.ts +26 -9
  10. package/lib/api/plugin-resolution.js +51 -33
  11. package/lib/api/public-directory.js +1 -1
  12. package/lib/api/reporting/analytics-queries.d.ts +6 -4
  13. package/lib/api/reporting/analytics-queries.js +15 -14
  14. package/lib/api/reporting/deploy-rollup.d.ts +2 -0
  15. package/lib/api/reporting/deploy-rollup.js +5 -1
  16. package/lib/api/reporting/failure-classifier.d.ts +2 -6
  17. package/lib/api/reporting/failure-classifier.js +22 -1
  18. package/lib/api/reporting/ingest.js +73 -16
  19. package/lib/api/reporting/plugin-exposure.d.ts +261 -15
  20. package/lib/api/reporting/plugin-exposure.js +423 -38
  21. package/lib/api/reporting/stakeholder/compose.d.ts +1 -1
  22. package/lib/api/reporting/stakeholder/compose.js +30 -1
  23. package/lib/api/reporting/stakeholder/store.d.ts +16 -2
  24. package/lib/api/reporting/stakeholder/store.js +17 -6
  25. package/lib/api/reporting/types.d.ts +80 -1
  26. package/lib/api/reporting/types.js +1 -1
  27. package/lib/api/reporting-service.d.ts +11 -4
  28. package/lib/api/reporting-service.js +106 -43
  29. package/lib/api/soft-delete-sweep.d.ts +8 -18
  30. package/lib/api/soft-delete-sweep.js +35 -5
  31. package/lib/api/support-cases.d.ts +380 -0
  32. package/lib/api/support-cases.js +671 -0
  33. package/lib/api/version-references.d.ts +80 -0
  34. package/lib/api/version-references.js +135 -0
  35. package/lib/core/query-filters.d.ts +3 -3
  36. package/lib/core/query-filters.js +1 -1
  37. package/lib/database/drizzle-schema.d.ts +4858 -2759
  38. package/lib/database/drizzle-schema.js +13 -3
  39. package/lib/database/index.d.ts +1 -1
  40. package/lib/database/index.js +2 -2
  41. package/lib/database/schema/ecosystem.d.ts +53 -0
  42. package/lib/database/schema/ecosystem.js +14 -3
  43. package/lib/database/schema/pipeline.d.ts +38 -0
  44. package/lib/database/schema/pipeline.js +20 -2
  45. package/lib/database/schema/plugin.d.ts +265 -0
  46. package/lib/database/schema/plugin.js +34 -3
  47. package/lib/database/schema/reporting-analytics.d.ts +786 -4
  48. package/lib/database/schema/reporting-analytics.js +111 -5
  49. package/lib/database/schema/support.d.ts +1093 -0
  50. package/lib/database/schema/support.js +323 -0
  51. package/lib/database/tenancy.d.ts +7 -5
  52. package/lib/database/tenancy.js +1 -1
  53. package/lib/index.d.ts +7 -3
  54. package/lib/index.js +11 -3
  55. package/lib/testing/exports.json +57 -0
  56. package/package.json +4 -3
@@ -0,0 +1,1093 @@
1
+ /**
2
+ * The WORKFLOW axis of a support case.
3
+ *
4
+ * `messages` already carries the conversation — identity, threading, priority,
5
+ * per-participant read state, attachments and soft-delete. What it has no column
6
+ * for is workflow: status, ownership, resolution and the response clock. That is
7
+ * this table, one row per case, joined to the conversation by `threadId`.
8
+ *
9
+ * Keeping them apart rather than widening `messages` is deliberate: `messages`
10
+ * also carries announcements and ordinary conversations, which have no status,
11
+ * no assignee and no response target. Six nullable columns on every announcement
12
+ * row to describe a state announcements cannot be in is how a table stops
13
+ * meaning one thing.
14
+ *
15
+ * @table support_cases
16
+ */
17
+ export declare const supportCase: import("drizzle-orm/pg-core").PgTableWithColumns<{
18
+ name: "support_cases";
19
+ schema: undefined;
20
+ columns: {
21
+ id: import("drizzle-orm/pg-core").PgColumn<{
22
+ name: "id";
23
+ tableName: "support_cases";
24
+ dataType: "string";
25
+ columnType: "PgUUID";
26
+ data: string;
27
+ driverParam: string;
28
+ notNull: true;
29
+ hasDefault: true;
30
+ isPrimaryKey: true;
31
+ isAutoincrement: false;
32
+ hasRuntimeDefault: false;
33
+ enumValues: undefined;
34
+ baseColumn: never;
35
+ identity: undefined;
36
+ generated: undefined;
37
+ }, {}, {}>;
38
+ threadId: import("drizzle-orm/pg-core").PgColumn<{
39
+ name: "thread_id";
40
+ tableName: "support_cases";
41
+ dataType: "string";
42
+ columnType: "PgUUID";
43
+ data: string;
44
+ driverParam: string;
45
+ notNull: true;
46
+ hasDefault: false;
47
+ isPrimaryKey: false;
48
+ isAutoincrement: false;
49
+ hasRuntimeDefault: false;
50
+ enumValues: undefined;
51
+ baseColumn: never;
52
+ identity: undefined;
53
+ generated: undefined;
54
+ }, {}, {}>;
55
+ orgId: import("drizzle-orm/pg-core").PgColumn<{
56
+ name: "org_id";
57
+ tableName: "support_cases";
58
+ dataType: "string";
59
+ columnType: "PgVarchar";
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
+ length: 255;
73
+ }>;
74
+ displayNumber: import("drizzle-orm/pg-core").PgColumn<{
75
+ name: "display_number";
76
+ tableName: "support_cases";
77
+ dataType: "number";
78
+ columnType: "PgInteger";
79
+ data: number;
80
+ driverParam: string | number;
81
+ notNull: true;
82
+ hasDefault: false;
83
+ isPrimaryKey: false;
84
+ isAutoincrement: false;
85
+ hasRuntimeDefault: false;
86
+ enumValues: undefined;
87
+ baseColumn: never;
88
+ identity: undefined;
89
+ generated: undefined;
90
+ }, {}, {}>;
91
+ status: import("drizzle-orm/pg-core").PgColumn<{
92
+ name: "status";
93
+ tableName: "support_cases";
94
+ dataType: "string";
95
+ columnType: "PgVarchar";
96
+ data: string;
97
+ driverParam: string;
98
+ notNull: true;
99
+ hasDefault: true;
100
+ isPrimaryKey: false;
101
+ isAutoincrement: false;
102
+ hasRuntimeDefault: false;
103
+ enumValues: [string, ...string[]];
104
+ baseColumn: never;
105
+ identity: undefined;
106
+ generated: undefined;
107
+ }, {}, {
108
+ length: 32;
109
+ }>;
110
+ severity: import("drizzle-orm/pg-core").PgColumn<{
111
+ name: "severity";
112
+ tableName: "support_cases";
113
+ dataType: "string";
114
+ columnType: "PgVarchar";
115
+ data: string;
116
+ driverParam: string;
117
+ notNull: true;
118
+ hasDefault: true;
119
+ isPrimaryKey: false;
120
+ isAutoincrement: false;
121
+ hasRuntimeDefault: false;
122
+ enumValues: [string, ...string[]];
123
+ baseColumn: never;
124
+ identity: undefined;
125
+ generated: undefined;
126
+ }, {}, {
127
+ length: 16;
128
+ }>;
129
+ level: import("drizzle-orm/pg-core").PgColumn<{
130
+ name: "level";
131
+ tableName: "support_cases";
132
+ dataType: "string";
133
+ columnType: "PgVarchar";
134
+ data: string;
135
+ driverParam: string;
136
+ notNull: true;
137
+ hasDefault: false;
138
+ isPrimaryKey: false;
139
+ isAutoincrement: false;
140
+ hasRuntimeDefault: false;
141
+ enumValues: [string, ...string[]];
142
+ baseColumn: never;
143
+ identity: undefined;
144
+ generated: undefined;
145
+ }, {}, {
146
+ length: 32;
147
+ }>;
148
+ openedWithIncident: import("drizzle-orm/pg-core").PgColumn<{
149
+ name: "opened_with_incident";
150
+ tableName: "support_cases";
151
+ dataType: "boolean";
152
+ columnType: "PgBoolean";
153
+ data: boolean;
154
+ driverParam: boolean;
155
+ notNull: true;
156
+ hasDefault: true;
157
+ isPrimaryKey: false;
158
+ isAutoincrement: false;
159
+ hasRuntimeDefault: false;
160
+ enumValues: undefined;
161
+ baseColumn: never;
162
+ identity: undefined;
163
+ generated: undefined;
164
+ }, {}, {}>;
165
+ assignedTo: import("drizzle-orm/pg-core").PgColumn<{
166
+ name: "assigned_to";
167
+ tableName: "support_cases";
168
+ dataType: "string";
169
+ columnType: "PgText";
170
+ data: string;
171
+ driverParam: string;
172
+ notNull: false;
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
+ tenantContact: import("drizzle-orm/pg-core").PgColumn<{
183
+ name: "tenant_contact";
184
+ tableName: "support_cases";
185
+ dataType: "string";
186
+ columnType: "PgText";
187
+ data: string;
188
+ driverParam: string;
189
+ notNull: false;
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
+ responseDueAt: import("drizzle-orm/pg-core").PgColumn<{
200
+ name: "response_due_at";
201
+ tableName: "support_cases";
202
+ dataType: "date";
203
+ columnType: "PgTimestamp";
204
+ data: Date;
205
+ driverParam: string;
206
+ notNull: false;
207
+ hasDefault: false;
208
+ isPrimaryKey: false;
209
+ isAutoincrement: false;
210
+ hasRuntimeDefault: false;
211
+ enumValues: undefined;
212
+ baseColumn: never;
213
+ identity: undefined;
214
+ generated: undefined;
215
+ }, {}, {}>;
216
+ firstResponseAt: import("drizzle-orm/pg-core").PgColumn<{
217
+ name: "first_response_at";
218
+ tableName: "support_cases";
219
+ dataType: "date";
220
+ columnType: "PgTimestamp";
221
+ data: Date;
222
+ driverParam: string;
223
+ notNull: false;
224
+ hasDefault: false;
225
+ isPrimaryKey: false;
226
+ isAutoincrement: false;
227
+ hasRuntimeDefault: false;
228
+ enumValues: undefined;
229
+ baseColumn: never;
230
+ identity: undefined;
231
+ generated: undefined;
232
+ }, {}, {}>;
233
+ satisfaction: import("drizzle-orm/pg-core").PgColumn<{
234
+ name: "satisfaction";
235
+ tableName: "support_cases";
236
+ dataType: "number";
237
+ columnType: "PgInteger";
238
+ data: number;
239
+ driverParam: string | number;
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
+ satisfactionComment: import("drizzle-orm/pg-core").PgColumn<{
251
+ name: "satisfaction_comment";
252
+ tableName: "support_cases";
253
+ dataType: "string";
254
+ columnType: "PgText";
255
+ data: string;
256
+ driverParam: string;
257
+ notNull: false;
258
+ hasDefault: false;
259
+ isPrimaryKey: false;
260
+ isAutoincrement: false;
261
+ hasRuntimeDefault: false;
262
+ enumValues: [string, ...string[]];
263
+ baseColumn: never;
264
+ identity: undefined;
265
+ generated: undefined;
266
+ }, {}, {}>;
267
+ satisfactionAt: import("drizzle-orm/pg-core").PgColumn<{
268
+ name: "satisfaction_at";
269
+ tableName: "support_cases";
270
+ dataType: "date";
271
+ columnType: "PgTimestamp";
272
+ data: Date;
273
+ driverParam: string;
274
+ notNull: false;
275
+ hasDefault: false;
276
+ isPrimaryKey: false;
277
+ isAutoincrement: false;
278
+ hasRuntimeDefault: false;
279
+ enumValues: undefined;
280
+ baseColumn: never;
281
+ identity: undefined;
282
+ generated: undefined;
283
+ }, {}, {}>;
284
+ awaitingSince: import("drizzle-orm/pg-core").PgColumn<{
285
+ name: "awaiting_since";
286
+ tableName: "support_cases";
287
+ dataType: "date";
288
+ columnType: "PgTimestamp";
289
+ data: Date;
290
+ driverParam: string;
291
+ notNull: false;
292
+ hasDefault: false;
293
+ isPrimaryKey: false;
294
+ isAutoincrement: false;
295
+ hasRuntimeDefault: false;
296
+ enumValues: undefined;
297
+ baseColumn: never;
298
+ identity: undefined;
299
+ generated: undefined;
300
+ }, {}, {}>;
301
+ awaitingTotalSeconds: import("drizzle-orm/pg-core").PgColumn<{
302
+ name: "awaiting_total_seconds";
303
+ tableName: "support_cases";
304
+ dataType: "number";
305
+ columnType: "PgInteger";
306
+ data: number;
307
+ driverParam: string | number;
308
+ notNull: true;
309
+ hasDefault: true;
310
+ isPrimaryKey: false;
311
+ isAutoincrement: false;
312
+ hasRuntimeDefault: false;
313
+ enumValues: undefined;
314
+ baseColumn: never;
315
+ identity: undefined;
316
+ generated: undefined;
317
+ }, {}, {}>;
318
+ closedAt: import("drizzle-orm/pg-core").PgColumn<{
319
+ name: "closed_at";
320
+ tableName: "support_cases";
321
+ dataType: "date";
322
+ columnType: "PgTimestamp";
323
+ data: Date;
324
+ driverParam: string;
325
+ notNull: false;
326
+ hasDefault: false;
327
+ isPrimaryKey: false;
328
+ isAutoincrement: false;
329
+ hasRuntimeDefault: false;
330
+ enumValues: undefined;
331
+ baseColumn: never;
332
+ identity: undefined;
333
+ generated: undefined;
334
+ }, {}, {}>;
335
+ closedBy: import("drizzle-orm/pg-core").PgColumn<{
336
+ name: "closed_by";
337
+ tableName: "support_cases";
338
+ dataType: "string";
339
+ columnType: "PgText";
340
+ data: string;
341
+ driverParam: string;
342
+ notNull: false;
343
+ hasDefault: false;
344
+ isPrimaryKey: false;
345
+ isAutoincrement: false;
346
+ hasRuntimeDefault: false;
347
+ enumValues: [string, ...string[]];
348
+ baseColumn: never;
349
+ identity: undefined;
350
+ generated: undefined;
351
+ }, {}, {}>;
352
+ createdBy: import("drizzle-orm/pg-core").PgColumn<{
353
+ name: "created_by";
354
+ tableName: "support_cases";
355
+ dataType: "string";
356
+ columnType: "PgText";
357
+ data: string;
358
+ driverParam: string;
359
+ notNull: true;
360
+ hasDefault: true;
361
+ isPrimaryKey: false;
362
+ isAutoincrement: false;
363
+ hasRuntimeDefault: false;
364
+ enumValues: [string, ...string[]];
365
+ baseColumn: never;
366
+ identity: undefined;
367
+ generated: undefined;
368
+ }, {}, {}>;
369
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
370
+ name: "created_at";
371
+ tableName: "support_cases";
372
+ dataType: "date";
373
+ columnType: "PgTimestamp";
374
+ data: Date;
375
+ driverParam: string;
376
+ notNull: true;
377
+ hasDefault: true;
378
+ isPrimaryKey: false;
379
+ isAutoincrement: false;
380
+ hasRuntimeDefault: false;
381
+ enumValues: undefined;
382
+ baseColumn: never;
383
+ identity: undefined;
384
+ generated: undefined;
385
+ }, {}, {}>;
386
+ updatedBy: import("drizzle-orm/pg-core").PgColumn<{
387
+ name: "updated_by";
388
+ tableName: "support_cases";
389
+ dataType: "string";
390
+ columnType: "PgText";
391
+ data: string;
392
+ driverParam: string;
393
+ notNull: true;
394
+ hasDefault: true;
395
+ isPrimaryKey: false;
396
+ isAutoincrement: false;
397
+ hasRuntimeDefault: false;
398
+ enumValues: [string, ...string[]];
399
+ baseColumn: never;
400
+ identity: undefined;
401
+ generated: undefined;
402
+ }, {}, {}>;
403
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
404
+ name: "updated_at";
405
+ tableName: "support_cases";
406
+ dataType: "date";
407
+ columnType: "PgTimestamp";
408
+ data: Date;
409
+ driverParam: string;
410
+ notNull: true;
411
+ hasDefault: true;
412
+ isPrimaryKey: false;
413
+ isAutoincrement: false;
414
+ hasRuntimeDefault: false;
415
+ enumValues: undefined;
416
+ baseColumn: never;
417
+ identity: undefined;
418
+ generated: undefined;
419
+ }, {}, {}>;
420
+ isActive: import("drizzle-orm/pg-core").PgColumn<{
421
+ name: "is_active";
422
+ tableName: "support_cases";
423
+ dataType: "boolean";
424
+ columnType: "PgBoolean";
425
+ data: boolean;
426
+ driverParam: boolean;
427
+ notNull: true;
428
+ hasDefault: true;
429
+ isPrimaryKey: false;
430
+ isAutoincrement: false;
431
+ hasRuntimeDefault: false;
432
+ enumValues: undefined;
433
+ baseColumn: never;
434
+ identity: undefined;
435
+ generated: undefined;
436
+ }, {}, {}>;
437
+ deletedAt: import("drizzle-orm/pg-core").PgColumn<{
438
+ name: "deleted_at";
439
+ tableName: "support_cases";
440
+ dataType: "date";
441
+ columnType: "PgTimestamp";
442
+ data: Date;
443
+ driverParam: string;
444
+ notNull: false;
445
+ hasDefault: false;
446
+ isPrimaryKey: false;
447
+ isAutoincrement: false;
448
+ hasRuntimeDefault: false;
449
+ enumValues: undefined;
450
+ baseColumn: never;
451
+ identity: undefined;
452
+ generated: undefined;
453
+ }, {}, {}>;
454
+ deletedBy: import("drizzle-orm/pg-core").PgColumn<{
455
+ name: "deleted_by";
456
+ tableName: "support_cases";
457
+ dataType: "string";
458
+ columnType: "PgText";
459
+ data: string;
460
+ driverParam: string;
461
+ notNull: false;
462
+ hasDefault: false;
463
+ isPrimaryKey: false;
464
+ isAutoincrement: false;
465
+ hasRuntimeDefault: false;
466
+ enumValues: [string, ...string[]];
467
+ baseColumn: never;
468
+ identity: undefined;
469
+ generated: undefined;
470
+ }, {}, {}>;
471
+ purgeAfter: import("drizzle-orm/pg-core").PgColumn<{
472
+ name: "purge_after";
473
+ tableName: "support_cases";
474
+ dataType: "date";
475
+ columnType: "PgTimestamp";
476
+ data: Date;
477
+ driverParam: string;
478
+ notNull: false;
479
+ hasDefault: false;
480
+ isPrimaryKey: false;
481
+ isAutoincrement: false;
482
+ hasRuntimeDefault: false;
483
+ enumValues: undefined;
484
+ baseColumn: never;
485
+ identity: undefined;
486
+ generated: undefined;
487
+ }, {}, {}>;
488
+ };
489
+ dialect: 'pg';
490
+ }>;
491
+ /**
492
+ * Per-org allocator for `support_cases.display_number`.
493
+ *
494
+ * Postgres sequences are global and cannot be per-org without one sequence per
495
+ * tenant, so the counter is a row: `UPDATE … SET next_number = next_number + 1
496
+ * RETURNING next_number` inside the case-insert transaction, where the row lock
497
+ * serialises concurrent opens within one org.
498
+ *
499
+ * @table support_case_counters
500
+ */
501
+ export declare const supportCaseCounter: import("drizzle-orm/pg-core").PgTableWithColumns<{
502
+ name: "support_case_counters";
503
+ schema: undefined;
504
+ columns: {
505
+ orgId: import("drizzle-orm/pg-core").PgColumn<{
506
+ name: "org_id";
507
+ tableName: "support_case_counters";
508
+ dataType: "string";
509
+ columnType: "PgVarchar";
510
+ data: string;
511
+ driverParam: string;
512
+ notNull: true;
513
+ hasDefault: false;
514
+ isPrimaryKey: true;
515
+ isAutoincrement: false;
516
+ hasRuntimeDefault: false;
517
+ enumValues: [string, ...string[]];
518
+ baseColumn: never;
519
+ identity: undefined;
520
+ generated: undefined;
521
+ }, {}, {
522
+ length: 255;
523
+ }>;
524
+ nextNumber: import("drizzle-orm/pg-core").PgColumn<{
525
+ name: "next_number";
526
+ tableName: "support_case_counters";
527
+ dataType: "number";
528
+ columnType: "PgInteger";
529
+ data: number;
530
+ driverParam: string | number;
531
+ notNull: true;
532
+ hasDefault: true;
533
+ isPrimaryKey: false;
534
+ isAutoincrement: false;
535
+ hasRuntimeDefault: false;
536
+ enumValues: undefined;
537
+ baseColumn: never;
538
+ identity: undefined;
539
+ generated: undefined;
540
+ }, {}, {}>;
541
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
542
+ name: "updated_at";
543
+ tableName: "support_case_counters";
544
+ dataType: "date";
545
+ columnType: "PgTimestamp";
546
+ data: Date;
547
+ driverParam: string;
548
+ notNull: true;
549
+ hasDefault: true;
550
+ isPrimaryKey: false;
551
+ isAutoincrement: false;
552
+ hasRuntimeDefault: false;
553
+ enumValues: undefined;
554
+ baseColumn: never;
555
+ identity: undefined;
556
+ generated: undefined;
557
+ }, {}, {}>;
558
+ };
559
+ dialect: 'pg';
560
+ }>;
561
+ /**
562
+ * The members authorised to open support cases — what the per-contact price
563
+ * bills for.
564
+ *
565
+ * The COUNT is capped against effective `supportContacts` at designation time,
566
+ * in the same shape seats are capped at invite time. `supportContacts` has a
567
+ * tier base of 0 everywhere, so an org with no support add-on has no contacts
568
+ * and cannot open a case: the paywall is a quota check, not a feature flag.
569
+ *
570
+ * @table support_contacts
571
+ */
572
+ export declare const supportContact: import("drizzle-orm/pg-core").PgTableWithColumns<{
573
+ name: "support_contacts";
574
+ schema: undefined;
575
+ columns: {
576
+ id: import("drizzle-orm/pg-core").PgColumn<{
577
+ name: "id";
578
+ tableName: "support_contacts";
579
+ dataType: "string";
580
+ columnType: "PgUUID";
581
+ data: string;
582
+ driverParam: string;
583
+ notNull: true;
584
+ hasDefault: true;
585
+ isPrimaryKey: true;
586
+ isAutoincrement: false;
587
+ hasRuntimeDefault: false;
588
+ enumValues: undefined;
589
+ baseColumn: never;
590
+ identity: undefined;
591
+ generated: undefined;
592
+ }, {}, {}>;
593
+ orgId: import("drizzle-orm/pg-core").PgColumn<{
594
+ name: "org_id";
595
+ tableName: "support_contacts";
596
+ dataType: "string";
597
+ columnType: "PgVarchar";
598
+ data: string;
599
+ driverParam: string;
600
+ notNull: true;
601
+ hasDefault: false;
602
+ isPrimaryKey: false;
603
+ isAutoincrement: false;
604
+ hasRuntimeDefault: false;
605
+ enumValues: [string, ...string[]];
606
+ baseColumn: never;
607
+ identity: undefined;
608
+ generated: undefined;
609
+ }, {}, {
610
+ length: 255;
611
+ }>;
612
+ userId: import("drizzle-orm/pg-core").PgColumn<{
613
+ name: "user_id";
614
+ tableName: "support_contacts";
615
+ dataType: "string";
616
+ columnType: "PgText";
617
+ data: string;
618
+ driverParam: string;
619
+ notNull: true;
620
+ hasDefault: false;
621
+ isPrimaryKey: false;
622
+ isAutoincrement: false;
623
+ hasRuntimeDefault: false;
624
+ enumValues: [string, ...string[]];
625
+ baseColumn: never;
626
+ identity: undefined;
627
+ generated: undefined;
628
+ }, {}, {}>;
629
+ designatedBy: import("drizzle-orm/pg-core").PgColumn<{
630
+ name: "designated_by";
631
+ tableName: "support_contacts";
632
+ dataType: "string";
633
+ columnType: "PgText";
634
+ data: string;
635
+ driverParam: string;
636
+ notNull: true;
637
+ hasDefault: false;
638
+ isPrimaryKey: false;
639
+ isAutoincrement: false;
640
+ hasRuntimeDefault: false;
641
+ enumValues: [string, ...string[]];
642
+ baseColumn: never;
643
+ identity: undefined;
644
+ generated: undefined;
645
+ }, {}, {}>;
646
+ designatedAt: import("drizzle-orm/pg-core").PgColumn<{
647
+ name: "designated_at";
648
+ tableName: "support_contacts";
649
+ dataType: "date";
650
+ columnType: "PgTimestamp";
651
+ data: Date;
652
+ driverParam: string;
653
+ notNull: true;
654
+ hasDefault: true;
655
+ isPrimaryKey: false;
656
+ isAutoincrement: false;
657
+ hasRuntimeDefault: false;
658
+ enumValues: undefined;
659
+ baseColumn: never;
660
+ identity: undefined;
661
+ generated: undefined;
662
+ }, {}, {}>;
663
+ isPremium: import("drizzle-orm/pg-core").PgColumn<{
664
+ name: "is_premium";
665
+ tableName: "support_contacts";
666
+ dataType: "boolean";
667
+ columnType: "PgBoolean";
668
+ data: boolean;
669
+ driverParam: boolean;
670
+ notNull: true;
671
+ hasDefault: true;
672
+ isPrimaryKey: false;
673
+ isAutoincrement: false;
674
+ hasRuntimeDefault: false;
675
+ enumValues: undefined;
676
+ baseColumn: never;
677
+ identity: undefined;
678
+ generated: undefined;
679
+ }, {}, {}>;
680
+ isActive: import("drizzle-orm/pg-core").PgColumn<{
681
+ name: "is_active";
682
+ tableName: "support_contacts";
683
+ dataType: "boolean";
684
+ columnType: "PgBoolean";
685
+ data: boolean;
686
+ driverParam: boolean;
687
+ notNull: true;
688
+ hasDefault: true;
689
+ isPrimaryKey: false;
690
+ isAutoincrement: false;
691
+ hasRuntimeDefault: false;
692
+ enumValues: undefined;
693
+ baseColumn: never;
694
+ identity: undefined;
695
+ generated: undefined;
696
+ }, {}, {}>;
697
+ revokedAt: import("drizzle-orm/pg-core").PgColumn<{
698
+ name: "revoked_at";
699
+ tableName: "support_contacts";
700
+ dataType: "date";
701
+ columnType: "PgTimestamp";
702
+ data: Date;
703
+ driverParam: string;
704
+ notNull: false;
705
+ hasDefault: false;
706
+ isPrimaryKey: false;
707
+ isAutoincrement: false;
708
+ hasRuntimeDefault: false;
709
+ enumValues: undefined;
710
+ baseColumn: never;
711
+ identity: undefined;
712
+ generated: undefined;
713
+ }, {}, {}>;
714
+ revokedBy: import("drizzle-orm/pg-core").PgColumn<{
715
+ name: "revoked_by";
716
+ tableName: "support_contacts";
717
+ dataType: "string";
718
+ columnType: "PgText";
719
+ data: string;
720
+ driverParam: string;
721
+ notNull: false;
722
+ hasDefault: false;
723
+ isPrimaryKey: false;
724
+ isAutoincrement: false;
725
+ hasRuntimeDefault: false;
726
+ enumValues: [string, ...string[]];
727
+ baseColumn: never;
728
+ identity: undefined;
729
+ generated: undefined;
730
+ }, {}, {}>;
731
+ };
732
+ dialect: 'pg';
733
+ }>;
734
+ /**
735
+ * Canned staff replies — a shared library of answers the desk reuses.
736
+ *
737
+ * SYSTEM-WIDE, not per-tenant, and deliberately so: these are the vendor's own
738
+ * wording for recurring questions, authored once and used across every
739
+ * customer. There is no `org_id` because scoping them per tenant would be the
740
+ * opposite of the point — the value is that the answer to "how do I rotate a
741
+ * service key" is written well once rather than retyped badly fifty times.
742
+ *
743
+ * That also means RLS does not apply: every row is visible to the staff who can
744
+ * reach the queue, and to nobody else. The routes are system-admin gated on
745
+ * both read and write for exactly that reason.
746
+ *
747
+ * Soft-deleted rather than removed, because a retired template is still the
748
+ * explanation of what a past reply said.
749
+ *
750
+ * @table support_canned_responses
751
+ */
752
+ export declare const supportCannedResponse: import("drizzle-orm/pg-core").PgTableWithColumns<{
753
+ name: "support_canned_responses";
754
+ schema: undefined;
755
+ columns: {
756
+ id: import("drizzle-orm/pg-core").PgColumn<{
757
+ name: "id";
758
+ tableName: "support_canned_responses";
759
+ dataType: "string";
760
+ columnType: "PgUUID";
761
+ data: string;
762
+ driverParam: string;
763
+ notNull: true;
764
+ hasDefault: true;
765
+ isPrimaryKey: true;
766
+ isAutoincrement: false;
767
+ hasRuntimeDefault: false;
768
+ enumValues: undefined;
769
+ baseColumn: never;
770
+ identity: undefined;
771
+ generated: undefined;
772
+ }, {}, {}>;
773
+ title: import("drizzle-orm/pg-core").PgColumn<{
774
+ name: "title";
775
+ tableName: "support_canned_responses";
776
+ dataType: "string";
777
+ columnType: "PgVarchar";
778
+ data: string;
779
+ driverParam: string;
780
+ notNull: true;
781
+ hasDefault: false;
782
+ isPrimaryKey: false;
783
+ isAutoincrement: false;
784
+ hasRuntimeDefault: false;
785
+ enumValues: [string, ...string[]];
786
+ baseColumn: never;
787
+ identity: undefined;
788
+ generated: undefined;
789
+ }, {}, {
790
+ length: 200;
791
+ }>;
792
+ body: import("drizzle-orm/pg-core").PgColumn<{
793
+ name: "body";
794
+ tableName: "support_canned_responses";
795
+ dataType: "string";
796
+ columnType: "PgText";
797
+ data: string;
798
+ driverParam: string;
799
+ notNull: true;
800
+ hasDefault: false;
801
+ isPrimaryKey: false;
802
+ isAutoincrement: false;
803
+ hasRuntimeDefault: false;
804
+ enumValues: [string, ...string[]];
805
+ baseColumn: never;
806
+ identity: undefined;
807
+ generated: undefined;
808
+ }, {}, {}>;
809
+ createdBy: import("drizzle-orm/pg-core").PgColumn<{
810
+ name: "created_by";
811
+ tableName: "support_canned_responses";
812
+ dataType: "string";
813
+ columnType: "PgText";
814
+ data: string;
815
+ driverParam: string;
816
+ notNull: true;
817
+ hasDefault: false;
818
+ isPrimaryKey: false;
819
+ isAutoincrement: false;
820
+ hasRuntimeDefault: false;
821
+ enumValues: [string, ...string[]];
822
+ baseColumn: never;
823
+ identity: undefined;
824
+ generated: undefined;
825
+ }, {}, {}>;
826
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
827
+ name: "created_at";
828
+ tableName: "support_canned_responses";
829
+ dataType: "date";
830
+ columnType: "PgTimestamp";
831
+ data: Date;
832
+ driverParam: string;
833
+ notNull: true;
834
+ hasDefault: true;
835
+ isPrimaryKey: false;
836
+ isAutoincrement: false;
837
+ hasRuntimeDefault: false;
838
+ enumValues: undefined;
839
+ baseColumn: never;
840
+ identity: undefined;
841
+ generated: undefined;
842
+ }, {}, {}>;
843
+ updatedBy: import("drizzle-orm/pg-core").PgColumn<{
844
+ name: "updated_by";
845
+ tableName: "support_canned_responses";
846
+ dataType: "string";
847
+ columnType: "PgText";
848
+ data: string;
849
+ driverParam: string;
850
+ notNull: true;
851
+ hasDefault: false;
852
+ isPrimaryKey: false;
853
+ isAutoincrement: false;
854
+ hasRuntimeDefault: false;
855
+ enumValues: [string, ...string[]];
856
+ baseColumn: never;
857
+ identity: undefined;
858
+ generated: undefined;
859
+ }, {}, {}>;
860
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
861
+ name: "updated_at";
862
+ tableName: "support_canned_responses";
863
+ dataType: "date";
864
+ columnType: "PgTimestamp";
865
+ data: Date;
866
+ driverParam: string;
867
+ notNull: true;
868
+ hasDefault: true;
869
+ isPrimaryKey: false;
870
+ isAutoincrement: false;
871
+ hasRuntimeDefault: false;
872
+ enumValues: undefined;
873
+ baseColumn: never;
874
+ identity: undefined;
875
+ generated: undefined;
876
+ }, {}, {}>;
877
+ isActive: import("drizzle-orm/pg-core").PgColumn<{
878
+ name: "is_active";
879
+ tableName: "support_canned_responses";
880
+ dataType: "boolean";
881
+ columnType: "PgBoolean";
882
+ data: boolean;
883
+ driverParam: boolean;
884
+ notNull: true;
885
+ hasDefault: true;
886
+ isPrimaryKey: false;
887
+ isAutoincrement: false;
888
+ hasRuntimeDefault: false;
889
+ enumValues: undefined;
890
+ baseColumn: never;
891
+ identity: undefined;
892
+ generated: undefined;
893
+ }, {}, {}>;
894
+ };
895
+ dialect: 'pg';
896
+ }>;
897
+ /**
898
+ * CSAT: the customer's verdict on a closed case.
899
+ *
900
+ * A COLUMN SET on the case rather than its own table, unlike notes. The reason
901
+ * is cardinality, not convenience: a case has many notes and exactly one
902
+ * satisfaction rating, so a table would buy an extra join and a uniqueness
903
+ * constraint to enforce what a column gets for free.
904
+ *
905
+ * Why it matters more here than in most products: the thing being SOLD is a
906
+ * response time, and first-response latency only measures whether we answered
907
+ * fast — not whether the answer was any good. A desk can hit every target and
908
+ * still be bad at support, and without this nothing in the system would notice.
909
+ *
910
+ * @table support_cases (columns)
911
+ */
912
+ /**
913
+ * Staff-only notes on a case.
914
+ *
915
+ * A SEPARATE TABLE rather than a flag on `messages`, and the reason is the
916
+ * failure mode: `messages` is read through one shared visibility predicate
917
+ * (`buildMessageConditions`), so a flag means every read path that forgets the
918
+ * extra condition leaks an internal note to the tenant. A separate table cannot
919
+ * leak by omission — it has to be joined deliberately.
920
+ *
921
+ * @table support_case_notes
922
+ */
923
+ export declare const supportCaseNote: import("drizzle-orm/pg-core").PgTableWithColumns<{
924
+ name: "support_case_notes";
925
+ schema: undefined;
926
+ columns: {
927
+ id: import("drizzle-orm/pg-core").PgColumn<{
928
+ name: "id";
929
+ tableName: "support_case_notes";
930
+ dataType: "string";
931
+ columnType: "PgUUID";
932
+ data: string;
933
+ driverParam: string;
934
+ notNull: true;
935
+ hasDefault: true;
936
+ isPrimaryKey: true;
937
+ isAutoincrement: false;
938
+ hasRuntimeDefault: false;
939
+ enumValues: undefined;
940
+ baseColumn: never;
941
+ identity: undefined;
942
+ generated: undefined;
943
+ }, {}, {}>;
944
+ caseId: import("drizzle-orm/pg-core").PgColumn<{
945
+ name: "case_id";
946
+ tableName: "support_case_notes";
947
+ dataType: "string";
948
+ columnType: "PgUUID";
949
+ data: string;
950
+ driverParam: string;
951
+ notNull: true;
952
+ hasDefault: false;
953
+ isPrimaryKey: false;
954
+ isAutoincrement: false;
955
+ hasRuntimeDefault: false;
956
+ enumValues: undefined;
957
+ baseColumn: never;
958
+ identity: undefined;
959
+ generated: undefined;
960
+ }, {}, {}>;
961
+ orgId: import("drizzle-orm/pg-core").PgColumn<{
962
+ name: "org_id";
963
+ tableName: "support_case_notes";
964
+ dataType: "string";
965
+ columnType: "PgVarchar";
966
+ data: string;
967
+ driverParam: string;
968
+ notNull: true;
969
+ hasDefault: false;
970
+ isPrimaryKey: false;
971
+ isAutoincrement: false;
972
+ hasRuntimeDefault: false;
973
+ enumValues: [string, ...string[]];
974
+ baseColumn: never;
975
+ identity: undefined;
976
+ generated: undefined;
977
+ }, {}, {
978
+ length: 255;
979
+ }>;
980
+ content: import("drizzle-orm/pg-core").PgColumn<{
981
+ name: "content";
982
+ tableName: "support_case_notes";
983
+ dataType: "string";
984
+ columnType: "PgText";
985
+ data: string;
986
+ driverParam: string;
987
+ notNull: true;
988
+ hasDefault: false;
989
+ isPrimaryKey: false;
990
+ isAutoincrement: false;
991
+ hasRuntimeDefault: false;
992
+ enumValues: [string, ...string[]];
993
+ baseColumn: never;
994
+ identity: undefined;
995
+ generated: undefined;
996
+ }, {}, {}>;
997
+ createdBy: import("drizzle-orm/pg-core").PgColumn<{
998
+ name: "created_by";
999
+ tableName: "support_case_notes";
1000
+ dataType: "string";
1001
+ columnType: "PgText";
1002
+ data: string;
1003
+ driverParam: string;
1004
+ notNull: true;
1005
+ hasDefault: false;
1006
+ isPrimaryKey: false;
1007
+ isAutoincrement: false;
1008
+ hasRuntimeDefault: false;
1009
+ enumValues: [string, ...string[]];
1010
+ baseColumn: never;
1011
+ identity: undefined;
1012
+ generated: undefined;
1013
+ }, {}, {}>;
1014
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
1015
+ name: "created_at";
1016
+ tableName: "support_case_notes";
1017
+ dataType: "date";
1018
+ columnType: "PgTimestamp";
1019
+ data: Date;
1020
+ driverParam: string;
1021
+ notNull: true;
1022
+ hasDefault: true;
1023
+ isPrimaryKey: false;
1024
+ isAutoincrement: false;
1025
+ hasRuntimeDefault: false;
1026
+ enumValues: undefined;
1027
+ baseColumn: never;
1028
+ identity: undefined;
1029
+ generated: undefined;
1030
+ }, {}, {}>;
1031
+ isActive: import("drizzle-orm/pg-core").PgColumn<{
1032
+ name: "is_active";
1033
+ tableName: "support_case_notes";
1034
+ dataType: "boolean";
1035
+ columnType: "PgBoolean";
1036
+ data: boolean;
1037
+ driverParam: boolean;
1038
+ notNull: true;
1039
+ hasDefault: true;
1040
+ isPrimaryKey: false;
1041
+ isAutoincrement: false;
1042
+ hasRuntimeDefault: false;
1043
+ enumValues: undefined;
1044
+ baseColumn: never;
1045
+ identity: undefined;
1046
+ generated: undefined;
1047
+ }, {}, {}>;
1048
+ deletedAt: import("drizzle-orm/pg-core").PgColumn<{
1049
+ name: "deleted_at";
1050
+ tableName: "support_case_notes";
1051
+ dataType: "date";
1052
+ columnType: "PgTimestamp";
1053
+ data: Date;
1054
+ driverParam: string;
1055
+ notNull: false;
1056
+ hasDefault: false;
1057
+ isPrimaryKey: false;
1058
+ isAutoincrement: false;
1059
+ hasRuntimeDefault: false;
1060
+ enumValues: undefined;
1061
+ baseColumn: never;
1062
+ identity: undefined;
1063
+ generated: undefined;
1064
+ }, {}, {}>;
1065
+ deletedBy: import("drizzle-orm/pg-core").PgColumn<{
1066
+ name: "deleted_by";
1067
+ tableName: "support_case_notes";
1068
+ dataType: "string";
1069
+ columnType: "PgText";
1070
+ data: string;
1071
+ driverParam: string;
1072
+ notNull: false;
1073
+ hasDefault: false;
1074
+ isPrimaryKey: false;
1075
+ isAutoincrement: false;
1076
+ hasRuntimeDefault: false;
1077
+ enumValues: [string, ...string[]];
1078
+ baseColumn: never;
1079
+ identity: undefined;
1080
+ generated: undefined;
1081
+ }, {}, {}>;
1082
+ };
1083
+ dialect: 'pg';
1084
+ }>;
1085
+ /** TypeScript types representing database rows */
1086
+ export type SupportCase = typeof supportCase.$inferSelect;
1087
+ export type SupportCaseInsert = typeof supportCase.$inferInsert;
1088
+ export type SupportCaseUpdate = Partial<Omit<SupportCaseInsert, 'id' | 'createdAt' | 'createdBy' | 'orgId' | 'threadId' | 'displayNumber'>>;
1089
+ export type SupportCaseCounter = typeof supportCaseCounter.$inferSelect;
1090
+ export type SupportContact = typeof supportContact.$inferSelect;
1091
+ export type SupportContactInsert = typeof supportContact.$inferInsert;
1092
+ export type SupportCaseNote = typeof supportCaseNote.$inferSelect;
1093
+ export type SupportCaseNoteInsert = typeof supportCaseNote.$inferInsert;