@ai-matrx/records-ui 0.60.0 → 0.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, ComponentType, RefObject } from 'react';
3
3
  import * as _ai_matrx_records from '@ai-matrx/records';
4
- import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, WriteConflict, ParityFieldType, NewFieldDeclaration, RuleExpression, ValueEnvelope, WorkInboxKind, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
4
+ import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, RelationDisplay, WriteConflict, ParityFieldType, NewFieldDeclaration, RuleExpression, ValueEnvelope, WorkInboxKind, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
5
5
  import { Uuid, Field as Field$1, ReadRow as ReadRow$1 } from '@ai-matrx/records/react';
6
6
  import { RecordsClient } from '@ai-matrx/records/core';
7
7
  import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
@@ -601,8 +601,58 @@ declare function tableName(table: Table): string;
601
601
  * tells a person nothing and looks like a bug.
602
602
  */
603
603
  declare function recordName(document: RecordDocument | undefined, titleKey?: string | null, fallback?: string): string;
604
+ /**
605
+ * Is this string the store's id for something, rather than words a person wrote?
606
+ *
607
+ * The same question `custom._card_words` asks on the database, with the same regex, so the
608
+ * screen and the store agree about what is a name (TAILS-2, 2026-09-21).
609
+ */
610
+ declare function looksLikeId(value: unknown): boolean;
604
611
  /** The same question for a row the read door returned. */
605
612
  declare function rowName(row: ReadRow | undefined, titleKey?: string | null, fallback?: string): string;
613
+ /**
614
+ * WHAT A RELATION CHIP SAYS WHEN THE RECORD IT POINTS AT IS NOT YOURS.
615
+ *
616
+ * A relation joins two records in two tables, and holding one end says nothing
617
+ * about the other: a Job shared with you may point at a Client nobody shared.
618
+ * The chip then has three possible answers and only one of them is honest —
619
+ * the target's TITLE is a leak, a bare id is a bug with a hex number in it, and
620
+ * a permanent "Loading…" is a lie that never resolves.
621
+ *
622
+ * This is the SAME sentence `platform.relation_withheld_label()` answers on the
623
+ * database, word for word, so a person reads one wording whether the screen or
624
+ * the store worked it out. Changing it changes both (RELATION-DECLARE,
625
+ * 2026-09-20).
626
+ */
627
+ declare const WITHHELD_RECORD_LABEL = "A record you have not been given access to";
628
+
629
+ /** What a person has chosen: the table, and optionally which of its columns to show. */
630
+ interface ReferenceChoice {
631
+ /** The Table whose records this column offers. `""` until one is picked. */
632
+ targetTableId: Uuid$1 | "";
633
+ /** Which of that Table's columns to show. `null` = the Table's own reference column. */
634
+ display: RelationDisplay | null;
635
+ }
636
+ interface ReferenceBuilderProps {
637
+ /** The Table the column being built lives on, so "this table" can be marked. */
638
+ tableId: Uuid$1;
639
+ value: ReferenceChoice;
640
+ onChange: (next: ReferenceChoice) => void;
641
+ /**
642
+ * A Person or File column points at a kernel Table the person does not choose.
643
+ * The target picker is then not shown — but which columns to display still is,
644
+ * because that half is theirs either way.
645
+ */
646
+ lockTarget?: boolean | undefined;
647
+ className?: string | undefined;
648
+ }
649
+ /**
650
+ * The client mirror of `custom._words_for`'s display arm, for the PREVIEW only.
651
+ * Same order, same blank-dropping, same refusal to print an id — a preview that
652
+ * disagreed with the store about what a chip says would be worse than none.
653
+ */
654
+ declare function previewWords(document: Record<string, unknown> | undefined, display: RelationDisplay | null, titleField: string | null): string;
655
+ declare function ReferenceBuilder({ tableId, value, onChange, lockTarget, className, }: ReferenceBuilderProps): react.JSX.Element;
606
656
 
