@circuitwall/jarela 1.4.0 → 1.4.1

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 (97) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  5. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  15. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  19. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  22. package/.next/standalone/.next/server/app/api/v1/builtin-tools/route.js +10 -1
  23. package/.next/standalone/.next/server/app/api/v1/builtin-tools/route.js.map +1 -1
  24. package/.next/standalone/.next/server/app/api/v1/dashboard/currency/route.js +10 -5
  25. package/.next/standalone/.next/server/app/api/v1/dashboard/currency/route.js.map +1 -1
  26. package/.next/standalone/.next/server/app/api/v1/providers/[provider]/probe/route.js +9 -1
  27. package/.next/standalone/.next/server/app/api/v1/providers/[provider]/probe/route.js.map +1 -1
  28. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/run/route.js +33 -8
  29. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/run/route.js.map +1 -1
  30. package/.next/standalone/.next/server/app/page.js +63 -202
  31. package/.next/standalone/.next/server/app/page.js.map +1 -1
  32. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/setup/page.js +1 -1
  35. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/chunks/1718.js +159 -0
  38. package/.next/standalone/.next/server/chunks/1718.js.map +1 -0
  39. package/.next/standalone/.next/server/chunks/2082.js +6 -3
  40. package/.next/standalone/.next/server/chunks/2082.js.map +1 -1
  41. package/.next/standalone/.next/server/chunks/210.js +28 -0
  42. package/.next/standalone/.next/server/chunks/210.js.map +1 -1
  43. package/.next/standalone/.next/server/chunks/423.js +6 -3
  44. package/.next/standalone/.next/server/chunks/423.js.map +1 -1
  45. package/.next/standalone/.next/server/chunks/4631.js +37 -5
  46. package/.next/standalone/.next/server/chunks/4631.js.map +1 -1
  47. package/.next/standalone/.next/server/chunks/8167.js +255 -204
  48. package/.next/standalone/.next/server/chunks/8167.js.map +1 -1
  49. package/.next/standalone/.next/server/chunks/8866.js +38 -5
  50. package/.next/standalone/.next/server/chunks/8866.js.map +1 -1
  51. package/.next/standalone/.next/server/chunks/9032.js +8 -0
  52. package/.next/standalone/.next/server/chunks/9032.js.map +1 -1
  53. package/.next/standalone/.next/server/chunks/{7883.js → 9557.js} +15 -3
  54. package/.next/standalone/.next/server/chunks/9557.js.map +1 -0
  55. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  56. package/.next/standalone/.next/server/middleware.js +6 -3
  57. package/.next/standalone/.next/server/pages/404.html +2 -2
  58. package/.next/standalone/.next/server/pages/500.html +1 -1
  59. package/.next/standalone/.next/server/proxy.js.map +1 -1
  60. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  61. package/.next/standalone/.next/static/chunks/{2351-68d8987bbe17ba2d.js → 2351-1ab119fb3b48f4c9.js} +258 -205
  62. package/.next/standalone/.next/static/chunks/2351-1ab119fb3b48f4c9.js.map +1 -0
  63. package/.next/standalone/.next/static/chunks/{9209-0d46118e502f8bf5.js → 4097-64691f9110cf167c.js} +14 -2
  64. package/.next/standalone/.next/static/chunks/4097-64691f9110cf167c.js.map +1 -0
  65. package/.next/standalone/.next/static/chunks/app/{page-74846c864241b96d.js → page-145150e0468544e7.js} +64 -203
  66. package/.next/standalone/.next/static/chunks/app/page-145150e0468544e7.js.map +1 -0
  67. package/.next/standalone/.next/static/chunks/app/setup/{page-9a465b5fa755b3c3.js → page-a1463a9ace439ff7.js} +2 -2
  68. package/.next/standalone/.next/static/chunks/app/setup/{page-9a465b5fa755b3c3.js.map → page-a1463a9ace439ff7.js.map} +1 -1
  69. package/.next/standalone/.next/static/chunks/{webpack-ff5627013a5e3842.js → webpack-f4ac5c5f92cfd1c1.js} +13 -1
  70. package/.next/standalone/.next/static/chunks/webpack-f4ac5c5f92cfd1c1.js.map +1 -0
  71. package/.next/standalone/package.json +1 -1
  72. package/CHANGELOG.md +60 -0
  73. package/README.md +1 -1
  74. package/api/client.ts +10 -9
  75. package/app/api/v1/dashboard/currency/route.ts +7 -2
  76. package/app/api/v1/providers/[provider]/probe/route.ts +12 -1
  77. package/app/api/v1/threads/[thread_id]/run/route.ts +22 -8
  78. package/components/layout/AppShell.tsx +53 -17
  79. package/components/setup/PinKeypad.tsx +238 -0
  80. package/components/setup/ScreenLock.tsx +8 -173
  81. package/components/setup/UnlockScreen.tsx +25 -192
  82. package/lib/documents/remote/github.ts +16 -2
  83. package/lib/documents/remote/mail.ts +11 -2
  84. package/lib/lifecycle/shutdown.ts +9 -0
  85. package/lib/providers/github-copilot-auth.ts +2 -0
  86. package/lib/providers/github-copilot.ts +1 -0
  87. package/lib/tools/async-results.ts +11 -0
  88. package/package.json +1 -1
  89. package/scripts/install-to-system.ps1 +2 -2
  90. package/scripts/installed-launcher.ps1 +81 -17
  91. package/.next/standalone/.next/server/chunks/7883.js.map +0 -1
  92. package/.next/standalone/.next/static/chunks/2351-68d8987bbe17ba2d.js.map +0 -1
  93. package/.next/standalone/.next/static/chunks/9209-0d46118e502f8bf5.js.map +0 -1
  94. package/.next/standalone/.next/static/chunks/app/page-74846c864241b96d.js.map +0 -1
  95. package/.next/standalone/.next/static/chunks/webpack-ff5627013a5e3842.js.map +0 -1
  96. /package/.next/standalone/.next/static/{AV5AO0yTRABo-NgwxhDe7 → WQdcnm9NyqpeNc0Z8_woo}/_buildManifest.js +0 -0
  97. /package/.next/standalone/.next/static/{AV5AO0yTRABo-NgwxhDe7 → WQdcnm9NyqpeNc0Z8_woo}/_ssgManifest.js +0 -0
