@circuitwall/jarela 2.2.0 → 2.2.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 (86) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +2 -2
  3. package/.next/standalone/.next/build-manifest.json +2 -2
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  13. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/api/v1/models/[name]/route.js +61 -20
  19. package/.next/standalone/.next/server/app/api/v1/models/route.js +5 -3
  20. package/.next/standalone/.next/server/app/api/v1/providers/[provider]/models/route.js +27 -24
  21. package/.next/standalone/.next/server/app/api/v1/update/apply/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/page.js +313 -251
  23. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app-paths-manifest.json +2 -2
  26. package/.next/standalone/.next/server/chunks/2471.js +17 -17
  27. package/.next/standalone/.next/server/chunks/2563.js +24 -50
  28. package/.next/standalone/.next/server/chunks/3399.js +10695 -10695
  29. package/.next/standalone/.next/server/chunks/3524.js +5 -33
  30. package/.next/standalone/.next/server/chunks/424.js +10 -5
  31. package/.next/standalone/.next/server/chunks/4508.js +2 -2
  32. package/.next/standalone/.next/server/chunks/46.js +111 -46
  33. package/.next/standalone/.next/server/chunks/466.js +88 -13
  34. package/.next/standalone/.next/server/chunks/6649.js +1 -1
  35. package/.next/standalone/.next/server/chunks/9590.js +108 -46
  36. package/.next/standalone/.next/server/chunks/9640.js +3 -6
  37. package/.next/standalone/.next/server/middleware-build-manifest.js +2 -2
  38. package/.next/standalone/.next/server/middleware.js +104 -45
  39. package/.next/standalone/.next/server/pages/404.html +1 -1
  40. package/.next/standalone/.next/server/pages/500.html +1 -1
  41. package/.next/standalone/.next/server/preview-props.json +3 -3
  42. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  43. package/.next/standalone/.next/static/chunks/{1395-f201e3e2e1f57715.js → 1395-a340fb0a345382a4.js} +89 -14
  44. package/.next/standalone/.next/static/chunks/{4576-13f7546a145a3624.js → 7045-8bc2f14e430ca661.js} +58 -2
  45. package/.next/standalone/.next/static/chunks/app/{page-c6e972a7fd13dae8.js → page-7017f07f8a7a083c.js} +170 -151
  46. package/.next/standalone/package.json +1 -1
  47. package/CHANGELOG.md +8 -0
  48. package/api/client.models.test.ts +31 -0
  49. package/api/client.ts +16 -1
  50. package/api/types.ts +8 -0
  51. package/app/api/v1/models/[name]/route.test.ts +89 -0
  52. package/app/api/v1/models/[name]/route.ts +54 -3
  53. package/app/api/v1/models/route.ts +4 -2
  54. package/app/api/v1/providers/[provider]/models/route.test.ts +53 -0
  55. package/app/api/v1/providers/[provider]/models/route.ts +27 -16
  56. package/components/agents/agent-editor/AdvancedSection.tsx +8 -2
  57. package/components/agents/agent-editor/ModelSection.tsx +6 -3
  58. package/components/models/ModelEditor.tsx +1 -1
  59. package/components/models/ModelsPanel.tsx +34 -8
  60. package/components/models/model-editor/GitHubCopilotAuth.tsx +1 -1
  61. package/components/models/model-editor/save-helpers.ts +2 -2
  62. package/components/models/model-editor/useModelEditorForm.ts +1 -1
  63. package/components/models/model-editor/useModelSaveHandlers.ts +1 -1
  64. package/components/setup/wizard/StepCredentials.tsx +1 -1
  65. package/components/setup/wizard/StepModel.tsx +3 -8
  66. package/hooks/useModels.ts +17 -1
  67. package/lib/agents/effective-model.test.ts +45 -0
  68. package/lib/agents/effective-model.ts +11 -5
  69. package/lib/agents/llm.ts +2 -2
  70. package/lib/agents/run-thread.ts +10 -5
  71. package/lib/agents/warm-summary-background.test.ts +1 -2
  72. package/lib/agents/warm-summary-background.ts +4 -7
  73. package/lib/db/migrations.ts +10 -0
  74. package/lib/health/probes.test.ts +8 -11
  75. package/lib/health/probes.ts +5 -31
  76. package/lib/models/editor-payload.ts +1 -1
  77. package/lib/providers/github-copilot-auth.ts +2 -3
  78. package/lib/providers/github-copilot.test.ts +27 -0
  79. package/lib/providers/github-copilot.ts +21 -44
  80. package/lib/stores/integrations.test.ts +7 -0
  81. package/lib/stores/integrations.ts +4 -4
  82. package/lib/stores/model-config.test.ts +88 -0
  83. package/lib/stores/model-config.ts +90 -8
  84. package/package.json +1 -1
  85. /package/.next/standalone/.next/static/{e2NV1wk6mWg3SIeELXevg → NUrC9xax1sp1Q70nlFqS6}/_buildManifest.js +0 -0
  86. /package/.next/standalone/.next/static/{e2NV1wk6mWg3SIeELXevg → NUrC9xax1sp1Q70nlFqS6}/_ssgManifest.js +0 -0
