@ai-matrx/sharing 0.0.0 → 0.1.1

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.
@@ -0,0 +1,4737 @@
1
+ import * as _supabase_supabase_js from '@supabase/supabase-js';
2
+ import { SupabaseClient } from '@supabase/supabase-js';
3
+ import { DbPermissionLevel, PermissionLevel } from '@ai-matrx/data/access';
4
+ export { DB_PERMISSION_LEVELS, DbPermissionLevel, PERMISSION_LEVELS, PERMISSION_LEVEL_HINTS, PERMISSION_LEVEL_LABELS, PERMISSION_LEVEL_SHORT_LABELS, PermissionLevel, isDbPermissionLevel, isPermissionLevel, normalizePermissionLevel, parsePermissionLevel, toDbPermissionLevel } from '@ai-matrx/data/access';
5
+ import { EntityTypeToken } from '@ai-matrx/associations';
6
+ import * as _ai_matrx_api_account from '@ai-matrx/api/account';
7
+ import { components } from '@ai-matrx/api/types';
8
+ export { extractErrorMessage } from '@ai-matrx/api/net';
9
+
10
+ type ShareDbClient = SupabaseClient<any, any, any>;
11
+ /** One aidream call — the shape the web's `callApi` takes. */
12
+ interface ShareServerCall {
13
+ path: string;
14
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
15
+ queryParams?: Record<string, string | number | boolean>;
16
+ pathParams?: Record<string, string>;
17
+ body?: unknown;
18
+ expectedErrorStatuses?: number[];
19
+ /** aidream declares the route organization-free: send no organization header. */
20
+ organizationFreeRead?: boolean;
21
+ }
22
+ /** The answer of one aidream call (the web's `ApiCallResult` shape). */
23
+ interface ShareServerResult {
24
+ data?: unknown;
25
+ error?: {
26
+ message?: string;
27
+ status?: number;
28
+ detail?: unknown;
29
+ code?: string;
30
+ [k: string]: unknown;
31
+ } | null;
32
+ status?: number;
33
+ [k: string]: unknown;
34
+ }
35
+ interface SharingHost {
36
+ /** REQUIRED. The signed-in supabase-js client (RLS applies). */
37
+ client: () => ShareDbClient;
38
+ /** The signed-in person (a token-only client has no `auth` namespace). Default: `client().auth.getUser()`. */
39
+ getUser?: () => Promise<{
40
+ id: string;
41
+ email?: string | null;
42
+ } | null>;
43
+ /** aidream calls. Absent → every server call answers a loud "not wired" error. */
44
+ callServer?: (call: ShareServerCall) => Promise<ShareServerResult>;
45
+ /** The organization the person is working in (a write target only, never a filter). */
46
+ getActiveOrgId?: () => string | null;
47
+ /** Resolve an organization to write into (the web asks the person when none is picked). */
48
+ ensureOrgId?: (organizationId?: string | null) => Promise<string>;
49
+ /** The entity registry's route for a token+id (`resolveEntityDoors(...).href`). */
50
+ resolveEntityHref?: (token: string, id: string) => string | null | undefined;
51
+ /** True when the entity registry knows the token (a known token with no href = no route). */
52
+ isKnownEntity?: (token: string) => boolean;
53
+ /** The site origin links are built on (default `window.location.origin`). */
54
+ appUrl?: () => string;
55
+ /** The search-engine-indexed switch (web: a server action that also refreshes its cache). */
56
+ searchEngineIndexed?: {
57
+ get: (resourceType: string, resourceId: string) => Promise<{
58
+ state: unknown;
59
+ error: string | null;
60
+ }>;
61
+ set: (resourceType: string, resourceId: string, indexed: boolean | null) => Promise<{
62
+ state: unknown;
63
+ error: string | null;
64
+ }>;
65
+ };
66
+ }
67
+ /** Merge host fields over any earlier call (boot-time; tests may call it again). */
68
+ declare function configureSharing(next: Partial<SharingHost>): void;
69
+ declare function sharingHost(): Partial<SharingHost>;
70
+ /** The supabase-js client. Throws when the host never supplied one. */
71
+ declare function shareClient(): ShareDbClient;
72
+ /** web parity: `createClient()` / the `supabase` singleton. */
73
+ declare const createClient: () => ShareDbClient;
74
+ declare const supabase: ShareDbClient;
75
+ declare function getClaimsUser(client: ShareDbClient): Promise<_supabase_supabase_js.UserResponse>;
76
+ declare function getActiveOrgId(): string | null;
77
+ declare function ensureOrgId(organizationId?: string | null): Promise<string>;
78
+ declare function appUrl(): string;
79
+ declare function resolveEntityHref(token: string, id: string): string | null;
80
+ declare function isKnownEntity(token: string): boolean;
81
+ /** web parity: `callApi(...)` — answers a promise of the call's result. */
82
+ declare function callApi(call: ShareServerCall): Promise<ShareServerResult>;
83
+ type ApiCallResult = ShareServerResult;
84
+ /** web parity: `dispatch(callApi(...))` — a dispatch that just hands the promise back. */
85
+ type AppDispatch = <T>(action: T) => T;
86
+ declare const passThroughDispatch: AppDispatch;
87
+
88
+ declare function isJsonObject(value: unknown): value is Record<string, unknown>;
89
+ /** The share sheet's two notices, on aidream (`/sharing/notify`, `/sharing/email-link`). */
90
+ interface ShareNoticeAnswer {
91
+ success: boolean;
92
+ msg?: string;
93
+ error?: string;
94
+ }
95
+ declare function sendShareNotice(path: "/sharing/notify" | "/sharing/email-link", body: Record<string, unknown>): Promise<ShareNoticeAnswer>;
96
+
97
+ /**
98
+ * Shareable Resource Registry — TypeScript mirror
99
+ *
100
+ * Single source of truth lives in the Postgres
101
+ * `platform.shareable_resource_registry` table. This file mirrors the same data
102
+ * so the FE doesn't have to fetch the registry on every page load. The TS↔DB
103
+ * mirror is verified at test time by
104
+ * `utils/permissions/__tests__/registry.parity.test.ts` — if a row is added to
105
+ * the DB and not here (or vice versa) the test fails.
106
+ *
107
+ * REGENERATE (do not hand-edit rows): after any registry migration run
108
+ * `pnpm tsx scripts/regen-shareable-registry-snapshot.ts`
109
+ * to refresh the DB snapshot, then update the rows below to match it.
110
+ *
111
+ * ── Token vs. table (post-2026-canonicalization) ─────────────────────────────
112
+ * Two distinct canonical values live on every row; DO NOT conflate them:
113
+ * • `resourceType` — the ENTITY TOKEN. This is the object key, the value
114
+ * stored in `iam.permissions.resource_type`, and the `p_resource_type`
115
+ * passed to every share RPC. Reference resources by this, never by table.
116
+ * • `tableName` (+ `schemaName`) — the PHYSICAL table (schema.table) for
117
+ * direct supabase-js `.from()` reads. Equals the DB registry `table_name`.
118
+ * They coincided before the reorg (public tables named after their token) and
119
+ * diverge now (token `note` → `workbench.notes`, token `file` → `files.files`).
120
+ * For permission/RPC/`iam.permissions` work use `resourceType`; for a direct
121
+ * table read use `.schema(schemaName).from(tableName)`.
122
+ */
123
+ interface ShareableResourceEntry {
124
+ /**
125
+ * The entity TOKEN — public alias used in TS / RPC arguments / UI props and
126
+ * stored in `iam.permissions.resource_type`. This is what you pass to the
127
+ * share RPCs; it is NOT the physical table name.
128
+ */
129
+ resourceType: string;
130
+ /**
131
+ * The PHYSICAL Postgres table name (within `schemaName`), mirroring the DB
132
+ * registry `table_name`. Used for direct `.from()` reads. NOT the permissions
133
+ * key — reference resources by `resourceType`. Multiple tokens may share a
134
+ * physical name across schemas (e.g. `definition` in agent/app/skill/workflow).
135
+ */
136
+ tableName: string;
137
+ /** Primary-key column on the resource table. Almost always 'id'. */
138
+ idColumn: string;
139
+ /** Column holding the owner's auth.uid(). Canonical tables use 'created_by'. */
140
+ ownerColumn: string;
141
+ /**
142
+ * Column holding the public-visibility boolean, when the table has one.
143
+ * Null means only “no legacy boolean is declared”; canonical enum tables and
144
+ * types with no public-state column both use null. Call
145
+ * `getShareCapabilities()` to resolve the verified physical state column.
146
+ */
147
+ isPublicColumn: string | null;
148
+ /** Human-readable label used in the share modal title and emails. */
149
+ displayLabel: string;
150
+ /**
151
+ * Optional signed-in destination pattern. `{id}` is substituted with the
152
+ * resource id. No-login share links use the generic `/s/[token]` route.
153
+ */
154
+ urlPathTemplate: string;
155
+ /**
156
+ * When false, the table's RLS does NOT call has_permission()/has_access().
157
+ * A permission grant inserts but does not actually grant the grantee access.
158
+ * Surfaces broken end-to-end states explicitly.
159
+ */
160
+ rlsUsesHasPermission: boolean;
161
+ /**
162
+ * Non-`public` Postgres schema the resource table lives in. supabase-js
163
+ * reaches it via `.schema(schemaName)`. Omitted ⇒ `public`. FE-only — not
164
+ * part of the DB-registry parity comparison.
165
+ */
166
+ schemaName?: string | undefined;
167
+ }
168
+ /**
169
+ * The canonical client-side mirror of platform.shareable_resource_registry.
170
+ * Verified against the DB by the parity test. Regenerate rows from the DB — do
171
+ * not hand-tune individual fields.
172
+ */
173
+ declare const SHAREABLE_RESOURCE_REGISTRY: {
174
+ /**
175
+ * The unified record store (lane W3-HIST added the DB row 2026-09-18; this
176
+ * mirror followed on 2026-09-19 with lane SHARE, which is what made the one
177
+ * share dialog reach a record at all — until then `getShareableResource`
178
+ * answered undefined and the dialog rendered its "not a registered shareable
179
+ * resource" refusal).
180
+ *
181
+ * A TABLE IS A RECORD HERE: `custom.record` holds both, so one token covers
182
+ * the record screen and the table screen. `rlsUsesHasPermission` is false on
183
+ * purpose — schema `custom` is read through its own doors (W4-DOOR), never
184
+ * through the generic has_permission arm. `urlPathTemplate` stays empty: a
185
+ * record's page is /data/{tableId} plus the record, which this one-id
186
+ * template cannot express, and an honest "no link" beats a broken one.
187
+ */
188
+ readonly record: {
189
+ readonly resourceType: "record";
190
+ readonly tableName: "record";
191
+ readonly schemaName: "custom";
192
+ readonly idColumn: "id";
193
+ readonly ownerColumn: "created_by";
194
+ readonly isPublicColumn: null;
195
+ readonly displayLabel: "Record";
196
+ readonly urlPathTemplate: "";
197
+ readonly rlsUsesHasPermission: false;
198
+ };
199
+ readonly browser_profile: {
200
+ readonly resourceType: "browser_profile";
201
+ readonly tableName: "profile";
202
+ readonly schemaName: "browser";
203
+ readonly idColumn: "id";
204
+ readonly ownerColumn: "created_by";
205
+ readonly isPublicColumn: null;
206
+ readonly displayLabel: "Cloud Browser Profile";
207
+ readonly urlPathTemplate: "";
208
+ readonly rlsUsesHasPermission: true;
209
+ };
210
+ readonly agent_run: {
211
+ readonly resourceType: "agent_run";
212
+ readonly tableName: "agent_run";
213
+ readonly schemaName: "chat";
214
+ readonly idColumn: "id";
215
+ readonly ownerColumn: "created_by";
216
+ readonly isPublicColumn: null;
217
+ readonly displayLabel: "Agent Run";
218
+ readonly urlPathTemplate: "";
219
+ readonly rlsUsesHasPermission: true;
220
+ };
221
+ readonly comparison_set: {
222
+ readonly resourceType: "comparison_set";
223
+ readonly tableName: "cmp_comparison_sets";
224
+ readonly schemaName: "agent";
225
+ readonly idColumn: "id";
226
+ readonly ownerColumn: "created_by";
227
+ readonly isPublicColumn: null;
228
+ readonly displayLabel: "Comparison Set";
229
+ readonly urlPathTemplate: "/agents/compare?set={id}";
230
+ readonly rlsUsesHasPermission: true;
231
+ };
232
+ readonly crm_sending_identity: {
233
+ readonly resourceType: "crm_sending_identity";
234
+ readonly tableName: "sending_identity";
235
+ readonly schemaName: "crm";
236
+ readonly idColumn: "id";
237
+ readonly ownerColumn: "created_by";
238
+ readonly isPublicColumn: null;
239
+ readonly displayLabel: "Sending mailbox";
240
+ readonly urlPathTemplate: "/crm/sending-identities/{id}";
241
+ readonly rlsUsesHasPermission: true;
242
+ };
243
+ readonly global_request: {
244
+ readonly resourceType: "global_request";
245
+ readonly tableName: "global_request";
246
+ readonly schemaName: "runtime";
247
+ readonly idColumn: "id";
248
+ readonly ownerColumn: "created_by";
249
+ readonly isPublicColumn: null;
250
+ readonly displayLabel: "Runtime Request";
251
+ readonly urlPathTemplate: "";
252
+ readonly rlsUsesHasPermission: true;
253
+ };
254
+ readonly hindsight_enrollment: {
255
+ readonly resourceType: "hindsight_enrollment";
256
+ readonly tableName: "enrollment";
257
+ readonly schemaName: "hindsight";
258
+ readonly idColumn: "id";
259
+ readonly ownerColumn: "created_by";
260
+ readonly isPublicColumn: null;
261
+ readonly displayLabel: "Hindsight Enrollment";
262
+ readonly urlPathTemplate: "/administration/agents/hindsight?enrollment={id}";
263
+ readonly rlsUsesHasPermission: true;
264
+ };
265
+ readonly plan_node: {
266
+ readonly resourceType: "plan_node";
267
+ readonly tableName: "node";
268
+ readonly schemaName: "plan";
269
+ readonly idColumn: "id";
270
+ readonly ownerColumn: "created_by";
271
+ readonly isPublicColumn: null;
272
+ readonly displayLabel: "Plan Page";
273
+ readonly urlPathTemplate: "/marketing/content-plan/nodes/{id}";
274
+ readonly rlsUsesHasPermission: true;
275
+ };
276
+ readonly sch_task: {
277
+ readonly resourceType: "sch_task";
278
+ readonly tableName: "sch_task";
279
+ readonly schemaName: "scheduler";
280
+ readonly idColumn: "id";
281
+ readonly ownerColumn: "created_by";
282
+ readonly isPublicColumn: null;
283
+ readonly displayLabel: "Scheduled Task";
284
+ readonly urlPathTemplate: "/administration/automation/scheduling/tasks?task={id}";
285
+ readonly rlsUsesHasPermission: true;
286
+ };
287
+ readonly seo_rank_target: {
288
+ readonly resourceType: "seo_rank_target";
289
+ readonly tableName: "rank_target";
290
+ readonly schemaName: "seo";
291
+ readonly idColumn: "id";
292
+ readonly ownerColumn: "created_by";
293
+ readonly isPublicColumn: null;
294
+ readonly displayLabel: "SEO Rank Target";
295
+ readonly urlPathTemplate: "/marketing/ranks?target={id}";
296
+ readonly rlsUsesHasPermission: true;
297
+ };
298
+ readonly sms_conversation: {
299
+ readonly resourceType: "sms_conversation";
300
+ readonly tableName: "sms_conversations";
301
+ readonly schemaName: "communication";
302
+ readonly idColumn: "id";
303
+ readonly ownerColumn: "created_by";
304
+ readonly isPublicColumn: null;
305
+ readonly displayLabel: "SMS Conversation";
306
+ readonly urlPathTemplate: "/sms?conversation={id}";
307
+ readonly rlsUsesHasPermission: true;
308
+ };
309
+ readonly agent: {
310
+ readonly resourceType: "agent";
311
+ readonly tableName: "definition";
312
+ readonly schemaName: "agent";
313
+ readonly idColumn: "id";
314
+ readonly ownerColumn: "created_by";
315
+ readonly isPublicColumn: null;
316
+ readonly displayLabel: "Agent";
317
+ readonly urlPathTemplate: "/agents/{id}";
318
+ readonly rlsUsesHasPermission: true;
319
+ };
320
+ readonly agent_card: {
321
+ readonly resourceType: "agent_card";
322
+ readonly tableName: "card";
323
+ readonly schemaName: "agent";
324
+ readonly idColumn: "id";
325
+ readonly ownerColumn: "created_by";
326
+ readonly isPublicColumn: null;
327
+ readonly displayLabel: "Agent Card";
328
+ readonly urlPathTemplate: "";
329
+ readonly rlsUsesHasPermission: true;
330
+ };
331
+ readonly app: {
332
+ readonly resourceType: "app";
333
+ readonly tableName: "definition";
334
+ readonly schemaName: "app";
335
+ readonly idColumn: "id";
336
+ readonly ownerColumn: "created_by";
337
+ readonly isPublicColumn: null;
338
+ readonly displayLabel: "Applet";
339
+ readonly urlPathTemplate: "/applets/manage/{id}";
340
+ readonly rlsUsesHasPermission: true;
341
+ };
342
+ readonly assessment: {
343
+ readonly resourceType: "assessment";
344
+ readonly tableName: "assessment";
345
+ readonly schemaName: "education";
346
+ readonly idColumn: "id";
347
+ readonly ownerColumn: "created_by";
348
+ readonly isPublicColumn: null;
349
+ readonly displayLabel: "Assessment";
350
+ readonly urlPathTemplate: "/education/quizzes/{id}";
351
+ readonly rlsUsesHasPermission: true;
352
+ };
353
+ readonly canvas_item: {
354
+ readonly resourceType: "canvas_item";
355
+ readonly tableName: "canvas_items";
356
+ readonly schemaName: "canvas";
357
+ readonly idColumn: "id";
358
+ readonly ownerColumn: "created_by";
359
+ readonly isPublicColumn: null;
360
+ readonly displayLabel: "Canvas Item";
361
+ readonly urlPathTemplate: "";
362
+ readonly rlsUsesHasPermission: true;
363
+ };
364
+ readonly context_item: {
365
+ readonly resourceType: "context_item";
366
+ readonly tableName: "context_items";
367
+ readonly schemaName: "context";
368
+ readonly idColumn: "id";
369
+ readonly ownerColumn: "created_by";
370
+ readonly isPublicColumn: null;
371
+ readonly displayLabel: "Context Item";
372
+ readonly urlPathTemplate: "/context-items?item={id}";
373
+ readonly rlsUsesHasPermission: false;
374
+ };
375
+ readonly code_file: {
376
+ readonly resourceType: "code_file";
377
+ readonly tableName: "code_files";
378
+ readonly schemaName: "code";
379
+ readonly idColumn: "id";
380
+ readonly ownerColumn: "created_by";
381
+ readonly isPublicColumn: null;
382
+ readonly displayLabel: "Code File";
383
+ readonly urlPathTemplate: "/code?open={id}";
384
+ readonly rlsUsesHasPermission: true;
385
+ };
386
+ readonly code_folder: {
387
+ readonly resourceType: "code_folder";
388
+ readonly tableName: "code_file_folders";
389
+ readonly schemaName: "code";
390
+ readonly idColumn: "id";
391
+ readonly ownerColumn: "created_by";
392
+ readonly isPublicColumn: null;
393
+ readonly displayLabel: "Code Folder";
394
+ readonly urlPathTemplate: "/code?folder={id}";
395
+ readonly rlsUsesHasPermission: true;
396
+ };
397
+ readonly code_repository: {
398
+ readonly resourceType: "code_repository";
399
+ readonly tableName: "code_repositories";
400
+ readonly schemaName: "code";
401
+ readonly idColumn: "id";
402
+ readonly ownerColumn: "created_by";
403
+ readonly isPublicColumn: null;
404
+ readonly displayLabel: "Code Repository";
405
+ readonly urlPathTemplate: "/knowledge/repositories?repo={id}";
406
+ readonly rlsUsesHasPermission: true;
407
+ };
408
+ readonly message_template: {
409
+ readonly resourceType: "message_template";
410
+ readonly tableName: "message_template";
411
+ readonly schemaName: "agent";
412
+ readonly idColumn: "id";
413
+ readonly ownerColumn: "created_by";
414
+ readonly isPublicColumn: null;
415
+ readonly displayLabel: "Message Template";
416
+ readonly urlPathTemplate: "/chat/message-templates/{id}";
417
+ readonly rlsUsesHasPermission: true;
418
+ };
419
+ readonly marketing_initiative: {
420
+ readonly resourceType: "marketing_initiative";
421
+ readonly tableName: "initiative";
422
+ readonly schemaName: "marketing";
423
+ readonly idColumn: "id";
424
+ readonly ownerColumn: "created_by";
425
+ readonly isPublicColumn: null;
426
+ readonly displayLabel: "Initiative";
427
+ readonly urlPathTemplate: "/marketing/initiatives/{id}";
428
+ readonly rlsUsesHasPermission: true;
429
+ };
430
+ readonly conversation: {
431
+ readonly resourceType: "conversation";
432
+ readonly tableName: "conversation";
433
+ readonly schemaName: "chat";
434
+ readonly idColumn: "id";
435
+ readonly ownerColumn: "created_by";
436
+ readonly isPublicColumn: null;
437
+ readonly displayLabel: "Conversation";
438
+ readonly urlPathTemplate: "/chat/{id}";
439
+ readonly rlsUsesHasPermission: true;
440
+ };
441
+ readonly data_store: {
442
+ readonly resourceType: "data_store";
443
+ readonly tableName: "data_stores";
444
+ readonly schemaName: "rag";
445
+ readonly idColumn: "id";
446
+ readonly ownerColumn: "created_by";
447
+ readonly isPublicColumn: null;
448
+ readonly displayLabel: "Data Store";
449
+ readonly urlPathTemplate: "/knowledge/data-stores?store_id={id}";
450
+ readonly rlsUsesHasPermission: false;
451
+ };
452
+ readonly dm_conversation: {
453
+ readonly resourceType: "dm_conversation";
454
+ readonly tableName: "dm_conversations";
455
+ readonly schemaName: "communication";
456
+ readonly idColumn: "id";
457
+ readonly ownerColumn: "created_by";
458
+ readonly isPublicColumn: null;
459
+ readonly displayLabel: "Direct Conversation";
460
+ readonly urlPathTemplate: "/messages/{id}";
461
+ readonly rlsUsesHasPermission: true;
462
+ };
463
+ readonly fc_card: {
464
+ readonly resourceType: "fc_card";
465
+ readonly tableName: "fc_card";
466
+ readonly schemaName: "education";
467
+ readonly idColumn: "id";
468
+ readonly ownerColumn: "created_by";
469
+ readonly isPublicColumn: null;
470
+ readonly displayLabel: "Flashcard";
471
+ readonly urlPathTemplate: "";
472
+ readonly rlsUsesHasPermission: true;
473
+ };
474
+ readonly fc_set: {
475
+ readonly resourceType: "fc_set";
476
+ readonly tableName: "fc_set";
477
+ readonly schemaName: "education";
478
+ readonly idColumn: "id";
479
+ readonly ownerColumn: "created_by";
480
+ readonly isPublicColumn: null;
481
+ readonly displayLabel: "Flashcard Deck";
482
+ readonly urlPathTemplate: "/education/flashcards/{id}";
483
+ readonly rlsUsesHasPermission: true;
484
+ };
485
+ readonly feature_doc: {
486
+ readonly resourceType: "feature_doc";
487
+ readonly tableName: "feature_docs";
488
+ readonly schemaName: "admin";
489
+ readonly idColumn: "id";
490
+ readonly ownerColumn: "created_by";
491
+ readonly isPublicColumn: null;
492
+ readonly displayLabel: "Feature Doc";
493
+ readonly urlPathTemplate: "";
494
+ readonly rlsUsesHasPermission: true;
495
+ };
496
+ readonly file: {
497
+ readonly resourceType: "file";
498
+ readonly tableName: "files";
499
+ readonly schemaName: "files";
500
+ readonly idColumn: "id";
501
+ readonly ownerColumn: "created_by";
502
+ readonly isPublicColumn: null;
503
+ readonly displayLabel: "File";
504
+ readonly urlPathTemplate: "/files/f/{id}";
505
+ readonly rlsUsesHasPermission: true;
506
+ };
507
+ readonly file_analysis: {
508
+ readonly resourceType: "file_analysis";
509
+ readonly tableName: "analysis";
510
+ readonly schemaName: "files";
511
+ readonly idColumn: "file_id";
512
+ readonly ownerColumn: "owner_id";
513
+ readonly isPublicColumn: null;
514
+ readonly displayLabel: "File Analysis";
515
+ readonly urlPathTemplate: "/files/{id}";
516
+ readonly rlsUsesHasPermission: false;
517
+ };
518
+ readonly file_entities: {
519
+ readonly resourceType: "file_entities";
520
+ readonly tableName: "entities";
521
+ readonly schemaName: "files";
522
+ readonly idColumn: "id";
523
+ readonly ownerColumn: "owner_id";
524
+ readonly isPublicColumn: null;
525
+ readonly displayLabel: "File Entity";
526
+ readonly urlPathTemplate: "/files/{id}";
527
+ readonly rlsUsesHasPermission: false;
528
+ };
529
+ readonly file_overrides: {
530
+ readonly resourceType: "file_overrides";
531
+ readonly tableName: "overrides";
532
+ readonly schemaName: "files";
533
+ readonly idColumn: "id";
534
+ readonly ownerColumn: "owner_id";
535
+ readonly isPublicColumn: null;
536
+ readonly displayLabel: "File Override";
537
+ readonly urlPathTemplate: "/files/{id}";
538
+ readonly rlsUsesHasPermission: false;
539
+ };
540
+ readonly file_page_annotations: {
541
+ readonly resourceType: "file_page_annotations";
542
+ readonly tableName: "page_annotations";
543
+ readonly schemaName: "files";
544
+ readonly idColumn: "id";
545
+ readonly ownerColumn: "owner_id";
546
+ readonly isPublicColumn: null;
547
+ readonly displayLabel: "Page Annotation";
548
+ readonly urlPathTemplate: "/files/{id}";
549
+ readonly rlsUsesHasPermission: false;
550
+ };
551
+ readonly file_pages: {
552
+ readonly resourceType: "file_pages";
553
+ readonly tableName: "pages";
554
+ readonly schemaName: "files";
555
+ readonly idColumn: "id";
556
+ readonly ownerColumn: "owner_id";
557
+ readonly isPublicColumn: null;
558
+ readonly displayLabel: "File Page";
559
+ readonly urlPathTemplate: "/files/{id}";
560
+ readonly rlsUsesHasPermission: false;
561
+ };
562
+ readonly folder: {
563
+ readonly resourceType: "folder";
564
+ readonly tableName: "folders";
565
+ readonly schemaName: "files";
566
+ readonly idColumn: "id";
567
+ readonly ownerColumn: "created_by";
568
+ readonly isPublicColumn: null;
569
+ readonly displayLabel: "Folder";
570
+ readonly urlPathTemplate: "/files/folder/{id}";
571
+ readonly rlsUsesHasPermission: true;
572
+ };
573
+ readonly learn_doc: {
574
+ readonly resourceType: "learn_doc";
575
+ readonly tableName: "learn_doc";
576
+ readonly schemaName: "education";
577
+ readonly idColumn: "id";
578
+ readonly ownerColumn: "created_by";
579
+ readonly isPublicColumn: null;
580
+ readonly displayLabel: "Study Guide";
581
+ readonly urlPathTemplate: "/education/learn/{slug}";
582
+ readonly rlsUsesHasPermission: true;
583
+ };
584
+ readonly note: {
585
+ readonly resourceType: "note";
586
+ readonly tableName: "notes";
587
+ readonly schemaName: "workbench";
588
+ readonly idColumn: "id";
589
+ readonly ownerColumn: "created_by";
590
+ readonly isPublicColumn: null;
591
+ readonly displayLabel: "Note";
592
+ readonly urlPathTemplate: "/notes/{id}";
593
+ readonly rlsUsesHasPermission: true;
594
+ };
595
+ readonly pdf_redaction_audit: {
596
+ readonly resourceType: "pdf_redaction_audit";
597
+ readonly tableName: "pdf_redaction_audits";
598
+ readonly schemaName: "pdf";
599
+ readonly idColumn: "id";
600
+ readonly ownerColumn: "created_by";
601
+ readonly isPublicColumn: null;
602
+ readonly displayLabel: "Redaction Audit";
603
+ readonly urlPathTemplate: "/files/{id}";
604
+ readonly rlsUsesHasPermission: false;
605
+ };
606
+ readonly project: {
607
+ readonly resourceType: "project";
608
+ readonly tableName: "projects";
609
+ readonly schemaName: "projects";
610
+ readonly idColumn: "id";
611
+ readonly ownerColumn: "created_by";
612
+ readonly isPublicColumn: null;
613
+ readonly displayLabel: "Project";
614
+ readonly urlPathTemplate: "/projects/{id}";
615
+ readonly rlsUsesHasPermission: true;
616
+ };
617
+ readonly quiz_session: {
618
+ readonly resourceType: "quiz_session";
619
+ readonly tableName: "quiz_sessions";
620
+ readonly schemaName: "education";
621
+ readonly idColumn: "id";
622
+ readonly ownerColumn: "created_by";
623
+ readonly isPublicColumn: null;
624
+ readonly displayLabel: "Quiz session";
625
+ readonly urlPathTemplate: "";
626
+ readonly rlsUsesHasPermission: true;
627
+ };
628
+ readonly research_template: {
629
+ readonly resourceType: "research_template";
630
+ readonly tableName: "rs_template";
631
+ readonly schemaName: "research";
632
+ readonly idColumn: "id";
633
+ readonly ownerColumn: "created_by";
634
+ readonly isPublicColumn: null;
635
+ readonly displayLabel: "Research Template";
636
+ readonly urlPathTemplate: "";
637
+ readonly rlsUsesHasPermission: true;
638
+ };
639
+ readonly research_topic: {
640
+ readonly resourceType: "research_topic";
641
+ readonly tableName: "rs_topic";
642
+ readonly schemaName: "research";
643
+ readonly idColumn: "id";
644
+ readonly ownerColumn: "created_by";
645
+ readonly isPublicColumn: null;
646
+ readonly displayLabel: "Research Topic";
647
+ readonly urlPathTemplate: "/research/topics/{id}";
648
+ readonly rlsUsesHasPermission: true;
649
+ };
650
+ readonly sandbox_instance: {
651
+ readonly resourceType: "sandbox_instance";
652
+ readonly tableName: "sandbox_instances";
653
+ readonly idColumn: "id";
654
+ readonly ownerColumn: "user_id";
655
+ readonly isPublicColumn: null;
656
+ readonly displayLabel: "Sandbox";
657
+ readonly urlPathTemplate: "/sandbox/{id}";
658
+ readonly rlsUsesHasPermission: true;
659
+ };
660
+ readonly shared_canvas_item: {
661
+ readonly resourceType: "shared_canvas_item";
662
+ readonly tableName: "shared_canvas_items";
663
+ readonly schemaName: "canvas";
664
+ readonly idColumn: "id";
665
+ readonly ownerColumn: "created_by";
666
+ readonly isPublicColumn: null;
667
+ readonly displayLabel: "Shared Canvas";
668
+ readonly urlPathTemplate: "/canvas/shared/{id}";
669
+ readonly rlsUsesHasPermission: true;
670
+ };
671
+ readonly skill: {
672
+ readonly resourceType: "skill";
673
+ readonly tableName: "definition";
674
+ readonly schemaName: "skill";
675
+ readonly idColumn: "id";
676
+ readonly ownerColumn: "created_by";
677
+ readonly isPublicColumn: null;
678
+ readonly displayLabel: "Skill";
679
+ readonly urlPathTemplate: "";
680
+ readonly rlsUsesHasPermission: true;
681
+ };
682
+ readonly studio_session: {
683
+ readonly resourceType: "studio_session";
684
+ readonly tableName: "studio_sessions";
685
+ readonly schemaName: "transcripts";
686
+ readonly idColumn: "id";
687
+ readonly ownerColumn: "created_by";
688
+ readonly isPublicColumn: null;
689
+ readonly displayLabel: "Transcript Studio session";
690
+ readonly urlPathTemplate: "/transcripts/studio?session={id}";
691
+ readonly rlsUsesHasPermission: true;
692
+ };
693
+ readonly study_media: {
694
+ readonly resourceType: "study_media";
695
+ readonly tableName: "study_media";
696
+ readonly schemaName: "education";
697
+ readonly idColumn: "id";
698
+ readonly ownerColumn: "created_by";
699
+ readonly isPublicColumn: null;
700
+ readonly displayLabel: "Study Media";
701
+ readonly urlPathTemplate: "/education/media/{id}";
702
+ readonly rlsUsesHasPermission: true;
703
+ };
704
+ readonly task: {
705
+ readonly resourceType: "task";
706
+ readonly tableName: "tasks";
707
+ readonly schemaName: "projects";
708
+ readonly idColumn: "id";
709
+ readonly ownerColumn: "created_by";
710
+ readonly isPublicColumn: null;
711
+ readonly displayLabel: "Task";
712
+ readonly urlPathTemplate: "/tasks/{id}";
713
+ readonly rlsUsesHasPermission: true;
714
+ };
715
+ readonly thread: {
716
+ readonly resourceType: "thread";
717
+ readonly tableName: "threads";
718
+ readonly schemaName: "projects";
719
+ readonly idColumn: "id";
720
+ readonly ownerColumn: "created_by";
721
+ readonly isPublicColumn: null;
722
+ readonly displayLabel: "Thread";
723
+ readonly urlPathTemplate: "/war-room/all";
724
+ readonly rlsUsesHasPermission: true;
725
+ };
726
+ readonly transcript: {
727
+ readonly resourceType: "transcript";
728
+ readonly tableName: "transcripts";
729
+ readonly schemaName: "transcripts";
730
+ readonly idColumn: "id";
731
+ readonly ownerColumn: "created_by";
732
+ readonly isPublicColumn: null;
733
+ readonly displayLabel: "Transcript";
734
+ readonly urlPathTemplate: "/transcripts/processor?focus={id}";
735
+ readonly rlsUsesHasPermission: true;
736
+ };
737
+ readonly udt_document: {
738
+ readonly resourceType: "udt_document";
739
+ readonly tableName: "udt_documents";
740
+ readonly schemaName: "workbench";
741
+ readonly idColumn: "id";
742
+ readonly ownerColumn: "created_by";
743
+ readonly isPublicColumn: null;
744
+ readonly displayLabel: "Cloud document";
745
+ readonly urlPathTemplate: "/documents/{id}";
746
+ readonly rlsUsesHasPermission: true;
747
+ };
748
+ readonly presentation: {
749
+ readonly resourceType: "presentation";
750
+ readonly tableName: "presentation";
751
+ readonly schemaName: "workbench";
752
+ readonly idColumn: "id";
753
+ readonly ownerColumn: "created_by";
754
+ readonly isPublicColumn: null;
755
+ readonly displayLabel: "Presentation";
756
+ readonly urlPathTemplate: "/presentations/{id}";
757
+ readonly rlsUsesHasPermission: true;
758
+ };
759
+ readonly scope: {
760
+ readonly resourceType: "scope";
761
+ readonly tableName: "scopes";
762
+ readonly schemaName: "context";
763
+ readonly idColumn: "id";
764
+ readonly ownerColumn: "created_by";
765
+ readonly isPublicColumn: null;
766
+ readonly displayLabel: "Scope";
767
+ readonly urlPathTemplate: "/scopes/s/{id}";
768
+ readonly rlsUsesHasPermission: false;
769
+ };
770
+ readonly workbook: {
771
+ readonly resourceType: "workbook";
772
+ readonly tableName: "udt_workbooks";
773
+ readonly schemaName: "workbench";
774
+ readonly idColumn: "id";
775
+ readonly ownerColumn: "created_by";
776
+ readonly isPublicColumn: null;
777
+ readonly displayLabel: "Workbook";
778
+ readonly urlPathTemplate: "/workbooks/{id}";
779
+ readonly rlsUsesHasPermission: true;
780
+ };
781
+ readonly user_analysis_preference: {
782
+ readonly resourceType: "user_analysis_preference";
783
+ readonly tableName: "user_analysis_preferences";
784
+ readonly schemaName: "users";
785
+ readonly idColumn: "user_id";
786
+ readonly ownerColumn: "user_id";
787
+ readonly isPublicColumn: null;
788
+ readonly displayLabel: "Analysis Preferences";
789
+ readonly urlPathTemplate: "";
790
+ readonly rlsUsesHasPermission: false;
791
+ };
792
+ readonly web_site: {
793
+ readonly resourceType: "web_site";
794
+ readonly tableName: "site";
795
+ readonly schemaName: "web";
796
+ readonly idColumn: "id";
797
+ readonly ownerColumn: "created_by";
798
+ readonly isPublicColumn: null;
799
+ readonly displayLabel: "Site";
800
+ readonly urlPathTemplate: "/marketing/sites/{id}";
801
+ readonly rlsUsesHasPermission: true;
802
+ };
803
+ readonly web_page: {
804
+ readonly resourceType: "web_page";
805
+ readonly tableName: "page";
806
+ readonly schemaName: "web";
807
+ readonly idColumn: "id";
808
+ readonly ownerColumn: "created_by";
809
+ readonly isPublicColumn: null;
810
+ readonly displayLabel: "Site page";
811
+ readonly urlPathTemplate: "/marketing/pages/{id}";
812
+ readonly rlsUsesHasPermission: true;
813
+ };
814
+ readonly web_property: {
815
+ readonly resourceType: "web_property";
816
+ readonly tableName: "property";
817
+ readonly schemaName: "web";
818
+ readonly idColumn: "id";
819
+ readonly ownerColumn: "created_by";
820
+ readonly isPublicColumn: null;
821
+ readonly displayLabel: "Marketing Property";
822
+ readonly urlPathTemplate: "/marketing/properties/{id}";
823
+ readonly rlsUsesHasPermission: true;
824
+ };
825
+ readonly web_screenshot: {
826
+ readonly resourceType: "web_screenshot";
827
+ readonly tableName: "screenshot";
828
+ readonly schemaName: "web";
829
+ readonly idColumn: "id";
830
+ readonly ownerColumn: "created_by";
831
+ readonly isPublicColumn: null;
832
+ readonly displayLabel: "Web Screenshot";
833
+ readonly urlPathTemplate: "/marketing/screenshots/{id}";
834
+ readonly rlsUsesHasPermission: true;
835
+ };
836
+ readonly web_snapshot: {
837
+ readonly resourceType: "web_snapshot";
838
+ readonly tableName: "snapshot";
839
+ readonly schemaName: "web";
840
+ readonly idColumn: "id";
841
+ readonly ownerColumn: "created_by";
842
+ readonly isPublicColumn: null;
843
+ readonly displayLabel: "Web Snapshot";
844
+ readonly urlPathTemplate: "/marketing/snapshots/{id}";
845
+ readonly rlsUsesHasPermission: true;
846
+ };
847
+ readonly war_room: {
848
+ readonly resourceType: "war_room";
849
+ readonly tableName: "war_rooms";
850
+ readonly schemaName: "projects";
851
+ readonly idColumn: "id";
852
+ readonly ownerColumn: "created_by";
853
+ readonly isPublicColumn: null;
854
+ readonly displayLabel: "War Room";
855
+ readonly urlPathTemplate: "/war-room/{id}";
856
+ readonly rlsUsesHasPermission: true;
857
+ };
858
+ readonly wc_claim: {
859
+ readonly resourceType: "wc_claim";
860
+ readonly tableName: "wc_claim";
861
+ readonly schemaName: "legal";
862
+ readonly idColumn: "id";
863
+ readonly ownerColumn: "created_by";
864
+ readonly isPublicColumn: null;
865
+ readonly displayLabel: "WC Claim";
866
+ readonly urlPathTemplate: "/legal/ca-wc/pd-ratings-calculator/{id}";
867
+ readonly rlsUsesHasPermission: true;
868
+ };
869
+ readonly wf_node_data_slot: {
870
+ readonly resourceType: "wf_node_data_slot";
871
+ readonly tableName: "node_data_slot";
872
+ readonly schemaName: "workflow";
873
+ readonly idColumn: "id";
874
+ readonly ownerColumn: "created_by";
875
+ readonly isPublicColumn: null;
876
+ readonly displayLabel: "Workflow Node Data Slot";
877
+ readonly urlPathTemplate: "";
878
+ readonly rlsUsesHasPermission: false;
879
+ };
880
+ readonly workflow_run: {
881
+ readonly resourceType: "workflow_run";
882
+ readonly tableName: "run";
883
+ readonly schemaName: "workflow";
884
+ readonly idColumn: "id";
885
+ readonly ownerColumn: "created_by";
886
+ readonly isPublicColumn: null;
887
+ readonly displayLabel: "Workflow Run";
888
+ readonly urlPathTemplate: "";
889
+ readonly rlsUsesHasPermission: true;
890
+ };
891
+ readonly workflow_template: {
892
+ readonly resourceType: "workflow_template";
893
+ readonly tableName: "template";
894
+ readonly schemaName: "workflow";
895
+ readonly idColumn: "id";
896
+ readonly ownerColumn: "created_by";
897
+ readonly isPublicColumn: null;
898
+ readonly displayLabel: "Workflow Template";
899
+ readonly urlPathTemplate: "";
900
+ readonly rlsUsesHasPermission: true;
901
+ };
902
+ readonly workflow_trigger: {
903
+ readonly resourceType: "workflow_trigger";
904
+ readonly tableName: "trigger";
905
+ readonly schemaName: "workflow";
906
+ readonly idColumn: "id";
907
+ readonly ownerColumn: "created_by";
908
+ readonly isPublicColumn: null;
909
+ readonly displayLabel: "Workflow Trigger";
910
+ readonly urlPathTemplate: "";
911
+ readonly rlsUsesHasPermission: true;
912
+ };
913
+ readonly workflow_plan: {
914
+ readonly resourceType: "workflow_plan";
915
+ readonly tableName: "plan";
916
+ readonly schemaName: "workflow";
917
+ readonly idColumn: "id";
918
+ readonly ownerColumn: "created_by";
919
+ readonly isPublicColumn: null;
920
+ readonly displayLabel: "Workflow Plan";
921
+ readonly urlPathTemplate: "";
922
+ readonly rlsUsesHasPermission: true;
923
+ };
924
+ readonly workflow: {
925
+ readonly resourceType: "workflow";
926
+ readonly tableName: "definition";
927
+ readonly schemaName: "workflow";
928
+ readonly idColumn: "id";
929
+ readonly ownerColumn: "created_by";
930
+ readonly isPublicColumn: null;
931
+ readonly displayLabel: "Workflow";
932
+ readonly urlPathTemplate: "/workflows/{id}";
933
+ readonly rlsUsesHasPermission: true;
934
+ };
935
+ readonly content_ir_kind_instance: {
936
+ readonly resourceType: "content_ir_kind_instance";
937
+ readonly tableName: "kind_instance";
938
+ readonly schemaName: "content_ir";
939
+ readonly idColumn: "id";
940
+ readonly ownerColumn: "created_by";
941
+ readonly isPublicColumn: null;
942
+ readonly displayLabel: "Saved Result";
943
+ readonly urlPathTemplate: "/shapes/instances/{id}";
944
+ readonly rlsUsesHasPermission: true;
945
+ };
946
+ readonly crm_outreach_list: {
947
+ readonly resourceType: "crm_outreach_list";
948
+ readonly tableName: "outreach_list";
949
+ readonly schemaName: "crm";
950
+ readonly idColumn: "id";
951
+ readonly ownerColumn: "created_by";
952
+ readonly isPublicColumn: null;
953
+ readonly displayLabel: "Outreach List";
954
+ readonly urlPathTemplate: "/crm/outreach-lists/{id}";
955
+ readonly rlsUsesHasPermission: true;
956
+ };
957
+ readonly party: {
958
+ readonly resourceType: "party";
959
+ readonly tableName: "party";
960
+ readonly schemaName: "crm";
961
+ readonly idColumn: "id";
962
+ readonly ownerColumn: "created_by";
963
+ readonly isPublicColumn: null;
964
+ readonly displayLabel: "Contact";
965
+ readonly urlPathTemplate: "/crm/{id}";
966
+ readonly rlsUsesHasPermission: true;
967
+ };
968
+ readonly seo_collection_run: {
969
+ readonly resourceType: "seo_collection_run";
970
+ readonly tableName: "collection_run";
971
+ readonly schemaName: "seo";
972
+ readonly idColumn: "id";
973
+ readonly ownerColumn: "created_by";
974
+ readonly isPublicColumn: null;
975
+ readonly displayLabel: "SEO Collection Run";
976
+ readonly urlPathTemplate: "/marketing/ai-visibility/runs/{id}";
977
+ readonly rlsUsesHasPermission: true;
978
+ };
979
+ readonly seo_change_set: {
980
+ readonly resourceType: "seo_change_set";
981
+ readonly tableName: "change_set";
982
+ readonly schemaName: "seo";
983
+ readonly idColumn: "id";
984
+ readonly ownerColumn: "created_by";
985
+ readonly isPublicColumn: null;
986
+ readonly displayLabel: "SEO Change";
987
+ readonly urlPathTemplate: "/marketing/changes/{id}";
988
+ readonly rlsUsesHasPermission: false;
989
+ };
990
+ readonly seo_topical_map: {
991
+ readonly resourceType: "seo_topical_map";
992
+ readonly tableName: "topical_map";
993
+ readonly schemaName: "seo";
994
+ readonly idColumn: "id";
995
+ readonly ownerColumn: "created_by";
996
+ readonly isPublicColumn: null;
997
+ readonly displayLabel: "Topical map";
998
+ readonly urlPathTemplate: "/marketing/topical-maps/{id}";
999
+ readonly rlsUsesHasPermission: true;
1000
+ };
1001
+ readonly seo_keyword: {
1002
+ readonly resourceType: "seo_keyword";
1003
+ readonly tableName: "keyword";
1004
+ readonly schemaName: "seo";
1005
+ readonly idColumn: "id";
1006
+ readonly ownerColumn: "created_by";
1007
+ readonly isPublicColumn: null;
1008
+ readonly displayLabel: "SEO Keyword";
1009
+ readonly urlPathTemplate: "";
1010
+ readonly rlsUsesHasPermission: false;
1011
+ };
1012
+ readonly youtube_search: {
1013
+ readonly resourceType: "youtube_search";
1014
+ readonly tableName: "youtube_search";
1015
+ readonly schemaName: "research";
1016
+ readonly idColumn: "id";
1017
+ readonly ownerColumn: "created_by";
1018
+ readonly isPublicColumn: null;
1019
+ readonly displayLabel: "YouTube Search";
1020
+ readonly urlPathTemplate: "/marketing/discovery/youtube?search={id}";
1021
+ readonly rlsUsesHasPermission: true;
1022
+ };
1023
+ readonly rulebook: {
1024
+ readonly resourceType: "rulebook";
1025
+ readonly tableName: "rulebook";
1026
+ readonly schemaName: "platform";
1027
+ readonly idColumn: "id";
1028
+ readonly ownerColumn: "created_by";
1029
+ readonly isPublicColumn: null;
1030
+ readonly displayLabel: "Rulebook";
1031
+ readonly urlPathTemplate: "/masterwork/{id}";
1032
+ readonly rlsUsesHasPermission: true;
1033
+ };
1034
+ readonly interview_decision_interview: {
1035
+ readonly resourceType: "interview_decision_interview";
1036
+ readonly tableName: "decision_interview";
1037
+ readonly schemaName: "interview";
1038
+ readonly idColumn: "id";
1039
+ readonly ownerColumn: "created_by";
1040
+ readonly isPublicColumn: null;
1041
+ readonly displayLabel: "Decision Interview";
1042
+ readonly urlPathTemplate: "/administration/question-desk/{id}";
1043
+ readonly rlsUsesHasPermission: true;
1044
+ };
1045
+ readonly interview_session: {
1046
+ readonly resourceType: "interview_session";
1047
+ readonly tableName: "session";
1048
+ readonly schemaName: "interview";
1049
+ readonly idColumn: "id";
1050
+ readonly ownerColumn: "created_by";
1051
+ readonly isPublicColumn: null;
1052
+ readonly displayLabel: "Vision Interview";
1053
+ readonly urlPathTemplate: "/masterwork/vision-interview/{id}";
1054
+ readonly rlsUsesHasPermission: true;
1055
+ };
1056
+ readonly workflow_runtime_surface: {
1057
+ readonly resourceType: "workflow_runtime_surface";
1058
+ readonly tableName: "runtime_surface";
1059
+ readonly schemaName: "workflow";
1060
+ readonly idColumn: "id";
1061
+ readonly ownerColumn: "created_by";
1062
+ readonly isPublicColumn: null;
1063
+ readonly displayLabel: "Run Surface";
1064
+ readonly urlPathTemplate: "";
1065
+ readonly rlsUsesHasPermission: true;
1066
+ };
1067
+ readonly growth_loop_run: {
1068
+ readonly resourceType: "growth_loop_run";
1069
+ readonly tableName: "loop_run";
1070
+ readonly schemaName: "growth";
1071
+ readonly idColumn: "id";
1072
+ readonly ownerColumn: "created_by";
1073
+ readonly isPublicColumn: null;
1074
+ readonly displayLabel: "Growth Loop Run";
1075
+ readonly urlPathTemplate: "/marketing/growth-loop/{id}";
1076
+ readonly rlsUsesHasPermission: true;
1077
+ };
1078
+ readonly web_brand: {
1079
+ readonly resourceType: "web_brand";
1080
+ readonly tableName: "brand";
1081
+ readonly schemaName: "web";
1082
+ readonly idColumn: "id";
1083
+ readonly ownerColumn: "created_by";
1084
+ readonly isPublicColumn: null;
1085
+ readonly displayLabel: "Brand";
1086
+ readonly urlPathTemplate: "/marketing/brands/{id}";
1087
+ readonly rlsUsesHasPermission: true;
1088
+ };
1089
+ readonly crm_deal: {
1090
+ readonly resourceType: "crm_deal";
1091
+ readonly tableName: "deal";
1092
+ readonly schemaName: "crm";
1093
+ readonly idColumn: "id";
1094
+ readonly ownerColumn: "created_by";
1095
+ readonly isPublicColumn: null;
1096
+ readonly displayLabel: "Deal";
1097
+ readonly urlPathTemplate: "/crm/deals/{id}";
1098
+ readonly rlsUsesHasPermission: true;
1099
+ };
1100
+ readonly esign_campaign: {
1101
+ readonly resourceType: "esign_campaign";
1102
+ readonly tableName: "campaign";
1103
+ readonly schemaName: "esign";
1104
+ readonly idColumn: "id";
1105
+ readonly ownerColumn: "created_by";
1106
+ readonly isPublicColumn: null;
1107
+ readonly displayLabel: "Signature campaign";
1108
+ readonly urlPathTemplate: "";
1109
+ readonly rlsUsesHasPermission: true;
1110
+ };
1111
+ readonly esign_envelope: {
1112
+ readonly resourceType: "esign_envelope";
1113
+ readonly tableName: "envelope";
1114
+ readonly schemaName: "esign";
1115
+ readonly idColumn: "id";
1116
+ readonly ownerColumn: "created_by";
1117
+ readonly isPublicColumn: null;
1118
+ readonly displayLabel: "Signature envelope";
1119
+ readonly urlPathTemplate: "";
1120
+ readonly rlsUsesHasPermission: true;
1121
+ };
1122
+ readonly hr_ai_evidence: {
1123
+ readonly resourceType: "hr_ai_evidence";
1124
+ readonly tableName: "ai_evidence";
1125
+ readonly schemaName: "hr";
1126
+ readonly idColumn: "id";
1127
+ readonly ownerColumn: "created_by";
1128
+ readonly isPublicColumn: null;
1129
+ readonly displayLabel: "AI evidence";
1130
+ readonly urlPathTemplate: "/hr";
1131
+ readonly rlsUsesHasPermission: false;
1132
+ };
1133
+ readonly hr_asset: {
1134
+ readonly resourceType: "hr_asset";
1135
+ readonly tableName: "asset";
1136
+ readonly schemaName: "hr";
1137
+ readonly idColumn: "id";
1138
+ readonly ownerColumn: "created_by";
1139
+ readonly isPublicColumn: null;
1140
+ readonly displayLabel: "Asset";
1141
+ readonly urlPathTemplate: "";
1142
+ readonly rlsUsesHasPermission: true;
1143
+ };
1144
+ readonly hr_background_check: {
1145
+ readonly resourceType: "hr_background_check";
1146
+ readonly tableName: "background_check";
1147
+ readonly schemaName: "hr";
1148
+ readonly idColumn: "id";
1149
+ readonly ownerColumn: "created_by";
1150
+ readonly isPublicColumn: null;
1151
+ readonly displayLabel: "Background check";
1152
+ readonly urlPathTemplate: "/hr";
1153
+ readonly rlsUsesHasPermission: false;
1154
+ };
1155
+ readonly hr_candidate: {
1156
+ readonly resourceType: "hr_candidate";
1157
+ readonly tableName: "candidate";
1158
+ readonly schemaName: "hr";
1159
+ readonly idColumn: "id";
1160
+ readonly ownerColumn: "created_by";
1161
+ readonly isPublicColumn: null;
1162
+ readonly displayLabel: "Candidate";
1163
+ readonly urlPathTemplate: "";
1164
+ readonly rlsUsesHasPermission: true;
1165
+ };
1166
+ readonly hr_checklist_template: {
1167
+ readonly resourceType: "hr_checklist_template";
1168
+ readonly tableName: "checklist_template";
1169
+ readonly schemaName: "hr";
1170
+ readonly idColumn: "id";
1171
+ readonly ownerColumn: "created_by";
1172
+ readonly isPublicColumn: null;
1173
+ readonly displayLabel: "Checklist template";
1174
+ readonly urlPathTemplate: "";
1175
+ readonly rlsUsesHasPermission: true;
1176
+ };
1177
+ readonly hr_compensation: {
1178
+ readonly resourceType: "hr_compensation";
1179
+ readonly tableName: "compensation";
1180
+ readonly schemaName: "hr";
1181
+ readonly idColumn: "id";
1182
+ readonly ownerColumn: "created_by";
1183
+ readonly isPublicColumn: null;
1184
+ readonly displayLabel: "Compensation";
1185
+ readonly urlPathTemplate: "/hr";
1186
+ readonly rlsUsesHasPermission: false;
1187
+ };
1188
+ readonly hr_corrective_action: {
1189
+ readonly resourceType: "hr_corrective_action";
1190
+ readonly tableName: "corrective_action";
1191
+ readonly schemaName: "hr";
1192
+ readonly idColumn: "id";
1193
+ readonly ownerColumn: "created_by";
1194
+ readonly isPublicColumn: null;
1195
+ readonly displayLabel: "Corrective action";
1196
+ readonly urlPathTemplate: "/hr";
1197
+ readonly rlsUsesHasPermission: false;
1198
+ };
1199
+ readonly hr_course: {
1200
+ readonly resourceType: "hr_course";
1201
+ readonly tableName: "course";
1202
+ readonly schemaName: "hr";
1203
+ readonly idColumn: "id";
1204
+ readonly ownerColumn: "created_by";
1205
+ readonly isPublicColumn: null;
1206
+ readonly displayLabel: "Course";
1207
+ readonly urlPathTemplate: "";
1208
+ readonly rlsUsesHasPermission: true;
1209
+ };
1210
+ readonly hr_emergency_contact: {
1211
+ readonly resourceType: "hr_emergency_contact";
1212
+ readonly tableName: "emergency_contact";
1213
+ readonly schemaName: "hr";
1214
+ readonly idColumn: "id";
1215
+ readonly ownerColumn: "created_by";
1216
+ readonly isPublicColumn: null;
1217
+ readonly displayLabel: "Emergency contact";
1218
+ readonly urlPathTemplate: "/hr";
1219
+ readonly rlsUsesHasPermission: false;
1220
+ };
1221
+ readonly hr_employee: {
1222
+ readonly resourceType: "hr_employee";
1223
+ readonly tableName: "employee";
1224
+ readonly schemaName: "hr";
1225
+ readonly idColumn: "id";
1226
+ readonly ownerColumn: "created_by";
1227
+ readonly isPublicColumn: null;
1228
+ readonly displayLabel: "Employee";
1229
+ readonly urlPathTemplate: "/hr/people/{id}";
1230
+ readonly rlsUsesHasPermission: true;
1231
+ };
1232
+ readonly hr_employee_private: {
1233
+ readonly resourceType: "hr_employee_private";
1234
+ readonly tableName: "employee_private";
1235
+ readonly schemaName: "hr";
1236
+ readonly idColumn: "id";
1237
+ readonly ownerColumn: "created_by";
1238
+ readonly isPublicColumn: null;
1239
+ readonly displayLabel: "Employee private details";
1240
+ readonly urlPathTemplate: "/hr";
1241
+ readonly rlsUsesHasPermission: false;
1242
+ };
1243
+ readonly hr_employer_profile: {
1244
+ readonly resourceType: "hr_employer_profile";
1245
+ readonly tableName: "employer_profile";
1246
+ readonly schemaName: "hr";
1247
+ readonly idColumn: "id";
1248
+ readonly ownerColumn: "created_by";
1249
+ readonly isPublicColumn: null;
1250
+ readonly displayLabel: "Employer profile";
1251
+ readonly urlPathTemplate: "/hr";
1252
+ readonly rlsUsesHasPermission: false;
1253
+ };
1254
+ readonly hr_employment: {
1255
+ readonly resourceType: "hr_employment";
1256
+ readonly tableName: "employment";
1257
+ readonly schemaName: "hr";
1258
+ readonly idColumn: "id";
1259
+ readonly ownerColumn: "created_by";
1260
+ readonly isPublicColumn: null;
1261
+ readonly displayLabel: "Employment spell";
1262
+ readonly urlPathTemplate: "/hr/people/{id}/employment";
1263
+ readonly rlsUsesHasPermission: true;
1264
+ };
1265
+ readonly hr_i9: {
1266
+ readonly resourceType: "hr_i9";
1267
+ readonly tableName: "i9";
1268
+ readonly schemaName: "hr";
1269
+ readonly idColumn: "id";
1270
+ readonly ownerColumn: "created_by";
1271
+ readonly isPublicColumn: null;
1272
+ readonly displayLabel: "Form I-9";
1273
+ readonly urlPathTemplate: "/hr";
1274
+ readonly rlsUsesHasPermission: false;
1275
+ };
1276
+ readonly hr_interview: {
1277
+ readonly resourceType: "hr_interview";
1278
+ readonly tableName: "interview";
1279
+ readonly schemaName: "hr";
1280
+ readonly idColumn: "id";
1281
+ readonly ownerColumn: "created_by";
1282
+ readonly isPublicColumn: null;
1283
+ readonly displayLabel: "Interview";
1284
+ readonly urlPathTemplate: "";
1285
+ readonly rlsUsesHasPermission: true;
1286
+ };
1287
+ readonly hr_leave_policy: {
1288
+ readonly resourceType: "hr_leave_policy";
1289
+ readonly tableName: "leave_policy";
1290
+ readonly schemaName: "hr";
1291
+ readonly idColumn: "id";
1292
+ readonly ownerColumn: "created_by";
1293
+ readonly isPublicColumn: null;
1294
+ readonly displayLabel: "Leave policy";
1295
+ readonly urlPathTemplate: "/hr/settings/leave-policies/{id}";
1296
+ readonly rlsUsesHasPermission: true;
1297
+ };
1298
+ readonly hr_legal_hold: {
1299
+ readonly resourceType: "hr_legal_hold";
1300
+ readonly tableName: "legal_hold";
1301
+ readonly schemaName: "hr";
1302
+ readonly idColumn: "id";
1303
+ readonly ownerColumn: "created_by";
1304
+ readonly isPublicColumn: null;
1305
+ readonly displayLabel: "Legal hold";
1306
+ readonly urlPathTemplate: "/hr";
1307
+ readonly rlsUsesHasPermission: false;
1308
+ };
1309
+ readonly hr_offer: {
1310
+ readonly resourceType: "hr_offer";
1311
+ readonly tableName: "offer";
1312
+ readonly schemaName: "hr";
1313
+ readonly idColumn: "id";
1314
+ readonly ownerColumn: "created_by";
1315
+ readonly isPublicColumn: null;
1316
+ readonly displayLabel: "Offer";
1317
+ readonly urlPathTemplate: "/hr";
1318
+ readonly rlsUsesHasPermission: false;
1319
+ };
1320
+ readonly hr_records_request: {
1321
+ readonly resourceType: "hr_records_request";
1322
+ readonly tableName: "records_request";
1323
+ readonly schemaName: "hr";
1324
+ readonly idColumn: "id";
1325
+ readonly ownerColumn: "created_by";
1326
+ readonly isPublicColumn: null;
1327
+ readonly displayLabel: "Records request";
1328
+ readonly urlPathTemplate: "/hr";
1329
+ readonly rlsUsesHasPermission: false;
1330
+ };
1331
+ readonly hr_reference_check: {
1332
+ readonly resourceType: "hr_reference_check";
1333
+ readonly tableName: "reference_check";
1334
+ readonly schemaName: "hr";
1335
+ readonly idColumn: "id";
1336
+ readonly ownerColumn: "created_by";
1337
+ readonly isPublicColumn: null;
1338
+ readonly displayLabel: "Reference check";
1339
+ readonly urlPathTemplate: "/hr";
1340
+ readonly rlsUsesHasPermission: false;
1341
+ };
1342
+ readonly hr_requisition: {
1343
+ readonly resourceType: "hr_requisition";
1344
+ readonly tableName: "requisition";
1345
+ readonly schemaName: "hr";
1346
+ readonly idColumn: "id";
1347
+ readonly ownerColumn: "created_by";
1348
+ readonly isPublicColumn: null;
1349
+ readonly displayLabel: "Requisition";
1350
+ readonly urlPathTemplate: "";
1351
+ readonly rlsUsesHasPermission: true;
1352
+ };
1353
+ readonly hr_restricted_note: {
1354
+ readonly resourceType: "hr_restricted_note";
1355
+ readonly tableName: "restricted_note";
1356
+ readonly schemaName: "hr";
1357
+ readonly idColumn: "id";
1358
+ readonly ownerColumn: "created_by";
1359
+ readonly isPublicColumn: null;
1360
+ readonly displayLabel: "Restricted note";
1361
+ readonly urlPathTemplate: "/hr";
1362
+ readonly rlsUsesHasPermission: false;
1363
+ };
1364
+ readonly hr_separation: {
1365
+ readonly resourceType: "hr_separation";
1366
+ readonly tableName: "separation";
1367
+ readonly schemaName: "hr";
1368
+ readonly idColumn: "id";
1369
+ readonly ownerColumn: "created_by";
1370
+ readonly isPublicColumn: null;
1371
+ readonly displayLabel: "Separation";
1372
+ readonly urlPathTemplate: "/hr";
1373
+ readonly rlsUsesHasPermission: false;
1374
+ };
1375
+ readonly hr_survey: {
1376
+ readonly resourceType: "hr_survey";
1377
+ readonly tableName: "survey";
1378
+ readonly schemaName: "hr";
1379
+ readonly idColumn: "id";
1380
+ readonly ownerColumn: "created_by";
1381
+ readonly isPublicColumn: null;
1382
+ readonly displayLabel: "Survey";
1383
+ readonly urlPathTemplate: "";
1384
+ readonly rlsUsesHasPermission: true;
1385
+ };
1386
+ readonly hr_tax_withholding: {
1387
+ readonly resourceType: "hr_tax_withholding";
1388
+ readonly tableName: "tax_withholding";
1389
+ readonly schemaName: "hr";
1390
+ readonly idColumn: "id";
1391
+ readonly ownerColumn: "created_by";
1392
+ readonly isPublicColumn: null;
1393
+ readonly displayLabel: "Tax withholding";
1394
+ readonly urlPathTemplate: "/hr";
1395
+ readonly rlsUsesHasPermission: false;
1396
+ };
1397
+ readonly hr_verification_letter_request: {
1398
+ readonly resourceType: "hr_verification_letter_request";
1399
+ readonly tableName: "verification_letter_request";
1400
+ readonly schemaName: "hr";
1401
+ readonly idColumn: "id";
1402
+ readonly ownerColumn: "created_by";
1403
+ readonly isPublicColumn: null;
1404
+ readonly displayLabel: "Verification letter request";
1405
+ readonly urlPathTemplate: "/hr";
1406
+ readonly rlsUsesHasPermission: false;
1407
+ };
1408
+ readonly hr_workflow_instance: {
1409
+ readonly resourceType: "hr_workflow_instance";
1410
+ readonly tableName: "workflow_instance";
1411
+ readonly schemaName: "hr";
1412
+ readonly idColumn: "id";
1413
+ readonly ownerColumn: "created_by";
1414
+ readonly isPublicColumn: null;
1415
+ readonly displayLabel: "HR approval request";
1416
+ readonly urlPathTemplate: "/hr/tasks/{id}";
1417
+ readonly rlsUsesHasPermission: true;
1418
+ };
1419
+ readonly processed_document: {
1420
+ readonly resourceType: "processed_document";
1421
+ readonly tableName: "processed_documents";
1422
+ readonly schemaName: "docproc";
1423
+ readonly idColumn: "id";
1424
+ readonly ownerColumn: "created_by";
1425
+ readonly isPublicColumn: null;
1426
+ readonly displayLabel: "Source";
1427
+ readonly urlPathTemplate: "";
1428
+ readonly rlsUsesHasPermission: true;
1429
+ };
1430
+ readonly user_feedback: {
1431
+ readonly resourceType: "user_feedback";
1432
+ readonly tableName: "user_feedback";
1433
+ readonly schemaName: "users";
1434
+ readonly idColumn: "id";
1435
+ readonly ownerColumn: "created_by";
1436
+ readonly isPublicColumn: null;
1437
+ readonly displayLabel: "Feedback item";
1438
+ readonly urlPathTemplate: "";
1439
+ readonly rlsUsesHasPermission: true;
1440
+ };
1441
+ readonly workflow_recovery_audit: {
1442
+ readonly resourceType: "workflow_recovery_audit";
1443
+ readonly tableName: "recovery_audit";
1444
+ readonly schemaName: "workflow";
1445
+ readonly idColumn: "id";
1446
+ readonly ownerColumn: "created_by";
1447
+ readonly isPublicColumn: null;
1448
+ readonly displayLabel: "Workflow recovery audit";
1449
+ readonly urlPathTemplate: "";
1450
+ readonly rlsUsesHasPermission: true;
1451
+ };
1452
+ readonly agent_mandate_note: {
1453
+ readonly resourceType: "agent_mandate_note";
1454
+ readonly tableName: "mandate_note";
1455
+ readonly schemaName: "agent";
1456
+ readonly idColumn: "id";
1457
+ readonly ownerColumn: "created_by";
1458
+ readonly isPublicColumn: null;
1459
+ readonly displayLabel: "Agent Mandate Note";
1460
+ readonly urlPathTemplate: "";
1461
+ readonly rlsUsesHasPermission: true;
1462
+ };
1463
+ readonly agent_prompt_remediation: {
1464
+ readonly resourceType: "agent_prompt_remediation";
1465
+ readonly tableName: "prompt_remediation";
1466
+ readonly schemaName: "agent";
1467
+ readonly idColumn: "id";
1468
+ readonly ownerColumn: "created_by";
1469
+ readonly isPublicColumn: null;
1470
+ readonly displayLabel: "Agent Prompt Remediation";
1471
+ readonly urlPathTemplate: "";
1472
+ readonly rlsUsesHasPermission: true;
1473
+ };
1474
+ readonly agent_shortcut: {
1475
+ readonly resourceType: "agent_shortcut";
1476
+ readonly tableName: "shortcut";
1477
+ readonly schemaName: "agent";
1478
+ readonly idColumn: "id";
1479
+ readonly ownerColumn: "created_by";
1480
+ readonly isPublicColumn: null;
1481
+ readonly displayLabel: "Agent Shortcut";
1482
+ readonly urlPathTemplate: "";
1483
+ readonly rlsUsesHasPermission: true;
1484
+ };
1485
+ readonly agent_template: {
1486
+ readonly resourceType: "agent_template";
1487
+ readonly tableName: "template";
1488
+ readonly schemaName: "agent";
1489
+ readonly idColumn: "id";
1490
+ readonly ownerColumn: "created_by";
1491
+ readonly isPublicColumn: null;
1492
+ readonly displayLabel: "Agent Template";
1493
+ readonly urlPathTemplate: "";
1494
+ readonly rlsUsesHasPermission: true;
1495
+ };
1496
+ readonly anon_form: {
1497
+ readonly resourceType: "anon_form";
1498
+ readonly tableName: "anon_form";
1499
+ readonly schemaName: "custom";
1500
+ readonly idColumn: "id";
1501
+ readonly ownerColumn: "created_by";
1502
+ readonly isPublicColumn: null;
1503
+ readonly displayLabel: "Form";
1504
+ readonly urlPathTemplate: "";
1505
+ readonly rlsUsesHasPermission: true;
1506
+ };
1507
+ readonly anon_hit: {
1508
+ readonly resourceType: "anon_hit";
1509
+ readonly tableName: "anon_hit";
1510
+ readonly schemaName: "custom";
1511
+ readonly idColumn: "id";
1512
+ readonly ownerColumn: "created_by";
1513
+ readonly isPublicColumn: null;
1514
+ readonly displayLabel: "Anon Hit";
1515
+ readonly urlPathTemplate: "";
1516
+ readonly rlsUsesHasPermission: true;
1517
+ };
1518
+ readonly anon_inbound: {
1519
+ readonly resourceType: "anon_inbound";
1520
+ readonly tableName: "anon_inbound";
1521
+ readonly schemaName: "custom";
1522
+ readonly idColumn: "id";
1523
+ readonly ownerColumn: "created_by";
1524
+ readonly isPublicColumn: null;
1525
+ readonly displayLabel: "Anon Inbound";
1526
+ readonly urlPathTemplate: "";
1527
+ readonly rlsUsesHasPermission: true;
1528
+ };
1529
+ readonly anon_replay: {
1530
+ readonly resourceType: "anon_replay";
1531
+ readonly tableName: "anon_replay";
1532
+ readonly schemaName: "custom";
1533
+ readonly idColumn: "id";
1534
+ readonly ownerColumn: "created_by";
1535
+ readonly isPublicColumn: null;
1536
+ readonly displayLabel: "Anon Replay";
1537
+ readonly urlPathTemplate: "";
1538
+ readonly rlsUsesHasPermission: true;
1539
+ };
1540
+ readonly anon_submission: {
1541
+ readonly resourceType: "anon_submission";
1542
+ readonly tableName: "anon_submission";
1543
+ readonly schemaName: "custom";
1544
+ readonly idColumn: "id";
1545
+ readonly ownerColumn: "created_by";
1546
+ readonly isPublicColumn: null;
1547
+ readonly displayLabel: "Anon Submission";
1548
+ readonly urlPathTemplate: "";
1549
+ readonly rlsUsesHasPermission: true;
1550
+ };
1551
+ readonly anon_token: {
1552
+ readonly resourceType: "anon_token";
1553
+ readonly tableName: "anon_token";
1554
+ readonly schemaName: "custom";
1555
+ readonly idColumn: "id";
1556
+ readonly ownerColumn: "created_by";
1557
+ readonly isPublicColumn: null;
1558
+ readonly displayLabel: "Anon Token";
1559
+ readonly urlPathTemplate: "";
1560
+ readonly rlsUsesHasPermission: true;
1561
+ };
1562
+ readonly app_instance: {
1563
+ readonly resourceType: "app_instance";
1564
+ readonly tableName: "app_instances";
1565
+ readonly schemaName: "public";
1566
+ readonly idColumn: "id";
1567
+ readonly ownerColumn: "created_by";
1568
+ readonly isPublicColumn: null;
1569
+ readonly displayLabel: "App Instance";
1570
+ readonly urlPathTemplate: "";
1571
+ readonly rlsUsesHasPermission: true;
1572
+ };
1573
+ readonly app_setting: {
1574
+ readonly resourceType: "app_setting";
1575
+ readonly tableName: "app_settings";
1576
+ readonly schemaName: "public";
1577
+ readonly idColumn: "id";
1578
+ readonly ownerColumn: "created_by";
1579
+ readonly isPublicColumn: null;
1580
+ readonly displayLabel: "App Setting";
1581
+ readonly urlPathTemplate: "";
1582
+ readonly rlsUsesHasPermission: true;
1583
+ };
1584
+ readonly app_sync_status: {
1585
+ readonly resourceType: "app_sync_status";
1586
+ readonly tableName: "app_sync_status";
1587
+ readonly schemaName: "public";
1588
+ readonly idColumn: "id";
1589
+ readonly ownerColumn: "created_by";
1590
+ readonly isPublicColumn: null;
1591
+ readonly displayLabel: "App Sync Status";
1592
+ readonly urlPathTemplate: "";
1593
+ readonly rlsUsesHasPermission: true;
1594
+ };
1595
+ readonly assessment_result: {
1596
+ readonly resourceType: "assessment_result";
1597
+ readonly tableName: "assessment_result";
1598
+ readonly schemaName: "education";
1599
+ readonly idColumn: "id";
1600
+ readonly ownerColumn: "created_by";
1601
+ readonly isPublicColumn: null;
1602
+ readonly displayLabel: "Assessment Result";
1603
+ readonly urlPathTemplate: "";
1604
+ readonly rlsUsesHasPermission: true;
1605
+ };
1606
+ readonly assignment_session: {
1607
+ readonly resourceType: "assignment_session";
1608
+ readonly tableName: "session";
1609
+ readonly schemaName: "assignment";
1610
+ readonly idColumn: "id";
1611
+ readonly ownerColumn: "created_by";
1612
+ readonly isPublicColumn: null;
1613
+ readonly displayLabel: "Assignment Session";
1614
+ readonly urlPathTemplate: "";
1615
+ readonly rlsUsesHasPermission: true;
1616
+ };
1617
+ readonly assist: {
1618
+ readonly resourceType: "assist";
1619
+ readonly tableName: "assists";
1620
+ readonly schemaName: "platform";
1621
+ readonly idColumn: "id";
1622
+ readonly ownerColumn: "created_by";
1623
+ readonly isPublicColumn: null;
1624
+ readonly displayLabel: "Assist";
1625
+ readonly urlPathTemplate: "";
1626
+ readonly rlsUsesHasPermission: true;
1627
+ };
1628
+ readonly billing_spend_guardrail: {
1629
+ readonly resourceType: "billing_spend_guardrail";
1630
+ readonly tableName: "spend_guardrail";
1631
+ readonly schemaName: "billing";
1632
+ readonly idColumn: "id";
1633
+ readonly ownerColumn: "created_by";
1634
+ readonly isPublicColumn: null;
1635
+ readonly displayLabel: "Billing Spend Guardrail";
1636
+ readonly urlPathTemplate: "";
1637
+ readonly rlsUsesHasPermission: true;
1638
+ };
1639
+ readonly calendar_event: {
1640
+ readonly resourceType: "calendar_event";
1641
+ readonly tableName: "calendar_event";
1642
+ readonly schemaName: "communication";
1643
+ readonly idColumn: "id";
1644
+ readonly ownerColumn: "created_by";
1645
+ readonly isPublicColumn: null;
1646
+ readonly displayLabel: "Calendar Event";
1647
+ readonly urlPathTemplate: "";
1648
+ readonly rlsUsesHasPermission: true;
1649
+ };
1650
+ readonly canvas_score: {
1651
+ readonly resourceType: "canvas_score";
1652
+ readonly tableName: "canvas_scores";
1653
+ readonly schemaName: "canvas";
1654
+ readonly idColumn: "id";
1655
+ readonly ownerColumn: "created_by";
1656
+ readonly isPublicColumn: null;
1657
+ readonly displayLabel: "Canvas Score";
1658
+ readonly urlPathTemplate: "";
1659
+ readonly rlsUsesHasPermission: true;
1660
+ };
1661
+ readonly canvas_view: {
1662
+ readonly resourceType: "canvas_view";
1663
+ readonly tableName: "canvas_views";
1664
+ readonly schemaName: "canvas";
1665
+ readonly idColumn: "id";
1666
+ readonly ownerColumn: "created_by";
1667
+ readonly isPublicColumn: null;
1668
+ readonly displayLabel: "Canvas View";
1669
+ readonly urlPathTemplate: "";
1670
+ readonly rlsUsesHasPermission: true;
1671
+ };
1672
+ readonly category: {
1673
+ readonly resourceType: "category";
1674
+ readonly tableName: "categories";
1675
+ readonly schemaName: "platform";
1676
+ readonly idColumn: "id";
1677
+ readonly ownerColumn: "created_by";
1678
+ readonly isPublicColumn: null;
1679
+ readonly displayLabel: "Category";
1680
+ readonly urlPathTemplate: "";
1681
+ readonly rlsUsesHasPermission: true;
1682
+ };
1683
+ readonly cmp_feedback: {
1684
+ readonly resourceType: "cmp_feedback";
1685
+ readonly tableName: "cmp_response_feedback";
1686
+ readonly schemaName: "agent";
1687
+ readonly idColumn: "id";
1688
+ readonly ownerColumn: "created_by";
1689
+ readonly isPublicColumn: null;
1690
+ readonly displayLabel: "Cmp Feedback";
1691
+ readonly urlPathTemplate: "";
1692
+ readonly rlsUsesHasPermission: true;
1693
+ };
1694
+ readonly comment: {
1695
+ readonly resourceType: "comment";
1696
+ readonly tableName: "comments";
1697
+ readonly schemaName: "platform";
1698
+ readonly idColumn: "id";
1699
+ readonly ownerColumn: "created_by";
1700
+ readonly isPublicColumn: null;
1701
+ readonly displayLabel: "Comment";
1702
+ readonly urlPathTemplate: "";
1703
+ readonly rlsUsesHasPermission: true;
1704
+ };
1705
+ readonly commerce_certified_printer: {
1706
+ readonly resourceType: "commerce_certified_printer";
1707
+ readonly tableName: "certified_printer";
1708
+ readonly schemaName: "commerce";
1709
+ readonly idColumn: "id";
1710
+ readonly ownerColumn: "created_by";
1711
+ readonly isPublicColumn: null;
1712
+ readonly displayLabel: "Commerce Certified Printer";
1713
+ readonly urlPathTemplate: "";
1714
+ readonly rlsUsesHasPermission: true;
1715
+ };
1716
+ readonly commerce_cloud_sync_connection: {
1717
+ readonly resourceType: "commerce_cloud_sync_connection";
1718
+ readonly tableName: "cloud_sync_connection";
1719
+ readonly schemaName: "commerce";
1720
+ readonly idColumn: "id";
1721
+ readonly ownerColumn: "created_by";
1722
+ readonly isPublicColumn: null;
1723
+ readonly displayLabel: "Commerce Cloud Sync Connection";
1724
+ readonly urlPathTemplate: "";
1725
+ readonly rlsUsesHasPermission: true;
1726
+ };
1727
+ readonly commerce_intake_batch: {
1728
+ readonly resourceType: "commerce_intake_batch";
1729
+ readonly tableName: "intake_batch";
1730
+ readonly schemaName: "commerce";
1731
+ readonly idColumn: "id";
1732
+ readonly ownerColumn: "created_by";
1733
+ readonly isPublicColumn: null;
1734
+ readonly displayLabel: "Commerce Intake Batch";
1735
+ readonly urlPathTemplate: "";
1736
+ readonly rlsUsesHasPermission: true;
1737
+ };
1738
+ readonly commerce_label_batch: {
1739
+ readonly resourceType: "commerce_label_batch";
1740
+ readonly tableName: "label_batch";
1741
+ readonly schemaName: "commerce";
1742
+ readonly idColumn: "id";
1743
+ readonly ownerColumn: "created_by";
1744
+ readonly isPublicColumn: null;
1745
+ readonly displayLabel: "Commerce Label Batch";
1746
+ readonly urlPathTemplate: "";
1747
+ readonly rlsUsesHasPermission: true;
1748
+ };
1749
+ readonly commerce_marketplace_account: {
1750
+ readonly resourceType: "commerce_marketplace_account";
1751
+ readonly tableName: "marketplace_account";
1752
+ readonly schemaName: "commerce";
1753
+ readonly idColumn: "id";
1754
+ readonly ownerColumn: "created_by";
1755
+ readonly isPublicColumn: null;
1756
+ readonly displayLabel: "Commerce Marketplace Account";
1757
+ readonly urlPathTemplate: "";
1758
+ readonly rlsUsesHasPermission: true;
1759
+ };
1760
+ readonly commerce_print_order: {
1761
+ readonly resourceType: "commerce_print_order";
1762
+ readonly tableName: "print_order";
1763
+ readonly schemaName: "commerce";
1764
+ readonly idColumn: "id";
1765
+ readonly ownerColumn: "created_by";
1766
+ readonly isPublicColumn: null;
1767
+ readonly displayLabel: "Commerce Print Order";
1768
+ readonly urlPathTemplate: "";
1769
+ readonly rlsUsesHasPermission: true;
1770
+ };
1771
+ readonly commerce_product: {
1772
+ readonly resourceType: "commerce_product";
1773
+ readonly tableName: "product";
1774
+ readonly schemaName: "commerce";
1775
+ readonly idColumn: "id";
1776
+ readonly ownerColumn: "created_by";
1777
+ readonly isPublicColumn: null;
1778
+ readonly displayLabel: "Commerce Product";
1779
+ readonly urlPathTemplate: "";
1780
+ readonly rlsUsesHasPermission: true;
1781
+ };
1782
+ readonly contact_medium: {
1783
+ readonly resourceType: "contact_medium";
1784
+ readonly tableName: "contact_medium";
1785
+ readonly schemaName: "crm";
1786
+ readonly idColumn: "id";
1787
+ readonly ownerColumn: "created_by";
1788
+ readonly isPublicColumn: null;
1789
+ readonly displayLabel: "Contact Medium";
1790
+ readonly urlPathTemplate: "";
1791
+ readonly rlsUsesHasPermission: true;
1792
+ };
1793
+ readonly contact_submission: {
1794
+ readonly resourceType: "contact_submission";
1795
+ readonly tableName: "contact_submissions";
1796
+ readonly schemaName: "communication";
1797
+ readonly idColumn: "id";
1798
+ readonly ownerColumn: "created_by";
1799
+ readonly isPublicColumn: null;
1800
+ readonly displayLabel: "Contact Submission";
1801
+ readonly urlPathTemplate: "";
1802
+ readonly rlsUsesHasPermission: true;
1803
+ };
1804
+ readonly context_item_suggestion: {
1805
+ readonly resourceType: "context_item_suggestion";
1806
+ readonly tableName: "context_item_suggestions";
1807
+ readonly schemaName: "rag";
1808
+ readonly idColumn: "id";
1809
+ readonly ownerColumn: "created_by";
1810
+ readonly isPublicColumn: null;
1811
+ readonly displayLabel: "Context Item Suggestion";
1812
+ readonly urlPathTemplate: "";
1813
+ readonly rlsUsesHasPermission: true;
1814
+ };
1815
+ readonly crm_blocklist_entry: {
1816
+ readonly resourceType: "crm_blocklist_entry";
1817
+ readonly tableName: "blocklist_entry";
1818
+ readonly schemaName: "crm";
1819
+ readonly idColumn: "id";
1820
+ readonly ownerColumn: "created_by";
1821
+ readonly isPublicColumn: null;
1822
+ readonly displayLabel: "Crm Blocklist Entry";
1823
+ readonly urlPathTemplate: "";
1824
+ readonly rlsUsesHasPermission: true;
1825
+ };
1826
+ readonly crm_registry_ingest_run: {
1827
+ readonly resourceType: "crm_registry_ingest_run";
1828
+ readonly tableName: "registry_ingest_run";
1829
+ readonly schemaName: "crm";
1830
+ readonly idColumn: "id";
1831
+ readonly ownerColumn: "created_by";
1832
+ readonly isPublicColumn: null;
1833
+ readonly displayLabel: "Crm Registry Ingest Run";
1834
+ readonly urlPathTemplate: "";
1835
+ readonly rlsUsesHasPermission: true;
1836
+ };
1837
+ readonly crm_sending_policy: {
1838
+ readonly resourceType: "crm_sending_policy";
1839
+ readonly tableName: "sending_policy";
1840
+ readonly schemaName: "crm";
1841
+ readonly idColumn: "id";
1842
+ readonly ownerColumn: "created_by";
1843
+ readonly isPublicColumn: null;
1844
+ readonly displayLabel: "Crm Sending Policy";
1845
+ readonly urlPathTemplate: "";
1846
+ readonly rlsUsesHasPermission: true;
1847
+ };
1848
+ readonly custom_field_definition: {
1849
+ readonly resourceType: "custom_field_definition";
1850
+ readonly tableName: "custom_field_definition";
1851
+ readonly schemaName: "platform";
1852
+ readonly idColumn: "id";
1853
+ readonly ownerColumn: "created_by";
1854
+ readonly isPublicColumn: null;
1855
+ readonly displayLabel: "Custom Field Definition";
1856
+ readonly urlPathTemplate: "";
1857
+ readonly rlsUsesHasPermission: true;
1858
+ };
1859
+ readonly cx_agent_memory: {
1860
+ readonly resourceType: "cx_agent_memory";
1861
+ readonly tableName: "agent_memory";
1862
+ readonly schemaName: "chat";
1863
+ readonly idColumn: "id";
1864
+ readonly ownerColumn: "created_by";
1865
+ readonly isPublicColumn: null;
1866
+ readonly displayLabel: "Cx Agent Memory";
1867
+ readonly urlPathTemplate: "";
1868
+ readonly rlsUsesHasPermission: true;
1869
+ };
1870
+ readonly cx_user_request: {
1871
+ readonly resourceType: "cx_user_request";
1872
+ readonly tableName: "user_request";
1873
+ readonly schemaName: "chat";
1874
+ readonly idColumn: "id";
1875
+ readonly ownerColumn: "created_by";
1876
+ readonly isPublicColumn: null;
1877
+ readonly displayLabel: "Cx User Request";
1878
+ readonly urlPathTemplate: "";
1879
+ readonly rlsUsesHasPermission: true;
1880
+ };
1881
+ readonly derive_run: {
1882
+ readonly resourceType: "derive_run";
1883
+ readonly tableName: "derive_runs";
1884
+ readonly schemaName: "docproc";
1885
+ readonly idColumn: "id";
1886
+ readonly ownerColumn: "created_by";
1887
+ readonly isPublicColumn: null;
1888
+ readonly displayLabel: "Derive Run";
1889
+ readonly urlPathTemplate: "";
1890
+ readonly rlsUsesHasPermission: true;
1891
+ };
1892
+ readonly dict_entry: {
1893
+ readonly resourceType: "dict_entry";
1894
+ readonly tableName: "dict_entries";
1895
+ readonly schemaName: "dictionary";
1896
+ readonly idColumn: "id";
1897
+ readonly ownerColumn: "created_by";
1898
+ readonly isPublicColumn: null;
1899
+ readonly displayLabel: "Dict Entry";
1900
+ readonly urlPathTemplate: "";
1901
+ readonly rlsUsesHasPermission: true;
1902
+ };
1903
+ readonly dict_setting: {
1904
+ readonly resourceType: "dict_setting";
1905
+ readonly tableName: "dict_settings";
1906
+ readonly schemaName: "dictionary";
1907
+ readonly idColumn: "id";
1908
+ readonly ownerColumn: "created_by";
1909
+ readonly isPublicColumn: null;
1910
+ readonly displayLabel: "Dict Setting";
1911
+ readonly urlPathTemplate: "";
1912
+ readonly rlsUsesHasPermission: true;
1913
+ };
1914
+ readonly doc_render: {
1915
+ readonly resourceType: "doc_render";
1916
+ readonly tableName: "doc_render";
1917
+ readonly schemaName: "custom";
1918
+ readonly idColumn: "id";
1919
+ readonly ownerColumn: "created_by";
1920
+ readonly isPublicColumn: null;
1921
+ readonly displayLabel: "Doc Render";
1922
+ readonly urlPathTemplate: "";
1923
+ readonly rlsUsesHasPermission: true;
1924
+ };
1925
+ readonly doc_signature: {
1926
+ readonly resourceType: "doc_signature";
1927
+ readonly tableName: "doc_signature";
1928
+ readonly schemaName: "custom";
1929
+ readonly idColumn: "id";
1930
+ readonly ownerColumn: "created_by";
1931
+ readonly isPublicColumn: null;
1932
+ readonly displayLabel: "Doc Signature";
1933
+ readonly urlPathTemplate: "";
1934
+ readonly rlsUsesHasPermission: true;
1935
+ };
1936
+ readonly egress_device: {
1937
+ readonly resourceType: "egress_device";
1938
+ readonly tableName: "egress_device";
1939
+ readonly schemaName: "platform";
1940
+ readonly idColumn: "id";
1941
+ readonly ownerColumn: "created_by";
1942
+ readonly isPublicColumn: null;
1943
+ readonly displayLabel: "Egress Device";
1944
+ readonly urlPathTemplate: "";
1945
+ readonly rlsUsesHasPermission: true;
1946
+ };
1947
+ readonly esign_provider_binding: {
1948
+ readonly resourceType: "esign_provider_binding";
1949
+ readonly tableName: "provider_binding";
1950
+ readonly schemaName: "esign";
1951
+ readonly idColumn: "id";
1952
+ readonly ownerColumn: "created_by";
1953
+ readonly isPublicColumn: null;
1954
+ readonly displayLabel: "Esign Provider Binding";
1955
+ readonly urlPathTemplate: "";
1956
+ readonly rlsUsesHasPermission: true;
1957
+ };
1958
+ readonly external_link: {
1959
+ readonly resourceType: "external_link";
1960
+ readonly tableName: "external_link";
1961
+ readonly schemaName: "custom";
1962
+ readonly idColumn: "id";
1963
+ readonly ownerColumn: "created_by";
1964
+ readonly isPublicColumn: null;
1965
+ readonly displayLabel: "External Link";
1966
+ readonly urlPathTemplate: "";
1967
+ readonly rlsUsesHasPermission: true;
1968
+ };
1969
+ readonly external_source: {
1970
+ readonly resourceType: "external_source";
1971
+ readonly tableName: "external_source";
1972
+ readonly schemaName: "custom";
1973
+ readonly idColumn: "id";
1974
+ readonly ownerColumn: "created_by";
1975
+ readonly isPublicColumn: null;
1976
+ readonly displayLabel: "External Source";
1977
+ readonly urlPathTemplate: "";
1978
+ readonly rlsUsesHasPermission: true;
1979
+ };
1980
+ readonly game_badge: {
1981
+ readonly resourceType: "game_badge";
1982
+ readonly tableName: "game_badge";
1983
+ readonly schemaName: "education";
1984
+ readonly idColumn: "id";
1985
+ readonly ownerColumn: "created_by";
1986
+ readonly isPublicColumn: null;
1987
+ readonly displayLabel: "Game Badge";
1988
+ readonly urlPathTemplate: "";
1989
+ readonly rlsUsesHasPermission: true;
1990
+ };
1991
+ readonly game_result: {
1992
+ readonly resourceType: "game_result";
1993
+ readonly tableName: "game_result";
1994
+ readonly schemaName: "education";
1995
+ readonly idColumn: "id";
1996
+ readonly ownerColumn: "created_by";
1997
+ readonly isPublicColumn: null;
1998
+ readonly displayLabel: "Game Result";
1999
+ readonly urlPathTemplate: "";
2000
+ readonly rlsUsesHasPermission: true;
2001
+ };
2002
+ readonly game_room: {
2003
+ readonly resourceType: "game_room";
2004
+ readonly tableName: "game_room";
2005
+ readonly schemaName: "education";
2006
+ readonly idColumn: "id";
2007
+ readonly ownerColumn: "created_by";
2008
+ readonly isPublicColumn: null;
2009
+ readonly displayLabel: "Game Room";
2010
+ readonly urlPathTemplate: "";
2011
+ readonly rlsUsesHasPermission: true;
2012
+ };
2013
+ readonly google_document: {
2014
+ readonly resourceType: "google_document";
2015
+ readonly tableName: "google_document";
2016
+ readonly schemaName: "workbench";
2017
+ readonly idColumn: "id";
2018
+ readonly ownerColumn: "created_by";
2019
+ readonly isPublicColumn: null;
2020
+ readonly displayLabel: "Google file";
2021
+ readonly urlPathTemplate: "";
2022
+ readonly rlsUsesHasPermission: true;
2023
+ };
2024
+ readonly guided_checklist_run: {
2025
+ readonly resourceType: "guided_checklist_run";
2026
+ readonly tableName: "guided_checklist_run";
2027
+ readonly schemaName: "platform";
2028
+ readonly idColumn: "id";
2029
+ readonly ownerColumn: "created_by";
2030
+ readonly isPublicColumn: null;
2031
+ readonly displayLabel: "Guided Checklist Run";
2032
+ readonly urlPathTemplate: "";
2033
+ readonly rlsUsesHasPermission: true;
2034
+ };
2035
+ readonly heatmap_save: {
2036
+ readonly resourceType: "heatmap_save";
2037
+ readonly tableName: "heatmap_saves";
2038
+ readonly schemaName: "workbench";
2039
+ readonly idColumn: "id";
2040
+ readonly ownerColumn: "created_by";
2041
+ readonly isPublicColumn: null;
2042
+ readonly displayLabel: "Heatmap Save";
2043
+ readonly urlPathTemplate: "";
2044
+ readonly rlsUsesHasPermission: true;
2045
+ };
2046
+ readonly hindsight_regression_case: {
2047
+ readonly resourceType: "hindsight_regression_case";
2048
+ readonly tableName: "regression_case";
2049
+ readonly schemaName: "hindsight";
2050
+ readonly idColumn: "id";
2051
+ readonly ownerColumn: "created_by";
2052
+ readonly isPublicColumn: null;
2053
+ readonly displayLabel: "Hindsight Regression Case";
2054
+ readonly urlPathTemplate: "";
2055
+ readonly rlsUsesHasPermission: true;
2056
+ };
2057
+ readonly hindsight_replay_step: {
2058
+ readonly resourceType: "hindsight_replay_step";
2059
+ readonly tableName: "replay_step";
2060
+ readonly schemaName: "hindsight";
2061
+ readonly idColumn: "id";
2062
+ readonly ownerColumn: "created_by";
2063
+ readonly isPublicColumn: null;
2064
+ readonly displayLabel: "Hindsight Replay Step";
2065
+ readonly urlPathTemplate: "";
2066
+ readonly rlsUsesHasPermission: true;
2067
+ };
2068
+ readonly hr_alert_routing_rule: {
2069
+ readonly resourceType: "hr_alert_routing_rule";
2070
+ readonly tableName: "alert_routing_rule";
2071
+ readonly schemaName: "hr";
2072
+ readonly idColumn: "id";
2073
+ readonly ownerColumn: "created_by";
2074
+ readonly isPublicColumn: null;
2075
+ readonly displayLabel: "Hr Alert Routing Rule";
2076
+ readonly urlPathTemplate: "";
2077
+ readonly rlsUsesHasPermission: true;
2078
+ };
2079
+ readonly hr_auto_close_rule: {
2080
+ readonly resourceType: "hr_auto_close_rule";
2081
+ readonly tableName: "auto_close_rule";
2082
+ readonly schemaName: "hr";
2083
+ readonly idColumn: "id";
2084
+ readonly ownerColumn: "created_by";
2085
+ readonly isPublicColumn: null;
2086
+ readonly displayLabel: "Hr Auto Close Rule";
2087
+ readonly urlPathTemplate: "";
2088
+ readonly rlsUsesHasPermission: true;
2089
+ };
2090
+ readonly hr_careers_portal: {
2091
+ readonly resourceType: "hr_careers_portal";
2092
+ readonly tableName: "careers_portal";
2093
+ readonly schemaName: "hr";
2094
+ readonly idColumn: "id";
2095
+ readonly ownerColumn: "created_by";
2096
+ readonly isPublicColumn: null;
2097
+ readonly displayLabel: "Hr Careers Portal";
2098
+ readonly urlPathTemplate: "";
2099
+ readonly rlsUsesHasPermission: true;
2100
+ };
2101
+ readonly hr_crew: {
2102
+ readonly resourceType: "hr_crew";
2103
+ readonly tableName: "crew";
2104
+ readonly schemaName: "hr";
2105
+ readonly idColumn: "id";
2106
+ readonly ownerColumn: "created_by";
2107
+ readonly isPublicColumn: null;
2108
+ readonly displayLabel: "Hr Crew";
2109
+ readonly urlPathTemplate: "";
2110
+ readonly rlsUsesHasPermission: true;
2111
+ };
2112
+ readonly hr_deduction_code: {
2113
+ readonly resourceType: "hr_deduction_code";
2114
+ readonly tableName: "deduction_code";
2115
+ readonly schemaName: "hr";
2116
+ readonly idColumn: "id";
2117
+ readonly ownerColumn: "created_by";
2118
+ readonly isPublicColumn: null;
2119
+ readonly displayLabel: "Hr Deduction Code";
2120
+ readonly urlPathTemplate: "";
2121
+ readonly rlsUsesHasPermission: true;
2122
+ };
2123
+ readonly hr_department: {
2124
+ readonly resourceType: "hr_department";
2125
+ readonly tableName: "department";
2126
+ readonly schemaName: "hr";
2127
+ readonly idColumn: "id";
2128
+ readonly ownerColumn: "created_by";
2129
+ readonly isPublicColumn: null;
2130
+ readonly displayLabel: "Hr Department";
2131
+ readonly urlPathTemplate: "";
2132
+ readonly rlsUsesHasPermission: true;
2133
+ };
2134
+ readonly hr_earning_code: {
2135
+ readonly resourceType: "hr_earning_code";
2136
+ readonly tableName: "earning_code";
2137
+ readonly schemaName: "hr";
2138
+ readonly idColumn: "id";
2139
+ readonly ownerColumn: "created_by";
2140
+ readonly isPublicColumn: null;
2141
+ readonly displayLabel: "Hr Earning Code";
2142
+ readonly urlPathTemplate: "";
2143
+ readonly rlsUsesHasPermission: true;
2144
+ };
2145
+ readonly hr_holiday_calendar: {
2146
+ readonly resourceType: "hr_holiday_calendar";
2147
+ readonly tableName: "holiday_calendar";
2148
+ readonly schemaName: "hr";
2149
+ readonly idColumn: "id";
2150
+ readonly ownerColumn: "created_by";
2151
+ readonly isPublicColumn: null;
2152
+ readonly displayLabel: "Hr Holiday Calendar";
2153
+ readonly urlPathTemplate: "";
2154
+ readonly rlsUsesHasPermission: true;
2155
+ };
2156
+ readonly hr_interview_kit: {
2157
+ readonly resourceType: "hr_interview_kit";
2158
+ readonly tableName: "interview_kit";
2159
+ readonly schemaName: "hr";
2160
+ readonly idColumn: "id";
2161
+ readonly ownerColumn: "created_by";
2162
+ readonly isPublicColumn: null;
2163
+ readonly displayLabel: "Hr Interview Kit";
2164
+ readonly urlPathTemplate: "";
2165
+ readonly rlsUsesHasPermission: true;
2166
+ };
2167
+ readonly hr_job_title: {
2168
+ readonly resourceType: "hr_job_title";
2169
+ readonly tableName: "job_title";
2170
+ readonly schemaName: "hr";
2171
+ readonly idColumn: "id";
2172
+ readonly ownerColumn: "created_by";
2173
+ readonly isPublicColumn: null;
2174
+ readonly displayLabel: "Hr Job Title";
2175
+ readonly urlPathTemplate: "";
2176
+ readonly rlsUsesHasPermission: true;
2177
+ };
2178
+ readonly hr_jurisdiction_rule_org_decision: {
2179
+ readonly resourceType: "hr_jurisdiction_rule_org_decision";
2180
+ readonly tableName: "jurisdiction_rule_org_decision";
2181
+ readonly schemaName: "hr";
2182
+ readonly idColumn: "id";
2183
+ readonly ownerColumn: "created_by";
2184
+ readonly isPublicColumn: null;
2185
+ readonly displayLabel: "Hr Jurisdiction Rule Org Decision";
2186
+ readonly urlPathTemplate: "";
2187
+ readonly rlsUsesHasPermission: true;
2188
+ };
2189
+ readonly hr_location: {
2190
+ readonly resourceType: "hr_location";
2191
+ readonly tableName: "location";
2192
+ readonly schemaName: "hr";
2193
+ readonly idColumn: "id";
2194
+ readonly ownerColumn: "created_by";
2195
+ readonly isPublicColumn: null;
2196
+ readonly displayLabel: "Hr Location";
2197
+ readonly urlPathTemplate: "";
2198
+ readonly rlsUsesHasPermission: true;
2199
+ };
2200
+ readonly hr_overtime_alert_rule: {
2201
+ readonly resourceType: "hr_overtime_alert_rule";
2202
+ readonly tableName: "overtime_alert_rule";
2203
+ readonly schemaName: "hr";
2204
+ readonly idColumn: "id";
2205
+ readonly ownerColumn: "created_by";
2206
+ readonly isPublicColumn: null;
2207
+ readonly displayLabel: "Hr Overtime Alert Rule";
2208
+ readonly urlPathTemplate: "";
2209
+ readonly rlsUsesHasPermission: true;
2210
+ };
2211
+ readonly hr_pay_group: {
2212
+ readonly resourceType: "hr_pay_group";
2213
+ readonly tableName: "pay_group";
2214
+ readonly schemaName: "hr";
2215
+ readonly idColumn: "id";
2216
+ readonly ownerColumn: "created_by";
2217
+ readonly isPublicColumn: null;
2218
+ readonly displayLabel: "Hr Pay Group";
2219
+ readonly urlPathTemplate: "";
2220
+ readonly rlsUsesHasPermission: true;
2221
+ };
2222
+ readonly hr_posting: {
2223
+ readonly resourceType: "hr_posting";
2224
+ readonly tableName: "posting";
2225
+ readonly schemaName: "hr";
2226
+ readonly idColumn: "id";
2227
+ readonly ownerColumn: "created_by";
2228
+ readonly isPublicColumn: null;
2229
+ readonly displayLabel: "Hr Posting";
2230
+ readonly urlPathTemplate: "";
2231
+ readonly rlsUsesHasPermission: true;
2232
+ };
2233
+ readonly hr_provider_binding: {
2234
+ readonly resourceType: "hr_provider_binding";
2235
+ readonly tableName: "provider_binding";
2236
+ readonly schemaName: "hr";
2237
+ readonly idColumn: "id";
2238
+ readonly ownerColumn: "created_by";
2239
+ readonly isPublicColumn: null;
2240
+ readonly displayLabel: "Hr Provider Binding";
2241
+ readonly urlPathTemplate: "";
2242
+ readonly rlsUsesHasPermission: true;
2243
+ };
2244
+ readonly hr_recalculation_batch: {
2245
+ readonly resourceType: "hr_recalculation_batch";
2246
+ readonly tableName: "recalculation_batch";
2247
+ readonly schemaName: "hr";
2248
+ readonly idColumn: "id";
2249
+ readonly ownerColumn: "created_by";
2250
+ readonly isPublicColumn: null;
2251
+ readonly displayLabel: "Hr Recalculation Batch";
2252
+ readonly urlPathTemplate: "";
2253
+ readonly rlsUsesHasPermission: true;
2254
+ };
2255
+ readonly hr_schedule: {
2256
+ readonly resourceType: "hr_schedule";
2257
+ readonly tableName: "schedule";
2258
+ readonly schemaName: "hr";
2259
+ readonly idColumn: "id";
2260
+ readonly ownerColumn: "created_by";
2261
+ readonly isPublicColumn: null;
2262
+ readonly displayLabel: "Hr Schedule";
2263
+ readonly urlPathTemplate: "";
2264
+ readonly rlsUsesHasPermission: true;
2265
+ };
2266
+ readonly hr_schedule_guidance: {
2267
+ readonly resourceType: "hr_schedule_guidance";
2268
+ readonly tableName: "schedule_guidance";
2269
+ readonly schemaName: "hr";
2270
+ readonly idColumn: "id";
2271
+ readonly ownerColumn: "created_by";
2272
+ readonly isPublicColumn: null;
2273
+ readonly displayLabel: "Hr Schedule Guidance";
2274
+ readonly urlPathTemplate: "";
2275
+ readonly rlsUsesHasPermission: true;
2276
+ };
2277
+ readonly hr_schedule_template: {
2278
+ readonly resourceType: "hr_schedule_template";
2279
+ readonly tableName: "schedule_template";
2280
+ readonly schemaName: "hr";
2281
+ readonly idColumn: "id";
2282
+ readonly ownerColumn: "created_by";
2283
+ readonly isPublicColumn: null;
2284
+ readonly displayLabel: "Hr Schedule Template";
2285
+ readonly urlPathTemplate: "";
2286
+ readonly rlsUsesHasPermission: true;
2287
+ };
2288
+ readonly hr_workflow_definition: {
2289
+ readonly resourceType: "hr_workflow_definition";
2290
+ readonly tableName: "workflow_definition";
2291
+ readonly schemaName: "hr";
2292
+ readonly idColumn: "id";
2293
+ readonly ownerColumn: "created_by";
2294
+ readonly isPublicColumn: null;
2295
+ readonly displayLabel: "Hr Workflow Definition";
2296
+ readonly urlPathTemplate: "";
2297
+ readonly rlsUsesHasPermission: true;
2298
+ };
2299
+ readonly iam_api_key: {
2300
+ readonly resourceType: "iam_api_key";
2301
+ readonly tableName: "api_keys";
2302
+ readonly schemaName: "iam";
2303
+ readonly idColumn: "id";
2304
+ readonly ownerColumn: "created_by";
2305
+ readonly isPublicColumn: null;
2306
+ readonly displayLabel: "Iam Api Key";
2307
+ readonly urlPathTemplate: "";
2308
+ readonly rlsUsesHasPermission: true;
2309
+ };
2310
+ readonly invitation_code: {
2311
+ readonly resourceType: "invitation_code";
2312
+ readonly tableName: "invitation_codes";
2313
+ readonly schemaName: "users";
2314
+ readonly idColumn: "id";
2315
+ readonly ownerColumn: "created_by";
2316
+ readonly isPublicColumn: null;
2317
+ readonly displayLabel: "Invitation Code";
2318
+ readonly urlPathTemplate: "";
2319
+ readonly rlsUsesHasPermission: true;
2320
+ };
2321
+ readonly invitation_request: {
2322
+ readonly resourceType: "invitation_request";
2323
+ readonly tableName: "invitation_requests";
2324
+ readonly schemaName: "users";
2325
+ readonly idColumn: "id";
2326
+ readonly ownerColumn: "created_by";
2327
+ readonly isPublicColumn: null;
2328
+ readonly displayLabel: "Invitation Request";
2329
+ readonly urlPathTemplate: "";
2330
+ readonly rlsUsesHasPermission: true;
2331
+ };
2332
+ readonly io_comment: {
2333
+ readonly resourceType: "io_comment";
2334
+ readonly tableName: "io_comment";
2335
+ readonly schemaName: "custom";
2336
+ readonly idColumn: "id";
2337
+ readonly ownerColumn: "created_by";
2338
+ readonly isPublicColumn: null;
2339
+ readonly displayLabel: "Io Comment";
2340
+ readonly urlPathTemplate: "";
2341
+ readonly rlsUsesHasPermission: true;
2342
+ };
2343
+ readonly io_import: {
2344
+ readonly resourceType: "io_import";
2345
+ readonly tableName: "io_import";
2346
+ readonly schemaName: "custom";
2347
+ readonly idColumn: "id";
2348
+ readonly ownerColumn: "created_by";
2349
+ readonly isPublicColumn: null;
2350
+ readonly displayLabel: "Io Import";
2351
+ readonly urlPathTemplate: "";
2352
+ readonly rlsUsesHasPermission: true;
2353
+ };
2354
+ readonly io_outbox: {
2355
+ readonly resourceType: "io_outbox";
2356
+ readonly tableName: "io_outbox";
2357
+ readonly schemaName: "custom";
2358
+ readonly idColumn: "id";
2359
+ readonly ownerColumn: "created_by";
2360
+ readonly isPublicColumn: null;
2361
+ readonly displayLabel: "Io Outbox";
2362
+ readonly urlPathTemplate: "";
2363
+ readonly rlsUsesHasPermission: true;
2364
+ };
2365
+ readonly item_mastery: {
2366
+ readonly resourceType: "item_mastery";
2367
+ readonly tableName: "item_mastery";
2368
+ readonly schemaName: "education";
2369
+ readonly idColumn: "id";
2370
+ readonly ownerColumn: "created_by";
2371
+ readonly isPublicColumn: null;
2372
+ readonly displayLabel: "Item Mastery";
2373
+ readonly urlPathTemplate: "";
2374
+ readonly rlsUsesHasPermission: true;
2375
+ };
2376
+ readonly kg_alert: {
2377
+ readonly resourceType: "kg_alert";
2378
+ readonly tableName: "kg_alerts";
2379
+ readonly schemaName: "rag";
2380
+ readonly idColumn: "id";
2381
+ readonly ownerColumn: "created_by";
2382
+ readonly isPublicColumn: null;
2383
+ readonly displayLabel: "Kg Alert";
2384
+ readonly urlPathTemplate: "";
2385
+ readonly rlsUsesHasPermission: true;
2386
+ };
2387
+ readonly kg_sweep_queue: {
2388
+ readonly resourceType: "kg_sweep_queue";
2389
+ readonly tableName: "kg_sweep_queue";
2390
+ readonly schemaName: "rag";
2391
+ readonly idColumn: "id";
2392
+ readonly ownerColumn: "created_by";
2393
+ readonly isPublicColumn: null;
2394
+ readonly displayLabel: "Kg Sweep Queue";
2395
+ readonly urlPathTemplate: "";
2396
+ readonly rlsUsesHasPermission: true;
2397
+ };
2398
+ readonly kg_sweep_run: {
2399
+ readonly resourceType: "kg_sweep_run";
2400
+ readonly tableName: "kg_sweep_run";
2401
+ readonly schemaName: "rag";
2402
+ readonly idColumn: "id";
2403
+ readonly ownerColumn: "created_by";
2404
+ readonly isPublicColumn: null;
2405
+ readonly displayLabel: "Kg Sweep Run";
2406
+ readonly urlPathTemplate: "";
2407
+ readonly rlsUsesHasPermission: true;
2408
+ };
2409
+ readonly kg_sweep_state: {
2410
+ readonly resourceType: "kg_sweep_state";
2411
+ readonly tableName: "kg_sweep_state";
2412
+ readonly schemaName: "rag";
2413
+ readonly idColumn: "id";
2414
+ readonly ownerColumn: "created_by";
2415
+ readonly isPublicColumn: null;
2416
+ readonly displayLabel: "Kg Sweep State";
2417
+ readonly urlPathTemplate: "";
2418
+ readonly rlsUsesHasPermission: true;
2419
+ };
2420
+ readonly kg_value_match: {
2421
+ readonly resourceType: "kg_value_match";
2422
+ readonly tableName: "kg_value_matches";
2423
+ readonly schemaName: "rag";
2424
+ readonly idColumn: "id";
2425
+ readonly ownerColumn: "created_by";
2426
+ readonly isPublicColumn: null;
2427
+ readonly displayLabel: "Kg Value Match";
2428
+ readonly urlPathTemplate: "";
2429
+ readonly rlsUsesHasPermission: true;
2430
+ };
2431
+ readonly league_membership: {
2432
+ readonly resourceType: "league_membership";
2433
+ readonly tableName: "league_membership";
2434
+ readonly schemaName: "education";
2435
+ readonly idColumn: "id";
2436
+ readonly ownerColumn: "created_by";
2437
+ readonly isPublicColumn: null;
2438
+ readonly displayLabel: "League Membership";
2439
+ readonly urlPathTemplate: "";
2440
+ readonly rlsUsesHasPermission: true;
2441
+ };
2442
+ readonly library_doc: {
2443
+ readonly resourceType: "library_doc";
2444
+ readonly tableName: "library_docs";
2445
+ readonly schemaName: "rag";
2446
+ readonly idColumn: "id";
2447
+ readonly ownerColumn: "created_by";
2448
+ readonly isPublicColumn: null;
2449
+ readonly displayLabel: "Library Doc";
2450
+ readonly urlPathTemplate: "";
2451
+ readonly rlsUsesHasPermission: true;
2452
+ };
2453
+ /**
2454
+ * A user/org-created mandate (`mandate.definition`). Sharing NEVER moves it: a person or
2455
+ * organization share is an iam.permissions grant, "Anyone" is visibility public, and the
2456
+ * creator keeps ownership (mandate_share_without_move.sql, 2026-09-25). No id route —
2457
+ * mandate pages are addressed by key — so `urlPathTemplate` stays honestly empty.
2458
+ */
2459
+ readonly mandate: {
2460
+ readonly resourceType: "mandate";
2461
+ readonly tableName: "definition";
2462
+ readonly schemaName: "mandate";
2463
+ readonly idColumn: "id";
2464
+ readonly ownerColumn: "created_by";
2465
+ readonly isPublicColumn: null;
2466
+ readonly displayLabel: "Mandate";
2467
+ readonly urlPathTemplate: "";
2468
+ readonly rlsUsesHasPermission: true;
2469
+ };
2470
+ readonly mandate_binding: {
2471
+ readonly resourceType: "mandate_binding";
2472
+ readonly tableName: "binding";
2473
+ readonly schemaName: "mandate";
2474
+ readonly idColumn: "id";
2475
+ readonly ownerColumn: "created_by";
2476
+ readonly isPublicColumn: null;
2477
+ readonly displayLabel: "Mandate Binding";
2478
+ readonly urlPathTemplate: "";
2479
+ readonly rlsUsesHasPermission: true;
2480
+ };
2481
+ readonly mandate_treatment: {
2482
+ readonly resourceType: "mandate_treatment";
2483
+ readonly tableName: "treatment";
2484
+ readonly schemaName: "mandate";
2485
+ readonly idColumn: "id";
2486
+ readonly ownerColumn: "created_by";
2487
+ readonly isPublicColumn: null;
2488
+ readonly displayLabel: "Mandate Treatment";
2489
+ readonly urlPathTemplate: "";
2490
+ readonly rlsUsesHasPermission: true;
2491
+ };
2492
+ readonly media_catalog_setting: {
2493
+ readonly resourceType: "media_catalog_setting";
2494
+ readonly tableName: "catalog_setting";
2495
+ readonly schemaName: "media";
2496
+ readonly idColumn: "id";
2497
+ readonly ownerColumn: "created_by";
2498
+ readonly isPublicColumn: null;
2499
+ readonly displayLabel: "Media Catalog Setting";
2500
+ readonly urlPathTemplate: "";
2501
+ readonly rlsUsesHasPermission: true;
2502
+ };
2503
+ readonly media_source_library: {
2504
+ readonly resourceType: "media_source_library";
2505
+ readonly tableName: "source_library";
2506
+ readonly schemaName: "media";
2507
+ readonly idColumn: "id";
2508
+ readonly ownerColumn: "created_by";
2509
+ readonly isPublicColumn: null;
2510
+ readonly displayLabel: "Media Source Library";
2511
+ readonly urlPathTemplate: "";
2512
+ readonly rlsUsesHasPermission: true;
2513
+ };
2514
+ readonly meet_call_invite: {
2515
+ readonly resourceType: "meet_call_invite";
2516
+ readonly tableName: "meet_call_invites";
2517
+ readonly schemaName: "communication";
2518
+ readonly idColumn: "id";
2519
+ readonly ownerColumn: "created_by";
2520
+ readonly isPublicColumn: null;
2521
+ readonly displayLabel: "Meet Call Invite";
2522
+ readonly urlPathTemplate: "";
2523
+ readonly rlsUsesHasPermission: true;
2524
+ };
2525
+ readonly meet_meeting: {
2526
+ readonly resourceType: "meet_meeting";
2527
+ readonly tableName: "meet_meetings";
2528
+ readonly schemaName: "communication";
2529
+ readonly idColumn: "id";
2530
+ readonly ownerColumn: "created_by";
2531
+ readonly isPublicColumn: null;
2532
+ readonly displayLabel: "Meeting";
2533
+ readonly urlPathTemplate: "/meet/{id}";
2534
+ readonly rlsUsesHasPermission: true;
2535
+ };
2536
+ readonly merge_field_provenance: {
2537
+ readonly resourceType: "merge_field_provenance";
2538
+ readonly tableName: "merge_field_provenance";
2539
+ readonly schemaName: "custom";
2540
+ readonly idColumn: "id";
2541
+ readonly ownerColumn: "created_by";
2542
+ readonly isPublicColumn: null;
2543
+ readonly displayLabel: "Merge Field Provenance";
2544
+ readonly urlPathTemplate: "";
2545
+ readonly rlsUsesHasPermission: true;
2546
+ };
2547
+ readonly ner_shadow: {
2548
+ readonly resourceType: "ner_shadow";
2549
+ readonly tableName: "ner_canonicalizer_shadow";
2550
+ readonly schemaName: "rag";
2551
+ readonly idColumn: "id";
2552
+ readonly ownerColumn: "created_by";
2553
+ readonly isPublicColumn: null;
2554
+ readonly displayLabel: "Ner Shadow";
2555
+ readonly urlPathTemplate: "";
2556
+ readonly rlsUsesHasPermission: true;
2557
+ };
2558
+ readonly notification: {
2559
+ readonly resourceType: "notification";
2560
+ readonly tableName: "notification";
2561
+ readonly schemaName: "communication";
2562
+ readonly idColumn: "id";
2563
+ readonly ownerColumn: "created_by";
2564
+ readonly isPublicColumn: null;
2565
+ readonly displayLabel: "Notification";
2566
+ readonly urlPathTemplate: "";
2567
+ readonly rlsUsesHasPermission: true;
2568
+ };
2569
+ readonly notification_event_override: {
2570
+ readonly resourceType: "notification_event_override";
2571
+ readonly tableName: "notification_event_override";
2572
+ readonly schemaName: "communication";
2573
+ readonly idColumn: "id";
2574
+ readonly ownerColumn: "created_by";
2575
+ readonly isPublicColumn: null;
2576
+ readonly displayLabel: "Notification Event Override";
2577
+ readonly urlPathTemplate: "";
2578
+ readonly rlsUsesHasPermission: true;
2579
+ };
2580
+ readonly notification_event_type: {
2581
+ readonly resourceType: "notification_event_type";
2582
+ readonly tableName: "notification_event_type";
2583
+ readonly schemaName: "communication";
2584
+ readonly idColumn: "id";
2585
+ readonly ownerColumn: "created_by";
2586
+ readonly isPublicColumn: null;
2587
+ readonly displayLabel: "Notification Event Type";
2588
+ readonly urlPathTemplate: "";
2589
+ readonly rlsUsesHasPermission: true;
2590
+ };
2591
+ readonly notification_preference: {
2592
+ readonly resourceType: "notification_preference";
2593
+ readonly tableName: "notification_preference";
2594
+ readonly schemaName: "communication";
2595
+ readonly idColumn: "id";
2596
+ readonly ownerColumn: "created_by";
2597
+ readonly isPublicColumn: null;
2598
+ readonly displayLabel: "Notification Preference";
2599
+ readonly urlPathTemplate: "";
2600
+ readonly rlsUsesHasPermission: true;
2601
+ };
2602
+ readonly ops_proof_check: {
2603
+ readonly resourceType: "ops_proof_check";
2604
+ readonly tableName: "proof_check";
2605
+ readonly schemaName: "ops";
2606
+ readonly idColumn: "id";
2607
+ readonly ownerColumn: "created_by";
2608
+ readonly isPublicColumn: null;
2609
+ readonly displayLabel: "Ops Proof Check";
2610
+ readonly urlPathTemplate: "";
2611
+ readonly rlsUsesHasPermission: true;
2612
+ };
2613
+ readonly ops_proof_scenario: {
2614
+ readonly resourceType: "ops_proof_scenario";
2615
+ readonly tableName: "proof_scenario";
2616
+ readonly schemaName: "ops";
2617
+ readonly idColumn: "id";
2618
+ readonly ownerColumn: "created_by";
2619
+ readonly isPublicColumn: null;
2620
+ readonly displayLabel: "Ops Proof Scenario";
2621
+ readonly urlPathTemplate: "";
2622
+ readonly rlsUsesHasPermission: true;
2623
+ };
2624
+ readonly org_member_control: {
2625
+ readonly resourceType: "org_member_control";
2626
+ readonly tableName: "org_member_controls";
2627
+ readonly schemaName: "iam";
2628
+ readonly idColumn: "id";
2629
+ readonly ownerColumn: "created_by";
2630
+ readonly isPublicColumn: null;
2631
+ readonly displayLabel: "Org Member Control";
2632
+ readonly urlPathTemplate: "";
2633
+ readonly rlsUsesHasPermission: true;
2634
+ };
2635
+ readonly organization: {
2636
+ readonly resourceType: "organization";
2637
+ readonly tableName: "organizations";
2638
+ readonly schemaName: "iam";
2639
+ readonly idColumn: "id";
2640
+ readonly ownerColumn: "created_by";
2641
+ readonly isPublicColumn: null;
2642
+ readonly displayLabel: "Organization";
2643
+ readonly urlPathTemplate: "";
2644
+ readonly rlsUsesHasPermission: true;
2645
+ };
2646
+ readonly output_feedback: {
2647
+ readonly resourceType: "output_feedback";
2648
+ readonly tableName: "output_feedback";
2649
+ readonly schemaName: "platform";
2650
+ readonly idColumn: "id";
2651
+ readonly ownerColumn: "created_by";
2652
+ readonly isPublicColumn: null;
2653
+ readonly displayLabel: "Output Feedback";
2654
+ readonly urlPathTemplate: "";
2655
+ readonly rlsUsesHasPermission: true;
2656
+ };
2657
+ readonly page_extraction_job: {
2658
+ readonly resourceType: "page_extraction_job";
2659
+ readonly tableName: "page_extraction_jobs";
2660
+ readonly schemaName: "docproc";
2661
+ readonly idColumn: "id";
2662
+ readonly ownerColumn: "created_by";
2663
+ readonly isPublicColumn: null;
2664
+ readonly displayLabel: "Page Extraction Job";
2665
+ readonly urlPathTemplate: "";
2666
+ readonly rlsUsesHasPermission: true;
2667
+ };
2668
+ readonly page_extraction_page_run: {
2669
+ readonly resourceType: "page_extraction_page_run";
2670
+ readonly tableName: "page_extraction_page_runs";
2671
+ readonly schemaName: "docproc";
2672
+ readonly idColumn: "id";
2673
+ readonly ownerColumn: "created_by";
2674
+ readonly isPublicColumn: null;
2675
+ readonly displayLabel: "Page Extraction Page Run";
2676
+ readonly urlPathTemplate: "";
2677
+ readonly rlsUsesHasPermission: true;
2678
+ };
2679
+ readonly pc_article: {
2680
+ readonly resourceType: "pc_article";
2681
+ readonly tableName: "pc_articles";
2682
+ readonly schemaName: "podcast";
2683
+ readonly idColumn: "id";
2684
+ readonly ownerColumn: "created_by";
2685
+ readonly isPublicColumn: null;
2686
+ readonly displayLabel: "Pc Article";
2687
+ readonly urlPathTemplate: "";
2688
+ readonly rlsUsesHasPermission: true;
2689
+ };
2690
+ readonly pc_episode: {
2691
+ readonly resourceType: "pc_episode";
2692
+ readonly tableName: "pc_episodes";
2693
+ readonly schemaName: "podcast";
2694
+ readonly idColumn: "id";
2695
+ readonly ownerColumn: "created_by";
2696
+ readonly isPublicColumn: null;
2697
+ readonly displayLabel: "Pc Episode";
2698
+ readonly urlPathTemplate: "";
2699
+ readonly rlsUsesHasPermission: true;
2700
+ };
2701
+ readonly pc_show: {
2702
+ readonly resourceType: "pc_show";
2703
+ readonly tableName: "pc_shows";
2704
+ readonly schemaName: "podcast";
2705
+ readonly idColumn: "id";
2706
+ readonly ownerColumn: "created_by";
2707
+ readonly isPublicColumn: null;
2708
+ readonly displayLabel: "Pc Show";
2709
+ readonly urlPathTemplate: "";
2710
+ readonly rlsUsesHasPermission: true;
2711
+ };
2712
+ readonly pc_studio_run: {
2713
+ readonly resourceType: "pc_studio_run";
2714
+ readonly tableName: "pc_studio_runs";
2715
+ readonly schemaName: "podcast";
2716
+ readonly idColumn: "id";
2717
+ readonly ownerColumn: "created_by";
2718
+ readonly isPublicColumn: null;
2719
+ readonly displayLabel: "Pc Studio Run";
2720
+ readonly urlPathTemplate: "";
2721
+ readonly rlsUsesHasPermission: true;
2722
+ };
2723
+ readonly plan_entity: {
2724
+ readonly resourceType: "plan_entity";
2725
+ readonly tableName: "entity";
2726
+ readonly schemaName: "plan";
2727
+ readonly idColumn: "id";
2728
+ readonly ownerColumn: "created_by";
2729
+ readonly isPublicColumn: null;
2730
+ readonly displayLabel: "Plan Entity";
2731
+ readonly urlPathTemplate: "";
2732
+ readonly rlsUsesHasPermission: true;
2733
+ };
2734
+ readonly plan_profile: {
2735
+ readonly resourceType: "plan_profile";
2736
+ readonly tableName: "profile";
2737
+ readonly schemaName: "plan";
2738
+ readonly idColumn: "id";
2739
+ readonly ownerColumn: "created_by";
2740
+ readonly isPublicColumn: null;
2741
+ readonly displayLabel: "Plan Profile";
2742
+ readonly urlPathTemplate: "";
2743
+ readonly rlsUsesHasPermission: true;
2744
+ };
2745
+ readonly platform_action_request: {
2746
+ readonly resourceType: "platform_action_request";
2747
+ readonly tableName: "action_request";
2748
+ readonly schemaName: "platform";
2749
+ readonly idColumn: "id";
2750
+ readonly ownerColumn: "created_by";
2751
+ readonly isPublicColumn: null;
2752
+ readonly displayLabel: "Platform Action Request";
2753
+ readonly urlPathTemplate: "";
2754
+ readonly rlsUsesHasPermission: true;
2755
+ };
2756
+ readonly platform_outcome_event: {
2757
+ readonly resourceType: "platform_outcome_event";
2758
+ readonly tableName: "outcome_event";
2759
+ readonly schemaName: "platform";
2760
+ readonly idColumn: "id";
2761
+ readonly ownerColumn: "created_by";
2762
+ readonly isPublicColumn: null;
2763
+ readonly displayLabel: "Platform Outcome Event";
2764
+ readonly urlPathTemplate: "";
2765
+ readonly rlsUsesHasPermission: true;
2766
+ };
2767
+ readonly platform_saved_view: {
2768
+ readonly resourceType: "platform_saved_view";
2769
+ readonly tableName: "saved_view";
2770
+ readonly schemaName: "platform";
2771
+ readonly idColumn: "id";
2772
+ readonly ownerColumn: "created_by";
2773
+ readonly isPublicColumn: null;
2774
+ readonly displayLabel: "Platform Saved View";
2775
+ readonly urlPathTemplate: "";
2776
+ readonly rlsUsesHasPermission: true;
2777
+ };
2778
+ readonly platform_share_link: {
2779
+ readonly resourceType: "platform_share_link";
2780
+ readonly tableName: "share_links";
2781
+ readonly schemaName: "platform";
2782
+ readonly idColumn: "id";
2783
+ readonly ownerColumn: "created_by";
2784
+ readonly isPublicColumn: null;
2785
+ readonly displayLabel: "Platform Share Link";
2786
+ readonly urlPathTemplate: "";
2787
+ readonly rlsUsesHasPermission: true;
2788
+ };
2789
+ readonly podcast_race: {
2790
+ readonly resourceType: "podcast_race";
2791
+ readonly tableName: "pc_race";
2792
+ readonly schemaName: "podcast";
2793
+ readonly idColumn: "id";
2794
+ readonly ownerColumn: "created_by";
2795
+ readonly isPublicColumn: null;
2796
+ readonly displayLabel: "Podcast Race";
2797
+ readonly urlPathTemplate: "";
2798
+ readonly rlsUsesHasPermission: true;
2799
+ };
2800
+ readonly product_capture_item: {
2801
+ readonly resourceType: "product_capture_item";
2802
+ readonly tableName: "product_capture_item";
2803
+ readonly schemaName: "workbench";
2804
+ readonly idColumn: "id";
2805
+ readonly ownerColumn: "created_by";
2806
+ readonly isPublicColumn: null;
2807
+ readonly displayLabel: "Product Capture Item";
2808
+ readonly urlPathTemplate: "";
2809
+ readonly rlsUsesHasPermission: true;
2810
+ };
2811
+ readonly purpose: {
2812
+ readonly resourceType: "purpose";
2813
+ readonly tableName: "purpose";
2814
+ readonly schemaName: "platform";
2815
+ readonly idColumn: "id";
2816
+ readonly ownerColumn: "created_by";
2817
+ readonly isPublicColumn: null;
2818
+ readonly displayLabel: "Purpose";
2819
+ readonly urlPathTemplate: "";
2820
+ readonly rlsUsesHasPermission: true;
2821
+ };
2822
+ readonly research_context_bundle: {
2823
+ readonly resourceType: "research_context_bundle";
2824
+ readonly tableName: "rs_context_bundle";
2825
+ readonly schemaName: "research";
2826
+ readonly idColumn: "id";
2827
+ readonly ownerColumn: "created_by";
2828
+ readonly isPublicColumn: null;
2829
+ readonly displayLabel: "Research Context Bundle";
2830
+ readonly urlPathTemplate: "";
2831
+ readonly rlsUsesHasPermission: true;
2832
+ };
2833
+ readonly scope_suggestion: {
2834
+ readonly resourceType: "scope_suggestion";
2835
+ readonly tableName: "scope_suggestions";
2836
+ readonly schemaName: "rag";
2837
+ readonly idColumn: "id";
2838
+ readonly ownerColumn: "created_by";
2839
+ readonly isPublicColumn: null;
2840
+ readonly displayLabel: "Scope Suggestion";
2841
+ readonly urlPathTemplate: "";
2842
+ readonly rlsUsesHasPermission: true;
2843
+ };
2844
+ readonly seo_engine_schedule: {
2845
+ readonly resourceType: "seo_engine_schedule";
2846
+ readonly tableName: "engine_schedule";
2847
+ readonly schemaName: "seo";
2848
+ readonly idColumn: "id";
2849
+ readonly ownerColumn: "created_by";
2850
+ readonly isPublicColumn: null;
2851
+ readonly displayLabel: "Seo Engine Schedule";
2852
+ readonly urlPathTemplate: "";
2853
+ readonly rlsUsesHasPermission: true;
2854
+ };
2855
+ readonly seo_gsc_dig_rule: {
2856
+ readonly resourceType: "seo_gsc_dig_rule";
2857
+ readonly tableName: "gsc_dig_rule";
2858
+ readonly schemaName: "seo";
2859
+ readonly idColumn: "id";
2860
+ readonly ownerColumn: "created_by";
2861
+ readonly isPublicColumn: null;
2862
+ readonly displayLabel: "Seo Gsc Dig Rule";
2863
+ readonly urlPathTemplate: "";
2864
+ readonly rlsUsesHasPermission: true;
2865
+ };
2866
+ readonly seo_keyword_class_rule: {
2867
+ readonly resourceType: "seo_keyword_class_rule";
2868
+ readonly tableName: "keyword_class_rule";
2869
+ readonly schemaName: "seo";
2870
+ readonly idColumn: "id";
2871
+ readonly ownerColumn: "created_by";
2872
+ readonly isPublicColumn: null;
2873
+ readonly displayLabel: "Seo Keyword Class Rule";
2874
+ readonly urlPathTemplate: "";
2875
+ readonly rlsUsesHasPermission: true;
2876
+ };
2877
+ readonly seo_coverage_tracker: {
2878
+ readonly resourceType: "seo_coverage_tracker";
2879
+ readonly tableName: "coverage_tracker";
2880
+ readonly schemaName: "seo";
2881
+ readonly idColumn: "id";
2882
+ readonly ownerColumn: "created_by";
2883
+ readonly isPublicColumn: null;
2884
+ readonly displayLabel: "News Monitor";
2885
+ readonly urlPathTemplate: "";
2886
+ readonly rlsUsesHasPermission: true;
2887
+ };
2888
+ readonly seo_source_request: {
2889
+ readonly resourceType: "seo_source_request";
2890
+ readonly tableName: "source_request";
2891
+ readonly schemaName: "seo";
2892
+ readonly idColumn: "id";
2893
+ readonly ownerColumn: "created_by";
2894
+ readonly isPublicColumn: null;
2895
+ readonly displayLabel: "Seo Source Request";
2896
+ readonly urlPathTemplate: "";
2897
+ readonly rlsUsesHasPermission: true;
2898
+ };
2899
+ readonly seo_story_angle: {
2900
+ readonly resourceType: "seo_story_angle";
2901
+ readonly tableName: "story_angle";
2902
+ readonly schemaName: "seo";
2903
+ readonly idColumn: "id";
2904
+ readonly ownerColumn: "created_by";
2905
+ readonly isPublicColumn: null;
2906
+ readonly displayLabel: "Seo Story Angle";
2907
+ readonly urlPathTemplate: "";
2908
+ readonly rlsUsesHasPermission: true;
2909
+ };
2910
+ readonly sms_consent: {
2911
+ readonly resourceType: "sms_consent";
2912
+ readonly tableName: "sms_consent";
2913
+ readonly schemaName: "communication";
2914
+ readonly idColumn: "id";
2915
+ readonly ownerColumn: "created_by";
2916
+ readonly isPublicColumn: null;
2917
+ readonly displayLabel: "Sms Consent";
2918
+ readonly urlPathTemplate: "";
2919
+ readonly rlsUsesHasPermission: true;
2920
+ };
2921
+ readonly sms_notification: {
2922
+ readonly resourceType: "sms_notification";
2923
+ readonly tableName: "sms_notifications";
2924
+ readonly schemaName: "communication";
2925
+ readonly idColumn: "id";
2926
+ readonly ownerColumn: "created_by";
2927
+ readonly isPublicColumn: null;
2928
+ readonly displayLabel: "Sms Notification";
2929
+ readonly urlPathTemplate: "";
2930
+ readonly rlsUsesHasPermission: true;
2931
+ };
2932
+ readonly sms_notification_preference: {
2933
+ readonly resourceType: "sms_notification_preference";
2934
+ readonly tableName: "sms_notification_preferences";
2935
+ readonly schemaName: "communication";
2936
+ readonly idColumn: "id";
2937
+ readonly ownerColumn: "created_by";
2938
+ readonly isPublicColumn: null;
2939
+ readonly displayLabel: "Sms Notification Preference";
2940
+ readonly urlPathTemplate: "";
2941
+ readonly rlsUsesHasPermission: true;
2942
+ };
2943
+ readonly sms_phone_number: {
2944
+ readonly resourceType: "sms_phone_number";
2945
+ readonly tableName: "sms_phone_numbers";
2946
+ readonly schemaName: "communication";
2947
+ readonly idColumn: "id";
2948
+ readonly ownerColumn: "created_by";
2949
+ readonly isPublicColumn: null;
2950
+ readonly displayLabel: "Sms Phone Number";
2951
+ readonly urlPathTemplate: "";
2952
+ readonly rlsUsesHasPermission: true;
2953
+ };
2954
+ readonly studio_recording_chunks: {
2955
+ readonly resourceType: "studio_recording_chunks";
2956
+ readonly tableName: "studio_recording_chunks";
2957
+ readonly schemaName: "transcripts";
2958
+ readonly idColumn: "id";
2959
+ readonly ownerColumn: "created_by";
2960
+ readonly isPublicColumn: null;
2961
+ readonly displayLabel: "Studio Recording Chunks";
2962
+ readonly urlPathTemplate: "";
2963
+ readonly rlsUsesHasPermission: true;
2964
+ };
2965
+ readonly studio_run: {
2966
+ readonly resourceType: "studio_run";
2967
+ readonly tableName: "studio_runs";
2968
+ readonly schemaName: "transcripts";
2969
+ readonly idColumn: "id";
2970
+ readonly ownerColumn: "created_by";
2971
+ readonly isPublicColumn: null;
2972
+ readonly displayLabel: "Studio Run";
2973
+ readonly urlPathTemplate: "";
2974
+ readonly rlsUsesHasPermission: true;
2975
+ };
2976
+ readonly study_attempt: {
2977
+ readonly resourceType: "study_attempt";
2978
+ readonly tableName: "study_attempt";
2979
+ readonly schemaName: "education";
2980
+ readonly idColumn: "id";
2981
+ readonly ownerColumn: "created_by";
2982
+ readonly isPublicColumn: null;
2983
+ readonly displayLabel: "Study Attempt";
2984
+ readonly urlPathTemplate: "";
2985
+ readonly rlsUsesHasPermission: true;
2986
+ };
2987
+ readonly study_goal: {
2988
+ readonly resourceType: "study_goal";
2989
+ readonly tableName: "study_goal";
2990
+ readonly schemaName: "education";
2991
+ readonly idColumn: "id";
2992
+ readonly ownerColumn: "created_by";
2993
+ readonly isPublicColumn: null;
2994
+ readonly displayLabel: "Study Goal";
2995
+ readonly urlPathTemplate: "";
2996
+ readonly rlsUsesHasPermission: true;
2997
+ };
2998
+ readonly study_plan: {
2999
+ readonly resourceType: "study_plan";
3000
+ readonly tableName: "study_plan";
3001
+ readonly schemaName: "education";
3002
+ readonly idColumn: "id";
3003
+ readonly ownerColumn: "created_by";
3004
+ readonly isPublicColumn: null;
3005
+ readonly displayLabel: "Study Plan";
3006
+ readonly urlPathTemplate: "";
3007
+ readonly rlsUsesHasPermission: true;
3008
+ };
3009
+ readonly study_plan_block: {
3010
+ readonly resourceType: "study_plan_block";
3011
+ readonly tableName: "study_plan_block";
3012
+ readonly schemaName: "education";
3013
+ readonly idColumn: "id";
3014
+ readonly ownerColumn: "created_by";
3015
+ readonly isPublicColumn: null;
3016
+ readonly displayLabel: "Study Plan Block";
3017
+ readonly urlPathTemplate: "";
3018
+ readonly rlsUsesHasPermission: true;
3019
+ };
3020
+ readonly study_plan_day: {
3021
+ readonly resourceType: "study_plan_day";
3022
+ readonly tableName: "study_plan_day";
3023
+ readonly schemaName: "education";
3024
+ readonly idColumn: "id";
3025
+ readonly ownerColumn: "created_by";
3026
+ readonly isPublicColumn: null;
3027
+ readonly displayLabel: "Study Plan Day";
3028
+ readonly urlPathTemplate: "";
3029
+ readonly rlsUsesHasPermission: true;
3030
+ };
3031
+ readonly study_session: {
3032
+ readonly resourceType: "study_session";
3033
+ readonly tableName: "study_session";
3034
+ readonly schemaName: "education";
3035
+ readonly idColumn: "id";
3036
+ readonly ownerColumn: "created_by";
3037
+ readonly isPublicColumn: null;
3038
+ readonly displayLabel: "Study Session";
3039
+ readonly urlPathTemplate: "";
3040
+ readonly rlsUsesHasPermission: true;
3041
+ };
3042
+ readonly udt_dataset_template: {
3043
+ readonly resourceType: "udt_dataset_template";
3044
+ readonly tableName: "udt_dataset_templates";
3045
+ readonly schemaName: "workbench";
3046
+ readonly idColumn: "id";
3047
+ readonly ownerColumn: "created_by";
3048
+ readonly isPublicColumn: null;
3049
+ readonly displayLabel: "Udt Dataset Template";
3050
+ readonly urlPathTemplate: "";
3051
+ readonly rlsUsesHasPermission: true;
3052
+ };
3053
+ readonly ui_surface_agent_pref: {
3054
+ readonly resourceType: "ui_surface_agent_pref";
3055
+ readonly tableName: "ui_surface_agent_pref";
3056
+ readonly schemaName: "ui";
3057
+ readonly idColumn: "id";
3058
+ readonly ownerColumn: "created_by";
3059
+ readonly isPublicColumn: null;
3060
+ readonly displayLabel: "Ui Surface Agent Pref";
3061
+ readonly urlPathTemplate: "";
3062
+ readonly rlsUsesHasPermission: true;
3063
+ };
3064
+ readonly ui_surface_config: {
3065
+ readonly resourceType: "ui_surface_config";
3066
+ readonly tableName: "ui_surface_config";
3067
+ readonly schemaName: "ui";
3068
+ readonly idColumn: "id";
3069
+ readonly ownerColumn: "created_by";
3070
+ readonly isPublicColumn: null;
3071
+ readonly displayLabel: "Ui Surface Config";
3072
+ readonly urlPathTemplate: "";
3073
+ readonly rlsUsesHasPermission: true;
3074
+ };
3075
+ readonly user_achievement: {
3076
+ readonly resourceType: "user_achievement";
3077
+ readonly tableName: "user_achievements";
3078
+ readonly schemaName: "users";
3079
+ readonly idColumn: "id";
3080
+ readonly ownerColumn: "created_by";
3081
+ readonly isPublicColumn: null;
3082
+ readonly displayLabel: "User Achievement";
3083
+ readonly urlPathTemplate: "";
3084
+ readonly rlsUsesHasPermission: true;
3085
+ };
3086
+ readonly user_email_preference: {
3087
+ readonly resourceType: "user_email_preference";
3088
+ readonly tableName: "user_email_preferences";
3089
+ readonly schemaName: "users";
3090
+ readonly idColumn: "id";
3091
+ readonly ownerColumn: "created_by";
3092
+ readonly isPublicColumn: null;
3093
+ readonly displayLabel: "User Email Preference";
3094
+ readonly urlPathTemplate: "";
3095
+ readonly rlsUsesHasPermission: true;
3096
+ };
3097
+ readonly user_markdown_sample: {
3098
+ readonly resourceType: "user_markdown_sample";
3099
+ readonly tableName: "user_markdown_samples";
3100
+ readonly schemaName: "users";
3101
+ readonly idColumn: "id";
3102
+ readonly ownerColumn: "created_by";
3103
+ readonly isPublicColumn: null;
3104
+ readonly displayLabel: "User Markdown Sample";
3105
+ readonly urlPathTemplate: "";
3106
+ readonly rlsUsesHasPermission: true;
3107
+ };
3108
+ readonly user_memory: {
3109
+ readonly resourceType: "user_memory";
3110
+ readonly tableName: "user_memory";
3111
+ readonly schemaName: "users";
3112
+ readonly idColumn: "id";
3113
+ readonly ownerColumn: "created_by";
3114
+ readonly isPublicColumn: null;
3115
+ readonly displayLabel: "User Memory";
3116
+ readonly urlPathTemplate: "";
3117
+ readonly rlsUsesHasPermission: true;
3118
+ };
3119
+ readonly user_profile: {
3120
+ readonly resourceType: "user_profile";
3121
+ readonly tableName: "profiles";
3122
+ readonly schemaName: "users";
3123
+ readonly idColumn: "id";
3124
+ readonly ownerColumn: "created_by";
3125
+ readonly isPublicColumn: null;
3126
+ readonly displayLabel: "User Profile";
3127
+ readonly urlPathTemplate: "";
3128
+ readonly rlsUsesHasPermission: true;
3129
+ };
3130
+ readonly user_stat: {
3131
+ readonly resourceType: "user_stat";
3132
+ readonly tableName: "user_stats";
3133
+ readonly schemaName: "users";
3134
+ readonly idColumn: "id";
3135
+ readonly ownerColumn: "created_by";
3136
+ readonly isPublicColumn: null;
3137
+ readonly displayLabel: "User Stat";
3138
+ readonly urlPathTemplate: "";
3139
+ readonly rlsUsesHasPermission: true;
3140
+ };
3141
+ readonly user_surface_state: {
3142
+ readonly resourceType: "user_surface_state";
3143
+ readonly tableName: "user_surface_state";
3144
+ readonly schemaName: "users";
3145
+ readonly idColumn: "id";
3146
+ readonly ownerColumn: "created_by";
3147
+ readonly isPublicColumn: null;
3148
+ readonly displayLabel: "User Surface State";
3149
+ readonly urlPathTemplate: "";
3150
+ readonly rlsUsesHasPermission: true;
3151
+ };
3152
+ readonly wbx_capture: {
3153
+ readonly resourceType: "wbx_capture";
3154
+ readonly tableName: "wbx_capture";
3155
+ readonly schemaName: "extend";
3156
+ readonly idColumn: "id";
3157
+ readonly ownerColumn: "created_by";
3158
+ readonly isPublicColumn: null;
3159
+ readonly displayLabel: "Wbx Capture";
3160
+ readonly urlPathTemplate: "";
3161
+ readonly rlsUsesHasPermission: true;
3162
+ };
3163
+ readonly wbx_demo: {
3164
+ readonly resourceType: "wbx_demo";
3165
+ readonly tableName: "wbx_demo";
3166
+ readonly schemaName: "extend";
3167
+ readonly idColumn: "id";
3168
+ readonly ownerColumn: "created_by";
3169
+ readonly isPublicColumn: null;
3170
+ readonly displayLabel: "Wbx Demo";
3171
+ readonly urlPathTemplate: "";
3172
+ readonly rlsUsesHasPermission: true;
3173
+ };
3174
+ readonly wbx_highlight: {
3175
+ readonly resourceType: "wbx_highlight";
3176
+ readonly tableName: "wbx_highlight";
3177
+ readonly schemaName: "extend";
3178
+ readonly idColumn: "id";
3179
+ readonly ownerColumn: "created_by";
3180
+ readonly isPublicColumn: null;
3181
+ readonly displayLabel: "Wbx Highlight";
3182
+ readonly urlPathTemplate: "";
3183
+ readonly rlsUsesHasPermission: true;
3184
+ };
3185
+ readonly wbx_pattern: {
3186
+ readonly resourceType: "wbx_pattern";
3187
+ readonly tableName: "wbx_pattern";
3188
+ readonly schemaName: "extend";
3189
+ readonly idColumn: "id";
3190
+ readonly ownerColumn: "created_by";
3191
+ readonly isPublicColumn: null;
3192
+ readonly displayLabel: "Wbx Pattern";
3193
+ readonly urlPathTemplate: "";
3194
+ readonly rlsUsesHasPermission: true;
3195
+ };
3196
+ readonly wbx_screenshot: {
3197
+ readonly resourceType: "wbx_screenshot";
3198
+ readonly tableName: "wbx_screenshot";
3199
+ readonly schemaName: "extend";
3200
+ readonly idColumn: "id";
3201
+ readonly ownerColumn: "created_by";
3202
+ readonly isPublicColumn: null;
3203
+ readonly displayLabel: "Wbx Screenshot";
3204
+ readonly urlPathTemplate: "";
3205
+ readonly rlsUsesHasPermission: true;
3206
+ };
3207
+ readonly wbx_seo_audit: {
3208
+ readonly resourceType: "wbx_seo_audit";
3209
+ readonly tableName: "wbx_seo_audit";
3210
+ readonly schemaName: "extend";
3211
+ readonly idColumn: "id";
3212
+ readonly ownerColumn: "created_by";
3213
+ readonly isPublicColumn: null;
3214
+ readonly displayLabel: "Wbx Seo Audit";
3215
+ readonly urlPathTemplate: "";
3216
+ readonly rlsUsesHasPermission: true;
3217
+ };
3218
+ readonly web_youtube_video: {
3219
+ readonly resourceType: "web_youtube_video";
3220
+ readonly tableName: "youtube_video";
3221
+ readonly schemaName: "web";
3222
+ readonly idColumn: "id";
3223
+ readonly ownerColumn: "created_by";
3224
+ readonly isPublicColumn: null;
3225
+ readonly displayLabel: "Web Youtube Video";
3226
+ readonly urlPathTemplate: "";
3227
+ readonly rlsUsesHasPermission: true;
3228
+ };
3229
+ readonly workflow_comparison: {
3230
+ readonly resourceType: "workflow_comparison";
3231
+ readonly tableName: "comparison";
3232
+ readonly schemaName: "workflow";
3233
+ readonly idColumn: "id";
3234
+ readonly ownerColumn: "created_by";
3235
+ readonly isPublicColumn: null;
3236
+ readonly displayLabel: "Workflow Comparison";
3237
+ readonly urlPathTemplate: "";
3238
+ readonly rlsUsesHasPermission: true;
3239
+ };
3240
+ readonly agent_term_list: {
3241
+ readonly resourceType: "agent_term_list";
3242
+ readonly tableName: "term_list";
3243
+ readonly schemaName: "agent";
3244
+ readonly idColumn: "id";
3245
+ readonly ownerColumn: "created_by";
3246
+ readonly isPublicColumn: null;
3247
+ readonly displayLabel: "Term List";
3248
+ readonly urlPathTemplate: "/resources/term-lists";
3249
+ readonly rlsUsesHasPermission: true;
3250
+ };
3251
+ readonly document: {
3252
+ readonly resourceType: "document";
3253
+ readonly tableName: "document";
3254
+ readonly schemaName: "content";
3255
+ readonly idColumn: "id";
3256
+ readonly ownerColumn: "created_by";
3257
+ readonly isPublicColumn: null;
3258
+ readonly displayLabel: "Document";
3259
+ readonly urlPathTemplate: "/documents/{id}";
3260
+ readonly rlsUsesHasPermission: true;
3261
+ };
3262
+ readonly files_sync_mapping: {
3263
+ readonly resourceType: "files_sync_mapping";
3264
+ readonly tableName: "sync_mappings";
3265
+ readonly schemaName: "files";
3266
+ readonly idColumn: "id";
3267
+ readonly ownerColumn: "created_by";
3268
+ readonly isPublicColumn: null;
3269
+ readonly displayLabel: "Sync Mapping";
3270
+ readonly urlPathTemplate: "";
3271
+ readonly rlsUsesHasPermission: true;
3272
+ };
3273
+ readonly kg_suggestion_ack: {
3274
+ readonly resourceType: "kg_suggestion_ack";
3275
+ readonly tableName: "kg_suggestion_ack";
3276
+ readonly schemaName: "rag";
3277
+ readonly idColumn: "id";
3278
+ readonly ownerColumn: "created_by";
3279
+ readonly isPublicColumn: null;
3280
+ readonly displayLabel: "KG Suggestion Ack";
3281
+ readonly urlPathTemplate: "";
3282
+ readonly rlsUsesHasPermission: true;
3283
+ };
3284
+ readonly mcp_user_conn: {
3285
+ readonly resourceType: "mcp_user_conn";
3286
+ readonly tableName: "mcp_user_conn";
3287
+ readonly schemaName: "tool";
3288
+ readonly idColumn: "id";
3289
+ readonly ownerColumn: "created_by";
3290
+ readonly isPublicColumn: null;
3291
+ readonly displayLabel: "MCP user connection";
3292
+ readonly urlPathTemplate: "";
3293
+ readonly rlsUsesHasPermission: true;
3294
+ };
3295
+ readonly notification_channel_preference: {
3296
+ readonly resourceType: "notification_channel_preference";
3297
+ readonly tableName: "notification_channel_preference";
3298
+ readonly schemaName: "communication";
3299
+ readonly idColumn: "id";
3300
+ readonly ownerColumn: "created_by";
3301
+ readonly isPublicColumn: null;
3302
+ readonly displayLabel: "Notification Channel Preference";
3303
+ readonly urlPathTemplate: "";
3304
+ readonly rlsUsesHasPermission: true;
3305
+ };
3306
+ readonly study_reminder_context: {
3307
+ readonly resourceType: "study_reminder_context";
3308
+ readonly tableName: "study_reminder_context";
3309
+ readonly schemaName: "education";
3310
+ readonly idColumn: "id";
3311
+ readonly ownerColumn: "created_by";
3312
+ readonly isPublicColumn: null;
3313
+ readonly displayLabel: "Study Reminder Context";
3314
+ readonly urlPathTemplate: "";
3315
+ readonly rlsUsesHasPermission: true;
3316
+ };
3317
+ readonly study_reminder_delivery: {
3318
+ readonly resourceType: "study_reminder_delivery";
3319
+ readonly tableName: "study_reminder_delivery";
3320
+ readonly schemaName: "education";
3321
+ readonly idColumn: "id";
3322
+ readonly ownerColumn: "created_by";
3323
+ readonly isPublicColumn: null;
3324
+ readonly displayLabel: "Study Reminder Delivery";
3325
+ readonly urlPathTemplate: "";
3326
+ readonly rlsUsesHasPermission: true;
3327
+ };
3328
+ };
3329
+ /**
3330
+ * Union of all valid resource-type tokens. Exactly mirrors the registry keys.
3331
+ */
3332
+ type ResourceType = keyof typeof SHAREABLE_RESOURCE_REGISTRY;
3333
+ /** Ordered list of resource-type tokens (useful for tests, dropdowns, etc.) */
3334
+ declare const RESOURCE_TYPES: ResourceType[];
3335
+ /**
3336
+ * Look up a registry entry by canonical entity token. A physical table name is
3337
+ * never accepted as an identity key: names such as `definition` repeat across
3338
+ * schemas, so a bare-name lookup cannot be made deterministic.
3339
+ */
3340
+ declare function getShareableResource(resourceType: string): ShareableResourceEntry | undefined;
3341
+ /**
3342
+ * Resolve a resource type to its PHYSICAL Postgres table name. Throws if the
3343
+ * type isn't registered. NOTE: for `iam.permissions.resource_type` filters and
3344
+ * share-RPC arguments use the TOKEN (`resourceType`) instead — this returns the
3345
+ * physical table, which differs from the token on canonical tables.
3346
+ */
3347
+ declare function resolveTableName(resourceType: string): string;
3348
+ /**
3349
+ * Resolve a resource type to its canonical ENTITY TOKEN — the value stored in
3350
+ * `iam.permissions.resource_type` and passed to the share RPCs. Throws if the
3351
+ * type isn't registered. Use this (never resolveTableName) for any
3352
+ * permissions/grant query or RPC call.
3353
+ */
3354
+ declare function resolveResourceToken(resourceType: string): string;
3355
+ /** Human-readable label for a resource type (replaces the legacy map). */
3356
+ declare function getResourceTypeLabel(resourceType: string): string;
3357
+ /**
3358
+ * Build the share path for a resource. Returns a relative path, or `null` when
3359
+ * we genuinely cannot open this resource — the caller must handle null and say
3360
+ * so honestly rather than rendering a broken link.
3361
+ *
3362
+ * THE DOOR LAW, and specifically the "one canonical path per operation" rule:
3363
+ * route truth is the ENTITY REGISTRY (`features/scopes/registry`), so that is
3364
+ * consulted first. `url_path_template` in `platform.shareable_resource_registry`
3365
+ * is a second, DB-side route authority that had drifted badly — 24 of 73 active
3366
+ * rows advertised routes that do not exist (`/apps/{id}` when the real route is
3367
+ * `/applets/manage/{id}`; `/skills/{id}`, `/workflows/{id}`, `/quizzes/{id}`,
3368
+ * `/canvas/{id}`, `/code/files/{id}`, `/runs/{id}`, `/scopes/{id}` …). Audited
3369
+ * and corrected against the live `app/` tree on 2026-08-14
3370
+ * (`migrations/sharing_registry_route_truth_d138.sql`): every row now either
3371
+ * points at a real route or is EMPTY, and empty means "no signed-in destination"
3372
+ * — this function returns null and the caller renders no link.
3373
+ *
3374
+ * It is now only the FALLBACK, used for tokens the entity registry doesn't
3375
+ * cover. **Never add a plausible-looking path to a registry row to make a link
3376
+ * appear**; that guesswork IS defect D138.
3377
+ *
3378
+ * Two guesses were removed, both of which produced 404s that reached other
3379
+ * people:
3380
+ * - the `/${resourceType}/${resourceId}` fabrication for unregistered types;
3381
+ * - templates that still contain a placeholder after substitution — either a
3382
+ * non-id key (`{slug}`) or a second distinct segment the template can't
3383
+ * express (`/workflows/{id}/triggers/{id}`).
3384
+ */
3385
+ declare function getResourceSharePath(resourceType: string, resourceId: string): string | null;
3386
+
3387
+ /**
3388
+ * The ONE permission-level ladder.
3389
+ *
3390
+ * Every rank map, label map, ordered array and level union in the app derives
3391
+ * from `PERMISSION_LEVELS` below. Before this module existed the ladder was
3392
+ * hard-coded in eight places as `viewer | editor | admin`, so a fourth level
3393
+ * would have been missing from most of them — and missing SILENTLY: a rank
3394
+ * lookup returned `undefined`, `undefined >= 2` is `false`, and the holder of
3395
+ * the new level was refused with no message anywhere (law 4, nothing fails
3396
+ * silently). `getPermissionLevelLabel` was worse: it returned `undefined` and
3397
+ * the screen rendered a blank string where the level should be.
3398
+ *
3399
+ * ## Code ladder vs database enum — deliberately different widths
3400
+ *
3401
+ * `PERMISSION_LEVELS` (the CODE ladder) is the superset and includes
3402
+ * `commenter`. `DB_PERMISSION_LEVELS` (the DATABASE enum, read at runtime from
3403
+ * the generated `Constants`, never hand-typed) is what `public.permission_level`
3404
+ * actually holds today: `viewer, editor, admin`. `commenter` is NOT there yet.
3405
+ *
3406
+ * That gap is the whole point and it is safe in one direction only:
3407
+ *
3408
+ * - READING / COMPARING / LABELING a level: always use the code ladder. It
3409
+ * tolerates `commenter` the moment the database gains it, with no code change
3410
+ * and no silent refusal in between. Nothing breaks while the value never
3411
+ * arrives — the extra rank and label simply go unused.
3412
+ * - WRITING a level to the database, or OFFERING it in a picker: narrow through
3413
+ * `toDbPermissionLevel` / `DB_PERMISSION_LEVELS` first. Sending `commenter`
3414
+ * to Postgres today fails with `invalid input value for enum
3415
+ * public.permission_level`, so the ladder refuses it HERE, by name, with the
3416
+ * remedy — rather than letting a picker offer a value the save will reject.
3417
+ *
3418
+ * When `ALTER TYPE public.permission_level ADD VALUE 'commenter' BEFORE 'editor'`
3419
+ * is applied and `pnpm db-types` regenerated, `DB_PERMISSION_LEVELS` widens on
3420
+ * its own and every picker driven by it gains the option with no further edit.
3421
+ *
3422
+ * Doctrine: the access levels are `viewer` · `commenter` · `editor` · `admin`
3423
+ * (AI Matrx Data Doctrine R18, 2026-09-10;
3424
+ * common-docs/systems/platform/access/DECISIONS.md).
3425
+ * Guard: `utils/permissions/__tests__/permission-levels.test.ts` fails if any
3426
+ * rank map, label map or ordered array omits a level.
3427
+ */
3428
+
3429
+ /** The levels a picker may offer: what the database stores, never the retired `edit_content`. */
3430
+ declare const OFFERED_DB_PERMISSION_LEVELS: readonly DbPermissionLevel[];
3431
+ /** Rank of every level; a stray stored `edit_content` ranks as Edit so old data never crashes. */
3432
+ declare const PERMISSION_LEVEL_RANK: Record<PermissionLevel, number> & {
3433
+ edit_content: number;
3434
+ };
3435
+ declare function permissionLevelRank(level: PermissionLevel): number;
3436
+
3437
+ /**
3438
+ * Permission System Types
3439
+ *
3440
+ * The single source of truth for which resource types are shareable lives in
3441
+ * the database table `shareable_resource_registry`, mirrored in TypeScript by
3442
+ * `./registry.ts`. Do NOT add resource types here — add them to the registry.
3443
+ */
3444
+
3445
+ /**
3446
+ * Complete permission record from database
3447
+ */
3448
+ interface Permission {
3449
+ id: string;
3450
+ resourceType: ResourceType;
3451
+ resourceId: string;
3452
+ grantedToUserId?: string | null | undefined;
3453
+ grantedToOrganizationId?: string | null | undefined;
3454
+ isPublic?: boolean | undefined;
3455
+ permissionLevel: PermissionLevel;
3456
+ createdAt?: Date | undefined;
3457
+ createdBy?: string | undefined;
3458
+ }
3459
+ /**
3460
+ * Enriched permission with user/org details for display
3461
+ */
3462
+ interface PermissionWithDetails extends Permission {
3463
+ grantedToUser?: undefined | {
3464
+ id: string;
3465
+ email: string;
3466
+ displayName?: string | undefined;
3467
+ avatarUrl?: string | undefined;
3468
+ /** Not a member of the thing's organization (the store's answer, `get_resource_permissions`): shown as Guest. */
3469
+ isGuest?: boolean | undefined;
3470
+ };
3471
+ grantedToOrganization?: undefined | {
3472
+ id: string;
3473
+ name: string;
3474
+ slug: string;
3475
+ logoUrl?: string | undefined;
3476
+ };
3477
+ createdByUser?: {
3478
+ id: string;
3479
+ email: string;
3480
+ displayName?: string | undefined;
3481
+ };
3482
+ }
3483
+ interface ShareWithUserOptions {
3484
+ resourceType: ResourceType;
3485
+ resourceId: string;
3486
+ userId: string;
3487
+ permissionLevel: PermissionLevel;
3488
+ /**
3489
+ * Optional human title of the resource, used for the in-app DM notification
3490
+ * card ("X shared '<title>' with you"). Falls back to the type label.
3491
+ */
3492
+ resourceName?: string | undefined;
3493
+ /**
3494
+ * The organization the SHARED OBJECT lives in, from the page that opened the dialog (the
3495
+ * object's own resolver — never the active organization). The in-app notification is filed
3496
+ * there. Absent, the notification is filed in the organization the person is working in, and
3497
+ * when none is picked it is skipped and said — it never raises "Which workspace is this for?"
3498
+ * (lane ACCESS-FIX-18, VERIFIER-18 H4).
3499
+ */
3500
+ organizationId?: string | null | undefined;
3501
+ }
3502
+ /** Organization AVAILABILITY (org configuration), never a share — see grantOrgAvailability. */
3503
+ interface OrgAvailabilityOptions {
3504
+ resourceType: ResourceType;
3505
+ resourceId: string;
3506
+ organizationId: string;
3507
+ /**
3508
+ * Explicit level. Omit to let the server apply the org module's
3509
+ * `default_permission` (falls back to 'viewer'). Pickers pass a level; the
3510
+ * "contribute" flow omits it.
3511
+ */
3512
+ permissionLevel?: PermissionLevel | undefined;
3513
+ }
3514
+ interface MakePublicOptions {
3515
+ resourceType: ResourceType;
3516
+ resourceId: string;
3517
+ permissionLevel?: PermissionLevel | undefined;
3518
+ }
3519
+ interface UpdatePermissionOptions {
3520
+ resourceType: ResourceType;
3521
+ resourceId: string;
3522
+ userId?: string | undefined;
3523
+ organizationId?: string | undefined;
3524
+ isPublic?: boolean | undefined;
3525
+ newLevel: PermissionLevel;
3526
+ }
3527
+ interface RevokeAccessOptions {
3528
+ resourceType: ResourceType;
3529
+ resourceId: string;
3530
+ userId?: string | undefined;
3531
+ organizationId?: string | undefined;
3532
+ isPublic?: boolean | undefined;
3533
+ }
3534
+ interface PermissionCheckResult {
3535
+ hasAccess: boolean;
3536
+ level?: PermissionLevel | undefined;
3537
+ isOwner: boolean;
3538
+ reason?: string | undefined;
3539
+ }
3540
+ interface CheckPermissionOptions {
3541
+ resourceType: ResourceType;
3542
+ resourceId: string;
3543
+ requiredLevel?: PermissionLevel | undefined;
3544
+ }
3545
+ interface OwnedResource {
3546
+ id: string;
3547
+ user_id: string;
3548
+ [key: string]: unknown;
3549
+ }
3550
+ interface OwnerCheckResult {
3551
+ isOwner: boolean;
3552
+ ownerId: string;
3553
+ }
3554
+ type ShareTargetType = "user" | "organization" | "public";
3555
+ interface SharingState {
3556
+ isOpen: boolean;
3557
+ activeTab: ShareTargetType;
3558
+ permissions: PermissionWithDetails[];
3559
+ loading: boolean;
3560
+ error: string | null;
3561
+ searchQuery: string;
3562
+ selectedPermissionLevel: PermissionLevel;
3563
+ }
3564
+ interface ShareActionResult {
3565
+ success: boolean;
3566
+ message?: string | undefined;
3567
+ error?: string | undefined;
3568
+ permission?: Permission | undefined;
3569
+ }
3570
+ /**
3571
+ * Check if a permission level satisfies a required level
3572
+ */
3573
+ declare function satisfiesPermissionLevel(current: PermissionLevel, required: PermissionLevel): boolean;
3574
+ /**
3575
+ * Get all permission levels equal to or higher than the given level
3576
+ */
3577
+ declare function getPermissionLevelsAtOrAbove(level: PermissionLevel): PermissionLevel[];
3578
+ /**
3579
+ * Get display label for permission level
3580
+ */
3581
+ declare function getPermissionLevelLabel(level: PermissionLevel): string;
3582
+ /**
3583
+ * Validate permission data
3584
+ */
3585
+ declare function validatePermission(permission: Partial<Permission>): boolean;
3586
+ declare class PermissionError extends Error {
3587
+ code: string;
3588
+ details?: unknown | undefined | undefined;
3589
+ constructor(message: string, code: string, details?: unknown | undefined | undefined);
3590
+ }
3591
+ declare enum PermissionErrorCode {
3592
+ NOT_FOUND = "PERMISSION_NOT_FOUND",
3593
+ ALREADY_EXISTS = "PERMISSION_ALREADY_EXISTS",
3594
+ INVALID_LEVEL = "INVALID_PERMISSION_LEVEL",
3595
+ INVALID_TARGET = "INVALID_SHARE_TARGET",
3596
+ UNAUTHORIZED = "UNAUTHORIZED",
3597
+ DATABASE_ERROR = "DATABASE_ERROR",
3598
+ VALIDATION_ERROR = "VALIDATION_ERROR"
3599
+ }
3600
+
3601
+ /**
3602
+ * THE PUBLIC LANE — the ONE list of resource types that have a real
3603
+ * anonymous, indexable page at `/p/e/[resourceType]/[id]`.
3604
+ *
3605
+ * Why this module exists: the list used to live as a private const inside the
3606
+ * server loader, so the SHARE UI could not know whether flipping a resource to
3607
+ * `visibility='public'` actually produced a reachable page. It therefore told
3608
+ * every owner "anyone with the link can access this" — for a brand, a site, a
3609
+ * workflow, anything — while no such link existed. A share surface that claims
3610
+ * access it cannot deliver is a defect (features/sharing/FEATURE.md: "a share
3611
+ * surface that can't act must say why").
3612
+ *
3613
+ * Being public is a DATA state (the `pub_read` RLS policy). Having a public
3614
+ * PAGE is a product decision, made here. A type joins this lane only when it
3615
+ * has a public renderer and genuinely belongs in the SEO/community lane — a
3616
+ * public `dm_conversation` or `wc_claim` must never auto-publish to an indexed
3617
+ * page. For everything else, anonymous access is the share-link lane
3618
+ * (`platform.share_links` → `/s/[token]`, noindex).
3619
+ */
3620
+ /**
3621
+ * THE PUBLIC COLUMN LANE — for every type in the lane, the EXACT columns the
3622
+ * anonymous viewer reads from its base row.
3623
+ *
3624
+ * Why names and not `select("*")` (DD-186): a signed-out visitor may read only
3625
+ * the columns a relation declares to `anon`, and these tables no longer answer
3626
+ * `*` to the publishable key. `workbench.notes` and `agent.message_template`
3627
+ * both carry `created_by`, `updated_by`, `organization_id`, `metadata` and
3628
+ * `version`, which are nobody's business on an indexed public page — the loader
3629
+ * already refused to render them, but PostgREST was serving them to the browser
3630
+ * anyway, one HTTP round trip before the projection threw them away.
3631
+ *
3632
+ * `visibility` is in every list on purpose: the loader re-checks it in JS after
3633
+ * the read, and PostgREST cannot even filter on a column the role cannot select.
3634
+ *
3635
+ * Adding a type here means checking its columns against
3636
+ * matrx-frontend `lib/security/public-exposure.ts#ANON_COLUMN_SURFACE`; asking
3637
+ * for a column `anon` cannot read returns 42501 for the whole request, which
3638
+ * `pnpm check:anon-column-surface` is there to catch before a user does.
3639
+ *
3640
+ * `fc_set` is absent by design — it never takes this path. Its whole read is a
3641
+ * SECURITY DEFINER RPC (`get_public_flashcard_set`) that projects its own
3642
+ * columns server-side.
3643
+ */
3644
+ declare const PUBLIC_LANE_COLUMNS: Readonly<Record<string, readonly string[]>>;
3645
+ /** Types served by the indexable public lane. Add only with a public renderer. */
3646
+ declare const PUBLIC_LANE_TYPES: ReadonlySet<string>;
3647
+ /**
3648
+ * The columns the anonymous viewer may ask PostgREST for, as a `select` string.
3649
+ * Never falls back to `"*"`: a type in the lane with no declared columns is a
3650
+ * programming error, and returning `"*"` would quietly re-open the surface this
3651
+ * register exists to close.
3652
+ */
3653
+ declare function publicLaneSelect(resourceType: string): string;
3654
+ /** Does `visibility='public'` give this type a reachable anonymous page? */
3655
+ declare function hasPublicPage(resourceType: string): boolean;
3656
+ /**
3657
+ * The absolute public URL for a type in the lane, or null when the type has no
3658
+ * public page. Never fabricate a URL for a type outside the lane — that is the
3659
+ * exact lie this module was created to kill.
3660
+ */
3661
+ declare function publicResourceUrl(resourceType: string, id: string): string | null;
3662
+
3663
+ interface ShareLink {
3664
+ id: string;
3665
+ token: string;
3666
+ /** Token of the /r short alias (platform.short_links) — a URL alias only, never authorization. */
3667
+ shortToken: string | null;
3668
+ permissionLevel: PermissionLevel;
3669
+ label: string | null;
3670
+ expiresAt: string | null;
3671
+ maxUses: number | null;
3672
+ useCount: number;
3673
+ isActive: boolean;
3674
+ createdAt: string | null;
3675
+ lastUsedAt: string | null;
3676
+ }
3677
+ interface ResolvedShareToken {
3678
+ success: boolean;
3679
+ /** Machine error code when success=false (not_found | revoked | expired | exhausted | gone | unknown_type). */
3680
+ error?: string | undefined;
3681
+ /** Human-readable message when success=false. */
3682
+ message?: string | undefined;
3683
+ resourceType?: string | undefined;
3684
+ resourceId?: string | undefined;
3685
+ permissionLevel?: PermissionLevel | undefined;
3686
+ displayLabel?: string | undefined;
3687
+ urlPathTemplate?: string | undefined;
3688
+ /** The resource row as JSON (internal/heavy columns stripped). */
3689
+ resource?: Record<string, unknown> | undefined;
3690
+ /**
3691
+ * What the link holder sees BENEATH the record (children inherit their
3692
+ * parent) — a per-type projection from `platform.share_link_children`, e.g.
3693
+ * a shared chat's visible messages. Null for types without one.
3694
+ */
3695
+ children?: Record<string, unknown> | null | undefined;
3696
+ }
3697
+ /** What "Publish to the web" writes for a type (access ladder T-13; `get_share_capabilities`). */
3698
+ type PublishLane = "published_to_web" | "card" | "boolean";
3699
+ interface ShareCapabilities {
3700
+ /** Whether this type can be published to the web at all (`publishLane` is not null). */
3701
+ supportsPublic: boolean;
3702
+ /** Whether the resource type offers no-login share links (admin policy). */
3703
+ isLinkShareable: boolean;
3704
+ /**
3705
+ * The legacy boolean column behind a `boolean` publish lane; null for every other type.
3706
+ */
3707
+ publicState: {
3708
+ column: string;
3709
+ kind: "boolean";
3710
+ } | null;
3711
+ /**
3712
+ * The column naming the thing's OWN organization (`organization_id`), when its table has one.
3713
+ * The Share dialog reads it to tell a thing homed in its owner's own organization — where
3714
+ * "My organization" and "Add everyone in …" name nobody — for every kind (2026-09-26).
3715
+ */
3716
+ organizationColumn: "organization_id" | null;
3717
+ /** The type's level: organization · public · confidential · private; null when unregistered. */
3718
+ tableLevel: string | null;
3719
+ /**
3720
+ * The type carries the Words table's row controls — an Organization or Public table, never a
3721
+ * child. A Private, Confidential or child record has none (common-docs/policies/access-ladder.md).
3722
+ */
3723
+ rowControls: boolean;
3724
+ /** "Shown to" is offered for this type. */
3725
+ shownToOffered: boolean;
3726
+ /**
3727
+ * What "Publish to the web" writes: the row's own switch, the card's own publish (agent,
3728
+ * workflow — the body is never published), or a legacy boolean. Null: never published.
3729
+ */
3730
+ publishLane: PublishLane | null;
3731
+ /**
3732
+ * The column that marks ONE row as a child of another record (`parent_record_type` on files),
3733
+ * when the table has one. A child record carries no row control; read it per record.
3734
+ */
3735
+ rowChildColumn: string | null;
3736
+ }
3737
+ /**
3738
+ * What share affordances this resource type supports — drives which controls the
3739
+ * ShareModal shows (never render a toggle that would error on click). Admin-
3740
+ * editable, so read at runtime (not from the static registry mirror).
3741
+ */
3742
+ declare function getShareCapabilities(resourceType: ResourceType): Promise<ShareCapabilities>;
3743
+ interface CreateShareLinkOptions {
3744
+ resourceType: ResourceType;
3745
+ resourceId: string;
3746
+ permissionLevel?: PermissionLevel | undefined;
3747
+ expiresAt?: string | null | undefined;
3748
+ maxUses?: number | null | undefined;
3749
+ label?: string | null | undefined;
3750
+ }
3751
+ /** Build the absolute share URL for a token. */
3752
+ declare function shareLinkUrl(token: string): string;
3753
+ /**
3754
+ * The URL to hand a person for a share link — the short alias when one exists
3755
+ * (auto-shorten-every-share-link, owner ruling 2026-08-29), the full /s/ URL
3756
+ * otherwise. The alias is a redirect only; the 64-hex share token stays the
3757
+ * one authorization either way.
3758
+ */
3759
+ declare function shareUrlForLink(link: Pick<ShareLink, "token" | "shortToken">): string;
3760
+ /** Mint a share link for a resource (owner-only). Returns the token + URL. */
3761
+ declare function createShareLink(options: CreateShareLinkOptions): Promise<{
3762
+ success: boolean;
3763
+ token?: string | undefined;
3764
+ shortToken?: string | null | undefined;
3765
+ url?: string | undefined;
3766
+ error?: string | undefined;
3767
+ }>;
3768
+ /** List a resource's share links (owner-only). */
3769
+ declare function listShareLinks(resourceType: ResourceType, resourceId: string): Promise<ShareLink[]>;
3770
+ /** Revoke (deactivate) a share link by id (owner-only). */
3771
+ declare function revokeShareLink(linkId: string): Promise<{
3772
+ success: boolean;
3773
+ error?: string | undefined;
3774
+ }>;
3775
+ interface ForkResult {
3776
+ success: boolean;
3777
+ error?: string | undefined;
3778
+ /** Path to open the caller's new copy in the app. */
3779
+ path?: string | undefined;
3780
+ }
3781
+ /**
3782
+ * "Save a copy & use it" — fork a SHARED resource into the current user's own
3783
+ * account so a recipient can continue/use it (chat takeover, study a set, take a
3784
+ * quiz). Requires auth.
3785
+ *
3786
+ * `shareToken` is the no-login share-link token, passed ONLY when the viewer is
3787
+ * on the `/s/[token]` link lane. The DB RPCs authorize a link fork solely on a
3788
+ * VALID, ACTIVE token for THAT resource (SECURITY FIX — a caller-independent
3789
+ * "any active link exists" check previously let a stranger fork a private
3790
+ * resource the moment its owner had ever minted one link). A record published
3791
+ * to the web and explicit grants stay forkable token-less; the token is only
3792
+ * needed to authorize a private resource shared purely by no-login link. Returns
3793
+ * the path to the copy.
3794
+ */
3795
+ declare function forkSharedResource(resourceType: string, resourceId: string, shareToken?: string | undefined, organizationId?: string | null | undefined): Promise<ForkResult>;
3796
+ /** Whether a resource type supports "save a copy & use it" (fork). */
3797
+ declare function isForkable(resourceType: string | undefined): boolean;
3798
+ /**
3799
+ * Resolve a share token to its resource. Anon-safe. Pass a server client from a
3800
+ * Server Component (public `/s/[token]` route); defaults to the browser client.
3801
+ */
3802
+ declare function resolveShareToken(token: string, client?: SupabaseClient): Promise<ResolvedShareToken>;
3803
+
3804
+ type ShownTo = "only_me" | "my_team" | "everyone" | "everyone_on_ai_matrx";
3805
+ /** Per organization id: the type's resolved default (`d`) and the viewer's teammates (`t`). */
3806
+ type ShownToContext = Record<string, {
3807
+ d: ShownTo | null;
3808
+ t: string[];
3809
+ }>;
3810
+ /** One read per list: the viewer's context for one type. Throws on failure (never guesses wider). */
3811
+ declare function fetchShownToContext(token: string): Promise<ShownToContext>;
3812
+ interface OrCapable<Self> {
3813
+ or(filters: string): Self;
3814
+ }
3815
+ /**
3816
+ * The PostgREST `or` expression for "does this row belong in my list of organization X?":
3817
+ * mine always; otherwise the row's own Shown to, else the organization's default. (A row the
3818
+ * retiring row column once marked personal carries `shown_to = only_me` — T-13 phase 3 backfilled it
3819
+ * and the dual-write trigger keeps it — so no list reads that column any more.)
3820
+ */
3821
+ declare function shownToFilter(ctx: ShownToContext, organizationId: string, userId: string, ownerColumn?: string): string;
3822
+ /** Narrow a one-organization list query to what Shown to lets this person's list show. */
3823
+ declare function applyShownTo<Q extends OrCapable<Q>>(query: Q, ctx: ShownToContext, organizationId: string, userId: string, ownerColumn?: string): Q;
3824
+ /**
3825
+ * The same rule across several organizations at once (a blended "My Orgs" list): each row is
3826
+ * judged by ITS organization's default and ITS organization's teammates.
3827
+ */
3828
+ declare function shownToBlendedFilter(ctx: ShownToContext, organizationIds: string[], userId: string, ownerColumn?: string, orgColumn?: string): string;
3829
+ /**
3830
+ * THE SAME RULE ACROSS EVERY ORGANIZATION THE VIEWER BELONGS TO — the filter a client list uses when
3831
+ * it opens on "the organization" with no one organization picked (access ladder T-11 leak fixes,
3832
+ * 2026-09-28: the notes sidebar applied no Shown to at all and listed 57 of a coworker's Only-me
3833
+ * notes). Compact on purpose — one arm per distinct rule, not one per organization — because a
3834
+ * person may belong to dozens of organizations and the whole expression rides in a URL:
3835
+ * mine · shown to everyone · my_team rows of my teammates (per organization that has any) ·
3836
+ * unset rows in organizations whose default shows them ·
3837
+ * rows outside my organizations (reached by a direct share) or with no organization.
3838
+ */
3839
+ declare function shownToMyOrgsFilter(ctx: ShownToContext, userId: string, ownerColumn?: string, orgColumn?: string): string | null;
3840
+
3841
+ /**
3842
+ * Permission Service
3843
+ *
3844
+ * Every write operation routes through a SECURITY DEFINER RPC — no client ever
3845
+ * writes to the permissions table directly; row controls ("Shown to", "Published to the web")
3846
+ * are written on the resource row under RLS.
3847
+ *
3848
+ * Full RPC inventory:
3849
+ * share_resource_with_user() — grant user access (validates ownership)
3850
+ * grant_org_availability() — make a thing AVAILABLE to an organization as org configuration
3851
+ * (surface binding, library contribution). Never a share: a share
3852
+ * names a person (SHARE-PEOPLE-ONLY, 2026-09-25); the old
3853
+ * share_resource_with_org refuses.
3854
+ * update_permission_level() — change user or org permission level (validates ownership)
3855
+ * revoke_resource_access() — remove a user's grant (validates ownership)
3856
+ * revoke_resource_org_access() — remove an organization's availability row (validates ownership)
3857
+ * make_resource_public() — set is_public = true on resource row (validates ownership)
3858
+ * make_resource_private() — set is_public = false on resource row (validates ownership)
3859
+ * get_resource_permissions() — list all grants with user/org details (owner-only)
3860
+ * is_resource_owner() — check ownership for any table
3861
+ *
3862
+ * Which row controls a type carries is resolved by `get_share_capabilities`
3863
+ * (`rowControls`, `shownToOffered`, `publishLane`), never guessed from a column name.
3864
+ *
3865
+ * Access model (common-docs/policies/access-ladder.md):
3866
+ * - Who may open a record without a share is its TABLE's level, never a row setting.
3867
+ * - "Published to the web" (Organization and Public tables) is the only anonymous lane.
3868
+ * - "Shown to" decides which lists show it — never a lock.
3869
+ * - Read both with getResourceVisibility() — never from the permissions table.
3870
+ * - The permissions table stores only explicit user/org grants.
3871
+ * - check_resource_access() is the single RLS engine: evaluates all access paths
3872
+ * (owner, assignee, direct grant, project, workspace, org hierarchy) in one query.
3873
+ */
3874
+
3875
+ interface ResourceVisibility {
3876
+ /**
3877
+ * Published to the web: the row's `published_to_web`, the card's own publish (agent, workflow),
3878
+ * or a legacy boolean. Always false for a type that is never published.
3879
+ */
3880
+ isPublic: boolean;
3881
+ /**
3882
+ * "Shown to" — present only when the type carries it (`shownToOffered`); null means the type's
3883
+ * "Shown to by default" knob decides.
3884
+ */
3885
+ shownTo?: ShownTo | null | undefined;
3886
+ /**
3887
+ * This record is a CHILD of another (a file attached to a chat): it follows its parent and carries
3888
+ * no row control of its own, whatever its type.
3889
+ */
3890
+ childRecord?: boolean | undefined;
3891
+ /**
3892
+ * WHEN MEMBERSHIP ALONE REACHES IT (SHARE-TAILS, chair ruling 2026-09-25). A record-store thing
3893
+ * with no sharing choice is the organization's default — every member reaches it at the member
3894
+ * default level — and the lane door says so. Absent/null when the owner chose "Only me" (hidden
3895
+ * from members' lists; members still open it by link, access ladder T-36) or the organization
3896
+ * shows members nothing by default, and for every type outside the record store.
3897
+ */
3898
+ organizationDefault?: {
3899
+ level: string;
3900
+ organizationName: string;
3901
+ /** The organization whose default it is — its own availability row IS this default. */
3902
+ organizationId?: string | undefined;
3903
+ } | null;
3904
+ /**
3905
+ * WHO CAN SEE THIS (lane SHARE-LANE-CONTROL, VERIFIER-23 item 3). The owner's lane choice, as the
3906
+ * record store's lane door names it in every state. Present only for kinds whose lane has a door
3907
+ * (the record store); absent everywhere else, so no control is drawn that could not work.
3908
+ */
3909
+ whoCanSee?: WhoCanSee | null | undefined;
3910
+ /**
3911
+ * The thing's OWN organization, read off its row (never the active one). Null when its table
3912
+ * names none or the read could not say.
3913
+ */
3914
+ homeOrganizationId?: string | null | undefined;
3915
+ }
3916
+ /** The three lanes the record store's "Who can see this" control offers. */
3917
+ type LaneChoice = "mine" | "organization" | "world";
3918
+ interface WhoCanSee {
3919
+ /** The record store's lane doors — the only kind whose lane is not a row control. */
3920
+ source: "store";
3921
+ choice: LaneChoice;
3922
+ /** The object's OWN organization (never the active one). Null when the door names none. */
3923
+ organizationId: string | null;
3924
+ organizationName: string | null;
3925
+ /** What the organization's member default grants on it, whichever lane is chosen. */
3926
+ memberDefaultLevel: string | null;
3927
+ /** Organization members reach it right now through the member default. */
3928
+ membersReachNow: boolean;
3929
+ /** "Anyone with the link" is offered only when the world lane would accept it. */
3930
+ worldOffered: boolean;
3931
+ }
3932
+ /**
3933
+ * THE ONE WRITER OF THE RECORD STORE'S LANE. `custom.share_lane_set` needs the object's own
3934
+ * organization (the lane door names it) and Admin on the thing; it moves the lane and the
3935
+ * record's reach together, and named people are untouched by it.
3936
+ */
3937
+ declare function setStoreLane(organizationId: string, subjectId: string, choice: LaneChoice): Promise<ShareActionResult>;
3938
+ /**
3939
+ * Read a record's row controls ("Shown to", "Published to the web") and its own organization.
3940
+ * Single cheap query — safe to call from list-item components like ShareButton.
3941
+ *
3942
+ * Returns `{ isPublic: false }` without a row query when the type carries no row control and no
3943
+ * publish lane; real capability/query failures remain errors.
3944
+ */
3945
+ declare function getResourceVisibility(resourceType: ResourceType, resourceId: string): Promise<ResourceVisibility>;
3946
+ /**
3947
+ * "Shown to" — which lists show this record to people who can already open it. Never a lock.
3948
+ * Refuses a type that does not carry it rather than writing a column that is not there.
3949
+ */
3950
+ declare function setResourceShownTo(resourceType: ResourceType, resourceId: string, shownTo: ShownTo | null): Promise<ShareActionResult>;
3951
+ /**
3952
+ * Grant a user access to a resource.
3953
+ * RPC validates: authenticated, valid level, resource exists, caller is owner, no duplicate.
3954
+ */
3955
+ declare function shareWithUser(options: ShareWithUserOptions): Promise<ShareActionResult>;
3956
+ /**
3957
+ * Make a thing AVAILABLE to an organization, as organization configuration: an agent bound to
3958
+ * the organization's surface, or an item contributed to its library (with moderation). Everyone
3959
+ * in the organization, including people who join later, can use it.
3960
+ *
3961
+ * 🚨 THIS IS NOT SHARING (chair ruling 2026-09-25, owner ruling 2026-09-23 "access is personal").
3962
+ * A share names a person; the store refuses an organization at every share door with
3963
+ * "Shares name a person, not an organization." This door is the only writer of an organization
3964
+ * grantee, and the row it writes carries `granted_via = 'availability'`.
3965
+ * RPC validates: authenticated, resource exists, caller holds Admin on it, caller is a member of
3966
+ * the target organization, the organization's module config (members may add, needs approval).
3967
+ */
3968
+ declare function grantOrgAvailability(options: OrgAvailabilityOptions): Promise<ShareActionResult>;
3969
+ /**
3970
+ * Ensure an organization has the requested availability row.
3971
+ *
3972
+ * The availability door reports an existing row instead of inserting a duplicate. Composition
3973
+ * workflows (surface binding) need idempotent "ensure" semantics, so the translation of that
3974
+ * answer lives here instead of in each caller.
3975
+ */
3976
+ declare function ensureOrgAvailability(options: OrgAvailabilityOptions): Promise<ShareActionResult>;
3977
+ /**
3978
+ * Publish a resource to the web — the one way anyone, signed in or not, opens it at its address.
3979
+ * Writes the lane the type carries (published_to_web, the card's own publish, or a legacy boolean).
3980
+ * The permissions table is NOT written to.
3981
+ */
3982
+ declare function makePublic(options: MakePublicOptions): Promise<ShareActionResult>;
3983
+ /**
3984
+ * Stop publishing a resource to the web. Who in its organization can open it is unchanged —
3985
+ * that is its table's level, never a row setting (access ladder).
3986
+ */
3987
+ declare function makePrivate(resourceType: ResourceType, resourceId: string): Promise<ShareActionResult>;
3988
+ /**
3989
+ * Remove a user's explicit access grant.
3990
+ * RPC validates ownership before deleting.
3991
+ */
3992
+ declare function revokeUserAccess(resourceType: ResourceType, resourceId: string, userId: string): Promise<ShareActionResult>;
3993
+ /**
3994
+ * Remove an organization's explicit access grant.
3995
+ * RPC validates ownership before deleting.
3996
+ */
3997
+ declare function revokeOrgAccess(resourceType: ResourceType, resourceId: string, organizationId: string): Promise<ShareActionResult>;
3998
+ /**
3999
+ * Remove public access — alias for makePrivate.
4000
+ */
4001
+ declare function revokePublicAccess(resourceType: ResourceType, resourceId: string): Promise<ShareActionResult>;
4002
+ /**
4003
+ * Generic dispatcher — routes to the correct revoke function.
4004
+ */
4005
+ declare function revokeAccess(options: RevokeAccessOptions): Promise<ShareActionResult>;
4006
+ /**
4007
+ * Change the permission level for an existing user or org grant.
4008
+ * RPC validates ownership before updating.
4009
+ */
4010
+ declare function updatePermissionLevel(options: UpdatePermissionOptions): Promise<ShareActionResult>;
4011
+ /**
4012
+ * List all grants for a resource (owner-only).
4013
+ * Uses get_resource_permissions() SECURITY DEFINER RPC — includes resolved
4014
+ * user/org display names. Returns empty for non-owners (RPC silently returns nothing).
4015
+ *
4016
+ * NOTE: Does not include is_public state — use getResourceVisibility() for that.
4017
+ */
4018
+ declare function listPermissions(resourceType: ResourceType, resourceId: string): Promise<PermissionWithDetails[]>;
4019
+ /** Alias kept for compatibility */
4020
+ declare const getResourcePermissions: typeof listPermissions;
4021
+ /**
4022
+ * Check if the current user is the owner of a resource.
4023
+ * Reads owner_column directly from the resource row — single index scan, no
4024
+ * RPC round-trip required.
4025
+ *
4026
+ * Uses the registry to find the canonical table name, id column, and owner
4027
+ * column so tables like flashcard_sets (set_id, not id) work correctly the
4028
+ * day they're added to the registry — without a code change here.
4029
+ */
4030
+ interface OwnershipResolution {
4031
+ /** True only when the ownership read SUCCEEDED and the caller owns the row. */
4032
+ isOwner: boolean;
4033
+ /**
4034
+ * Non-null when ownership could NOT be determined (unknown resource type,
4035
+ * failed read, no session). `isOwner: false` with a non-null `error` means
4036
+ * "unknown", never "not the owner" — UIs must not present it as a denial.
4037
+ */
4038
+ error: string | null;
4039
+ }
4040
+ /**
4041
+ * Resolve whether the current user owns a resource, distinguishing
4042
+ * "not the owner" from "could not determine".
4043
+ *
4044
+ * LOUD RECOVERY: every failure path returns a message instead of a bare
4045
+ * `false`. A silent `false` here is what renders the canonical ShareModal as a
4046
+ * dead, empty dialog for a user who actually owns the row — the whole class of
4047
+ * bug this function exists to make impossible.
4048
+ *
4049
+ * Reads owner_column directly from the resource row — single index scan, no
4050
+ * RPC round-trip required. Uses the registry to find the canonical table name,
4051
+ * id column, and owner column so tables like flashcard_sets (set_id, not id)
4052
+ * work correctly the day they're added to the registry.
4053
+ */
4054
+ declare function resolveResourceOwnership(resourceType: ResourceType, resourceId: string): Promise<OwnershipResolution>;
4055
+ /**
4056
+ * "MAY I DECIDE WHO ELSE SEES THIS?" — the question a share dialog actually has.
4057
+ *
4058
+ * `resolveResourceOwnership` above answers a NARROWER one: am I the row's
4059
+ * `created_by`. VIS-17's one ladder says `admin` on a thing means "can change it
4060
+ * and decide who else may", so gating the dialog on ownership made `admin` a
4061
+ * level that could not do the one thing its own definition names — and for the
4062
+ * record store it could not even be ASKED, because `custom.record` carries no
4063
+ * client SELECT grant and the direct read above returns "Could not read Record".
4064
+ *
4065
+ * So this asks the database's own predicate (`public.may_manage_sharing`, lane
4066
+ * SHARE 2026-09-19), which is the same one the six sharing RPCs enforce. The
4067
+ * screen and the door cannot disagree, because there is one answer.
4068
+ *
4069
+ * A failure is reported as "could not determine", never as a denial — the
4070
+ * distinction the dialog needs to tell a stranger from a broken read.
4071
+ */
4072
+ declare function resolveSharingAuthority(resourceType: ResourceType, resourceId: string): Promise<OwnershipResolution>;
4073
+ /**
4074
+ * Boolean convenience wrapper over {@link resolveResourceOwnership}.
4075
+ *
4076
+ * Prefer `resolveResourceOwnership` anywhere the difference between "not the
4077
+ * owner" and "could not determine" changes what the user sees.
4078
+ */
4079
+ declare function isResourceOwner(resourceType: ResourceType, resourceId: string): Promise<boolean>;
4080
+ /**
4081
+ * Get all resources explicitly shared with the current user.
4082
+ * Reads from the permissions table — reflects direct grants only,
4083
+ * not hierarchy-inherited access (project/workspace/org membership).
4084
+ */
4085
+ declare function getSharedWithMe(resourceType?: ResourceType | undefined): Promise<Permission[]>;
4086
+ /**
4087
+ * Check if current user has a specific permission level on a resource.
4088
+ * Used for client-side gating — not a substitute for RLS.
4089
+ */
4090
+ declare function checkPermission(options: CheckPermissionOptions): Promise<PermissionCheckResult>;
4091
+ /**
4092
+ * Batch grant access to multiple users in parallel.
4093
+ */
4094
+ declare function batchShareWithUsers(resourceType: ResourceType, resourceId: string, userIds: string[], permissionLevel: PermissionLevel): Promise<ShareActionResult[]>;
4095
+
4096
+ /**
4097
+ * THE WORDS (access ladder Words table, "Shown to"): one label and one sentence per value, used by
4098
+ * every surface that shows or sets it. "Everyone on AI Matrx" is valid only on a record that is
4099
+ * published to the web (a database CHECK refuses it otherwise).
4100
+ */
4101
+ declare const SHOWN_TO_WORDS: Record<ShownTo, {
4102
+ label: string;
4103
+ says: string;
4104
+ }>;
4105
+ declare const SHOWN_TO_ORDER: readonly ShownTo[];
4106
+
4107
+ /**
4108
+ * features/sharing/service/accessSummary.ts
4109
+ *
4110
+ * THE honest answer to "who can actually see this, and why?" for ONE entity.
4111
+ *
4112
+ * A list surface can only show what a row says about itself, which is only one of
4113
+ * the SIX ways `iam.has_access_for_base` grants
4114
+ * access: owner, level+org, direct grant, membership, education
4115
+ * assignment, and — the one that kept being missed — reachability through a
4116
+ * CONTAINER (a scope, project, data store…). A file marked `personal` that is
4117
+ * attached to an org-internal scope is readable by that whole org, and saying
4118
+ * "Only you" about it is a lie.
4119
+ *
4120
+ * This is deliberately ONE ENTITY AT A TIME. It walks reachability and resolves
4121
+ * container titles, so it is not something to run per row of a list. List
4122
+ * surfaces stay on cheap bulk signals and simply avoid asserting the specific
4123
+ * claim they cannot back up.
4124
+ *
4125
+ * Direct to Supabase (`public.entity_access_summary`), never through Python —
4126
+ * this is a plain DB read the browser is entitled to make.
4127
+ */
4128
+
4129
+ type AccessGranteeType = "user" | "organization";
4130
+ interface AccessDirectGrant {
4131
+ granteeType: AccessGranteeType;
4132
+ granteeId: string | null;
4133
+ granteeLabel: string | null;
4134
+ level: string;
4135
+ expiresAt: string | null;
4136
+ }
4137
+ interface AccessContainer {
4138
+ containerType: string;
4139
+ containerId: string;
4140
+ /** Human label of the container kind, e.g. "Scope". */
4141
+ containerTypeLabel: string | null;
4142
+ /** The container's own name, e.g. "Web Development". */
4143
+ label: string | null;
4144
+ /** Highest permission level conveyed through this container. */
4145
+ level: string;
4146
+ depth: number;
4147
+ organizationId: string | null;
4148
+ organizationName: string | null;
4149
+ /** True when everyone in the container's org can read the container. */
4150
+ orgReadable: boolean;
4151
+ /** Explicit members of the container. */
4152
+ memberCount: number;
4153
+ }
4154
+ interface AccessSummary {
4155
+ entityType: string;
4156
+ entityId: string;
4157
+ ownerId: string | null;
4158
+ viewerIsOwner: boolean;
4159
+ organizationId: string | null;
4160
+ organizationName: string | null;
4161
+ /** Caller has admin — only then are grantee identities populated. */
4162
+ canManage: boolean;
4163
+ isPublic: boolean;
4164
+ /** Every member of its organization can open it (its table's level). */
4165
+ orgReadable: boolean;
4166
+ directGrantCount: number;
4167
+ directGrants: AccessDirectGrant[];
4168
+ /** Explicit members of the entity itself. */
4169
+ memberCount: number;
4170
+ containers: AccessContainer[];
4171
+ containerCount: number;
4172
+ }
4173
+ /** Full effective-access explanation for one entity. Throws on RPC failure. */
4174
+ declare function fetchAccessSummary(entityType: EntityTypeToken, entityId: string): Promise<AccessSummary>;
4175
+ /**
4176
+ * Display titles for a batch of ids of ONE entity token, resolved LIVE from the
4177
+ * owning table. Never render a denormalized association label instead — it goes
4178
+ * stale the moment the target is renamed. Ids the caller cannot view are
4179
+ * omitted by the RPC rather than leaked.
4180
+ *
4181
+ * DEDUP FLAG (associations W0-P1, 2026-08-29): this is sharing's own copy of a
4182
+ * title resolver; the scopes unit has the canonical cached one at
4183
+ * `features/scopes/service/entityTitles.ts` (which `AttachedItemsSheet` now
4184
+ * uses). The sharing node owns converging this copy onto that resolver (or a
4185
+ * shared home) — do not add new consumers here.
4186
+ */
4187
+ declare function fetchEntityTitles(entityType: EntityTypeToken, ids: string[]): Promise<Map<string, string | null>>;
4188
+ /**
4189
+ * The honest one-line headline for an entity, given everything we know.
4190
+ * Shared by the info panel and anywhere else that must not overstate privacy.
4191
+ */
4192
+ declare function describeAccessSummary(summary: AccessSummary): string;
4193
+
4194
+ /**
4195
+ * features/sharing/format.ts
4196
+ *
4197
+ * The ONE set of human summaries + rendered-view extractors for every sharing
4198
+ * surface (grant rows, the reachability summary, public state, the whole access
4199
+ * panel). Consumed by `PermissionsList`, `AccessSummaryPanel`, the share tabs,
4200
+ * and any page that composes them — never duplicated at a callsite.
4201
+ *
4202
+ * THE WHAT-I-SEE LAW (agent-copy skill): these builders return the RENDERED
4203
+ * surface converted to data, not the raw rows behind it. Where the panel shows
4204
+ * a sentence, the payload carries that same sentence verbatim — including the
4205
+ * red ones. A user copying an access surface is asking an agent "why can't this
4206
+ * person see this, and what do I change?", so denials and errors are the
4207
+ * highest-value content here, not a footnote.
4208
+ *
4209
+ * `accessReasonRows` is deliberately the SAME function `AccessSummaryPanel`
4210
+ * renders from: mirror the view's extractor, never re-derive it beside the view.
4211
+ */
4212
+
4213
+ /** Location line for every sharing payload. */
4214
+ declare function sharingLocation(surface: string): string;
4215
+ /**
4216
+ * The numbers an access surface LEADS with — the tab counts, the public dot,
4217
+ * and (when the reachability summary is on screen) who can open it and its reason
4218
+ * count. Every payload from such a surface carries these verbatim, in the body
4219
+ * AND the envelope attributes, so the agent never recomputes what the user is
4220
+ * already looking at.
4221
+ *
4222
+ * `null` means "not resolved / not rendered", which is itself information: it
4223
+ * is the difference between "nobody owns this" and "we could not find out".
4224
+ */
4225
+ interface AccessKpis {
4226
+ user_grants: number;
4227
+ org_grants: number;
4228
+ public_grants: number;
4229
+ total_grants: number;
4230
+ is_public: boolean;
4231
+ /** null while ownership is loading or failed to resolve. */
4232
+ viewer_is_owner: boolean | null;
4233
+ /** Who can open it without a share, as the summary line reads, when the summary is on screen. */
4234
+ reach: string | null;
4235
+ /** True when every member of its organization can open it. */
4236
+ org_readable: boolean | null;
4237
+ /** How many distinct REASONS grant access (the summary's reason rows). */
4238
+ reachability_reasons: number | null;
4239
+ /** Containers that convey access (scopes, projects, data stores…). */
4240
+ container_count: number | null;
4241
+ [key: string]: string | number | boolean | null | undefined;
4242
+ }
4243
+ declare function accessKpis(input: {
4244
+ permissions: PermissionWithDetails[];
4245
+ isPublic: boolean;
4246
+ /** null while unresolved — never coerce an unknown owner to false. */
4247
+ viewerIsOwner: boolean | null;
4248
+ /** The reachability summary, when this surface renders one. */
4249
+ summary?: AccessSummary | null | undefined;
4250
+ /** The entity type, needed to phrase the reason rows the way the UI does. */
4251
+ entityType?: string | undefined;
4252
+ }): AccessKpis;
4253
+ /** Identity + KPIs every sharing payload needs to be interpretable. */
4254
+ interface SharingCopyContext {
4255
+ /** Entity/resource token, e.g. "web_site". */
4256
+ resourceType: string;
4257
+ resourceId: string;
4258
+ resourceName?: string | null | undefined;
4259
+ /** Where the user is, in words — e.g. "Site access — example.com". */
4260
+ surface: string;
4261
+ /** The page's leading KPIs, mirrored verbatim into every payload. */
4262
+ kpis: AccessKpis;
4263
+ }
4264
+ /**
4265
+ * A sentence the surface actually RENDERED — a denial, a blocker, a warning, a
4266
+ * plain-state note. Captured verbatim; never paraphrased into the payload.
4267
+ */
4268
+ interface AccessNotice {
4269
+ tone: "error" | "warning" | "info";
4270
+ /** The exact rendered text. */
4271
+ text: string;
4272
+ /** Which part of the surface rendered it. */
4273
+ where: string;
4274
+ }
4275
+ declare function humanNotices(notices: AccessNotice[]): string;
4276
+ type GranteeKind = "user" | "organization" | "public";
4277
+ declare function granteeKind(permission: PermissionWithDetails): GranteeKind;
4278
+ /** The row's primary line, exactly as PermissionsList renders it. */
4279
+ declare function granteeLabel(permission: PermissionWithDetails): string;
4280
+ /** The row's secondary line (the email, when a display name took the first). */
4281
+ declare function granteeSecondaryLabel(permission: PermissionWithDetails): string | null;
4282
+ /**
4283
+ * The badge text the row shows a non-owner. Owners see a level SELECT with the
4284
+ * same value, so this doubles as the level label in both modes.
4285
+ */
4286
+ declare function grantLevelLabel(permission: PermissionWithDetails): string;
4287
+ declare function humanGrantRow(permission: PermissionWithDetails): string;
4288
+ /** One flat row for CSV export. */
4289
+ declare function grantCsvRow(permission: PermissionWithDetails): Record<string, unknown>;
4290
+ declare function grantCsvRows(permissions: PermissionWithDetails[]): Array<Record<string, unknown>>;
4291
+ /**
4292
+ * The empty state PermissionsList renders — copied verbatim, because "no one
4293
+ * has been granted access here" is frequently the whole answer to "why can't
4294
+ * they see this?".
4295
+ */
4296
+ declare const NO_GRANTS_HEADLINE = "Not shared with anyone";
4297
+ /**
4298
+ * 🚨 THE SAME EMPTY STATE WHEN SOMETHING ELSE IS PENDING ON THE SAME SCREEN
4299
+ * (FIX-10C, VERIFIER-10 F13, 2026-09-22).
4300
+ *
4301
+ * "Not shared with anyone" stood directly above an invited person's row, and a
4302
+ * screen that contradicts itself is worse than either sentence alone. An
4303
+ * invitation is genuinely not a grant — it confers nothing until it is
4304
+ * accepted — so the list does not start counting invitations. It says the
4305
+ * narrower, still-true thing: nobody has access YET.
4306
+ */
4307
+ declare const NO_GRANTS_YET_HEADLINE = "Nobody has access yet";
4308
+ declare const NO_GRANTS_DETAIL = "No one has been granted access here";
4309
+ /**
4310
+ * A DIRECT-GRANT list can only ever say what was granted HERE. It cannot see
4311
+ * its table's level, publishing, org membership, or access conveyed through a container, so every
4312
+ * payload it emits says so out loud — otherwise an agent reads "0 grants" as
4313
+ * "nobody can see it" and tells the user to grant access they already have.
4314
+ */
4315
+ declare const GRANT_LIST_SCOPE_NOTE = "This list covers DIRECT grants on this resource only. Access can also come from ownership, its table's level (every member of an Organization record's organization), publishing to the web, organization membership, or a container (scope, project, data store) that conveys it \u2014 see the access summary for the complete picture.";
4316
+ declare function humanGrantList(permissions: PermissionWithDetails[], options?: {
4317
+ surface: string;
4318
+ shown?: number | undefined;
4319
+ }): string;
4320
+ /**
4321
+ * 🚨 WHO CAN OPEN IT, AND THE HEADLINE, ARE ONE TRUTH (lane RECORDS-UI-FIX, guide re-walk
4322
+ * 2026-09-23; access ladder T-13). The line reads what the record actually reaches — published to
4323
+ * the web, every member of its organization, or only its owner and the people named — from the same
4324
+ * summary the headline reads, so the two can never disagree. Who may open a record without a share
4325
+ * is its table's level, never a row setting ("Shown to" only decides which lists show it).
4326
+ */
4327
+ declare function summaryReachLabel(summary: AccessSummary): string;
4328
+ declare function isPrivateSummary(summary: AccessSummary): boolean;
4329
+ declare function containerTitle(container: AccessContainer): string;
4330
+ declare function containerDetail(container: AccessContainer): string;
4331
+ /** One rendered reason row — the part users act on. */
4332
+ interface AccessReasonRow {
4333
+ /** Stable key for React + payload correlation. */
4334
+ id: string;
4335
+ kind: "organization" | "direct-grants" | "container";
4336
+ title: string;
4337
+ detail: string;
4338
+ /** Present for container reasons, so the agent can name what to detach. */
4339
+ containerType?: string | undefined;
4340
+ containerId?: string | undefined;
4341
+ }
4342
+ /** The person-facing noun for an entity token ("udt_document" reads "document", never the raw token). */
4343
+ declare function recordNoun(entityType: string): string;
4344
+ /**
4345
+ * THE reason list — rendered by `AccessSummaryPanel` AND copied by every
4346
+ * payload that includes it. One extractor, two consumers; the export can never
4347
+ * drift from the screen.
4348
+ */
4349
+ declare function accessReasonRows(summary: AccessSummary, entityType: string): AccessReasonRow[];
4350
+ /** The closing line the panel renders when nothing grants access. */
4351
+ declare const NOTHING_ELSE_GRANTS = "Nothing else grants access to this yet.";
4352
+ /** The panel's rendered error headline, verbatim. */
4353
+ declare const ACCESS_SUMMARY_ERROR_HEADLINE = "Couldn\u2019t determine access";
4354
+ /**
4355
+ * The reachability panel as DATA — every line it puts on screen, in order.
4356
+ * This is the payload body; the raw `AccessSummary` rides along beside it so
4357
+ * nothing is lost.
4358
+ */
4359
+ interface AccessSummaryView {
4360
+ reach_label: string;
4361
+ headline: string;
4362
+ reasons: AccessReasonRow[];
4363
+ nothing_else_grants: string | null;
4364
+ raw: AccessSummary;
4365
+ }
4366
+ declare function accessSummaryView(summary: AccessSummary, entityType: string): AccessSummaryView;
4367
+ declare function humanAccessSummary(summary: AccessSummary, entityType: string): string;
4368
+ /** Reason rows as flat CSV rows. */
4369
+ declare function reasonCsvRows(rows: AccessReasonRow[]): Array<Record<string, unknown>>;
4370
+ /**
4371
+ * Everything an access surface shows, as one payload body. Built by the page
4372
+ * that composes the sharing components, from LIVE state at click time.
4373
+ */
4374
+ interface AccessPanelView {
4375
+ resource: {
4376
+ type: string;
4377
+ id: string;
4378
+ name?: string | null | undefined;
4379
+ };
4380
+ kpis: AccessKpis;
4381
+ /** The tab the user is actually looking at. */
4382
+ active_tab?: string | undefined;
4383
+ /** Every error / blocker / notice rendered right now, verbatim. */
4384
+ notices: AccessNotice[];
4385
+ access_summary: AccessSummaryView | null;
4386
+ /** Present instead of `access_summary` when the summary failed to load. */
4387
+ access_summary_error: string | null;
4388
+ user_grants: PermissionWithDetails[];
4389
+ org_grants: PermissionWithDetails[];
4390
+ public_grant: PermissionWithDetails | null;
4391
+ is_public: boolean;
4392
+ scope_note: string;
4393
+ }
4394
+ declare function humanAccessPanel(view: AccessPanelView): string;
4395
+
4396
+ /** A deliberately title-free message for handing a canonical link to a person. */
4397
+ declare function createSafeShareMessage(url: string): string;
4398
+ /** Refuses links the canonical resolver would reject or exhaust. */
4399
+ declare function shareLinkUnavailableReason(link: Pick<ShareLink, "isActive" | "expiresAt" | "maxUses" | "useCount">, now?: number): string | null;
4400
+ declare function shareLinkSecurityStateMatches(a: ShareLink, b: ShareLink): boolean;
4401
+ /**
4402
+ * A refreshed inactive/expired/exhausted link must be rejected before asking
4403
+ * the owner to review changed fields; otherwise the dialog can imply access
4404
+ * that has already been revoked.
4405
+ */
4406
+ declare function evaluateShareLinkHandoff(reviewed: ShareLink, current: ShareLink): {
4407
+ status: "unavailable";
4408
+ reason: string;
4409
+ } | {
4410
+ status: "changed";
4411
+ } | {
4412
+ status: "ready";
4413
+ };
4414
+ declare function describeShareLinkAccess(permissionLevel: ShareLink["permissionLevel"]): string;
4415
+ declare function describeShareLinkExpiry(expiresAt: string | null): string;
4416
+
4417
+ /** One rung this person may actually hand out, in the store's own words. */
4418
+ interface OutsideShareLevel {
4419
+ level: string;
4420
+ label: string;
4421
+ means: string;
4422
+ }
4423
+ /** One outside person on this table, joined or not. */
4424
+ interface OutsideShareInvitation {
4425
+ invitation_id: string;
4426
+ email: string;
4427
+ level: string;
4428
+ level_label: string;
4429
+ status: string;
4430
+ /** `false` is the "invited, not yet joined" state the dialog draws. */
4431
+ joined: boolean;
4432
+ say: string;
4433
+ expires_at: string | null;
4434
+ invited_at: string;
4435
+ expired: boolean;
4436
+ /**
4437
+ * 🚨 THE LINK THE SHARER CAN HAND OVER THEMSELVES — the ordinary case, not a
4438
+ * fallback. A plumber texts his customer the link; a lab emails a
4439
+ * collaborator from their own address. `null` when the row has been accepted
4440
+ * (nothing left to open) or when this viewer may not invite.
4441
+ */
4442
+ accept_path: string | null;
4443
+ }
4444
+ /**
4445
+ * WHETHER THIS SERVER CAN ACTUALLY SEND AN EMAIL — three answers, never two.
4446
+ *
4447
+ * The browser cannot know whether `RESEND_API_KEY` is set on the server, so the
4448
+ * server stamps what its channel adapters found at boot
4449
+ * (`communication.channel_readiness`) and the door reads the stamp. `unknown`
4450
+ * means NOBODY HAS CHECKED — deliberately not `configured: false`, so "we could
4451
+ * not look" can never be drawn as "email is off".
4452
+ */
4453
+ interface ChannelReadiness {
4454
+ channel: string;
4455
+ answer: "yes" | "no" | "unknown";
4456
+ configured: boolean | null;
4457
+ checked_at: string | null;
4458
+ detail?: string | undefined;
4459
+ say: string;
4460
+ }
4461
+ /** What actually happened to the message, and the link either way. */
4462
+ interface OutsideShareDelivery {
4463
+ accept_path: string;
4464
+ queued: string[];
4465
+ skipped: {
4466
+ channel: string;
4467
+ why: string;
4468
+ }[];
4469
+ email_answer: ChannelReadiness["answer"];
4470
+ say: string;
4471
+ }
4472
+ /** Everything the dialog needs to draw itself without guessing anything. */
4473
+ interface OutsideShareState {
4474
+ /** False only when an administrator of this organization turned outside sharing off. */
4475
+ lane_open: boolean;
4476
+ /** May THIS viewer invite an outside person to THIS table? */
4477
+ may_invite: boolean;
4478
+ /**
4479
+ * Still answered by the store; deliberately NOT drawn (SHARE-GATE-OFF). The
4480
+ * outside lane is on by default and is an administrator's setting, never a
4481
+ * control in the share flow.
4482
+ */
4483
+ may_open_lane: boolean;
4484
+ /** The level this viewer holds on the table. `null` means none. */
4485
+ my_level: string | null;
4486
+ /** The rungs they may give — already capped at `my_level` by the store. */
4487
+ levels: OutsideShareLevel[];
4488
+ who: string;
4489
+ invitations: OutsideShareInvitation[];
4490
+ /** One sentence for the person, whatever the state. Never a knob key. */
4491
+ say: string;
4492
+ /** What this server can actually do about email, observed and stamped. */
4493
+ email_delivery: ChannelReadiness;
4494
+ /** That answer as one sentence — and it ALWAYS names the copy-the-link route. */
4495
+ email_say: string;
4496
+ }
4497
+ declare function readOutsideShare(organizationId: string, tableId: string): Promise<OutsideShareState>;
4498
+ /**
4499
+ * What the outside share answered. THREE outcomes, one door (MOVE-AND-OUTSIDER,
4500
+ * VERIFIER-19 finding 3).
4501
+ *
4502
+ * `custom.table_share_outside_grant` (G14) decides who the address is:
4503
+ * · an ACCOUNT OUTSIDE the organization — granted at once (`granted: true`,
4504
+ * `person: "outside_account"`), told so by notification, no link, no
4505
+ * "not yet joined". Notion and Airtable give an existing account access the
4506
+ * moment it is named, and so do we;
4507
+ * · a MEMBER of the organization — granted like a colleague (`person: "member"`);
4508
+ * · an address NOBODY signed up with — the invitation, with its link
4509
+ * (`invited: true`, `person: "no_account"`): the only case a link is needed.
4510
+ * Until this lane the dialog called `table_share_outside_invite` for everyone, so
4511
+ * an existing account got an invitation and, opening the table, read "You have
4512
+ * not been given this table".
4513
+ */
4514
+ interface OutsideInviteAnswer {
4515
+ /** An `iam.invitations` row was written and a link minted (no account yet). */
4516
+ invited: boolean;
4517
+ /** They were given the table outright (an existing account, inside or out). */
4518
+ granted: boolean;
4519
+ /** Who the store found the address to be. */
4520
+ person?: "outside_account" | "member" | "no_account" | undefined;
4521
+ say: string;
4522
+ /** Null when nobody was invited — an invitation that did not happen has no link. */
4523
+ accept_path: string | null;
4524
+ delivery: OutsideShareDelivery | null;
4525
+ }
4526
+ declare function shareWithOutsidePerson(organizationId: string, tableId: string, email: string, level: string): Promise<OutsideInviteAnswer>;
4527
+ /** One table somebody else's organization shared with the person signed in, not yet opened. */
4528
+ interface MyPendingTableInvitation {
4529
+ invitation_id: string;
4530
+ organization_id: string;
4531
+ organization: string | null;
4532
+ table_id: string;
4533
+ table_name: string;
4534
+ level: string;
4535
+ level_label: string;
4536
+ token: string;
4537
+ expires_at: string | null;
4538
+ say: string;
4539
+ }
4540
+ /**
4541
+ * The person's own pending table invitations (`custom.table_share_outside_for_me`),
4542
+ * so a table page that is not given to her yet can say "this was shared with you —
4543
+ * open it" instead of "you have not been given this table".
4544
+ */
4545
+ declare function myPendingTableInvitations(): Promise<MyPendingTableInvitation[]>;
4546
+ declare function resendOutside(organizationId: string, invitationId: string): Promise<{
4547
+ say: string;
4548
+ accept_path: string;
4549
+ delivery: OutsideShareDelivery;
4550
+ }>;
4551
+ declare function revokeOutside(organizationId: string, invitationId: string): Promise<{
4552
+ say: string;
4553
+ grants_removed: number;
4554
+ }>;
4555
+ /**
4556
+ * WHAT THE PERSON HOLDING THE LINK IS BEING OFFERED — read BEFORE they are asked
4557
+ * to make an account.
4558
+ *
4559
+ * 🚨 IT IS THE ONLY CALL ON THIS PAGE THAT A SIGNED-OUT READER CAN MAKE, and
4560
+ * that is deliberate: somebody outside an organization usually has no account
4561
+ * at all, so a page that redirects to sign-up before it explains anything is
4562
+ * asking a stranger to make an account for a reason it never gave them. It
4563
+ * lives in schema `public` — beside `inv_peek_invited_email`, which has
4564
+ * answered anonymously off a token for far longer — because schema `custom` is
4565
+ * revoked from `anon` by design and one door is not worth opening it.
4566
+ *
4567
+ * `state` is one of: `ready` · `sign_in_needed` · `wrong_account` · `accepted`
4568
+ * · `revoked` · `expired` · `lane_closed` · `unknown`. An UNKNOWN token gets
4569
+ * one sentence and nothing else, so a link can never be used to learn that
4570
+ * something is there.
4571
+ */
4572
+ interface TableSharePeek {
4573
+ state: "ready" | "sign_in_needed" | "wrong_account" | "accepted" | "revoked" | "expired" | "lane_closed" | "unknown";
4574
+ usable: boolean;
4575
+ /** Absent on an unknown token — there is nothing to describe. */
4576
+ table?: string | undefined;
4577
+ table_id?: string | undefined;
4578
+ organization?: string | undefined;
4579
+ organization_id?: string | undefined;
4580
+ level?: string | undefined;
4581
+ level_label?: string | undefined;
4582
+ means?: string | undefined;
4583
+ inviter?: string | undefined;
4584
+ /** Masked (`j••••@example.com`) unless the caller IS that person. */
4585
+ invited_email?: string | undefined;
4586
+ signed_in_as?: string | null | undefined;
4587
+ expires_at?: string | null | undefined;
4588
+ /** One sentence naming the table, the organization and who shared it. */
4589
+ offer?: string | undefined;
4590
+ say: string;
4591
+ /** Who to ask. Never absent — a dead link with nobody to ask is a dead end. */
4592
+ ask: string;
4593
+ }
4594
+ declare function peekTableShare(token: string): Promise<TableSharePeek>;
4595
+ /**
4596
+ * The link somebody can actually paste into a text message. The store answers a
4597
+ * PATH — it has no idea what hostname this app is served on — so the origin is
4598
+ * added here, from the browser the sharer is standing in.
4599
+ */
4600
+ declare function absoluteInviteUrl(acceptPath: string): string;
4601
+ declare function acceptOutsideShare(token: string): Promise<{
4602
+ say: string;
4603
+ organization_id: string;
4604
+ organization: string | null;
4605
+ table_id: string;
4606
+ table: string;
4607
+ level: string;
4608
+ }>;
4609
+
4610
+ type SecureDeliveryOptions = components["schemas"]["OptionsResponse"];
4611
+ type SecureDeliveryReceipt = components["schemas"]["CreateResponse"];
4612
+ type SecureDeliveryPage = components["schemas"]["RecipientPage"];
4613
+ type SecureDeliveryCreate = components["schemas"]["CreateBody"];
4614
+ /** A refusal the server named, with the remedy it offered. */
4615
+ declare class SecureDeliveryRefusal extends Error {
4616
+ readonly code: string;
4617
+ readonly remedy: string | null;
4618
+ constructor(message: string, code: string, remedy: string | null);
4619
+ }
4620
+ declare function fetchSecureDeliveryOptions(dispatch: AppDispatch, resourceType: string, resourceId: string): Promise<SecureDeliveryOptions>;
4621
+ declare function sendSecureDelivery(dispatch: AppDispatch, body: Omit<SecureDeliveryCreate, "organization_id" | "project_id" | "task_id">): Promise<SecureDeliveryReceipt>;
4622
+ declare function revokeSecureDelivery(dispatch: AppDispatch, deliveryId: string): Promise<string>;
4623
+ /** One delivery the signed-in person sent for one record. Addresses are theirs to see. */
4624
+ interface SentSecureDelivery {
4625
+ id: string;
4626
+ recipient_name: string | null;
4627
+ recipient_email: string | null;
4628
+ recipient_phone: string | null;
4629
+ link_channel: string;
4630
+ code_channel: string;
4631
+ field_keys: string[];
4632
+ status: string;
4633
+ created_at: string;
4634
+ expires_at: string;
4635
+ viewed_at: string | null;
4636
+ }
4637
+ declare function listSentSecureDeliveries(resourceType: string, resourceId: string): Promise<SentSecureDelivery[]>;
4638
+ /**
4639
+ * The mobile on file for an existing user with this email — only when that number has agreed to
4640
+ * texts (the send path's own gate) and the caller is that person or shares an organization with
4641
+ * them. Anyone else, or no consent, is null, and the dialog keeps its both-by-email warning.
4642
+ */
4643
+ declare function fetchRecipientPhoneOnFile(email: string): Promise<string | null>;
4644
+ declare const openSecureDelivery: (dispatch: AppDispatch, token: string) => Promise<_ai_matrx_api_account.RecipientPage>;
4645
+ declare const requestSecureDeliveryCode: (dispatch: AppDispatch, token: string) => Promise<_ai_matrx_api_account.RecipientPage>;
4646
+ declare function viewSecureDelivery(dispatch: AppDispatch, token: string, code: string): Promise<SecureDeliveryPage>;
4647
+
4648
+ /** platform.search_engine_indexed_state(type, id) — access ladder T-12. */
4649
+ type SearchEngineIndexedState = {
4650
+ enrolled: false;
4651
+ } | {
4652
+ enrolled: true;
4653
+ /** The record is published to the web (its `published_to_web`, plus its own lifecycle). */
4654
+ published_to_web: boolean;
4655
+ /** The creator's choice; null = follow the type default. */
4656
+ value: boolean | null;
4657
+ /** The type knob, resolved for the record's organization. */
4658
+ type_default: boolean;
4659
+ /** What search engines are told right now. */
4660
+ effective: boolean;
4661
+ can_change: boolean;
4662
+ };
4663
+
4664
+ type Answer = {
4665
+ state: SearchEngineIndexedState | null;
4666
+ error: string | null;
4667
+ };
4668
+ declare function getSearchEngineIndexedState(resourceType: string, resourceId: string): Promise<Answer>;
4669
+ /** `indexed = null` returns the record to its type's default. */
4670
+ declare function setSearchEngineIndexed(resourceType: string, resourceId: string, indexed: boolean | null): Promise<Answer>;
4671
+
4672
+ type Database = any;
4673
+
4674
+ type OrganizationMemberRow = Database["public"]["Functions"]["get_organization_members_with_users"]["Returns"][number];
4675
+ /** How long a settled roster is kept: for the tab (a change made here forgets it). */
4676
+ declare const MEMBER_ROWS_TTL_MS: number;
4677
+ type RosterClient = Pick<ReturnType<typeof createClient>, "rpc">;
4678
+ declare function readOrganizationMemberRows(orgId: string, { now, fresh, client, }?: {
4679
+ now?: number | undefined;
4680
+ /** An explicit refresh: skip a settled answer (an in-flight read is still joined). */
4681
+ fresh?: boolean | undefined;
4682
+ client?: RosterClient | undefined;
4683
+ }): Promise<OrganizationMemberRow[]>;
4684
+ /** A roster changed (role, removal, join, leave): the next read goes to the server. */
4685
+ declare function forgetOrganizationMemberRows(orgId?: string | undefined): void;
4686
+
4687
+ /** Keep only the organizations whose id is in `openIds`. Order preserved. */
4688
+ declare function onlyOpenOrganizations<T extends {
4689
+ id: string;
4690
+ }>(orgs: readonly T[], openIds: ReadonlySet<string>): T[];
4691
+ /**
4692
+ * The text that tells two live organizations with the same visible name apart:
4693
+ * their address (slug), else a short id. Null when the name is unique in the list.
4694
+ */
4695
+ declare function organizationDisambiguators<T extends {
4696
+ id: string;
4697
+ name: string;
4698
+ slug?: string | null | undefined;
4699
+ }>(orgs: readonly T[]): Map<string, string | null>;
4700
+
4701
+ type TeamRole = "admin" | "member";
4702
+ interface Team {
4703
+ id: string;
4704
+ name: string;
4705
+ description: string | null;
4706
+ hrDepartmentId: string | null;
4707
+ hrDepartmentName: string | null;
4708
+ memberCount: number;
4709
+ /** The viewer's role on this team, or null when they are not on it. */
4710
+ myRole: TeamRole | null;
4711
+ /** The viewer may rename it and manage its members (org owner/admin or team admin). */
4712
+ canManage: boolean;
4713
+ /** Set only on archived teams (listed for organization owners and admins). */
4714
+ archivedAt: string | null;
4715
+ createdAt: string;
4716
+ }
4717
+ interface TeamMember {
4718
+ userId: string;
4719
+ role: TeamRole;
4720
+ /** Added by hand (an iam.memberships row). */
4721
+ isListed: boolean;
4722
+ /** On the team because of the linked HR department. */
4723
+ isFromHr: boolean;
4724
+ listedSince: string | null;
4725
+ email: string | null;
4726
+ displayName: string | null;
4727
+ avatarUrl: string | null;
4728
+ }
4729
+ interface HrDepartmentOption {
4730
+ id: string;
4731
+ name: string;
4732
+ parentDepartmentId: string | null;
4733
+ }
4734
+ declare function listTeams(organizationId: string, includeArchived?: boolean): Promise<Team[]>;
4735
+ declare function listTeamMembers(teamId: string): Promise<TeamMember[]>;
4736
+
4737
+ export { ACCESS_SUMMARY_ERROR_HEADLINE, type AccessContainer, type AccessDirectGrant, type AccessGranteeType, type AccessKpis, type AccessNotice, type AccessPanelView, type AccessReasonRow, type AccessSummary, type AccessSummaryView, type ApiCallResult, type AppDispatch, type ChannelReadiness, type CheckPermissionOptions, type ForkResult, GRANT_LIST_SCOPE_NOTE, type GranteeKind, type HrDepartmentOption, type LaneChoice, MEMBER_ROWS_TTL_MS, type MakePublicOptions, type MyPendingTableInvitation, NOTHING_ELSE_GRANTS, NO_GRANTS_DETAIL, NO_GRANTS_HEADLINE, NO_GRANTS_YET_HEADLINE, OFFERED_DB_PERMISSION_LEVELS, type OrCapable, type OrgAvailabilityOptions, type OrganizationMemberRow, type OutsideInviteAnswer, type OutsideShareDelivery, type OutsideShareInvitation, type OutsideShareLevel, type OutsideShareState, type OwnedResource, type OwnerCheckResult, type OwnershipResolution, PERMISSION_LEVEL_RANK, PUBLIC_LANE_COLUMNS, PUBLIC_LANE_TYPES, type Permission, type PermissionCheckResult, PermissionError, PermissionErrorCode, type PermissionWithDetails, type PublishLane, RESOURCE_TYPES, type ResolvedShareToken, type ResourceType, type ResourceVisibility, type RevokeAccessOptions, SHAREABLE_RESOURCE_REGISTRY, SHOWN_TO_ORDER, SHOWN_TO_WORDS, type SearchEngineIndexedState, type SecureDeliveryCreate, type SecureDeliveryOptions, type SecureDeliveryPage, type SecureDeliveryReceipt, SecureDeliveryRefusal, type SentSecureDelivery, type ShareActionResult, type ShareCapabilities, type ShareDbClient, type ShareLink, type ShareNoticeAnswer, type ShareServerCall, type ShareServerResult, type ShareTargetType, type ShareWithUserOptions, type ShareableResourceEntry, type SharingCopyContext, type SharingHost, type SharingState, type ShownTo, type ShownToContext, type TableSharePeek, type Team, type TeamMember, type TeamRole, type UpdatePermissionOptions, type WhoCanSee, absoluteInviteUrl, acceptOutsideShare, accessKpis, accessReasonRows, accessSummaryView, appUrl, applyShownTo, batchShareWithUsers, callApi, checkPermission, configureSharing, containerDetail, containerTitle, createClient, createSafeShareMessage, createShareLink, describeAccessSummary, describeShareLinkAccess, describeShareLinkExpiry, ensureOrgAvailability, ensureOrgId, evaluateShareLinkHandoff, fetchAccessSummary, fetchEntityTitles, fetchRecipientPhoneOnFile, fetchSecureDeliveryOptions, fetchShownToContext, forgetOrganizationMemberRows, forkSharedResource, getActiveOrgId, getClaimsUser, getPermissionLevelLabel, getPermissionLevelsAtOrAbove, getResourcePermissions, getResourceSharePath, getResourceTypeLabel, getResourceVisibility, getSearchEngineIndexedState, getShareCapabilities, getShareableResource, getSharedWithMe, grantCsvRow, grantCsvRows, grantLevelLabel, grantOrgAvailability, granteeKind, granteeLabel, granteeSecondaryLabel, hasPublicPage, humanAccessPanel, humanAccessSummary, humanGrantList, humanGrantRow, humanNotices, isForkable, isJsonObject, isKnownEntity, isPrivateSummary, isResourceOwner, listPermissions, listSentSecureDeliveries, listShareLinks, listTeamMembers, listTeams, makePrivate, makePublic, myPendingTableInvitations, onlyOpenOrganizations, openSecureDelivery, organizationDisambiguators, passThroughDispatch, peekTableShare, permissionLevelRank, publicLaneSelect, publicResourceUrl, readOrganizationMemberRows, readOutsideShare, reasonCsvRows, recordNoun, requestSecureDeliveryCode, resendOutside, resolveEntityHref, resolveResourceOwnership, resolveResourceToken, resolveShareToken, resolveSharingAuthority, resolveTableName, revokeAccess, revokeOrgAccess, revokeOutside, revokePublicAccess, revokeSecureDelivery, revokeShareLink, revokeUserAccess, satisfiesPermissionLevel, sendSecureDelivery, sendShareNotice, setResourceShownTo, setSearchEngineIndexed, setStoreLane, shareClient, shareLinkSecurityStateMatches, shareLinkUnavailableReason, shareLinkUrl, shareUrlForLink, shareWithOutsidePerson, shareWithUser, sharingHost, sharingLocation, shownToBlendedFilter, shownToFilter, shownToMyOrgsFilter, summaryReachLabel, supabase, updatePermissionLevel, validatePermission, viewSecureDelivery };