@cosmicdrift/kumiko-bundled-features 0.383.1 → 0.384.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 (126) hide show
  1. package/dist/audit/event-classification.d.ts +8 -0
  2. package/dist/audit/event-classification.js +69 -0
  3. package/dist/audit/feature.js +3 -3
  4. package/dist/audit/handlers/audit-events.d.ts +25 -3
  5. package/dist/audit/handlers/audit-events.js +41 -7
  6. package/dist/audit/handlers/details-all-tenants.query.d.ts +3 -0
  7. package/dist/audit/handlers/details-all-tenants.query.js +2 -5
  8. package/dist/audit/handlers/details.query.d.ts +3 -0
  9. package/dist/audit/handlers/details.query.js +5 -3
  10. package/dist/audit/handlers/list-all-tenants.query.d.ts +9 -2
  11. package/dist/audit/handlers/list-all-tenants.query.js +10 -8
  12. package/dist/audit/handlers/list.query.d.ts +8 -0
  13. package/dist/audit/handlers/list.query.js +12 -4
  14. package/dist/audit/screens.d.ts +37 -0
  15. package/dist/audit/screens.js +26 -4
  16. package/dist/audit/web/audit-event-cell.d.ts +4 -0
  17. package/dist/audit/web/audit-event-cell.js +20 -0
  18. package/dist/audit/web/audit-event-labels.d.ts +7 -0
  19. package/dist/audit/web/audit-event-labels.js +23 -0
  20. package/dist/audit/web/client-plugin.js +6 -1
  21. package/dist/audit/web/constants.d.ts +8 -0
  22. package/dist/audit/web/constants.js +7 -0
  23. package/dist/audit/web/i18n.js +48 -1
  24. package/dist/auth-email-password/feature.js +3 -2
  25. package/dist/auth-email-password/handlers/login-options.query.d.ts +5 -0
  26. package/dist/auth-email-password/handlers/login-options.query.js +17 -0
  27. package/dist/auth-email-password/index.d.ts +1 -1
  28. package/dist/auth-email-password/index.js +1 -1
  29. package/dist/auth-email-password/{auth-paths.d.ts → web/auth-paths.d.ts} +5 -3
  30. package/dist/auth-email-password/{auth-paths.js → web/auth-paths.js} +5 -3
  31. package/dist/auth-email-password/web/client-plugin.d.ts +5 -0
  32. package/dist/auth-email-password/web/client-plugin.js +2 -0
  33. package/dist/auth-email-password/web/constants.d.ts +1 -0
  34. package/dist/auth-email-password/web/constants.js +1 -0
  35. package/dist/auth-email-password/web/default-auth-pages-gate.d.ts +4 -0
  36. package/dist/auth-email-password/web/default-auth-pages-gate.js +28 -0
  37. package/dist/auth-email-password/web/login-screen.d.ts +13 -18
  38. package/dist/auth-email-password/web/login-screen.js +31 -19
  39. package/dist/auth-mfa/schema/user-mfa.d.ts +6 -126
  40. package/dist/billing-foundation/entities.d.ts +8 -168
  41. package/dist/billing-foundation/projection.d.ts +8 -168
  42. package/dist/cap-counter/entity.d.ts +1 -21
  43. package/dist/compliance-profiles/schema/profile-selection.d.ts +2 -28
  44. package/dist/config/table.d.ts +6 -126
  45. package/dist/custom-fields/entity.d.ts +4 -84
  46. package/dist/data-retention/schema/tenant-retention-override.d.ts +6 -112
  47. package/dist/delivery/tables.d.ts +6 -126
  48. package/dist/document-ingest-foundation/entity.d.ts +6 -112
  49. package/dist/folders/entity.d.ts +8 -168
  50. package/dist/form-draft/entity.d.ts +2 -42
  51. package/dist/inbound-mail-foundation/entities.d.ts +25 -525
  52. package/dist/inbound-mail-foundation/projection.d.ts +20 -420
  53. package/dist/jobs/feature.js +22 -117
  54. package/dist/jobs/handlers/consumer.write.d.ts +37 -0
  55. package/dist/jobs/handlers/consumer.write.js +59 -0
  56. package/dist/jobs/handlers/consumers.query.d.ts +52 -0
  57. package/dist/jobs/handlers/consumers.query.js +114 -0
  58. package/dist/jobs/job-run-table.d.ts +6 -126
  59. package/dist/jobs/screens.d.ts +6 -0
  60. package/dist/jobs/screens.js +241 -0
  61. package/dist/jobs/web/constants.d.ts +20 -0
  62. package/dist/jobs/web/constants.js +21 -0
  63. package/dist/jobs/web/i18n.js +41 -0
  64. package/dist/ledger/entity.d.ts +13 -273
  65. package/dist/managed-pages/table.d.ts +12 -252
  66. package/dist/notes-history/entity.d.ts +14 -280
  67. package/dist/personal-access-tokens/schema/api-token.d.ts +6 -126
  68. package/dist/secrets/i18n.d.ts +0 -3
  69. package/dist/secrets/i18n.js +0 -3
  70. package/dist/secrets/table.d.ts +1 -21
  71. package/dist/sessions/constants.d.ts +2 -1
  72. package/dist/sessions/constants.js +2 -1
  73. package/dist/sessions/handlers/detail.query.d.ts +5 -0
  74. package/dist/sessions/handlers/detail.query.js +7 -3
  75. package/dist/sessions/handlers/list.query.d.ts +5 -0
  76. package/dist/sessions/handlers/list.query.js +16 -10
  77. package/dist/sessions/handlers/mine.query.d.ts +5 -0
  78. package/dist/sessions/handlers/mine.query.js +15 -9
  79. package/dist/sessions/schema/user-session.d.ts +4 -84
  80. package/dist/sessions/screens.js +22 -8
  81. package/dist/sessions/web/client-plugin.d.ts +6 -0
  82. package/dist/sessions/web/client-plugin.js +11 -0
  83. package/dist/sessions/web/constants.d.ts +3 -0
  84. package/dist/sessions/web/constants.js +3 -0
  85. package/dist/sessions/web/default-translations.d.ts +2 -0
  86. package/dist/sessions/web/default-translations.js +3 -0
  87. package/dist/sessions/web/i18n.js +5 -1
  88. package/dist/sessions/web/index.d.ts +1 -0
  89. package/dist/sessions/web/index.js +1 -0
  90. package/dist/sessions/web/session-device-cell.d.ts +3 -0
  91. package/dist/sessions/web/session-device-cell.js +16 -0
  92. package/dist/sessions/web/user-agent.d.ts +26 -0
  93. package/dist/sessions/web/user-agent.js +58 -0
  94. package/dist/tags/entity.d.ts +9 -189
  95. package/dist/template-resolver/feature.d.ts +1 -0
  96. package/dist/template-resolver/feature.js +2 -0
  97. package/dist/template-resolver/handlers/overview.query.d.ts +5 -0
  98. package/dist/template-resolver/handlers/overview.query.js +19 -2
  99. package/dist/template-resolver/handlers/tenant-override-counts.query.d.ts +17 -0
  100. package/dist/template-resolver/handlers/tenant-override-counts.query.js +35 -0
  101. package/dist/template-resolver/handlers/tenant-override-selection.d.ts +12 -0
  102. package/dist/template-resolver/handlers/tenant-override-selection.js +34 -0
  103. package/dist/template-resolver/handlers/tenant-overrides.query.js +3 -29
  104. package/dist/template-resolver/table.d.ts +20 -350
  105. package/dist/template-resolver/user-content-table.d.ts +12 -238
  106. package/dist/template-resolver/web/qualified-names.d.ts +1 -0
  107. package/dist/template-resolver/web/qualified-names.js +1 -0
  108. package/dist/tenant/invitation-table.d.ts +6 -126
  109. package/dist/tenant/membership-table.d.ts +4 -84
  110. package/dist/tenant/schema/tenant.d.ts +6 -126
  111. package/dist/tier-engine/entity.d.ts +1 -21
  112. package/dist/tier-engine/tier-resolver.d.ts +1 -21
  113. package/dist/user/schema/user.d.ts +12 -252
  114. package/dist/user-data-rights/feature.js +33 -33
  115. package/dist/user-data-rights/schema/download-attempt.d.ts +14 -294
  116. package/dist/user-data-rights/schema/download-token.d.ts +8 -168
  117. package/dist/user-data-rights/schema/export-job.d.ts +8 -154
  118. package/dist/user-data-rights/web/i18n.js +4 -1
  119. package/dist/waitlist/entity.d.ts +16 -322
  120. package/package.json +17 -9
  121. package/src/audit/changes.json +6 -0
  122. package/src/auth-email-password/changes.json +6 -0
  123. package/src/jobs/changes.json +6 -0
  124. package/src/sessions/changes.json +6 -0
  125. package/src/template-resolver/changes.json +6 -0
  126. package/src/user-data-rights/changes.json +18 -0
