@ai-matrx/records-ui 0.103.6 → 0.103.10

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.
package/dist/index.d.cts CHANGED
@@ -1,11 +1,11 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, KeyboardEvent, ReactElement, ComponentType, RefObject, SVGAttributes } from 'react';
3
3
  import * as _ai_matrx_records from '@ai-matrx/records';
4
- import { RecordScopeContext, EnrichCell, RecordsError, Field, TableDecorations, Uuid as Uuid$1, RowAction, RecordDocument, Table, ReadRow, StoreFilter, RecordRead, PermissionLevel, AggregateFilter, RelationDisplay, WriteConflict, RecordsErrorCode, RecordFilter, RuleExpression, RecordsResult, SavedViewRow, ImportRun, DeclarableFieldKind, NewerFieldKind, ParityFieldType, NewFieldDeclaration, ChoiceRehome, FieldOptionEdit, StoredRecord, ChoiceNudge, HiddenFieldNotice, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkApprovalState, WorkInboxKind, FieldKind, ArchiveLane, ArchivedRow, WorkInboxView, WorkInboxItem, PortalAccent, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, PublicPicture, PortalStyle, MySubscription, DashboardBlockKind, AggregateBucket, AggregateMeasure, AggregateCompare, DashboardTarget, DashboardBlock, DashboardSummary, AggregateGroupValue, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, TableDuplicated, HistoryActor, FieldHistoryEntry, DrillDefinition, DrillSource, TableDuplicateProgress, TableArchiveProgress } from '@ai-matrx/records';
4
+ import { Uuid, RowAction, Field, RowActionStep, RecordScopeContext, EnrichCell, RecordsError, TableDecorations, RecordDocument, Table, ReadRow, StoreFilter, RecordRead, PermissionLevel, AggregateFilter, RelationDisplay, WriteConflict, RecordsErrorCode, RecordFilter, RuleExpression, RecordsResult, SavedViewRow, ImportRun, DeclarableFieldKind, NewerFieldKind, ParityFieldType, NewFieldDeclaration, ChoiceRehome, FieldOptionEdit, StoredRecord, ChoiceNudge, HiddenFieldNotice, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkApprovalState, WorkInboxKind, FieldKind, ArchiveLane, ArchivedRow, WorkInboxView, WorkInboxItem, PortalAccent, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, PublicPicture, PortalStyle, MySubscription, DashboardBlockKind, AggregateBucket, AggregateMeasure, AggregateCompare, DashboardTarget, DashboardBlock, DashboardSummary, AggregateGroupValue, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, TableDuplicated, HistoryActor, FieldHistoryEntry, DrillDefinition, DrillSource, TableDuplicateProgress, TableArchiveProgress } from '@ai-matrx/records';
5
5
  import { ReversibleAnnouncement } from '@ai-matrx/kit/reversible';
6
6
  import { W as WhatYouMayDo, T as TableActionHost, O as ObjectAction, a as ObjectActionIcon } from './objectActions-XkhxU-DP.cjs';
7
7
  export { A as ACTION_CHECKING_ACCESS_REASON, b as ACTION_NOT_HERE_REASON, c as ACTION_NO_ACCESS_REASON, d as ACTION_PLATFORM_TABLE_REASON, B as BuiltOnDestination, C as Capability, D as DEFAULT_ACTION_ORIGIN, K as KERNEL_REASON, L as LEVEL_WORD, N as NOT_ANSWERED_YET, e as OBJECT_ACTION_GROUPS, f as ObjectActionDropdownEntry, g as ObjectActionGroup, h as ObjectActionGroupDef, i as ObjectActionSection, S as STANDARD_VERBS, j as STRIP_FEATURE_ROWS, k as StandardVerbId, l as StripAndRows, m as TableActionSubject, n as TableActionsInput, o as dropdownActionIds, p as dropdownActions, q as groupObjectActions, r as levelNeededFor, s as rightsReason, t as tableActions, u as tableLink, v as toDropdownEntries, w as toStripAndRows, x as whatYouMayDo, y as whatYouMayDoWithTable, z as withExtensions } from './objectActions-XkhxU-DP.cjs';
8
- import { Uuid, Field as Field$1, ReadRow as ReadRow$1, StoreFilter as StoreFilter$1, useRecordsClient, Table as Table$1 } from '@ai-matrx/records/react';
8
+ import { Uuid as Uuid$1, Table as Table$1, Field as Field$1, ReadRow as ReadRow$1, StoreFilter as StoreFilter$1, useRecordsClient } from '@ai-matrx/records/react';
9
9
  import { TableStyle, GroupAggregateSpec, GroupOrder, ChoiceColorLookup, MatrxTableCardProps, StyleColor, MatrxDataTableDrillConfig, MatrxColumnDef as MatrxColumnDef$1, MatrxDrillDimension, MatrxDrillMeasure, MatrxDrillFilter, MatrxDrillQuestion, MatrxDrillAnswers } from '@ai-matrx/design-system/data-table';
10
10
  import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
11
11
  import { RecordsClient, ParsedImport, NewFieldSpec } from '@ai-matrx/records/core';
@@ -19,6 +19,37 @@ import { TemplateSpec } from '@ai-matrx/records/templates';
19
19
  import { TemplatePreview as TemplatePreview$1 } from '@ai-matrx/records/memory';
20
20
  import { MatrxColumnDef } from '@ai-matrx/design-system/data-table/types';
21
21
 
22
+ /** What the settings panel can see right now, in the words the agent reads. */
23
+ interface TableSettingsSnapshot {
24
+ table_id: Uuid;
25
+ /** True when the description or an open row action holds edits not saved yet. */
26
+ has_unsaved_changes: boolean;
27
+ table_details_draft: {
28
+ table_name: string;
29
+ description: string;
30
+ row_label: string | null;
31
+ };
32
+ saved_row_actions?: Array<Record<string, unknown>>;
33
+ editing_row_action?: Record<string, unknown>;
34
+ editing_row_action_problems?: string[];
35
+ }
36
+ /** What the host's surface reads and calls. Every call reads the panel as it is at that moment. */
37
+ interface TableSettingsAgent {
38
+ read: () => TableSettingsSnapshot;
39
+ /** Replace the open row action (or open a new one) with a whole action. */
40
+ stageRowAction: (input: unknown) => Promise<void>;
41
+ /** Write one Calculate step's formula in the open update action. */
42
+ stageStepFormula: (input: unknown) => Promise<void>;
43
+ /** Stage the description in "About this table". */
44
+ stageTableDetails: (input: unknown) => Promise<void>;
45
+ }
46
+ /** One step the agent sent, in the manifest's words, as the store's step. Throws on anything else. */
47
+ declare function stepFromAgent(input: unknown, index: number, fields: readonly Field[], check: (expression: string, where: string) => Promise<void>): Promise<RowActionStep>;
48
+ /** A whole row action the agent sent, as the store's action. Throws on anything the Save would refuse. */
49
+ declare function rowActionFromAgent(input: unknown, fields: readonly Field[], check: (expression: string, where: string) => Promise<void>): Promise<RowAction>;
50
+ /** The action as the agent reads it: columns by machine name, formulas as text. */
51
+ declare function actionForAgent(action: RowAction, fields: readonly Field[]): Record<string, unknown>;
52
+
22
53
  /** One named piece of grounding, shaped the way the platform's context slice takes them. */