@@ -110,4 +110,4 @@
110
110
  if (!document.hidden) { setTimeout(apply, 50); setTimeout(apply, 200); }
111
111
  });
112
112
  } catch (e) { /* non-fatal: falls back to 100dvh */ }
113
- })();</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-22f2423f357dd0a1.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\nb:I[27123,[],\"default\",1]\n:HL[\"/_next/static/css/d80058f0b9b41c09.css\",\"style\"]\n2:T4b9,(() =\u003e {\n var LIGHT = \"#ffffff\", DARK = \"#09090b\";\n function resolve(t) {\n if (t === \"light\") return LIGHT;\n if (t === \"dark\") return DARK;\n try {\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? DARK : LIGHT;\n } catch (e) { return DARK; }\n }\n try {\n var t = localStorage.getItem(\"jarela-theme\");\n if (t !== \"light\" \u0026\u0026 t !== \"dark\" \u0026\u0026 t !== \"system\") t = \"system\";\n document.documentElement.setAttribute(\"data-theme\", t);\n // Collapse any media-scoped theme-color metas Next emits to a single tag\n // so the PWA window chrome matches the user's explicit choice (not just\n // prefers-color-scheme). ThemeContext keeps this in sync on change.\n var metas = document.querySelectorAll('meta[name=\"theme-color\"]');\n for (var i = 1; i \u003c metas.length; i++) metas[i].parentNode.removeChild(metas[i]);\n var meta = metas[0];\n if (!meta) {\n meta = document.createElement(\"meta\");\n meta.setAttribute(\"name\", \"theme-color\");\n document.head.appendChild(meta);\n }\n meta.removeAttribute(\"media\");\n meta.setAttribute(\"content\", resolve(t));\n } catch (e) {\n document.documentElement.setAttribute(\"data-theme\", \"system\");\n }\n})();3:Tf06,(() =\u003e {\n try {\n var isPWA = window.matchMedia('(display-mode: standalone)').matches\n || window.matchMedia('(display-mode: fullscreen)').matches\n || window.navigator.standalone === true;\n if (!isPWA) return;\n var last = 0;\n function safeTopPx() {\n var v = getComputedStyle(document.documentElement).getPropertyValue('--app-safe-top') || '';\n var n = parseFloat(v);\n return isNaN(n) ? 0 : n;\n }\n function isEditableFocused() {\n var ae = document.activeElement;\n if (!ae) return false;\n var tag = ae.tagName;\n return tag === 'INPUT' || tag === 'TEXTAREA' || ae.isContentEditable === true;\n }\n function apply() {\n var vv = window.visualViewport;\n var vh = (vv \u0026\u0026 vv.height) || window.innerHeight;\n // Keyboard-open detection: when iOS shows the on-screen keyboard,\n // visualViewport.height shrinks but window.innerHeight stays put.\n // Pairing that gap with editable-focus makes it model-agnostic -\n // no need to guess a keyboard height per device (SE ~216, 15 Pro\n // Max ~301, iPad floating ~120). 50px just filters URL-bar jitter.\n var keyboardOpen = isEditableFocused() \u0026\u0026 (window.innerHeight - vh) \u003e 50;\n var isPortrait = window.innerHeight \u003e window.innerWidth;\n // Skip the chin correction while the keyboard is up - otherwise we\n // inflate --actual-vh beyond the visible viewport and the input bar\n // ends up underneath the keyboard.\n if (!keyboardOpen \u0026\u0026 isPortrait) {\n var screenH = Math.max(window.screen.height, window.screen.width);\n if (screenH - vh \u003e 15) {\n var top = safeTopPx();\n if (top \u003e 0) vh += top;\n }\n }\n document.documentElement.style.setProperty('--actual-vh', vh + 'px');\n if (last \u003e 0 \u0026\u0026 Math.abs(vh - last) \u003e 30) {\n setTimeout(function () { window.dispatchEvent(new Event('resize')); }, 50);\n }\n last = vh;\n }\n apply();\n [50, 150, 300, 500, 800, 1200].forEach(function (ms) { setTimeout(apply, ms); });\n window.addEventListener('resize', apply);\n window.addEventListener('orientationchange', function () {\n setTimeout(apply, 100); setTimeout(apply, 300);\n });\n if (window.visualViewport) {\n window.visualViewport.addEventListener('resize', apply);\n window.visualViewport.addEventListener('scroll', apply);\n }\n // focusin/focusout can lead visualViewport.resize by ~100ms on\n // older iOS - recompute immediately so we don't render a bad frame.\n document.addEventListener('focusin', apply, true);\n document.addEventListener('focusout', apply, true);\n // iOS still scrolls the layout viewport up when the keyboard opens\n // to keep the focused input visible, even with html/body overflow:hidden.\n // Aggressive scroll-reset on focus events counteracts it (piclaw PWA.md\n // pattern, validated on iOS 26.x). Staggered timers cover the lag\n // between focus and iOS's scroll-into-view.\n function snapScroll() {\n if (window.scrollY !== 0 || window.pageYOffset !== 0) {\n window.scrollTo(0, 0);\n }\n }\n document.addEventListener('focusin', function () {\n snapScroll();\n [16, 50, 100, 200, 400].forEach(function (ms) { setTimeout(snapScroll, ms); });\n }, true);\n document.addEventListener('focusout', function () {\n [16, 50, 100, 200].forEach(function (ms) { setTimeout(snapScroll, ms); });\n }, true);\n if (window.visualViewport) {\n window.visualViewport.addEventListener('scroll', snapScroll);\n }\n window.addEventListener('scroll', snapScroll, { passive: true });\n document.addEventListener('visibilitychange', function () {\n if (!document.hidden) { setTimeout(apply, 50); setTimeout(apply, 200); }\n });\n } catch (e) { /* non-fatal: falls back to 100dvh */ }\n})();7:X\n8:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":\"$L9\",\"p\":false,\"v\":null}}]]\n5:[[\"children\",{\"s\":\"_not-found\",\"h\":512,\"d\":{\"r\":\"$L6\",\"p\":false,\"v\":\"$7\"},\"c\":\"$Q8\"}]]\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/d80058f0b9b41c09.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"data-theme\":\"system\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$2\"}}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$3\"}}],null]}],\"$L4\"]}]]}],\"p\":false,\"v\":null},\"c\":\"$Q5\"},\"h\":{\"r\":\"$La\",\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$b\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"e2NV1wk6mWg3SIeELXevg\"}\nc:\"static/chunks/app/layout-9bc0b10127cb7d42.js\"\nd:I[30737,[\"7177\",\"$c\"],\"ThemeProvider\"]\ne:I[43639,[\"7177\",\"$c\"],\"AppProvider\"]\nf:I[57121,[],\"\"]\n10:I[74581,[],\"\"]\n11:I[94204,[\"7177\",\"$c\"],\"ConfirmHost\"]\n12:\"ServiceWorkerRegistration\"\n13:I[20722,[\"7177\",\"$c\"],\"$12\"]\n14:I[90484,[],\"OutletBoundary\"]\n15:\"$Sreact.suspense\"\n17:\"ViewportBoundary\"\n18:I[90484,[],\"$17\"]\n1a:\"MetadataBoundary\"\n1b:I[90484,[],\"$1a\"]\n4:[\"$\",\"body\",null,{\"children\":[[\"$\",\"$Ld\",null,{\"children\":[[\"$\",\"$Le\",null,{\"children\":[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L11\",null,{}]]}],[\"$\",\"$L13\",null,{}]]}]\n6:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n9:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L14\",null,{\"children\":[\"$\",\"$15\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@16\"}]}]]}]\na:[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L18\",null,{\"children\":\"$L19\"}],[\"$\",\"$L1b\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$15\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1c\"}]}],null]}],null]}]\n7:C\n19:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover, interactive-widget=resizes-content\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#ffffff\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#09090b\",\"media\":\"(prefers-color-scheme: dark)\"}]]\n1d:I[86869,[],\"IconMark\"]\n16:null\n1c:[[\"$\",\"title\",\"0\",{\"children\":\"Jarela\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Jarela — local chat interface for LangGraph agents\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Jarela\"}],[\"$\",\"meta\",\"5\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"link\",\"6\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"7\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",\"8\",{\"rel\":\"icon\",\"href\":\"/icon-192.png\",\"type\":\"image/png\",\"sizes\":\"192x192\"}],[\"$\",\"link\",\"9\",{\"rel\":\"icon\",\"href\":\"/icon-512.png\",\"type\":\"image/png\",\"sizes\":\"512x512\"}],[\"$\",\"link\",\"10\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\",\"sizes\":\"180x180\"}],[\"$\",\"$L1d\",\"11\",{}]]\n"])</script></body></html>
113
+ })();</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-22f2423f357dd0a1.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\nb:I[27123,[],\"default\",1]\n:HL[\"/_next/static/css/d80058f0b9b41c09.css\",\"style\"]\n2:T4b9,(() =\u003e {\n var LIGHT = \"#ffffff\", DARK = \"#09090b\";\n function resolve(t) {\n if (t === \"light\") return LIGHT;\n if (t === \"dark\") return DARK;\n try {\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? DARK : LIGHT;\n } catch (e) { return DARK; }\n }\n try {\n var t = localStorage.getItem(\"jarela-theme\");\n if (t !== \"light\" \u0026\u0026 t !== \"dark\" \u0026\u0026 t !== \"system\") t = \"system\";\n document.documentElement.setAttribute(\"data-theme\", t);\n // Collapse any media-scoped theme-color metas Next emits to a single tag\n // so the PWA window chrome matches the user's explicit choice (not just\n // prefers-color-scheme). ThemeContext keeps this in sync on change.\n var metas = document.querySelectorAll('meta[name=\"theme-color\"]');\n for (var i = 1; i \u003c metas.length; i++) metas[i].parentNode.removeChild(metas[i]);\n var meta = metas[0];\n if (!meta) {\n meta = document.createElement(\"meta\");\n meta.setAttribute(\"name\", \"theme-color\");\n document.head.appendChild(meta);\n }\n meta.removeAttribute(\"media\");\n meta.setAttribute(\"content\", resolve(t));\n } catch (e) {\n document.documentElement.setAttribute(\"data-theme\", \"system\");\n }\n})();3:Tf06,(() =\u003e {\n try {\n var isPWA = window.matchMedia('(display-mode: standalone)').matches\n || window.matchMedia('(display-mode: fullscreen)').matches\n || window.navigator.standalone === true;\n if (!isPWA) return;\n var last = 0;\n function safeTopPx() {\n var v = getComputedStyle(document.documentElement).getPropertyValue('--app-safe-top') || '';\n var n = parseFloat(v);\n return isNaN(n) ? 0 : n;\n }\n function isEditableFocused() {\n var ae = document.activeElement;\n if (!ae) return false;\n var tag = ae.tagName;\n return tag === 'INPUT' || tag === 'TEXTAREA' || ae.isContentEditable === true;\n }\n function apply() {\n var vv = window.visualViewport;\n var vh = (vv \u0026\u0026 vv.height) || window.innerHeight;\n // Keyboard-open detection: when iOS shows the on-screen keyboard,\n // visualViewport.height shrinks but window.innerHeight stays put.\n // Pairing that gap with editable-focus makes it model-agnostic -\n // no need to guess a keyboard height per device (SE ~216, 15 Pro\n // Max ~301, iPad floating ~120). 50px just filters URL-bar jitter.\n var keyboardOpen = isEditableFocused() \u0026\u0026 (window.innerHeight - vh) \u003e 50;\n var isPortrait = window.innerHeight \u003e window.innerWidth;\n // Skip the chin correction while the keyboard is up - otherwise we\n // inflate --actual-vh beyond the visible viewport and the input bar\n // ends up underneath the keyboard.\n if (!keyboardOpen \u0026\u0026 isPortrait) {\n var screenH = Math.max(window.screen.height, window.screen.width);\n if (screenH - vh \u003e 15) {\n var top = safeTopPx();\n if (top \u003e 0) vh += top;\n }\n }\n document.documentElement.style.setProperty('--actual-vh', vh + 'px');\n if (last \u003e 0 \u0026\u0026 Math.abs(vh - last) \u003e 30) {\n setTimeout(function () { window.dispatchEvent(new Event('resize')); }, 50);\n }\n last = vh;\n }\n apply();\n [50, 150, 300, 500, 800, 1200].forEach(function (ms) { setTimeout(apply, ms); });\n window.addEventListener('resize', apply);\n window.addEventListener('orientationchange', function () {\n setTimeout(apply, 100); setTimeout(apply, 300);\n });\n if (window.visualViewport) {\n window.visualViewport.addEventListener('resize', apply);\n window.visualViewport.addEventListener('scroll', apply);\n }\n // focusin/focusout can lead visualViewport.resize by ~100ms on\n // older iOS - recompute immediately so we don't render a bad frame.\n document.addEventListener('focusin', apply, true);\n document.addEventListener('focusout', apply, true);\n // iOS still scrolls the layout viewport up when the keyboard opens\n // to keep the focused input visible, even with html/body overflow:hidden.\n // Aggressive scroll-reset on focus events counteracts it (piclaw PWA.md\n // pattern, validated on iOS 26.x). Staggered timers cover the lag\n // between focus and iOS's scroll-into-view.\n function snapScroll() {\n if (window.scrollY !== 0 || window.pageYOffset !== 0) {\n window.scrollTo(0, 0);\n }\n }\n document.addEventListener('focusin', function () {\n snapScroll();\n [16, 50, 100, 200, 400].forEach(function (ms) { setTimeout(snapScroll, ms); });\n }, true);\n document.addEventListener('focusout', function () {\n [16, 50, 100, 200].forEach(function (ms) { setTimeout(snapScroll, ms); });\n }, true);\n if (window.visualViewport) {\n window.visualViewport.addEventListener('scroll', snapScroll);\n }\n window.addEventListener('scroll', snapScroll, { passive: true });\n document.addEventListener('visibilitychange', function () {\n if (!document.hidden) { setTimeout(apply, 50); setTimeout(apply, 200); }\n });\n } catch (e) { /* non-fatal: falls back to 100dvh */ }\n})();7:X\n8:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":\"$L9\",\"p\":false,\"v\":null}}]]\n5:[[\"children\",{\"s\":\"_not-found\",\"h\":512,\"d\":{\"r\":\"$L6\",\"p\":false,\"v\":\"$7\"},\"c\":\"$Q8\"}]]\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/d80058f0b9b41c09.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"data-theme\":\"system\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$2\"}}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$3\"}}],null]}],\"$L4\"]}]]}],\"p\":false,\"v\":null},\"c\":\"$Q5\"},\"h\":{\"r\":\"$La\",\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$b\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"NUrC9xax1sp1Q70nlFqS6\"}\nc:\"static/chunks/app/layout-9bc0b10127cb7d42.js\"\nd:I[30737,[\"7177\",\"$c\"],\"ThemeProvider\"]\ne:I[43639,[\"7177\",\"$c\"],\"AppProvider\"]\nf:I[57121,[],\"\"]\n10:I[74581,[],\"\"]\n11:I[94204,[\"7177\",\"$c\"],\"ConfirmHost\"]\n12:\"ServiceWorkerRegistration\"\n13:I[20722,[\"7177\",\"$c\"],\"$12\"]\n14:I[90484,[],\"OutletBoundary\"]\n15:\"$Sreact.suspense\"\n17:\"ViewportBoundary\"\n18:I[90484,[],\"$17\"]\n1a:\"MetadataBoundary\"\n1b:I[90484,[],\"$1a\"]\n4:[\"$\",\"body\",null,{\"children\":[[\"$\",\"$Ld\",null,{\"children\":[[\"$\",\"$Le\",null,{\"children\":[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L11\",null,{}]]}],[\"$\",\"$L13\",null,{}]]}]\n6:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n9:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L14\",null,{\"children\":[\"$\",\"$15\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@16\"}]}]]}]\na:[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L18\",null,{\"children\":\"$L19\"}],[\"$\",\"$L1b\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$15\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1c\"}]}],null]}],null]}]\n7:C\n19:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover, interactive-widget=resizes-content\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#ffffff\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#09090b\",\"media\":\"(prefers-color-scheme: dark)\"}]]\n1d:I[86869,[],\"IconMark\"]\n16:null\n1c:[[\"$\",\"title\",\"0\",{\"children\":\"Jarela\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Jarela — local chat interface for LangGraph agents\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Jarela\"}],[\"$\",\"meta\",\"5\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"link\",\"6\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"7\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",\"8\",{\"rel\":\"icon\",\"href\":\"/icon-192.png\",\"type\":\"image/png\",\"sizes\":\"192x192\"}],[\"$\",\"link\",\"9\",{\"rel\":\"icon\",\"href\":\"/icon-512.png\",\"type\":\"image/png\",\"sizes\":\"512x512\"}],[\"$\",\"link\",\"10\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\",\"sizes\":\"180x180\"}],[\"$\",\"$L1d\",\"11\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-22f2423f357dd0a1.js"/><script src="/_next/static/chunks/4bd1b696-c054103efb2e5332.js" async=""></script><script src="/_next/static/chunks/5254-bcfacd19ebb8dcce.js" async=""></script><script src="/_next/static/chunks/main-app-395c0576f1cde35e.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-22f2423f357dd0a1.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n7:I[90484,[],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:\"ViewportBoundary\"\nb:I[90484,[],\"$a\"]\nd:\"MetadataBoundary\"\ne:I[90484,[],\"$d\"]\n10:I[27123,[],\"default\",1]\n4:X\n6:[[\"children\",{\"s\":\"__PAGE__\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],\"p\":false,\"v\":null}}]]\n5:[[\"children\",{\"s\":\"_global-error\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$4\"},\"c\":\"$Q6\"}]]\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$4\"},\"c\":\"$Q5\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"$Le\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"e2NV1wk6mWg3SIeELXevg\"}\n4:C\nc:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\nf:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-22f2423f357dd0a1.js"/><script src="/_next/static/chunks/4bd1b696-c054103efb2e5332.js" async=""></script><script src="/_next/static/chunks/5254-bcfacd19ebb8dcce.js" async=""></script><script src="/_next/static/chunks/main-app-395c0576f1cde35e.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-22f2423f357dd0a1.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n7:I[90484,[],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:\"ViewportBoundary\"\nb:I[90484,[],\"$a\"]\nd:\"MetadataBoundary\"\ne:I[90484,[],\"$d\"]\n10:I[27123,[],\"default\",1]\n4:X\n6:[[\"children\",{\"s\":\"__PAGE__\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],\"p\":false,\"v\":null}}]]\n5:[[\"children\",{\"s\":\"_global-error\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$4\"},\"c\":\"$Q6\"}]]\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$4\"},\"c\":\"$Q5\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"$Le\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"NUrC9xax1sp1Q70nlFqS6\"}\n4:C\nc:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\nf:[]\n"])</script></body></html>
@@ -1,5 +1,5 @@
1
1
  {
2
- "previewModeId": "b9403e6224473440fc081f4e86285e76",
3
- "previewModeSigningKey": "3f1d9e94c6bffe73bca8c1d18022a11c2cf539670f28c1449c541bb4c6e3baca",
4
- "previewModeEncryptionKey": "426e7922dfea4e177aae134199c3dd3b3c9e83fa588dd626b78de0bb475c5379"
2
+ "previewModeId": "bb191346a1c8356ddc1428ec656cd58c",
3
+ "previewModeSigningKey": "24aeb90f3778d6ba231f7806d1392223e11d95f42c68cb11baa0282529a853ad",
4
+ "previewModeEncryptionKey": "7053afb8771aac6d66a9527558c6adf802e2c788a286c177df08e70452a53f97"
5
5
  }
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"AIT14YZ+7JxnACTeokMdPoWNffGs26GFL9bxNnNOYZw="}
1
+ {"node":{},"edge":{},"encryptionKey":"yCavLKn4adnCOapbzQvRInyy1Yo7tVGARb63Pozvz5Q="}
@@ -2471,6 +2471,8 @@ function IconPicker({ form }) {
2471
2471
  });
