@quanta-intellect/vessel-browser 0.1.67 → 0.1.69
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 +12 -7
- package/out/main/index.js +621 -91
- package/out/preload/index.js +17 -2
- package/out/renderer/assets/{index-BQjjFSb1.js → index-BYk0kH1i.js} +1072 -703
- package/out/renderer/assets/{index-4OgPv5GF.css → index-B_C8ayic.css} +13 -0
- package/out/renderer/index.html +2 -2
- package/package.json +1 -1
|
@@ -1433,7 +1433,7 @@ function Dynamic(props) {
|
|
|
1433
1433
|
const [, others] = splitProps(props, ["component"]);
|
|
1434
1434
|
return createDynamic(() => props.component, others);
|
|
1435
1435
|
}
|
|
1436
|
-
var _tmpl$$
|
|
1436
|
+
var _tmpl$$i = /* @__PURE__ */ template(`<div class=title-bar><div class=title-bar-drag></div><div class=mcp-status-area><button class=mcp-status-indicator><span class=mcp-dot></span><span class=mcp-label>MCP</span></button></div><div class=window-controls><button class=window-btn data-tooltip=Minimize><svg width=10 height=10 viewBox="0 0 10 10"><rect x=1 y=5 width=8 height=1 fill=currentColor></rect></svg></button><button class=window-btn data-tooltip=Maximize><svg width=10 height=10 viewBox="0 0 10 10"><rect x=1 y=1 width=8 height=8 fill=none stroke=currentColor stroke-width=1></rect></svg></button><button class="window-btn window-btn-close"data-tooltip=Close><svg width=10 height=10 viewBox="0 0 10 10"><line x1=1 y1=1 x2=9 y2=9 stroke=currentColor stroke-width=1.2></line><line x1=9 y1=1 x2=1 y2=9 stroke=currentColor stroke-width=1.2>`);
|
|
1437
1437
|
const TitleBar = () => {
|
|
1438
1438
|
const [mcpStatus, setMcpStatus] = createSignal("starting");
|
|
1439
1439
|
const [mcpTooltip, setMcpTooltip] = createSignal("MCP: starting...");
|
|
@@ -1464,7 +1464,7 @@ const TitleBar = () => {
|
|
|
1464
1464
|
window.vessel.ui.setSettingsVisibility(true);
|
|
1465
1465
|
};
|
|
1466
1466
|
return (() => {
|
|
1467
|
-
var _el$ = _tmpl$$
|
|
1467
|
+
var _el$ = _tmpl$$i(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$3.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling;
|
|
1468
1468
|
_el$4.$$click = handleMcpClick;
|
|
1469
1469
|
_el$6.$$click = () => window.vessel.window.minimize();
|
|
1470
1470
|
_el$7.$$click = () => window.vessel.window.maximize();
|
|
@@ -1620,7 +1620,9 @@ const DEFAULT_RUNTIME_STATE = {
|
|
|
1620
1620
|
transcript: [],
|
|
1621
1621
|
mcpStatus: "stopped",
|
|
1622
1622
|
flowState: null,
|
|
1623
|
-
taskTracker: null
|
|
1623
|
+
taskTracker: null,
|
|
1624
|
+
canUndo: false,
|
|
1625
|
+
undoInfo: null
|
|
1624
1626
|
};
|
|
1625
1627
|
const [runtimeState, setRuntimeState] = createSignal(
|
|
1626
1628
|
DEFAULT_RUNTIME_STATE
|
|
@@ -1657,6 +1659,8 @@ function useRuntime() {
|
|
|
1657
1659
|
resolveApproval: (approvalId, approved) => window.vessel.ai.resolveApproval(approvalId, approved),
|
|
1658
1660
|
createCheckpoint: (name, note) => window.vessel.ai.createCheckpoint(name, note),
|
|
1659
1661
|
restoreCheckpoint: (checkpointId) => window.vessel.ai.restoreCheckpoint(checkpointId),
|
|
1662
|
+
updateCheckpointNote: (checkpointId, note) => window.vessel.ai.updateCheckpointNote(checkpointId, note),
|
|
1663
|
+
undoLastAction: () => window.vessel.ai.undoLastAction(),
|
|
1660
1664
|
captureSession: (note) => window.vessel.ai.captureSession(note),
|
|
1661
1665
|
restoreSession: () => window.vessel.ai.restoreSession()
|
|
1662
1666
|
};
|
|
@@ -1769,7 +1773,7 @@ function getAgentPresence(state, currentTime = Date.now()) {
|
|
|
1769
1773
|
}
|
|
1770
1774
|
return "idle";
|
|
1771
1775
|
}
|
|
1772
|
-
var _tmpl$$
|
|
1776
|
+
var _tmpl$$h = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$f = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$c = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list><button class=tab-new data-tooltip="New Tab">+`), _tmpl$4$c = /* @__PURE__ */ template(`<div role=tab><span class=tab-title></span><button class=tab-close>×`), _tmpl$5$b = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$6$a = /* @__PURE__ */ template(`<span class=tab-loading>`);
|
|
1773
1777
|
const TAB_CLOSE_MS = 200;
|
|
1774
1778
|
function stringToHue(str) {
|
|
1775
1779
|
let hash = 0;
|
|
@@ -1796,14 +1800,14 @@ const TabFavicon = (props) => {
|
|
|
1796
1800
|
},
|
|
1797
1801
|
get fallback() {
|
|
1798
1802
|
return (() => {
|
|
1799
|
-
var _el$2 = _tmpl$2$
|
|
1803
|
+
var _el$2 = _tmpl$2$f();
|
|
1800
1804
|
insert(_el$2, letter);
|
|
1801
1805
|
createRenderEffect((_$p) => setStyleProperty(_el$2, "--favicon-hue", `${hue()}`));
|
|
1802
1806
|
return _el$2;
|
|
1803
1807
|
})();
|
|
1804
1808
|
},
|
|
1805
1809
|
get children() {
|
|
1806
|
-
var _el$ = _tmpl$$
|
|
1810
|
+
var _el$ = _tmpl$$h();
|
|
1807
1811
|
_el$.addEventListener("error", () => setFailed(true));
|
|
1808
1812
|
createRenderEffect(() => setAttribute(_el$, "src", props.favicon));
|
|
1809
1813
|
return _el$;
|
|
@@ -1836,13 +1840,13 @@ const TabBar = () => {
|
|
|
1836
1840
|
}, TAB_CLOSE_MS);
|
|
1837
1841
|
};
|
|
1838
1842
|
return (() => {
|
|
1839
|
-
var _el$3 = _tmpl$3$
|
|
1843
|
+
var _el$3 = _tmpl$3$c(), _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild;
|
|
1840
1844
|
insert(_el$4, createComponent(For, {
|
|
1841
1845
|
get each() {
|
|
1842
1846
|
return tabs2();
|
|
1843
1847
|
},
|
|
1844
1848
|
children: (tab) => (() => {
|
|
1845
|
-
var _el$6 = _tmpl$4$
|
|
1849
|
+
var _el$6 = _tmpl$4$c(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
|
|
1846
1850
|
_el$6.addEventListener("auxclick", (e) => {
|
|
1847
1851
|
if (e.button === 1) handleClose(tab.id);
|
|
1848
1852
|
});
|
|
@@ -1860,12 +1864,12 @@ const TabBar = () => {
|
|
|
1860
1864
|
}), _el$7);
|
|
1861
1865
|
insert(_el$6, (() => {
|
|
1862
1866
|
var _c$ = memo(() => !!modelActiveTabIds().has(tab.id));
|
|
1863
|
-
return () => _c$() && _tmpl$5$
|
|
1867
|
+
return () => _c$() && _tmpl$5$b();
|
|
1864
1868
|
})(), _el$7);
|
|
1865
1869
|
insert(_el$7, () => tab.title || "New Tab");
|
|
1866
1870
|
insert(_el$6, (() => {
|
|
1867
1871
|
var _c$2 = memo(() => !!tab.isLoading);
|
|
1868
|
-
return () => _c$2() && _tmpl$6$
|
|
1872
|
+
return () => _c$2() && _tmpl$6$a();
|
|
1869
1873
|
})(), _el$8);
|
|
1870
1874
|
_el$8.$$click = (e) => {
|
|
1871
1875
|
e.stopPropagation();
|
|
@@ -2074,7 +2078,7 @@ function buildPageSnapshotKey(rawUrl) {
|
|
|
2074
2078
|
function matchesPageSnapshotUrl(left, right) {
|
|
2075
2079
|
return buildPageSnapshotKey(left) === buildPageSnapshotKey(right);
|
|
2076
2080
|
}
|
|
2077
|
-
var _tmpl$$
|
|
2081
|
+
var _tmpl$$g = /* @__PURE__ */ template(`<button class="agent-status-badge recent"title="Open the What Changed timeline"style=cursor:pointer;font-size:11px><span class=agent-status-dot aria-hidden=true style=background:#f59e0b></span><span class=agent-status-text>What Changed?`), _tmpl$2$e = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$3$b = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Changed recently`), _tmpl$4$b = /* @__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><div style=display:flex;gap:8px;align-items:center><button class=nav-btn title="Open the full What Changed timeline"style="height:24px;min-width:auto;padding:0 8px">Timeline</button><button class=page-diff-popup-close>×`), _tmpl$5$a = /* @__PURE__ */ template(`<svg><path d="M3 3 L11 3 L11 9 Q7 13 3 9 Z"fill=none stroke=currentColor stroke-width=1.2 stroke-linejoin=round></svg>`, false, true, false), _tmpl$6$9 = /* @__PURE__ */ template(`<svg><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.4 stroke-linecap=round></svg>`, false, true, false), _tmpl$7$7 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$8$5 = /* @__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><svg width=14 height=14 viewBox="0 0 14 14"></svg></button><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$9$4 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$0$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$1$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$10$4 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$11$4 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$12$4 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$13$3 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><span class=page-diff-section></span><span class=page-diff-summary>`), _tmpl$14$3 = /* @__PURE__ */ template(`<li>`);
|
|
2078
2082
|
const AddressBar = () => {
|
|
2079
2083
|
const {
|
|
2080
2084
|
activeTab,
|
|
@@ -2112,6 +2116,14 @@ const AddressBar = () => {
|
|
|
2112
2116
|
diffCollapseTimer = null;
|
|
2113
2117
|
}, 8e3);
|
|
2114
2118
|
};
|
|
2119
|
+
const openDiffTimeline = async () => {
|
|
2120
|
+
setDiffExpanded(false);
|
|
2121
|
+
if (diffCollapseTimer) {
|
|
2122
|
+
clearTimeout(diffCollapseTimer);
|
|
2123
|
+
diffCollapseTimer = null;
|
|
2124
|
+
}
|
|
2125
|
+
await window.vessel.ui.openSidebarTab("diff");
|
|
2126
|
+
};
|
|
2115
2127
|
const formatRelativeTime = (isoDate) => {
|
|
2116
2128
|
const diff = Date.now() - new Date(isoDate).getTime();
|
|
2117
2129
|
const mins = Math.floor(diff / 6e4);
|
|
@@ -2188,9 +2200,9 @@ const AddressBar = () => {
|
|
|
2188
2200
|
};
|
|
2189
2201
|
const formatSectionLabel = (section) => section === "title" ? "Title" : section === "headings" ? "Headings" : "Content";
|
|
2190
2202
|
return (() => {
|
|
2191
|
-
var _el$ = _tmpl$8$
|
|
2192
|
-
_el$
|
|
2193
|
-
var _el$
|
|
2203
|
+
var _el$ = _tmpl$8$5(), _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$26 = _el$6.nextSibling, _el$27 = _el$26.firstChild, _el$28 = _el$27.firstChild, _el$32 = _el$27.nextSibling, _el$33 = _el$32.nextSibling, _el$34 = _el$33.nextSibling;
|
|
2204
|
+
_el$34.firstChild;
|
|
2205
|
+
var _el$37 = _el$34.nextSibling;
|
|
2194
2206
|
addEventListener(_el$3, "click", goBack, true);
|
|
2195
2207
|
addEventListener(_el$4, "click", goForward, true);
|
|
2196
2208
|
addEventListener(_el$5, "click", reload, true);
|
|
@@ -2206,8 +2218,8 @@ const AddressBar = () => {
|
|
|
2206
2218
|
return pageDiff();
|
|
2207
2219
|
},
|
|
2208
2220
|
get children() {
|
|
2209
|
-
var _el$10 = _tmpl$$
|
|
2210
|
-
_el$10.$$click = () =>
|
|
2221
|
+
var _el$10 = _tmpl$$g();
|
|
2222
|
+
_el$10.$$click = () => void openDiffTimeline();
|
|
2211
2223
|
return _el$10;
|
|
2212
2224
|
}
|
|
2213
2225
|
}), null);
|
|
@@ -2216,42 +2228,43 @@ const AddressBar = () => {
|
|
|
2216
2228
|
return memo(() => !!pageDiff())() && diffExpanded();
|
|
2217
2229
|
},
|
|
2218
2230
|
get children() {
|
|
2219
|
-
var _el$11 = _tmpl$4$
|
|
2231
|
+
var _el$11 = _tmpl$4$b(), _el$12 = _el$11.firstChild, _el$13 = _el$12.firstChild, _el$14 = _el$13.firstChild;
|
|
2220
2232
|
_el$14.firstChild;
|
|
2221
|
-
var _el$21 = _el$13.nextSibling;
|
|
2233
|
+
var _el$21 = _el$13.nextSibling, _el$22 = _el$21.firstChild, _el$23 = _el$22.nextSibling;
|
|
2222
2234
|
insert(_el$14, () => formatRelativeTime(pageDiff().oldSnapshot.capturedAt), null);
|
|
2223
2235
|
insert(_el$13, createComponent(Show, {
|
|
2224
2236
|
get when() {
|
|
2225
2237
|
return memo(() => !!((pageDiff().burstCount || 0) > 1 && pageDiff().firstDetectedAt))() && pageDiff().lastDetectedAt;
|
|
2226
2238
|
},
|
|
2227
2239
|
get children() {
|
|
2228
|
-
var _el$16 = _tmpl$2$
|
|
2240
|
+
var _el$16 = _tmpl$2$e(), _el$17 = _el$16.firstChild, _el$20 = _el$17.nextSibling;
|
|
2229
2241
|
_el$20.nextSibling;
|
|
2230
2242
|
insert(_el$16, () => pageDiff().burstCount, _el$20);
|
|
2231
2243
|
insert(_el$16, () => formatElapsed(pageDiff().firstDetectedAt, pageDiff().lastDetectedAt), null);
|
|
2232
2244
|
return _el$16;
|
|
2233
2245
|
}
|
|
2234
2246
|
}), null);
|
|
2235
|
-
_el$
|
|
2247
|
+
_el$22.$$click = () => void openDiffTimeline();
|
|
2248
|
+
_el$23.$$click = () => setDiffExpanded(false);
|
|
2236
2249
|
insert(_el$11, createComponent(Show, {
|
|
2237
2250
|
get when() {
|
|
2238
2251
|
return memo(() => !!pageDiff().recentBursts?.length)() && (pageDiff().recentBursts?.length || 0) > 1;
|
|
2239
2252
|
},
|
|
2240
2253
|
get children() {
|
|
2241
|
-
var _el$
|
|
2242
|
-
_el$
|
|
2243
|
-
insert(_el$
|
|
2254
|
+
var _el$24 = _tmpl$3$b();
|
|
2255
|
+
_el$24.firstChild;
|
|
2256
|
+
insert(_el$24, createComponent(For, {
|
|
2244
2257
|
get each() {
|
|
2245
2258
|
return pageDiff().recentBursts;
|
|
2246
2259
|
},
|
|
2247
2260
|
children: (burst) => (() => {
|
|
2248
|
-
var _el$
|
|
2249
|
-
insert(_el$
|
|
2250
|
-
insert(_el$
|
|
2251
|
-
return _el$
|
|
2261
|
+
var _el$38 = _tmpl$9$4(), _el$39 = _el$38.firstChild, _el$40 = _el$39.nextSibling;
|
|
2262
|
+
insert(_el$39, () => formatRelativeTime(burst.detectedAt));
|
|
2263
|
+
insert(_el$40, () => burst.summary);
|
|
2264
|
+
return _el$38;
|
|
2252
2265
|
})()
|
|
2253
2266
|
}), null);
|
|
2254
|
-
return _el$
|
|
2267
|
+
return _el$24;
|
|
2255
2268
|
}
|
|
2256
2269
|
}), null);
|
|
2257
2270
|
insert(_el$11, createComponent(For, {
|
|
@@ -2259,132 +2272,132 @@ const AddressBar = () => {
|
|
|
2259
2272
|
return pageDiff().changes;
|
|
2260
2273
|
},
|
|
2261
2274
|
children: (change) => (() => {
|
|
2262
|
-
var _el$
|
|
2263
|
-
insert(_el$
|
|
2264
|
-
insert(_el$
|
|
2265
|
-
insert(_el$
|
|
2275
|
+
var _el$41 = _tmpl$13$3(), _el$42 = _el$41.firstChild, _el$43 = _el$42.firstChild, _el$44 = _el$43.nextSibling;
|
|
2276
|
+
insert(_el$43, () => formatSectionLabel(change.section));
|
|
2277
|
+
insert(_el$44, () => change.summary);
|
|
2278
|
+
insert(_el$41, createComponent(Show, {
|
|
2266
2279
|
get when() {
|
|
2267
2280
|
return change.before || change.after;
|
|
2268
2281
|
},
|
|
2269
2282
|
get children() {
|
|
2270
|
-
var _el$
|
|
2271
|
-
insert(_el$
|
|
2283
|
+
var _el$45 = _tmpl$10$4();
|
|
2284
|
+
insert(_el$45, createComponent(Show, {
|
|
2272
2285
|
get when() {
|
|
2273
2286
|
return change.before;
|
|
2274
2287
|
},
|
|
2275
2288
|
get children() {
|
|
2276
|
-
var _el$
|
|
2277
|
-
insert(_el$
|
|
2278
|
-
return _el$
|
|
2289
|
+
var _el$46 = _tmpl$0$4(), _el$47 = _el$46.firstChild, _el$48 = _el$47.nextSibling;
|
|
2290
|
+
insert(_el$48, () => change.before);
|
|
2291
|
+
return _el$46;
|
|
2279
2292
|
}
|
|
2280
2293
|
}), null);
|
|
2281
|
-
insert(_el$
|
|
2294
|
+
insert(_el$45, createComponent(Show, {
|
|
2282
2295
|
get when() {
|
|
2283
2296
|
return change.after;
|
|
2284
2297
|
},
|
|
2285
2298
|
get children() {
|
|
2286
|
-
var _el$
|
|
2287
|
-
insert(_el$
|
|
2288
|
-
return _el$
|
|
2299
|
+
var _el$49 = _tmpl$1$4(), _el$50 = _el$49.firstChild, _el$51 = _el$50.nextSibling;
|
|
2300
|
+
insert(_el$51, () => change.after);
|
|
2301
|
+
return _el$49;
|
|
2289
2302
|
}
|
|
2290
2303
|
}), null);
|
|
2291
|
-
return _el$
|
|
2304
|
+
return _el$45;
|
|
2292
2305
|
}
|
|
2293
2306
|
}), null);
|
|
2294
|
-
insert(_el$
|
|
2307
|
+
insert(_el$41, createComponent(Show, {
|
|
2295
2308
|
get when() {
|
|
2296
2309
|
return change.addedItems?.length;
|
|
2297
2310
|
},
|
|
2298
2311
|
get children() {
|
|
2299
|
-
var _el$
|
|
2300
|
-
insert(_el$
|
|
2312
|
+
var _el$52 = _tmpl$11$4(), _el$53 = _el$52.firstChild, _el$54 = _el$53.nextSibling;
|
|
2313
|
+
insert(_el$54, createComponent(For, {
|
|
2301
2314
|
get each() {
|
|
2302
2315
|
return change.addedItems;
|
|
2303
2316
|
},
|
|
2304
2317
|
children: (item) => (() => {
|
|
2305
|
-
var _el$
|
|
2306
|
-
insert(_el$
|
|
2307
|
-
return _el$
|
|
2318
|
+
var _el$58 = _tmpl$14$3();
|
|
2319
|
+
insert(_el$58, item);
|
|
2320
|
+
return _el$58;
|
|
2308
2321
|
})()
|
|
2309
2322
|
}));
|
|
2310
|
-
return _el$
|
|
2323
|
+
return _el$52;
|
|
2311
2324
|
}
|
|
2312
2325
|
}), null);
|
|
2313
|
-
insert(_el$
|
|
2326
|
+
insert(_el$41, createComponent(Show, {
|
|
2314
2327
|
get when() {
|
|
2315
2328
|
return change.removedItems?.length;
|
|
2316
2329
|
},
|
|
2317
2330
|
get children() {
|
|
2318
|
-
var _el$
|
|
2319
|
-
insert(_el$
|
|
2331
|
+
var _el$55 = _tmpl$12$4(), _el$56 = _el$55.firstChild, _el$57 = _el$56.nextSibling;
|
|
2332
|
+
insert(_el$57, createComponent(For, {
|
|
2320
2333
|
get each() {
|
|
2321
2334
|
return change.removedItems;
|
|
2322
2335
|
},
|
|
2323
2336
|
children: (item) => (() => {
|
|
2324
|
-
var _el$
|
|
2325
|
-
insert(_el$
|
|
2326
|
-
return _el$
|
|
2337
|
+
var _el$59 = _tmpl$14$3();
|
|
2338
|
+
insert(_el$59, item);
|
|
2339
|
+
return _el$59;
|
|
2327
2340
|
})()
|
|
2328
2341
|
}));
|
|
2329
|
-
return _el$
|
|
2342
|
+
return _el$55;
|
|
2330
2343
|
}
|
|
2331
2344
|
}), null);
|
|
2332
|
-
createRenderEffect(() => className(_el$
|
|
2333
|
-
return _el$
|
|
2345
|
+
createRenderEffect(() => className(_el$41, `page-diff-item page-diff-${change.kind}`));
|
|
2346
|
+
return _el$41;
|
|
2334
2347
|
})()
|
|
2335
2348
|
}), null);
|
|
2336
2349
|
return _el$11;
|
|
2337
2350
|
}
|
|
2338
|
-
}), _el$
|
|
2339
|
-
_el$
|
|
2351
|
+
}), _el$26);
|
|
2352
|
+
_el$27.$$click = async () => {
|
|
2340
2353
|
const id = activeTabId2();
|
|
2341
2354
|
if (!id) return;
|
|
2342
2355
|
await toggleAdBlock(id);
|
|
2343
2356
|
};
|
|
2344
|
-
insert(_el$
|
|
2357
|
+
insert(_el$28, createComponent(Show, {
|
|
2345
2358
|
get when() {
|
|
2346
2359
|
return activeTab()?.adBlockingEnabled;
|
|
2347
2360
|
},
|
|
2348
2361
|
get children() {
|
|
2349
|
-
return _tmpl$5$
|
|
2362
|
+
return _tmpl$5$a();
|
|
2350
2363
|
}
|
|
2351
2364
|
}), null);
|
|
2352
|
-
insert(_el$
|
|
2365
|
+
insert(_el$28, createComponent(Show, {
|
|
2353
2366
|
get when() {
|
|
2354
2367
|
return !activeTab()?.adBlockingEnabled;
|
|
2355
2368
|
},
|
|
2356
2369
|
get children() {
|
|
2357
|
-
return [_tmpl$5$
|
|
2370
|
+
return [_tmpl$5$a(), _tmpl$6$9()];
|
|
2358
2371
|
}
|
|
2359
2372
|
}), null);
|
|
2360
|
-
_el$
|
|
2361
|
-
addEventListener(_el$
|
|
2362
|
-
addEventListener(_el$
|
|
2363
|
-
insert(_el$
|
|
2373
|
+
_el$32.$$click = () => window.vessel.content.toggleReader();
|
|
2374
|
+
addEventListener(_el$33, "click", toggleDevTools, true);
|
|
2375
|
+
addEventListener(_el$34, "click", toggleSidebar, true);
|
|
2376
|
+
insert(_el$34, createComponent(Show, {
|
|
2364
2377
|
get when() {
|
|
2365
2378
|
return pendingApprovalCount() > 0;
|
|
2366
2379
|
},
|
|
2367
2380
|
get children() {
|
|
2368
|
-
var _el$
|
|
2369
|
-
insert(_el$
|
|
2370
|
-
createRenderEffect(() => setAttribute(_el$
|
|
2371
|
-
return _el$
|
|
2381
|
+
var _el$36 = _tmpl$7$7();
|
|
2382
|
+
insert(_el$36, pendingApprovalCount);
|
|
2383
|
+
createRenderEffect(() => setAttribute(_el$36, "aria-label", `${pendingApprovalCount()} pending`));
|
|
2384
|
+
return _el$36;
|
|
2372
2385
|
}
|
|
2373
2386
|
}), null);
|
|
2374
|
-
addEventListener(_el$
|
|
2387
|
+
addEventListener(_el$37, "click", openSettings, true);
|
|
2375
2388
|
createRenderEffect((_p$) => {
|
|
2376
2389
|
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()?.adBlockingEnabled, _v$6 = !activeTab()?.adBlockingEnabled, _v$7 = activeTab()?.adBlockingEnabled ? "Ad Block: On (click to disable)" : "Ad Block: Off (click to enable)", _v$8 = !!activeTab()?.isReaderMode, _v$9 = !!devtoolsPanelOpen2(), _v$0 = !!(pendingApprovalCount() > 0), _v$1 = pendingApprovalCount() > 0 ? `AI Sidebar — ${pendingApprovalCount()} pending approval${pendingApprovalCount() > 1 ? "s" : ""}` : "AI Sidebar (Ctrl+Shift+L)";
|
|
2377
2390
|
_v$ !== _p$.e && (_el$3.disabled = _p$.e = _v$);
|
|
2378
2391
|
_v$2 !== _p$.t && (_el$4.disabled = _p$.t = _v$2);
|
|
2379
2392
|
_v$3 !== _p$.a && className(_el$9, _p$.a = _v$3);
|
|
2380
2393
|
_v$4 !== _p$.o && setAttribute(_el$9, "title", _p$.o = _v$4);
|
|
2381
|
-
_v$5 !== _p$.i && _el$
|
|
2382
|
-
_v$6 !== _p$.n && _el$
|
|
2383
|
-
_v$7 !== _p$.s && setAttribute(_el$
|
|
2384
|
-
_v$8 !== _p$.h && _el$
|
|
2385
|
-
_v$9 !== _p$.r && _el$
|
|
2386
|
-
_v$0 !== _p$.d && _el$
|
|
2387
|
-
_v$1 !== _p$.l && setAttribute(_el$
|
|
2394
|
+
_v$5 !== _p$.i && _el$27.classList.toggle("active", _p$.i = _v$5);
|
|
2395
|
+
_v$6 !== _p$.n && _el$27.classList.toggle("nav-btn-muted", _p$.n = _v$6);
|
|
2396
|
+
_v$7 !== _p$.s && setAttribute(_el$27, "title", _p$.s = _v$7);
|
|
2397
|
+
_v$8 !== _p$.h && _el$32.classList.toggle("active", _p$.h = _v$8);
|
|
2398
|
+
_v$9 !== _p$.r && _el$33.classList.toggle("active", _p$.r = _v$9);
|
|
2399
|
+
_v$0 !== _p$.d && _el$34.classList.toggle("has-approvals", _p$.d = _v$0);
|
|
2400
|
+
_v$1 !== _p$.l && setAttribute(_el$34, "title", _p$.l = _v$1);
|
|
2388
2401
|
return _p$;
|
|
2389
2402
|
}, {
|
|
2390
2403
|
e: void 0,
|
|
@@ -2404,7 +2417,7 @@ const AddressBar = () => {
|
|
|
2404
2417
|
})();
|
|
2405
2418
|
};
|
|
2406
2419
|
delegateEvents(["click", "input"]);
|
|
2407
|
-
var _tmpl$$
|
|
2420
|
+
var _tmpl$$f = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite aria-atomic=true>`), _tmpl$2$d = /* @__PURE__ */ template(`<div class=bookmark-toast role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
|
|
2408
2421
|
const TOAST_DURATION_MS$1 = 4200;
|
|
2409
2422
|
const TOAST_EXIT_MS$2 = 300;
|
|
2410
2423
|
function isBookmarkToastCandidate(action) {
|
|
@@ -2464,13 +2477,13 @@ const BookmarkNotifications = () => {
|
|
|
2464
2477
|
timeoutIds.clear();
|
|
2465
2478
|
});
|
|
2466
2479
|
return (() => {
|
|
2467
|
-
var _el$ = _tmpl$$
|
|
2480
|
+
var _el$ = _tmpl$$f();
|
|
2468
2481
|
insert(_el$, createComponent(For, {
|
|
2469
2482
|
get each() {
|
|
2470
2483
|
return toasts();
|
|
2471
2484
|
},
|
|
2472
2485
|
children: (toast) => (() => {
|
|
2473
|
-
var _el$2 = _tmpl$2$
|
|
2486
|
+
var _el$2 = _tmpl$2$d(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
|
|
2474
2487
|
insert(_el$3, () => toast.title);
|
|
2475
2488
|
insert(_el$4, () => toast.message);
|
|
2476
2489
|
createRenderEffect(() => _el$2.classList.toggle("bookmark-toast-leaving", !!toast.leaving));
|
|
@@ -2480,7 +2493,7 @@ const BookmarkNotifications = () => {
|
|
|
2480
2493
|
return _el$;
|
|
2481
2494
|
})();
|
|
2482
2495
|
};
|
|
2483
|
-
var _tmpl$$
|
|
2496
|
+
var _tmpl$$e = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite><div class="bookmark-toast highlight-toast"role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
|
|
2484
2497
|
const TOAST_DURATION_MS = 3e3;
|
|
2485
2498
|
const TOAST_EXIT_MS$1 = 300;
|
|
2486
2499
|
const HighlightNotifications = (props) => {
|
|
@@ -2519,7 +2532,7 @@ const HighlightNotifications = (props) => {
|
|
|
2519
2532
|
return memo(() => !!visible())() && current();
|
|
2520
2533
|
},
|
|
2521
2534
|
get children() {
|
|
2522
|
-
var _el$ = _tmpl$$
|
|
2535
|
+
var _el$ = _tmpl$$e(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
|
|
2523
2536
|
insert(_el$3, () => current().title);
|
|
2524
2537
|
insert(_el$4, () => current().message);
|
|
2525
2538
|
createRenderEffect(() => _el$2.classList.toggle("bookmark-toast-leaving", !!leaving()));
|
|
@@ -2527,7 +2540,7 @@ const HighlightNotifications = (props) => {
|
|
|
2527
2540
|
}
|
|
2528
2541
|
});
|
|
2529
2542
|
};
|
|
2530
|
-
var _tmpl$$
|
|
2543
|
+
var _tmpl$$d = /* @__PURE__ */ template(`<div class=download-toast-stack aria-live=polite>`), _tmpl$2$c = /* @__PURE__ */ template(`<span class=download-toast-done>✓`), _tmpl$3$a = /* @__PURE__ */ template(`<span class=download-toast-failed>!`), _tmpl$4$a = /* @__PURE__ */ template(`<div class=download-toast-bar-track><div class=download-toast-bar-fill>`), _tmpl$5$9 = /* @__PURE__ */ template(`<div class=download-toast-size>`), _tmpl$6$8 = /* @__PURE__ */ template(`<div class="download-toast-size download-toast-size-done"> downloaded`), _tmpl$7$6 = /* @__PURE__ */ template(`<div class=download-toast role=status><div class=download-toast-header><span class=download-toast-filename>`);
|
|
2531
2544
|
const TOAST_DONE_DURATION_MS = 4200;
|
|
2532
2545
|
const TOAST_EXIT_MS = 300;
|
|
2533
2546
|
function formatBytes(bytes) {
|
|
@@ -2618,20 +2631,20 @@ const DownloadToast = () => {
|
|
|
2618
2631
|
return Math.min(100, Math.round(d.receivedBytes / d.totalBytes * 100));
|
|
2619
2632
|
};
|
|
2620
2633
|
return (() => {
|
|
2621
|
-
var _el$ = _tmpl$$
|
|
2634
|
+
var _el$ = _tmpl$$d();
|
|
2622
2635
|
insert(_el$, createComponent(For, {
|
|
2623
2636
|
get each() {
|
|
2624
2637
|
return downloads();
|
|
2625
2638
|
},
|
|
2626
2639
|
children: (dl) => (() => {
|
|
2627
|
-
var _el$2 = _tmpl$7$
|
|
2640
|
+
var _el$2 = _tmpl$7$6(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
|
|
2628
2641
|
insert(_el$4, () => dl.filename);
|
|
2629
2642
|
insert(_el$3, createComponent(Show, {
|
|
2630
2643
|
get when() {
|
|
2631
2644
|
return dl.state === "completed";
|
|
2632
2645
|
},
|
|
2633
2646
|
get children() {
|
|
2634
|
-
return _tmpl$2$
|
|
2647
|
+
return _tmpl$2$c();
|
|
2635
2648
|
}
|
|
2636
2649
|
}), null);
|
|
2637
2650
|
insert(_el$3, createComponent(Show, {
|
|
@@ -2639,7 +2652,7 @@ const DownloadToast = () => {
|
|
|
2639
2652
|
return dl.state === "cancelled" || dl.state === "interrupted";
|
|
2640
2653
|
},
|
|
2641
2654
|
get children() {
|
|
2642
|
-
return _tmpl$3$
|
|
2655
|
+
return _tmpl$3$a();
|
|
2643
2656
|
}
|
|
2644
2657
|
}), null);
|
|
2645
2658
|
insert(_el$2, createComponent(Show, {
|
|
@@ -2648,11 +2661,11 @@ const DownloadToast = () => {
|
|
|
2648
2661
|
},
|
|
2649
2662
|
get children() {
|
|
2650
2663
|
return [(() => {
|
|
2651
|
-
var _el$7 = _tmpl$4$
|
|
2664
|
+
var _el$7 = _tmpl$4$a(), _el$8 = _el$7.firstChild;
|
|
2652
2665
|
createRenderEffect((_$p) => setStyleProperty(_el$8, "width", `${progressPercent(dl)}%`));
|
|
2653
2666
|
return _el$7;
|
|
2654
2667
|
})(), (() => {
|
|
2655
|
-
var _el$9 = _tmpl$5$
|
|
2668
|
+
var _el$9 = _tmpl$5$9();
|
|
2656
2669
|
insert(_el$9, () => formatBytes(dl.receivedBytes), null);
|
|
2657
2670
|
insert(_el$9, createComponent(Show, {
|
|
2658
2671
|
get when() {
|
|
@@ -2671,7 +2684,7 @@ const DownloadToast = () => {
|
|
|
2671
2684
|
return dl.state === "completed";
|
|
2672
2685
|
},
|
|
2673
2686
|
get children() {
|
|
2674
|
-
var _el$0 = _tmpl$6$
|
|
2687
|
+
var _el$0 = _tmpl$6$8(), _el$1 = _el$0.firstChild;
|
|
2675
2688
|
insert(_el$0, () => formatBytes(dl.receivedBytes), _el$1);
|
|
2676
2689
|
return _el$0;
|
|
2677
2690
|
}
|
|
@@ -2683,7 +2696,7 @@ const DownloadToast = () => {
|
|
|
2683
2696
|
return _el$;
|
|
2684
2697
|
})();
|
|
2685
2698
|
};
|
|
2686
|
-
var _tmpl$$
|
|
2699
|
+
var _tmpl$$c = /* @__PURE__ */ template(`<div class=find-bar><input class=find-bar-input type=text placeholder="Find in page..."><button class=find-bar-btn title="Previous (Shift+Enter)">▲</button><button class=find-bar-btn title="Next (Enter)">▼</button><button class="find-bar-btn find-bar-close"title="Close (Escape)">×`), _tmpl$2$b = /* @__PURE__ */ template(`<span class=find-bar-count>`);
|
|
2687
2700
|
const FindBar = () => {
|
|
2688
2701
|
const [open, setOpen] = createSignal(false);
|
|
2689
2702
|
const [query, setQuery] = createSignal("");
|
|
@@ -2761,7 +2774,7 @@ const FindBar = () => {
|
|
|
2761
2774
|
return open();
|
|
2762
2775
|
},
|
|
2763
2776
|
get children() {
|
|
2764
|
-
var _el$ = _tmpl$$
|
|
2777
|
+
var _el$ = _tmpl$$c(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling;
|
|
2765
2778
|
_el$2.$$input = (e) => handleInput(e.currentTarget.value);
|
|
2766
2779
|
var _ref$ = inputRef;
|
|
2767
2780
|
typeof _ref$ === "function" ? use(_ref$, _el$2) : inputRef = _el$2;
|
|
@@ -2771,7 +2784,7 @@ const FindBar = () => {
|
|
|
2771
2784
|
return result();
|
|
2772
2785
|
},
|
|
2773
2786
|
children: (r) => (() => {
|
|
2774
|
-
var _el$6 = _tmpl$2$
|
|
2787
|
+
var _el$6 = _tmpl$2$b();
|
|
2775
2788
|
insert(_el$6, (() => {
|
|
2776
2789
|
var _c$ = memo(() => r().matches > 0);
|
|
2777
2790
|
return () => _c$() ? `${r().activeMatchOrdinal} / ${r().matches}` : "No results";
|
|
@@ -2788,7 +2801,7 @@ const FindBar = () => {
|
|
|
2788
2801
|
});
|
|
2789
2802
|
};
|
|
2790
2803
|
delegateEvents(["input", "click"]);
|
|
2791
|
-
var _tmpl$$
|
|
2804
|
+
var _tmpl$$b = /* @__PURE__ */ template(`<div class=flow-progress>`), _tmpl$2$a = /* @__PURE__ */ template(`<div class=flow-progress-hint>Last: `), _tmpl$3$9 = /* @__PURE__ */ template(`<div class=flow-progress-hint>Next: `), _tmpl$4$9 = /* @__PURE__ */ template(`<div class=flow-progress-section><div class=flow-progress-header><span class=flow-progress-goal></span><span class=flow-progress-pct>%</span></div><div class=flow-progress-bar-track><div class=flow-progress-bar-fill></div></div><div class=flow-steps>`), _tmpl$5$8 = /* @__PURE__ */ template(`<div><span class=flow-step-dot></span><span class=flow-step-label>`);
|
|
2792
2805
|
const FlowProgress = () => {
|
|
2793
2806
|
const {
|
|
2794
2807
|
runtimeState: runtimeState2
|
|
@@ -2819,13 +2832,13 @@ const FlowProgress = () => {
|
|
|
2819
2832
|
return flow() || tracker();
|
|
2820
2833
|
},
|
|
2821
2834
|
get children() {
|
|
2822
|
-
var _el$ = _tmpl$$
|
|
2835
|
+
var _el$ = _tmpl$$b();
|
|
2823
2836
|
insert(_el$, createComponent(Show, {
|
|
2824
2837
|
get when() {
|
|
2825
2838
|
return tracker();
|
|
2826
2839
|
},
|
|
2827
2840
|
children: (t) => (() => {
|
|
2828
|
-
var _el$2 = _tmpl$4$
|
|
2841
|
+
var _el$2 = _tmpl$4$9(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$3.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$7.nextSibling;
|
|
2829
2842
|
insert(_el$4, () => t().goal);
|
|
2830
2843
|
insert(_el$5, () => progressPercent(t().steps), _el$6);
|
|
2831
2844
|
insert(_el$9, createComponent(For, {
|
|
@@ -2833,7 +2846,7 @@ const FlowProgress = () => {
|
|
|
2833
2846
|
return t().steps;
|
|
2834
2847
|
},
|
|
2835
2848
|
children: (step) => (() => {
|
|
2836
|
-
var _el$12 = _tmpl$5$
|
|
2849
|
+
var _el$12 = _tmpl$5$8(), _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling;
|
|
2837
2850
|
insert(_el$14, () => step.label);
|
|
2838
2851
|
createRenderEffect(() => className(_el$12, `flow-step ${stepStatusClass(step.status)}`));
|
|
2839
2852
|
return _el$12;
|
|
@@ -2844,7 +2857,7 @@ const FlowProgress = () => {
|
|
|
2844
2857
|
return t().lastAction;
|
|
2845
2858
|
},
|
|
2846
2859
|
get children() {
|
|
2847
|
-
var _el$0 = _tmpl$2$
|
|
2860
|
+
var _el$0 = _tmpl$2$a();
|
|
2848
2861
|
_el$0.firstChild;
|
|
2849
2862
|
insert(_el$0, () => t().lastAction, null);
|
|
2850
2863
|
return _el$0;
|
|
@@ -2855,7 +2868,7 @@ const FlowProgress = () => {
|
|
|
2855
2868
|
return memo(() => !!t().nextHint)() && !t().steps.every((s) => s.status === "done");
|
|
2856
2869
|
},
|
|
2857
2870
|
get children() {
|
|
2858
|
-
var _el$10 = _tmpl$3$
|
|
2871
|
+
var _el$10 = _tmpl$3$9();
|
|
2859
2872
|
_el$10.firstChild;
|
|
2860
2873
|
insert(_el$10, () => t().nextHint, null);
|
|
2861
2874
|
return _el$10;
|
|
@@ -2870,7 +2883,7 @@ const FlowProgress = () => {
|
|
|
2870
2883
|
return memo(() => !!flow())() && !tracker();
|
|
2871
2884
|
},
|
|
2872
2885
|
children: (f) => (() => {
|
|
2873
|
-
var _el$15 = _tmpl$4$
|
|
2886
|
+
var _el$15 = _tmpl$4$9(), _el$16 = _el$15.firstChild, _el$17 = _el$16.firstChild, _el$18 = _el$17.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$16.nextSibling, _el$21 = _el$20.firstChild, _el$22 = _el$20.nextSibling;
|
|
2874
2887
|
insert(_el$17, () => f().goal);
|
|
2875
2888
|
insert(_el$18, () => progressPercent(f().steps), _el$19);
|
|
2876
2889
|
insert(_el$22, createComponent(For, {
|
|
@@ -2878,7 +2891,7 @@ const FlowProgress = () => {
|
|
|
2878
2891
|
return f().steps;
|
|
2879
2892
|
},
|
|
2880
2893
|
children: (step) => (() => {
|
|
2881
|
-
var _el$23 = _tmpl$5$
|
|
2894
|
+
var _el$23 = _tmpl$5$8(), _el$24 = _el$23.firstChild, _el$25 = _el$24.nextSibling;
|
|
2882
2895
|
insert(_el$25, () => step.label);
|
|
2883
2896
|
createRenderEffect(() => className(_el$23, `flow-step ${stepStatusClass(step.status)}`));
|
|
2884
2897
|
return _el$23;
|
|
@@ -2919,7 +2932,7 @@ function formatTime(iso, options) {
|
|
|
2919
2932
|
...options?.includeSeconds && { second: "2-digit" }
|
|
2920
2933
|
});
|
|
2921
2934
|
}
|
|
2922
|
-
var _tmpl$$
|
|
2935
|
+
var _tmpl$$a = /* @__PURE__ */ template(`<div class=agent-summary-hud>`), _tmpl$2$9 = /* @__PURE__ */ template(`<span class=agent-transcript-live><span class=agent-transcript-live-dot aria-hidden=true></span>Live`), _tmpl$3$8 = /* @__PURE__ */ template(`<div class=agent-transcript-list>`), _tmpl$4$8 = /* @__PURE__ */ template(`<aside class=agent-transcript-dock><div class=agent-transcript-header><div class=agent-transcript-title-row><span class=agent-transcript-title>Agent Transcript</span></div><div class=agent-transcript-actions><button class=agent-transcript-icon></button><button class=agent-transcript-icon data-tooltip=Hide>×`), _tmpl$5$7 = /* @__PURE__ */ template(`<span class=agent-summary-live-dot aria-hidden=true>`), _tmpl$6$7 = /* @__PURE__ */ template(`<span class=agent-summary-text>: `), _tmpl$7$5 = /* @__PURE__ */ template(`<article><div class=agent-transcript-meta><span class=agent-transcript-badge></span><span class=agent-transcript-time></span></div><div class=agent-transcript-text>`);
|
|
2923
2936
|
const AgentTranscriptDock = () => {
|
|
2924
2937
|
const {
|
|
2925
2938
|
runtimeState: runtimeState2
|
|
@@ -2956,7 +2969,7 @@ const AgentTranscriptDock = () => {
|
|
|
2956
2969
|
return isSummary();
|
|
2957
2970
|
},
|
|
2958
2971
|
get children() {
|
|
2959
|
-
var _el$ = _tmpl$$
|
|
2972
|
+
var _el$ = _tmpl$$a();
|
|
2960
2973
|
insert(_el$, createComponent(Show, {
|
|
2961
2974
|
get when() {
|
|
2962
2975
|
return latestEntry();
|
|
@@ -2966,10 +2979,10 @@ const AgentTranscriptDock = () => {
|
|
|
2966
2979
|
return hasStreamingEntry();
|
|
2967
2980
|
},
|
|
2968
2981
|
get children() {
|
|
2969
|
-
return _tmpl$5$
|
|
2982
|
+
return _tmpl$5$7();
|
|
2970
2983
|
}
|
|
2971
2984
|
}), (() => {
|
|
2972
|
-
var _el$10 = _tmpl$6$
|
|
2985
|
+
var _el$10 = _tmpl$6$7(), _el$11 = _el$10.firstChild;
|
|
2973
2986
|
insert(_el$10, () => entry().title || entry().kind, _el$11);
|
|
2974
2987
|
insert(_el$10, (() => {
|
|
2975
2988
|
var _c$ = memo(() => entry().text.length > 80);
|
|
@@ -2985,7 +2998,7 @@ const AgentTranscriptDock = () => {
|
|
|
2985
2998
|
return !isSummary();
|
|
2986
2999
|
},
|
|
2987
3000
|
get children() {
|
|
2988
|
-
var _el$2 = _tmpl$4$
|
|
3001
|
+
var _el$2 = _tmpl$4$8(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
|
|
2989
3002
|
_el$4.firstChild;
|
|
2990
3003
|
var _el$7 = _el$4.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling;
|
|
2991
3004
|
insert(_el$4, createComponent(Show, {
|
|
@@ -2993,7 +3006,7 @@ const AgentTranscriptDock = () => {
|
|
|
2993
3006
|
return hasStreamingEntry();
|
|
2994
3007
|
},
|
|
2995
3008
|
get children() {
|
|
2996
|
-
return _tmpl$2$
|
|
3009
|
+
return _tmpl$2$9();
|
|
2997
3010
|
}
|
|
2998
3011
|
}), null);
|
|
2999
3012
|
_el$8.$$click = () => setCollapsed((value) => !value);
|
|
@@ -3004,14 +3017,14 @@ const AgentTranscriptDock = () => {
|
|
|
3004
3017
|
return !collapsed();
|
|
3005
3018
|
},
|
|
3006
3019
|
get children() {
|
|
3007
|
-
var _el$0 = _tmpl$3$
|
|
3020
|
+
var _el$0 = _tmpl$3$8();
|
|
3008
3021
|
use((el) => useScrollFade(el), _el$0);
|
|
3009
3022
|
insert(_el$0, createComponent(For, {
|
|
3010
3023
|
get each() {
|
|
3011
3024
|
return visibleEntries();
|
|
3012
3025
|
},
|
|
3013
3026
|
children: (entry) => (() => {
|
|
3014
|
-
var _el$12 = _tmpl$7$
|
|
3027
|
+
var _el$12 = _tmpl$7$5(), _el$13 = _el$12.firstChild, _el$14 = _el$13.firstChild, _el$15 = _el$14.nextSibling, _el$16 = _el$13.nextSibling;
|
|
3015
3028
|
insert(_el$14, () => entry.title || entry.kind);
|
|
3016
3029
|
insert(_el$15, () => formatTime(entry.updatedAt));
|
|
3017
3030
|
insert(_el$16, () => entry.text);
|
|
@@ -3376,7 +3389,7 @@ function useAnimatedPresence(isOpen, exitDurationMs) {
|
|
|
3376
3389
|
});
|
|
3377
3390
|
return { visible, closing };
|
|
3378
3391
|
}
|
|
3379
|
-
var _tmpl$$
|
|
3392
|
+
var _tmpl$$9 = /* @__PURE__ */ template(`<div class=command-bar-no-provider><p>Configure a chat provider to start using the AI assistant.</p><button class=command-bar-no-provider-btn>Open Settings <kbd>Ctrl+,`), _tmpl$2$8 = /* @__PURE__ */ template(`<div class=command-bar-recent><span class=command-bar-recent-label>Recent</span><div class=command-bar-recent-list>`), _tmpl$3$7 = /* @__PURE__ */ template(`<span>Try "summarize" or ask a question`), _tmpl$4$7 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=command-bar><form><div class=command-bar-icon><svg width=16 height=16 viewBox="0 0 16 16"><circle cx=8 cy=8 r=6 fill=none stroke=var(--accent-primary) stroke-width=1.5></circle><circle cx=6 cy=7 r=0.8 fill=var(--accent-primary)></circle><circle cx=10 cy=7 r=0.8 fill=var(--accent-primary)></circle><path d="M6 10c0.5 0.8 3.5 0.8 4 0"fill=none stroke=var(--accent-primary) stroke-width=0.8 stroke-linecap=round></path></svg></div><input class=command-bar-input type=text></form><div class=command-bar-hints><span><kbd>Enter</kbd> to ask</span><span><kbd>Esc</kbd> to close`), _tmpl$5$6 = /* @__PURE__ */ template(`<button class=command-bar-recent-item type=button>`), _tmpl$6$6 = /* @__PURE__ */ template(`<span>Set up a provider in Settings first`);
|
|
3380
3393
|
const COMMAND_BAR_EXIT_MS = 200;
|
|
3381
3394
|
const CommandBar = () => {
|
|
3382
3395
|
const {
|
|
@@ -3430,7 +3443,7 @@ const CommandBar = () => {
|
|
|
3430
3443
|
return visible();
|
|
3431
3444
|
},
|
|
3432
3445
|
get children() {
|
|
3433
|
-
var _el$ = _tmpl$4$
|
|
3446
|
+
var _el$ = _tmpl$4$7(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$10 = _el$3.nextSibling, _el$11 = _el$10.firstChild;
|
|
3434
3447
|
_el$11.nextSibling;
|
|
3435
3448
|
addEventListener(_el$, "click", closeCommandBar, true);
|
|
3436
3449
|
_el$2.$$click = (e) => e.stopPropagation();
|
|
@@ -3444,7 +3457,7 @@ const CommandBar = () => {
|
|
|
3444
3457
|
return !hasProvider();
|
|
3445
3458
|
},
|
|
3446
3459
|
get children() {
|
|
3447
|
-
var _el$6 = _tmpl$$
|
|
3460
|
+
var _el$6 = _tmpl$$9(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
|
|
3448
3461
|
_el$8.$$click = () => {
|
|
3449
3462
|
closeCommandBar();
|
|
3450
3463
|
openSettings();
|
|
@@ -3457,13 +3470,13 @@ const CommandBar = () => {
|
|
|
3457
3470
|
return memo(() => !!(hasProvider() && recentQueries2().length > 0))() && !input().trim();
|
|
3458
3471
|
},
|
|
3459
3472
|
get children() {
|
|
3460
|
-
var _el$9 = _tmpl$2$
|
|
3473
|
+
var _el$9 = _tmpl$2$8(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
|
|
3461
3474
|
insert(_el$1, createComponent(For, {
|
|
3462
3475
|
get each() {
|
|
3463
3476
|
return recentQueries2();
|
|
3464
3477
|
},
|
|
3465
3478
|
children: (q) => (() => {
|
|
3466
|
-
var _el$14 = _tmpl$5$
|
|
3479
|
+
var _el$14 = _tmpl$5$6();
|
|
3467
3480
|
_el$14.$$click = () => void handleRecentClick(q);
|
|
3468
3481
|
insert(_el$14, q);
|
|
3469
3482
|
return _el$14;
|
|
@@ -3477,10 +3490,10 @@ const CommandBar = () => {
|
|
|
3477
3490
|
return hasProvider();
|
|
3478
3491
|
},
|
|
3479
3492
|
get fallback() {
|
|
3480
|
-
return _tmpl$6$
|
|
3493
|
+
return _tmpl$6$6();
|
|
3481
3494
|
},
|
|
3482
3495
|
get children() {
|
|
3483
|
-
return _tmpl$3$
|
|
3496
|
+
return _tmpl$3$7();
|
|
3484
3497
|
}
|
|
3485
3498
|
}), null);
|
|
3486
3499
|
createRenderEffect((_p$) => {
|
|
@@ -3568,6 +3581,7 @@ function useBookmarks() {
|
|
|
3568
3581
|
keyFields,
|
|
3569
3582
|
agentHints
|
|
3570
3583
|
),
|
|
3584
|
+
updateBookmark: (id, updates) => window.vessel.bookmarks.updateBookmark(id, updates),
|
|
3571
3585
|
removeBookmark: (id) => window.vessel.bookmarks.removeBookmark(id),
|
|
3572
3586
|
createFolder: (name) => window.vessel.bookmarks.createFolder(name),
|
|
3573
3587
|
createFolderWithSummary: (name, summary) => window.vessel.bookmarks.createFolderWithSummary(name, summary),
|
|
@@ -4931,7 +4945,7 @@ function renderToolChip(name, args) {
|
|
|
4931
4945
|
function renderMarkdown(source) {
|
|
4932
4946
|
const codeBlocks = [];
|
|
4933
4947
|
const toolChips = [];
|
|
4934
|
-
const normalized = source.replace(/\r\n?/g, "\n").replace(
|
|
4948
|
+
const normalized = source.replace(/\r\n?/g, "\n").replace(/<<erase_prev>>/g, "\0ERASE\0").replace(
|
|
4935
4949
|
/<<tool:([^:>\n]+)(?::([^>\n]*))?>>/g,
|
|
4936
4950
|
(_, name, args) => {
|
|
4937
4951
|
const token = `\0TC${toolChips.length}\0`;
|
|
@@ -4955,10 +4969,16 @@ ${token}
|
|
|
4955
4969
|
);
|
|
4956
4970
|
const rendered = normalized.split(/\n{2,}/).map((block) => {
|
|
4957
4971
|
const trimmed = block.trim();
|
|
4972
|
+
if (trimmed === "\0ERASE\0") return "\0ERASE\0";
|
|
4958
4973
|
if (/^\x00TC\d+\x00$/.test(trimmed)) return trimmed;
|
|
4959
4974
|
return renderBlock(block);
|
|
4960
4975
|
}).filter(Boolean).join("");
|
|
4961
|
-
|
|
4976
|
+
const erased = rendered.replace(
|
|
4977
|
+
/(?:^|(?<=\x00TC\d+\x00))([\s\S]*?)\x00ERASE\x00/g,
|
|
4978
|
+
(_, _content) => ""
|
|
4979
|
+
);
|
|
4980
|
+
const cleaned = erased.replace(/\x00ERASE\x00/g, "");
|
|
4981
|
+
let output = cleaned;
|
|
4962
4982
|
output = codeBlocks.reduce(
|
|
4963
4983
|
(out, snippet, index) => out.replace(`\0CB${index}\0`, snippet),
|
|
4964
4984
|
output
|
|
@@ -5061,7 +5081,7 @@ function getBookmarkSearchMatch(args) {
|
|
|
5061
5081
|
}
|
|
5062
5082
|
return { matchedFields, score };
|
|
5063
5083
|
}
|
|
5064
|
-
var _tmpl$$
|
|
5084
|
+
var _tmpl$$8 = /* @__PURE__ */ template(`<div class=dropdown-select-menu role=listbox>`), _tmpl$2$7 = /* @__PURE__ */ template(`<div><button class=dropdown-select-trigger type=button aria-haspopup=listbox><span class=dropdown-select-value></span><span class=dropdown-select-caret aria-hidden=true>▾`), _tmpl$3$6 = /* @__PURE__ */ template(`<span class=dropdown-select-option-description>`), _tmpl$4$6 = /* @__PURE__ */ template(`<button class=dropdown-select-option type=button role=option><span class=dropdown-select-option-copy><span class=dropdown-select-option-label>`);
|
|
5065
5085
|
const DropdownSelect = (props) => {
|
|
5066
5086
|
const [open, setOpen] = createSignal(false);
|
|
5067
5087
|
let rootRef;
|
|
@@ -5085,7 +5105,7 @@ const DropdownSelect = (props) => {
|
|
|
5085
5105
|
});
|
|
5086
5106
|
});
|
|
5087
5107
|
return (() => {
|
|
5088
|
-
var _el$ = _tmpl$2$
|
|
5108
|
+
var _el$ = _tmpl$2$7(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
|
|
5089
5109
|
var _ref$ = rootRef;
|
|
5090
5110
|
typeof _ref$ === "function" ? use(_ref$, _el$) : rootRef = _el$;
|
|
5091
5111
|
_el$2.$$click = () => setOpen((current) => !current);
|
|
@@ -5095,13 +5115,13 @@ const DropdownSelect = (props) => {
|
|
|
5095
5115
|
return open();
|
|
5096
5116
|
},
|
|
5097
5117
|
get children() {
|
|
5098
|
-
var _el$5 = _tmpl$$
|
|
5118
|
+
var _el$5 = _tmpl$$8();
|
|
5099
5119
|
insert(_el$5, createComponent(For, {
|
|
5100
5120
|
get each() {
|
|
5101
5121
|
return props.options;
|
|
5102
5122
|
},
|
|
5103
5123
|
children: (option) => (() => {
|
|
5104
|
-
var _el$6 = _tmpl$4$
|
|
5124
|
+
var _el$6 = _tmpl$4$6(), _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild;
|
|
5105
5125
|
_el$6.$$click = () => {
|
|
5106
5126
|
props.onChange(option.value);
|
|
5107
5127
|
setOpen(false);
|
|
@@ -5112,7 +5132,7 @@ const DropdownSelect = (props) => {
|
|
|
5112
5132
|
return option.description;
|
|
5113
5133
|
},
|
|
5114
5134
|
get children() {
|
|
5115
|
-
var _el$9 = _tmpl$3$
|
|
5135
|
+
var _el$9 = _tmpl$3$6();
|
|
5116
5136
|
insert(_el$9, () => option.description);
|
|
5117
5137
|
return _el$9;
|
|
5118
5138
|
}
|
|
@@ -5168,7 +5188,7 @@ var LucideContext = createContext({
|
|
|
5168
5188
|
absoluteStrokeWidth: false,
|
|
5169
5189
|
class: ""
|
|
5170
5190
|
});
|
|
5171
|
-
var _tmpl$$
|
|
5191
|
+
var _tmpl$$7 = /* @__PURE__ */ template(`<svg>`);
|
|
5172
5192
|
var hasA11yProp = (props) => {
|
|
5173
5193
|
for (const prop in props) {
|
|
5174
5194
|
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
@@ -5190,7 +5210,7 @@ var Icon = (props) => {
|
|
|
5190
5210
|
const [localProps, rest] = splitProps(props, ["color", "size", "strokeWidth", "children", "class", "name", "iconNode", "absoluteStrokeWidth"]);
|
|
5191
5211
|
const globalProps = useContext(LucideContext);
|
|
5192
5212
|
return (() => {
|
|
5193
|
-
var _el$ = _tmpl$$
|
|
5213
|
+
var _el$ = _tmpl$$7();
|
|
5194
5214
|
spread(_el$, mergeProps(defaultAttributes_default, {
|
|
5195
5215
|
get width() {
|
|
5196
5216
|
return localProps.size ?? globalProps.size ?? defaultAttributes_default.width;
|
|
@@ -5508,7 +5528,7 @@ function renderKitPrompt(kit, values) {
|
|
|
5508
5528
|
(_, key) => values[key] ?? ""
|
|
5509
5529
|
);
|
|
5510
5530
|
}
|
|
5511
|
-
var _tmpl$$
|
|
5531
|
+
var _tmpl$$6 = /* @__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$6 = /* @__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$5 = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$5 = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$5 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$5 = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$4 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$4 = /* @__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$2 = /* @__PURE__ */ template(`<span class=kit-run-spinner aria-hidden=true>`), _tmpl$40$2 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=sched-type>`), _tmpl$41$2 = /* @__PURE__ */ template(`<option>`), _tmpl$42$2 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=edit-sched-type>`);
|
|
5512
5532
|
const ICON_MAP = {
|
|
5513
5533
|
BookOpen: book_open_default,
|
|
5514
5534
|
Tag: tag_default,
|
|
@@ -5833,7 +5853,7 @@ const AutomationTab = (props) => {
|
|
|
5833
5853
|
return memo(() => !!!premiumData.loading)() && !isPremium();
|
|
5834
5854
|
},
|
|
5835
5855
|
get children() {
|
|
5836
|
-
var _el$2 = _tmpl$$
|
|
5856
|
+
var _el$2 = _tmpl$$6(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling;
|
|
5837
5857
|
insert(_el$3, createComponent(zap_default, {
|
|
5838
5858
|
size: 24
|
|
5839
5859
|
}));
|
|
@@ -5847,7 +5867,7 @@ const AutomationTab = (props) => {
|
|
|
5847
5867
|
},
|
|
5848
5868
|
get children() {
|
|
5849
5869
|
return [(() => {
|
|
5850
|
-
var _el$7 = _tmpl$2$
|
|
5870
|
+
var _el$7 = _tmpl$2$6(), _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.firstChild, _el$10 = _el$0.nextSibling;
|
|
5851
5871
|
insert(_el$0, () => allKits().length, _el$1);
|
|
5852
5872
|
_el$10.$$click = () => void handleInstall();
|
|
5853
5873
|
return _el$7;
|
|
@@ -5856,13 +5876,13 @@ const AutomationTab = (props) => {
|
|
|
5856
5876
|
return installError() !== null;
|
|
5857
5877
|
},
|
|
5858
5878
|
get children() {
|
|
5859
|
-
var _el$11 = _tmpl$3$
|
|
5879
|
+
var _el$11 = _tmpl$3$5(), _el$12 = _el$11.firstChild, _el$13 = _el$12.nextSibling;
|
|
5860
5880
|
insert(_el$12, installError);
|
|
5861
5881
|
_el$13.$$click = () => setInstallError(null);
|
|
5862
5882
|
return _el$11;
|
|
5863
5883
|
}
|
|
5864
5884
|
}), (() => {
|
|
5865
|
-
var _el$14 = _tmpl$4$
|
|
5885
|
+
var _el$14 = _tmpl$4$5();
|
|
5866
5886
|
insert(_el$14, createComponent(For, {
|
|
5867
5887
|
get each() {
|
|
5868
5888
|
return allKits();
|
|
@@ -5922,14 +5942,14 @@ const AutomationTab = (props) => {
|
|
|
5922
5942
|
},
|
|
5923
5943
|
get children() {
|
|
5924
5944
|
return [(() => {
|
|
5925
|
-
var _el$15 = _tmpl$5$
|
|
5945
|
+
var _el$15 = _tmpl$5$5(), _el$16 = _el$15.firstChild, _el$17 = _el$16.nextSibling;
|
|
5926
5946
|
insert(_el$15, createComponent(clock_default, {
|
|
5927
5947
|
size: 12
|
|
5928
5948
|
}), _el$16);
|
|
5929
5949
|
insert(_el$17, () => scheduledJobs().length);
|
|
5930
5950
|
return _el$15;
|
|
5931
5951
|
})(), (() => {
|
|
5932
|
-
var _el$18 = _tmpl$6$
|
|
5952
|
+
var _el$18 = _tmpl$6$5();
|
|
5933
5953
|
insert(_el$18, createComponent(For, {
|
|
5934
5954
|
get each() {
|
|
5935
5955
|
return scheduledJobs();
|
|
@@ -6007,14 +6027,14 @@ const AutomationTab = (props) => {
|
|
|
6007
6027
|
},
|
|
6008
6028
|
get children() {
|
|
6009
6029
|
return [(() => {
|
|
6010
|
-
var _el$19 = _tmpl$7$
|
|
6030
|
+
var _el$19 = _tmpl$7$4(), _el$20 = _el$19.firstChild, _el$21 = _el$20.nextSibling;
|
|
6011
6031
|
insert(_el$19, createComponent(zap_default, {
|
|
6012
6032
|
size: 12
|
|
6013
6033
|
}), _el$20);
|
|
6014
6034
|
insert(_el$21, () => automationActivities2().length);
|
|
6015
6035
|
return _el$19;
|
|
6016
6036
|
})(), (() => {
|
|
6017
|
-
var _el$22 = _tmpl$8$
|
|
6037
|
+
var _el$22 = _tmpl$8$4();
|
|
6018
6038
|
insert(_el$22, createComponent(For, {
|
|
6019
6039
|
get each() {
|
|
6020
6040
|
return automationActivities2();
|
|
@@ -6347,8 +6367,121 @@ const AutomationTab = (props) => {
|
|
|
6347
6367
|
})();
|
|
6348
6368
|
};
|
|
6349
6369
|
delegateEvents(["click", "input", "keydown", "contextmenu"]);
|
|
6370
|
+
var _tmpl$$5 = /* @__PURE__ */ template(`<div class=agent-muted>Loading...`), _tmpl$2$5 = /* @__PURE__ */ template(`<div class=agent-muted>`), _tmpl$3$4 = /* @__PURE__ */ template(`<div class=agent-muted>No changes detected yet.`), _tmpl$4$4 = /* @__PURE__ */ template(`<div class=agent-section-title>Recent page changes`), _tmpl$5$4 = /* @__PURE__ */ template(`<div class=page-diff-list>`), _tmpl$6$4 = /* @__PURE__ */ template(`<div class=page-diff-timeline>`), _tmpl$7$3 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$8$3 = /* @__PURE__ */ template(`<div class=page-diff-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=page-diff-content><div class=page-diff-time></div><div class=page-diff-summary>`);
|
|
6371
|
+
const PageDiffTimeline = () => {
|
|
6372
|
+
const {
|
|
6373
|
+
activeTab
|
|
6374
|
+
} = useTabs();
|
|
6375
|
+
const [bursts, setBursts] = createSignal([]);
|
|
6376
|
+
const [loading, setLoading] = createSignal(true);
|
|
6377
|
+
const [error, setError] = createSignal(null);
|
|
6378
|
+
let latestRequestId = 0;
|
|
6379
|
+
const loadHistory = async () => {
|
|
6380
|
+
const requestId = ++latestRequestId;
|
|
6381
|
+
const tab = activeTab();
|
|
6382
|
+
if (!tab?.url) {
|
|
6383
|
+
setBursts([]);
|
|
6384
|
+
setError(null);
|
|
6385
|
+
setLoading(false);
|
|
6386
|
+
return;
|
|
6387
|
+
}
|
|
6388
|
+
setLoading(true);
|
|
6389
|
+
try {
|
|
6390
|
+
const result = await window.vessel.pageDiff.getHistory();
|
|
6391
|
+
if (requestId !== latestRequestId) return;
|
|
6392
|
+
if (result && typeof result === "object" && "error" in result) {
|
|
6393
|
+
setError(result.error);
|
|
6394
|
+
setBursts([]);
|
|
6395
|
+
} else {
|
|
6396
|
+
setBursts(result ?? []);
|
|
6397
|
+
setError(null);
|
|
6398
|
+
}
|
|
6399
|
+
} catch {
|
|
6400
|
+
if (requestId !== latestRequestId) return;
|
|
6401
|
+
setError("Failed to load diff history");
|
|
6402
|
+
setBursts([]);
|
|
6403
|
+
} finally {
|
|
6404
|
+
if (requestId === latestRequestId) {
|
|
6405
|
+
setLoading(false);
|
|
6406
|
+
}
|
|
6407
|
+
}
|
|
6408
|
+
};
|
|
6409
|
+
createEffect(() => {
|
|
6410
|
+
void activeTab()?.url;
|
|
6411
|
+
void loadHistory();
|
|
6412
|
+
});
|
|
6413
|
+
const unsubscribe = window.vessel.pageDiff.onChanged((diff) => {
|
|
6414
|
+
const tab = activeTab();
|
|
6415
|
+
if (!tab || !matchesPageSnapshotUrl(tab.url, diff.url)) return;
|
|
6416
|
+
void loadHistory();
|
|
6417
|
+
});
|
|
6418
|
+
onCleanup(() => {
|
|
6419
|
+
unsubscribe();
|
|
6420
|
+
});
|
|
6421
|
+
return (() => {
|
|
6422
|
+
var _el$ = _tmpl$6$4();
|
|
6423
|
+
insert(_el$, createComponent(Show, {
|
|
6424
|
+
get when() {
|
|
6425
|
+
return loading();
|
|
6426
|
+
},
|
|
6427
|
+
get children() {
|
|
6428
|
+
return _tmpl$$5();
|
|
6429
|
+
}
|
|
6430
|
+
}), null);
|
|
6431
|
+
insert(_el$, createComponent(Show, {
|
|
6432
|
+
get when() {
|
|
6433
|
+
return memo(() => !!!loading())() && error();
|
|
6434
|
+
},
|
|
6435
|
+
get children() {
|
|
6436
|
+
var _el$3 = _tmpl$2$5();
|
|
6437
|
+
insert(_el$3, error);
|
|
6438
|
+
return _el$3;
|
|
6439
|
+
}
|
|
6440
|
+
}), null);
|
|
6441
|
+
insert(_el$, createComponent(Show, {
|
|
6442
|
+
get when() {
|
|
6443
|
+
return memo(() => !!(!loading() && !error()))() && bursts().length === 0;
|
|
6444
|
+
},
|
|
6445
|
+
get children() {
|
|
6446
|
+
return _tmpl$3$4();
|
|
6447
|
+
}
|
|
6448
|
+
}), null);
|
|
6449
|
+
insert(_el$, createComponent(Show, {
|
|
6450
|
+
get when() {
|
|
6451
|
+
return memo(() => !!(!loading() && !error()))() && bursts().length > 0;
|
|
6452
|
+
},
|
|
6453
|
+
get children() {
|
|
6454
|
+
return [_tmpl$4$4(), (() => {
|
|
6455
|
+
var _el$6 = _tmpl$5$4();
|
|
6456
|
+
insert(_el$6, createComponent(For, {
|
|
6457
|
+
get each() {
|
|
6458
|
+
return bursts();
|
|
6459
|
+
},
|
|
6460
|
+
children: (burst, i) => (() => {
|
|
6461
|
+
var _el$7 = _tmpl$8$3(), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild, _el$1 = _el$8.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling;
|
|
6462
|
+
insert(_el$8, createComponent(Show, {
|
|
6463
|
+
get when() {
|
|
6464
|
+
return i() < bursts().length - 1;
|
|
6465
|
+
},
|
|
6466
|
+
get children() {
|
|
6467
|
+
return _tmpl$7$3();
|
|
6468
|
+
}
|
|
6469
|
+
}), null);
|
|
6470
|
+
insert(_el$10, () => new Date(burst.detectedAt).toLocaleString());
|
|
6471
|
+
insert(_el$11, () => burst.summary);
|
|
6472
|
+
createRenderEffect(() => _el$9.classList.toggle("latest", !!(i() === 0)));
|
|
6473
|
+
return _el$7;
|
|
6474
|
+
})()
|
|
6475
|
+
}));
|
|
6476
|
+
return _el$6;
|
|
6477
|
+
})()];
|
|
6478
|
+
}
|
|
6479
|
+
}), null);
|
|
6480
|
+
return _el$;
|
|
6481
|
+
})();
|
|
6482
|
+
};
|
|
6350
6483
|
const vesselLogo = "" + new URL("vessel-logo-transparent-IT25qr-Z.png", import.meta.url).href;
|
|
6351
|
-
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(`<p class=history-empty>No browsing history yet.`), _tmpl$11$2 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><button class=history-clear-btn>Clear</button></div><div class=history-list>`), _tmpl$12$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$13$1 = /* @__PURE__ */ template(`<span>`), _tmpl$14$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$15$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$16$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$17$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$18$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$19$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$20$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$21$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$22$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$23$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$24$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$25$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><button class=sidebar-tab role=tab>History</button></div><div class=sidebar-messages><div>`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$27$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$28$1 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$32$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$33$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$34$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$35$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$36$1 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$37$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$38$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$39$1 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$40$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$41$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$42$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$43 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$44 = /* @__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$45 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$46 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$47 = /* @__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$48 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$49 = /* @__PURE__ */ template(`<div>`), _tmpl$50 = /* @__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$51 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$52 = /* @__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$53 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
|
|
6484
|
+
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(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$5$3 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$6$3 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$7$2 = /* @__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$8$2 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$9$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></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$0$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$1$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$10$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"><textarea class=agent-textarea rows=2 placeholder="Optional note for this checkpoint"></textarea><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$11$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$12$2 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><button class=history-clear-btn>Clear</button></div><div class=history-list>`), _tmpl$13$1 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div class=agent-panel-title>What Changed</div><div class=agent-panel-subtitle>`), _tmpl$14$1 = /* @__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$15$1 = /* @__PURE__ */ template(`<span>`), _tmpl$16$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$17$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$18$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$19$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$20$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$21$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$22$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$23$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$24$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$27$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><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button></div><div class=sidebar-messages><div>`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$29$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$30$1 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$32$1 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$34$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$35$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$36$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$37$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$38$1 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$39$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$40$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$41$1 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$42$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$43 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$44 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$45 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$46 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$47 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$48 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$49 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$50 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><input class=bookmark-input placeholder="Bookmark title"><textarea class=bookmark-note-input rows=2 placeholder="Why this bookmark matters"></textarea><textarea class=bookmark-note-input rows=1 placeholder=Intent></textarea><textarea class=bookmark-note-input rows=1 placeholder="Expected content"></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input rows=2 placeholder="Agent hints (one key:value per line)"></textarea><div class=bookmark-item-footer><button class=bookmark-secondary-button type=button>Save edits</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$51 = /* @__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 type=button></button><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$52 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$53 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$54 = /* @__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><textarea class=agent-textarea rows=2 placeholder="Add a note..."></textarea><button class=agent-control-button type=button>Restore`), _tmpl$55 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$56 = /* @__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">The Diff timeline is a premium feature. Upgrade to see a full history of what changed on this page.</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$57 = /* @__PURE__ */ template(`<div>`), _tmpl$58 = /* @__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$59 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$60 = /* @__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$61 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
|
|
6352
6485
|
const UNSORTED_FOLDER = {
|
|
6353
6486
|
id: "unsorted",
|
|
6354
6487
|
name: "Unsorted",
|
|
@@ -6409,6 +6542,8 @@ const Sidebar = (props) => {
|
|
|
6409
6542
|
resolveApproval,
|
|
6410
6543
|
createCheckpoint,
|
|
6411
6544
|
restoreCheckpoint,
|
|
6545
|
+
updateCheckpointNote,
|
|
6546
|
+
undoLastAction,
|
|
6412
6547
|
restoreSession
|
|
6413
6548
|
} = useRuntime();
|
|
6414
6549
|
const {
|
|
@@ -6427,6 +6562,7 @@ const Sidebar = (props) => {
|
|
|
6427
6562
|
const {
|
|
6428
6563
|
bookmarksState: bookmarksState2,
|
|
6429
6564
|
saveBookmark,
|
|
6565
|
+
updateBookmark,
|
|
6430
6566
|
removeBookmark,
|
|
6431
6567
|
createFolderWithSummary,
|
|
6432
6568
|
removeFolder,
|
|
@@ -6596,7 +6732,12 @@ ${contextBlock}` : contextBlock);
|
|
|
6596
6732
|
}
|
|
6597
6733
|
};
|
|
6598
6734
|
const [checkpointName, setCheckpointName] = createSignal("");
|
|
6735
|
+
const [checkpointNote, setCheckpointNote] = createSignal("");
|
|
6599
6736
|
const [bookmarkNote, setBookmarkNote] = createSignal("");
|
|
6737
|
+
const [bookmarkIntent, setBookmarkIntent] = createSignal("");
|
|
6738
|
+
const [bookmarkExpectedContent, setBookmarkExpectedContent] = createSignal("");
|
|
6739
|
+
const [bookmarkKeyFields, setBookmarkKeyFields] = createSignal("");
|
|
6740
|
+
const [bookmarkAgentHints, setBookmarkAgentHints] = createSignal("");
|
|
6600
6741
|
const [bookmarkSaveExpanded, setBookmarkSaveExpanded] = createSignal(false);
|
|
6601
6742
|
const [selectedFolderId, setSelectedFolderId] = createSignal(UNSORTED_FOLDER.id);
|
|
6602
6743
|
const [newFolderName, setNewFolderName] = createSignal("");
|
|
@@ -6605,6 +6746,13 @@ ${contextBlock}` : contextBlock);
|
|
|
6605
6746
|
const [editingFolderId, setEditingFolderId] = createSignal(null);
|
|
6606
6747
|
const [editingFolderName, setEditingFolderName] = createSignal("");
|
|
6607
6748
|
const [editingFolderSummary, setEditingFolderSummary] = createSignal("");
|
|
6749
|
+
const [editingBookmarkId, setEditingBookmarkId] = createSignal(null);
|
|
6750
|
+
const [editingBookmarkTitle, setEditingBookmarkTitle] = createSignal("");
|
|
6751
|
+
const [editingBookmarkNote, setEditingBookmarkNote] = createSignal("");
|
|
6752
|
+
const [editingBookmarkIntent, setEditingBookmarkIntent] = createSignal("");
|
|
6753
|
+
const [editingBookmarkExpectedContent, setEditingBookmarkExpectedContent] = createSignal("");
|
|
6754
|
+
const [editingBookmarkKeyFields, setEditingBookmarkKeyFields] = createSignal("");
|
|
6755
|
+
const [editingBookmarkAgentHints, setEditingBookmarkAgentHints] = createSignal("");
|
|
6608
6756
|
const [deletingFolderId, setDeletingFolderId] = createSignal(null);
|
|
6609
6757
|
const [expandedFolderIds, setExpandedFolderIds] = createSignal([UNSORTED_FOLDER.id]);
|
|
6610
6758
|
const [actionsExpanded, setActionsExpanded] = createSignal(false);
|
|
@@ -6781,13 +6929,63 @@ ${contextBlock}` : contextBlock);
|
|
|
6781
6929
|
day: "numeric",
|
|
6782
6930
|
year: "numeric"
|
|
6783
6931
|
});
|
|
6932
|
+
const parseBookmarkKeyFields = (value) => {
|
|
6933
|
+
const fields = value.split(",").map((entry) => entry.trim()).filter(Boolean);
|
|
6934
|
+
return fields.length > 0 ? fields : void 0;
|
|
6935
|
+
};
|
|
6936
|
+
const parseBookmarkAgentHints = (value) => {
|
|
6937
|
+
const entries2 = value.split("\n").map((line) => {
|
|
6938
|
+
const separator = line.indexOf(":");
|
|
6939
|
+
if (separator === -1) return null;
|
|
6940
|
+
const key = line.slice(0, separator).trim();
|
|
6941
|
+
const hint = line.slice(separator + 1).trim();
|
|
6942
|
+
return key ? [key, hint] : null;
|
|
6943
|
+
}).filter((entry) => Boolean(entry)).filter(([, hint]) => hint.length > 0);
|
|
6944
|
+
return entries2.length > 0 ? Object.fromEntries(entries2) : void 0;
|
|
6945
|
+
};
|
|
6946
|
+
const formatBookmarkKeyFields = (value) => value?.join(", ") || "";
|
|
6947
|
+
const formatBookmarkAgentHints = (value) => value ? Object.entries(value).map(([key, hint]) => `${key}: ${hint}`).join("\n") : "";
|
|
6948
|
+
const resetBookmarkEditor = () => {
|
|
6949
|
+
setEditingBookmarkId(null);
|
|
6950
|
+
setEditingBookmarkTitle("");
|
|
6951
|
+
setEditingBookmarkNote("");
|
|
6952
|
+
setEditingBookmarkIntent("");
|
|
6953
|
+
setEditingBookmarkExpectedContent("");
|
|
6954
|
+
setEditingBookmarkKeyFields("");
|
|
6955
|
+
setEditingBookmarkAgentHints("");
|
|
6956
|
+
};
|
|
6957
|
+
const startEditingBookmark = (bookmark) => {
|
|
6958
|
+
setEditingBookmarkId(bookmark.id);
|
|
6959
|
+
setEditingBookmarkTitle(bookmark.title || bookmark.url);
|
|
6960
|
+
setEditingBookmarkNote(bookmark.note || "");
|
|
6961
|
+
setEditingBookmarkIntent(bookmark.intent || "");
|
|
6962
|
+
setEditingBookmarkExpectedContent(bookmark.expectedContent || "");
|
|
6963
|
+
setEditingBookmarkKeyFields(formatBookmarkKeyFields(bookmark.keyFields));
|
|
6964
|
+
setEditingBookmarkAgentHints(formatBookmarkAgentHints(bookmark.agentHints));
|
|
6965
|
+
};
|
|
6784
6966
|
const handleSaveBookmark = async () => {
|
|
6785
6967
|
const tab = currentTab();
|
|
6786
6968
|
if (!tab?.url) return;
|
|
6787
|
-
await saveBookmark(tab.url, tab.title?.trim() || tab.url, selectedFolderId(), bookmarkNote());
|
|
6969
|
+
await saveBookmark(tab.url, tab.title?.trim() || tab.url, selectedFolderId(), bookmarkNote(), bookmarkIntent() || void 0, bookmarkExpectedContent() || void 0, parseBookmarkKeyFields(bookmarkKeyFields()), parseBookmarkAgentHints(bookmarkAgentHints()));
|
|
6788
6970
|
setBookmarkNote("");
|
|
6971
|
+
setBookmarkIntent("");
|
|
6972
|
+
setBookmarkExpectedContent("");
|
|
6973
|
+
setBookmarkKeyFields("");
|
|
6974
|
+
setBookmarkAgentHints("");
|
|
6789
6975
|
setBookmarkSaveExpanded(false);
|
|
6790
6976
|
};
|
|
6977
|
+
const handleUpdateBookmark = async (bookmarkId) => {
|
|
6978
|
+
const updated = await updateBookmark(bookmarkId, {
|
|
6979
|
+
title: editingBookmarkTitle(),
|
|
6980
|
+
note: editingBookmarkNote(),
|
|
6981
|
+
intent: editingBookmarkIntent(),
|
|
6982
|
+
expectedContent: editingBookmarkExpectedContent(),
|
|
6983
|
+
keyFields: parseBookmarkKeyFields(editingBookmarkKeyFields()),
|
|
6984
|
+
agentHints: parseBookmarkAgentHints(editingBookmarkAgentHints())
|
|
6985
|
+
});
|
|
6986
|
+
if (!updated) return;
|
|
6987
|
+
resetBookmarkEditor();
|
|
6988
|
+
};
|
|
6791
6989
|
const handleCreateFolder = async (e) => {
|
|
6792
6990
|
e.preventDefault();
|
|
6793
6991
|
const name = newFolderName().trim();
|
|
@@ -6825,14 +7023,22 @@ ${contextBlock}` : contextBlock);
|
|
|
6825
7023
|
setExpandedFolderIds((current) => current.includes(folderId) ? current.filter((id) => id !== folderId) : [...current, folderId]);
|
|
6826
7024
|
};
|
|
6827
7025
|
const isFolderExpanded = (folderId) => normalizedBookmarkSearch().length > 0 || expandedFolderIds().includes(folderId);
|
|
7026
|
+
onMount(() => {
|
|
7027
|
+
const cleanup = window.vessel.ui.onSidebarNavigate((tab) => {
|
|
7028
|
+
if (tab === "supervisor" || tab === "bookmarks" || tab === "checkpoints" || tab === "chat" || tab === "automation" || tab === "history" || tab === "diff") {
|
|
7029
|
+
setSidebarTab(tab);
|
|
7030
|
+
}
|
|
7031
|
+
});
|
|
7032
|
+
onCleanup(cleanup);
|
|
7033
|
+
});
|
|
6828
7034
|
return createComponent(Show, {
|
|
6829
7035
|
get when() {
|
|
6830
7036
|
return props.forceOpen || sidebarOpen2();
|
|
6831
7037
|
},
|
|
6832
7038
|
get children() {
|
|
6833
|
-
var _el$9 = _tmpl$
|
|
7039
|
+
var _el$9 = _tmpl$27$1(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling, _el$15 = _el$1.nextSibling, _el$16 = _el$15.firstChild;
|
|
6834
7040
|
_el$16.firstChild;
|
|
6835
|
-
var _el$19 = _el$16.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$15.nextSibling, _el$
|
|
7041
|
+
var _el$19 = _el$16.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$23.nextSibling, _el$25 = _el$15.nextSibling, _el$104 = _el$25.firstChild;
|
|
6836
7042
|
_el$0.$$pointerdown = startResize;
|
|
6837
7043
|
setAttribute(_el$11, "src", vesselLogo);
|
|
6838
7044
|
addEventListener(_el$13, "click", clearHistory, true);
|
|
@@ -6853,20 +7059,21 @@ ${contextBlock}` : contextBlock);
|
|
|
6853
7059
|
_el$21.$$click = () => setSidebarTab("chat");
|
|
6854
7060
|
_el$22.$$click = () => setSidebarTab("automation");
|
|
6855
7061
|
_el$23.$$click = () => setSidebarTab("history");
|
|
7062
|
+
_el$24.$$click = () => setSidebarTab("diff");
|
|
6856
7063
|
use((el) => {
|
|
6857
7064
|
messagesContainerRef = el;
|
|
6858
7065
|
useScrollFade(el);
|
|
6859
|
-
}, _el$
|
|
6860
|
-
insert(_el$
|
|
7066
|
+
}, _el$25);
|
|
7067
|
+
insert(_el$25, createComponent(Show, {
|
|
6861
7068
|
get when() {
|
|
6862
7069
|
return sidebarTab() === "supervisor";
|
|
6863
7070
|
},
|
|
6864
7071
|
get children() {
|
|
6865
|
-
var _el$
|
|
6866
|
-
_el$
|
|
6867
|
-
insert(_el$
|
|
6868
|
-
insert(_el$
|
|
6869
|
-
insert(_el$
|
|
7072
|
+
var _el$26 = _tmpl$7$2(), _el$27 = _el$26.firstChild, _el$28 = _el$27.firstChild, _el$29 = _el$28.firstChild, _el$30 = _el$29.nextSibling, _el$31 = _el$28.nextSibling, _el$32 = _el$27.nextSibling, _el$33 = _el$32.firstChild, _el$34 = _el$33.nextSibling, _el$36 = _el$32.nextSibling, _el$38 = _el$36.nextSibling;
|
|
7073
|
+
_el$38.firstChild;
|
|
7074
|
+
insert(_el$30, () => runtimeState2().supervisor.paused ? "Agent is paused" : "Agent is live");
|
|
7075
|
+
insert(_el$31, () => runtimeState2().supervisor.paused ? "Paused" : "Running");
|
|
7076
|
+
insert(_el$32, createComponent(DropdownSelect, {
|
|
6870
7077
|
"class": "agent-select",
|
|
6871
7078
|
get value() {
|
|
6872
7079
|
return runtimeState2().supervisor.approvalMode;
|
|
@@ -6876,55 +7083,66 @@ ${contextBlock}` : contextBlock);
|
|
|
6876
7083
|
},
|
|
6877
7084
|
ariaLabel: "Approval mode",
|
|
6878
7085
|
onChange: (value) => void setApprovalMode(value)
|
|
6879
|
-
}), _el$
|
|
6880
|
-
_el$
|
|
6881
|
-
insert(_el$
|
|
6882
|
-
_el$
|
|
6883
|
-
insert(_el$
|
|
6884
|
-
|
|
7086
|
+
}), _el$33);
|
|
7087
|
+
_el$33.$$click = () => void (runtimeState2().supervisor.paused ? resume() : pause());
|
|
7088
|
+
insert(_el$33, () => runtimeState2().supervisor.paused ? "Resume" : "Pause");
|
|
7089
|
+
_el$34.$$click = () => void restoreSession();
|
|
7090
|
+
insert(_el$32, createComponent(Show, {
|
|
7091
|
+
get when() {
|
|
7092
|
+
return runtimeState2().canUndo;
|
|
7093
|
+
},
|
|
7094
|
+
get children() {
|
|
7095
|
+
var _el$35 = _tmpl$4$3();
|
|
7096
|
+
_el$35.$$click = () => void undoLastAction();
|
|
7097
|
+
createRenderEffect(() => setAttribute(_el$35, "title", runtimeState2().undoInfo ? `Undo: ${runtimeState2().undoInfo.actionName}` : "Undo last action"));
|
|
7098
|
+
return _el$35;
|
|
7099
|
+
}
|
|
7100
|
+
}), null);
|
|
7101
|
+
insert(_el$36, approvalModeDescription);
|
|
7102
|
+
insert(_el$26, createComponent(Show, {
|
|
6885
7103
|
get when() {
|
|
6886
7104
|
return runtimeState2().supervisor.pendingApprovals.length > 0;
|
|
6887
7105
|
},
|
|
6888
7106
|
get fallback() {
|
|
6889
|
-
return _tmpl$
|
|
7107
|
+
return _tmpl$28$1();
|
|
6890
7108
|
},
|
|
6891
7109
|
get children() {
|
|
6892
|
-
return [_tmpl$
|
|
7110
|
+
return [_tmpl$5$3(), createComponent(For, {
|
|
6893
7111
|
get each() {
|
|
6894
7112
|
return runtimeState2().supervisor.pendingApprovals;
|
|
6895
7113
|
},
|
|
6896
7114
|
children: (approval) => (() => {
|
|
6897
|
-
var _el$
|
|
6898
|
-
insert(_el$
|
|
6899
|
-
insert(_el$
|
|
6900
|
-
insert(_el$
|
|
6901
|
-
_el$
|
|
6902
|
-
_el$
|
|
6903
|
-
return _el$
|
|
7115
|
+
var _el$122 = _tmpl$29$1(), _el$123 = _el$122.firstChild, _el$124 = _el$123.nextSibling, _el$125 = _el$124.nextSibling, _el$126 = _el$125.nextSibling, _el$127 = _el$126.nextSibling, _el$128 = _el$127.firstChild, _el$129 = _el$128.nextSibling;
|
|
7116
|
+
insert(_el$124, () => approval.name);
|
|
7117
|
+
insert(_el$125, () => approval.argsSummary);
|
|
7118
|
+
insert(_el$126, () => approval.reason);
|
|
7119
|
+
_el$128.$$click = () => void resolveApproval(approval.id, true);
|
|
7120
|
+
_el$129.$$click = () => void resolveApproval(approval.id, false);
|
|
7121
|
+
return _el$122;
|
|
6904
7122
|
})()
|
|
6905
7123
|
})];
|
|
6906
7124
|
}
|
|
6907
|
-
}), _el$
|
|
6908
|
-
insert(_el$
|
|
7125
|
+
}), _el$38);
|
|
7126
|
+
insert(_el$38, createComponent(Show, {
|
|
6909
7127
|
get when() {
|
|
6910
7128
|
return recentActions().length > 0;
|
|
6911
7129
|
},
|
|
6912
7130
|
get children() {
|
|
6913
|
-
var _el$
|
|
6914
|
-
_el$
|
|
6915
|
-
insert(_el$
|
|
7131
|
+
var _el$40 = _tmpl$6$3();
|
|
7132
|
+
_el$40.$$click = () => setActionsExpanded((current) => !current);
|
|
7133
|
+
insert(_el$40, (() => {
|
|
6916
7134
|
var _c$ = memo(() => !!actionsExpanded());
|
|
6917
7135
|
return () => _c$() ? "Hide history" : `Show history (${recentActions().length})`;
|
|
6918
7136
|
})());
|
|
6919
|
-
return _el$
|
|
7137
|
+
return _el$40;
|
|
6920
7138
|
}
|
|
6921
7139
|
}), null);
|
|
6922
|
-
insert(_el$
|
|
7140
|
+
insert(_el$26, createComponent(Show, {
|
|
6923
7141
|
get when() {
|
|
6924
7142
|
return recentActions().length > 0;
|
|
6925
7143
|
},
|
|
6926
7144
|
get fallback() {
|
|
6927
|
-
return _tmpl$
|
|
7145
|
+
return _tmpl$30$1();
|
|
6928
7146
|
},
|
|
6929
7147
|
get children() {
|
|
6930
7148
|
return createComponent(Show, {
|
|
@@ -6932,7 +7150,7 @@ ${contextBlock}` : contextBlock);
|
|
|
6932
7150
|
return actionsExpanded();
|
|
6933
7151
|
},
|
|
6934
7152
|
get fallback() {
|
|
6935
|
-
return _tmpl$
|
|
7153
|
+
return _tmpl$31$1();
|
|
6936
7154
|
},
|
|
6937
7155
|
get children() {
|
|
6938
7156
|
return createComponent(For, {
|
|
@@ -6940,71 +7158,71 @@ ${contextBlock}` : contextBlock);
|
|
|
6940
7158
|
return recentActions();
|
|
6941
7159
|
},
|
|
6942
7160
|
children: (action) => (() => {
|
|
6943
|
-
var _el$
|
|
6944
|
-
insert(_el$
|
|
6945
|
-
insert(_el$
|
|
6946
|
-
insert(_el$
|
|
6947
|
-
insert(_el$
|
|
7161
|
+
var _el$132 = _tmpl$34$1(), _el$133 = _el$132.firstChild, _el$134 = _el$133.firstChild, _el$135 = _el$134.nextSibling, _el$136 = _el$133.nextSibling;
|
|
7162
|
+
insert(_el$134, () => action.name);
|
|
7163
|
+
insert(_el$135, () => action.status);
|
|
7164
|
+
insert(_el$136, () => action.argsSummary);
|
|
7165
|
+
insert(_el$132, createComponent(Show, {
|
|
6948
7166
|
get when() {
|
|
6949
7167
|
return action.resultSummary;
|
|
6950
7168
|
},
|
|
6951
7169
|
get children() {
|
|
6952
|
-
var _el$
|
|
6953
|
-
insert(_el$
|
|
6954
|
-
return _el$
|
|
7170
|
+
var _el$137 = _tmpl$32$1();
|
|
7171
|
+
insert(_el$137, () => action.resultSummary);
|
|
7172
|
+
return _el$137;
|
|
6955
7173
|
}
|
|
6956
7174
|
}), null);
|
|
6957
|
-
insert(_el$
|
|
7175
|
+
insert(_el$132, createComponent(Show, {
|
|
6958
7176
|
get when() {
|
|
6959
7177
|
return action.error;
|
|
6960
7178
|
},
|
|
6961
7179
|
get children() {
|
|
6962
|
-
var _el$
|
|
6963
|
-
insert(_el$
|
|
6964
|
-
return _el$
|
|
7180
|
+
var _el$138 = _tmpl$33$1();
|
|
7181
|
+
insert(_el$138, () => action.error);
|
|
7182
|
+
return _el$138;
|
|
6965
7183
|
}
|
|
6966
7184
|
}), null);
|
|
6967
|
-
createRenderEffect(() => className(_el$
|
|
6968
|
-
return _el$
|
|
7185
|
+
createRenderEffect(() => className(_el$135, `agent-action-status ${action.status}`));
|
|
7186
|
+
return _el$132;
|
|
6969
7187
|
})()
|
|
6970
7188
|
});
|
|
6971
7189
|
}
|
|
6972
7190
|
});
|
|
6973
7191
|
}
|
|
6974
7192
|
}), null);
|
|
6975
|
-
createRenderEffect(() => _el$
|
|
6976
|
-
return _el$
|
|
7193
|
+
createRenderEffect(() => _el$31.classList.toggle("paused", !!runtimeState2().supervisor.paused));
|
|
7194
|
+
return _el$26;
|
|
6977
7195
|
}
|
|
6978
|
-
}), _el$
|
|
6979
|
-
insert(_el$
|
|
7196
|
+
}), _el$104);
|
|
7197
|
+
insert(_el$25, createComponent(Show, {
|
|
6980
7198
|
get when() {
|
|
6981
7199
|
return sidebarTab() === "bookmarks";
|
|
6982
7200
|
},
|
|
6983
7201
|
get children() {
|
|
6984
|
-
var _el$
|
|
6985
|
-
insert(_el$
|
|
7202
|
+
var _el$41 = _tmpl$0$2(), _el$42 = _el$41.firstChild, _el$43 = _el$42.firstChild, _el$44 = _el$43.firstChild, _el$45 = _el$44.nextSibling, _el$47 = _el$42.nextSibling, _el$48 = _el$47.nextSibling, _el$49 = _el$48.firstChild, _el$50 = _el$49.firstChild, _el$51 = _el$50.nextSibling, _el$62 = _el$48.nextSibling, _el$63 = _el$62.firstChild, _el$64 = _el$63.firstChild, _el$65 = _el$64.nextSibling, _el$66 = _el$63.nextSibling, _el$67 = _el$62.nextSibling;
|
|
7203
|
+
insert(_el$45, (() => {
|
|
6986
7204
|
var _c$2 = memo(() => !!normalizedBookmarkSearch());
|
|
6987
7205
|
return () => _c$2() ? `${bookmarkMatchCount()} matches for "${bookmarkSearchQuery().trim()}"` : `${bookmarksState2().bookmarks.length} saved across ${bookmarkFolders().length} folders`;
|
|
6988
7206
|
})());
|
|
6989
|
-
insert(_el$
|
|
7207
|
+
insert(_el$42, createComponent(Show, {
|
|
6990
7208
|
get when() {
|
|
6991
7209
|
return currentTabSaved();
|
|
6992
7210
|
},
|
|
6993
7211
|
get children() {
|
|
6994
|
-
return _tmpl$
|
|
7212
|
+
return _tmpl$8$2();
|
|
6995
7213
|
}
|
|
6996
7214
|
}), null);
|
|
6997
|
-
_el$
|
|
6998
|
-
_el$
|
|
6999
|
-
insert(_el$
|
|
7215
|
+
_el$47.$$input = (e) => setBookmarkSearchQuery(e.currentTarget.value);
|
|
7216
|
+
_el$49.$$click = () => setBookmarkSaveExpanded((current) => !current);
|
|
7217
|
+
insert(_el$48, createComponent(Show, {
|
|
7000
7218
|
get when() {
|
|
7001
7219
|
return bookmarkSaveExpanded();
|
|
7002
7220
|
},
|
|
7003
7221
|
get children() {
|
|
7004
|
-
var _el$
|
|
7005
|
-
insert(_el$
|
|
7006
|
-
insert(_el$
|
|
7007
|
-
insert(_el$
|
|
7222
|
+
var _el$52 = _tmpl$9$2(), _el$53 = _el$52.firstChild, _el$54 = _el$53.nextSibling, _el$55 = _el$54.nextSibling, _el$56 = _el$55.firstChild, _el$57 = _el$55.nextSibling, _el$58 = _el$57.nextSibling, _el$59 = _el$58.nextSibling, _el$60 = _el$59.nextSibling, _el$61 = _el$60.nextSibling;
|
|
7223
|
+
insert(_el$53, () => currentTab()?.title || "No active page");
|
|
7224
|
+
insert(_el$54, () => currentTab()?.url || "Open a page to save it here.");
|
|
7225
|
+
insert(_el$55, createComponent(DropdownSelect, {
|
|
7008
7226
|
"class": "bookmark-select",
|
|
7009
7227
|
get value() {
|
|
7010
7228
|
return selectedFolderId();
|
|
@@ -7014,29 +7232,37 @@ ${contextBlock}` : contextBlock);
|
|
|
7014
7232
|
},
|
|
7015
7233
|
ariaLabel: "Bookmark folder",
|
|
7016
7234
|
onChange: (value) => setSelectedFolderId(value)
|
|
7017
|
-
}), _el$
|
|
7018
|
-
_el$
|
|
7019
|
-
_el$
|
|
7020
|
-
|
|
7021
|
-
|
|
7022
|
-
|
|
7235
|
+
}), _el$56);
|
|
7236
|
+
_el$56.$$click = () => void handleSaveBookmark();
|
|
7237
|
+
_el$57.$$input = (e) => setBookmarkNote(e.currentTarget.value);
|
|
7238
|
+
_el$58.$$input = (e) => setBookmarkIntent(e.currentTarget.value);
|
|
7239
|
+
_el$59.$$input = (e) => setBookmarkExpectedContent(e.currentTarget.value);
|
|
7240
|
+
_el$60.$$input = (e) => setBookmarkKeyFields(e.currentTarget.value);
|
|
7241
|
+
_el$61.$$input = (e) => setBookmarkAgentHints(e.currentTarget.value);
|
|
7242
|
+
createRenderEffect(() => _el$56.disabled = !currentTab()?.url);
|
|
7243
|
+
createRenderEffect(() => _el$57.value = bookmarkNote());
|
|
7244
|
+
createRenderEffect(() => _el$58.value = bookmarkIntent());
|
|
7245
|
+
createRenderEffect(() => _el$59.value = bookmarkExpectedContent());
|
|
7246
|
+
createRenderEffect(() => _el$60.value = bookmarkKeyFields());
|
|
7247
|
+
createRenderEffect(() => _el$61.value = bookmarkAgentHints());
|
|
7248
|
+
return _el$52;
|
|
7023
7249
|
}
|
|
7024
7250
|
}), null);
|
|
7025
|
-
_el$
|
|
7026
|
-
_el$
|
|
7027
|
-
_el$
|
|
7028
|
-
insert(_el$
|
|
7251
|
+
_el$62.addEventListener("submit", handleCreateFolder);
|
|
7252
|
+
_el$64.$$input = (e) => setNewFolderName(e.currentTarget.value);
|
|
7253
|
+
_el$65.$$input = (e) => setNewFolderSummary(e.currentTarget.value);
|
|
7254
|
+
insert(_el$67, createComponent(Show, {
|
|
7029
7255
|
get when() {
|
|
7030
7256
|
return filteredGroupedBookmarks().length > 0;
|
|
7031
7257
|
},
|
|
7032
7258
|
get fallback() {
|
|
7033
7259
|
return (() => {
|
|
7034
|
-
var _el$
|
|
7035
|
-
insert(_el$
|
|
7260
|
+
var _el$139 = _tmpl$35$1();
|
|
7261
|
+
insert(_el$139, (() => {
|
|
7036
7262
|
var _c$5 = memo(() => !!normalizedBookmarkSearch());
|
|
7037
7263
|
return () => _c$5() ? `No bookmarks matched "${bookmarkSearchQuery().trim()}".` : "No bookmarks saved yet.";
|
|
7038
7264
|
})());
|
|
7039
|
-
return _el$
|
|
7265
|
+
return _el$139;
|
|
7040
7266
|
})();
|
|
7041
7267
|
},
|
|
7042
7268
|
get children() {
|
|
@@ -7045,100 +7271,100 @@ ${contextBlock}` : contextBlock);
|
|
|
7045
7271
|
return filteredGroupedBookmarks();
|
|
7046
7272
|
},
|
|
7047
7273
|
children: (folder) => (() => {
|
|
7048
|
-
var _el$
|
|
7049
|
-
_el$
|
|
7274
|
+
var _el$140 = _tmpl$42$1(), _el$141 = _el$140.firstChild, _el$142 = _el$141.firstChild, _el$143 = _el$142.firstChild, _el$144 = _el$143.nextSibling, _el$145 = _el$144.firstChild, _el$146 = _el$145.nextSibling, _el$147 = _el$146.firstChild;
|
|
7275
|
+
_el$141.$$keydown = (e) => {
|
|
7050
7276
|
if (e.key === "Enter" || e.key === " ") {
|
|
7051
7277
|
e.preventDefault();
|
|
7052
7278
|
toggleFolderExpanded(folder.id);
|
|
7053
7279
|
}
|
|
7054
7280
|
};
|
|
7055
|
-
_el$
|
|
7056
|
-
insert(_el$
|
|
7057
|
-
insert(_el$
|
|
7058
|
-
insert(_el$
|
|
7281
|
+
_el$141.$$click = () => toggleFolderExpanded(folder.id);
|
|
7282
|
+
insert(_el$145, () => folder.name);
|
|
7283
|
+
insert(_el$146, () => folder.items.length, _el$147);
|
|
7284
|
+
insert(_el$144, createComponent(Show, {
|
|
7059
7285
|
get when() {
|
|
7060
7286
|
return folder.summary;
|
|
7061
7287
|
},
|
|
7062
7288
|
get children() {
|
|
7063
|
-
var _el$
|
|
7064
|
-
insert(_el$
|
|
7065
|
-
return _el$
|
|
7289
|
+
var _el$148 = _tmpl$36$1();
|
|
7290
|
+
insert(_el$148, () => folder.summary);
|
|
7291
|
+
return _el$148;
|
|
7066
7292
|
}
|
|
7067
7293
|
}), null);
|
|
7068
|
-
insert(_el$
|
|
7294
|
+
insert(_el$141, createComponent(Show, {
|
|
7069
7295
|
get when() {
|
|
7070
7296
|
return folder.id !== UNSORTED_FOLDER.id;
|
|
7071
7297
|
},
|
|
7072
7298
|
get children() {
|
|
7073
|
-
var _el$
|
|
7074
|
-
_el$
|
|
7299
|
+
var _el$149 = _tmpl$37$1(), _el$150 = _el$149.firstChild, _el$151 = _el$150.nextSibling;
|
|
7300
|
+
_el$150.$$click = (e) => {
|
|
7075
7301
|
e.stopPropagation();
|
|
7076
7302
|
setEditingFolderId(folder.id);
|
|
7077
7303
|
setEditingFolderName(folder.name);
|
|
7078
7304
|
setEditingFolderSummary(folder.summary || "");
|
|
7079
7305
|
};
|
|
7080
|
-
_el$
|
|
7306
|
+
_el$151.$$click = (e) => {
|
|
7081
7307
|
e.stopPropagation();
|
|
7082
7308
|
setDeletingFolderId(folder.id);
|
|
7083
7309
|
};
|
|
7084
|
-
return _el$
|
|
7310
|
+
return _el$149;
|
|
7085
7311
|
}
|
|
7086
7312
|
}), null);
|
|
7087
|
-
insert(_el$
|
|
7313
|
+
insert(_el$140, createComponent(Show, {
|
|
7088
7314
|
get when() {
|
|
7089
7315
|
return deletingFolderId() === folder.id;
|
|
7090
7316
|
},
|
|
7091
7317
|
get children() {
|
|
7092
|
-
var _el$
|
|
7093
|
-
_el$
|
|
7094
|
-
var _el$
|
|
7095
|
-
insert(_el$
|
|
7096
|
-
insert(_el$
|
|
7318
|
+
var _el$152 = _tmpl$39$1(), _el$153 = _el$152.firstChild, _el$154 = _el$153.firstChild, _el$156 = _el$154.nextSibling;
|
|
7319
|
+
_el$156.nextSibling;
|
|
7320
|
+
var _el$157 = _el$153.nextSibling, _el$159 = _el$157.firstChild, _el$160 = _el$159.nextSibling;
|
|
7321
|
+
insert(_el$153, () => folder.name, _el$156);
|
|
7322
|
+
insert(_el$153, (() => {
|
|
7097
7323
|
var _c$6 = memo(() => folder.items.length > 0);
|
|
7098
7324
|
return () => _c$6() ? ` This folder has ${folder.items.length} bookmark${folder.items.length === 1 ? "" : "s"}.` : "";
|
|
7099
7325
|
})(), null);
|
|
7100
|
-
insert(_el$
|
|
7326
|
+
insert(_el$157, createComponent(Show, {
|
|
7101
7327
|
get when() {
|
|
7102
7328
|
return folder.items.length > 0;
|
|
7103
7329
|
},
|
|
7104
7330
|
get children() {
|
|
7105
|
-
var _el$
|
|
7106
|
-
_el$
|
|
7107
|
-
return _el$
|
|
7331
|
+
var _el$158 = _tmpl$38$1();
|
|
7332
|
+
_el$158.$$click = () => void handleRemoveFolder(folder.id, false);
|
|
7333
|
+
return _el$158;
|
|
7108
7334
|
}
|
|
7109
|
-
}), _el$
|
|
7110
|
-
_el$
|
|
7111
|
-
insert(_el$
|
|
7112
|
-
_el$
|
|
7113
|
-
return _el$
|
|
7335
|
+
}), _el$159);
|
|
7336
|
+
_el$159.$$click = () => void handleRemoveFolder(folder.id, true);
|
|
7337
|
+
insert(_el$159, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
|
|
7338
|
+
_el$160.$$click = () => setDeletingFolderId(null);
|
|
7339
|
+
return _el$152;
|
|
7114
7340
|
}
|
|
7115
7341
|
}), null);
|
|
7116
|
-
insert(_el$
|
|
7342
|
+
insert(_el$140, createComponent(Show, {
|
|
7117
7343
|
get when() {
|
|
7118
7344
|
return editingFolderId() === folder.id;
|
|
7119
7345
|
},
|
|
7120
7346
|
get children() {
|
|
7121
|
-
var _el$
|
|
7122
|
-
_el$
|
|
7123
|
-
_el$
|
|
7124
|
-
_el$
|
|
7125
|
-
_el$
|
|
7347
|
+
var _el$161 = _tmpl$40$1(), _el$162 = _el$161.firstChild, _el$163 = _el$162.firstChild, _el$164 = _el$163.nextSibling, _el$165 = _el$162.nextSibling, _el$166 = _el$165.nextSibling;
|
|
7348
|
+
_el$163.$$input = (e) => setEditingFolderName(e.currentTarget.value);
|
|
7349
|
+
_el$164.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
|
|
7350
|
+
_el$165.$$click = () => void handleRenameFolder(folder.id);
|
|
7351
|
+
_el$166.$$click = () => {
|
|
7126
7352
|
setEditingFolderId(null);
|
|
7127
7353
|
setEditingFolderName("");
|
|
7128
7354
|
setEditingFolderSummary("");
|
|
7129
7355
|
};
|
|
7130
|
-
createRenderEffect(() => _el$
|
|
7131
|
-
createRenderEffect(() => _el$
|
|
7132
|
-
createRenderEffect(() => _el$
|
|
7133
|
-
return _el$
|
|
7356
|
+
createRenderEffect(() => _el$165.disabled = !editingFolderName().trim());
|
|
7357
|
+
createRenderEffect(() => _el$163.value = editingFolderName());
|
|
7358
|
+
createRenderEffect(() => _el$164.value = editingFolderSummary());
|
|
7359
|
+
return _el$161;
|
|
7134
7360
|
}
|
|
7135
7361
|
}), null);
|
|
7136
|
-
insert(_el$
|
|
7362
|
+
insert(_el$140, createComponent(Show, {
|
|
7137
7363
|
get when() {
|
|
7138
7364
|
return isFolderExpanded(folder.id);
|
|
7139
7365
|
},
|
|
7140
7366
|
get fallback() {
|
|
7141
|
-
return _tmpl$
|
|
7367
|
+
return _tmpl$43();
|
|
7142
7368
|
},
|
|
7143
7369
|
get children() {
|
|
7144
7370
|
return createComponent(Show, {
|
|
@@ -7146,116 +7372,204 @@ ${contextBlock}` : contextBlock);
|
|
|
7146
7372
|
return folder.items.length > 0;
|
|
7147
7373
|
},
|
|
7148
7374
|
get fallback() {
|
|
7149
|
-
return _tmpl$
|
|
7375
|
+
return _tmpl$44();
|
|
7150
7376
|
},
|
|
7151
7377
|
get children() {
|
|
7152
|
-
var _el$
|
|
7153
|
-
insert(_el$
|
|
7378
|
+
var _el$167 = _tmpl$41$1();
|
|
7379
|
+
insert(_el$167, createComponent(For, {
|
|
7154
7380
|
get each() {
|
|
7155
7381
|
return folder.items;
|
|
7156
7382
|
},
|
|
7157
7383
|
children: (bookmark) => (() => {
|
|
7158
|
-
var _el$
|
|
7159
|
-
_el$
|
|
7160
|
-
insert(_el$
|
|
7161
|
-
insert(_el$
|
|
7162
|
-
insert(_el$
|
|
7384
|
+
var _el$170 = _tmpl$51(), _el$171 = _el$170.firstChild, _el$172 = _el$171.firstChild, _el$173 = _el$172.nextSibling, _el$198 = _el$171.nextSibling, _el$199 = _el$198.firstChild, _el$200 = _el$199.nextSibling, _el$201 = _el$200.nextSibling;
|
|
7385
|
+
_el$171.$$click = () => void createTab(bookmark.url);
|
|
7386
|
+
insert(_el$172, () => bookmark.title || bookmark.url);
|
|
7387
|
+
insert(_el$173, () => bookmark.url);
|
|
7388
|
+
insert(_el$170, createComponent(Show, {
|
|
7163
7389
|
get when() {
|
|
7164
7390
|
return bookmark.note;
|
|
7165
7391
|
},
|
|
7166
7392
|
get children() {
|
|
7167
|
-
var _el$
|
|
7168
|
-
insert(_el$
|
|
7169
|
-
return _el$
|
|
7393
|
+
var _el$174 = _tmpl$45();
|
|
7394
|
+
insert(_el$174, () => bookmark.note);
|
|
7395
|
+
return _el$174;
|
|
7396
|
+
}
|
|
7397
|
+
}), _el$198);
|
|
7398
|
+
insert(_el$170, createComponent(Show, {
|
|
7399
|
+
get when() {
|
|
7400
|
+
return bookmark.intent || bookmark.expectedContent || (bookmark.keyFields?.length || 0) > 0 || (bookmark.agentHints && Object.keys(bookmark.agentHints).length || 0) > 0;
|
|
7401
|
+
},
|
|
7402
|
+
get children() {
|
|
7403
|
+
var _el$175 = _tmpl$45();
|
|
7404
|
+
insert(_el$175, createComponent(Show, {
|
|
7405
|
+
get when() {
|
|
7406
|
+
return bookmark.intent;
|
|
7407
|
+
},
|
|
7408
|
+
get children() {
|
|
7409
|
+
var _el$176 = _tmpl$46(), _el$177 = _el$176.firstChild;
|
|
7410
|
+
_el$177.nextSibling;
|
|
7411
|
+
insert(_el$176, () => bookmark.intent, null);
|
|
7412
|
+
return _el$176;
|
|
7413
|
+
}
|
|
7414
|
+
}), null);
|
|
7415
|
+
insert(_el$175, createComponent(Show, {
|
|
7416
|
+
get when() {
|
|
7417
|
+
return bookmark.expectedContent;
|
|
7418
|
+
},
|
|
7419
|
+
get children() {
|
|
7420
|
+
var _el$179 = _tmpl$47(), _el$180 = _el$179.firstChild;
|
|
7421
|
+
_el$180.nextSibling;
|
|
7422
|
+
insert(_el$179, () => bookmark.expectedContent, null);
|
|
7423
|
+
return _el$179;
|
|
7424
|
+
}
|
|
7425
|
+
}), null);
|
|
7426
|
+
insert(_el$175, createComponent(Show, {
|
|
7427
|
+
get when() {
|
|
7428
|
+
return (bookmark.keyFields?.length || 0) > 0;
|
|
7429
|
+
},
|
|
7430
|
+
get children() {
|
|
7431
|
+
var _el$182 = _tmpl$48(), _el$183 = _el$182.firstChild;
|
|
7432
|
+
_el$183.nextSibling;
|
|
7433
|
+
insert(_el$182, () => bookmark.keyFields?.join(", "), null);
|
|
7434
|
+
return _el$182;
|
|
7435
|
+
}
|
|
7436
|
+
}), null);
|
|
7437
|
+
insert(_el$175, createComponent(Show, {
|
|
7438
|
+
get when() {
|
|
7439
|
+
return memo(() => !!bookmark.agentHints)() && Object.keys(bookmark.agentHints).length > 0;
|
|
7440
|
+
},
|
|
7441
|
+
get children() {
|
|
7442
|
+
var _el$185 = _tmpl$49(), _el$186 = _el$185.firstChild;
|
|
7443
|
+
_el$186.nextSibling;
|
|
7444
|
+
insert(_el$185, () => Object.entries(bookmark.agentHints || {}).map(([key, hint]) => `${key}: ${hint}`).join(" • "), null);
|
|
7445
|
+
return _el$185;
|
|
7446
|
+
}
|
|
7447
|
+
}), null);
|
|
7448
|
+
return _el$175;
|
|
7449
|
+
}
|
|
7450
|
+
}), _el$198);
|
|
7451
|
+
insert(_el$170, createComponent(Show, {
|
|
7452
|
+
get when() {
|
|
7453
|
+
return editingBookmarkId() === bookmark.id;
|
|
7454
|
+
},
|
|
7455
|
+
get children() {
|
|
7456
|
+
var _el$188 = _tmpl$50(), _el$189 = _el$188.firstChild, _el$190 = _el$189.nextSibling, _el$191 = _el$190.nextSibling, _el$192 = _el$191.nextSibling, _el$193 = _el$192.nextSibling, _el$194 = _el$193.nextSibling, _el$195 = _el$194.nextSibling, _el$196 = _el$195.firstChild, _el$197 = _el$196.nextSibling;
|
|
7457
|
+
_el$189.$$input = (e) => setEditingBookmarkTitle(e.currentTarget.value);
|
|
7458
|
+
_el$190.$$input = (e) => setEditingBookmarkNote(e.currentTarget.value);
|
|
7459
|
+
_el$191.$$input = (e) => setEditingBookmarkIntent(e.currentTarget.value);
|
|
7460
|
+
_el$192.$$input = (e) => setEditingBookmarkExpectedContent(e.currentTarget.value);
|
|
7461
|
+
_el$193.$$input = (e) => setEditingBookmarkKeyFields(e.currentTarget.value);
|
|
7462
|
+
_el$194.$$input = (e) => setEditingBookmarkAgentHints(e.currentTarget.value);
|
|
7463
|
+
_el$196.$$click = () => void handleUpdateBookmark(bookmark.id);
|
|
7464
|
+
_el$197.$$click = resetBookmarkEditor;
|
|
7465
|
+
createRenderEffect(() => _el$189.value = editingBookmarkTitle());
|
|
7466
|
+
createRenderEffect(() => _el$190.value = editingBookmarkNote());
|
|
7467
|
+
createRenderEffect(() => _el$191.value = editingBookmarkIntent());
|
|
7468
|
+
createRenderEffect(() => _el$192.value = editingBookmarkExpectedContent());
|
|
7469
|
+
createRenderEffect(() => _el$193.value = editingBookmarkKeyFields());
|
|
7470
|
+
createRenderEffect(() => _el$194.value = editingBookmarkAgentHints());
|
|
7471
|
+
return _el$188;
|
|
7472
|
+
}
|
|
7473
|
+
}), _el$198);
|
|
7474
|
+
insert(_el$199, () => formatBookmarkDate(bookmark.savedAt));
|
|
7475
|
+
_el$200.$$click = () => editingBookmarkId() === bookmark.id ? resetBookmarkEditor() : startEditingBookmark(bookmark);
|
|
7476
|
+
insert(_el$200, () => editingBookmarkId() === bookmark.id ? "Close" : "Edit");
|
|
7477
|
+
_el$201.$$click = () => {
|
|
7478
|
+
if (editingBookmarkId() === bookmark.id) {
|
|
7479
|
+
resetBookmarkEditor();
|
|
7170
7480
|
}
|
|
7171
|
-
|
|
7172
|
-
|
|
7173
|
-
|
|
7174
|
-
|
|
7175
|
-
return _el$159;
|
|
7481
|
+
void removeBookmark(bookmark.id);
|
|
7482
|
+
};
|
|
7483
|
+
createRenderEffect(() => setAttribute(_el$170, "data-bookmark-id", bookmark.id));
|
|
7484
|
+
return _el$170;
|
|
7176
7485
|
})()
|
|
7177
7486
|
}));
|
|
7178
|
-
return _el$
|
|
7487
|
+
return _el$167;
|
|
7179
7488
|
}
|
|
7180
7489
|
});
|
|
7181
7490
|
}
|
|
7182
7491
|
}), null);
|
|
7183
|
-
createRenderEffect(() => _el$
|
|
7184
|
-
return _el$
|
|
7492
|
+
createRenderEffect(() => _el$143.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
|
|
7493
|
+
return _el$140;
|
|
7185
7494
|
})()
|
|
7186
7495
|
});
|
|
7187
7496
|
}
|
|
7188
7497
|
}));
|
|
7189
7498
|
createRenderEffect((_p$) => {
|
|
7190
7499
|
var _v$ = !!bookmarkSaveExpanded(), _v$2 = !newFolderName().trim();
|
|
7191
|
-
_v$ !== _p$.e && _el$
|
|
7192
|
-
_v$2 !== _p$.t && (_el$
|
|
7500
|
+
_v$ !== _p$.e && _el$51.classList.toggle("expanded", _p$.e = _v$);
|
|
7501
|
+
_v$2 !== _p$.t && (_el$66.disabled = _p$.t = _v$2);
|
|
7193
7502
|
return _p$;
|
|
7194
7503
|
}, {
|
|
7195
7504
|
e: void 0,
|
|
7196
7505
|
t: void 0
|
|
7197
7506
|
});
|
|
7198
|
-
createRenderEffect(() => _el$
|
|
7199
|
-
createRenderEffect(() => _el$
|
|
7200
|
-
createRenderEffect(() => _el$
|
|
7201
|
-
return _el$
|
|
7507
|
+
createRenderEffect(() => _el$47.value = bookmarkSearchQuery());
|
|
7508
|
+
createRenderEffect(() => _el$64.value = newFolderName());
|
|
7509
|
+
createRenderEffect(() => _el$65.value = newFolderSummary());
|
|
7510
|
+
return _el$41;
|
|
7202
7511
|
}
|
|
7203
|
-
}), _el$
|
|
7204
|
-
insert(_el$
|
|
7512
|
+
}), _el$104);
|
|
7513
|
+
insert(_el$25, createComponent(Show, {
|
|
7205
7514
|
get when() {
|
|
7206
7515
|
return sidebarTab() === "checkpoints";
|
|
7207
7516
|
},
|
|
7208
7517
|
get children() {
|
|
7209
|
-
var _el$
|
|
7210
|
-
_el$
|
|
7211
|
-
insert(_el$
|
|
7518
|
+
var _el$68 = _tmpl$10$2(), _el$69 = _el$68.firstChild, _el$70 = _el$69.firstChild, _el$71 = _el$70.firstChild, _el$72 = _el$71.nextSibling, _el$73 = _el$69.nextSibling, _el$74 = _el$73.firstChild, _el$75 = _el$74.firstChild, _el$76 = _el$75.nextSibling, _el$77 = _el$76.nextSibling;
|
|
7519
|
+
_el$74.nextSibling;
|
|
7520
|
+
insert(_el$72, (() => {
|
|
7212
7521
|
var _c$3 = memo(() => recentCheckpoints().length > 0);
|
|
7213
7522
|
return () => _c$3() ? `${recentCheckpoints().length} saved snapshots` : "Save and restore session snapshots";
|
|
7214
7523
|
})());
|
|
7215
|
-
_el$
|
|
7216
|
-
_el$
|
|
7524
|
+
_el$75.$$input = (e) => setCheckpointName(e.currentTarget.value);
|
|
7525
|
+
_el$76.$$input = (e) => setCheckpointNote(e.currentTarget.value);
|
|
7526
|
+
_el$77.$$click = async () => {
|
|
7217
7527
|
const name = checkpointName().trim();
|
|
7218
|
-
await createCheckpoint(name || void 0);
|
|
7528
|
+
await createCheckpoint(name || void 0, checkpointNote() || void 0);
|
|
7219
7529
|
setCheckpointName("");
|
|
7530
|
+
setCheckpointNote("");
|
|
7220
7531
|
};
|
|
7221
|
-
insert(_el$
|
|
7532
|
+
insert(_el$73, createComponent(Show, {
|
|
7222
7533
|
get when() {
|
|
7223
7534
|
return recentCheckpoints().length > 0;
|
|
7224
7535
|
},
|
|
7225
7536
|
get fallback() {
|
|
7226
|
-
return _tmpl$
|
|
7537
|
+
return _tmpl$52();
|
|
7227
7538
|
},
|
|
7228
7539
|
get children() {
|
|
7229
|
-
var _el$
|
|
7230
|
-
insert(_el$
|
|
7540
|
+
var _el$79 = _tmpl$1$2();
|
|
7541
|
+
insert(_el$79, createComponent(For, {
|
|
7231
7542
|
get each() {
|
|
7232
7543
|
return recentCheckpoints();
|
|
7233
7544
|
},
|
|
7234
7545
|
children: (checkpoint, i) => (() => {
|
|
7235
|
-
var _el$
|
|
7236
|
-
insert(_el$
|
|
7546
|
+
var _el$203 = _tmpl$54(), _el$204 = _el$203.firstChild, _el$205 = _el$204.firstChild, _el$207 = _el$204.nextSibling, _el$208 = _el$207.firstChild, _el$209 = _el$208.nextSibling, _el$210 = _el$209.nextSibling, _el$211 = _el$210.nextSibling;
|
|
7547
|
+
insert(_el$204, createComponent(Show, {
|
|
7237
7548
|
get when() {
|
|
7238
7549
|
return i() < recentCheckpoints().length - 1;
|
|
7239
7550
|
},
|
|
7240
7551
|
get children() {
|
|
7241
|
-
return _tmpl$
|
|
7552
|
+
return _tmpl$53();
|
|
7242
7553
|
}
|
|
7243
7554
|
}), null);
|
|
7244
|
-
insert(_el$
|
|
7245
|
-
insert(_el$
|
|
7246
|
-
_el$
|
|
7247
|
-
|
|
7248
|
-
|
|
7555
|
+
insert(_el$208, () => checkpoint.name);
|
|
7556
|
+
insert(_el$209, () => new Date(checkpoint.createdAt).toLocaleString());
|
|
7557
|
+
_el$210.addEventListener("blur", (e) => void updateCheckpointNote(checkpoint.id, e.currentTarget.value));
|
|
7558
|
+
_el$211.$$click = () => void restoreCheckpoint(checkpoint.id);
|
|
7559
|
+
createRenderEffect(() => _el$205.classList.toggle("latest", !!(i() === 0)));
|
|
7560
|
+
createRenderEffect(() => _el$210.value = checkpoint.note || "");
|
|
7561
|
+
return _el$203;
|
|
7249
7562
|
})()
|
|
7250
7563
|
}));
|
|
7251
|
-
return _el$
|
|
7564
|
+
return _el$79;
|
|
7252
7565
|
}
|
|
7253
7566
|
}), null);
|
|
7254
|
-
createRenderEffect(() => _el$
|
|
7255
|
-
|
|
7567
|
+
createRenderEffect(() => _el$75.value = checkpointName());
|
|
7568
|
+
createRenderEffect(() => _el$76.value = checkpointNote());
|
|
7569
|
+
return _el$68;
|
|
7256
7570
|
}
|
|
7257
|
-
}), _el$
|
|
7258
|
-
insert(_el$
|
|
7571
|
+
}), _el$104);
|
|
7572
|
+
insert(_el$25, createComponent(Show, {
|
|
7259
7573
|
get when() {
|
|
7260
7574
|
return sidebarTab() === "automation";
|
|
7261
7575
|
},
|
|
@@ -7264,41 +7578,68 @@ ${contextBlock}` : contextBlock);
|
|
|
7264
7578
|
onRun: () => setSidebarTab("supervisor")
|
|
7265
7579
|
});
|
|
7266
7580
|
}
|
|
7267
|
-
}), _el$
|
|
7268
|
-
insert(_el$
|
|
7581
|
+
}), _el$104);
|
|
7582
|
+
insert(_el$25, createComponent(Show, {
|
|
7269
7583
|
get when() {
|
|
7270
7584
|
return sidebarTab() === "history";
|
|
7271
7585
|
},
|
|
7272
7586
|
get children() {
|
|
7273
|
-
var _el$
|
|
7274
|
-
_el$
|
|
7587
|
+
var _el$80 = _tmpl$12$2(), _el$81 = _el$80.firstChild, _el$82 = _el$81.firstChild, _el$83 = _el$82.nextSibling, _el$84 = _el$81.nextSibling;
|
|
7588
|
+
_el$83.$$click = async () => {
|
|
7275
7589
|
await history.clear();
|
|
7276
7590
|
};
|
|
7277
|
-
insert(_el$
|
|
7591
|
+
insert(_el$84, createComponent(For, {
|
|
7278
7592
|
get each() {
|
|
7279
7593
|
return history.historyState().entries;
|
|
7280
7594
|
},
|
|
7281
7595
|
children: (entry) => (() => {
|
|
7282
|
-
var _el$
|
|
7283
|
-
_el$
|
|
7284
|
-
insert(_el$
|
|
7285
|
-
insert(_el$
|
|
7286
|
-
insert(_el$
|
|
7287
|
-
return _el$
|
|
7596
|
+
var _el$212 = _tmpl$55(), _el$213 = _el$212.firstChild, _el$214 = _el$213.nextSibling, _el$215 = _el$214.nextSibling;
|
|
7597
|
+
_el$212.$$click = () => createTab(entry.url);
|
|
7598
|
+
insert(_el$213, () => entry.title || entry.url);
|
|
7599
|
+
insert(_el$214, () => entry.url);
|
|
7600
|
+
insert(_el$215, () => new Date(entry.visitedAt).toLocaleString());
|
|
7601
|
+
return _el$212;
|
|
7288
7602
|
})()
|
|
7289
7603
|
}), null);
|
|
7290
|
-
insert(_el$
|
|
7604
|
+
insert(_el$84, createComponent(Show, {
|
|
7291
7605
|
get when() {
|
|
7292
7606
|
return history.historyState().entries.length === 0;
|
|
7293
7607
|
},
|
|
7294
7608
|
get children() {
|
|
7295
|
-
return _tmpl$
|
|
7609
|
+
return _tmpl$11$2();
|
|
7296
7610
|
}
|
|
7297
7611
|
}), null);
|
|
7298
|
-
return _el$
|
|
7612
|
+
return _el$80;
|
|
7299
7613
|
}
|
|
7300
|
-
}), _el$
|
|
7301
|
-
insert(_el$
|
|
7614
|
+
}), _el$104);
|
|
7615
|
+
insert(_el$25, createComponent(Show, {
|
|
7616
|
+
get when() {
|
|
7617
|
+
return sidebarTab() === "diff";
|
|
7618
|
+
},
|
|
7619
|
+
get children() {
|
|
7620
|
+
var _el$86 = _tmpl$13$1(), _el$87 = _el$86.firstChild, _el$88 = _el$87.firstChild, _el$89 = _el$88.nextSibling;
|
|
7621
|
+
insert(_el$89, () => isPremium() ? "Page change timeline" : "Premium feature");
|
|
7622
|
+
insert(_el$86, createComponent(Show, {
|
|
7623
|
+
get when() {
|
|
7624
|
+
return isPremium();
|
|
7625
|
+
},
|
|
7626
|
+
get fallback() {
|
|
7627
|
+
return (() => {
|
|
7628
|
+
var _el$216 = _tmpl$56(), _el$217 = _el$216.firstChild, _el$218 = _el$217.nextSibling, _el$219 = _el$218.nextSibling, _el$220 = _el$219.firstChild, _el$221 = _el$220.nextSibling;
|
|
7629
|
+
_el$220.$$click = () => void window.vessel.premium.checkout(premiumState().email || void 0).catch(() => {
|
|
7630
|
+
});
|
|
7631
|
+
_el$221.$$click = openPremiumDetails;
|
|
7632
|
+
return _el$216;
|
|
7633
|
+
})();
|
|
7634
|
+
},
|
|
7635
|
+
get children() {
|
|
7636
|
+
return createComponent(PageDiffTimeline, {});
|
|
7637
|
+
}
|
|
7638
|
+
}), null);
|
|
7639
|
+
return _el$86;
|
|
7640
|
+
}
|
|
7641
|
+
}), _el$104);
|
|
7642
|
+
insert(_el$25, createComponent(Show, {
|
|
7302
7643
|
get when() {
|
|
7303
7644
|
return sidebarTab() === "chat";
|
|
7304
7645
|
},
|
|
@@ -7308,23 +7649,23 @@ ${contextBlock}` : contextBlock);
|
|
|
7308
7649
|
return !isPremium();
|
|
7309
7650
|
},
|
|
7310
7651
|
get children() {
|
|
7311
|
-
var _el$
|
|
7312
|
-
_el$
|
|
7313
|
-
_el$
|
|
7314
|
-
return _el$
|
|
7652
|
+
var _el$90 = _tmpl$14$1(), _el$91 = _el$90.firstChild, _el$92 = _el$91.nextSibling, _el$93 = _el$92.nextSibling, _el$94 = _el$93.firstChild, _el$95 = _el$94.nextSibling;
|
|
7653
|
+
_el$94.$$click = () => openPremiumCheckout("chat_banner_clicked");
|
|
7654
|
+
_el$95.$$click = openPremiumDetails;
|
|
7655
|
+
return _el$90;
|
|
7315
7656
|
}
|
|
7316
7657
|
}), createComponent(For, {
|
|
7317
7658
|
get each() {
|
|
7318
7659
|
return messages2();
|
|
7319
7660
|
},
|
|
7320
7661
|
children: (msg) => (() => {
|
|
7321
|
-
var _el$
|
|
7322
|
-
insert(_el$
|
|
7662
|
+
var _el$222 = _tmpl$57();
|
|
7663
|
+
insert(_el$222, createComponent(MarkdownMessage, {
|
|
7323
7664
|
get content() {
|
|
7324
7665
|
return msg.content;
|
|
7325
7666
|
}
|
|
7326
7667
|
}), null);
|
|
7327
|
-
insert(_el$
|
|
7668
|
+
insert(_el$222, createComponent(Show, {
|
|
7328
7669
|
get when() {
|
|
7329
7670
|
return memo(() => msg.role === "assistant")() ? getPremiumPromptKind(msg.content) : null;
|
|
7330
7671
|
},
|
|
@@ -7337,31 +7678,31 @@ ${contextBlock}` : contextBlock);
|
|
|
7337
7678
|
onOpenSettings: openPremiumDetails
|
|
7338
7679
|
})
|
|
7339
7680
|
}), null);
|
|
7340
|
-
createRenderEffect(() => className(_el$
|
|
7341
|
-
return _el$
|
|
7681
|
+
createRenderEffect(() => className(_el$222, `message message-${msg.role}`));
|
|
7682
|
+
return _el$222;
|
|
7342
7683
|
})()
|
|
7343
7684
|
}), createComponent(Show, {
|
|
7344
7685
|
get when() {
|
|
7345
7686
|
return isStreaming2();
|
|
7346
7687
|
},
|
|
7347
7688
|
get children() {
|
|
7348
|
-
var _el$
|
|
7349
|
-
insert(_el$
|
|
7689
|
+
var _el$96 = _tmpl$17$1(), _el$97 = _el$96.firstChild;
|
|
7690
|
+
insert(_el$97, createComponent(Show, {
|
|
7350
7691
|
get when() {
|
|
7351
7692
|
return hasFirstChunk2();
|
|
7352
7693
|
},
|
|
7353
7694
|
get fallback() {
|
|
7354
|
-
return _tmpl$
|
|
7695
|
+
return _tmpl$58();
|
|
7355
7696
|
},
|
|
7356
7697
|
get children() {
|
|
7357
|
-
var _el$
|
|
7358
|
-
_el$
|
|
7359
|
-
insert(_el$
|
|
7698
|
+
var _el$98 = _tmpl$16$1(), _el$99 = _el$98.firstChild, _el$100 = _el$99.firstChild;
|
|
7699
|
+
_el$100.nextSibling;
|
|
7700
|
+
insert(_el$98, createComponent(MarkdownMessage, {
|
|
7360
7701
|
get content() {
|
|
7361
7702
|
return streamingText2();
|
|
7362
7703
|
}
|
|
7363
|
-
}), _el$
|
|
7364
|
-
insert(_el$
|
|
7704
|
+
}), _el$99);
|
|
7705
|
+
insert(_el$98, createComponent(Show, {
|
|
7365
7706
|
get when() {
|
|
7366
7707
|
return getPremiumPromptKind(streamingText2());
|
|
7367
7708
|
},
|
|
@@ -7373,21 +7714,21 @@ ${contextBlock}` : contextBlock);
|
|
|
7373
7714
|
onStartTrial: () => openPremiumCheckout(kind() === "premium_gate" ? "premium_gate_clicked" : "iteration_limit_clicked"),
|
|
7374
7715
|
onOpenSettings: openPremiumDetails
|
|
7375
7716
|
})
|
|
7376
|
-
}), _el$
|
|
7377
|
-
insert(_el$
|
|
7717
|
+
}), _el$99);
|
|
7718
|
+
insert(_el$99, createComponent(Show, {
|
|
7378
7719
|
get when() {
|
|
7379
7720
|
return elapsedSeconds() > 0;
|
|
7380
7721
|
},
|
|
7381
7722
|
get children() {
|
|
7382
|
-
var _el$
|
|
7383
|
-
insert(_el$
|
|
7384
|
-
return _el$
|
|
7723
|
+
var _el$102 = _tmpl$15$1();
|
|
7724
|
+
insert(_el$102, () => ` • ${elapsedSeconds()}s`);
|
|
7725
|
+
return _el$102;
|
|
7385
7726
|
}
|
|
7386
7727
|
}), null);
|
|
7387
|
-
return _el$
|
|
7728
|
+
return _el$98;
|
|
7388
7729
|
}
|
|
7389
7730
|
}));
|
|
7390
|
-
return _el$
|
|
7731
|
+
return _el$96;
|
|
7391
7732
|
}
|
|
7392
7733
|
}), createComponent(Show, {
|
|
7393
7734
|
get when() {
|
|
@@ -7399,22 +7740,22 @@ ${contextBlock}` : contextBlock);
|
|
|
7399
7740
|
return runtimeState2().supervisor.pendingApprovals;
|
|
7400
7741
|
},
|
|
7401
7742
|
children: (approval) => (() => {
|
|
7402
|
-
var _el$
|
|
7403
|
-
insert(_el$
|
|
7404
|
-
insert(_el$
|
|
7743
|
+
var _el$224 = _tmpl$60(), _el$225 = _el$224.firstChild, _el$226 = _el$225.nextSibling, _el$227 = _el$226.firstChild, _el$228 = _el$227.firstChild, _el$229 = _el$228.nextSibling, _el$231 = _el$227.nextSibling, _el$232 = _el$231.nextSibling, _el$233 = _el$232.firstChild, _el$234 = _el$233.nextSibling;
|
|
7744
|
+
insert(_el$229, () => approval.name);
|
|
7745
|
+
insert(_el$226, createComponent(Show, {
|
|
7405
7746
|
get when() {
|
|
7406
7747
|
return approval.argsSummary;
|
|
7407
7748
|
},
|
|
7408
7749
|
get children() {
|
|
7409
|
-
var _el$
|
|
7410
|
-
insert(_el$
|
|
7411
|
-
return _el$
|
|
7750
|
+
var _el$230 = _tmpl$59();
|
|
7751
|
+
insert(_el$230, () => approval.argsSummary);
|
|
7752
|
+
return _el$230;
|
|
7412
7753
|
}
|
|
7413
|
-
}), _el$
|
|
7414
|
-
insert(_el$
|
|
7415
|
-
_el$
|
|
7416
|
-
_el$
|
|
7417
|
-
return _el$
|
|
7754
|
+
}), _el$231);
|
|
7755
|
+
insert(_el$231, () => approval.reason);
|
|
7756
|
+
_el$233.$$click = () => void resolveApproval(approval.id, true);
|
|
7757
|
+
_el$234.$$click = () => void resolveApproval(approval.id, false);
|
|
7758
|
+
return _el$224;
|
|
7418
7759
|
})()
|
|
7419
7760
|
});
|
|
7420
7761
|
}
|
|
@@ -7423,13 +7764,13 @@ ${contextBlock}` : contextBlock);
|
|
|
7423
7764
|
return memo(() => messages2().length === 0)() && !isStreaming2();
|
|
7424
7765
|
},
|
|
7425
7766
|
get children() {
|
|
7426
|
-
return _tmpl$
|
|
7767
|
+
return _tmpl$18$1();
|
|
7427
7768
|
}
|
|
7428
7769
|
})];
|
|
7429
7770
|
}
|
|
7430
|
-
}), _el$
|
|
7771
|
+
}), _el$104);
|
|
7431
7772
|
var _ref$ = messagesEndRef;
|
|
7432
|
-
typeof _ref$ === "function" ? use(_ref$, _el$
|
|
7773
|
+
typeof _ref$ === "function" ? use(_ref$, _el$104) : messagesEndRef = _el$104;
|
|
7433
7774
|
insert(_el$9, createComponent(Show, {
|
|
7434
7775
|
get when() {
|
|
7435
7776
|
return sidebarTab() === "chat";
|
|
@@ -7440,125 +7781,125 @@ ${contextBlock}` : contextBlock);
|
|
|
7440
7781
|
return isStreaming2() || messages2().length > 0;
|
|
7441
7782
|
},
|
|
7442
7783
|
get children() {
|
|
7443
|
-
var _el$
|
|
7444
|
-
insert(_el$
|
|
7784
|
+
var _el$105 = _tmpl$21$1();
|
|
7785
|
+
insert(_el$105, createComponent(Show, {
|
|
7445
7786
|
get when() {
|
|
7446
7787
|
return isStreaming2();
|
|
7447
7788
|
},
|
|
7448
7789
|
get children() {
|
|
7449
|
-
var _el$
|
|
7450
|
-
_el$
|
|
7451
|
-
return _el$
|
|
7790
|
+
var _el$106 = _tmpl$19$1();
|
|
7791
|
+
_el$106.$$click = () => cancel();
|
|
7792
|
+
return _el$106;
|
|
7452
7793
|
}
|
|
7453
7794
|
}), null);
|
|
7454
|
-
insert(_el$
|
|
7795
|
+
insert(_el$105, createComponent(Show, {
|
|
7455
7796
|
get when() {
|
|
7456
7797
|
return memo(() => !!!isStreaming2())() && messages2().length > 0;
|
|
7457
7798
|
},
|
|
7458
7799
|
get children() {
|
|
7459
|
-
var _el$
|
|
7460
|
-
_el$
|
|
7461
|
-
return _el$
|
|
7800
|
+
var _el$107 = _tmpl$20$1();
|
|
7801
|
+
_el$107.$$click = handleRetry;
|
|
7802
|
+
return _el$107;
|
|
7462
7803
|
}
|
|
7463
7804
|
}), null);
|
|
7464
|
-
return _el$
|
|
7805
|
+
return _el$105;
|
|
7465
7806
|
}
|
|
7466
7807
|
}), createComponent(Show, {
|
|
7467
7808
|
get when() {
|
|
7468
7809
|
return highlightCount() > 0;
|
|
7469
7810
|
},
|
|
7470
7811
|
get children() {
|
|
7471
|
-
var _el$
|
|
7472
|
-
_el$
|
|
7473
|
-
var _el$
|
|
7474
|
-
_el$
|
|
7475
|
-
_el$
|
|
7476
|
-
insert(_el$
|
|
7812
|
+
var _el$108 = _tmpl$22$1(), _el$109 = _el$108.firstChild, _el$110 = _el$109.nextSibling;
|
|
7813
|
+
_el$110.firstChild;
|
|
7814
|
+
var _el$112 = _el$110.nextSibling;
|
|
7815
|
+
_el$109.$$click = () => void scrollToHighlight(highlightIndex() - 1);
|
|
7816
|
+
_el$110.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex());
|
|
7817
|
+
insert(_el$110, (() => {
|
|
7477
7818
|
var _c$4 = memo(() => highlightIndex() >= 0);
|
|
7478
7819
|
return () => _c$4() ? `${highlightIndex() + 1} / ${highlightCount()}` : `${highlightCount()} highlight${highlightCount() > 1 ? "s" : ""}`;
|
|
7479
7820
|
})(), null);
|
|
7480
|
-
_el$
|
|
7821
|
+
_el$112.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex() + 1);
|
|
7481
7822
|
createRenderEffect((_p$) => {
|
|
7482
7823
|
var _v$3 = highlightIndex() <= 0, _v$4 = highlightIndex() >= highlightCount() - 1;
|
|
7483
|
-
_v$3 !== _p$.e && (_el$
|
|
7484
|
-
_v$4 !== _p$.t && (_el$
|
|
7824
|
+
_v$3 !== _p$.e && (_el$109.disabled = _p$.e = _v$3);
|
|
7825
|
+
_v$4 !== _p$.t && (_el$112.disabled = _p$.t = _v$4);
|
|
7485
7826
|
return _p$;
|
|
7486
7827
|
}, {
|
|
7487
7828
|
e: void 0,
|
|
7488
7829
|
t: void 0
|
|
7489
7830
|
});
|
|
7490
|
-
return _el$
|
|
7831
|
+
return _el$108;
|
|
7491
7832
|
}
|
|
7492
7833
|
}), createComponent(Show, {
|
|
7493
7834
|
get when() {
|
|
7494
7835
|
return queueNotice2() !== null || pendingQueryCount() > 0;
|
|
7495
7836
|
},
|
|
7496
7837
|
get children() {
|
|
7497
|
-
var _el$
|
|
7498
|
-
insert(_el$
|
|
7499
|
-
insert(_el$
|
|
7838
|
+
var _el$113 = _tmpl$25$1(), _el$114 = _el$113.firstChild, _el$115 = _el$114.firstChild;
|
|
7839
|
+
insert(_el$115, () => queueNotice2() ?? `Queued ${pendingQueryCount()}/${pendingQueryLimit}.`);
|
|
7840
|
+
insert(_el$114, createComponent(Show, {
|
|
7500
7841
|
get when() {
|
|
7501
7842
|
return pendingQueryCount() > 0;
|
|
7502
7843
|
},
|
|
7503
7844
|
get children() {
|
|
7504
|
-
var _el$
|
|
7505
|
-
_el$
|
|
7506
|
-
return _el$
|
|
7845
|
+
var _el$116 = _tmpl$23$1();
|
|
7846
|
+
_el$116.$$click = () => clearPendingQueries();
|
|
7847
|
+
return _el$116;
|
|
7507
7848
|
}
|
|
7508
7849
|
}), null);
|
|
7509
|
-
insert(_el$
|
|
7850
|
+
insert(_el$113, createComponent(Show, {
|
|
7510
7851
|
get when() {
|
|
7511
7852
|
return pendingQueries2().length > 0;
|
|
7512
7853
|
},
|
|
7513
7854
|
get children() {
|
|
7514
|
-
var _el$
|
|
7515
|
-
insert(_el$
|
|
7855
|
+
var _el$117 = _tmpl$24$1();
|
|
7856
|
+
insert(_el$117, createComponent(For, {
|
|
7516
7857
|
get each() {
|
|
7517
7858
|
return pendingQueries2();
|
|
7518
7859
|
},
|
|
7519
7860
|
children: (pendingPrompt, index) => (() => {
|
|
7520
|
-
var _el$
|
|
7521
|
-
setAttribute(_el$
|
|
7522
|
-
insert(_el$
|
|
7523
|
-
_el$
|
|
7524
|
-
createRenderEffect(() => setAttribute(_el$
|
|
7525
|
-
return _el$
|
|
7861
|
+
var _el$235 = _tmpl$61(), _el$236 = _el$235.firstChild, _el$237 = _el$236.nextSibling;
|
|
7862
|
+
setAttribute(_el$236, "title", pendingPrompt);
|
|
7863
|
+
insert(_el$236, pendingPrompt);
|
|
7864
|
+
_el$237.$$click = () => removePendingQuery(index());
|
|
7865
|
+
createRenderEffect(() => setAttribute(_el$237, "aria-label", `Remove queued prompt ${index() + 1}`));
|
|
7866
|
+
return _el$235;
|
|
7526
7867
|
})()
|
|
7527
7868
|
}));
|
|
7528
|
-
return _el$
|
|
7869
|
+
return _el$117;
|
|
7529
7870
|
}
|
|
7530
7871
|
}), null);
|
|
7531
|
-
return _el$
|
|
7872
|
+
return _el$113;
|
|
7532
7873
|
}
|
|
7533
7874
|
}), (() => {
|
|
7534
|
-
var _el$
|
|
7535
|
-
_el$
|
|
7875
|
+
var _el$118 = _tmpl$26$1(), _el$119 = _el$118.firstChild, _el$120 = _el$119.nextSibling;
|
|
7876
|
+
_el$119.$$keydown = (e) => {
|
|
7536
7877
|
if (e.key === "Enter" && !e.shiftKey) {
|
|
7537
7878
|
e.preventDefault();
|
|
7538
7879
|
void handleChatSend();
|
|
7539
7880
|
}
|
|
7540
7881
|
};
|
|
7541
|
-
_el$
|
|
7882
|
+
_el$119.$$input = (e) => setChatInput(e.currentTarget.value);
|
|
7542
7883
|
var _ref$2 = chatInputRef;
|
|
7543
|
-
typeof _ref$2 === "function" ? use(_ref$2, _el$
|
|
7544
|
-
_el$
|
|
7545
|
-
insert(_el$
|
|
7884
|
+
typeof _ref$2 === "function" ? use(_ref$2, _el$119) : chatInputRef = _el$119;
|
|
7885
|
+
_el$120.$$click = () => void handleChatSend();
|
|
7886
|
+
insert(_el$120, () => isStreaming2() ? "Queue" : "Send");
|
|
7546
7887
|
createRenderEffect((_p$) => {
|
|
7547
7888
|
var _v$5 = isStreaming2() ? "Send now to queue the next prompt..." : "Ask anything...", _v$6 = !chatInput().trim();
|
|
7548
|
-
_v$5 !== _p$.e && setAttribute(_el$
|
|
7549
|
-
_v$6 !== _p$.t && (_el$
|
|
7889
|
+
_v$5 !== _p$.e && setAttribute(_el$119, "placeholder", _p$.e = _v$5);
|
|
7890
|
+
_v$6 !== _p$.t && (_el$120.disabled = _p$.t = _v$6);
|
|
7550
7891
|
return _p$;
|
|
7551
7892
|
}, {
|
|
7552
7893
|
e: void 0,
|
|
7553
7894
|
t: void 0
|
|
7554
7895
|
});
|
|
7555
|
-
createRenderEffect(() => _el$
|
|
7556
|
-
return _el$
|
|
7896
|
+
createRenderEffect(() => _el$119.value = chatInput());
|
|
7897
|
+
return _el$118;
|
|
7557
7898
|
})()];
|
|
7558
7899
|
}
|
|
7559
7900
|
}), null);
|
|
7560
7901
|
createRenderEffect((_p$) => {
|
|
7561
|
-
var _v$7 = `${sidebarWidth2()}px`, _v$8 = !!isDragging(), _v$9 = !!(sidebarTab() === "supervisor"), _v$0 = sidebarTab() === "supervisor", _v$1 = !!(sidebarTab() === "bookmarks"), _v$10 = sidebarTab() === "bookmarks", _v$11 = !!(sidebarTab() === "checkpoints"), _v$12 = sidebarTab() === "checkpoints", _v$13 = !!(sidebarTab() === "chat"), _v$14 = sidebarTab() === "chat", _v$15 = !!(sidebarTab() === "automation"), _v$16 = sidebarTab() === "automation", _v$17 = !!(sidebarTab() === "history"), _v$18 = sidebarTab() === "history";
|
|
7902
|
+
var _v$7 = `${sidebarWidth2()}px`, _v$8 = !!isDragging(), _v$9 = !!(sidebarTab() === "supervisor"), _v$0 = sidebarTab() === "supervisor", _v$1 = !!(sidebarTab() === "bookmarks"), _v$10 = sidebarTab() === "bookmarks", _v$11 = !!(sidebarTab() === "checkpoints"), _v$12 = sidebarTab() === "checkpoints", _v$13 = !!(sidebarTab() === "chat"), _v$14 = sidebarTab() === "chat", _v$15 = !!(sidebarTab() === "automation"), _v$16 = sidebarTab() === "automation", _v$17 = !!(sidebarTab() === "history"), _v$18 = sidebarTab() === "history", _v$19 = !!(sidebarTab() === "diff"), _v$20 = sidebarTab() === "diff";
|
|
7562
7903
|
_v$7 !== _p$.e && setStyleProperty(_el$9, "width", _p$.e = _v$7);
|
|
7563
7904
|
_v$8 !== _p$.t && _el$0.classList.toggle("dragging", _p$.t = _v$8);
|
|
7564
7905
|
_v$9 !== _p$.a && _el$16.classList.toggle("active", _p$.a = _v$9);
|
|
@@ -7573,6 +7914,8 @@ ${contextBlock}` : contextBlock);
|
|
|
7573
7914
|
_v$16 !== _p$.u && setAttribute(_el$22, "aria-selected", _p$.u = _v$16);
|
|
7574
7915
|
_v$17 !== _p$.c && _el$23.classList.toggle("active", _p$.c = _v$17);
|
|
7575
7916
|
_v$18 !== _p$.w && setAttribute(_el$23, "aria-selected", _p$.w = _v$18);
|
|
7917
|
+
_v$19 !== _p$.m && _el$24.classList.toggle("active", _p$.m = _v$19);
|
|
7918
|
+
_v$20 !== _p$.f && setAttribute(_el$24, "aria-selected", _p$.f = _v$20);
|
|
7576
7919
|
return _p$;
|
|
7577
7920
|
}, {
|
|
7578
7921
|
e: void 0,
|
|
@@ -7588,7 +7931,9 @@ ${contextBlock}` : contextBlock);
|
|
|
7588
7931
|
l: void 0,
|
|
7589
7932
|
u: void 0,
|
|
7590
7933
|
c: void 0,
|
|
7591
|
-
w: void 0
|
|
7934
|
+
w: void 0,
|
|
7935
|
+
m: void 0,
|
|
7936
|
+
f: void 0
|
|
7592
7937
|
});
|
|
7593
7938
|
return _el$9;
|
|
7594
7939
|
}
|
|
@@ -8016,6 +8361,14 @@ const DevToolsPanel = () => {
|
|
|
8016
8361
|
})();
|
|
8017
8362
|
};
|
|
8018
8363
|
delegateEvents(["click", "input"]);
|
|
8364
|
+
const SEARCH_ENGINE_PRESETS = {
|
|
8365
|
+
duckduckgo: { label: "DuckDuckGo", url: "https://duckduckgo.com/?q=" },
|
|
8366
|
+
google: { label: "Google", url: "https://www.google.com/search?q=" },
|
|
8367
|
+
bing: { label: "Bing", url: "https://www.bing.com/search?q=" },
|
|
8368
|
+
brave: { label: "Brave Search", url: "https://search.brave.com/search?q=" },
|
|
8369
|
+
ecosia: { label: "Ecosia", url: "https://www.ecosia.org/search?q=" },
|
|
8370
|
+
kagi: { label: "Kagi", url: "https://kagi.com/search?q=" }
|
|
8371
|
+
};
|
|
8019
8372
|
const PROVIDERS = {
|
|
8020
8373
|
anthropic: {
|
|
8021
8374
|
id: "anthropic",
|
|
@@ -8116,7 +8469,7 @@ const PROVIDERS = {
|
|
|
8116
8469
|
apiKeyHint: "Optional — only if your endpoint requires authentication"
|
|
8117
8470
|
}
|
|
8118
8471
|
};
|
|
8119
|
-
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=vault-entries>`), _tmpl$6$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$7 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$8 = /* @__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$9 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$0 = /* @__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$1 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$10 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$11 = /* @__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$12 = /* @__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$13 = /* @__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$14 = /* @__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$15 = /* @__PURE__ */ template(`<span class=vault-premium-badge>Premium`), _tmpl$16 = /* @__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$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(`<textarea class="settings-input settings-textarea"rows=4>`), _tmpl$22 = /* @__PURE__ */ template(`<p class=settings-hint>`), _tmpl$23 = /* @__PURE__ */ template(`<p class=settings-hint>Restrict which domains can be navigated to. Use allowlist mode for kiosk or supervised browsing, blocklist to block specific sites.`), _tmpl$24 = /* @__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=download-path>Download Location</label><input id=download-path class=settings-input placeholder="Default: ~/Downloads"><p class=settings-hint>Directory for saved files. Leave blank to use the system default Downloads folder.</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-label>Saved Sessions</label><p class=settings-hint style=margin-bottom:10px>Save the current browser state (tabs, cookies, storage) as a named session. Restore it later from this panel.</p><div class=premium-activate-row style=margin-bottom:8px><input class="settings-input premium-email-input"placeholder="Session name"><button class="premium-btn premium-btn-activate">Save Current</button></div></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-section-divider></div><div class=settings-field><label class=settings-label for=theme-select>Theme</label><select id=theme-select class="settings-input settings-select"><option value=dark>Dark</option><option value=light>Light</option></select><p class=settings-hint>Choose the application color scheme. Takes effect after saving.</p></div><div class=settings-field><label class=settings-label for=domain-policy-mode>Domain Restrictions</label><select id=domain-policy-mode class="settings-input settings-select"><option value=none>No restrictions</option><option value=allowlist>Allowlist (only listed domains)</option><option value=blocklist>Blocklist (block listed domains)</option></select></div><div class=settings-actions><button class=settings-save>Save</button><button class=settings-close>Close`), _tmpl$25 = /* @__PURE__ */ template(`<style>
|
|
8472
|
+
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=vault-entries>`), _tmpl$6$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$7 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$8 = /* @__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$9 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$0 = /* @__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$1 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$10 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$11 = /* @__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$12 = /* @__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$13 = /* @__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$14 = /* @__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$15 = /* @__PURE__ */ template(`<span class=vault-premium-badge>Premium`), _tmpl$16 = /* @__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$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(`<textarea class="settings-input settings-textarea"rows=4>`), _tmpl$22 = /* @__PURE__ */ template(`<p class=settings-hint>`), _tmpl$23 = /* @__PURE__ */ template(`<p class=settings-hint>Restrict which domains can be navigated to. Use allowlist mode for kiosk or supervised browsing, blocklist to block specific sites.`), _tmpl$24 = /* @__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=default-search-engine>Default Search Engine</label><select id=default-search-engine class=settings-input><option value=none>None (disabled)</option></select><p class=settings-hint>The search engine used by the AI agent when it needs to search the web. "None" disables the fallback and forces the agent to use on-page search inputs only.</p></div><div class=settings-field><label class=settings-label for=download-path>Download Location</label><input id=download-path class=settings-input placeholder="Default: ~/Downloads"><p class=settings-hint>Directory for saved files. Leave blank to use the system default Downloads folder.</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-label>Saved Sessions</label><p class=settings-hint style=margin-bottom:10px>Save the current browser state (tabs, cookies, storage) as a named session. Restore it later from this panel.</p><div class=premium-activate-row style=margin-bottom:8px><input class="settings-input premium-email-input"placeholder="Session name"><button class="premium-btn premium-btn-activate">Save Current</button></div></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-section-divider></div><div class=settings-field><label class=settings-label for=theme-select>Theme</label><select id=theme-select class="settings-input settings-select"><option value=dark>Dark</option><option value=light>Light</option></select><p class=settings-hint>Choose the application color scheme. Takes effect after saving.</p></div><div class=settings-field><label class=settings-label for=domain-policy-mode>Domain Restrictions</label><select id=domain-policy-mode class="settings-input settings-select"><option value=none>No restrictions</option><option value=allowlist>Allowlist (only listed domains)</option><option value=blocklist>Blocklist (block listed domains)</option></select></div><div class=settings-actions><button class=settings-save>Save</button><button class=settings-close>Close`), _tmpl$25 = /* @__PURE__ */ template(`<style>
|
|
8120
8473
|
.settings-panel {
|
|
8121
8474
|
width: min(440px, calc(100vw - 32px));
|
|
8122
8475
|
max-height: calc(100vh - 48px);
|
|
@@ -8658,7 +9011,7 @@ var _tmpl$$2 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><butt
|
|
|
8658
9011
|
justify-content: flex-end;
|
|
8659
9012
|
margin-top: 4px;
|
|
8660
9013
|
}
|
|
8661
|
-
`), _tmpl$26 = /* @__PURE__ */ template(`<div class="settings-input settings-input-disabled"title="Upgrade to Vessel Premium for unlimited tool iterations">50`), _tmpl$
|
|
9014
|
+
`), _tmpl$26 = /* @__PURE__ */ template(`<option>`), _tmpl$27 = /* @__PURE__ */ template(`<div class="settings-input settings-input-disabled"title="Upgrade to Vessel Premium for unlimited tool iterations">50`), _tmpl$28 = /* @__PURE__ */ template(`<div class=settings-health-issues>`), _tmpl$29 = /* @__PURE__ */ template(`<div class=settings-health><div class=settings-callout-title>Runtime Health</div><p class=settings-hint>MCP status: <strong></strong> `), _tmpl$30 = /* @__PURE__ */ template(`<p class=settings-hint>Active endpoint: <code>`), _tmpl$31 = /* @__PURE__ */ template(`<div class=settings-health-issue><strong></strong><div>`), _tmpl$32 = /* @__PURE__ */ template(`<div>`), _tmpl$33 = /* @__PURE__ */ template(`<div class=vault-entry><div class=vault-entry-info><span class=vault-entry-label></span><span class=vault-entry-detail> · <!> cookies · <!> domains</span></div><div style=display:flex;gap:6px;align-items:center><button class="premium-btn premium-btn-activate"title="Restore this session (replaces current tabs and cookies)"style="padding:2px 10px;font-size:12px">Load</button><button class=vault-entry-remove title="Delete session">×`), _tmpl$34 = /* @__PURE__ */ template(`<input id=chat-model class=settings-input style=flex:1>`), _tmpl$35 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--accent-primary)>`), _tmpl$36 = /* @__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$37 = /* @__PURE__ */ template(`<button class="premium-btn premium-btn-reset">Clear Saved Email`), _tmpl$38 = /* @__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$39 = /* @__PURE__ */ template(`<p class=settings-status>`), _tmpl$40 = /* @__PURE__ */ template(`<p class=settings-hint>Securely store credentials for agent-driven logins. Upgrade to Premium to unlock the Agent Credential Vault.`), _tmpl$41 = /* @__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$42 = /* @__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">×`);
|
|
8662
9015
|
const CHAT_PROVIDERS = Object.values(PROVIDERS).map((p) => ({
|
|
8663
9016
|
id: p.id,
|
|
8664
9017
|
name: p.name,
|
|
@@ -8687,6 +9040,7 @@ const Settings = () => {
|
|
|
8687
9040
|
const [agentTranscriptMode, setAgentTranscriptMode] = createSignal("summary");
|
|
8688
9041
|
const [health, setHealth] = createSignal(null);
|
|
8689
9042
|
const [defaultUrl, setDefaultUrl] = createSignal("https://start.duckduckgo.com");
|
|
9043
|
+
const [defaultSearchEngine, setDefaultSearchEngine] = createSignal("duckduckgo");
|
|
8690
9044
|
const [downloadPath, setDownloadPath] = createSignal("");
|
|
8691
9045
|
const [status, setStatus] = createSignal(null);
|
|
8692
9046
|
const [telemetryEnabled, setTelemetryEnabled] = createSignal(true);
|
|
@@ -8976,6 +9330,7 @@ const Settings = () => {
|
|
|
8976
9330
|
const runtimeHealth = await window.vessel.settings.getHealth();
|
|
8977
9331
|
setTheme(settings.theme ?? "dark");
|
|
8978
9332
|
setDefaultUrl(settings.defaultUrl ?? "https://start.duckduckgo.com");
|
|
9333
|
+
setDefaultSearchEngine(settings.defaultSearchEngine ?? "duckduckgo");
|
|
8979
9334
|
setDownloadPath(settings.downloadPath ?? "");
|
|
8980
9335
|
setAutoRestoreSession(settings.autoRestoreSession ?? true);
|
|
8981
9336
|
setClearBookmarksOnLaunch(settings.clearBookmarksOnLaunch ?? false);
|
|
@@ -9077,6 +9432,7 @@ const Settings = () => {
|
|
|
9077
9432
|
await window.vessel.settings.set("maxToolIterations", Math.max(10, Math.min(1e3, parsedIterations)));
|
|
9078
9433
|
await window.vessel.settings.set("agentTranscriptMode", agentTranscriptMode());
|
|
9079
9434
|
await window.vessel.settings.set("telemetryEnabled", telemetryEnabled());
|
|
9435
|
+
await window.vessel.settings.set("defaultSearchEngine", defaultSearchEngine());
|
|
9080
9436
|
const domains = domainList().split("\n").map((d) => d.trim()).filter((d) => d.length > 0);
|
|
9081
9437
|
const domainPolicy = domainMode() === "allowlist" ? {
|
|
9082
9438
|
allowedDomains: domains,
|
|
@@ -9118,13 +9474,13 @@ const Settings = () => {
|
|
|
9118
9474
|
},
|
|
9119
9475
|
get children() {
|
|
9120
9476
|
return [(() => {
|
|
9121
|
-
var _el$ = _tmpl$24(), _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$
|
|
9122
|
-
_el$
|
|
9123
|
-
var _el$
|
|
9124
|
-
_el$
|
|
9125
|
-
var _el$
|
|
9126
|
-
_el$
|
|
9127
|
-
var _el$
|
|
9477
|
+
var _el$ = _tmpl$24(), _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$23.firstChild, _el$25 = _el$21.nextSibling, _el$26 = _el$25.firstChild, _el$27 = _el$26.nextSibling, _el$28 = _el$25.nextSibling, _el$29 = _el$28.firstChild, _el$30 = _el$29.nextSibling, _el$31 = _el$28.nextSibling, _el$32 = _el$31.firstChild, _el$34 = _el$32.nextSibling, _el$35 = _el$31.nextSibling, _el$36 = _el$35.firstChild, _el$37 = _el$36.nextSibling, _el$38 = _el$35.nextSibling, _el$39 = _el$38.firstChild, _el$40 = _el$39.nextSibling, _el$41 = _el$38.nextSibling, _el$42 = _el$41.firstChild, _el$43 = _el$42.firstChild, _el$44 = _el$41.nextSibling, _el$45 = _el$44.firstChild, _el$46 = _el$45.firstChild, _el$47 = _el$44.nextSibling, _el$48 = _el$47.nextSibling, _el$49 = _el$48.firstChild, _el$50 = _el$49.nextSibling, _el$51 = _el$50.nextSibling, _el$52 = _el$51.firstChild, _el$53 = _el$52.nextSibling, _el$55 = _el$48.nextSibling, _el$56 = _el$55.nextSibling, _el$57 = _el$56.firstChild, _el$58 = _el$57.firstChild, _el$79 = _el$56.nextSibling, _el$80 = _el$79.nextSibling;
|
|
9478
|
+
_el$80.firstChild;
|
|
9479
|
+
var _el$89 = _el$80.nextSibling, _el$90 = _el$89.nextSibling, _el$91 = _el$90.firstChild;
|
|
9480
|
+
_el$91.firstChild;
|
|
9481
|
+
var _el$107 = _el$90.nextSibling, _el$108 = _el$107.nextSibling, _el$109 = _el$108.firstChild;
|
|
9482
|
+
_el$109.nextSibling;
|
|
9483
|
+
var _el$132 = _el$108.nextSibling, _el$133 = _el$132.nextSibling, _el$134 = _el$133.firstChild, _el$135 = _el$134.firstChild, _el$136 = _el$133.nextSibling, _el$137 = _el$136.nextSibling, _el$138 = _el$137.firstChild, _el$139 = _el$138.nextSibling, _el$140 = _el$137.nextSibling, _el$141 = _el$140.firstChild, _el$142 = _el$141.nextSibling, _el$146 = _el$140.nextSibling, _el$147 = _el$146.firstChild, _el$148 = _el$147.nextSibling;
|
|
9128
9484
|
addEventListener(_el$, "click", closeSettings, true);
|
|
9129
9485
|
_el$2.$$keydown = handleKeyDown;
|
|
9130
9486
|
_el$2.$$click = (e) => e.stopPropagation();
|
|
@@ -9174,25 +9530,37 @@ const Settings = () => {
|
|
|
9174
9530
|
}), _el$18);
|
|
9175
9531
|
_el$20.$$input = (e) => setDefaultUrl(e.currentTarget.value);
|
|
9176
9532
|
setAttribute(_el$20, "spellcheck", false);
|
|
9177
|
-
_el$23
|
|
9178
|
-
|
|
9179
|
-
|
|
9180
|
-
|
|
9181
|
-
|
|
9533
|
+
_el$23.addEventListener("change", (e) => setDefaultSearchEngine(e.currentTarget.value));
|
|
9534
|
+
insert(_el$23, createComponent(For, {
|
|
9535
|
+
get each() {
|
|
9536
|
+
return Object.entries(SEARCH_ENGINE_PRESETS);
|
|
9537
|
+
},
|
|
9538
|
+
children: ([id, preset]) => (() => {
|
|
9539
|
+
var _el$150 = _tmpl$26();
|
|
9540
|
+
_el$150.value = id;
|
|
9541
|
+
insert(_el$150, () => preset.label);
|
|
9542
|
+
return _el$150;
|
|
9543
|
+
})()
|
|
9544
|
+
}), _el$24);
|
|
9545
|
+
_el$27.$$input = (e) => setDownloadPath(e.currentTarget.value);
|
|
9546
|
+
setAttribute(_el$27, "spellcheck", false);
|
|
9547
|
+
_el$30.$$input = (e) => setMcpPort(e.currentTarget.value);
|
|
9548
|
+
setAttribute(_el$30, "spellcheck", false);
|
|
9549
|
+
insert(_el$31, createComponent(Show, {
|
|
9182
9550
|
get when() {
|
|
9183
9551
|
return premiumActive();
|
|
9184
9552
|
},
|
|
9185
9553
|
get fallback() {
|
|
9186
|
-
return _tmpl$
|
|
9554
|
+
return _tmpl$27();
|
|
9187
9555
|
},
|
|
9188
9556
|
get children() {
|
|
9189
|
-
var _el$
|
|
9190
|
-
_el$
|
|
9191
|
-
createRenderEffect(() => _el$
|
|
9192
|
-
return _el$
|
|
9557
|
+
var _el$33 = _tmpl$4$1();
|
|
9558
|
+
_el$33.$$input = (e) => setMaxToolIterations(e.currentTarget.value);
|
|
9559
|
+
createRenderEffect(() => _el$33.value = maxToolIterations());
|
|
9560
|
+
return _el$33;
|
|
9193
9561
|
}
|
|
9194
|
-
}), _el$
|
|
9195
|
-
insert(_el$
|
|
9562
|
+
}), _el$34);
|
|
9563
|
+
insert(_el$34, createComponent(Show, {
|
|
9196
9564
|
get when() {
|
|
9197
9565
|
return premiumActive();
|
|
9198
9566
|
},
|
|
@@ -9204,65 +9572,65 @@ const Settings = () => {
|
|
|
9204
9572
|
return health();
|
|
9205
9573
|
},
|
|
9206
9574
|
children: (currentHealth) => (() => {
|
|
9207
|
-
var _el$
|
|
9208
|
-
_el$
|
|
9209
|
-
insert(_el$
|
|
9210
|
-
insert(_el$
|
|
9211
|
-
insert(_el$
|
|
9575
|
+
var _el$152 = _tmpl$29(), _el$153 = _el$152.firstChild, _el$154 = _el$153.nextSibling, _el$155 = _el$154.firstChild, _el$157 = _el$155.nextSibling;
|
|
9576
|
+
_el$157.nextSibling;
|
|
9577
|
+
insert(_el$157, () => currentHealth().mcp.status);
|
|
9578
|
+
insert(_el$154, () => currentHealth().mcp.message, null);
|
|
9579
|
+
insert(_el$152, createComponent(Show, {
|
|
9212
9580
|
get when() {
|
|
9213
9581
|
return currentHealth().mcp.endpoint;
|
|
9214
9582
|
},
|
|
9215
9583
|
children: (endpoint) => (() => {
|
|
9216
|
-
var _el$
|
|
9217
|
-
insert(_el$
|
|
9218
|
-
return _el$
|
|
9584
|
+
var _el$160 = _tmpl$30(), _el$161 = _el$160.firstChild, _el$162 = _el$161.nextSibling;
|
|
9585
|
+
insert(_el$162, endpoint);
|
|
9586
|
+
return _el$160;
|
|
9219
9587
|
})()
|
|
9220
9588
|
}), null);
|
|
9221
|
-
insert(_el$
|
|
9589
|
+
insert(_el$152, createComponent(Show, {
|
|
9222
9590
|
get when() {
|
|
9223
9591
|
return currentHealth().startupIssues.length > 0;
|
|
9224
9592
|
},
|
|
9225
9593
|
get children() {
|
|
9226
|
-
var _el$
|
|
9227
|
-
insert(_el$
|
|
9228
|
-
var _el$
|
|
9229
|
-
insert(_el$
|
|
9230
|
-
insert(_el$
|
|
9231
|
-
insert(_el$
|
|
9594
|
+
var _el$159 = _tmpl$28();
|
|
9595
|
+
insert(_el$159, () => currentHealth().startupIssues.map((issue) => (() => {
|
|
9596
|
+
var _el$163 = _tmpl$31(), _el$164 = _el$163.firstChild, _el$165 = _el$164.nextSibling;
|
|
9597
|
+
insert(_el$164, () => issue.title);
|
|
9598
|
+
insert(_el$165, () => issue.detail);
|
|
9599
|
+
insert(_el$163, createComponent(Show, {
|
|
9232
9600
|
get when() {
|
|
9233
9601
|
return issue.action;
|
|
9234
9602
|
},
|
|
9235
9603
|
children: (action) => (() => {
|
|
9236
|
-
var _el$
|
|
9237
|
-
insert(_el$
|
|
9238
|
-
return _el$
|
|
9604
|
+
var _el$166 = _tmpl$32();
|
|
9605
|
+
insert(_el$166, action);
|
|
9606
|
+
return _el$166;
|
|
9239
9607
|
})()
|
|
9240
9608
|
}), null);
|
|
9241
9609
|
createRenderEffect((_p$) => {
|
|
9242
9610
|
var _v$1 = !!(issue.severity === "warning"), _v$10 = !!(issue.severity === "error");
|
|
9243
|
-
_v$1 !== _p$.e && _el$
|
|
9244
|
-
_v$10 !== _p$.t && _el$
|
|
9611
|
+
_v$1 !== _p$.e && _el$163.classList.toggle("warning", _p$.e = _v$1);
|
|
9612
|
+
_v$10 !== _p$.t && _el$163.classList.toggle("error", _p$.t = _v$10);
|
|
9245
9613
|
return _p$;
|
|
9246
9614
|
}, {
|
|
9247
9615
|
e: void 0,
|
|
9248
9616
|
t: void 0
|
|
9249
9617
|
});
|
|
9250
|
-
return _el$
|
|
9618
|
+
return _el$163;
|
|
9251
9619
|
})()));
|
|
9252
|
-
return _el$
|
|
9620
|
+
return _el$159;
|
|
9253
9621
|
}
|
|
9254
9622
|
}), null);
|
|
9255
|
-
return _el$
|
|
9623
|
+
return _el$152;
|
|
9256
9624
|
})()
|
|
9257
|
-
}), _el$
|
|
9258
|
-
_el$
|
|
9259
|
-
setAttribute(_el$
|
|
9260
|
-
_el$
|
|
9261
|
-
_el$
|
|
9262
|
-
_el$
|
|
9263
|
-
_el$
|
|
9264
|
-
setAttribute(_el$
|
|
9265
|
-
_el$
|
|
9625
|
+
}), _el$35);
|
|
9626
|
+
_el$37.$$input = (e) => setObsidianVaultPath(e.currentTarget.value);
|
|
9627
|
+
setAttribute(_el$37, "spellcheck", false);
|
|
9628
|
+
_el$40.addEventListener("change", (e) => setAgentTranscriptMode(e.currentTarget.value));
|
|
9629
|
+
_el$43.$$click = () => setAutoRestoreSession(!autoRestoreSession());
|
|
9630
|
+
_el$46.$$click = () => setClearBookmarksOnLaunch(!clearBookmarksOnLaunch());
|
|
9631
|
+
_el$52.$$input = (e) => setSessionSaveName(e.currentTarget.value);
|
|
9632
|
+
setAttribute(_el$52, "spellcheck", false);
|
|
9633
|
+
_el$53.$$click = async () => {
|
|
9266
9634
|
try {
|
|
9267
9635
|
await window.vessel.sessions.save(sessionSaveName().trim());
|
|
9268
9636
|
setSessionSaveName("");
|
|
@@ -9279,25 +9647,25 @@ const Settings = () => {
|
|
|
9279
9647
|
});
|
|
9280
9648
|
}
|
|
9281
9649
|
};
|
|
9282
|
-
insert(_el$
|
|
9650
|
+
insert(_el$48, createComponent(Show, {
|
|
9283
9651
|
get when() {
|
|
9284
9652
|
return sessionList().length > 0;
|
|
9285
9653
|
},
|
|
9286
9654
|
get children() {
|
|
9287
|
-
var _el$
|
|
9288
|
-
insert(_el$
|
|
9655
|
+
var _el$54 = _tmpl$5$1();
|
|
9656
|
+
insert(_el$54, createComponent(For, {
|
|
9289
9657
|
get each() {
|
|
9290
9658
|
return sessionList();
|
|
9291
9659
|
},
|
|
9292
9660
|
children: (s) => (() => {
|
|
9293
|
-
var _el$
|
|
9294
|
-
_el$
|
|
9295
|
-
var _el$
|
|
9296
|
-
insert(_el$
|
|
9297
|
-
insert(_el$
|
|
9298
|
-
insert(_el$
|
|
9299
|
-
insert(_el$
|
|
9300
|
-
_el$
|
|
9661
|
+
var _el$167 = _tmpl$33(), _el$168 = _el$167.firstChild, _el$169 = _el$168.firstChild, _el$170 = _el$169.nextSibling, _el$171 = _el$170.firstChild, _el$177 = _el$171.nextSibling, _el$173 = _el$177.nextSibling, _el$178 = _el$173.nextSibling;
|
|
9662
|
+
_el$178.nextSibling;
|
|
9663
|
+
var _el$179 = _el$168.nextSibling, _el$180 = _el$179.firstChild, _el$181 = _el$180.nextSibling;
|
|
9664
|
+
insert(_el$169, () => s.name);
|
|
9665
|
+
insert(_el$170, () => new Date(s.updatedAt).toLocaleDateString(), _el$171);
|
|
9666
|
+
insert(_el$170, () => s.cookieCount, _el$177);
|
|
9667
|
+
insert(_el$170, () => s.domains.length, _el$178);
|
|
9668
|
+
_el$180.$$click = async () => {
|
|
9301
9669
|
try {
|
|
9302
9670
|
await window.vessel.sessions.load(s.name);
|
|
9303
9671
|
setStatus({
|
|
@@ -9312,25 +9680,25 @@ const Settings = () => {
|
|
|
9312
9680
|
});
|
|
9313
9681
|
}
|
|
9314
9682
|
};
|
|
9315
|
-
_el$
|
|
9683
|
+
_el$181.$$click = async () => {
|
|
9316
9684
|
await window.vessel.sessions.delete(s.name);
|
|
9317
9685
|
await loadSessionList();
|
|
9318
9686
|
};
|
|
9319
|
-
return _el$
|
|
9687
|
+
return _el$167;
|
|
9320
9688
|
})()
|
|
9321
9689
|
}));
|
|
9322
|
-
return _el$
|
|
9690
|
+
return _el$54;
|
|
9323
9691
|
}
|
|
9324
9692
|
}), null);
|
|
9325
|
-
_el$
|
|
9693
|
+
_el$58.$$click = () => setChatEnabled(!chatEnabled());
|
|
9326
9694
|
insert(_el$2, createComponent(Show, {
|
|
9327
9695
|
get when() {
|
|
9328
9696
|
return chatEnabled();
|
|
9329
9697
|
},
|
|
9330
9698
|
get children() {
|
|
9331
9699
|
return [(() => {
|
|
9332
|
-
var _el$
|
|
9333
|
-
_el$
|
|
9700
|
+
var _el$59 = _tmpl$6$1(), _el$60 = _el$59.firstChild, _el$61 = _el$60.nextSibling;
|
|
9701
|
+
_el$61.addEventListener("change", (e) => {
|
|
9334
9702
|
const id = e.currentTarget.value;
|
|
9335
9703
|
setChatProviderId(id);
|
|
9336
9704
|
setChatModel("");
|
|
@@ -9340,26 +9708,26 @@ const Settings = () => {
|
|
|
9340
9708
|
setProviderModels([]);
|
|
9341
9709
|
setModelFetchState("idle");
|
|
9342
9710
|
});
|
|
9343
|
-
insert(_el$
|
|
9711
|
+
insert(_el$61, createComponent(For, {
|
|
9344
9712
|
each: CHAT_PROVIDERS,
|
|
9345
9713
|
children: (p) => (() => {
|
|
9346
|
-
var _el$
|
|
9347
|
-
insert(_el$
|
|
9348
|
-
createRenderEffect(() => _el$
|
|
9349
|
-
return _el$
|
|
9714
|
+
var _el$182 = _tmpl$26();
|
|
9715
|
+
insert(_el$182, () => p.name);
|
|
9716
|
+
createRenderEffect(() => _el$182.value = p.id);
|
|
9717
|
+
return _el$182;
|
|
9350
9718
|
})()
|
|
9351
9719
|
}));
|
|
9352
|
-
createRenderEffect(() => _el$
|
|
9353
|
-
return _el$
|
|
9720
|
+
createRenderEffect(() => _el$61.value = chatProviderId());
|
|
9721
|
+
return _el$59;
|
|
9354
9722
|
})(), createComponent(Show, {
|
|
9355
9723
|
get when() {
|
|
9356
9724
|
return chatProviderMeta().requiresKey || chatProviderId() === "custom";
|
|
9357
9725
|
},
|
|
9358
9726
|
get children() {
|
|
9359
|
-
var _el$
|
|
9360
|
-
_el$
|
|
9361
|
-
var _el$
|
|
9362
|
-
insert(_el$
|
|
9727
|
+
var _el$62 = _tmpl$0(), _el$63 = _el$62.firstChild;
|
|
9728
|
+
_el$63.firstChild;
|
|
9729
|
+
var _el$66 = _el$63.nextSibling;
|
|
9730
|
+
insert(_el$63, createComponent(Show, {
|
|
9363
9731
|
get when() {
|
|
9364
9732
|
return !chatProviderMeta().requiresKey;
|
|
9365
9733
|
},
|
|
@@ -9367,14 +9735,14 @@ const Settings = () => {
|
|
|
9367
9735
|
return _tmpl$7();
|
|
9368
9736
|
}
|
|
9369
9737
|
}), null);
|
|
9370
|
-
_el$
|
|
9738
|
+
_el$66.$$input = (e) => {
|
|
9371
9739
|
setChatApiKey(e.currentTarget.value);
|
|
9372
9740
|
if (e.currentTarget.value.trim()) {
|
|
9373
9741
|
setChatHasStoredApiKey(true);
|
|
9374
9742
|
}
|
|
9375
9743
|
};
|
|
9376
|
-
setAttribute(_el$
|
|
9377
|
-
insert(_el$
|
|
9744
|
+
setAttribute(_el$66, "spellcheck", false);
|
|
9745
|
+
insert(_el$62, createComponent(Show, {
|
|
9378
9746
|
get when() {
|
|
9379
9747
|
return memo(() => !!chatHasStoredApiKey())() && !chatApiKey().trim();
|
|
9380
9748
|
},
|
|
@@ -9382,7 +9750,7 @@ const Settings = () => {
|
|
|
9382
9750
|
return _tmpl$8();
|
|
9383
9751
|
}
|
|
9384
9752
|
}), null);
|
|
9385
|
-
insert(_el$
|
|
9753
|
+
insert(_el$62, createComponent(Show, {
|
|
9386
9754
|
get when() {
|
|
9387
9755
|
return chatProviderId() === "custom";
|
|
9388
9756
|
},
|
|
@@ -9390,46 +9758,46 @@ const Settings = () => {
|
|
|
9390
9758
|
return _tmpl$9();
|
|
9391
9759
|
}
|
|
9392
9760
|
}), null);
|
|
9393
|
-
createRenderEffect(() => setAttribute(_el$
|
|
9394
|
-
createRenderEffect(() => _el$
|
|
9395
|
-
return _el$
|
|
9761
|
+
createRenderEffect(() => setAttribute(_el$66, "placeholder", chatHasStoredApiKey() && !chatApiKey().trim() ? "Stored securely. Enter a new key to replace it." : chatProviderMeta().keyPlaceholder || "Bearer token or API key"));
|
|
9762
|
+
createRenderEffect(() => _el$66.value = chatApiKey());
|
|
9763
|
+
return _el$62;
|
|
9396
9764
|
}
|
|
9397
9765
|
}), (() => {
|
|
9398
|
-
var _el$
|
|
9399
|
-
insert(_el$
|
|
9766
|
+
var _el$69 = _tmpl$11(), _el$70 = _el$69.firstChild, _el$71 = _el$70.nextSibling, _el$73 = _el$71.firstChild;
|
|
9767
|
+
insert(_el$71, createComponent(Show, {
|
|
9400
9768
|
get when() {
|
|
9401
9769
|
return providerModels().length > 0;
|
|
9402
9770
|
},
|
|
9403
9771
|
get fallback() {
|
|
9404
9772
|
return (() => {
|
|
9405
|
-
var _el$
|
|
9406
|
-
_el$
|
|
9407
|
-
setAttribute(_el$
|
|
9408
|
-
createRenderEffect(() => setAttribute(_el$
|
|
9409
|
-
createRenderEffect(() => _el$
|
|
9410
|
-
return _el$
|
|
9773
|
+
var _el$183 = _tmpl$34();
|
|
9774
|
+
_el$183.$$input = (e) => setChatModel(e.currentTarget.value);
|
|
9775
|
+
setAttribute(_el$183, "spellcheck", false);
|
|
9776
|
+
createRenderEffect(() => setAttribute(_el$183, "placeholder", modelFetchState() === "loading" ? "Fetching models…" : chatProviderMeta().requiresKey && !chatApiKey().trim() && !chatHasStoredApiKey() ? "Enter API key to load models" : chatProviderMeta().defaultModel || "model name"));
|
|
9777
|
+
createRenderEffect(() => _el$183.value = chatModel());
|
|
9778
|
+
return _el$183;
|
|
9411
9779
|
})();
|
|
9412
9780
|
},
|
|
9413
9781
|
get children() {
|
|
9414
|
-
var _el$
|
|
9415
|
-
_el$
|
|
9416
|
-
insert(_el$
|
|
9782
|
+
var _el$72 = _tmpl$1();
|
|
9783
|
+
_el$72.addEventListener("change", (e) => setChatModel(e.currentTarget.value));
|
|
9784
|
+
insert(_el$72, createComponent(For, {
|
|
9417
9785
|
get each() {
|
|
9418
9786
|
return providerModels();
|
|
9419
9787
|
},
|
|
9420
9788
|
children: (m) => (() => {
|
|
9421
|
-
var _el$
|
|
9422
|
-
_el$
|
|
9423
|
-
insert(_el$
|
|
9424
|
-
return _el$
|
|
9789
|
+
var _el$184 = _tmpl$26();
|
|
9790
|
+
_el$184.value = m;
|
|
9791
|
+
insert(_el$184, m);
|
|
9792
|
+
return _el$184;
|
|
9425
9793
|
})()
|
|
9426
9794
|
}));
|
|
9427
|
-
createRenderEffect(() => _el$
|
|
9428
|
-
return _el$
|
|
9795
|
+
createRenderEffect(() => _el$72.value = chatModel());
|
|
9796
|
+
return _el$72;
|
|
9429
9797
|
}
|
|
9430
|
-
}), _el$
|
|
9431
|
-
_el$
|
|
9432
|
-
insert(_el$
|
|
9798
|
+
}), _el$73);
|
|
9799
|
+
_el$73.$$click = doFetchModels;
|
|
9800
|
+
insert(_el$69, createComponent(Show, {
|
|
9433
9801
|
get when() {
|
|
9434
9802
|
return modelFetchState() === "error";
|
|
9435
9803
|
},
|
|
@@ -9437,29 +9805,29 @@ const Settings = () => {
|
|
|
9437
9805
|
return _tmpl$10();
|
|
9438
9806
|
}
|
|
9439
9807
|
}), null);
|
|
9440
|
-
insert(_el$
|
|
9808
|
+
insert(_el$69, createComponent(Show, {
|
|
9441
9809
|
get when() {
|
|
9442
9810
|
return modelFetchWarning();
|
|
9443
9811
|
},
|
|
9444
9812
|
children: (warning) => (() => {
|
|
9445
|
-
var _el$
|
|
9446
|
-
insert(_el$
|
|
9447
|
-
return _el$
|
|
9813
|
+
var _el$185 = _tmpl$35();
|
|
9814
|
+
insert(_el$185, warning);
|
|
9815
|
+
return _el$185;
|
|
9448
9816
|
})()
|
|
9449
9817
|
}), null);
|
|
9450
|
-
createRenderEffect(() => _el$
|
|
9451
|
-
return _el$
|
|
9818
|
+
createRenderEffect(() => _el$73.disabled = modelFetchState() === "loading");
|
|
9819
|
+
return _el$69;
|
|
9452
9820
|
})(), createComponent(Show, {
|
|
9453
9821
|
get when() {
|
|
9454
9822
|
return chatProviderMeta().needsBaseUrl || chatProviderId() === "custom";
|
|
9455
9823
|
},
|
|
9456
9824
|
get children() {
|
|
9457
|
-
var _el$
|
|
9458
|
-
_el$
|
|
9459
|
-
setAttribute(_el$
|
|
9460
|
-
createRenderEffect(() => setAttribute(_el$
|
|
9461
|
-
createRenderEffect(() => _el$
|
|
9462
|
-
return _el$
|
|
9825
|
+
var _el$75 = _tmpl$12(), _el$76 = _el$75.firstChild, _el$77 = _el$76.nextSibling;
|
|
9826
|
+
_el$77.$$input = (e) => setChatBaseUrl(e.currentTarget.value);
|
|
9827
|
+
setAttribute(_el$77, "spellcheck", false);
|
|
9828
|
+
createRenderEffect(() => setAttribute(_el$77, "placeholder", chatProviderMeta().defaultBaseUrl ?? "https://..."));
|
|
9829
|
+
createRenderEffect(() => _el$77.value = chatBaseUrl());
|
|
9830
|
+
return _el$75;
|
|
9463
9831
|
}
|
|
9464
9832
|
}), createComponent(Show, {
|
|
9465
9833
|
get when() {
|
|
@@ -9470,15 +9838,15 @@ const Settings = () => {
|
|
|
9470
9838
|
}
|
|
9471
9839
|
})];
|
|
9472
9840
|
}
|
|
9473
|
-
}), _el$
|
|
9474
|
-
insert(_el$
|
|
9841
|
+
}), _el$79);
|
|
9842
|
+
insert(_el$80, createComponent(Show, {
|
|
9475
9843
|
get when() {
|
|
9476
9844
|
return premiumActive();
|
|
9477
9845
|
},
|
|
9478
9846
|
get fallback() {
|
|
9479
9847
|
return (() => {
|
|
9480
|
-
var _el$
|
|
9481
|
-
_el$
|
|
9848
|
+
var _el$186 = _tmpl$38(), _el$187 = _el$186.firstChild, _el$188 = _el$187.nextSibling, _el$189 = _el$188.firstChild, _el$190 = _el$189.nextSibling, _el$194 = _el$188.nextSibling;
|
|
9849
|
+
_el$189.$$input = (e) => {
|
|
9482
9850
|
const nextEmail = e.currentTarget.value;
|
|
9483
9851
|
if (nextEmail.trim().toLowerCase() !== premiumEmail().trim().toLowerCase()) {
|
|
9484
9852
|
resetPremiumActivationFlow();
|
|
@@ -9486,8 +9854,8 @@ const Settings = () => {
|
|
|
9486
9854
|
}
|
|
9487
9855
|
setPremiumEmail(nextEmail);
|
|
9488
9856
|
};
|
|
9489
|
-
setAttribute(_el$
|
|
9490
|
-
_el$
|
|
9857
|
+
setAttribute(_el$189, "spellcheck", false);
|
|
9858
|
+
_el$190.$$click = async () => {
|
|
9491
9859
|
setPremiumLoading(true);
|
|
9492
9860
|
setPremiumMessage(null);
|
|
9493
9861
|
try {
|
|
@@ -9516,23 +9884,23 @@ const Settings = () => {
|
|
|
9516
9884
|
setPremiumLoading(false);
|
|
9517
9885
|
}
|
|
9518
9886
|
};
|
|
9519
|
-
insert(_el$
|
|
9887
|
+
insert(_el$190, (() => {
|
|
9520
9888
|
var _c$ = memo(() => !!premiumLoading());
|
|
9521
9889
|
return () => _c$() ? "Sending..." : premiumCodeSent() ? "Resend Code" : "Send Code";
|
|
9522
9890
|
})());
|
|
9523
|
-
insert(_el$
|
|
9891
|
+
insert(_el$186, createComponent(Show, {
|
|
9524
9892
|
get when() {
|
|
9525
9893
|
return premiumCodeSent();
|
|
9526
9894
|
},
|
|
9527
9895
|
get children() {
|
|
9528
|
-
var _el$
|
|
9529
|
-
_el$
|
|
9896
|
+
var _el$191 = _tmpl$36(), _el$192 = _el$191.firstChild, _el$193 = _el$192.nextSibling;
|
|
9897
|
+
_el$192.$$input = (e) => {
|
|
9530
9898
|
const nextCode = e.currentTarget.value.replace(/\D+/g, "").slice(0, 6);
|
|
9531
9899
|
setPremiumCode(nextCode);
|
|
9532
9900
|
setPremiumMessage(null);
|
|
9533
9901
|
};
|
|
9534
|
-
setAttribute(_el$
|
|
9535
|
-
_el$
|
|
9902
|
+
setAttribute(_el$192, "spellcheck", false);
|
|
9903
|
+
_el$193.$$click = async () => {
|
|
9536
9904
|
setPremiumLoading(true);
|
|
9537
9905
|
setPremiumMessage(null);
|
|
9538
9906
|
try {
|
|
@@ -9559,60 +9927,60 @@ const Settings = () => {
|
|
|
9559
9927
|
setPremiumLoading(false);
|
|
9560
9928
|
}
|
|
9561
9929
|
};
|
|
9562
|
-
insert(_el$
|
|
9563
|
-
createRenderEffect(() => _el$
|
|
9564
|
-
createRenderEffect(() => _el$
|
|
9565
|
-
return _el$
|
|
9930
|
+
insert(_el$193, () => premiumLoading() ? "Verifying..." : "Verify Code");
|
|
9931
|
+
createRenderEffect(() => _el$193.disabled = premiumLoading() || !premiumEmail().trim() || premiumCode().trim().length !== 6 || !premiumChallengeToken());
|
|
9932
|
+
createRenderEffect(() => _el$192.value = premiumCode());
|
|
9933
|
+
return _el$191;
|
|
9566
9934
|
}
|
|
9567
|
-
}), _el$
|
|
9568
|
-
_el$
|
|
9935
|
+
}), _el$194);
|
|
9936
|
+
_el$194.$$click = () => {
|
|
9569
9937
|
startPremiumCheckout();
|
|
9570
9938
|
};
|
|
9571
|
-
insert(_el$
|
|
9939
|
+
insert(_el$186, createComponent(Show, {
|
|
9572
9940
|
get when() {
|
|
9573
9941
|
return premiumMessage();
|
|
9574
9942
|
},
|
|
9575
9943
|
children: (msg) => (() => {
|
|
9576
|
-
var _el$
|
|
9577
|
-
insert(_el$
|
|
9944
|
+
var _el$196 = _tmpl$39();
|
|
9945
|
+
insert(_el$196, () => msg().text);
|
|
9578
9946
|
createRenderEffect((_p$) => {
|
|
9579
9947
|
var _v$11 = !!(msg().kind === "success"), _v$12 = !!(msg().kind === "error");
|
|
9580
|
-
_v$11 !== _p$.e && _el$
|
|
9581
|
-
_v$12 !== _p$.t && _el$
|
|
9948
|
+
_v$11 !== _p$.e && _el$196.classList.toggle("success", _p$.e = _v$11);
|
|
9949
|
+
_v$12 !== _p$.t && _el$196.classList.toggle("error", _p$.t = _v$12);
|
|
9582
9950
|
return _p$;
|
|
9583
9951
|
}, {
|
|
9584
9952
|
e: void 0,
|
|
9585
9953
|
t: void 0
|
|
9586
9954
|
});
|
|
9587
|
-
return _el$
|
|
9955
|
+
return _el$196;
|
|
9588
9956
|
})()
|
|
9589
9957
|
}), null);
|
|
9590
|
-
insert(_el$
|
|
9958
|
+
insert(_el$186, createComponent(Show, {
|
|
9591
9959
|
get when() {
|
|
9592
9960
|
return premiumState().email || premiumEmail();
|
|
9593
9961
|
},
|
|
9594
9962
|
get children() {
|
|
9595
|
-
var _el$
|
|
9596
|
-
_el$
|
|
9963
|
+
var _el$195 = _tmpl$37();
|
|
9964
|
+
_el$195.$$click = async () => {
|
|
9597
9965
|
const state = await window.vessel.premium.reset();
|
|
9598
9966
|
setPremiumState(state);
|
|
9599
9967
|
setPremiumEmail("");
|
|
9600
9968
|
resetPremiumActivationFlow();
|
|
9601
9969
|
setPremiumMessage(null);
|
|
9602
9970
|
};
|
|
9603
|
-
return _el$
|
|
9971
|
+
return _el$195;
|
|
9604
9972
|
}
|
|
9605
9973
|
}), null);
|
|
9606
|
-
createRenderEffect(() => _el$
|
|
9607
|
-
createRenderEffect(() => _el$
|
|
9608
|
-
return _el$
|
|
9974
|
+
createRenderEffect(() => _el$190.disabled = premiumLoading() || !premiumEmail().trim());
|
|
9975
|
+
createRenderEffect(() => _el$189.value = premiumEmail());
|
|
9976
|
+
return _el$186;
|
|
9609
9977
|
})();
|
|
9610
9978
|
},
|
|
9611
9979
|
get children() {
|
|
9612
|
-
var _el$
|
|
9613
|
-
_el$
|
|
9614
|
-
var _el$
|
|
9615
|
-
insert(_el$
|
|
9980
|
+
var _el$82 = _tmpl$14(), _el$83 = _el$82.firstChild;
|
|
9981
|
+
_el$83.firstChild;
|
|
9982
|
+
var _el$85 = _el$83.nextSibling, _el$86 = _el$85.nextSibling, _el$87 = _el$86.firstChild, _el$88 = _el$87.nextSibling;
|
|
9983
|
+
insert(_el$83, createComponent(Show, {
|
|
9616
9984
|
get when() {
|
|
9617
9985
|
return premiumState().status === "trialing";
|
|
9618
9986
|
},
|
|
@@ -9620,8 +9988,8 @@ const Settings = () => {
|
|
|
9620
9988
|
return [" ", "(Trial)"];
|
|
9621
9989
|
}
|
|
9622
9990
|
}), null);
|
|
9623
|
-
insert(_el$
|
|
9624
|
-
insert(_el$
|
|
9991
|
+
insert(_el$85, () => premiumState().email, null);
|
|
9992
|
+
insert(_el$85, createComponent(Show, {
|
|
9625
9993
|
get when() {
|
|
9626
9994
|
return premiumState().expiresAt;
|
|
9627
9995
|
},
|
|
@@ -9629,7 +9997,7 @@ const Settings = () => {
|
|
|
9629
9997
|
return [" ", "· Renews", " ", memo(() => new Date(premiumState().expiresAt).toLocaleDateString())];
|
|
9630
9998
|
}
|
|
9631
9999
|
}), null);
|
|
9632
|
-
_el$
|
|
10000
|
+
_el$87.$$click = async () => {
|
|
9633
10001
|
const result = await window.vessel.premium.portal();
|
|
9634
10002
|
if (!result.ok) {
|
|
9635
10003
|
setPremiumMessage({
|
|
@@ -9639,36 +10007,36 @@ const Settings = () => {
|
|
|
9639
10007
|
setTimeout(() => setPremiumMessage(null), 5e3);
|
|
9640
10008
|
}
|
|
9641
10009
|
};
|
|
9642
|
-
_el$
|
|
10010
|
+
_el$88.$$click = async () => {
|
|
9643
10011
|
const state = await window.vessel.premium.reset();
|
|
9644
10012
|
setPremiumState(state);
|
|
9645
10013
|
setPremiumEmail("");
|
|
9646
10014
|
resetPremiumActivationFlow();
|
|
9647
10015
|
setPremiumMessage(null);
|
|
9648
10016
|
};
|
|
9649
|
-
insert(_el$
|
|
10017
|
+
insert(_el$82, createComponent(Show, {
|
|
9650
10018
|
get when() {
|
|
9651
10019
|
return premiumMessage();
|
|
9652
10020
|
},
|
|
9653
10021
|
children: (msg) => (() => {
|
|
9654
|
-
var _el$
|
|
9655
|
-
insert(_el$
|
|
10022
|
+
var _el$197 = _tmpl$39();
|
|
10023
|
+
insert(_el$197, () => msg().text);
|
|
9656
10024
|
createRenderEffect((_p$) => {
|
|
9657
10025
|
var _v$13 = !!(msg().kind === "success"), _v$14 = !!(msg().kind === "error");
|
|
9658
|
-
_v$13 !== _p$.e && _el$
|
|
9659
|
-
_v$14 !== _p$.t && _el$
|
|
10026
|
+
_v$13 !== _p$.e && _el$197.classList.toggle("success", _p$.e = _v$13);
|
|
10027
|
+
_v$14 !== _p$.t && _el$197.classList.toggle("error", _p$.t = _v$14);
|
|
9660
10028
|
return _p$;
|
|
9661
10029
|
}, {
|
|
9662
10030
|
e: void 0,
|
|
9663
10031
|
t: void 0
|
|
9664
10032
|
});
|
|
9665
|
-
return _el$
|
|
10033
|
+
return _el$197;
|
|
9666
10034
|
})()
|
|
9667
10035
|
}), null);
|
|
9668
|
-
return _el$
|
|
10036
|
+
return _el$82;
|
|
9669
10037
|
}
|
|
9670
10038
|
}), null);
|
|
9671
|
-
insert(_el$
|
|
10039
|
+
insert(_el$91, createComponent(Show, {
|
|
9672
10040
|
get when() {
|
|
9673
10041
|
return !premiumActive();
|
|
9674
10042
|
},
|
|
@@ -9676,7 +10044,7 @@ const Settings = () => {
|
|
|
9676
10044
|
return _tmpl$15();
|
|
9677
10045
|
}
|
|
9678
10046
|
}), null);
|
|
9679
|
-
insert(_el$
|
|
10047
|
+
insert(_el$90, createComponent(Show, {
|
|
9680
10048
|
get when() {
|
|
9681
10049
|
return premiumActive();
|
|
9682
10050
|
},
|
|
@@ -9689,17 +10057,17 @@ const Settings = () => {
|
|
|
9689
10057
|
return vaultEntries().length > 0;
|
|
9690
10058
|
},
|
|
9691
10059
|
get children() {
|
|
9692
|
-
var _el$
|
|
9693
|
-
insert(_el$
|
|
10060
|
+
var _el$95 = _tmpl$5$1();
|
|
10061
|
+
insert(_el$95, createComponent(For, {
|
|
9694
10062
|
get each() {
|
|
9695
10063
|
return vaultEntries();
|
|
9696
10064
|
},
|
|
9697
10065
|
children: (entry) => (() => {
|
|
9698
|
-
var _el$
|
|
9699
|
-
insert(_el$
|
|
9700
|
-
insert(_el$
|
|
9701
|
-
insert(_el$
|
|
9702
|
-
insert(_el$
|
|
10066
|
+
var _el$199 = _tmpl$41(), _el$200 = _el$199.firstChild, _el$201 = _el$200.firstChild, _el$202 = _el$201.nextSibling, _el$203 = _el$202.firstChild, _el$204 = _el$200.nextSibling;
|
|
10067
|
+
insert(_el$201, () => entry.label);
|
|
10068
|
+
insert(_el$202, () => entry.username, _el$203);
|
|
10069
|
+
insert(_el$202, () => entry.domainPattern, null);
|
|
10070
|
+
insert(_el$202, createComponent(Show, {
|
|
9703
10071
|
get when() {
|
|
9704
10072
|
return entry.useCount > 0;
|
|
9705
10073
|
},
|
|
@@ -9707,43 +10075,43 @@ const Settings = () => {
|
|
|
9707
10075
|
return [" ", "· Used ", memo(() => entry.useCount), "x"];
|
|
9708
10076
|
}
|
|
9709
10077
|
}), null);
|
|
9710
|
-
_el$
|
|
9711
|
-
return _el$
|
|
10078
|
+
_el$204.$$click = () => handleVaultRemove(entry.id);
|
|
10079
|
+
return _el$199;
|
|
9712
10080
|
})()
|
|
9713
10081
|
}));
|
|
9714
|
-
return _el$
|
|
10082
|
+
return _el$95;
|
|
9715
10083
|
}
|
|
9716
10084
|
}), createComponent(Show, {
|
|
9717
10085
|
get when() {
|
|
9718
10086
|
return !vaultAdding();
|
|
9719
10087
|
},
|
|
9720
10088
|
get children() {
|
|
9721
|
-
var _el$
|
|
9722
|
-
_el$
|
|
10089
|
+
var _el$96 = _tmpl$17();
|
|
10090
|
+
_el$96.$$click = () => {
|
|
9723
10091
|
setVaultAdding(true);
|
|
9724
10092
|
setVaultMessage(null);
|
|
9725
10093
|
};
|
|
9726
|
-
return _el$
|
|
10094
|
+
return _el$96;
|
|
9727
10095
|
}
|
|
9728
10096
|
}), createComponent(Show, {
|
|
9729
10097
|
get when() {
|
|
9730
10098
|
return vaultAdding();
|
|
9731
10099
|
},
|
|
9732
10100
|
get children() {
|
|
9733
|
-
var _el$
|
|
9734
|
-
_el$
|
|
9735
|
-
setAttribute(_el$94, "spellcheck", false);
|
|
9736
|
-
_el$95.$$input = (e) => setVaultNewDomain(e.currentTarget.value);
|
|
9737
|
-
setAttribute(_el$95, "spellcheck", false);
|
|
9738
|
-
_el$96.$$input = (e) => setVaultNewUsername(e.currentTarget.value);
|
|
9739
|
-
setAttribute(_el$96, "spellcheck", false);
|
|
9740
|
-
_el$97.$$input = (e) => setVaultNewPassword(e.currentTarget.value);
|
|
9741
|
-
_el$98.$$input = (e) => setVaultNewTotp(e.currentTarget.value);
|
|
10101
|
+
var _el$97 = _tmpl$18(), _el$98 = _el$97.firstChild, _el$99 = _el$98.nextSibling, _el$100 = _el$99.nextSibling, _el$101 = _el$100.nextSibling, _el$102 = _el$101.nextSibling, _el$103 = _el$102.nextSibling, _el$104 = _el$103.nextSibling, _el$105 = _el$104.firstChild, _el$106 = _el$105.nextSibling;
|
|
10102
|
+
_el$98.$$input = (e) => setVaultNewLabel(e.currentTarget.value);
|
|
9742
10103
|
setAttribute(_el$98, "spellcheck", false);
|
|
9743
|
-
_el$99.$$input = (e) =>
|
|
10104
|
+
_el$99.$$input = (e) => setVaultNewDomain(e.currentTarget.value);
|
|
9744
10105
|
setAttribute(_el$99, "spellcheck", false);
|
|
9745
|
-
_el$
|
|
9746
|
-
_el$
|
|
10106
|
+
_el$100.$$input = (e) => setVaultNewUsername(e.currentTarget.value);
|
|
10107
|
+
setAttribute(_el$100, "spellcheck", false);
|
|
10108
|
+
_el$101.$$input = (e) => setVaultNewPassword(e.currentTarget.value);
|
|
10109
|
+
_el$102.$$input = (e) => setVaultNewTotp(e.currentTarget.value);
|
|
10110
|
+
setAttribute(_el$102, "spellcheck", false);
|
|
10111
|
+
_el$103.$$input = (e) => setVaultNewNotes(e.currentTarget.value);
|
|
10112
|
+
setAttribute(_el$103, "spellcheck", false);
|
|
10113
|
+
_el$105.$$click = handleVaultAdd;
|
|
10114
|
+
_el$106.$$click = () => {
|
|
9747
10115
|
setVaultAdding(false);
|
|
9748
10116
|
setVaultNewLabel("");
|
|
9749
10117
|
setVaultNewDomain("");
|
|
@@ -9752,100 +10120,100 @@ const Settings = () => {
|
|
|
9752
10120
|
setVaultNewTotp("");
|
|
9753
10121
|
setVaultNewNotes("");
|
|
9754
10122
|
};
|
|
9755
|
-
createRenderEffect(() => _el$
|
|
9756
|
-
createRenderEffect(() => _el$
|
|
9757
|
-
createRenderEffect(() => _el$
|
|
9758
|
-
createRenderEffect(() => _el$
|
|
9759
|
-
createRenderEffect(() => _el$
|
|
9760
|
-
createRenderEffect(() => _el$
|
|
9761
|
-
return _el$
|
|
10123
|
+
createRenderEffect(() => _el$98.value = vaultNewLabel());
|
|
10124
|
+
createRenderEffect(() => _el$99.value = vaultNewDomain());
|
|
10125
|
+
createRenderEffect(() => _el$100.value = vaultNewUsername());
|
|
10126
|
+
createRenderEffect(() => _el$101.value = vaultNewPassword());
|
|
10127
|
+
createRenderEffect(() => _el$102.value = vaultNewTotp());
|
|
10128
|
+
createRenderEffect(() => _el$103.value = vaultNewNotes());
|
|
10129
|
+
return _el$97;
|
|
9762
10130
|
}
|
|
9763
10131
|
}), createComponent(Show, {
|
|
9764
10132
|
get when() {
|
|
9765
10133
|
return vaultMessage();
|
|
9766
10134
|
},
|
|
9767
10135
|
children: (msg) => (() => {
|
|
9768
|
-
var _el$
|
|
9769
|
-
insert(_el$
|
|
10136
|
+
var _el$205 = _tmpl$39();
|
|
10137
|
+
insert(_el$205, () => msg().text);
|
|
9770
10138
|
createRenderEffect((_p$) => {
|
|
9771
10139
|
var _v$15 = !!(msg().kind === "success"), _v$16 = !!(msg().kind === "error");
|
|
9772
|
-
_v$15 !== _p$.e && _el$
|
|
9773
|
-
_v$16 !== _p$.t && _el$
|
|
10140
|
+
_v$15 !== _p$.e && _el$205.classList.toggle("success", _p$.e = _v$15);
|
|
10141
|
+
_v$16 !== _p$.t && _el$205.classList.toggle("error", _p$.t = _v$16);
|
|
9774
10142
|
return _p$;
|
|
9775
10143
|
}, {
|
|
9776
10144
|
e: void 0,
|
|
9777
10145
|
t: void 0
|
|
9778
10146
|
});
|
|
9779
|
-
return _el$
|
|
10147
|
+
return _el$205;
|
|
9780
10148
|
})()
|
|
9781
10149
|
})];
|
|
9782
10150
|
}
|
|
9783
10151
|
}), null);
|
|
9784
|
-
insert(_el$
|
|
10152
|
+
insert(_el$108, createComponent(Show, {
|
|
9785
10153
|
get when() {
|
|
9786
10154
|
return autofillProfiles().length > 0;
|
|
9787
10155
|
},
|
|
9788
10156
|
get children() {
|
|
9789
|
-
var _el$
|
|
9790
|
-
insert(_el$
|
|
10157
|
+
var _el$111 = _tmpl$5$1();
|
|
10158
|
+
insert(_el$111, createComponent(For, {
|
|
9791
10159
|
get each() {
|
|
9792
10160
|
return autofillProfiles();
|
|
9793
10161
|
},
|
|
9794
10162
|
children: (profile) => (() => {
|
|
9795
|
-
var _el$
|
|
9796
|
-
insert(_el$
|
|
9797
|
-
insert(_el$
|
|
9798
|
-
insert(_el$
|
|
10163
|
+
var _el$206 = _tmpl$42(), _el$207 = _el$206.firstChild, _el$208 = _el$207.firstChild, _el$209 = _el$208.nextSibling, _el$210 = _el$207.nextSibling, _el$211 = _el$210.firstChild, _el$212 = _el$211.nextSibling;
|
|
10164
|
+
insert(_el$208, () => profile.label);
|
|
10165
|
+
insert(_el$209, () => profile.firstName, null);
|
|
10166
|
+
insert(_el$209, (() => {
|
|
9799
10167
|
var _c$2 = memo(() => !!profile.lastName);
|
|
9800
10168
|
return () => _c$2() ? ` ${profile.lastName}` : "";
|
|
9801
10169
|
})(), null);
|
|
9802
|
-
insert(_el$
|
|
10170
|
+
insert(_el$209, (() => {
|
|
9803
10171
|
var _c$3 = memo(() => !!profile.email);
|
|
9804
10172
|
return () => _c$3() ? ` · ${profile.email}` : "";
|
|
9805
10173
|
})(), null);
|
|
9806
|
-
_el$
|
|
9807
|
-
_el$
|
|
9808
|
-
return _el$
|
|
10174
|
+
_el$211.$$click = () => handleAutofillFill(profile.id);
|
|
10175
|
+
_el$212.$$click = () => handleAutofillRemove(profile.id);
|
|
10176
|
+
return _el$206;
|
|
9809
10177
|
})()
|
|
9810
10178
|
}));
|
|
9811
|
-
return _el$
|
|
10179
|
+
return _el$111;
|
|
9812
10180
|
}
|
|
9813
10181
|
}), null);
|
|
9814
|
-
insert(_el$
|
|
10182
|
+
insert(_el$108, createComponent(Show, {
|
|
9815
10183
|
get when() {
|
|
9816
10184
|
return !autofillAdding();
|
|
9817
10185
|
},
|
|
9818
10186
|
get children() {
|
|
9819
|
-
var _el$
|
|
9820
|
-
_el$
|
|
10187
|
+
var _el$112 = _tmpl$19();
|
|
10188
|
+
_el$112.$$click = () => {
|
|
9821
10189
|
setAutofillAdding(true);
|
|
9822
10190
|
setAutofillMessage(null);
|
|
9823
10191
|
};
|
|
9824
|
-
return _el$
|
|
10192
|
+
return _el$112;
|
|
9825
10193
|
}
|
|
9826
10194
|
}), null);
|
|
9827
|
-
insert(_el$
|
|
10195
|
+
insert(_el$108, createComponent(Show, {
|
|
9828
10196
|
get when() {
|
|
9829
10197
|
return autofillAdding();
|
|
9830
10198
|
},
|
|
9831
10199
|
get children() {
|
|
9832
|
-
var _el$
|
|
9833
|
-
_el$
|
|
9834
|
-
setAttribute(_el$
|
|
9835
|
-
_el$
|
|
9836
|
-
_el$
|
|
9837
|
-
_el$
|
|
9838
|
-
setAttribute(_el$
|
|
9839
|
-
_el$
|
|
9840
|
-
_el$
|
|
9841
|
-
_el$
|
|
9842
|
-
_el$
|
|
9843
|
-
_el$
|
|
9844
|
-
_el$
|
|
9845
|
-
_el$
|
|
9846
|
-
_el$
|
|
9847
|
-
_el$
|
|
9848
|
-
_el$
|
|
10200
|
+
var _el$113 = _tmpl$20(), _el$114 = _el$113.firstChild, _el$115 = _el$114.nextSibling, _el$116 = _el$115.firstChild, _el$117 = _el$116.nextSibling, _el$118 = _el$115.nextSibling, _el$119 = _el$118.firstChild, _el$120 = _el$119.nextSibling, _el$121 = _el$118.nextSibling, _el$122 = _el$121.nextSibling, _el$123 = _el$122.nextSibling, _el$124 = _el$123.nextSibling, _el$125 = _el$124.firstChild, _el$126 = _el$125.nextSibling, _el$127 = _el$126.nextSibling, _el$128 = _el$124.nextSibling, _el$129 = _el$128.nextSibling, _el$130 = _el$129.firstChild, _el$131 = _el$130.nextSibling;
|
|
10201
|
+
_el$114.$$input = (e) => setAutofillLabel(e.currentTarget.value);
|
|
10202
|
+
setAttribute(_el$114, "spellcheck", false);
|
|
10203
|
+
_el$116.$$input = (e) => setAutofillFirstName(e.currentTarget.value);
|
|
10204
|
+
_el$117.$$input = (e) => setAutofillLastName(e.currentTarget.value);
|
|
10205
|
+
_el$119.$$input = (e) => setAutofillEmail(e.currentTarget.value);
|
|
10206
|
+
setAttribute(_el$119, "spellcheck", false);
|
|
10207
|
+
_el$120.$$input = (e) => setAutofillPhone(e.currentTarget.value);
|
|
10208
|
+
_el$121.$$input = (e) => setAutofillOrg(e.currentTarget.value);
|
|
10209
|
+
_el$122.$$input = (e) => setAutofillAddr1(e.currentTarget.value);
|
|
10210
|
+
_el$123.$$input = (e) => setAutofillAddr2(e.currentTarget.value);
|
|
10211
|
+
_el$125.$$input = (e) => setAutofillCity(e.currentTarget.value);
|
|
10212
|
+
_el$126.$$input = (e) => setAutofillState(e.currentTarget.value);
|
|
10213
|
+
_el$127.$$input = (e) => setAutofillZip(e.currentTarget.value);
|
|
10214
|
+
_el$128.$$input = (e) => setAutofillCountry(e.currentTarget.value);
|
|
10215
|
+
_el$130.$$click = handleAutofillAdd;
|
|
10216
|
+
_el$131.$$click = () => {
|
|
9849
10217
|
setAutofillAdding(false);
|
|
9850
10218
|
setAutofillLabel("");
|
|
9851
10219
|
setAutofillFirstName("");
|
|
@@ -9860,63 +10228,63 @@ const Settings = () => {
|
|
|
9860
10228
|
setAutofillZip("");
|
|
9861
10229
|
setAutofillCountry("");
|
|
9862
10230
|
};
|
|
9863
|
-
createRenderEffect(() => _el$
|
|
9864
|
-
createRenderEffect(() => _el$
|
|
9865
|
-
createRenderEffect(() => _el$
|
|
9866
|
-
createRenderEffect(() => _el$
|
|
9867
|
-
createRenderEffect(() => _el$
|
|
9868
|
-
createRenderEffect(() => _el$
|
|
9869
|
-
createRenderEffect(() => _el$
|
|
9870
|
-
createRenderEffect(() => _el$
|
|
9871
|
-
createRenderEffect(() => _el$
|
|
9872
|
-
createRenderEffect(() => _el$
|
|
9873
|
-
createRenderEffect(() => _el$
|
|
9874
|
-
createRenderEffect(() => _el$
|
|
9875
|
-
return _el$
|
|
10231
|
+
createRenderEffect(() => _el$114.value = autofillLabel());
|
|
10232
|
+
createRenderEffect(() => _el$116.value = autofillFirstName());
|
|
10233
|
+
createRenderEffect(() => _el$117.value = autofillLastName());
|
|
10234
|
+
createRenderEffect(() => _el$119.value = autofillEmail());
|
|
10235
|
+
createRenderEffect(() => _el$120.value = autofillPhone());
|
|
10236
|
+
createRenderEffect(() => _el$121.value = autofillOrg());
|
|
10237
|
+
createRenderEffect(() => _el$122.value = autofillAddr1());
|
|
10238
|
+
createRenderEffect(() => _el$123.value = autofillAddr2());
|
|
10239
|
+
createRenderEffect(() => _el$125.value = autofillCity());
|
|
10240
|
+
createRenderEffect(() => _el$126.value = autofillState());
|
|
10241
|
+
createRenderEffect(() => _el$127.value = autofillZip());
|
|
10242
|
+
createRenderEffect(() => _el$128.value = autofillCountry());
|
|
10243
|
+
return _el$113;
|
|
9876
10244
|
}
|
|
9877
10245
|
}), null);
|
|
9878
|
-
insert(_el$
|
|
10246
|
+
insert(_el$108, createComponent(Show, {
|
|
9879
10247
|
get when() {
|
|
9880
10248
|
return autofillMessage();
|
|
9881
10249
|
},
|
|
9882
10250
|
children: (msg) => (() => {
|
|
9883
|
-
var _el$
|
|
9884
|
-
insert(_el$
|
|
10251
|
+
var _el$213 = _tmpl$39();
|
|
10252
|
+
insert(_el$213, () => msg().text);
|
|
9885
10253
|
createRenderEffect((_p$) => {
|
|
9886
10254
|
var _v$17 = !!(msg().kind === "success"), _v$18 = !!(msg().kind === "error");
|
|
9887
|
-
_v$17 !== _p$.e && _el$
|
|
9888
|
-
_v$18 !== _p$.t && _el$
|
|
10255
|
+
_v$17 !== _p$.e && _el$213.classList.toggle("success", _p$.e = _v$17);
|
|
10256
|
+
_v$18 !== _p$.t && _el$213.classList.toggle("error", _p$.t = _v$18);
|
|
9889
10257
|
return _p$;
|
|
9890
10258
|
}, {
|
|
9891
10259
|
e: void 0,
|
|
9892
10260
|
t: void 0
|
|
9893
10261
|
});
|
|
9894
|
-
return _el$
|
|
10262
|
+
return _el$213;
|
|
9895
10263
|
})()
|
|
9896
10264
|
}), null);
|
|
9897
|
-
_el$
|
|
9898
|
-
_el$
|
|
9899
|
-
_el$
|
|
9900
|
-
insert(_el$
|
|
10265
|
+
_el$135.$$click = () => setTelemetryEnabled(!telemetryEnabled());
|
|
10266
|
+
_el$139.addEventListener("change", (e) => setTheme(e.currentTarget.value));
|
|
10267
|
+
_el$142.addEventListener("change", (e) => setDomainMode(e.currentTarget.value));
|
|
10268
|
+
insert(_el$140, createComponent(Show, {
|
|
9901
10269
|
get when() {
|
|
9902
10270
|
return domainMode() !== "none";
|
|
9903
10271
|
},
|
|
9904
10272
|
get children() {
|
|
9905
10273
|
return [(() => {
|
|
9906
|
-
var _el$
|
|
9907
|
-
_el$
|
|
9908
|
-
setAttribute(_el$
|
|
9909
|
-
createRenderEffect(() => setAttribute(_el$
|
|
9910
|
-
createRenderEffect(() => _el$
|
|
9911
|
-
return _el$
|
|
10274
|
+
var _el$143 = _tmpl$21();
|
|
10275
|
+
_el$143.$$input = (e) => setDomainList(e.currentTarget.value);
|
|
10276
|
+
setAttribute(_el$143, "spellcheck", false);
|
|
10277
|
+
createRenderEffect(() => setAttribute(_el$143, "placeholder", domainMode() === "allowlist" ? "example.com\napi.example.com" : "ads.example.com\ntracker.io"));
|
|
10278
|
+
createRenderEffect(() => _el$143.value = domainList());
|
|
10279
|
+
return _el$143;
|
|
9912
10280
|
})(), (() => {
|
|
9913
|
-
var _el$
|
|
9914
|
-
insert(_el$
|
|
9915
|
-
return _el$
|
|
10281
|
+
var _el$144 = _tmpl$22();
|
|
10282
|
+
insert(_el$144, () => domainMode() === "allowlist" ? "One domain per line. Subdomains of listed domains are also allowed." : "One domain per line. Subdomains of listed domains are also blocked.");
|
|
10283
|
+
return _el$144;
|
|
9916
10284
|
})()];
|
|
9917
10285
|
}
|
|
9918
10286
|
}), null);
|
|
9919
|
-
insert(_el$
|
|
10287
|
+
insert(_el$140, createComponent(Show, {
|
|
9920
10288
|
get when() {
|
|
9921
10289
|
return domainMode() === "none";
|
|
9922
10290
|
},
|
|
@@ -9924,39 +10292,39 @@ const Settings = () => {
|
|
|
9924
10292
|
return _tmpl$23();
|
|
9925
10293
|
}
|
|
9926
10294
|
}), null);
|
|
9927
|
-
_el$
|
|
9928
|
-
addEventListener(_el$
|
|
10295
|
+
_el$147.$$click = handleSave;
|
|
10296
|
+
addEventListener(_el$148, "click", closeSettings, true);
|
|
9929
10297
|
insert(_el$2, createComponent(Show, {
|
|
9930
10298
|
get when() {
|
|
9931
10299
|
return status();
|
|
9932
10300
|
},
|
|
9933
10301
|
children: (currentStatus) => (() => {
|
|
9934
|
-
var _el$
|
|
9935
|
-
insert(_el$
|
|
10302
|
+
var _el$214 = _tmpl$39();
|
|
10303
|
+
insert(_el$214, () => currentStatus().text);
|
|
9936
10304
|
createRenderEffect((_p$) => {
|
|
9937
10305
|
var _v$19 = !!(currentStatus().kind === "success"), _v$20 = !!(currentStatus().kind === "error");
|
|
9938
|
-
_v$19 !== _p$.e && _el$
|
|
9939
|
-
_v$20 !== _p$.t && _el$
|
|
10306
|
+
_v$19 !== _p$.e && _el$214.classList.toggle("success", _p$.e = _v$19);
|
|
10307
|
+
_v$20 !== _p$.t && _el$214.classList.toggle("error", _p$.t = _v$20);
|
|
9940
10308
|
return _p$;
|
|
9941
10309
|
}, {
|
|
9942
10310
|
e: void 0,
|
|
9943
10311
|
t: void 0
|
|
9944
10312
|
});
|
|
9945
|
-
return _el$
|
|
10313
|
+
return _el$214;
|
|
9946
10314
|
})()
|
|
9947
10315
|
}), null);
|
|
9948
10316
|
createRenderEffect((_p$) => {
|
|
9949
10317
|
var _v$ = !!settingsClosing(), _v$2 = !!autoRestoreSession(), _v$3 = autoRestoreSession(), _v$4 = !!clearBookmarksOnLaunch(), _v$5 = clearBookmarksOnLaunch(), _v$6 = !sessionSaveName().trim(), _v$7 = !!chatEnabled(), _v$8 = chatEnabled(), _v$9 = !!telemetryEnabled(), _v$0 = telemetryEnabled();
|
|
9950
10318
|
_v$ !== _p$.e && _el$.classList.toggle("closing", _p$.e = _v$);
|
|
9951
|
-
_v$2 !== _p$.t && _el$
|
|
9952
|
-
_v$3 !== _p$.a && setAttribute(_el$
|
|
9953
|
-
_v$4 !== _p$.o && _el$
|
|
9954
|
-
_v$5 !== _p$.i && setAttribute(_el$
|
|
9955
|
-
_v$6 !== _p$.n && (_el$
|
|
9956
|
-
_v$7 !== _p$.s && _el$
|
|
9957
|
-
_v$8 !== _p$.h && setAttribute(_el$
|
|
9958
|
-
_v$9 !== _p$.r && _el$
|
|
9959
|
-
_v$0 !== _p$.d && setAttribute(_el$
|
|
10319
|
+
_v$2 !== _p$.t && _el$43.classList.toggle("on", _p$.t = _v$2);
|
|
10320
|
+
_v$3 !== _p$.a && setAttribute(_el$43, "aria-checked", _p$.a = _v$3);
|
|
10321
|
+
_v$4 !== _p$.o && _el$46.classList.toggle("on", _p$.o = _v$4);
|
|
10322
|
+
_v$5 !== _p$.i && setAttribute(_el$46, "aria-checked", _p$.i = _v$5);
|
|
10323
|
+
_v$6 !== _p$.n && (_el$53.disabled = _p$.n = _v$6);
|
|
10324
|
+
_v$7 !== _p$.s && _el$58.classList.toggle("on", _p$.s = _v$7);
|
|
10325
|
+
_v$8 !== _p$.h && setAttribute(_el$58, "aria-checked", _p$.h = _v$8);
|
|
10326
|
+
_v$9 !== _p$.r && _el$135.classList.toggle("on", _p$.r = _v$9);
|
|
10327
|
+
_v$0 !== _p$.d && setAttribute(_el$135, "aria-checked", _p$.d = _v$0);
|
|
9960
10328
|
return _p$;
|
|
9961
10329
|
}, {
|
|
9962
10330
|
e: void 0,
|
|
@@ -9971,13 +10339,14 @@ const Settings = () => {
|
|
|
9971
10339
|
d: void 0
|
|
9972
10340
|
});
|
|
9973
10341
|
createRenderEffect(() => _el$20.value = defaultUrl());
|
|
9974
|
-
createRenderEffect(() => _el$23.value =
|
|
9975
|
-
createRenderEffect(() => _el$
|
|
9976
|
-
createRenderEffect(() => _el$
|
|
9977
|
-
createRenderEffect(() => _el$
|
|
9978
|
-
createRenderEffect(() => _el$
|
|
9979
|
-
createRenderEffect(() => _el$
|
|
9980
|
-
createRenderEffect(() => _el$
|
|
10342
|
+
createRenderEffect(() => _el$23.value = defaultSearchEngine());
|
|
10343
|
+
createRenderEffect(() => _el$27.value = downloadPath());
|
|
10344
|
+
createRenderEffect(() => _el$30.value = mcpPort());
|
|
10345
|
+
createRenderEffect(() => _el$37.value = obsidianVaultPath());
|
|
10346
|
+
createRenderEffect(() => _el$40.value = agentTranscriptMode());
|
|
10347
|
+
createRenderEffect(() => _el$52.value = sessionSaveName());
|
|
10348
|
+
createRenderEffect(() => _el$139.value = theme());
|
|
10349
|
+
createRenderEffect(() => _el$142.value = domainMode());
|
|
9981
10350
|
return _el$;
|
|
9982
10351
|
})(), _tmpl$25()];
|
|
9983
10352
|
}
|