@lunora/studio 1.0.0-alpha.19 → 1.0.0-alpha.20

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 (35) hide show
  1. package/dist/index.d.ts +4 -3
  2. package/dist/index.js +24 -24
  3. package/dist/mount.d.ts +1 -1
  4. package/dist/mount.js +1 -1
  5. package/dist/packem_shared/{ADMIN_FUNCTIONS-CZJCZ4c7.js → ADMIN_FUNCTIONS-CdaxLGkE.js} +1 -0
  6. package/dist/packem_shared/{ApiDocsPanel-yEz0fiof.js → ApiDocsPanel-BgrN4kml.js} +1 -1
  7. package/dist/packem_shared/{ApiTab-DdubReQI.js → ApiTab-CHkX49o_.js} +1 -1
  8. package/dist/packem_shared/{AuditPanel-CE5ofjCc.js → AuditPanel-CP9HM9nq.js} +1 -1
  9. package/dist/packem_shared/{DataBrowser-DpL8U-Nf.js → DataBrowser-Bb1gTQ6c.js} +1 -1
  10. package/dist/packem_shared/{ExportImportPanel-ChsSUCYZ.js → ExportImportPanel-Dj87tRa5.js} +1 -1
  11. package/dist/packem_shared/{FileBrowser-DsRBnVhZ.js → FileBrowser-CWvxp_is.js} +1 -1
  12. package/dist/packem_shared/{FunctionRunner-D4cZ6fuA.js → FunctionRunner-DlWApMCH.js} +1 -1
  13. package/dist/packem_shared/{FunctionStatsPanel-BVelWgNv.js → FunctionStatsPanel-CuO2Tmw-.js} +1 -1
  14. package/dist/packem_shared/{HealthPanel-CxUVKfvo.js → HealthPanel-Dj0GRo5P.js} +1 -1
  15. package/dist/packem_shared/{HomePanel-tfqpZxuu.js → HomePanel-BewOCuag.js} +1 -1
  16. package/dist/packem_shared/{InsightsPanel-DNg3K9XN.js → InsightsPanel-y_Q-xdPY.js} +1 -1
  17. package/dist/packem_shared/{LogsPanel-B4LoSRj0.js → LogsPanel-C7crgYoS.js} +1 -1
  18. package/dist/packem_shared/{MailPanel-CcpdyWYs.js → MailPanel-PILidruz.js} +1 -1
  19. package/dist/packem_shared/{MetricsPanel-CxoyWbNb.js → MetricsPanel-DioILzgf.js} +1 -1
  20. package/dist/packem_shared/{MigrationsPanel-DGwJGWDA.js → MigrationsPanel-DkIcRoE5.js} +1 -1
  21. package/dist/packem_shared/{PitrPanel-CKUzyyHi.js → PitrPanel-yKJ1JPPk.js} +1 -1
  22. package/dist/packem_shared/{SchemaViewer-RclXFo9Q.js → SchemaViewer-CNr8Wame.js} +1 -1
  23. package/dist/packem_shared/{SecurityAdvisorPanel-Dqql1Z5O.js → SecurityAdvisorPanel-BBzv7L3c.js} +1 -1
  24. package/dist/packem_shared/{SettingsPanel-D5iTY0YE.js → SettingsPanel-BKSKl8tl.js} +1 -1
  25. package/dist/packem_shared/{SqlEditorPanel-Dj-In-B3.js → SqlEditorPanel-CkemCQvy.js} +2 -2
  26. package/dist/packem_shared/Studio-QkOjc2NS.js +33 -0
  27. package/dist/packem_shared/{StudioApp-BhQ6T2pn.js → StudioApp-TEElspKL.js} +1 -1
  28. package/dist/packem_shared/{TableEditor-BY8bTpCl.js → TableEditor-JS3sXYgS.js} +2 -2
  29. package/dist/packem_shared/{app.d-BVJFkXyj.d.ts → app.d-Cnij4Zp5.d.ts} +1 -1
  30. package/dist/packem_shared/{sql-editor-panel-CMdxstu5.js → sql-editor-panel-CUJoYF1Z.js} +1 -1
  31. package/dist/packem_shared/{studio-D8ry3tJR.js → studio-c5Vf7kSh.js} +1050 -561
  32. package/dist/packem_shared/{table-editor-CWx68ZCg.js → table-editor-9fhJ4hMJ.js} +1 -1
  33. package/dist/standalone/studio.js +160 -160
  34. package/package.json +2 -2
  35. package/dist/packem_shared/Studio-VWvKNOw4.js +0 -33
@@ -20,43 +20,43 @@ import { B as Button } from './button-BhsN2uZH.js';
20
20
  import { Dialog } from '@base-ui/react/dialog';
21
21
  import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
22
22
  import { S as Skeleton } from './reference-view-B4E49Lip.js';
23
- import { InsightsPanel } from './InsightsPanel-DNg3K9XN.js';
23
+ import { InsightsPanel } from './InsightsPanel-y_Q-xdPY.js';
24
24
  import { a as CardContent, C as Card, b as CardHeader, c as CardTitle, d as CardDescription } from './card-DURq3ElK.js';
25
25
  import { E as EmptyState } from './empty-state-DY_oe0k6.js';
26
26
  import { T as Table, a as TableHeader, b as TableRow, c as TableHead, d as TableBody, e as TableCell } from './table-_RzNvy3R.js';
27
27
  import { u as useAdminQuery, b as useClientQuery } from './use-admin-query-BkbdNFNz.js';
28
- import { ADMIN_FUNCTIONS } from './ADMIN_FUNCTIONS-CZJCZ4c7.js';
29
- import SecurityAdvisorPanel from './SecurityAdvisorPanel-Dqql1Z5O.js';
28
+ import { ADMIN_FUNCTIONS } from './ADMIN_FUNCTIONS-CdaxLGkE.js';
29
+ import SecurityAdvisorPanel from './SecurityAdvisorPanel-BBzv7L3c.js';
30
30
  import { createAnalyticsSqlClient } from '@lunora/bindings/analytics';
31
31
  import { e as errorMessage, f as fireAndForget, h as formatCell, b as formatTimestamp, g as copyToClipboard, c as callOptions, a as adminRef } from './internal-rXJEAhXS.js';
32
- import ApiTab from './ApiTab-DdubReQI.js';
32
+ import ApiTab from './ApiTab-CHkX49o_.js';
33
33
  import { useLunora } from '@lunora/react';
34
34
  import { useAutoRefresh } from './DEFAULT_AUTO_REFRESH_MS-Vxwaxx51.js';
35
35
  import useDebounced from './useDebounced-Dxncpg6z.js';
36
36
  import { L as Label } from './label-D8ykjn5J.js';
37
37
  import { M as ModalShell } from './grid-features-CzUfqgsM.js';
38
- import { v as validateDataViewSearch, T as TableEditor } from './table-editor-CWx68ZCg.js';
39
- import { ExportImportPanel } from './ExportImportPanel-ChsSUCYZ.js';
40
- import { MigrationsPanel } from './MigrationsPanel-DGwJGWDA.js';
41
- import { PitrPanel } from './PitrPanel-CKUzyyHi.js';
38
+ import { v as validateDataViewSearch, T as TableEditor } from './table-editor-9fhJ4hMJ.js';
39
+ import { ExportImportPanel } from './ExportImportPanel-Dj87tRa5.js';
40
+ import { MigrationsPanel } from './MigrationsPanel-DkIcRoE5.js';
41
+ import { PitrPanel } from './PitrPanel-yKJ1JPPk.js';
42
42
  import { T as Textarea } from './textarea-D3gaCU_-.js';
43
- import { FunctionRunner } from './FunctionRunner-D4cZ6fuA.js';
44
- import { FunctionStatsPanel } from './FunctionStatsPanel-BVelWgNv.js';
45
- import { HomePanel } from './HomePanel-tfqpZxuu.js';
46
- import { AuditPanel } from './AuditPanel-CE5ofjCc.js';
43
+ import { FunctionRunner } from './FunctionRunner-DlWApMCH.js';
44
+ import { FunctionStatsPanel } from './FunctionStatsPanel-CuO2Tmw-.js';
45
+ import { HomePanel } from './HomePanel-BewOCuag.js';
46
+ import { AuditPanel } from './AuditPanel-CP9HM9nq.js';
47
47
  import { C as CLOUDFLARE_OBSERVABILITY_URL } from './cf-links-2cktDedA.js';
48
- import { LogsPanel } from './LogsPanel-B4LoSRj0.js';
49
- import { MailPanel } from './MailPanel-CcpdyWYs.js';
48
+ import { LogsPanel } from './LogsPanel-C7crgYoS.js';
49
+ import { MailPanel } from './MailPanel-PILidruz.js';
50
50
  import { ConfirmButton } from './ConfirmButton-C2eVi2Qv.js';
51
51
  import { ScheduledJobs } from './ScheduledJobs-BWNwIN3I.js';
52
52
  import { ShardInput } from './ShardInput-gx_DZXXn.js';
53
53
  import { L as LiveError } from './live-status-FZ0psC1z.js';
54
- import { u as usePersistedList, A as Alert, a as SqlResultChart, n as newId, S as SqlEditorPanel } from './sql-editor-panel-CMdxstu5.js';
55
- import { HealthPanel } from './HealthPanel-CxUVKfvo.js';
56
- import { MetricsPanel } from './MetricsPanel-CxoyWbNb.js';
57
- import { SchemaViewer } from './SchemaViewer-RclXFo9Q.js';
58
- import { SettingsPanel } from './SettingsPanel-D5iTY0YE.js';
59
- import { FileBrowser } from './FileBrowser-DsRBnVhZ.js';
54
+ import { u as usePersistedList, A as Alert, a as SqlResultChart, n as newId, S as SqlEditorPanel } from './sql-editor-panel-CUJoYF1Z.js';
55
+ import { HealthPanel } from './HealthPanel-Dj0GRo5P.js';
56
+ import { MetricsPanel } from './MetricsPanel-DioILzgf.js';
57
+ import { SchemaViewer } from './SchemaViewer-CNr8Wame.js';
58
+ import { SettingsPanel } from './SettingsPanel-BKSKl8tl.js';
59
+ import { FileBrowser } from './FileBrowser-CWvxp_is.js';
60
60
  import { StudioI18nProvider } from './StudioI18nProvider-B-tDCZIi.js';
61
61
  import { CommandPalette, openCommandPalette } from './CommandPalette-BtgkBzZI.js';
62
62
 
@@ -302,7 +302,7 @@ const writeBannerDismissed = () => {
302
302
  const RulesBanner = () => {
303
303
  const $ = c(18);
304
304
  const t = useT();
305
- const [dismissed, setDismissed] = useState(_temp$8);
305
+ const [dismissed, setDismissed] = useState(_temp$9);
306
306
  let t0;
307
307
  if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
308
308
  t0 = () => {
@@ -422,7 +422,7 @@ const RulesBanner = () => {
422
422
  }
423
423
  return t9;
424
424
  };
425
- function _temp$8() {
425
+ function _temp$9() {
426
426
  return readBannerDismissed();
427
427
  }
428
428
 
@@ -1922,7 +1922,7 @@ const RlsPanel = () => {
1922
1922
  }
1923
1923
  return t14;
1924
1924
  };
1925
- function _temp$7(permission) {
1925
+ function _temp$8(permission) {
1926
1926
  return /* @__PURE__ */ jsxDEV(Badge, {
1927
1927
  variant: "outline",
1928
1928
  children: permission
@@ -1944,7 +1944,7 @@ function _temp2$4(role) {
1944
1944
  children: "—"
1945
1945
  }, void 0, false) : /* @__PURE__ */ jsxDEV("span", {
1946
1946
  className: "flex flex-wrap gap-1",
1947
- children: role.permissions.map(_temp$7)
1947
+ children: role.permissions.map(_temp$8)
1948
1948
  }, void 0, false)
1949
1949
  }, void 0, false)]
1950
1950
  }, role.name, true);