607
657
  interface PersonPickerProps {
608
658
  field: Field;
@@ -1277,6 +1327,13 @@ declare function RecordChip({ title, onRemove, className, }: {
1277
1327
 
1278
1328
  /** Answers "what is the record with this id called", for one Field's values. */
1279
1329
  type LabelLookup = (field: Field$1, id: string) => string | null;
1330
+ /**
1331
+ * HOW LONG A CELL MAY SAY "Loading…" BEFORE IT HAS TO SAY WHAT IT IS WAITING
1332
+ * FOR. One second is the span at which a person stops reading a word as "this
1333
+ * is about to happen" and starts reading it as "this is stuck" — the same line
1334
+ * Nielsen's response-time work draws and the one Linear and Stripe design to.
1335
+ */
1336
+ declare const SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS = 1000;
1280
1337
  /** Which ids a Field's stored value refers to. */
1281
1338
  declare function idsOf(value: unknown): string[];
1282
1339
  declare function isId(value: unknown): boolean;
@@ -1291,10 +1348,16 @@ declare function RecordLabelProvider({ children }: {
1291
1348
  * per cell, and it is why a grid of 200 rows asks the store twice.
1292
1349
  */
1293
1350
  declare function useRecordLabels(fields: readonly Field$1[] | undefined): LabelLookup;
1351
+ /**
1352
+ * WHAT THIS COLUMN IS STILL WAITING FOR, or null while "Loading…" is still an
1353
+ * honest word. A cell draws this INSTEAD of "Loading…" once the resolver has
1354
+ * been looking for a second — see `SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS`.
1355
+ */
1356
+ declare function useLabelWait(field: Field$1 | undefined): string | null;
1294
1357
 
1295
1358
  /** The envelope for one key, when the document carries one. */
1296
1359
  declare function envelopeFor(document: RecordDocument | undefined, key: string): ValueEnvelope | undefined;
1297
- declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup): react.JSX.Element;
1360
+ declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup, stillWaitingFor?: string | null): react.JSX.Element;
1298
1361
  /**
1299
1362
  * The text of one scalar, with the Field's UNIT and FORMAT applied — FLD-N-1
1300
1363
  * says both change the MEANING — and with an id resolved to the NAME of the
@@ -1305,7 +1368,15 @@ declare function renderValue(field: Field, value: unknown, document?: RecordDocu
1305
1368
  * reads like a value, and the 19 September verdict found it in choice cells,
1306
1369
  * relation cells and as every Kanban column heading.
1307
1370
  */
1308
- declare function scalarText(field: Field, value: unknown, labels?: LabelLookup): string;
1371
+ declare function scalarText(field: Field, value: unknown, labels?: LabelLookup,
1372
+ /**
1373
+ * WHAT THIS COLUMN IS WAITING FOR, once it has been looking long enough to owe
1374
+ * a sentence (`useLabelWait`). "Loading…" is honest for a moment and a lie with
1375
+ * a spinner on it after that: VERIFIER-8 MEDIUM-1 watched a whole relation
1376
+ * column say it for 10-13 seconds while the rest of the grid sat readable
1377
+ * behind it, and nothing on screen said what it was waiting for.
1378
+ */
1379
+ stillWaitingFor?: string | null): string;
1309
1380
  /** The provenance badge a value carries when the store interned a source for it (SCR-27). */
1310
1381
  declare function ProvenanceBadge({ document, fieldKey }: {
1311
1382
  document: RecordDocument | undefined;
@@ -1511,6 +1582,37 @@ declare const VIEW_TABLE: SystemTableSpec;
1511
1582
  * screen and any agent writing a view spec must agree about what is offerable.
1512
1583
  */
1513
1584
  declare const LAYOUT_FIELD_KIND: Record<ViewLayout, "choice" | "date" | null>;
1585
+ /**
1586
+ * ─────────────────────────────────────────────────────────────────────────────
1587
+ * WHICH VIEW A LINK NAMES — the address bar as a first-class control.
1588
+ *
1589
+ * 🚨 THE DEFECT THIS CLOSES (lane FRONT-DOOR, 2026-09-21; VERIFIER-8 HIGH-2).
1590
+ * `/data-v2/<table>?view=kanban` returned 200 and rendered THE GRID. The
1591
+ * switcher was there, the four buttons worked, and the parameter was read by
1592
+ * nobody — so a person who bookmarked a board, or sent one to a colleague, got
1593
+ * a grid, and nothing on the screen said the view had been dropped. A link that
1594
+ * does not land is the inbox-link defect (`activeRecordId`) and the dashboard
1595
+ * defect (`activeDashboardId`) for the third time, so this is the same shape of
1596
+ * fix: the URL names it, the page opens on it, and the URL FOLLOWS the person
1597
+ * when they pick another.
1598
+ *
1599
+ * The dashboards are a fifth value and not a special case: to the person, "the
1600
+ * dashboard" is one of the ways to look at this table, and a link to it has to
1601
+ * work like a link to the board.
1602
+ */
1603
+ declare const PAGE_VIEWS: readonly ["grid", "kanban", "calendar", "gallery", "dashboards"];
1604
+ type PageView = (typeof PAGE_VIEWS)[number];
1605
+ declare const PAGE_VIEW_LABEL: Record<PageView, string>;
1606
+ /**
1607
+ * What a `?view=` value means, or `null` when it means nothing here.
1608
+ *
1609
+ * `null` is NOT "show the grid": the caller is expected to say that the link
1610
+ * named something this table has no view for, because silently substituting a
1611
+ * different view is exactly the defect above wearing a parser.
1612
+ */
1613
+ declare function pageViewFromParam(raw: string | null | undefined): PageView | null;
1614
+ /** The sentence a link that named a view nobody has says. Never silent. */
1615
+ declare function unknownViewLine(raw: string): string;
1514
1616
  /** The one sentence a layout says when the table holds no Field it could use. */
1515
1617
  declare const LAYOUT_NO_FIELD: Record<ViewLayout, string>;
1516
1618
  /** The spec as the one document the store holds. */
@@ -2576,6 +2678,27 @@ interface TablePageProps {
2576
2678
  * Absent, nothing changes: the page opens exactly as it did.
2577
2679
  */
2578
2680
  activeRecordId?: Uuid$1 | null | undefined;
2681
+ /**
2682
+ * WHICH VIEW THE ADDRESS NAMES — `grid`, `kanban`, `calendar`, `gallery` or
2683
+ * `dashboards`, exactly as the host read it out of `?view=`.
2684
+ *
2685
+ * 🚨 THE DEAD LINK THIS CLOSES (lane FRONT-DOOR, 2026-09-21; VERIFIER-8
2686
+ * HIGH-2). `?view=kanban` returned 200 and rendered the grid: the parameter
2687
+ * was read by nobody, so a bookmarked or shared board was a grid and nothing
2688
+ * on screen said so. It is the raw string and not a parsed value because a
2689
+ * value this page does not know is a thing the PERSON has to be told about
2690
+ * (`unknownViewLine`), not a parse failure to swallow.
2691
+ *
2692
+ * Absent, the page opens exactly as it did: on the saved view's own layout.
2693
+ */
2694
+ activeView?: string | null | undefined;
2695
+ /**
2696
+ * THE ADDRESS FOLLOWS THE PERSON. Called with the view they just picked — a
2697
+ * layout button or the Dashboards button — so the host can put it in the URL.
2698
+ * Half a deep link is a link that works when you arrive and lies when you
2699
+ * copy it out of the address bar afterwards.
2700
+ */
2701
+ onViewChanged?: ((view: PageView) => void) | undefined;
2579
2702
  className?: string | undefined;
2580
2703
  }
2581
2704
  /**
@@ -2673,7 +2796,36 @@ declare function chooseSurface(current: Surface, pressed: SurfacePress): Surface
2673
2796
  * and the pressed look come from one answer rather than nine independent guesses.
2674
2797
  */
2675
2798
  declare function surfaceChosen(current: Surface, asking: SurfacePress): boolean;
2676
- declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, className, }: TablePageProps): react.JSX.Element;
2799
+ /**
2800
+ * WHAT THE PAGE OPENS SHOWING — one pure function, so the dead link can be shown failing.
2801
+ * See `TablePageProps.activeRecordId` for the defect it closes.
2802
+ */
2803
+ declare function openingRail(activeRecordId: Uuid$1 | null | undefined): {
2804
+ rail: "record" | "none";
2805
+ record: Uuid$1 | null;
2806
+ };
2807
+ /**
2808
+ * WHICH VIEW A LINK OPENS — one pure function, so the dead link can be shown
2809
+ * failing. See `TablePageProps.activeView` for the defect it closes.
2810
+ *
2811
+ * Three answers, and the third is the one that stops it being a silent drop:
2812
+ * · `main` — the records or the dashboards;
2813
+ * · `layout` — the layout the link named, or null for "whatever the saved
2814
+ * view says", which is the no-parameter case;
2815
+ * · `unknown` — the word the link used when this page has no view by that
2816
+ * name. It is RETURNED rather than swallowed, because the
2817
+ * person has to be told their link asked for something that
2818
+ * does not exist here.
2819
+ *
2820
+ * A `?dashboard=<id>` with no `?view=` still opens the canvas, because that
2821
+ * link predates this one and must keep working.
2822
+ */
2823
+ declare function openingView(activeView: string | null | undefined, activeDashboardId: Uuid$1 | null | undefined): {
2824
+ main: MainView;
2825
+ layout: ViewLayout | null;
2826
+ unknown: string | null;
2827
+ };
2828
+ declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, activeView, onViewChanged, className, }: TablePageProps): react.JSX.Element;
2677
2829
 
2678
2830
  /** What the roster can tell us about a user id. `null` when it cannot. */
2679
2831
  type ResolveName = (userId: Uuid$1) => string | null;
@@ -2851,4 +3003,4 @@ interface PipelineBoardProps {
2851
3003
  }
2852
3004
  declare function PipelineBoard({ tableId, rows, measure, onMeasureChange, onOpenRecord, onMoved, className, }: PipelineBoardProps): react.JSX.Element;
2853
3005
 
2854
- export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BookingBuilder, type BookingBuilderProps, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, type Capability, 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 ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, 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 NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PARITY_LABEL, PARITY_MADE_OF, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, SAVED_VIEWS_UNAVAILABLE, SERIES_COLORS, SOMEBODY, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, machineIdentityIn, memberName, nextInWords, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, publiclyAnswerable, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };
3006
+ export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BookingBuilder, type BookingBuilderProps, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, type Capability, 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 ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, 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 NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, SAVED_VIEWS_UNAVAILABLE, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SERIES_COLORS, SOMEBODY, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, WITHHELD_RECORD_LABEL, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, looksLikeId, machineIdentityIn, memberName, nextInWords, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, unknownViewLine, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, ComponentType, RefObject } from 'react';
3
3
  import * as _ai_matrx_records from '@ai-matrx/records';
