@nivaro/react 0.3.36 → 0.3.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/components/slots/CommentsSlot.js +44 -36
  2. package/dist/full.css +1 -1
  3. package/dist/hooks/useSessionRecorder.js +1 -1
  4. package/dist/index.d.ts +9 -1
  5. package/dist/shared/components/AgentBadge.js +26 -0
  6. package/dist/shared/components/AgentQuestionsCard.js +198 -0
  7. package/dist/shared/components/ItemEditForm.js +3329 -3263
  8. package/dist/shared/components/McpConnectionScope.js +480 -0
  9. package/dist/shared/components/MyWorkView.js +223 -208
  10. package/dist/shared/components/RecordReadView.js +620 -575
  11. package/dist/shared/components/chat/ChatPanel.js +683 -671
  12. package/dist/shared/components/imports/DownloadSampleButton.js +69 -0
  13. package/dist/shared/components/imports/ImportConsole.js +106 -104
  14. package/dist/shared/components/imports/RunDetailSheet.js +34 -32
  15. package/dist/shared/components/item-edit/FieldAffordances.js +32 -32
  16. package/dist/shared/components/item-edit/FormTour.js +279 -0
  17. package/dist/shared/components/item-edit/GroupSection.js +377 -360
  18. package/dist/shared/components/item-edit/PersonalDefaultControl.js +28 -28
  19. package/dist/shared/components/item-edit/entry/EntryStrip.js +30 -26
  20. package/dist/shared/components/item-edit/form-density.js +36 -0
  21. package/dist/shared/components/item-edit/useFormUsageBeacon.js +59 -46
  22. package/dist/shared/components/item-edit/usePersonalDefaults.js +312 -296
  23. package/dist/shared/components/layout-editor/AddPanel.js +349 -192
  24. package/dist/shared/components/layout-editor/DesignNode.js +126 -112
  25. package/dist/shared/components/layout-editor/EditorTopBar.js +123 -103
  26. package/dist/shared/components/layout-editor/LayoutEditor.js +829 -751
  27. package/dist/shared/components/layout-editor/PlaceTools.js +334 -0
  28. package/dist/shared/components/layout-editor/SlashInsert.js +252 -0
  29. package/dist/shared/components/layout-editor/StructureMenu.js +285 -242
  30. package/dist/shared/components/layout-editor/add-target.js +54 -43
  31. package/dist/shared/components/layout-editor/ai-forms/AiComposer.js +238 -155
  32. package/dist/shared/components/layout-editor/ai-forms/AiFormsButton.js +1 -1
  33. package/dist/shared/components/layout-editor/ai-forms/ai-forms-api.js +15 -12
  34. package/dist/shared/components/layout-editor/dnd/LayoutDndProvider.js +347 -189
  35. package/dist/shared/components/layout-editor/dnd/TrashZone.js +60 -32
  36. package/dist/shared/components/layout-editor/dnd/UndoChip.js +76 -0
  37. package/dist/shared/components/layout-editor/dnd/merge-drop.js +33 -0
  38. package/dist/shared/components/layout-editor/dnd/multi-drop.js +87 -0
  39. package/dist/shared/components/layout-editor/dnd/node.js +115 -105
  40. package/dist/shared/components/layout-editor/dnd/sensors.js +23 -0
  41. package/dist/shared/components/layout-editor/dnd/trash-drop.js +34 -28
  42. package/dist/shared/components/layout-editor/dnd/trash-links.js +97 -0
  43. package/dist/shared/components/layout-editor/even-row.js +86 -0
  44. package/dist/shared/components/layout-editor/field-list.js +99 -0
  45. package/dist/shared/components/layout-editor/format-painter.js +102 -0
  46. package/dist/shared/components/layout-editor/grid-guides.js +15 -13
  47. package/dist/shared/components/layout-editor/inspector/BehaviourSettings.js +150 -132
  48. package/dist/shared/components/layout-editor/inspector/BulkInspector.js +57 -53
  49. package/dist/shared/components/layout-editor/inspector/EvenRowAction.js +31 -0
  50. package/dist/shared/components/layout-editor/inspector/GroupInspector.js +154 -141
  51. package/dist/shared/components/layout-editor/inspector/Inspector.js +209 -178
  52. package/dist/shared/components/layout-editor/inspector/LookTab.js +106 -98
  53. package/dist/shared/components/layout-editor/inspector/RulesTab.js +38 -37
  54. package/dist/shared/components/layout-editor/inspector/kit.js +280 -223
  55. package/dist/shared/components/layout-editor/keyboard-move.js +15 -15
  56. package/dist/shared/components/layout-editor/lint/LabelStyle.js +201 -0
  57. package/dist/shared/components/layout-editor/lint/LintPanel.js +132 -84
  58. package/dist/shared/components/layout-editor/lint/lint-api.js +65 -28
  59. package/dist/shared/components/layout-editor/nav/NavTools.js +14 -12
  60. package/dist/shared/components/layout-editor/nav/ZoomControls.js +145 -0
  61. package/dist/shared/components/layout-editor/nav/useEditorNav.js +34 -32
  62. package/dist/shared/components/layout-editor/nav/view-prefs.js +100 -15
  63. package/dist/shared/components/layout-editor/outputs/LayoutFile.js +89 -0
  64. package/dist/shared/components/layout-editor/outputs/OutputsButton.js +272 -195
  65. package/dist/shared/components/layout-editor/outputs/layout-file-plan.js +176 -0
  66. package/dist/shared/components/layout-editor/outputs/output-api.js +71 -37
  67. package/dist/shared/components/layout-editor/overview/describe-conditions.js +16 -11
  68. package/dist/shared/components/layout-editor/overview/purpose.js +5 -5
  69. package/dist/shared/components/layout-editor/parity-keys.json.js +1 -1
  70. package/dist/shared/components/layout-editor/pin.js +37 -19
  71. package/dist/shared/components/layout-editor/place-clip.js +257 -0
  72. package/dist/shared/components/layout-editor/preview/PreviewModes.js +27 -26
  73. package/dist/shared/components/layout-editor/preview/PreviewPanes.js +148 -117
  74. package/dist/shared/components/layout-editor/preview/SampleRecord.js +113 -0
  75. package/dist/shared/components/layout-editor/preview/preview-model.js +79 -60
  76. package/dist/shared/components/layout-editor/preview/sample-record.js +105 -0
  77. package/dist/shared/components/layout-editor/removed-log.js +151 -0
  78. package/dist/shared/components/layout-editor/reuse/LibraryRows.js +109 -78
  79. package/dist/shared/components/layout-editor/reuse/linked-sections.js +373 -0
  80. package/dist/shared/components/layout-editor/revert-element.js +140 -0
  81. package/dist/shared/components/layout-editor/section-structure.js +193 -170
  82. package/dist/shared/components/layout-editor/settings/EntrySection.js +63 -45
  83. package/dist/shared/components/layout-editor/settings/LayoutSection.js +63 -32
  84. package/dist/shared/components/layout-editor/settings/ResolveSettings.js +179 -137
  85. package/dist/shared/components/layout-editor/settings/WhoSection.js +18 -17
  86. package/dist/shared/components/layout-editor/settings/settings-registry.js +24 -0
  87. package/dist/shared/components/layout-editor/shortcuts.js +21 -16
  88. package/dist/shared/components/layout-editor/structure-ops.js +221 -195
  89. package/dist/shared/components/layout-editor/usage/UsagePanel.js +133 -85
  90. package/dist/shared/components/layout-editor/usage/refusal-lens.js +130 -0
  91. package/dist/shared/components/layout-editor/usage/usage-api.js +12 -11
  92. package/dist/shared/components/panels/CommentPanel.js +47 -45
  93. package/dist/shared/components/panels/RevisionsPanel.js +66 -64
  94. package/dist/shared/components/panels/TaskPanel.js +395 -332
  95. package/dist/shared/components/profile/AgentsPanel.js +196 -147
  96. package/dist/shared/components/profile/ConnectionRollback.js +329 -0
  97. package/dist/shared/components/profile/MyDefaultsCard.js +526 -520
  98. package/dist/shared/lib/entry-config.js +22 -22
  99. package/dist/shared/lib/form-usage-beacon.js +91 -55
  100. package/dist/shared/lib/layout-lint.js +530 -284
  101. package/dist/shared/lib/layout-resolve.js +58 -44
  102. package/package.json +1 -1