@@ -23096,195 +23096,26 @@ function BootScreen({ agents, agentsLoaded, activeAgentId, onPickAgent, suppress
23096
23096
  });
23097
23097
  }
23098
23098
 
23099
+ // EXTERNAL MODULE: ./components/setup/PinKeypad.tsx
23100
+ var PinKeypad = __webpack_require__(772);
23099
23101
  ;// ./components/setup/ScreenLock.tsx
23100
23102
  /* __next_internal_client_entry_do_not_use__ ScreenLock auto */
23101
23103
 
23102
-
23103
- // Screen-lock overlay (presence check). Shown when the server reports
23104
- // `screen_locked: true` after an idle timeout. Distinct from
23105
- // UnlockScreen this does NOT touch the in-memory master key, just
23106
- // verifies the human at the keyboard knows the PIN. Background work
23107
- // (agents, scheduler, bridges) keeps running underneath.
23108
- const PIN_LENGTH = 6;
23104
+ // Screen-lock overlay (presence check). Mounted by AppShell when the
23105
+ // idle timer fires or the server returns 423 `screen-locked`. Does
23106
+ // NOT touch the in-memory master key background work (agents,
23107
+ // scheduler, bridges) keeps running underneath. The /verify-pin
23108
+ // endpoint just confirms the human at the keyboard and clears the
23109
+ // idle flag.
23109
23110
  function ScreenLock({ onUnlock }) {
23110
- const [digits, setDigits] = (0,react.useState)("");
23111
- const [error, setError] = (0,react.useState)(null);
23112
- const [submitting, setSubmitting] = (0,react.useState)(false);
23113
- const [retryAfterSec, setRetryAfterSec] = (0,react.useState)(0);
23114
- const submittingRef = (0,react.useRef)(false);
23115
- const submit = (0,react.useCallback)(async (pin)=>{
23116
- if (submittingRef.current) return;
23117
- submittingRef.current = true;
23118
- setSubmitting(true);
23119
- setError(null);
23120
- try {
23121
- const res = await fetch("/api/v1/security/verify-pin", {
23122
- method: "POST",
23123
- headers: {
23124
- "content-type": "application/json"
23125
- },
23126
- body: JSON.stringify({
23127
- pin
23128
- })
23129
- });
23130
- if (res.ok) {
23131
- onUnlock();
23132
- return;
23133
- }
23134
- const body = await res.json().catch(()=>({}));
23135
- if (res.status === 429 && typeof body.retry_after_ms === "number") {
23136
- setRetryAfterSec(Math.ceil(body.retry_after_ms / 1000));
23137
- setError("Too many attempts. Try again later.");
23138
- } else if (res.status === 401) {
23139
- setError("Wrong PIN. Try again.");
23140
- } else if (res.status === 400) {
23141
- setError("Invalid PIN format.");
23142
- } else {
23143
- setError(body.error ?? `Error (${res.status})`);
23144
- }
23145
- setDigits("");
23146
- } catch (err) {
23147
- setError(err instanceof Error ? err.message : String(err));
23148
- setDigits("");
23149
- } finally{
23150
- submittingRef.current = false;
23151
- setSubmitting(false);
23152
- }
23153
- }, [
23154
- onUnlock
23155
- ]);
23156
- const append = (0,react.useCallback)((d)=>{
23157
- if (submitting || retryAfterSec > 0) return;
23158
- setError(null);
23159
- setDigits((cur)=>cur.length >= PIN_LENGTH ? cur : cur + d);
23160
- }, [
23161
- submitting,
23162
- retryAfterSec
23163
- ]);
23164
- (0,react.useEffect)(()=>{
23165
- if (digits.length === PIN_LENGTH && !submittingRef.current) {
23166
- void submit(digits);
23167
- }
23168
- }, [
23169
- digits,
23170
- submit
23171
- ]);
23172
- const backspace = (0,react.useCallback)(()=>{
23173
- if (submitting) return;
23174
- setError(null);
23175
- setDigits((cur)=>cur.slice(0, -1));
23176
- }, [
23177
- submitting
23178
- ]);
23179
- (0,react.useEffect)(()=>{
23180
- function onKey(e) {
23181
- if (/^[0-9]$/.test(e.key)) {
23182
- e.preventDefault();
23183
- append(e.key);
23184
- } else if (e.key === "Backspace") {
23185
- e.preventDefault();
23186
- backspace();
23187
- }
23188
- }
23189
- window.addEventListener("keydown", onKey);
23190
- return ()=>window.removeEventListener("keydown", onKey);
23191
- }, [
23192
- append,
23193
- backspace
23194
- ]);
23195
- (0,react.useEffect)(()=>{
23196
- if (retryAfterSec <= 0) return;
23197
- const t = setInterval(()=>{
23198
- setRetryAfterSec((s)=>s > 0 ? s - 1 : 0);
23199
- }, 1000);
23200
- return ()=>clearInterval(t);
23201
- }, [
23202
- retryAfterSec
23203
- ]);
23204
- return /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", {
23205
- className: "fixed inset-0 z-[1000] flex flex-col items-center justify-center gap-6 bg-surface text-fg",
23206
- style: {
23207
- paddingTop: "env(safe-area-inset-top)",
23208
- paddingBottom: "env(safe-area-inset-bottom)"
23209
- },
23210
- children: [
23211
- /*#__PURE__*/ (0,jsx_runtime.jsx)(Logo/* Logo */.g, {
23212
- className: "h-16 w-auto"
23213
- }),
23214
- /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", {
23215
- className: "w-full max-w-xs p-6",
23216
- children: [
23217
- /*#__PURE__*/ (0,jsx_runtime.jsx)("h1", {
23218
- className: "mb-1 text-center text-lg font-semibold text-fg",
23219
- children: "Locked"
23220
- }),
23221
- /*#__PURE__*/ (0,jsx_runtime.jsx)("p", {
23222
- className: "mb-6 text-center text-xs text-fg-faint",
23223
- children: "Enter your 6-digit PIN to resume."
23224
- }),
23225
- /*#__PURE__*/ (0,jsx_runtime.jsx)("div", {
23226
- className: "mb-6 flex justify-center gap-3",
23227
- "aria-label": "PIN entry progress",
23228
- children: Array.from({
23229
- length: PIN_LENGTH
23230
- }).map((_, i)=>/*#__PURE__*/ (0,jsx_runtime.jsx)("span", {
23231
- className: `h-3 w-3 rounded-full transition-colors ${i < digits.length ? error ? "bg-red-500" : "bg-fg" : "bg-surface-3"}`
23232
- }, i))
23233
- }),
23234
- /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", {
23235
- className: "grid grid-cols-3 gap-2",
23236
- children: [
23237
- [
23238
- "1",
23239
- "2",
23240
- "3",
23241
- "4",
23242
- "5",
23243
- "6",
23244
- "7",
23245
- "8",
23246
- "9"
23247
- ].map((d)=>/*#__PURE__*/ (0,jsx_runtime.jsx)(PinKey, {
23248
- digit: d,
23249
- onPress: ()=>append(d),
23250
- disabled: submitting || retryAfterSec > 0
23251
- }, d)),
23252
- /*#__PURE__*/ (0,jsx_runtime.jsx)("div", {}),
23253
- /*#__PURE__*/ (0,jsx_runtime.jsx)(PinKey, {
23254
- digit: "0",
23255
- onPress: ()=>append("0"),
23256
- disabled: submitting || retryAfterSec > 0
23257
- }),
23258
- /*#__PURE__*/ (0,jsx_runtime.jsx)(PinKey, {
23259
- digit: "←",
23260
- onPress: backspace,
23261
- disabled: submitting || digits.length === 0,
23262
- ariaLabel: "Backspace"
23263
- })
23264
- ]
23265
- }),
23266
- /*#__PURE__*/ (0,jsx_runtime.jsx)("p", {
23267
- className: `mt-4 min-h-[1.5rem] text-center text-xs ${error ? "text-red-400" : "text-fg-faint"}`,
23268
- role: "status",
23269
- "aria-live": "polite",
23270
- children: retryAfterSec > 0 ? `Try again in ${retryAfterSec}s` : error ?? (submitting ? "Verifying…" : "\u00A0")
23271
- })
23272
- ]
23273
- })
23274
- ]
23275
- });
23276
- }
23277
- function PinKey({ digit, onPress, disabled, ariaLabel }) {
23278
- return /*#__PURE__*/ (0,jsx_runtime.jsx)("button", {
23279
- type: "button",
23280
- onClick: onPress,
23281
- disabled: disabled,
23282
- "aria-label": ariaLabel ?? digit,
23283
- className: "h-14 rounded-xl bg-surface-3 text-xl font-medium text-fg transition-colors hover:bg-surface-3/70 active:bg-surface-3/50 disabled:cursor-not-allowed disabled:opacity-50",
23284
- children: digit
23111
+ return /*#__PURE__*/ (0,jsx_runtime.jsx)(PinKeypad/* PinKeypad */.y, {
23112
+ mode: "unlock",
23113
+ onSuccess: onUnlock
23285
23114
  });
23286
23115
  }
23287
23116
 
23117
+ // EXTERNAL MODULE: ./components/setup/UnlockScreen.tsx
23118
+ var UnlockScreen = __webpack_require__(2283);
23288
23119
  // EXTERNAL MODULE: ./node_modules/lucide-react/dist/esm/icons/message-square.mjs
23289
23120
  var message_square = __webpack_require__(5494);
23290
23121
  // EXTERNAL MODULE: ./node_modules/lucide-react/dist/esm/icons/chart-column.mjs
@@ -25723,6 +25554,7 @@ function InteractiveCostChart({ series, currencyInfo, selectedDay, onSelectDay }
25723
25554
 
25724
25555
 
25725
25556
 
25557
+
25726
25558
 
25727
25559
 
25728
25560
  const AppShell_ADVANCED_TABS = new Set([
@@ -25893,24 +25725,30 @@ function AppShell() {
25893
25725
  showAgentPicker
25894
25726
  ]);
25895
25727
  const activeAgent = state.activeAgentId ? agents.find((a)=>a.id === state.activeAgentId) ?? null : null;
25896
- // Screen-lock overlay. Distinct from the boot-time master-key unlock
25897
- // (that's gated server-side in `app/page.tsx`). This one is the
25898
- // presence check that fires after `idle_timeout_ms` of inactivity:
25899
- // background work keeps running but the UI is hidden until the user
25900
- // re-enters their PIN. Triggered either by a 423 `screen-locked`
25901
- // response from the api client or by the periodic state probe below.
25728
+ // Screen-lock overlay (presence check) AND master-key-locked overlay
25729
+ // (decrypt). Distinct from the boot-time gate in `app/page.tsx`:
25730
+ // those mounts are triggered mid-session either by an idle timer
25731
+ // (screen-lock) or by the master key being re-locked by an external
25732
+ // process (decrypt). Both are signalled by the API client when it
25733
+ // sees the matching 423 response.
25902
25734
  const [screenLocked, setScreenLocked] = (0,react.useState)(false);
25735
+ const [masterKeyLocked, setMasterKeyLocked] = (0,react.useState)(false);
25903
25736
  // Bumped after each unlock so BootScreen remounts with fresh state
25904
25737
  // (its `done` / `pickedId` / `prefetchStartedRef` would otherwise
25905
- // suppress the picker on the second appearance).
25738
+ // suppress the picker on the second appearance). Both unlock paths
25739
+ // bump this — the agent selector is always the post-unlock landing.
25906
25740
  const [bootSeq, setBootSeq] = (0,react.useState)(0);
25907
25741
  (0,react.useEffect)(()=>{
25908
25742
  let cancelled = false;
25909
25743
  let timer = null;
25910
- function onLocked() {
25744
+ function onScreenLocked() {
25911
25745
  if (!cancelled) setScreenLocked(true);
25912
25746
  }
25913
- window.addEventListener("jarela:screen-locked", onLocked);
25747
+ function onMasterKeyLocked() {
25748
+ if (!cancelled) setMasterKeyLocked(true);
25749
+ }
25750
+ window.addEventListener("jarela:screen-locked", onScreenLocked);
25751
+ window.addEventListener("jarela:master-key-locked", onMasterKeyLocked);
25914
25752
  // Soft poll every 30s so the overlay still appears if no user
25915
25753
  // action triggered a request after the idle timer elapsed.
25916
25754
  async function probe() {
@@ -25918,11 +25756,13 @@ function AppShell() {
25918
25756
  const res = await fetch("/api/v1/security/state");
25919
25757
  if (!res.ok) return;
25920
25758
  const body = await res.json();
25921
- if (!cancelled && body.screen_locked === true) {
25922
- setScreenLocked(true);
25923
- }
25924
- } catch {
25925
- // Network blip; try again next tick.
25759
+ if (cancelled) return;
25760
+ if (body.state === "locked") setMasterKeyLocked(true);
25761
+ if (body.screen_locked === true) setScreenLocked(true);
25762
+ } catch (err) {
25763
+ // Network blip; try again next tick. Logged at debug-level so
25764
+ // a sustained outage is at least findable in devtools.
25765
+ if (false) {}
25926
25766
  }
25927
25767
  }
25928
25768
  void probe();
@@ -25930,9 +25770,22 @@ function AppShell() {
25930
25770
  return ()=>{
25931
25771
  cancelled = true;
25932
25772
  if (timer) clearInterval(timer);
25933
- window.removeEventListener("jarela:screen-locked", onLocked);
25773
+ window.removeEventListener("jarela:screen-locked", onScreenLocked);
25774
+ window.removeEventListener("jarela:master-key-locked", onMasterKeyLocked);
25934
25775
  };
25935
25776
  }, []);
25777
+ // Shared post-unlock landing: clear the current chat and force the
25778
+ // BootScreen to remount so the user lands on the agent picker. Used
25779
+ // by BOTH the screen-unlock and the master-key decrypt paths so the
25780
+ // two transitions feel identical from the user's side.
25781
+ const landOnAgentPicker = (0,react.useCallback)(()=>{
25782
+ dispatch({
25783
+ type: "NEW_CHAT"
25784
+ });
25785
+ setBootSeq((n)=>n + 1);
25786
+ }, [
25787
+ dispatch
25788
+ ]);
25936
25789
  return(// `dvh` natively tracks the visible viewport on iOS 16.4+ / modern
25937
25790
  // Chromium, including the on-screen keyboard. The `--actual-vh`
25938
25791
  // override (set by the iOS-standalone-PWA shim in layout.tsx) covers
@@ -25966,13 +25819,21 @@ function AppShell() {
25966
25819
  onUnlock: ()=>{
25967
25820
  // Drop the user back on the picker so they consciously
25968
25821
  // re-enter their workspace rather than landing mid-chat.
25969
- dispatch({
25970
- type: "NEW_CHAT"
25971
- });
25972
- setBootSeq((n)=>n + 1);
25822
+ landOnAgentPicker();
25973
25823
  setScreenLocked(false);
25974
25824
  }
25975
25825
  }),
25826
+ masterKeyLocked && !screenLocked && // Master key got re-locked mid-session (e.g. external lock
25827
+ // command). Mount the decrypt splash — same shared keypad as
25828
+ // boot — and on success drop back to the agent picker. The
25829
+ // existing components below stay mounted underneath; once
25830
+ // unlocked they resume against the now-unlocked DB.
25831
+ /*#__PURE__*/ (0,jsx_runtime.jsx)(UnlockScreen.UnlockScreen, {
25832
+ onUnlock: ()=>{
25833
+ landOnAgentPicker();
25834
+ setMasterKeyLocked(false);
25835
+ }
25836
+ }),
25976
25837
  /*#__PURE__*/ (0,jsx_runtime.jsx)(NotificationStatus, {}),
25977
25838
  /*#__PURE__*/ (0,jsx_runtime.jsx)(Toaster, {}),
25978
25839
  /*#__PURE__*/ (0,jsx_runtime.jsx)(ServerStatus, {}),
@@ -26220,9 +26081,9 @@ Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_re
26220
26081
  },
26221
26082
  /******/ __webpack_require__ => { // webpackRuntimeModules
26222
26083
  /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
26223
- /******/ __webpack_require__.O(0, [1973,9209,7537,2351,8441,3457,7358], () => (__webpack_exec__(9852)));
26084
+ /******/ __webpack_require__.O(0, [1973,4097,7537,2351,8441,3457,7358], () => (__webpack_exec__(9852)));
26224
26085
  /******/ var __webpack_exports__ = __webpack_require__.O();
26225
26086
  /******/ _N_E = __webpack_exports__;
26226
26087
  /******/ }
26227
26088
  ]);
26228
- //# sourceMappingURL=page-74846c864241b96d.js.map
26089
+ //# sourceMappingURL=page-145150e0468544e7.js.map