4
- import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, WriteConflict, ParityFieldType, NewFieldDeclaration, RuleExpression, ValueEnvelope, WorkInboxKind, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
4
+ import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, RelationDisplay, WriteConflict, ParityFieldType, NewFieldDeclaration, RuleExpression, ValueEnvelope, WorkInboxKind, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
5
5
  import { Uuid, Field as Field$1, ReadRow as ReadRow$1 } from '@ai-matrx/records/react';
6
6
  import { RecordsClient } from '@ai-matrx/records/core';
7
7
  import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
@@ -601,8 +601,58 @@ declare function tableName(table: Table): string;
601
601
  * tells a person nothing and looks like a bug.
602
602
  */
603
603
  declare function recordName(document: RecordDocument | undefined, titleKey?: string | null, fallback?: string): string;
604
+ /**
605
+ * Is this string the store's id for something, rather than words a person wrote?
606
+ *
607
+ * The same question `custom._card_words` asks on the database, with the same regex, so the
608
+ * screen and the store agree about what is a name (TAILS-2, 2026-09-21).
609
+ */
610
+ declare function looksLikeId(value: unknown): boolean;
604
611
  /** The same question for a row the read door returned. */
605
612
  declare function rowName(row: ReadRow | undefined, titleKey?: string | null, fallback?: string): string;