@@ -1,27 +1,29 @@
1
- import { jsxs as n, jsx as t, Fragment as W } from "react/jsx-runtime";
2
- import { useQueryClient as z, useQuery as V, useInfiniteQuery as Z, useMutation as q } from "@tanstack/react-query";
3
- import { Bot as G, Plug as H, Loader2 as k, ListChecks as X, KeyRound as Y, ChevronRight as J, AlertTriangle as ee, Undo2 as te } from "lucide-react";
4
- import { useState as N, useRef as ae, useMemo as A, Fragment as ne } from "react";
5
- import { useNivaroClient as re, useItemNavigation as E } from "../../context.js";
6
- import { get as L, del as se, post as le } from "../../lib/commands.js";
7
- import { cn as g, formatDate as w, formatRelative as M, formatNumber as f, formatDateTime as oe, formatFileSize as U } from "../../lib/utils.js";
8
- import { SimpleSelectXs as ie } from "../ui/SimpleSelect.js";
9
- import { Skeleton as de } from "../ui/skeleton.js";
10
- import { SectionCard as R, EmptyLine as y, ConfirmButton as O, Pill as Q } from "./primitives.js";
11
- const ce = {
1
+ import { jsxs as a, jsx as t, Fragment as M } from "react/jsx-runtime";
2
+ import { useQueryClient as z, useQuery as V, useInfiniteQuery as Z, useMutation as D } from "@tanstack/react-query";
3
+ import { Bot as G, Plug as H, Loader2 as w, ListChecks as X, KeyRound as Y, ChevronRight as J, AlertTriangle as ee, Undo2 as te } from "lucide-react";
4
+ import { useState as v, useRef as ae, useMemo as I, Fragment as ne } from "react";
5
+ import { useNivaroClient as se, useItemNavigation as U } from "../../context.js";
6
+ import { get as q, del as re, post as oe } from "../../lib/commands.js";
7
+ import { cn as y, formatDate as C, formatRelative as E, formatNumber as g, formatDateTime as le, formatFileSize as B } from "../../lib/utils.js";
8
+ import { ScopeBadge as ie, McpScopeSheet as de } from "../McpConnectionScope.js";
9
+ import { SimpleSelectXs as ce } from "../ui/SimpleSelect.js";
10
+ import { Skeleton as me } from "../ui/skeleton.js";
11
+ import { ConnectionRollback as pe } from "./ConnectionRollback.js";
12
+ import { SectionCard as A, EmptyLine as k, ConfirmButton as O, Pill as Q } from "./primitives.js";
13
+ const ue = {
12
14
  oauth: "Signed in",
13
15
  api_key: "API key",
14
16
  token: "Personal token"
15
17
  }, T = (e) => ["nvr-mcp-connections", e];
16
- function me({ days: e }) {
18
+ function he({ days: e }) {
17
19
  const i = Math.max(1, ...e.map((r) => r.calls));
18
20
  return /* @__PURE__ */ t("div", { className: "flex h-6 items-end gap-[2px]", "aria-hidden": !0, children: e.map((r) => {
19
21
  const l = r.calls ? Math.max(3, Math.round(r.calls / i * 24)) : 2, d = r.errors + r.refused;
20
22
  return /* @__PURE__ */ t(
21
23
  "span",
22
24
  {
23
- "data-tip": `${w(`${r.day}T12:00:00Z`, { month: "short", day: "numeric" })}: ${f(r.calls)} call${r.calls === 1 ? "" : "s"}${d ? `, ${d} not ok` : ""}`,
24
- className: g(
25
+ "data-tip": `${C(`${r.day}T12:00:00Z`, { month: "short", day: "numeric" })}: ${g(r.calls)} call${r.calls === 1 ? "" : "s"}${d ? `, ${d} not ok` : ""}`,
26
+ className: y(
25
27
  "relative w-[5px] overflow-hidden rounded-[1px]",
26
28
  r.calls ? "bg-nvr-cyan/50 dark:bg-nvr-cyan/40" : "bg-slate-200 dark:bg-muted"
27
29
  ),
@@ -38,40 +40,40 @@ function me({ days: e }) {
38
40
  );
39
41
  }) });
40
42
  }
41
- function pe({ s: e }) {
42
- return !e || e.calls === 0 ? /* @__PURE__ */ t("span", { className: "text-[12px] text-slate-500 dark:text-slate-400", children: "No tool calls" }) : /* @__PURE__ */ n("span", { className: "text-[12px] tabular-nums text-slate-600 dark:text-slate-300", children: [
43
- /* @__PURE__ */ t("b", { className: "font-semibold text-slate-800 dark:text-slate-100", children: f(e.calls) }),
43
+ function xe({ s: e }) {
44
+ return !e || e.calls === 0 ? /* @__PURE__ */ t("span", { className: "text-[12px] text-slate-500 dark:text-slate-400", children: "No tool calls" }) : /* @__PURE__ */ a("span", { className: "text-[12px] tabular-nums text-slate-600 dark:text-slate-300", children: [
45
+ /* @__PURE__ */ t("b", { className: "font-semibold text-slate-800 dark:text-slate-100", children: g(e.calls) }),
44
46
  " ",
45
47
  "call",
46
48
  e.calls === 1 ? "" : "s",
47
- e.refused > 0 && /* @__PURE__ */ n("span", { className: "text-amber-700 dark:text-amber-400", children: [
49
+ e.refused > 0 && /* @__PURE__ */ a("span", { className: "text-amber-700 dark:text-amber-400", children: [
48
50
  " ",
49
51
  "· ",
50
- f(e.refused),
52
+ g(e.refused),
51
53
  " refused"
52
54
  ] }),
53
- e.errors > 0 && /* @__PURE__ */ n("span", { className: "text-red-600 dark:text-red-400", children: [
55
+ e.errors > 0 && /* @__PURE__ */ a("span", { className: "text-red-600 dark:text-red-400", children: [
54
56
  " · ",
55
- f(e.errors),
57
+ g(e.errors),
56
58
  " failed"
57
59
  ] }),
58
- /* @__PURE__ */ n("span", { className: "text-slate-500 dark:text-slate-400", children: [
60
+ /* @__PURE__ */ a("span", { className: "text-slate-500 dark:text-slate-400", children: [
59
61
  " · ",
60
- U(e.bytes)
62
+ B(e.bytes)
61
63
  ] })
62
64
  ] });
63
65
  }
64
- function ue({ kind: e }) {
65
- return /* @__PURE__ */ t(Q, { tone: e === "oauth" ? "brand" : "neutral", children: ce[e] });
66
+ function be({ kind: e }) {
67
+ return /* @__PURE__ */ t(Q, { tone: e === "oauth" ? "brand" : "neutral", children: ue[e] });
66
68
  }
67
- function he({ c: e }) {
69
+ function fe({ c: e }) {
68
70
  if (!e.idle || e.idle.status === "active") return null;
69
- const i = w(`${e.idle.revoke_on}T12:00:00Z`, {
71
+ const i = C(`${e.idle.revoke_on}T12:00:00Z`, {
70
72
  month: "short",
71
73
  day: "numeric",
72
74
  year: "numeric"
73
75
  });
74
- return /* @__PURE__ */ n("p", { className: "mt-1.5 flex items-center gap-1.5 text-[12px] text-amber-700 dark:text-amber-400", children: [
76
+ return /* @__PURE__ */ a("p", { className: "mt-1.5 flex items-center gap-1.5 text-[12px] text-amber-700 dark:text-amber-400", children: [
75
77
  /* @__PURE__ */ t(ee, { className: "h-3.5 w-3.5 shrink-0" }),
76
78
  "Unused for ",
77
79
  e.idle.idle_days,
@@ -80,54 +82,81 @@ function he({ c: e }) {
80
82
  " unless it is used."
81
83
  ] });
82
84
  }
83
- const xe = {
85
+ const ge = {
84
86
  ok: { label: "Done", tone: "green" },
85
87
  refused: { label: "Refused", tone: "amber" },
86
88
  error: { label: "Failed", tone: "red" }
87
- }, be = {
89
+ }, ve = {
88
90
  create: "Created",
89
91
  update: "Changed",
90
92
  delete: "Deleted"
91
93
  };
92
94
  function K({ rows: e = 3 }) {
93
- return /* @__PURE__ */ t("div", { className: "space-y-3", "aria-busy": "true", children: Array.from({ length: e }, (i, r) => /* @__PURE__ */ t(de, { className: "h-10 rounded-md" }, r)) });
95
+ return /* @__PURE__ */ t("div", { className: "space-y-3", "aria-busy": "true", children: Array.from({ length: e }, (i, r) => /* @__PURE__ */ t(me, { className: "h-10 rounded-md" }, r)) });
94
96
  }
95
- function fe({
97
+ function ye({
96
98
  c: e,
97
99
  onShowCalls: i,
98
100
  onDisconnect: r,
99
101
  disconnecting: l
100
102
  }) {
101
- var u, p, h;
102
- const d = ((u = e.stats) == null ? void 0 : u.last_call_at) ?? e.last_used_at;
103
- return /* @__PURE__ */ n("li", { className: "flex flex-wrap items-center gap-x-6 gap-y-3 py-3 first:pt-0 last:pb-0", children: [
104
- /* @__PURE__ */ n("div", { className: "min-w-[220px] flex-1", children: [
105
- /* @__PURE__ */ n("div", { className: "flex flex-wrap items-center gap-2", children: [
103
+ var s, x, o, b;
104
+ const d = ((s = e.stats) == null ? void 0 : s.last_call_at) ?? e.last_used_at, [u, p] = v(!1), [h, m] = v(!1);
105
+ return /* @__PURE__ */ a("li", { className: "flex flex-wrap items-center gap-x-6 gap-y-3 py-3 first:pt-0 last:pb-0", children: [
106
+ /* @__PURE__ */ a("div", { className: "min-w-[220px] flex-1", children: [
107
+ /* @__PURE__ */ a("div", { className: "flex flex-wrap items-center gap-2", children: [
106
108
  /* @__PURE__ */ t("span", { className: "truncate text-[13px] font-semibold text-slate-800 dark:text-slate-100", children: e.name }),
107
- /* @__PURE__ */ t(ue, { kind: e.kind })
109
+ /* @__PURE__ */ t(be, { kind: e.kind })
108
110
  ] }),
109
- /* @__PURE__ */ n("p", { className: "mt-0.5 text-[12px] text-slate-500 dark:text-slate-400", children: [
110
- e.created_at ? `Connected ${w(e.created_at)}` : "Seen in the request log",
111
+ /* @__PURE__ */ a("p", { className: "mt-0.5 text-[12px] text-slate-500 dark:text-slate-400", children: [
112
+ e.created_at ? `Connected ${C(e.created_at)}` : "Seen in the request log",
111
113
  " · ",
112
- d ? `last used ${M(d)}` : "never used"
114
+ d ? `last used ${E(d)}` : "never used"
113
115
  ] }),
114
- /* @__PURE__ */ t(he, { c: e })
116
+ /* @__PURE__ */ t(fe, { c: e }),
117
+ e.scope !== void 0 && /* @__PURE__ */ a("p", { className: "mt-1 flex min-w-0 items-center gap-1.5", children: [
118
+ /* @__PURE__ */ t("span", { className: "shrink-0 text-[12px] text-slate-500 dark:text-slate-400", children: "May use:" }),
119
+ /* @__PURE__ */ t(ie, { scope: e.scope ?? null }),
120
+ ((x = e.scope) == null ? void 0 : x.locked) && /* @__PURE__ */ t("span", { className: "shrink-0 text-[11.5px] text-slate-500 dark:text-slate-400", children: "· set by an administrator" })
121
+ ] })
115
122
  ] }),
116
- /* @__PURE__ */ n("div", { className: "flex min-w-[180px] flex-col gap-1", children: [
117
- e.stats && /* @__PURE__ */ t(me, { days: e.stats.days }),
118
- /* @__PURE__ */ t(pe, { s: e.stats })
123
+ /* @__PURE__ */ a("div", { className: "flex min-w-[180px] flex-col gap-1", children: [
124
+ e.stats && /* @__PURE__ */ t(he, { days: e.stats.days }),
125
+ /* @__PURE__ */ t(xe, { s: e.stats })
119
126
  ] }),
120
- /* @__PURE__ */ t("div", { className: "hidden min-w-[160px] flex-wrap gap-1 lg:flex", children: (((p = e.stats) == null ? void 0 : p.top_tools) ?? []).slice(0, 4).map((c) => /* @__PURE__ */ t(
127
+ /* @__PURE__ */ t("div", { className: "hidden min-w-[160px] flex-wrap gap-1 lg:flex", children: (((o = e.stats) == null ? void 0 : o.top_tools) ?? []).slice(0, 4).map((f) => /* @__PURE__ */ t(
121
128
  "span",
122
129
  {
123
- "data-tip": `${f(c.calls)} call${c.calls === 1 ? "" : "s"}`,
130
+ "data-tip": `${g(f.calls)} call${f.calls === 1 ? "" : "s"}`,
124
131
  className: "rounded bg-slate-100 px-1.5 py-px font-mono text-[11px] text-slate-600 dark:bg-muted dark:text-slate-300",
125
- children: c.tool
132
+ children: f.tool
126
133
  },
127
- c.tool
134
+ f.tool
128
135
  )) }),
129
- /* @__PURE__ */ n("div", { className: "ml-auto flex items-center gap-1.5", children: [
130
- (((h = e.stats) == null ? void 0 : h.calls) ?? 0) > 0 && /* @__PURE__ */ t(
136
+ /* @__PURE__ */ a("div", { className: "ml-auto flex items-center gap-1.5", children: [
137
+ e.scope_editable && /* @__PURE__ */ a(M, { children: [
138
+ /* @__PURE__ */ t(
139
+ "button",
140
+ {
141
+ type: "button",
142
+ onClick: () => m(!0),
143
+ className: "h-7 rounded-md px-2 text-[12px] font-medium text-slate-600 transition-colors hover:bg-muted hover:text-slate-900 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-nvr-cyan/40 dark:text-slate-300 dark:hover:text-white",
144
+ children: "Limits"
145
+ }
146
+ ),
147
+ /* @__PURE__ */ t(
148
+ de,
149
+ {
150
+ open: h,
151
+ onClose: () => m(!1),
152
+ conn: e.conn,
153
+ name: e.name,
154
+ scope: e.scope ?? null,
155
+ mode: "mine"
156
+ }
157
+ )
158
+ ] }),
159
+ (((b = e.stats) == null ? void 0 : b.calls) ?? 0) > 0 && /* @__PURE__ */ t(
131
160
  "button",
132
161
  {
133
162
  type: "button",
@@ -136,6 +165,17 @@ function fe({
136
165
  children: "View calls"
137
166
  }
138
167
  ),
168
+ /* @__PURE__ */ t(
169
+ "button",
170
+ {
171
+ type: "button",
172
+ onClick: () => p((f) => !f),
173
+ "aria-expanded": u,
174
+ "data-tip": "Undo what this app changed in a time window",
175
+ className: "h-7 rounded-md px-2 text-[12px] font-medium text-slate-600 transition-colors hover:bg-muted hover:text-slate-900 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-nvr-cyan/40 dark:text-slate-300 dark:hover:text-white",
176
+ children: "Roll back…"
177
+ }
178
+ ),
139
179
  e.kind === "oauth" && e.created_at ? /* @__PURE__ */ t(
140
180
  O,
141
181
  {
@@ -145,9 +185,9 @@ function fe({
145
185
  title: `Disconnect ${e.name}`,
146
186
  className: "h-7 rounded-md border border-slate-200 px-2.5 text-[12px] font-medium text-slate-700 transition-colors hover:border-red-300 hover:text-red-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-red-400/40 disabled:opacity-40 dark:border-border dark:text-slate-200 dark:hover:border-red-500/50 dark:hover:text-red-400",
147
187
  armedClassName: "border-red-300 bg-red-50 text-red-700 dark:border-red-500/50 dark:bg-red-500/10 dark:text-red-400",
148
- children: l ? /* @__PURE__ */ t(k, { className: "h-3.5 w-3.5 animate-spin" }) : "Disconnect"
188
+ children: l ? /* @__PURE__ */ t(w, { className: "h-3.5 w-3.5 animate-spin" }) : "Disconnect"
149
189
  }
150
- ) : e.kind !== "oauth" ? /* @__PURE__ */ n(
190
+ ) : e.kind !== "oauth" ? /* @__PURE__ */ a(
151
191
  "span",
152
192
  {
153
193
  className: "inline-flex items-center gap-1 text-[11.5px] text-slate-500 dark:text-slate-400",
@@ -158,20 +198,29 @@ function fe({
158
198
  ]
159
199
  }
160
200
  ) : null
161
- ] })
201
+ ] }),
202
+ u && /* @__PURE__ */ t("div", { className: "basis-full", children: /* @__PURE__ */ t(
203
+ pe,
204
+ {
205
+ conn: e.conn,
206
+ name: e.name,
207
+ scope: "mine",
208
+ onClose: () => p(!1)
209
+ }
210
+ ) })
162
211
  ] });
163
212
  }
164
- function ge({
213
+ function ke({
165
214
  w: e,
166
215
  onUndo: i,
167
216
  undoing: r
168
217
  }) {
169
- const { urlFor: l, open: d } = E(), u = e.collection && e.item ? { collection: e.collection, itemId: e.item } : null;
170
- return /* @__PURE__ */ n("li", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 py-1.5", children: [
171
- /* @__PURE__ */ n("span", { className: "text-[12px] text-slate-700 dark:text-slate-200", children: [
172
- be[e.action] ?? e.action,
218
+ const { urlFor: l, open: d } = U(), u = e.collection && e.item ? { collection: e.collection, itemId: e.item } : null;
219
+ return /* @__PURE__ */ a("li", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 py-1.5", children: [
220
+ /* @__PURE__ */ a("span", { className: "text-[12px] text-slate-700 dark:text-slate-200", children: [
221
+ ve[e.action] ?? e.action,
173
222
  " ",
174
- u && e.action !== "delete" ? /* @__PURE__ */ n(
223
+ u && e.action !== "delete" ? /* @__PURE__ */ a(
175
224
  "a",
176
225
  {
177
226
  href: l(u),
@@ -185,13 +234,13 @@ function ge({
185
234
  e.item
186
235
  ]
187
236
  }
188
- ) : /* @__PURE__ */ n("span", { className: "font-mono text-[11.5px]", children: [
237
+ ) : /* @__PURE__ */ a("span", { className: "font-mono text-[11.5px]", children: [
189
238
  e.collection ?? "",
190
239
  " ",
191
240
  e.item ? `#${e.item}` : ""
192
241
  ] })
193
242
  ] }),
194
- e.undoable ? /* @__PURE__ */ n(
243
+ e.undoable ? /* @__PURE__ */ a(
195
244
  O,
196
245
  {
197
246
  onConfirm: i,
@@ -201,30 +250,30 @@ function ge({
201
250
  className: "inline-flex h-6 items-center gap-1 rounded-md border border-slate-200 px-2 text-[11.5px] font-medium text-slate-700 transition-colors hover:border-nvr-cyan hover:text-nvr-navy focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-nvr-cyan/40 disabled:opacity-40 dark:border-border dark:text-slate-200 dark:hover:text-nvr-cyan",
202
251
  armedClassName: "border-amber-300 bg-amber-50 text-amber-800 dark:border-amber-500/40 dark:bg-amber-500/10 dark:text-amber-300",
203
252
  children: [
204
- r ? /* @__PURE__ */ t(k, { className: "h-3 w-3 animate-spin" }) : /* @__PURE__ */ t(te, { className: "h-3 w-3" }),
253
+ r ? /* @__PURE__ */ t(w, { className: "h-3 w-3 animate-spin" }) : /* @__PURE__ */ t(te, { className: "h-3 w-3" }),
205
254
  "Undo"
206
255
  ]
207
256
  }
208
257
  ) : /* @__PURE__ */ t("span", { className: "text-[11.5px] text-slate-500 dark:text-slate-400", children: e.reason })
209
258
  ] });
210
259
  }
211
- function ye({
260
+ function Ne({
212
261
  call: e,
213
262
  onUndo: i,
214
263
  undoingId: r
215
264
  }) {
216
- const [l, d] = N(!1), { urlFor: u, open: p } = E(), h = xe[e.outcome], c = e.writes.length > 0 || !!e.message, s = e.record, x = s != null && s.id ? { collection: s.collection, itemId: s.id } : null;
217
- return /* @__PURE__ */ n(ne, { children: [
218
- /* @__PURE__ */ n(
265
+ const [l, d] = v(!1), { urlFor: u, open: p } = U(), h = ge[e.outcome], m = e.writes.length > 0 || !!e.message, s = e.record, x = s != null && s.id ? { collection: s.collection, itemId: s.id } : null;
266
+ return /* @__PURE__ */ a(ne, { children: [
267
+ /* @__PURE__ */ a(
219
268
  "tr",
220
269
  {
221
- className: g(
270
+ className: y(
222
271
  "border-b border-slate-100 align-middle last:border-0 dark:border-border/60",
223
- c && "cursor-pointer hover:bg-muted/60"
272
+ m && "cursor-pointer hover:bg-muted/60"
224
273
  ),
225
- onClick: () => c && d((o) => !o),
274
+ onClick: () => m && d((o) => !o),
226
275
  children: [
227
- /* @__PURE__ */ t("td", { className: "w-5 py-2 pl-1 pr-0", children: c && /* @__PURE__ */ t(
276
+ /* @__PURE__ */ t("td", { className: "w-5 py-2 pl-1 pr-0", children: m && /* @__PURE__ */ t(
228
277
  "button",
229
278
  {
230
279
  type: "button",
@@ -237,7 +286,7 @@ function ye({
237
286
  children: /* @__PURE__ */ t(
238
287
  J,
239
288
  {
240
- className: g(
289
+ className: y(
241
290
  "h-3.5 w-3.5 transition-transform duration-150",
242
291
  l && "rotate-90"
243
292
  )
@@ -249,13 +298,13 @@ function ye({
249
298
  "td",
250
299
  {
251
300
  className: "whitespace-nowrap py-2 pr-3 text-slate-500 dark:text-slate-400",
252
- "data-tip": oe(e.at),
253
- children: M(e.at)
301
+ "data-tip": le(e.at),
302
+ children: E(e.at)
254
303
  }
255
304
  ),
256
305
  /* @__PURE__ */ t("td", { className: "max-w-[160px] truncate py-2 pr-3 text-slate-700 dark:text-slate-200", children: e.app }),
257
306
  /* @__PURE__ */ t("td", { className: "py-2 pr-3 font-mono text-[11.5px] text-slate-700 dark:text-slate-200", children: e.tool ?? "—" }),
258
- /* @__PURE__ */ t("td", { className: "max-w-[220px] truncate py-2 pr-3", children: x ? /* @__PURE__ */ n(
307
+ /* @__PURE__ */ t("td", { className: "max-w-[220px] truncate py-2 pr-3", children: x ? /* @__PURE__ */ a(
259
308
  "a",
260
309
  {
261
310
  href: u(x),
@@ -270,27 +319,27 @@ function ye({
270
319
  ]
271
320
  }
272
321
  ) : s ? /* @__PURE__ */ t("span", { className: "font-mono text-[11.5px] text-slate-600 dark:text-slate-300", children: s.collection }) : /* @__PURE__ */ t("span", { className: "text-slate-400 dark:text-slate-500", children: "—" }) }),
273
- /* @__PURE__ */ t("td", { className: "py-2 pr-3", children: /* @__PURE__ */ n("span", { className: "inline-flex items-center gap-1.5", children: [
322
+ /* @__PURE__ */ t("td", { className: "py-2 pr-3", children: /* @__PURE__ */ a("span", { className: "inline-flex items-center gap-1.5", children: [
274
323
  /* @__PURE__ */ t(Q, { tone: h.tone, children: h.label }),
275
- e.writes.length > 0 && /* @__PURE__ */ n("span", { className: "text-[11.5px] text-slate-500 dark:text-slate-400", children: [
324
+ e.writes.length > 0 && /* @__PURE__ */ a("span", { className: "text-[11.5px] text-slate-500 dark:text-slate-400", children: [
276
325
  e.writes.length,
277
326
  " write",
278
327
  e.writes.length === 1 ? "" : "s"
279
328
  ] })
280
329
  ] }) }),
281
- /* @__PURE__ */ t("td", { className: "whitespace-nowrap py-2 pr-1 text-right tabular-nums text-slate-500 dark:text-slate-400", children: e.bytes != null ? U(e.bytes) : "" })
330
+ /* @__PURE__ */ t("td", { className: "whitespace-nowrap py-2 pr-1 text-right tabular-nums text-slate-500 dark:text-slate-400", children: e.bytes != null ? B(e.bytes) : "" })
282
331
  ]
283
332
  }
284
333
  ),
285
- l && /* @__PURE__ */ n("tr", { className: "border-b border-slate-100 dark:border-border/60", children: [
334
+ l && /* @__PURE__ */ a("tr", { className: "border-b border-slate-100 dark:border-border/60", children: [
286
335
  /* @__PURE__ */ t("td", {}),
287
- /* @__PURE__ */ n("td", { colSpan: 6, className: "pb-3 pr-3", children: [
288
- e.message && /* @__PURE__ */ n("p", { className: "mb-1.5 text-[12px] text-slate-600 dark:text-slate-300", children: [
336
+ /* @__PURE__ */ a("td", { colSpan: 6, className: "pb-3 pr-3", children: [
337
+ e.message && /* @__PURE__ */ a("p", { className: "mb-1.5 text-[12px] text-slate-600 dark:text-slate-300", children: [
289
338
  /* @__PURE__ */ t("span", { className: "font-medium", children: e.outcome === "refused" ? "Nivaro said no: " : "It failed: " }),
290
339
  e.message
291
340
  ] }),
292
341
  e.writes.length > 0 && /* @__PURE__ */ t("ul", { className: "divide-y divide-slate-100 dark:divide-border/60", children: e.writes.map((o) => /* @__PURE__ */ t(
293
- ge,
342
+ ke,
294
343
  {
295
344
  w: o,
296
345
  onUndo: () => i(o),
@@ -298,7 +347,7 @@ function ye({
298
347
  },
299
348
  o.activity_id
300
349
  )) }),
301
- /* @__PURE__ */ n("p", { className: "mt-1 text-[11.5px] text-slate-500 dark:text-slate-400", children: [
350
+ /* @__PURE__ */ a("p", { className: "mt-1 text-[11.5px] text-slate-500 dark:text-slate-400", children: [
302
351
  e.api_calls,
303
352
  " request",
304
353
  e.api_calls === 1 ? "" : "s",
@@ -310,55 +359,55 @@ function ye({
310
359
  ] })
311
360
  ] });
312
361
  }
313
- function De({ className: e }) {
314
- var P, S, $, F, D, I;
315
- const i = re(), r = z(), [l, d] = N(""), u = ae(null), [p, h] = N(null), c = V({
362
+ function Ae({ className: e }) {
363
+ var P, S, $, R, F, L;
364
+ const i = se(), r = z(), [l, d] = v(""), u = ae(null), [p, h] = v(null), m = V({
316
365
  queryKey: T("mine"),
317
- queryFn: () => i.request(L("/mcp-connections/mine")).then((a) => a.data)
366
+ queryFn: () => i.request(q("/mcp-connections/mine")).then((n) => n.data)
318
367
  }), s = Z({
319
368
  queryKey: ["nvr-mcp-activity", l],
320
369
  initialPageParam: null,
321
- queryFn: ({ pageParam: a }) => i.request(
322
- L(
370
+ queryFn: ({ pageParam: n }) => i.request(
371
+ q(
323
372
  "/mcp-connections/mine/activity",
324
- { ...l ? { conn: l } : {}, ...a ? { before: a } : {}, limit: 50 }
373
+ { ...l ? { conn: l } : {}, ...n ? { before: n } : {}, limit: 50 }
325
374
  )
326
- ).then((m) => m.data),
327
- getNextPageParam: (a) => a.next_before
328
- }), x = q({
329
- mutationFn: (a) => i.request(se(`/mcp-connections/mine/${a}`)),
375
+ ).then((c) => c.data),
376
+ getNextPageParam: (n) => n.next_before
377
+ }), x = D({
378
+ mutationFn: (n) => i.request(re(`/mcp-connections/mine/${n}`)),
330
379
  onSuccess: () => {
331
380
  h({ tone: "ok", text: "Disconnected. Its tokens stopped working at once." }), r.invalidateQueries({ queryKey: T("mine") });
332
381
  },
333
- onError: (a) => h({ tone: "bad", text: (a == null ? void 0 : a.message) || "Could not disconnect" })
334
- }), o = q({
335
- mutationFn: (a) => i.request(le(`/mcp-connections/mine/activity/${a.activity_id}/undo`)),
336
- onSuccess: (a, m) => {
382
+ onError: (n) => h({ tone: "bad", text: (n == null ? void 0 : n.message) || "Could not disconnect" })
383
+ }), o = D({
384
+ mutationFn: (n) => i.request(oe(`/mcp-connections/mine/activity/${n.activity_id}/undo`)),
385
+ onSuccess: (n, c) => {
337
386
  h({
338
387
  tone: "ok",
339
- text: m.action === "create" ? "Undone — the record was deleted." : "Undone — the previous values are back."
388
+ text: c.action === "create" ? "Undone — the record was deleted." : "Undone — the previous values are back."
340
389
  }), r.invalidateQueries({ queryKey: ["nvr-mcp-activity"] });
341
390
  },
342
- onError: (a) => h({ tone: "bad", text: (a == null ? void 0 : a.message) || "Could not undo that change" })
343
- }), b = ((P = c.data) == null ? void 0 : P.connections) ?? [], C = A(() => {
344
- var a;
345
- return ((a = s.data) == null ? void 0 : a.pages.flatMap((m) => m.calls)) ?? [];
346
- }, [s.data]), j = ((S = c.data) == null ? void 0 : S.logged) !== !1 && ((F = ($ = s.data) == null ? void 0 : $.pages[0]) == null ? void 0 : F.logged) !== !1, _ = A(
391
+ onError: (n) => h({ tone: "bad", text: (n == null ? void 0 : n.message) || "Could not undo that change" })
392
+ }), b = ((P = m.data) == null ? void 0 : P.connections) ?? [], f = I(() => {
393
+ var n;
394
+ return ((n = s.data) == null ? void 0 : n.pages.flatMap((c) => c.calls)) ?? [];
395
+ }, [s.data]), j = ((S = m.data) == null ? void 0 : S.logged) !== !1 && ((R = ($ = s.data) == null ? void 0 : $.pages[0]) == null ? void 0 : R.logged) !== !1, _ = I(
347
396
  () => [
348
397
  { value: "", label: "Every app" },
349
- ...b.filter((a) => {
350
- var m;
351
- return (((m = a.stats) == null ? void 0 : m.calls) ?? 0) > 0;
352
- }).map((a) => ({ value: a.conn, label: a.name }))
398
+ ...b.filter((n) => {
399
+ var c;
400
+ return (((c = n.stats) == null ? void 0 : c.calls) ?? 0) > 0;
401
+ }).map((n) => ({ value: n.conn, label: n.name }))
353
402
  ],
354
403
  [b]
355
- ), v = (D = c.data) == null ? void 0 : D.settings;
356
- return /* @__PURE__ */ n("div", { className: g("flex flex-col gap-4", e), "data-nvr-agents": !0, children: [
357
- p && /* @__PURE__ */ n(
404
+ ), N = (F = m.data) == null ? void 0 : F.settings;
405
+ return /* @__PURE__ */ a("div", { className: y("flex flex-col gap-4", e), "data-nvr-agents": !0, children: [
406
+ p && /* @__PURE__ */ a(
358
407
  "div",
359
408
  {
360
409
  role: "status",
361
- className: g(
410
+ className: y(
362
411
  "flex items-center justify-between gap-3 rounded-md border px-3 py-2 text-[12.5px]",
363
412
  p.tone === "ok" ? "border-emerald-200 bg-emerald-50 text-emerald-800 dark:border-emerald-500/30 dark:bg-emerald-500/10 dark:text-emerald-300" : "border-red-200 bg-red-50 text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-300"
364
413
  ),
@@ -377,49 +426,49 @@ function De({ className: e }) {
377
426
  }
378
427
  ),
379
428
  /* @__PURE__ */ t(
380
- R,
429
+ A,
381
430
  {
382
431
  icon: /* @__PURE__ */ t(H, { className: "h-4 w-4" }),
383
432
  title: "Connected apps",
384
433
  hint: "AI assistants that act as you through Nivaro’s MCP server, with your permissions",
385
- children: c.isLoading ? /* @__PURE__ */ t(K, {}) : c.isError ? /* @__PURE__ */ t(y, { children: "Connected apps could not be loaded. Try again in a moment." }) : b.length === 0 ? /* @__PURE__ */ n("div", { className: "flex items-start gap-3", children: [
434
+ children: m.isLoading ? /* @__PURE__ */ t(K, {}) : m.isError ? /* @__PURE__ */ t(k, { children: "Connected apps could not be loaded. Try again in a moment." }) : b.length === 0 ? /* @__PURE__ */ a("div", { className: "flex items-start gap-3", children: [
386
435
  /* @__PURE__ */ t(G, { className: "mt-0.5 h-5 w-5 shrink-0 text-slate-400" }),
387
436
  /* @__PURE__ */ t("p", { className: "max-w-[70ch] text-[12.5px] text-slate-600 dark:text-slate-300", children: "No assistant is connected. Add Nivaro as a connector in Claude, ChatGPT, Claude Code or Codex and sign in — the app shows up here with what it did, and you can disconnect it at any time." })
388
- ] }) : /* @__PURE__ */ n(W, { children: [
389
- /* @__PURE__ */ t("ul", { className: "divide-y divide-slate-100 dark:divide-border/60", children: b.map((a) => /* @__PURE__ */ t(
390
- fe,
437
+ ] }) : /* @__PURE__ */ a(M, { children: [
438
+ /* @__PURE__ */ t("ul", { className: "divide-y divide-slate-100 dark:divide-border/60", children: b.map((n) => /* @__PURE__ */ t(
439
+ ye,
391
440
  {
392
- c: a,
441
+ c: n,
393
442
  onShowCalls: () => {
394
- var m;
395
- d(a.conn), (m = u.current) == null || m.scrollIntoView({ block: "start", behavior: "smooth" });
443
+ var c;
444
+ d(n.conn), (c = u.current) == null || c.scrollIntoView({ block: "start", behavior: "smooth" });
396
445
  },
397
- onDisconnect: () => x.mutate(a.conn),
398
- disconnecting: x.isPending && x.variables === a.conn
446
+ onDisconnect: () => x.mutate(n.conn),
447
+ disconnecting: x.isPending && x.variables === n.conn
399
448
  },
400
- a.conn
449
+ n.conn
401
450
  )) }),
402
- v && /* @__PURE__ */ n("p", { className: "mt-3 text-[11.5px] text-slate-500 dark:text-slate-400", children: [
451
+ N && /* @__PURE__ */ a("p", { className: "mt-3 text-[11.5px] text-slate-500 dark:text-slate-400", children: [
403
452
  "Figures cover the last ",
404
- ((I = c.data) == null ? void 0 : I.window_days) ?? 14,
453
+ ((L = m.data) == null ? void 0 : L.window_days) ?? 14,
405
454
  " days. A connection left unused for ",
406
- v.idle_flag_days,
455
+ N.idle_flag_days,
407
456
  " days is pointed out to you, and disconnected after",
408
457
  " ",
409
- v.idle_revoke_days,
458
+ N.idle_revoke_days,
410
459
  " days with a week’s notice."
411
460
  ] })
412
461
  ] })
413
462
  }
414
463
  ),
415
464
  /* @__PURE__ */ t("div", { ref: u, className: "scroll-mt-4", children: /* @__PURE__ */ t(
416
- R,
465
+ A,
417
466
  {
418
467
  icon: /* @__PURE__ */ t(X, { className: "h-4 w-4" }),
419
468
  title: "What my agents did",
420
469
  hint: "Every tool call, newest first. Open one to see its changes and undo them.",
421
470
  actions: _.length > 2 ? /* @__PURE__ */ t(
422
- ie,
471
+ ce,
423
472
  {
424
473
  value: l,
425
474
  onChange: d,
@@ -427,9 +476,9 @@ function De({ className: e }) {
427
476
  ariaLabel: "Show calls from"
428
477
  }
429
478
  ) : null,
430
- children: j ? s.isLoading ? /* @__PURE__ */ t(K, { rows: 5 }) : s.isError ? /* @__PURE__ */ t(y, { children: "The list could not be loaded. Try again in a moment." }) : C.length === 0 ? /* @__PURE__ */ t(y, { children: l ? "This app made no tool calls in the last 14 days." : "Your agents made no tool calls in the last 14 days." }) : /* @__PURE__ */ n("div", { className: "-mx-1 overflow-x-auto", children: [
431
- /* @__PURE__ */ n("table", { className: "w-full min-w-[640px] text-left text-[12px]", children: [
432
- /* @__PURE__ */ t("thead", { children: /* @__PURE__ */ n("tr", { className: "border-b border-slate-200 text-[11px] font-medium text-slate-500 dark:border-border dark:text-slate-400", children: [
479
+ children: j ? s.isLoading ? /* @__PURE__ */ t(K, { rows: 5 }) : s.isError ? /* @__PURE__ */ t(k, { children: "The list could not be loaded. Try again in a moment." }) : f.length === 0 ? /* @__PURE__ */ t(k, { children: l ? "This app made no tool calls in the last 14 days." : "Your agents made no tool calls in the last 14 days." }) : /* @__PURE__ */ a("div", { className: "-mx-1 overflow-x-auto", children: [
480
+ /* @__PURE__ */ a("table", { className: "w-full min-w-[640px] text-left text-[12px]", children: [
481
+ /* @__PURE__ */ t("thead", { children: /* @__PURE__ */ a("tr", { className: "border-b border-slate-200 text-[11px] font-medium text-slate-500 dark:border-border dark:text-slate-400", children: [
433
482
  /* @__PURE__ */ t("th", { className: "w-5" }),
434
483
  /* @__PURE__ */ t("th", { className: "py-1.5 pr-3 font-medium", children: "When" }),
435
484
  /* @__PURE__ */ t("th", { className: "py-1.5 pr-3 font-medium", children: "App" }),
@@ -438,20 +487,20 @@ function De({ className: e }) {
438
487
  /* @__PURE__ */ t("th", { className: "py-1.5 pr-3 font-medium", children: "Result" }),
439
488
  /* @__PURE__ */ t("th", { className: "py-1.5 pr-1 text-right font-medium", children: "Answer size" })
440
489
  ] }) }),
441
- /* @__PURE__ */ t("tbody", { children: C.map((a) => {
442
- var m;
490
+ /* @__PURE__ */ t("tbody", { children: f.map((n) => {
491
+ var c;
443
492
  return /* @__PURE__ */ t(
444
- ye,
493
+ Ne,
445
494
  {
446
- call: a,
447
- onUndo: (B) => o.mutate(B),
448
- undoingId: o.isPending ? ((m = o.variables) == null ? void 0 : m.activity_id) ?? null : null
495
+ call: n,
496
+ onUndo: (W) => o.mutate(W),
497
+ undoingId: o.isPending ? ((c = o.variables) == null ? void 0 : c.activity_id) ?? null : null
449
498
  },
450
- a.id
499
+ n.id
451
500
  );
452
501
  }) })
453
502
  ] }),
454
- s.hasNextPage && /* @__PURE__ */ n(
503
+ s.hasNextPage && /* @__PURE__ */ a(
455
504
  "button",
456
505
  {
457
506
  type: "button",
@@ -459,21 +508,21 @@ function De({ className: e }) {
459
508
  disabled: s.isFetchingNextPage,
460
509
  className: "mt-3 inline-flex h-7 items-center gap-1.5 rounded-md border border-slate-200 px-3 text-[12px] font-medium text-slate-700 transition-colors hover:bg-muted disabled:opacity-40 dark:border-border dark:text-slate-200",
461
510
  children: [
462
- s.isFetchingNextPage && /* @__PURE__ */ t(k, { className: "h-3.5 w-3.5 animate-spin" }),
511
+ s.isFetchingNextPage && /* @__PURE__ */ t(w, { className: "h-3.5 w-3.5 animate-spin" }),
463
512
  "Show older calls"
464
513
  ]
465
514
  }
466
515
  )
467
- ] }) : /* @__PURE__ */ t(y, { children: "Tool calls are not recorded on this instance yet — it needs the latest update." })
516
+ ] }) : /* @__PURE__ */ t(k, { children: "Tool calls are not recorded on this instance yet — it needs the latest update." })
468
517
  }
469
518
  ) })
470
519
  ] });
471
520
  }
472
521
  export {
473
- De as AgentsPanel,
474
- pe as CallFigures,
475
- me as CallsSparkline,
476
- he as IdleNote,
477
- ue as KindPill,
522
+ Ae as AgentsPanel,
523
+ xe as CallFigures,
524
+ he as CallsSparkline,
525
+ fe as IdleNote,
526
+ be as KindPill,
478
527
  T as mcpConnectionsKey
479
528
  };