@hot-updater/console 1.0.0-rc.2 → 1.0.0-rc.3

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 (110) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/InsightsErrorAlert-1cg6LDJG.js +1 -0
  3. package/.output/public/assets/InsightsPageHeader-oNIg_lcd.js +1 -0
  4. package/.output/public/assets/InsightsRolloutCard-Zsv9gBjU.js +42 -0
  5. package/.output/public/assets/{api-keys-BzKocqRy.js → api-keys-ChJjsbP2.js} +1 -1
  6. package/.output/public/assets/{api-keys-api-BHcODB7q.js → api-keys-api-LchP65vQ.js} +1 -1
  7. package/.output/public/assets/{card-Dhr_eFYj.js → card-iD7iiy4T.js} +1 -1
  8. package/.output/public/assets/{chart-no-axes-combined-Dy4WJv2U.js → chart-no-axes-combined-C0G0fQ3J.js} +1 -1
  9. package/.output/public/assets/createServerFn-DHc2erub.js +3 -0
  10. package/.output/public/assets/dialog-DX6o8qCL.js +1 -0
  11. package/.output/public/assets/{dist-C_NydL0e.js → dist-BPrb_vuw.js} +1 -1
  12. package/.output/public/assets/index-C6Nb14xG.js +10 -0
  13. package/.output/public/assets/{input-group-cSOG4wh_.js → input-group-Pa3SAbEI.js} +1 -1
  14. package/.output/public/assets/insights-C1uKy3p2.js +1 -0
  15. package/.output/public/assets/installations-Bj5AzZ3T.js +1 -0
  16. package/.output/public/assets/{installations-CE33wgbY.js → installations-DDTw9DSK.js} +2 -2
  17. package/.output/public/assets/{lazyRouteComponent-Ccp3bwBY.js → lazyRouteComponent-BN0MS05o.js} +1 -1
  18. package/.output/public/assets/{link-CI8idAUi.js → link-BG06whwB.js} +1 -1
  19. package/.output/public/assets/{loader-circle-BoxLrsOu.js → loader-circle-Bbp8LGVC.js} +1 -1
  20. package/.output/public/assets/{refresh-cw-Bqc72UZG.js → refresh-cw-DZgiAOMk.js} +1 -1
  21. package/.output/public/assets/routes-9E2okfpG.js +1 -0
  22. package/.output/public/assets/{routes-DGVXdzpw.js → routes-B3JviaDV.js} +2 -2
  23. package/.output/public/assets/{shield-check-uK3MHWJZ.js → shield-check-DoIiaaXU.js} +1 -1
  24. package/.output/public/assets/{signing-CMf4aqDO.js → signing-BKy9fIdB.js} +1 -1
  25. package/.output/public/assets/styles-C5-su40i.css +2 -0
  26. package/.output/public/assets/{table-2vcV89QB.js → table-bpgpQkPz.js} +1 -1
  27. package/.output/public/assets/useOpenInteractionType-4dPacbwb.js +1 -0
  28. package/.output/public/assets/x-Cr_sPM8E.js +1 -0
  29. package/.output/server/{__23tanstack-start-server-fn-resolver-B7ioJhtE.mjs → __23tanstack-start-server-fn-resolver-EMel9KYs.mjs} +36 -32
  30. package/.output/server/_libs/@base-ui/react+[...].mjs +1051 -1051
  31. package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +1554 -0
  32. package/.output/server/_libs/@tanstack/react-router+[...].mjs +1 -1
  33. package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +1 -1
  34. package/.output/server/_libs/d3-array.mjs +231 -0
  35. package/.output/server/_libs/d3-color.mjs +330 -0
  36. package/.output/server/_libs/d3-format.mjs +252 -0
  37. package/.output/server/_libs/d3-interpolate.mjs +207 -0
  38. package/.output/server/_libs/d3-path.mjs +77 -0
  39. package/.output/server/_libs/d3-scale+[...].mjs +1907 -0
  40. package/.output/server/_libs/d3-shape.mjs +818 -0
  41. package/.output/server/_libs/decimal.js-light.mjs +884 -0
  42. package/.output/server/_libs/es-toolkit.mjs +1159 -0
  43. package/.output/server/_libs/eventemitter3.mjs +236 -0
  44. package/.output/server/_libs/immer.mjs +532 -0
  45. package/.output/server/_libs/lucide-react.mjs +1 -1
  46. package/.output/server/_libs/next-themes.mjs +1 -1
  47. package/.output/server/_libs/react-redux+[...].mjs +205 -0
  48. package/.output/server/_libs/recharts+[...].mjs +14636 -0
  49. package/.output/server/_libs/sonner.mjs +1 -1
  50. package/.output/server/_libs/tanstack__react-query.mjs +1 -1
  51. package/.output/server/_runtime.mjs +10 -1
  52. package/.output/server/_ssr/InsightsErrorAlert-DzDVdfgW.mjs +169 -0
  53. package/.output/server/_ssr/{InsightsPageHeader-Df4Brj8u.mjs → InsightsPageHeader-CZ2AaQGk.mjs} +8 -120
  54. package/.output/server/_ssr/InsightsRolloutCard-DHB2iM4t.mjs +693 -0
  55. package/.output/server/_ssr/{api-keys-CZeTPQys.mjs → api-keys-BBl84_lN.mjs} +7 -7
  56. package/.output/server/_ssr/{api-keys-api-BUPQVSpk.mjs → api-keys-api-KSH04dLB.mjs} +2 -2
  57. package/.output/server/_ssr/{api-keys-rpc-Cs7tS5_j.mjs → api-keys-rpc-DBmgnW5o.mjs} +3 -3
  58. package/.output/server/_ssr/{api-rpc-tAupfGQm.mjs → api-rpc-DX5B6b-L.mjs} +25 -25
  59. package/.output/server/_ssr/{auth-rpc-DUaeOWKK.mjs → auth-rpc-gaibR719.mjs} +4 -4
  60. package/.output/server/_ssr/{auth.server-DW71WzsD.mjs → auth.server-DF_shCeq.mjs} +1 -1
  61. package/.output/server/_ssr/{bundle-signing-rpc-BhnBw0-d.mjs → bundle-signing-rpc-C01EKpb-.mjs} +2 -2
  62. package/.output/server/_ssr/{bundle-signing.server-C4NW5mWx.mjs → bundle-signing.server-Co_zHdJx.mjs} +1 -1
  63. package/.output/server/_ssr/{card-BRiPmi0C.mjs → card-gGh8F6kQ.mjs} +1 -1
  64. package/.output/server/_ssr/{config.server-afDuAwaG.mjs → config.server-NIXXHk-e.mjs} +5 -5
  65. package/.output/server/_ssr/{createSsrRpc-DjWNJ0uc.mjs → createSsrRpc-4rr4IJh3.mjs} +3 -3
  66. package/.output/server/_ssr/{deleteBundle-BTGwBgzx.mjs → deleteBundle-C71v1GBr.mjs} +1 -1
  67. package/.output/server/_ssr/{dialog-DS-nw-pA.mjs → dialog-DNtKYR5K.mjs} +1 -1
  68. package/.output/server/_ssr/{downloadBundle-CNnYxYO2.mjs → downloadBundle-A9zYC2go.mjs} +1 -1
  69. package/.output/server/_ssr/{getBundleChildren-C0vh4ZvE.mjs → getBundleChildren-CMGSGBWv.mjs} +1 -1
  70. package/.output/server/_ssr/{input-group-BpsnmvZw.mjs → input-group-Oj4kUnE4.mjs} +1 -1
  71. package/.output/server/_ssr/{insights-BdS364Xu.mjs → insights-oK2n5WBp.mjs} +13 -67
  72. package/.output/server/_ssr/insights-recovery-DSFM-YTL.mjs +21 -0
  73. package/.output/server/_ssr/insights-recovery-rpc-CgeCAs2K.mjs +16 -0
  74. package/.output/server/_ssr/{insights-rpc-38DujK0G.mjs → insights-rpc-DBf0ouen.mjs} +2 -2
  75. package/.output/server/_ssr/insightsRecovery-DFkXGFjd.mjs +108 -0
  76. package/.output/server/_ssr/{installations-CtA59MQG.mjs → installations-DBmYuVBi.mjs} +2 -2
  77. package/.output/server/_ssr/{installations-DiVKEF5T.mjs → installations-DQyJN-pZ.mjs} +9 -9
  78. package/.output/server/_ssr/{router-B9wG_9f8.mjs → router-C8J4nYEG.mjs} +13 -13
  79. package/.output/server/_ssr/{routes-CKrrS2q2.mjs → routes-C2RIYhyl.mjs} +2 -2
  80. package/.output/server/_ssr/{routes-D7Yh_jfj.mjs → routes-NlTRKPML.mjs} +21 -86
  81. package/.output/server/_ssr/{runtime.server-DacU1TBV.mjs → runtime.server-DLZpzphL.mjs} +1 -1
  82. package/.output/server/_ssr/{server-D_C2rMzf.mjs → server-hgrXpJQY.mjs} +3 -3
  83. package/.output/server/_ssr/{signing-Dz1WkZOf.mjs → signing-bfOvUMSJ.mjs} +3 -3
  84. package/.output/server/_ssr/ssr.mjs +1 -1
  85. package/.output/server/_ssr/{table-CnZmon_Z.mjs → table-QQ9cnWf2.mjs} +3 -3
  86. package/.output/server/_tanstack-start-manifest_v-BAb_a_eC.mjs +97 -0
  87. package/.output/server/index.mjs +152 -152
  88. package/package.json +5 -5
  89. package/src/components/features/insights/InsightsRolloutCard.tsx +505 -0
  90. package/src/components/features/releases/ReleaseEditorSheet.tsx +13 -0
  91. package/src/components/ui/empty.tsx +101 -0
  92. package/src/lib/insights-recovery-rpc.ts +14 -0
  93. package/src/lib/insights-recovery.ts +55 -0
  94. package/src/lib/server/insightsRecovery.ts +157 -0
  95. package/src/routes/insights.tsx +2 -0
  96. package/.output/public/assets/HashValueDisplay-CB0Eskit.js +0 -1
  97. package/.output/public/assets/InsightsPageHeader-Car5LNiZ.js +0 -1
  98. package/.output/public/assets/composite-Bp98A0Ld.js +0 -1
  99. package/.output/public/assets/createServerFn-CA8fs7QD.js +0 -3
  100. package/.output/public/assets/dialog-CUTrcPlB.js +0 -1
  101. package/.output/public/assets/index-DdAz-CXv.js +0 -10
  102. package/.output/public/assets/insights-C0PBSZ-n.js +0 -1
  103. package/.output/public/assets/installations-CStZja8x.js +0 -1
  104. package/.output/public/assets/routes-DTlwOr8I.js +0 -1
  105. package/.output/public/assets/styles-BCvbtKsm.css +0 -2
  106. package/.output/public/assets/useCompositeListItem-CHLITE_4.js +0 -1
  107. package/.output/public/assets/x-DCd0j8c6.js +0 -1
  108. package/.output/server/_ssr/HashValueDisplay-DwpGLfrl.mjs +0 -55
  109. package/.output/server/_tanstack-start-manifest_v-2MjTyxil.mjs +0 -97
  110. /package/.output/public/assets/{preload-helper-CQ36nxok.js → preload-helper-B_l5jfgx.js} +0 -0