613
+ /**
614
+ * WHAT A RELATION CHIP SAYS WHEN THE RECORD IT POINTS AT IS NOT YOURS.
615
+ *
616
+ * A relation joins two records in two tables, and holding one end says nothing
617
+ * about the other: a Job shared with you may point at a Client nobody shared.
618
+ * The chip then has three possible answers and only one of them is honest —
619
+ * the target's TITLE is a leak, a bare id is a bug with a hex number in it, and
620
+ * a permanent "Loading…" is a lie that never resolves.
621
+ *
622
+ * This is the SAME sentence `platform.relation_withheld_label()` answers on the
623
+ * database, word for word, so a person reads one wording whether the screen or
624
+ * the store worked it out. Changing it changes both (RELATION-DECLARE,
625
+ * 2026-09-20).
626
+ */
627
+ declare const WITHHELD_RECORD_LABEL = "A record you have not been given access to";
628
+
629
+ /** What a person has chosen: the table, and optionally which of its columns to show. */
630
+ interface ReferenceChoice {
631
+ /** The Table whose records this column offers. `""` until one is picked. */
632
+ targetTableId: Uuid$1 | "";
633
+ /** Which of that Table's columns to show. `null` = the Table's own reference column. */
634
+ display: RelationDisplay | null;
635
+ }
636
+ interface ReferenceBuilderProps {
637
+ /** The Table the column being built lives on, so "this table" can be marked. */
638
+ tableId: Uuid$1;
639
+ value: ReferenceChoice;
640
+ onChange: (next: ReferenceChoice) => void;
641
+ /**
642
+ * A Person or File column points at a kernel Table the person does not choose.
643
+ * The target picker is then not shown — but which columns to display still is,
644
+ * because that half is theirs either way.
645
+ */
646
+ lockTarget?: boolean | undefined;
647
+ className?: string | undefined;
648
+ }
649
+ /**
650
+ * The client mirror of `custom._words_for`'s display arm, for the PREVIEW only.
651
+ * Same order, same blank-dropping, same refusal to print an id — a preview that
652
+ * disagreed with the store about what a chip says would be worse than none.
653
+ */
654
+ declare function previewWords(document: Record<string, unknown> | undefined, display: RelationDisplay | null, titleField: string | null): string;
655
+ declare function ReferenceBuilder({ tableId, value, onChange, lockTarget, className, }: ReferenceBuilderProps): react.JSX.Element;
606
656
 
