hermium 0.1.7 → 0.1.8
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/bin/hermium.mjs +6 -5
- package/dist/public/assets/{IconAlertCircle-C98Iam1j.js → IconAlertCircle-BHkmI3j7.js} +1 -1
- package/dist/public/assets/{IconAlertTriangle-DdD7_dc8.js → IconAlertTriangle-wCJudlVg.js} +1 -1
- package/dist/public/assets/{IconCheck-CYZ4_524.js → IconCheck-CFuEh_p7.js} +1 -1
- package/dist/public/assets/{IconLoader2-DkEhzUxZ.js → IconLoader2-BIx3OuF9.js} +1 -1
- package/dist/public/assets/{IconRefresh-CCXMrUxO.js → IconRefresh-Dgm93w3T.js} +1 -1
- package/dist/public/assets/index-Bbz3abmO.js +14 -0
- package/dist/public/assets/index-CWUaRwcE.js +1 -0
- package/dist/public/assets/index-CinLq3cd.js +1 -0
- package/dist/public/assets/{index-DCT13_ZI.js → index-CrQs9n6q.js} +1 -1
- package/dist/public/assets/{index-zFJdOj6P.js → index-CtacpN3I.js} +1 -1
- package/dist/public/assets/{index-C0ivmMuU.js → index-DY7aE-9s.js} +1 -1
- package/dist/public/assets/index-DkYGodJj.js +94 -0
- package/dist/public/assets/{index-DhCVawEl.js → index-DvDLadUx.js} +1 -1
- package/dist/public/assets/index-U6RcWedt.js +1 -0
- package/dist/public/assets/index-_6iFZ0fh.js +1 -0
- package/dist/public/assets/index-enFS26SU.js +1 -0
- package/dist/public/assets/input-eNcwlDHp.js +1 -0
- package/dist/public/assets/queries-iHRgZzw2.js +1 -0
- package/dist/public/assets/styles-KcflDlA_.css +1 -0
- package/dist/public/assets/{switch-BKlJnOab.js → switch-B1DcZLwL.js} +1 -1
- package/dist/public/assets/{syntax-highlighter-BuOqgzbp.js → syntax-highlighter-DWPF-A_h.js} +2 -2
- package/dist/public/assets/{textarea-a9VUYAmJ.js → textarea-Di_syYTS.js} +1 -1
- package/dist/server/index.mjs +130 -129
- package/dist/web-server/_libs/tabler__icons-react.mjs +171 -165
- package/dist/web-server/_ssr/{index-KGEq7IhY.mjs → index-0n2Z3BPQ.mjs} +2 -2
- package/dist/web-server/_ssr/{index-DxgfsEKM.mjs → index-6itDALOw.mjs} +39 -20
- package/dist/web-server/_ssr/{index-BFCBaZTA.mjs → index-BIRTrOmp.mjs} +3 -3
- package/dist/web-server/_ssr/{index-BVtbpy73.mjs → index-BPzfADac.mjs} +1 -1
- package/dist/web-server/_ssr/{index-CmwSlgGR.mjs → index-BQE3bF14.mjs} +42 -20
- package/dist/web-server/_ssr/index-C5HpvlUP.mjs +190 -0
- package/dist/web-server/_ssr/{index-BT-fOdbN.mjs → index-C_ZxnypN.mjs} +2 -2
- package/dist/web-server/_ssr/{index-B_d-ca5z.mjs → index-Ca8JFH8f.mjs} +4 -4
- package/dist/web-server/_ssr/{index-D4rgpZTm.mjs → index-DNVESZiA.mjs} +4 -4
- package/dist/web-server/_ssr/index.mjs +2 -2
- package/dist/web-server/_ssr/{input-CZtNKDXd.mjs → input-CqXjTRQg.mjs} +1 -1
- package/dist/web-server/_ssr/{queries-ixVDom0l.mjs → queries-3H_19mUt.mjs} +1 -1
- package/dist/web-server/_ssr/{router-CrULUyXB.mjs → router-sbsNus0Y.mjs} +186 -91
- package/dist/web-server/_ssr/{switch-Bd3Khe3S.mjs → switch-usf2F1UM.mjs} +1 -1
- package/dist/web-server/_ssr/{textarea-ClM2KXId.mjs → textarea-DfRheWY0.mjs} +1 -1
- package/dist/web-server/_tanstack-start-manifest_v-DqW-pKEH.mjs +4 -0
- package/dist/web-server/index.mjs +135 -142
- package/package.json +1 -1
- package/dist/public/assets/index-BTiEWEax.js +0 -1
- package/dist/public/assets/index-Bfadg8tB.js +0 -1
- package/dist/public/assets/index-CQCxtJMS.js +0 -14
- package/dist/public/assets/index-D6B0cdTJ.js +0 -1
- package/dist/public/assets/index-KT0CxDFc.js +0 -1
- package/dist/public/assets/index-qsvsww7-.js +0 -1
- package/dist/public/assets/index-twHXYGSY.js +0 -90
- package/dist/public/assets/input-C_TtyOcH.js +0 -1
- package/dist/public/assets/queries-DuZAFrOY.js +0 -1
- package/dist/public/assets/styles-Bc7sFPhq.css +0 -1
- package/dist/public/assets/useQuery-ByTdbkfi.js +0 -1
- package/dist/web-server/_ssr/index-ClGONv4K.mjs +0 -189
- package/dist/web-server/_tanstack-start-manifest_v-cNUQI9I2.mjs +0 -4
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { c as createRouter, a as createRootRoute, b as createFileRoute, l as lazyRouteComponent, H as HeadContent, S as Scripts, u as useLocation, L as Link } from "../_libs/tanstack__react-router.mjs";
|
|
2
2
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
3
3
|
import { b as QueryClient } from "../_libs/tanstack__query-core.mjs";
|
|
4
|
-
import { Q as QueryClientProvider, u as useQueryClient } from "../_libs/tanstack__react-query.mjs";
|
|
4
|
+
import { Q as QueryClientProvider, u as useQueryClient, a as useQuery, b as useMutation } from "../_libs/tanstack__react-query.mjs";
|
|
5
5
|
import { c as clsx } from "../_libs/clsx.mjs";
|
|
6
6
|
import { c as cva } from "../_libs/class-variance-authority.mjs";
|
|
7
7
|
import { c as create, d as devtools } from "../_libs/zustand.mjs";
|
|
8
|
-
import { I as IconSearch, a as IconX, b as IconSettings, c as IconSun, d as IconMoon, e as
|
|
8
|
+
import { I as IconSearch, a as IconX, b as IconSettings, c as IconSun, d as IconMoon, e as IconPaint, f as IconBrandGithub, g as IconArrowLeft, h as IconLayoutSidebar, i as IconChevronUp, j as IconChevronDown, k as IconCirclePlus, l as IconBrain, m as IconPuzzle, n as IconRobot, o as IconHash, p as IconChartBar, q as IconPin, r as IconDots, s as IconPencil, t as IconPinnedOff, u as IconCopy, v as IconTrash, w as IconDownload } from "../_libs/tabler__icons-react.mjs";
|
|
9
9
|
import { T as TooltipProvider$1, u as useRender, m as mergeProps, B as Button$1, D as DialogRoot, a as DialogPopup, b as DialogClose, c as DialogTitle, d as DialogDescription, C as CollapsibleRoot, e as CollapsibleTrigger$1, f as CollapsiblePanel, M as MenuRoot, g as MenuTrigger, h as MenuPortal, i as MenuPositioner, j as MenuPopup, k as MenuItem, l as DialogPortal, n as DialogBackdrop, o as TooltipRoot, p as TooltipPortal, q as TooltipPositioner, r as TooltipPopup, s as TooltipArrow, t as TooltipTrigger$1 } from "../_libs/base-ui__react.mjs";
|
|
10
10
|
import { o as object, s as string } from "../_libs/zod.mjs";
|
|
11
11
|
import "../_libs/tanstack__router-core.mjs";
|
|
@@ -228,7 +228,11 @@ function getSystemTheme() {
|
|
|
228
228
|
function applyTheme(theme) {
|
|
229
229
|
const root = document.documentElement;
|
|
230
230
|
const resolved = theme === "system" ? getSystemTheme() : theme;
|
|
231
|
-
|
|
231
|
+
if (resolved === "dark") {
|
|
232
|
+
root.classList.add("dark");
|
|
233
|
+
} else {
|
|
234
|
+
root.classList.remove("dark");
|
|
235
|
+
}
|
|
232
236
|
}
|
|
233
237
|
const ThemeContext = reactExports.createContext({
|
|
234
238
|
theme: "system",
|
|
@@ -244,6 +248,7 @@ function ThemeProvider({ children }) {
|
|
|
244
248
|
setMounted(true);
|
|
245
249
|
const stored = getStoredTheme();
|
|
246
250
|
setThemeState(stored);
|
|
251
|
+
applyTheme(stored);
|
|
247
252
|
const isDark = stored === "system" ? window.matchMedia("(prefers-color-scheme: dark)").matches : stored === "dark";
|
|
248
253
|
setResolved(isDark ? "dark" : "light");
|
|
249
254
|
const mq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
@@ -1000,7 +1005,7 @@ function DropdownMenuItem({
|
|
|
1000
1005
|
}
|
|
1001
1006
|
);
|
|
1002
1007
|
}
|
|
1003
|
-
const BASE_URL = "http://localhost:
|
|
1008
|
+
const BASE_URL = "http://localhost:47474";
|
|
1004
1009
|
class ApiError extends Error {
|
|
1005
1010
|
constructor(message, status, code) {
|
|
1006
1011
|
super(message);
|
|
@@ -1299,9 +1304,35 @@ async function deleteSessionApi(sessionId) {
|
|
|
1299
1304
|
async function fetchModels() {
|
|
1300
1305
|
return get("/api/config/models");
|
|
1301
1306
|
}
|
|
1307
|
+
async function updateModelConfig(params) {
|
|
1308
|
+
return post("/api/config/model", params);
|
|
1309
|
+
}
|
|
1302
1310
|
async function respondApproval(params) {
|
|
1303
1311
|
return post("/api/approval/respond", params);
|
|
1304
1312
|
}
|
|
1313
|
+
async function fetchVersion() {
|
|
1314
|
+
return get("/api/version");
|
|
1315
|
+
}
|
|
1316
|
+
async function triggerUpdate() {
|
|
1317
|
+
return post("/api/update");
|
|
1318
|
+
}
|
|
1319
|
+
function useVersionCheck() {
|
|
1320
|
+
return useQuery({
|
|
1321
|
+
queryKey: ["version"],
|
|
1322
|
+
queryFn: fetchVersion,
|
|
1323
|
+
staleTime: 5 * 60 * 1e3,
|
|
1324
|
+
// 5 minutes
|
|
1325
|
+
refetchInterval: 5 * 60 * 1e3,
|
|
1326
|
+
// poll every 5 minutes
|
|
1327
|
+
refetchIntervalInBackground: false,
|
|
1328
|
+
retry: 2
|
|
1329
|
+
});
|
|
1330
|
+
}
|
|
1331
|
+
function useTriggerUpdate() {
|
|
1332
|
+
return useMutation({
|
|
1333
|
+
mutationFn: triggerUpdate
|
|
1334
|
+
});
|
|
1335
|
+
}
|
|
1305
1336
|
function normalizeContent(raw) {
|
|
1306
1337
|
if (typeof raw === "string") return raw;
|
|
1307
1338
|
if (Array.isArray(raw)) {
|
|
@@ -1420,7 +1451,7 @@ function DashboardSidebar() {
|
|
|
1420
1451
|
[queryClient2]
|
|
1421
1452
|
);
|
|
1422
1453
|
const location = useLocation();
|
|
1423
|
-
const currentSection = new URLSearchParams(location.search).get("section") || "
|
|
1454
|
+
const currentSection = new URLSearchParams(location.search).get("section") || "appearance";
|
|
1424
1455
|
const [searchQuery, setSearchQuery] = reactExports.useState("");
|
|
1425
1456
|
const [isSearchOpen, setIsSearchOpen] = reactExports.useState(false);
|
|
1426
1457
|
const [activePanel, setActivePanel] = reactExports.useState(
|
|
@@ -1597,54 +1628,48 @@ function DashboardSidebar() {
|
|
|
1597
1628
|
] }) })
|
|
1598
1629
|
] })
|
|
1599
1630
|
] }),
|
|
1600
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
1601
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1631
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 space-y-1", children: [
|
|
1632
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(UpdateBanner, { isCollapsed }),
|
|
1633
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: cn("flex items-center", isCollapsed ? "flex-col gap-1" : "flex-row gap-1"), children: [
|
|
1634
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1635
|
+
Link,
|
|
1636
|
+
{
|
|
1637
|
+
to: "/settings",
|
|
1638
|
+
className: cn(
|
|
1639
|
+
"flex items-center gap-1.5 rounded-md text-xs font-medium text-muted-foreground hover:bg-sidebar-muted hover:text-foreground transition-colors",
|
|
1640
|
+
isCollapsed ? "justify-center p-1.5 w-full" : "flex-1 px-2 py-1"
|
|
1641
|
+
),
|
|
1642
|
+
"aria-label": "Settings",
|
|
1643
|
+
title: isCollapsed ? "Settings" : void 0,
|
|
1644
|
+
children: [
|
|
1645
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(IconSettings, { className: "size-3.5 shrink-0" }),
|
|
1646
|
+
!isCollapsed && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Settings" })
|
|
1647
|
+
]
|
|
1648
|
+
}
|
|
1649
|
+
),
|
|
1650
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1651
|
+
"button",
|
|
1652
|
+
{
|
|
1653
|
+
onClick: () => setTheme(resolvedTheme === "dark" ? "light" : "dark"),
|
|
1654
|
+
className: cn(
|
|
1655
|
+
"flex items-center justify-center rounded-md text-muted-foreground hover:bg-sidebar-muted hover:text-foreground transition-colors",
|
|
1656
|
+
isCollapsed ? "p-1.5 w-full" : "p-1.5"
|
|
1657
|
+
),
|
|
1658
|
+
"aria-label": "Toggle theme",
|
|
1659
|
+
title: isCollapsed ? resolvedTheme === "dark" ? "Light mode" : "Dark mode" : void 0,
|
|
1660
|
+
children: [
|
|
1661
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(IconSun, { className: "size-3.5 dark:hidden" }),
|
|
1662
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(IconMoon, { className: "size-3.5 hidden dark:block" })
|
|
1663
|
+
]
|
|
1664
|
+
}
|
|
1665
|
+
)
|
|
1666
|
+
] })
|
|
1667
|
+
] })
|
|
1634
1668
|
] }),
|
|
1635
1669
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col h-full justify-between w-1/2", children: [
|
|
1636
1670
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col flex-1 min-h-0", children: [
|
|
1637
1671
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-1 pb-1.5 shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[11px] font-semibold uppercase tracking-wide text-muted-foreground/60", children: "Settings" }) }),
|
|
1638
1672
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto min-h-0 space-y-0.5 px-0.5", children: [
|
|
1639
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1640
|
-
SettingsGroup,
|
|
1641
|
-
{
|
|
1642
|
-
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(IconUser, { className: "size-4" }),
|
|
1643
|
-
title: "Profile",
|
|
1644
|
-
section: "profile",
|
|
1645
|
-
activeSection: currentSection
|
|
1646
|
-
}
|
|
1647
|
-
),
|
|
1648
1673
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1649
1674
|
SettingsGroup,
|
|
1650
1675
|
{
|
|
@@ -1657,27 +1682,9 @@ function DashboardSidebar() {
|
|
|
1657
1682
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1658
1683
|
SettingsGroup,
|
|
1659
1684
|
{
|
|
1660
|
-
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1661
|
-
title: "
|
|
1662
|
-
section: "
|
|
1663
|
-
activeSection: currentSection
|
|
1664
|
-
}
|
|
1665
|
-
),
|
|
1666
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1667
|
-
SettingsGroup,
|
|
1668
|
-
{
|
|
1669
|
-
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(IconKey, { className: "size-4" }),
|
|
1670
|
-
title: "API Keys",
|
|
1671
|
-
section: "api-keys",
|
|
1672
|
-
activeSection: currentSection
|
|
1673
|
-
}
|
|
1674
|
-
),
|
|
1675
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1676
|
-
SettingsGroup,
|
|
1677
|
-
{
|
|
1678
|
-
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(IconLanguage, { className: "size-4" }),
|
|
1679
|
-
title: "Language & Region",
|
|
1680
|
-
section: "language",
|
|
1685
|
+
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(IconBrandGithub, { className: "size-4" }),
|
|
1686
|
+
title: "About",
|
|
1687
|
+
section: "about",
|
|
1681
1688
|
activeSection: currentSection
|
|
1682
1689
|
}
|
|
1683
1690
|
)
|
|
@@ -1812,13 +1819,96 @@ function SessionItem({
|
|
|
1812
1819
|
] })
|
|
1813
1820
|
] }) }) });
|
|
1814
1821
|
}
|
|
1822
|
+
function UpdateBanner({ isCollapsed }) {
|
|
1823
|
+
const { data, isLoading } = useVersionCheck();
|
|
1824
|
+
const updateMutation = useTriggerUpdate();
|
|
1825
|
+
const [showPanel, setShowPanel] = reactExports.useState(false);
|
|
1826
|
+
if (isLoading || !data?.outdated) return null;
|
|
1827
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
|
|
1828
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1829
|
+
"button",
|
|
1830
|
+
{
|
|
1831
|
+
onClick: () => setShowPanel((s) => !s),
|
|
1832
|
+
className: cn(
|
|
1833
|
+
"flex items-center gap-1.5 rounded-md text-xs font-medium transition-colors w-full",
|
|
1834
|
+
isCollapsed ? "justify-center p-1.5 bg-amber-500/10 text-amber-600 hover:bg-amber-500/20 dark:text-amber-400" : "px-2 py-1.5 bg-amber-500/10 text-amber-600 hover:bg-amber-500/20 dark:text-amber-400"
|
|
1835
|
+
),
|
|
1836
|
+
title: "Update available",
|
|
1837
|
+
children: [
|
|
1838
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(IconDownload, { className: "size-3.5 shrink-0" }),
|
|
1839
|
+
!isCollapsed && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "truncate", children: [
|
|
1840
|
+
"Update v",
|
|
1841
|
+
data.latest
|
|
1842
|
+
] })
|
|
1843
|
+
]
|
|
1844
|
+
}
|
|
1845
|
+
),
|
|
1846
|
+
showPanel && !isCollapsed && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute bottom-full left-0 right-0 mb-1.5 rounded-lg border border-border bg-popover p-3 shadow-lg z-50", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
|
|
1847
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-xs font-medium text-foreground", children: [
|
|
1848
|
+
"Hermium v",
|
|
1849
|
+
data.latest,
|
|
1850
|
+
" is available"
|
|
1851
|
+
] }),
|
|
1852
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
1853
|
+
"You are running v",
|
|
1854
|
+
data.current,
|
|
1855
|
+
"."
|
|
1856
|
+
] }),
|
|
1857
|
+
updateMutation.isSuccess && updateMutation.data.success ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded-md bg-green-500/10 px-2 py-1.5 text-[11px] text-green-600 dark:text-green-400", children: updateMutation.data.message }) : updateMutation.isSuccess && !updateMutation.data.success ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-1.5", children: [
|
|
1858
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded-md bg-red-500/10 px-2 py-1.5 text-[11px] text-red-600 dark:text-red-400", children: updateMutation.data.message }),
|
|
1859
|
+
updateMutation.data.command && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 rounded-md border border-border bg-muted px-2 py-1.5", children: [
|
|
1860
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "flex-1 text-[11px] font-mono text-foreground truncate", children: updateMutation.data.command }),
|
|
1861
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1862
|
+
"button",
|
|
1863
|
+
{
|
|
1864
|
+
onClick: () => navigator.clipboard.writeText(updateMutation.data.command),
|
|
1865
|
+
className: "shrink-0 rounded p-0.5 text-muted-foreground hover:text-foreground hover:bg-muted-foreground/10 transition-colors",
|
|
1866
|
+
title: "Copy command",
|
|
1867
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconCopy, { className: "size-3.5" })
|
|
1868
|
+
}
|
|
1869
|
+
)
|
|
1870
|
+
] })
|
|
1871
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-1.5", children: [
|
|
1872
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1873
|
+
"button",
|
|
1874
|
+
{
|
|
1875
|
+
onClick: () => updateMutation.mutate(),
|
|
1876
|
+
disabled: updateMutation.isPending,
|
|
1877
|
+
className: "flex-1 rounded-md bg-primary px-2 py-1 text-[11px] font-medium text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-50",
|
|
1878
|
+
children: updateMutation.isPending ? "Updating..." : "Update now"
|
|
1879
|
+
}
|
|
1880
|
+
),
|
|
1881
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1882
|
+
"button",
|
|
1883
|
+
{
|
|
1884
|
+
onClick: () => {
|
|
1885
|
+
if (data.updateCommand) {
|
|
1886
|
+
navigator.clipboard.writeText(data.updateCommand);
|
|
1887
|
+
}
|
|
1888
|
+
},
|
|
1889
|
+
className: "rounded-md border border-border px-2 py-1 text-[11px] font-medium text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",
|
|
1890
|
+
children: "Copy cmd"
|
|
1891
|
+
}
|
|
1892
|
+
)
|
|
1893
|
+
] }),
|
|
1894
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1895
|
+
"button",
|
|
1896
|
+
{
|
|
1897
|
+
onClick: () => setShowPanel(false),
|
|
1898
|
+
className: "w-full rounded-md border border-border px-2 py-1 text-[11px] font-medium text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",
|
|
1899
|
+
children: "Dismiss"
|
|
1900
|
+
}
|
|
1901
|
+
)
|
|
1902
|
+
] }) })
|
|
1903
|
+
] });
|
|
1904
|
+
}
|
|
1815
1905
|
function DashboardLayout({ children }) {
|
|
1816
1906
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(SidebarProvider, { style: { "--sidebar-width-icon": "2.5rem" }, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative flex h-dvh w-full", children: [
|
|
1817
1907
|
/* @__PURE__ */ jsxRuntimeExports.jsx(DashboardSidebar, {}),
|
|
1818
1908
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SidebarInset, { className: "flex flex-col min-w-0", children })
|
|
1819
1909
|
] }) });
|
|
1820
1910
|
}
|
|
1821
|
-
const appCss = "/assets/styles-
|
|
1911
|
+
const appCss = "/assets/styles-KcflDlA_.css";
|
|
1822
1912
|
const themeScript = `
|
|
1823
1913
|
(function() {
|
|
1824
1914
|
try {
|
|
@@ -1826,7 +1916,11 @@ const themeScript = `
|
|
|
1826
1916
|
var resolved = theme === 'system'
|
|
1827
1917
|
? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')
|
|
1828
1918
|
: theme;
|
|
1829
|
-
|
|
1919
|
+
if (resolved === 'dark') {
|
|
1920
|
+
document.documentElement.classList.add('dark');
|
|
1921
|
+
} else {
|
|
1922
|
+
document.documentElement.classList.remove('dark');
|
|
1923
|
+
}
|
|
1830
1924
|
} catch (e) {}
|
|
1831
1925
|
})();
|
|
1832
1926
|
`;
|
|
@@ -1863,43 +1957,43 @@ function RootDocument({ children }) {
|
|
|
1863
1957
|
] })
|
|
1864
1958
|
] });
|
|
1865
1959
|
}
|
|
1866
|
-
const $$splitComponentImporter$8 = () => import("./index-
|
|
1960
|
+
const $$splitComponentImporter$8 = () => import("./index-6itDALOw.mjs");
|
|
1867
1961
|
const Route$8 = createFileRoute("/")({
|
|
1868
1962
|
component: lazyRouteComponent($$splitComponentImporter$8, "component")
|
|
1869
1963
|
});
|
|
1870
|
-
const $$splitComponentImporter$7 = () => import("./index-
|
|
1964
|
+
const $$splitComponentImporter$7 = () => import("./index-C_ZxnypN.mjs");
|
|
1871
1965
|
const Route$7 = createFileRoute("/usage/")({
|
|
1872
1966
|
component: lazyRouteComponent($$splitComponentImporter$7, "component")
|
|
1873
1967
|
});
|
|
1874
|
-
const $$splitComponentImporter$6 = () => import("./index-
|
|
1968
|
+
const $$splitComponentImporter$6 = () => import("./index-BIRTrOmp.mjs");
|
|
1875
1969
|
const Route$6 = createFileRoute("/skills/")({
|
|
1876
1970
|
component: lazyRouteComponent($$splitComponentImporter$6, "component")
|
|
1877
1971
|
});
|
|
1878
|
-
const $$splitComponentImporter$5 = () => import("./index-
|
|
1972
|
+
const $$splitComponentImporter$5 = () => import("./index-C5HpvlUP.mjs");
|
|
1879
1973
|
const settingsSearchSchema = object({
|
|
1880
|
-
section: string().optional().default("
|
|
1974
|
+
section: string().optional().default("appearance")
|
|
1881
1975
|
});
|
|
1882
1976
|
const Route$5 = createFileRoute("/settings/")({
|
|
1883
1977
|
component: lazyRouteComponent($$splitComponentImporter$5, "component"),
|
|
1884
1978
|
validateSearch: (search) => settingsSearchSchema.parse(search)
|
|
1885
1979
|
});
|
|
1886
|
-
const $$splitComponentImporter$4 = () => import("./index-
|
|
1980
|
+
const $$splitComponentImporter$4 = () => import("./index-0n2Z3BPQ.mjs");
|
|
1887
1981
|
const Route$4 = createFileRoute("/memory/")({
|
|
1888
1982
|
component: lazyRouteComponent($$splitComponentImporter$4, "component")
|
|
1889
1983
|
});
|
|
1890
|
-
const $$splitComponentImporter$3 = () => import("./index-
|
|
1984
|
+
const $$splitComponentImporter$3 = () => import("./index-BPzfADac.mjs");
|
|
1891
1985
|
const Route$3 = createFileRoute("/chat/")({
|
|
1892
1986
|
component: lazyRouteComponent($$splitComponentImporter$3, "component")
|
|
1893
1987
|
});
|
|
1894
|
-
const $$splitComponentImporter$2 = () => import("./index-
|
|
1988
|
+
const $$splitComponentImporter$2 = () => import("./index-DNVESZiA.mjs");
|
|
1895
1989
|
const Route$2 = createFileRoute("/channels/")({
|
|
1896
1990
|
component: lazyRouteComponent($$splitComponentImporter$2, "component")
|
|
1897
1991
|
});
|
|
1898
|
-
const $$splitComponentImporter$1 = () => import("./index-
|
|
1992
|
+
const $$splitComponentImporter$1 = () => import("./index-Ca8JFH8f.mjs");
|
|
1899
1993
|
const Route$1 = createFileRoute("/automations/")({
|
|
1900
1994
|
component: lazyRouteComponent($$splitComponentImporter$1, "component")
|
|
1901
1995
|
});
|
|
1902
|
-
const $$splitComponentImporter = () => import("./index-
|
|
1996
|
+
const $$splitComponentImporter = () => import("./index-BQE3bF14.mjs");
|
|
1903
1997
|
const Route = createFileRoute("/chat/$sessionId/")({
|
|
1904
1998
|
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
1905
1999
|
});
|
|
@@ -1982,17 +2076,18 @@ export {
|
|
|
1982
2076
|
createSession as c,
|
|
1983
2077
|
DropdownMenuContent as d,
|
|
1984
2078
|
DropdownMenuItem as e,
|
|
1985
|
-
|
|
2079
|
+
useTheme as f,
|
|
1986
2080
|
get as g,
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
2081
|
+
useChatStore as h,
|
|
2082
|
+
put as i,
|
|
2083
|
+
patch as j,
|
|
2084
|
+
del as k,
|
|
2085
|
+
deleteSessionApi as l,
|
|
2086
|
+
respondApproval as m,
|
|
2087
|
+
Route as n,
|
|
2088
|
+
fetchModels as o,
|
|
1995
2089
|
post as p,
|
|
2090
|
+
router as q,
|
|
1996
2091
|
renameSession as r,
|
|
1997
|
-
|
|
2092
|
+
updateModelConfig as u
|
|
1998
2093
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { a as cn } from "./router-
|
|
2
|
+
import { a as cn } from "./router-sbsNus0Y.mjs";
|
|
3
3
|
function Switch({ checked, onCheckedChange, disabled, className }) {
|
|
4
4
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
5
5
|
"button",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { a as cn } from "./router-
|
|
2
|
+
import { a as cn } from "./router-sbsNus0Y.mjs";
|
|
3
3
|
function Textarea({ className, ...props }) {
|
|
4
4
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
5
5
|
"textarea",
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const tsrStartManifest = () => ({ routes: { __root__: { filePath: "/home/abbskhnv/Desktop/hermium/apps/web/src/routes/__root.tsx", children: ["/", "/automations/", "/channels/", "/chat/", "/memory/", "/settings/", "/skills/", "/usage/", "/chat/$sessionId/"], assets: void 0, preloads: ["/assets/index-DkYGodJj.js"] }, "/": { filePath: "/home/abbskhnv/Desktop/hermium/apps/web/src/routes/index.tsx", children: void 0, assets: void 0, preloads: ["/assets/index-U6RcWedt.js", "/assets/queries-iHRgZzw2.js", "/assets/IconLoader2-BIx3OuF9.js"] }, "/automations/": { filePath: "/home/abbskhnv/Desktop/hermium/apps/web/src/routes/automations/index.tsx", children: void 0, assets: void 0, preloads: ["/assets/index-CinLq3cd.js", "/assets/input-eNcwlDHp.js", "/assets/textarea-Di_syYTS.js", "/assets/IconRefresh-Dgm93w3T.js", "/assets/IconLoader2-BIx3OuF9.js"] }, "/channels/": { filePath: "/home/abbskhnv/Desktop/hermium/apps/web/src/routes/channels/index.tsx", children: void 0, assets: void 0, preloads: ["/assets/index-enFS26SU.js", "/assets/switch-B1DcZLwL.js", "/assets/input-eNcwlDHp.js", "/assets/IconAlertTriangle-wCJudlVg.js", "/assets/IconLoader2-BIx3OuF9.js", "/assets/IconCheck-CFuEh_p7.js"] }, "/chat/": { filePath: "/home/abbskhnv/Desktop/hermium/apps/web/src/routes/chat/index.tsx", children: void 0, assets: void 0, preloads: ["/assets/index-DvDLadUx.js"] }, "/memory/": { filePath: "/home/abbskhnv/Desktop/hermium/apps/web/src/routes/memory/index.tsx", children: void 0, assets: void 0, preloads: ["/assets/index-CWUaRwcE.js", "/assets/IconLoader2-BIx3OuF9.js", "/assets/IconAlertCircle-BHkmI3j7.js", "/assets/IconRefresh-Dgm93w3T.js", "/assets/IconCheck-CFuEh_p7.js", "/assets/index-CrQs9n6q.js"] }, "/settings/": { filePath: "/home/abbskhnv/Desktop/hermium/apps/web/src/routes/settings/index.tsx", children: void 0, assets: void 0, preloads: ["/assets/index-_6iFZ0fh.js"] }, "/skills/": { filePath: "/home/abbskhnv/Desktop/hermium/apps/web/src/routes/skills/index.tsx", children: void 0, assets: void 0, preloads: ["/assets/index-DY7aE-9s.js", "/assets/switch-B1DcZLwL.js", "/assets/IconLoader2-BIx3OuF9.js", "/assets/IconAlertCircle-BHkmI3j7.js", "/assets/IconRefresh-Dgm93w3T.js", "/assets/index-CrQs9n6q.js"] }, "/usage/": { filePath: "/home/abbskhnv/Desktop/hermium/apps/web/src/routes/usage/index.tsx", children: void 0, assets: void 0, preloads: ["/assets/index-CtacpN3I.js", "/assets/IconRefresh-Dgm93w3T.js"] }, "/chat/$sessionId/": { filePath: "/home/abbskhnv/Desktop/hermium/apps/web/src/routes/chat/$sessionId/index.tsx", children: void 0, assets: void 0, preloads: ["/assets/index-Bbz3abmO.js", "/assets/textarea-Di_syYTS.js", "/assets/queries-iHRgZzw2.js", "/assets/IconLoader2-BIx3OuF9.js", "/assets/index-CrQs9n6q.js", "/assets/IconCheck-CFuEh_p7.js", "/assets/IconAlertTriangle-wCJudlVg.js"] } }, clientEntry: "/assets/index-DkYGodJj.js" });
|
|
2
|
+
export {
|
|
3
|
+
tsrStartManifest
|
|
4
|
+
};
|