@@ -1,163 +1,23 @@
1
1
  export declare const mailAccountsProjectionTable: import("@cosmicdrift/kumiko-framework/db").EntityTable<import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
2
- readonly provider: {
3
- readonly type: "text";
4
- readonly description?: string;
5
- readonly maxLength?: number;
6
- readonly minLength?: number;
7
- readonly autoComplete?: string;
8
- readonly required?: boolean;
9
- readonly searchable?: boolean;
10
- readonly sortable?: boolean;
11
- readonly filterable?: boolean;
12
- readonly encrypted?: boolean;
13
- readonly sensitive?: boolean;
14
- readonly writeOnly?: boolean;
15
- readonly readAsInstruction?: boolean;
16
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
17
- readonly default?: string;
18
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
19
- readonly multiline?: boolean | {
20
- readonly rows?: number;
21
- };
22
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
2
+ readonly provider: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
23
3
  required: true;
24
4
  };
25
- readonly authMethod: {
26
- readonly type: "text";
27
- readonly description?: string;
28
- readonly maxLength?: number;
29
- readonly minLength?: number;
30
- readonly autoComplete?: string;
31
- readonly required?: boolean;
32
- readonly searchable?: boolean;
33
- readonly sortable?: boolean;
34
- readonly filterable?: boolean;
35
- readonly encrypted?: boolean;
36
- readonly sensitive?: boolean;
37
- readonly writeOnly?: boolean;
38
- readonly readAsInstruction?: boolean;
39
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
40
- readonly default?: string;
41
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
42
- readonly multiline?: boolean | {
43
- readonly rows?: number;
44
- };
45
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
5
+ readonly authMethod: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
46
6
  required: true;
47
7
  };