607
657
  interface PersonPickerProps {
608
658
  field: Field;
@@ -1277,6 +1327,13 @@ declare function RecordChip({ title, onRemove, className, }: {
1277
1327
 
1278
1328
  /** Answers "what is the record with this id called", for one Field's values. */
1279
1329
  type LabelLookup = (field: Field$1, id: string) => string | null;
1330
+ /**
1331
+ * HOW LONG A CELL MAY SAY "Loading…" BEFORE IT HAS TO SAY WHAT IT IS WAITING
1332
+ * FOR. One second is the span at which a person stops reading a word as "this
1333
+ * is about to happen" and starts reading it as "this is stuck" — the same line
1334
+ * Nielsen's response-time work draws and the one Linear and Stripe design to.
1335
+ */
1336
+ declare const SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS = 1000;
1280
1337
  /** Which ids a Field's stored value refers to. */
1281
1338
  declare function idsOf(value: unknown): string[];
1282
1339
  declare function isId(value: unknown): boolean;
@@ -1291,10 +1348,16 @@ declare function RecordLabelProvider({ children }: {
1291
1348
  * per cell, and it is why a grid of 200 rows asks the store twice.
1292
1349
  */
1293
1350
  declare function useRecordLabels(fields: readonly Field$1[] | undefined): LabelLookup;
1351
+ /**
1352
+ * WHAT THIS COLUMN IS STILL WAITING FOR, or null while "Loading…" is still an
1353
+ * honest word. A cell draws this INSTEAD of "Loading…" once the resolver has
1354
+ * been looking for a second — see `SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS`.
1355
+ */
1356
+ declare function useLabelWait(field: Field$1 | undefined): string | null;
1294
1357
 
1295
1358
  /** The envelope for one key, when the document carries one. */
1296
1359
  declare function envelopeFor(document: RecordDocument | undefined, key: string): ValueEnvelope | undefined;
1297
- declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup): react.JSX.Element;
1360
+ declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup, stillWaitingFor?: string | null): react.JSX.Element;
1298
1361
  /**
1299
1362
  * The text of one scalar, with the Field's UNIT and FORMAT applied — FLD-N-1
1300
1363
  * says both change the MEANING — and with an id resolved to the NAME of the
@@ -1305,7 +1368,15 @@ declare function renderValue(field: Field, value: unknown, document?: RecordDocu
1305
1368
  * reads like a value, and the 19 September verdict found it in choice cells,
1306
1369
  * relation cells and as every Kanban column heading.
1307
1370
  */
1308
- declare function scalarText(field: Field, value: unknown, labels?: LabelLookup): string;
1371
+ declare function scalarText(field: Field, value: unknown, labels?: LabelLookup,
1372
+ /**
1373
+ * WHAT THIS COLUMN IS WAITING FOR, once it has been looking long enough to owe
1374
+ * a sentence (`useLabelWait`). "Loading…" is honest for a moment and a lie with
1375
+ * a spinner on it after that: VERIFIER-8 MEDIUM-1 watched a whole relation
1376
+ * column say it for 10-13 seconds while the rest of the grid sat readable
1377
+ * behind it, and nothing on screen said what it was waiting for.
1378
+ */
1379
+ stillWaitingFor?: string | null): string;
1309
1380
  /** The provenance badge a value carries when the store interned a source for it (SCR-27). */
1310
1381
  declare function ProvenanceBadge({ document, fieldKey }: {
1311
1382
  document: RecordDocument | undefined;
@@ -1511,6 +1582,37 @@ declare const VIEW_TABLE: SystemTableSpec;
1511
1582
  * screen and any agent writing a view spec must agree about what is offerable.
1512
1583
  */
1513
1584
  declare const LAYOUT_FIELD_KIND: Record<ViewLayout, "choice" | "date" | null>;
1585
+ /**
1586
+ * ─────────────────────────────────────────────────────────────────────────────
1587
+ * WHICH VIEW A LINK NAMES — the address bar as a first-class control.
1588
+ *
1589
+ * 🚨 THE DEFECT THIS CLOSES (lane FRONT-DOOR, 2026-09-21; VERIFIER-8 HIGH-2).
1590
+ * `/data-v2/<table>?view=kanban` returned 200 and rendered THE GRID. The
1591
+ * switcher was there, the four buttons worked, and the parameter was read by
1592
+ * nobody — so a person who bookmarked a board, or sent one to a colleague, got
1593
+ * a grid, and nothing on the screen said the view had been dropped. A link that
1594
+ * does not land is the inbox-link defect (`activeRecordId`) and the dashboard
1595
+ * defect (`activeDashboardId`) for the third time, so this is the same shape of
1596
+ * fix: the URL names it, the page opens on it, and the URL FOLLOWS the person
1597
+ * when they pick another.
1598
+ *
1599
+ * The dashboards are a fifth value and not a special case: to the person, "the
1600
+ * dashboard" is one of the ways to look at this table, and a link to it has to
1601
+ * work like a link to the board.
1602
+ */
1603
+ declare const PAGE_VIEWS: readonly ["grid", "kanban", "calendar", "gallery", "dashboards"];
1604
+ type PageView = (typeof PAGE_VIEWS)[number];
1605
+ declare const PAGE_VIEW_LABEL: Record<PageView, string>;
1606
+ /**
1607
+ * What a `?view=` value means, or `null` when it means nothing here.
1608
+ *
1609
+ * `null` is NOT "show the grid": the caller is expected to say that the link
1610
+ * named something this table has no view for, because silently substituting a
1611
+ * different view is exactly the defect above wearing a parser.
1612
+ */
1613
+ declare function pageViewFromParam(raw: string | null | undefined): PageView | null;
1614
+ /** The sentence a link that named a view nobody has says. Never silent. */
1615
+ declare function unknownViewLine(raw: string): string;
1514
1616
  /** The one sentence a layout says when the table holds no Field it could use. */
1515
1617
  declare const LAYOUT_NO_FIELD: Record<ViewLayout, string>;
1516
1618
  /** The spec as the one document the store holds. */
@@ -2576,6 +2678,27 @@ interface TablePageProps {
2576
2678
  * Absent, nothing changes: the page opens exactly as it did.
2577
2679
  */
2578
2680
  activeRecordId?: Uuid$1 | null | undefined;
2681
+ /**
2682
+ * WHICH VIEW THE ADDRESS NAMES — `grid`, `kanban`, `calendar`, `gallery` or
2683
+ * `dashboards`, exactly as the host read it out of `?view=`.
2684
+ *
2685
+ * 🚨 THE DEAD LINK THIS CLOSES (lane FRONT-DOOR, 2026-09-21; VERIFIER-8
2686
+ * HIGH-2). `?view=kanban` returned 200 and rendered the grid: the parameter
2687
+ * was read by nobody, so a bookmarked or shared board was a grid and nothing
2688
+ * on screen said so. It is the raw string and not a parsed value because a
2689
+ * value this page does not know is a thing the PERSON has to be told about
2690
+ * (`unknownViewLine`), not a parse failure to swallow.
2691
+ *
2692
+ * Absent, the page opens exactly as it did: on the saved view's own layout.
2693
+ */
2694
+ activeView?: string | null | undefined;
2695
+ /**
2696
+ * THE ADDRESS FOLLOWS THE PERSON. Called with the view they just picked — a
2697
+ * layout button or the Dashboards button — so the host can put it in the URL.
2698
+ * Half a deep link is a link that works when you arrive and lies when you
2699
+ * copy it out of the address bar afterwards.
2700
+ */
2701
+ onViewChanged?: ((view: PageView) => void) | undefined;
2579
2702
  className?: string | undefined;
2580
2703
  }
2581
2704
  /**
@@ -2673,7 +2796,36 @@ declare function chooseSurface(current: Surface, pressed: SurfacePress): Surface
2673
2796
  * and the pressed look come from one answer rather than nine independent guesses.
2674
2797
  */
2675
2798
  declare function surfaceChosen(current: Surface, asking: SurfacePress): boolean;
2676
- declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, className, }: TablePageProps): react.JSX.Element;
2799
+ /**
2800
+ * WHAT THE PAGE OPENS SHOWING — one pure function, so the dead link can be shown failing.
2801
+ * See `TablePageProps.activeRecordId` for the defect it closes.
2802
+ */
2803
+ declare function openingRail(activeRecordId: Uuid$1 | null | undefined): {
2804
+ rail: "record" | "none";
2805
+ record: Uuid$1 | null;
2806
+ };
2807
+ /**
2808
+ * WHICH VIEW A LINK OPENS — one pure function, so the dead link can be shown
2809
+ * failing. See `TablePageProps.activeView` for the defect it closes.
2810
+ *
2811
+ * Three answers, and the third is the one that stops it being a silent drop:
2812
+ * · `main` — the records or the dashboards;
2813
+ * · `layout` — the layout the link named, or null for "whatever the saved
2814
+ * view says", which is the no-parameter case;
2815
+ * · `unknown` — the word the link used when this page has no view by that
2816
+ * name. It is RETURNED rather than swallowed, because the
2817
+ * person has to be told their link asked for something that
2818
+ * does not exist here.
2819
+ *
2820
+ * A `?dashboard=<id>` with no `?view=` still opens the canvas, because that
2821
+ * link predates this one and must keep working.
2822
+ */
2823
+ declare function openingView(activeView: string | null | undefined, activeDashboardId: Uuid$1 | null | undefined): {
2824
+ main: MainView;
2825
+ layout: ViewLayout | null;
2826
+ unknown: string | null;
2827
+ };
2828
+ declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, activeView, onViewChanged, className, }: TablePageProps): react.JSX.Element;
2677
2829
 
2678
2830
  /** What the roster can tell us about a user id. `null` when it cannot. */
2679
2831
  type ResolveName = (userId: Uuid$1) => string | null;
@@ -2851,4 +3003,4 @@ interface PipelineBoardProps {
2851
3003
  }
2852
3004
  declare function PipelineBoard({ tableId, rows, measure, onMeasureChange, onOpenRecord, onMoved, className, }: PipelineBoardProps): react.JSX.Element;
2853
3005
 
2854
- export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BookingBuilder, type BookingBuilderProps, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, type Capability, 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 ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, 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 NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PARITY_LABEL, PARITY_MADE_OF, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, SAVED_VIEWS_UNAVAILABLE, SERIES_COLORS, SOMEBODY, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, machineIdentityIn, memberName, nextInWords, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, publiclyAnswerable, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };
3006
+ export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BookingBuilder, type BookingBuilderProps, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, type Capability, 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 ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, 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 NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, SAVED_VIEWS_UNAVAILABLE, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SERIES_COLORS, SOMEBODY, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, WITHHELD_RECORD_LABEL, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, looksLikeId, machineIdentityIn, memberName, nextInWords, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, unknownViewLine, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };