@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.
@@ -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
- function flushResize() {
1824
- if (pendingWidth !== null) {
1825
- window.vessel.ui.resizeSidebar(pendingWidth);
1826
- pendingWidth = null;
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
- if (resizeRafId === null) {
1851
- resizeRafId = requestAnimationFrame(flushResize);
1852
- }
1864
+ void flushResize();
1853
1865
  },
1854
- commitResize: () => {
1855
- if (resizeRafId !== null) {
1856
- cancelAnimationFrame(resizeRafId);
1857
- resizeRafId = null;
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>Upgrade to Premium`), _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 &amp; 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$1 = /* @__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$1 = /* @__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>`);
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 &amp; 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$1(), _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;
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$1();
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 5-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.";
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 onPointerUp = () => {
5742
+ const finishResize = () => {
5743
+ if (finished) return;
5744
+ finished = true;
5723
5745
  setIsDragging(false);
5724
- commitResize();
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
- target.addEventListener("pointermove", onPointerMove);
5732
- target.addEventListener("pointerup", onPointerUp);
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 confirmed = window.confirm("Delete this folder? Its bookmarks will move to Unsorted.");
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$36(), _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;
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
- void handleRemoveFolder(folder.id);
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$134 = _tmpl$34(), _el$135 = _el$134.firstChild, _el$136 = _el$135.firstChild, _el$137 = _el$136.nextSibling, _el$138 = _el$135.nextSibling, _el$139 = _el$138.nextSibling;
6049
- _el$136.$$input = (e) => setEditingFolderName(e.currentTarget.value);
6050
- _el$137.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
6051
- _el$138.$$click = () => void handleRenameFolder(folder.id);
6052
- _el$139.$$click = () => {
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$138.disabled = !editingFolderName().trim());
6058
- createRenderEffect(() => _el$136.value = editingFolderName());
6059
- createRenderEffect(() => _el$137.value = editingFolderSummary());
6060
- return _el$134;
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$37();
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$38();
6139
+ return _tmpl$40();
6077
6140
  },
6078
6141
  get children() {
6079
- var _el$140 = _tmpl$35();
6080
- insert(_el$140, createComponent(For, {
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$143 = _tmpl$40(), _el$144 = _el$143.firstChild, _el$145 = _el$144.firstChild, _el$146 = _el$145.nextSibling, _el$148 = _el$144.nextSibling, _el$149 = _el$148.firstChild, _el$150 = _el$149.nextSibling;
6086
- _el$144.$$click = () => void createTab(bookmark.url);
6087
- insert(_el$145, () => bookmark.title || bookmark.url);
6088
- insert(_el$146, () => bookmark.url);
6089
- insert(_el$143, createComponent(Show, {
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$147 = _tmpl$39();
6095
- insert(_el$147, () => bookmark.note);
6096
- return _el$147;
6157
+ var _el$156 = _tmpl$41();
6158
+ insert(_el$156, () => bookmark.note);
6159
+ return _el$156;
6097
6160
  }
6098
- }), _el$148);
6099
- insert(_el$149, () => formatBookmarkDate(bookmark.savedAt));
6100
- _el$150.$$click = () => void removeBookmark(bookmark.id);
6101
- createRenderEffect(() => setAttribute(_el$143, "data-bookmark-id", bookmark.id));
6102
- return _el$143;
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$140;
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$41();
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$152 = _tmpl$43(), _el$153 = _el$152.firstChild, _el$154 = _el$153.firstChild, _el$156 = _el$153.nextSibling, _el$157 = _el$156.firstChild, _el$158 = _el$157.nextSibling, _el$159 = _el$158.nextSibling;
6163
- insert(_el$153, createComponent(Show, {
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$42();
6231
+ return _tmpl$44();
6169
6232
  }
6170
6233
  }), null);
6171
- insert(_el$157, () => checkpoint.name);
6172
- insert(_el$158, () => new Date(checkpoint.createdAt).toLocaleString());
6173
- _el$159.$$click = () => void restoreCheckpoint(checkpoint.id);
6174
- createRenderEffect(() => _el$154.classList.toggle("latest", !!(i() === 0)));
6175
- return _el$152;
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$160 = _tmpl$44();
6216
- insert(_el$160, createComponent(MarkdownMessage, {
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$160, createComponent(Show, {
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$160, `message message-${msg.role}`));
6235
- return _el$160;
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$45();
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$162 = _tmpl$47(), _el$163 = _el$162.firstChild, _el$164 = _el$163.nextSibling, _el$165 = _el$164.firstChild, _el$166 = _el$165.firstChild, _el$167 = _el$166.nextSibling, _el$169 = _el$165.nextSibling, _el$170 = _el$169.nextSibling, _el$171 = _el$170.firstChild, _el$172 = _el$171.nextSibling;
6297
- insert(_el$167, () => approval.name);
6298
- insert(_el$164, createComponent(Show, {
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$168 = _tmpl$46();
6304
- insert(_el$168, () => approval.argsSummary);
6305
- return _el$168;
6366
+ var _el$177 = _tmpl$48();
6367
+ insert(_el$177, () => approval.argsSummary);
6368
+ return _el$177;
6306
6369
  }
6307
- }), _el$169);
6308
- insert(_el$169, () => approval.reason);
6309
- _el$171.$$click = () => void resolveApproval(approval.id, true);
6310
- _el$172.$$click = () => void resolveApproval(approval.id, false);
6311
- return _el$162;
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$173 = _tmpl$48(), _el$174 = _el$173.firstChild, _el$175 = _el$174.nextSibling;
6415
- setAttribute(_el$174, "title", pendingPrompt);
6416
- insert(_el$174, pendingPrompt);
6417
- _el$175.$$click = () => removePendingQuery(index());
6418
- createRenderEffect(() => setAttribute(_el$175, "aria-label", `Remove queued prompt ${index() + 1}`));
6419
- return _el$173;
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 days</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>&times;</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 5-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 free trial</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(`<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$7 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$8 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$9 = /* @__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$0 = /* @__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$1 = /* @__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$10 = /* @__PURE__ */ template(`<span class=vault-premium-badge>Premium`), _tmpl$11 = /* @__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$12 = /* @__PURE__ */ template(`<div class=vault-entries>`), _tmpl$13 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Credential`), _tmpl$14 = /* @__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$15 = /* @__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:&lt;port&gt;/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$16 = /* @__PURE__ */ template(`<style>
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>&times;</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:&lt;port&gt;/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$17 = /* @__PURE__ */ template(`<div class="settings-input settings-input-disabled"title="Upgrade to Vessel Premium for unlimited tool iterations">50`), _tmpl$18 = /* @__PURE__ */ template(`<div class=settings-health-issues>`), _tmpl$19 = /* @__PURE__ */ template(`<div class=settings-health><div class=settings-callout-title>Runtime Health</div><p class=settings-hint>MCP status: <strong></strong> `), _tmpl$20 = /* @__PURE__ */ template(`<p class=settings-hint>Active endpoint: <code>`), _tmpl$21 = /* @__PURE__ */ template(`<div class=settings-health-issue><strong></strong><div>`), _tmpl$22 = /* @__PURE__ */ template(`<div>`), _tmpl$23 = /* @__PURE__ */ template(`<option>`), _tmpl$24 = /* @__PURE__ */ template(`<input id=chat-model class=settings-input style=flex:1>`), _tmpl$25 = /* @__PURE__ */ template(`<button class="premium-btn premium-btn-reset">Clear Saved Email`), _tmpl$26 = /* @__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-day free trial`), _tmpl$27 = /* @__PURE__ */ template(`<p class=settings-status>`), _tmpl$28 = /* @__PURE__ */ template(`<p class=settings-hint>Securely store credentials for agent-driven logins. Upgrade to Premium to unlock the Agent Credential Vault.`), _tmpl$29 = /* @__PURE__ */ template(`<div class=vault-entry><div class=vault-entry-info><span class=vault-entry-label></span><span class=vault-entry-detail> &middot; </span></div><button class=vault-entry-remove title="Remove credential">&times;`);
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> &middot; </span></div><button class=vault-entry-remove title="Remove credential">&times;`);
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$15(), _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$59 = _el$41.nextSibling, _el$60 = _el$59.nextSibling;
7782
- _el$60.firstChild;
7783
- var _el$69 = _el$60.nextSibling, _el$70 = _el$69.nextSibling, _el$71 = _el$70.firstChild;
7784
- _el$71.firstChild;
7785
- var _el$87 = _el$70.nextSibling, _el$88 = _el$87.nextSibling, _el$89 = _el$88.firstChild, _el$90 = _el$89.firstChild, _el$91 = _el$88.nextSibling, _el$92 = _el$91.firstChild, _el$93 = _el$92.nextSibling;
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$17();
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$96 = _tmpl$19(), _el$97 = _el$96.firstChild, _el$98 = _el$97.nextSibling, _el$99 = _el$98.firstChild, _el$101 = _el$99.nextSibling;
7864
- _el$101.nextSibling;
7865
- insert(_el$101, () => currentHealth().mcp.status);
7866
- insert(_el$98, () => currentHealth().mcp.message, null);
7867
- insert(_el$96, createComponent(Show, {
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$104 = _tmpl$20(), _el$105 = _el$104.firstChild, _el$106 = _el$105.nextSibling;
7873
- insert(_el$106, endpoint);
7874
- return _el$104;
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$96, createComponent(Show, {
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$103 = _tmpl$18();
7883
- insert(_el$103, () => currentHealth().startupIssues.map((issue) => (() => {
7884
- var _el$107 = _tmpl$21(), _el$108 = _el$107.firstChild, _el$109 = _el$108.nextSibling;
7885
- insert(_el$108, () => issue.title);
7886
- insert(_el$109, () => issue.detail);
7887
- insert(_el$107, createComponent(Show, {
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$110 = _tmpl$22();
7893
- insert(_el$110, action);
7894
- return _el$110;
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$107.classList.toggle("warning", _p$.e = _v$9);
7900
- _v$0 !== _p$.t && _el$107.classList.toggle("error", _p$.t = _v$0);
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$107;
7973
+ return _el$110;
7907
7974
  })()));
7908
- return _el$103;
7975
+ return _el$106;
7909
7976
  }
7910
7977
  }), null);
7911
- return _el$96;
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$111 = _tmpl$23();
7940
- insert(_el$111, () => p.name);
7941
- createRenderEffect(() => _el$111.value = p.id);
7942
- return _el$111;
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$6$1(), _el$48 = _el$47.firstChild, _el$49 = _el$48.nextSibling;
7953
- _el$49.$$input = (e) => setChatApiKey(e.currentTarget.value);
7954
- setAttribute(_el$49, "spellcheck", false);
7955
- createRenderEffect(() => setAttribute(_el$49, "placeholder", chatProviderMeta().keyPlaceholder));
7956
- createRenderEffect(() => _el$49.value = chatApiKey());
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$50 = _tmpl$9(), _el$51 = _el$50.firstChild, _el$52 = _el$51.nextSibling, _el$54 = _el$52.firstChild;
7961
- insert(_el$52, createComponent(Show, {
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$112 = _tmpl$24();
7968
- _el$112.$$input = (e) => setChatModel(e.currentTarget.value);
7969
- setAttribute(_el$112, "spellcheck", false);
7970
- createRenderEffect(() => setAttribute(_el$112, "placeholder", modelFetchState() === "loading" ? "Fetching models…" : chatProviderMeta().requiresKey && !chatApiKey().trim() ? "Enter API key to load models" : chatProviderMeta().defaultModel || "model name"));
7971
- createRenderEffect(() => _el$112.value = chatModel());
7972
- return _el$112;
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$53 = _tmpl$7();
7977
- _el$53.addEventListener("change", (e) => setChatModel(e.currentTarget.value));
7978
- insert(_el$53, createComponent(For, {
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$113 = _tmpl$23();
7984
- _el$113.value = m;
7985
- insert(_el$113, m);
7986
- return _el$113;
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$53.value = chatModel());
7990
- return _el$53;
8074
+ createRenderEffect(() => _el$56.value = chatModel());
8075
+ return _el$56;
7991
8076
  }
7992
- }), _el$54);
7993
- _el$54.$$click = doFetchModels;
7994
- insert(_el$50, createComponent(Show, {
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$8();
8084
+ return _tmpl$0();
8000
8085
  }
8001
8086
  }), null);
8002
- createRenderEffect(() => _el$54.disabled = modelFetchState() === "loading");
8003
- return _el$50;
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$56 = _tmpl$0(), _el$57 = _el$56.firstChild, _el$58 = _el$57.nextSibling;
8010
- _el$58.$$input = (e) => setChatBaseUrl(e.currentTarget.value);
8011
- setAttribute(_el$58, "spellcheck", false);
8012
- createRenderEffect(() => setAttribute(_el$58, "placeholder", chatProviderMeta().defaultBaseUrl ?? "https://..."));
8013
- createRenderEffect(() => _el$58.value = chatBaseUrl());
8014
- return _el$56;
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$59);
8019
- insert(_el$60, createComponent(Show, {
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$114 = _tmpl$26(), _el$115 = _el$114.firstChild, _el$116 = _el$115.nextSibling, _el$117 = _el$116.firstChild, _el$118 = _el$117.nextSibling, _el$119 = _el$116.nextSibling;
8026
- _el$117.$$input = (e) => setPremiumEmail(e.currentTarget.value);
8027
- setAttribute(_el$117, "spellcheck", false);
8028
- _el$118.$$click = async () => {
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$118, () => premiumLoading() ? "Checking..." : "Activate");
8055
- _el$119.$$click = () => {
8139
+ insert(_el$121, () => premiumLoading() ? "Checking..." : "Activate");
8140
+ _el$122.$$click = () => {
8056
8141
  startPremiumCheckout();
8057
8142
  };
8058
- insert(_el$114, createComponent(Show, {
8143
+ insert(_el$117, createComponent(Show, {
8059
8144
  get when() {
8060
8145
  return premiumMessage();
8061
8146
  },
8062
8147
  children: (msg) => (() => {
8063
- var _el$121 = _tmpl$27();
8064
- insert(_el$121, () => msg().text);
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$121.classList.toggle("success", _p$.e = _v$1);
8068
- _v$10 !== _p$.t && _el$121.classList.toggle("error", _p$.t = _v$10);
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$121;
8159
+ return _el$124;
8075
8160
  })()
8076
8161
  }), null);
8077
- insert(_el$114, createComponent(Show, {
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$120 = _tmpl$25();
8083
- _el$120.$$click = async () => {
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$120;
8174
+ return _el$123;
8090
8175
  }
8091
8176
  }), null);
8092
- createRenderEffect(() => _el$118.disabled = premiumLoading() || !premiumEmail().trim());
8093
- createRenderEffect(() => _el$117.value = premiumEmail());
8094
- return _el$114;
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$62 = _tmpl$1(), _el$63 = _el$62.firstChild;
8099
- _el$63.firstChild;
8100
- var _el$65 = _el$63.nextSibling, _el$66 = _el$65.nextSibling, _el$67 = _el$66.firstChild, _el$68 = _el$67.nextSibling;
8101
- insert(_el$63, createComponent(Show, {
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$65, () => premiumState().email, null);
8110
- insert(_el$65, createComponent(Show, {
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$67.$$click = () => {
8203
+ _el$70.$$click = () => {
8119
8204
  void window.vessel.premium.portal();
8120
8205
  };
8121
- _el$68.$$click = async () => {
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$62;
8212
+ return _el$65;
8128
8213
  }
8129
8214
  }), null);
8130
- insert(_el$71, createComponent(Show, {
8215
+ insert(_el$74, createComponent(Show, {
8131
8216
  get when() {
8132
8217
  return !premiumActive();
8133
8218
  },
8134
8219
  get children() {
8135
- return _tmpl$10();
8220
+ return _tmpl$12();
8136
8221
  }
8137
8222
  }), null);
8138
- insert(_el$70, createComponent(Show, {
8223
+ insert(_el$73, createComponent(Show, {
8139
8224
  get when() {
8140
8225
  return premiumActive();
8141
8226
  },
8142
8227
  get fallback() {
8143
- return _tmpl$28();
8228
+ return _tmpl$30();
8144
8229
  },
8145
8230
  get children() {
8146
- return [_tmpl$11(), createComponent(Show, {
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$75 = _tmpl$12();
8152
- insert(_el$75, createComponent(For, {
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$123 = _tmpl$29(), _el$124 = _el$123.firstChild, _el$125 = _el$124.firstChild, _el$126 = _el$125.nextSibling, _el$127 = _el$126.firstChild, _el$128 = _el$124.nextSibling;
8158
- insert(_el$125, () => entry.label);
8159
- insert(_el$126, () => entry.username, _el$127);
8160
- insert(_el$126, () => entry.domainPattern, null);
8161
- insert(_el$126, createComponent(Show, {
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$128.$$click = () => handleVaultRemove(entry.id);
8170
- return _el$123;
8254
+ _el$131.$$click = () => handleVaultRemove(entry.id);
8255
+ return _el$126;
8171
8256
  })()
8172
8257
  }));
8173
- return _el$75;
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$76 = _tmpl$13();
8181
- _el$76.$$click = () => {
8265
+ var _el$79 = _tmpl$15();
8266
+ _el$79.$$click = () => {
8182
8267
  setVaultAdding(true);
8183
8268
  setVaultMessage(null);
8184
8269
  };
8185
- return _el$76;
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$77 = _tmpl$14(), _el$78 = _el$77.firstChild, _el$79 = _el$78.nextSibling, _el$80 = _el$79.nextSibling, _el$81 = _el$80.nextSibling, _el$82 = _el$81.nextSibling, _el$83 = _el$82.nextSibling, _el$84 = _el$83.nextSibling, _el$85 = _el$84.firstChild, _el$86 = _el$85.nextSibling;
8193
- _el$78.$$input = (e) => setVaultNewLabel(e.currentTarget.value);
8194
- setAttribute(_el$78, "spellcheck", false);
8195
- _el$79.$$input = (e) => setVaultNewDomain(e.currentTarget.value);
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) => setVaultNewNotes(e.currentTarget.value);
8282
+ _el$83.$$input = (e) => setVaultNewUsername(e.currentTarget.value);
8203
8283
  setAttribute(_el$83, "spellcheck", false);
8204
- _el$85.$$click = handleVaultAdd;
8205
- _el$86.$$click = () => {
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$78.value = vaultNewLabel());
8215
- createRenderEffect(() => _el$79.value = vaultNewDomain());
8216
- createRenderEffect(() => _el$80.value = vaultNewUsername());
8217
- createRenderEffect(() => _el$81.value = vaultNewPassword());
8218
- createRenderEffect(() => _el$82.value = vaultNewTotp());
8219
- createRenderEffect(() => _el$83.value = vaultNewNotes());
8220
- return _el$77;
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$129 = _tmpl$27();
8228
- insert(_el$129, () => msg().text);
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$129.classList.toggle("success", _p$.e = _v$11);
8232
- _v$12 !== _p$.t && _el$129.classList.toggle("error", _p$.t = _v$12);
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$129;
8323
+ return _el$132;
8239
8324
  })()
8240
8325
  })];
8241
8326
  }
8242
8327
  }), null);
8243
- _el$90.$$click = () => setTelemetryEnabled(!telemetryEnabled());
8244
- _el$92.$$click = handleSave;
8245
- addEventListener(_el$93, "click", closeSettings, true);
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$130 = _tmpl$27();
8252
- insert(_el$130, () => currentStatus().text);
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$130.classList.toggle("success", _p$.e = _v$13);
8256
- _v$14 !== _p$.t && _el$130.classList.toggle("error", _p$.t = _v$14);
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$130;
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$90.classList.toggle("on", _p$.s = _v$7);
8274
- _v$8 !== _p$.h && setAttribute(_el$90, "aria-checked", _p$.h = _v$8);
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$16()];
8376
+ })(), _tmpl$18()];
8292
8377
  }
8293
8378
  });
8294
8379
  };