@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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +2 -2
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/v1/models/[name]/route.js +61 -20
- package/.next/standalone/.next/server/app/api/v1/models/route.js +5 -3
- package/.next/standalone/.next/server/app/api/v1/providers/[provider]/models/route.js +27 -24
- package/.next/standalone/.next/server/app/api/v1/update/apply/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page.js +313 -251
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +2 -2
- package/.next/standalone/.next/server/chunks/2471.js +17 -17
- package/.next/standalone/.next/server/chunks/2563.js +24 -50
- package/.next/standalone/.next/server/chunks/3399.js +10695 -10695
- package/.next/standalone/.next/server/chunks/3524.js +5 -33
- package/.next/standalone/.next/server/chunks/424.js +10 -5
- package/.next/standalone/.next/server/chunks/4508.js +2 -2
- package/.next/standalone/.next/server/chunks/46.js +111 -46
- package/.next/standalone/.next/server/chunks/466.js +88 -13
- package/.next/standalone/.next/server/chunks/6649.js +1 -1
- package/.next/standalone/.next/server/chunks/9590.js +108 -46
- package/.next/standalone/.next/server/chunks/9640.js +3 -6
- package/.next/standalone/.next/server/middleware-build-manifest.js +2 -2
- package/.next/standalone/.next/server/middleware.js +104 -45
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/preview-props.json +3 -3
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/{1395-f201e3e2e1f57715.js → 1395-a340fb0a345382a4.js} +89 -14
- package/.next/standalone/.next/static/chunks/{4576-13f7546a145a3624.js → 7045-8bc2f14e430ca661.js} +58 -2
- package/.next/standalone/.next/static/chunks/app/{page-c6e972a7fd13dae8.js → page-7017f07f8a7a083c.js} +170 -151
- package/.next/standalone/package.json +1 -1
- package/CHANGELOG.md +8 -0
- package/api/client.models.test.ts +31 -0
- package/api/client.ts +16 -1
- package/api/types.ts +8 -0
- package/app/api/v1/models/[name]/route.test.ts +89 -0
- package/app/api/v1/models/[name]/route.ts +54 -3
- package/app/api/v1/models/route.ts +4 -2
- package/app/api/v1/providers/[provider]/models/route.test.ts +53 -0
- package/app/api/v1/providers/[provider]/models/route.ts +27 -16
- package/components/agents/agent-editor/AdvancedSection.tsx +8 -2
- package/components/agents/agent-editor/ModelSection.tsx +6 -3
- package/components/models/ModelEditor.tsx +1 -1
- package/components/models/ModelsPanel.tsx +34 -8
- package/components/models/model-editor/GitHubCopilotAuth.tsx +1 -1
- package/components/models/model-editor/save-helpers.ts +2 -2
- package/components/models/model-editor/useModelEditorForm.ts +1 -1
- package/components/models/model-editor/useModelSaveHandlers.ts +1 -1
- package/components/setup/wizard/StepCredentials.tsx +1 -1
- package/components/setup/wizard/StepModel.tsx +3 -8
- package/hooks/useModels.ts +17 -1
- package/lib/agents/effective-model.test.ts +45 -0
- package/lib/agents/effective-model.ts +11 -5
- package/lib/agents/llm.ts +2 -2
- package/lib/agents/run-thread.ts +10 -5
- package/lib/agents/warm-summary-background.test.ts +1 -2
- package/lib/agents/warm-summary-background.ts +4 -7
- package/lib/db/migrations.ts +10 -0
- package/lib/health/probes.test.ts +8 -11
- package/lib/health/probes.ts +5 -31
- package/lib/models/editor-payload.ts +1 -1
- package/lib/providers/github-copilot-auth.ts +2 -3
- package/lib/providers/github-copilot.test.ts +27 -0
- package/lib/providers/github-copilot.ts +21 -44
- package/lib/stores/integrations.test.ts +7 -0
- package/lib/stores/integrations.ts +4 -4
- package/lib/stores/model-config.test.ts +88 -0
- package/lib/stores/model-config.ts +90 -8
- package/package.json +1 -1
- /package/.next/standalone/.next/static/{e2NV1wk6mWg3SIeELXevg → NUrC9xax1sp1Q70nlFqS6}/_buildManifest.js +0 -0
- /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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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\":\"
|
|
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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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": "
|
|
3
|
-
"previewModeSigningKey": "
|
|
4
|
-
"previewModeEncryptionKey": "
|
|
2
|
+
"previewModeId": "bb191346a1c8356ddc1428ec656cd58c",
|
|
3
|
+
"previewModeSigningKey": "24aeb90f3778d6ba231f7806d1392223e11d95f42c68cb11baa0282529a853ad",
|
|
4
|
+
"previewModeEncryptionKey": "7053afb8771aac6d66a9527558c6adf802e2c788a286c177df08e70452a53f97"
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"node":{},"edge":{},"encryptionKey":"
|
|
1
|
+
{"node":{},"edge":{},"encryptionKey":"yCavLKn4adnCOapbzQvRInyy1Yo7tVGARb63Pozvz5Q="}
|
package/.next/standalone/.next/static/chunks/{1395-f201e3e2e1f57715.js → 1395-a340fb0a345382a4.js}
RENAMED
|
@@ -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
|
|
2496
|
-
const
|
|
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
|
-
|
|
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: "
|
|
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
|
-
|
|
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
|
|
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.
|
|
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-
|
|
12246
|
+
//# sourceMappingURL=1395-a340fb0a345382a4.js.map
|
package/.next/standalone/.next/static/chunks/{4576-13f7546a145a3624.js → 7045-8bc2f14e430ca661.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([[
|
|
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=
|
|
45110
|
+
//# sourceMappingURL=7045-8bc2f14e430ca661.js.map
|