48
- readonly ownerUserId: {
49
- readonly type: "text";
50
- readonly description?: string;
51
- readonly maxLength?: number;
52
- readonly minLength?: number;
53
- readonly autoComplete?: string;
54
- readonly required?: boolean;
55
- readonly searchable?: boolean;
56
- readonly sortable?: boolean;
57
- readonly filterable?: boolean;
58
- readonly encrypted?: boolean;
59
- readonly sensitive?: boolean;
60
- readonly writeOnly?: boolean;
61
- readonly readAsInstruction?: boolean;
62
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
63
- readonly default?: string;
64
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
65
- readonly multiline?: boolean | {
66
- readonly rows?: number;
67
- };
68
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
8
+ readonly ownerUserId: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
69
9
  required: false;
70
10
  };
71
- readonly displayName: {
72
- readonly type: "text";
73
- readonly description?: string;
74
- readonly maxLength?: number;
75
- readonly minLength?: number;
76
- readonly autoComplete?: string;
77
- readonly required?: boolean;
78
- readonly searchable?: boolean;
79
- readonly sortable?: boolean;
80
- readonly filterable?: boolean;
81
- readonly encrypted?: boolean;
82
- readonly sensitive?: boolean;
83
- readonly writeOnly?: boolean;
84
- readonly readAsInstruction?: boolean;
85
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
86
- readonly default?: string;
87
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
88
- readonly multiline?: boolean | {
89
- readonly rows?: number;
90
- };
91
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
11
+ readonly displayName: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
92
12
  required: false;
93
13
  };
94
- readonly address: {
95
- readonly type: "text";
96
- readonly description?: string;
97
- readonly maxLength?: number;
98
- readonly minLength?: number;
99
- readonly autoComplete?: string;
100
- readonly required?: boolean;
101
- readonly searchable?: boolean;
102
- readonly sortable?: boolean;
103
- readonly filterable?: boolean;
104
- readonly encrypted?: boolean;
105
- readonly sensitive?: boolean;
106
- readonly writeOnly?: boolean;
107
- readonly readAsInstruction?: boolean;
108
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
109
- readonly default?: string;
110
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
111
- readonly multiline?: boolean | {
112
- readonly rows?: number;
113
- };
114
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
14
+ readonly address: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
115
15
  required: true;
116
16
  };