2472
2472
  }
2473
2473
 
2474
+ // EXTERNAL MODULE: ./lib/agents/effective-model.ts
2475
+ var effective_model = __webpack_require__(53036);
2474
2476
  // EXTERNAL MODULE: ./lib/providers/capabilities.ts
2475
2477
  var capabilities = __webpack_require__(40097);
2476
2478
  // EXTERNAL MODULE: ./components/models/CapBadges.tsx
@@ -2490,10 +2492,13 @@ var feature_readiness = __webpack_require__(79578);
2490
2492
 
2491
2493
 
2492
2494
 
2495
+
2493
2496
  function ModelSection({ form, models, integrations, onClose }) {
2494
2497
  const { dispatch } = (0,AppContext/* useAppContext */.U)();
2495
- const defaultModel = models.find((m)=>m.is_default);
2496
- const selectedModel = models.find((m)=>m.name === form.modelConfigName) ?? defaultModel;
2498
+ const enabledModels = models.filter(effective_model/* isModelEnabled */.b_);
2499
+ const defaultModel = enabledModels.find((m)=>m.is_default) ?? enabledModels[0];
2500
+ const forcedModel = enabledModels.find((m)=>m.name === form.modelConfigName);
2501
+ const selectedModel = forcedModel ?? defaultModel;
2497
2502
  const readiness = (0,feature_readiness/* computeFeatureReadiness */.s)({
2498
2503
  models,
2499
2504
  integrations,
@@ -2548,7 +2553,7 @@ function ModelSection({ form, models, integrations, onClose }) {
2548
2553
  className: "text-[11px] text-amber-700 dark:text-amber-400",
2549
2554
  children: "No default fallback model is configured yet."
2550
2555
  }),
2551
- form.modelConfigName && models.find((m)=>m.name === form.modelConfigName) && /*#__PURE__*/ (0,jsx_runtime.jsx)("p", {
2556
+ forcedModel && /*#__PURE__*/ (0,jsx_runtime.jsx)("p", {
2552
2557
  className: "text-[11px] text-sky-700 dark:text-sky-400",
2553
2558
  children: "This agent currently has a forced model override. Clear it in Advanced settings to return to router-driven selection."
2554
2559
  })
@@ -4287,6 +4292,7 @@ function ToolCredentialRow({ tool, options, selectedId, onChange }) {
4287
4292
 
4288
4293
 
4289
4294
 
4295
+
4290
4296
  const Divider = ()=>/*#__PURE__*/ (0,jsx_runtime.jsx)("hr", {
4291
4297
  className: "border-border/60 my-2"
4292
4298
  });
@@ -4311,7 +4317,7 @@ function AdvancedSection({ form, models, integrations, isFullMode, onClose }) {
4311
4317
  value: "",
4312
4318
  children: "Automatic routing (recommended)"
4313
4319
  }),
4314
- models.map((m)=>{
4320
+ models.filter((m)=>(0,effective_model/* isModelEnabled */.b_)(m) || m.name === form.modelConfigName).map((m)=>{
4315
4321
  const vision = (0,capabilities/* modelSupportsImages */.Q5)(m.provider, m.model_id);
4316
4322
  return /*#__PURE__*/ (0,jsx_runtime.jsxs)("option", {
4317
4323
  value: m.name,
@@ -4321,12 +4327,17 @@ function AdvancedSection({ form, models, integrations, isFullMode, onClose }) {
4321
4327
  " \xb7 ",
4322
4328
  m.provider,
4323
4329
  " / ",
4324
- m.model_id
4330
+ m.model_id,
4331
+ (0,effective_model/* isModelEnabled */.b_)(m) ? "" : " (disabled)"
4325
4332
  ]
4326
4333
  }, m.name);
4327
4334
  })
4328
4335
  ]
4329
4336
  }),
4337
+ selectedModel && !(0,effective_model/* isModelEnabled */.b_)(selectedModel) && /*#__PURE__*/ (0,jsx_runtime.jsx)("p", {
4338
+ className: "text-[11px] text-amber-700 dark:text-amber-400",
4339
+ children: "This model is disabled, so the agent uses automatic routing until it is enabled again."
4340
+ }),
4330
4341
  selectedModel && /*#__PURE__*/ (0,jsx_runtime.jsx)(SelectedModelDescription, {
4331
4342
  model: selectedModel,
4332
4343
  prefix: "Forced"
@@ -4630,6 +4641,54 @@ function AgentEditor({ agent, models, onSave, onClose }) {
4630
4641
  }
4631
4642
 
4632
4643
 
4644
+ /***/ }),
4645
+
4646
+ /***/ 53036:
4647
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4648
+
4649
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4650
+ /* harmony export */ Fu: () => (/* binding */ resolveAgentModel),
4651
+ /* harmony export */ b_: () => (/* binding */ isModelEnabled),
4652
+ /* harmony export */ xu: () => (/* binding */ agentModelStatus)
4653
+ /* harmony export */ });
4654
+ /**
4655
+ * Resolve which `ModelConfig` will actually be used for an agent at runtime.
4656
+ *
4657
+ * Mirrors what `lib/agents/llm.ts` does server-side: when an agent has an
4658
+ * enabled `model_config_name`, that wins; otherwise the workspace-wide
4659
+ * default among enabled models is used. Both client (BridgeEditor, AgentEditor capability hints)
4660
+ * and server need the same logic — this is the single source of truth.
4661
+ *
4662
+ * Returns `null` only when neither the requested config nor the default
4663
+ * exists in the provided list (typically: no models configured yet).
4664
+ */ function resolveAgentModel(agent, models) {
4665
+ const enabled = models.filter(isModelEnabled);
4666
+ const defaultModel = enabled.find((m)=>m.is_default) ?? enabled[0] ?? null;
4667
+ if (!agent?.model_config_name) return defaultModel;
4668
+ return enabled.find((m)=>m.name === agent.model_config_name) ?? defaultModel;
4669
+ }
4670
+ /** Disabled configs stay stored but are skipped by runtime resolution. */ function isModelEnabled(model) {
4671
+ return model.enabled !== false;
4672
+ }
4673
+ /**
4674
+ * Diagnose whether an agent has a runnable model RIGHT NOW. Used by the
4675
+ * Scheduled Tasks and Watchers panels to surface model-availability issues
4676
+ * before an unattended run silently no-ops with `no_model`.
4677
+ */ function agentModelStatus(agent, models) {
4678
+ if (!agent) return {
4679
+ state: "no-agent"
4680
+ };
4681
+ const effectiveModel = resolveAgentModel(agent, models);
4682
+ if (effectiveModel) return {
4683
+ state: "ok",
4684
+ model: effectiveModel
4685
+ };
4686
+ return {
4687
+ state: "no-model"
4688
+ };
4689
+ }
4690
+
4691
+
4633
4692
  /***/ }),
4634
4693
 
4635
4694
  /***/ 55163:
@@ -5923,7 +5982,7 @@ function AuthHeader({ status, polling, onSignIn, onSignOut }) {
5923
5982
  }),
5924
5983
  /*#__PURE__*/ (0,jsx_runtime.jsx)("p", {
5925
5984
  className: "text-fg-faint mt-0.5",
5926
- children: "Unlocks full model context windows (vs. the 8k cap on raw PATs via GitHub Models)."
5985
+ children: "Required for Copilot models; GitHub PAT authentication is no longer supported."
5927
5986
  })
5928
5987
  ]
5929
5988
  }),
@@ -9393,6 +9452,11 @@ async function request(path, init) {
9393
9452
  "Content-Type": "application/json",
9394
9453
  ...fetchInit.headers
9395
9454
  },
9455
+ // The in-memory list/value caches above are the client cache layer
9456
+ // and are invalidated on writes. The browser HTTP cache would honor
9457
+ // the server's short max-age and serve a stale list right after a
9458
+ // save, so bypass it unless a caller opts in.
9459
+ cache: "no-store",
9396
9460
  ...fetchInit,
9397
9461
  signal: timeoutCtrl.signal
9398
9462
  });
@@ -9812,6 +9876,17 @@ const api = {
9812
9876
  if (true) window.dispatchEvent(new CustomEvent("jarela:models-changed"));
9813
9877
  return updated;
9814
9878
  },