@@ -2052,7 +2052,7 @@ const PanelResult = (t0) => {
2052
2052
  t7 = !loading && error === null && result !== null && result.rows.length > 0 && /* @__PURE__ */ jsxDEV(Table, {
2053
2053
  children: [/* @__PURE__ */ jsxDEV(TableHeader, {
2054
2054
  children: /* @__PURE__ */ jsxDEV(TableRow, {
2055
- children: result.columns.map(_temp$6)
2055
+ children: result.columns.map(_temp$7)
2056
2056
  }, void 0, false)
2057
2057
  }, void 0, false), /* @__PURE__ */ jsxDEV(TableBody, {
2058
2058
  children: result.rows.map((row, rowIndex) => /* @__PURE__ */ jsxDEV(TableRow, {
@@ -2194,7 +2194,7 @@ const AnalyticsPanel = ({
2194
2194
  }, panel_0.key, false))
2195
2195
  }, void 0, false);
2196
2196
  };
2197
- function _temp$6(column) {
2197
+ function _temp$7(column) {
2198
2198
  return /* @__PURE__ */ jsxDEV(TableHead, {
2199
2199
  children: column.name
2200
2200
  }, column.name, false);
@@ -2588,7 +2588,7 @@ const OrgRowTable = (t0) => {
2588
2588
  }
2589
2589
  let t2;
2590
2590
  if ($[2] !== columns) {
2591
- t2 = columns.map(_temp$5);
2591
+ t2 = columns.map(_temp$6);
2592
2592
  $[2] = columns;
2593
2593
  $[3] = t2;
2594
2594
  } else {
@@ -3193,7 +3193,7 @@ const OrganizationsPanel = () => {
3193
3193
  }
3194
3194
  return t33;
3195
3195
  };
3196
- function _temp$5(column) {
3196
+ function _temp$6(column) {
3197
3197
  return /* @__PURE__ */ jsxDEV(TableHead, {
3198
3198
  children: column.head
3199
3199
  }, column.head, false);
@@ -5076,7 +5076,7 @@ const DeadLetterJobs = (t0) => {
5076
5076
  if ($[3] !== client || $[4] !== loadJobs) {
5077
5077
  t3 = async () => {
5078
5078
  const records = await (loadJobs ?? (() => client.listDeadJobs()))();
5079
- return records.toSorted(_temp$4);
5079
+ return records.toSorted(_temp$5);
5080
5080
  };
5081
5081
  $[3] = client;
5082
5082
  $[4] = loadJobs;
@@ -5279,7 +5279,7 @@ const DeadLetterJobs = (t0) => {
5279
5279
  }
5280
5280
  return t11;
5281
5281
  };
5282
- function _temp$4(a, b) {
5282
+ function _temp$5(a, b) {
5283
5283
  return (b.attempts ?? 0) - (a.attempts ?? 0);
5284
5284
  }
5285
5285
 
@@ -5361,7 +5361,7 @@ const SchedulerPoolsPanel = (t0) => {
5361
5361
  const next = await (loadStatus ?? (() => client.schedulerStatus()))();
5362
5362
  return {
5363
5363
  ...next,
5364
- pools: next.pools.toSorted(_temp$3)
5364
+ pools: next.pools.toSorted(_temp$4)
5365
5365
  };
5366
5366
  };
5367
5367
  $[4] = client;
@@ -5498,7 +5498,7 @@ const SchedulerPoolsPanel = (t0) => {
5498
5498
  }
5499
5499
  return t10;
5500
5500
  };
5501
- function _temp$3(a, b) {
5501
+ function _temp$4(a, b) {
5502
5502
  return b.queued - a.queued;
5503
5503
  }
5504
5504
  function _temp2$2(pool) {
@@ -6301,7 +6301,7 @@ const PermissionsMatrix = (t0) => {
6301
6301
  children: "—"
6302
6302
  }, void 0, false) : /* @__PURE__ */ jsxDEV("span", {
6303
6303
  className: "flex flex-wrap gap-1",
6304
- children: row.maskedColumns.map(_temp$2)
6304
+ children: row.maskedColumns.map(_temp$3)
6305
6305
  }, void 0, false)
6306
6306
  }, void 0, false)]
6307
6307
  }, row.table, true))
@@ -6319,7 +6319,7 @@ const PermissionsMatrix = (t0) => {
6319
6319
  }
6320
6320
  return t6;
6321
6321
  };
6322
- function _temp$2(column) {
6322
+ function _temp$3(column) {
6323
6323
  return /* @__PURE__ */ jsxDEV(Badge, {
6324
6324
  variant: "outline",
6325
6325
  children: column
@@ -6893,7 +6893,7 @@ const QueuesPanel = () => {
6893
6893
  const loaded = data !== void 0;
6894
6894
  let t1;
6895
6895
  if ($[1] !== data) {
6896
- t1 = Array.isArray(data?.queues) ? [...data.queues].toSorted(_temp$1) : [];
6896
+ t1 = Array.isArray(data?.queues) ? [...data.queues].toSorted(_temp$2) : [];
6897
6897
  $[1] = data;
6898
6898
  $[2] = t1;
6899
6899
  } else {
@@ -6987,7 +6987,7 @@ const QueuesPanel = () => {
6987
6987
  }
6988
6988
  return t6;
6989
6989
  };
6990
- function _temp$1(a, b) {
6990
+ function _temp$2(a, b) {
6991
6991
  return a.exportName.localeCompare(b.exportName);
6992
6992
  }
6993
6993
  function _temp2$1(queue) {
@@ -7778,6 +7778,469 @@ const DashboardsPanel = (t0) => {
7778
7778
  return t12;
7779
7779
  };
7780
7780
 
7781
+ const formatMs = (ms) => `${ms.toString()} ms`;
7782
+ const isFanoutIdle = (result) => result.totalConnections === 0 && result.shapePoke.passes === 0 && result.whisper.passes === 0;
7783
+ const StatCard = (t0) => {
7784
+ const $ = c(8);
7785
+ const {
7786
+ label,
7787
+ testId,
7788
+ value
7789
+ } = t0;
7790
+ let t1;
7791
+ if ($[0] !== label) {
7792
+ t1 = /* @__PURE__ */ jsxDEV("span", {
7793
+ className: "font-mono text-[11px] tracking-wide text-muted-foreground uppercase",
7794
+ children: label
7795
+ }, void 0, false);
7796
+ $[0] = label;
7797
+ $[1] = t1;
7798
+ } else {
7799
+ t1 = $[1];
7800
+ }
7801
+ let t2;
7802
+ if ($[2] !== testId || $[3] !== value) {
7803
+ t2 = /* @__PURE__ */ jsxDEV("span", {
7804
+ className: "truncate text-2xl font-semibold tabular-nums text-foreground",
7805
+ "data-testid": testId,
7806
+ children: value
7807
+ }, void 0, false);
7808
+ $[2] = testId;
7809
+ $[3] = value;
7810
+ $[4] = t2;
7811
+ } else {
7812
+ t2 = $[4];
7813
+ }
7814
+ let t3;
7815
+ if ($[5] !== t1 || $[6] !== t2) {
7816
+ t3 = /* @__PURE__ */ jsxDEV(Card, {
7817
+ className: "gap-0 py-0",
7818
+ children: /* @__PURE__ */ jsxDEV("div", {
7819
+ className: "flex flex-col gap-2.5 p-4",
7820
+ children: [t1, t2]
7821
+ }, void 0, true)
7822
+ }, void 0, false);
7823
+ $[5] = t1;
7824
+ $[6] = t2;
7825
+ $[7] = t3;
7826
+ } else {
7827
+ t3 = $[7];
7828
+ }
7829
+ return t3;
7830
+ };
7831
+ const PathCounters = (t0) => {
7832
+ const $ = c(48);
7833
+ const {
7834
+ counters,
7835
+ includeTiming,
7836
+ prefix,
7837
+ t,
7838
+ title
7839
+ } = t0;
7840
+ const t1 = `${prefix}-section`;
7841
+ let t2;
7842
+ if ($[0] !== title) {
7843
+ t2 = /* @__PURE__ */ jsxDEV("h3", {
7844
+ className: "text-sm font-medium text-foreground",
7845
+ children: title
7846
+ }, void 0, false);
7847
+ $[0] = title;
7848
+ $[1] = t2;
7849
+ } else {
7850
+ t2 = $[1];
7851
+ }
7852
+ const t3 = `${prefix}-stats`;
7853
+ let t4;
7854
+ if ($[2] !== t) {
7855
+ t4 = t("Passes");
7856
+ $[2] = t;
7857
+ $[3] = t4;
7858
+ } else {
7859
+ t4 = $[3];
7860
+ }
7861
+ const t5 = `${prefix}-passes`;
7862
+ let t6;
7863
+ if ($[4] !== counters.passes || $[5] !== t4 || $[6] !== t5) {
7864
+ t6 = /* @__PURE__ */ jsxDEV(StatCard, {
7865
+ label: t4,
7866
+ testId: t5,
7867
+ value: counters.passes
7868
+ }, void 0, false);
7869
+ $[4] = counters.passes;
7870
+ $[5] = t4;
7871
+ $[6] = t5;
7872
+ $[7] = t6;
7873
+ } else {
7874
+ t6 = $[7];
7875
+ }
7876
+ let t7;
7877
+ if ($[8] !== t) {
7878
+ t7 = t("Sockets iterated");
7879
+ $[8] = t;
7880
+ $[9] = t7;
7881
+ } else {
7882
+ t7 = $[9];
7883
+ }
7884
+ const t8 = `${prefix}-iterated`;
7885
+ let t9;
7886
+ if ($[10] !== counters.socketsIterated || $[11] !== t7 || $[12] !== t8) {
7887
+ t9 = /* @__PURE__ */ jsxDEV(StatCard, {
7888
+ label: t7,
7889
+ testId: t8,
7890
+ value: counters.socketsIterated
7891
+ }, void 0, false);
7892
+ $[10] = counters.socketsIterated;
7893
+ $[11] = t7;
7894
+ $[12] = t8;
7895
+ $[13] = t9;
7896
+ } else {
7897
+ t9 = $[13];
7898
+ }
7899
+ let t10;
7900
+ if ($[14] !== t) {
7901
+ t10 = t("Delivered");
7902
+ $[14] = t;
7903
+ $[15] = t10;
7904
+ } else {
7905
+ t10 = $[15];
7906
+ }
7907
+ const t11 = `${prefix}-delivered`;
7908
+ let t12;
7909
+ if ($[16] !== counters.socketsDelivered || $[17] !== t10 || $[18] !== t11) {
7910
+ t12 = /* @__PURE__ */ jsxDEV(StatCard, {
7911
+ label: t10,
7912
+ testId: t11,
7913
+ value: counters.socketsDelivered
7914
+ }, void 0, false);
7915
+ $[16] = counters.socketsDelivered;
7916
+ $[17] = t10;
7917
+ $[18] = t11;
7918
+ $[19] = t12;
7919
+ } else {
7920
+ t12 = $[19];
7921
+ }
7922
+ let t13;
7923
+ if ($[20] !== t) {
7924
+ t13 = t("Peak width");
7925
+ $[20] = t;
7926
+ $[21] = t13;
7927
+ } else {
7928
+ t13 = $[21];
7929
+ }
7930
+ const t14 = `${prefix}-peak`;
7931
+ let t15;
7932
+ if ($[22] !== counters.peakSocketsIterated || $[23] !== t13 || $[24] !== t14) {
7933
+ t15 = /* @__PURE__ */ jsxDEV(StatCard, {
7934
+ label: t13,
7935
+ testId: t14,
7936
+ value: counters.peakSocketsIterated
7937
+ }, void 0, false);
7938
+ $[22] = counters.peakSocketsIterated;
7939
+ $[23] = t13;
7940
+ $[24] = t14;
7941
+ $[25] = t15;
7942
+ } else {
7943
+ t15 = $[25];
7944
+ }
7945
+ let t16;
7946
+ if ($[26] !== counters.totalMs || $[27] !== includeTiming || $[28] !== prefix || $[29] !== t) {
7947
+ t16 = includeTiming && /* @__PURE__ */ jsxDEV(StatCard, {
7948
+ label: t("Total time"),
7949
+ testId: `${prefix}-total-ms`,
7950
+ value: formatMs(counters.totalMs)
7951
+ }, void 0, false);
7952
+ $[26] = counters.totalMs;
7953
+ $[27] = includeTiming;
7954
+ $[28] = prefix;
7955
+ $[29] = t;
7956
+ $[30] = t16;
7957
+ } else {
7958
+ t16 = $[30];
7959
+ }
7960
+ let t17;
7961
+ if ($[31] !== counters.maxMs || $[32] !== includeTiming || $[33] !== prefix || $[34] !== t) {
7962
+ t17 = includeTiming && /* @__PURE__ */ jsxDEV(StatCard, {
7963
+ label: t("Max time"),
7964
+ testId: `${prefix}-max-ms`,
7965
+ value: formatMs(counters.maxMs)
7966
+ }, void 0, false);
7967
+ $[31] = counters.maxMs;
7968
+ $[32] = includeTiming;
7969
+ $[33] = prefix;
7970
+ $[34] = t;
7971
+ $[35] = t17;
7972
+ } else {
7973
+ t17 = $[35];
7974
+ }
7975
+ let t18;
7976
+ if ($[36] !== t12 || $[37] !== t15 || $[38] !== t16 || $[39] !== t17 || $[40] !== t3 || $[41] !== t6 || $[42] !== t9) {
7977
+ t18 = /* @__PURE__ */ jsxDEV("dl", {
7978
+ className: "grid gap-3 sm:grid-cols-2 lg:grid-cols-3",
7979
+ "data-testid": t3,
7980
+ children: [t6, t9, t12, t15, t16, t17]
7981
+ }, void 0, true);
7982
+ $[36] = t12;
7983
+ $[37] = t15;
7984
+ $[38] = t16;
7985
+ $[39] = t17;
7986
+ $[40] = t3;
7987
+ $[41] = t6;
7988
+ $[42] = t9;
7989
+ $[43] = t18;
7990
+ } else {
7991
+ t18 = $[43];
7992
+ }
7993
+ let t19;
7994
+ if ($[44] !== t1 || $[45] !== t18 || $[46] !== t2) {
7995
+ t19 = /* @__PURE__ */ jsxDEV("section", {
7996
+ className: "flex flex-col gap-2",
7997
+ "data-testid": t1,
7998
+ children: [t2, t18]
7999
+ }, void 0, true);
8000
+ $[44] = t1;
8001
+ $[45] = t18;
8002
+ $[46] = t2;
8003
+ $[47] = t19;
8004
+ } else {
8005
+ t19 = $[47];
8006
+ }
8007
+ return t19;
8008
+ };
8009
+ const FanoutPanel = (t0) => {
8010
+ const $ = c(31);
8011
+ const {
8012
+ initialShardKey
8013
+ } = t0;
8014
+ const t = useT();
8015
+ const [shardKey, setShardKey] = useState(initialShardKey ?? "");
8016
+ let t1;
8017
+ if ($[0] !== shardKey) {
8018
+ t1 = shardKey.trim();
8019
+ $[0] = shardKey;
8020
+ $[1] = t1;
8021
+ } else {
8022
+ t1 = $[1];
8023
+ }
8024
+ const debouncedShard = useDebounced(t1, 400);
8025
+ let t2;
8026
+ if ($[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
8027
+ t2 = {};
8028
+ $[2] = t2;
8029
+ } else {
8030
+ t2 = $[2];
8031
+ }
8032
+ let t3;
8033
+ if ($[3] !== debouncedShard) {
8034
+ t3 = {
8035
+ keepPreviousData: true,
8036
+ shardKey: debouncedShard
8037
+ };
8038
+ $[3] = debouncedShard;
8039
+ $[4] = t3;
8040
+ } else {
8041
+ t3 = $[4];
8042
+ }
8043
+ const {
8044
+ data: result,
8045
+ error,
8046
+ refetch
8047
+ } = useAdminQuery(ADMIN_FUNCTIONS.getFanoutMetrics, t2, t3);
8048
+ useAutoRefresh(refetch, true);
8049
+ let t4;
8050
+ if ($[5] !== result) {
8051
+ t4 = result !== void 0 && isFanoutIdle(result);
8052
+ $[5] = result;
8053
+ $[6] = t4;
8054
+ } else {
8055
+ t4 = $[6];
8056
+ }
8057
+ const isIdle = t4;
8058
+ let t5;
8059
+ if ($[7] !== shardKey) {
8060
+ t5 = /* @__PURE__ */ jsxDEV(ShardInput, {
8061
+ onChange: setShardKey,
8062
+ testId: "fanout-shard-input",
8063
+ value: shardKey
8064
+ }, void 0, false);
8065
+ $[7] = shardKey;
8066
+ $[8] = t5;
8067
+ } else {
8068
+ t5 = $[8];
8069
+ }
8070
+ let t6;
8071
+ if ($[9] !== result || $[10] !== t) {
8072
+ t6 = result !== void 0 && /* @__PURE__ */ jsxDEV("div", {
8073
+ className: "ml-auto flex items-center gap-2 text-sm text-muted-foreground",
8074
+ "data-testid": "fanout-count",
8075
+ children: [result.promoted && /* @__PURE__ */ jsxDEV(Badge, {
8076
+ "data-testid": "fanout-promoted",
8077
+ variant: "default",
8078
+ children: t("auto-scaled: {relayCount}/{maxRelays} relays", {
8079
+ maxRelays: result.maxRelays,
8080
+ relayCount: result.relayCount
8081
+ })
8082
+ }, void 0, false), /* @__PURE__ */ jsxDEV(Badge, {
8083
+ variant: "secondary",
8084
+ children: t("{count} connections", {
8085
+ count: result.totalConnections
8086
+ })
8087
+ }, void 0, false), /* @__PURE__ */ jsxDEV(Badge, {
8088
+ variant: "secondary",
8089
+ children: t("peak {count} subscribers", {
8090
+ count: result.peakSubscribers
8091
+ })
8092
+ }, void 0, false)]
8093
+ }, void 0, true);
8094
+ $[9] = result;
8095
+ $[10] = t;
8096
+ $[11] = t6;
8097
+ } else {
8098
+ t6 = $[11];
8099
+ }
8100
+ let t7;
8101
+ if ($[12] !== t5 || $[13] !== t6) {
8102
+ t7 = /* @__PURE__ */ jsxDEV("div", {
8103
+ className: "flex flex-wrap items-center gap-2",
8104
+ children: [t5, t6]
8105
+ }, void 0, true);
8106
+ $[12] = t5;
8107
+ $[13] = t6;
8108
+ $[14] = t7;
8109
+ } else {
8110
+ t7 = $[14];
8111
+ }
8112
+ let t8;
8113
+ if ($[15] !== error) {
8114
+ t8 = error !== null && /* @__PURE__ */ jsxDEV("p", {
8115
+ className: "text-sm text-destructive",
8116
+ "data-testid": "fanout-error",
8117
+ role: "alert",
8118
+ children: error
8119
+ }, void 0, false);
8120
+ $[15] = error;
8121
+ $[16] = t8;
8122
+ } else {
8123
+ t8 = $[16];
8124
+ }
8125
+ let t9;
8126
+ if ($[17] !== error || $[18] !== isIdle || $[19] !== t) {
8127
+ t9 = error === null && isIdle && /* @__PURE__ */ jsxDEV(EmptyState, {
8128
+ description: t("Realtime fan-out cost and per-topic subscriber counts for this shard."),
8129
+ icon: /* @__PURE__ */ jsxDEV("svg", {
8130
+ "aria-hidden": "true",
8131
+ fill: "none",
8132
+ stroke: "currentColor",
8133
+ strokeLinecap: "round",
8134
+ strokeLinejoin: "round",
8135
+ strokeWidth: 1.6,
8136
+ viewBox: "0 0 24 24",
8137
+ children: /* @__PURE__ */ jsxDEV("path", {
8138
+ d: "M4 12h4l3 7 4-14 3 7h2"
8139
+ }, void 0, false)
8140
+ }, void 0, false),
8141
+ testId: "fanout-empty",
8142
+ title: t("No fan-out activity yet.")
8143
+ }, void 0, false);
8144
+ $[17] = error;
8145
+ $[18] = isIdle;
8146
+ $[19] = t;
8147
+ $[20] = t9;
8148
+ } else {
8149
+ t9 = $[20];
8150
+ }
8151
+ let t10;
8152
+ if ($[21] !== error || $[22] !== isIdle || $[23] !== result || $[24] !== t) {
8153
+ t10 = error === null && result !== void 0 && !isIdle && /* @__PURE__ */ jsxDEV(Fragment, {
8154
+ children: [result.topics.length > 0 && /* @__PURE__ */ jsxDEV("section", {
8155
+ className: "flex flex-col gap-2",
8156
+ "data-testid": "fanout-topics-section",
8157
+ children: [/* @__PURE__ */ jsxDEV("h3", {
8158
+ className: "text-sm font-medium text-foreground",
8159
+ children: t("Hot topics")
8160
+ }, void 0, false), /* @__PURE__ */ jsxDEV(Card, {
8161
+ className: "overflow-hidden py-0",
8162
+ children: /* @__PURE__ */ jsxDEV(Table, {
8163
+ "data-testid": "fanout-topics-table",
8164
+ children: [/* @__PURE__ */ jsxDEV(TableHeader, {
8165
+ children: /* @__PURE__ */ jsxDEV(TableRow, {
8166
+ children: [/* @__PURE__ */ jsxDEV(TableHead, {
8167
+ children: t("Topic")
8168
+ }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
8169
+ children: t("Kind")
8170
+ }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
8171
+ className: "text-right",
8172
+ children: t("Subscribers")
8173
+ }, void 0, false)]
8174
+ }, void 0, true)
8175
+ }, void 0, false), /* @__PURE__ */ jsxDEV(TableBody, {
8176
+ children: result.topics.map(_temp$1)
8177
+ }, void 0, false)]
8178
+ }, void 0, true)
8179
+ }, void 0, false)]
8180
+ }, void 0, true), /* @__PURE__ */ jsxDEV("section", {
8181
+ className: "flex flex-col gap-3",
8182
+ "data-testid": "fanout-cost",
8183
+ children: [/* @__PURE__ */ jsxDEV("h2", {
8184
+ className: "text-sm font-medium text-muted-foreground",
8185
+ children: t("Fan-out cost since this instance woke")
8186
+ }, void 0, false), /* @__PURE__ */ jsxDEV(PathCounters, {
8187
+ counters: result.shapePoke,
8188
+ includeTiming: true,
8189
+ prefix: "fanout-poke",
8190
+ t,
8191
+ title: t("Shape pokes")
8192
+ }, void 0, false), /* @__PURE__ */ jsxDEV(PathCounters, {
8193
+ counters: result.whisper,
8194
+ includeTiming: false,
8195
+ prefix: "fanout-whisper",
8196
+ t,
8197
+ title: t("Whisper broadcasts")
8198
+ }, void 0, false)]
8199
+ }, void 0, true)]
8200
+ }, void 0, true);
8201
+ $[21] = error;
8202
+ $[22] = isIdle;
8203
+ $[23] = result;
8204
+ $[24] = t;
8205
+ $[25] = t10;
8206
+ } else {
8207
+ t10 = $[25];
8208
+ }
8209
+ let t11;
8210
+ if ($[26] !== t10 || $[27] !== t7 || $[28] !== t8 || $[29] !== t9) {
8211
+ t11 = /* @__PURE__ */ jsxDEV("div", {
8212
+ className: "flex flex-col gap-4",
8213
+ "data-testid": "fanout-panel",
8214
+ children: [t7, t8, t9, t10]
8215
+ }, void 0, true);
8216
+ $[26] = t10;
8217
+ $[27] = t7;
8218
+ $[28] = t8;
8219
+ $[29] = t9;
8220
+ $[30] = t11;
8221
+ } else {
8222
+ t11 = $[30];
8223
+ }
8224
+ return t11;
8225
+ };
8226
+ function _temp$1(topic) {
8227
+ return /* @__PURE__ */ jsxDEV(TableRow, {
8228
+ "data-testid": "fanout-topic-row",
8229
+ children: [/* @__PURE__ */ jsxDEV(TableCell, {
8230
+ className: "font-mono text-xs",
8231
+ children: topic.topic
8232
+ }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
8233
+ children: /* @__PURE__ */ jsxDEV(Badge, {
8234
+ variant: "outline",
8235
+ children: topic.kind
8236
+ }, void 0, false)
8237
+ }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
8238
+ className: "text-right font-medium tabular-nums",
8239
+ children: topic.subscribers
8240
+ }, void 0, false)]
8241
+ }, `${topic.kind}:${topic.topic}`, true);
8242
+ }
8243
+
7781
8244
  const operationLabel = (t, operation) => ({
7782
8245
  delete: t("Delete"),
7783
8246
  list: t("List"),
@@ -8804,6 +9267,9 @@ const TAB_ICONS = {
8804
9267
  export: /* @__PURE__ */ jsxDEV("path", {
8805
9268
  d: "M12 3v11m0 0 4-4m-4 4-4-4M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"
8806
9269
  }, void 0, false),
9270
+ fanout: /* @__PURE__ */ jsxDEV("path", {
9271
+ d: "M12 5a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm-7 16a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm14 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4ZM12 7v3.5M12 10.5 6 17m6-6.5 6 6.5"
9272
+ }, void 0, false),
8807
9273
  files: /* @__PURE__ */ jsxDEV("path", {
8808
9274
  d: "M4 7a2 2 0 0 1 2-2h3l2 2.5h7a2 2 0 0 1 2 2V18a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7Z"
8809
9275
  }, void 0, false),
@@ -8900,7 +9366,7 @@ const NAV_GROUPS = [{
8900
9366
  tabs: ["files", "storageRules"]
8901
9367
  }, {
8902
9368
  key: "observability",
8903
- tabs: ["logs", "audit", "realtime", "metrics", "analytics", "health"]
9369
+ tabs: ["logs", "audit", "realtime", "fanout", "metrics", "analytics", "health"]
8904
9370
  }, {
8905
9371
  key: "advisors",
8906
9372
  tabs: ["security", "rls", "permissions", "insights"]
@@ -9559,7 +10025,7 @@ const StudioSidebar = (t0) => {
9559
10025
  return t9;
9560
10026
  };
9561
10027
  const StudioLayout = () => {
9562
- const $ = c(276);
10028
+ const $ = c(282);
9563
10029
  const t = useT();
9564
10030
  const navigate = useNavigate();
9565
10031
  let t0;
@@ -9694,7 +10160,7 @@ const StudioLayout = () => {
9694
10160
  }
9695
10161
  let t14;
9696
10162
  if ($[29] !== t) {
9697
- t14 = t("Files");
10163
+ t14 = t("Fan-out");
9698
10164
  $[29] = t;
9699
10165
  $[30] = t14;
9700
10166
  } else {
@@ -9702,7 +10168,7 @@ const StudioLayout = () => {
9702
10168
  }
9703
10169
  let t15;
9704
10170
  if ($[31] !== t) {
9705
- t15 = t("Flags");
10171
+ t15 = t("Files");
9706
10172
  $[31] = t;
9707
10173
  $[32] = t15;
9708
10174
  } else {
@@ -9710,7 +10176,7 @@ const StudioLayout = () => {
9710
10176
  }
9711
10177
  let t16;
9712
10178
  if ($[33] !== t) {
9713
- t16 = t("Functions");
10179
+ t16 = t("Flags");
9714
10180
  $[33] = t;
9715
10181
  $[34] = t16;
9716
10182
  } else {
@@ -9718,7 +10184,7 @@ const StudioLayout = () => {
9718
10184
  }
9719
10185
  let t17;
9720
10186
  if ($[35] !== t) {
9721
- t17 = t("Health");
10187
+ t17 = t("Functions");
9722
10188
  $[35] = t;
9723
10189
  $[36] = t17;
9724
10190
  } else {
@@ -9726,7 +10192,7 @@ const StudioLayout = () => {
9726
10192
  }
9727
10193
  let t18;
9728
10194
  if ($[37] !== t) {
9729
- t18 = t("Home");
10195
+ t18 = t("Health");
9730
10196
  $[37] = t;
9731
10197
  $[38] = t18;
9732
10198
  } else {
@@ -9734,7 +10200,7 @@ const StudioLayout = () => {
9734
10200
  }
9735
10201
  let t19;
9736
10202
  if ($[39] !== t) {
9737
- t19 = t("Performance");
10203
+ t19 = t("Home");
9738
10204
  $[39] = t;
9739
10205
  $[40] = t19;
9740
10206
  } else {
@@ -9742,7 +10208,7 @@ const StudioLayout = () => {
9742
10208
  }
9743
10209
  let t20;
9744
10210
  if ($[41] !== t) {
9745
- t20 = t("Logs");
10211
+ t20 = t("Performance");
9746
10212
  $[41] = t;
9747
10213
  $[42] = t20;
9748
10214
  } else {
@@ -9750,7 +10216,7 @@ const StudioLayout = () => {
9750
10216
  }
9751
10217
  let t21;
9752
10218
  if ($[43] !== t) {
9753
- t21 = t("Metrics");
10219
+ t21 = t("Logs");
9754
10220
  $[43] = t;
9755
10221
  $[44] = t21;
9756
10222
  } else {
@@ -9758,7 +10224,7 @@ const StudioLayout = () => {
9758
10224
  }
9759
10225
  let t22;
9760
10226
  if ($[45] !== t) {
9761
- t22 = t("Migrations");
10227
+ t22 = t("Metrics");
9762
10228
  $[45] = t;
9763
10229
  $[46] = t22;
9764
10230
  } else {
@@ -9766,7 +10232,7 @@ const StudioLayout = () => {
9766
10232
  }
9767
10233
  let t23;
9768
10234
  if ($[47] !== t) {
9769
- t23 = t("Organizations");
10235
+ t23 = t("Migrations");
9770
10236
  $[47] = t;
9771
10237
  $[48] = t23;
9772
10238
  } else {
@@ -9774,7 +10240,7 @@ const StudioLayout = () => {
9774
10240
  }
9775
10241
  let t24;
9776
10242
  if ($[49] !== t) {
9777
- t24 = t("Time Travel");
10243
+ t24 = t("Organizations");
9778
10244
  $[49] = t;
9779
10245
  $[50] = t24;
9780
10246
  } else {
@@ -9782,7 +10248,7 @@ const StudioLayout = () => {
9782
10248
  }
9783
10249
  let t25;
9784
10250
  if ($[51] !== t) {
9785
- t25 = t("Mail");
10251
+ t25 = t("Time Travel");
9786
10252
  $[51] = t;
9787
10253
  $[52] = t25;
9788
10254
  } else {
@@ -9790,7 +10256,7 @@ const StudioLayout = () => {
9790
10256
  }
9791
10257
  let t26;
9792
10258
  if ($[53] !== t) {
9793
- t26 = t("Payments");
10259
+ t26 = t("Mail");
9794
10260
  $[53] = t;
9795
10261
  $[54] = t26;
9796
10262
  } else {
@@ -9798,7 +10264,7 @@ const StudioLayout = () => {
9798
10264
  }
9799
10265
  let t27;
9800
10266
  if ($[55] !== t) {
9801
- t27 = t("Permissions");
10267
+ t27 = t("Payments");
9802
10268
  $[55] = t;
9803
10269
  $[56] = t27;
9804
10270
  } else {
@@ -9806,7 +10272,7 @@ const StudioLayout = () => {
9806
10272
  }
9807
10273
  let t28;
9808
10274
  if ($[57] !== t) {
9809
- t28 = t("Queues");
10275
+ t28 = t("Permissions");
9810
10276
  $[57] = t;
9811
10277
  $[58] = t28;
9812
10278
  } else {
@@ -9814,7 +10280,7 @@ const StudioLayout = () => {
9814
10280
  }
9815
10281
  let t29;
9816
10282
  if ($[59] !== t) {
9817
- t29 = t("Realtime");
10283
+ t29 = t("Queues");
9818
10284
  $[59] = t;
9819
10285
  $[60] = t29;
9820
10286
  } else {
@@ -9822,7 +10288,7 @@ const StudioLayout = () => {
9822
10288
  }
9823
10289
  let t30;
9824
10290
  if ($[61] !== t) {
9825
- t30 = t("RLS Policies");
10291
+ t30 = t("Realtime");
9826
10292
  $[61] = t;
9827
10293
  $[62] = t30;
9828
10294
  } else {
@@ -9830,7 +10296,7 @@ const StudioLayout = () => {
9830
10296
  }
9831
10297
  let t31;
9832
10298
  if ($[63] !== t) {
9833
- t31 = t("Scheduled");
10299
+ t31 = t("RLS Policies");
9834
10300
  $[63] = t;
9835
10301
  $[64] = t31;
9836
10302
  } else {
@@ -9838,7 +10304,7 @@ const StudioLayout = () => {
9838
10304
  }
9839
10305
  let t32;
9840
10306
  if ($[65] !== t) {
9841
- t32 = t("Schema");
10307
+ t32 = t("Scheduled");
9842
10308
  $[65] = t;
9843
10309
  $[66] = t32;
9844
10310
  } else {
@@ -9846,7 +10312,7 @@ const StudioLayout = () => {
9846
10312
  }
9847
10313
  let t33;
9848
10314
  if ($[67] !== t) {
9849
- t33 = t("Security");
10315
+ t33 = t("Schema");
9850
10316
  $[67] = t;
9851
10317
  $[68] = t33;
9852
10318
  } else {
@@ -9854,7 +10320,7 @@ const StudioLayout = () => {
9854
10320
  }
9855
10321
  let t34;
9856
10322
  if ($[69] !== t) {
9857
- t34 = t("Settings");
10323
+ t34 = t("Security");
9858
10324
  $[69] = t;
9859
10325
  $[70] = t34;
9860
10326
  } else {
@@ -9862,7 +10328,7 @@ const StudioLayout = () => {
9862
10328
  }
9863
10329
  let t35;
9864
10330
  if ($[71] !== t) {
9865
- t35 = t("SQL editor");
10331
+ t35 = t("Settings");
9866
10332
  $[71] = t;
9867
10333
  $[72] = t35;
9868
10334
  } else {
@@ -9870,7 +10336,7 @@ const StudioLayout = () => {
9870
10336
  }
9871
10337
  let t36;
9872
10338
  if ($[73] !== t) {
9873
- t36 = t("Access Rules");
10339
+ t36 = t("SQL editor");
9874
10340
  $[73] = t;
9875
10341
  $[74] = t36;
9876
10342
  } else {
@@ -9878,7 +10344,7 @@ const StudioLayout = () => {
9878
10344
  }
9879
10345
  let t37;
9880
10346
  if ($[75] !== t) {
9881
- t37 = t("Users");
10347
+ t37 = t("Access Rules");
9882
10348
  $[75] = t;
9883
10349
  $[76] = t37;
9884
10350
  } else {
@@ -9886,7 +10352,7 @@ const StudioLayout = () => {
9886
10352
  }
9887
10353
  let t38;
9888
10354
  if ($[77] !== t) {
9889
- t38 = t("Vectors");
10355
+ t38 = t("Users");
9890
10356
  $[77] = t;
9891
10357
  $[78] = t38;
9892
10358
  } else {
@@ -9894,15 +10360,23 @@ const StudioLayout = () => {
9894
10360
  }
9895
10361
  let t39;
9896
10362
  if ($[79] !== t) {
9897
- t39 = t("Workflows");
10363
+ t39 = t("Vectors");
9898
10364
  $[79] = t;
9899
10365
  $[80] = t39;
9900
10366
  } else {
9901
10367
  t39 = $[80];
9902
10368
  }
9903
10369
  let t40;
9904
- if ($[81] !== t10 || $[82] !== t11 || $[83] !== t12 || $[84] !== t13 || $[85] !== t14 || $[86] !== t15 || $[87] !== t16 || $[88] !== t17 || $[89] !== t18 || $[90] !== t19 || $[91] !== t20 || $[92] !== t21 || $[93] !== t22 || $[94] !== t23 || $[95] !== t24 || $[96] !== t25 || $[97] !== t26 || $[98] !== t27 || $[99] !== t28 || $[100] !== t29 || $[101] !== t30 || $[102] !== t31 || $[103] !== t32 || $[104] !== t33 || $[105] !== t34 || $[106] !== t35 || $[107] !== t36 || $[108] !== t37 || $[109] !== t38 || $[110] !== t39 || $[111] !== t5 || $[112] !== t6 || $[113] !== t7 || $[114] !== t8 || $[115] !== t9) {
9905
- t40 = {
10370
+ if ($[81] !== t) {
10371
+ t40 = t("Workflows");
10372
+ $[81] = t;
10373
+ $[82] = t40;
10374
+ } else {
10375
+ t40 = $[82];
10376
+ }
10377
+ let t41;
10378
+ if ($[83] !== t10 || $[84] !== t11 || $[85] !== t12 || $[86] !== t13 || $[87] !== t14 || $[88] !== t15 || $[89] !== t16 || $[90] !== t17 || $[91] !== t18 || $[92] !== t19 || $[93] !== t20 || $[94] !== t21 || $[95] !== t22 || $[96] !== t23 || $[97] !== t24 || $[98] !== t25 || $[99] !== t26 || $[100] !== t27 || $[101] !== t28 || $[102] !== t29 || $[103] !== t30 || $[104] !== t31 || $[105] !== t32 || $[106] !== t33 || $[107] !== t34 || $[108] !== t35 || $[109] !== t36 || $[110] !== t37 || $[111] !== t38 || $[112] !== t39 || $[113] !== t40 || $[114] !== t5 || $[115] !== t6 || $[116] !== t7 || $[117] !== t8 || $[118] !== t9) {
10379
+ t41 = {
9906
10380
  analytics: t5,
9907
10381
  api: t6,
9908
10382
  audit: t7,
@@ -9912,73 +10386,75 @@ const StudioLayout = () => {
9912
10386
  data: t11,
9913
10387
  drains: t12,
9914
10388
  export: t13,
9915
- files: t14,
9916
- flags: t15,
9917
- functions: t16,
9918
- health: t17,
9919
- home: t18,
9920
- insights: t19,
9921
- logs: t20,
9922
- metrics: t21,
9923
- migrations: t22,
9924
- organizations: t23,
9925
- pitr: t24,
9926
- mail: t25,
9927
- payments: t26,
9928
- permissions: t27,
9929
- queues: t28,
9930
- realtime: t29,
9931
- rls: t30,
9932
- schedule: t31,
9933
- schema: t32,
9934
- security: t33,
9935
- settings: t34,
9936
- sql: t35,
9937
- storageRules: t36,
9938
- users: t37,
9939
- vectors: t38,
9940
- workflows: t39
10389
+ fanout: t14,
10390
+ files: t15,
10391
+ flags: t16,
10392
+ functions: t17,
10393
+ health: t18,
10394
+ home: t19,
10395
+ insights: t20,
10396
+ logs: t21,
10397
+ metrics: t22,
10398
+ migrations: t23,
10399
+ organizations: t24,
10400
+ pitr: t25,
10401
+ mail: t26,
10402
+ payments: t27,
10403
+ permissions: t28,
10404
+ queues: t29,
10405
+ realtime: t30,
10406
+ rls: t31,
10407
+ schedule: t32,
10408
+ schema: t33,
10409
+ security: t34,
10410
+ settings: t35,
10411
+ sql: t36,
10412
+ storageRules: t37,
10413
+ users: t38,
10414
+ vectors: t39,
10415
+ workflows: t40
9941
10416
  };
9942
- $[81] = t10;
9943
- $[82] = t11;
9944
- $[83] = t12;
9945
- $[84] = t13;
9946
- $[85] = t14;
9947
- $[86] = t15;
9948
- $[87] = t16;
9949
- $[88] = t17;
9950
- $[89] = t18;
9951
- $[90] = t19;
9952
- $[91] = t20;
9953
- $[92] = t21;
9954
- $[93] = t22;
9955
- $[94] = t23;
9956
- $[95] = t24;
9957
- $[96] = t25;
9958
- $[97] = t26;
9959
- $[98] = t27;
9960
- $[99] = t28;
9961
- $[100] = t29;
9962
- $[101] = t30;
9963
- $[102] = t31;
9964
- $[103] = t32;
9965
- $[104] = t33;
9966
- $[105] = t34;
9967
- $[106] = t35;
9968
- $[107] = t36;
9969
- $[108] = t37;
9970
- $[109] = t38;
9971
- $[110] = t39;
9972
- $[111] = t5;
9973
- $[112] = t6;
9974
- $[113] = t7;
9975
- $[114] = t8;
9976
- $[115] = t9;
9977
- $[116] = t40;
9978
- } else {
9979
- t40 = $[116];
9980
- }
9981
- const tabLabel = t40;
10417
+ $[83] = t10;
10418
+ $[84] = t11;
10419
+ $[85] = t12;
10420
+ $[86] = t13;
10421
+ $[87] = t14;
10422
+ $[88] = t15;
10423
+ $[89] = t16;
10424
+ $[90] = t17;
10425
+ $[91] = t18;
10426
+ $[92] = t19;
10427
+ $[93] = t20;
10428
+ $[94] = t21;
10429
+ $[95] = t22;
10430
+ $[96] = t23;
10431
+ $[97] = t24;
10432
+ $[98] = t25;
10433
+ $[99] = t26;
10434
+ $[100] = t27;
10435
+ $[101] = t28;
10436
+ $[102] = t29;
10437
+ $[103] = t30;
10438
+ $[104] = t31;
10439
+ $[105] = t32;
10440
+ $[106] = t33;
10441
+ $[107] = t34;
10442
+ $[108] = t35;
10443
+ $[109] = t36;
10444
+ $[110] = t37;
10445
+ $[111] = t38;
10446
+ $[112] = t39;
10447
+ $[113] = t40;
10448
+ $[114] = t5;
10449
+ $[115] = t6;
10450
+ $[116] = t7;
10451
+ $[117] = t8;
10452
+ $[118] = t9;
10453
+ $[119] = t41;
10454
+ } else {
10455
+ t41 = $[119];
10456
+ }
10457
+ const tabLabel = t41;
9982
10458
  const groupLabel = {
9983
10459
  advisors: t("Advisors"),
9984
10460
  auth: t("Auth"),
@@ -9990,396 +10466,406 @@ const StudioLayout = () => {
9990
10466
  settings: t("Settings"),
9991
10467
  storage: t("Storage")
9992
10468
  };
9993
- let t41;
9994
- if ($[117] !== t) {
9995
- t41 = t("Usage and latency from Analytics Engine — request volume, p50/p95, and hot shards.");
9996
- $[117] = t;
9997
- $[118] = t41;
9998
- } else {
9999
- t41 = $[118];
10000
- }
10001
10469
  let t42;
10002
- if ($[119] !== t) {
10003
- t42 = t("Interactive OpenAPI reference and copy-paste snippets for your functions.");
10004
- $[119] = t;
10005
- $[120] = t42;
10470
+ if ($[120] !== t) {
10471
+ t42 = t("Usage and latency from Analytics Engine request volume, p50/p95, and hot shards.");
10472
+ $[120] = t;
10473
+ $[121] = t42;
10006
10474
  } else {
10007
- t42 = $[120];
10475
+ t42 = $[121];
10008
10476
  }
10009
10477
  let t43;
10010
- if ($[121] !== t) {
10011
- t43 = t("A durable log of admin state-changing operations.");
10012
- $[121] = t;
10013
- $[122] = t43;
10478
+ if ($[122] !== t) {
10479
+ t43 = t("Interactive OpenAPI reference and copy-paste snippets for your functions.");
10480
+ $[122] = t;
10481
+ $[123] = t43;
10014
10482
  } else {
10015
- t43 = $[122];
10483
+ t43 = $[123];
10016
10484
  }
10017
10485
  let t44;
10018
- if ($[123] !== t) {
10019
- t44 = t("Enabled plugins and session config (read-only).");
10020
- $[123] = t;
10021
- $[124] = t44;
10486
+ if ($[124] !== t) {
10487
+ t44 = t("A durable log of admin state-changing operations.");
10488
+ $[124] = t;
10489
+ $[125] = t44;
10022
10490
  } else {
10023
- t44 = $[124];
10491
+ t44 = $[125];
10024
10492
  }
10025
10493
  let t45;
10026
- if ($[125] !== t) {
10027
- t45 = t("Browse and revoke active sessions across all users.");
10028
- $[125] = t;
10029
- $[126] = t45;
10494
+ if ($[126] !== t) {
10495
+ t45 = t("Enabled plugins and session config (read-only).");
10496
+ $[126] = t;
10497
+ $[127] = t45;
10030
10498
  } else {
10031
- t45 = $[126];
10499
+ t45 = $[127];
10032
10500
  }
10033
10501
  let t46;
10034
- if ($[127] !== t) {
10035
- t46 = t("Chart widgets backed by saved read-only SQL queries.");
10036
- $[127] = t;
10037
- $[128] = t46;
10502
+ if ($[128] !== t) {
10503
+ t46 = t("Browse and revoke active sessions across all users.");
10504
+ $[128] = t;
10505
+ $[129] = t46;
10038
10506
  } else {
10039
- t46 = $[128];
10507
+ t46 = $[129];
10040
10508
  }
10041
10509
  let t47;
10042
- if ($[129] !== t) {
10043
- t47 = t("Browse and edit rows across your shard and global tables.");
10044
- $[129] = t;
10045
- $[130] = t47;
10510
+ if ($[130] !== t) {
10511
+ t47 = t("Chart widgets backed by saved read-only SQL queries.");
10512
+ $[130] = t;
10513
+ $[131] = t47;
10046
10514
  } else {
10047
- t47 = $[130];
10515
+ t47 = $[131];
10048
10516
  }
10049
10517
  let t48;
10050
- if ($[131] !== t) {
10051
- t48 = t("Forward logs to Logpush, Tail Workers, or a webhook collector.");
10052
- $[131] = t;
10053
- $[132] = t48;
10518
+ if ($[132] !== t) {
10519
+ t48 = t("Browse and edit rows across your shard and global tables.");
10520
+ $[132] = t;
10521
+ $[133] = t48;
10054
10522
  } else {
10055
- t48 = $[132];
10523
+ t48 = $[133];
10056
10524
  }
10057
10525
  let t49;
10058
- if ($[133] !== t) {
10059
- t49 = t("Export a shard to NDJSON, or import rows from it.");
10060
- $[133] = t;
10061
- $[134] = t49;
10526
+ if ($[134] !== t) {
10527
+ t49 = t("Forward logs to Logpush, Tail Workers, or a webhook collector.");
10528
+ $[134] = t;
10529
+ $[135] = t49;
10062
10530
  } else {
10063
- t49 = $[134];
10531
+ t49 = $[135];
10064
10532
  }
10065
10533
  let t50;
10066
- if ($[135] !== t) {
10067
- t50 = t("Browse objects in your R2 storage buckets.");
10068
- $[135] = t;
10069
- $[136] = t50;
10534
+ if ($[136] !== t) {
10535
+ t50 = t("Export a shard to NDJSON, or import rows from it.");
10536
+ $[136] = t;
10537
+ $[137] = t50;
10070
10538
  } else {
10071
- t50 = $[136];
10539
+ t50 = $[137];
10072
10540
  }
10073
10541
  let t51;
10074
- if ($[137] !== t) {
10075
- t51 = t("Inspect feature flags and their live evaluation under a targeting context.");
10076
- $[137] = t;
10077
- $[138] = t51;
10542
+ if ($[138] !== t) {
10543
+ t51 = t("Realtime fan-out cost and per-topic subscriber counts for this shard.");
10544
+ $[138] = t;
10545
+ $[139] = t51;
10078
10546
  } else {
10079
- t51 = $[138];
10547
+ t51 = $[139];
10080
10548
  }
10081
10549
  let t52;
10082
- if ($[139] !== t) {
10083
- t52 = t("Run registered queries, mutations, and actions.");
10084
- $[139] = t;
10085
- $[140] = t52;
10550
+ if ($[140] !== t) {
10551
+ t52 = t("Browse objects in your R2 storage buckets.");
10552
+ $[140] = t;
10553
+ $[141] = t52;
10086
10554
  } else {
10087
- t52 = $[140];
10555
+ t52 = $[141];
10088
10556
  }
10089
10557
  let t53;
10090
- if ($[141] !== t) {
10091
- t53 = t("At-a-glance connection, error, and shard signals.");
10092
- $[141] = t;
10093
- $[142] = t53;
10558
+ if ($[142] !== t) {
10559
+ t53 = t("Inspect feature flags and their live evaluation under a targeting context.");
10560
+ $[142] = t;
10561
+ $[143] = t53;
10094
10562
  } else {
10095
- t53 = $[142];
10563
+ t53 = $[143];
10096
10564
  }
10097
10565
  let t54;
10098
- if ($[143] !== t) {
10099
- t54 = t("Connection, health, and advisor summary for your deployment.");
10100
- $[143] = t;
10101
- $[144] = t54;
10566
+ if ($[144] !== t) {
10567
+ t54 = t("Run registered queries, mutations, and actions.");
10568
+ $[144] = t;
10569
+ $[145] = t54;
10102
10570
  } else {
10103
- t54 = $[144];
10571
+ t54 = $[145];
10104
10572
  }
10105
10573
  let t55;
10106
- if ($[145] !== t) {
10107
- t55 = t("Surface slow functions, error spikes, and cache problems.");
10108
- $[145] = t;
10109
- $[146] = t55;
10574
+ if ($[146] !== t) {
10575
+ t55 = t("At-a-glance connection, error, and shard signals.");
10576
+ $[146] = t;
10577
+ $[147] = t55;
10110
10578
  } else {
10111
- t55 = $[146];
10579
+ t55 = $[147];
10112
10580
  }
10113
10581
  let t56;
10114
- if ($[147] !== t) {
10115
- t56 = t("A live stream of recent function logs.");
10116
- $[147] = t;
10117
- $[148] = t56;
10582
+ if ($[148] !== t) {
10583
+ t56 = t("Connection, health, and advisor summary for your deployment.");
10584
+ $[148] = t;
10585
+ $[149] = t56;
10118
10586
  } else {
10119
- t56 = $[148];
10587
+ t56 = $[149];
10120
10588
  }
10121
10589
  let t57;
10122
- if ($[149] !== t) {
10123
- t57 = t("Per-shard health and aggregate metrics.");
10124
- $[149] = t;
10125
- $[150] = t57;
10590
+ if ($[150] !== t) {
10591
+ t57 = t("Surface slow functions, error spikes, and cache problems.");
10592
+ $[150] = t;
10593
+ $[151] = t57;
10126
10594
  } else {
10127
- t57 = $[150];
10595
+ t57 = $[151];
10128
10596
  }
10129
10597
  let t58;
10130
- if ($[151] !== t) {
10131
- t58 = t("Review migration status and run them.");
10132
- $[151] = t;
10133
- $[152] = t58;
10598
+ if ($[152] !== t) {
10599
+ t58 = t("A live stream of recent function logs.");
10600
+ $[152] = t;
10601
+ $[153] = t58;
10134
10602
  } else {
10135
- t58 = $[152];
10603
+ t58 = $[153];
10136
10604
  }
10137
10605
  let t59;
10138
- if ($[153] !== t) {
10139
- t59 = t("Browse and manage organizations, members, and invitations.");
10140
- $[153] = t;
10141
- $[154] = t59;
10606
+ if ($[154] !== t) {
10607
+ t59 = t("Per-shard health and aggregate metrics.");
10608
+ $[154] = t;
10609
+ $[155] = t59;
10142
10610
  } else {
10143
- t59 = $[154];
10611
+ t59 = $[155];
10144
10612
  }
10145
10613
  let t60;
10146
- if ($[155] !== t) {
10147
- t60 = t("Restore a shard to a point in the last 30 days.");
10148
- $[155] = t;
10149
- $[156] = t60;
10614
+ if ($[156] !== t) {
10615
+ t60 = t("Review migration status and run them.");
10616
+ $[156] = t;
10617
+ $[157] = t60;
10150
10618
  } else {
10151
- t60 = $[156];
10619
+ t60 = $[157];
10152
10620
  }
10153
10621
  let t61;
10154
- if ($[157] !== t) {
10155
- t61 = t("Email your app sent, captured in dev.");
10156
- $[157] = t;
10157
- $[158] = t61;
10622
+ if ($[158] !== t) {
10623
+ t61 = t("Browse and manage organizations, members, and invitations.");
10624
+ $[158] = t;
10625
+ $[159] = t61;
10158
10626
  } else {
10159
- t61 = $[158];
10627
+ t61 = $[159];
10160
10628
  }
10161
10629
  let t62;
10162
- if ($[159] !== t) {
10163
- t62 = t("Synced customers, subscriptions, and webhook events.");
10164
- $[159] = t;
10165
- $[160] = t62;
10630
+ if ($[160] !== t) {
10631
+ t62 = t("Restore a shard to a point in the last 30 days.");
10632
+ $[160] = t;
10633
+ $[161] = t62;
10166
10634
  } else {
10167
- t62 = $[160];
10635
+ t62 = $[161];
10168
10636
  }
10169
10637
  let t63;
10170
- if ($[161] !== t) {
10171
- t63 = t("Inspect access policies per table, and probe a function as any identity.");
10172
- $[161] = t;
10173
- $[162] = t63;
10638
+ if ($[162] !== t) {
10639
+ t63 = t("Email your app sent, captured in dev.");
10640
+ $[162] = t;
10641
+ $[163] = t63;
10174
10642
  } else {
10175
- t63 = $[162];
10643
+ t63 = $[163];
10176
10644
  }
10177
10645
  let t64;
10178
- if ($[163] !== t) {
10179
- t64 = t("Inspect declared Cloudflare Queues — their producer bindings, consumer mode, and dead-letter queue.");
10180
- $[163] = t;
10181
- $[164] = t64;
10646
+ if ($[164] !== t) {
10647
+ t64 = t("Synced customers, subscriptions, and webhook events.");
10648
+ $[164] = t;
10649
+ $[165] = t64;
10182
10650
  } else {
10183
- t64 = $[164];
10651
+ t64 = $[165];
10184
10652
  }
10185
10653
  let t65;
10186
- if ($[165] !== t) {
10187
- t65 = t("Active WebSocket subscriptions on this shard.");
10188
- $[165] = t;
10189
- $[166] = t65;
10654
+ if ($[166] !== t) {
10655
+ t65 = t("Inspect access policies per table, and probe a function as any identity.");
10656
+ $[166] = t;
10657
+ $[167] = t65;
10190
10658
  } else {
10191
- t65 = $[166];
10659
+ t65 = $[167];
10192
10660
  }
10193
10661
  let t66;
10194
- if ($[167] !== t) {
10195
- t66 = t("Inspect row-level-security policies and roles, per table.");
10196
- $[167] = t;
10197
- $[168] = t66;
10662
+ if ($[168] !== t) {
10663
+ t66 = t("Inspect declared Cloudflare Queues — their producer bindings, consumer mode, and dead-letter queue.");
10664
+ $[168] = t;
10665
+ $[169] = t66;
10198
10666
  } else {
10199
- t66 = $[168];
10667
+ t66 = $[169];
10200
10668
  }
10201
10669
  let t67;
10202
- if ($[169] !== t) {
10203
- t67 = t("Inspect and cancel scheduled jobs.");
10204
- $[169] = t;
10205
- $[170] = t67;
10670
+ if ($[170] !== t) {
10671
+ t67 = t("Active WebSocket subscriptions on this shard.");
10672
+ $[170] = t;
10673
+ $[171] = t67;
10206
10674
  } else {
10207
- t67 = $[170];
10675
+ t67 = $[171];
10208
10676
  }
10209
10677
  let t68;
10210
- if ($[171] !== t) {
10211
- t68 = t("Inspect each table and its columns.");
10212
- $[171] = t;
10213
- $[172] = t68;
10678
+ if ($[172] !== t) {
10679
+ t68 = t("Inspect row-level-security policies and roles, per table.");
10680
+ $[172] = t;
10681
+ $[173] = t68;
10214
10682
  } else {
10215
- t68 = $[172];
10683
+ t68 = $[173];
10216
10684
  }
10217
10685
  let t69;
10218
- if ($[173] !== t) {
10219
- t69 = t("Review admin gates, credentials, and log redaction.");
10220
- $[173] = t;
10221
- $[174] = t69;
10686
+ if ($[174] !== t) {
10687
+ t69 = t("Inspect and cancel scheduled jobs.");
10688
+ $[174] = t;
10689
+ $[175] = t69;
10222
10690
  } else {
10223
- t69 = $[174];
10691
+ t69 = $[175];
10224
10692
  }
10225
10693
  let t70;
10226
- if ($[175] !== t) {
10227
- t70 = t("Read-only deployment config vars, secrets, and bindings.");
10228
- $[175] = t;
10229
- $[176] = t70;
10694
+ if ($[176] !== t) {
10695
+ t70 = t("Inspect each table and its columns.");
10696
+ $[176] = t;
10697
+ $[177] = t70;
10230
10698
  } else {
10231
- t70 = $[176];
10699
+ t70 = $[177];
10232
10700
  }
10233
10701
  let t71;
10234
- if ($[177] !== t) {
10235
- t71 = t("Run read-only SQL against a shard.");
10236
- $[177] = t;
10237
- $[178] = t71;
10702
+ if ($[178] !== t) {
10703
+ t71 = t("Review admin gates, credentials, and log redaction.");
10704
+ $[178] = t;
10705
+ $[179] = t71;
10238
10706
  } else {
10239
- t71 = $[178];
10707
+ t71 = $[179];
10240
10708
  }
10241
10709
  let t72;
10242
- if ($[179] !== t) {
10243
- t72 = t("Inspect storage access rules per bucket, operation, and key prefix.");
10244
- $[179] = t;
10245
- $[180] = t72;
10710
+ if ($[180] !== t) {
10711
+ t72 = t("Read-only deployment configvars, secrets, and bindings.");
10712
+ $[180] = t;
10713
+ $[181] = t72;
10246
10714
  } else {
10247
- t72 = $[180];
10715
+ t72 = $[181];
10248
10716
  }
10249
10717
  let t73;
10250
- if ($[181] !== t) {
10251
- t73 = t("Manage auth users roles, bans, sessions, and identity.");
10252
- $[181] = t;
10253
- $[182] = t73;
10718
+ if ($[182] !== t) {
10719
+ t73 = t("Run read-only SQL against a shard.");
10720
+ $[182] = t;
10721
+ $[183] = t73;
10254
10722
  } else {
10255
- t73 = $[182];
10723
+ t73 = $[183];
10256
10724
  }
10257
10725
  let t74;
10258
- if ($[183] !== t) {
10259
- t74 = t("Browse Vectorize indexes and run similarity searches.");
10260
- $[183] = t;
10261
- $[184] = t74;
10726
+ if ($[184] !== t) {
10727
+ t74 = t("Inspect storage access rules — per bucket, operation, and key prefix.");
10728
+ $[184] = t;
10729
+ $[185] = t74;
10262
10730
  } else {
10263
- t74 = $[184];
10731
+ t74 = $[185];
10264
10732
  }
10265
10733
  let t75;
10266
- if ($[185] !== t) {
10267
- t75 = t("Inspect declared Cloudflare Workflows and their bindings.");
10268
- $[185] = t;
10269
- $[186] = t75;
10734
+ if ($[186] !== t) {
10735
+ t75 = t("Manage auth users roles, bans, sessions, and identity.");
10736
+ $[186] = t;
10737
+ $[187] = t75;
10270
10738
  } else {
10271
- t75 = $[186];
10739
+ t75 = $[187];
10272
10740
  }
10273
10741
  let t76;
10274
- if ($[187] !== t41 || $[188] !== t42 || $[189] !== t43 || $[190] !== t44 || $[191] !== t45 || $[192] !== t46 || $[193] !== t47 || $[194] !== t48 || $[195] !== t49 || $[196] !== t50 || $[197] !== t51 || $[198] !== t52 || $[199] !== t53 || $[200] !== t54 || $[201] !== t55 || $[202] !== t56 || $[203] !== t57 || $[204] !== t58 || $[205] !== t59 || $[206] !== t60 || $[207] !== t61 || $[208] !== t62 || $[209] !== t63 || $[210] !== t64 || $[211] !== t65 || $[212] !== t66 || $[213] !== t67 || $[214] !== t68 || $[215] !== t69 || $[216] !== t70 || $[217] !== t71 || $[218] !== t72 || $[219] !== t73 || $[220] !== t74 || $[221] !== t75) {
10275
- t76 = {
10276
- analytics: t41,
10277
- api: t42,
10278
- audit: t43,
10279
- authConfig: t44,
10280
- authSessions: t45,
10281
- dashboards: t46,
10282
- data: t47,
10283
- drains: t48,
10284
- export: t49,
10285
- files: t50,
10286
- flags: t51,
10287
- functions: t52,
10288
- health: t53,
10289
- home: t54,
10290
- insights: t55,
10291
- logs: t56,
10292
- metrics: t57,
10293
- migrations: t58,
10294
- organizations: t59,
10295
- pitr: t60,
10296
- mail: t61,
10297
- payments: t62,
10298
- permissions: t63,
10299
- queues: t64,
10300
- realtime: t65,
10301
- rls: t66,
10302
- schedule: t67,
10303
- schema: t68,
10304
- security: t69,
10305
- settings: t70,
10306
- sql: t71,
10307
- storageRules: t72,
10308
- users: t73,
10309
- vectors: t74,
10310
- workflows: t75
10311
- };
10312
- $[187] = t41;
10313
- $[188] = t42;
10314
- $[189] = t43;
10315
- $[190] = t44;
10316
- $[191] = t45;
10317
- $[192] = t46;
10318
- $[193] = t47;
10319
- $[194] = t48;
10320
- $[195] = t49;
10321
- $[196] = t50;
10322
- $[197] = t51;
10323
- $[198] = t52;
10324
- $[199] = t53;
10325
- $[200] = t54;
10326
- $[201] = t55;
10327
- $[202] = t56;
10328
- $[203] = t57;
10329
- $[204] = t58;
10330
- $[205] = t59;
10331
- $[206] = t60;
10332
- $[207] = t61;
10333
- $[208] = t62;
10334
- $[209] = t63;
10335
- $[210] = t64;
10336
- $[211] = t65;
10337
- $[212] = t66;
10338
- $[213] = t67;
10339
- $[214] = t68;
10340
- $[215] = t69;
10341
- $[216] = t70;
10342
- $[217] = t71;
10343
- $[218] = t72;
10344
- $[219] = t73;
10345
- $[220] = t74;
10346
- $[221] = t75;
10347
- $[222] = t76;
10348
- } else {
10349
- t76 = $[222];
10350
- }
10351
- const tabDescription = t76;
10742
+ if ($[188] !== t) {
10743
+ t76 = t("Browse Vectorize indexes and run similarity searches.");
10744
+ $[188] = t;
10745
+ $[189] = t76;
10746
+ } else {
10747
+ t76 = $[189];
10748
+ }
10352
10749
  let t77;
10353
- if ($[223] !== navigate) {
10354
- t77 = (event) => {
10750
+ if ($[190] !== t) {
10751
+ t77 = t("Inspect declared Cloudflare Workflows and their bindings.");
10752
+ $[190] = t;
10753
+ $[191] = t77;
10754
+ } else {
10755
+ t77 = $[191];
10756
+ }
10757
+ let t78;
10758
+ if ($[192] !== t42 || $[193] !== t43 || $[194] !== t44 || $[195] !== t45 || $[196] !== t46 || $[197] !== t47 || $[198] !== t48 || $[199] !== t49 || $[200] !== t50 || $[201] !== t51 || $[202] !== t52 || $[203] !== t53 || $[204] !== t54 || $[205] !== t55 || $[206] !== t56 || $[207] !== t57 || $[208] !== t58 || $[209] !== t59 || $[210] !== t60 || $[211] !== t61 || $[212] !== t62 || $[213] !== t63 || $[214] !== t64 || $[215] !== t65 || $[216] !== t66 || $[217] !== t67 || $[218] !== t68 || $[219] !== t69 || $[220] !== t70 || $[221] !== t71 || $[222] !== t72 || $[223] !== t73 || $[224] !== t74 || $[225] !== t75 || $[226] !== t76 || $[227] !== t77) {
10759
+ t78 = {
10760
+ analytics: t42,
10761
+ api: t43,
10762
+ audit: t44,
10763
+ authConfig: t45,
10764
+ authSessions: t46,
10765
+ dashboards: t47,
10766
+ data: t48,
10767
+ drains: t49,
10768
+ export: t50,
10769
+ fanout: t51,
10770
+ files: t52,
10771
+ flags: t53,
10772
+ functions: t54,
10773
+ health: t55,
10774
+ home: t56,
10775
+ insights: t57,
10776
+ logs: t58,
10777
+ metrics: t59,
10778
+ migrations: t60,
10779
+ organizations: t61,
10780
+ pitr: t62,
10781
+ mail: t63,
10782
+ payments: t64,
10783
+ permissions: t65,
10784
+ queues: t66,
10785
+ realtime: t67,
10786
+ rls: t68,
10787
+ schedule: t69,
10788
+ schema: t70,
10789
+ security: t71,
10790
+ settings: t72,
10791
+ sql: t73,
10792
+ storageRules: t74,
10793
+ users: t75,
10794
+ vectors: t76,
10795
+ workflows: t77
10796
+ };
10797
+ $[192] = t42;
10798
+ $[193] = t43;
10799
+ $[194] = t44;
10800
+ $[195] = t45;
10801
+ $[196] = t46;
10802
+ $[197] = t47;
10803
+ $[198] = t48;
10804
+ $[199] = t49;
10805
+ $[200] = t50;
10806
+ $[201] = t51;
10807
+ $[202] = t52;
10808
+ $[203] = t53;
10809
+ $[204] = t54;
10810
+ $[205] = t55;
10811
+ $[206] = t56;
10812
+ $[207] = t57;
10813
+ $[208] = t58;
10814
+ $[209] = t59;
10815
+ $[210] = t60;
10816
+ $[211] = t61;
10817
+ $[212] = t62;
10818
+ $[213] = t63;
10819
+ $[214] = t64;
10820
+ $[215] = t65;
10821
+ $[216] = t66;
10822
+ $[217] = t67;
10823
+ $[218] = t68;
10824
+ $[219] = t69;
10825
+ $[220] = t70;
10826
+ $[221] = t71;
10827
+ $[222] = t72;
10828
+ $[223] = t73;
10829
+ $[224] = t74;
10830
+ $[225] = t75;
10831
+ $[226] = t76;
10832
+ $[227] = t77;
10833
+ $[228] = t78;
10834
+ } else {
10835
+ t78 = $[228];
10836
+ }
10837
+ const tabDescription = t78;
10838
+ let t79;
10839
+ if ($[229] !== navigate) {
10840
+ t79 = (event) => {
10355
10841
  fireAndForget(navigate({
10356
10842
  to: `/${event.currentTarget.dataset.tab ?? ""}`
10357
10843
  }));
10358
10844
  };
10359
- $[223] = navigate;
10360
- $[224] = t77;
10845
+ $[229] = navigate;
10846
+ $[230] = t79;
10361
10847
  } else {
10362
- t77 = $[224];
10848
+ t79 = $[230];
10363
10849
  }
10364
- const selectTab = t77;
10365
- let t78;
10366
- let t79;
10367
- if ($[225] !== current || $[226] !== tabLabel) {
10368
- t78 = () => {
10850
+ const selectTab = t79;
10851
+ let t80;
10852
+ let t81;
10853
+ if ($[231] !== current || $[232] !== tabLabel) {
10854
+ t80 = () => {
10369
10855
  if (typeof document !== "undefined") {
10370
10856
  document.title = `${tabLabel[current]} · lunora`;
10371
10857
  }
10372
10858
  };
10373
- t79 = [current, tabLabel];
10374
- $[225] = current;
10375
- $[226] = tabLabel;
10376
- $[227] = t78;
10377
- $[228] = t79;
10859
+ t81 = [current, tabLabel];
10860
+ $[231] = current;
10861
+ $[232] = tabLabel;
10862
+ $[233] = t80;
10863
+ $[234] = t81;
10378
10864
  } else {
10379
- t78 = $[227];
10380
- t79 = $[228];
10865
+ t80 = $[233];
10866
+ t81 = $[234];
10381
10867
  }
10382
- useEffect(t78, t79);
10868
+ useEffect(t80, t81);
10383
10869
  const activeGroup = visibleGroups.find((group_1) => group_1.tabs.includes(current)) ?? NAV_GROUPS[0];
10384
10870
  const commandItems = visibleGroups.flatMap((group_2) => group_2.tabs.map((tab_0) => ({
10385
10871
  group: groupLabel[group_2.key],
@@ -10388,48 +10874,48 @@ const StudioLayout = () => {
10388
10874
  })));
10389
10875
  const chrome = use(StudioChromeContext);
10390
10876
  const connected = chrome !== null && chrome.token !== "";
10391
- let t80;
10392
- if ($[229] !== commandItems) {
10393
- t80 = /* @__PURE__ */ jsxDEV(CommandPalette, {
10877
+ let t82;
10878
+ if ($[235] !== commandItems) {
10879
+ t82 = /* @__PURE__ */ jsxDEV(CommandPalette, {
10394
10880
  items: commandItems
10395
10881
  }, void 0, false);
10396
- $[229] = commandItems;
10397
- $[230] = t80;
10882
+ $[235] = commandItems;
10883
+ $[236] = t82;
10398
10884
  } else {
10399
- t80 = $[230];
10885
+ t82 = $[236];
10400
10886
  }
10401
- let t81;
10402
- if ($[231] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
10403
- t81 = /* @__PURE__ */ jsxDEV(SidebarTrigger, {
10887
+ let t83;
10888
+ if ($[237] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
10889
+ t83 = /* @__PURE__ */ jsxDEV(SidebarTrigger, {
10404
10890
  className: "-ms-1"
10405
10891
  }, void 0, false);
10406
- $[231] = t81;
10892
+ $[237] = t83;
10407
10893
  } else {
10408
- t81 = $[231];
10894
+ t83 = $[237];
10409
10895
  }
10410
- let t82;
10411
- if ($[232] !== t) {
10412
- t82 = t("Breadcrumb");
10413
- $[232] = t;
10414
- $[233] = t82;
10896
+ let t84;
10897
+ if ($[238] !== t) {
10898
+ t84 = t("Breadcrumb");
10899
+ $[238] = t;
10900
+ $[239] = t84;
10415
10901
  } else {
10416
- t82 = $[233];
10902
+ t84 = $[239];
10417
10903
  }
10418
- const t83 = groupLabel[activeGroup.key];
10419
- let t84;
10420
- if ($[234] !== t83) {
10421
- t84 = /* @__PURE__ */ jsxDEV("span", {
10904
+ const t85 = groupLabel[activeGroup.key];
10905
+ let t86;
10906
+ if ($[240] !== t85) {
10907
+ t86 = /* @__PURE__ */ jsxDEV("span", {
10422
10908
  className: "text-muted-foreground",
10423
- children: t83
10909
+ children: t85
10424
10910
  }, void 0, false);
10425
- $[234] = t83;
10426
- $[235] = t84;
10911
+ $[240] = t85;
10912
+ $[241] = t86;
10427
10913
  } else {
10428
- t84 = $[235];
10914
+ t86 = $[241];
10429
10915
  }
10430
- let t85;
10431
- if ($[236] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
10432
- t85 = /* @__PURE__ */ jsxDEV("svg", {
10916
+ let t87;
10917
+ if ($[242] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
10918
+ t87 = /* @__PURE__ */ jsxDEV("svg", {
10433
10919
  "aria-hidden": "true",
10434
10920
  className: "size-3.5 text-muted-foreground/60",
10435
10921
  fill: "none",
@@ -10442,39 +10928,39 @@ const StudioLayout = () => {
10442
10928
  strokeLinejoin: "round"
10443
10929
  }, void 0, false)
10444
10930
  }, void 0, false);
10445
- $[236] = t85;
10931
+ $[242] = t87;
10446
10932
  } else {
10447
- t85 = $[236];
10933
+ t87 = $[242];
10448
10934
  }
10449
- const t86 = tabLabel[current];
10450
- let t87;
10451
- if ($[237] !== t86) {
10452
- t87 = /* @__PURE__ */ jsxDEV("span", {
10935
+ const t88 = tabLabel[current];
10936
+ let t89;
10937
+ if ($[243] !== t88) {
10938
+ t89 = /* @__PURE__ */ jsxDEV("span", {
10453
10939
  className: "font-medium text-foreground",
10454
- children: t86
10940
+ children: t88
10455
10941
  }, void 0, false);
10456
- $[237] = t86;
10457
- $[238] = t87;
10942
+ $[243] = t88;
10943
+ $[244] = t89;
10458
10944
  } else {
10459
- t87 = $[238];
10945
+ t89 = $[244];
10460
10946
  }
10461
- let t88;
10462
- if ($[239] !== t82 || $[240] !== t84 || $[241] !== t87) {
10463
- t88 = /* @__PURE__ */ jsxDEV("nav", {
10464
- "aria-label": t82,
10947
+ let t90;
10948
+ if ($[245] !== t84 || $[246] !== t86 || $[247] !== t89) {
10949
+ t90 = /* @__PURE__ */ jsxDEV("nav", {
10950
+ "aria-label": t84,
10465
10951
  className: "flex items-center gap-1.5 text-[13px]",
10466
- children: [t84, t85, t87]
10952
+ children: [t86, t87, t89]
10467
10953
  }, void 0, true);
10468
- $[239] = t82;
10469
- $[240] = t84;
10470
- $[241] = t87;
10471
- $[242] = t88;
10954
+ $[245] = t84;
10955
+ $[246] = t86;
10956
+ $[247] = t89;
10957
+ $[248] = t90;
10472
10958
  } else {
10473
- t88 = $[242];
10959
+ t90 = $[248];
10474
10960
  }
10475
- let t89;
10476
- if ($[243] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
10477
- t89 = /* @__PURE__ */ jsxDEV("svg", {
10961
+ let t91;
10962
+ if ($[249] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
10963
+ t91 = /* @__PURE__ */ jsxDEV("svg", {
10478
10964
  "aria-hidden": "true",
10479
10965
  className: "size-3.5",
10480
10966
  fill: "none",
@@ -10490,164 +10976,164 @@ const StudioLayout = () => {
10490
10976
  strokeLinecap: "round"
10491
10977
  }, void 0, false)]
10492
10978
  }, void 0, true);
10493
- $[243] = t89;
10979
+ $[249] = t91;
10494
10980
  } else {
10495
- t89 = $[243];
10981
+ t91 = $[249];
10496
10982
  }
10497
- let t90;
10498
- if ($[244] !== t) {
10499
- t90 = t("Search…");
10500
- $[244] = t;
10501
- $[245] = t90;
10983
+ let t92;
10984
+ if ($[250] !== t) {
10985
+ t92 = t("Search…");
10986
+ $[250] = t;
10987
+ $[251] = t92;
10502
10988
  } else {
10503
- t90 = $[245];
10989
+ t92 = $[251];
10504
10990
  }
10505
- let t91;
10506
- if ($[246] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
10507
- t91 = /* @__PURE__ */ jsxDEV("kbd", {
10991
+ let t93;
10992
+ if ($[252] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
10993
+ t93 = /* @__PURE__ */ jsxDEV("kbd", {
10508
10994
  className: "ms-auto rounded border border-border bg-background px-1 font-sans text-[10px] text-muted-foreground",
10509
10995
  children: "⌘K"
10510
10996
  }, void 0, false);
10511
- $[246] = t91;
10997
+ $[252] = t93;
10512
10998
  } else {
10513
- t91 = $[246];
10999
+ t93 = $[252];
10514
11000
  }
10515
- let t92;
10516
- if ($[247] !== t90) {
10517
- t92 = /* @__PURE__ */ jsxDEV("button", {
11001
+ let t94;
11002
+ if ($[253] !== t92) {
11003
+ t94 = /* @__PURE__ */ jsxDEV("button", {
10518
11004
  className: "mx-auto hidden h-8 w-72 items-center gap-2 rounded-lg border border-border bg-muted/40 px-3 text-xs text-muted-foreground transition-colors hover:bg-muted md:flex",
10519
11005
  "data-testid": "dash-app-search",
10520
11006
  onClick: openCommandPalette,
10521
11007
  type: "button",
10522
- children: [t89, t90, t91]
11008
+ children: [t91, t92, t93]
10523
11009
  }, void 0, true);
10524
- $[247] = t90;
10525
- $[248] = t92;
11010
+ $[253] = t92;
11011
+ $[254] = t94;
10526
11012
  } else {
10527
- t92 = $[248];
11013
+ t94 = $[254];
10528
11014
  }
10529
- let t93;
10530
- if ($[249] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
10531
- t93 = /* @__PURE__ */ jsxDEV("div", {
11015
+ let t95;
11016
+ if ($[255] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
11017
+ t95 = /* @__PURE__ */ jsxDEV("div", {
10532
11018
  className: "ms-auto flex items-center gap-1.5 md:ms-0",
10533
11019
  children: /* @__PURE__ */ jsxDEV(ThemeToggle, {}, void 0, false)
10534
11020
  }, void 0, false);
10535
- $[249] = t93;
11021
+ $[255] = t95;
10536
11022
  } else {
10537
- t93 = $[249];
11023
+ t95 = $[255];
10538
11024
  }
10539
- let t94;
10540
- if ($[250] !== t88 || $[251] !== t92) {
10541
- t94 = /* @__PURE__ */ jsxDEV("header", {
11025
+ let t96;
11026
+ if ($[256] !== t90 || $[257] !== t94) {
11027
+ t96 = /* @__PURE__ */ jsxDEV("header", {
10542
11028
  className: "flex h-11 shrink-0 items-center gap-2 border-b border-border px-4",
10543
11029
  "data-testid": "dash-app-header",
10544
- children: [t81, t88, t92, t93]
11030
+ children: [t83, t90, t94, t95]
10545
11031
  }, void 0, true);
10546
- $[250] = t88;
10547
- $[251] = t92;
10548
- $[252] = t94;
11032
+ $[256] = t90;
11033
+ $[257] = t94;
11034
+ $[258] = t96;
10549
11035
  } else {
10550
- t94 = $[252];
11036
+ t96 = $[258];
10551
11037
  }
10552
- let t95;
10553
- if ($[253] !== chrome?.rulesInstalled) {
10554
- t95 = chrome?.rulesInstalled === false && /* @__PURE__ */ jsxDEV(RulesBanner, {}, void 0, false);
10555
- $[253] = chrome?.rulesInstalled;
10556
- $[254] = t95;
10557
- } else {
10558
- t95 = $[254];
10559
- }
10560
- const t96 = `dash-tab-${current}`;
10561
- const t97 = fullHeight ? "flex min-w-0 flex-1 flex-col overflow-hidden" : "min-w-0 flex-1 overflow-auto p-6";
10562
- const t98 = tabLabel[current];
10563
- let t99;
10564
- if ($[255] !== t || $[256] !== t98) {
10565
- t99 = t("{title} failed", {
10566
- title: t98
10567
- });
10568
- $[255] = t;
10569
- $[256] = t98;
10570
- $[257] = t99;
11038
+ let t97;
11039
+ if ($[259] !== chrome?.rulesInstalled) {
11040
+ t97 = chrome?.rulesInstalled === false && /* @__PURE__ */ jsxDEV(RulesBanner, {}, void 0, false);
11041
+ $[259] = chrome?.rulesInstalled;
11042
+ $[260] = t97;
10571
11043
  } else {
10572
- t99 = $[257];
11044
+ t97 = $[260];
10573
11045
  }
11046
+ const t98 = `dash-tab-${current}`;
11047
+ const t99 = fullHeight ? "flex min-w-0 flex-1 flex-col overflow-hidden" : "min-w-0 flex-1 overflow-auto p-6";
10574
11048
  const t100 = tabLabel[current];
10575
11049
  let t101;
10576
- if ($[258] !== t) {
10577
- t101 = t("Try again");
10578
- $[258] = t;
10579
- $[259] = t101;
10580
- } else {
10581
- t101 = $[259];
10582
- }
10583
- let t102;
10584
- if ($[260] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
10585
- t102 = /* @__PURE__ */ jsxDEV(Outlet, {}, void 0, false);
10586
- $[260] = t102;
11050
+ if ($[261] !== t || $[262] !== t100) {
11051
+ t101 = t("{title} failed", {
11052
+ title: t100
11053
+ });
11054
+ $[261] = t;
11055
+ $[262] = t100;
11056
+ $[263] = t101;
10587
11057
  } else {
10588
- t102 = $[260];
11058
+ t101 = $[263];
10589
11059
  }
11060
+ const t102 = tabLabel[current];
10590
11061
  let t103;
10591
- if ($[261] !== current || $[262] !== t100 || $[263] !== t101 || $[264] !== t99) {
10592
- t103 = /* @__PURE__ */ jsxDEV(ErrorBoundary, {
10593
- fallbackTitle: t99,
10594
- label: t100,
10595
- retryLabel: t101,
10596
- children: t102
10597
- }, current, false);
10598
- $[261] = current;
10599
- $[262] = t100;
10600
- $[263] = t101;
10601
- $[264] = t99;
11062
+ if ($[264] !== t) {
11063
+ t103 = t("Try again");
11064
+ $[264] = t;
10602
11065
  $[265] = t103;
10603
11066
  } else {
10604
11067
  t103 = $[265];
10605
11068
  }
10606
11069
  let t104;
10607
- if ($[266] !== t103 || $[267] !== t97) {
10608
- t104 = /* @__PURE__ */ jsxDEV("div", {
10609
- className: t97,
10610
- children: t103
10611
- }, void 0, false);
10612
- $[266] = t103;
10613
- $[267] = t97;
10614
- $[268] = t104;
11070
+ if ($[266] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
11071
+ t104 = /* @__PURE__ */ jsxDEV(Outlet, {}, void 0, false);
11072
+ $[266] = t104;
10615
11073
  } else {
10616
- t104 = $[268];
11074
+ t104 = $[266];
10617
11075
  }
10618
11076
  let t105;
10619
- if ($[269] !== t104 || $[270] !== t96) {
10620
- t105 = /* @__PURE__ */ jsxDEV("div", {
10621
- "aria-labelledby": t96,
11077
+ if ($[267] !== current || $[268] !== t101 || $[269] !== t102 || $[270] !== t103) {
11078
+ t105 = /* @__PURE__ */ jsxDEV(ErrorBoundary, {
11079
+ fallbackTitle: t101,
11080
+ label: t102,
11081
+ retryLabel: t103,
11082
+ children: t104
11083
+ }, current, false);
11084
+ $[267] = current;
11085
+ $[268] = t101;
11086
+ $[269] = t102;
11087
+ $[270] = t103;
11088
+ $[271] = t105;
11089
+ } else {
11090
+ t105 = $[271];
11091
+ }
11092
+ let t106;
11093
+ if ($[272] !== t105 || $[273] !== t99) {
11094
+ t106 = /* @__PURE__ */ jsxDEV("div", {
11095
+ className: t99,
11096
+ children: t105
11097
+ }, void 0, false);
11098
+ $[272] = t105;
11099
+ $[273] = t99;
11100
+ $[274] = t106;
11101
+ } else {
11102
+ t106 = $[274];
11103
+ }
11104
+ let t107;
11105
+ if ($[275] !== t106 || $[276] !== t98) {
11106
+ t107 = /* @__PURE__ */ jsxDEV("div", {
11107
+ "aria-labelledby": t98,
10622
11108
  className: "flex min-w-0 flex-1 flex-col overflow-hidden",
10623
11109
  "data-testid": "dash-panel",
10624
11110
  id: "dash-panel",
10625
11111
  role: "tabpanel",
10626
- children: t104
11112
+ children: t106
10627
11113
  }, void 0, false);
10628
- $[269] = t104;
10629
- $[270] = t96;
10630
- $[271] = t105;
11114
+ $[275] = t106;
11115
+ $[276] = t98;
11116
+ $[277] = t107;
10631
11117
  } else {
10632
- t105 = $[271];
11118
+ t107 = $[277];
10633
11119
  }
10634
- let t106;
10635
- if ($[272] !== t105 || $[273] !== t94 || $[274] !== t95) {
10636
- t106 = /* @__PURE__ */ jsxDEV(SidebarInset, {
11120
+ let t108;
11121
+ if ($[278] !== t107 || $[279] !== t96 || $[280] !== t97) {
11122
+ t108 = /* @__PURE__ */ jsxDEV(SidebarInset, {
10637
11123
  className: "overflow-hidden md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm",
10638
- children: [t94, t95, t105]
11124
+ children: [t96, t97, t107]
10639
11125
  }, void 0, true);
10640
- $[272] = t105;
10641
- $[273] = t94;
10642
- $[274] = t95;
10643
- $[275] = t106;
11126
+ $[278] = t107;
11127
+ $[279] = t96;
11128
+ $[280] = t97;
11129
+ $[281] = t108;
10644
11130
  } else {
10645
- t106 = $[275];
11131
+ t108 = $[281];
10646
11132
  }
10647
11133
  return /* @__PURE__ */ jsxDEV(SidebarProvider, {
10648
11134
  className: "min-h-0 flex-1",
10649
11135
  "data-testid": "lunora-studio",
10650
- children: [t80, /* @__PURE__ */ jsxDEV(StudioSidebar, {
11136
+ children: [t82, /* @__PURE__ */ jsxDEV(StudioSidebar, {
10651
11137
  chrome,
10652
11138
  connected,
10653
11139
  current,
@@ -10656,7 +11142,7 @@ const StudioLayout = () => {
10656
11142
  selectTab,
10657
11143
  tabDescription,
10658
11144
  tabLabel
10659
- }, void 0, false), t106]
11145
+ }, void 0, false), t108]
10660
11146
  }, void 0, true);
10661
11147
  };
10662
11148
  const RoutePending = () => {
@@ -10782,6 +11268,9 @@ const buildRouter = ({
10782
11268
  export: /* @__PURE__ */ jsxDEV(ExportImportPanel, {
10783
11269
  initialShardKey
10784
11270
  }, void 0, false),
11271
+ fanout: /* @__PURE__ */ jsxDEV(FanoutPanel, {
11272
+ initialShardKey
11273
+ }, void 0, false),
10785
11274
  files: /* @__PURE__ */ jsxDEV(FileBrowser, {}, void 0, false),
10786
11275
  flags: /* @__PURE__ */ jsxDEV(FlagsPanel, {
10787
11276
  initialShardKey