117
- readonly status: {
118
- readonly type: "text";
119
- readonly description?: string;
120
- readonly maxLength?: number;
121
- readonly minLength?: number;
122
- readonly autoComplete?: string;
123
- readonly required?: boolean;
124
- readonly searchable?: boolean;
125
- readonly sortable?: boolean;
126
- readonly filterable?: boolean;
127
- readonly encrypted?: boolean;
128
- readonly sensitive?: boolean;
129
- readonly writeOnly?: boolean;
130
- readonly readAsInstruction?: boolean;
131
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
132
- readonly default?: string;
133
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
134
- readonly multiline?: boolean | {
135
- readonly rows?: number;
136
- };
137
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
17
+ readonly status: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
138
18
  required: true;
139
19
  };
140
- readonly watchState: {
141
- readonly type: "text";
142
- readonly description?: string;
143
- readonly maxLength?: number;
144
- readonly minLength?: number;
145
- readonly autoComplete?: string;
146
- readonly required?: boolean;
147
- readonly searchable?: boolean;
148
- readonly sortable?: boolean;
149
- readonly filterable?: boolean;
150
- readonly encrypted?: boolean;
151
- readonly sensitive?: boolean;
152
- readonly writeOnly?: boolean;
153
- readonly readAsInstruction?: boolean;
154
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
155
- readonly default?: string;
156
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
157
- readonly multiline?: boolean | {
158
- readonly rows?: number;
159
- };
160
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
20
+ readonly watchState: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
161
21
  required: false;
162
22
  };
163
23
  readonly connectedAt: {
@@ -177,211 +37,31 @@ export declare const mailAccountsProjectionTable: import("@cosmicdrift/kumiko-fr
177
37
  };
178
38
  }, "tenant">>;
179
39
  export declare const inboundMessagesProjectionTable: import("@cosmicdrift/kumiko-framework/db").EntityTable<import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
180
- readonly accountId: {
181
- readonly type: "text";
182
- readonly description?: string;
183
- readonly maxLength?: number;
184
- readonly minLength?: number;
185
- readonly autoComplete?: string;
186
- readonly required?: boolean;
187
- readonly searchable?: boolean;
188
- readonly sortable?: boolean;
189
- readonly filterable?: boolean;
190
- readonly encrypted?: boolean;
191
- readonly sensitive?: boolean;
192
- readonly writeOnly?: boolean;
193
- readonly readAsInstruction?: boolean;
194
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
195
- readonly default?: string;
196
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
197
- readonly multiline?: boolean | {
198
- readonly rows?: number;
199
- };
200
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
40
+ readonly accountId: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
201
41
  required: true;
202
42
  };
203
- readonly ownerUserId: {
204
- readonly type: "text";
205
- readonly description?: string;
206
- readonly maxLength?: number;
207
- readonly minLength?: number;
208
- readonly autoComplete?: string;
209
- readonly required?: boolean;
210
- readonly searchable?: boolean;
211
- readonly sortable?: boolean;
212
- readonly filterable?: boolean;
213
- readonly encrypted?: boolean;
214
- readonly sensitive?: boolean;
215
- readonly writeOnly?: boolean;
216
- readonly readAsInstruction?: boolean;
217
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
218
- readonly default?: string;
219
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
220
- readonly multiline?: boolean | {
221
- readonly rows?: number;
222
- };
223
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
43
+ readonly ownerUserId: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
224
44
  required: false;
225
45
  };
226
- readonly messageIdHeader: {
227
- readonly type: "text";
228
- readonly description?: string;
229
- readonly maxLength?: number;
230
- readonly minLength?: number;
231
- readonly autoComplete?: string;
232
- readonly required?: boolean;
233
- readonly searchable?: boolean;
234
- readonly sortable?: boolean;
235
- readonly filterable?: boolean;
236
- readonly encrypted?: boolean;
237
- readonly sensitive?: boolean;
238
- readonly writeOnly?: boolean;
239
- readonly readAsInstruction?: boolean;
240
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
241
- readonly default?: string;
242
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
243
- readonly multiline?: boolean | {
244
- readonly rows?: number;
245
- };
246
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
46
+ readonly messageIdHeader: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
247
47
  required: true;
248
48
  };