23
54
  interface RecordChatEntry {
24
55
  key: string;
@@ -33,8 +64,8 @@ interface RecordChatEntry {
33
64
  * answer into a link to the record AND to the version it was read at.
34
65
  */
35
66
  cite?: {
36
- record_id: Uuid;
37
- field_id: Uuid;
67
+ record_id: Uuid$1;
68
+ field_id: Uuid$1;
38
69
  value_version: number;
39
70
  written_at: string | null;
40
71
  };
@@ -63,8 +94,8 @@ interface RecordChatContext {
63
94
  * constant.
64
95
  */
65
96
  surfaceKey: string;
66
- tableId: Uuid;
67
- recordId: Uuid;
97
+ tableId: Uuid$1;
98
+ recordId: Uuid$1;
68
99
  tableName: string;
69
100
  /** The record's own title, for the panel's one-row header and the chip. */
70
101
  title: string;
@@ -89,16 +120,16 @@ interface RecordChatContext {
89
120
  */
90
121
  declare const NO_CHAT_REASON: string;
91
122
  interface RecordChatProps {
92
- tableId: Uuid;
93
- recordId: Uuid;
123
+ tableId: Uuid$1;
124
+ recordId: Uuid$1;
94
125
  className?: string | undefined;
95
126
  }
96
127
  declare function RecordChat({ tableId, recordId, className }: RecordChatProps): react.JSX.Element;
97
128
 
98
129
  /** What the host is asked to have the SERVER's `records` tool do. */
99
130
  interface EnrichAsk {
100
- tableId: Uuid;
101
- fieldId: Uuid;
131
+ tableId: Uuid$1;
132
+ fieldId: Uuid$1;
102
133
  fieldKey: string;
103
134
  /** How many records this run covers. */
104
135
  rows: number;
@@ -147,15 +178,15 @@ declare function EnrichBadge({ cell, onPin, className }: EnrichBadgeProps): reac
147
178
  * badges, which is why the store answers the whole page at once. The hook is keyed by the
148
179
  * record ids the grid is actually drawing, so paging re-asks and scrolling does not.
149
180
  */
150
- declare function useEnrichCells(tableId: Uuid | undefined, recordIds: Uuid[] | undefined): {
181
+ declare function useEnrichCells(tableId: Uuid$1 | undefined, recordIds: Uuid$1[] | undefined): {
151
182
  cells: Map<string, EnrichCell>;
152
183
  refresh: () => Promise<void>;
153
184
  error: RecordsError | null;
154
185
  };
155
186
  interface EnrichPanelProps {
156
- tableId: Uuid;
187
+ tableId: Uuid$1;
157
188
  /** Open straight onto one column. Absent, the panel lists every agent-owned column. */
158
- fieldId?: Uuid | undefined;
189
+ fieldId?: Uuid$1 | undefined;
159
190
  className?: string | undefined;
160
191
  }
161
192
  /**
@@ -305,6 +336,8 @@ type GridPresentation = {
305
336
  * organization that freezes the first column — an empty `frozen` cannot say that.
306
337
  */
307
338
  wrap?: boolean;
339
+ /** NOTION'S "WRAP COLUMN" (N5): the columns that wrap their text when the view as a whole does not. */
340
+ wrapColumns?: string[];
308
341
  fit?: "auto" | "fit" | "scroll";
309
342
  freezeFirst?: boolean;
310
343
  /**
@@ -413,12 +446,12 @@ declare function resolveTableStyle(decorations: TableDecorations | null | undefi
413
446
 
414
447
  /** One record as the grid shows it: its id, its name (the row label) and its masked document. */
415
448
  interface GridContextRecord {
416
- id: Uuid$1;
449
+ id: Uuid;
417
450
  title: string;
418
451
  document: RecordDocument;
419
452
  }
420
453
  interface GridContextSnapshot {
421
- tableId: Uuid$1;
454
+ tableId: Uuid;
422
455
  tableName: string;
423
456
  /** The table's own description (`metadata.description`), when it has one. */
424
457
  tableDescription: string | null;
@@ -432,7 +465,7 @@ interface GridContextSnapshot {
432
465
  canWrite: boolean;
433
466
  /** The cell the cursor is on: its record, its Field key and the value drawn in it. */
434
467
  currentCell: {
435
- rowId: Uuid$1;
468
+ rowId: Uuid;
436
469
  key: string;
437
470
  value: unknown;
438
471
  } | null;
@@ -442,7 +475,7 @@ interface GridContextSnapshot {
442
475
  selectedRange: {
443
476
  tsv: string;
444
477
  cellCount: number;
445
- rowIds: Uuid$1[];
478
+ rowIds: Uuid[];
446
479
  keys: string[];
447
480
  } | null;
448
481
  /** The rows ticked with the row boxes. */
@@ -465,7 +498,7 @@ interface GridCursor {
465
498
  tsv: string;
466
499
  }
467
500
  declare function gridContextSnapshot(args: {
468
- tableId: Uuid$1;
501
+ tableId: Uuid;
469
502
  table: Table | null;
470
503
  fields: readonly Field[];
471
504
  /** The Field keys on screen, in order. */
@@ -476,7 +509,7 @@ declare function gridContextSnapshot(args: {
476
509
  cursor: GridCursor | null;
477
510
  /** The cell whose editor is open, which wins over the cursor. */
478
511
  editing: {
479
- rowId: Uuid$1;
512
+ rowId: Uuid;
480
513
  key: string;
481
514
  draft: unknown;
482
515
  } | null;
@@ -536,7 +569,7 @@ interface HostLayout {
536
569
  label: string;
537
570
  /** Draw it for this table, with the question the address asked when there is one. */
538
571
  render: (args: {
539
- tableId: Uuid$1;
572
+ tableId: Uuid;
540
573
  filter?: StoreFilter | undefined;
541
574
  /**
542
575
  * Opens the page's own export (CSV, XLSX, copy and transform) — the one export a table has,
@@ -576,10 +609,10 @@ interface RichTextEditProps {
576
609
  }
577
610
  interface ReferenceChipRef {
578
611
  token: string;
579
- id: Uuid$1;
612
+ id: Uuid;
580
613
  label: string | null;
581
614
  /** For `token: "record"`, the Table the relation points into. */
582
- tableId?: Uuid$1 | undefined;
615
+ tableId?: Uuid | undefined;
583
616
  /**
584
617
  * The record it names sits in Archived items. An archive keeps every reference to what it
585
618
  * archived (chair ruling B3-21), so the chip still names it and draws the archived state.
@@ -637,12 +670,32 @@ interface RecordsUiHost {
637
670
  label: string;
638
671
  onChange: (name: string) => void;
639
672
  }) => ReactNode;
673
+ /**
674
+ * OPTIONAL. HELP WRITING A FORMULA (Sheet retirement). The formula box hands the host what it
675
+ * holds — the text, the table's other columns and the store's reading of what is wrong — and the
676
+ * host draws its own help control beside the box (matrx-frontend runs its formula-writing job).
677
+ * Whatever formula the help arrives at goes back through `onFormula` into the box, unsaved, for
678
+ * the person to keep or change. Unbound, nothing is drawn.
679
+ */
680
+ formulaHelp?: (ask: FormulaHelpAsk) => ReactNode;
681
+ /**
682
+ * OPTIONAL. AN AGENT OVER A TABLE'S SETTINGS (Sheet retirement). While the settings panel is open
683
+ * it wraps itself in what this returns, handing the host a `TableSettingsAgent`: what the panel
684
+ * can see (the description as edited, the row actions and the one being edited, what stops it
685
+ * saving) and three staging calls (a whole row action, one step's formula, the description).
686
+ * Staging never saves; the person presses Save. Unbound, the panel draws bare.
687
+ */
688
+ settingsAgent?: (args: {
689
+ tableId: Uuid;
690
+ agent: TableSettingsAgent;
691
+ children: ReactNode;
692
+ }) => ReactNode;
640
693
  /** Answer the rights question for one table. Synchronous: a screen renders now. */
641
694
  rights?: (table: Table) => TableRights;
642
695
  /** Where a record's own page lives, when the host has one. A peek is used when it does not. */
643
696
  hrefForRecord?: (args: {
644
697
  table: Table;
645
- recordId: Uuid$1;
698
+ recordId: Uuid;
646
699
  }) => string | undefined;
647
700
  /**
648
701
  * OPTIONAL. WHERE A FILE OPENS. A value too big for one cell is kept as a file and the cell
@@ -651,7 +704,7 @@ interface RecordsUiHost {
651
704
  * screen cannot open — never a dead link.
652
705
  */
653
706
  hrefForFile?: (args: {
654
- fileId: Uuid$1;
707
+ fileId: Uuid;
655
708
  }) => string | undefined;
656
709
  /**
657
710
  * OPTIONAL. READ A FILE'S WHOLE TEXT, so an export writes a big value's whole content rather
@@ -659,7 +712,7 @@ interface RecordsUiHost {
659
712
  * the file (`wholeValueNotRead`) — never the words passed off as the value.
660
713
  */
661
714
  readFileText?: (args: {
662
- fileId: Uuid$1;
715
+ fileId: Uuid;
663
716
  }) => Promise<string>;
664
717
  /**
665
718
  * OPTIONAL. A FILE DRAWN AS A PICTURE — the gallery card's cover when the view's picture column
@@ -668,7 +721,7 @@ interface RecordsUiHost {
668
721
  * the cover says in words that this screen cannot draw files, never a broken image.
669
722
  */
670
723
  fileImage?: (args: {
671
- fileId: Uuid$1;
724
+ fileId: Uuid;
672
725
  alt: string;
673
726
  }) => ReactNode;
674
727
  /**
@@ -748,7 +801,7 @@ interface RecordsUiHost {
748
801
  */
749
802
  upload?: (file: File) => Promise<{
750
803
  ok: true;
751
- fileId: Uuid$1;
804
+ fileId: Uuid;
752
805
  } | {
753
806
  ok: false;
754
807
  reason: string;
@@ -767,7 +820,7 @@ interface RecordsUiHost {
767
820
  pickFiles?: (ask: {
768
821
  multiple: boolean;
769
822
  accept?: string;
770
- }) => Promise<Uuid$1[] | null>;
823
+ }) => Promise<Uuid[] | null>;
771
824
  /**
772
825
  * Where this app serves its PUBLIC pages from, when that is not the origin
773
826
  * the screen is running on. A form's link is built here, so an owner copying
@@ -787,7 +840,7 @@ interface RecordsUiHost {
787
840
  * an empty picker that looks like "you have no views".
788
841
  */
789
842
  savedViews?: () => Promise<Array<{
790
- id: Uuid$1;
843
+ id: Uuid;
791
844
  name: string;
792
845
  }>>;
793
846
  /**
@@ -825,8 +878,8 @@ interface RecordsUiHost {
825
878
  * stamped with it). Unbound, nothing is drawn.
826
879
  */
827
880
  recordSections?: (target: {
828
- tableId: Uuid$1;
829
- recordId: Uuid$1;
881
+ tableId: Uuid;
882
+ recordId: Uuid;
830
883
  }) => ReactNode;
831
884
  /**
832
885
  * OPTIONAL. THE PLATFORM'S ONE RICH EDITOR, for a record page's body (lane TABLE-EXPERIENCE,
@@ -856,8 +909,8 @@ interface RecordsUiHost {
856
909
  * available here.
857
910
  */
858
911
  linkRecord?: (target: {
859
- tableId: Uuid$1;
860
- recordId: Uuid$1;
912
+ tableId: Uuid;
913
+ recordId: Uuid;
861
914
  name: string;
862
915
  }) => void;
863
916
  /**
@@ -876,8 +929,8 @@ interface RecordsUiHost {
876
929
  * not render at all.
877
930
  */
878
931
  talkToRecord?: (target: {
879
- tableId: Uuid$1;
880
- recordId: Uuid$1;
932
+ tableId: Uuid;
933
+ recordId: Uuid;
881
934
  title: string;
882
935
  }) => void;
883
936
  /**
@@ -898,8 +951,8 @@ interface RecordsUiHost {
898
951
  * job, and the agent is handed exactly what the person was looking at.
899
952
  */
900
953
  runAgentAction?: (target: {
901
- tableId: Uuid$1;
902
- recordId: Uuid$1;
954
+ tableId: Uuid;
955
+ recordId: Uuid;
903
956
  title: string;
904
957
  action: string;
905
958
  prompt: string;
@@ -988,9 +1041,9 @@ interface RecordsUiHost {
988
1041
  * Dashboards area lists no pages and offers no "New page" — absent, never dead.
989
1042
  */
990
1043
  pageHref?: (target: {
991
- pageId: Uuid$1;
1044
+ pageId: Uuid;
992
1045
  } | {
993
- newOnTable: Uuid$1;
1046
+ newOnTable: Uuid;
994
1047
  }) => string;
995
1048
  /**
996
1049
  * OPTIONAL. ASK THE AGENT TO CHANGE THIS DASHBOARD (SCR-16).
@@ -1026,6 +1079,20 @@ interface RecordsUiHost {
1026
1079
  */
1027
1080
  onAskForOne?: (ask: AgentBuildAsk) => void;
1028
1081
  }
1082
+ /** What the formula box hands the host's help (`formulaHelp`). */
1083
+ interface FormulaHelpAsk {
1084
+ tableId: Uuid;
1085
+ /** The formula as it stands in the box (may be empty). */
1086
+ text: string;
1087
+ /** The table's other columns, the ones the formula may read as {Name}. */
1088
+ columns: readonly Field[];
1089
+ /** The store's reading of what is wrong with the text, when it does not parse. */
1090
+ mistake: string | null;
1091
+ /** The functions the store works out, as a person types them. */
1092
+ functions: readonly string[];
1093
+ /** Put a formula into the box (unsaved). */
1094
+ onFormula: (text: string) => void;
1095
+ }
1029
1096
  /** What a person is asking an agent to make, and where they were standing. */
1030
1097
  interface AgentBuildAsk {
1031
1098
  /**
@@ -1033,7 +1100,7 @@ interface AgentBuildAsk {
1033
1100
  * agent adds it through the store's field door, held for approval like every agent schema change.
1034
1101
  */
1035
1102
  kind: "form" | "booking" | "portal" | "digest" | "column";
1036
- tableId: Uuid$1;
1103
+ tableId: Uuid;
1037
1104
  /** The sentence this package would say. A host opens its composer with it. */
1038
1105
  suggestion: string;
1039
1106
  }
@@ -1045,16 +1112,16 @@ interface AgentBuildAsk {
1045
1112
  * counted, which is the one way this control can lie.
1046
1113
  */
1047
1114
  interface OpenRecordsAsk {
1048
- tableId: Uuid$1;
1115
+ tableId: Uuid;
1049
1116
  filter: Record<string, AggregateFilter>;
1050
1117
  /** What the person clicked, in words: "Jobs by stage this month · Awaiting parts". */
1051
1118
  label: string;
1052
1119
  }
1053
1120
  /** Which dashboard a re-ask is about, so the agent re-states it rather than making a second one. */
1054
1121
  interface ReaskContext {
1055
- tableId: Uuid$1;
1122
+ tableId: Uuid;
1056
1123
  /** Null while the canvas has no dashboard yet — the answer is the first one. */
1057
- dashboardId: Uuid$1 | null;
1124
+ dashboardId: Uuid | null;
1058
1125
  dashboardName: string | null;
1059
1126
  }
1060
1127
  /**
@@ -1066,8 +1133,8 @@ interface ReaskContext {
1066
1133
  interface ShareSubject {
1067
1134
  kind: "record" | "table";
1068
1135
  /** The store is keyed (organization_id, id); this package never guesses one. */
1069
- organizationId: Uuid$1;
1070
- subjectId: Uuid$1;
1136
+ organizationId: Uuid;
1137
+ subjectId: Uuid;
1071
1138
  /** What to call it on screen. Never empty — the id's first eight characters at worst. */
1072
1139
  name: string;
1073
1140
  /** Close the dialog. The control owns the open/closed state, the host owns the dialog. */
@@ -1095,7 +1162,7 @@ interface PendingCapture {
1095
1162
  * tell a retry from a second capture.
1096
1163
  */
1097
1164
  clientKey: string;
1098
- tableId: Uuid$1;
1165
+ tableId: Uuid;
1099
1166
  payload: Record<string, unknown>;
1100
1167
  capturedAt: string;
1101
1168
  device: string;
@@ -1162,7 +1229,7 @@ declare function useTableRights(table: Table | null | undefined): TableRights;
1162
1229
  * colleague at Editor inside a table she holds at Viewer. The grid used to
1163
1230
  * label that row "viewer" while the store let her write to it.
1164
1231
  */
1165
- declare function useRecordRights(recordId: Uuid$1 | null): WhatYouMayDo;
1232
+ declare function useRecordRights(recordId: Uuid | null): WhatYouMayDo;
1166
1233
  /**
1167
1234
  * The same question for a whole page of records, in ONE call — the door takes a
1168
1235
  * list precisely so a grid never makes one call per row.
@@ -1171,7 +1238,37 @@ declare function useRecordRights(recordId: Uuid$1 | null): WhatYouMayDo;
1171
1238
  * table level already admits editing, every row it returned is editable and
1172
1239
  * there is nothing a per-record answer could add.
1173
1240
  */
1174
- declare function useRowRights(rowIds: Uuid$1[], enabled: boolean): (rowId: Uuid$1) => WhatYouMayDo | null;
1241
+ declare function useRowRights(rowIds: Uuid[], enabled: boolean): (rowId: Uuid) => WhatYouMayDo | null;
1242
+
1243
+ /** The functions the store's evaluator answers, from its generated vocabulary. */
1244
+ declare const FORMULA_FUNCTIONS: string[];
1245
+
1246
+ /** The columns a record may be named by, in the table's order. Pure. */
1247
+ declare function rowLabelChoices(fields: readonly Field$1[]): Array<{
1248
+ value: string;
1249
+ label: string;
1250
+ }>;
1251
+ /** The patch that keeps a description: the table's other metadata is carried, never dropped. Pure. */
1252
+ declare function descriptionPatch(table: Pick<Table$1, "metadata">, text: string): {
1253
+ metadata: Record<string, unknown>;
1254
+ };
1255
+ declare function TableDetails({ tableId, table, fields, onSaved, }: {
1256
+ tableId: Uuid$1;
1257
+ table: Table$1;
1258
+ fields: readonly Field$1[];
1259
+ onSaved?: (() => void) | undefined;
1260
+ }): react.JSX.Element;
1261
+ /**
1262
+ * WRITE A TABLE'S DESCRIPTION, from outside this panel (an agent's confirmed write, Sheet
1263
+ * retirement): the table read fresh, the same patch and the same version-checked door the panel's
1264
+ * own Save uses, and the same shape nudge, so every open screen re-reads it.
1265
+ */
1266
+ declare function saveTableDescription(client: Pick<RecordsClient, "tableRead" | "revisions" | "recordHeaders" | "recordUpdate" | "recordUpdateAddingChoices">, tableId: Uuid$1, text: string): Promise<{
1267
+ ok: true;
1268
+ } | {
1269
+ ok: false;
1270
+ says: string;
1271
+ }>;
1175
1272
 
1176
1273
  /**
1177
1274
  * MACHINE IDENTITY, BY SHAPE — never by a list of the sentences we happen to
@@ -1333,13 +1430,13 @@ declare function cardTitleField(fields: readonly Field[], titleKey: string | nul
1333
1430
  /** What a person has chosen: the table, and optionally which of its columns to show. */
1334
1431
  interface ReferenceChoice {
1335
1432
  /** The Table whose records this column offers. `""` until one is picked. */
1336
- targetTableId: Uuid$1 | "";
1433
+ targetTableId: Uuid | "";
1337
1434
  /** Which of that Table's columns to show. `null` = the Table's own reference column. */
1338
1435
  display: RelationDisplay | null;
1339
1436
  }
1340
1437
  interface ReferenceBuilderProps {
1341
1438
  /** The Table the column being built lives on, so "this table" can be marked. */
1342
- tableId: Uuid$1;
1439
+ tableId: Uuid;
1343
1440
  value: ReferenceChoice;
1344
1441
  onChange: (next: ReferenceChoice) => void;
1345
1442
  /**
@@ -1376,7 +1473,7 @@ interface PersonPickerProps {
1376
1473
  }
1377
1474
  /** A Person record in the kernel Table, as this picker needs to read it. */
1378
1475
  interface PersonRecord {
1379
- id: Uuid$1;
1476
+ id: Uuid;
1380
1477
  userId: string | null;
1381
1478
  name: string;
1382
1479
  }
@@ -1387,9 +1484,9 @@ declare function memberName(member: OrganizationMember): string;
1387
1484
  * an agent filling a person field server-side needs exactly the same answer,
1388
1485
  * and two implementations of "which record is this person" is two answers.
1389
1486
  */
1390
- declare function personRecordForMember(client: RecordsClient, personTableId: Uuid$1, people: PersonRecord[], member: OrganizationMember): Promise<{
1487
+ declare function personRecordForMember(client: RecordsClient, personTableId: Uuid, people: PersonRecord[], member: OrganizationMember): Promise<{
1391
1488
  ok: true;
1392
- data: Uuid$1;
1489
+ data: Uuid;
1393
1490
  } | {
1394
1491
  ok: false;
1395
1492
  error: RecordsError;
@@ -1398,23 +1495,23 @@ declare function PersonPicker({ field, value, onChange, disabled, id, className,
1398
1495
 
1399
1496
  interface RecordVersions {
1400
1497
  /** The version the person saw this record at; waits for the read of freshly drawn rows. `null` = unread. */
1401
- seen: (id: Uuid$1) => Promise<number | null>;
1498
+ seen: (id: Uuid) => Promise<number | null>;
1402
1499
  /** The same, for many records at once. */
1403
- seenMany: (ids: readonly Uuid$1[]) => Promise<Map<Uuid$1, number | null>>;
1500
+ seenMany: (ids: readonly Uuid[]) => Promise<Map<Uuid, number | null>>;
1404
1501
  /** A write this screen made moved the record on (a version only goes up). */
1405
- wrote: (id: Uuid$1, version: number) => void;
1502
+ wrote: (id: Uuid, version: number) => void;
1406
1503
  /**
1407
1504
  * Read these records' versions again now: the person pressed Reload, or the store refused a write
1408
1505
  * because somebody else won (`PT409`) — the rows are re-read too, so the next write is against what
1409
1506
  * the person then sees. A change that moved only the version (who sees the row) never re-reads by
1410
1507
  * content, so without this the row stayed refused until the screen was opened again (verifier V10).
1411
1508
  */
1412
- refresh: (ids: readonly Uuid$1[]) => void;
1509
+ refresh: (ids: readonly Uuid[]) => void;
1413
1510
  }
1414
1511
 
1415
1512
  /** Which cell is open. A grid opens exactly one at a time, like every other grid. */
1416
1513
  interface CellAddress {
1417
- rowId: Uuid$1;
1514
+ rowId: Uuid;
1418
1515
  key: string;
1419
1516
  }
1420
1517
  /** What one cell is doing right now, so nothing about it is guessed by a caller. */
@@ -1425,6 +1522,14 @@ interface CellRefusal {
1425
1522
  conflict: WriteConflict | null;
1426
1523
  /** The value that was being written, so Retry can write it again. */
1427
1524
  attempted: unknown;
1525
+ /**
1526
+ * THE WRITE NEVER REACHED THE STORE (offline, `unreachable`): nothing was refused. The typed value
1527
+ * stays in the cell, the cell says "Not saved", and it is sent again when the browser is back
1528
+ * online (`unsentWrites`). Try now / Discard meanwhile.
1529
+ */
1530
+ unsent?: boolean | undefined;
1531
+ /** What the edit started from, so a resend is judged against the same base. */
1532
+ base?: unknown;
1428
1533
  }
1429
1534
  declare function fieldIsEditable(field: Field): boolean;
1430
1535
  interface GridEditing {
@@ -1435,8 +1540,8 @@ interface GridEditing {
1435
1540
  draft: unknown;
1436
1541
  /** The open cell's editor reports every keystroke to the session. */
1437
1542
  type: (value: unknown) => void;
1438
- stateOf: (rowId: Uuid$1, key: string) => CellState;
1439
- refusalOf: (rowId: Uuid$1, key: string) => CellRefusal | null;
1543
+ stateOf: (rowId: Uuid, key: string) => CellState;
1544
+ refusalOf: (rowId: Uuid, key: string) => CellRefusal | null;
1440
1545
  /**
1441
1546
  * Open a cell's editor. `seed` is what the person TYPED to open it (type-to-edit: a letter, an
1442
1547
  * IME composition, an Option/AltGr character): a column a person types into opens holding
@@ -1471,34 +1576,36 @@ interface GridEditing {
1471
1576
  * versioned, optimistic write path every other cell uses — the refusal, the conflict and
1472
1577
  * the "Try again" beside it are identical.
1473
1578
  */
1474
- setCell: (rowId: Uuid$1, key: string, value: unknown) => void;
1579
+ setCell: (rowId: Uuid, key: string, value: unknown) => void;
1475
1580
  /**
1476
1581
  * A VERSION CONFLICT ONLY: write the attempted value again, on top of the
1477
1582
  * version the store said won. Never offered for a refusal of the VALUE — the
1478
1583
  * same value would be refused the same way (VERIFIER-15 H2).
1479
1584
  */
1480
- retry: (rowId: Uuid$1, key: string) => void;
1585
+ retry: (rowId: Uuid, key: string) => void;
1481
1586
  /** A VERSION CONFLICT ONLY: drop the edit and show what the other person wrote. */
1482
- keepTheirs: (rowId: Uuid$1, key: string) => void;
1587
+ keepTheirs: (rowId: Uuid, key: string) => void;
1588
+ /** AN UNSENT WRITE ONLY: send it again now (it also goes by itself when the browser is back online). */
1589
+ tryNow: (rowId: Uuid, key: string) => void;
1483
1590
  /**
1484
1591
  * KEEP EDITING — the refused cell opens again HOLDING WHAT WAS TYPED, so the
1485
1592
  * person corrects `-3` rather than typing it from nothing (lane
1486
1593
  * RECORDS-UI-FIX, VERIFIER-15 H2).
1487
1594
  */
1488
- keepEditing: (rowId: Uuid$1, key: string) => void;
1595
+ keepEditing: (rowId: Uuid, key: string) => void;
1489
1596
  /** DISCARD — throw the refused value away; the cell shows what is stored. */
1490
- discard: (rowId: Uuid$1, key: string) => void;
1597
+ discard: (rowId: Uuid, key: string) => void;
1491
1598
  /**
1492
1599
  * FORGET WHAT THIS SESSION DREW FOR THESE CELLS — after a change made OUTSIDE the editor (an
1493
1600
  * undo, a bulk change) the store holds a new value and a new version, so the optimistic value
1494
1601
  * and the version this session held for the row are both stale.
1495
1602
  */
1496
1603
  forget: (cells: ReadonlyArray<{
1497
- rowId: Uuid$1;
1604
+ rowId: Uuid;
1498
1605
  key: string;
1499
1606
  }>) => void;
1500
1607
  /** Soft delete, through the store's own door. Answers the store's refusal, or null. */
1501
- remove: (rowId: Uuid$1) => Promise<RecordsError | null>;
1608
+ remove: (rowId: Uuid) => Promise<RecordsError | null>;
1502
1609
  /** Write an empty record and open its first editable cell. */
1503
1610
  addRecord: () => Promise<RecordsError | null>;
1504
1611
  /** The last refusal from a delete or an add, for the grid to print. */
@@ -1511,10 +1618,10 @@ interface GridEditing {
1511
1618
  * grid hands it to the data table as `rowVersion`, so a keystroke, a save or a refusal redraws
1512
1619
  * the ONE row it belongs to and no other.
1513
1620
  */
1514
- rowSignature: (rowId: Uuid$1) => readonly unknown[];
1621
+ rowSignature: (rowId: Uuid) => readonly unknown[];
1515
1622
  }
1516
1623
  interface Options {
1517
- tableId: Uuid$1;
1624
+ tableId: Uuid;
1518
1625
  fields: Field[];
1519
1626
  rows: ReadRow[];
1520
1627
  /** Re-read the page once the store has accepted something. */
@@ -1538,7 +1645,7 @@ interface Options {
1538
1645
  * write to it. Unbound, every row follows the table, which is what the
1539
1646
  * ordinary case is.
1540
1647
  */
1541
- mayWriteRow?: ((rowId: Uuid$1) => boolean) | undefined;
1648
+ mayWriteRow?: ((rowId: Uuid) => boolean) | undefined;
1542
1649
  /**
1543
1650
  * A CELL THE STORE ACCEPTED, with what it held before and what it holds now (merge tranche 6d):
1544
1651
  * the merged grid's undo pushes one step per accepted cell. Unbound, nothing is told.
@@ -1550,7 +1657,7 @@ interface Options {
1550
1657
  versions?: RecordVersions | undefined;
1551
1658
  /** One cell the store took: its value before and after, and the record version that write made. */
1552
1659
  onWritten?: ((write: {
1553
- rowId: Uuid$1;
1660
+ rowId: Uuid;
1554
1661
  key: string;
1555
1662
  before: unknown;
1556
1663
  after: unknown;
@@ -1610,7 +1717,7 @@ declare function GridCell({ field, row, editing, canWrite, whyNot, format, onAsk
1610
1717
  * looking at. Bound by the host; absent, no control is drawn at all, because
1611
1718
  * a control that opens nothing is the thing this package exists to prevent.
1612
1719
  */
1613
- onAskWhoChanged?: ((fieldKey: string, recordId: Uuid$1) => void) | undefined;
1720
+ onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined;
1614
1721
  }): react.JSX.Element;
1615
1722
 
1616
1723
  /**
@@ -1836,7 +1943,7 @@ type ViewOrder = "manual" | "sorted" | null;
1836
1943
  interface SavedViewSpec {
1837
1944
  name: string;
1838
1945
  /** The Table this view looks at. */
1839
- subject: Uuid$1;
1946
+ subject: Uuid;
1840
1947
  layout: ViewLayout;
1841
1948
  /** Kanban: the Field whose value becomes a column. */
1842
1949
  groupField?: string | null;
@@ -1874,7 +1981,7 @@ interface SavedViewSpec {
1874
1981
  * The membership Rule. The STORE decides who is in this view; this is a
1875
1982
  * reference to its Rule record, never a predicate this package evaluates.
1876
1983
  */
1877
- ruleId?: Uuid$1 | null;
1984
+ ruleId?: Uuid | null;
1878
1985
  /**
1879
1986
  * THE FLAT FILTER a digest or a notify rule wrote the view with — the one shape
1880
1987
  * `custom.record_filter_sql` compiles, by Field KEY. A view saved in the bar has
@@ -1911,7 +2018,7 @@ interface SavedViewSpec {
1911
2018
  * pressed in both keeps the latest — how Airtable and Notion keep a view change.
1912
2019
  */
1913
2020
  interface SavedView extends SavedViewSpec {
1914
- id: Uuid$1;
2021
+ id: Uuid;
1915
2022
  /** Where the view came from when it was moved in (the mover, the S0 repair), else null. */
1916
2023
  movedFrom: Record<string, unknown> | null;
1917
2024
  /**
@@ -2040,7 +2147,7 @@ declare function viewFromRow(row: SavedViewRow): SavedView;
2040
2147
  * SAVE ONE NEW VIEW of a Table — the bar's "New view" and an agent's seed spec.
2041
2148
  * One `view_declare` with no `view_id`; the answer is the new view's id.
2042
2149
  */
2043
- declare function declareView(client: Pick<RecordsClient, "viewDeclare">, spec: SavedViewSpec): Promise<RecordsResult<Uuid$1>>;
2150
+ declare function declareView(client: Pick<RecordsClient, "viewDeclare">, spec: SavedViewSpec): Promise<RecordsResult<Uuid>>;
2044
2151
  /**
2045
2152
  * WRITE A CHANGE ONTO A SAVED VIEW, AND KEEP IT.
2046
2153
  *
@@ -2056,7 +2163,7 @@ declare function declareView(client: Pick<RecordsClient, "viewDeclare">, spec: S
2056
2163
  * was removed, or belongs to a table this person cannot open — is handed back for
2057
2164
  * the page to say through the one notice.
2058
2165
  */
2059
- declare function saveViewPatch(client: Pick<RecordsClient, "viewDeclare">, tableId: Uuid$1, viewId: Uuid$1, patch: Partial<SavedViewSpec>): Promise<RecordsResult<Uuid$1>>;
2166
+ declare function saveViewPatch(client: Pick<RecordsClient, "viewDeclare">, tableId: Uuid, viewId: Uuid, patch: Partial<SavedViewSpec>): Promise<RecordsResult<Uuid>>;
2060
2167
  /**
2061
2168
  * A PARTIAL change to a saved view, as the definition keys the door merges. Only
2062
2169
  * the keys the caller actually changed are sent; a Field cleared (a board with no
@@ -2127,13 +2234,13 @@ declare function handOrderSortState(args: {
2127
2234
  * key (`names.ts`) — and the cell is the value, rendered by its parity type and
2128
2235
  * editable in place when an editing session is passed.
2129
2236
  */
2130
- declare function columnForField(field: Field$1, editing?: GridEditing | null, mayWriteRow?: (rowId: Uuid) => boolean, whyNotRow?: (rowId: Uuid) => string, look?: {
2237
+ declare function columnForField(field: Field$1, editing?: GridEditing | null, mayWriteRow?: (rowId: Uuid$1) => boolean, whyNotRow?: (rowId: Uuid$1) => string, look?: {
2131
2238
  format?: FieldFormatConfig;
2132
2239
  frozen?: boolean;
2133
2240
  rowLabel?: boolean;
2134
2241
  },
2135
2242
  /** "Who changed this?" from the cell's own menu. Absent, no control is drawn. */
2136
- onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined,
2243
+ onAskWhoChanged?: ((fieldKey: string, recordId: Uuid$1) => void) | undefined,
2137
2244
  /**
2138
2245
  * PRODUCTS row 10 — the provenance of a cell a MODEL owns. `cellFor` answers the page's
2139
2246
  * already-fetched badge data for one row; `onPin` is bound only where this person may
@@ -2141,14 +2248,10 @@ onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined,
2141
2248
  * have. Absent entirely, no badge is drawn and the column looks exactly as it did.
2142
2249
  */
2143
2250
  enrich?: {
2144
- cellFor: (recordId: Uuid) => _ai_matrx_records.EnrichCell | undefined;
2145
- onPin?: ((recordId: Uuid, fieldKey: string, pinned: boolean) => void | Promise<void>) | undefined;
2251
+ cellFor: (recordId: Uuid$1) => _ai_matrx_records.EnrichCell | undefined;
2252
+ onPin?: ((recordId: Uuid$1, fieldKey: string, pinned: boolean) => void | Promise<void>) | undefined;
2146
2253
  }): MatrxColumnDef<ReadRow$1>;
2147
2254
 
2148
- /**
2149
- * WHAT A TABLE WITH NO COLUMNS SAYS. Named here because the gate asserts on it:
2150
- * the state it describes is what a first-time person met for two days.
2151
- */
2152
2255
  declare const NO_COLUMNS_YET = "This table has no columns yet";
2153
2256
  /**
2154
2257
  * THE OPEN VIEW'S ORDER (lane GRID-MANUAL). A saved view is ordered by its sort OR by hand, never
@@ -2159,7 +2262,7 @@ declare const NO_COLUMNS_YET = "This table has no columns yet";
2159
2262
  */
2160
2263
  interface GridViewOrder {
2161
2264
  /** The saved view's id; `null` for a view a host holds inline (it still carries its own `sorts`). */
2162
- viewId: Uuid | null;
2265
+ viewId: Uuid$1 | null;
2163
2266
  /** The view's own order word (`definition.order`). */
2164
2267
  order: ViewOrder;
2165
2268
  /** The view's own sort (`definition.sorts`) — where a sorted view OPENS, over the table's. */
@@ -2176,7 +2279,7 @@ interface GridViewOrder {
2176
2279
  onUseSort?: ((sort: ColumnSort) => void) | undefined;
2177
2280
  }
2178
2281
  interface GridProps {
2179
- tableId: Uuid;
2282
+ tableId: Uuid$1;
2180
2283
  /** Rows per page. The table's own pagination handles the rest. */
2181
2284
  pageSize?: number | undefined;
2182
2285
  /**
@@ -2200,13 +2303,13 @@ interface GridProps {
2200
2303
  */
2201
2304
  onClearFilter?: (() => void) | undefined;
2202
2305
  /** Opened from a row's handle, Space or the row menu. A host that has a record page passes its own. */
2203
- onOpenRecord?: ((recordId: Uuid) => void) | undefined;
2306
+ onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
2204
2307
  /**
2205
2308
  * THE RECORD THE HOST HAS OPEN BESIDE THE GRID, if any (merged grid). While one is open the panel
2206
2309
  * FOLLOWS the cursor: arrowing to another row opens that row (Airtable's expanded record walks
2207
2310
  * with the arrows), so the panel always shows the row the person is on.
2208
2311
  */
2209
- openRecordId?: Uuid | null | undefined;
2312
+ openRecordId?: Uuid$1 | null | undefined;
2210
2313
  /**
2211
2314
  * CLOSE THE RECORD PANEL (grids review 3, lane H item 5): Escape on the grid, and Space on the row
2212
2315
  * that is already open, put it away — Airtable's expanded record toggles the same way. Unbound,
@@ -2223,7 +2326,7 @@ interface GridProps {
2223
2326
  * (`custom.field_history`), and the host decides where the answer appears —
2224
2327
  * a side panel, a window, a route. Unbound, the control is ABSENT, not dead.
2225
2328
  */
2226
- onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined;
2329
+ onAskWhoChanged?: ((fieldKey: string, recordId: Uuid$1) => void) | undefined;
2227
2330
  /**
2228
2331
  * The host's whole-record form. Offered BY NAME when the store refuses an
2229
2332
  * empty record — a Table with a required Field cannot be added to one cell at
@@ -2316,7 +2419,7 @@ interface RecordsTableCardProps {
2316
2419
  */
2317
2420
  source: {
2318
2421
  kind: "table";
2319
- id: Uuid$1;
2422
+ id: Uuid;
2320
2423
  } | {
2321
2424
  kind: "entity";
2322
2425
  token: string;
@@ -2333,7 +2436,7 @@ interface RecordsTableCardProps {
2333
2436
  initialRows?: number;
2334
2437
  headingLevel?: 2 | 3;
2335
2438
  /** Opened from a row. The host's record page, when it has one. */
2336
- onOpenRecord?: (recordId: Uuid$1) => void;
2439
+ onOpenRecord?: (recordId: Uuid) => void;
2337
2440
  /** Cells editable in place (the Grid's own rule still applies per field and per right). */
2338
2441
  editable?: boolean;
2339
2442
  className?: string;
@@ -2391,7 +2494,7 @@ declare function useRecordLabels(fields: readonly Field$1[] | undefined): LabelL
2391
2494
  declare function useLabelWait(field: Field$1 | undefined): string | null;
2392
2495
 
2393
2496
  interface ExportMenuProps {
2394
- tableId: Uuid;
2497
+ tableId: Uuid$1;
2395
2498
  /** The rows on screen. Absent means "this table's first page", read the same way. */
2396
2499
  rows?: ReadRow$1[] | undefined;
2397
2500
  /** What the file is called. The table's name by default. */
@@ -2448,7 +2551,7 @@ interface ImportSource {
2448
2551
  text: string;
2449
2552
  }
2450
2553
  interface ImportWizardProps {
2451
- tableId: Uuid;
2554
+ tableId: Uuid$1;
2452
2555
  /** Rows to import instead of a file. When present the file control is not offered. */
2453
2556
  source?: ImportSource | undefined;
2454
2557
  /**
@@ -2479,7 +2582,7 @@ declare function ImportWizard({ tableId, source, onDone, onWrote, className }: I
2479
2582
  /** The run a table's notice is about: the newest finished one that refused rows. */
2480
2583
  declare function runToNotice(runs: ReadonlyArray<ImportRun>): ImportRun | null;
2481
2584
  interface ImportNoticeProps {
2482
- tableId: Uuid;
2585
+ tableId: Uuid$1;
2483
2586
  /** Opens the import rail, where the run and its rows are listed. */
2484
2587
  onOpenImport?: (() => void) | undefined;
2485
2588
  /** Bumped by the host when an import just finished, so the notice re-reads. */
@@ -2556,9 +2659,9 @@ interface SaveToTableProps {
2556
2659
  /** When the text holds several shapes, the one to open on (the one the person right-clicked). */
2557
2660
  shapeIndex?: number | undefined;
2558
2661
  /** Open a table (after it was made, or rows were added). Absent: no "Open" button is drawn. */
2559
- onOpenTable?: ((tableId: Uuid) => void) | undefined;
2662
+ onOpenTable?: ((tableId: Uuid$1) => void) | undefined;
2560
2663
  /** The rows landed — `new` when this screen made the table. */
2561
- onSaved?: ((tableId: Uuid, how: "new" | "existing") => void) | undefined;
2664
+ onSaved?: ((tableId: Uuid$1, how: "new" | "existing") => void) | undefined;
2562
2665
  /** The person is finished (the report's Done). */
2563
2666
  onClose?: (() => void) | undefined;
2564
2667
  className?: string | undefined;
@@ -2573,7 +2676,7 @@ interface CustomFieldsSectionProps {
2573
2676
  /** The standard table's registered token (REC-33), e.g. `party`, `crm_deal`. */
2574
2677
  entityToken: string;
2575
2678
  /** The id of the row this page is showing. */
2576
- recordId: Uuid;
2679
+ recordId: Uuid$1;
2577
2680
  /** The heading. One row, no subtitle restating it. */
2578
2681
  title?: string | undefined;
2579
2682
  className?: string | undefined;
@@ -2610,7 +2713,7 @@ interface CustomFieldAddRequest {
2610
2713
  }
2611
2714
  type CustomFieldAddResult = {
2612
2715
  ok: true;
2613
- field_id: Uuid;
2716
+ field_id: Uuid$1;
2614
2717
  label: string;
2615
2718
  type: string;
2616
2719
  } | {
@@ -2620,7 +2723,7 @@ type CustomFieldAddResult = {
2620
2723
  /** What the section holds right now, in words an agent can act on. */
2621
2724
  interface CustomFieldsAgentState {
2622
2725
  entityToken: string;
2623
- recordId: Uuid;
2726
+ recordId: Uuid$1;
2624
2727
  /** The entity's own label ("Deal") once the rights read answered. */
2625
2728
  entityLabel: string | null;
2626
2729
  /** `null` while the rights read is in flight. */
@@ -2657,7 +2760,7 @@ type CustomFieldSetResult = {
2657
2760
  };
2658
2761
  interface CustomFieldsAgentDoor {
2659
2762
  entityToken: string;
2660
- recordId: Uuid;
2763
+ recordId: Uuid$1;
2661
2764
  state: () => CustomFieldsAgentState;
2662
2765
  /**
2663
2766
  * Every problem with the request, all at once, or `[]`. Nothing is written.
@@ -2861,15 +2964,22 @@ interface FieldEditorCommon {
2861
2964
  * custom-table doors.
2862
2965
  */
2863
2966
  type FieldEditorProps = FieldEditorCommon & ({
2864
- tableId: Uuid$1;
2967
+ tableId: Uuid;
2865
2968
  entityToken?: undefined;
2866
2969
  /** The Field being edited. Absent means a new one. */
2867
2970
  field?: Field | undefined;
2971
+ /**
2972
+ * DUPLICATE PROPERTY (Notion N5): a NEW column that starts as a copy of this one — its kind,
2973
+ * choices and colours, unit, link, formula and rules — named "<name> (1)". Ignored when
2974
+ * `field` is given.
2975
+ */
2976
+ copyOf?: Field | undefined;
2868
2977
  } | {
2869
2978
  /** The standard table's registry token (REC-33), e.g. `party`, `crm_deal`. */
2870
2979
  entityToken: string;
2871
2980
  tableId?: undefined;
2872
2981
  field?: undefined;
2982
+ copyOf?: undefined;
2873
2983
  });
2874
2984
  declare function FieldEditor(props: FieldEditorProps): react.JSX.Element | null;
2875
2985
  declare function whatIsMissing(state: {
@@ -2894,7 +3004,7 @@ declare const NO_RULES_YET = "Nothing has to be true to get here yet.";
2894
3004
  declare const NEEDS_A_SENTENCE = "Write the sentence somebody reads when this stops them, the way you would say it out loud.";
2895
3005
  declare const NOT_DRAWN_HERE = "This part of the rule is not something this builder can draw yet";
2896
3006
  interface StageRulesSectionProps {
2897
- tableId: Uuid;
3007
+ tableId: Uuid$1;
2898
3008
  /** Which stage's rules to edit. Left out, the section opens on the first stage. */
2899
3009
  stage?: string | undefined;
2900
3010
  className?: string | undefined;
@@ -3018,7 +3128,7 @@ declare const TABLE_NAME_MAX = 120;
3018
3128
  /** Why a typed table name cannot be kept, or null when it can. */
3019
3129
  declare function tableNameProblem(typed: string): string | null;
3020
3130
  declare function TableRenameDialog({ tableId, name, open, onOpenChange, onRenamed, }: {
3021
- tableId: Uuid$1;
3131
+ tableId: Uuid;
3022
3132
  /** The table's name as it is kept now. */
3023
3133
  name: string;
3024
3134
  open: boolean;
@@ -3050,7 +3160,7 @@ interface FieldProposalRow {
3050
3160
  proposed_by: string;
3051
3161
  }
3052
3162
  interface TableSettingsProps {
3053
- tableId: Uuid;
3163
+ tableId: Uuid$1;
3054
3164
  /**
3055
3165
  * SCR-5. Pending field proposals. The door that lists them
3056
3166
  * (`custom.field_propose`) does not exist yet — `@ai-matrx/records` answers
@@ -3074,20 +3184,24 @@ interface TableSettingsProps {
3074
3184
  columns?: ColumnsLook | undefined;
3075
3185
  className?: string | undefined;
3076
3186
  }
3077
- declare function TableSettings({ tableId, proposals, onAcceptProposal, onRejectProposal, archiveAsked, columns, className, }: TableSettingsProps): react.JSX.Element;
3187
+ /**
3188
+ * THE PANEL, AND WHAT AN AGENT MAY SEE AND STAGE IN IT. A host that binds `settingsAgent` is handed
3189
+ * the panel's agent (what it shows, three staging calls) and wraps the panel in its own surface.
3190
+ */
3191
+ declare function TableSettings(props: TableSettingsProps): react.JSX.Element;
3078
3192
 
3079
3193
  /** Whether a Table document marks the table as Foundation. Absent is no — the store's own rule. */
3080
3194
  declare function isFoundationTable(table: Pick<Table, "foundation"> | {
3081
3195
  foundation?: unknown;
3082
3196
  } | null | undefined): boolean;
3083
3197
  declare function TableFoundationSwitch({ tableId, table }: {
3084
- tableId: Uuid$1;
3198
+ tableId: Uuid;
3085
3199
  table: Table;
3086
3200
  }): react.JSX.Element;
3087
3201
 
3088
3202
  interface PeekProps {
3089
- tableId: Uuid;
3090
- recordId: Uuid;
3203
+ tableId: Uuid$1;
3204
+ recordId: Uuid$1;
3091
3205
  onClose?: (() => void) | undefined;
3092
3206
  className?: string | undefined;
3093
3207
  /**
@@ -3118,11 +3232,11 @@ declare function standardTokenOf(token: string): string;
3118
3232
  interface StandardRecordFormProps {
3119
3233
  /** The standard table, by registry token: `entity:party` (or the bare `party`). */
3120
3234
  token: string;
3121
- recordId: Uuid;
3235
+ recordId: Uuid$1;
3122
3236
  /** The row's own columns, in the order shown. */
3123
3237
  columns: readonly StandardColumn[];
3124
3238
  /** Called after a value was saved, so the host re-reads what it shows elsewhere (a title). */
3125
- onSaved?: ((recordId: Uuid) => void) | undefined;
3239
+ onSaved?: ((recordId: Uuid$1) => void) | undefined;
3126
3240
  className?: string | undefined;
3127
3241
  /** The custom-fields half: its heading and the host's doors (agent door, own-table offer, noun). */
3128
3242
  custom?: Omit<CustomFieldsSectionProps, "entityToken" | "recordId" | "className"> | undefined;
@@ -3133,7 +3247,7 @@ declare function StandardRecordForm({ token, recordId, columns, onSaved, classNa
3133
3247
 
3134
3248
  interface RecordFormProps {
3135
3249
  /** A CUSTOM table's id. Give `token` instead for a row of a standard table. */
3136
- tableId?: Uuid | undefined;
3250
+ tableId?: Uuid$1 | undefined;
3137
3251
  /**
3138
3252
  * STANDARD-TABLE MODE (FTS-2b wave 6): a registry token, `entity:party` (or the bare `party`).
3139
3253
  * The form reads and writes that row through the store's standard-row doors, as the person —
@@ -3148,10 +3262,10 @@ interface RecordFormProps {
3148
3262
  /** Standard mode: the host's own controls on this row, between the columns and the custom fields. */
3149
3263
  children?: ReactNode;
3150
3264
  /** Absent means "create". Present means "edit that record". */
3151
- recordId?: Uuid | undefined;
3265
+ recordId?: Uuid$1 | undefined;
3152
3266
  /** FLD-10: which Fields apply is the store's decision, and it takes the record type. */
3153
3267
  recordType?: string | undefined;
3154
- onSaved?: ((recordId: Uuid) => void) | undefined;
3268
+ onSaved?: ((recordId: Uuid$1) => void) | undefined;
3155
3269
  onCancel?: (() => void) | undefined;
3156
3270
  className?: string | undefined;
3157
3271
  /**
@@ -3642,7 +3756,7 @@ declare function pickableTypeOf(field: Field): PickableFieldType | undefined;
3642
3756
  declare function fieldTypeLabel(field: Field): string;
3643
3757
 
3644
3758
  /** The one token form, written the way the store's own pattern reads it. */
3645
- declare function fieldToken(fieldId: Uuid$1): string;
3759
+ declare function fieldToken(fieldId: Uuid): string;
3646
3760
  /** THE DECLARATIVE SPEC an agent writes. One template, whole, in one object. */
3647
3761
  interface DocTemplateSpec {
3648
3762
  name: string;
@@ -3781,7 +3895,7 @@ interface SystemFieldSpec {
3781
3895
  * every organization's first load, which is the class this file just cost us.
3782
3896
  */
3783
3897
  options?: string[];
3784
- relationTarget?: Uuid$1;
3898
+ relationTarget?: Uuid;
3785
3899
  expr?: Record<string, unknown>;
3786
3900
  }
3787
3901
  interface SystemTableSpec {
@@ -3796,13 +3910,13 @@ interface SystemTableSpec {
3796
3910
  /** Find this organization's copy of a package-owned Table, declaring it the first time. */
3797
3911
  declare function ensureSystemTable(client: RecordsClient, spec: SystemTableSpec): Promise<{
3798
3912
  ok: true;
3799
- data: Uuid$1;
3913
+ data: Uuid;
3800
3914
  } | {
3801
3915
  ok: false;
3802
3916
  error: RecordsError;
3803
3917
  }>;
3804
3918
  interface UseSystemTableState {
3805
- tableId: Uuid$1 | null;
3919
+ tableId: Uuid | null;
3806
3920
  loading: boolean;
3807
3921
  error: RecordsError | null;
3808
3922
  }
@@ -3839,7 +3953,7 @@ declare function archiveConfirmSentence(what: string): string;
3839
3953
  interface AnnounceTableArchived {
3840
3954
  notify: RecordsUiHost["notify"];
3841
3955
  client: Pick<RecordsClient, "tableRestoreWhole">;
3842
- tableId: Uuid$1;
3956
+ tableId: Uuid;
3843
3957
  /** The table's name as the store gave it. */
3844
3958
  name: string;
3845
3959
  /** Called once the table is back, so the surface can show it again. */
@@ -3879,9 +3993,9 @@ declare function saveToViewPlan(view: SavedView, look: ViewLook): {
3879
3993
  left: ViewLook | null;
3880
3994
  };
3881
3995
  /** The caller's own looks at every view of a table, by view id. */
3882
- declare function readLooks(client: Pick<RecordsClient, "viewLookRead">, tableId: Uuid$1): Promise<RecordsResult<Record<string, ViewLook>>>;
3996
+ declare function readLooks(client: Pick<RecordsClient, "viewLookRead">, tableId: Uuid): Promise<RecordsResult<Record<string, ViewLook>>>;
3883
3997
  /** Keep the whole look (null: "Reset to view"). The shared view is never written. */
3884
- declare function keepLook(client: Pick<RecordsClient, "viewLookSet">, tableId: Uuid$1, viewId: Uuid$1, look: ViewLook | null): Promise<RecordsResult<Record<string, unknown> | null>>;
3998
+ declare function keepLook(client: Pick<RecordsClient, "viewLookSet">, tableId: Uuid, viewId: Uuid, look: ViewLook | null): Promise<RecordsResult<Record<string, unknown> | null>>;
3885
3999
  /** The words of the look bar. One sentence, then the doors. */
3886
4000
  declare const LOOK_WORDS: {
3887
4001
  /** The reason, for a tooltip or a screen reader — never a line on the page (interface-text). */
@@ -3916,9 +4030,9 @@ interface ViewSwitcherProps {
3916
4030
  * and the screen says the choice is not being kept.
3917
4031
  */
3918
4032
  onViewChange?: ((patch: Partial<SavedViewSpec>) => void) | undefined;
3919
- onOpenRecord?: ((recordId: Uuid) => void) | undefined;
4033
+ onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
3920
4034
  /** The record the host has open beside a grid, which the grid's panel then follows (`Grid.openRecordId`). */
3921
- openRecordId?: Uuid | null | undefined;
4035
+ openRecordId?: Uuid$1 | null | undefined;
3922
4036
  /** Put the record panel away (Escape, or Space on the open row): `Grid.onCloseRecord`. */
3923
4037
  onCloseRecord?: (() => void) | undefined;
3924
4038
  /**
@@ -3930,7 +4044,7 @@ interface ViewSwitcherProps {
3930
4044
  /** The host's whole-record form, offered by the grid when an empty record is refused. */
3931
4045
  onNewRecordForm?: (() => void) | undefined;
3932
4046
  /** "Who changed this?" from a grid cell — the host opens that column's timeline. */
3933
- onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined;
4047
+ onAskWhoChanged?: ((fieldKey: string, recordId: Uuid$1) => void) | undefined;
3934
4048
  pageSize?: number | undefined;
3935
4049
  /**
3936
4050
  * THE TABLE'S OWN TITLE COLUMN (`title_field`, REC-2), from the table the host already holds.
@@ -3975,7 +4089,7 @@ interface ViewSwitcherProps {
3975
4089
  * it (`custom.view_record_order_set`, Reorder → Save) through it. Left out — a literal spec —
3976
4090
  * the view has no hand order and the grid offers no Reorder.
3977
4091
  */
3978
- viewId?: Uuid | null | undefined;
4092
+ viewId?: Uuid$1 | null | undefined;
3979
4093
  /**
3980
4094
  * The rows were placed by hand: the store made this view manual and removed its sort. The host
3981
4095
  * updates the view it holds (nothing is written — the store already did).
@@ -4007,7 +4121,7 @@ interface ViewSwitcherProps {
4007
4121
  className?: string | undefined;
4008
4122
  }
4009
4123
  /** The records this view holds: its Rule's members when it names one, the table otherwise. */
4010
- declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?: StoreFilter, viewId?: Uuid | null): {
4124
+ declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?: StoreFilter, viewId?: Uuid$1 | null): {
4011
4125
  rows: ReadRow$1[];
4012
4126
  manual: boolean;
4013
4127
  /** How many records the view holds, as the store counted them (null when it did not count). */
@@ -4038,7 +4152,7 @@ declare function ViewSwitcher({ view, onLayoutChange, onViewChange, onOpenRecord
4038
4152
  type CalendarMode = "month" | "week" | "day" | "list";
4039
4153
  interface CalendarViewProps {
4040
4154
  /** The table the records live in — the undo history's table, and where a new record is made. */
4041
- tableId: Uuid;
4155
+ tableId: Uuid$1;
4042
4156
  rows: readonly ReadRow$1[];
4043
4157
  /** The column a record's day (and, when it carries one, its time) is read from and written to. */
4044
4158
  dateField: Field$1;
@@ -4059,7 +4173,7 @@ interface CalendarViewProps {
4059
4173
  endKept?: boolean | undefined;
4060
4174
  /** The column that names each card (`cardTitleField`). */
4061
4175
  titleField: Field$1 | undefined;
4062
- onOpenRecord?: ((recordId: Uuid) => void) | undefined;
4176
+ onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
4063
4177
  /** A move landed (or was undone, or refused): the host re-reads the rows it owns. */
4064
4178
  onMoved?: (() => void) | undefined;
4065
4179
  /** The person picked a Colour by column: the host keeps it on the view (`presentation.style.colorBy`). */
@@ -4110,7 +4224,7 @@ interface TimelineViewProps {
4110
4224
  /** The fields each bar shows after its title (the view's Card fields, v7 item 4). */
4111
4225
  cardFields?: readonly Field$1[] | undefined;
4112
4226
  /** The table the records live in — the undo history's table. */
4113
- tableId: Uuid;
4227
+ tableId: Uuid$1;
4114
4228
  rows: readonly ReadRow$1[];
4115
4229
  /** The table's columns: the pickers, the lanes and the colours read them. */
4116
4230
  fields: readonly Field$1[];
@@ -4130,7 +4244,7 @@ interface TimelineViewProps {
4130
4244
  onSettingsChange?: ((patch: Partial<TimelineSettings>) => void) | undefined;
4131
4245
  /** False when the host cannot keep the layout or the End on the view: the toolbar says so. */
4132
4246
  layoutKept?: boolean | undefined;
4133
- onOpenRecord?: ((recordId: Uuid) => void) | undefined;
4247
+ onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
4134
4248
  /** A move landed (or was undone): the host re-reads the rows it owns. */
4135
4249
  onMoved?: (() => void) | undefined;
4136
4250
  /** The view's membership sentence (`useViewRecords().membership`). */
@@ -4153,7 +4267,7 @@ declare function useRowColorBy(all: readonly Field$1[], colorKey: string | null,
4153
4267
 
4154
4268
  /** One cell a change touched: its value before and after, by Field key. */
4155
4269
  interface TouchedCell {
4156
- rowId: Uuid$1;
4270
+ rowId: Uuid;
4157
4271
  key: string;
4158
4272
  before: unknown;
4159
4273
  after: unknown;
@@ -4171,9 +4285,9 @@ interface GridUndoStep {
4171
4285
  label: string;
4172
4286
  cells: TouchedCell[];
4173
4287
  /** Records this change created — undo archives them. */
4174
- created?: Uuid$1[] | undefined;
4288
+ created?: Uuid[] | undefined;
4175
4289
  /** Records this change archived — undo restores them. */
4176
- archived?: Uuid$1[] | undefined;
4290
+ archived?: Uuid[] | undefined;
4177
4291
  /** The after-values are the store's own (a row action worked them out), so it cannot be redone. */
4178
4292
  noRedo?: boolean | undefined;
4179
4293
  /**
@@ -4182,7 +4296,7 @@ interface GridUndoStep {
4182
4296
  * delete was no step at all, so Cmd-Z after it silently undid the OLDER cell edit beneath it.
4183
4297
  */
4184
4298
  retiredField?: {
4185
- fieldId: Uuid$1;
4299
+ fieldId: Uuid;
4186
4300
  } | undefined;
4187
4301
  }
4188
4302
  interface GridUndo {
@@ -4208,7 +4322,7 @@ interface GridUndo {
4208
4322
  * Say something beside the last step without a step. `sticky` (a paste the store refused, a
4209
4323
  * read-back that came up short) stays until dismissed; otherwise it leaves by itself.
4210
4324
  */
4211
- say: (says: string, sticky?: boolean) => void;
4325
+ say: (says: string, sticky?: boolean, offerUndo?: boolean) => void;
4212
4326
  }
4213
4327
 
4214
4328
  /** What one write answered: done (with the version it made), or the store's refusal. */
@@ -4224,7 +4338,7 @@ type MoveWritten = {
4224
4338
  * means the caller does not know it — the write is then NOT sent, because a write with no version
4225
4339
  * is a write that can overwrite a colleague (said as a refusal, never silently).
4226
4340
  */
4227
- declare function moveRecordValue(client: Pick<ReturnType<typeof useRecordsClient>, "recordUpdate" | "recordUpdateAddingChoices">, recordId: Uuid$1, patch: Record<string, unknown>, expectedVersion: number | null): Promise<MoveWritten>;
4341
+ declare function moveRecordValue(client: Pick<ReturnType<typeof useRecordsClient>, "recordUpdate" | "recordUpdateAddingChoices">, recordId: Uuid, patch: Record<string, unknown>, expectedVersion: number | null): Promise<MoveWritten>;
4228
4342
  interface RecordMoves {
4229
4343
  /**
4230
4344
  * Move one record: `patch` is the new values by Field key, `before` the values it held (read from
@@ -4232,20 +4346,20 @@ interface RecordMoves {
4232
4346
  * Answers whether the store took it.
4233
4347
  */
4234
4348
  move: (args: {
4235
- recordId: Uuid$1;
4349
+ recordId: Uuid;
4236
4350
  patch: Record<string, unknown>;
4237
4351
  before: Record<string, unknown>;
4238
4352
  label: string;
4239
4353
  }) => Promise<boolean>;
4240
4354
  /** Make one record from a gesture (a click on a day, a drag across hours): ONE write, one undo step. */
4241
4355
  create: (args: {
4242
- tableId: Uuid$1;
4356
+ tableId: Uuid;
4243
4357
  data: Record<string, unknown>;
4244
4358
  label: string;
4245
- }) => Promise<Uuid$1 | null>;
4359
+ }) => Promise<Uuid | null>;
4246
4360
  /** The refusal the store gave the last move, and the record it is about — a badge on that card. */
4247
4361
  refused: {
4248
- recordId: Uuid$1;
4362
+ recordId: Uuid;
4249
4363
  error: RecordsError;
4250
4364
  changedElsewhere: boolean;
4251
4365
  unread?: boolean | undefined;
@@ -4260,7 +4374,7 @@ interface RecordMoves {
4260
4374
  notice: ReactElement;
4261
4375
  }
4262
4376
  declare function useRecordMoves({ tableId, rows, onMoved, }: {
4263
- tableId: Uuid$1;
4377
+ tableId: Uuid;
4264
4378
  /** The rows the layout drew — their versions are what a move is written against. */
4265
4379
  rows: readonly ReadRow[];
4266
4380
  onMoved?: (() => void) | undefined;
@@ -4273,7 +4387,7 @@ declare function mayNotRestoreLine(why: string): string;
4273
4387
  /** What one row in the archive says, as one string — pulled out so the guard can read it. */
4274
4388
  declare function archivedRowLine(row: ArchivedRow, titleKey?: string | null): string;
4275
4389
  interface ArchivedViewProps {
4276
- tableId: Uuid$1;
4390
+ tableId: Uuid;
4277
4391
  /** Rows per page. The store refuses above its own ceiling by name rather than quietly serving fewer. */
4278
4392
  pageSize?: number | undefined;
4279
4393
  /** Which lane the address or the host asked for. Absent, the organization's. */
@@ -4281,7 +4395,7 @@ interface ArchivedViewProps {
4281
4395
  /** Called when the person switches lane, so the host can put it in the URL. */
4282
4396
  onLaneChange?: ((lane: ArchiveLane) => void) | undefined;
4283
4397
  /** Called after a record comes back, so the host re-reads the rows it owns. */
4284
- onRestored?: ((recordId: Uuid$1) => void) | undefined;
4398
+ onRestored?: ((recordId: Uuid) => void) | undefined;
4285
4399
  className?: string | undefined;
4286
4400
  }
4287
4401
  declare function ArchivedView({ tableId, pageSize, lane: laneFromHost, onLaneChange, onRestored, className, }: ArchivedViewProps): react.JSX.Element;
@@ -4312,7 +4426,7 @@ interface ArchivedDisclosureProps {
4312
4426
  declare function ArchivedDisclosure({ noun, count, defaultOpen, onOpenChange, children, className, }: ArchivedDisclosureProps): react.JSX.Element;
4313
4427
  interface ArchivedPortalsProps {
4314
4428
  /** Called after a portal comes back, so the rail re-reads the list it owns. */
4315
- onRestored?: ((portalId: Uuid) => void) | undefined;
4429
+ onRestored?: ((portalId: Uuid$1) => void) | undefined;
4316
4430
  /**
4317
4431
  * Bumped by the surface above whenever IT changed something that lands here —
4318
4432
  * archiving a portal from the live rail, most of all. Without it an archive
@@ -4337,9 +4451,9 @@ declare function ArchivedPortals({ onRestored, refreshToken, defaultOpen, classN
4337
4451
 
4338
4452
  interface ViewBarProps {
4339
4453
  /** The Table whose views these are. */
4340
- tableId: Uuid;
4454
+ tableId: Uuid$1;
4341
4455
  /** The view that is showing. Leave it out and the bar picks the default, then the first. */
4342
- activeViewId?: Uuid | null | undefined;
4456
+ activeViewId?: Uuid$1 | null | undefined;
4343
4457
  onActiveView?: ((view: SavedView) => void) | undefined;
4344
4458
  /**
4345
4459
  * COMPLETE DECLARATIVE SPECS an agent wrote. Any of these whose name this
@@ -4382,9 +4496,9 @@ interface ProposedChange {
4382
4496
  * required field a caller cannot fill is a field that gets filled with
4383
4497
  * something untrue.
4384
4498
  */
4385
- table?: Uuid | undefined;
4499
+ table?: Uuid$1 | undefined;
4386
4500
  /** The record it changes. Required for `update` and `remove`. */
4387
- record?: Uuid | undefined;
4501
+ record?: Uuid$1 | undefined;
4388
4502
  /** The document for `add`, or the patch for `update`. */
4389
4503
  data?: Record<string, unknown> | undefined;
4390
4504
  /**
@@ -4458,19 +4572,19 @@ interface ActionInboxProps {
4458
4572
  * (lane S5-PRIME), so this narrows approvals, proposals and assignments alike;
4459
4573
  * when the table has nothing, the inbox says how many wait elsewhere and offers them.
4460
4574
  */
4461
- tableId?: Uuid | null | undefined;
4575
+ tableId?: Uuid$1 | null | undefined;
4462
4576
  /** Show decided rows too, from the start. `h` (or the button) toggles it. */
4463
4577
  includeSettled?: boolean | undefined;
4464
4578
  /** How the rows start out grouped. Default: by kind. */
4465
4579
  defaultGroupBy?: InboxGrouping | undefined;
4466
- onOpenRecord?: ((recordId: Uuid, tableId: Uuid) => void) | undefined;
4580
+ onOpenRecord?: ((recordId: Uuid$1, tableId: Uuid$1) => void) | undefined;
4467
4581
  className?: string | undefined;
4468
4582
  }
4469
4583
  declare function ActionInbox({ tableId, includeSettled, defaultGroupBy, onOpenRecord, className, }: ActionInboxProps): react.JSX.Element;
4470
4584
 
4471
4585
  interface HistoryPanelProps {
4472
- tableId: Uuid;
4473
- recordId: Uuid;
4586
+ tableId: Uuid$1;
4587
+ recordId: Uuid$1;
4474
4588
  /**
4475
4589
  * "Who changed THIS column?" — the host opens that field's own timeline. Left
4476
4590
  * out, the per-field control is absent rather than dead.
@@ -4482,9 +4596,9 @@ declare function HistoryPanel({ tableId, recordId, onAskAboutField, className }:
4482
4596
 
4483
4597
  interface CommentThreadProps {
4484
4598
  /** The Table the commented-on record belongs to — its Fields name an anchor. */
4485
- tableId: Uuid;
4599
+ tableId: Uuid$1;
4486
4600
  /** The record being discussed. */
4487
- recordId: Uuid;
4601
+ recordId: Uuid$1;
4488
4602
  /** Open on the thread about ONE column, and post there by default. */
4489
4603
  fieldKey?: string | undefined;
4490
4604
  className?: string | undefined;
@@ -4492,15 +4606,15 @@ interface CommentThreadProps {
4492
4606
  declare function CommentThread({ tableId, recordId, fieldKey, className }: CommentThreadProps): react.JSX.Element;
4493
4607
 
4494
4608
  interface FieldHistoryPanelProps {
4495
- tableId: Uuid;
4609
+ tableId: Uuid$1;
4496
4610
  /** The column being asked about, by its key. */
4497
4611
  fieldKey: string;
4498
4612
  /** Scoped to ONE record when present; the whole Table when absent. */
4499
- recordId?: Uuid | undefined;
4613
+ recordId?: Uuid$1 | undefined;
4500
4614
  /** The host's way back — a cell menu opens this, so it closes too. */
4501
4615
  onClose?: (() => void) | undefined;
4502
4616
  /** Open a record from one of its rows. Absent, the row is not a link. */
4503
- onOpenRecord?: ((recordId: Uuid) => void) | undefined;
4617
+ onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
4504
4618
  className?: string | undefined;
4505
4619
  }
4506
4620
  declare function FieldHistoryPanel({ tableId, fieldKey, recordId, onClose, onOpenRecord, className, }: FieldHistoryPanelProps): react.JSX.Element;
@@ -4540,8 +4654,8 @@ interface FormTheme {
4540
4654
  */
4541
4655
  interface FormLook {
4542
4656
  accent?: PortalAccent | null;
4543
- logoFileId?: Uuid$1 | null;
4544
- coverFileId?: Uuid$1 | null;
4657
+ logoFileId?: Uuid | null;
4658
+ coverFileId?: Uuid | null;
4545
4659
  }
4546
4660
  /** The screen after sending: the form's words, and optionally where to go next. */
4547
4661
  interface FormThankYou {
@@ -4554,7 +4668,7 @@ interface FormThankYou {
4554
4668
  interface FormSpec {
4555
4669
  name: string;
4556
4670
  /** The Table a submission lands in. */
4557
- subject: Uuid$1;
4671
+ subject: Uuid;
4558
4672
  intro?: string | null;
4559
4673
  questions: FormQuestionSpec[];
4560
4674
  flow?: FormFlow | null;
@@ -4590,7 +4704,7 @@ interface FormSpec {
4590
4704
  * read here and handed straight back by `formDeclareArgs`.
4591
4705
  */
4592
4706
  interface SavedForm extends FormSpec {
4593
- id: Uuid$1;
4707
+ id: Uuid;
4594
4708
  /** draft · open · closed · full — the store's own word, never derived on a screen. */
4595
4709
  state: FormSummary["state"];
4596
4710
  /** The form's readable name in the store. `form_declare` keeps it across saves. */
@@ -4598,9 +4712,9 @@ interface SavedForm extends FormSpec {
4598
4712
  /** Stops taking answers at this many. Null is no ceiling. */
4599
4713
  submissionCap: number | null;
4600
4714
  /** The accept Rule: what counts as a complete answer. Null holds every answer for a person. */
4601
- quarantineRuleId: Uuid$1 | null;
4715
+ quarantineRuleId: Uuid | null;
4602
4716
  /** The subscription Rule that tells somebody an answer arrived. */
4603
- notifyRuleId: Uuid$1 | null;
4717
+ notifyRuleId: Uuid | null;
4604
4718
  }
4605
4719
  /**
4606
4720
  * The spec as `custom.anon_form.presentation` holds it.
@@ -4616,14 +4730,14 @@ declare function formLookDocument(look: FormLook | null): Record<string, unknown
4616
4730
  declare function formLookFromDocument(raw: unknown): FormLook | null;
4617
4731
  /** The exact arguments `custom.form_declare` is called with, for a new form or a re-statement. */
4618
4732
  declare function formDeclareArgs(form: FormSpec | SavedForm): {
4619
- table_id: Uuid$1;
4733
+ table_id: Uuid;
4620
4734
  title: string;
4621
4735
  questions: FormQuestionSpec[];
4622
4736
  presentation: Record<string, unknown>;
4623
4737
  submission_cap: number | null;
4624
- quarantine_rule_id: Uuid$1 | null;
4625
- notify_rule_id: Uuid$1 | null;
4626
- form_id: Uuid$1 | null;
4738
+ quarantine_rule_id: Uuid | null;
4739
+ notify_rule_id: Uuid | null;
4740
+ form_id: Uuid | null;
4627
4741
  slug: string | null;
4628
4742
  };
4629
4743
  /** One row of `custom.forms` back into the spec a screen and an agent both read. */
@@ -4636,7 +4750,7 @@ declare function formFromSummary(summary: FormSummary): SavedForm;
4636
4750
  * through export, History and the agent's context without a parallel table.
4637
4751
  */
4638
4752
  declare function submissionStamp(args: {
4639
- formId: Uuid$1 | null;
4753
+ formId: Uuid | null;
4640
4754
  formName: string;
4641
4755
  actor: string;
4642
4756
  onBehalfOf?: string | null;
@@ -4647,10 +4761,10 @@ interface PortalBuilderProps {
4647
4761
  * OPTIONAL. The Table whose rail this was opened from. It is pre-ticked as a
4648
4762
  * Table to expose, because that is the thing the person was looking at.
4649
4763
  */
4650
- tableId?: Uuid | null | undefined;
4764
+ tableId?: Uuid$1 | null | undefined;
4651
4765
  /** Re-state an existing portal rather than making a second one. */
4652
- portalId?: Uuid | null | undefined;
4653
- onSaved?: ((portalId: Uuid) => void) | undefined;
4766
+ portalId?: Uuid$1 | null | undefined;
4767
+ onSaved?: ((portalId: Uuid$1) => void) | undefined;
4654
4768
  onClose?: (() => void) | undefined;
4655
4769
  className?: string | undefined;
4656
4770
  }
@@ -4680,13 +4794,13 @@ interface PortalsPanelProps {
4680
4794
  * Omit it and the rail is organization-wide again, which is right for a
4681
4795
  * mount that is not standing on a table.
4682
4796
  */
4683
- tableId?: Uuid | undefined;
4797
+ tableId?: Uuid$1 | undefined;
4684
4798
  /**
4685
4799
  * THE PORTAL A LINK NAMED (`?rail=portals&item=<portal>`, lane HUB-FIX). Its
4686
4800
  * card opens on arrival and is scrolled to. A portal this table is not in is
4687
4801
  * said out loud, never swapped for another portal.
4688
4802
  */
4689
- activePortalId?: Uuid | null | undefined;
4803
+ activePortalId?: Uuid$1 | null | undefined;
4690
4804
  className?: string | undefined;
4691
4805
  }
4692
4806
  /** What a door answered, for a view that never holds a client of its own. */
@@ -4721,11 +4835,11 @@ interface PortalCardViewProps {
4721
4835
  /** Exactly what `custom.portal_card` answered. */
4722
4836
  card: PortalCard;
4723
4837
  /** The Table whose page this is on, if any — marked among the ones shown. */
4724
- tableId?: Uuid | undefined;
4838
+ tableId?: Uuid$1 | undefined;
4725
4839
  /** Take one person's way in away. Answers the door's own past-tense sentence. */
4726
4840
  onRevoke: (person: PortalPrincipal) => Promise<PortalAnswer<string>>;
4727
4841
  /** What this person sees on one Table — `custom.portal_preview`'s answer. */
4728
- onPreview: (person: PortalPrincipal, tableId: Uuid) => Promise<PortalAnswer<PortalPreviewRow[]>>;
4842
+ onPreview: (person: PortalPrincipal, tableId: Uuid$1) => Promise<PortalAnswer<PortalPreviewRow[]>>;
4729
4843
  /** The invite control, which needs a client of its own. Absent means none is offered. */
4730
4844
  invite?: ReactNode;
4731
4845
  /** S6 — the look-and-forms editor, which needs a client of its own. Absent means none is offered. */
@@ -4764,8 +4878,8 @@ interface PublicPicturePickerProps {
4764
4878
  label: string;
4765
4879
  /** The organization's public pictures, as the store listed them. */
4766
4880
  pictures: readonly PublicPicture[];
4767
- value: Uuid$1 | "" | null | undefined;
4768
- onChange: (fileId: Uuid$1 | "") => void;
4881
+ value: Uuid | "" | null | undefined;
4882
+ onChange: (fileId: Uuid | "") => void;
4769
4883
  /** The words on the empty choice ("Organization logo", "No cover"). */
4770
4884
  noneLabel: string;
4771
4885
  className?: string | undefined;
@@ -4807,13 +4921,13 @@ declare function FormLookFrame({ look, title, children, contained, className }:
4807
4921
 
4808
4922
  interface DigestSchedulerProps {
4809
4923
  /** The Table the digest is about. A saved view is a view OF something. */
4810
- tableId: Uuid;
4924
+ tableId: Uuid$1;
4811
4925
  /**
4812
4926
  * The view to subscribe over, when the caller already has one — a dashboard
4813
4927
  * passes the view its blocks are filtered by. Left out, the person picks one
4814
4928
  * of this Table's saved views or this screen saves a new one for them.
4815
4929
  */
4816
- savedViewId?: Uuid | null | undefined;
4930
+ savedViewId?: Uuid$1 | null | undefined;
4817
4931
  /**
4818
4932
  * What the person is looking at, in their words — a dashboard's name, a view's
4819
4933
  * name. It becomes the digest's name and, when a view has to be saved, the
@@ -4843,14 +4957,14 @@ interface DigestSchedulerProps {
4843
4957
  declare function DigestScheduler({ tableId, savedViewId, subjectName, filters, onScheduled, onClose, className, existing, }: DigestSchedulerProps): react.JSX.Element;
4844
4958
 
4845
4959
  interface SubscriptionsPanelProps {
4846
- tableId: Uuid;
4960
+ tableId: Uuid$1;
4847
4961
  /**
4848
4962
  * THE DIGEST A LINK NAMED (`?rail=notifications&item=<rule>`, lane HUB-FIX).
4849
4963
  * The rule is marked and scrolled to. This rail lists the subscriptions of the
4850
4964
  * person signed in, so a rule that is somebody else's is said out loud as
4851
4965
  * exactly that — never replaced by one of theirs.
4852
4966
  */
4853
- activeRuleId?: Uuid | null | undefined;
4967
+ activeRuleId?: Uuid$1 | null | undefined;
4854
4968
  className?: string | undefined;
4855
4969
  }
4856
4970
  /** The sentence when a link named a digest that is not in this person's list for this table. */
@@ -4935,7 +5049,7 @@ declare function viewNeedFor(layout: ViewLayout): ViewNeed | null;
4935
5049
  declare function columnDeclarationFor(need: ViewNeed, label: string, options: readonly string[], fields: readonly Pick<Field, "sort">[] | null | undefined): NewFieldDeclaration;
4936
5050
  interface ViewNeedsProps {
4937
5051
  layout: ViewLayout;
4938
- tableId: Uuid$1;
5052
+ tableId: Uuid;
4939
5053
  /** The table's columns, as the layout already holds them. */
4940
5054
  fields: readonly Field[];
4941
5055
  /**
@@ -4949,7 +5063,7 @@ declare function ViewNeeds({ layout, tableId, fields, onMade, className }: ViewN
4949
5063
 
4950
5064
  interface FormBuilderProps {
4951
5065
  /** The Table this form collects into. A form is a view on a real Table. */
4952
- tableId: Uuid;
5066
+ tableId: Uuid$1;
4953
5067
  /**
4954
5068
  * COMPLETE DECLARATIVE SPECS an agent wrote. Any of these whose name this
4955
5069
  * table does not have yet is saved as a record the first time the builder
@@ -4957,7 +5071,7 @@ interface FormBuilderProps {
4957
5071
  * overwrites what a person has since tweaked.
4958
5072
  */
4959
5073
  seed?: FormSpec[] | undefined;
4960
- activeFormId?: Uuid | null | undefined;
5074
+ activeFormId?: Uuid$1 | null | undefined;
4961
5075
  onActiveForm?: ((form: SavedForm) => void) | undefined;
4962
5076
  /**
4963
5077
  * The person asked to BUILD a form on a table that has none: make it on open, instead of an
@@ -4999,7 +5113,7 @@ interface ChartSpec {
4999
5113
  id?: string;
5000
5114
  title: string;
5001
5115
  /** The Table this block asks about. */
5002
- subject: Uuid$1;
5116
+ subject: Uuid;
5003
5117
  kind: ChartKind;
5004
5118
  /** Field keys whose values become the groups. */
5005
5119
  groupBy?: string[];
@@ -5026,23 +5140,23 @@ interface ChartSpec {
5026
5140
  }
5027
5141
  /** A dashboard as `custom.dashboards` reports it, in the screen's own words. */
5028
5142
  interface SavedDashboard {
5029
- id: Uuid$1;
5143
+ id: Uuid;
5030
5144
  name: string;
5031
5145
  /** The subject Table: the one a block that names no table of its own reads. */
5032
- subject: Uuid$1 | null;
5146
+ subject: Uuid | null;
5033
5147
  blocks: ChartSpec[];
5034
5148
  presentation: Record<string, unknown>;
5035
5149
  /** The store's own version. A save re-states the whole dashboard. */
5036
5150
  version: number;
5037
5151
  }
5038
5152
  /** One saved block back into the shape a screen edits. */
5039
- declare function specFromBlock(block: DashboardBlock, subject: Uuid$1): ChartSpec;
5153
+ declare function specFromBlock(block: DashboardBlock, subject: Uuid): ChartSpec;
5040
5154
  /**
5041
5155
  * One block back into the door's own argument. `custom.dashboard_declare` judges
5042
5156
  * every block on the way IN — a block naming a Field this Table does not have is
5043
5157
  * refused BY NAME — so a canvas cannot be saved broken.
5044
5158
  */
5045
- declare function blockFromSpec(spec: ChartSpec, subject: Uuid$1): DashboardBlock;
5159
+ declare function blockFromSpec(spec: ChartSpec, subject: Uuid): DashboardBlock;
5046
5160
  /** One row of `custom.dashboards` into the shape a screen and an agent both read. */
5047
5161
  declare function dashboardFromSummary(summary: DashboardSummary): SavedDashboard;
5048
5162
  /**
@@ -5051,12 +5165,12 @@ declare function dashboardFromSummary(summary: DashboardSummary): SavedDashboard
5051
5165
  * a save that dropped it would quietly lose the question the person asked the
5052
5166
  * agent, which is what the canvas is FOR.
5053
5167
  */
5054
- declare function dashboardDeclareArgs(board: SavedDashboard, subject: Uuid$1): {
5055
- table_id: Uuid$1;
5168
+ declare function dashboardDeclareArgs(board: SavedDashboard, subject: Uuid): {
5169
+ table_id: Uuid;
5056
5170
  name: string;
5057
5171
  blocks: DashboardBlock[];
5058
5172
  presentation: Record<string, unknown>;
5059
- dashboard_id: Uuid$1 | null;
5173
+ dashboard_id: Uuid | null;
5060
5174
  };
5061
5175
  /**
5062
5176
  * The series palette. Six SEMANTIC tokens the design system already flips for
@@ -5130,18 +5244,18 @@ declare function ChartLegendContent({ payload, config, className, }: {
5130
5244
 
5131
5245
  interface DocTemplateProps {
5132
5246
  /** The Table these templates render. */
5133
- tableId: Uuid;
5247
+ tableId: Uuid$1;
5134
5248
  /** COMPLETE templates an agent wrote, in Field keys. Saved once, never overwritten. */
5135
5249
  seed?: DocTemplateSpec[] | undefined;
5136
- activeTemplateId?: Uuid | null | undefined;
5250
+ activeTemplateId?: Uuid$1 | null | undefined;
5137
5251
  onActiveTemplate?: ((template: DocTemplateRow) => void) | undefined;
5138
5252
  className?: string | undefined;
5139
5253
  }
5140
5254
  declare function DocTemplate({ tableId, seed, activeTemplateId, onActiveTemplate, className }: DocTemplateProps): react.JSX.Element;
5141
5255
 
5142
5256
  interface DocRenderProps {
5143
- templateId: Uuid;
5144
- recordId: Uuid;
5257
+ templateId: Uuid$1;
5258
+ recordId: Uuid$1;
5145
5259
  /** A name for the file when somebody takes the PDF. */
5146
5260
  filename?: string | undefined;
5147
5261
  onRendered?: ((render: DocRenderRow) => void) | undefined;
@@ -5150,8 +5264,8 @@ interface DocRenderProps {
5150
5264
  declare function DocRender({ templateId, recordId, filename, onRendered, className }: DocRenderProps): react.JSX.Element;
5151
5265
 
5152
5266
  interface SignBlockProps {
5153
- tableId: Uuid;
5154
- recordId: Uuid;
5267
+ tableId: Uuid$1;
5268
+ recordId: Uuid$1;
5155
5269
  /** The frozen version being signed. Without one there is nothing to seal. */
5156
5270
  render: DocRenderRow | null;
5157
5271
  className?: string | undefined;
@@ -5161,7 +5275,7 @@ declare function SignBlock({ tableId, recordId, render, className }: SignBlockPr
5161
5275
  /** THE DECLARATIVE SPEC an agent writes. One declaration and a person is told. */
5162
5276
  interface NotifyRuleSpec {
5163
5277
  name: string;
5164
- savedViewId: Uuid;
5278
+ savedViewId: Uuid$1;
5165
5279
  /** `instant` fires the moment a record enters the view; the rest are summaries. */
5166
5280
  cadence?: string;
5167
5281
  /** The summary's schedule — "monday 08:00". Meaningless for `instant`. */
@@ -5170,12 +5284,12 @@ interface NotifyRuleSpec {
5170
5284
  /** The hours not to be told in. A send inside them is MOVED, never dropped. */
5171
5285
  quietHours?: QuietHours | null;
5172
5286
  /** Who is told. Left out, the person setting it up — "tell ME". */
5173
- recipientUserId?: Uuid | null;
5287
+ recipientUserId?: Uuid$1 | null;
5174
5288
  eventKey?: string;
5175
5289
  }
5176
5290
  interface NotifyRuleEditorProps {
5177
5291
  /** The Table these subscriptions are about — the Rule's scope. */
5178
- tableId: Uuid;
5292
+ tableId: Uuid$1;
5179
5293
  /** COMPLETE declarative subscriptions an agent wrote. Saved once, never overwritten. */
5180
5294
  seed?: NotifyRuleSpec[] | undefined;
5181
5295
  /**
@@ -5183,9 +5297,9 @@ interface NotifyRuleEditorProps {
5183
5297
  * Rule). Given with `onChoose`, each subscription offers to be the one, and a
5184
5298
  * subscription made here becomes the one the moment the store has it.
5185
5299
  */
5186
- chosenRuleId?: Uuid | null | undefined;
5300
+ chosenRuleId?: Uuid$1 | null | undefined;
5187
5301
  /** CHOOSE MODE — called with the chosen subscription's Rule id, or null to choose none. */
5188
- onChoose?: ((ruleId: Uuid | null) => void) | undefined;
5302
+ onChoose?: ((ruleId: Uuid$1 | null) => void) | undefined;
5189
5303
  className?: string | undefined;
5190
5304
  }
5191
5305
  declare function NotifyRuleEditor({ tableId, seed, chosenRuleId, onChoose, className }: NotifyRuleEditorProps): react.JSX.Element;
@@ -5194,7 +5308,7 @@ interface ChartBlockProps {
5194
5308
  /** One block out of the canvas's single run — answered, or refused. */
5195
5309
  block: DashboardBlockResult;
5196
5310
  /** The dashboard's subject Table, for a block that names none of its own. */
5197
- subject: Uuid$1;
5311
+ subject: Uuid;
5198
5312
  /** The table this chart reads, named in its header on a dashboard across tables. */
5199
5313
  tableName?: string | undefined;
5200
5314
  className?: string | undefined;
@@ -5219,8 +5333,8 @@ declare function ChartBlock({ block, subject, tableName, className, centerValue,
5219
5333
 
5220
5334
  interface DashboardCanvasProps {
5221
5335
  /** The Table these blocks are about. */
5222
- tableId: Uuid;
5223
- activeDashboardId?: Uuid | null | undefined;
5336
+ tableId: Uuid$1;
5337
+ activeDashboardId?: Uuid$1 | null | undefined;
5224
5338
  /** The one filter bar across the canvas. Merged UNDER each block's own filter. */
5225
5339
  filter?: Record<string, AggregateFilter> | undefined;
5226
5340
  /**
@@ -5229,7 +5343,7 @@ interface DashboardCanvasProps {
5229
5343
  */
5230
5344
  createOnMount?: boolean | undefined;
5231
5345
  /** Told the id of a dashboard this canvas made (the starter, or `createOnMount`'s). */
5232
- onCreated?: ((dashboardId: Uuid) => void) | undefined;
5346
+ onCreated?: ((dashboardId: Uuid$1) => void) | undefined;
5233
5347
  className?: string | undefined;
5234
5348
  }
5235
5349
  declare function DashboardCanvas({ tableId, activeDashboardId, filter, createOnMount, onCreated, className }: DashboardCanvasProps): react.JSX.Element;
@@ -5318,40 +5432,40 @@ declare function flatWhere(where: RuleExpression | null, fields: readonly Field[
5318
5432
  * ASK THE STORE. `fields` are this table's Fields (the condition builder writes Fields by id, and a
5319
5433
  * formula column cannot be asked "as of"). Every number in the answer is a door's.
5320
5434
  */
5321
- declare function askQuestion(client: RecordsClient, tableId: Uuid$1, spec: QuestionSpec, fields: readonly Field[]): Promise<RecordsResult<QuestionAnswer>>;
5435
+ declare function askQuestion(client: RecordsClient, tableId: Uuid, spec: QuestionSpec, fields: readonly Field[]): Promise<RecordsResult<QuestionAnswer>>;
5322
5436
  /**
5323
5437
  * THE COLUMNS THIS READER MAY NOT READ, asked of the store: one aggregate measuring how many
5324
5438
  * records fill each column that carries a sensitivity, and every measure the store WITHHOLDS is a
5325
5439
  * column never offered. Nothing is guessed from levels here; the store decides, as it does for the
5326
5440
  * grid's cells.
5327
5441
  */
5328
- declare function unreadableKeys(client: RecordsClient, tableId: Uuid$1, fields: readonly Field[]): Promise<Set<string>>;
5442
+ declare function unreadableKeys(client: RecordsClient, tableId: Uuid, fields: readonly Field[]): Promise<Set<string>>;
5329
5443
  /** The columns a measure other than count may read: numbers (formula arithmetic included); min/max also dates. */
5330
5444
  declare function measurableFields(fields: readonly Field[], op: QuestionOp): Field[];
5331
5445
  /** The saved-view surface a Question is kept under, beside the table's views (`custom/records`). */
5332
5446
  declare const QUESTION_SURFACE = "custom/records/question";
5333
5447
  interface SavedQuestion {
5334
- id: Uuid$1;
5448
+ id: Uuid;
5335
5449
  name: string;
5336
5450
  spec: QuestionSpec;
5337
5451
  /** Shared with the organization (`internal`) or kept for its maker (`personal`). */
5338
5452
  shared: boolean;
5339
5453
  version: number;
5340
- createdBy: Uuid$1 | null;
5454
+ createdBy: Uuid | null;
5341
5455
  }
5342
5456
  /** The table's Questions this person may read (the row's own access decides). */
5343
- declare function questionsOf(client: RecordsClient, tableId: Uuid$1): Promise<RecordsResult<SavedQuestion[]>>;
5457
+ declare function questionsOf(client: RecordsClient, tableId: Uuid): Promise<RecordsResult<SavedQuestion[]>>;
5344
5458
  /** Keep a Question (new when `id` is absent). `null` data = somebody changed it first. */
5345
5459
  declare function questionSave(client: RecordsClient, args: {
5346
- id?: Uuid$1 | null;
5347
- tableId: Uuid$1;
5460
+ id?: Uuid | null;
5461
+ tableId: Uuid;
5348
5462
  name: string;
5349
5463
  spec: QuestionSpec;
5350
5464
  shared: boolean;
5351
5465
  expectedVersion?: number;
5352
5466
  }): Promise<RecordsResult<SavedQuestion | null>>;
5353
5467
  /** Archive a Question (its maker, or an admin of it). */
5354
- declare function questionArchive(client: RecordsClient, id: Uuid$1, version?: number): Promise<RecordsResult<boolean>>;
5468
+ declare function questionArchive(client: RecordsClient, id: Uuid, version?: number): Promise<RecordsResult<boolean>>;
5355
5469
 
5356
5470
  /** A related table's columns, keyed by the relation that reaches it. */
5357
5471
  type Related = Record<string, {
@@ -5359,9 +5473,9 @@ type Related = Record<string, {
5359
5473
  fields: Field[];
5360
5474
  }>;
5361
5475
  interface QuestionPanelProps {
5362
- tableId: Uuid;
5476
+ tableId: Uuid$1;
5363
5477
  /** A saved Question the address named (`?view=questions&item=<id>`). */
5364
- activeQuestionId?: Uuid | null | undefined;
5478
+ activeQuestionId?: Uuid$1 | null | undefined;
5365
5479
  /**
5366
5480
  * A question asked elsewhere and not saved yet (the table's Ask box, "Open in Questions"):
5367
5481
  * the builder opens holding it, as a new question. A new object each time it is handed over.
@@ -5372,7 +5486,7 @@ interface QuestionPanelProps {
5372
5486
  declare function QuestionPanel({ tableId, activeQuestionId, draft, className }: QuestionPanelProps): react.JSX.Element;
5373
5487
  /** The answer as Questions draws it — also the table's Ask box's answer (`TableAsk.tsx`): one drawing, one number. */
5374
5488
  declare function QuestionAnswerView({ tableId, spec, answer, fields, related }: {
5375
- tableId: Uuid;
5489
+ tableId: Uuid$1;
5376
5490
  spec: QuestionSpec;
5377
5491
  answer: QuestionAnswer;
5378
5492
  fields: Field[];
@@ -5380,7 +5494,7 @@ declare function QuestionAnswerView({ tableId, spec, answer, fields, related }:
5380
5494
  }): react.JSX.Element;
5381
5495
 
5382
5496
  interface TableAskProps {
5383
- tableId: Uuid;
5497
+ tableId: Uuid$1;
5384
5498
  /** Open the answered question in the Question builder. Absent, the button is not drawn. */
5385
5499
  onOpenInQuestions?: ((spec: QuestionSpec) => void) | undefined;
5386
5500
  }
@@ -5406,13 +5520,13 @@ declare function questionFromWords(text: string, fields: readonly Field[], choic
5406
5520
 
5407
5521
  interface PageScreenProps {
5408
5522
  /** The page to open. */
5409
- pageId?: Uuid | null | undefined;
5523
+ pageId?: Uuid$1 | null | undefined;
5410
5524
  /** Make a new page on this Table instead (its starter: a list and a record panel), then open it. */
5411
- newOnTable?: Uuid | null | undefined;
5525
+ newOnTable?: Uuid$1 | null | undefined;
5412
5526
  /** The signed-in person: "Assigned to me" is her own Person record. */
5413
5527
  viewerUserId?: string | null | undefined;
5414
5528
  /** Told the id of the page `newOnTable` made. */
5415
- onCreated?: ((pageId: Uuid) => void) | undefined;
5529
+ onCreated?: ((pageId: Uuid$1) => void) | undefined;
5416
5530
  /** The page was archived: the host leaves it. */
5417
5531
  onArchived?: (() => void) | undefined;
5418
5532
  /** Open in edit mode (a page just made). */
@@ -5440,9 +5554,9 @@ interface PageBlockBase {
5440
5554
  }
5441
5555
  interface ListPageBlock extends PageBlockBase {
5442
5556
  kind: "list";
5443
- table_id: Uuid$1;
5557
+ table_id: Uuid;
5444
5558
  /** A saved view of the table: its filter and sort shape the list. */
5445
- view_id?: Uuid$1 | null;
5559
+ view_id?: Uuid | null;
5446
5560
  /** The block's own question, the store's flat filter (field key → value). */
5447
5561
  filter?: RecordFilter;
5448
5562
  /** The columns shown, by field key; left out, the first few the table declares. */
@@ -5462,18 +5576,18 @@ interface ButtonPageBlock extends PageBlockBase {
5462
5576
  kind: "button";
5463
5577
  /** The list block whose selected row the action runs on. */
5464
5578
  source: string;
5465
- table_id: Uuid$1;
5579
+ table_id: Uuid;
5466
5580
  /** An existing row action of that table (`custom.row_actions`). */
5467
- action_id: Uuid$1;
5581
+ action_id: Uuid;
5468
5582
  }
5469
5583
  interface FormPageBlock extends PageBlockBase {
5470
5584
  kind: "form";
5471
- table_id: Uuid$1;
5472
- form_id: Uuid$1;
5585
+ table_id: Uuid;
5586
+ form_id: Uuid;
5473
5587
  }
5474
5588
  interface FilterPageBlock extends PageBlockBase {
5475
5589
  kind: "filter";
5476
- table_id: Uuid$1;
5590
+ table_id: Uuid;
5477
5591
  /** A choice (or yes/no) column of that table. */
5478
5592
  field: string;
5479
5593
  /** The list blocks it narrows. Empty = every list on the page over the same table. */
@@ -5519,7 +5633,7 @@ declare function pagePresentation(presentation: Record<string, unknown> | null |
5519
5633
  * THE STARTER PAGE on one table, the way Airtable's record-review layout starts: the table's records
5520
5634
  * on the left, the chosen one on the right. One press makes a page that already works.
5521
5635
  */
5522
- declare function starterPageBlocks(tableId: Uuid$1): PageBlock[];
5636
+ declare function starterPageBlocks(tableId: Uuid): PageBlock[];
5523
5637
  /** The list blocks a filter block narrows: those it names, or every list over its table. */
5524
5638
  declare function filterTargets(filter: FilterPageBlock, blocks: readonly PageBlock[]): string[];
5525
5639
  /**
@@ -5535,14 +5649,14 @@ declare function combineFilter(base: StoreFilter | null | undefined, extra: Reco
5535
5649
  };
5536
5650
 
5537
5651
  interface FormsPanelProps {
5538
- tableId: Uuid;
5652
+ tableId: Uuid$1;
5539
5653
  /**
5540
5654
  * THE FORM A LINK NAMED (`?rail=forms&item=<form>`, lane HUB-FIX). The rail
5541
5655
  * opens ON it: marked and scrolled to, and — for somebody who may build — its
5542
5656
  * builder open on that form. An id this table has no form by is said out
5543
5657
  * loud, never swapped for the first form in the list.
5544
5658
  */
5545
- activeFormId?: Uuid | null | undefined;
5659
+ activeFormId?: Uuid$1 | null | undefined;
5546
5660
  className?: string | undefined;
5547
5661
  }
5548
5662
  /** The sentence when a link named a form this table does not have. */
@@ -5571,7 +5685,7 @@ type FormAsked = {
5571
5685
  type FormSubmitOutcome = {
5572
5686
  ok: true;
5573
5687
  message?: string | null;
5574
- recordId?: Uuid | null;
5688
+ recordId?: Uuid$1 | null;
5575
5689
  } | {
5576
5690
  ok: false;
5577
5691
  message: string;
@@ -5620,7 +5734,7 @@ interface FormRunnerProps {
5620
5734
  resumed?: boolean | undefined;
5621
5735
  /** Preview mode answers the questions but writes nothing, and says so. */
5622
5736
  preview?: boolean | undefined;
5623
- onSubmitted?: ((recordId: Uuid | null) => void) | undefined;
5737
+ onSubmitted?: ((recordId: Uuid$1 | null) => void) | undefined;
5624
5738
  className?: string | undefined;
5625
5739
  }
5626
5740
  /**
@@ -5632,11 +5746,11 @@ declare function FormRunner(props: FormRunnerProps): react.JSX.Element;
5632
5746
 
5633
5747
  interface ChecklistRunnerProps {
5634
5748
  /** The Table runs are ABOUT. On a record page, the record's own table. */
5635
- tableId?: Uuid | null | undefined;
5749
+ tableId?: Uuid$1 | null | undefined;
5636
5750
  /** Runs about THIS record — a new hire, a matter, a job. */
5637
- recordId?: Uuid | null | undefined;
5751
+ recordId?: Uuid$1 | null | undefined;
5638
5752
  /** One run, named outright. Overrides the two above. */
5639
- runId?: Uuid | null | undefined;
5753
+ runId?: Uuid$1 | null | undefined;
5640
5754
  /** Show runs that have been closed too. The default is what is still open. */
5641
5755
  includeClosed?: boolean | undefined;
5642
5756
  /** Offer the templates that could be started here. On by default with a record. */
@@ -5670,7 +5784,7 @@ declare function StepRow({ step, busy, onComplete, onAssign, className, }: {
5670
5784
  */
5671
5785
  declare function useMyChecklistSteps(limit?: number): {
5672
5786
  steps: Array<ChecklistRunStep & {
5673
- run_id: Uuid;
5787
+ run_id: Uuid$1;
5674
5788
  run_name: string;
5675
5789
  }>;
5676
5790
  loading: boolean;
@@ -5689,12 +5803,12 @@ declare function MyChecklistSteps({ className, onlyIds, onSteps, actions, }: {
5689
5803
  /** Every step id this group holds, so the inbox can draw each step once — here, where it is finished. */
5690
5804
  onSteps?: ((ids: string[]) => void) | undefined;
5691
5805
  /** The inbox's own controls for a step (snooze, done), drawn beside it. */
5692
- actions?: ((stepId: Uuid) => ReactNode) | undefined;
5806
+ actions?: ((stepId: Uuid$1) => ReactNode) | undefined;
5693
5807
  }): react.JSX.Element | null;
5694
5808
  interface ChecklistsPanelProps {
5695
- tableId: Uuid;
5809
+ tableId: Uuid$1;
5696
5810
  /** Open the record a run is about. */
5697
- onOpenRecord?: ((recordId: Uuid) => void) | undefined;
5811
+ onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
5698
5812
  className?: string | undefined;
5699
5813
  }
5700
5814
  /**
@@ -5713,15 +5827,15 @@ declare function ChecklistsPanel({ tableId, onOpenRecord, className }: Checklist
5713
5827
  * validator here: a rule written twice is a rule that will disagree with itself.
5714
5828
  */
5715
5829
  declare function ChecklistTemplateEditor({ aboutTableId, templateId, onDone, onSaved, className, }: {
5716
- aboutTableId: Uuid;
5717
- templateId?: Uuid | null | undefined;
5830
+ aboutTableId: Uuid$1;
5831
+ templateId?: Uuid$1 | null | undefined;
5718
5832
  /** Cancel; and, when the host passes no `onSaved`, a finished Save. */
5719
5833
  onDone?: (() => void) | undefined;
5720
5834
  /**
5721
5835
  * A Save landed: the checklist's id. Passed, the editor STAYS open and says it is saved (the
5722
5836
  * host decides where to go); every later Save re-states that same checklist.
5723
5837
  */
5724
- onSaved?: ((templateId: Uuid) => void) | undefined;
5838
+ onSaved?: ((templateId: Uuid$1) => void) | undefined;
5725
5839
  className?: string | undefined;
5726
5840
  }): react.JSX.Element;
5727
5841
 
@@ -5743,9 +5857,9 @@ declare function whyNotAskable(fields: readonly Field[], hidden?: readonly strin
5743
5857
  declare const STORE_ANSWERS_THESE: readonly ["slot", "status", "booked_with"];
5744
5858
  interface BookingBuilderProps {
5745
5859
  /** The Table the appointments land in. An appointment is an ordinary record in it. */
5746
- tableId: Uuid;
5860
+ tableId: Uuid$1;
5747
5861
  /** Re-state an existing page rather than making a second one over the same Table. */
5748
- bookingId?: Uuid | null | undefined;
5862
+ bookingId?: Uuid$1 | null | undefined;
5749
5863
  /** Called after a save, so the list this opened from re-reads the store. */
5750
5864
  onSaved?: ((page: {
5751
5865
  form_id: string;
@@ -5768,13 +5882,13 @@ interface BookingSlotsProps {
5768
5882
  * booking page in this organization, which is the same door asked the wider
5769
5883
  * question, never a second list.
5770
5884
  */
5771
- tableId?: Uuid | null | undefined;
5885
+ tableId?: Uuid$1 | null | undefined;
5772
5886
  /**
5773
5887
  * THE BOOKING PAGE A LINK NAMED (`?rail=bookings&item=<page>`, lane HUB-FIX,
5774
5888
  * VERIFIER-16 M4). It is marked and scrolled to. A page this rail does not
5775
5889
  * list is said out loud, never swapped for another.
5776
5890
  */
5777
- activeBookingId?: Uuid | null | undefined;
5891
+ activeBookingId?: Uuid$1 | null | undefined;
5778
5892
  className?: string | undefined;
5779
5893
  }
5780
5894
  /** The sentence when a link named a booking page this rail does not list. */
@@ -5806,9 +5920,9 @@ interface CaptureSheetProps {
5806
5920
  * Without one this stays the ad-hoc capture below, which guesses which Field a
5807
5921
  * reading goes in — right for a quick one-off, wrong for a crew.
5808
5922
  */
5809
- sheetId?: Uuid | undefined;
5923
+ sheetId?: Uuid$1 | undefined;
5810
5924
  /** The Table a capture becomes a record in. Not needed when `sheetId` is given. */
5811
- tableId: Uuid;
5925
+ tableId: Uuid$1;
5812
5926
  /** Which Field a reading's number goes in. Defaults to the first range Field. */
5813
5927
  readingField?: string | undefined;
5814
5928
  /** Which Field the note goes in. Defaults to the Table's title field. */
@@ -5820,7 +5934,7 @@ interface CaptureSheetProps {
5820
5934
  declare function CaptureSheet({ sheetId, tableId, readingField, noteField, attachmentField, className, }: CaptureSheetProps): react.JSX.Element;
5821
5935
 
5822
5936
  interface CaptureRunProps {
5823
- sheetId: Uuid$1;
5937
+ sheetId: Uuid;
5824
5938
  /**
5825
5939
  * The sheet, already loaded — by a server render, or from the phone's own copy. Given
5826
5940
  * one, this component makes NO network call before the first question is on screen.
@@ -5834,7 +5948,7 @@ declare function CaptureRun({ sheetId, face: given, className }: CaptureRunProps
5834
5948
 
5835
5949
  interface PortalShellProps {
5836
5950
  /** The Table the outsider's records belong to. */
5837
- tableId: Uuid;
5951
+ tableId: Uuid$1;
5838
5952
  /** OPTIONAL. A form the outsider may send — their one way to put something in. */
5839
5953
  form?: FormSpec | undefined;
5840
5954
  /** What the resources are called in `iam`'s own vocabulary. Default `record`. */
@@ -5852,12 +5966,12 @@ declare function PublicViewPage({ slug, className }: PublicViewPageProps): react
5852
5966
 
5853
5967
  interface EmbedFrameProps {
5854
5968
  /** The Table whose rights decide whether an embed may be issued at all. */
5855
- tableId: Uuid;
5969
+ tableId: Uuid$1;
5856
5970
  /** A write embed names the form it writes into. */
5857
- formId?: Uuid | null | undefined;
5971
+ formId?: Uuid$1 | null | undefined;
5858
5972
  /** A read embed names the saved view or the record it shows. */
5859
- savedViewId?: Uuid | null | undefined;
5860
- recordId?: Uuid | null | undefined;
5973
+ savedViewId?: Uuid$1 | null | undefined;
5974
+ recordId?: Uuid$1 | null | undefined;
5861
5975
  /** Where the embedded page is served from — the `src` of the iframe. */
5862
5976
  embedUrl: string;
5863
5977
  className?: string | undefined;
@@ -5911,7 +6025,7 @@ interface RecordsMountProps {
5911
6025
  children: ReactNode;
5912
6026
  }
5913
6027
  declare function RecordsMount({ config, host, letTheStoreDecideRights, children, }: RecordsMountProps): react.JSX.Element;
5914
- declare function personActor(userId: Uuid$1 | null | undefined): RecordsActor;
6028
+ declare function personActor(userId: Uuid | null | undefined): RecordsActor;
5915
6029
  declare function recordsDataSource(client: object, fallbackSchema?: string): RecordsDataSource;
5916
6030
 
5917
6031
  type TableLane = "mine" | "organization" | "system" | "community" | "app";
@@ -5980,7 +6094,7 @@ interface TablesHomeProps {
5980
6094
  * unchanged; a host that ignores it lands on the records, which is what it
5981
6095
  * did before, rather than on a screen it does not know how to address.
5982
6096
  */
5983
- onOpenTable?: ((tableId: Uuid$1, dashboardId?: Uuid$1) => void) | undefined;
6097
+ onOpenTable?: ((tableId: Uuid, dashboardId?: Uuid) => void) | undefined;
5984
6098
  /**
5985
6099
  * THE ORGANIZATION EVERY ROW HERE LIVES IN, BY NAME (lane SC-1-TAILS; access-is-personal: a
5986
6100
  * list filtered by one organization says which). Each row carries a quiet "Lives in <name>"
@@ -6018,7 +6132,7 @@ interface TablesHomeProps {
6018
6132
  declare function TablesHome({ onOpenTable, organizationName, makingOnly, askedBy, templatesHref, className }: TablesHomeProps): react.JSX.Element;
6019
6133
 
6020
6134
  interface WhereItLivesProps {
6021
- tableId: Uuid$1;
6135
+ tableId: Uuid;
6022
6136
  /**
6023
6137
  * The name the screen already holds (a list whose rows all live in one organization), shown
6024
6138
  * until the store answers — and, on a row, instead of asking at all until the chip is pressed:
@@ -6027,7 +6141,7 @@ interface WhereItLivesProps {
6027
6141
  knownOrganizationName?: string | null | undefined;
6028
6142
  /** After a move lands: the host re-reads (the list, its rows, the page). */
6029
6143
  onMoved?: ((to: {
6030
- id: Uuid$1;
6144
+ id: Uuid;
6031
6145
  name: string;
6032
6146
  }) => void) | undefined;
6033
6147
  /**
@@ -6071,7 +6185,7 @@ declare function sameViewAddress(a: ViewAddressState | null | undefined, b: View
6071
6185
 
6072
6186
  type Rail = "none" | "settings" | "inbox" | "import" | "field" | "record" | "new-record" | "forms" | "bookings" | "checklists" | "notifications" | "portals" | "who-changed" | "export";
6073
6187
  interface TablePageProps$1 {
6074
- tableId: Uuid$1;
6188
+ tableId: Uuid;
6075
6189
  /**
6076
6190
  * `embedded` — a table inside a page, like Notion's inline database (CHAIR-GRID-LINKS 06): the
6077
6191
  * same page with its furniture off. No title row (the host draws it), no Layout chooser, and the
@@ -6121,7 +6235,7 @@ interface TablePageProps$1 {
6121
6235
  * canvas on that dashboard; absent, the page opens on the records exactly as
6122
6236
  * it always has.
6123
6237
  */
6124
- activeDashboardId?: Uuid$1 | null | undefined;
6238
+ activeDashboardId?: Uuid | null | undefined;
6125
6239
  /**
6126
6240
  * THE RECORD A LINK NAMED, OPENED ON ARRIVAL.
6127
6241
  *
@@ -6134,7 +6248,7 @@ interface TablePageProps$1 {
6134
6248
  *
6135
6249
  * Absent, nothing changes: the page opens exactly as it did.
6136
6250
  */
6137
- activeRecordId?: Uuid$1 | null | undefined;
6251
+ activeRecordId?: Uuid | null | undefined;
6138
6252
  /**
6139
6253
  * WHICH VIEW THE ADDRESS NAMES — `grid`, `kanban`, `calendar`, `gallery` or
6140
6254
  * `dashboards`, exactly as the host read it out of `?view=`.
@@ -6223,7 +6337,7 @@ interface TablePageProps$1 {
6223
6337
  * opened, the rule marked and scrolled to. An id the rail does not hold is
6224
6338
  * said out loud by the rail, never replaced by its first row.
6225
6339
  */
6226
- activeItemId?: Uuid$1 | null | undefined;
6340
+ activeItemId?: Uuid | null | undefined;
6227
6341
  /**
6228
6342
  * THE PAGE'S HEADER, handed the table's own page-level controls (lane TABLE-PAGE-CHROME, owner
6229
6343
  * 2026-09-25: "align with the app's top-tier pages"). Called with `actions` — Share and the
@@ -6416,9 +6530,9 @@ declare function surfaceChosen(current: Surface, asking: SurfacePress): boolean;
6416
6530
  * WHAT THE PAGE OPENS SHOWING — one pure function, so the dead link can be shown failing.
6417
6531
  * See `TablePageProps.activeRecordId` for the defect it closes.
6418
6532
  */
6419
- declare function openingRail(activeRecordId: Uuid$1 | null | undefined, activeRail?: string | null | undefined): {
6533
+ declare function openingRail(activeRecordId: Uuid | null | undefined, activeRail?: string | null | undefined): {
6420
6534
  rail: "record" | "none" | Exclude<LinkRail, "share">;
6421
- record: Uuid$1 | null;
6535
+ record: Uuid | null;
6422
6536
  };
6423
6537
  /** The rails a link may open, plus `share`, which opens the share dialog over the page. */
6424
6538
  type LinkRail = "forms" | "bookings" | "checklists" | "notifications" | "portals" | "settings" | "import" | "inbox" | "export" | "field" | "share";
@@ -6444,7 +6558,7 @@ declare const SHARE_NOT_YOURS_LINE: string;
6444
6558
  * A `?dashboard=<id>` with no `?view=` still opens the canvas, because that
6445
6559
  * link predates this one and must keep working.
6446
6560
  */
6447
- declare function openingView(activeView: string | null | undefined, activeDashboardId: Uuid$1 | null | undefined): {
6561
+ declare function openingView(activeView: string | null | undefined, activeDashboardId: Uuid | null | undefined): {
6448
6562
  main: MainView;
6449
6563
  layout: ViewLayout | null;
6450
6564
  unknown: string | null;
@@ -6584,7 +6698,7 @@ declare function EntityTablePage(props: EntityTablePageProps): react.JSX.Element
6584
6698
 
6585
6699
  type TablePageSource = {
6586
6700
  kind: "table";
6587
- id: Uuid$1;
6701
+ id: Uuid;
6588
6702
  } | {
6589
6703
  kind: "entity";
6590
6704
  token: string;
@@ -6615,7 +6729,7 @@ declare function InTableToolbar({ children }: {
6615
6729
  }): react.JSX.Element | null;
6616
6730
 
6617
6731
  /** What the roster can tell us about a user id. `null` when it cannot. */
6618
- type ResolveName = (userId: Uuid$1) => string | null;
6732
+ type ResolveName = (userId: Uuid) => string | null;
6619
6733
  /** The honest stand-in when nobody and nothing can put a name to the author. */
6620
6734
  declare const SOMEBODY = "somebody in this organization";
6621
6735
  /** The platform's own word for itself. Never "null", never "system_user". */
@@ -6649,18 +6763,18 @@ interface WhoChanged {
6649
6763
  * asking its question, exactly as before, and nothing throws.
6650
6764
  */
6651
6765
  declare function WhoChangedSource({ tableId, labelOf, children, }: {
6652
- tableId: Uuid$1;
6766
+ tableId: Uuid;
6653
6767
  /** The Field's own label, so the sentence reads "Primary diagnosis" and not `primary_diagnosis`. */
6654
6768
  labelOf: (fieldKey: string) => string;
6655
6769
  children: ReactNode;
6656
6770
  }): react.JSX.Element;
6657
6771
  /** What this cell can say about who last changed it. */
6658
- declare function useWhoChanged(fieldKey: string, recordId: Uuid$1): WhoChanged;
6772
+ declare function useWhoChanged(fieldKey: string, recordId: Uuid): WhoChanged;
6659
6773
 
6660
6774
  interface ShareControlProps {
6661
6775
  kind: ShareSubject["kind"];
6662
- organizationId: Uuid$1;
6663
- subjectId: Uuid$1;
6776
+ organizationId: Uuid;
6777
+ subjectId: Uuid;
6664
6778
  /** What to call it in the dialog's title. */
6665
6779
  name?: string | undefined;
6666
6780
  /**
@@ -6780,7 +6894,7 @@ declare function WithheldValue({ field, notice }: {
6780
6894
  }): react.JSX.Element;
6781
6895
 
6782
6896
  interface PipelineBoardProps {
6783
- tableId: Uuid;
6897
+ tableId: Uuid$1;
6784
6898
  /** The rows the view holds — the SAME rows every other layout of this view draws. */
6785
6899
  rows: ReadRow$1[];
6786
6900
  /**
@@ -6797,7 +6911,7 @@ interface PipelineBoardProps {
6797
6911
  */
6798
6912
  filter?: StoreFilter | null | undefined;
6799
6913
  onMeasureChange?: ((key: string | null) => void) | undefined;
6800
- onOpenRecord?: ((recordId: Uuid) => void) | undefined;
6914
+ onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
6801
6915
  /** Called after a move lands, so the host re-reads the rows it owns. */
6802
6916
  onMoved?: (() => void) | undefined;
6803
6917
  /** A card's menu copied or archived a record: the host re-reads the rows it owns. */
@@ -6891,8 +7005,8 @@ declare function ObjectActionGlyph({ name, ...props }: {
6891
7005
 
6892
7006
  /** What the list needs to know about the record. */
6893
7007
  interface RecordActionSubject {
6894
- id: Uuid$1;
6895
- tableId: Uuid$1;
7008
+ id: Uuid;
7009
+ tableId: Uuid;
6896
7010
  /** The record's name as every card reads it (`recordNameIn` / `cardWords`). */
6897
7011
  name: string;
6898
7012
  }
@@ -6937,9 +7051,9 @@ declare function recordLink(tableId: string, recordId: string, origin?: string):
6937
7051
  declare function recordActions(input: RecordActionsInput): ObjectAction[];
6938
7052
 
6939
7053
  interface RecordActionHostArgs {
6940
- tableId: Uuid;
7054
+ tableId: Uuid$1;
6941
7055
  row: ReadRow$1;
6942
- onOpenRecord?: ((recordId: Uuid) => void) | undefined;
7056
+ onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
6943
7057
  /** Re-read the surface after a copy or an archive. */
6944
7058
  onChanged?: (() => void) | undefined;
6945
7059
  /** Open the merge dialog for this record (`MergeRecordDialog`). Absent: Merge says why. */
@@ -6969,8 +7083,8 @@ interface ViewActionHost {
6969
7083
  declare function viewActions(whyNot: string | null, host: ViewActionHost): ObjectAction[];
6970
7084
 
6971
7085
  interface RecordPanelProps {
6972
- tableId: Uuid;
6973
- recordId: Uuid;
7086
+ tableId: Uuid$1;
7087
+ recordId: Uuid$1;
6974
7088
  /** Put the record away (the rail's close). Absent on a page of its own. */
6975
7089
  onClose?: (() => void) | undefined;
6976
7090
  /**
@@ -6994,8 +7108,8 @@ declare const BODY_COLUMN_NAME = "Notes";
6994
7108
  /** How long a pause in typing is before the body is written. */
6995
7109
  declare const BODY_SAVE_PAUSE_MS = 900;
6996
7110
  declare function RecordBody({ tableId, recordId, className }: {
6997
- tableId: Uuid;
6998
- recordId: Uuid;
7111
+ tableId: Uuid$1;
7112
+ recordId: Uuid$1;
6999
7113
  className?: string | undefined;
7000
7114
  }): react.JSX.Element;
7001
7115
 
@@ -7068,7 +7182,7 @@ declare function copyNameFor(name: string): string;
7068
7182
  /** One line of progress, in a person's words. */
7069
7183
  declare function duplicateProgressWords(p: TableDuplicateProgress): string;
7070
7184
  interface TableDuplicateDialogProps {
7071
- tableId: Uuid$1;
7185
+ tableId: Uuid;
7072
7186
  name: string;
7073
7187
  open: boolean;
7074
7188
  onOpenChange: (open: boolean) => void;
@@ -7078,7 +7192,7 @@ interface TableDuplicateDialogProps {
7078
7192
  declare function TableDuplicateDialog({ tableId, name, open, onOpenChange, onDuplicated }: TableDuplicateDialogProps): react.JSX.Element;
7079
7193
 
7080
7194
  /** The two references a table gives, in the words a person reads. Pure. */
7081
- declare function tableReferenceChoices(tableId: Uuid$1, name: string): Array<{
7195
+ declare function tableReferenceChoices(tableId: Uuid, name: string): Array<{
7082
7196
  id: string;
7083
7197
  label: string;
7084
7198
  reference: ContentTransferReference;
@@ -7089,29 +7203,13 @@ declare function TableReferenceDialog({ table, open, onOpenChange, }: {
7089
7203
  onOpenChange: (open: boolean) => void;
7090
7204
  }): react.JSX.Element;
7091
7205
 
7092
- /** The columns a record may be named by, in the table's order. Pure. */
7093
- declare function rowLabelChoices(fields: readonly Field$1[]): Array<{
7094
- value: string;
7095
- label: string;
7096
- }>;
7097
- /** The patch that keeps a description: the table's other metadata is carried, never dropped. Pure. */
7098
- declare function descriptionPatch(table: Pick<Table$1, "metadata">, text: string): {
7099
- metadata: Record<string, unknown>;
7100
- };
7101
- declare function TableDetails({ tableId, table, fields, onSaved, }: {
7102
- tableId: Uuid;
7103
- table: Table$1;
7104
- fields: readonly Field$1[];
7105
- onSaved?: (() => void) | undefined;
7106
- }): react.JSX.Element;
7107
-
7108
7206
  /** What a "the app's code depends on this table" refusal names, or null for any other refusal. */
7109
7207
  declare function codeDependsRefusal(error: RecordsError | null | undefined): {
7110
7208
  slug: string;
7111
7209
  declaredIn: string | null;
7112
7210
  } | null;
7113
7211
  interface ArchiveDeliberatelyDialogProps {
7114
- tableId: Uuid$1;
7212
+ tableId: Uuid;
7115
7213
  name: string;
7116
7214
  slug: string;
7117
7215
  declaredIn: string | null;
@@ -7196,4 +7294,4 @@ declare function RecordsSkeleton({ layout, embedded, rows, className }: RecordsS
7196
7294
  */
7197
7295
  declare function TablePageSkeleton({ layout: layoutAsked, embedded, rows, tableId, className, }: RecordsSkeletonProps): react.JSX.Element;
7198
7296
 
7199
- export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, ASK_EXAMPLE, type AbsenceWord, AccentSwatches, type AccentSwatchesProps, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, type AnnounceTableArchived, type AppletPageBlock, ArchiveDeliberatelyDialog, type ArchiveDeliberatelyDialogProps, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, type AskRead, BODY_COLUMN_NAME, BODY_SAVE_PAUSE_MS, BOOKING_NOT_HERE_LINE, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, type ButtonPageBlock, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, ADDABLE_TYPES as CUSTOM_FIELD_ADDABLE_TYPES, type CalendarMode, CalendarView, type CalendarViewProps, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartPageBlock, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, type ChoiceAddition, type ChoiceAsk, ChoiceAskButtons, ChoiceListEditor, type ChoiceListRow, type CombinedRows, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, type CustomFieldAddRequest, type CustomFieldAddResult, type CustomFieldSetResult, type CustomFieldValuesRequest, type CustomFieldsAgentDoor, type CustomFieldsAgentState, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FOOTER, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, ENTITY_REFERENCE_KINDS_MISSING, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, EntityBoard, type EntityBoardProps, EntityChartBlock, type EntityChartBlockProps, type EntityColumn, EntityDataScope, EntityGrid, type EntityLayout, EntityReferenceKindPicker, type EntityReferenceKindPickerProps, type EntityRow, type EntitySource, type EntityTable, EntityTablePage, type EntityTablePageProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CATALOGUE, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FOOTER_WORDS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FORM_NOT_HERE_LINE, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FilePicker, type FilePickerProps, type FilterPageBlock, type FooterPlacement, type FormAsked, FormBuilder, type FormBuilderProps, type FormFlow, type FormLook, FormLookFrame, type FormLookFrameProps, FormLookLogo, type FormLookView, type FormPageBlock, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridContextRecord, type GridContextSnapshot, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, GuessedFieldType, type HeadingPageBlock, HistoryPanel, type HistoryPanelProps, type HostLayout, INBOX_GROUPINGS, INBOX_VIEWS, IN_MEMORY_QUEUE_REASON, ImportNotice, type ImportNoticeProps, type ImportSource, ImportWizard, type ImportWizardProps, InTableToolbar, type InboxGroup, type InboxGrouping, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LOOK_WORDS, type LabelLookup, type LinkRail, type ListPageBlock, MACHINE_IDENTITY, MANUAL_SORT, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, MOST_NEW_COLUMNS, type MainView, type MoveWritten, MyChecklistSteps, NEEDS_A_SENTENCE, NEW_COLUMN_TYPES, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewColumn, type NewColumnType, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, ObjectAction, ObjectActionContextMenuItems, ObjectActionGlyph, ObjectActionIcon, ObjectActionMenuItems, type ObjectActionMenuItemsProps, type OpenRecordsAsk, type OrganizationMember, PAGE_BLOCK_KINDS, PAGE_BLOCK_LABEL, PAGE_KIND, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PORTAL_NOT_HERE_LINE, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageBlock, type PageBlockKind, PageScreen, type PageScreenProps, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, PickOrAdd, type PickOrAddItem, type PickOrAddProps, type PickableFieldType, type PickerTable, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalLookEditor, type PortalLookEditorProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicPicturePicker, type PublicPicturePickerProps, PublicViewPage, type PublicViewPageProps, QUESTION_OPS, QUESTION_SURFACE, type QuestionAnswer, QuestionAnswerView, type QuestionGroup, type QuestionMeasure, type QuestionOp, QuestionPanel, type QuestionPanelProps, type QuestionRow, type QuestionShow, type QuestionSpec, RECORDS_GRID_ROW_PX, RECORDS_SKELETON_LAYOUTS, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, type ReasonGroup, type RecordActionHost, RecordActionMenu, type RecordActionMenuProps, type RecordActionSubject, type RecordActionsInput, RecordBody, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, type RecordMoves, type RecordPageBlock, RecordPanel, type RecordPanelProps, RecordValue, RecordsMount, type RecordsMountProps, RecordsSkeleton, type RecordsSkeletonLayout, type RecordsSkeletonProps, RecordsTableCard, type RecordsTableCardProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RefusedRow, type RelationFieldType, RelationPicker, type RelationPickerProps, type RenderTextSlot, type ResolveName, type RichTextEditProps, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAVE_TO_TABLE_TYPES, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SECTIONS_UNKNOWN, SERIES_COLORS, SHARE_NOT_YOURS_LINE, SIGNED_WORD, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, STORE_KEEPS_TIMELINE, STORE_KEPT_LAYOUTS, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, SaveToTable, type SaveToTableProps, type SaveToTableSource, type SavedDashboard, type SavedForm, type SavedQuestion, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, ShowListsToggle, type ShownViewReport, SignBlock, type SignBlockProps, SignaturePad, SignatureValue, type SnoozeChoice, type SortStateAction, SortStateControl, type SortStateControlProps, StageRulesSection, type StageRulesSectionProps, type StandardColumn, StandardRecordForm, type StandardRecordFormProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NAME_MAX, TABLE_NOT_REACHABLE, TABLE_TOOLBAR_ROW_CLASS, THE_SYSTEM, TIMELINE_ZOOMS, TableActionHost, TableAsk, type TableAskProps, TableDetails, TableDuplicateDialog, type TableDuplicateDialogProps, TableFoundationSwitch, type TableLane, type TableOpening, TablePage, type TablePageActionHost, type TablePageHeaderChrome, type TablePageProps, TablePageSkeleton, type TablePageSource, type TablePickerEntries, type TablePickerEntry, TableReferenceDialog, TableRenameDialog, TableRestoreRefused, type TableRights, TableSettings, type TableSettingsProps, TableShape, TableToolbarSlotContext, TablesHome, type TablesHomeProps, TemplatePreview, type TemplatePreviewProps, type TextPageBlock, type ThroughCondition, type TimelineSettings, TimelineView, type TimelineViewProps, type TimelineZoom, type TitleRepeats, type TrackedVersion, UNREAD_RECORD_LABEL, type UseSystemTableState, VIEW_ADDRESS_KEYS, VIEW_KEYS, VIEW_LAYOUTS, VIEW_NEEDS, VIEW_NOT_SAVED_YET, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, type ViewAddressSort, type ViewAddressState, ViewBar, type ViewBarProps, type ViewKeyDeclaration, type ViewKeyLayout, type ViewKeyWriter, type ViewLayout, type ViewLook, type ViewNeed, type ViewNeedKind, ViewNeeds, type ViewNeedsProps, type ViewSettings, type ViewSettingsPatch, type ViewSort, type ViewSortKey, ViewSwitcher, type ViewSwitcherProps, type VisibilityLane, WITHHELD_RECORD_LABEL, WITHHELD_WORD, WORK_APPROVAL_STATES, WORK_APPROVAL_STATE_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_GROUP_LABEL, WORK_INBOX_KIND_LABEL, WhatYouMayDo, WhereItLives, type WhereItLivesProps, type WhoChanged, WhoChangedSource, WithheldValue, actorBadge, actorWords, addDays, announceTableArchived, applyLook, archiveConfirmSentence, archivedRowLine, asRefusal, askExampleFor, askQuestion, askableFields, blockFromSpec, bodyFieldOf, bodyForReading, bodyFromKeys, calendarDayLabel, calendarDayOf, cameFromLine, cardTitleField, cardWords, carriesTimeOfDay, cellState, choiceAddition, choiceAskSentence, choiceListPatch, choiceNudgeOf, choiceRowsFrom, chooseSurface, codeDependsRefusal, colorFromTheValue, columnDeclarationFor, columnForField, columnFromName, columnNamesFrom, columnsFrom, combineFilter, combineRows, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, copyNameFor, currencyCodeFor, customFieldRequestProblems, dashboardDeclareArgs, dashboardFromSummary, dateFormatFor, dateText, dayAt, dayKeyOf, daysBetween, declareView, defaultViewOf, descriptionPatch, designatedLayoutOf, drawnBelowOnPage, drawnSignatureOf, drillDimensionsOf, drillMeasuresOf, drillPathsOf, drillWhere, duplicateProgressWords, editorKindFor, ensureSystemTable, entityCellValue, entityChoiceColumns, entityNameColumn, entityReferenceSpec, entityShownColumns, entityTableColumns, entityTitleColumn, entityValueText, envelopeFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, fieldsForNewColumns, filterTargets, flatWhere, footerOf, formDeclareArgs, formFromSummary, formLookDocument, formLookFromDocument, formLookView, formPresentation, formatForField, freeColumnName, freshFormName, gridContextKey, gridContextSnapshot, groupInbox, groupLabel, groupReasons, groupableFields, handOrderLine, handOrderSortState, hasTimePart, hintForAPerson, hintIsMachineIdentity, idsOf, isChoiceAddition, isDateField, isEngineerText, isFoundationTable, isId, isKeptTable, isMachineIdentity, isPage, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, isValueSet, isViewAddressEmpty, keepLook, keptByTheApp, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, lookDiffers, lookDocument, lookFromDocument, lookPart, looksLikeId, machineIdentityIn, mayNotRestoreLine, measurableFields, memberName, moveRecordValue, newQuestion, nextInWords, nextSummaryAt, notAChoiceSentence, onlyCandidate, openingRail, openingView, packOverlaps, pageBlocksOf, pagePresentation, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pickableTypeOf, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, questionArchive, questionFromDefinition, questionFromWords, questionSave, questionsOf, railFromParam, readLooks, recordActions, recordLink, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, refusedFileName, refusedRowsCsv, renderValue, rescheduledValue, resolveTableStyle, revokeConsequence, rowLabelChoices, rowName, rowNameIn, runToNotice, sameRecordLikely, sameViewAddress, saveToViewPlan, saveViewPatch, scalarText, seedIsSatisfied, shapesOfSource, shareUnavailableReason, signatureFileIn, signatureFileOf, signatureWords, singularNoun, skeletonLayoutFor, snoozeChoices, specFromBlock, standardTokenOf, starterPageBlocks, storeDecidesRights, storeKeepsLayout, storePublishesKind, styleFromDecorations, submissionStamp, surfaceChosen, tableName, tableNameProblem, tableOpening, tablePickerEntries, tableReferenceChoices, tableRightsAt, titleRepeats, unknownRailLine, unknownViewLine, unreadableKeys, useCanShare, useChoiceNudge, useDrill, useDrillAnswers, useDrillDefinition, useEmbedHandshake, useEnrichCells, useEntityTable, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, usePickerTables, useRecordActionHost, useRecordLabels, useRecordMoves, useRecordRights, useRecordsUi, useRowColorBy, useRowRights, useSystemTable, useTableRights, useTableToolbarSlot, useTemplatePreview, useViewRecords, useWhoChanged, viewActions, viewAddressFromParams, viewAddressToParams, viewDocument, viewFromRow, viewKeysFor, viewNeedFor, viewPatchDocument, viewSettings, viewSettingsFor, viewSettingsPatch, visibilityLaneFor, whatIsMissing, whatIsMissingForEntityReference, whatTheChoiceListIsMissing, whenWords, whyNotAskable, withheldNoticeOf, withheldSentence, withoutAddition, wordsList };
7297
+ export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, ASK_EXAMPLE, type AbsenceWord, AccentSwatches, type AccentSwatchesProps, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, type AnnounceTableArchived, type AppletPageBlock, ArchiveDeliberatelyDialog, type ArchiveDeliberatelyDialogProps, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, type AskRead, BODY_COLUMN_NAME, BODY_SAVE_PAUSE_MS, BOOKING_NOT_HERE_LINE, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, type ButtonPageBlock, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, ADDABLE_TYPES as CUSTOM_FIELD_ADDABLE_TYPES, type CalendarMode, CalendarView, type CalendarViewProps, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartPageBlock, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, type ChoiceAddition, type ChoiceAsk, ChoiceAskButtons, ChoiceListEditor, type ChoiceListRow, type CombinedRows, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, type CustomFieldAddRequest, type CustomFieldAddResult, type CustomFieldSetResult, type CustomFieldValuesRequest, type CustomFieldsAgentDoor, type CustomFieldsAgentState, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FOOTER, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, ENTITY_REFERENCE_KINDS_MISSING, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, EntityBoard, type EntityBoardProps, EntityChartBlock, type EntityChartBlockProps, type EntityColumn, EntityDataScope, EntityGrid, type EntityLayout, EntityReferenceKindPicker, type EntityReferenceKindPickerProps, type EntityRow, type EntitySource, type EntityTable, EntityTablePage, type EntityTablePageProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CATALOGUE, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FOOTER_WORDS, FORMULA_FUNCTIONS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FORM_NOT_HERE_LINE, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FilePicker, type FilePickerProps, type FilterPageBlock, type FooterPlacement, type FormAsked, FormBuilder, type FormBuilderProps, type FormFlow, type FormLook, FormLookFrame, type FormLookFrameProps, FormLookLogo, type FormLookView, type FormPageBlock, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaHelpAsk, type FormulaOp, Grid, GridCell, type GridContextRecord, type GridContextSnapshot, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, GuessedFieldType, type HeadingPageBlock, HistoryPanel, type HistoryPanelProps, type HostLayout, INBOX_GROUPINGS, INBOX_VIEWS, IN_MEMORY_QUEUE_REASON, ImportNotice, type ImportNoticeProps, type ImportSource, ImportWizard, type ImportWizardProps, InTableToolbar, type InboxGroup, type InboxGrouping, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LOOK_WORDS, type LabelLookup, type LinkRail, type ListPageBlock, MACHINE_IDENTITY, MANUAL_SORT, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, MOST_NEW_COLUMNS, type MainView, type MoveWritten, MyChecklistSteps, NEEDS_A_SENTENCE, NEW_COLUMN_TYPES, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewColumn, type NewColumnType, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, ObjectAction, ObjectActionContextMenuItems, ObjectActionGlyph, ObjectActionIcon, ObjectActionMenuItems, type ObjectActionMenuItemsProps, type OpenRecordsAsk, type OrganizationMember, PAGE_BLOCK_KINDS, PAGE_BLOCK_LABEL, PAGE_KIND, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PORTAL_NOT_HERE_LINE, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageBlock, type PageBlockKind, PageScreen, type PageScreenProps, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, PickOrAdd, type PickOrAddItem, type PickOrAddProps, type PickableFieldType, type PickerTable, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalLookEditor, type PortalLookEditorProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicPicturePicker, type PublicPicturePickerProps, PublicViewPage, type PublicViewPageProps, QUESTION_OPS, QUESTION_SURFACE, type QuestionAnswer, QuestionAnswerView, type QuestionGroup, type QuestionMeasure, type QuestionOp, QuestionPanel, type QuestionPanelProps, type QuestionRow, type QuestionShow, type QuestionSpec, RECORDS_GRID_ROW_PX, RECORDS_SKELETON_LAYOUTS, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, type ReasonGroup, type RecordActionHost, RecordActionMenu, type RecordActionMenuProps, type RecordActionSubject, type RecordActionsInput, RecordBody, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, type RecordMoves, type RecordPageBlock, RecordPanel, type RecordPanelProps, RecordValue, RecordsMount, type RecordsMountProps, RecordsSkeleton, type RecordsSkeletonLayout, type RecordsSkeletonProps, RecordsTableCard, type RecordsTableCardProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RefusedRow, type RelationFieldType, RelationPicker, type RelationPickerProps, type RenderTextSlot, type ResolveName, type RichTextEditProps, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAVE_TO_TABLE_TYPES, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SECTIONS_UNKNOWN, SERIES_COLORS, SHARE_NOT_YOURS_LINE, SIGNED_WORD, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, STORE_KEEPS_TIMELINE, STORE_KEPT_LAYOUTS, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, SaveToTable, type SaveToTableProps, type SaveToTableSource, type SavedDashboard, type SavedForm, type SavedQuestion, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, ShowListsToggle, type ShownViewReport, SignBlock, type SignBlockProps, SignaturePad, SignatureValue, type SnoozeChoice, type SortStateAction, SortStateControl, type SortStateControlProps, StageRulesSection, type StageRulesSectionProps, type StandardColumn, StandardRecordForm, type StandardRecordFormProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NAME_MAX, TABLE_NOT_REACHABLE, TABLE_TOOLBAR_ROW_CLASS, THE_SYSTEM, TIMELINE_ZOOMS, TableActionHost, TableAsk, type TableAskProps, TableDetails, TableDuplicateDialog, type TableDuplicateDialogProps, TableFoundationSwitch, type TableLane, type TableOpening, TablePage, type TablePageActionHost, type TablePageHeaderChrome, type TablePageProps, TablePageSkeleton, type TablePageSource, type TablePickerEntries, type TablePickerEntry, TableReferenceDialog, TableRenameDialog, TableRestoreRefused, type TableRights, TableSettings, type TableSettingsAgent, type TableSettingsProps, type TableSettingsSnapshot, TableShape, TableToolbarSlotContext, TablesHome, type TablesHomeProps, TemplatePreview, type TemplatePreviewProps, type TextPageBlock, type ThroughCondition, type TimelineSettings, TimelineView, type TimelineViewProps, type TimelineZoom, type TitleRepeats, type TrackedVersion, UNREAD_RECORD_LABEL, type UseSystemTableState, VIEW_ADDRESS_KEYS, VIEW_KEYS, VIEW_LAYOUTS, VIEW_NEEDS, VIEW_NOT_SAVED_YET, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, type ViewAddressSort, type ViewAddressState, ViewBar, type ViewBarProps, type ViewKeyDeclaration, type ViewKeyLayout, type ViewKeyWriter, type ViewLayout, type ViewLook, type ViewNeed, type ViewNeedKind, ViewNeeds, type ViewNeedsProps, type ViewSettings, type ViewSettingsPatch, type ViewSort, type ViewSortKey, ViewSwitcher, type ViewSwitcherProps, type VisibilityLane, WITHHELD_RECORD_LABEL, WITHHELD_WORD, WORK_APPROVAL_STATES, WORK_APPROVAL_STATE_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_GROUP_LABEL, WORK_INBOX_KIND_LABEL, WhatYouMayDo, WhereItLives, type WhereItLivesProps, type WhoChanged, WhoChangedSource, WithheldValue, actionForAgent, actorBadge, actorWords, addDays, announceTableArchived, applyLook, archiveConfirmSentence, archivedRowLine, asRefusal, askExampleFor, askQuestion, askableFields, blockFromSpec, bodyFieldOf, bodyForReading, bodyFromKeys, calendarDayLabel, calendarDayOf, cameFromLine, cardTitleField, cardWords, carriesTimeOfDay, cellState, choiceAddition, choiceAskSentence, choiceListPatch, choiceNudgeOf, choiceRowsFrom, chooseSurface, codeDependsRefusal, colorFromTheValue, columnDeclarationFor, columnForField, columnFromName, columnNamesFrom, columnsFrom, combineFilter, combineRows, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, copyNameFor, currencyCodeFor, customFieldRequestProblems, dashboardDeclareArgs, dashboardFromSummary, dateFormatFor, dateText, dayAt, dayKeyOf, daysBetween, declareView, defaultViewOf, descriptionPatch, designatedLayoutOf, drawnBelowOnPage, drawnSignatureOf, drillDimensionsOf, drillMeasuresOf, drillPathsOf, drillWhere, duplicateProgressWords, editorKindFor, ensureSystemTable, entityCellValue, entityChoiceColumns, entityNameColumn, entityReferenceSpec, entityShownColumns, entityTableColumns, entityTitleColumn, entityValueText, envelopeFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, fieldsForNewColumns, filterTargets, flatWhere, footerOf, formDeclareArgs, formFromSummary, formLookDocument, formLookFromDocument, formLookView, formPresentation, formatForField, freeColumnName, freshFormName, gridContextKey, gridContextSnapshot, groupInbox, groupLabel, groupReasons, groupableFields, handOrderLine, handOrderSortState, hasTimePart, hintForAPerson, hintIsMachineIdentity, idsOf, isChoiceAddition, isDateField, isEngineerText, isFoundationTable, isId, isKeptTable, isMachineIdentity, isPage, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, isValueSet, isViewAddressEmpty, keepLook, keptByTheApp, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, lookDiffers, lookDocument, lookFromDocument, lookPart, looksLikeId, machineIdentityIn, mayNotRestoreLine, measurableFields, memberName, moveRecordValue, newQuestion, nextInWords, nextSummaryAt, notAChoiceSentence, onlyCandidate, openingRail, openingView, packOverlaps, pageBlocksOf, pagePresentation, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pickableTypeOf, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, questionArchive, questionFromDefinition, questionFromWords, questionSave, questionsOf, railFromParam, readLooks, recordActions, recordLink, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, refusedFileName, refusedRowsCsv, renderValue, rescheduledValue, resolveTableStyle, revokeConsequence, rowActionFromAgent, rowLabelChoices, rowName, rowNameIn, runToNotice, sameRecordLikely, sameViewAddress, saveTableDescription, saveToViewPlan, saveViewPatch, scalarText, seedIsSatisfied, shapesOfSource, shareUnavailableReason, signatureFileIn, signatureFileOf, signatureWords, singularNoun, skeletonLayoutFor, snoozeChoices, specFromBlock, standardTokenOf, starterPageBlocks, stepFromAgent, storeDecidesRights, storeKeepsLayout, storePublishesKind, styleFromDecorations, submissionStamp, surfaceChosen, tableName, tableNameProblem, tableOpening, tablePickerEntries, tableReferenceChoices, tableRightsAt, titleRepeats, unknownRailLine, unknownViewLine, unreadableKeys, useCanShare, useChoiceNudge, useDrill, useDrillAnswers, useDrillDefinition, useEmbedHandshake, useEnrichCells, useEntityTable, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, usePickerTables, useRecordActionHost, useRecordLabels, useRecordMoves, useRecordRights, useRecordsUi, useRowColorBy, useRowRights, useSystemTable, useTableRights, useTableToolbarSlot, useTemplatePreview, useViewRecords, useWhoChanged, viewActions, viewAddressFromParams, viewAddressToParams, viewDocument, viewFromRow, viewKeysFor, viewNeedFor, viewPatchDocument, viewSettings, viewSettingsFor, viewSettingsPatch, visibilityLaneFor, whatIsMissing, whatIsMissingForEntityReference, whatTheChoiceListIsMissing, whenWords, whyNotAskable, withheldNoticeOf, withheldSentence, withoutAddition, wordsList };