@cosmicdrift/kumiko-bundled-features 0.371.0 → 0.372.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 (92) hide show
  1. package/dist/auth-mfa/db/queries.d.ts +3 -2
  2. package/dist/auth-mfa/db/queries.js +2 -5
  3. package/dist/auth-mfa/schema/user-mfa.d.ts +10 -10
  4. package/dist/billing-foundation/entities.d.ts +10 -10
  5. package/dist/billing-foundation/projection.d.ts +10 -10
  6. package/dist/cap-counter/entity.d.ts +4 -4
  7. package/dist/cap-overview/web/cap-cards-panel.js +2 -1
  8. package/dist/compliance-profiles/schema/profile-selection.d.ts +4 -4
  9. package/dist/config/table.d.ts +6 -6
  10. package/dist/config/web/index.d.ts +1 -0
  11. package/dist/config/web/index.js +1 -0
  12. package/dist/crypto-shredding/handlers/forget-subject.write.js +55 -30
  13. package/dist/crypto-shredding/resolve-file-bytes-deleter.d.ts +3 -0
  14. package/dist/crypto-shredding/resolve-file-bytes-deleter.js +24 -0
  15. package/dist/custom-fields/entity.d.ts +9 -7
  16. package/dist/custom-fields/executor.d.ts +19 -1
  17. package/dist/data-retention/index.d.ts +1 -0
  18. package/dist/data-retention/index.js +1 -0
  19. package/dist/data-retention/run-retention-cleanup.js +27 -159
  20. package/dist/data-retention/schema/tenant-retention-override.d.ts +6 -6
  21. package/dist/delivery/delivery-service.d.ts +2 -1
  22. package/dist/delivery/delivery-service.js +3 -2
  23. package/dist/delivery/handlers/unsubscribe-page-chrome.query.js +2 -2
  24. package/dist/delivery/index.d.ts +1 -1
  25. package/dist/delivery/index.js +1 -1
  26. package/dist/delivery/jobs.js +21 -7
  27. package/dist/delivery/recipient-address-seal.d.ts +13 -0
  28. package/dist/delivery/recipient-address-seal.js +53 -0
  29. package/dist/delivery/tables.d.ts +8 -7
  30. package/dist/delivery/testing.d.ts +2 -1
  31. package/dist/delivery/testing.js +1 -0
  32. package/dist/delivery/unsubscribe.d.ts +13 -2
  33. package/dist/delivery/unsubscribe.js +9 -1
  34. package/dist/document-ingest-foundation/entity.d.ts +8 -8
  35. package/dist/document-ingest-foundation/executor.d.ts +16 -1
  36. package/dist/file-foundation/read-file-ref-content.js +2 -2
  37. package/dist/folders/entity.d.ts +8 -8
  38. package/dist/folders/executor.d.ts +29 -2
  39. package/dist/form-draft/entity.d.ts +3 -3
  40. package/dist/form-draft/executor.d.ts +15 -1
  41. package/dist/inbound-mail-foundation/entities.d.ts +31 -31
  42. package/dist/inbound-mail-foundation/projection.d.ts +24 -24
  43. package/dist/jobs/job-run-table.d.ts +10 -10
  44. package/dist/ledger/entity.d.ts +21 -21
  45. package/dist/ledger/executor.d.ts +57 -3
  46. package/dist/managed-pages/table.d.ts +16 -14
  47. package/dist/notes-history/entity.d.ts +14 -14
  48. package/dist/notes-history/executor.d.ts +31 -2
  49. package/dist/personal-access-tokens/schema/api-token.d.ts +9 -9
  50. package/dist/personal-access-tokens/screens.js +14 -9
  51. package/dist/secrets/table.d.ts +2 -2
  52. package/dist/sessions/schema/user-session.d.ts +8 -8
  53. package/dist/shared/index.d.ts +2 -0
  54. package/dist/shared/index.js +2 -0
  55. package/dist/shared/purge-files-reaching-subject.d.ts +25 -0
  56. package/dist/shared/purge-files-reaching-subject.js +146 -0
  57. package/dist/shared/purge-row-file-refs.d.ts +33 -0
  58. package/dist/shared/purge-row-file-refs.js +152 -0
  59. package/dist/tags/entity.d.ts +9 -9
  60. package/dist/tags/executor.d.ts +30 -2
  61. package/dist/template-resolver/handlers/shared.d.ts +28 -1
  62. package/dist/template-resolver/table.d.ts +32 -32
  63. package/dist/template-resolver/template-preview.js +13 -4
  64. package/dist/template-resolver/user-content-table.d.ts +16 -16
  65. package/dist/template-resolver/web/client-plugin.js +2 -1
  66. package/dist/template-resolver/web/document-editor-extensions.d.ts +1 -1
  67. package/dist/template-resolver/web/document-editor-extensions.js +2 -5
  68. package/dist/template-resolver/web/placeholder-line-editor.js +2 -2
  69. package/dist/tenant/handlers/list.query.d.ts +21 -1
  70. package/dist/tenant/invitation-table.d.ts +14 -14
  71. package/dist/tenant/membership-table.d.ts +4 -4
  72. package/dist/tenant/schema/tenant.d.ts +20 -18
  73. package/dist/tier-engine/entity.d.ts +2 -2
  74. package/dist/tier-engine/tier-resolver.d.ts +2 -2
  75. package/dist/user/handlers/me.query.d.ts +21 -0
  76. package/dist/user/schema/user.d.ts +24 -22
  77. package/dist/user-data-rights/run-export-jobs.d.ts +20 -1
  78. package/dist/user-data-rights/run-forget-cleanup.js +35 -1
  79. package/dist/user-data-rights/schema/download-attempt.d.ts +16 -16
  80. package/dist/user-data-rights/schema/download-token.d.ts +16 -16
  81. package/dist/user-data-rights/schema/export-job.d.ts +20 -20
  82. package/dist/user-data-rights/web/privacy-center-screen.js +2 -1
  83. package/dist/waitlist/entity.d.ts +24 -24
  84. package/dist/waitlist/lib.d.ts +24 -1
  85. package/package.json +11 -11
  86. package/src/crypto-shredding/changes.json +6 -0
  87. package/src/data-retention/changes.json +6 -0
  88. package/src/delivery/changes.json +13 -0
  89. package/src/files/changes.json +7 -0
  90. package/src/personal-access-tokens/changes.json +12 -0
  91. package/src/template-resolver/changes.json +6 -0
  92. package/src/user-data-rights/changes.json +6 -0
