@quanta-intellect/vessel-browser 0.1.27 → 0.1.29
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 +1 -1
- package/out/main/index.js +596 -265
- package/out/preload/index.js +1 -1
- package/out/renderer/assets/{index-v71lXiVB.js → index-BnUB1gZc.js} +339 -254
- package/out/renderer/assets/{index-DP2yMHwF.css → index-Ct7z7yP_.css} +21 -0
- package/out/renderer/index.html +2 -2
- package/package.json +1 -1
|
@@ -1818,14 +1818,28 @@ const [focusMode, setFocusMode] = createSignal(false);
|
|
|
1818
1818
|
const [commandBarOpen, setCommandBarOpen] = createSignal(false);
|
|
1819
1819
|
const [settingsOpen, setSettingsOpen] = createSignal(false);
|
|
1820
1820
|
const [devtoolsPanelOpen, setDevtoolsPanelOpen] = createSignal(false);
|
|
1821
|
-
let resizeRafId = null;
|
|
1822
1821
|
let pendingWidth = null;
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1822
|
+
let resizeInFlight = null;
|
|
1823
|
+
async function flushResize() {
|
|
1824
|
+
if (resizeInFlight) {
|
|
1825
|
+
await resizeInFlight;
|
|
1826
|
+
if (pendingWidth !== null) {
|
|
1827
|
+
return flushResize();
|
|
1828
|
+
}
|
|
1829
|
+
return;
|
|
1830
|
+
}
|
|
1831
|
+
resizeInFlight = (async () => {
|
|
1832
|
+
while (pendingWidth !== null) {
|
|
1833
|
+
const nextWidth = pendingWidth;
|
|
1834
|
+
pendingWidth = null;
|
|
1835
|
+
await window.vessel.ui.resizeSidebar(nextWidth);
|
|
1836
|
+
}
|
|
1837
|
+
})();
|
|
1838
|
+
try {
|
|
1839
|
+
await resizeInFlight;
|
|
1840
|
+
} finally {
|
|
1841
|
+
resizeInFlight = null;
|
|
1827
1842
|
}
|
|
1828
|
-
resizeRafId = null;
|
|
1829
1843
|
}
|
|
1830
1844
|
function useUI() {
|
|
1831
1845
|
return {
|
|
@@ -1847,20 +1861,12 @@ function useUI() {
|
|
|
1847
1861
|
);
|
|
1848
1862
|
setSidebarWidth(clamped);
|
|
1849
1863
|
pendingWidth = clamped;
|
|
1850
|
-
|
|
1851
|
-
resizeRafId = requestAnimationFrame(flushResize);
|
|
1852
|
-
}
|
|
1864
|
+
void flushResize();
|
|
1853
1865
|
},
|
|
1854
|
-
commitResize: () => {
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
}
|
|
1859
|
-
if (pendingWidth !== null) {
|
|
1860
|
-
window.vessel.ui.resizeSidebar(pendingWidth);
|
|
1861
|
-
pendingWidth = null;
|
|
1862
|
-
}
|
|
1863
|
-
window.vessel.ui.commitSidebarResize();
|
|
1866
|
+
commitResize: async () => {
|
|
1867
|
+
pendingWidth = sidebarWidth();
|
|
1868
|
+
await flushResize();
|
|
1869
|
+
await window.vessel.ui.commitSidebarResize();
|
|
1864
1870
|
},
|
|
1865
1871
|
toggleFocusMode: async () => {
|
|
1866
1872
|
const result = await window.vessel.ui.toggleFocusMode();
|
|
@@ -2600,7 +2606,7 @@ function useBookmarks() {
|
|
|
2600
2606
|
removeBookmark: (id) => window.vessel.bookmarks.removeBookmark(id),
|
|
2601
2607
|
createFolder: (name) => window.vessel.bookmarks.createFolder(name),
|
|
2602
2608
|
createFolderWithSummary: (name, summary) => window.vessel.bookmarks.createFolderWithSummary(name, summary),
|
|
2603
|
-
removeFolder: (id) => window.vessel.bookmarks.removeFolder(id),
|
|
2609
|
+
removeFolder: (id, deleteContents) => window.vessel.bookmarks.removeFolder(id, deleteContents),
|
|
2604
2610
|
renameFolder: (id, newName, summary) => window.vessel.bookmarks.renameFolder(id, newName, summary)
|
|
2605
2611
|
};
|
|
2606
2612
|
}
|
|
@@ -4517,7 +4523,7 @@ function renderKitPrompt(kit, values) {
|
|
|
4517
4523
|
(_, key) => values[key] ?? ""
|
|
4518
4524
|
);
|
|
4519
4525
|
}
|
|
4520
|
-
var _tmpl$$5 = /* @__PURE__ */ template(`<div class=kit-upsell><div class=kit-upsell-icon aria-hidden=true></div><p class=kit-upsell-title>Vessel Premium</p><p class=kit-upsell-body>Automation Kits are a premium feature. Upgrade to unlock pre-built workflows you can launch with one click.</p><button class="agent-primary-button kit-upsell-btn"type=button>
|
|
4526
|
+
var _tmpl$$5 = /* @__PURE__ */ template(`<div class=kit-upsell><div class=kit-upsell-icon aria-hidden=true></div><p class=kit-upsell-title>Vessel Premium</p><p class=kit-upsell-body>Automation Kits are a premium feature. Upgrade to unlock pre-built workflows you can launch with one click.</p><button class="agent-primary-button kit-upsell-btn"type=button>Start 7-day free trial — $5.99/mo after`), _tmpl$2$5 = /* @__PURE__ */ template(`<div class=kit-list-header><span class=agent-panel-title>Automation Kits <span class=kit-beta-tag>Beta</span></span><div class=kit-list-header-actions><span class=kit-list-count> kits</span><button class=kit-install-btn type=button title="Install a kit from a .kit.json file">+ Install`), _tmpl$3$4 = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$4 = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$4 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$4 = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$3 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$3 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$3 = /* @__PURE__ */ template(`<div class=kit-form-header><button class=kit-back-btn type=button title="Back to kits"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M9 11L5 7l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Back</button><div class=kit-form-title>`), _tmpl$0$3 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$3 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$3 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date & time</label><input class=kit-form-input type=datetime-local>`), _tmpl$13$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time of day</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$14$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$16$2 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$18$2 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$2 = /* @__PURE__ */ template(`<div class=sched-edit-backdrop><div class=sched-edit-panel><div class=sched-edit-header><span class=sched-edit-title>Edit schedule</span><span class=sched-edit-job-name></span></div><div class=kit-schedule-types></div><div class=sched-edit-actions><button class=kit-back-btn type=button>Cancel</button><button class=agent-primary-button type=button>Save`), _tmpl$23$2 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$2 = /* @__PURE__ */ template(`<div class=kit-card-meta>~<!> min`), _tmpl$25$2 = /* @__PURE__ */ template(`<button class=kit-remove-btn type=button>×`), _tmpl$26$2 = /* @__PURE__ */ template(`<div class=kit-card role=button tabindex=0><span class=kit-card-icon aria-hidden=true></span><div class=kit-card-body><div class=kit-card-name></div><div class=kit-card-desc>`), _tmpl$27$2 = /* @__PURE__ */ template(`<svg class=kit-card-caret width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M5 3l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$28$2 = /* @__PURE__ */ template(`<div class=kit-sched-next>Next: `), _tmpl$29$2 = /* @__PURE__ */ template(`<div class=sched-context-menu><button class=sched-ctx-item type=button>Edit task</button><button class=sched-ctx-item type=button>Edit schedule</button><div class=sched-ctx-divider></div><button class=sched-ctx-item type=button></button><button class="sched-ctx-item sched-ctx-danger"type=button>Delete`), _tmpl$30$2 = /* @__PURE__ */ template(`<div class=kit-sched-card><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-sched-body><div class=kit-sched-name></div><div class=kit-sched-meta></div></div><div class=kit-sched-actions><button class=kit-sched-toggle type=button></button><button class=kit-remove-btn type=button title="Delete schedule"aria-label="Delete schedule">×`), _tmpl$31$2 = /* @__PURE__ */ template(`<div class=kit-activity-output>`), _tmpl$32$1 = /* @__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$1 = /* @__PURE__ */ template(`<div class="kit-activity-output kit-activity-placeholder">`), _tmpl$34$1 = /* @__PURE__ */ template(`<span class=kit-form-required aria-hidden=true>*`), _tmpl$35$1 = /* @__PURE__ */ template(`<textarea class=kit-form-textarea rows=3>`), _tmpl$36$1 = /* @__PURE__ */ template(`<p class=kit-form-hint>`), _tmpl$37$1 = /* @__PURE__ */ template(`<div class=kit-form-field><label class=kit-form-label>`), _tmpl$38$1 = /* @__PURE__ */ template(`<input class=kit-form-input>`), _tmpl$39$1 = /* @__PURE__ */ template(`<span class=kit-run-spinner aria-hidden=true>`), _tmpl$40$1 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=sched-type>`), _tmpl$41$1 = /* @__PURE__ */ template(`<option>`), _tmpl$42$1 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=edit-sched-type>`);
|
|
4521
4527
|
const ICON_MAP = {
|
|
4522
4528
|
BookOpen: book_open_default,
|
|
4523
4529
|
Tag: tag_default,
|
|
@@ -4942,7 +4948,7 @@ const AutomationTab = (props) => {
|
|
|
4942
4948
|
return scheduledJobs();
|
|
4943
4949
|
},
|
|
4944
4950
|
children: (job) => (() => {
|
|
4945
|
-
var _el$84 = _tmpl$30$
|
|
4951
|
+
var _el$84 = _tmpl$30$2(), _el$85 = _el$84.firstChild, _el$86 = _el$85.nextSibling, _el$87 = _el$86.firstChild, _el$88 = _el$87.nextSibling, _el$91 = _el$86.nextSibling, _el$92 = _el$91.firstChild, _el$93 = _el$92.nextSibling;
|
|
4946
4952
|
_el$84.$$contextmenu = (e) => {
|
|
4947
4953
|
e.preventDefault();
|
|
4948
4954
|
e.stopPropagation();
|
|
@@ -5049,7 +5055,7 @@ const AutomationTab = (props) => {
|
|
|
5049
5055
|
})();
|
|
5050
5056
|
},
|
|
5051
5057
|
get children() {
|
|
5052
|
-
var _el$108 = _tmpl$31$
|
|
5058
|
+
var _el$108 = _tmpl$31$2();
|
|
5053
5059
|
insert(_el$108, () => activity.output.trim());
|
|
5054
5060
|
return _el$108;
|
|
5055
5061
|
}
|
|
@@ -5355,7 +5361,7 @@ const AutomationTab = (props) => {
|
|
|
5355
5361
|
};
|
|
5356
5362
|
delegateEvents(["click", "input", "keydown", "contextmenu"]);
|
|
5357
5363
|
const vesselLogo = "" + new URL("vessel-logo-transparent-IT25qr-Z.png", import.meta.url).href;
|
|
5358
|
-
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 free trial</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$3 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$3 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$5$3 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$6$3 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$7$2 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$8$2 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2>`), _tmpl$9$2 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$0$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$1$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$10$2 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start free trial</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$11$2 = /* @__PURE__ */ template(`<span>`), _tmpl$12$2 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$13$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$14$1 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$15$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$16$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$17$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$18$1 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$19$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$20$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$21$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$22$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$23$1 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button></div><div class=sidebar-messages><div>`), _tmpl$24$1 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class="agent-card agent-card-approval"><div class=agent-card-approval-stripe aria-hidden=true></div><div class=agent-card-title></div><div class=agent-card-copy></div><div class=agent-card-copy></div><div class=agent-card-actions><button class=agent-primary-button type=button>Approve</button><button class=agent-control-button type=button>Reject`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$30 = /* @__PURE__ */ template(`<div class=agent-card><div class=agent-action-row><span class=agent-card-title></span><span></span></div><div class=agent-card-copy>`), _tmpl$31 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$32 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$33 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$34 = /* @__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$35 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$36 = /* @__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$37 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$38 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$39 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$40 = /* @__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$41 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$42 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$43 = /* @__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$44 = /* @__PURE__ */ template(`<div>`), _tmpl$45 = /* @__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$46 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$47 = /* @__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$48 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
|
|
5364
|
+
var _tmpl$$4 = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$4 = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$3 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$3 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$5$3 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$6$3 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$7$2 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$8$2 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2>`), _tmpl$9$2 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$0$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$1$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$10$2 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$11$2 = /* @__PURE__ */ template(`<span>`), _tmpl$12$2 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$13$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$14$1 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$15$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$16$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$17$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$18$1 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$19$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$20$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$21$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$22$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$23$1 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button></div><div class=sidebar-messages><div>`), _tmpl$24$1 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class="agent-card agent-card-approval"><div class=agent-card-approval-stripe aria-hidden=true></div><div class=agent-card-title></div><div class=agent-card-copy></div><div class=agent-card-copy></div><div class=agent-card-actions><button class=agent-primary-button type=button>Approve</button><button class=agent-control-button type=button>Reject`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class=agent-card><div class=agent-action-row><span class=agent-card-title></span><span></span></div><div class=agent-card-copy>`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$32 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$33 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$34 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$35 = /* @__PURE__ */ template(`<div class=bookmark-folder-delete-confirm><p class=bookmark-delete-prompt>Delete "<!>"?</p><div class=bookmark-delete-options><button class="bookmark-ghost-button danger"type=button></button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$36 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><div class=bookmark-folder-form-fields><input class=bookmark-input><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=button>Save</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$37 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$38 = /* @__PURE__ */ template(`<div class=bookmark-folder-section><div class="bookmark-folder-header clickable"role=button tabindex=0><div class=bookmark-folder-overview><span class=bookmark-folder-chevron aria-hidden=true>▸</span><div><div class=bookmark-folder-name></div><div class=bookmark-folder-meta> saved`), _tmpl$39 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$40 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$41 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$42 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$43 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$44 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$45 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><button class=agent-control-button type=button>Restore`), _tmpl$46 = /* @__PURE__ */ template(`<div>`), _tmpl$47 = /* @__PURE__ */ template(`<div class=thinking-state><div class=thinking-orb aria-hidden=true><span></span><span></span><span></span></div><div class=thinking-copy><div class=thinking-title>Thinking`), _tmpl$48 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$49 = /* @__PURE__ */ template(`<div class=chat-approval><div class=chat-approval-icon aria-hidden=true><svg width=16 height=16 viewBox="0 0 16 16"fill=none><path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM7.25 4.75a.75.75 0 011.5 0v3.5a.75.75 0 01-1.5 0v-3.5zM8 11.5a.75.75 0 110-1.5.75.75 0 010 1.5z"fill=currentColor></path></svg></div><div class=chat-approval-body><div class=chat-approval-title>Approval needed: <strong></strong></div><div class=chat-approval-detail></div><div class=chat-approval-actions><button class="chat-approval-btn chat-approval-approve"type=button>Approve</button><button class="chat-approval-btn chat-approval-reject"type=button>Reject`), _tmpl$50 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
|
|
5359
5365
|
const UNSORTED_FOLDER = {
|
|
5360
5366
|
id: "unsorted",
|
|
5361
5367
|
name: "Unsorted",
|
|
@@ -5380,7 +5386,7 @@ function getPremiumPromptKind(content) {
|
|
|
5380
5386
|
}
|
|
5381
5387
|
const PremiumPromptCard = (props) => {
|
|
5382
5388
|
const title = props.kind === "premium_gate" ? "This workflow needs Premium" : "Need a longer autonomous run?";
|
|
5383
|
-
const body = props.kind === "premium_gate" ? "Unlock screenshots, saved sessions, workflow tracking, table extraction, and the credential vault with a
|
|
5389
|
+
const body = props.kind === "premium_gate" ? "Unlock screenshots, saved sessions, workflow tracking, table extraction, and the credential vault with a 7-day free trial." : "Free chats pause after 50 tool calls in a turn. Vessel Premium raises the ceiling so the agent can finish longer workflows without stopping.";
|
|
5384
5390
|
return (() => {
|
|
5385
5391
|
var _el$2 = _tmpl$2$4(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling, _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
|
|
5386
5392
|
insert(_el$4, title);
|
|
@@ -5613,6 +5619,7 @@ ${contextBlock}` : contextBlock);
|
|
|
5613
5619
|
const [editingFolderId, setEditingFolderId] = createSignal(null);
|
|
5614
5620
|
const [editingFolderName, setEditingFolderName] = createSignal("");
|
|
5615
5621
|
const [editingFolderSummary, setEditingFolderSummary] = createSignal("");
|
|
5622
|
+
const [deletingFolderId, setDeletingFolderId] = createSignal(null);
|
|
5616
5623
|
const [expandedFolderIds, setExpandedFolderIds] = createSignal([UNSORTED_FOLDER.id]);
|
|
5617
5624
|
const [actionsExpanded, setActionsExpanded] = createSignal(false);
|
|
5618
5625
|
const [checkpointsExpanded, setCheckpointsExpanded] = createSignal(false);
|
|
@@ -5712,24 +5719,52 @@ ${contextBlock}` : contextBlock);
|
|
|
5712
5719
|
setIsDragging(true);
|
|
5713
5720
|
document.body.style.cursor = "col-resize";
|
|
5714
5721
|
document.body.style.userSelect = "none";
|
|
5715
|
-
window.vessel.ui.startSidebarResize()
|
|
5722
|
+
void window.vessel.ui.startSidebarResize().catch(() => {
|
|
5723
|
+
});
|
|
5716
5724
|
const startX = e.screenX;
|
|
5717
5725
|
const startWidth = sidebarWidth2();
|
|
5726
|
+
let finished = false;
|
|
5727
|
+
const clearPointerTracking = () => {
|
|
5728
|
+
window.removeEventListener("pointermove", onPointerMove);
|
|
5729
|
+
window.removeEventListener("pointerup", onPointerUp);
|
|
5730
|
+
window.removeEventListener("pointercancel", onPointerUp);
|
|
5731
|
+
window.removeEventListener("blur", onWindowBlur);
|
|
5732
|
+
document.removeEventListener("visibilitychange", onVisibilityChange);
|
|
5733
|
+
target.removeEventListener("lostpointercapture", onPointerUp);
|
|
5734
|
+
if (target.hasPointerCapture?.(e.pointerId)) {
|
|
5735
|
+
target.releasePointerCapture(e.pointerId);
|
|
5736
|
+
}
|
|
5737
|
+
};
|
|
5718
5738
|
const onPointerMove = (ev) => {
|
|
5719
5739
|
const delta = startX - ev.screenX;
|
|
5720
5740
|
resizeSidebar(startWidth + delta);
|
|
5721
5741
|
};
|
|
5722
|
-
const
|
|
5742
|
+
const finishResize = () => {
|
|
5743
|
+
if (finished) return;
|
|
5744
|
+
finished = true;
|
|
5723
5745
|
setIsDragging(false);
|
|
5724
|
-
|
|
5725
|
-
target.removeEventListener("pointermove", onPointerMove);
|
|
5726
|
-
target.removeEventListener("pointerup", onPointerUp);
|
|
5727
|
-
target.removeEventListener("lostpointercapture", onPointerUp);
|
|
5746
|
+
clearPointerTracking();
|
|
5728
5747
|
document.body.style.cursor = "";
|
|
5729
5748
|
document.body.style.userSelect = "";
|
|
5749
|
+
void commitResize().catch(() => {
|
|
5750
|
+
});
|
|
5751
|
+
};
|
|
5752
|
+
const onPointerUp = () => {
|
|
5753
|
+
finishResize();
|
|
5754
|
+
};
|
|
5755
|
+
const onWindowBlur = () => {
|
|
5756
|
+
finishResize();
|
|
5757
|
+
};
|
|
5758
|
+
const onVisibilityChange = () => {
|
|
5759
|
+
if (document.hidden) {
|
|
5760
|
+
finishResize();
|
|
5761
|
+
}
|
|
5730
5762
|
};
|
|
5731
|
-
|
|
5732
|
-
|
|
5763
|
+
window.addEventListener("pointermove", onPointerMove);
|
|
5764
|
+
window.addEventListener("pointerup", onPointerUp);
|
|
5765
|
+
window.addEventListener("pointercancel", onPointerUp);
|
|
5766
|
+
window.addEventListener("blur", onWindowBlur);
|
|
5767
|
+
document.addEventListener("visibilitychange", onVisibilityChange);
|
|
5733
5768
|
target.addEventListener("lostpointercapture", onPointerUp);
|
|
5734
5769
|
};
|
|
5735
5770
|
const formatBookmarkDate = (savedAt) => new Date(savedAt).toLocaleDateString(void 0, {
|
|
@@ -5763,11 +5798,10 @@ ${contextBlock}` : contextBlock);
|
|
|
5763
5798
|
setEditingFolderName("");
|
|
5764
5799
|
setEditingFolderSummary("");
|
|
5765
5800
|
};
|
|
5766
|
-
const handleRemoveFolder = async (folderId) => {
|
|
5767
|
-
const
|
|
5768
|
-
if (!confirmed) return;
|
|
5769
|
-
const removed = await removeFolder(folderId);
|
|
5801
|
+
const handleRemoveFolder = async (folderId, deleteContents) => {
|
|
5802
|
+
const removed = await removeFolder(folderId, deleteContents);
|
|
5770
5803
|
if (!removed) return;
|
|
5804
|
+
setDeletingFolderId(null);
|
|
5771
5805
|
if (selectedFolderId() === folderId) {
|
|
5772
5806
|
setSelectedFolderId(UNSORTED_FOLDER.id);
|
|
5773
5807
|
}
|
|
@@ -5896,7 +5930,7 @@ ${contextBlock}` : contextBlock);
|
|
|
5896
5930
|
return recentActions();
|
|
5897
5931
|
},
|
|
5898
5932
|
children: (action) => (() => {
|
|
5899
|
-
var _el$114 = _tmpl$30(), _el$115 = _el$114.firstChild, _el$116 = _el$115.firstChild, _el$117 = _el$116.nextSibling, _el$118 = _el$115.nextSibling;
|
|
5933
|
+
var _el$114 = _tmpl$30$1(), _el$115 = _el$114.firstChild, _el$116 = _el$115.firstChild, _el$117 = _el$116.nextSibling, _el$118 = _el$115.nextSibling;
|
|
5900
5934
|
insert(_el$116, () => action.name);
|
|
5901
5935
|
insert(_el$117, () => action.status);
|
|
5902
5936
|
insert(_el$118, () => action.argsSummary);
|
|
@@ -5987,7 +6021,7 @@ ${contextBlock}` : contextBlock);
|
|
|
5987
6021
|
},
|
|
5988
6022
|
get fallback() {
|
|
5989
6023
|
return (() => {
|
|
5990
|
-
var _el$121 = _tmpl$31();
|
|
6024
|
+
var _el$121 = _tmpl$31$1();
|
|
5991
6025
|
insert(_el$121, (() => {
|
|
5992
6026
|
var _c$5 = memo(() => !!normalizedBookmarkSearch());
|
|
5993
6027
|
return () => _c$5() ? `No bookmarks matched "${bookmarkSearchQuery().trim()}".` : "No bookmarks saved yet.";
|
|
@@ -6001,7 +6035,7 @@ ${contextBlock}` : contextBlock);
|
|
|
6001
6035
|
return filteredGroupedBookmarks();
|
|
6002
6036
|
},
|
|
6003
6037
|
children: (folder) => (() => {
|
|
6004
|
-
var _el$122 = _tmpl$
|
|
6038
|
+
var _el$122 = _tmpl$38(), _el$123 = _el$122.firstChild, _el$124 = _el$123.firstChild, _el$125 = _el$124.firstChild, _el$126 = _el$125.nextSibling, _el$127 = _el$126.firstChild, _el$128 = _el$127.nextSibling, _el$129 = _el$128.firstChild;
|
|
6005
6039
|
_el$123.$$keydown = (e) => {
|
|
6006
6040
|
if (e.key === "Enter" || e.key === " ") {
|
|
6007
6041
|
e.preventDefault();
|
|
@@ -6035,29 +6069,58 @@ ${contextBlock}` : contextBlock);
|
|
|
6035
6069
|
};
|
|
6036
6070
|
_el$133.$$click = (e) => {
|
|
6037
6071
|
e.stopPropagation();
|
|
6038
|
-
|
|
6072
|
+
setDeletingFolderId(folder.id);
|
|
6039
6073
|
};
|
|
6040
6074
|
return _el$131;
|
|
6041
6075
|
}
|
|
6042
6076
|
}), null);
|
|
6077
|
+
insert(_el$122, createComponent(Show, {
|
|
6078
|
+
get when() {
|
|
6079
|
+
return deletingFolderId() === folder.id;
|
|
6080
|
+
},
|
|
6081
|
+
get children() {
|
|
6082
|
+
var _el$134 = _tmpl$35(), _el$135 = _el$134.firstChild, _el$136 = _el$135.firstChild, _el$138 = _el$136.nextSibling;
|
|
6083
|
+
_el$138.nextSibling;
|
|
6084
|
+
var _el$139 = _el$135.nextSibling, _el$141 = _el$139.firstChild, _el$142 = _el$141.nextSibling;
|
|
6085
|
+
insert(_el$135, () => folder.name, _el$138);
|
|
6086
|
+
insert(_el$135, (() => {
|
|
6087
|
+
var _c$6 = memo(() => folder.items.length > 0);
|
|
6088
|
+
return () => _c$6() ? ` This folder has ${folder.items.length} bookmark${folder.items.length === 1 ? "" : "s"}.` : "";
|
|
6089
|
+
})(), null);
|
|
6090
|
+
insert(_el$139, createComponent(Show, {
|
|
6091
|
+
get when() {
|
|
6092
|
+
return folder.items.length > 0;
|
|
6093
|
+
},
|
|
6094
|
+
get children() {
|
|
6095
|
+
var _el$140 = _tmpl$34();
|
|
6096
|
+
_el$140.$$click = () => void handleRemoveFolder(folder.id, false);
|
|
6097
|
+
return _el$140;
|
|
6098
|
+
}
|
|
6099
|
+
}), _el$141);
|
|
6100
|
+
_el$141.$$click = () => void handleRemoveFolder(folder.id, true);
|
|
6101
|
+
insert(_el$141, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
|
|
6102
|
+
_el$142.$$click = () => setDeletingFolderId(null);
|
|
6103
|
+
return _el$134;
|
|
6104
|
+
}
|
|
6105
|
+
}), null);
|
|
6043
6106
|
insert(_el$122, createComponent(Show, {
|
|
6044
6107
|
get when() {
|
|
6045
6108
|
return editingFolderId() === folder.id;
|
|
6046
6109
|
},
|
|
6047
6110
|
get children() {
|
|
6048
|
-
var _el$
|
|
6049
|
-
_el$
|
|
6050
|
-
_el$
|
|
6051
|
-
_el$
|
|
6052
|
-
_el$
|
|
6111
|
+
var _el$143 = _tmpl$36(), _el$144 = _el$143.firstChild, _el$145 = _el$144.firstChild, _el$146 = _el$145.nextSibling, _el$147 = _el$144.nextSibling, _el$148 = _el$147.nextSibling;
|
|
6112
|
+
_el$145.$$input = (e) => setEditingFolderName(e.currentTarget.value);
|
|
6113
|
+
_el$146.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
|
|
6114
|
+
_el$147.$$click = () => void handleRenameFolder(folder.id);
|
|
6115
|
+
_el$148.$$click = () => {
|
|
6053
6116
|
setEditingFolderId(null);
|
|
6054
6117
|
setEditingFolderName("");
|
|
6055
6118
|
setEditingFolderSummary("");
|
|
6056
6119
|
};
|
|
6057
|
-
createRenderEffect(() => _el$
|
|
6058
|
-
createRenderEffect(() => _el$
|
|
6059
|
-
createRenderEffect(() => _el$
|
|
6060
|
-
return _el$
|
|
6120
|
+
createRenderEffect(() => _el$147.disabled = !editingFolderName().trim());
|
|
6121
|
+
createRenderEffect(() => _el$145.value = editingFolderName());
|
|
6122
|
+
createRenderEffect(() => _el$146.value = editingFolderSummary());
|
|
6123
|
+
return _el$143;
|
|
6061
6124
|
}
|
|
6062
6125
|
}), null);
|
|
6063
6126
|
insert(_el$122, createComponent(Show, {
|
|
@@ -6065,7 +6128,7 @@ ${contextBlock}` : contextBlock);
|
|
|
6065
6128
|
return isFolderExpanded(folder.id);
|
|
6066
6129
|
},
|
|
6067
6130
|
get fallback() {
|
|
6068
|
-
return _tmpl$
|
|
6131
|
+
return _tmpl$39();
|
|
6069
6132
|
},
|
|
6070
6133
|
get children() {
|
|
6071
6134
|
return createComponent(Show, {
|
|
@@ -6073,36 +6136,36 @@ ${contextBlock}` : contextBlock);
|
|
|
6073
6136
|
return folder.items.length > 0;
|
|
6074
6137
|
},
|
|
6075
6138
|
get fallback() {
|
|
6076
|
-
return _tmpl$
|
|
6139
|
+
return _tmpl$40();
|
|
6077
6140
|
},
|
|
6078
6141
|
get children() {
|
|
6079
|
-
var _el$
|
|
6080
|
-
insert(_el$
|
|
6142
|
+
var _el$149 = _tmpl$37();
|
|
6143
|
+
insert(_el$149, createComponent(For, {
|
|
6081
6144
|
get each() {
|
|
6082
6145
|
return folder.items;
|
|
6083
6146
|
},
|
|
6084
6147
|
children: (bookmark) => (() => {
|
|
6085
|
-
var _el$
|
|
6086
|
-
_el$
|
|
6087
|
-
insert(_el$
|
|
6088
|
-
insert(_el$
|
|
6089
|
-
insert(_el$
|
|
6148
|
+
var _el$152 = _tmpl$42(), _el$153 = _el$152.firstChild, _el$154 = _el$153.firstChild, _el$155 = _el$154.nextSibling, _el$157 = _el$153.nextSibling, _el$158 = _el$157.firstChild, _el$159 = _el$158.nextSibling;
|
|
6149
|
+
_el$153.$$click = () => void createTab(bookmark.url);
|
|
6150
|
+
insert(_el$154, () => bookmark.title || bookmark.url);
|
|
6151
|
+
insert(_el$155, () => bookmark.url);
|
|
6152
|
+
insert(_el$152, createComponent(Show, {
|
|
6090
6153
|
get when() {
|
|
6091
6154
|
return bookmark.note;
|
|
6092
6155
|
},
|
|
6093
6156
|
get children() {
|
|
6094
|
-
var _el$
|
|
6095
|
-
insert(_el$
|
|
6096
|
-
return _el$
|
|
6157
|
+
var _el$156 = _tmpl$41();
|
|
6158
|
+
insert(_el$156, () => bookmark.note);
|
|
6159
|
+
return _el$156;
|
|
6097
6160
|
}
|
|
6098
|
-
}), _el$
|
|
6099
|
-
insert(_el$
|
|
6100
|
-
_el$
|
|
6101
|
-
createRenderEffect(() => setAttribute(_el$
|
|
6102
|
-
return _el$
|
|
6161
|
+
}), _el$157);
|
|
6162
|
+
insert(_el$158, () => formatBookmarkDate(bookmark.savedAt));
|
|
6163
|
+
_el$159.$$click = () => void removeBookmark(bookmark.id);
|
|
6164
|
+
createRenderEffect(() => setAttribute(_el$152, "data-bookmark-id", bookmark.id));
|
|
6165
|
+
return _el$152;
|
|
6103
6166
|
})()
|
|
6104
6167
|
}));
|
|
6105
|
-
return _el$
|
|
6168
|
+
return _el$149;
|
|
6106
6169
|
}
|
|
6107
6170
|
});
|
|
6108
6171
|
}
|
|
@@ -6150,7 +6213,7 @@ ${contextBlock}` : contextBlock);
|
|
|
6150
6213
|
return recentCheckpoints().length > 0;
|
|
6151
6214
|
},
|
|
6152
6215
|
get fallback() {
|
|
6153
|
-
return _tmpl$
|
|
6216
|
+
return _tmpl$43();
|
|
6154
6217
|
},
|
|
6155
6218
|
get children() {
|
|
6156
6219
|
var _el$71 = _tmpl$0$2();
|
|
@@ -6159,20 +6222,20 @@ ${contextBlock}` : contextBlock);
|
|
|
6159
6222
|
return recentCheckpoints();
|
|
6160
6223
|
},
|
|
6161
6224
|
children: (checkpoint, i) => (() => {
|
|
6162
|
-
var _el$
|
|
6163
|
-
insert(_el$
|
|
6225
|
+
var _el$161 = _tmpl$45(), _el$162 = _el$161.firstChild, _el$163 = _el$162.firstChild, _el$165 = _el$162.nextSibling, _el$166 = _el$165.firstChild, _el$167 = _el$166.nextSibling, _el$168 = _el$167.nextSibling;
|
|
6226
|
+
insert(_el$162, createComponent(Show, {
|
|
6164
6227
|
get when() {
|
|
6165
6228
|
return i() < recentCheckpoints().length - 1;
|
|
6166
6229
|
},
|
|
6167
6230
|
get children() {
|
|
6168
|
-
return _tmpl$
|
|
6231
|
+
return _tmpl$44();
|
|
6169
6232
|
}
|
|
6170
6233
|
}), null);
|
|
6171
|
-
insert(_el$
|
|
6172
|
-
insert(_el$
|
|
6173
|
-
_el$
|
|
6174
|
-
createRenderEffect(() => _el$
|
|
6175
|
-
return _el$
|
|
6234
|
+
insert(_el$166, () => checkpoint.name);
|
|
6235
|
+
insert(_el$167, () => new Date(checkpoint.createdAt).toLocaleString());
|
|
6236
|
+
_el$168.$$click = () => void restoreCheckpoint(checkpoint.id);
|
|
6237
|
+
createRenderEffect(() => _el$163.classList.toggle("latest", !!(i() === 0)));
|
|
6238
|
+
return _el$161;
|
|
6176
6239
|
})()
|
|
6177
6240
|
}));
|
|
6178
6241
|
return _el$71;
|
|
@@ -6212,13 +6275,13 @@ ${contextBlock}` : contextBlock);
|
|
|
6212
6275
|
return messages2();
|
|
6213
6276
|
},
|
|
6214
6277
|
children: (msg) => (() => {
|
|
6215
|
-
var _el$
|
|
6216
|
-
insert(_el$
|
|
6278
|
+
var _el$169 = _tmpl$46();
|
|
6279
|
+
insert(_el$169, createComponent(MarkdownMessage, {
|
|
6217
6280
|
get content() {
|
|
6218
6281
|
return msg.content;
|
|
6219
6282
|
}
|
|
6220
6283
|
}), null);
|
|
6221
|
-
insert(_el$
|
|
6284
|
+
insert(_el$169, createComponent(Show, {
|
|
6222
6285
|
get when() {
|
|
6223
6286
|
return memo(() => msg.role === "assistant")() ? getPremiumPromptKind(msg.content) : null;
|
|
6224
6287
|
},
|
|
@@ -6231,8 +6294,8 @@ ${contextBlock}` : contextBlock);
|
|
|
6231
6294
|
onOpenSettings: openPremiumDetails
|
|
6232
6295
|
})
|
|
6233
6296
|
}), null);
|
|
6234
|
-
createRenderEffect(() => className(_el$
|
|
6235
|
-
return _el$
|
|
6297
|
+
createRenderEffect(() => className(_el$169, `message message-${msg.role}`));
|
|
6298
|
+
return _el$169;
|
|
6236
6299
|
})()
|
|
6237
6300
|
}), createComponent(Show, {
|
|
6238
6301
|
get when() {
|
|
@@ -6245,7 +6308,7 @@ ${contextBlock}` : contextBlock);
|
|
|
6245
6308
|
return hasFirstChunk2();
|
|
6246
6309
|
},
|
|
6247
6310
|
get fallback() {
|
|
6248
|
-
return _tmpl$
|
|
6311
|
+
return _tmpl$47();
|
|
6249
6312
|
},
|
|
6250
6313
|
get children() {
|
|
6251
6314
|
var _el$80 = _tmpl$12$2(), _el$81 = _el$80.firstChild, _el$82 = _el$81.firstChild;
|
|
@@ -6293,22 +6356,22 @@ ${contextBlock}` : contextBlock);
|
|
|
6293
6356
|
return runtimeState2().supervisor.pendingApprovals;
|
|
6294
6357
|
},
|
|
6295
6358
|
children: (approval) => (() => {
|
|
6296
|
-
var _el$
|
|
6297
|
-
insert(_el$
|
|
6298
|
-
insert(_el$
|
|
6359
|
+
var _el$171 = _tmpl$49(), _el$172 = _el$171.firstChild, _el$173 = _el$172.nextSibling, _el$174 = _el$173.firstChild, _el$175 = _el$174.firstChild, _el$176 = _el$175.nextSibling, _el$178 = _el$174.nextSibling, _el$179 = _el$178.nextSibling, _el$180 = _el$179.firstChild, _el$181 = _el$180.nextSibling;
|
|
6360
|
+
insert(_el$176, () => approval.name);
|
|
6361
|
+
insert(_el$173, createComponent(Show, {
|
|
6299
6362
|
get when() {
|
|
6300
6363
|
return approval.argsSummary;
|
|
6301
6364
|
},
|
|
6302
6365
|
get children() {
|
|
6303
|
-
var _el$
|
|
6304
|
-
insert(_el$
|
|
6305
|
-
return _el$
|
|
6366
|
+
var _el$177 = _tmpl$48();
|
|
6367
|
+
insert(_el$177, () => approval.argsSummary);
|
|
6368
|
+
return _el$177;
|
|
6306
6369
|
}
|
|
6307
|
-
}), _el$
|
|
6308
|
-
insert(_el$
|
|
6309
|
-
_el$
|
|
6310
|
-
_el$
|
|
6311
|
-
return _el$
|
|
6370
|
+
}), _el$178);
|
|
6371
|
+
insert(_el$178, () => approval.reason);
|
|
6372
|
+
_el$180.$$click = () => void resolveApproval(approval.id, true);
|
|
6373
|
+
_el$181.$$click = () => void resolveApproval(approval.id, false);
|
|
6374
|
+
return _el$171;
|
|
6312
6375
|
})()
|
|
6313
6376
|
});
|
|
6314
6377
|
}
|
|
@@ -6411,12 +6474,12 @@ ${contextBlock}` : contextBlock);
|
|
|
6411
6474
|
return pendingQueries2();
|
|
6412
6475
|
},
|
|
6413
6476
|
children: (pendingPrompt, index) => (() => {
|
|
6414
|
-
var _el$
|
|
6415
|
-
setAttribute(_el$
|
|
6416
|
-
insert(_el$
|
|
6417
|
-
_el$
|
|
6418
|
-
createRenderEffect(() => setAttribute(_el$
|
|
6419
|
-
return _el$
|
|
6477
|
+
var _el$182 = _tmpl$50(), _el$183 = _el$182.firstChild, _el$184 = _el$183.nextSibling;
|
|
6478
|
+
setAttribute(_el$183, "title", pendingPrompt);
|
|
6479
|
+
insert(_el$183, pendingPrompt);
|
|
6480
|
+
_el$184.$$click = () => removePendingQuery(index());
|
|
6481
|
+
createRenderEffect(() => setAttribute(_el$184, "aria-label", `Remove queued prompt ${index() + 1}`));
|
|
6482
|
+
return _el$182;
|
|
6420
6483
|
})()
|
|
6421
6484
|
}));
|
|
6422
6485
|
return _el$99;
|
|
@@ -6914,7 +6977,7 @@ const DevToolsPanel = () => {
|
|
|
6914
6977
|
})();
|
|
6915
6978
|
};
|
|
6916
6979
|
delegateEvents(["click", "input"]);
|
|
6917
|
-
var _tmpl$$2 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><button class="premium-btn premium-btn-upgrade">Try Premium free for 5
|
|
6980
|
+
var _tmpl$$2 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><button class="premium-btn premium-btn-upgrade">Try Premium free for 7 days — $5.99/mo after</button><span class=welcome-banner-note>Best for screenshots, saved sessions, credential vault, and longer autonomous runs.`), _tmpl$2$2 = /* @__PURE__ */ template(`<div class=welcome-banner><div class=welcome-banner-header><span class=welcome-banner-title>Welcome to Vessel</span><button class=welcome-banner-dismiss>×</button></div><p class=welcome-banner-text>Get started in three steps:</p><ol class=welcome-banner-steps><li><strong>Configure a chat provider</strong> — scroll to Chat Assistant below and add an API key</li><li><strong>Connect your agent harness</strong> — point it at the MCP endpoint shown below</li><li><strong>Learn the shortcuts</strong> — press <kbd>?</kbd> anytime for a quick reference`), _tmpl$3$1 = /* @__PURE__ */ template(`<div class="settings-callout settings-premium-callout"><div class=settings-callout-title>Start Vessel Premium with a 7-day free trial</div><p class=settings-callout-copy>Unlock screenshots, saved sessions, workflow tracking, table extraction, the credential vault, and longer autonomous runs without leaving the app.</p><div class=settings-premium-callout-actions><button class="premium-btn premium-btn-upgrade">Start 7-day free trial — $5.99/mo after</button><button class="premium-btn premium-btn-activate">See activation steps`), _tmpl$4$1 = /* @__PURE__ */ template(`<input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200>`), _tmpl$5$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-provider>Provider</label><select id=chat-provider class="settings-input settings-select">`), _tmpl$6$1 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$7 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$8 = /* @__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$9 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$0 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$1 = /* @__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$10 = /* @__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$11 = /* @__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$12 = /* @__PURE__ */ template(`<span class=vault-premium-badge>Premium`), _tmpl$13 = /* @__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$14 = /* @__PURE__ */ template(`<div class=vault-entries>`), _tmpl$15 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Credential`), _tmpl$16 = /* @__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$17 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=settings-panel><h2 class=settings-title>Runtime Settings</h2><div class=settings-callout><div class=settings-callout-title>External Agent Control</div><p class=settings-callout-copy>Vessel is configured to run under an external harness such as Hermes Agent or OpenClaw. Provider and model selection are not configured inside Vessel.</p></div><div class=settings-field><label class=settings-label for=default-homepage>Homepage</label><input id=default-homepage class=settings-input placeholder=https://start.duckduckgo.com><p class=settings-hint>The page that opens when you create a new tab or launch Vessel without restoring a previous session.</p></div><div class=settings-field><label class=settings-label for=mcp-port>MCP Port</label><input id=mcp-port class=settings-input placeholder=3100><p class=settings-hint>External harnesses connect to Vessel at <code>http://127.0.0.1:<port>/mcp</code>. Changing this value restarts the MCP server immediately.</p></div><div class=settings-field><label class=settings-label for=max-tool-iterations>Max Tool Iterations</label><p class=settings-hint></p></div><div class=settings-field><label class=settings-label for=obsidian-vault-path>Obsidian Vault Path</label><input id=obsidian-vault-path class=settings-input placeholder=/home/you/Documents/MyVault><p class=settings-hint>Optional. When set, Vessel memory tools can write markdown notes into this vault for research breadcrumbs and summaries.</p></div><div class=settings-field><label class=settings-label for=agent-transcript-mode>Agent Transcript Monitor</label><select id=agent-transcript-mode class="settings-input settings-select"><option value=off>Off</option><option value=summary>Summary HUD</option><option value=full>Full transcript</option></select><p class=settings-hint>Controls the in-browser transcript monitor when an external harness publishes reasoning or status updates into Vessel via the<code>vessel_publish_transcript</code> MCP tool. Summary HUD shows a compact 2-line status surface; Full transcript shows the recent entry list.</p></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Restore last browser session on launch</span></label></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Start bookmarks fresh on launch</span></label><p class=settings-hint>Off by default. When enabled, bookmark folders and saved pages are cleared each time Vessel starts.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Enable Chat Assistant</span></label><p class=settings-hint>Adds a Chat tab to the sidebar for conversing with an AI provider of your choice.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Vessel Premium</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Agent Credential Vault</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Anonymous Usage Analytics</span></label><p class=settings-hint>Help improve Vessel by sending anonymous usage data (tool popularity, session duration, provider type). No URLs, page content, queries, or personal data is ever collected.</p></div><div class=settings-actions><button class=settings-save>Save</button><button class=settings-close>Close`), _tmpl$18 = /* @__PURE__ */ template(`<style>
|
|
6918
6981
|
.settings-panel {
|
|
6919
6982
|
width: min(440px, calc(100vw - 32px));
|
|
6920
6983
|
max-height: calc(100vh - 48px);
|
|
@@ -7010,6 +7073,10 @@ var _tmpl$$2 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><butt
|
|
|
7010
7073
|
font-weight: 500;
|
|
7011
7074
|
letter-spacing: 0.01em;
|
|
7012
7075
|
}
|
|
7076
|
+
.settings-label-optional {
|
|
7077
|
+
font-weight: 400;
|
|
7078
|
+
opacity: 0.6;
|
|
7079
|
+
}
|
|
7013
7080
|
.settings-input {
|
|
7014
7081
|
width: 100%;
|
|
7015
7082
|
height: 34px;
|
|
@@ -7441,7 +7508,7 @@ var _tmpl$$2 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><butt
|
|
|
7441
7508
|
justify-content: flex-end;
|
|
7442
7509
|
margin-top: 4px;
|
|
7443
7510
|
}
|
|
7444
|
-
`), _tmpl$
|
|
7511
|
+
`), _tmpl$19 = /* @__PURE__ */ template(`<div class="settings-input settings-input-disabled"title="Upgrade to Vessel Premium for unlimited tool iterations">50`), _tmpl$20 = /* @__PURE__ */ template(`<div class=settings-health-issues>`), _tmpl$21 = /* @__PURE__ */ template(`<div class=settings-health><div class=settings-callout-title>Runtime Health</div><p class=settings-hint>MCP status: <strong></strong> `), _tmpl$22 = /* @__PURE__ */ template(`<p class=settings-hint>Active endpoint: <code>`), _tmpl$23 = /* @__PURE__ */ template(`<div class=settings-health-issue><strong></strong><div>`), _tmpl$24 = /* @__PURE__ */ template(`<div>`), _tmpl$25 = /* @__PURE__ */ template(`<option>`), _tmpl$26 = /* @__PURE__ */ template(`<input id=chat-model class=settings-input style=flex:1>`), _tmpl$27 = /* @__PURE__ */ template(`<button class="premium-btn premium-btn-reset">Clear Saved Email`), _tmpl$28 = /* @__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$29 = /* @__PURE__ */ template(`<p class=settings-status>`), _tmpl$30 = /* @__PURE__ */ template(`<p class=settings-hint>Securely store credentials for agent-driven logins. Upgrade to Premium to unlock the Agent Credential Vault.`), _tmpl$31 = /* @__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">×`);
|
|
7445
7512
|
const CHAT_PROVIDERS = [{
|
|
7446
7513
|
id: "anthropic",
|
|
7447
7514
|
name: "Anthropic",
|
|
@@ -7504,7 +7571,7 @@ const CHAT_PROVIDERS = [{
|
|
|
7504
7571
|
requiresKey: false,
|
|
7505
7572
|
needsBaseUrl: true,
|
|
7506
7573
|
defaultBaseUrl: "http://localhost:8080/v1",
|
|
7507
|
-
keyPlaceholder: "",
|
|
7574
|
+
keyPlaceholder: "Bearer token or API key",
|
|
7508
7575
|
defaultModel: "",
|
|
7509
7576
|
models: []
|
|
7510
7577
|
}];
|
|
@@ -7778,11 +7845,11 @@ const Settings = () => {
|
|
|
7778
7845
|
},
|
|
7779
7846
|
get children() {
|
|
7780
7847
|
return [(() => {
|
|
7781
|
-
var _el$ = _tmpl$
|
|
7782
|
-
_el$
|
|
7783
|
-
var _el$
|
|
7784
|
-
_el$
|
|
7785
|
-
var _el$
|
|
7848
|
+
var _el$ = _tmpl$17(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$11 = _el$3.nextSibling, _el$18 = _el$11.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$19.nextSibling, _el$21 = _el$18.nextSibling, _el$22 = _el$21.firstChild, _el$23 = _el$22.nextSibling, _el$24 = _el$21.nextSibling, _el$25 = _el$24.firstChild, _el$27 = _el$25.nextSibling, _el$28 = _el$24.nextSibling, _el$29 = _el$28.firstChild, _el$30 = _el$29.nextSibling, _el$31 = _el$28.nextSibling, _el$32 = _el$31.firstChild, _el$33 = _el$32.nextSibling, _el$34 = _el$31.nextSibling, _el$35 = _el$34.firstChild, _el$36 = _el$35.firstChild, _el$37 = _el$34.nextSibling, _el$38 = _el$37.firstChild, _el$39 = _el$38.firstChild, _el$40 = _el$37.nextSibling, _el$41 = _el$40.nextSibling, _el$42 = _el$41.firstChild, _el$43 = _el$42.firstChild, _el$62 = _el$41.nextSibling, _el$63 = _el$62.nextSibling;
|
|
7849
|
+
_el$63.firstChild;
|
|
7850
|
+
var _el$72 = _el$63.nextSibling, _el$73 = _el$72.nextSibling, _el$74 = _el$73.firstChild;
|
|
7851
|
+
_el$74.firstChild;
|
|
7852
|
+
var _el$90 = _el$73.nextSibling, _el$91 = _el$90.nextSibling, _el$92 = _el$91.firstChild, _el$93 = _el$92.firstChild, _el$94 = _el$91.nextSibling, _el$95 = _el$94.firstChild, _el$96 = _el$95.nextSibling;
|
|
7786
7853
|
addEventListener(_el$, "click", closeSettings, true);
|
|
7787
7854
|
_el$2.$$keydown = handleKeyDown;
|
|
7788
7855
|
_el$2.$$click = (e) => e.stopPropagation();
|
|
@@ -7839,7 +7906,7 @@ const Settings = () => {
|
|
|
7839
7906
|
return premiumActive();
|
|
7840
7907
|
},
|
|
7841
7908
|
get fallback() {
|
|
7842
|
-
return _tmpl$
|
|
7909
|
+
return _tmpl$19();
|
|
7843
7910
|
},
|
|
7844
7911
|
get children() {
|
|
7845
7912
|
var _el$26 = _tmpl$4$1();
|
|
@@ -7860,55 +7927,55 @@ const Settings = () => {
|
|
|
7860
7927
|
return health();
|
|
7861
7928
|
},
|
|
7862
7929
|
children: (currentHealth) => (() => {
|
|
7863
|
-
var _el$
|
|
7864
|
-
_el$
|
|
7865
|
-
insert(_el$
|
|
7866
|
-
insert(_el$
|
|
7867
|
-
insert(_el$
|
|
7930
|
+
var _el$99 = _tmpl$21(), _el$100 = _el$99.firstChild, _el$101 = _el$100.nextSibling, _el$102 = _el$101.firstChild, _el$104 = _el$102.nextSibling;
|
|
7931
|
+
_el$104.nextSibling;
|
|
7932
|
+
insert(_el$104, () => currentHealth().mcp.status);
|
|
7933
|
+
insert(_el$101, () => currentHealth().mcp.message, null);
|
|
7934
|
+
insert(_el$99, createComponent(Show, {
|
|
7868
7935
|
get when() {
|
|
7869
7936
|
return currentHealth().mcp.endpoint;
|
|
7870
7937
|
},
|
|
7871
7938
|
children: (endpoint) => (() => {
|
|
7872
|
-
var _el$
|
|
7873
|
-
insert(_el$
|
|
7874
|
-
return _el$
|
|
7939
|
+
var _el$107 = _tmpl$22(), _el$108 = _el$107.firstChild, _el$109 = _el$108.nextSibling;
|
|
7940
|
+
insert(_el$109, endpoint);
|
|
7941
|
+
return _el$107;
|
|
7875
7942
|
})()
|
|
7876
7943
|
}), null);
|
|
7877
|
-
insert(_el$
|
|
7944
|
+
insert(_el$99, createComponent(Show, {
|
|
7878
7945
|
get when() {
|
|
7879
7946
|
return currentHealth().startupIssues.length > 0;
|
|
7880
7947
|
},
|
|
7881
7948
|
get children() {
|
|
7882
|
-
var _el$
|
|
7883
|
-
insert(_el$
|
|
7884
|
-
var _el$
|
|
7885
|
-
insert(_el$
|
|
7886
|
-
insert(_el$
|
|
7887
|
-
insert(_el$
|
|
7949
|
+
var _el$106 = _tmpl$20();
|
|
7950
|
+
insert(_el$106, () => currentHealth().startupIssues.map((issue) => (() => {
|
|
7951
|
+
var _el$110 = _tmpl$23(), _el$111 = _el$110.firstChild, _el$112 = _el$111.nextSibling;
|
|
7952
|
+
insert(_el$111, () => issue.title);
|
|
7953
|
+
insert(_el$112, () => issue.detail);
|
|
7954
|
+
insert(_el$110, createComponent(Show, {
|
|
7888
7955
|
get when() {
|
|
7889
7956
|
return issue.action;
|
|
7890
7957
|
},
|
|
7891
7958
|
children: (action) => (() => {
|
|
7892
|
-
var _el$
|
|
7893
|
-
insert(_el$
|
|
7894
|
-
return _el$
|
|
7959
|
+
var _el$113 = _tmpl$24();
|
|
7960
|
+
insert(_el$113, action);
|
|
7961
|
+
return _el$113;
|
|
7895
7962
|
})()
|
|
7896
7963
|
}), null);
|
|
7897
7964
|
createRenderEffect((_p$) => {
|
|
7898
7965
|
var _v$9 = !!(issue.severity === "warning"), _v$0 = !!(issue.severity === "error");
|
|
7899
|
-
_v$9 !== _p$.e && _el$
|
|
7900
|
-
_v$0 !== _p$.t && _el$
|
|
7966
|
+
_v$9 !== _p$.e && _el$110.classList.toggle("warning", _p$.e = _v$9);
|
|
7967
|
+
_v$0 !== _p$.t && _el$110.classList.toggle("error", _p$.t = _v$0);
|
|
7901
7968
|
return _p$;
|
|
7902
7969
|
}, {
|
|
7903
7970
|
e: void 0,
|
|
7904
7971
|
t: void 0
|
|
7905
7972
|
});
|
|
7906
|
-
return _el$
|
|
7973
|
+
return _el$110;
|
|
7907
7974
|
})()));
|
|
7908
|
-
return _el$
|
|
7975
|
+
return _el$106;
|
|
7909
7976
|
}
|
|
7910
7977
|
}), null);
|
|
7911
|
-
return _el$
|
|
7978
|
+
return _el$99;
|
|
7912
7979
|
})()
|
|
7913
7980
|
}), _el$28);
|
|
7914
7981
|
_el$30.$$input = (e) => setObsidianVaultPath(e.currentTarget.value);
|
|
@@ -7936,96 +8003,114 @@ const Settings = () => {
|
|
|
7936
8003
|
insert(_el$46, createComponent(For, {
|
|
7937
8004
|
each: CHAT_PROVIDERS,
|
|
7938
8005
|
children: (p) => (() => {
|
|
7939
|
-
var _el$
|
|
7940
|
-
insert(_el$
|
|
7941
|
-
createRenderEffect(() => _el$
|
|
7942
|
-
return _el$
|
|
8006
|
+
var _el$114 = _tmpl$25();
|
|
8007
|
+
insert(_el$114, () => p.name);
|
|
8008
|
+
createRenderEffect(() => _el$114.value = p.id);
|
|
8009
|
+
return _el$114;
|
|
7943
8010
|
})()
|
|
7944
8011
|
}));
|
|
7945
8012
|
createRenderEffect(() => _el$46.value = chatProviderId());
|
|
7946
8013
|
return _el$44;
|
|
7947
8014
|
})(), createComponent(Show, {
|
|
7948
8015
|
get when() {
|
|
7949
|
-
return chatProviderMeta().requiresKey;
|
|
8016
|
+
return chatProviderMeta().requiresKey || chatProviderId() === "custom";
|
|
7950
8017
|
},
|
|
7951
8018
|
get children() {
|
|
7952
|
-
var _el$47 = _tmpl$
|
|
7953
|
-
_el$
|
|
7954
|
-
|
|
7955
|
-
|
|
7956
|
-
|
|
8019
|
+
var _el$47 = _tmpl$8(), _el$48 = _el$47.firstChild;
|
|
8020
|
+
_el$48.firstChild;
|
|
8021
|
+
var _el$51 = _el$48.nextSibling;
|
|
8022
|
+
insert(_el$48, createComponent(Show, {
|
|
8023
|
+
get when() {
|
|
8024
|
+
return !chatProviderMeta().requiresKey;
|
|
8025
|
+
},
|
|
8026
|
+
get children() {
|
|
8027
|
+
return _tmpl$6$1();
|
|
8028
|
+
}
|
|
8029
|
+
}), null);
|
|
8030
|
+
_el$51.$$input = (e) => setChatApiKey(e.currentTarget.value);
|
|
8031
|
+
setAttribute(_el$51, "spellcheck", false);
|
|
8032
|
+
insert(_el$47, createComponent(Show, {
|
|
8033
|
+
get when() {
|
|
8034
|
+
return chatProviderId() === "custom";
|
|
8035
|
+
},
|
|
8036
|
+
get children() {
|
|
8037
|
+
return _tmpl$7();
|
|
8038
|
+
}
|
|
8039
|
+
}), null);
|
|
8040
|
+
createRenderEffect(() => setAttribute(_el$51, "placeholder", chatProviderMeta().keyPlaceholder || "Bearer token or API key"));
|
|
8041
|
+
createRenderEffect(() => _el$51.value = chatApiKey());
|
|
7957
8042
|
return _el$47;
|
|
7958
8043
|
}
|
|
7959
8044
|
}), (() => {
|
|
7960
|
-
var _el$
|
|
7961
|
-
insert(_el$
|
|
8045
|
+
var _el$53 = _tmpl$1(), _el$54 = _el$53.firstChild, _el$55 = _el$54.nextSibling, _el$57 = _el$55.firstChild;
|
|
8046
|
+
insert(_el$55, createComponent(Show, {
|
|
7962
8047
|
get when() {
|
|
7963
8048
|
return providerModels().length > 0;
|
|
7964
8049
|
},
|
|
7965
8050
|
get fallback() {
|
|
7966
8051
|
return (() => {
|
|
7967
|
-
var _el$
|
|
7968
|
-
_el$
|
|
7969
|
-
setAttribute(_el$
|
|
7970
|
-
createRenderEffect(() => setAttribute(_el$
|
|
7971
|
-
createRenderEffect(() => _el$
|
|
7972
|
-
return _el$
|
|
8052
|
+
var _el$115 = _tmpl$26();
|
|
8053
|
+
_el$115.$$input = (e) => setChatModel(e.currentTarget.value);
|
|
8054
|
+
setAttribute(_el$115, "spellcheck", false);
|
|
8055
|
+
createRenderEffect(() => setAttribute(_el$115, "placeholder", modelFetchState() === "loading" ? "Fetching models…" : chatProviderMeta().requiresKey && !chatApiKey().trim() ? "Enter API key to load models" : chatProviderMeta().defaultModel || "model name"));
|
|
8056
|
+
createRenderEffect(() => _el$115.value = chatModel());
|
|
8057
|
+
return _el$115;
|
|
7973
8058
|
})();
|
|
7974
8059
|
},
|
|
7975
8060
|
get children() {
|
|
7976
|
-
var _el$
|
|
7977
|
-
_el$
|
|
7978
|
-
insert(_el$
|
|
8061
|
+
var _el$56 = _tmpl$9();
|
|
8062
|
+
_el$56.addEventListener("change", (e) => setChatModel(e.currentTarget.value));
|
|
8063
|
+
insert(_el$56, createComponent(For, {
|
|
7979
8064
|
get each() {
|
|
7980
8065
|
return providerModels();
|
|
7981
8066
|
},
|
|
7982
8067
|
children: (m) => (() => {
|
|
7983
|
-
var _el$
|
|
7984
|
-
_el$
|
|
7985
|
-
insert(_el$
|
|
7986
|
-
return _el$
|
|
8068
|
+
var _el$116 = _tmpl$25();
|
|
8069
|
+
_el$116.value = m;
|
|
8070
|
+
insert(_el$116, m);
|
|
8071
|
+
return _el$116;
|
|
7987
8072
|
})()
|
|
7988
8073
|
}));
|
|
7989
|
-
createRenderEffect(() => _el$
|
|
7990
|
-
return _el$
|
|
8074
|
+
createRenderEffect(() => _el$56.value = chatModel());
|
|
8075
|
+
return _el$56;
|
|
7991
8076
|
}
|
|
7992
|
-
}), _el$
|
|
7993
|
-
_el$
|
|
7994
|
-
insert(_el$
|
|
8077
|
+
}), _el$57);
|
|
8078
|
+
_el$57.$$click = doFetchModels;
|
|
8079
|
+
insert(_el$53, createComponent(Show, {
|
|
7995
8080
|
get when() {
|
|
7996
8081
|
return modelFetchState() === "error";
|
|
7997
8082
|
},
|
|
7998
8083
|
get children() {
|
|
7999
|
-
return _tmpl$
|
|
8084
|
+
return _tmpl$0();
|
|
8000
8085
|
}
|
|
8001
8086
|
}), null);
|
|
8002
|
-
createRenderEffect(() => _el$
|
|
8003
|
-
return _el$
|
|
8087
|
+
createRenderEffect(() => _el$57.disabled = modelFetchState() === "loading");
|
|
8088
|
+
return _el$53;
|
|
8004
8089
|
})(), createComponent(Show, {
|
|
8005
8090
|
get when() {
|
|
8006
8091
|
return chatProviderMeta().needsBaseUrl || chatProviderId() === "custom";
|
|
8007
8092
|
},
|
|
8008
8093
|
get children() {
|
|
8009
|
-
var _el$
|
|
8010
|
-
_el$
|
|
8011
|
-
setAttribute(_el$
|
|
8012
|
-
createRenderEffect(() => setAttribute(_el$
|
|
8013
|
-
createRenderEffect(() => _el$
|
|
8014
|
-
return _el$
|
|
8094
|
+
var _el$59 = _tmpl$10(), _el$60 = _el$59.firstChild, _el$61 = _el$60.nextSibling;
|
|
8095
|
+
_el$61.$$input = (e) => setChatBaseUrl(e.currentTarget.value);
|
|
8096
|
+
setAttribute(_el$61, "spellcheck", false);
|
|
8097
|
+
createRenderEffect(() => setAttribute(_el$61, "placeholder", chatProviderMeta().defaultBaseUrl ?? "https://..."));
|
|
8098
|
+
createRenderEffect(() => _el$61.value = chatBaseUrl());
|
|
8099
|
+
return _el$59;
|
|
8015
8100
|
}
|
|
8016
8101
|
})];
|
|
8017
8102
|
}
|
|
8018
|
-
}), _el$
|
|
8019
|
-
insert(_el$
|
|
8103
|
+
}), _el$62);
|
|
8104
|
+
insert(_el$63, createComponent(Show, {
|
|
8020
8105
|
get when() {
|
|
8021
8106
|
return premiumActive();
|
|
8022
8107
|
},
|
|
8023
8108
|
get fallback() {
|
|
8024
8109
|
return (() => {
|
|
8025
|
-
var _el$
|
|
8026
|
-
_el$
|
|
8027
|
-
setAttribute(_el$
|
|
8028
|
-
_el$
|
|
8110
|
+
var _el$117 = _tmpl$28(), _el$118 = _el$117.firstChild, _el$119 = _el$118.nextSibling, _el$120 = _el$119.firstChild, _el$121 = _el$120.nextSibling, _el$122 = _el$119.nextSibling;
|
|
8111
|
+
_el$120.$$input = (e) => setPremiumEmail(e.currentTarget.value);
|
|
8112
|
+
setAttribute(_el$120, "spellcheck", false);
|
|
8113
|
+
_el$121.$$click = async () => {
|
|
8029
8114
|
setPremiumLoading(true);
|
|
8030
8115
|
setPremiumMessage(null);
|
|
8031
8116
|
try {
|
|
@@ -8051,54 +8136,54 @@ const Settings = () => {
|
|
|
8051
8136
|
setPremiumLoading(false);
|
|
8052
8137
|
}
|
|
8053
8138
|
};
|
|
8054
|
-
insert(_el$
|
|
8055
|
-
_el$
|
|
8139
|
+
insert(_el$121, () => premiumLoading() ? "Checking..." : "Activate");
|
|
8140
|
+
_el$122.$$click = () => {
|
|
8056
8141
|
startPremiumCheckout();
|
|
8057
8142
|
};
|
|
8058
|
-
insert(_el$
|
|
8143
|
+
insert(_el$117, createComponent(Show, {
|
|
8059
8144
|
get when() {
|
|
8060
8145
|
return premiumMessage();
|
|
8061
8146
|
},
|
|
8062
8147
|
children: (msg) => (() => {
|
|
8063
|
-
var _el$
|
|
8064
|
-
insert(_el$
|
|
8148
|
+
var _el$124 = _tmpl$29();
|
|
8149
|
+
insert(_el$124, () => msg().text);
|
|
8065
8150
|
createRenderEffect((_p$) => {
|
|
8066
8151
|
var _v$1 = !!(msg().kind === "success"), _v$10 = !!(msg().kind === "error");
|
|
8067
|
-
_v$1 !== _p$.e && _el$
|
|
8068
|
-
_v$10 !== _p$.t && _el$
|
|
8152
|
+
_v$1 !== _p$.e && _el$124.classList.toggle("success", _p$.e = _v$1);
|
|
8153
|
+
_v$10 !== _p$.t && _el$124.classList.toggle("error", _p$.t = _v$10);
|
|
8069
8154
|
return _p$;
|
|
8070
8155
|
}, {
|
|
8071
8156
|
e: void 0,
|
|
8072
8157
|
t: void 0
|
|
8073
8158
|
});
|
|
8074
|
-
return _el$
|
|
8159
|
+
return _el$124;
|
|
8075
8160
|
})()
|
|
8076
8161
|
}), null);
|
|
8077
|
-
insert(_el$
|
|
8162
|
+
insert(_el$117, createComponent(Show, {
|
|
8078
8163
|
get when() {
|
|
8079
8164
|
return premiumState().email || premiumEmail();
|
|
8080
8165
|
},
|
|
8081
8166
|
get children() {
|
|
8082
|
-
var _el$
|
|
8083
|
-
_el$
|
|
8167
|
+
var _el$123 = _tmpl$27();
|
|
8168
|
+
_el$123.$$click = async () => {
|
|
8084
8169
|
const state = await window.vessel.premium.reset();
|
|
8085
8170
|
setPremiumState(state);
|
|
8086
8171
|
setPremiumEmail("");
|
|
8087
8172
|
setPremiumMessage(null);
|
|
8088
8173
|
};
|
|
8089
|
-
return _el$
|
|
8174
|
+
return _el$123;
|
|
8090
8175
|
}
|
|
8091
8176
|
}), null);
|
|
8092
|
-
createRenderEffect(() => _el$
|
|
8093
|
-
createRenderEffect(() => _el$
|
|
8094
|
-
return _el$
|
|
8177
|
+
createRenderEffect(() => _el$121.disabled = premiumLoading() || !premiumEmail().trim());
|
|
8178
|
+
createRenderEffect(() => _el$120.value = premiumEmail());
|
|
8179
|
+
return _el$117;
|
|
8095
8180
|
})();
|
|
8096
8181
|
},
|
|
8097
8182
|
get children() {
|
|
8098
|
-
var _el$
|
|
8099
|
-
_el$
|
|
8100
|
-
var _el$
|
|
8101
|
-
insert(_el$
|
|
8183
|
+
var _el$65 = _tmpl$11(), _el$66 = _el$65.firstChild;
|
|
8184
|
+
_el$66.firstChild;
|
|
8185
|
+
var _el$68 = _el$66.nextSibling, _el$69 = _el$68.nextSibling, _el$70 = _el$69.firstChild, _el$71 = _el$70.nextSibling;
|
|
8186
|
+
insert(_el$66, createComponent(Show, {
|
|
8102
8187
|
get when() {
|
|
8103
8188
|
return premiumState().status === "trialing";
|
|
8104
8189
|
},
|
|
@@ -8106,8 +8191,8 @@ const Settings = () => {
|
|
|
8106
8191
|
return [" ", "(Trial)"];
|
|
8107
8192
|
}
|
|
8108
8193
|
}), null);
|
|
8109
|
-
insert(_el$
|
|
8110
|
-
insert(_el$
|
|
8194
|
+
insert(_el$68, () => premiumState().email, null);
|
|
8195
|
+
insert(_el$68, createComponent(Show, {
|
|
8111
8196
|
get when() {
|
|
8112
8197
|
return premiumState().expiresAt;
|
|
8113
8198
|
},
|
|
@@ -8115,50 +8200,50 @@ const Settings = () => {
|
|
|
8115
8200
|
return [" ", "· Renews", " ", memo(() => new Date(premiumState().expiresAt).toLocaleDateString())];
|
|
8116
8201
|
}
|
|
8117
8202
|
}), null);
|
|
8118
|
-
_el$
|
|
8203
|
+
_el$70.$$click = () => {
|
|
8119
8204
|
void window.vessel.premium.portal();
|
|
8120
8205
|
};
|
|
8121
|
-
_el$
|
|
8206
|
+
_el$71.$$click = async () => {
|
|
8122
8207
|
const state = await window.vessel.premium.reset();
|
|
8123
8208
|
setPremiumState(state);
|
|
8124
8209
|
setPremiumEmail("");
|
|
8125
8210
|
setPremiumMessage(null);
|
|
8126
8211
|
};
|
|
8127
|
-
return _el$
|
|
8212
|
+
return _el$65;
|
|
8128
8213
|
}
|
|
8129
8214
|
}), null);
|
|
8130
|
-
insert(_el$
|
|
8215
|
+
insert(_el$74, createComponent(Show, {
|
|
8131
8216
|
get when() {
|
|
8132
8217
|
return !premiumActive();
|
|
8133
8218
|
},
|
|
8134
8219
|
get children() {
|
|
8135
|
-
return _tmpl$
|
|
8220
|
+
return _tmpl$12();
|
|
8136
8221
|
}
|
|
8137
8222
|
}), null);
|
|
8138
|
-
insert(_el$
|
|
8223
|
+
insert(_el$73, createComponent(Show, {
|
|
8139
8224
|
get when() {
|
|
8140
8225
|
return premiumActive();
|
|
8141
8226
|
},
|
|
8142
8227
|
get fallback() {
|
|
8143
|
-
return _tmpl$
|
|
8228
|
+
return _tmpl$30();
|
|
8144
8229
|
},
|
|
8145
8230
|
get children() {
|
|
8146
|
-
return [_tmpl$
|
|
8231
|
+
return [_tmpl$13(), createComponent(Show, {
|
|
8147
8232
|
get when() {
|
|
8148
8233
|
return vaultEntries().length > 0;
|
|
8149
8234
|
},
|
|
8150
8235
|
get children() {
|
|
8151
|
-
var _el$
|
|
8152
|
-
insert(_el$
|
|
8236
|
+
var _el$78 = _tmpl$14();
|
|
8237
|
+
insert(_el$78, createComponent(For, {
|
|
8153
8238
|
get each() {
|
|
8154
8239
|
return vaultEntries();
|
|
8155
8240
|
},
|
|
8156
8241
|
children: (entry) => (() => {
|
|
8157
|
-
var _el$
|
|
8158
|
-
insert(_el$
|
|
8159
|
-
insert(_el$
|
|
8160
|
-
insert(_el$
|
|
8161
|
-
insert(_el$
|
|
8242
|
+
var _el$126 = _tmpl$31(), _el$127 = _el$126.firstChild, _el$128 = _el$127.firstChild, _el$129 = _el$128.nextSibling, _el$130 = _el$129.firstChild, _el$131 = _el$127.nextSibling;
|
|
8243
|
+
insert(_el$128, () => entry.label);
|
|
8244
|
+
insert(_el$129, () => entry.username, _el$130);
|
|
8245
|
+
insert(_el$129, () => entry.domainPattern, null);
|
|
8246
|
+
insert(_el$129, createComponent(Show, {
|
|
8162
8247
|
get when() {
|
|
8163
8248
|
return entry.useCount > 0;
|
|
8164
8249
|
},
|
|
@@ -8166,43 +8251,43 @@ const Settings = () => {
|
|
|
8166
8251
|
return [" ", "· Used ", memo(() => entry.useCount), "x"];
|
|
8167
8252
|
}
|
|
8168
8253
|
}), null);
|
|
8169
|
-
_el$
|
|
8170
|
-
return _el$
|
|
8254
|
+
_el$131.$$click = () => handleVaultRemove(entry.id);
|
|
8255
|
+
return _el$126;
|
|
8171
8256
|
})()
|
|
8172
8257
|
}));
|
|
8173
|
-
return _el$
|
|
8258
|
+
return _el$78;
|
|
8174
8259
|
}
|
|
8175
8260
|
}), createComponent(Show, {
|
|
8176
8261
|
get when() {
|
|
8177
8262
|
return !vaultAdding();
|
|
8178
8263
|
},
|
|
8179
8264
|
get children() {
|
|
8180
|
-
var _el$
|
|
8181
|
-
_el$
|
|
8265
|
+
var _el$79 = _tmpl$15();
|
|
8266
|
+
_el$79.$$click = () => {
|
|
8182
8267
|
setVaultAdding(true);
|
|
8183
8268
|
setVaultMessage(null);
|
|
8184
8269
|
};
|
|
8185
|
-
return _el$
|
|
8270
|
+
return _el$79;
|
|
8186
8271
|
}
|
|
8187
8272
|
}), createComponent(Show, {
|
|
8188
8273
|
get when() {
|
|
8189
8274
|
return vaultAdding();
|
|
8190
8275
|
},
|
|
8191
8276
|
get children() {
|
|
8192
|
-
var _el$
|
|
8193
|
-
_el$
|
|
8194
|
-
setAttribute(_el$
|
|
8195
|
-
_el$
|
|
8196
|
-
setAttribute(_el$79, "spellcheck", false);
|
|
8197
|
-
_el$80.$$input = (e) => setVaultNewUsername(e.currentTarget.value);
|
|
8198
|
-
setAttribute(_el$80, "spellcheck", false);
|
|
8199
|
-
_el$81.$$input = (e) => setVaultNewPassword(e.currentTarget.value);
|
|
8200
|
-
_el$82.$$input = (e) => setVaultNewTotp(e.currentTarget.value);
|
|
8277
|
+
var _el$80 = _tmpl$16(), _el$81 = _el$80.firstChild, _el$82 = _el$81.nextSibling, _el$83 = _el$82.nextSibling, _el$84 = _el$83.nextSibling, _el$85 = _el$84.nextSibling, _el$86 = _el$85.nextSibling, _el$87 = _el$86.nextSibling, _el$88 = _el$87.firstChild, _el$89 = _el$88.nextSibling;
|
|
8278
|
+
_el$81.$$input = (e) => setVaultNewLabel(e.currentTarget.value);
|
|
8279
|
+
setAttribute(_el$81, "spellcheck", false);
|
|
8280
|
+
_el$82.$$input = (e) => setVaultNewDomain(e.currentTarget.value);
|
|
8201
8281
|
setAttribute(_el$82, "spellcheck", false);
|
|
8202
|
-
_el$83.$$input = (e) =>
|
|
8282
|
+
_el$83.$$input = (e) => setVaultNewUsername(e.currentTarget.value);
|
|
8203
8283
|
setAttribute(_el$83, "spellcheck", false);
|
|
8204
|
-
_el$
|
|
8205
|
-
_el$
|
|
8284
|
+
_el$84.$$input = (e) => setVaultNewPassword(e.currentTarget.value);
|
|
8285
|
+
_el$85.$$input = (e) => setVaultNewTotp(e.currentTarget.value);
|
|
8286
|
+
setAttribute(_el$85, "spellcheck", false);
|
|
8287
|
+
_el$86.$$input = (e) => setVaultNewNotes(e.currentTarget.value);
|
|
8288
|
+
setAttribute(_el$86, "spellcheck", false);
|
|
8289
|
+
_el$88.$$click = handleVaultAdd;
|
|
8290
|
+
_el$89.$$click = () => {
|
|
8206
8291
|
setVaultAdding(false);
|
|
8207
8292
|
setVaultNewLabel("");
|
|
8208
8293
|
setVaultNewDomain("");
|
|
@@ -8211,55 +8296,55 @@ const Settings = () => {
|
|
|
8211
8296
|
setVaultNewTotp("");
|
|
8212
8297
|
setVaultNewNotes("");
|
|
8213
8298
|
};
|
|
8214
|
-
createRenderEffect(() => _el$
|
|
8215
|
-
createRenderEffect(() => _el$
|
|
8216
|
-
createRenderEffect(() => _el$
|
|
8217
|
-
createRenderEffect(() => _el$
|
|
8218
|
-
createRenderEffect(() => _el$
|
|
8219
|
-
createRenderEffect(() => _el$
|
|
8220
|
-
return _el$
|
|
8299
|
+
createRenderEffect(() => _el$81.value = vaultNewLabel());
|
|
8300
|
+
createRenderEffect(() => _el$82.value = vaultNewDomain());
|
|
8301
|
+
createRenderEffect(() => _el$83.value = vaultNewUsername());
|
|
8302
|
+
createRenderEffect(() => _el$84.value = vaultNewPassword());
|
|
8303
|
+
createRenderEffect(() => _el$85.value = vaultNewTotp());
|
|
8304
|
+
createRenderEffect(() => _el$86.value = vaultNewNotes());
|
|
8305
|
+
return _el$80;
|
|
8221
8306
|
}
|
|
8222
8307
|
}), createComponent(Show, {
|
|
8223
8308
|
get when() {
|
|
8224
8309
|
return vaultMessage();
|
|
8225
8310
|
},
|
|
8226
8311
|
children: (msg) => (() => {
|
|
8227
|
-
var _el$
|
|
8228
|
-
insert(_el$
|
|
8312
|
+
var _el$132 = _tmpl$29();
|
|
8313
|
+
insert(_el$132, () => msg().text);
|
|
8229
8314
|
createRenderEffect((_p$) => {
|
|
8230
8315
|
var _v$11 = !!(msg().kind === "success"), _v$12 = !!(msg().kind === "error");
|
|
8231
|
-
_v$11 !== _p$.e && _el$
|
|
8232
|
-
_v$12 !== _p$.t && _el$
|
|
8316
|
+
_v$11 !== _p$.e && _el$132.classList.toggle("success", _p$.e = _v$11);
|
|
8317
|
+
_v$12 !== _p$.t && _el$132.classList.toggle("error", _p$.t = _v$12);
|
|
8233
8318
|
return _p$;
|
|
8234
8319
|
}, {
|
|
8235
8320
|
e: void 0,
|
|
8236
8321
|
t: void 0
|
|
8237
8322
|
});
|
|
8238
|
-
return _el$
|
|
8323
|
+
return _el$132;
|
|
8239
8324
|
})()
|
|
8240
8325
|
})];
|
|
8241
8326
|
}
|
|
8242
8327
|
}), null);
|
|
8243
|
-
_el$
|
|
8244
|
-
_el$
|
|
8245
|
-
addEventListener(_el$
|
|
8328
|
+
_el$93.$$click = () => setTelemetryEnabled(!telemetryEnabled());
|
|
8329
|
+
_el$95.$$click = handleSave;
|
|
8330
|
+
addEventListener(_el$96, "click", closeSettings, true);
|
|
8246
8331
|
insert(_el$2, createComponent(Show, {
|
|
8247
8332
|
get when() {
|
|
8248
8333
|
return status();
|
|
8249
8334
|
},
|
|
8250
8335
|
children: (currentStatus) => (() => {
|
|
8251
|
-
var _el$
|
|
8252
|
-
insert(_el$
|
|
8336
|
+
var _el$133 = _tmpl$29();
|
|
8337
|
+
insert(_el$133, () => currentStatus().text);
|
|
8253
8338
|
createRenderEffect((_p$) => {
|
|
8254
8339
|
var _v$13 = !!(currentStatus().kind === "success"), _v$14 = !!(currentStatus().kind === "error");
|
|
8255
|
-
_v$13 !== _p$.e && _el$
|
|
8256
|
-
_v$14 !== _p$.t && _el$
|
|
8340
|
+
_v$13 !== _p$.e && _el$133.classList.toggle("success", _p$.e = _v$13);
|
|
8341
|
+
_v$14 !== _p$.t && _el$133.classList.toggle("error", _p$.t = _v$14);
|
|
8257
8342
|
return _p$;
|
|
8258
8343
|
}, {
|
|
8259
8344
|
e: void 0,
|
|
8260
8345
|
t: void 0
|
|
8261
8346
|
});
|
|
8262
|
-
return _el$
|
|
8347
|
+
return _el$133;
|
|
8263
8348
|
})()
|
|
8264
8349
|
}), null);
|
|
8265
8350
|
createRenderEffect((_p$) => {
|
|
@@ -8270,8 +8355,8 @@ const Settings = () => {
|
|
|
8270
8355
|
_v$4 !== _p$.o && setAttribute(_el$39, "aria-checked", _p$.o = _v$4);
|
|
8271
8356
|
_v$5 !== _p$.i && _el$43.classList.toggle("on", _p$.i = _v$5);
|
|
8272
8357
|
_v$6 !== _p$.n && setAttribute(_el$43, "aria-checked", _p$.n = _v$6);
|
|
8273
|
-
_v$7 !== _p$.s && _el$
|
|
8274
|
-
_v$8 !== _p$.h && setAttribute(_el$
|
|
8358
|
+
_v$7 !== _p$.s && _el$93.classList.toggle("on", _p$.s = _v$7);
|
|
8359
|
+
_v$8 !== _p$.h && setAttribute(_el$93, "aria-checked", _p$.h = _v$8);
|
|
8275
8360
|
return _p$;
|
|
8276
8361
|
}, {
|
|
8277
8362
|
e: void 0,
|
|
@@ -8288,7 +8373,7 @@ const Settings = () => {
|
|
|
8288
8373
|
createRenderEffect(() => _el$30.value = obsidianVaultPath());
|
|
8289
8374
|
createRenderEffect(() => _el$33.value = agentTranscriptMode());
|
|
8290
8375
|
return _el$;
|
|
8291
|
-
})(), _tmpl$
|
|
8376
|
+
})(), _tmpl$18()];
|
|
8292
8377
|
}
|
|
8293
8378
|
});
|
|
8294
8379
|
};
|