@@ -0,0 +1,108 @@
1
+ import { n as recoveryWindows, t as readRecoveryInput } from "./insights-recovery-DSFM-YTL.mjs";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/insightsRecovery-DFkXGFjd.js
3
+ var MAX_SCAN_ROWS = 5e4;
4
+ async function getRecoveryReport(model, input, beforeReceivedAtMs = Date.now()) {
5
+ readRecoveryInput(input);
6
+ const { durationMs, intervalMs } = recoveryWindows[input.window];
7
+ const sinceMs = Math.max(0, beforeReceivedAtMs - durationMs);
8
+ const bucketStart = (time) => Math.floor(time / intervalMs) * intervalMs;
9
+ const releases = /* @__PURE__ */ new Map();
10
+ const adoptionTotals = /* @__PURE__ */ new Map();
11
+ let after;
12
+ let scanned = 0;
13
+ let truncated = false;
14
+ let completeSinceMs = sinceMs;
15
+ while (scanned < MAX_SCAN_ROWS) {
16
+ const limit = Math.min(100, MAX_SCAN_ROWS - scanned);
17
+ const rows = await model.listEvents({
18
+ filter: { kind: "all" },
19
+ sinceMs,
20
+ beforeReceivedAtMs,
21
+ after,
22
+ limit: limit + 1
23
+ });
24
+ const page = rows.slice(0, limit);
25
+ for (const row of page) {
26
+ if (row.platform !== input.platform || row.channel !== input.channel) continue;
27
+ if (row.type !== "RECOVERED" && row.type !== "RELEASE_ADOPTED") continue;
28
+ const releaseId = row.type === "RECOVERED" ? row.from_release_id : row.to_release_id;
29
+ if (!releaseId) continue;
30
+ const startMs = bucketStart(row.received_at_ms);
31
+ if (row.type === "RELEASE_ADOPTED") adoptionTotals.set(startMs, (adoptionTotals.get(startMs) ?? 0) + 1);
32
+ if (input.releaseId && releaseId !== input.releaseId) continue;
33
+ let release = releases.get(releaseId);
34
+ if (!release) {
35
+ release = {
36
+ firstAdoptedAtMs: null,
37
+ buckets: /* @__PURE__ */ new Map()
38
+ };
39
+ releases.set(releaseId, release);
40
+ }
41
+ const bucket = release.buckets.get(startMs) ?? {
42
+ adopted: 0,
43
+ recovered: 0,
44
+ lastRecoveredAtMs: -1
45
+ };
46
+ if (row.type === "RECOVERED") {
47
+ bucket.recovered += 1;
48
+ bucket.lastRecoveredAtMs = Math.max(bucket.lastRecoveredAtMs, row.received_at_ms);
49
+ } else {
50
+ bucket.adopted += 1;
51
+ release.firstAdoptedAtMs = Math.min(release.firstAdoptedAtMs ?? Infinity, row.received_at_ms);
52
+ }
53
+ release.buckets.set(startMs, bucket);
54
+ }
55
+ scanned += page.length;
56
+ const last = page.at(-1);
57
+ if (!last || rows.length <= limit) break;
58
+ after = {
59
+ id: last.id,
60
+ receivedAtMs: last.received_at_ms
61
+ };
62
+ if (scanned === MAX_SCAN_ROWS) {
63
+ truncated = true;
64
+ completeSinceMs = bucketStart(last.received_at_ms) + intervalMs;
65
+ }
66
+ }
67
+ const series = [];
68
+ for (const [releaseId, release] of releases) {
69
+ const firstAdoptedAtMs = release.firstAdoptedAtMs !== null && release.firstAdoptedAtMs >= completeSinceMs ? release.firstAdoptedAtMs : null;
70
+ const points = [];
71
+ let previousRate = null;
72
+ for (let startMs = bucketStart(completeSinceMs); startMs < beforeReceivedAtMs; startMs += intervalMs) {
73
+ const { adopted = 0, recovered = 0, lastRecoveredAtMs = -1 } = release.buckets.get(startMs) ?? {};
74
+ const total = adopted + recovered;
75
+ const totalAdopted = adoptionTotals.get(startMs) ?? 0;
76
+ const adoptionShare = totalAdopted === 0 ? null : adopted / totalAdopted * 100;
77
+ const rate = total === 0 ? null : recovered / total * 100;
78
+ const spike = firstAdoptedAtMs !== null && lastRecoveredAtMs >= firstAdoptedAtMs && (!truncated || previousRate !== null) && rate !== null && total >= 10 && recovered >= 3 && rate >= 10 && rate - (previousRate ?? 0) >= 10;
79
+ points.push({
80
+ startMs,
81
+ adopted,
82
+ adoptionShare,
83
+ recovered,
84
+ rate,
85
+ spike
86
+ });
87
+ if (rate !== null) previousRate = rate;
88
+ }
89
+ if (points.some(({ rate }) => rate !== null)) series.push({
90
+ releaseId,
91
+ firstAdoptedAtMs,
92
+ points
93
+ });
94
+ }
95
+ series.sort((a, b) => {
96
+ const latestSpike = (s) => [...s.points].reverse().find((p) => p.spike)?.startMs ?? -1;
97
+ return latestSpike(b) - latestSpike(a) || b.releaseId.localeCompare(a.releaseId);
98
+ });
99
+ return {
100
+ sinceMs: completeSinceMs,
101
+ beforeReceivedAtMs,
102
+ intervalMs,
103
+ truncated,
104
+ series
105
+ };
106
+ }
107
+ //#endregion
108
+ export { getRecoveryReport };
@@ -1,5 +1,5 @@
1
1
  import { d as lazyRouteComponent, f as createFileRoute } from "../_libs/@tanstack/react-router+[...].mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/installations-CtA59MQG.js
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/installations-DBmYuVBi.js
3
3
  var readCursor = (value) => typeof value === "string" && value.length > 0 ? value : void 0;