249
- readonly threadKey: {
250
- readonly type: "text";
251
- readonly description?: string;
252
- readonly maxLength?: number;
253
- readonly minLength?: number;
254
- readonly autoComplete?: string;
255
- readonly required?: boolean;
256
- readonly searchable?: boolean;
257
- readonly sortable?: boolean;
258
- readonly filterable?: boolean;
259
- readonly encrypted?: boolean;
260
- readonly sensitive?: boolean;
261
- readonly writeOnly?: boolean;
262
- readonly readAsInstruction?: boolean;
263
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
264
- readonly default?: string;
265
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
266
- readonly multiline?: boolean | {
267
- readonly rows?: number;
268
- };
269
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
49
+ readonly threadKey: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
270
50
  required: true;
271
51
  };
272
- readonly from: {
273
- readonly type: "text";
274
- readonly description?: string;
275
- readonly maxLength?: number;
276
- readonly minLength?: number;
277
- readonly autoComplete?: string;
278
- readonly required?: boolean;
279
- readonly searchable?: boolean;
280
- readonly sortable?: boolean;
281
- readonly filterable?: boolean;
282
- readonly encrypted?: boolean;
283
- readonly sensitive?: boolean;
284
- readonly writeOnly?: boolean;
285
- readonly readAsInstruction?: boolean;
286
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
287
- readonly default?: string;
288
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
289
- readonly multiline?: boolean | {
290
- readonly rows?: number;
291
- };
292
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
52
+ readonly from: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
293
53
  required: true;
294
54
  };
295
- readonly to: {
296
- readonly type: "text";
297
- readonly description?: string;
298
- readonly maxLength?: number;
299
- readonly minLength?: number;
300
- readonly autoComplete?: string;
301
- readonly required?: boolean;
302
- readonly searchable?: boolean;
303
- readonly sortable?: boolean;
304
- readonly filterable?: boolean;
305
- readonly encrypted?: boolean;
306
- readonly sensitive?: boolean;
307
- readonly writeOnly?: boolean;
308
- readonly readAsInstruction?: boolean;
309
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
310
- readonly default?: string;
311
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
312
- readonly multiline?: boolean | {
313
- readonly rows?: number;
314
- };
315
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
55
+ readonly to: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
316
56
  required: false;
317
57
  };
318
- readonly cc: {
319
- readonly type: "text";
320
- readonly description?: string;
321
- readonly maxLength?: number;
322
- readonly minLength?: number;
323
- readonly autoComplete?: string;
324
- readonly required?: boolean;
325
- readonly searchable?: boolean;
326
- readonly sortable?: boolean;
327
- readonly filterable?: boolean;
328
- readonly encrypted?: boolean;
329
- readonly sensitive?: boolean;
330
- readonly writeOnly?: boolean;
331
- readonly readAsInstruction?: boolean;
332
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
333
- readonly default?: string;
334
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
335
- readonly multiline?: boolean | {
336
- readonly rows?: number;
337
- };
338
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
58
+ readonly cc: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
339
59
  required: false;
340
60
  };
341
- readonly subject: {
342
- readonly type: "text";
343
- readonly description?: string;
344
- readonly maxLength?: number;
345
- readonly minLength?: number;
346
- readonly autoComplete?: string;
347
- readonly required?: boolean;
348
- readonly searchable?: boolean;
349
- readonly sortable?: boolean;
350
- readonly filterable?: boolean;
351
- readonly encrypted?: boolean;
352
- readonly sensitive?: boolean;
353
- readonly writeOnly?: boolean;
354
- readonly readAsInstruction?: boolean;
355
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
356
- readonly default?: string;
357
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
358
- readonly multiline?: boolean | {
359
- readonly rows?: number;
360
- };
361
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
61
+ readonly subject: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
362
62
  required: false;
363
63
  };
364
- readonly snippet: {
365
- readonly type: "text";
366
- readonly description?: string;
367
- readonly maxLength?: number;
368
- readonly minLength?: number;
369
- readonly autoComplete?: string;
370
- readonly required?: boolean;
371
- readonly searchable?: boolean;
372
- readonly sortable?: boolean;
373
- readonly filterable?: boolean;
374
- readonly encrypted?: boolean;
375
- readonly sensitive?: boolean;
376
- readonly writeOnly?: boolean;
377
- readonly readAsInstruction?: boolean;
378
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
379
- readonly default?: string;
380
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
381
- readonly multiline?: boolean | {
382
- readonly rows?: number;
383
- };
384
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
64
+ readonly snippet: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
385
65
  required: false;
386
66
  };
387
67
  readonly receivedAt: {
@@ -399,98 +79,18 @@ export declare const inboundMessagesProjectionTable: import("@cosmicdrift/kumiko
399
79
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
400
80
  required: true;
401
81
  };
402
- readonly bodyRef: {
403
- readonly type: "text";
404
- readonly description?: string;
405
- readonly maxLength?: number;
406
- readonly minLength?: number;
407
- readonly autoComplete?: string;
408
- readonly required?: boolean;
409
- readonly searchable?: boolean;
410
- readonly sortable?: boolean;
411
- readonly filterable?: boolean;
412
- readonly encrypted?: boolean;
413
- readonly sensitive?: boolean;
414
- readonly writeOnly?: boolean;
415
- readonly readAsInstruction?: boolean;
416
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
417
- readonly default?: string;
418
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
419
- readonly multiline?: boolean | {
420
- readonly rows?: number;
421
- };
422
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
82
+ readonly bodyRef: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
423
83
  required: false;
424
84
  };
425
- readonly scope: {
426
- readonly type: "text";
427
- readonly description?: string;
428
- readonly maxLength?: number;
429
- readonly minLength?: number;
430
- readonly autoComplete?: string;
431
- readonly required?: boolean;
432
- readonly searchable?: boolean;
433
- readonly sortable?: boolean;
434
- readonly filterable?: boolean;
435
- readonly encrypted?: boolean;
436
- readonly sensitive?: boolean;
437
- readonly writeOnly?: boolean;
438
- readonly readAsInstruction?: boolean;
439
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
440
- readonly default?: string;
441
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
442
- readonly multiline?: boolean | {
443
- readonly rows?: number;
444
- };
445
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
85
+ readonly scope: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
446
86
  required: false;
447
87
  };
448
88
  }, "tenant">>;
449
89
  export declare const mailThreadsProjectionTable: import("@cosmicdrift/kumiko-framework/db").EntityTable<import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
450
- readonly threadKey: {
451
- readonly type: "text";
452
- readonly description?: string;
453
- readonly maxLength?: number;
454
- readonly minLength?: number;
455
- readonly autoComplete?: string;
456
- readonly required?: boolean;
457
- readonly searchable?: boolean;
458
- readonly sortable?: boolean;
459
- readonly filterable?: boolean;
460
- readonly encrypted?: boolean;
461
- readonly sensitive?: boolean;
462
- readonly writeOnly?: boolean;
463
- readonly readAsInstruction?: boolean;
464
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
465
- readonly default?: string;
466
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
467
- readonly multiline?: boolean | {
468
- readonly rows?: number;
469
- };
470
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
90
+ readonly threadKey: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
471
91
  required: true;
472
92
  };
473
- readonly subject: {
474
- readonly type: "text";
475
- readonly description?: string;
476
- readonly maxLength?: number;
477
- readonly minLength?: number;
478
- readonly autoComplete?: string;
479
- readonly required?: boolean;
480
- readonly searchable?: boolean;
481
- readonly sortable?: boolean;
482
- readonly filterable?: boolean;
483
- readonly encrypted?: boolean;
484
- readonly sensitive?: boolean;
485
- readonly writeOnly?: boolean;
486
- readonly readAsInstruction?: boolean;
487
- readonly format?: "email" | "url" | "phone" | "password" | "month" | "iban";
488
- readonly default?: string;
489
- readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
490
- readonly multiline?: boolean | {
491
- readonly rows?: number;
492
- };
493
- } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
93
+ readonly subject: import("@cosmicdrift/kumiko-types/fields").EntityTextFieldDef & {
494
94
  required: false;
495
95
  };
496
96
  readonly lastMessageAt: {
@@ -1,5 +1,7 @@
1
- import { defineFeature, i18nKey, } from "@cosmicdrift/kumiko-framework/engine";
1
+ import { defineFeature } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import { catalogQuery } from "./handlers/catalog.query.js";
3
+ import { consumerDisableWrite, consumerEnableWrite, consumerRestartWrite, consumerSkipWrite, } from "./handlers/consumer.write.js";
4
+ import { consumerDetailQuery, consumersQuery } from "./handlers/consumers.query.js";
3
5
  import { detailQuery } from "./handlers/detail.query.js";
4
6
  import { listQuery } from "./handlers/list.query.js";
5
7
  import { projectionRebuildJob, projectionRebuildPayloadSchema, } from "./handlers/projection-rebuild.job.js";
@@ -11,9 +13,9 @@ import { tenantFailuresQuery } from "./handlers/tenant-failures.query.js";
11
13
  import { tenantRunsQuery } from "./handlers/tenant-runs.query.js";
12
14
  import { triggerWrite } from "./handlers/trigger.write.js";
13
15
  import { jobRunLogsTableMeta, jobRunsTableMeta } from "./job-run-table.js";
16
+ import { eventConsumerDetailScreen, eventConsumersScreen, jobRunDetailScreen, jobRunsScreen, jobTriggerScreen, } from "./screens.js";
14
17
  import { tenantJobFailuresTableMeta } from "./tenant-job-failure-table.js";
15
18
  import { tenantJobRunsTableMeta } from "./tenant-job-run-table.js";
16
- import { JOB_RUN_DETAIL_SCREEN_ID, JOB_RUNS_SCREEN_ID, JobHandlers, JobQueries, } from "./web/constants.js";
17
19
  import { JOBS_I18N } from "./web/i18n.js";
18
20
  export function createJobsFeature(options = {}) {
19
21
  const retentionDays = options.retentionDays ?? DEFAULT_JOB_RUN_RETENTION_DAYS;
@@ -69,6 +71,10 @@ export function createJobsFeature(options = {}) {
69
71
  const handlers = {
70
72
  trigger: r.writeHandler(triggerWrite),
71
73
  retry: r.writeHandler(retryWrite),
74
+ consumerRestart: r.writeHandler(consumerRestartWrite),
75
+ consumerSkip: r.writeHandler(consumerSkipWrite),
76
+ consumerDisable: r.writeHandler(consumerDisableWrite),
77
+ consumerEnable: r.writeHandler(consumerEnableWrite),
72
78
  };
73
79
  const queries = {
74
80
  list: r.queryHandler(listQuery),
@@ -76,123 +82,13 @@ export function createJobsFeature(options = {}) {
76
82
  catalog: r.queryHandler(catalogQuery),
77
83
  failures: r.queryHandler(tenantFailuresQuery),
78
84
  tenantRuns: r.queryHandler(tenantRunsQuery),
85
+ consumers: r.queryHandler(consumersQuery),
86
+ consumerDetails: r.queryHandler(consumerDetailQuery),
79
87
  };
80
- const systemAdminAccess = { roles: ["SystemAdmin"] };
81
88
  r.translations({ keys: JOBS_I18N });
82
- r.screen({
83
- id: JOB_RUNS_SCREEN_ID,
84
- type: "projectionList",
85
- query: JobQueries.list,
86
- columns: [
87
- { field: "jobName", label: i18nKey("jobs.runs.col.job") },
88
- { field: "status", label: i18nKey("jobs.runs.col.status") },
89
- {
90
- field: "startedAt",
91
- label: i18nKey("jobs.runs.col.started"),
92
- renderer: { format: "timestamp" },
93
- },
94
- { field: "duration", label: i18nKey("jobs.runs.col.duration") },
95
- ],
96
- defaultSort: { field: "startedAt", dir: "desc" },
97
- facets: [
98
- {
99
- field: "status",
100
- type: "select",
101
- label: i18nKey("jobs.runs.filter.status"),
102
- options: [
103
- { value: "queued", label: i18nKey("jobs.runs.filter.queued") },
104
- { value: "running", label: i18nKey("jobs.runs.filter.running") },
105
- { value: "completed", label: i18nKey("jobs.runs.filter.completed") },
106
- { value: "failed", label: i18nKey("jobs.runs.filter.failed") },
107
- ],
108
- },
109
- ],
110
- rowActions: [
111
- {
112
- kind: "navigate",
113
- id: "open",
114
- label: i18nKey("jobs.runs.open"),
115
- screen: JOB_RUN_DETAIL_SCREEN_ID,
116
- entityId: "id",
117
- rowClick: true,
118
- },
119
- ],
120
- toolbarActions: [
121
- {
122
- kind: "drawer",
123
- id: "trigger",
124
- label: i18nKey("jobs.trigger.title"),
125
- screen: "job-trigger",
126
- style: "primary",
127
- },
128
- ],
129
- pagination: "infinite",
130
- access: systemAdminAccess,
131
- });
132
- r.screen({
133
- id: "job-trigger",
134
- type: "actionForm",
135
- handler: JobHandlers.trigger,
136
- fields: {
137
- jobName: { type: "text", required: true },
138
- payload: { type: "longText", multiline: true, default: "{}" },
139
- },
140
- layout: { sections: [{ fields: ["jobName", "payload"] }] },
141
- submitLabel: i18nKey("jobs.trigger.submit"),
142
- access: systemAdminAccess,
143
- description: "jobs.screen.job-trigger.subtitle",
144
- });
145
- r.screen({
146
- id: JOB_RUN_DETAIL_SCREEN_ID,
147
- type: "projectionDetail",
148
- query: JobQueries.details,
149
- idParam: "runId",
150
- fieldLabels: {
151
- jobName: i18nKey("jobs.detail.field.job"),
152
- status: i18nKey("jobs.detail.field.status"),
153
- id: i18nKey("jobs.detail.field.id"),
154
- startedAt: i18nKey("jobs.detail.field.started"),
155
- finishedAt: i18nKey("jobs.detail.field.finished"),
156
- duration: i18nKey("jobs.detail.field.duration"),
157
- error: i18nKey("jobs.detail.field.error"),
158
- logs: i18nKey("jobs.detail.logs"),
159
- },
160
- layout: {
161
- sections: [
162
- {
163
- fields: [
164
- "jobName",
165
- "status",
166
- "id",
167
- { field: "startedAt", renderer: { format: "timestamp" } },
168
- { field: "finishedAt", renderer: { format: "timestamp" } },
169
- "duration",
170
- "error",
171
- ],
172
- },
173
- // No section `title` here (fw#2312 label-dedup fix): the section
174
- // holds exactly one field, so a title would repeat the field's own
175
- // label (rendered by RenderField as the Field's heading) verbatim.
176
- {
177
- fields: [{ field: "logs", renderer: { format: "json" } }],
178
- },
179
- ],
180
- },
181
- actions: [
182
- {
183
- kind: "writeHandler",
184
- id: "retry",
185
- label: i18nKey("jobs.detail.retry"),
186
- handler: JobHandlers.retry,
187
- payload: { map: { runId: "id" } },
188
- visible: { field: "status", eq: "failed" },
189
- style: "primary",
190
- },
191
- ],
192
- description: "jobs.screen.job-run-detail.subtitle",
193
- listScreenId: JOB_RUNS_SCREEN_ID,
194
- access: systemAdminAccess,
195
- });
89
+ r.screen(jobRunsScreen);
90
+ r.screen(jobTriggerScreen);
91
+ r.screen(jobRunDetailScreen);
196
92
  r.nav({
197
93
  id: "job-runs",
198
94
  label: "jobs:nav.jobRuns",
@@ -200,6 +96,15 @@ export function createJobsFeature(options = {}) {
200
96
  screen: "jobs:screen:job-runs",
201
97
  order: 10,
202
98
  });
99
+ r.screen(eventConsumersScreen);
100
+ r.screen(eventConsumerDetailScreen);
101
+ r.nav({
102
+ id: "event-consumers",
103
+ label: "jobs:nav.eventConsumers",
104
+ icon: "list",
105
+ screen: "jobs:screen:event-consumers",
106
+ order: 11,
107
+ });
203
108
  return { handlers, queries };
204
109
  });
205
110
  }