@quanta-intellect/vessel-browser 0.1.53 → 0.1.56
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/README.md +7 -2
- package/out/main/index.js +1856 -840
- package/out/preload/chunks/channels-Dfv8z3Ui.js +123 -0
- package/out/preload/content-script.js +111 -0
- package/out/preload/index.js +132 -226
- package/out/renderer/assets/{index-hRUKGdgt.js → index-DRVDsSQe.js} +664 -129
- package/out/renderer/assets/{index-eS3ccAls.css → index-DRj77a_O.css} +224 -0
- package/out/renderer/index.html +2 -2
- package/package.json +1 -1
|
@@ -1697,7 +1697,7 @@ function getAgentPresence(state, currentTime = Date.now()) {
|
|
|
1697
1697
|
}
|
|
1698
1698
|
return "idle";
|
|
1699
1699
|
}
|
|
1700
|
-
var _tmpl$$d = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$b = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$
|
|
1700
|
+
var _tmpl$$d = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$b = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$9 = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list><button class=tab-new data-tooltip="New Tab">+`), _tmpl$4$9 = /* @__PURE__ */ template(`<div role=tab><span class=tab-title></span><button class=tab-close>×`), _tmpl$5$7 = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$6$7 = /* @__PURE__ */ template(`<span class=tab-loading>`);
|
|
1701
1701
|
const TAB_CLOSE_MS = 200;
|
|
1702
1702
|
function stringToHue(str) {
|
|
1703
1703
|
let hash = 0;
|
|
@@ -1764,13 +1764,13 @@ const TabBar = () => {
|
|
|
1764
1764
|
}, TAB_CLOSE_MS);
|
|
1765
1765
|
};
|
|
1766
1766
|
return (() => {
|
|
1767
|
-
var _el$3 = _tmpl$3$
|
|
1767
|
+
var _el$3 = _tmpl$3$9(), _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild;
|
|
1768
1768
|
insert(_el$4, createComponent(For, {
|
|
1769
1769
|
get each() {
|
|
1770
1770
|
return tabs2();
|
|
1771
1771
|
},
|
|
1772
1772
|
children: (tab) => (() => {
|
|
1773
|
-
var _el$6 = _tmpl$4$
|
|
1773
|
+
var _el$6 = _tmpl$4$9(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
|
|
1774
1774
|
_el$6.addEventListener("auxclick", (e) => {
|
|
1775
1775
|
if (e.button === 1) handleClose(tab.id);
|
|
1776
1776
|
});
|
|
@@ -1788,12 +1788,12 @@ const TabBar = () => {
|
|
|
1788
1788
|
}), _el$7);
|
|
1789
1789
|
insert(_el$6, (() => {
|
|
1790
1790
|
var _c$ = memo(() => !!modelActiveTabIds().has(tab.id));
|
|
1791
|
-
return () => _c$() && _tmpl$5$
|
|
1791
|
+
return () => _c$() && _tmpl$5$7();
|
|
1792
1792
|
})(), _el$7);
|
|
1793
1793
|
insert(_el$7, () => tab.title || "New Tab");
|
|
1794
1794
|
insert(_el$6, (() => {
|
|
1795
1795
|
var _c$2 = memo(() => !!tab.isLoading);
|
|
1796
|
-
return () => _c$2() && _tmpl$6$
|
|
1796
|
+
return () => _c$2() && _tmpl$6$7();
|
|
1797
1797
|
})(), _el$8);
|
|
1798
1798
|
_el$8.$$click = (e) => {
|
|
1799
1799
|
e.stopPropagation();
|
|
@@ -1905,7 +1905,121 @@ function useUI() {
|
|
|
1905
1905
|
}
|
|
1906
1906
|
};
|
|
1907
1907
|
}
|
|
1908
|
-
|
|
1908
|
+
function normalizePageUrl(rawUrl) {
|
|
1909
|
+
try {
|
|
1910
|
+
const url = new URL(rawUrl);
|
|
1911
|
+
const pathname = url.pathname.replace(/\/+$/, "") || "/";
|
|
1912
|
+
return `${url.origin}${pathname}`.toLowerCase();
|
|
1913
|
+
} catch {
|
|
1914
|
+
return rawUrl.trim().replace(/\/+$/, "").toLowerCase();
|
|
1915
|
+
}
|
|
1916
|
+
}
|
|
1917
|
+
const SNAPSHOT_QUERY_KEYS = /* @__PURE__ */ new Set([
|
|
1918
|
+
"q",
|
|
1919
|
+
"query",
|
|
1920
|
+
"search",
|
|
1921
|
+
"s",
|
|
1922
|
+
"term",
|
|
1923
|
+
"keyword",
|
|
1924
|
+
"keywords",
|
|
1925
|
+
"page",
|
|
1926
|
+
"p",
|
|
1927
|
+
"offset",
|
|
1928
|
+
"cursor",
|
|
1929
|
+
"sort",
|
|
1930
|
+
"order",
|
|
1931
|
+
"filter",
|
|
1932
|
+
"filters",
|
|
1933
|
+
"category",
|
|
1934
|
+
"categories",
|
|
1935
|
+
"tag",
|
|
1936
|
+
"tags",
|
|
1937
|
+
"tab",
|
|
1938
|
+
"view"
|
|
1939
|
+
]);
|
|
1940
|
+
const TRACKING_QUERY_KEYS = /* @__PURE__ */ new Set([
|
|
1941
|
+
"fbclid",
|
|
1942
|
+
"gclid",
|
|
1943
|
+
"mc_cid",
|
|
1944
|
+
"mc_eid",
|
|
1945
|
+
"ref",
|
|
1946
|
+
"source",
|
|
1947
|
+
"si"
|
|
1948
|
+
]);
|
|
1949
|
+
function normalizeQueryValue(value) {
|
|
1950
|
+
return value.replace(/\s+/g, " ").trim().toLowerCase();
|
|
1951
|
+
}
|
|
1952
|
+
function serializeSnapshotParams(params) {
|
|
1953
|
+
return params.map(
|
|
1954
|
+
([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`
|
|
1955
|
+
).join("&");
|
|
1956
|
+
}
|
|
1957
|
+
function normalizeSnapshotParams(entries2, pathname) {
|
|
1958
|
+
return Array.from(entries2).filter(
|
|
1959
|
+
([key, value]) => shouldKeepSnapshotQueryParam(pathname, key, value)
|
|
1960
|
+
).map(([key, value]) => [
|
|
1961
|
+
key.trim().toLowerCase(),
|
|
1962
|
+
normalizeQueryValue(value)
|
|
1963
|
+
]).sort(
|
|
1964
|
+
([keyA, valueA], [keyB, valueB]) => keyA === keyB ? valueA.localeCompare(valueB) : keyA.localeCompare(keyB)
|
|
1965
|
+
);
|
|
1966
|
+
}
|
|
1967
|
+
function shouldKeepSnapshotQueryParam(pathname, rawKey, value) {
|
|
1968
|
+
const key = rawKey.trim().toLowerCase();
|
|
1969
|
+
if (!key || !value.trim()) return false;
|
|
1970
|
+
if (key.startsWith("utm_")) return false;
|
|
1971
|
+
if (TRACKING_QUERY_KEYS.has(key)) return false;
|
|
1972
|
+
if (SNAPSHOT_QUERY_KEYS.has(key)) return true;
|
|
1973
|
+
return /\/(search|results|browse|discover|find|category|tag|topics?|collections?|list)(\/|$)/i.test(
|
|
1974
|
+
pathname
|
|
1975
|
+
);
|
|
1976
|
+
}
|
|
1977
|
+
function buildSnapshotHashKey(hash, pathname) {
|
|
1978
|
+
let raw = hash.replace(/^#/, "").trim();
|
|
1979
|
+
if (!raw) return null;
|
|
1980
|
+
let bang = false;
|
|
1981
|
+
if (raw.startsWith("!")) {
|
|
1982
|
+
bang = true;
|
|
1983
|
+
raw = raw.slice(1).trim();
|
|
1984
|
+
}
|
|
1985
|
+
if (raw.startsWith("/")) {
|
|
1986
|
+
const [routePart, queryPart = ""] = raw.split("?");
|
|
1987
|
+
const route = routePart.replace(/\/+$/, "") || "/";
|
|
1988
|
+
const params = normalizeSnapshotParams(
|
|
1989
|
+
new URLSearchParams(queryPart).entries(),
|
|
1990
|
+
pathname
|
|
1991
|
+
);
|
|
1992
|
+
const query = serializeSnapshotParams(params);
|
|
1993
|
+
return `#${bang ? "!" : ""}${route.toLowerCase()}${query ? `?${query}` : ""}`;
|
|
1994
|
+
}
|
|
1995
|
+
const queryLike = raw.startsWith("?") ? raw.slice(1) : raw;
|
|
1996
|
+
if (queryLike.includes("=")) {
|
|
1997
|
+
const params = normalizeSnapshotParams(
|
|
1998
|
+
new URLSearchParams(queryLike).entries(),
|
|
1999
|
+
pathname
|
|
2000
|
+
);
|
|
2001
|
+
if (params.length === 0) return null;
|
|
2002
|
+
const query = serializeSnapshotParams(params);
|
|
2003
|
+
return `#${bang ? "!" : ""}?${query}`;
|
|
2004
|
+
}
|
|
2005
|
+
return null;
|
|
2006
|
+
}
|
|
2007
|
+
function buildPageSnapshotKey(rawUrl) {
|
|
2008
|
+
try {
|
|
2009
|
+
const url = new URL(rawUrl);
|
|
2010
|
+
const pathname = url.pathname.replace(/\/+$/, "") || "/";
|
|
2011
|
+
const params = normalizeSnapshotParams(url.searchParams.entries(), pathname);
|
|
2012
|
+
const query = serializeSnapshotParams(params);
|
|
2013
|
+
const hash = buildSnapshotHashKey(url.hash, pathname);
|
|
2014
|
+
return `${url.origin.toLowerCase()}${pathname.toLowerCase()}${query ? `?${query}` : ""}${hash || ""}`;
|
|
2015
|
+
} catch {
|
|
2016
|
+
return normalizePageUrl(rawUrl);
|
|
2017
|
+
}
|
|
2018
|
+
}
|
|
2019
|
+
function matchesPageSnapshotUrl(left, right) {
|
|
2020
|
+
return buildPageSnapshotKey(left) === buildPageSnapshotKey(right);
|
|
2021
|
+
}
|
|
2022
|
+
var _tmpl$$c = /* @__PURE__ */ template(`<button class="agent-status-badge recent"title="Page content has changed since your last visit"style=cursor:pointer;font-size:11px><span class=agent-status-dot aria-hidden=true style=background:#f59e0b></span><span class=agent-status-text>Changed`), _tmpl$2$a = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$3$8 = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Changed recently`), _tmpl$4$8 = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>What changed since </span></div><button class=page-diff-popup-close>×`), _tmpl$5$6 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$6$6 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"></form><div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text></span></div></div><div class=toolbar-actions><button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1></line></svg></button><button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round></line></svg></button><button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2></line></svg></button><button class=nav-btn data-tooltip=Settings><svg width=14 height=14 viewBox="0 0 14 14"><circle cx=7 cy=7 r=2 fill=none stroke=currentColor stroke-width=1.2></circle><path d="M7 1v2M7 11v2M1 7h2M11 7h2M2.8 2.8l1.4 1.4M9.8 9.8l1.4 1.4M11.2 2.8l-1.4 1.4M4.2 9.8l-1.4 1.4"stroke=currentColor stroke-width=1 stroke-linecap=round>`), _tmpl$7$4 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$8$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$9$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$0$4 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$1$4 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$10$4 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$11$4 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><span class=page-diff-section></span><span class=page-diff-summary>`), _tmpl$12$4 = /* @__PURE__ */ template(`<li>`);
|
|
1909
2023
|
const AddressBar = () => {
|
|
1910
2024
|
const {
|
|
1911
2025
|
activeTab,
|
|
@@ -1929,12 +2043,84 @@ const AddressBar = () => {
|
|
|
1929
2043
|
const agentPresence = createMemo(() => getAgentPresence(runtimeState2(), now2()));
|
|
1930
2044
|
const agentStatusMessage = createMemo(() => getLatestAgentStatusMessage(runtimeState2(), now2()));
|
|
1931
2045
|
const pendingApprovalCount = createMemo(() => runtimeState2().supervisor.pendingApprovals.length);
|
|
2046
|
+
const [pageDiff, setPageDiff] = createSignal(null);
|
|
2047
|
+
const [diffExpanded, setDiffExpanded] = createSignal(false);
|
|
2048
|
+
let diffCollapseTimer = null;
|
|
2049
|
+
const showIncomingDiff = (diff) => {
|
|
2050
|
+
setPageDiff(diff);
|
|
2051
|
+
setDiffExpanded(true);
|
|
2052
|
+
if (diffCollapseTimer) clearTimeout(diffCollapseTimer);
|
|
2053
|
+
diffCollapseTimer = setTimeout(() => {
|
|
2054
|
+
setDiffExpanded(false);
|
|
2055
|
+
diffCollapseTimer = null;
|
|
2056
|
+
}, 8e3);
|
|
2057
|
+
};
|
|
2058
|
+
const formatRelativeTime = (isoDate) => {
|
|
2059
|
+
const diff = Date.now() - new Date(isoDate).getTime();
|
|
2060
|
+
const mins = Math.floor(diff / 6e4);
|
|
2061
|
+
if (mins < 1) return "just now";
|
|
2062
|
+
if (mins < 60) return `${mins}m ago`;
|
|
2063
|
+
const hours = Math.floor(mins / 60);
|
|
2064
|
+
if (hours < 24) return `${hours}h ago`;
|
|
2065
|
+
const days = Math.floor(hours / 24);
|
|
2066
|
+
if (days < 7) return `${days}d ago`;
|
|
2067
|
+
return new Date(isoDate).toLocaleDateString();
|
|
2068
|
+
};
|
|
2069
|
+
const formatElapsed = (startIso, endIso) => {
|
|
2070
|
+
const elapsedMs = Math.max(0, new Date(endIso).getTime() - new Date(startIso).getTime());
|
|
2071
|
+
const secs = Math.round(elapsedMs / 1e3);
|
|
2072
|
+
if (secs < 60) return `${secs}s`;
|
|
2073
|
+
const mins = Math.round(secs / 60);
|
|
2074
|
+
if (mins < 60) return `${mins}m`;
|
|
2075
|
+
const hours = Math.round(mins / 60);
|
|
2076
|
+
return `${hours}h`;
|
|
2077
|
+
};
|
|
2078
|
+
createEffect(() => {
|
|
2079
|
+
const unsubscribe = window.vessel.pageDiff.onChanged((diff) => {
|
|
2080
|
+
const tab = activeTab();
|
|
2081
|
+
if (!tab) return;
|
|
2082
|
+
if (!matchesPageSnapshotUrl(tab.url, diff.url)) return;
|
|
2083
|
+
showIncomingDiff(diff);
|
|
2084
|
+
});
|
|
2085
|
+
onCleanup(() => {
|
|
2086
|
+
unsubscribe();
|
|
2087
|
+
if (diffCollapseTimer) {
|
|
2088
|
+
clearTimeout(diffCollapseTimer);
|
|
2089
|
+
diffCollapseTimer = null;
|
|
2090
|
+
}
|
|
2091
|
+
});
|
|
2092
|
+
});
|
|
1932
2093
|
createEffect(() => {
|
|
1933
2094
|
const tab = activeTab();
|
|
1934
2095
|
if (tab && !inputRef?.matches(":focus")) {
|
|
1935
2096
|
setInputValue(tab.url === "about:blank" ? "" : tab.url);
|
|
1936
2097
|
}
|
|
1937
2098
|
});
|
|
2099
|
+
createEffect(() => {
|
|
2100
|
+
const tab = activeTab();
|
|
2101
|
+
if (!tab) {
|
|
2102
|
+
setPageDiff(null);
|
|
2103
|
+
setDiffExpanded(false);
|
|
2104
|
+
return;
|
|
2105
|
+
}
|
|
2106
|
+
let cancelled = false;
|
|
2107
|
+
void window.vessel.pageDiff.get().then((diff) => {
|
|
2108
|
+
if (cancelled) return;
|
|
2109
|
+
if (!diff || !matchesPageSnapshotUrl(tab.url, diff.url)) {
|
|
2110
|
+
setPageDiff(null);
|
|
2111
|
+
setDiffExpanded(false);
|
|
2112
|
+
return;
|
|
2113
|
+
}
|
|
2114
|
+
setPageDiff(diff);
|
|
2115
|
+
}).catch(() => {
|
|
2116
|
+
if (cancelled) return;
|
|
2117
|
+
setPageDiff(null);
|
|
2118
|
+
setDiffExpanded(false);
|
|
2119
|
+
});
|
|
2120
|
+
onCleanup(() => {
|
|
2121
|
+
cancelled = true;
|
|
2122
|
+
});
|
|
2123
|
+
});
|
|
1938
2124
|
const handleSubmit = (e) => {
|
|
1939
2125
|
e.preventDefault();
|
|
1940
2126
|
const val = inputValue().trim();
|
|
@@ -1943,10 +2129,11 @@ const AddressBar = () => {
|
|
|
1943
2129
|
inputRef?.blur();
|
|
1944
2130
|
}
|
|
1945
2131
|
};
|
|
2132
|
+
const formatSectionLabel = (section) => section === "title" ? "Title" : section === "headings" ? "Headings" : "Content";
|
|
1946
2133
|
return (() => {
|
|
1947
|
-
var _el$ = _tmpl$
|
|
1948
|
-
_el$
|
|
1949
|
-
var _el$
|
|
2134
|
+
var _el$ = _tmpl$6$6(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$2.nextSibling, _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild, _el$9 = _el$7.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$24 = _el$6.nextSibling, _el$25 = _el$24.firstChild, _el$26 = _el$25.nextSibling, _el$27 = _el$26.nextSibling;
|
|
2135
|
+
_el$27.firstChild;
|
|
2136
|
+
var _el$30 = _el$27.nextSibling;
|
|
1950
2137
|
addEventListener(_el$3, "click", goBack, true);
|
|
1951
2138
|
addEventListener(_el$4, "click", goForward, true);
|
|
1952
2139
|
addEventListener(_el$5, "click", reload, true);
|
|
@@ -1957,31 +2144,166 @@ const AddressBar = () => {
|
|
|
1957
2144
|
typeof _ref$ === "function" ? use(_ref$, _el$8) : inputRef = _el$8;
|
|
1958
2145
|
setAttribute(_el$8, "spellcheck", false);
|
|
1959
2146
|
insert(_el$1, () => agentStatusMessage() || (agentPresence() === "active" ? "Agent Active" : agentPresence() === "recent" ? "Agent Connected" : "Agent Offline"));
|
|
1960
|
-
_el$
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
2147
|
+
insert(_el$6, createComponent(Show, {
|
|
2148
|
+
get when() {
|
|
2149
|
+
return pageDiff();
|
|
2150
|
+
},
|
|
2151
|
+
get children() {
|
|
2152
|
+
var _el$10 = _tmpl$$c();
|
|
2153
|
+
_el$10.$$click = () => setDiffExpanded(!diffExpanded());
|
|
2154
|
+
return _el$10;
|
|
2155
|
+
}
|
|
2156
|
+
}), null);
|
|
2157
|
+
insert(_el$, createComponent(Show, {
|
|
2158
|
+
get when() {
|
|
2159
|
+
return memo(() => !!pageDiff())() && diffExpanded();
|
|
2160
|
+
},
|
|
2161
|
+
get children() {
|
|
2162
|
+
var _el$11 = _tmpl$4$8(), _el$12 = _el$11.firstChild, _el$13 = _el$12.firstChild, _el$14 = _el$13.firstChild;
|
|
2163
|
+
_el$14.firstChild;
|
|
2164
|
+
var _el$21 = _el$13.nextSibling;
|
|
2165
|
+
insert(_el$14, () => formatRelativeTime(pageDiff().oldSnapshot.capturedAt), null);
|
|
2166
|
+
insert(_el$13, createComponent(Show, {
|
|
2167
|
+
get when() {
|
|
2168
|
+
return memo(() => !!((pageDiff().burstCount || 0) > 1 && pageDiff().firstDetectedAt))() && pageDiff().lastDetectedAt;
|
|
2169
|
+
},
|
|
2170
|
+
get children() {
|
|
2171
|
+
var _el$16 = _tmpl$2$a(), _el$17 = _el$16.firstChild, _el$20 = _el$17.nextSibling;
|
|
2172
|
+
_el$20.nextSibling;
|
|
2173
|
+
insert(_el$16, () => pageDiff().burstCount, _el$20);
|
|
2174
|
+
insert(_el$16, () => formatElapsed(pageDiff().firstDetectedAt, pageDiff().lastDetectedAt), null);
|
|
2175
|
+
return _el$16;
|
|
2176
|
+
}
|
|
2177
|
+
}), null);
|
|
2178
|
+
_el$21.$$click = () => setDiffExpanded(false);
|
|
2179
|
+
insert(_el$11, createComponent(Show, {
|
|
2180
|
+
get when() {
|
|
2181
|
+
return memo(() => !!pageDiff().recentBursts?.length)() && (pageDiff().recentBursts?.length || 0) > 1;
|
|
2182
|
+
},
|
|
2183
|
+
get children() {
|
|
2184
|
+
var _el$22 = _tmpl$3$8();
|
|
2185
|
+
_el$22.firstChild;
|
|
2186
|
+
insert(_el$22, createComponent(For, {
|
|
2187
|
+
get each() {
|
|
2188
|
+
return pageDiff().recentBursts;
|
|
2189
|
+
},
|
|
2190
|
+
children: (burst) => (() => {
|
|
2191
|
+
var _el$31 = _tmpl$7$4(), _el$32 = _el$31.firstChild, _el$33 = _el$32.nextSibling;
|
|
2192
|
+
insert(_el$32, () => formatRelativeTime(burst.detectedAt));
|
|
2193
|
+
insert(_el$33, () => burst.summary);
|
|
2194
|
+
return _el$31;
|
|
2195
|
+
})()
|
|
2196
|
+
}), null);
|
|
2197
|
+
return _el$22;
|
|
2198
|
+
}
|
|
2199
|
+
}), null);
|
|
2200
|
+
insert(_el$11, createComponent(For, {
|
|
2201
|
+
get each() {
|
|
2202
|
+
return pageDiff().changes;
|
|
2203
|
+
},
|
|
2204
|
+
children: (change) => (() => {
|
|
2205
|
+
var _el$34 = _tmpl$11$4(), _el$35 = _el$34.firstChild, _el$36 = _el$35.firstChild, _el$37 = _el$36.nextSibling;
|
|
2206
|
+
insert(_el$36, () => formatSectionLabel(change.section));
|
|
2207
|
+
insert(_el$37, () => change.summary);
|
|
2208
|
+
insert(_el$34, createComponent(Show, {
|
|
2209
|
+
get when() {
|
|
2210
|
+
return change.before || change.after;
|
|
2211
|
+
},
|
|
2212
|
+
get children() {
|
|
2213
|
+
var _el$38 = _tmpl$0$4();
|
|
2214
|
+
insert(_el$38, createComponent(Show, {
|
|
2215
|
+
get when() {
|
|
2216
|
+
return change.before;
|
|
2217
|
+
},
|
|
2218
|
+
get children() {
|
|
2219
|
+
var _el$39 = _tmpl$8$4(), _el$40 = _el$39.firstChild, _el$41 = _el$40.nextSibling;
|
|
2220
|
+
insert(_el$41, () => change.before);
|
|
2221
|
+
return _el$39;
|
|
2222
|
+
}
|
|
2223
|
+
}), null);
|
|
2224
|
+
insert(_el$38, createComponent(Show, {
|
|
2225
|
+
get when() {
|
|
2226
|
+
return change.after;
|
|
2227
|
+
},
|
|
2228
|
+
get children() {
|
|
2229
|
+
var _el$42 = _tmpl$9$4(), _el$43 = _el$42.firstChild, _el$44 = _el$43.nextSibling;
|
|
2230
|
+
insert(_el$44, () => change.after);
|
|
2231
|
+
return _el$42;
|
|
2232
|
+
}
|
|
2233
|
+
}), null);
|
|
2234
|
+
return _el$38;
|
|
2235
|
+
}
|
|
2236
|
+
}), null);
|
|
2237
|
+
insert(_el$34, createComponent(Show, {
|
|
2238
|
+
get when() {
|
|
2239
|
+
return change.addedItems?.length;
|
|
2240
|
+
},
|
|
2241
|
+
get children() {
|
|
2242
|
+
var _el$45 = _tmpl$1$4(), _el$46 = _el$45.firstChild, _el$47 = _el$46.nextSibling;
|
|
2243
|
+
insert(_el$47, createComponent(For, {
|
|
2244
|
+
get each() {
|
|
2245
|
+
return change.addedItems;
|
|
2246
|
+
},
|
|
2247
|
+
children: (item) => (() => {
|
|
2248
|
+
var _el$51 = _tmpl$12$4();
|
|
2249
|
+
insert(_el$51, item);
|
|
2250
|
+
return _el$51;
|
|
2251
|
+
})()
|
|
2252
|
+
}));
|
|
2253
|
+
return _el$45;
|
|
2254
|
+
}
|
|
2255
|
+
}), null);
|
|
2256
|
+
insert(_el$34, createComponent(Show, {
|
|
2257
|
+
get when() {
|
|
2258
|
+
return change.removedItems?.length;
|
|
2259
|
+
},
|
|
2260
|
+
get children() {
|
|
2261
|
+
var _el$48 = _tmpl$10$4(), _el$49 = _el$48.firstChild, _el$50 = _el$49.nextSibling;
|
|
2262
|
+
insert(_el$50, createComponent(For, {
|
|
2263
|
+
get each() {
|
|
2264
|
+
return change.removedItems;
|
|
2265
|
+
},
|
|
2266
|
+
children: (item) => (() => {
|
|
2267
|
+
var _el$52 = _tmpl$12$4();
|
|
2268
|
+
insert(_el$52, item);
|
|
2269
|
+
return _el$52;
|
|
2270
|
+
})()
|
|
2271
|
+
}));
|
|
2272
|
+
return _el$48;
|
|
2273
|
+
}
|
|
2274
|
+
}), null);
|
|
2275
|
+
createRenderEffect(() => className(_el$34, `page-diff-item page-diff-${change.kind}`));
|
|
2276
|
+
return _el$34;
|
|
2277
|
+
})()
|
|
2278
|
+
}), null);
|
|
2279
|
+
return _el$11;
|
|
2280
|
+
}
|
|
2281
|
+
}), _el$24);
|
|
2282
|
+
_el$25.$$click = () => window.vessel.content.toggleReader();
|
|
2283
|
+
addEventListener(_el$26, "click", toggleDevTools, true);
|
|
2284
|
+
addEventListener(_el$27, "click", toggleSidebar, true);
|
|
2285
|
+
insert(_el$27, createComponent(Show, {
|
|
1964
2286
|
get when() {
|
|
1965
2287
|
return pendingApprovalCount() > 0;
|
|
1966
2288
|
},
|
|
1967
2289
|
get children() {
|
|
1968
|
-
var _el$
|
|
1969
|
-
insert(_el$
|
|
1970
|
-
createRenderEffect(() => setAttribute(_el$
|
|
1971
|
-
return _el$
|
|
2290
|
+
var _el$29 = _tmpl$5$6();
|
|
2291
|
+
insert(_el$29, pendingApprovalCount);
|
|
2292
|
+
createRenderEffect(() => setAttribute(_el$29, "aria-label", `${pendingApprovalCount()} pending`));
|
|
2293
|
+
return _el$29;
|
|
1972
2294
|
}
|
|
1973
2295
|
}), null);
|
|
1974
|
-
addEventListener(_el$
|
|
2296
|
+
addEventListener(_el$30, "click", openSettings, true);
|
|
1975
2297
|
createRenderEffect((_p$) => {
|
|
1976
2298
|
var _v$ = !activeTab()?.canGoBack, _v$2 = !activeTab()?.canGoForward, _v$3 = `agent-status-badge ${agentPresence()}`, _v$4 = agentStatusMessage() || (agentPresence() === "active" ? "Agent is actively using the browser" : agentPresence() === "recent" ? "Agent is connected" : "No agent connection detected"), _v$5 = !!activeTab()?.isReaderMode, _v$6 = !!devtoolsPanelOpen2(), _v$7 = !!(pendingApprovalCount() > 0), _v$8 = pendingApprovalCount() > 0 ? `AI Sidebar — ${pendingApprovalCount()} pending approval${pendingApprovalCount() > 1 ? "s" : ""}` : "AI Sidebar (Ctrl+Shift+L)";
|
|
1977
2299
|
_v$ !== _p$.e && (_el$3.disabled = _p$.e = _v$);
|
|
1978
2300
|
_v$2 !== _p$.t && (_el$4.disabled = _p$.t = _v$2);
|
|
1979
2301
|
_v$3 !== _p$.a && className(_el$9, _p$.a = _v$3);
|
|
1980
2302
|
_v$4 !== _p$.o && setAttribute(_el$9, "title", _p$.o = _v$4);
|
|
1981
|
-
_v$5 !== _p$.i && _el$
|
|
1982
|
-
_v$6 !== _p$.n && _el$
|
|
1983
|
-
_v$7 !== _p$.s && _el$
|
|
1984
|
-
_v$8 !== _p$.h && setAttribute(_el$
|
|
2303
|
+
_v$5 !== _p$.i && _el$25.classList.toggle("active", _p$.i = _v$5);
|
|
2304
|
+
_v$6 !== _p$.n && _el$26.classList.toggle("active", _p$.n = _v$6);
|
|
2305
|
+
_v$7 !== _p$.s && _el$27.classList.toggle("has-approvals", _p$.s = _v$7);
|
|
2306
|
+
_v$8 !== _p$.h && setAttribute(_el$27, "title", _p$.h = _v$8);
|
|
1985
2307
|
return _p$;
|
|
1986
2308
|
}, {
|
|
1987
2309
|
e: void 0,
|
|
@@ -4650,7 +4972,7 @@ function renderKitPrompt(kit, values) {
|
|
|
4650
4972
|
(_, key) => values[key] ?? ""
|
|
4651
4973
|
);
|
|
4652
4974
|
}
|
|
4653
|
-
var _tmpl$$5 = /* @__PURE__ */ template(`<div class=kit-upsell><div class=kit-upsell-icon aria-hidden=true></div><p class=kit-upsell-title>Vessel Premium</p><p class=kit-upsell-body>Automation Kits are a premium feature. Upgrade to unlock pre-built workflows you can launch with one click.</p><button class="agent-primary-button kit-upsell-btn"type=button>Start 7-day free trial — $5.99/mo after`), _tmpl$2$5 = /* @__PURE__ */ template(`<div class=kit-list-header><span class=agent-panel-title>Automation Kits <span class=kit-beta-tag>Beta</span></span><div class=kit-list-header-actions><span class=kit-list-count> kits</span><button class=kit-install-btn type=button title="Install a kit from a .kit.json file">+ Install`), _tmpl$3$4 = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$4 = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$4 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$4 = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$3 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$3 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$3 = /* @__PURE__ */ template(`<div class=kit-form-header><button class=kit-back-btn type=button title="Back to kits"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M9 11L5 7l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Back</button><div class=kit-form-title>`), _tmpl$0$3 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$3 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$3 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date & time</label><input class=kit-form-input type=datetime-local>`), _tmpl$13$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time of day</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$14$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$16$2 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$18$2 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$2 = /* @__PURE__ */ template(`<div class=sched-edit-backdrop><div class=sched-edit-panel><div class=sched-edit-header><span class=sched-edit-title>Edit schedule</span><span class=sched-edit-job-name></span></div><div class=kit-schedule-types></div><div class=sched-edit-actions><button class=kit-back-btn type=button>Cancel</button><button class=agent-primary-button type=button>Save`), _tmpl$23$2 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$2 = /* @__PURE__ */ template(`<div class=kit-card-meta>~<!> min`), _tmpl$25$2 = /* @__PURE__ */ template(`<button class=kit-remove-btn type=button>×`), _tmpl$26$2 = /* @__PURE__ */ template(`<div class=kit-card role=button tabindex=0><span class=kit-card-icon aria-hidden=true></span><div class=kit-card-body><div class=kit-card-name></div><div class=kit-card-desc>`), _tmpl$27$2 = /* @__PURE__ */ template(`<svg class=kit-card-caret width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M5 3l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$28$2 = /* @__PURE__ */ template(`<div class=kit-sched-next>Next: `), _tmpl$29$2 = /* @__PURE__ */ template(`<div class=sched-context-menu><button class=sched-ctx-item type=button>Edit task</button><button class=sched-ctx-item type=button>Edit schedule</button><div class=sched-ctx-divider></div><button class=sched-ctx-item type=button></button><button class="sched-ctx-item sched-ctx-danger"type=button>Delete`), _tmpl$30$2 = /* @__PURE__ */ template(`<div class=kit-sched-card><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-sched-body><div class=kit-sched-name></div><div class=kit-sched-meta></div></div><div class=kit-sched-actions><button class=kit-sched-toggle type=button></button><button class=kit-remove-btn type=button title="Delete schedule"aria-label="Delete schedule">×`), _tmpl$31$2 = /* @__PURE__ */ template(`<div class=kit-activity-output>`), _tmpl$32$2 = /* @__PURE__ */ template(`<div class=kit-activity-card><div class=kit-activity-header><div class=kit-activity-title><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-activity-title-copy><div class=kit-sched-name></div><div class=kit-activity-time></div></div></div><span class=kit-activity-badge>`), _tmpl$33$2 = /* @__PURE__ */ template(`<div class="kit-activity-output kit-activity-placeholder">`), _tmpl$34$2 = /* @__PURE__ */ template(`<span class=kit-form-required aria-hidden=true>*`), _tmpl$35$2 = /* @__PURE__ */ template(`<textarea class=kit-form-textarea rows=3>`), _tmpl$36$
|
|
4975
|
+
var _tmpl$$5 = /* @__PURE__ */ template(`<div class=kit-upsell><div class=kit-upsell-icon aria-hidden=true></div><p class=kit-upsell-title>Vessel Premium</p><p class=kit-upsell-body>Automation Kits are a premium feature. Upgrade to unlock pre-built workflows you can launch with one click.</p><button class="agent-primary-button kit-upsell-btn"type=button>Start 7-day free trial — $5.99/mo after`), _tmpl$2$5 = /* @__PURE__ */ template(`<div class=kit-list-header><span class=agent-panel-title>Automation Kits <span class=kit-beta-tag>Beta</span></span><div class=kit-list-header-actions><span class=kit-list-count> kits</span><button class=kit-install-btn type=button title="Install a kit from a .kit.json file">+ Install`), _tmpl$3$4 = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$4 = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$4 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$4 = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$3 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$3 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$3 = /* @__PURE__ */ template(`<div class=kit-form-header><button class=kit-back-btn type=button title="Back to kits"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M9 11L5 7l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Back</button><div class=kit-form-title>`), _tmpl$0$3 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$3 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$3 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date & time</label><input class=kit-form-input type=datetime-local>`), _tmpl$13$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time of day</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$14$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$16$2 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$18$2 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$2 = /* @__PURE__ */ template(`<div class=sched-edit-backdrop><div class=sched-edit-panel><div class=sched-edit-header><span class=sched-edit-title>Edit schedule</span><span class=sched-edit-job-name></span></div><div class=kit-schedule-types></div><div class=sched-edit-actions><button class=kit-back-btn type=button>Cancel</button><button class=agent-primary-button type=button>Save`), _tmpl$23$2 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$2 = /* @__PURE__ */ template(`<div class=kit-card-meta>~<!> min`), _tmpl$25$2 = /* @__PURE__ */ template(`<button class=kit-remove-btn type=button>×`), _tmpl$26$2 = /* @__PURE__ */ template(`<div class=kit-card role=button tabindex=0><span class=kit-card-icon aria-hidden=true></span><div class=kit-card-body><div class=kit-card-name></div><div class=kit-card-desc>`), _tmpl$27$2 = /* @__PURE__ */ template(`<svg class=kit-card-caret width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M5 3l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$28$2 = /* @__PURE__ */ template(`<div class=kit-sched-next>Next: `), _tmpl$29$2 = /* @__PURE__ */ template(`<div class=sched-context-menu><button class=sched-ctx-item type=button>Edit task</button><button class=sched-ctx-item type=button>Edit schedule</button><div class=sched-ctx-divider></div><button class=sched-ctx-item type=button></button><button class="sched-ctx-item sched-ctx-danger"type=button>Delete`), _tmpl$30$2 = /* @__PURE__ */ template(`<div class=kit-sched-card><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-sched-body><div class=kit-sched-name></div><div class=kit-sched-meta></div></div><div class=kit-sched-actions><button class=kit-sched-toggle type=button></button><button class=kit-remove-btn type=button title="Delete schedule"aria-label="Delete schedule">×`), _tmpl$31$2 = /* @__PURE__ */ template(`<div class=kit-activity-output>`), _tmpl$32$2 = /* @__PURE__ */ template(`<div class=kit-activity-card><div class=kit-activity-header><div class=kit-activity-title><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-activity-title-copy><div class=kit-sched-name></div><div class=kit-activity-time></div></div></div><span class=kit-activity-badge>`), _tmpl$33$2 = /* @__PURE__ */ template(`<div class="kit-activity-output kit-activity-placeholder">`), _tmpl$34$2 = /* @__PURE__ */ template(`<span class=kit-form-required aria-hidden=true>*`), _tmpl$35$2 = /* @__PURE__ */ template(`<textarea class=kit-form-textarea rows=3>`), _tmpl$36$2 = /* @__PURE__ */ template(`<p class=kit-form-hint>`), _tmpl$37$2 = /* @__PURE__ */ template(`<div class=kit-form-field><label class=kit-form-label>`), _tmpl$38$2 = /* @__PURE__ */ template(`<input class=kit-form-input>`), _tmpl$39$1 = /* @__PURE__ */ template(`<span class=kit-run-spinner aria-hidden=true>`), _tmpl$40$1 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=sched-type>`), _tmpl$41$1 = /* @__PURE__ */ template(`<option>`), _tmpl$42$1 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=edit-sched-type>`);
|
|
4654
4976
|
const ICON_MAP = {
|
|
4655
4977
|
BookOpen: book_open_default,
|
|
4656
4978
|
Tag: tag_default,
|
|
@@ -5237,7 +5559,7 @@ const AutomationTab = (props) => {
|
|
|
5237
5559
|
return selectedKit().inputs;
|
|
5238
5560
|
},
|
|
5239
5561
|
children: (input) => (() => {
|
|
5240
|
-
var _el$110 = _tmpl$37$
|
|
5562
|
+
var _el$110 = _tmpl$37$2(), _el$111 = _el$110.firstChild;
|
|
5241
5563
|
insert(_el$111, () => input.label, null);
|
|
5242
5564
|
insert(_el$111, createComponent(Show, {
|
|
5243
5565
|
get when() {
|
|
@@ -5253,7 +5575,7 @@ const AutomationTab = (props) => {
|
|
|
5253
5575
|
},
|
|
5254
5576
|
get fallback() {
|
|
5255
5577
|
return (() => {
|
|
5256
|
-
var _el$115 = _tmpl$38$
|
|
5578
|
+
var _el$115 = _tmpl$38$2();
|
|
5257
5579
|
_el$115.$$input = (e) => setField(input.key, e.currentTarget.value);
|
|
5258
5580
|
createRenderEffect((_p$) => {
|
|
5259
5581
|
var _v$8 = input.type === "url" ? "url" : input.type === "number" ? "number" : "text", _v$9 = input.placeholder ?? "";
|
|
@@ -5281,7 +5603,7 @@ const AutomationTab = (props) => {
|
|
|
5281
5603
|
return input.hint;
|
|
5282
5604
|
},
|
|
5283
5605
|
get children() {
|
|
5284
|
-
var _el$114 = _tmpl$36$
|
|
5606
|
+
var _el$114 = _tmpl$36$2();
|
|
5285
5607
|
insert(_el$114, () => input.hint);
|
|
5286
5608
|
return _el$114;
|
|
5287
5609
|
}
|
|
@@ -5490,7 +5812,7 @@ const AutomationTab = (props) => {
|
|
|
5490
5812
|
};
|
|
5491
5813
|
delegateEvents(["click", "input", "keydown", "contextmenu"]);
|
|
5492
5814
|
const vesselLogo = "" + new URL("vessel-logo-transparent-IT25qr-Z.png", import.meta.url).href;
|
|
5493
|
-
var _tmpl$$4 = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$4 = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$3 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$3 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$5$3 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$6$3 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$7$2 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$8$2 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2>`), _tmpl$9$2 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$0$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$1$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$10$2 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$11$2 = /* @__PURE__ */ template(`<span>`), _tmpl$12$2 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$13$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$14$1 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$15$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$16$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$17$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$18$1 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$19$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$20$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$21$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$22$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$23$1 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button></div><div class=sidebar-messages><div>`), _tmpl$24$1 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class="agent-card agent-card-approval"><div class=agent-card-approval-stripe aria-hidden=true></div><div class=agent-card-title></div><div class=agent-card-copy></div><div class=agent-card-copy></div><div class=agent-card-actions><button class=agent-primary-button type=button>Approve</button><button class=agent-control-button type=button>Reject`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class=agent-card><div class=agent-action-row><span class=agent-card-title></span><span></span></div><div class=agent-card-copy>`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$32$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$34$1 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$35$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-delete-confirm><p class=bookmark-delete-prompt>Delete "<!>"?</p><div class=bookmark-delete-options><button class="bookmark-ghost-button danger"type=button></button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$36 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><div class=bookmark-folder-form-fields><input class=bookmark-input><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=button>Save</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$37 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$38 = /* @__PURE__ */ template(`<div class=bookmark-folder-section><div class="bookmark-folder-header clickable"role=button tabindex=0><div class=bookmark-folder-overview><span class=bookmark-folder-chevron aria-hidden=true>▸</span><div><div class=bookmark-folder-name></div><div class=bookmark-folder-meta> saved`), _tmpl$39 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$40 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$41 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$42 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$43 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$44 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$45 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><button class=agent-control-button type=button>Restore`), _tmpl$46 = /* @__PURE__ */ template(`<div>`), _tmpl$47 = /* @__PURE__ */ template(`<div class=thinking-state><div class=thinking-orb aria-hidden=true><span></span><span></span><span></span></div><div class=thinking-copy><div class=thinking-title>Thinking`), _tmpl$48 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$49 = /* @__PURE__ */ template(`<div class=chat-approval><div class=chat-approval-icon aria-hidden=true><svg width=16 height=16 viewBox="0 0 16 16"fill=none><path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM7.25 4.75a.75.75 0 011.5 0v3.5a.75.75 0 01-1.5 0v-3.5zM8 11.5a.75.75 0 110-1.5.75.75 0 010 1.5z"fill=currentColor></path></svg></div><div class=chat-approval-body><div class=chat-approval-title>Approval needed: <strong></strong></div><div class=chat-approval-detail></div><div class=chat-approval-actions><button class="chat-approval-btn chat-approval-approve"type=button>Approve</button><button class="chat-approval-btn chat-approval-reject"type=button>Reject`), _tmpl$50 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
|
|
5815
|
+
var _tmpl$$4 = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$4 = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$3 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$3 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$5$3 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$6$3 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$7$2 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$8$2 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2>`), _tmpl$9$2 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$0$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$1$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$10$2 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$11$2 = /* @__PURE__ */ template(`<span>`), _tmpl$12$2 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$13$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$14$1 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$15$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$16$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$17$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$18$1 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$19$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$20$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$21$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$22$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$23$1 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button></div><div class=sidebar-messages><div>`), _tmpl$24$1 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class="agent-card agent-card-approval"><div class=agent-card-approval-stripe aria-hidden=true></div><div class=agent-card-title></div><div class=agent-card-copy></div><div class=agent-card-copy></div><div class=agent-card-actions><button class=agent-primary-button type=button>Approve</button><button class=agent-control-button type=button>Reject`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class=agent-card><div class=agent-action-row><span class=agent-card-title></span><span></span></div><div class=agent-card-copy>`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$32$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$34$1 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$35$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-delete-confirm><p class=bookmark-delete-prompt>Delete "<!>"?</p><div class=bookmark-delete-options><button class="bookmark-ghost-button danger"type=button></button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$36$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><div class=bookmark-folder-form-fields><input class=bookmark-input><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=button>Save</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$37$1 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$38$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-section><div class="bookmark-folder-header clickable"role=button tabindex=0><div class=bookmark-folder-overview><span class=bookmark-folder-chevron aria-hidden=true>▸</span><div><div class=bookmark-folder-name></div><div class=bookmark-folder-meta> saved`), _tmpl$39 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$40 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$41 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$42 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$43 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$44 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$45 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><button class=agent-control-button type=button>Restore`), _tmpl$46 = /* @__PURE__ */ template(`<div>`), _tmpl$47 = /* @__PURE__ */ template(`<div class=thinking-state><div class=thinking-orb aria-hidden=true><span></span><span></span><span></span></div><div class=thinking-copy><div class=thinking-title>Thinking`), _tmpl$48 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$49 = /* @__PURE__ */ template(`<div class=chat-approval><div class=chat-approval-icon aria-hidden=true><svg width=16 height=16 viewBox="0 0 16 16"fill=none><path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM7.25 4.75a.75.75 0 011.5 0v3.5a.75.75 0 01-1.5 0v-3.5zM8 11.5a.75.75 0 110-1.5.75.75 0 010 1.5z"fill=currentColor></path></svg></div><div class=chat-approval-body><div class=chat-approval-title>Approval needed: <strong></strong></div><div class=chat-approval-detail></div><div class=chat-approval-actions><button class="chat-approval-btn chat-approval-approve"type=button>Approve</button><button class="chat-approval-btn chat-approval-reject"type=button>Reject`), _tmpl$50 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
|
|
5494
5816
|
const UNSORTED_FOLDER = {
|
|
5495
5817
|
id: "unsorted",
|
|
5496
5818
|
name: "Unsorted",
|
|
@@ -6162,7 +6484,7 @@ ${contextBlock}` : contextBlock);
|
|
|
6162
6484
|
return filteredGroupedBookmarks();
|
|
6163
6485
|
},
|
|
6164
6486
|
children: (folder) => (() => {
|
|
6165
|
-
var _el$122 = _tmpl$38(), _el$123 = _el$122.firstChild, _el$124 = _el$123.firstChild, _el$125 = _el$124.firstChild, _el$126 = _el$125.nextSibling, _el$127 = _el$126.firstChild, _el$128 = _el$127.nextSibling, _el$129 = _el$128.firstChild;
|
|
6487
|
+
var _el$122 = _tmpl$38$1(), _el$123 = _el$122.firstChild, _el$124 = _el$123.firstChild, _el$125 = _el$124.firstChild, _el$126 = _el$125.nextSibling, _el$127 = _el$126.firstChild, _el$128 = _el$127.nextSibling, _el$129 = _el$128.firstChild;
|
|
6166
6488
|
_el$123.$$keydown = (e) => {
|
|
6167
6489
|
if (e.key === "Enter" || e.key === " ") {
|
|
6168
6490
|
e.preventDefault();
|
|
@@ -6235,7 +6557,7 @@ ${contextBlock}` : contextBlock);
|
|
|
6235
6557
|
return editingFolderId() === folder.id;
|
|
6236
6558
|
},
|
|
6237
6559
|
get children() {
|
|
6238
|
-
var _el$143 = _tmpl$36(), _el$144 = _el$143.firstChild, _el$145 = _el$144.firstChild, _el$146 = _el$145.nextSibling, _el$147 = _el$144.nextSibling, _el$148 = _el$147.nextSibling;
|
|
6560
|
+
var _el$143 = _tmpl$36$1(), _el$144 = _el$143.firstChild, _el$145 = _el$144.firstChild, _el$146 = _el$145.nextSibling, _el$147 = _el$144.nextSibling, _el$148 = _el$147.nextSibling;
|
|
6239
6561
|
_el$145.$$input = (e) => setEditingFolderName(e.currentTarget.value);
|
|
6240
6562
|
_el$146.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
|
|
6241
6563
|
_el$147.$$click = () => void handleRenameFolder(folder.id);
|
|
@@ -6266,7 +6588,7 @@ ${contextBlock}` : contextBlock);
|
|
|
6266
6588
|
return _tmpl$40();
|
|
6267
6589
|
},
|
|
6268
6590
|
get children() {
|
|
6269
|
-
var _el$149 = _tmpl$37();
|
|
6591
|
+
var _el$149 = _tmpl$37$1();
|
|
6270
6592
|
insert(_el$149, createComponent(For, {
|
|
6271
6593
|
get each() {
|
|
6272
6594
|
return folder.items;
|
|
@@ -7196,7 +7518,7 @@ const PROVIDERS = {
|
|
|
7196
7518
|
apiKeyHint: "Optional — only if your endpoint requires authentication"
|
|
7197
7519
|
}
|
|
7198
7520
|
};
|
|
7199
|
-
var _tmpl$$2 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><button class="premium-btn premium-btn-upgrade">Try Premium free for 7 days — $5.99/mo after</button><span class=welcome-banner-note>Best for screenshots, saved sessions, credential vault, and longer autonomous runs.`), _tmpl$2$2 = /* @__PURE__ */ template(`<div class=welcome-banner><div class=welcome-banner-header><span class=welcome-banner-title>Welcome to Vessel</span><button class=welcome-banner-dismiss>×</button></div><p class=welcome-banner-text>Get started in three steps:</p><ol class=welcome-banner-steps><li><strong>Configure a chat provider</strong> — scroll to Chat Assistant below and add an API key</li><li><strong>Connect your agent harness</strong> — point it at the MCP endpoint shown below</li><li><strong>Learn the shortcuts</strong> — press <kbd>?</kbd> anytime for a quick reference`), _tmpl$3$1 = /* @__PURE__ */ template(`<div class="settings-callout settings-premium-callout"><div class=settings-callout-title>Start Vessel Premium with a 7-day free trial</div><p class=settings-callout-copy>Unlock screenshots, saved sessions, workflow tracking, table extraction, the credential vault, and longer autonomous runs without leaving the app.</p><div class=settings-premium-callout-actions><button class="premium-btn premium-btn-upgrade">Start 7-day free trial — $5.99/mo after</button><button class="premium-btn premium-btn-activate">See activation steps`), _tmpl$4$1 = /* @__PURE__ */ template(`<input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200>`), _tmpl$5$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-provider>Provider</label><select id=chat-provider class="settings-input settings-select">`), _tmpl$6$1 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$7 = /* @__PURE__ */ template(`<p class=settings-hint>An API key is already stored securely for this provider. Leave this blank to keep it, or enter a new key to replace it.`), _tmpl$8 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$9 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-api-key>API Key</label><input id=chat-api-key class=settings-input type=password>`), _tmpl$0 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$1 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$10 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-model>Model</label><div style=display:flex;gap:6px;align-items:center><button type=button class=settings-refresh-btn title="Refresh model list">↺`), _tmpl$11 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-base-url>Base URL</label><input id=chat-base-url class=settings-input>`), _tmpl$12 = /* @__PURE__ */ template(`<p class=settings-hint>Vessel auto-detects the active model from your configured \`llama-server\` base URL. For agent loops, run \`llama-server\` with \`--ctx-size 16384\` minimum and \`32768\` recommended.`), _tmpl$13 = /* @__PURE__ */ template(`<div class=premium-section><div class=premium-active-badge>Premium Active</div><p class=premium-detail></p><div class=premium-actions-row><button class="premium-btn premium-btn-manage">Manage Subscription</button><button class="premium-btn premium-btn-reset">Sign Out`), _tmpl$14 = /* @__PURE__ */ template(`<span class=vault-premium-badge>Premium`), _tmpl$15 = /* @__PURE__ */ template(`<p class=settings-hint style=margin-bottom:10px>Store credentials for agent-driven logins. Credentials are encrypted at rest and never sent to AI providers — they are filled directly into login forms with your consent.`), _tmpl$16 = /* @__PURE__ */ template(`<div class=vault-entries>`), _tmpl$17 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Credential`), _tmpl$18 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Label (e.g. Work GitHub)"><input class=settings-input placeholder="Domain pattern (e.g. github.com, *.aws.amazon.com)"><input class=settings-input placeholder="Username / email"><input class=settings-input type=password placeholder=Password><input class=settings-input placeholder="TOTP secret (optional, base32)"><input class=settings-input placeholder="Notes (optional)"><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Credential</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$19 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=settings-panel><h2 class=settings-title>Runtime Settings</h2><div class=settings-callout><div class=settings-callout-title>External Agent Control</div><p class=settings-callout-copy>Vessel is configured to run under an external harness such as Hermes Agent or OpenClaw. Provider and model selection are not configured inside Vessel.</p></div><div class=settings-field><label class=settings-label for=default-homepage>Homepage</label><input id=default-homepage class=settings-input placeholder=https://start.duckduckgo.com><p class=settings-hint>The page that opens when you create a new tab or launch Vessel without restoring a previous session.</p></div><div class=settings-field><label class=settings-label for=mcp-port>MCP Port</label><input id=mcp-port class=settings-input placeholder=3100><p class=settings-hint>External harnesses connect to Vessel at <code>http://127.0.0.1:<port>/mcp</code>. Changing this value restarts the MCP server immediately.</p></div><div class=settings-field><label class=settings-label for=max-tool-iterations>Max Tool Iterations</label><p class=settings-hint></p></div><div class=settings-field><label class=settings-label for=obsidian-vault-path>Obsidian Vault Path</label><input id=obsidian-vault-path class=settings-input placeholder=/home/you/Documents/MyVault><p class=settings-hint>Optional. When set, Vessel memory tools can write markdown notes into this vault for research breadcrumbs and summaries.</p></div><div class=settings-field><label class=settings-label for=agent-transcript-mode>Agent Transcript Monitor</label><select id=agent-transcript-mode class="settings-input settings-select"><option value=off>Off</option><option value=summary>Summary HUD</option><option value=full>Full transcript</option></select><p class=settings-hint>Controls the in-browser transcript monitor when an external harness publishes reasoning or status updates into Vessel via the<code>vessel_publish_transcript</code> MCP tool. Summary HUD shows a compact 2-line status surface; Full transcript shows the recent entry list.</p></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Restore last browser session on launch</span></label></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Start bookmarks fresh on launch</span></label><p class=settings-hint>Off by default. When enabled, bookmark folders and saved pages are cleared each time Vessel starts.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Enable Chat Assistant</span></label><p class=settings-hint>Adds a Chat tab to the sidebar for conversing with an AI provider of your choice.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Vessel Premium</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Agent Credential Vault</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Anonymous Usage Analytics</span></label><p class=settings-hint>Help improve Vessel by sending anonymous usage data (tool popularity, session duration, provider type). No URLs, page content, queries, or personal data is ever collected.</p></div><div class=settings-actions><button class=settings-save>Save</button><button class=settings-close>Close`), _tmpl$20 = /* @__PURE__ */ template(`<style>
|
|
7521
|
+
var _tmpl$$2 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><button class="premium-btn premium-btn-upgrade">Try Premium free for 7 days — $5.99/mo after</button><span class=welcome-banner-note>Best for screenshots, saved sessions, credential vault, and longer autonomous runs.`), _tmpl$2$2 = /* @__PURE__ */ template(`<div class=welcome-banner><div class=welcome-banner-header><span class=welcome-banner-title>Welcome to Vessel</span><button class=welcome-banner-dismiss>×</button></div><p class=welcome-banner-text>Get started in three steps:</p><ol class=welcome-banner-steps><li><strong>Configure a chat provider</strong> — scroll to Chat Assistant below and add an API key</li><li><strong>Connect your agent harness</strong> — point it at the MCP endpoint shown below</li><li><strong>Learn the shortcuts</strong> — press <kbd>?</kbd> anytime for a quick reference`), _tmpl$3$1 = /* @__PURE__ */ template(`<div class="settings-callout settings-premium-callout"><div class=settings-callout-title>Start Vessel Premium with a 7-day free trial</div><p class=settings-callout-copy>Unlock screenshots, saved sessions, workflow tracking, table extraction, the credential vault, and longer autonomous runs without leaving the app.</p><div class=settings-premium-callout-actions><button class="premium-btn premium-btn-upgrade">Start 7-day free trial — $5.99/mo after</button><button class="premium-btn premium-btn-activate">See activation steps`), _tmpl$4$1 = /* @__PURE__ */ template(`<input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200>`), _tmpl$5$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-provider>Provider</label><select id=chat-provider class="settings-input settings-select">`), _tmpl$6$1 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$7 = /* @__PURE__ */ template(`<p class=settings-hint>An API key is already stored securely for this provider. Leave this blank to keep it, or enter a new key to replace it.`), _tmpl$8 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$9 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-api-key>API Key</label><input id=chat-api-key class=settings-input type=password>`), _tmpl$0 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$1 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$10 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-model>Model</label><div style=display:flex;gap:6px;align-items:center><button type=button class=settings-refresh-btn title="Refresh model list">↺`), _tmpl$11 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-base-url>Base URL</label><input id=chat-base-url class=settings-input>`), _tmpl$12 = /* @__PURE__ */ template(`<p class=settings-hint>Vessel auto-detects the active model from your configured \`llama-server\` base URL. For agent loops, run \`llama-server\` with \`--ctx-size 16384\` minimum and \`32768\` recommended.`), _tmpl$13 = /* @__PURE__ */ template(`<div class=premium-section><div class=premium-active-badge>Premium Active</div><p class=premium-detail></p><div class=premium-actions-row><button class="premium-btn premium-btn-manage">Manage Subscription</button><button class="premium-btn premium-btn-reset">Sign Out`), _tmpl$14 = /* @__PURE__ */ template(`<span class=vault-premium-badge>Premium`), _tmpl$15 = /* @__PURE__ */ template(`<p class=settings-hint style=margin-bottom:10px>Store credentials for agent-driven logins. Credentials are encrypted at rest and never sent to AI providers — they are filled directly into login forms with your consent.`), _tmpl$16 = /* @__PURE__ */ template(`<div class=vault-entries>`), _tmpl$17 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Credential`), _tmpl$18 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Label (e.g. Work GitHub)"><input class=settings-input placeholder="Domain pattern (e.g. github.com, *.aws.amazon.com)"><input class=settings-input placeholder="Username / email"><input class=settings-input type=password placeholder=Password><input class=settings-input placeholder="TOTP secret (optional, base32)"><input class=settings-input placeholder="Notes (optional)"><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Credential</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$19 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Profile`), _tmpl$20 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Profile name (e.g. Personal, Work)"><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder="First name"><input class=settings-input placeholder="Last name"></div><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder=Email><input class=settings-input placeholder=Phone></div><input class=settings-input placeholder="Organization (optional)"><input class=settings-input placeholder="Address line 1"><input class=settings-input placeholder="Address line 2 (optional)"><div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px"><input class=settings-input placeholder=City><input class=settings-input placeholder=State><input class=settings-input placeholder="ZIP / Postal"></div><input class=settings-input placeholder=Country><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Profile</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$21 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=settings-panel><h2 class=settings-title>Runtime Settings</h2><div class=settings-callout><div class=settings-callout-title>External Agent Control</div><p class=settings-callout-copy>Vessel is configured to run under an external harness such as Hermes Agent or OpenClaw. Provider and model selection are not configured inside Vessel.</p></div><div class=settings-field><label class=settings-label for=default-homepage>Homepage</label><input id=default-homepage class=settings-input placeholder=https://start.duckduckgo.com><p class=settings-hint>The page that opens when you create a new tab or launch Vessel without restoring a previous session.</p></div><div class=settings-field><label class=settings-label for=mcp-port>MCP Port</label><input id=mcp-port class=settings-input placeholder=3100><p class=settings-hint>External harnesses connect to Vessel at <code>http://127.0.0.1:<port>/mcp</code>. Changing this value restarts the MCP server immediately.</p></div><div class=settings-field><label class=settings-label for=max-tool-iterations>Max Tool Iterations</label><p class=settings-hint></p></div><div class=settings-field><label class=settings-label for=obsidian-vault-path>Obsidian Vault Path</label><input id=obsidian-vault-path class=settings-input placeholder=/home/you/Documents/MyVault><p class=settings-hint>Optional. When set, Vessel memory tools can write markdown notes into this vault for research breadcrumbs and summaries.</p></div><div class=settings-field><label class=settings-label for=agent-transcript-mode>Agent Transcript Monitor</label><select id=agent-transcript-mode class="settings-input settings-select"><option value=off>Off</option><option value=summary>Summary HUD</option><option value=full>Full transcript</option></select><p class=settings-hint>Controls the in-browser transcript monitor when an external harness publishes reasoning or status updates into Vessel via the<code>vessel_publish_transcript</code> MCP tool. Summary HUD shows a compact 2-line status surface; Full transcript shows the recent entry list.</p></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Restore last browser session on launch</span></label></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Start bookmarks fresh on launch</span></label><p class=settings-hint>Off by default. When enabled, bookmark folders and saved pages are cleared each time Vessel starts.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Enable Chat Assistant</span></label><p class=settings-hint>Adds a Chat tab to the sidebar for conversing with an AI provider of your choice.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Vessel Premium</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Agent Credential Vault</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Form Autofill</label><p class=settings-hint style=margin-bottom:10px>Store your info once. Vessel matches it to form fields on any site using labels, field names, and autocomplete hints.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Anonymous Usage Analytics</span></label><p class=settings-hint>Help improve Vessel by sending anonymous usage data (tool popularity, session duration, provider type). No URLs, page content, queries, or personal data is ever collected.</p></div><div class=settings-actions><button class=settings-save>Save</button><button class=settings-close>Close`), _tmpl$22 = /* @__PURE__ */ template(`<style>
|
|
7200
7522
|
.settings-panel {
|
|
7201
7523
|
width: min(440px, calc(100vw - 32px));
|
|
7202
7524
|
max-height: calc(100vh - 48px);
|
|
@@ -7730,7 +8052,7 @@ var _tmpl$$2 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><butt
|
|
|
7730
8052
|
justify-content: flex-end;
|
|
7731
8053
|
margin-top: 4px;
|
|
7732
8054
|
}
|
|
7733
|
-
`), _tmpl$
|
|
8055
|
+
`), _tmpl$23 = /* @__PURE__ */ template(`<div class="settings-input settings-input-disabled"title="Upgrade to Vessel Premium for unlimited tool iterations">50`), _tmpl$24 = /* @__PURE__ */ template(`<div class=settings-health-issues>`), _tmpl$25 = /* @__PURE__ */ template(`<div class=settings-health><div class=settings-callout-title>Runtime Health</div><p class=settings-hint>MCP status: <strong></strong> `), _tmpl$26 = /* @__PURE__ */ template(`<p class=settings-hint>Active endpoint: <code>`), _tmpl$27 = /* @__PURE__ */ template(`<div class=settings-health-issue><strong></strong><div>`), _tmpl$28 = /* @__PURE__ */ template(`<div>`), _tmpl$29 = /* @__PURE__ */ template(`<option>`), _tmpl$30 = /* @__PURE__ */ template(`<input id=chat-model class=settings-input style=flex:1>`), _tmpl$31 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--accent-primary)>`), _tmpl$32 = /* @__PURE__ */ template(`<div class=premium-activate-row><input class="settings-input premium-email-input"inputmode=numeric maxlength=6 placeholder="Enter 6-digit code"><button class="premium-btn premium-btn-activate">`), _tmpl$33 = /* @__PURE__ */ template(`<button class="premium-btn premium-btn-reset">Clear Saved Email`), _tmpl$34 = /* @__PURE__ */ template(`<div class=premium-section><p class=premium-description>Unlock screenshot/vision analysis, session management, Obsidian integration, workflow tracking, DevTools tools, table extraction, Agent Credential Vault, and unlimited tool iterations.</p><div class=premium-activate-row><input class="settings-input premium-email-input"type=email placeholder="Enter your subscription email"><button class="premium-btn premium-btn-activate"></button></div><button class="premium-btn premium-btn-upgrade">Subscribe to Premium — $5.99/mo after 7-day free trial`), _tmpl$35 = /* @__PURE__ */ template(`<p class=settings-status>`), _tmpl$36 = /* @__PURE__ */ template(`<p class=settings-hint>Securely store credentials for agent-driven logins. Upgrade to Premium to unlock the Agent Credential Vault.`), _tmpl$37 = /* @__PURE__ */ template(`<div class=vault-entry><div class=vault-entry-info><span class=vault-entry-label></span><span class=vault-entry-detail> · </span></div><button class=vault-entry-remove title="Remove credential">×`), _tmpl$38 = /* @__PURE__ */ template(`<div class=vault-entry><div class=vault-entry-info><span class=vault-entry-label></span><span class=vault-entry-detail></span></div><div style=display:flex;gap:6px;align-items:center><button class="premium-btn premium-btn-activate"title="Fill forms on current page with this profile"style="padding:2px 10px;font-size:12px">Fill</button><button class=vault-entry-remove title="Remove profile">×`);
|
|
7734
8056
|
const CHAT_PROVIDERS = Object.values(PROVIDERS).map((p) => ({
|
|
7735
8057
|
id: p.id,
|
|
7736
8058
|
name: p.name,
|
|
@@ -7770,6 +8092,103 @@ const Settings = () => {
|
|
|
7770
8092
|
const [vaultNewTotp, setVaultNewTotp] = createSignal("");
|
|
7771
8093
|
const [vaultNewNotes, setVaultNewNotes] = createSignal("");
|
|
7772
8094
|
const [vaultMessage, setVaultMessage] = createSignal(null);
|
|
8095
|
+
const [autofillProfiles, setAutofillProfiles] = createSignal([]);
|
|
8096
|
+
const [autofillAdding, setAutofillAdding] = createSignal(false);
|
|
8097
|
+
const [autofillLabel, setAutofillLabel] = createSignal("");
|
|
8098
|
+
const [autofillFirstName, setAutofillFirstName] = createSignal("");
|
|
8099
|
+
const [autofillLastName, setAutofillLastName] = createSignal("");
|
|
8100
|
+
const [autofillEmail, setAutofillEmail] = createSignal("");
|
|
8101
|
+
const [autofillPhone, setAutofillPhone] = createSignal("");
|
|
8102
|
+
const [autofillOrg, setAutofillOrg] = createSignal("");
|
|
8103
|
+
const [autofillAddr1, setAutofillAddr1] = createSignal("");
|
|
8104
|
+
const [autofillAddr2, setAutofillAddr2] = createSignal("");
|
|
8105
|
+
const [autofillCity, setAutofillCity] = createSignal("");
|
|
8106
|
+
const [autofillState, setAutofillState] = createSignal("");
|
|
8107
|
+
const [autofillZip, setAutofillZip] = createSignal("");
|
|
8108
|
+
const [autofillCountry, setAutofillCountry] = createSignal("");
|
|
8109
|
+
const [autofillMessage, setAutofillMessage] = createSignal(null);
|
|
8110
|
+
const loadAutofillProfiles = async () => {
|
|
8111
|
+
try {
|
|
8112
|
+
const profiles = await window.vessel.autofill.list();
|
|
8113
|
+
setAutofillProfiles(profiles);
|
|
8114
|
+
} catch {
|
|
8115
|
+
}
|
|
8116
|
+
};
|
|
8117
|
+
const handleAutofillAdd = async () => {
|
|
8118
|
+
if (!autofillLabel().trim()) {
|
|
8119
|
+
setAutofillMessage({
|
|
8120
|
+
kind: "error",
|
|
8121
|
+
text: "Profile name is required."
|
|
8122
|
+
});
|
|
8123
|
+
return;
|
|
8124
|
+
}
|
|
8125
|
+
try {
|
|
8126
|
+
await window.vessel.autofill.add({
|
|
8127
|
+
label: autofillLabel().trim(),
|
|
8128
|
+
firstName: autofillFirstName().trim(),
|
|
8129
|
+
lastName: autofillLastName().trim(),
|
|
8130
|
+
email: autofillEmail().trim(),
|
|
8131
|
+
phone: autofillPhone().trim(),
|
|
8132
|
+
organization: autofillOrg().trim(),
|
|
8133
|
+
addressLine1: autofillAddr1().trim(),
|
|
8134
|
+
addressLine2: autofillAddr2().trim(),
|
|
8135
|
+
city: autofillCity().trim(),
|
|
8136
|
+
state: autofillState().trim(),
|
|
8137
|
+
postalCode: autofillZip().trim(),
|
|
8138
|
+
country: autofillCountry().trim()
|
|
8139
|
+
});
|
|
8140
|
+
setAutofillLabel("");
|
|
8141
|
+
setAutofillFirstName("");
|
|
8142
|
+
setAutofillLastName("");
|
|
8143
|
+
setAutofillEmail("");
|
|
8144
|
+
setAutofillPhone("");
|
|
8145
|
+
setAutofillOrg("");
|
|
8146
|
+
setAutofillAddr1("");
|
|
8147
|
+
setAutofillAddr2("");
|
|
8148
|
+
setAutofillCity("");
|
|
8149
|
+
setAutofillState("");
|
|
8150
|
+
setAutofillZip("");
|
|
8151
|
+
setAutofillCountry("");
|
|
8152
|
+
setAutofillAdding(false);
|
|
8153
|
+
setAutofillMessage({
|
|
8154
|
+
kind: "success",
|
|
8155
|
+
text: "Profile saved."
|
|
8156
|
+
});
|
|
8157
|
+
setTimeout(() => setAutofillMessage(null), 3e3);
|
|
8158
|
+
await loadAutofillProfiles();
|
|
8159
|
+
} catch (err) {
|
|
8160
|
+
setAutofillMessage({
|
|
8161
|
+
kind: "error",
|
|
8162
|
+
text: String(err)
|
|
8163
|
+
});
|
|
8164
|
+
}
|
|
8165
|
+
};
|
|
8166
|
+
const handleAutofillRemove = async (id) => {
|
|
8167
|
+
await window.vessel.autofill.delete(id);
|
|
8168
|
+
await loadAutofillProfiles();
|
|
8169
|
+
};
|
|
8170
|
+
const handleAutofillFill = async (id) => {
|
|
8171
|
+
try {
|
|
8172
|
+
const result = await window.vessel.autofill.fill(id);
|
|
8173
|
+
if (result.filled > 0) {
|
|
8174
|
+
setAutofillMessage({
|
|
8175
|
+
kind: "success",
|
|
8176
|
+
text: `Filled ${result.filled} field${result.filled > 1 ? "s" : ""}.`
|
|
8177
|
+
});
|
|
8178
|
+
} else {
|
|
8179
|
+
setAutofillMessage({
|
|
8180
|
+
kind: "error",
|
|
8181
|
+
text: "No matching fields found on this page."
|
|
8182
|
+
});
|
|
8183
|
+
}
|
|
8184
|
+
setTimeout(() => setAutofillMessage(null), 3e3);
|
|
8185
|
+
} catch (err) {
|
|
8186
|
+
setAutofillMessage({
|
|
8187
|
+
kind: "error",
|
|
8188
|
+
text: String(err)
|
|
8189
|
+
});
|
|
8190
|
+
}
|
|
8191
|
+
};
|
|
7773
8192
|
const FIRST_RUN_KEY = "vessel.onboarding.dismissed";
|
|
7774
8193
|
const [showWelcome, setShowWelcome] = createSignal(!localStorage.getItem(FIRST_RUN_KEY));
|
|
7775
8194
|
const dismissWelcome = () => {
|
|
@@ -7960,6 +8379,7 @@ const Settings = () => {
|
|
|
7960
8379
|
};
|
|
7961
8380
|
onMount(() => {
|
|
7962
8381
|
void loadState();
|
|
8382
|
+
void loadAutofillProfiles();
|
|
7963
8383
|
const unsubscribe = window.vessel.settings.onHealthUpdate((nextHealth) => {
|
|
7964
8384
|
setHealth(nextHealth);
|
|
7965
8385
|
});
|
|
@@ -8040,11 +8460,13 @@ const Settings = () => {
|
|
|
8040
8460
|
},
|
|
8041
8461
|
get children() {
|
|
8042
8462
|
return [(() => {
|
|
8043
|
-
var _el$ = _tmpl$
|
|
8463
|
+
var _el$ = _tmpl$21(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$11 = _el$3.nextSibling, _el$18 = _el$11.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$19.nextSibling, _el$21 = _el$18.nextSibling, _el$22 = _el$21.firstChild, _el$23 = _el$22.nextSibling, _el$24 = _el$21.nextSibling, _el$25 = _el$24.firstChild, _el$27 = _el$25.nextSibling, _el$28 = _el$24.nextSibling, _el$29 = _el$28.firstChild, _el$30 = _el$29.nextSibling, _el$31 = _el$28.nextSibling, _el$32 = _el$31.firstChild, _el$33 = _el$32.nextSibling, _el$34 = _el$31.nextSibling, _el$35 = _el$34.firstChild, _el$36 = _el$35.firstChild, _el$37 = _el$34.nextSibling, _el$38 = _el$37.firstChild, _el$39 = _el$38.firstChild, _el$40 = _el$37.nextSibling, _el$41 = _el$40.nextSibling, _el$42 = _el$41.firstChild, _el$43 = _el$42.firstChild, _el$64 = _el$41.nextSibling, _el$65 = _el$64.nextSibling;
|
|
8044
8464
|
_el$65.firstChild;
|
|
8045
8465
|
var _el$74 = _el$65.nextSibling, _el$75 = _el$74.nextSibling, _el$76 = _el$75.firstChild;
|
|
8046
8466
|
_el$76.firstChild;
|
|
8047
|
-
var _el$92 = _el$75.nextSibling, _el$93 = _el$92.nextSibling, _el$94 = _el$93.firstChild
|
|
8467
|
+
var _el$92 = _el$75.nextSibling, _el$93 = _el$92.nextSibling, _el$94 = _el$93.firstChild;
|
|
8468
|
+
_el$94.nextSibling;
|
|
8469
|
+
var _el$117 = _el$93.nextSibling, _el$118 = _el$117.nextSibling, _el$119 = _el$118.firstChild, _el$120 = _el$119.firstChild, _el$121 = _el$118.nextSibling, _el$122 = _el$121.firstChild, _el$123 = _el$122.nextSibling;
|
|
8048
8470
|
addEventListener(_el$, "click", closeSettings, true);
|
|
8049
8471
|
_el$2.$$keydown = handleKeyDown;
|
|
8050
8472
|
_el$2.$$click = (e) => e.stopPropagation();
|
|
@@ -8101,7 +8523,7 @@ const Settings = () => {
|
|
|
8101
8523
|
return premiumActive();
|
|
8102
8524
|
},
|
|
8103
8525
|
get fallback() {
|
|
8104
|
-
return _tmpl$
|
|
8526
|
+
return _tmpl$23();
|
|
8105
8527
|
},
|
|
8106
8528
|
get children() {
|
|
8107
8529
|
var _el$26 = _tmpl$4$1();
|
|
@@ -8122,55 +8544,55 @@ const Settings = () => {
|
|
|
8122
8544
|
return health();
|
|
8123
8545
|
},
|
|
8124
8546
|
children: (currentHealth) => (() => {
|
|
8125
|
-
var _el$
|
|
8126
|
-
_el$
|
|
8127
|
-
insert(_el$
|
|
8128
|
-
insert(_el$
|
|
8129
|
-
insert(_el$
|
|
8547
|
+
var _el$126 = _tmpl$25(), _el$127 = _el$126.firstChild, _el$128 = _el$127.nextSibling, _el$129 = _el$128.firstChild, _el$131 = _el$129.nextSibling;
|
|
8548
|
+
_el$131.nextSibling;
|
|
8549
|
+
insert(_el$131, () => currentHealth().mcp.status);
|
|
8550
|
+
insert(_el$128, () => currentHealth().mcp.message, null);
|
|
8551
|
+
insert(_el$126, createComponent(Show, {
|
|
8130
8552
|
get when() {
|
|
8131
8553
|
return currentHealth().mcp.endpoint;
|
|
8132
8554
|
},
|
|
8133
8555
|
children: (endpoint) => (() => {
|
|
8134
|
-
var _el$
|
|
8135
|
-
insert(_el$
|
|
8136
|
-
return _el$
|
|
8556
|
+
var _el$134 = _tmpl$26(), _el$135 = _el$134.firstChild, _el$136 = _el$135.nextSibling;
|
|
8557
|
+
insert(_el$136, endpoint);
|
|
8558
|
+
return _el$134;
|
|
8137
8559
|
})()
|
|
8138
8560
|
}), null);
|
|
8139
|
-
insert(_el$
|
|
8561
|
+
insert(_el$126, createComponent(Show, {
|
|
8140
8562
|
get when() {
|
|
8141
8563
|
return currentHealth().startupIssues.length > 0;
|
|
8142
8564
|
},
|
|
8143
8565
|
get children() {
|
|
8144
|
-
var _el$
|
|
8145
|
-
insert(_el$
|
|
8146
|
-
var _el$
|
|
8147
|
-
insert(_el$
|
|
8148
|
-
insert(_el$
|
|
8149
|
-
insert(_el$
|
|
8566
|
+
var _el$133 = _tmpl$24();
|
|
8567
|
+
insert(_el$133, () => currentHealth().startupIssues.map((issue) => (() => {
|
|
8568
|
+
var _el$137 = _tmpl$27(), _el$138 = _el$137.firstChild, _el$139 = _el$138.nextSibling;
|
|
8569
|
+
insert(_el$138, () => issue.title);
|
|
8570
|
+
insert(_el$139, () => issue.detail);
|
|
8571
|
+
insert(_el$137, createComponent(Show, {
|
|
8150
8572
|
get when() {
|
|
8151
8573
|
return issue.action;
|
|
8152
8574
|
},
|
|
8153
8575
|
children: (action) => (() => {
|
|
8154
|
-
var _el$
|
|
8155
|
-
insert(_el$
|
|
8156
|
-
return _el$
|
|
8576
|
+
var _el$140 = _tmpl$28();
|
|
8577
|
+
insert(_el$140, action);
|
|
8578
|
+
return _el$140;
|
|
8157
8579
|
})()
|
|
8158
8580
|
}), null);
|
|
8159
8581
|
createRenderEffect((_p$) => {
|
|
8160
8582
|
var _v$0 = !!(issue.severity === "warning"), _v$1 = !!(issue.severity === "error");
|
|
8161
|
-
_v$0 !== _p$.e && _el$
|
|
8162
|
-
_v$1 !== _p$.t && _el$
|
|
8583
|
+
_v$0 !== _p$.e && _el$137.classList.toggle("warning", _p$.e = _v$0);
|
|
8584
|
+
_v$1 !== _p$.t && _el$137.classList.toggle("error", _p$.t = _v$1);
|
|
8163
8585
|
return _p$;
|
|
8164
8586
|
}, {
|
|
8165
8587
|
e: void 0,
|
|
8166
8588
|
t: void 0
|
|
8167
8589
|
});
|
|
8168
|
-
return _el$
|
|
8590
|
+
return _el$137;
|
|
8169
8591
|
})()));
|
|
8170
|
-
return _el$
|
|
8592
|
+
return _el$133;
|
|
8171
8593
|
}
|
|
8172
8594
|
}), null);
|
|
8173
|
-
return _el$
|
|
8595
|
+
return _el$126;
|
|
8174
8596
|
})()
|
|
8175
8597
|
}), _el$28);
|
|
8176
8598
|
_el$30.$$input = (e) => setObsidianVaultPath(e.currentTarget.value);
|
|
@@ -8199,10 +8621,10 @@ const Settings = () => {
|
|
|
8199
8621
|
insert(_el$46, createComponent(For, {
|
|
8200
8622
|
each: CHAT_PROVIDERS,
|
|
8201
8623
|
children: (p) => (() => {
|
|
8202
|
-
var _el$
|
|
8203
|
-
insert(_el$
|
|
8204
|
-
createRenderEffect(() => _el$
|
|
8205
|
-
return _el$
|
|
8624
|
+
var _el$141 = _tmpl$29();
|
|
8625
|
+
insert(_el$141, () => p.name);
|
|
8626
|
+
createRenderEffect(() => _el$141.value = p.id);
|
|
8627
|
+
return _el$141;
|
|
8206
8628
|
})()
|
|
8207
8629
|
}));
|
|
8208
8630
|
createRenderEffect(() => _el$46.value = chatProviderId());
|
|
@@ -8258,12 +8680,12 @@ const Settings = () => {
|
|
|
8258
8680
|
},
|
|
8259
8681
|
get fallback() {
|
|
8260
8682
|
return (() => {
|
|
8261
|
-
var _el$
|
|
8262
|
-
_el$
|
|
8263
|
-
setAttribute(_el$
|
|
8264
|
-
createRenderEffect(() => setAttribute(_el$
|
|
8265
|
-
createRenderEffect(() => _el$
|
|
8266
|
-
return _el$
|
|
8683
|
+
var _el$142 = _tmpl$30();
|
|
8684
|
+
_el$142.$$input = (e) => setChatModel(e.currentTarget.value);
|
|
8685
|
+
setAttribute(_el$142, "spellcheck", false);
|
|
8686
|
+
createRenderEffect(() => setAttribute(_el$142, "placeholder", modelFetchState() === "loading" ? "Fetching models…" : chatProviderMeta().requiresKey && !chatApiKey().trim() && !chatHasStoredApiKey() ? "Enter API key to load models" : chatProviderMeta().defaultModel || "model name"));
|
|
8687
|
+
createRenderEffect(() => _el$142.value = chatModel());
|
|
8688
|
+
return _el$142;
|
|
8267
8689
|
})();
|
|
8268
8690
|
},
|
|
8269
8691
|
get children() {
|
|
@@ -8274,10 +8696,10 @@ const Settings = () => {
|
|
|
8274
8696
|
return providerModels();
|
|
8275
8697
|
},
|
|
8276
8698
|
children: (m) => (() => {
|
|
8277
|
-
var _el$
|
|
8278
|
-
_el$
|
|
8279
|
-
insert(_el$
|
|
8280
|
-
return _el$
|
|
8699
|
+
var _el$143 = _tmpl$29();
|
|
8700
|
+
_el$143.value = m;
|
|
8701
|
+
insert(_el$143, m);
|
|
8702
|
+
return _el$143;
|
|
8281
8703
|
})()
|
|
8282
8704
|
}));
|
|
8283
8705
|
createRenderEffect(() => _el$57.value = chatModel());
|
|
@@ -8298,9 +8720,9 @@ const Settings = () => {
|
|
|
8298
8720
|
return modelFetchWarning();
|
|
8299
8721
|
},
|
|
8300
8722
|
children: (warning) => (() => {
|
|
8301
|
-
var _el$
|
|
8302
|
-
insert(_el$
|
|
8303
|
-
return _el$
|
|
8723
|
+
var _el$144 = _tmpl$31();
|
|
8724
|
+
insert(_el$144, warning);
|
|
8725
|
+
return _el$144;
|
|
8304
8726
|
})()
|
|
8305
8727
|
}), null);
|
|
8306
8728
|
createRenderEffect(() => _el$58.disabled = modelFetchState() === "loading");
|
|
@@ -8333,8 +8755,8 @@ const Settings = () => {
|
|
|
8333
8755
|
},
|
|
8334
8756
|
get fallback() {
|
|
8335
8757
|
return (() => {
|
|
8336
|
-
var _el$
|
|
8337
|
-
_el$
|
|
8758
|
+
var _el$145 = _tmpl$34(), _el$146 = _el$145.firstChild, _el$147 = _el$146.nextSibling, _el$148 = _el$147.firstChild, _el$149 = _el$148.nextSibling, _el$153 = _el$147.nextSibling;
|
|
8759
|
+
_el$148.$$input = (e) => {
|
|
8338
8760
|
const nextEmail = e.currentTarget.value;
|
|
8339
8761
|
if (nextEmail.trim().toLowerCase() !== premiumEmail().trim().toLowerCase()) {
|
|
8340
8762
|
resetPremiumActivationFlow();
|
|
@@ -8342,8 +8764,8 @@ const Settings = () => {
|
|
|
8342
8764
|
}
|
|
8343
8765
|
setPremiumEmail(nextEmail);
|
|
8344
8766
|
};
|
|
8345
|
-
setAttribute(_el$
|
|
8346
|
-
_el$
|
|
8767
|
+
setAttribute(_el$148, "spellcheck", false);
|
|
8768
|
+
_el$149.$$click = async () => {
|
|
8347
8769
|
setPremiumLoading(true);
|
|
8348
8770
|
setPremiumMessage(null);
|
|
8349
8771
|
try {
|
|
@@ -8372,23 +8794,23 @@ const Settings = () => {
|
|
|
8372
8794
|
setPremiumLoading(false);
|
|
8373
8795
|
}
|
|
8374
8796
|
};
|
|
8375
|
-
insert(_el$
|
|
8797
|
+
insert(_el$149, (() => {
|
|
8376
8798
|
var _c$ = memo(() => !!premiumLoading());
|
|
8377
8799
|
return () => _c$() ? "Sending..." : premiumCodeSent() ? "Resend Code" : "Send Code";
|
|
8378
8800
|
})());
|
|
8379
|
-
insert(_el$
|
|
8801
|
+
insert(_el$145, createComponent(Show, {
|
|
8380
8802
|
get when() {
|
|
8381
8803
|
return premiumCodeSent();
|
|
8382
8804
|
},
|
|
8383
8805
|
get children() {
|
|
8384
|
-
var _el$
|
|
8385
|
-
_el$
|
|
8806
|
+
var _el$150 = _tmpl$32(), _el$151 = _el$150.firstChild, _el$152 = _el$151.nextSibling;
|
|
8807
|
+
_el$151.$$input = (e) => {
|
|
8386
8808
|
const nextCode = e.currentTarget.value.replace(/\D+/g, "").slice(0, 6);
|
|
8387
8809
|
setPremiumCode(nextCode);
|
|
8388
8810
|
setPremiumMessage(null);
|
|
8389
8811
|
};
|
|
8390
|
-
setAttribute(_el$
|
|
8391
|
-
_el$
|
|
8812
|
+
setAttribute(_el$151, "spellcheck", false);
|
|
8813
|
+
_el$152.$$click = async () => {
|
|
8392
8814
|
setPremiumLoading(true);
|
|
8393
8815
|
setPremiumMessage(null);
|
|
8394
8816
|
try {
|
|
@@ -8415,53 +8837,53 @@ const Settings = () => {
|
|
|
8415
8837
|
setPremiumLoading(false);
|
|
8416
8838
|
}
|
|
8417
8839
|
};
|
|
8418
|
-
insert(_el$
|
|
8419
|
-
createRenderEffect(() => _el$
|
|
8420
|
-
createRenderEffect(() => _el$
|
|
8421
|
-
return _el$
|
|
8840
|
+
insert(_el$152, () => premiumLoading() ? "Verifying..." : "Verify Code");
|
|
8841
|
+
createRenderEffect(() => _el$152.disabled = premiumLoading() || !premiumEmail().trim() || premiumCode().trim().length !== 6 || !premiumChallengeToken());
|
|
8842
|
+
createRenderEffect(() => _el$151.value = premiumCode());
|
|
8843
|
+
return _el$150;
|
|
8422
8844
|
}
|
|
8423
|
-
}), _el$
|
|
8424
|
-
_el$
|
|
8845
|
+
}), _el$153);
|
|
8846
|
+
_el$153.$$click = () => {
|
|
8425
8847
|
startPremiumCheckout();
|
|
8426
8848
|
};
|
|
8427
|
-
insert(_el$
|
|
8849
|
+
insert(_el$145, createComponent(Show, {
|
|
8428
8850
|
get when() {
|
|
8429
8851
|
return premiumMessage();
|
|
8430
8852
|
},
|
|
8431
8853
|
children: (msg) => (() => {
|
|
8432
|
-
var _el$
|
|
8433
|
-
insert(_el$
|
|
8854
|
+
var _el$155 = _tmpl$35();
|
|
8855
|
+
insert(_el$155, () => msg().text);
|
|
8434
8856
|
createRenderEffect((_p$) => {
|
|
8435
8857
|
var _v$10 = !!(msg().kind === "success"), _v$11 = !!(msg().kind === "error");
|
|
8436
|
-
_v$10 !== _p$.e && _el$
|
|
8437
|
-
_v$11 !== _p$.t && _el$
|
|
8858
|
+
_v$10 !== _p$.e && _el$155.classList.toggle("success", _p$.e = _v$10);
|
|
8859
|
+
_v$11 !== _p$.t && _el$155.classList.toggle("error", _p$.t = _v$11);
|
|
8438
8860
|
return _p$;
|
|
8439
8861
|
}, {
|
|
8440
8862
|
e: void 0,
|
|
8441
8863
|
t: void 0
|
|
8442
8864
|
});
|
|
8443
|
-
return _el$
|
|
8865
|
+
return _el$155;
|
|
8444
8866
|
})()
|
|
8445
8867
|
}), null);
|
|
8446
|
-
insert(_el$
|
|
8868
|
+
insert(_el$145, createComponent(Show, {
|
|
8447
8869
|
get when() {
|
|
8448
8870
|
return premiumState().email || premiumEmail();
|
|
8449
8871
|
},
|
|
8450
8872
|
get children() {
|
|
8451
|
-
var _el$
|
|
8452
|
-
_el$
|
|
8873
|
+
var _el$154 = _tmpl$33();
|
|
8874
|
+
_el$154.$$click = async () => {
|
|
8453
8875
|
const state = await window.vessel.premium.reset();
|
|
8454
8876
|
setPremiumState(state);
|
|
8455
8877
|
setPremiumEmail("");
|
|
8456
8878
|
resetPremiumActivationFlow();
|
|
8457
8879
|
setPremiumMessage(null);
|
|
8458
8880
|
};
|
|
8459
|
-
return _el$
|
|
8881
|
+
return _el$154;
|
|
8460
8882
|
}
|
|
8461
8883
|
}), null);
|
|
8462
|
-
createRenderEffect(() => _el$
|
|
8463
|
-
createRenderEffect(() => _el$
|
|
8464
|
-
return _el$
|
|
8884
|
+
createRenderEffect(() => _el$149.disabled = premiumLoading() || !premiumEmail().trim());
|
|
8885
|
+
createRenderEffect(() => _el$148.value = premiumEmail());
|
|
8886
|
+
return _el$145;
|
|
8465
8887
|
})();
|
|
8466
8888
|
},
|
|
8467
8889
|
get children() {
|
|
@@ -8511,7 +8933,7 @@ const Settings = () => {
|
|
|
8511
8933
|
return premiumActive();
|
|
8512
8934
|
},
|
|
8513
8935
|
get fallback() {
|
|
8514
|
-
return _tmpl$
|
|
8936
|
+
return _tmpl$36();
|
|
8515
8937
|
},
|
|
8516
8938
|
get children() {
|
|
8517
8939
|
return [_tmpl$15(), createComponent(Show, {
|
|
@@ -8525,11 +8947,11 @@ const Settings = () => {
|
|
|
8525
8947
|
return vaultEntries();
|
|
8526
8948
|
},
|
|
8527
8949
|
children: (entry) => (() => {
|
|
8528
|
-
var _el$
|
|
8529
|
-
insert(_el$
|
|
8530
|
-
insert(_el$
|
|
8531
|
-
insert(_el$
|
|
8532
|
-
insert(_el$
|
|
8950
|
+
var _el$157 = _tmpl$37(), _el$158 = _el$157.firstChild, _el$159 = _el$158.firstChild, _el$160 = _el$159.nextSibling, _el$161 = _el$160.firstChild, _el$162 = _el$158.nextSibling;
|
|
8951
|
+
insert(_el$159, () => entry.label);
|
|
8952
|
+
insert(_el$160, () => entry.username, _el$161);
|
|
8953
|
+
insert(_el$160, () => entry.domainPattern, null);
|
|
8954
|
+
insert(_el$160, createComponent(Show, {
|
|
8533
8955
|
get when() {
|
|
8534
8956
|
return entry.useCount > 0;
|
|
8535
8957
|
},
|
|
@@ -8537,8 +8959,8 @@ const Settings = () => {
|
|
|
8537
8959
|
return [" ", "· Used ", memo(() => entry.useCount), "x"];
|
|
8538
8960
|
}
|
|
8539
8961
|
}), null);
|
|
8540
|
-
_el$
|
|
8541
|
-
return _el$
|
|
8962
|
+
_el$162.$$click = () => handleVaultRemove(entry.id);
|
|
8963
|
+
return _el$157;
|
|
8542
8964
|
})()
|
|
8543
8965
|
}));
|
|
8544
8966
|
return _el$80;
|
|
@@ -8595,42 +9017,155 @@ const Settings = () => {
|
|
|
8595
9017
|
return vaultMessage();
|
|
8596
9018
|
},
|
|
8597
9019
|
children: (msg) => (() => {
|
|
8598
|
-
var _el$
|
|
8599
|
-
insert(_el$
|
|
9020
|
+
var _el$163 = _tmpl$35();
|
|
9021
|
+
insert(_el$163, () => msg().text);
|
|
8600
9022
|
createRenderEffect((_p$) => {
|
|
8601
9023
|
var _v$12 = !!(msg().kind === "success"), _v$13 = !!(msg().kind === "error");
|
|
8602
|
-
_v$12 !== _p$.e && _el$
|
|
8603
|
-
_v$13 !== _p$.t && _el$
|
|
9024
|
+
_v$12 !== _p$.e && _el$163.classList.toggle("success", _p$.e = _v$12);
|
|
9025
|
+
_v$13 !== _p$.t && _el$163.classList.toggle("error", _p$.t = _v$13);
|
|
8604
9026
|
return _p$;
|
|
8605
9027
|
}, {
|
|
8606
9028
|
e: void 0,
|
|
8607
9029
|
t: void 0
|
|
8608
9030
|
});
|
|
8609
|
-
return _el$
|
|
9031
|
+
return _el$163;
|
|
8610
9032
|
})()
|
|
8611
9033
|
})];
|
|
8612
9034
|
}
|
|
8613
9035
|
}), null);
|
|
8614
|
-
_el$
|
|
8615
|
-
|
|
8616
|
-
|
|
9036
|
+
insert(_el$93, createComponent(Show, {
|
|
9037
|
+
get when() {
|
|
9038
|
+
return autofillProfiles().length > 0;
|
|
9039
|
+
},
|
|
9040
|
+
get children() {
|
|
9041
|
+
var _el$96 = _tmpl$16();
|
|
9042
|
+
insert(_el$96, createComponent(For, {
|
|
9043
|
+
get each() {
|
|
9044
|
+
return autofillProfiles();
|
|
9045
|
+
},
|
|
9046
|
+
children: (profile) => (() => {
|
|
9047
|
+
var _el$164 = _tmpl$38(), _el$165 = _el$164.firstChild, _el$166 = _el$165.firstChild, _el$167 = _el$166.nextSibling, _el$168 = _el$165.nextSibling, _el$169 = _el$168.firstChild, _el$170 = _el$169.nextSibling;
|
|
9048
|
+
insert(_el$166, () => profile.label);
|
|
9049
|
+
insert(_el$167, () => profile.firstName, null);
|
|
9050
|
+
insert(_el$167, (() => {
|
|
9051
|
+
var _c$2 = memo(() => !!profile.lastName);
|
|
9052
|
+
return () => _c$2() ? ` ${profile.lastName}` : "";
|
|
9053
|
+
})(), null);
|
|
9054
|
+
insert(_el$167, (() => {
|
|
9055
|
+
var _c$3 = memo(() => !!profile.email);
|
|
9056
|
+
return () => _c$3() ? ` · ${profile.email}` : "";
|
|
9057
|
+
})(), null);
|
|
9058
|
+
_el$169.$$click = () => handleAutofillFill(profile.id);
|
|
9059
|
+
_el$170.$$click = () => handleAutofillRemove(profile.id);
|
|
9060
|
+
return _el$164;
|
|
9061
|
+
})()
|
|
9062
|
+
}));
|
|
9063
|
+
return _el$96;
|
|
9064
|
+
}
|
|
9065
|
+
}), null);
|
|
9066
|
+
insert(_el$93, createComponent(Show, {
|
|
9067
|
+
get when() {
|
|
9068
|
+
return !autofillAdding();
|
|
9069
|
+
},
|
|
9070
|
+
get children() {
|
|
9071
|
+
var _el$97 = _tmpl$19();
|
|
9072
|
+
_el$97.$$click = () => {
|
|
9073
|
+
setAutofillAdding(true);
|
|
9074
|
+
setAutofillMessage(null);
|
|
9075
|
+
};
|
|
9076
|
+
return _el$97;
|
|
9077
|
+
}
|
|
9078
|
+
}), null);
|
|
9079
|
+
insert(_el$93, createComponent(Show, {
|
|
9080
|
+
get when() {
|
|
9081
|
+
return autofillAdding();
|
|
9082
|
+
},
|
|
9083
|
+
get children() {
|
|
9084
|
+
var _el$98 = _tmpl$20(), _el$99 = _el$98.firstChild, _el$100 = _el$99.nextSibling, _el$101 = _el$100.firstChild, _el$102 = _el$101.nextSibling, _el$103 = _el$100.nextSibling, _el$104 = _el$103.firstChild, _el$105 = _el$104.nextSibling, _el$106 = _el$103.nextSibling, _el$107 = _el$106.nextSibling, _el$108 = _el$107.nextSibling, _el$109 = _el$108.nextSibling, _el$110 = _el$109.firstChild, _el$111 = _el$110.nextSibling, _el$112 = _el$111.nextSibling, _el$113 = _el$109.nextSibling, _el$114 = _el$113.nextSibling, _el$115 = _el$114.firstChild, _el$116 = _el$115.nextSibling;
|
|
9085
|
+
_el$99.$$input = (e) => setAutofillLabel(e.currentTarget.value);
|
|
9086
|
+
setAttribute(_el$99, "spellcheck", false);
|
|
9087
|
+
_el$101.$$input = (e) => setAutofillFirstName(e.currentTarget.value);
|
|
9088
|
+
_el$102.$$input = (e) => setAutofillLastName(e.currentTarget.value);
|
|
9089
|
+
_el$104.$$input = (e) => setAutofillEmail(e.currentTarget.value);
|
|
9090
|
+
setAttribute(_el$104, "spellcheck", false);
|
|
9091
|
+
_el$105.$$input = (e) => setAutofillPhone(e.currentTarget.value);
|
|
9092
|
+
_el$106.$$input = (e) => setAutofillOrg(e.currentTarget.value);
|
|
9093
|
+
_el$107.$$input = (e) => setAutofillAddr1(e.currentTarget.value);
|
|
9094
|
+
_el$108.$$input = (e) => setAutofillAddr2(e.currentTarget.value);
|
|
9095
|
+
_el$110.$$input = (e) => setAutofillCity(e.currentTarget.value);
|
|
9096
|
+
_el$111.$$input = (e) => setAutofillState(e.currentTarget.value);
|
|
9097
|
+
_el$112.$$input = (e) => setAutofillZip(e.currentTarget.value);
|
|
9098
|
+
_el$113.$$input = (e) => setAutofillCountry(e.currentTarget.value);
|
|
9099
|
+
_el$115.$$click = handleAutofillAdd;
|
|
9100
|
+
_el$116.$$click = () => {
|
|
9101
|
+
setAutofillAdding(false);
|
|
9102
|
+
setAutofillLabel("");
|
|
9103
|
+
setAutofillFirstName("");
|
|
9104
|
+
setAutofillLastName("");
|
|
9105
|
+
setAutofillEmail("");
|
|
9106
|
+
setAutofillPhone("");
|
|
9107
|
+
setAutofillOrg("");
|
|
9108
|
+
setAutofillAddr1("");
|
|
9109
|
+
setAutofillAddr2("");
|
|
9110
|
+
setAutofillCity("");
|
|
9111
|
+
setAutofillState("");
|
|
9112
|
+
setAutofillZip("");
|
|
9113
|
+
setAutofillCountry("");
|
|
9114
|
+
};
|
|
9115
|
+
createRenderEffect(() => _el$99.value = autofillLabel());
|
|
9116
|
+
createRenderEffect(() => _el$101.value = autofillFirstName());
|
|
9117
|
+
createRenderEffect(() => _el$102.value = autofillLastName());
|
|
9118
|
+
createRenderEffect(() => _el$104.value = autofillEmail());
|
|
9119
|
+
createRenderEffect(() => _el$105.value = autofillPhone());
|
|
9120
|
+
createRenderEffect(() => _el$106.value = autofillOrg());
|
|
9121
|
+
createRenderEffect(() => _el$107.value = autofillAddr1());
|
|
9122
|
+
createRenderEffect(() => _el$108.value = autofillAddr2());
|
|
9123
|
+
createRenderEffect(() => _el$110.value = autofillCity());
|
|
9124
|
+
createRenderEffect(() => _el$111.value = autofillState());
|
|
9125
|
+
createRenderEffect(() => _el$112.value = autofillZip());
|
|
9126
|
+
createRenderEffect(() => _el$113.value = autofillCountry());
|
|
9127
|
+
return _el$98;
|
|
9128
|
+
}
|
|
9129
|
+
}), null);
|
|
9130
|
+
insert(_el$93, createComponent(Show, {
|
|
9131
|
+
get when() {
|
|
9132
|
+
return autofillMessage();
|
|
9133
|
+
},
|
|
9134
|
+
children: (msg) => (() => {
|
|
9135
|
+
var _el$171 = _tmpl$35();
|
|
9136
|
+
insert(_el$171, () => msg().text);
|
|
9137
|
+
createRenderEffect((_p$) => {
|
|
9138
|
+
var _v$14 = !!(msg().kind === "success"), _v$15 = !!(msg().kind === "error");
|
|
9139
|
+
_v$14 !== _p$.e && _el$171.classList.toggle("success", _p$.e = _v$14);
|
|
9140
|
+
_v$15 !== _p$.t && _el$171.classList.toggle("error", _p$.t = _v$15);
|
|
9141
|
+
return _p$;
|
|
9142
|
+
}, {
|
|
9143
|
+
e: void 0,
|
|
9144
|
+
t: void 0
|
|
9145
|
+
});
|
|
9146
|
+
return _el$171;
|
|
9147
|
+
})()
|
|
9148
|
+
}), null);
|
|
9149
|
+
_el$120.$$click = () => setTelemetryEnabled(!telemetryEnabled());
|
|
9150
|
+
_el$122.$$click = handleSave;
|
|
9151
|
+
addEventListener(_el$123, "click", closeSettings, true);
|
|
8617
9152
|
insert(_el$2, createComponent(Show, {
|
|
8618
9153
|
get when() {
|
|
8619
9154
|
return status();
|
|
8620
9155
|
},
|
|
8621
9156
|
children: (currentStatus) => (() => {
|
|
8622
|
-
var _el$
|
|
8623
|
-
insert(_el$
|
|
9157
|
+
var _el$172 = _tmpl$35();
|
|
9158
|
+
insert(_el$172, () => currentStatus().text);
|
|
8624
9159
|
createRenderEffect((_p$) => {
|
|
8625
|
-
var _v$
|
|
8626
|
-
_v$
|
|
8627
|
-
_v$
|
|
9160
|
+
var _v$16 = !!(currentStatus().kind === "success"), _v$17 = !!(currentStatus().kind === "error");
|
|
9161
|
+
_v$16 !== _p$.e && _el$172.classList.toggle("success", _p$.e = _v$16);
|
|
9162
|
+
_v$17 !== _p$.t && _el$172.classList.toggle("error", _p$.t = _v$17);
|
|
8628
9163
|
return _p$;
|
|
8629
9164
|
}, {
|
|
8630
9165
|
e: void 0,
|
|
8631
9166
|
t: void 0
|
|
8632
9167
|
});
|
|
8633
|
-
return _el$
|
|
9168
|
+
return _el$172;
|
|
8634
9169
|
})()
|
|
8635
9170
|
}), null);
|
|
8636
9171
|
createRenderEffect((_p$) => {
|
|
@@ -8642,8 +9177,8 @@ const Settings = () => {
|
|
|
8642
9177
|
_v$5 !== _p$.i && setAttribute(_el$39, "aria-checked", _p$.i = _v$5);
|
|
8643
9178
|
_v$6 !== _p$.n && _el$43.classList.toggle("on", _p$.n = _v$6);
|
|
8644
9179
|
_v$7 !== _p$.s && setAttribute(_el$43, "aria-checked", _p$.s = _v$7);
|
|
8645
|
-
_v$8 !== _p$.h && _el$
|
|
8646
|
-
_v$9 !== _p$.r && setAttribute(_el$
|
|
9180
|
+
_v$8 !== _p$.h && _el$120.classList.toggle("on", _p$.h = _v$8);
|
|
9181
|
+
_v$9 !== _p$.r && setAttribute(_el$120, "aria-checked", _p$.r = _v$9);
|
|
8647
9182
|
return _p$;
|
|
8648
9183
|
}, {
|
|
8649
9184
|
e: void 0,
|
|
@@ -8661,7 +9196,7 @@ const Settings = () => {
|
|
|
8661
9196
|
createRenderEffect(() => _el$30.value = obsidianVaultPath());
|
|
8662
9197
|
createRenderEffect(() => _el$33.value = agentTranscriptMode());
|
|
8663
9198
|
return _el$;
|
|
8664
|
-
})(), _tmpl$
|
|
9199
|
+
})(), _tmpl$22()];
|
|
8665
9200
|
}
|
|
8666
9201
|
});
|
|
8667
9202
|
};
|