9879
+ patch: async (name, data)=>{
9880
+ const updated = await request(`/models/${encodeURIComponent(name)}`, {
9881
+ method: "PATCH",
9882
+ body: JSON.stringify(data)
9883
+ });
9884
+ // Enabling/disabling or setting the default can move the default flag
9885
+ // on other rows, so drop the cached list instead of patching one row.
9886
+ invalidateModelListCache();
9887
+ if (true) window.dispatchEvent(new CustomEvent("jarela:models-changed"));
9888
+ return updated;
9889
+ },
9815
9890
  delete: async (name)=>{
9816
9891
  const res = await request(`/models/${encodeURIComponent(name)}`, {
9817
9892
  method: "DELETE"
@@ -9936,7 +10011,10 @@ const api = {
9936
10011
  }
9937
10012
  },
9938
10013
  dashboard: {
9939
- metrics: (days = 30)=>request(`/dashboard/metrics?days=${encodeURIComponent(String(days))}`),
10014
+ // Read-only aggregates: the server's 30s HTTP cache is intended here.
10015
+ metrics: (days = 30)=>request(`/dashboard/metrics?days=${encodeURIComponent(String(days))}`, {
10016
+ cache: "default"
10017
+ }),
9940
10018
  pricingTask: ()=>request("/dashboard/pricing-task"),
9941
10019
  setupPricingTask: ()=>request("/dashboard/pricing-task", {
9942
10020
  method: "POST",
@@ -11095,7 +11173,7 @@ function StepCredentials({ definitions, integrations, onChanged }) {
11095
11173
  }),
11096
11174
  eyebrow: "Step 2 \xb7 Credentials",
11097
11175
  title: "Connect provider credentials in the UI first",
11098
- description: "Use the built-in credential forms as the main setup path. They work for Claude, GPT, Gemini, Copilot, and other providers without depending on your shell environment.",
11176
+ description: "Use the built-in credential forms as the main setup path for Claude, GPT, Gemini, and other providers. GitHub Copilot uses device-flow sign-in in the Models panel.",
11099
11177
  children: [
11100
11178
  /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", {
11101
11179
  className: "rounded-xl border border-accent/30 bg-accent/5 px-3 py-2.5 text-xs text-fg",
@@ -11299,10 +11377,7 @@ function StepModel({ models, onChanged }) {
11299
11377
  }
11300
11378
  async function handleSetDefault(m) {
11301
11379
  try {
11302
- await client/* api */.FH.models.update(m.name, {
11303
- provider: m.provider,
11304
- model_id: m.model_id,
11305
- params: m.params,
11380
+ await client/* api */.FH.models.patch(m.name, {
11306
11381
  is_default: true
11307
11382
  });
11308
11383
  onChanged();
@@ -11437,7 +11512,7 @@ function StepModel({ models, onChanged }) {
11437
11512
  /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", {
11438
11513
  className: "flex shrink-0 items-center gap-0.5",
11439
11514
  children: [
11440
- !m.is_default && /*#__PURE__*/ (0,jsx_runtime.jsx)("button", {
11515
+ !m.is_default && m.enabled !== false && /*#__PURE__*/ (0,jsx_runtime.jsx)("button", {
11441
11516
  type: "button",
11442
11517
  onClick: (e)=>{
11443
11518
  e.stopPropagation();
@@ -12168,4 +12243,4 @@ function useActiveConfirm() {
12168
12243
  /***/ })
12169
12244
 
12170
12245
  }]);
12171
- //# sourceMappingURL=1395-f201e3e2e1f57715.js.map
12246
+ //# sourceMappingURL=1395-a340fb0a345382a4.js.map
@@ -1,4 +1,4 @@
1
- (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([[4576],{
1
+ (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([[7045],{
2
2
 
3
3
  /***/ 715:
4
4
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
@@ -11720,6 +11720,62 @@ function rehypeRaw(options) {
11720
11720
  }
11721
11721
 
11722
11722
 
11723
+ /***/ }),
11724
+
11725
+ /***/ 18402:
11726
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
11727
+
11728
+ "use strict";
11729
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11730
+ /* harmony export */ A: () => (/* binding */ PowerOff)
11731
+ /* harmony export */ });
11732
+ /* unused harmony export __iconData */
11733
+ /* harmony import */ var _createLucideIcon_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(21425);
11734
+ /**
11735
+ * @license lucide-react v1.47.0 - ISC
11736
+ *
11737
+ * This source code is licensed under the ISC license.
11738
+ * See the LICENSE file in the root directory of this source tree.
11739
+ */
11740
+ const __iconData = {
11741
+ name: "power-off",
11742
+ size: 24,
11743
+ node: [
11744
+ [
11745
+ "path",
11746
+ {
11747
+ d: "M18.36 6.64A9 9 0 0 1 20.77 15",
11748
+ key: "dxknvb"
11749
+ }
11750
+ ],
11751
+ [
11752
+ "path",
11753
+ {
11754
+ d: "M6.16 6.16a9 9 0 1 0 12.68 12.68",
11755
+ key: "1x7qb5"
11756
+ }
11757
+ ],
11758
+ [
11759
+ "path",
11760
+ {
11761
+ d: "M12 2v4",
11762
+ key: "3427ic"
11763
+ }
11764
+ ],
11765
+ [
11766
+ "path",
11767
+ {
11768
+ d: "m2 2 20 20",
11769
+ key: "1ooewy"
11770
+ }
11771
+ ]
11772
+ ]
11773
+ };
11774
+ __iconData.node;
11775
+ const PowerOff = (0,_createLucideIcon_mjs__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(__iconData);
11776
+ //# sourceMappingURL=power-off.mjs.map
11777
+
11778
+
11723
11779
  /***/ }),
11724
11780
 
11725
11781
  /***/ 19707:
@@ -45051,4 +45107,4 @@ const Copy = (0,_createLucideIcon_mjs__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
45051
45107
  /***/ })
45052
45108
 
45053
45109
  }]);
45054
- //# sourceMappingURL=4576-13f7546a145a3624.js.map
45110
+ //# sourceMappingURL=7045-8bc2f14e430ca661.js.map