4
4
  var readTimestamp = (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0 ? value : void 0;
5
5
  function getInsightsScrollRestorationKey(location) {
@@ -20,7 +20,7 @@ function validateInstallationsSearch(search) {
20
20
  historyBefore: readTimestamp(search.historyBefore)
21
21
  };
22
22
  }
23
- var $$splitComponentImporter = () => import("./installations-DiVKEF5T.mjs");
23
+ var $$splitComponentImporter = () => import("./installations-DQyJN-pZ.mjs");
24
24
  var Route = createFileRoute("/installations")({
25
25
  component: lazyRouteComponent($$splitComponentImporter, "component"),
26
26
  validateSearch: validateInstallationsSearch
@@ -1,15 +1,15 @@
1
- import { r as __toESM } from "../_runtime.mjs";
1
+ import { i as __toESM } from "../_runtime.mjs";
2
2
  import { J as require_react, q as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
3
  import { N as ChevronDown, P as Check, R as ArrowLeft, d as RefreshCw, l as Search, t as X } from "../_libs/lucide-react.mjs";
4
- import { C as cn, S as buttonVariants, _ as Skeleton, r as Separator$1, t as Button$1 } from "./createSsrRpc-DjWNJ0uc.mjs";
4
+ import { C as cn, S as buttonVariants, _ as Skeleton, r as Separator$1, t as Button$1 } from "./createSsrRpc-4rr4IJh3.mjs";
5
5
  import { s as useElementScrollRestoration } from "../_libs/@tanstack/react-router+[...].mjs";
6
- import { d as CardTitle, o as Card, s as CardContent, u as CardHeader } from "./card-BRiPmi0C.mjs";
7
- import { a as FieldLabel, c as TableBody, d as TableHeader, f as TableRow, l as TableCell, s as Table, t as Field, u as TableHead } from "./table-CnZmon_Z.mjs";
8
- import { n as shortenIdentifier, t as HashValueDisplay } from "./HashValueDisplay-DwpGLfrl.mjs";
9
- import { a as EventTypeBadge, c as InsightsPagination, d as useInsightsInstallationQuery, f as useInsightsInstallationsQuery, i as EventTimestamp, l as useInsightsEventsQuery, n as EventHistoryCard, o as InsightsErrorAlert, p as useInsightsTimeFormat, r as EventHistoryList, s as InsightsPageHeader, t as EventBundleTransition, u as useInsightsInstallationEventsQuery } from "./InsightsPageHeader-Df4Brj8u.mjs";
10
- import { n as getInsightsScrollRestorationKey, t as Route } from "./installations-CtA59MQG.mjs";
11
- import { i as InputGroupInput, n as InputGroupAddon, r as InputGroupButton, t as InputGroup } from "./input-group-BpsnmvZw.mjs";
12
- //#region node_modules/.nitro/vite/services/ssr/assets/installations-DiVKEF5T.js
6
+ import { d as CardTitle, o as Card, s as CardContent, u as CardHeader } from "./card-gGh8F6kQ.mjs";
7
+ import { a as FieldLabel, c as TableBody, d as TableHeader, f as TableRow, l as TableCell, s as Table, t as Field, u as TableHead } from "./table-QQ9cnWf2.mjs";
8
+ import { a as InsightsErrorAlert, i as HashValueDisplay, n as EventTimestamp, o as shortenIdentifier, r as EventTypeBadge, s as useInsightsTimeFormat, t as EventBundleTransition } from "./InsightsErrorAlert-DzDVdfgW.mjs";
9
+ import { a as useInsightsEventsQuery, c as useInsightsInstallationsQuery, i as InsightsPagination, n as EventHistoryList, o as useInsightsInstallationEventsQuery, r as InsightsPageHeader, s as useInsightsInstallationQuery, t as EventHistoryCard } from "./InsightsPageHeader-CZ2AaQGk.mjs";
10
+ import { n as getInsightsScrollRestorationKey, t as Route } from "./installations-DBmYuVBi.mjs";
11
+ import { i as InputGroupInput, n as InputGroupAddon, r as InputGroupButton, t as InputGroup } from "./input-group-Oj4kUnE4.mjs";
12
+ //#region node_modules/.nitro/vite/services/ssr/assets/installations-DQyJN-pZ.js
13
13
  var import_react = /* @__PURE__ */ __toESM(require_react());
14
14
  var import_jsx_runtime = require_jsx_runtime();
15
15
  var getUserLabel$1 = (event) => event.userId ?? event.username ?? "—";
@@ -1,17 +1,17 @@
1
- import { r as __toESM } from "../_runtime.mjs";
1
+ import { i as __toESM } from "../_runtime.mjs";
2
2
  import { c as createServerFn } from "./createServerFn-B2hcXoPM.mjs";
3
3
  import { J as require_react, q as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
4
4
  import { F as ChartNoAxesCombined, S as Info, _ as Moon, c as ShieldCheck, g as OctagonX, k as CircleCheck, m as Package, n as TriangleAlert, o as Sun, x as KeyRound, y as LoaderCircle } from "../_libs/lucide-react.mjs";
5
- import { S as buttonVariants, a as SidebarContent, b as TooltipProvider, c as SidebarGroupContent, d as SidebarInset, f as SidebarMenu, h as SidebarProvider, i as Sidebar, l as SidebarGroupLabel, m as SidebarMenuItem, o as SidebarFooter, p as SidebarMenuButton, s as SidebarGroup, t as Button$1, u as SidebarHeader, w as createSsrRpc } from "./createSsrRpc-DjWNJ0uc.mjs";
5
+ import { S as buttonVariants, a as SidebarContent, b as TooltipProvider, c as SidebarGroupContent, d as SidebarInset, f as SidebarMenu, h as SidebarProvider, i as Sidebar, l as SidebarGroupLabel, m as SidebarMenuItem, o as SidebarFooter, p as SidebarMenuButton, s as SidebarGroup, t as Button$1, u as SidebarHeader, w as createSsrRpc } from "./createSsrRpc-4rr4IJh3.mjs";
6
6
  import { a as HeadContent, d as lazyRouteComponent, f as createFileRoute, i as Scripts, l as createRouter, m as Link, o as useRouterState, p as createRootRouteWithContext, u as Outlet } from "../_libs/@tanstack/react-router+[...].mjs";
7
7
  import { t as QueryClient } from "../_libs/tanstack__query-core.mjs";
8
- import { n as useApiKeyCapabilityQuery, t as ensureApiKeyRouteAccess } from "./api-keys-api-BUPQVSpk.mjs";
8
+ import { n as useApiKeyCapabilityQuery, t as ensureApiKeyRouteAccess } from "./api-keys-api-KSH04dLB.mjs";
9
9
  import { t as Toaster } from "../_libs/sonner.mjs";
10
- import { n as getInsightsScrollRestorationKey, t as Route$6 } from "./installations-CtA59MQG.mjs";
11
- import { t as Route$7 } from "./routes-CKrrS2q2.mjs";
10
+ import { n as getInsightsScrollRestorationKey, t as Route$6 } from "./installations-DBmYuVBi.mjs";
11
+ import { t as Route$7 } from "./routes-C2RIYhyl.mjs";
12
12
  import { t as setupRouterSsrQueryIntegration } from "../_libs/@tanstack/react-router-ssr-query+[...].mjs";
13
13
  import { t as z } from "../_libs/next-themes.mjs";
14
- //#region node_modules/.nitro/vite/services/ssr/assets/router-B9wG_9f8.js
14
+ //#region node_modules/.nitro/vite/services/ssr/assets/router-C8J4nYEG.js
15
15
  var import_react = /* @__PURE__ */ __toESM(require_react());
16
16
  var import_jsx_runtime = require_jsx_runtime();
17
17
  function HotUpdaterLogo({ className }) {
@@ -345,7 +345,7 @@ var Toaster$1 = ({ ...props }) => {
345
345
  };
346
346
  var getConsoleAccessRpc = createServerFn({ method: "GET" }).handler(createSsrRpc("c504696e68ba764b48c48aa8a40275938640941e473cf9cfdd7b2322d99f9d13"));
347
347
  var getConsoleAuthProvidersRpc = createServerFn({ method: "GET" }).handler(createSsrRpc("fa8c48f0489d97c62b9b68fd0caf0a61b15bad25a42b3866ec36264b4b30bb74"));
348
- var styles_default = "/assets/styles-BCvbtKsm.css";
348
+ var styles_default = "/assets/styles-C5-su40i.css";
349
349
  var Route$5 = createRootRouteWithContext()({
350
350
  head: () => ({
351
351
  meta: [
@@ -417,17 +417,17 @@ function AuthorizedConsole() {
417
417
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Outlet, {})
418
418
  })] });
419
419
  }
420
- var $$splitComponentImporter$2 = () => import("./signing-Dz1WkZOf.mjs");
420
+ var $$splitComponentImporter$2 = () => import("./signing-bfOvUMSJ.mjs");
421
421
  var Route$4 = createFileRoute("/signing")({ component: lazyRouteComponent($$splitComponentImporter$2, "component") });
422
- var $$splitComponentImporter$1 = () => import("./insights-BdS364Xu.mjs");
422
+ var $$splitComponentImporter$1 = () => import("./insights-oK2n5WBp.mjs");
423
423
  var Route$3 = createFileRoute("/insights")({ component: lazyRouteComponent($$splitComponentImporter$1, "component") });
424
- var $$splitComponentImporter = () => import("./api-keys-CZeTPQys.mjs");
424
+ var $$splitComponentImporter = () => import("./api-keys-BBl84_lN.mjs");
425
425
  var Route$2 = createFileRoute("/api-keys")({
426
426
  beforeLoad: ({ context }) => ensureApiKeyRouteAccess(context.queryClient),
427
427
  component: lazyRouteComponent($$splitComponentImporter, "component")
428
428
  });
429
429
  var handleAuthRequest = async ({ request }) => {
430
- const { handleConsoleAuth } = await import("./auth.server-DW71WzsD.mjs");
430
+ const { handleConsoleAuth } = await import("./auth.server-DF_shCeq.mjs");
431
431
  return handleConsoleAuth(request);
432
432
  };
433
433
  var Route$1 = createFileRoute("/api/auth/$")({ server: { handlers: {
@@ -435,8 +435,8 @@ var Route$1 = createFileRoute("/api/auth/$")({ server: { handlers: {
435
435
  POST: handleAuthRequest
436
436
  } } });
437
437
  var Route = createFileRoute("/api/bundles/$bundleId/download")({ server: { handlers: { GET: async ({ params, request }) => {
438
- const { prepareConfig } = await import("./config.server-afDuAwaG.mjs");
439
- const { downloadBundle } = await import("./downloadBundle-CNnYxYO2.mjs");
438
+ const { prepareConfig } = await import("./config.server-NIXXHk-e.mjs");
439
+ const { downloadBundle } = await import("./downloadBundle-A9zYC2go.mjs");
440
440
  const { databaseClient, storagePlugin } = await prepareConfig(request);
441
441
  return downloadBundle(params.bundleId, {
442
442
  databaseClient,
@@ -1,5 +1,5 @@
1
1
  import { d as lazyRouteComponent, f as createFileRoute } from "../_libs/@tanstack/react-router+[...].mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/routes-CKrrS2q2.js
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/routes-C2RIYhyl.js
3
3
  var optionalString = (value) => typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
4
4
  function validateReleaseSearch(search) {
5
5
  const parsedPage = typeof search.page === "number" ? search.page : typeof search.page === "string" ? Number(search.page) : void 0;
@@ -28,7 +28,7 @@ function updateReleaseFilters(current, filters) {
28
28
  releaseId: void 0
29
29
  };
30
30
  }
31
- var $$splitComponentImporter = () => import("./routes-D7Yh_jfj.mjs");
31
+ var $$splitComponentImporter = () => import("./routes-NlTRKPML.mjs");
32
32
  var Route = createFileRoute("/")({
33
33
  component: lazyRouteComponent($$splitComponentImporter, "component"),
34
34
  validateSearch: validateReleaseSearch
@@ -1,22 +1,23 @@
1
- import { r as __toESM } from "../_runtime.mjs";
1
+ import { i as __toESM } from "../_runtime.mjs";
2
2
  import { c as createServerFn } from "./createServerFn-B2hcXoPM.mjs";
3
- import { A as DialogDescription, D as DialogTitle, J as require_react, M as DialogBackdrop, O as DialogPortal, _ as SelectPortal, a as SliderTrack, b as SelectTrigger$1, c as SelectGroup$1, d as SelectItemText, f as SelectItemIndicator, g as SelectPositioner, h as SelectPopup, i as SliderThumb, j as DialogClose, k as DialogPopup, l as SelectScrollUpArrow, m as SelectList, n as SwitchRoot, o as SliderControl, p as SelectItem$1, q as require_jsx_runtime, r as SliderIndicator, s as SliderRoot, t as SwitchThumb, u as SelectScrollDownArrow, v as SelectIcon, w as DialogRoot, x as SelectRoot, y as SelectValue$1 } from "../_libs/@base-ui/react+[...].mjs";
4
- import { A as ChevronUp, C as Funnel, E as Download, L as ArrowRight, M as ChevronLeft, N as ChevronDown, O as CircleOff, P as Check, T as ExternalLink, a as Tag, b as List, f as Plus, i as Tags, j as ChevronRight, m as Package, n as TriangleAlert, r as Trash2, t as X, u as RotateCcw, v as Minus, w as FingerprintPattern, y as LoaderCircle } from "../_libs/lucide-react.mjs";
5
- import { C as cn, S as buttonVariants, T as useIsMobile, _ as Skeleton, g as SidebarTrigger, n as Input, r as Separator$1, t as Button$1, w as createSsrRpc } from "./createSsrRpc-DjWNJ0uc.mjs";
3
+ import { A as DialogDescription, D as DialogTitle, J as require_react, M as DialogBackdrop, O as DialogPortal, a as SliderTrack, i as SliderThumb, j as DialogClose, k as DialogPopup, n as SwitchRoot, o as SliderControl, q as require_jsx_runtime, r as SliderIndicator, s as SliderRoot, t as SwitchThumb, w as DialogRoot } from "../_libs/@base-ui/react+[...].mjs";
4
+ import { C as Funnel, E as Download, L as ArrowRight, M as ChevronLeft, N as ChevronDown, O as CircleOff, P as Check, T as ExternalLink, a as Tag, b as List, f as Plus, i as Tags, j as ChevronRight, m as Package, n as TriangleAlert, r as Trash2, t as X, u as RotateCcw, v as Minus, w as FingerprintPattern, y as LoaderCircle } from "../_libs/lucide-react.mjs";
5
+ import { C as cn, S as buttonVariants, T as useIsMobile, _ as Skeleton, g as SidebarTrigger, n as Input, r as Separator$1, t as Button$1, w as createSsrRpc } from "./createSsrRpc-4rr4IJh3.mjs";
6
6
  import { m as Link } from "../_libs/@tanstack/react-router+[...].mjs";
7
7
  import { i as useQueryClient, n as useQuery, t as useMutation } from "../_libs/tanstack__react-query.mjs";
8
- import { a as Badge, c as CardDescription, d as CardTitle, i as AlertTitle, o as Card, r as AlertDescription, s as CardContent, t as Alert, u as CardHeader } from "./card-BRiPmi0C.mjs";
9
- import { _ as DialogTrigger, a as AlertDialogDescription, d as Dialog$1, f as DialogContent, g as DialogTitle$1, h as DialogHeader, i as AlertDialogContent, l as AlertDialogTitle, m as DialogFooter, n as AlertDialogAction, o as AlertDialogFooter, p as DialogDescription$1, r as AlertDialogCancel, s as AlertDialogHeader, t as AlertDialog$1 } from "./dialog-DS-nw-pA.mjs";
10
- import { a as FieldLabel, c as TableBody, d as TableHeader, f as TableRow, i as FieldGroup, l as TableCell, n as FieldDescription, o as Label, r as FieldError, s as Table, t as Field, u as TableHead } from "./table-CnZmon_Z.mjs";
8
+ import { a as Badge, c as CardDescription, d as CardTitle, i as AlertTitle, o as Card, r as AlertDescription, s as CardContent, t as Alert, u as CardHeader } from "./card-gGh8F6kQ.mjs";
9
+ import { _ as DialogTrigger, a as AlertDialogDescription, d as Dialog$1, f as DialogContent, g as DialogTitle$1, h as DialogHeader, i as AlertDialogContent, l as AlertDialogTitle, m as DialogFooter, n as AlertDialogAction, o as AlertDialogFooter, p as DialogDescription$1, r as AlertDialogCancel, s as AlertDialogHeader, t as AlertDialog$1 } from "./dialog-DNtKYR5K.mjs";
10
+ import { a as FieldLabel, c as TableBody, d as TableHeader, f as TableRow, i as FieldGroup, l as TableCell, n as FieldDescription, o as Label, r as FieldError, s as Table, t as Field, u as TableHead } from "./table-QQ9cnWf2.mjs";
11
11
  import { n as toast } from "../_libs/sonner.mjs";
12
12
  import { C as normalizeCohortValue, S as isValidCohort, f as getNumericCohortRolloutPosition, g as getPatchFileHash, h as getPatchBaseFileHash, m as getPatchBaseBundleId, r as NUMERIC_COHORT_SIZE, t as INVALID_COHORT_ERROR_MESSAGE, w as normalizeRolloutCohortCount } from "./dist-CyzPaI5v.mjs";
13
13
  import { r as extractTimestampFromUUIDv7, t as createUUIDv7 } from "./uuidv7-D0QFkPL_.mjs";
14
- import { t as HashValueDisplay } from "./HashValueDisplay-DwpGLfrl.mjs";
15
- import { a as InputGroupText, i as InputGroupInput, n as InputGroupAddon, o as Textarea, t as InputGroup } from "./input-group-BpsnmvZw.mjs";
16
- import { n as updateReleaseFilters, t as Route } from "./routes-CKrrS2q2.mjs";
14
+ import { i as HashValueDisplay } from "./InsightsErrorAlert-DzDVdfgW.mjs";
15
+ import { a as SelectItem, i as SelectGroup, n as Select$1, o as SelectTrigger, r as SelectContent, s as SelectValue, t as InsightsRolloutCard } from "./InsightsRolloutCard-DHB2iM4t.mjs";
16
+ import { a as InputGroupText, i as InputGroupInput, n as InputGroupAddon, o as Textarea, t as InputGroup } from "./input-group-Oj4kUnE4.mjs";
17
+ import { n as updateReleaseFilters, t as Route } from "./routes-C2RIYhyl.mjs";
17
18
  import { n as require_dayjs_min, t as require_relativeTime } from "../_libs/dayjs.mjs";
18
19
  import { t as normalizeRange } from "../_libs/verkit.mjs";
19
- //#region node_modules/.nitro/vite/services/ssr/assets/routes-D7Yh_jfj.js
20
+ //#region node_modules/.nitro/vite/services/ssr/assets/routes-NlTRKPML.js
20
21
  var import_react = /* @__PURE__ */ __toESM(require_react());
21
22
  var import_jsx_runtime = require_jsx_runtime();
22
23
  var import_dayjs_min = /* @__PURE__ */ __toESM(require_dayjs_min());
@@ -824,81 +825,6 @@ function PlatformIcon({ platform, className }) {
824
825
  if (platform === "ios") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AppleIcon, { className });
825
826
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AndroidIcon, { className });
826
827
  }
827
- var Select$1 = SelectRoot;
828
- function SelectGroup({ className, ...props }) {
829
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectGroup$1, {
830
- "data-slot": "select-group",
831
- className: cn("scroll-my-1 p-1", className),
832
- ...props
833
- });
834
- }
835
- function SelectValue({ className, ...props }) {
836
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectValue$1, {
837
- "data-slot": "select-value",
838
- className: cn("flex flex-1 text-left", className),
839
- ...props
840
- });
841
- }
842
- function SelectTrigger({ className, size = "default", children, ...props }) {
843
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SelectTrigger$1, {
844
- "data-slot": "select-trigger",
845
- "data-size": size,
846
- className: cn("flex w-fit items-center justify-between gap-1.5 rounded-md border border-input bg-input/20 px-2 py-1.5 text-xs/relaxed whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-7 data-[size=sm]:h-6 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5", className),
847
- ...props,
848
- children: [children, /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectIcon, { render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronDown, { className: "pointer-events-none size-3.5 text-muted-foreground" }) })]
849
- });
850
- }
851
- function SelectContent({ className, children, side = "bottom", sideOffset = 4, align = "center", alignOffset = 0, alignItemWithTrigger = true, ...props }) {
852
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectPositioner, {
853
- side,
854
- sideOffset,
855
- align,
856
- alignOffset,
857
- alignItemWithTrigger,
858
- className: "isolate z-50",
859
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SelectPopup, {
860
- "data-slot": "select-content",
861
- "data-align-trigger": alignItemWithTrigger,
862
- className: cn("dark relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
863
- ...props,
864
- children: [
865
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectScrollUpButton, {}),
866
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectList, { children }),
867
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectScrollDownButton, {})
868
- ]
869
- })
870
- }) });
871
- }
872
- function SelectItem({ className, children, ...props }) {
873
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SelectItem$1, {
874
- "data-slot": "select-item",
875
- className: cn("relative flex min-h-7 w-full cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className),
876
- ...props,
877
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectItemText, {
878
- className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap",
879
- children
880
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectItemIndicator, {
881
- render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "pointer-events-none absolute right-2 flex items-center justify-center" }),
882
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Check, { className: "pointer-events-none" })
883
- })]
884
- });
885
- }
886
- function SelectScrollUpButton({ className, ...props }) {
887
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectScrollUpArrow, {
888
- "data-slot": "select-scroll-up-button",
889
- className: cn("top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5", className),
890
- ...props,
891
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronUp, {})
892
- });
893
- }
894
- function SelectScrollDownButton({ className, ...props }) {
895
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectScrollDownArrow, {
896
- "data-slot": "select-scroll-down-button",
897
- className: cn("bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5", className),
898
- ...props,
899
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronDown, {})
900
- });
901
- }
902
828
  function Sheet({ ...props }) {
903
829
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogRoot, {
904
830
  "data-slot": "sheet",
@@ -1411,6 +1337,15 @@ function ReleaseEditorSheet({ channels, onOpenChange, open, releaseId }) {
1411
1337
  })
1412
1338
  ]
