@ai-matrx/records-ui 0.47.0 → 0.49.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.js CHANGED
@@ -3588,7 +3588,7 @@ function CustomFieldsSection({
3588
3588
 
3589
3589
  // src/FieldEditor.tsx
3590
3590
  import { useMemo as useMemo11, useState as useState12 } from "react";
3591
- import { useFieldMutation, useFields as useFields5, useRecords as useRecords3, useTable as useTable4, useTables } from "@ai-matrx/records/react";
3591
+ import { useFieldMutation, useFields as useFields5, useRecords as useRecords3, useRecordsClient as useRecordsClient10, useTable as useTable4, useTables } from "@ai-matrx/records/react";
3592
3592
  import {
3593
3593
  BasicInput as BasicInput4,
3594
3594
  BasicTextarea as BasicTextarea2,
@@ -3645,11 +3645,13 @@ function keyFor(label) {
3645
3645
  if (token === "") return "";
3646
3646
  return /^[a-z]/.test(token) ? token : `f_${token}`;
3647
3647
  }
3648
+ var COLUMN_DID_NOT_LAND = "The store accepted this column and the table does not have it yet. Nothing was lost \u2014 your record values are untouched \u2014 but the column is not there, so this panel is staying open. Press Save again; if it keeps happening, tell us, because the store and the table disagree and that is ours to fix.";
3648
3649
  function FieldEditor({ tableId, field, onSaved, onCancel, onRemoved, className }) {
3649
3650
  const table = useTable4(tableId);
3650
3651
  const fields = useFields5(tableId);
3651
3652
  const rights = useTableRights(table.data);
3652
3653
  const mutation = useFieldMutation();
3654
+ const client = useRecordsClient10();
3653
3655
  const [label, setLabel] = useState12(field?.label ?? "");
3654
3656
  const [type, setType] = useState12(() => startingType(field));
3655
3657
  const [required, setRequired] = useState12(field?.required ?? false);
@@ -3671,6 +3673,7 @@ function FieldEditor({ tableId, field, onSaved, onCancel, onRemoved, className }
3671
3673
  const [formulaOp, setFormulaOp] = useState12("concat");
3672
3674
  const [formulaFields, setFormulaFields] = useState12([]);
3673
3675
  const [askingToRemove, setAskingToRemove] = useState12(false);
3676
+ const [notLanded, setNotLanded] = useState12(false);
3674
3677
  const others = useMemo11(
3675
3678
  () => (fields.data ?? []).filter((f) => f.id !== field?.id),
3676
3679
  [fields.data, field?.id]
@@ -3736,7 +3739,14 @@ function FieldEditor({ tableId, field, onSaved, onCancel, onRemoved, className }
3736
3739
  ...type === "formula" ? { expr: formulaExpression(formulaOp, formulaFields) } : {}
3737
3740
  };
3738
3741
  const written = await mutation.declare({ table_id: tableId, spec });
3739
- if (written !== null) onSaved?.();
3742
+ if (written === null) return;
3743
+ const landed = await client.fields({ table_id: tableId });
3744
+ if (landed.ok && !landed.data.some((f) => f.id === written)) {
3745
+ setNotLanded(true);
3746
+ return;
3747
+ }
3748
+ setNotLanded(false);
3749
+ onSaved?.();
3740
3750
  };
3741
3751
  const remove = async () => {
3742
3752
  if (!field) return;
@@ -3920,6 +3930,7 @@ function FieldEditor({ tableId, field, onSaved, onCancel, onRemoved, className }
3920
3930
  ] }),
3921
3931
  mutation.error ? /* @__PURE__ */ jsx15(RefusalNotice, { error: mutation.error }) : null,
3922
3932
  missing ? /* @__PURE__ */ jsx15("p", { className: "text-[11px] text-destructive", children: missing }) : null,
3933
+ notLanded ? /* @__PURE__ */ jsx15("p", { className: "text-[11px] text-destructive", children: COLUMN_DID_NOT_LAND }) : null,
3923
3934
  /* @__PURE__ */ jsxs11("div", { className: "flex flex-wrap items-center gap-2", children: [
3924
3935
  /* @__PURE__ */ jsx15(
3925
3936
  Button10,
@@ -4378,17 +4389,17 @@ function TableSettings({
4378
4389
 
4379
4390
  // src/Peek.tsx
4380
4391
  import { useState as useState18 } from "react";
4381
- import { useFields as useFields8, useRecord as useRecord2, useRecordsClient as useRecordsClient12, useTable as useTable6 } from "@ai-matrx/records/react";
4392
+ import { useFields as useFields8, useRecord as useRecord2, useRecordsClient as useRecordsClient13, useTable as useTable6 } from "@ai-matrx/records/react";
4382
4393
  import { AlchemyMenu as AlchemyMenu2 } from "@ai-matrx/alchemy/react";
4383
4394
 
4384
4395
  // src/RecordChat.tsx
4385
4396
  import { useEffect as useEffect8, useMemo as useMemo12, useState as useState14 } from "react";
4386
- import { useRecordsClient as useRecordsClient10 } from "@ai-matrx/records/react";
4397
+ import { useRecordsClient as useRecordsClient11 } from "@ai-matrx/records/react";
4387
4398
  import { Skeleton as Skeleton3, cn as cn14 } from "@ai-matrx/design-system";
4388
4399
  import { jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
4389
4400
  var NO_CHAT_REASON = "No chat port is bound, so this panel is absent rather than showing a composer that goes nowhere. Bind `chat` on <RecordsUiProvider> with your host's own chat surface \u2014 in AI Matrx that is `AgentConversationColumn`, launched through a Mandate \u2014 and this panel becomes that surface with this record as its context. This package deliberately ships no second chat UI.";
4390
4401
  function RecordChat({ tableId, recordId, className }) {
4391
- const client = useRecordsClient10();
4402
+ const client = useRecordsClient11();
4392
4403
  const host = useRecordsUi();
4393
4404
  const [scope, setScope] = useState14(null);
4394
4405
  const [error, setError] = useState14(null);
@@ -4520,7 +4531,7 @@ import { Button as Button12, Separator as Separator5, cn as cn15 } from "@ai-mat
4520
4531
 
4521
4532
  // src/systemTable.ts
4522
4533
  import { useEffect as useEffect9, useMemo as useMemo13, useState as useState15 } from "react";
4523
- import { useRecordsClient as useRecordsClient11 } from "@ai-matrx/records/react";
4534
+ import { useRecordsClient as useRecordsClient12 } from "@ai-matrx/records/react";
4524
4535
  var inFlight = /* @__PURE__ */ new Map();
4525
4536
  async function ensureSystemTable(client, spec) {
4526
4537
  const cacheKey = `${client.config.organizationId}:${spec.slug}`;
@@ -4648,7 +4659,7 @@ async function declare(client, spec) {
4648
4659
  return { ok: true, data: table.data };
4649
4660
  }
4650
4661
  function useSystemTable(spec) {
4651
- const client = useRecordsClient11();
4662
+ const client = useRecordsClient12();
4652
4663
  const [state, setState] = useState15({ tableId: null, loading: true, error: null });
4653
4664
  const slug = spec.slug;
4654
4665
  const stable = useMemo13(() => spec, [slug]);
@@ -4668,7 +4679,7 @@ function useSystemTable(spec) {
4668
4679
  return state;
4669
4680
  }
4670
4681
  function useRecordVersion(recordId) {
4671
- const client = useRecordsClient11();
4682
+ const client = useRecordsClient12();
4672
4683
  const [version, setVersion] = useState15(null);
4673
4684
  useEffect9(() => {
4674
4685
  let cancelled = false;
@@ -4891,7 +4902,7 @@ function Peek({ tableId, recordId, onClose, className }) {
4891
4902
  const record = useRecord2(recordId, true);
4892
4903
  const may = useRecordRights(recordId);
4893
4904
  const host = useRecordsUi();
4894
- const organizationId = useRecordsClient12().config.organizationId;
4905
+ const organizationId = useRecordsClient13().config.organizationId;
4895
4906
  const [editing, setEditing] = useState18(false);
4896
4907
  const [talking, setTalking] = useState18(false);
4897
4908
  if (record.error) return /* @__PURE__ */ jsx20(RefusalNotice, { error: record.error, className });
@@ -4964,6 +4975,10 @@ function Peek({ tableId, recordId, onClose, className }) {
4964
4975
  ] }),
4965
4976
  /* @__PURE__ */ jsx20("dd", { className: "min-w-0", children: /* @__PURE__ */ jsx20(RecordValue, { field, value: document2?.[field.key], document: document2 }) })
4966
4977
  ] }, field.id)) }),
4978
+ record.data?.computedUnavailable ? /* @__PURE__ */ jsxs16(Fragment9, { children: [
4979
+ /* @__PURE__ */ jsx20(Separator6, {}),
4980
+ /* @__PURE__ */ jsx20("p", { className: "text-muted-foreground", children: "Nothing here can say which columns the system worked out for itself: that part of the record is not readable from your seat. Everything above is the record as it stands." })
4981
+ ] }) : null,
4967
4982
  record.data?.computed?.length ? /* @__PURE__ */ jsxs16(Fragment9, { children: [
4968
4983
  /* @__PURE__ */ jsx20(Separator6, {}),
4969
4984
  /* @__PURE__ */ jsxs16("div", { className: "flex flex-col gap-1", children: [
@@ -5093,7 +5108,7 @@ function parseSorts(raw) {
5093
5108
 
5094
5109
  // src/ViewSwitcher.tsx
5095
5110
  import { useEffect as useEffect12, useMemo as useMemo16, useState as useState20 } from "react";
5096
- import { useFields as useFields10, useRecords as useRecords4, useRecordsClient as useRecordsClient14 } from "@ai-matrx/records/react";
5111
+ import { useFields as useFields10, useRecords as useRecords4, useRecordsClient as useRecordsClient15 } from "@ai-matrx/records/react";
5097
5112
  import { Button as Button16, Skeleton as Skeleton6, cn as cn18 } from "@ai-matrx/design-system";
5098
5113
 
5099
5114
  // src/Pipeline.tsx
@@ -5101,7 +5116,7 @@ import { useCallback as useCallback8, useEffect as useEffect11, useMemo as useMe
5101
5116
  import {
5102
5117
  mayDrag,
5103
5118
  useFields as useFields9,
5104
- useRecordsClient as useRecordsClient13
5119
+ useRecordsClient as useRecordsClient14
5105
5120
  } from "@ai-matrx/records/react";
5106
5121
  import { Button as Button15, Skeleton as Skeleton5, cn as cn17 } from "@ai-matrx/design-system";
5107
5122
  import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
@@ -5135,7 +5150,7 @@ function PipelineBoard({
5135
5150
  onMoved,
5136
5151
  className
5137
5152
  }) {
5138
- const client = useRecordsClient13();
5153
+ const client = useRecordsClient14();
5139
5154
  const fields = useFields9(tableId);
5140
5155
  const [definition, setDefinition] = useState19(null);
5141
5156
  const [columns, setColumns] = useState19([]);
@@ -5500,7 +5515,7 @@ function Card({
5500
5515
  // src/ViewSwitcher.tsx
5501
5516
  import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
5502
5517
  function useViewRecords(view, pageSize = 200) {
5503
- const client = useRecordsClient14();
5518
+ const client = useRecordsClient15();
5504
5519
  const table = useRecords4(view.ruleId ? null : view.subject, { pageSize });
5505
5520
  const [ruled, setRuled] = useState20({
5506
5521
  rows: [],
@@ -5620,7 +5635,7 @@ function offerableFields(all, want) {
5620
5635
  });
5621
5636
  }
5622
5637
  function useStageField(tableId) {
5623
- const client = useRecordsClient14();
5638
+ const client = useRecordsClient15();
5624
5639
  const [stage, setStage] = useState20({
5625
5640
  asked: false,
5626
5641
  key: null
@@ -5886,7 +5901,7 @@ function Card2({
5886
5901
 
5887
5902
  // src/ViewBar.tsx
5888
5903
  import { useCallback as useCallback10, useEffect as useEffect13, useState as useState21 } from "react";
5889
- import { useRecordsClient as useRecordsClient15 } from "@ai-matrx/records/react";
5904
+ import { useRecordsClient as useRecordsClient16 } from "@ai-matrx/records/react";
5890
5905
  import { Button as Button17, Input as Input2, Skeleton as Skeleton7, cn as cn19 } from "@ai-matrx/design-system";
5891
5906
 
5892
5907
  // src/seedOnce.ts
@@ -5905,7 +5920,7 @@ import { useTable as useTable7 } from "@ai-matrx/records/react";
5905
5920
  import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
5906
5921
  var SAVED_VIEWS_UNAVAILABLE = "Saved views are not available in this organization right now, so the layout you pick here is not being kept. Everything else on this table works as usual.";
5907
5922
  function ViewBar({ tableId, activeViewId, onActiveView, seed, className }) {
5908
- const client = useRecordsClient15();
5923
+ const client = useRecordsClient16();
5909
5924
  const claimSeed = useSeedGuard();
5910
5925
  const table = useTable7(tableId);
5911
5926
  const rights = useTableRights(table.data);
@@ -6026,7 +6041,7 @@ function ViewBar({ tableId, activeViewId, onActiveView, seed, className }) {
6026
6041
 
6027
6042
  // src/ProposalRow.tsx
6028
6043
  import { useState as useState22 } from "react";
6029
- import { useRecordsClient as useRecordsClient16 } from "@ai-matrx/records/react";
6044
+ import { useRecordsClient as useRecordsClient17 } from "@ai-matrx/records/react";
6030
6045
  import { Badge as Badge6, Button as Button18, cn as cn20 } from "@ai-matrx/design-system";
6031
6046
  import { jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
6032
6047
  var ACT_WORD = {
@@ -6043,7 +6058,7 @@ function ProposalRow({
6043
6058
  onSettled,
6044
6059
  className
6045
6060
  }) {
6046
- const client = useRecordsClient16();
6061
+ const client = useRecordsClient17();
6047
6062
  const [settled, setSettled] = useState22(outcome ?? null);
6048
6063
  const [busy, setBusy] = useState22(false);
6049
6064
  const [confirming, setConfirming] = useState22(false);
@@ -6132,12 +6147,12 @@ function ProposalRow({
6132
6147
 
6133
6148
  // src/ActionInbox.tsx
6134
6149
  import { useCallback as useCallback12, useEffect as useEffect15, useMemo as useMemo18, useRef as useRef6, useState as useState24 } from "react";
6135
- import { useRecordsClient as useRecordsClient18 } from "@ai-matrx/records/react";
6150
+ import { useRecordsClient as useRecordsClient19 } from "@ai-matrx/records/react";
6136
6151
  import { Badge as Badge8, Button as Button20, Skeleton as Skeleton9, cn as cn22 } from "@ai-matrx/design-system";
6137
6152
 
6138
6153
  // src/ChecklistRunner.tsx
6139
6154
  import { useCallback as useCallback11, useEffect as useEffect14, useMemo as useMemo17, useState as useState23 } from "react";
6140
- import { useRecordsClient as useRecordsClient17, useTable as useTable8 } from "@ai-matrx/records/react";
6155
+ import { useRecordsClient as useRecordsClient18, useTable as useTable8 } from "@ai-matrx/records/react";
6141
6156
  import { Badge as Badge7, BasicInput as BasicInput5, BasicTextarea as BasicTextarea3, Button as Button19, Skeleton as Skeleton8, cn as cn21 } from "@ai-matrx/design-system";
6142
6157
  import { Fragment as Fragment10, jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
6143
6158
  var DUE_WORD = {
@@ -6164,7 +6179,7 @@ function ChecklistRunner({
6164
6179
  offerToStart,
6165
6180
  className
6166
6181
  }) {
6167
- const client = useRecordsClient17();
6182
+ const client = useRecordsClient18();
6168
6183
  const table = useTable8(tableId ?? null);
6169
6184
  const rights = useTableRights(table.data);
6170
6185
  const [runs, setRuns] = useState23(null);
@@ -6413,7 +6428,7 @@ function StepRow({
6413
6428
  );
6414
6429
  }
6415
6430
  function useMyChecklistSteps(limit = 25) {
6416
- const client = useRecordsClient17();
6431
+ const client = useRecordsClient18();
6417
6432
  const me = client.config.actor.user_id ?? null;
6418
6433
  const [steps, setSteps] = useState23([]);
6419
6434
  const [loading, setLoading] = useState23(true);
@@ -6452,7 +6467,7 @@ function useMyChecklistSteps(limit = 25) {
6452
6467
  return { steps, loading, error, refresh };
6453
6468
  }
6454
6469
  function MyChecklistSteps({ className }) {
6455
- const client = useRecordsClient17();
6470
+ const client = useRecordsClient18();
6456
6471
  const { steps, loading, error, refresh } = useMyChecklistSteps();
6457
6472
  const [busy, setBusy] = useState23(null);
6458
6473
  const [refusal, setRefusal] = useState23(null);
@@ -6491,7 +6506,7 @@ function MyChecklistSteps({ className }) {
6491
6506
  ] });
6492
6507
  }
6493
6508
  function ChecklistsPanel({ tableId, onOpenRecord, className }) {
6494
- const client = useRecordsClient17();
6509
+ const client = useRecordsClient18();
6495
6510
  const table = useTable8(tableId);
6496
6511
  const rights = useTableRights(table.data);
6497
6512
  const [templates, setTemplates] = useState23(null);
@@ -6652,7 +6667,7 @@ function ChecklistTemplateEditor({
6652
6667
  onDone,
6653
6668
  className
6654
6669
  }) {
6655
- const client = useRecordsClient17();
6670
+ const client = useRecordsClient18();
6656
6671
  const [name, setName] = useState23("");
6657
6672
  const [rows, setRows] = useState23([{ ...EMPTY_ROW }]);
6658
6673
  const [refusal, setRefusal] = useState23(null);
@@ -6875,7 +6890,7 @@ var DUE_WORD2 = {
6875
6890
  finished: "Finished"
6876
6891
  };
6877
6892
  function ActionInbox({ tableId, includeSettled = false, onOpenRecord, className }) {
6878
- const client = useRecordsClient18();
6893
+ const client = useRecordsClient19();
6879
6894
  const [items, setItems] = useState24(null);
6880
6895
  const [error, setError] = useState24(null);
6881
6896
  const [outcome, setOutcome] = useState24({});
@@ -7032,13 +7047,13 @@ function ActionInbox({ tableId, includeSettled = false, onOpenRecord, className
7032
7047
  import { useCallback as useCallback13, useEffect as useEffect16, useRef as useRef7, useState as useState25 } from "react";
7033
7048
  import {
7034
7049
  useFields as useFields11,
7035
- useRecordsClient as useRecordsClient19,
7050
+ useRecordsClient as useRecordsClient20,
7036
7051
  useTable as useTable9
7037
7052
  } from "@ai-matrx/records/react";
7038
7053
  import { Badge as Badge9, Button as Button21, Skeleton as Skeleton10, cn as cn23 } from "@ai-matrx/design-system";
7039
7054
  import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
7040
7055
  function HistoryPanel({ tableId, recordId, onAskAboutField, className }) {
7041
- const client = useRecordsClient19();
7056
+ const client = useRecordsClient20();
7042
7057
  const table = useTable9(tableId);
7043
7058
  const fields = useFields11(tableId);
7044
7059
  const rights = useTableRights(table.data);
@@ -7341,13 +7356,13 @@ function say(value, field) {
7341
7356
  import { useCallback as useCallback14, useEffect as useEffect17, useMemo as useMemo19, useRef as useRef8, useState as useState26 } from "react";
7342
7357
  import {
7343
7358
  useFields as useFields12,
7344
- useRecordsClient as useRecordsClient20,
7359
+ useRecordsClient as useRecordsClient21,
7345
7360
  useTable as useTable10
7346
7361
  } from "@ai-matrx/records/react";
7347
7362
  import { Badge as Badge10, Button as Button22, Skeleton as Skeleton11, Textarea, cn as cn24 } from "@ai-matrx/design-system";
7348
7363
  import { jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
7349
7364
  function CommentThread({ tableId, recordId, fieldKey, className }) {
7350
- const client = useRecordsClient20();
7365
+ const client = useRecordsClient21();
7351
7366
  const table = useTable10(tableId);
7352
7367
  const fields = useFields12(tableId);
7353
7368
  const host = useRecordsUi();
@@ -7584,7 +7599,7 @@ function Line({
7584
7599
  import { useCallback as useCallback15, useEffect as useEffect18, useState as useState27 } from "react";
7585
7600
  import {
7586
7601
  useFields as useFields13,
7587
- useRecordsClient as useRecordsClient21,
7602
+ useRecordsClient as useRecordsClient22,
7588
7603
  useTable as useTable11
7589
7604
  } from "@ai-matrx/records/react";
7590
7605
  import { Badge as Badge11, Button as Button23, Skeleton as Skeleton12, cn as cn25 } from "@ai-matrx/design-system";
@@ -7597,7 +7612,7 @@ function FieldHistoryPanel({
7597
7612
  onOpenRecord,
7598
7613
  className
7599
7614
  }) {
7600
- const client = useRecordsClient21();
7615
+ const client = useRecordsClient22();
7601
7616
  const table = useTable11(tableId);
7602
7617
  const fields = useFields13(tableId);
7603
7618
  const rights = useTableRights(table.data);
@@ -7810,7 +7825,7 @@ function submissionStamp(args) {
7810
7825
 
7811
7826
  // src/PortalsPanel.tsx
7812
7827
  import { useCallback as useCallback16, useEffect as useEffect19, useMemo as useMemo20, useState as useState28 } from "react";
7813
- import { useRecordsClient as useRecordsClient22 } from "@ai-matrx/records/react";
7828
+ import { useRecordsClient as useRecordsClient23 } from "@ai-matrx/records/react";
7814
7829
  import {
7815
7830
  portalPath
7816
7831
  } from "@ai-matrx/records";
@@ -7845,7 +7860,7 @@ function stateWords(person) {
7845
7860
  };
7846
7861
  }
7847
7862
  function PortalsPanel({ tableId, className }) {
7848
- const client = useRecordsClient22();
7863
+ const client = useRecordsClient23();
7849
7864
  const host = useRecordsUi();
7850
7865
  const [portals, setPortals] = useState28(null);
7851
7866
  const [listError, setListError] = useState28(null);
@@ -7952,7 +7967,7 @@ function PortalDetail({
7952
7967
  tableId,
7953
7968
  onChanged
7954
7969
  }) {
7955
- const client = useRecordsClient22();
7970
+ const client = useRecordsClient23();
7956
7971
  const [card, setCard] = useState28(null);
7957
7972
  const [error, setError] = useState28(null);
7958
7973
  const load = useCallback16(async () => {
@@ -8185,7 +8200,7 @@ function Preview({
8185
8200
  ] });
8186
8201
  }
8187
8202
  function Invite({ card, onInvited }) {
8188
- const client = useRecordsClient22();
8203
+ const client = useRecordsClient23();
8189
8204
  const [rows, setRows] = useState28(null);
8190
8205
  const [titleKey, setTitleKey] = useState28(null);
8191
8206
  const [search, setSearch] = useState28("");
@@ -8297,7 +8312,7 @@ function Invite({ card, onInvited }) {
8297
8312
 
8298
8313
  // src/SubscriptionsPanel.tsx
8299
8314
  import { useCallback as useCallback17, useEffect as useEffect20, useState as useState29 } from "react";
8300
- import { useRecordsClient as useRecordsClient23 } from "@ai-matrx/records/react";
8315
+ import { useRecordsClient as useRecordsClient24 } from "@ai-matrx/records/react";
8301
8316
  import { Badge as Badge13, Button as Button25, Skeleton as Skeleton14, Switch as Switch2, cn as cn27 } from "@ai-matrx/design-system";
8302
8317
  import { jsx as jsx31, jsxs as jsxs27 } from "react/jsx-runtime";
8303
8318
  function whenItFires(subscription) {
@@ -8311,7 +8326,7 @@ var CHANNEL_WORDS = {
8311
8326
  sms: "by text \u2014 only if a number is on the account"
8312
8327
  };
8313
8328
  function SubscriptionsPanel({ tableId, className }) {
8314
- const client = useRecordsClient23();
8329
+ const client = useRecordsClient24();
8315
8330
  const [rows, setRows] = useState29(null);
8316
8331
  const [error, setError] = useState29(null);
8317
8332
  const [busy, setBusy] = useState29(null);
@@ -8447,7 +8462,7 @@ function SubscriptionsPanel({ tableId, className }) {
8447
8462
 
8448
8463
  // src/FormBuilder.tsx
8449
8464
  import { useCallback as useCallback19, useEffect as useEffect22, useMemo as useMemo22, useState as useState31 } from "react";
8450
- import { useFields as useFields15, useRecordsClient as useRecordsClient24, useTable as useTable12 } from "@ai-matrx/records/react";
8465
+ import { useFields as useFields15, useRecordsClient as useRecordsClient25, useTable as useTable12 } from "@ai-matrx/records/react";
8451
8466
  import { publicFormPath } from "@ai-matrx/records";
8452
8467
  import {
8453
8468
  BasicInput as BasicInput7,
@@ -8761,7 +8776,7 @@ var CONDITION_OPS = [
8761
8776
  { op: "lt", label: "is less than" }
8762
8777
  ];
8763
8778
  function FormBuilder({ tableId, seed, activeFormId, onActiveForm, className }) {
8764
- const client = useRecordsClient24();
8779
+ const client = useRecordsClient25();
8765
8780
  const host = useRecordsUi();
8766
8781
  const claimSeed = useSeedGuard();
8767
8782
  const table = useTable12(tableId);
@@ -9383,11 +9398,11 @@ function isSignatureField(field) {
9383
9398
 
9384
9399
  // src/DocTemplate.tsx
9385
9400
  import { useCallback as useCallback20, useEffect as useEffect24, useState as useState33 } from "react";
9386
- import { useFields as useFields16, useRecordsClient as useRecordsClient25, useTable as useTable13 } from "@ai-matrx/records/react";
9401
+ import { useFields as useFields16, useRecordsClient as useRecordsClient26, useTable as useTable13 } from "@ai-matrx/records/react";
9387
9402
  import { BasicInput as BasicInput8, BasicTextarea as BasicTextarea5, Button as Button28, Label as Label5, Skeleton as Skeleton17, cn as cn31 } from "@ai-matrx/design-system";
9388
9403
  import { jsx as jsx35, jsxs as jsxs31 } from "react/jsx-runtime";
9389
9404
  function DocTemplate({ tableId, seed, activeTemplateId, onActiveTemplate, className }) {
9390
- const client = useRecordsClient25();
9405
+ const client = useRecordsClient26();
9391
9406
  const claimSeed = useSeedGuard();
9392
9407
  const table = useTable13(tableId);
9393
9408
  const rights = useTableRights(table.data);
@@ -9562,11 +9577,11 @@ function DocTemplate({ tableId, seed, activeTemplateId, onActiveTemplate, classN
9562
9577
 
9563
9578
  // src/DocRender.tsx
9564
9579
  import { useCallback as useCallback21, useEffect as useEffect25, useRef as useRef11, useState as useState34 } from "react";
9565
- import { useRecordsClient as useRecordsClient26 } from "@ai-matrx/records/react";
9580
+ import { useRecordsClient as useRecordsClient27 } from "@ai-matrx/records/react";
9566
9581
  import { Button as Button29, Skeleton as Skeleton18, cn as cn32 } from "@ai-matrx/design-system";
9567
9582
  import { jsx as jsx36, jsxs as jsxs32 } from "react/jsx-runtime";
9568
9583
  function DocRender({ templateId, recordId, filename, onRendered, className }) {
9569
- const client = useRecordsClient26();
9584
+ const client = useRecordsClient27();
9570
9585
  const [preview, setPreview] = useState34(null);
9571
9586
  const [renders, setRenders] = useState34(null);
9572
9587
  const [showing, setShowing] = useState34(null);
@@ -9675,12 +9690,12 @@ function DocRender({ templateId, recordId, filename, onRendered, className }) {
9675
9690
 
9676
9691
  // src/SignBlock.tsx
9677
9692
  import { useCallback as useCallback22, useEffect as useEffect26, useState as useState35 } from "react";
9678
- import { useFields as useFields17, useRecordsClient as useRecordsClient27 } from "@ai-matrx/records/react";
9693
+ import { useFields as useFields17, useRecordsClient as useRecordsClient28 } from "@ai-matrx/records/react";
9679
9694
  import { BasicInput as BasicInput9, Button as Button30, Skeleton as Skeleton19, cn as cn33 } from "@ai-matrx/design-system";
9680
9695
  import { useTable as useTable14 } from "@ai-matrx/records/react";
9681
9696
  import { jsx as jsx37, jsxs as jsxs33 } from "react/jsx-runtime";
9682
9697
  function SignBlock({ tableId, recordId, render, className }) {
9683
- const client = useRecordsClient27();
9698
+ const client = useRecordsClient28();
9684
9699
  const table = useTable14(tableId);
9685
9700
  const rights = useTableRights(table.data);
9686
9701
  const fields = useFields17(tableId);
@@ -9812,7 +9827,7 @@ function SignBlock({ tableId, recordId, render, className }) {
9812
9827
 
9813
9828
  // src/NotifyRuleEditor.tsx
9814
9829
  import { useCallback as useCallback23, useEffect as useEffect27, useState as useState36 } from "react";
9815
- import { useRecordsClient as useRecordsClient28, useTable as useTable15 } from "@ai-matrx/records/react";
9830
+ import { useRecordsClient as useRecordsClient29, useTable as useTable15 } from "@ai-matrx/records/react";
9816
9831
  import { Button as Button31, Skeleton as Skeleton20, cn as cn34 } from "@ai-matrx/design-system";
9817
9832
  import { jsx as jsx38, jsxs as jsxs34 } from "react/jsx-runtime";
9818
9833
  var CADENCE_WORDS = {
@@ -9827,7 +9842,7 @@ var CHANNEL_WORDS2 = {
9827
9842
  sms: "by text"
9828
9843
  };
9829
9844
  function NotifyRuleEditor({ tableId, seed, className }) {
9830
- const client = useRecordsClient28();
9845
+ const client = useRecordsClient29();
9831
9846
  const host = useRecordsUi();
9832
9847
  const table = useTable15(tableId);
9833
9848
  const rights = useTableRights(table.data);
@@ -10341,11 +10356,11 @@ function Drawing({
10341
10356
 
10342
10357
  // src/DashboardCanvas.tsx
10343
10358
  import { useCallback as useCallback24, useEffect as useEffect28, useMemo as useMemo24, useState as useState37 } from "react";
10344
- import { useFields as useFields18, useRecordsClient as useRecordsClient29, useTable as useTable16 } from "@ai-matrx/records/react";
10359
+ import { useFields as useFields18, useRecordsClient as useRecordsClient30, useTable as useTable16 } from "@ai-matrx/records/react";
10345
10360
  import { BasicInput as BasicInput10, Button as Button32, Skeleton as Skeleton21, cn as cn36 } from "@ai-matrx/design-system";
10346
10361
  import { Fragment as Fragment16, jsx as jsx40, jsxs as jsxs36 } from "react/jsx-runtime";
10347
10362
  function DashboardCanvas({ tableId, activeDashboardId, filter, className }) {
10348
- const client = useRecordsClient29();
10363
+ const client = useRecordsClient30();
10349
10364
  const host = useRecordsUi();
10350
10365
  const table = useTable16(tableId);
10351
10366
  const rights = useTableRights(table.data);
@@ -10579,13 +10594,13 @@ function DashboardCanvas({ tableId, activeDashboardId, filter, className }) {
10579
10594
 
10580
10595
  // src/FormsPanel.tsx
10581
10596
  import { useCallback as useCallback25, useEffect as useEffect29, useState as useState38 } from "react";
10582
- import { useRecordsClient as useRecordsClient30, useTable as useTable17 } from "@ai-matrx/records/react";
10597
+ import { useRecordsClient as useRecordsClient31, useTable as useTable17 } from "@ai-matrx/records/react";
10583
10598
  import { publicFormPath as publicFormPath2 } from "@ai-matrx/records";
10584
10599
  import { Badge as Badge14, Button as Button33, Skeleton as Skeleton22, cn as cn37 } from "@ai-matrx/design-system";
10585
10600
  import { Fragment as Fragment17, jsx as jsx41, jsxs as jsxs37 } from "react/jsx-runtime";
10586
10601
  var NO_BUILDER = "A form asks for this table's own fields, and its answers land here as ordinary records stamped with the form they came through. Ask an agent for one in a sentence \u2014 what it should ask for, and who to tell when somebody answers.";
10587
10602
  function FormsPanel({ tableId, className }) {
10588
- const client = useRecordsClient30();
10603
+ const client = useRecordsClient31();
10589
10604
  const host = useRecordsUi();
10590
10605
  const table = useTable17(tableId);
10591
10606
  const rights = useTableRights(table.data);
@@ -10693,7 +10708,7 @@ function FormsPanel({ tableId, className }) {
10693
10708
 
10694
10709
  // src/BookingSlots.tsx
10695
10710
  import { useCallback as useCallback26, useEffect as useEffect30, useMemo as useMemo25, useState as useState39 } from "react";
10696
- import { useRecordsClient as useRecordsClient31, useMyLevels as useMyLevels2 } from "@ai-matrx/records/react";
10711
+ import { useRecordsClient as useRecordsClient32, useMyLevels as useMyLevels2 } from "@ai-matrx/records/react";
10697
10712
  import { bookingPath } from "@ai-matrx/records";
10698
10713
  import { Badge as Badge15, Button as Button34, Skeleton as Skeleton23, cn as cn38 } from "@ai-matrx/design-system";
10699
10714
  import { Fragment as Fragment18, jsx as jsx42, jsxs as jsxs38 } from "react/jsx-runtime";
@@ -10706,7 +10721,7 @@ var STATE_WORDS = {
10706
10721
  full: "Every time you offered is taken."
10707
10722
  };
10708
10723
  function BookingSlots({ tableId, className }) {
10709
- const client = useRecordsClient31();
10724
+ const client = useRecordsClient32();
10710
10725
  const host = useRecordsUi();
10711
10726
  const [pages, setPages] = useState39(null);
10712
10727
  const [error, setError] = useState39(null);
@@ -10850,7 +10865,7 @@ function nextInWords(page) {
10850
10865
 
10851
10866
  // src/CaptureSheet.tsx
10852
10867
  import { useCallback as useCallback28, useEffect as useEffect32, useRef as useRef13, useState as useState41 } from "react";
10853
- import { useFields as useFields19, useRecordsClient as useRecordsClient33, useTable as useTable18 } from "@ai-matrx/records/react";
10868
+ import { useFields as useFields19, useRecordsClient as useRecordsClient34, useTable as useTable18 } from "@ai-matrx/records/react";
10854
10869
  import { Button as Button36, Input as Input4, Skeleton as Skeleton25, Textarea as Textarea3, cn as cn40 } from "@ai-matrx/design-system";
10855
10870
 
10856
10871
  // src/CaptureRun.tsx
@@ -10858,7 +10873,7 @@ import { useCallback as useCallback27, useEffect as useEffect31, useMemo as useM
10858
10873
  import {
10859
10874
  openCaptureQueue
10860
10875
  } from "@ai-matrx/records";
10861
- import { useRecordsClient as useRecordsClient32 } from "@ai-matrx/records/react";
10876
+ import { useRecordsClient as useRecordsClient33 } from "@ai-matrx/records/react";
10862
10877
  import { Button as Button35, Input as Input3, Skeleton as Skeleton24, Textarea as Textarea2, cn as cn39 } from "@ai-matrx/design-system";
10863
10878
  import { jsx as jsx43, jsxs as jsxs39 } from "react/jsx-runtime";
10864
10879
  function controlFor(field) {
@@ -10897,7 +10912,7 @@ function whereWeAre(timeoutMs = 4e3) {
10897
10912
  });
10898
10913
  }
10899
10914
  function CaptureRun({ sheetId, face: given, className }) {
10900
- const client = useRecordsClient32();
10915
+ const client = useRecordsClient33();
10901
10916
  const host = useRecordsUi();
10902
10917
  const [face, setFace] = useState40(given);
10903
10918
  const [loadFailed, setLoadFailed] = useState40(null);
@@ -11255,7 +11270,7 @@ function AdHocCaptureSheet({
11255
11270
  attachmentField,
11256
11271
  className
11257
11272
  }) {
11258
- const client = useRecordsClient33();
11273
+ const client = useRecordsClient34();
11259
11274
  const host = useRecordsUi();
11260
11275
  const table = useTable18(tableId);
11261
11276
  const fields = useFields19(tableId);
@@ -11457,11 +11472,11 @@ function AdHocCaptureSheet({
11457
11472
 
11458
11473
  // src/PortalShell.tsx
11459
11474
  import { useCallback as useCallback29, useEffect as useEffect33, useState as useState42 } from "react";
11460
- import { useRecordsClient as useRecordsClient34 } from "@ai-matrx/records/react";
11475
+ import { useRecordsClient as useRecordsClient35 } from "@ai-matrx/records/react";
11461
11476
  import { Button as Button37, Skeleton as Skeleton26, cn as cn41 } from "@ai-matrx/design-system";
11462
11477
  import { jsx as jsx45, jsxs as jsxs41 } from "react/jsx-runtime";
11463
11478
  function PortalShell({ tableId, form, resourceType = "record", className }) {
11464
- const client = useRecordsClient34();
11479
+ const client = useRecordsClient35();
11465
11480
  const [card, setCard] = useState42(null);
11466
11481
  const [reach, setReach] = useState42(null);
11467
11482
  const [error, setError] = useState42(null);
@@ -11540,7 +11555,7 @@ function PortalShell({ tableId, form, resourceType = "record", className }) {
11540
11555
  ] });
11541
11556
  }
11542
11557
  function PortalRow({ tableId, recordId }) {
11543
- const client = useRecordsClient34();
11558
+ const client = useRecordsClient35();
11544
11559
  const [title, setTitle] = useState42(null);
11545
11560
  useEffect33(() => {
11546
11561
  let cancelled = false;
@@ -11563,11 +11578,11 @@ function PortalRow({ tableId, recordId }) {
11563
11578
 
11564
11579
  // src/PublicViewPage.tsx
11565
11580
  import { useCallback as useCallback30, useEffect as useEffect34, useState as useState43 } from "react";
11566
- import { useRecordsClient as useRecordsClient35 } from "@ai-matrx/records/react";
11581
+ import { useRecordsClient as useRecordsClient36 } from "@ai-matrx/records/react";
11567
11582
  import { Skeleton as Skeleton27, cn as cn42 } from "@ai-matrx/design-system";
11568
11583
  import { jsx as jsx46, jsxs as jsxs42 } from "react/jsx-runtime";
11569
11584
  function PublicViewPage({ slug, className }) {
11570
- const client = useRecordsClient35();
11585
+ const client = useRecordsClient36();
11571
11586
  const [binding, setBinding] = useState43(null);
11572
11587
  const [rows, setRows] = useState43(null);
11573
11588
  const [fields, setFields] = useState43(null);
@@ -11644,7 +11659,7 @@ function PublicRow({ row, fields }) {
11644
11659
 
11645
11660
  // src/EmbedFrame.tsx
11646
11661
  import { useCallback as useCallback31, useEffect as useEffect35, useState as useState44 } from "react";
11647
- import { useRecordsClient as useRecordsClient36 } from "@ai-matrx/records/react";
11662
+ import { useRecordsClient as useRecordsClient37 } from "@ai-matrx/records/react";
11648
11663
  import { Button as Button38, Input as Input5, Skeleton as Skeleton28, Textarea as Textarea4, cn as cn43 } from "@ai-matrx/design-system";
11649
11664
  import { useTable as useTable19 } from "@ai-matrx/records/react";
11650
11665
  import { Fragment as Fragment20, jsx as jsx47, jsxs as jsxs43 } from "react/jsx-runtime";
@@ -11656,7 +11671,7 @@ function EmbedFrame({
11656
11671
  embedUrl,
11657
11672
  className
11658
11673
  }) {
11659
- const client = useRecordsClient36();
11674
+ const client = useRecordsClient37();
11660
11675
  const host = useRecordsUi();
11661
11676
  const table = useTable19(tableId);
11662
11677
  const rights = useTableRights(table.data);
@@ -11750,7 +11765,7 @@ function EmbedFrame({
11750
11765
  ] });
11751
11766
  }
11752
11767
  function useEmbedHandshake(args) {
11753
- const client = useRecordsClient36();
11768
+ const client = useRecordsClient37();
11754
11769
  const [binding, setBinding] = useState44(null);
11755
11770
  const [error, setError] = useState44(null);
11756
11771
  const [loading, setLoading] = useState44(true);
@@ -11812,7 +11827,7 @@ function recordsDataSource(client, fallbackSchema = "custom") {
11812
11827
 
11813
11828
  // src/TablesHome.tsx
11814
11829
  import { useCallback as useCallback32, useEffect as useEffect36, useState as useState45 } from "react";
11815
- import { useRecordsClient as useRecordsClient37, useTables as useTables2 } from "@ai-matrx/records/react";
11830
+ import { useRecordsClient as useRecordsClient38, useTables as useTables2 } from "@ai-matrx/records/react";
11816
11831
  import { BasicInput as BasicInput11, Button as Button39, Skeleton as Skeleton29, cn as cn44 } from "@ai-matrx/design-system";
11817
11832
 
11818
11833
  // src/createTable.ts
@@ -11948,7 +11963,7 @@ function laneFor(table) {
11948
11963
  return "organization";
11949
11964
  }
11950
11965
  function TablesHome({ onOpenTable, className }) {
11951
- const client = useRecordsClient37();
11966
+ const client = useRecordsClient38();
11952
11967
  const tables = useTables2();
11953
11968
  const [creating, setCreating] = useState45(false);
11954
11969
  const [name, setName] = useState45("");
@@ -12091,7 +12106,7 @@ function TablesHome({ onOpenTable, className }) {
12091
12106
 
12092
12107
  // src/TablePage.tsx
12093
12108
  import { useCallback as useCallback33, useEffect as useEffect37, useState as useState46 } from "react";
12094
- import { useRecordsClient as useRecordsClient38, useTable as useTable20 } from "@ai-matrx/records/react";
12109
+ import { useRecordsClient as useRecordsClient39, useTable as useTable20 } from "@ai-matrx/records/react";
12095
12110
  import { Button as Button40, Separator as Separator8, Skeleton as Skeleton30, cn as cn45 } from "@ai-matrx/design-system";
12096
12111
  import { Fragment as Fragment22, jsx as jsx50, jsxs as jsxs45 } from "react/jsx-runtime";
12097
12112
  var TABLE_NOT_REACHABLE = "This table is not in the organization you are working in, so there is nothing here to show. Switch to the organization that owns it and open it again \u2014 or it may have been deleted.";
@@ -12124,10 +12139,10 @@ function TablePage({
12124
12139
  activeRecordId,
12125
12140
  className
12126
12141
  }) {
12127
- const client = useRecordsClient38();
12142
+ const client = useRecordsClient39();
12128
12143
  const table = useTable20(tableId);
12129
12144
  const rights = useTableRights(table.data);
12130
- const organizationId = useRecordsClient38().config.organizationId;
12145
+ const organizationId = useRecordsClient39().config.organizationId;
12131
12146
  const [view, setView] = useState46(null);
12132
12147
  const opening = openingRail(activeRecordId);
12133
12148
  const [asking, setAsking] = useState46(null);