@@ -1,6 +1,6 @@
1
1
  import type { EntityAuditColumns } from "./table.ts";
2
2
  export declare const userContentEntryEntity: import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
3
- ownerId: {
3
+ readonly ownerId: {
4
4
  readonly type: "text";
5
5
  readonly description?: string;
6
6
  readonly maxLength?: number;
@@ -23,7 +23,7 @@ export declare const userContentEntryEntity: import("@cosmicdrift/kumiko-types/f
23
23
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
24
24
  required: true;
25
25
  };
26
- slug: {
26
+ readonly slug: {
27
27
  readonly type: "text";
28
28
  readonly description?: string;
29
29
  readonly maxLength?: number;
@@ -46,7 +46,7 @@ export declare const userContentEntryEntity: import("@cosmicdrift/kumiko-types/f
46
46
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
47
47
  required: true;
48
48
  };
49
- kind: {
49
+ readonly kind: {
50
50
  readonly type: "select";
51
51
  readonly description?: string;
52
52
  readonly options: readonly ["mail", "document-pdf", "image-snapshot", "notification", "text-block", "snippet", "ai-prompt", "mail-layout", "pdf-layout"];
@@ -75,7 +75,7 @@ export declare const userContentEntryEntity: import("@cosmicdrift/kumiko-types/f
75
75
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
76
76
  required: true;
77
77
  };
78
- locale: {
78
+ readonly locale: {
79
79
  readonly type: "text";
80
80
  readonly description?: string;
81
81
  readonly maxLength?: number;
@@ -98,7 +98,7 @@ export declare const userContentEntryEntity: import("@cosmicdrift/kumiko-types/f
98
98
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
99
99
  required: true;
100
100
  };
101
- title: {
101
+ readonly title: {
102
102
  readonly type: "text";
103
103
  readonly description?: string;
104
104
  readonly maxLength?: number;
@@ -121,7 +121,7 @@ export declare const userContentEntryEntity: import("@cosmicdrift/kumiko-types/f
121
121
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
122
122
  required: false;
123
123
  };
124
- folder: {
124
+ readonly folder: {
125
125
  readonly type: "text";
126
126
  readonly description?: string;
127
127
  readonly maxLength?: number;
@@ -144,7 +144,7 @@ export declare const userContentEntryEntity: import("@cosmicdrift/kumiko-types/f
144
144
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
145
145
  required: false;
146
146
  };
147
- content: {
147
+ readonly content: {
148
148
  readonly type: "longText";
149
149
  readonly description?: string;
150
150
  readonly maxLength?: number;
@@ -160,7 +160,7 @@ export declare const userContentEntryEntity: import("@cosmicdrift/kumiko-types/f
160
160
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
161
161
  required: false;
162
162
  };
163
- contentFormat: {
163
+ readonly contentFormat: {
164
164
  readonly type: "select";
165
165
  readonly description?: string;
166
166
  readonly options: readonly ["markdown", "mjml", "html", "plain"];
@@ -186,7 +186,7 @@ export declare const userContentEntryEntity: import("@cosmicdrift/kumiko-types/f
186
186
  };
187
187
  }, "tenant">;
188
188
  export declare const userContentEntriesTable: import("@cosmicdrift/kumiko-framework/db").EntityTable<import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
189
- ownerId: {
189
+ readonly ownerId: {
190
190
  readonly type: "text";
191
191
  readonly description?: string;
192
192
  readonly maxLength?: number;
@@ -209,7 +209,7 @@ export declare const userContentEntriesTable: import("@cosmicdrift/kumiko-framew
209
209
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
210
210
  required: true;
211
211
  };
212
- slug: {
212
+ readonly slug: {
213
213
  readonly type: "text";
214
214
  readonly description?: string;
215
215
  readonly maxLength?: number;
@@ -232,7 +232,7 @@ export declare const userContentEntriesTable: import("@cosmicdrift/kumiko-framew
232
232
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
233
233
  required: true;
234
234
  };
235
- kind: {
235
+ readonly kind: {
236
236
  readonly type: "select";
237
237
  readonly description?: string;
238
238
  readonly options: readonly ["mail", "document-pdf", "image-snapshot", "notification", "text-block", "snippet", "ai-prompt", "mail-layout", "pdf-layout"];
@@ -261,7 +261,7 @@ export declare const userContentEntriesTable: import("@cosmicdrift/kumiko-framew
261
261
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
262
262
  required: true;
263
263
  };
264
- locale: {
264
+ readonly locale: {
265
265
  readonly type: "text";
266
266
  readonly description?: string;
267
267
  readonly maxLength?: number;
@@ -284,7 +284,7 @@ export declare const userContentEntriesTable: import("@cosmicdrift/kumiko-framew
284
284
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
285
285
  required: true;
286
286
  };
287
- title: {
287
+ readonly title: {
288
288
  readonly type: "text";
289
289
  readonly description?: string;
290
290
  readonly maxLength?: number;
@@ -307,7 +307,7 @@ export declare const userContentEntriesTable: import("@cosmicdrift/kumiko-framew
307
307
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
308
308
  required: false;
309
309
  };
310
- folder: {
310
+ readonly folder: {
311
311
  readonly type: "text";
312
312
  readonly description?: string;
313
313
  readonly maxLength?: number;
@@ -330,7 +330,7 @@ export declare const userContentEntriesTable: import("@cosmicdrift/kumiko-framew
330
330
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
331
331
  required: false;
332
332
  };
333
- content: {
333
+ readonly content: {
334
334
  readonly type: "longText";
335
335
  readonly description?: string;
336
336
  readonly maxLength?: number;
@@ -346,7 +346,7 @@ export declare const userContentEntriesTable: import("@cosmicdrift/kumiko-framew
346
346
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
347
347
  required: false;
348
348
  };
349
- contentFormat: {
349
+ readonly contentFormat: {
350
350
  readonly type: "select";
351
351
  readonly description?: string;
352
352
  readonly options: readonly ["markdown", "mjml", "html", "plain"];
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { EMPTY_VALUE_PLACEHOLDER } from "@cosmicdrift/kumiko-headless";
2
3
  // @runtime client
3
4
  // Client feature factory for the text-block content tree. Apps mount it via
4
5
  // createKumikoApp({ clientFeatures: [textBlocksClient()] }); it loads the
@@ -270,7 +271,7 @@ function TextBlockEditor({ target, }) {
270
271
  void handleSave();
271
272
  };
272
273
  const disabled = submitting || loading || !canWrite;
273
- return (_jsxs(Form, { onSubmit: onSubmit, testId: "text-block-editor", title: title || slug || "—", subtitle: locale !== "" ? `${slug} · (${locale})` : slug, actions: canWrite ? (_jsx(Button, { type: "submit", loading: submitting, disabled: disabled, children: submitting ? t("template-resolver.editor.saving") : t("template-resolver.editor.save") })) : undefined, children: [loading && _jsx(Banner, { variant: "loading", children: t("template-resolver.editor.loading") }), loadError !== null && (_jsxs(Banner, { variant: "error", children: [t("template-resolver.editor.loadFailed"), ": ", loadError.code] })), !canWrite && !loading && (_jsx(Banner, { variant: "info", children: t("template-resolver.editor.readOnly") })), _jsx(Field, { id: "text-block-title", label: t("template-resolver.editor.titleLabel"), required: true, children: _jsx(Input, { kind: "text", id: "text-block-title", name: "text-block-title", value: title, onChange: setTitle, disabled: disabled, required: true }) }), _jsx(Field, { id: contentEditorId, label: t("template-resolver.editor.contentLabel"), labelAppendix: _jsx(Button, { type: "button", variant: "secondary", size: "sm", onClick: () => setPreviewing((p) => !p), children: previewing ? t("kumiko.contentEditor.editMode") : t("kumiko.contentEditor.preview") }), children: previewing ? (_jsx(ContentPreview, { content: content, variables: variableExamples, contentFormat: contentFormat })) : (_jsx(DocumentBlocksContext.Provider, { value: documentBlocks, children: _jsx(ContentEditor, { id: contentEditorId, value: content, onChange: setContent, variables: variables, readOnly: disabled }) })) }), saveError !== null && _jsx(Banner, { variant: "error", children: saveError }), savedMsg !== null && _jsx(Banner, { variant: "info", children: savedMsg })] }));
274
+ return (_jsxs(Form, { onSubmit: onSubmit, testId: "text-block-editor", title: title || slug || EMPTY_VALUE_PLACEHOLDER, subtitle: locale !== "" ? `${slug} · (${locale})` : slug, actions: canWrite ? (_jsx(Button, { type: "submit", loading: submitting, disabled: disabled, children: submitting ? t("template-resolver.editor.saving") : t("template-resolver.editor.save") })) : undefined, children: [loading && _jsx(Banner, { variant: "loading", children: t("template-resolver.editor.loading") }), loadError !== null && (_jsxs(Banner, { variant: "error", children: [t("template-resolver.editor.loadFailed"), ": ", loadError.code] })), !canWrite && !loading && (_jsx(Banner, { variant: "info", children: t("template-resolver.editor.readOnly") })), _jsx(Field, { id: "text-block-title", label: t("template-resolver.editor.titleLabel"), required: true, children: _jsx(Input, { kind: "text", id: "text-block-title", name: "text-block-title", value: title, onChange: setTitle, disabled: disabled, required: true }) }), _jsx(Field, { id: contentEditorId, label: t("template-resolver.editor.contentLabel"), labelAppendix: _jsx(Button, { type: "button", variant: "secondary", size: "sm", onClick: () => setPreviewing((p) => !p), children: previewing ? t("kumiko.contentEditor.editMode") : t("kumiko.contentEditor.preview") }), children: previewing ? (_jsx(ContentPreview, { content: content, variables: variableExamples, contentFormat: contentFormat })) : (_jsx(DocumentBlocksContext.Provider, { value: documentBlocks, children: _jsx(ContentEditor, { id: contentEditorId, value: content, onChange: setContent, variables: variables, readOnly: disabled }) })) }), saveError !== null && _jsx(Banner, { variant: "error", children: saveError }), savedMsg !== null && _jsx(Banner, { variant: "info", children: savedMsg })] }));
274
275
  }
275
276
  // `navId` = the QN of the r.nav({ provider: true }) node the app registers for
276
277
  // the content tree (e.g. "publicstatus:nav:content"). The app owns the node's
@@ -15,5 +15,5 @@ export type DocumentEditorLabels = {
15
15
  /** Canvas chrome labels every block with its type. */
16
16
  readonly blockLabels?: boolean;
17
17
  };
18
- export declare function createVariableView(variableLabels: Readonly<Record<string, string>>, systemVariables: readonly string[], labelOnly?: boolean): NodeViewRenderer;
18
+ export declare function createVariableView(variableLabels: Readonly<Record<string, string>>, systemVariables: readonly string[]): NodeViewRenderer;
19
19
  export declare function createDocumentEditorExtensions(labels: DocumentEditorLabels): Extensions;
@@ -28,7 +28,7 @@ function repeatRowListAt(doc, position) {
28
28
  }
29
29
  // The chip is display only: the stored node carries just the name, so a
30
30
  // label never reaches the document.
31
- export function createVariableView(variableLabels, systemVariables, labelOnly = false) {
31
+ export function createVariableView(variableLabels, systemVariables) {
32
32
  return ({ node, editor, getPos }) => {
33
33
  const name = String(node.attrs["name"]);
34
34
  const listName = repeatRowListAt(editor.state.doc, getPos());
@@ -41,9 +41,6 @@ export function createVariableView(variableLabels, systemVariables, labelOnly =
41
41
  dom.append(document.createTextNode(hasOwnLabel ? label : name));
42
42
  if (hasOwnLabel)
43
43
  dom.title = name;
44
- if (!labelOnly && hasOwnLabel) {
45
- dom.append(createElementWithClass("small", "font-mono text-[10px] opacity-75", name));
46
- }
47
44
  return { dom };
48
45
  };
49
46
  }
@@ -144,7 +141,7 @@ export function createDocumentEditorExtensions(labels) {
144
141
  switch (extension.name) {
145
142
  case DocumentVariable.name:
146
143
  return DocumentVariable.extend({
147
- addNodeView: () => createVariableView(labels.variableLabels ?? {}, labels.systemVariables ?? [], labels.blockLabels === true),
144
+ addNodeView: () => createVariableView(labels.variableLabels ?? {}, labels.systemVariables ?? []),
148
145
  });
149
146
  case DocumentResource.name:
150
147
  return DocumentResource.extend({ addNodeView: () => createResourceView(labels) });
@@ -51,12 +51,12 @@ function LineEditorBody({ id, initialValue, onChange, variableLabels, systemVari
51
51
  undoRedo: false,
52
52
  }),
53
53
  DocumentVariable.extend({
54
- addNodeView: () => createVariableView(variableLabels, systemVariables, flat),
54
+ addNodeView: () => createVariableView(variableLabels, systemVariables),
55
55
  }),
56
56
  UndoRedo,
57
57
  BlockLineBreaks,
58
58
  ...(placeholder === undefined ? [] : [Placeholder.configure({ placeholder })]),
59
- ], [variableLabels, systemVariables, flat, placeholder]);
59
+ ], [variableLabels, systemVariables, placeholder]);
60
60
  const editor = useEditor({
61
61
  extensions,
62
62
  content: {
@@ -4,4 +4,24 @@ export declare const listQuery: import("@cosmicdrift/kumiko-types/define-handler
4
4
  limit: z.ZodOptional<z.ZodNumber>;
5
5
  search: z.ZodOptional<z.ZodString>;
6
6
  totalCount: z.ZodOptional<z.ZodBoolean>;
7
- }, z.core.$strip>, import("@cosmicdrift/kumiko-types/cursor-types").CursorResult<Record<string, unknown>>, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
7
+ }, z.core.$strip>, import("@cosmicdrift/kumiko-types/cursor-types").CursorResult<{
8
+ readonly id: string;
9
+ readonly tenantId: string;
10
+ readonly version: number;
11
+ readonly insertedAt: Temporal.Instant;
12
+ readonly modifiedAt: Temporal.Instant | null;
13
+ readonly insertedById: string | null;
14
+ readonly modifiedById: string | null;
15
+ readonly isDeleted?: boolean | undefined;
16
+ readonly deletedAt?: Temporal.Instant | null | undefined;
17
+ readonly deletedById?: string | null | undefined;
18
+ readonly destroyRequestedAt: Temporal.Instant | null;
19
+ readonly destroyRequestedBy: string | null;
20
+ readonly destroyStartedAt: Temporal.Instant | null;
21
+ readonly destroyedAt: Temporal.Instant | null;
22
+ readonly gracePeriodEnd: Temporal.Instant | null;
23
+ readonly isEnabled: boolean;
24
+ readonly key: string;
25
+ readonly name: string;
26
+ readonly status: string;
27
+ }>, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
@@ -7,7 +7,7 @@ export declare const INVITATION_STATUS: {
7
7
  export type InvitationStatus = (typeof INVITATION_STATUS)[keyof typeof INVITATION_STATUS];
8
8
  export declare const INVITATION_STATUSES: readonly ["pending", "accepted", "cancelled", "expired"];
9
9
  export declare const tenantInvitationEntity: import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
10
- email: {
10
+ readonly email: {
11
11
  readonly type: "text";
12
12
  readonly description?: string;
13
13
  readonly maxLength?: number;
@@ -30,7 +30,7 @@ export declare const tenantInvitationEntity: import("@cosmicdrift/kumiko-types/f
30
30
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
31
31
  required: true;
32
32
  };
33
- role: {
33
+ readonly role: {
34
34
  readonly type: "text";
35
35
  readonly description?: string;
36
36
  readonly maxLength?: number;
@@ -53,8 +53,8 @@ export declare const tenantInvitationEntity: import("@cosmicdrift/kumiko-types/f
53
53
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
54
54
  required: true;
55
55
  };
56
- globalRoles: import("@cosmicdrift/kumiko-types/fields").MultiSelectFieldDef<readonly ["SystemAdmin"]>;
57
- status: {
56
+ readonly globalRoles: import("@cosmicdrift/kumiko-types/fields").MultiSelectFieldDef<readonly ["SystemAdmin"]>;
57
+ readonly status: {
58
58
  readonly type: "select";
59
59
  readonly description?: string;
60
60
  readonly options: readonly ["pending", "accepted", "cancelled", "expired"];
@@ -78,7 +78,7 @@ export declare const tenantInvitationEntity: import("@cosmicdrift/kumiko-types/f
78
78
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
79
79
  required: true;
80
80
  };
81
- invitedBy: {
81
+ readonly invitedBy: {
82
82
  readonly type: "text";
83
83
  readonly description?: string;
84
84
  readonly maxLength?: number;
@@ -101,7 +101,7 @@ export declare const tenantInvitationEntity: import("@cosmicdrift/kumiko-types/f
101
101
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
102
102
  required: true;
103
103
  };
104
- membershipVersion: {
104
+ readonly membershipVersion: {
105
105
  readonly type: "number";
106
106
  readonly description?: string;
107
107
  readonly required?: boolean;
@@ -120,7 +120,7 @@ export declare const tenantInvitationEntity: import("@cosmicdrift/kumiko-types/f
120
120
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
121
121
  required: false;
122
122
  };
123
- expiresAt: {
123
+ readonly expiresAt: {
124
124
  readonly type: "timestamp";
125
125
  readonly description?: string;
126
126
  readonly required?: boolean;
@@ -137,7 +137,7 @@ export declare const tenantInvitationEntity: import("@cosmicdrift/kumiko-types/f
137
137
  };
138
138
  }, "tenant">;
139
139
  export declare const tenantInvitationsTable: import("@cosmicdrift/kumiko-framework/db").EntityTable<import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
140
- email: {
140
+ readonly email: {
141
141
  readonly type: "text";
142
142
  readonly description?: string;
143
143
  readonly maxLength?: number;
@@ -160,7 +160,7 @@ export declare const tenantInvitationsTable: import("@cosmicdrift/kumiko-framewo
160
160
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
161
161
  required: true;
162
162
  };
163
- role: {
163
+ readonly role: {
164
164
  readonly type: "text";
165
165
  readonly description?: string;
166
166
  readonly maxLength?: number;
@@ -183,8 +183,8 @@ export declare const tenantInvitationsTable: import("@cosmicdrift/kumiko-framewo
183
183
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
184
184
  required: true;
185
185
  };
186
- globalRoles: import("@cosmicdrift/kumiko-types/fields").MultiSelectFieldDef<readonly ["SystemAdmin"]>;
187
- status: {
186
+ readonly globalRoles: import("@cosmicdrift/kumiko-types/fields").MultiSelectFieldDef<readonly ["SystemAdmin"]>;
187
+ readonly status: {
188
188
  readonly type: "select";
189
189
  readonly description?: string;
190
190
  readonly options: readonly ["pending", "accepted", "cancelled", "expired"];
@@ -208,7 +208,7 @@ export declare const tenantInvitationsTable: import("@cosmicdrift/kumiko-framewo
208
208
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
209
209
  required: true;
210
210
  };
211
- invitedBy: {
211
+ readonly invitedBy: {
212
212
  readonly type: "text";
213
213
  readonly description?: string;
214
214
  readonly maxLength?: number;
@@ -231,7 +231,7 @@ export declare const tenantInvitationsTable: import("@cosmicdrift/kumiko-framewo
231
231
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
232
232
  required: true;
233
233
  };
234
- membershipVersion: {
234
+ readonly membershipVersion: {
235
235
  readonly type: "number";
236
236
  readonly description?: string;
237
237
  readonly required?: boolean;
@@ -250,7 +250,7 @@ export declare const tenantInvitationsTable: import("@cosmicdrift/kumiko-framewo
250
250
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
251
251
  required: false;
252
252
  };
253
- expiresAt: {
253
+ readonly expiresAt: {
254
254
  readonly type: "timestamp";
255
255
  readonly description?: string;
256
256
  readonly required?: boolean;
@@ -1,5 +1,5 @@
1
1
  export declare const tenantMembershipEntity: import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
2
- userId: {
2
+ readonly userId: {
3
3
  readonly type: "text";
4
4
  readonly description?: string;
5
5
  readonly maxLength?: number;
@@ -22,7 +22,7 @@ export declare const tenantMembershipEntity: import("@cosmicdrift/kumiko-types/f
22
22
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
23
23
  required: true;
24
24
  };
25
- roles: {
25
+ readonly roles: {
26
26
  readonly type: "text";
27
27
  readonly description?: string;
28
28
  readonly maxLength?: number;
@@ -47,7 +47,7 @@ export declare const tenantMembershipEntity: import("@cosmicdrift/kumiko-types/f
47
47
  };
48
48
  }, "tenant">;
49
49
  export declare const tenantMembershipsTable: import("@cosmicdrift/kumiko-framework/db").EntityTable<import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
50
- userId: {
50
+ readonly userId: {
51
51
  readonly type: "text";
52
52
  readonly description?: string;
53
53
  readonly maxLength?: number;
@@ -70,7 +70,7 @@ export declare const tenantMembershipsTable: import("@cosmicdrift/kumiko-framewo
70
70
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
71
71
  required: true;
72
72
  };
73
- roles: {
73
+ readonly roles: {
74
74
  readonly type: "text";
75
75
  readonly description?: string;
76
76
  readonly maxLength?: number;
@@ -1,7 +1,7 @@
1
1
  export declare const TENANT_LIFECYCLE_STATUSES: readonly ["active", "destroyRequested", "destroying", "destroyFailed", "destroyed"];
2
2
  export type TenantLifecycleStatus = (typeof TENANT_LIFECYCLE_STATUSES)[number];
3
3
  export declare const tenantEntity: import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
4
- key: {
4
+ readonly key: {
5
5
  readonly type: "text";
6
6
  readonly description?: string;
7
7
  readonly maxLength?: number;
@@ -24,7 +24,7 @@ export declare const tenantEntity: import("@cosmicdrift/kumiko-types/fields").En
24
24
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
25
25
  required: true;
26
26
  };
27
- name: {
27
+ readonly name: {
28
28
  readonly type: "text";
29
29
  readonly description?: string;
30
30
  readonly maxLength?: number;
@@ -47,10 +47,11 @@ export declare const tenantEntity: import("@cosmicdrift/kumiko-types/fields").En
47
47
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
48
48
  required: true;
49
49
  };
50
- isEnabled: import("@cosmicdrift/kumiko-types/fields").BooleanFieldDef & {
50
+ readonly isEnabled: import("@cosmicdrift/kumiko-types/fields").BooleanFieldDef & {
51
51
  required: false;
52
+ default: boolean;
52
53
  };
53
- status: {
54
+ readonly status: {
54
55
  readonly type: "select";
55
56
  readonly description?: string;
56
57
  readonly options: readonly ["active", "destroyRequested", "destroying", "destroyFailed", "destroyed"];
@@ -75,7 +76,7 @@ export declare const tenantEntity: import("@cosmicdrift/kumiko-types/fields").En
75
76
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
76
77
  required: true;
77
78
  };
78
- destroyRequestedAt: {
79
+ readonly destroyRequestedAt: {
79
80
  readonly type: "timestamp";
80
81
  readonly description?: string;
81
82
  readonly required?: boolean;
@@ -90,7 +91,7 @@ export declare const tenantEntity: import("@cosmicdrift/kumiko-types/fields").En
90
91
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
91
92
  required: false;
92
93
  };
93
- destroyRequestedBy: {
94
+ readonly destroyRequestedBy: {
94
95
  readonly type: "text";
95
96
  readonly description?: string;
96
97
  readonly maxLength?: number;
@@ -113,7 +114,7 @@ export declare const tenantEntity: import("@cosmicdrift/kumiko-types/fields").En
113
114
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
114
115
  required: false;
115
116
  };
116
- gracePeriodEnd: {
117
+ readonly gracePeriodEnd: {
117
118
  readonly type: "timestamp";
118
119
  readonly description?: string;
119
120
  readonly required?: boolean;
@@ -128,7 +129,7 @@ export declare const tenantEntity: import("@cosmicdrift/kumiko-types/fields").En
128
129
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
129
130
  required: false;
130
131
  };
131
- destroyStartedAt: {
132
+ readonly destroyStartedAt: {
132
133
  readonly type: "timestamp";
133
134
  readonly description?: string;
134
135
  readonly required?: boolean;
@@ -143,7 +144,7 @@ export declare const tenantEntity: import("@cosmicdrift/kumiko-types/fields").En
143
144
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
144
145
  required: false;
145
146
  };
146
- destroyedAt: {
147
+ readonly destroyedAt: {
147
148
  readonly type: "timestamp";
148
149
  readonly description?: string;
149
150
  readonly required?: boolean;
@@ -160,7 +161,7 @@ export declare const tenantEntity: import("@cosmicdrift/kumiko-types/fields").En
160
161
  };
161
162
  }, "tenant">;
162
163
  export declare const tenantTable: import("@cosmicdrift/kumiko-framework/db").EntityTable<import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
163
- key: {
164
+ readonly key: {
164
165
  readonly type: "text";
165
166
  readonly description?: string;
166
167
  readonly maxLength?: number;
@@ -183,7 +184,7 @@ export declare const tenantTable: import("@cosmicdrift/kumiko-framework/db").Ent
183
184
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
184
185
  required: true;
185
186
  };
186
- name: {
187
+ readonly name: {
187
188
  readonly type: "text";
188
189
  readonly description?: string;
189
190
  readonly maxLength?: number;
@@ -206,10 +207,11 @@ export declare const tenantTable: import("@cosmicdrift/kumiko-framework/db").Ent
206
207
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
207
208
  required: true;
208
209
  };
209
- isEnabled: import("@cosmicdrift/kumiko-types/fields").BooleanFieldDef & {
210
+ readonly isEnabled: import("@cosmicdrift/kumiko-types/fields").BooleanFieldDef & {
210
211
  required: false;
212
+ default: boolean;
211
213
  };
212
- status: {
214
+ readonly status: {
213
215
  readonly type: "select";
214
216
  readonly description?: string;
215
217
  readonly options: readonly ["active", "destroyRequested", "destroying", "destroyFailed", "destroyed"];
@@ -234,7 +236,7 @@ export declare const tenantTable: import("@cosmicdrift/kumiko-framework/db").Ent
234
236
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
235
237
  required: true;
236
238
  };
237
- destroyRequestedAt: {
239
+ readonly destroyRequestedAt: {
238
240
  readonly type: "timestamp";
239
241
  readonly description?: string;
240
242
  readonly required?: boolean;
@@ -249,7 +251,7 @@ export declare const tenantTable: import("@cosmicdrift/kumiko-framework/db").Ent
249
251
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
250
252
  required: false;
251
253
  };
252
- destroyRequestedBy: {
254
+ readonly destroyRequestedBy: {
253
255
  readonly type: "text";
254
256
  readonly description?: string;
255
257
  readonly maxLength?: number;
@@ -272,7 +274,7 @@ export declare const tenantTable: import("@cosmicdrift/kumiko-framework/db").Ent
272
274
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
273
275
  required: false;
274
276
  };
275
- gracePeriodEnd: {
277
+ readonly gracePeriodEnd: {
276
278
  readonly type: "timestamp";
277
279
  readonly description?: string;
278
280
  readonly required?: boolean;
@@ -287,7 +289,7 @@ export declare const tenantTable: import("@cosmicdrift/kumiko-framework/db").Ent
287
289
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
288
290
  required: false;
289
291
  };
290
- destroyStartedAt: {
292
+ readonly destroyStartedAt: {
291
293
  readonly type: "timestamp";
292
294
  readonly description?: string;
293
295
  readonly required?: boolean;
@@ -302,7 +304,7 @@ export declare const tenantTable: import("@cosmicdrift/kumiko-framework/db").Ent
302
304
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
303
305
  required: false;
304
306
  };
305
- destroyedAt: {
307
+ readonly destroyedAt: {
306
308
  readonly type: "timestamp";
307
309
  readonly description?: string;
308
310
  readonly required?: boolean;
@@ -1,6 +1,6 @@
1
1
  import { type TierAssignmentSource } from "./constants.ts";
2
2
  export declare const tierAssignmentEntity: import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
3
- tier: {
3
+ readonly tier: {
4
4
  readonly type: "text";
5
5
  readonly description?: string;
6
6
  readonly maxLength?: number;
@@ -23,7 +23,7 @@ export declare const tierAssignmentEntity: import("@cosmicdrift/kumiko-types/fie
23
23
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
24
24
  required: true;
25
25
  };
26
- source: {
26
+ readonly source: {
27
27
  readonly type: "select";
28
28
  readonly description?: string;
29
29
  readonly options: ("billing" | "default" | "manual")[];
@@ -7,7 +7,7 @@ export type TierResolverDeps<TTier extends string, TCaps> = {
7
7
  };
8
8
  export declare function createTierResolver<TTier extends string, TCaps>(deps: TierResolverDeps<TTier, TCaps>): {
9
9
  tierAssignmentTable: import("@cosmicdrift/kumiko-framework/db").EntityTable<import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
10
- tier: {
10
+ readonly tier: {
11
11
  readonly type: "text";
12
12
  readonly description?: string;
13
13
  readonly maxLength?: number;
@@ -30,7 +30,7 @@ export declare function createTierResolver<TTier extends string, TCaps>(deps: Ti
30
30
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
31
31
  required: true;
32
32
  };
33
- source: {
33
+ readonly source: {
34
34
  readonly type: "select";
35
35
  readonly description?: string;
36
36
  readonly options: ("billing" | "default" | "manual")[];
@@ -1,4 +1,25 @@
1
1
  import * as z from "zod";
2
2
  export declare const meQuery: import("@cosmicdrift/kumiko-types/define-handler").QueryHandlerDefinition<"user:me", z.ZodObject<{}, z.core.$strip>, {
3
+ id: string;
4
+ tenantId: string;
5
+ version: number;
6
+ insertedAt: Temporal.Instant;
7
+ modifiedAt: Temporal.Instant | null;
8
+ insertedById: string | null;
9
+ modifiedById: string | null;
10
+ isDeleted?: boolean | undefined;
11
+ deletedAt?: Temporal.Instant | null | undefined;
12
+ deletedById?: string | null | undefined;
3
13
  effectiveTimeZone: string;
14
+ displayName: string;
15
+ email: string;
16
+ emailVerified: boolean;
17
+ gracePeriodEnd: Temporal.Instant | null;
18
+ lastActiveTenantId: string | null;
19
+ locale: string | null;
20
+ passwordHash: string | null;
21
+ pendingDeletionRequestId: string | null;
22
+ roles: readonly string[];
23
+ status: string;
24
+ timezone: string | null;
4
25
  } | null, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;