1413
1339
  }),
1340
+ channelName ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InsightsRolloutCard, {
1341
+ inSheet: true,
1342
+ input: {
1343
+ platform: release.platform,
1344
+ channel: channelName,
1345
+ releaseId: release.id,
1346
+ window: "7d"
1347
+ }
1348
+ }) : null,
1414
1349
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Separator$1, { className: "my-2" }),
1415
1350
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", {
1416
1351
  className: "flex flex-col gap-4",
@@ -1,7 +1,7 @@
1
1
  import { x as isUUIDv7 } from "./dist-CyzPaI5v.mjs";
2
2
  import { t as createUUIDv7 } from "./uuidv7-D0QFkPL_.mjs";
3
3
  import { i as toInsightsInstallationRow, n as isInsightsMovementEvent, t as compareInsightsText } from "./insightsContract-fjJDBeEE.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/runtime.server-DacU1TBV.js
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/runtime.server-DLZpzphL.js
5
5
  var InsightsBadRequestError = class extends Error {
6
6
  name = "InsightsBadRequestError";
7
7
  };
@@ -1,6 +1,6 @@
1
1
  import "../_runtime.mjs";
2
2
  import { a as X_TSS_RAW_RESPONSE, d as getStartOptions, f as isRedirect, g as safeObjectMerge, h as runWithStartContext, i as TSS_SERVER_FUNCTION, l as flattenMiddlewares, m as mergeHeaders, n as TSS_CONTENT_TYPE_FRAMED_VERSIONED, o as X_TSS_SERIALIZED, p as isResolvedRedirect, r as TSS_FORMDATA_CONTEXT, s as createNullProtoObject, t as FrameType, u as getStartContext } from "./createServerFn-B2hcXoPM.mjs";
3
- import { t as getServerFnById } from "../__23tanstack-start-server-fn-resolver-B7ioJhtE.mjs";
3
+ import { t as getServerFnById } from "../__23tanstack-start-server-fn-resolver-EMel9KYs.mjs";
4
4
  import { J as require_react, q as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
5
5
  import { c as RouterProvider, n as defineHandlerCallback, r as renderRouterToString, t as renderRouterToStream } from "../_libs/@tanstack/react-router+[...].mjs";
6
6
  import { PassThrough, Readable } from "node:stream";
@@ -4901,7 +4901,7 @@ var defaultSerovalPlugins = [
4901
4901
  * the dev styles URL for route-scoped CSS collection.
4902
4902
  */
4903
4903
  async function getStartManifest(matchedRoutes) {
4904
- const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-2MjTyxil.mjs");
4904
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-BAb_a_eC.mjs");
4905
4905
  const startManifest = tsrStartManifest();
4906
4906
  let routes = startManifest.routes;
4907
4907
  routes[rootRouteId];
@@ -7041,7 +7041,7 @@ var getBaseManifest = getProdBaseManifest;
7041
7041
  var createEarlyHintsForRequest = createEarlyHintsCollector;
7042
7042
  async function loadEntries() {
7043
7043
  const [routerEntry, startEntry, pluginAdapters] = await Promise.all([
7044
- import("./router-B9wG_9f8.mjs"),
7044
+ import("./router-C8J4nYEG.mjs"),
7045
7045
  import("./start-DpViQGnt.mjs"),
7046
7046
  import("./empty-plugin-adapters-B5QvGpEl.mjs")
7047
7047
  ]);
@@ -1,10 +1,10 @@
1
1
  import { c as createServerFn } from "./createServerFn-B2hcXoPM.mjs";
2
2
  import { q as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
3
  import { S as Info, c as ShieldCheck, d as RefreshCw, k as CircleCheck, n as TriangleAlert } from "../_libs/lucide-react.mjs";
4
- import { _ as Skeleton, g as SidebarTrigger, t as Button$1, w as createSsrRpc } from "./createSsrRpc-DjWNJ0uc.mjs";
4
+ import { _ as Skeleton, g as SidebarTrigger, t as Button$1, w as createSsrRpc } from "./createSsrRpc-4rr4IJh3.mjs";
5
5
  import { n as useQuery } from "../_libs/tanstack__react-query.mjs";
6
- import { a as Badge, c as CardDescription, d as CardTitle, i as AlertTitle, n as AlertAction, o as Card, r as AlertDescription, s as CardContent, t as Alert, u as CardHeader } from "./card-BRiPmi0C.mjs";
7
- //#region node_modules/.nitro/vite/services/ssr/assets/signing-Dz1WkZOf.js
6
+ import { a as Badge, c as CardDescription, d as CardTitle, i as AlertTitle, n as AlertAction, o as Card, r as AlertDescription, s as CardContent, t as Alert, u as CardHeader } from "./card-gGh8F6kQ.mjs";
7
+ //#region node_modules/.nitro/vite/services/ssr/assets/signing-bfOvUMSJ.js
8
8
  var import_jsx_runtime = require_jsx_runtime();
9
9
  var getBundleSigningInspectionRpc = createServerFn({ method: "GET" }).handler(createSsrRpc("662034966679a6d29db2b55e7ba665e26e6c9a58a5529f33aa857a2049616233"));
10
10
  var bundleSigningQueryKey = ["bundle-signing"];
@@ -1,4 +1,4 @@
1
- import { i as defaultStreamHandler, n as createStartHandler } from "./server-D_C2rMzf.mjs";
1
+ import { i as defaultStreamHandler, n as createStartHandler } from "./server-hgrXpJQY.mjs";
2
2
  //#region node_modules/.nitro/vite/services/ssr/index.js
3
3
  var fetch = createStartHandler(defaultStreamHandler);
4
4
  function createServerEntry(entry) {
@@ -1,8 +1,8 @@
1
- import { r as __toESM } from "../_runtime.mjs";
1
+ import { i as __toESM } from "../_runtime.mjs";
2
2
  import { J as require_react, q as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
3
  import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
4
- import { C as cn } from "./createSsrRpc-DjWNJ0uc.mjs";
5
- //#region node_modules/.nitro/vite/services/ssr/assets/table-CnZmon_Z.js
4
+ import { C as cn } from "./createSsrRpc-4rr4IJh3.mjs";
5
+ //#region node_modules/.nitro/vite/services/ssr/assets/table-QQ9cnWf2.js
6
6
  var import_react = /* @__PURE__ */ __toESM(require_react());
7
7
  var import_jsx_runtime = require_jsx_runtime();
8
8
  function Label({ className, htmlFor, ...props }) {
@@ -0,0 +1,97 @@
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/_tanstack-start-manifest_v-BAb_a_eC.js
2
+ var tsrStartManifest = () => ({ routes: {
3
+ __root__: {
4
+ filePath: "/home/runner/work/hot-updater/hot-updater/packages/console/src/routes/__root.tsx",
5
+ children: [
6
+ "/",
7
+ "/api-keys",
8
+ "/insights",
9
+ "/installations",
10
+ "/signing",
11
+ "/api/auth/$",
12
+ "/api/bundles/$bundleId/download"
13
+ ],
14
+ preloads: [
15
+ "/assets/index-C6Nb14xG.js",
16
+ "/assets/createServerFn-DHc2erub.js",
17
+ "/assets/preload-helper-B_l5jfgx.js",
18
+ "/assets/installations-DDTw9DSK.js",
19
+ "/assets/loader-circle-Bbp8LGVC.js",
20
+ "/assets/link-BG06whwB.js",
21
+ "/assets/lazyRouteComponent-BN0MS05o.js",
22
+ "/assets/chart-no-axes-combined-C0G0fQ3J.js",
23
+ "/assets/shield-check-DoIiaaXU.js",
24
+ "/assets/api-keys-api-LchP65vQ.js",
25
+ "/assets/routes-B3JviaDV.js",
26
+ "/assets/dist-BPrb_vuw.js"
27
+ ],
28
+ scripts: [{ attrs: {
29
+ type: "module",
30
+ async: !0,
31
+ src: "/assets/index-C6Nb14xG.js"
32
+ } }]
33
+ },
34
+ "/": {
35
+ filePath: "/home/runner/work/hot-updater/hot-updater/packages/console/src/routes/index.tsx",
36
+ children: void 0,
37
+ preloads: [
38
+ "/assets/routes-9E2okfpG.js",
39
+ "/assets/dialog-DX6o8qCL.js",
40
+ "/assets/InsightsRolloutCard-Zsv9gBjU.js",
41
+ "/assets/useOpenInteractionType-4dPacbwb.js",
42
+ "/assets/InsightsErrorAlert-1cg6LDJG.js",
43
+ "/assets/table-bpgpQkPz.js",
44
+ "/assets/x-Cr_sPM8E.js",
45
+ "/assets/card-iD7iiy4T.js",
46
+ "/assets/input-group-Pa3SAbEI.js"
47
+ ]
48
+ },
49
+ "/api-keys": {
50
+ filePath: "/home/runner/work/hot-updater/hot-updater/packages/console/src/routes/api-keys.tsx",
51
+ children: void 0,
52
+ preloads: [
53
+ "/assets/api-keys-ChJjsbP2.js",
54
+ "/assets/dialog-DX6o8qCL.js",
55
+ "/assets/table-bpgpQkPz.js",
56
+ "/assets/refresh-cw-DZgiAOMk.js",
57
+ "/assets/card-iD7iiy4T.js"
58
+ ]
59
+ },
60
+ "/insights": {
61
+ filePath: "/home/runner/work/hot-updater/hot-updater/packages/console/src/routes/insights.tsx",
62
+ children: void 0,
63
+ preloads: [
64
+ "/assets/insights-C1uKy3p2.js",
65
+ "/assets/InsightsRolloutCard-Zsv9gBjU.js",
66
+ "/assets/InsightsErrorAlert-1cg6LDJG.js",
67
+ "/assets/table-bpgpQkPz.js",
68
+ "/assets/InsightsPageHeader-oNIg_lcd.js",
69
+ "/assets/card-iD7iiy4T.js"
70
+ ]
71
+ },
72
+ "/installations": {
73
+ filePath: "/home/runner/work/hot-updater/hot-updater/packages/console/src/routes/installations.tsx",
74
+ children: void 0,
75
+ preloads: [
76
+ "/assets/installations-Bj5AzZ3T.js",
77
+ "/assets/InsightsErrorAlert-1cg6LDJG.js",
78
+ "/assets/table-bpgpQkPz.js",
79
+ "/assets/refresh-cw-DZgiAOMk.js",
80
+ "/assets/x-Cr_sPM8E.js",
81
+ "/assets/InsightsPageHeader-oNIg_lcd.js",
82
+ "/assets/card-iD7iiy4T.js",
83
+ "/assets/input-group-Pa3SAbEI.js"
84
+ ]
85
+ },
86
+ "/signing": {
87
+ filePath: "/home/runner/work/hot-updater/hot-updater/packages/console/src/routes/signing.tsx",
88
+ children: void 0,
89
+ preloads: [
90
+ "/assets/signing-BKy9fIdB.js",
91
+ "/assets/refresh-cw-DZgiAOMk.js",
92
+ "/assets/card-iD7iiy4T.js"
93
+ ]
94
+ }
95
+ } });
96
+ //#endregion
97
+ export { tsrStartManifest };