@quanta-intellect/vessel-browser 0.1.104 → 0.1.114

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.
@@ -2301,7 +2301,7 @@ function getAgentPresence(state, currentTime = Date.now()) {
2301
2301
  }
2302
2302
  return "idle";
2303
2303
  }
2304
- var _tmpl$$p = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$o = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$l = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list></div><div class=tab-actions><button class=tab-new data-tooltip="New window"data-tooltip-pos=left></button><button class=tab-new data-tooltip="Add active tab to group"data-tooltip-pos=left></button><button class=tab-new data-tooltip="New tab"data-tooltip-pos=left></button><button class="tab-new tab-new-private"data-tooltip="Private window"data-tooltip-pos=left><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11z">`), _tmpl$4$l = /* @__PURE__ */ template(`<button><span class=tab-group-dot></span><span class=tab-group-name></span><span class=tab-group-count>`), _tmpl$5$i = /* @__PURE__ */ template(`<button class="tab-audio tab-audio-pinned">`), _tmpl$6$g = /* @__PURE__ */ template(`<div role=tab>`), _tmpl$7$d = /* @__PURE__ */ template(`<span class=tab-title>`), _tmpl$8$a = /* @__PURE__ */ template(`<button class=tab-audio>`), _tmpl$9$8 = /* @__PURE__ */ template(`<button class=tab-close>×`), _tmpl$0$7 = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$1$7 = /* @__PURE__ */ template(`<span class=tab-loading>`);
2304
+ var _tmpl$$p = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$o = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$l = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list></div><div class=tab-actions><button class=tab-new data-tooltip="New window"data-tooltip-pos=left></button><button class=tab-new data-tooltip="Add active tab to group"data-tooltip-pos=left></button><button class=tab-new data-tooltip="New tab"data-tooltip-pos=left></button><button class="tab-new tab-new-private"data-tooltip="Private window"data-tooltip-pos=left><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11z">`), _tmpl$4$l = /* @__PURE__ */ template(`<button><span class=tab-group-dot></span><span class=tab-group-name></span><span class=tab-group-count>`), _tmpl$5$i = /* @__PURE__ */ template(`<button class="tab-audio tab-audio-pinned">`), _tmpl$6$g = /* @__PURE__ */ template(`<div role=tab>`), _tmpl$7$d = /* @__PURE__ */ template(`<span class=tab-title>`), _tmpl$8$a = /* @__PURE__ */ template(`<button class=tab-audio>`), _tmpl$9$9 = /* @__PURE__ */ template(`<button class=tab-close>×`), _tmpl$0$7 = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$1$7 = /* @__PURE__ */ template(`<span class=tab-loading>`);
2305
2305
  const TAB_CLOSE_MS = 200;
2306
2306
  function stringToHue(str) {
2307
2307
  let hash = 0;
@@ -2360,6 +2360,12 @@ const TabBar = () => {
2360
2360
  const [closingTabIds, setClosingTabIds] = createSignal(/* @__PURE__ */ new Set());
2361
2361
  const modelActiveTabIds = createMemo(() => getAgentActiveTabIds(runtimeState2(), now2()));
2362
2362
  const tabEntries = createMemo(() => {
2363
+ const groupCounts = /* @__PURE__ */ new Map();
2364
+ for (const tab of tabs2()) {
2365
+ if (tab.groupId) {
2366
+ groupCounts.set(tab.groupId, (groupCounts.get(tab.groupId) ?? 0) + 1);
2367
+ }
2368
+ }
2363
2369
  const seenGroups = /* @__PURE__ */ new Set();
2364
2370
  return tabs2().flatMap((tab) => {
2365
2371
  const entries2 = [];
@@ -2371,7 +2377,7 @@ const TabBar = () => {
2371
2377
  name: tab.groupName || "Group",
2372
2378
  color: tab.groupColor || "blue",
2373
2379
  collapsed: !!tab.groupCollapsed,
2374
- count: tabs2().filter((candidate) => candidate.groupId === tab.groupId).length
2380
+ count: groupCounts.get(tab.groupId) ?? 0
2375
2381
  });
2376
2382
  }
2377
2383
  if (!tab.groupCollapsed || tab.id === activeTabId2()) {
@@ -2516,7 +2522,7 @@ const TabBar = () => {
2516
2522
  return _el$15;
2517
2523
  }
2518
2524
  }), memo(() => memo(() => !!tab.isLoading)() && _tmpl$1$7()), (() => {
2519
- var _el$16 = _tmpl$9$8();
2525
+ var _el$16 = _tmpl$9$9();
2520
2526
  _el$16.$$click = (e) => {
2521
2527
  e.stopPropagation();
2522
2528
  handleClose(tab.id);
@@ -2733,8 +2739,10 @@ function useUI() {
2733
2739
  };
2734
2740
  }
2735
2741
  const logger$3 = createLogger("HistoryStore");
2742
+ const HISTORY_PAGE_SIZE = 200;
2736
2743
  const INITIAL$1 = { entries: [] };
2737
2744
  const [historyState, setHistoryState] = createSignal(INITIAL$1);
2745
+ const [historyTotal, setHistoryTotal] = createSignal(0);
2738
2746
  let initialized$3 = false;
2739
2747
  let initPromise$1 = null;
2740
2748
  async function init$3() {
@@ -2743,9 +2751,13 @@ async function init$3() {
2743
2751
  initialized$3 = true;
2744
2752
  initPromise$1 = (async () => {
2745
2753
  try {
2746
- const state = await window.vessel.history.get();
2747
- setHistoryState(state);
2748
- window.vessel.history.onUpdate((s) => setHistoryState(s));
2754
+ const page = await window.vessel.history.list(0, HISTORY_PAGE_SIZE);
2755
+ setHistoryState({ entries: page.entries });
2756
+ setHistoryTotal(page.total);
2757
+ window.vessel.history.onUpdate((page2) => {
2758
+ setHistoryState({ entries: page2.entries });
2759
+ setHistoryTotal(page2.total);
2760
+ });
2749
2761
  } catch (error) {
2750
2762
  initialized$3 = false;
2751
2763
  logger$3.error("Failed to initialize history store:", error);
@@ -2757,8 +2769,19 @@ async function init$3() {
2757
2769
  }
2758
2770
  function useHistory() {
2759
2771
  void init$3();
2772
+ const loadMore = async (limit = HISTORY_PAGE_SIZE) => {
2773
+ const current = historyState().entries;
2774
+ const page = await window.vessel.history.list(current.length, limit);
2775
+ setHistoryState({ entries: [...current, ...page.entries] });
2776
+ setHistoryTotal(page.total);
2777
+ return page;
2778
+ };
2760
2779
  return {
2761
2780
  historyState,
2781
+ historyTotal,
2782
+ hasMore: () => historyState().entries.length < historyTotal(),
2783
+ loadMore,
2784
+ list: (offset, limit) => window.vessel.history.list(offset, limit),
2762
2785
  search: (query) => window.vessel.history.search(query),
2763
2786
  clear: () => window.vessel.history.clear()
2764
2787
  };
@@ -3003,7 +3026,7 @@ const SEARCH_ENGINE_PRESETS = {
3003
3026
  ecosia: { label: "Ecosia", url: "https://www.ecosia.org/search?q=" },
3004
3027
  kagi: { label: "Kagi", url: "https://kagi.com/search?q=" }
3005
3028
  };
3006
- var _tmpl$$n = /* @__PURE__ */ template(`<div class=private-badge title="Private Browsing - history and cookies are not saved"><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11zM5.5 7a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zm3.5 3.5c0-1-1.5-2-2.5-2s-2.5 1-2.5 2"></path></svg><span>Private`), _tmpl$2$m = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z">`), _tmpl$3$j = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.5>`), _tmpl$4$j = /* @__PURE__ */ template(`<div class=security-indicator-wrapper><button>`), _tmpl$5$g = /* @__PURE__ */ template(`<div id=address-autocomplete class=autocomplete-dropdown role=listbox>`), _tmpl$6$f = /* @__PURE__ */ template(`<div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text>`), _tmpl$7$c = /* @__PURE__ */ template(`<button class="agent-status-badge recent"title="Open the What Changed timeline"style=cursor:pointer;font-size:11px><span class=agent-status-dot aria-hidden=true style=background:#f59e0b></span><span class=agent-status-text>What Changed?`), _tmpl$8$9 = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$9$7 = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Recent detections`), _tmpl$0$6 = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>Compared with your last visit</span><span class=page-diff-burst-meta>Previous snapshot from </span></div><div style=display:flex;gap:8px;align-items:center><button class=nav-btn title="Open the full What Changed timeline"style="height:24px;min-width:auto;padding:0 8px">Timeline</button><button class=page-diff-popup-close>&times;`), _tmpl$1$6 = /* @__PURE__ */ template(`<svg><path d="M3 3 L11 3 L11 9 Q7 13 3 9 Z"fill=none stroke=currentColor stroke-width=1.2 stroke-linejoin=round></svg>`, false, true, false), _tmpl$10$6 = /* @__PURE__ */ template(`<svg><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.4 stroke-linecap=round></svg>`, false, true, false), _tmpl$11$6 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1>`), _tmpl$12$6 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round>`), _tmpl$13$5 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$14$5 = /* @__PURE__ */ template(`<button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2>`), _tmpl$15$5 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Clear Data">`), _tmpl$16$4 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip=Settings><svg width=14 height=14 viewBox="0 0 14 14"><circle cx=7 cy=7 r=2 fill=none stroke=currentColor stroke-width=1.2></circle><path d="M7 1v2M7 11v2M1 7h2M11 7h2M2.8 2.8l1.4 1.4M9.8 9.8l1.4 1.4M11.2 2.8l-1.4 1.4M4.2 9.8l-1.4 1.4"stroke=currentColor stroke-width=1 stroke-linecap=round>`), _tmpl$17$4 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"autocomplete=off aria-autocomplete=list aria-controls=address-autocomplete></form></div><div class=toolbar-actions><button class=nav-btn><svg width=14 height=14 viewBox="0 0 14 14">`), _tmpl$18$4 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><circle cx=7 cy=8 r=0.8 fill=white>`), _tmpl$19$4 = /* @__PURE__ */ template(`<div role=option><span class=autocomplete-icon></span><span class=autocomplete-text><span class=autocomplete-title></span><span class=autocomplete-url>`), _tmpl$20$4 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$21$4 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-section>`), _tmpl$22$4 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-part><span>`), _tmpl$23$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$24$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$25$3 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$26$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$27$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$28$3 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><div class=page-diff-badges><span class=page-diff-kind></span><span class=page-diff-section></span></div><span class=page-diff-summary>`), _tmpl$29$2 = /* @__PURE__ */ template(`<li>`);
3029
+ var _tmpl$$n = /* @__PURE__ */ template(`<div class=private-badge title="Private Browsing - history and cookies are not saved"><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11zM5.5 7a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zm3.5 3.5c0-1-1.5-2-2.5-2s-2.5 1-2.5 2"></path></svg><span>Private`), _tmpl$2$m = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z">`), _tmpl$3$j = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.5>`), _tmpl$4$j = /* @__PURE__ */ template(`<div class=security-indicator-wrapper><button>`), _tmpl$5$g = /* @__PURE__ */ template(`<div id=address-autocomplete class=autocomplete-dropdown role=listbox>`), _tmpl$6$f = /* @__PURE__ */ template(`<div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text>`), _tmpl$7$c = /* @__PURE__ */ template(`<button class="agent-status-badge recent"title="Open the What Changed timeline"style=cursor:pointer;font-size:11px><span class=agent-status-dot aria-hidden=true style=background:#f59e0b></span><span class=agent-status-text>What Changed?`), _tmpl$8$9 = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$9$8 = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Recent detections`), _tmpl$0$6 = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>Compared with your last visit</span><span class=page-diff-burst-meta>Previous snapshot from </span></div><div style=display:flex;gap:8px;align-items:center><button class=nav-btn title="Open the full What Changed timeline"style="height:24px;min-width:auto;padding:0 8px">Timeline</button><button class=page-diff-popup-close>&times;`), _tmpl$1$6 = /* @__PURE__ */ template(`<svg><path d="M3 3 L11 3 L11 9 Q7 13 3 9 Z"fill=none stroke=currentColor stroke-width=1.2 stroke-linejoin=round></svg>`, false, true, false), _tmpl$10$6 = /* @__PURE__ */ template(`<svg><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.4 stroke-linecap=round></svg>`, false, true, false), _tmpl$11$6 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1>`), _tmpl$12$6 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round>`), _tmpl$13$5 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$14$5 = /* @__PURE__ */ template(`<button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2>`), _tmpl$15$5 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Clear Data">`), _tmpl$16$4 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip=Settings><svg width=14 height=14 viewBox="0 0 14 14"><circle cx=7 cy=7 r=2 fill=none stroke=currentColor stroke-width=1.2></circle><path d="M7 1v2M7 11v2M1 7h2M11 7h2M2.8 2.8l1.4 1.4M9.8 9.8l1.4 1.4M11.2 2.8l-1.4 1.4M4.2 9.8l-1.4 1.4"stroke=currentColor stroke-width=1 stroke-linecap=round>`), _tmpl$17$4 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"autocomplete=off aria-autocomplete=list aria-controls=address-autocomplete></form></div><div class=toolbar-actions><button class=nav-btn><svg width=14 height=14 viewBox="0 0 14 14">`), _tmpl$18$4 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><circle cx=7 cy=8 r=0.8 fill=white>`), _tmpl$19$4 = /* @__PURE__ */ template(`<div role=option><span class=autocomplete-icon></span><span class=autocomplete-text><span class=autocomplete-title></span><span class=autocomplete-url>`), _tmpl$20$4 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$21$4 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-section>`), _tmpl$22$4 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-part><span>`), _tmpl$23$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$24$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$25$3 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$26$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$27$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$28$3 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><div class=page-diff-badges><span class=page-diff-kind></span><span class=page-diff-section></span></div><span class=page-diff-summary>`), _tmpl$29$2 = /* @__PURE__ */ template(`<li>`);
3007
3030
  const AddressBar = (props) => {
3008
3031
  const {
3009
3032
  activeTab,
@@ -3489,7 +3512,7 @@ const AddressBar = (props) => {
3489
3512
  return memo(() => !!pageDiff().recentBursts?.length)() && (pageDiff().recentBursts?.length || 0) > 1;
3490
3513
  },
3491
3514
  get children() {
3492
- var _el$33 = _tmpl$9$7();
3515
+ var _el$33 = _tmpl$9$8();
3493
3516
  _el$33.firstChild;
3494
3517
  insert(_el$33, createComponent(For, {
3495
3518
  get each() {
@@ -4438,6 +4461,57 @@ const AgentTranscriptDock = () => {
4438
4461
  });
4439
4462
  };
4440
4463
  delegateEvents(["click"]);
4464
+ const MAX_PROVIDER_HISTORY_MESSAGES = 24;
4465
+ const MAX_PROVIDER_HISTORY_CHARS = 24e3;
4466
+ const MAX_PROVIDER_HISTORY_MESSAGE_CHARS = 3e3;
4467
+ const MAX_PROVIDER_HISTORY_SUMMARY_CHARS = 2e3;
4468
+ function truncateText(value, maxLength) {
4469
+ if (value.length <= maxLength) return value;
4470
+ return `${value.slice(0, maxLength - 3).trimEnd()}...`;
4471
+ }
4472
+ function normalizeHistoryMessage(message) {
4473
+ return {
4474
+ role: message.role,
4475
+ content: truncateText(message.content, MAX_PROVIDER_HISTORY_MESSAGE_CHARS)
4476
+ };
4477
+ }
4478
+ function totalHistoryChars(history) {
4479
+ return history.reduce((total, message) => total + message.content.length, 0);
4480
+ }
4481
+ function summarizeOmittedHistory(history) {
4482
+ const snippets = history.slice(-12).map((message) => `${message.role}: ${truncateText(message.content.replace(/\s+/g, " ").trim(), 220)}`).filter((line) => line.length > "assistant: ".length);
4483
+ const content = truncateText(
4484
+ [
4485
+ `[Earlier conversation compacted: ${history.length} message${history.length === 1 ? "" : "s"} omitted.]`,
4486
+ ...snippets
4487
+ ].join("\n"),
4488
+ MAX_PROVIDER_HISTORY_SUMMARY_CHARS
4489
+ );
4490
+ return { role: "user", content };
4491
+ }
4492
+ function compactProviderHistory(history = []) {
4493
+ const normalized = history.map(normalizeHistoryMessage);
4494
+ if (normalized.length <= MAX_PROVIDER_HISTORY_MESSAGES && totalHistoryChars(normalized) <= MAX_PROVIDER_HISTORY_CHARS) {
4495
+ return normalized;
4496
+ }
4497
+ const recent = [];
4498
+ const recentBudget = MAX_PROVIDER_HISTORY_CHARS - MAX_PROVIDER_HISTORY_SUMMARY_CHARS;
4499
+ let usedChars = 0;
4500
+ for (let index = normalized.length - 1; index >= 0; index--) {
4501
+ const message = normalized[index];
4502
+ const nextChars = usedChars + message.content.length;
4503
+ if (recent.length >= MAX_PROVIDER_HISTORY_MESSAGES || nextChars > recentBudget) {
4504
+ break;
4505
+ }
4506
+ recent.unshift(message);
4507
+ usedChars = nextChars;
4508
+ }
4509
+ if (recent.length === 0 && normalized.length > 0) {
4510
+ recent.unshift(normalized[normalized.length - 1]);
4511
+ }
4512
+ const omitted = normalized.slice(0, normalized.length - recent.length);
4513
+ return omitted.length > 0 ? [summarizeOmittedHistory(omitted), ...recent] : recent;
4514
+ }
4441
4515
  const MAX_AUTOMATION_ACTIVITY_ENTRIES = 8;
4442
4516
  function trimActivities(entries2, limit = MAX_AUTOMATION_ACTIVITY_ENTRIES) {
4443
4517
  return entries2.length > limit ? entries2.slice(0, limit) : entries2;
@@ -4549,10 +4623,7 @@ function recordRecentQuery(prompt) {
4549
4623
  });
4550
4624
  }
4551
4625
  function buildHistory() {
4552
- return messages().map((message) => ({
4553
- role: message.role,
4554
- content: message.content
4555
- }));
4626
+ return compactProviderHistory(messages());
4556
4627
  }
4557
4628
  async function dispatchQuery(prompt) {
4558
4629
  const result = await window.vessel.ai.query(prompt, buildHistory());
@@ -6746,7 +6817,7 @@ function renderKitPrompt(kit, values) {
6746
6817
  (_, key) => values[key] ?? ""
6747
6818
  );
6748
6819
  }
6749
- var _tmpl$$d = /* @__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$d = /* @__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$c = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$c = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$b = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$b = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$9 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$8 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$6 = /* @__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$5 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$5 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$5 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$5 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$5 = /* @__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$4 = /* @__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$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$4 = /* @__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$3 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$3 = /* @__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$3 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$3 = /* @__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$3 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$3 = /* @__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$1 = /* @__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>`);
6820
+ var _tmpl$$d = /* @__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$d = /* @__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$c = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$c = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$b = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$b = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$9 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$8 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$7 = /* @__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$5 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$5 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$5 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$5 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$5 = /* @__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$4 = /* @__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$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$4 = /* @__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$3 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$3 = /* @__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$3 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$3 = /* @__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$3 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$3 = /* @__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$1 = /* @__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>`);
6750
6821
  const ICON_MAP = {
6751
6822
  BookOpen: book_open_default,
6752
6823
  Tag: tag_default,
@@ -7309,7 +7380,7 @@ const AutomationTab = (props) => {
7309
7380
  },
7310
7381
  get children() {
7311
7382
  return [(() => {
7312
- var _el$23 = _tmpl$9$6(), _el$24 = _el$23.firstChild, _el$25 = _el$24.nextSibling;
7383
+ var _el$23 = _tmpl$9$7(), _el$24 = _el$23.firstChild, _el$25 = _el$24.nextSibling;
7313
7384
  _el$24.$$click = () => {
7314
7385
  setSelectedKit(null);
7315
7386
  setEditingTaskJobId(null);
@@ -7662,7 +7733,7 @@ function useResearch() {
7662
7733
  }
7663
7734
  };
7664
7735
  }
7665
- var _tmpl$$c = /* @__PURE__ */ template(`<div class=markdown-content>`), _tmpl$2$c = /* @__PURE__ */ template(`<div>`), _tmpl$3$b = /* @__PURE__ */ template(`<div class=research-premium-notice><span class=premium-badge>Premium</span> Brief is free; full research and export require Vessel Premium.`), _tmpl$4$b = /* @__PURE__ */ template(`<div class=research-brief-status>`), _tmpl$5$a = /* @__PURE__ */ template(`<div class=research-idle><h3>Research Desk</h3><p>Start with a topic. Vessel will shape it into a focused brief, draft a research plan, and then send sub-agents after the strongest sources.</p><form class=research-topic-form><textarea class=research-topic-input rows=3 placeholder="What should we research?"></textarea><button class=research-start-btn type=submit>Start Briefing`), _tmpl$6$a = /* @__PURE__ */ template(`<div class=research-brief-loading role=status aria-live=polite><span class=research-spinner aria-hidden=true></span><div><div class=research-loading-title>Brief started</div><div class=research-loading-copy>Preparing the first briefing question...`), _tmpl$7$8 = /* @__PURE__ */ template(`<div class="research-brief-status thinking"role=status aria-live=polite><span class=research-spinner aria-hidden=true></span><span>Thinking...`), _tmpl$8$7 = /* @__PURE__ */ template(`<div class=research-brief-status> queued`), _tmpl$9$5 = /* @__PURE__ */ template(`<div class=research-phase><h3>Briefing</h3><p>Work through the brief here. Once the assistant has enough context, turn it into a research plan.</p><div class=research-brief-thread></div><form class=research-brief-form><textarea class=research-brief-input rows=2></textarea><button type=submit></button></form><div class=phase-controls><button>Build Research Plan</button><button class=secondary>Cancel`), _tmpl$0$4 = /* @__PURE__ */ template(`<div class=research-phase><h3>Planning Research</h3><p>Creating Research Objectives based on your brief...`), _tmpl$1$4 = /* @__PURE__ */ template(`<div class=research-phase><h3>Research Objectives`), _tmpl$10$4 = /* @__PURE__ */ template(`<div class=research-thread-progress-list>`), _tmpl$11$4 = /* @__PURE__ */ template(`<button>Switch to Walk-Away`), _tmpl$12$4 = /* @__PURE__ */ template(`<button>Switch to Interactive`), _tmpl$13$3 = /* @__PURE__ */ template(`<div class=research-phase><h3>Researching</h3><div class=research-active-card role=status aria-live=polite><span class="research-spinner research-active-spinner"aria-hidden=true></span><div class=research-active-copy><div class=research-active-title>Agents are working</div><p> of <!> threads complete</p></div></div><div class=phase-controls><button class=secondary>Stop Research</button><button>Stop Research &amp; Synthesize Current Findings`), _tmpl$14$3 = /* @__PURE__ */ template(`<div class=research-phase><h3>Synthesizing Report</h3><p>Compiling findings into the Research Report...`), _tmpl$15$3 = /* @__PURE__ */ template(`<div class=research-phase><h3>Report Ready`), _tmpl$16$2 = /* @__PURE__ */ template(`<div class=research-desk>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class="research-quick-replies inline"aria-label="Suggested briefing responses">`), _tmpl$18$2 = /* @__PURE__ */ template(`<button type=button class=research-quick-reply>`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=objectives-card><section class=objectives-section><p class=objectives-label>Question</p><p class=objectives-question></p></section><section class=objectives-section><div class=objectives-section-header><p class=objectives-label>Research Threads</p><span></span></div><ul class=objectives-thread-list></ul></section><section class="objectives-section objectives-settings"><label class=mode-toggle><input type=checkbox><span>Walk-away mode (notified when done)</span></label><label class=traces-toggle><input type=checkbox><span>Include agent traces with report</span></label></section><div class=phase-controls><button>Start Research</button><button class=secondary>Cancel`), _tmpl$20$2 = /* @__PURE__ */ template(`<li><span></span><small> sources`), _tmpl$21$2 = /* @__PURE__ */ template(`<section class=objectives-section><p class=objectives-label>Excluded Sources</p><div class=objectives-source-list>`), _tmpl$22$2 = /* @__PURE__ */ template(`<span>`), _tmpl$23$2 = /* @__PURE__ */ template(`<div><span></span><small>`), _tmpl$24$2 = /* @__PURE__ */ template(`<div class=report-card><h4></h4><p>...</p><p> sources cited</p><button>Export as Markdown</button><button class=secondary>New Research`);
7736
+ var _tmpl$$c = /* @__PURE__ */ template(`<div class=markdown-content>`), _tmpl$2$c = /* @__PURE__ */ template(`<div>`), _tmpl$3$b = /* @__PURE__ */ template(`<div class=research-premium-notice><span class=premium-badge>Premium</span> Brief is free; full research and export require Vessel Premium.`), _tmpl$4$b = /* @__PURE__ */ template(`<div class=research-brief-status>`), _tmpl$5$a = /* @__PURE__ */ template(`<div class=research-idle><h3>Research Desk</h3><p>Start with a topic. Vessel will shape it into a focused brief, draft a research plan, and then send sub-agents after the strongest sources.</p><form class=research-topic-form><textarea class=research-topic-input rows=3 placeholder="What should we research?"></textarea><button class=research-start-btn type=submit>Start Briefing`), _tmpl$6$a = /* @__PURE__ */ template(`<div class=research-brief-loading role=status aria-live=polite><span class=research-spinner aria-hidden=true></span><div><div class=research-loading-title>Brief started</div><div class=research-loading-copy>Preparing the first briefing question...`), _tmpl$7$8 = /* @__PURE__ */ template(`<div class="research-brief-status thinking"role=status aria-live=polite><span class=research-spinner aria-hidden=true></span><span>Thinking...`), _tmpl$8$7 = /* @__PURE__ */ template(`<div class=research-brief-status> queued`), _tmpl$9$6 = /* @__PURE__ */ template(`<div class=research-phase><h3>Briefing</h3><p>Work through the brief here. Once the assistant has enough context, turn it into a research plan.</p><div class=research-brief-thread></div><form class=research-brief-form><textarea class=research-brief-input rows=2></textarea><button type=submit></button></form><div class=phase-controls><button>Build Research Plan</button><button class=secondary>Cancel`), _tmpl$0$4 = /* @__PURE__ */ template(`<div class=research-phase><h3>Planning Research</h3><p>Creating Research Objectives based on your brief...`), _tmpl$1$4 = /* @__PURE__ */ template(`<div class=research-phase><h3>Research Objectives`), _tmpl$10$4 = /* @__PURE__ */ template(`<div class=research-thread-progress-list>`), _tmpl$11$4 = /* @__PURE__ */ template(`<button>Switch to Walk-Away`), _tmpl$12$4 = /* @__PURE__ */ template(`<button>Switch to Interactive`), _tmpl$13$3 = /* @__PURE__ */ template(`<div class=research-phase><h3>Researching</h3><div class=research-active-card role=status aria-live=polite><span class="research-spinner research-active-spinner"aria-hidden=true></span><div class=research-active-copy><div class=research-active-title>Agents are working</div><p> of <!> threads complete</p></div></div><div class=phase-controls><button class=secondary>Stop Research</button><button>Stop Research &amp; Synthesize Current Findings`), _tmpl$14$3 = /* @__PURE__ */ template(`<div class=research-phase><h3>Synthesizing Report</h3><p>Compiling findings into the Research Report...`), _tmpl$15$3 = /* @__PURE__ */ template(`<div class=research-phase><h3>Report Ready`), _tmpl$16$2 = /* @__PURE__ */ template(`<div class=research-desk>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class="research-quick-replies inline"aria-label="Suggested briefing responses">`), _tmpl$18$2 = /* @__PURE__ */ template(`<button type=button class=research-quick-reply>`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=objectives-card><section class=objectives-section><p class=objectives-label>Question</p><p class=objectives-question></p></section><section class=objectives-section><div class=objectives-section-header><p class=objectives-label>Research Threads</p><span></span></div><ul class=objectives-thread-list></ul></section><section class="objectives-section objectives-settings"><label class=mode-toggle><input type=checkbox><span>Walk-away mode (notified when done)</span></label><label class=traces-toggle><input type=checkbox><span>Include agent traces with report</span></label></section><div class=phase-controls><button>Start Research</button><button class=secondary>Cancel`), _tmpl$20$2 = /* @__PURE__ */ template(`<li><span></span><small> sources`), _tmpl$21$2 = /* @__PURE__ */ template(`<section class=objectives-section><p class=objectives-label>Excluded Sources</p><div class=objectives-source-list>`), _tmpl$22$2 = /* @__PURE__ */ template(`<span>`), _tmpl$23$2 = /* @__PURE__ */ template(`<div><span></span><small>`), _tmpl$24$2 = /* @__PURE__ */ template(`<div class=report-card><h4></h4><p>...</p><p> sources cited</p><button>Export as Markdown</button><button class=secondary>New Research`);
7666
7737
  const ResearchBriefMarkdown = (props) => {
7667
7738
  const html2 = createMemo(() => renderMarkdown(props.content));
7668
7739
  return (() => {
@@ -8044,7 +8115,7 @@ const ResearchDesk = () => {
8044
8115
  return state().phase === "briefing";
8045
8116
  },
8046
8117
  get children() {
8047
- var _el$10 = _tmpl$9$5(), _el$11 = _el$10.firstChild, _el$12 = _el$11.nextSibling, _el$13 = _el$12.nextSibling, _el$18 = _el$13.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;
8118
+ var _el$10 = _tmpl$9$6(), _el$11 = _el$10.firstChild, _el$12 = _el$11.nextSibling, _el$13 = _el$12.nextSibling, _el$18 = _el$13.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;
8048
8119
  insert(_el$13, createComponent(Show, {
8049
8120
  get when() {
8050
8121
  return isBriefStarting();
@@ -8317,7 +8388,7 @@ const ResearchDesk = () => {
8317
8388
  })();
8318
8389
  };
8319
8390
  delegateEvents(["input", "keydown", "click"]);
8320
- var _tmpl$$b = /* @__PURE__ */ template(`<div class=agent-muted>Loading...`), _tmpl$2$b = /* @__PURE__ */ template(`<div class=agent-muted>`), _tmpl$3$a = /* @__PURE__ */ template(`<div class=agent-muted>No changes detected yet.`), _tmpl$4$a = /* @__PURE__ */ template(`<div class=page-diff-timeline-header><div class=agent-section-title>Change history for this page</div><div class=agent-muted>Newest detections are first. Each entry is a saved change burst.`), _tmpl$5$9 = /* @__PURE__ */ template(`<div class=page-diff-history-list>`), _tmpl$6$9 = /* @__PURE__ */ template(`<div class=page-diff-timeline>`), _tmpl$7$7 = /* @__PURE__ */ template(`<div class=page-diff-history-item><div class=page-diff-history-time><span class=page-diff-history-label></span><span></span></div><div class=page-diff-history-card><div class=page-diff-history-summary-list></div><div class=page-diff-history-position>Entry <!> of `), _tmpl$8$6 = /* @__PURE__ */ template(`<span class=page-diff-history-summary-section>`), _tmpl$9$4 = /* @__PURE__ */ template(`<div class=page-diff-history-summary-row><span class=page-diff-history-summary>`);
8391
+ var _tmpl$$b = /* @__PURE__ */ template(`<div class=agent-muted>Loading...`), _tmpl$2$b = /* @__PURE__ */ template(`<div class=agent-muted>`), _tmpl$3$a = /* @__PURE__ */ template(`<div class=agent-muted>No changes detected yet.`), _tmpl$4$a = /* @__PURE__ */ template(`<div class=page-diff-timeline-header><div class=agent-section-title>Change history for this page</div><div class=agent-muted>Newest detections are first. Each entry is a saved change burst.`), _tmpl$5$9 = /* @__PURE__ */ template(`<div class=page-diff-history-list>`), _tmpl$6$9 = /* @__PURE__ */ template(`<div class=page-diff-timeline>`), _tmpl$7$7 = /* @__PURE__ */ template(`<div class=page-diff-history-item><div class=page-diff-history-time><span class=page-diff-history-label></span><span></span></div><div class=page-diff-history-card><div class=page-diff-history-summary-list></div><div class=page-diff-history-position>Entry <!> of `), _tmpl$8$6 = /* @__PURE__ */ template(`<span class=page-diff-history-summary-section>`), _tmpl$9$5 = /* @__PURE__ */ template(`<div class=page-diff-history-summary-row><span class=page-diff-history-summary>`);
8321
8392
  const PageDiffTimeline = () => {
8322
8393
  const {
8323
8394
  activeTab
@@ -8420,7 +8491,7 @@ const PageDiffTimeline = () => {
8420
8491
  return parseDiffSummaryParts(burst.summary);
8421
8492
  },
8422
8493
  children: (part) => (() => {
8423
- var _el$15 = _tmpl$9$4(), _el$17 = _el$15.firstChild;
8494
+ var _el$15 = _tmpl$9$5(), _el$17 = _el$15.firstChild;
8424
8495
  insert(_el$15, createComponent(Show, {
8425
8496
  get when() {
8426
8497
  return part.section;
@@ -8448,7 +8519,7 @@ const PageDiffTimeline = () => {
8448
8519
  })();
8449
8520
  };
8450
8521
  const vesselLogo = "" + new URL("vessel-logo-transparent-IT25qr-Z.png", import.meta.url).href;
8451
- var _tmpl$$a = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$a = /* @__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$9 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$9 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$5$8 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$6$8 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$7$6 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$8$5 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$9$3 = /* @__PURE__ */ template(`<div class=bookmark-export-message>`), _tmpl$0$3 = /* @__PURE__ */ template(`<div class=bookmark-save-body><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Import HTML</button><button class=bookmark-secondary-button type=button>Import JSON`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$10$3 = /* @__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-export-card><div><div class=bookmark-panel-title>Export</div><div class=bookmark-panel-subtitle>Save browser-ready HTML or a full Vessel archive</div></div><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Browser HTML</button><button class=bookmark-secondary-button type=button>HTML + notes</button><button class=bookmark-secondary-button type=button>Vessel JSON</button></div></div><div class=bookmark-import-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Import Bookmarks</span><span class=bookmark-save-toggle-subtitle>Import from HTML or Vessel JSON</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><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$11$3 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$12$3 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><textarea class=agent-textarea rows=2 placeholder="Optional note for this checkpoint"></textarea><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$13$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$14$2 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><div class=history-panel-actions><button class=history-clear-btn>Clear</button><button class=history-clear-btn>Export HTML</button><button class=history-clear-btn>Export JSON</button><button class=history-clear-btn>Import</button></div></div><div class=history-list>`), _tmpl$15$2 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div class=agent-panel-title>What Changed</div><div class=agent-panel-subtitle>`), _tmpl$16$1 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$17$1 = /* @__PURE__ */ template(`<span>`), _tmpl$18$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$19$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$20$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$21$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$22$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$23$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$24$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$25$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$29 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button><button class=sidebar-tab role=tab>Research<span class=sidebar-tab-beta>Beta</span></button></div><div class=sidebar-messages><div>`), _tmpl$30 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$31 = /* @__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$32 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$33 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$34 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$35 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$36 = /* @__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$37 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$38 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$39 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class=bookmark-ghost-button type=button>Export</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$40 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$41 = /* @__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$42 = /* @__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$43 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$44 = /* @__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$45 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$46 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$47 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$48 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$49 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$50 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$51 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$52 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><input class=bookmark-input placeholder="Bookmark title"><textarea class=bookmark-note-input rows=2 placeholder="Why this bookmark matters"></textarea><textarea class=bookmark-note-input rows=1 placeholder=Intent></textarea><textarea class=bookmark-note-input rows=1 placeholder="Expected content"></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input rows=2 placeholder="Agent hints (one key:value per line)"></textarea><div class=bookmark-item-footer><button class=bookmark-secondary-button type=button>Save edits</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$53 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class=bookmark-ghost-button type=button></button><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$54 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$55 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$56 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><textarea class=agent-textarea rows=2 placeholder="Add a note..."></textarea><button class=agent-control-button type=button>Restore`), _tmpl$57 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$58 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">The Diff timeline is a premium feature. Upgrade to see a full history of what changed on this page.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$59 = /* @__PURE__ */ template(`<div>`), _tmpl$60 = /* @__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$61 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$62 = /* @__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$63 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
8522
+ var _tmpl$$a = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$a = /* @__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$9 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$9 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$5$8 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$6$8 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$7$6 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$8$5 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$9$4 = /* @__PURE__ */ template(`<div class=bookmark-export-message>`), _tmpl$0$3 = /* @__PURE__ */ template(`<div class=bookmark-save-body><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Import HTML</button><button class=bookmark-secondary-button type=button>Import JSON`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$10$3 = /* @__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-export-card><div><div class=bookmark-panel-title>Export</div><div class=bookmark-panel-subtitle>Save browser-ready HTML or a full Vessel archive</div></div><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Browser HTML</button><button class=bookmark-secondary-button type=button>HTML + notes</button><button class=bookmark-secondary-button type=button>Vessel JSON</button></div></div><div class=bookmark-import-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Import Bookmarks</span><span class=bookmark-save-toggle-subtitle>Import from HTML or Vessel JSON</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><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$11$3 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$12$3 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><textarea class=agent-textarea rows=2 placeholder="Optional note for this checkpoint"></textarea><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$13$2 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title>Load more history</span><span class=history-entry-url>Showing <!> of `), _tmpl$14$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$15$2 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><div class=history-panel-actions><button class=history-clear-btn>Clear</button><button class=history-clear-btn>Export HTML</button><button class=history-clear-btn>Export JSON</button><button class=history-clear-btn>Import</button></div></div><div class=history-list>`), _tmpl$16$1 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div class=agent-panel-title>What Changed</div><div class=agent-panel-subtitle>`), _tmpl$17$1 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$18$1 = /* @__PURE__ */ template(`<span>`), _tmpl$19$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$20$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$21$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$22$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$23$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$24$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$25$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$26$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$29 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$30 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button><button class=sidebar-tab role=tab>Research<span class=sidebar-tab-beta>Beta</span></button></div><div class=sidebar-messages><div>`), _tmpl$31 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$32 = /* @__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$33 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$34 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$35 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$36 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$37 = /* @__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$38 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$39 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$40 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class=bookmark-ghost-button type=button>Export</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$41 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$42 = /* @__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$43 = /* @__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$44 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$45 = /* @__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$46 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$47 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$48 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$49 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$50 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$51 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$52 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$53 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><input class=bookmark-input placeholder="Bookmark title"><textarea class=bookmark-note-input rows=2 placeholder="Why this bookmark matters"></textarea><textarea class=bookmark-note-input rows=1 placeholder=Intent></textarea><textarea class=bookmark-note-input rows=1 placeholder="Expected content"></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input rows=2 placeholder="Agent hints (one key:value per line)"></textarea><div class=bookmark-item-footer><button class=bookmark-secondary-button type=button>Save edits</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$54 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class=bookmark-ghost-button type=button></button><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$55 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$56 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$57 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><textarea class=agent-textarea rows=2 placeholder="Add a note..."></textarea><button class=agent-control-button type=button>Restore`), _tmpl$58 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$59 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">The Diff timeline is a premium feature. Upgrade to see a full history of what changed on this page.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$60 = /* @__PURE__ */ template(`<div>`), _tmpl$61 = /* @__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$62 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$63 = /* @__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$64 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
8452
8523
  const UNSORTED_FOLDER = {
8453
8524
  id: "unsorted",
8454
8525
  name: "Unsorted",
@@ -8762,10 +8833,18 @@ ${contextBlock}` : contextBlock);
8762
8833
  value: folder.id,
8763
8834
  label: folder.name
8764
8835
  })));
8765
- const groupedBookmarks = createMemo(() => bookmarkFolders().map((folder) => ({
8766
- ...folder,
8767
- items: bookmarksState2().bookmarks.filter((bookmark) => bookmark.folderId === folder.id).sort((a, b) => b.savedAt.localeCompare(a.savedAt))
8768
- })));
8836
+ const groupedBookmarks = createMemo(() => {
8837
+ const byFolder = /* @__PURE__ */ new Map();
8838
+ for (const bookmark of bookmarksState2().bookmarks) {
8839
+ const items = byFolder.get(bookmark.folderId) ?? [];
8840
+ items.push(bookmark);
8841
+ byFolder.set(bookmark.folderId, items);
8842
+ }
8843
+ return bookmarkFolders().map((folder) => ({
8844
+ ...folder,
8845
+ items: (byFolder.get(folder.id) ?? []).slice().sort((a, b) => b.savedAt.localeCompare(a.savedAt))
8846
+ }));
8847
+ });
8769
8848
  const normalizedBookmarkSearch = createMemo(() => normalizeBookmarkSearchText(bookmarkSearchQuery()));
8770
8849
  const filteredGroupedBookmarks = createMemo(() => {
8771
8850
  const query2 = bookmarkSearchQuery().trim();
@@ -9063,9 +9142,9 @@ ${contextBlock}` : contextBlock);
9063
9142
  return props.forceOpen || sidebarOpen2();
9064
9143
  },
9065
9144
  get children() {
9066
- var _el$9 = _tmpl$29(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling, _el$15 = _el$1.nextSibling, _el$16 = _el$15.firstChild;
9145
+ var _el$9 = _tmpl$30(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling, _el$15 = _el$1.nextSibling, _el$16 = _el$15.firstChild;
9067
9146
  _el$16.firstChild;
9068
- var _el$19 = _el$16.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$23.nextSibling, _el$25 = _el$24.nextSibling, _el$26 = _el$15.nextSibling, _el$125 = _el$26.firstChild;
9147
+ var _el$19 = _el$16.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$23.nextSibling, _el$25 = _el$24.nextSibling, _el$26 = _el$15.nextSibling, _el$132 = _el$26.firstChild;
9069
9148
  _el$0.$$pointerdown = startResize;
9070
9149
  setAttribute(_el$11, "src", vesselLogo);
9071
9150
  addEventListener(_el$13, "click", clearHistory, true);
@@ -9132,7 +9211,7 @@ ${contextBlock}` : contextBlock);
9132
9211
  return runtimeState2().supervisor.pendingApprovals.length > 0;
9133
9212
  },
9134
9213
  get fallback() {
9135
- return _tmpl$30();
9214
+ return _tmpl$31();
9136
9215
  },
9137
9216
  get children() {
9138
9217
  return [_tmpl$5$8(), createComponent(For, {
@@ -9140,13 +9219,13 @@ ${contextBlock}` : contextBlock);
9140
9219
  return runtimeState2().supervisor.pendingApprovals;
9141
9220
  },
9142
9221
  children: (approval) => (() => {
9143
- var _el$143 = _tmpl$31(), _el$144 = _el$143.firstChild, _el$145 = _el$144.nextSibling, _el$146 = _el$145.nextSibling, _el$147 = _el$146.nextSibling, _el$148 = _el$147.nextSibling, _el$149 = _el$148.firstChild, _el$150 = _el$149.nextSibling;
9144
- insert(_el$145, () => approval.name);
9145
- insert(_el$146, () => approval.argsSummary);
9146
- insert(_el$147, () => approval.reason);
9147
- _el$149.$$click = () => void resolveApproval(approval.id, true);
9148
- _el$150.$$click = () => void resolveApproval(approval.id, false);
9149
- return _el$143;
9222
+ var _el$150 = _tmpl$32(), _el$151 = _el$150.firstChild, _el$152 = _el$151.nextSibling, _el$153 = _el$152.nextSibling, _el$154 = _el$153.nextSibling, _el$155 = _el$154.nextSibling, _el$156 = _el$155.firstChild, _el$157 = _el$156.nextSibling;
9223
+ insert(_el$152, () => approval.name);
9224
+ insert(_el$153, () => approval.argsSummary);
9225
+ insert(_el$154, () => approval.reason);
9226
+ _el$156.$$click = () => void resolveApproval(approval.id, true);
9227
+ _el$157.$$click = () => void resolveApproval(approval.id, false);
9228
+ return _el$150;
9150
9229
  })()
9151
9230
  })];
9152
9231
  }
@@ -9170,7 +9249,7 @@ ${contextBlock}` : contextBlock);
9170
9249
  return recentActions().length > 0;
9171
9250
  },
9172
9251
  get fallback() {
9173
- return _tmpl$32();
9252
+ return _tmpl$33();
9174
9253
  },
9175
9254
  get children() {
9176
9255
  return createComponent(Show, {
@@ -9178,7 +9257,7 @@ ${contextBlock}` : contextBlock);
9178
9257
  return actionsExpanded();
9179
9258
  },
9180
9259
  get fallback() {
9181
- return _tmpl$33();
9260
+ return _tmpl$34();
9182
9261
  },
9183
9262
  get children() {
9184
9263
  return createComponent(For, {
@@ -9186,32 +9265,32 @@ ${contextBlock}` : contextBlock);
9186
9265
  return recentActions();
9187
9266
  },
9188
9267
  children: (action) => (() => {
9189
- var _el$153 = _tmpl$36(), _el$154 = _el$153.firstChild, _el$155 = _el$154.firstChild, _el$156 = _el$155.nextSibling, _el$157 = _el$154.nextSibling;
9190
- insert(_el$155, () => action.name);
9191
- insert(_el$156, () => action.status);
9192
- insert(_el$157, () => action.argsSummary);
9193
- insert(_el$153, createComponent(Show, {
9268
+ var _el$160 = _tmpl$37(), _el$161 = _el$160.firstChild, _el$162 = _el$161.firstChild, _el$163 = _el$162.nextSibling, _el$164 = _el$161.nextSibling;
9269
+ insert(_el$162, () => action.name);
9270
+ insert(_el$163, () => action.status);
9271
+ insert(_el$164, () => action.argsSummary);
9272
+ insert(_el$160, createComponent(Show, {
9194
9273
  get when() {
9195
9274
  return action.resultSummary;
9196
9275
  },
9197
9276
  get children() {
9198
- var _el$158 = _tmpl$34();
9199
- insert(_el$158, () => action.resultSummary);
9200
- return _el$158;
9277
+ var _el$165 = _tmpl$35();
9278
+ insert(_el$165, () => action.resultSummary);
9279
+ return _el$165;
9201
9280
  }
9202
9281
  }), null);
9203
- insert(_el$153, createComponent(Show, {
9282
+ insert(_el$160, createComponent(Show, {
9204
9283
  get when() {
9205
9284
  return action.error;
9206
9285
  },
9207
9286
  get children() {
9208
- var _el$159 = _tmpl$35();
9209
- insert(_el$159, () => action.error);
9210
- return _el$159;
9287
+ var _el$166 = _tmpl$36();
9288
+ insert(_el$166, () => action.error);
9289
+ return _el$166;
9211
9290
  }
9212
9291
  }), null);
9213
- createRenderEffect(() => className(_el$156, `agent-action-status ${action.status}`));
9214
- return _el$153;
9292
+ createRenderEffect(() => className(_el$163, `agent-action-status ${action.status}`));
9293
+ return _el$160;
9215
9294
  })()
9216
9295
  });
9217
9296
  }
@@ -9221,7 +9300,7 @@ ${contextBlock}` : contextBlock);
9221
9300
  createRenderEffect(() => _el$32.classList.toggle("paused", !!runtimeState2().supervisor.paused));
9222
9301
  return _el$27;
9223
9302
  }
9224
- }), _el$125);
9303
+ }), _el$132);
9225
9304
  insert(_el$26, createComponent(Show, {
9226
9305
  get when() {
9227
9306
  return sidebarTab() === "bookmarks";
@@ -9249,7 +9328,7 @@ ${contextBlock}` : contextBlock);
9249
9328
  return bookmarkExportMessage();
9250
9329
  },
9251
9330
  get children() {
9252
- var _el$55 = _tmpl$9$3();
9331
+ var _el$55 = _tmpl$9$4();
9253
9332
  insert(_el$55, bookmarkExportMessage);
9254
9333
  return _el$55;
9255
9334
  }
@@ -9268,7 +9347,7 @@ ${contextBlock}` : contextBlock);
9268
9347
  return bookmarkImportMessage();
9269
9348
  },
9270
9349
  get children() {
9271
- var _el$64 = _tmpl$9$3();
9350
+ var _el$64 = _tmpl$9$4();
9272
9351
  insert(_el$64, bookmarkImportMessage);
9273
9352
  return _el$64;
9274
9353
  }
@@ -9329,12 +9408,12 @@ ${contextBlock}` : contextBlock);
9329
9408
  },
9330
9409
  get fallback() {
9331
9410
  return (() => {
9332
- var _el$160 = _tmpl$37();
9333
- insert(_el$160, (() => {
9411
+ var _el$167 = _tmpl$38();
9412
+ insert(_el$167, (() => {
9334
9413
  var _c$5 = memo(() => !!normalizedBookmarkSearch());
9335
9414
  return () => _c$5() ? `No bookmarks matched "${bookmarkSearchQuery().trim()}".` : "No bookmarks saved yet.";
9336
9415
  })());
9337
- return _el$160;
9416
+ return _el$167;
9338
9417
  })();
9339
9418
  },
9340
9419
  get children() {
@@ -9343,105 +9422,105 @@ ${contextBlock}` : contextBlock);
9343
9422
  return filteredGroupedBookmarks();
9344
9423
  },
9345
9424
  children: (folder) => (() => {
9346
- var _el$161 = _tmpl$44(), _el$162 = _el$161.firstChild, _el$163 = _el$162.firstChild, _el$164 = _el$163.firstChild, _el$165 = _el$164.nextSibling, _el$166 = _el$165.firstChild, _el$167 = _el$166.nextSibling, _el$168 = _el$167.firstChild;
9347
- _el$162.$$keydown = (e) => {
9425
+ var _el$168 = _tmpl$45(), _el$169 = _el$168.firstChild, _el$170 = _el$169.firstChild, _el$171 = _el$170.firstChild, _el$172 = _el$171.nextSibling, _el$173 = _el$172.firstChild, _el$174 = _el$173.nextSibling, _el$175 = _el$174.firstChild;
9426
+ _el$169.$$keydown = (e) => {
9348
9427
  if (e.key === "Enter" || e.key === " ") {
9349
9428
  e.preventDefault();
9350
9429
  toggleFolderExpanded(folder.id);
9351
9430
  }
9352
9431
  };
9353
- _el$162.$$click = () => toggleFolderExpanded(folder.id);
9354
- insert(_el$166, () => folder.name);
9355
- insert(_el$167, () => folder.items.length, _el$168);
9356
- insert(_el$165, createComponent(Show, {
9432
+ _el$169.$$click = () => toggleFolderExpanded(folder.id);
9433
+ insert(_el$173, () => folder.name);
9434
+ insert(_el$174, () => folder.items.length, _el$175);
9435
+ insert(_el$172, createComponent(Show, {
9357
9436
  get when() {
9358
9437
  return folder.summary;
9359
9438
  },
9360
9439
  get children() {
9361
- var _el$169 = _tmpl$38();
9362
- insert(_el$169, () => folder.summary);
9363
- return _el$169;
9440
+ var _el$176 = _tmpl$39();
9441
+ insert(_el$176, () => folder.summary);
9442
+ return _el$176;
9364
9443
  }
9365
9444
  }), null);
9366
- insert(_el$162, createComponent(Show, {
9445
+ insert(_el$169, createComponent(Show, {
9367
9446
  get when() {
9368
9447
  return folder.id !== UNSORTED_FOLDER.id;
9369
9448
  },
9370
9449
  get children() {
9371
- var _el$170 = _tmpl$39(), _el$171 = _el$170.firstChild, _el$172 = _el$171.nextSibling, _el$173 = _el$172.nextSibling;
9372
- _el$171.$$click = (e) => {
9450
+ var _el$177 = _tmpl$40(), _el$178 = _el$177.firstChild, _el$179 = _el$178.nextSibling, _el$180 = _el$179.nextSibling;
9451
+ _el$178.$$click = (e) => {
9373
9452
  e.stopPropagation();
9374
9453
  setEditingFolderId(folder.id);
9375
9454
  setEditingFolderName(folder.name);
9376
9455
  setEditingFolderSummary(folder.summary || "");
9377
9456
  };
9378
- _el$172.$$click = (e) => {
9457
+ _el$179.$$click = (e) => {
9379
9458
  e.stopPropagation();
9380
9459
  void handleExportFolder(folder.id, folder.name);
9381
9460
  };
9382
- _el$173.$$click = (e) => {
9461
+ _el$180.$$click = (e) => {
9383
9462
  e.stopPropagation();
9384
9463
  setDeletingFolderId(folder.id);
9385
9464
  };
9386
- createRenderEffect(() => _el$172.disabled = bookmarkExporting());
9387
- return _el$170;
9465
+ createRenderEffect(() => _el$179.disabled = bookmarkExporting());
9466
+ return _el$177;
9388
9467
  }
9389
9468
  }), null);
9390
- insert(_el$161, createComponent(Show, {
9469
+ insert(_el$168, createComponent(Show, {
9391
9470
  get when() {
9392
9471
  return deletingFolderId() === folder.id;
9393
9472
  },
9394
9473
  get children() {
9395
- var _el$174 = _tmpl$41(), _el$175 = _el$174.firstChild, _el$176 = _el$175.firstChild, _el$178 = _el$176.nextSibling;
9396
- _el$178.nextSibling;
9397
- var _el$179 = _el$175.nextSibling, _el$181 = _el$179.firstChild, _el$182 = _el$181.nextSibling;
9398
- insert(_el$175, () => folder.name, _el$178);
9399
- insert(_el$175, (() => {
9474
+ var _el$181 = _tmpl$42(), _el$182 = _el$181.firstChild, _el$183 = _el$182.firstChild, _el$185 = _el$183.nextSibling;
9475
+ _el$185.nextSibling;
9476
+ var _el$186 = _el$182.nextSibling, _el$188 = _el$186.firstChild, _el$189 = _el$188.nextSibling;
9477
+ insert(_el$182, () => folder.name, _el$185);
9478
+ insert(_el$182, (() => {
9400
9479
  var _c$6 = memo(() => folder.items.length > 0);
9401
9480
  return () => _c$6() ? ` This folder has ${folder.items.length} bookmark${folder.items.length === 1 ? "" : "s"}.` : "";
9402
9481
  })(), null);
9403
- insert(_el$179, createComponent(Show, {
9482
+ insert(_el$186, createComponent(Show, {
9404
9483
  get when() {
9405
9484
  return folder.items.length > 0;
9406
9485
  },
9407
9486
  get children() {
9408
- var _el$180 = _tmpl$40();
9409
- _el$180.$$click = () => void handleRemoveFolder(folder.id, false);
9410
- return _el$180;
9487
+ var _el$187 = _tmpl$41();
9488
+ _el$187.$$click = () => void handleRemoveFolder(folder.id, false);
9489
+ return _el$187;
9411
9490
  }
9412
- }), _el$181);
9413
- _el$181.$$click = () => void handleRemoveFolder(folder.id, true);
9414
- insert(_el$181, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
9415
- _el$182.$$click = () => setDeletingFolderId(null);
9416
- return _el$174;
9491
+ }), _el$188);
9492
+ _el$188.$$click = () => void handleRemoveFolder(folder.id, true);
9493
+ insert(_el$188, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
9494
+ _el$189.$$click = () => setDeletingFolderId(null);
9495
+ return _el$181;
9417
9496
  }
9418
9497
  }), null);
9419
- insert(_el$161, createComponent(Show, {
9498
+ insert(_el$168, createComponent(Show, {
9420
9499
  get when() {
9421
9500
  return editingFolderId() === folder.id;
9422
9501
  },
9423
9502
  get children() {
9424
- var _el$183 = _tmpl$42(), _el$184 = _el$183.firstChild, _el$185 = _el$184.firstChild, _el$186 = _el$185.nextSibling, _el$187 = _el$184.nextSibling, _el$188 = _el$187.nextSibling;
9425
- _el$185.$$input = (e) => setEditingFolderName(e.currentTarget.value);
9426
- _el$186.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
9427
- _el$187.$$click = () => void handleRenameFolder(folder.id);
9428
- _el$188.$$click = () => {
9503
+ var _el$190 = _tmpl$43(), _el$191 = _el$190.firstChild, _el$192 = _el$191.firstChild, _el$193 = _el$192.nextSibling, _el$194 = _el$191.nextSibling, _el$195 = _el$194.nextSibling;
9504
+ _el$192.$$input = (e) => setEditingFolderName(e.currentTarget.value);
9505
+ _el$193.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
9506
+ _el$194.$$click = () => void handleRenameFolder(folder.id);
9507
+ _el$195.$$click = () => {
9429
9508
  setEditingFolderId(null);
9430
9509
  setEditingFolderName("");
9431
9510
  setEditingFolderSummary("");
9432
9511
  };
9433
- createRenderEffect(() => _el$187.disabled = !editingFolderName().trim());
9434
- createRenderEffect(() => _el$185.value = editingFolderName());
9435
- createRenderEffect(() => _el$186.value = editingFolderSummary());
9436
- return _el$183;
9512
+ createRenderEffect(() => _el$194.disabled = !editingFolderName().trim());
9513
+ createRenderEffect(() => _el$192.value = editingFolderName());
9514
+ createRenderEffect(() => _el$193.value = editingFolderSummary());
9515
+ return _el$190;
9437
9516
  }
9438
9517
  }), null);
9439
- insert(_el$161, createComponent(Show, {
9518
+ insert(_el$168, createComponent(Show, {
9440
9519
  get when() {
9441
9520
  return isFolderExpanded(folder.id);
9442
9521
  },
9443
9522
  get fallback() {
9444
- return _tmpl$45();
9523
+ return _tmpl$46();
9445
9524
  },
9446
9525
  get children() {
9447
9526
  return createComponent(Show, {
@@ -9449,125 +9528,125 @@ ${contextBlock}` : contextBlock);
9449
9528
  return folder.items.length > 0;
9450
9529
  },
9451
9530
  get fallback() {
9452
- return _tmpl$46();
9531
+ return _tmpl$47();
9453
9532
  },
9454
9533
  get children() {
9455
- var _el$189 = _tmpl$43();
9456
- insert(_el$189, createComponent(For, {
9534
+ var _el$196 = _tmpl$44();
9535
+ insert(_el$196, createComponent(For, {
9457
9536
  get each() {
9458
9537
  return folder.items;
9459
9538
  },
9460
9539
  children: (bookmark) => (() => {
9461
- var _el$192 = _tmpl$53(), _el$193 = _el$192.firstChild, _el$194 = _el$193.firstChild, _el$195 = _el$194.nextSibling, _el$220 = _el$193.nextSibling, _el$221 = _el$220.firstChild, _el$222 = _el$221.nextSibling, _el$223 = _el$222.nextSibling;
9462
- _el$193.$$click = () => void createTab(bookmark.url);
9463
- insert(_el$194, () => bookmark.title || bookmark.url);
9464
- insert(_el$195, () => bookmark.url);
9465
- insert(_el$192, createComponent(Show, {
9540
+ var _el$199 = _tmpl$54(), _el$200 = _el$199.firstChild, _el$201 = _el$200.firstChild, _el$202 = _el$201.nextSibling, _el$227 = _el$200.nextSibling, _el$228 = _el$227.firstChild, _el$229 = _el$228.nextSibling, _el$230 = _el$229.nextSibling;
9541
+ _el$200.$$click = () => void createTab(bookmark.url);
9542
+ insert(_el$201, () => bookmark.title || bookmark.url);
9543
+ insert(_el$202, () => bookmark.url);
9544
+ insert(_el$199, createComponent(Show, {
9466
9545
  get when() {
9467
9546
  return bookmark.note;
9468
9547
  },
9469
9548
  get children() {
9470
- var _el$196 = _tmpl$47();
9471
- insert(_el$196, () => bookmark.note);
9472
- return _el$196;
9549
+ var _el$203 = _tmpl$48();
9550
+ insert(_el$203, () => bookmark.note);
9551
+ return _el$203;
9473
9552
  }
9474
- }), _el$220);
9475
- insert(_el$192, createComponent(Show, {
9553
+ }), _el$227);
9554
+ insert(_el$199, createComponent(Show, {
9476
9555
  get when() {
9477
9556
  return bookmark.intent || bookmark.expectedContent || (bookmark.keyFields?.length || 0) > 0 || (bookmark.agentHints && Object.keys(bookmark.agentHints).length || 0) > 0;
9478
9557
  },
9479
9558
  get children() {
9480
- var _el$197 = _tmpl$47();
9481
- insert(_el$197, createComponent(Show, {
9559
+ var _el$204 = _tmpl$48();
9560
+ insert(_el$204, createComponent(Show, {
9482
9561
  get when() {
9483
9562
  return bookmark.intent;
9484
9563
  },
9485
9564
  get children() {
9486
- var _el$198 = _tmpl$48(), _el$199 = _el$198.firstChild;
9487
- _el$199.nextSibling;
9488
- insert(_el$198, () => bookmark.intent, null);
9489
- return _el$198;
9565
+ var _el$205 = _tmpl$49(), _el$206 = _el$205.firstChild;
9566
+ _el$206.nextSibling;
9567
+ insert(_el$205, () => bookmark.intent, null);
9568
+ return _el$205;
9490
9569
  }
9491
9570
  }), null);
9492
- insert(_el$197, createComponent(Show, {
9571
+ insert(_el$204, createComponent(Show, {
9493
9572
  get when() {
9494
9573
  return bookmark.expectedContent;
9495
9574
  },
9496
9575
  get children() {
9497
- var _el$201 = _tmpl$49(), _el$202 = _el$201.firstChild;
9498
- _el$202.nextSibling;
9499
- insert(_el$201, () => bookmark.expectedContent, null);
9500
- return _el$201;
9576
+ var _el$208 = _tmpl$50(), _el$209 = _el$208.firstChild;
9577
+ _el$209.nextSibling;
9578
+ insert(_el$208, () => bookmark.expectedContent, null);
9579
+ return _el$208;
9501
9580
  }
9502
9581
  }), null);
9503
- insert(_el$197, createComponent(Show, {
9582
+ insert(_el$204, createComponent(Show, {
9504
9583
  get when() {
9505
9584
  return (bookmark.keyFields?.length || 0) > 0;
9506
9585
  },
9507
9586
  get children() {
9508
- var _el$204 = _tmpl$50(), _el$205 = _el$204.firstChild;
9509
- _el$205.nextSibling;
9510
- insert(_el$204, () => bookmark.keyFields?.join(", "), null);
9511
- return _el$204;
9587
+ var _el$211 = _tmpl$51(), _el$212 = _el$211.firstChild;
9588
+ _el$212.nextSibling;
9589
+ insert(_el$211, () => bookmark.keyFields?.join(", "), null);
9590
+ return _el$211;
9512
9591
  }
9513
9592
  }), null);
9514
- insert(_el$197, createComponent(Show, {
9593
+ insert(_el$204, createComponent(Show, {
9515
9594
  get when() {
9516
9595
  return memo(() => !!bookmark.agentHints)() && Object.keys(bookmark.agentHints).length > 0;
9517
9596
  },
9518
9597
  get children() {
9519
- var _el$207 = _tmpl$51(), _el$208 = _el$207.firstChild;
9520
- _el$208.nextSibling;
9521
- insert(_el$207, () => Object.entries(bookmark.agentHints || {}).map(([key, hint]) => `${key}: ${hint}`).join(" • "), null);
9522
- return _el$207;
9598
+ var _el$214 = _tmpl$52(), _el$215 = _el$214.firstChild;
9599
+ _el$215.nextSibling;
9600
+ insert(_el$214, () => Object.entries(bookmark.agentHints || {}).map(([key, hint]) => `${key}: ${hint}`).join(" • "), null);
9601
+ return _el$214;
9523
9602
  }
9524
9603
  }), null);
9525
- return _el$197;
9604
+ return _el$204;
9526
9605
  }
9527
- }), _el$220);
9528
- insert(_el$192, createComponent(Show, {
9606
+ }), _el$227);
9607
+ insert(_el$199, createComponent(Show, {
9529
9608
  get when() {
9530
9609
  return editingBookmarkId() === bookmark.id;
9531
9610
  },
9532
9611
  get children() {
9533
- var _el$210 = _tmpl$52(), _el$211 = _el$210.firstChild, _el$212 = _el$211.nextSibling, _el$213 = _el$212.nextSibling, _el$214 = _el$213.nextSibling, _el$215 = _el$214.nextSibling, _el$216 = _el$215.nextSibling, _el$217 = _el$216.nextSibling, _el$218 = _el$217.firstChild, _el$219 = _el$218.nextSibling;
9534
- _el$211.$$input = (e) => setEditingBookmarkTitle(e.currentTarget.value);
9535
- _el$212.$$input = (e) => setEditingBookmarkNote(e.currentTarget.value);
9536
- _el$213.$$input = (e) => setEditingBookmarkIntent(e.currentTarget.value);
9537
- _el$214.$$input = (e) => setEditingBookmarkExpectedContent(e.currentTarget.value);
9538
- _el$215.$$input = (e) => setEditingBookmarkKeyFields(e.currentTarget.value);
9539
- _el$216.$$input = (e) => setEditingBookmarkAgentHints(e.currentTarget.value);
9540
- _el$218.$$click = () => void handleUpdateBookmark(bookmark.id);
9541
- _el$219.$$click = resetBookmarkEditor;
9542
- createRenderEffect(() => _el$211.value = editingBookmarkTitle());
9543
- createRenderEffect(() => _el$212.value = editingBookmarkNote());
9544
- createRenderEffect(() => _el$213.value = editingBookmarkIntent());
9545
- createRenderEffect(() => _el$214.value = editingBookmarkExpectedContent());
9546
- createRenderEffect(() => _el$215.value = editingBookmarkKeyFields());
9547
- createRenderEffect(() => _el$216.value = editingBookmarkAgentHints());
9548
- return _el$210;
9612
+ var _el$217 = _tmpl$53(), _el$218 = _el$217.firstChild, _el$219 = _el$218.nextSibling, _el$220 = _el$219.nextSibling, _el$221 = _el$220.nextSibling, _el$222 = _el$221.nextSibling, _el$223 = _el$222.nextSibling, _el$224 = _el$223.nextSibling, _el$225 = _el$224.firstChild, _el$226 = _el$225.nextSibling;
9613
+ _el$218.$$input = (e) => setEditingBookmarkTitle(e.currentTarget.value);
9614
+ _el$219.$$input = (e) => setEditingBookmarkNote(e.currentTarget.value);
9615
+ _el$220.$$input = (e) => setEditingBookmarkIntent(e.currentTarget.value);
9616
+ _el$221.$$input = (e) => setEditingBookmarkExpectedContent(e.currentTarget.value);
9617
+ _el$222.$$input = (e) => setEditingBookmarkKeyFields(e.currentTarget.value);
9618
+ _el$223.$$input = (e) => setEditingBookmarkAgentHints(e.currentTarget.value);
9619
+ _el$225.$$click = () => void handleUpdateBookmark(bookmark.id);
9620
+ _el$226.$$click = resetBookmarkEditor;
9621
+ createRenderEffect(() => _el$218.value = editingBookmarkTitle());
9622
+ createRenderEffect(() => _el$219.value = editingBookmarkNote());
9623
+ createRenderEffect(() => _el$220.value = editingBookmarkIntent());
9624
+ createRenderEffect(() => _el$221.value = editingBookmarkExpectedContent());
9625
+ createRenderEffect(() => _el$222.value = editingBookmarkKeyFields());
9626
+ createRenderEffect(() => _el$223.value = editingBookmarkAgentHints());
9627
+ return _el$217;
9549
9628
  }
9550
- }), _el$220);
9551
- insert(_el$221, () => formatBookmarkDate(bookmark.savedAt));
9552
- _el$222.$$click = () => editingBookmarkId() === bookmark.id ? resetBookmarkEditor() : startEditingBookmark(bookmark);
9553
- insert(_el$222, () => editingBookmarkId() === bookmark.id ? "Close" : "Edit");
9554
- _el$223.$$click = () => {
9629
+ }), _el$227);
9630
+ insert(_el$228, () => formatBookmarkDate(bookmark.savedAt));
9631
+ _el$229.$$click = () => editingBookmarkId() === bookmark.id ? resetBookmarkEditor() : startEditingBookmark(bookmark);
9632
+ insert(_el$229, () => editingBookmarkId() === bookmark.id ? "Close" : "Edit");
9633
+ _el$230.$$click = () => {
9555
9634
  if (editingBookmarkId() === bookmark.id) {
9556
9635
  resetBookmarkEditor();
9557
9636
  }
9558
9637
  void removeBookmark(bookmark.id);
9559
9638
  };
9560
- createRenderEffect(() => setAttribute(_el$192, "data-bookmark-id", bookmark.id));
9561
- return _el$192;
9639
+ createRenderEffect(() => setAttribute(_el$199, "data-bookmark-id", bookmark.id));
9640
+ return _el$199;
9562
9641
  })()
9563
9642
  }));
9564
- return _el$189;
9643
+ return _el$196;
9565
9644
  }
9566
9645
  });
9567
9646
  }
9568
9647
  }), null);
9569
- createRenderEffect(() => _el$164.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
9570
- return _el$161;
9648
+ createRenderEffect(() => _el$171.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
9649
+ return _el$168;
9571
9650
  })()
9572
9651
  });
9573
9652
  }
@@ -9594,7 +9673,7 @@ ${contextBlock}` : contextBlock);
9594
9673
  createRenderEffect(() => _el$82.value = newFolderSummary());
9595
9674
  return _el$42;
9596
9675
  }
9597
- }), _el$125);
9676
+ }), _el$132);
9598
9677
  insert(_el$26, createComponent(Show, {
9599
9678
  get when() {
9600
9679
  return sidebarTab() === "checkpoints";
@@ -9619,7 +9698,7 @@ ${contextBlock}` : contextBlock);
9619
9698
  return recentCheckpoints().length > 0;
9620
9699
  },
9621
9700
  get fallback() {
9622
- return _tmpl$54();
9701
+ return _tmpl$55();
9623
9702
  },
9624
9703
  get children() {
9625
9704
  var _el$96 = _tmpl$11$3();
@@ -9628,22 +9707,22 @@ ${contextBlock}` : contextBlock);
9628
9707
  return recentCheckpoints();
9629
9708
  },
9630
9709
  children: (checkpoint, i) => (() => {
9631
- var _el$225 = _tmpl$56(), _el$226 = _el$225.firstChild, _el$227 = _el$226.firstChild, _el$229 = _el$226.nextSibling, _el$230 = _el$229.firstChild, _el$231 = _el$230.nextSibling, _el$232 = _el$231.nextSibling, _el$233 = _el$232.nextSibling;
9632
- insert(_el$226, createComponent(Show, {
9710
+ var _el$232 = _tmpl$57(), _el$233 = _el$232.firstChild, _el$234 = _el$233.firstChild, _el$236 = _el$233.nextSibling, _el$237 = _el$236.firstChild, _el$238 = _el$237.nextSibling, _el$239 = _el$238.nextSibling, _el$240 = _el$239.nextSibling;
9711
+ insert(_el$233, createComponent(Show, {
9633
9712
  get when() {
9634
9713
  return i() < recentCheckpoints().length - 1;
9635
9714
  },
9636
9715
  get children() {
9637
- return _tmpl$55();
9716
+ return _tmpl$56();
9638
9717
  }
9639
9718
  }), null);
9640
- insert(_el$230, () => checkpoint.name);
9641
- insert(_el$231, () => new Date(checkpoint.createdAt).toLocaleString());
9642
- _el$232.addEventListener("blur", (e) => void updateCheckpointNote(checkpoint.id, e.currentTarget.value));
9643
- _el$233.$$click = () => void restoreCheckpoint(checkpoint.id);
9644
- createRenderEffect(() => _el$227.classList.toggle("latest", !!(i() === 0)));
9645
- createRenderEffect(() => _el$232.value = checkpoint.note || "");
9646
- return _el$225;
9719
+ insert(_el$237, () => checkpoint.name);
9720
+ insert(_el$238, () => new Date(checkpoint.createdAt).toLocaleString());
9721
+ _el$239.addEventListener("blur", (e) => void updateCheckpointNote(checkpoint.id, e.currentTarget.value));
9722
+ _el$240.$$click = () => void restoreCheckpoint(checkpoint.id);
9723
+ createRenderEffect(() => _el$234.classList.toggle("latest", !!(i() === 0)));
9724
+ createRenderEffect(() => _el$239.value = checkpoint.note || "");
9725
+ return _el$232;
9647
9726
  })()
9648
9727
  }));
9649
9728
  return _el$96;
@@ -9653,7 +9732,7 @@ ${contextBlock}` : contextBlock);
9653
9732
  createRenderEffect(() => _el$93.value = checkpointNote());
9654
9733
  return _el$85;
9655
9734
  }
9656
- }), _el$125);
9735
+ }), _el$132);
9657
9736
  insert(_el$26, createComponent(Show, {
9658
9737
  get when() {
9659
9738
  return sidebarTab() === "automation";
@@ -9663,7 +9742,7 @@ ${contextBlock}` : contextBlock);
9663
9742
  onRun: () => setSidebarTab("supervisor")
9664
9743
  });
9665
9744
  }
9666
- }), _el$125);
9745
+ }), _el$132);
9667
9746
  insert(_el$26, createComponent(Show, {
9668
9747
  get when() {
9669
9748
  return sidebarTab() === "research";
@@ -9671,13 +9750,13 @@ ${contextBlock}` : contextBlock);
9671
9750
  get children() {
9672
9751
  return createComponent(ResearchDesk, {});
9673
9752
  }
9674
- }), _el$125);
9753
+ }), _el$132);
9675
9754
  insert(_el$26, createComponent(Show, {
9676
9755
  get when() {
9677
9756
  return sidebarTab() === "history";
9678
9757
  },
9679
9758
  get children() {
9680
- var _el$97 = _tmpl$14$2(), _el$98 = _el$97.firstChild, _el$99 = _el$98.firstChild, _el$100 = _el$99.nextSibling, _el$101 = _el$100.firstChild, _el$102 = _el$101.nextSibling, _el$103 = _el$102.nextSibling, _el$104 = _el$103.nextSibling, _el$105 = _el$98.nextSibling;
9759
+ var _el$97 = _tmpl$15$2(), _el$98 = _el$97.firstChild, _el$99 = _el$98.firstChild, _el$100 = _el$99.nextSibling, _el$101 = _el$100.firstChild, _el$102 = _el$101.nextSibling, _el$103 = _el$102.nextSibling, _el$104 = _el$103.nextSibling, _el$105 = _el$98.nextSibling;
9681
9760
  _el$101.$$click = async () => {
9682
9761
  await history.clear();
9683
9762
  };
@@ -9698,52 +9777,65 @@ ${contextBlock}` : contextBlock);
9698
9777
  return history.historyState().entries;
9699
9778
  },
9700
9779
  children: (entry) => (() => {
9701
- var _el$234 = _tmpl$57(), _el$235 = _el$234.firstChild, _el$236 = _el$235.nextSibling, _el$237 = _el$236.nextSibling;
9702
- _el$234.$$click = () => createTab(entry.url);
9703
- insert(_el$235, () => entry.title || entry.url);
9704
- insert(_el$236, () => entry.url);
9705
- insert(_el$237, () => new Date(entry.visitedAt).toLocaleString());
9706
- return _el$234;
9780
+ var _el$241 = _tmpl$58(), _el$242 = _el$241.firstChild, _el$243 = _el$242.nextSibling, _el$244 = _el$243.nextSibling;
9781
+ _el$241.$$click = () => createTab(entry.url);
9782
+ insert(_el$242, () => entry.title || entry.url);
9783
+ insert(_el$243, () => entry.url);
9784
+ insert(_el$244, () => new Date(entry.visitedAt).toLocaleString());
9785
+ return _el$241;
9707
9786
  })()
9708
9787
  }), null);
9788
+ insert(_el$105, createComponent(Show, {
9789
+ get when() {
9790
+ return history.hasMore();
9791
+ },
9792
+ get children() {
9793
+ var _el$106 = _tmpl$13$2(), _el$107 = _el$106.firstChild, _el$108 = _el$107.nextSibling, _el$109 = _el$108.firstChild, _el$112 = _el$109.nextSibling;
9794
+ _el$112.nextSibling;
9795
+ _el$106.$$click = () => void history.loadMore();
9796
+ insert(_el$108, () => history.historyState().entries.length, _el$112);
9797
+ insert(_el$108, () => history.historyTotal(), null);
9798
+ return _el$106;
9799
+ }
9800
+ }), null);
9709
9801
  insert(_el$105, createComponent(Show, {
9710
9802
  get when() {
9711
9803
  return history.historyState().entries.length === 0;
9712
9804
  },
9713
9805
  get children() {
9714
- return _tmpl$13$2();
9806
+ return _tmpl$14$2();
9715
9807
  }
9716
9808
  }), null);
9717
9809
  return _el$97;
9718
9810
  }
9719
- }), _el$125);
9811
+ }), _el$132);
9720
9812
  insert(_el$26, createComponent(Show, {
9721
9813
  get when() {
9722
9814
  return sidebarTab() === "diff";
9723
9815
  },
9724
9816
  get children() {
9725
- var _el$107 = _tmpl$15$2(), _el$108 = _el$107.firstChild, _el$109 = _el$108.firstChild, _el$110 = _el$109.nextSibling;
9726
- insert(_el$110, () => isPremium() ? "Page change timeline" : "Premium feature");
9727
- insert(_el$107, createComponent(Show, {
9817
+ var _el$114 = _tmpl$16$1(), _el$115 = _el$114.firstChild, _el$116 = _el$115.firstChild, _el$117 = _el$116.nextSibling;
9818
+ insert(_el$117, () => isPremium() ? "Page change timeline" : "Premium feature");
9819
+ insert(_el$114, createComponent(Show, {
9728
9820
  get when() {
9729
9821
  return isPremium();
9730
9822
  },
9731
9823
  get fallback() {
9732
9824
  return (() => {
9733
- var _el$238 = _tmpl$58(), _el$239 = _el$238.firstChild, _el$240 = _el$239.nextSibling, _el$241 = _el$240.nextSibling, _el$242 = _el$241.firstChild, _el$243 = _el$242.nextSibling;
9734
- _el$242.$$click = () => void window.vessel.premium.checkout(premiumState().email || void 0).catch(() => {
9825
+ var _el$245 = _tmpl$59(), _el$246 = _el$245.firstChild, _el$247 = _el$246.nextSibling, _el$248 = _el$247.nextSibling, _el$249 = _el$248.firstChild, _el$250 = _el$249.nextSibling;
9826
+ _el$249.$$click = () => void window.vessel.premium.checkout(premiumState().email || void 0).catch(() => {
9735
9827
  });
9736
- _el$243.$$click = openPremiumDetails;
9737
- return _el$238;
9828
+ _el$250.$$click = openPremiumDetails;
9829
+ return _el$245;
9738
9830
  })();
9739
9831
  },
9740
9832
  get children() {
9741
9833
  return createComponent(PageDiffTimeline, {});
9742
9834
  }
9743
9835
  }), null);
9744
- return _el$107;
9836
+ return _el$114;
9745
9837
  }
9746
- }), _el$125);
9838
+ }), _el$132);
9747
9839
  insert(_el$26, createComponent(Show, {
9748
9840
  get when() {
9749
9841
  return sidebarTab() === "chat";
@@ -9754,23 +9846,23 @@ ${contextBlock}` : contextBlock);
9754
9846
  return !isPremium();
9755
9847
  },
9756
9848
  get children() {
9757
- var _el$111 = _tmpl$16$1(), _el$112 = _el$111.firstChild, _el$113 = _el$112.nextSibling, _el$114 = _el$113.nextSibling, _el$115 = _el$114.firstChild, _el$116 = _el$115.nextSibling;
9758
- _el$115.$$click = () => openPremiumCheckout("chat_banner_clicked");
9759
- _el$116.$$click = openPremiumDetails;
9760
- return _el$111;
9849
+ var _el$118 = _tmpl$17$1(), _el$119 = _el$118.firstChild, _el$120 = _el$119.nextSibling, _el$121 = _el$120.nextSibling, _el$122 = _el$121.firstChild, _el$123 = _el$122.nextSibling;
9850
+ _el$122.$$click = () => openPremiumCheckout("chat_banner_clicked");
9851
+ _el$123.$$click = openPremiumDetails;
9852
+ return _el$118;
9761
9853
  }
9762
9854
  }), createComponent(For, {
9763
9855
  get each() {
9764
9856
  return messages2();
9765
9857
  },
9766
9858
  children: (msg) => (() => {
9767
- var _el$244 = _tmpl$59();
9768
- insert(_el$244, createComponent(MarkdownMessage, {
9859
+ var _el$251 = _tmpl$60();
9860
+ insert(_el$251, createComponent(MarkdownMessage, {
9769
9861
  get content() {
9770
9862
  return msg.content;
9771
9863
  }
9772
9864
  }), null);
9773
- insert(_el$244, createComponent(Show, {
9865
+ insert(_el$251, createComponent(Show, {
9774
9866
  get when() {
9775
9867
  return memo(() => msg.role === "assistant")() ? getPremiumPromptKind(msg.content) : null;
9776
9868
  },
@@ -9783,31 +9875,31 @@ ${contextBlock}` : contextBlock);
9783
9875
  onOpenSettings: openPremiumDetails
9784
9876
  })
9785
9877
  }), null);
9786
- createRenderEffect(() => className(_el$244, `message message-${msg.role}`));
9787
- return _el$244;
9878
+ createRenderEffect(() => className(_el$251, `message message-${msg.role}`));
9879
+ return _el$251;
9788
9880
  })()
9789
9881
  }), createComponent(Show, {
9790
9882
  get when() {
9791
9883
  return isStreaming2();
9792
9884
  },
9793
9885
  get children() {
9794
- var _el$117 = _tmpl$19$1(), _el$118 = _el$117.firstChild;
9795
- insert(_el$118, createComponent(Show, {
9886
+ var _el$124 = _tmpl$20$1(), _el$125 = _el$124.firstChild;
9887
+ insert(_el$125, createComponent(Show, {
9796
9888
  get when() {
9797
9889
  return hasFirstChunk2();
9798
9890
  },
9799
9891
  get fallback() {
9800
- return _tmpl$60();
9892
+ return _tmpl$61();
9801
9893
  },
9802
9894
  get children() {
9803
- var _el$119 = _tmpl$18$1(), _el$120 = _el$119.firstChild, _el$121 = _el$120.firstChild;
9804
- _el$121.nextSibling;
9805
- insert(_el$119, createComponent(MarkdownMessage, {
9895
+ var _el$126 = _tmpl$19$1(), _el$127 = _el$126.firstChild, _el$128 = _el$127.firstChild;
9896
+ _el$128.nextSibling;
9897
+ insert(_el$126, createComponent(MarkdownMessage, {
9806
9898
  get content() {
9807
9899
  return streamingText2();
9808
9900
  }
9809
- }), _el$120);
9810
- insert(_el$119, createComponent(Show, {
9901
+ }), _el$127);
9902
+ insert(_el$126, createComponent(Show, {
9811
9903
  get when() {
9812
9904
  return getPremiumPromptKind(streamingText2());
9813
9905
  },
@@ -9819,21 +9911,21 @@ ${contextBlock}` : contextBlock);
9819
9911
  onStartTrial: () => openPremiumCheckout(kind() === "premium_gate" ? "premium_gate_clicked" : "iteration_limit_clicked"),
9820
9912
  onOpenSettings: openPremiumDetails
9821
9913
  })
9822
- }), _el$120);
9823
- insert(_el$120, createComponent(Show, {
9914
+ }), _el$127);
9915
+ insert(_el$127, createComponent(Show, {
9824
9916
  get when() {
9825
9917
  return elapsedSeconds() > 0;
9826
9918
  },
9827
9919
  get children() {
9828
- var _el$123 = _tmpl$17$1();
9829
- insert(_el$123, () => ` • ${elapsedSeconds()}s`);
9830
- return _el$123;
9920
+ var _el$130 = _tmpl$18$1();
9921
+ insert(_el$130, () => ` • ${elapsedSeconds()}s`);
9922
+ return _el$130;
9831
9923
  }
9832
9924
  }), null);
9833
- return _el$119;
9925
+ return _el$126;
9834
9926
  }
9835
9927
  }));
9836
- return _el$117;
9928
+ return _el$124;
9837
9929
  }
9838
9930
  }), createComponent(Show, {
9839
9931
  get when() {
@@ -9845,22 +9937,22 @@ ${contextBlock}` : contextBlock);
9845
9937
  return runtimeState2().supervisor.pendingApprovals;
9846
9938
  },
9847
9939
  children: (approval) => (() => {
9848
- var _el$246 = _tmpl$62(), _el$247 = _el$246.firstChild, _el$248 = _el$247.nextSibling, _el$249 = _el$248.firstChild, _el$250 = _el$249.firstChild, _el$251 = _el$250.nextSibling, _el$253 = _el$249.nextSibling, _el$254 = _el$253.nextSibling, _el$255 = _el$254.firstChild, _el$256 = _el$255.nextSibling;
9849
- insert(_el$251, () => approval.name);
9850
- insert(_el$248, createComponent(Show, {
9940
+ var _el$253 = _tmpl$63(), _el$254 = _el$253.firstChild, _el$255 = _el$254.nextSibling, _el$256 = _el$255.firstChild, _el$257 = _el$256.firstChild, _el$258 = _el$257.nextSibling, _el$260 = _el$256.nextSibling, _el$261 = _el$260.nextSibling, _el$262 = _el$261.firstChild, _el$263 = _el$262.nextSibling;
9941
+ insert(_el$258, () => approval.name);
9942
+ insert(_el$255, createComponent(Show, {
9851
9943
  get when() {
9852
9944
  return approval.argsSummary;
9853
9945
  },
9854
9946
  get children() {
9855
- var _el$252 = _tmpl$61();
9856
- insert(_el$252, () => approval.argsSummary);
9857
- return _el$252;
9947
+ var _el$259 = _tmpl$62();
9948
+ insert(_el$259, () => approval.argsSummary);
9949
+ return _el$259;
9858
9950
  }
9859
- }), _el$253);
9860
- insert(_el$253, () => approval.reason);
9861
- _el$255.$$click = () => void resolveApproval(approval.id, true);
9862
- _el$256.$$click = () => void resolveApproval(approval.id, false);
9863
- return _el$246;
9951
+ }), _el$260);
9952
+ insert(_el$260, () => approval.reason);
9953
+ _el$262.$$click = () => void resolveApproval(approval.id, true);
9954
+ _el$263.$$click = () => void resolveApproval(approval.id, false);
9955
+ return _el$253;
9864
9956
  })()
9865
9957
  });
9866
9958
  }
@@ -9869,13 +9961,13 @@ ${contextBlock}` : contextBlock);
9869
9961
  return memo(() => messages2().length === 0)() && !isStreaming2();
9870
9962
  },
9871
9963
  get children() {
9872
- return _tmpl$20$1();
9964
+ return _tmpl$21$1();
9873
9965
  }
9874
9966
  })];
9875
9967
  }
9876
- }), _el$125);
9968
+ }), _el$132);
9877
9969
  var _ref$ = messagesEndRef;
9878
- typeof _ref$ === "function" ? use(_ref$, _el$125) : messagesEndRef = _el$125;
9970
+ typeof _ref$ === "function" ? use(_ref$, _el$132) : messagesEndRef = _el$132;
9879
9971
  insert(_el$9, createComponent(Show, {
9880
9972
  get when() {
9881
9973
  return sidebarTab() === "chat";
@@ -9886,120 +9978,120 @@ ${contextBlock}` : contextBlock);
9886
9978
  return isStreaming2() || messages2().length > 0;
9887
9979
  },
9888
9980
  get children() {
9889
- var _el$126 = _tmpl$23$1();
9890
- insert(_el$126, createComponent(Show, {
9981
+ var _el$133 = _tmpl$24$1();
9982
+ insert(_el$133, createComponent(Show, {
9891
9983
  get when() {
9892
9984
  return isStreaming2();
9893
9985
  },
9894
9986
  get children() {
9895
- var _el$127 = _tmpl$21$1();
9896
- _el$127.$$click = () => cancel();
9897
- return _el$127;
9987
+ var _el$134 = _tmpl$22$1();
9988
+ _el$134.$$click = () => cancel();
9989
+ return _el$134;
9898
9990
  }
9899
9991
  }), null);
9900
- insert(_el$126, createComponent(Show, {
9992
+ insert(_el$133, createComponent(Show, {
9901
9993
  get when() {
9902
9994
  return memo(() => !!!isStreaming2())() && messages2().length > 0;
9903
9995
  },
9904
9996
  get children() {
9905
- var _el$128 = _tmpl$22$1();
9906
- _el$128.$$click = handleRetry;
9907
- return _el$128;
9997
+ var _el$135 = _tmpl$23$1();
9998
+ _el$135.$$click = handleRetry;
9999
+ return _el$135;
9908
10000
  }
9909
10001
  }), null);
9910
- return _el$126;
10002
+ return _el$133;
9911
10003
  }
9912
10004
  }), createComponent(Show, {
9913
10005
  get when() {
9914
10006
  return highlightCount() > 0;
9915
10007
  },
9916
10008
  get children() {
9917
- var _el$129 = _tmpl$24$1(), _el$130 = _el$129.firstChild, _el$131 = _el$130.nextSibling;
9918
- _el$131.firstChild;
9919
- var _el$133 = _el$131.nextSibling;
9920
- _el$130.$$click = () => void scrollToHighlight(highlightIndex() - 1);
9921
- _el$131.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex());
9922
- insert(_el$131, (() => {
10009
+ var _el$136 = _tmpl$25$1(), _el$137 = _el$136.firstChild, _el$138 = _el$137.nextSibling;
10010
+ _el$138.firstChild;
10011
+ var _el$140 = _el$138.nextSibling;
10012
+ _el$137.$$click = () => void scrollToHighlight(highlightIndex() - 1);
10013
+ _el$138.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex());
10014
+ insert(_el$138, (() => {
9923
10015
  var _c$4 = memo(() => highlightIndex() >= 0);
9924
10016
  return () => _c$4() ? `${highlightIndex() + 1} / ${highlightCount()}` : `${highlightCount()} highlight${highlightCount() > 1 ? "s" : ""}`;
9925
10017
  })(), null);
9926
- _el$133.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex() + 1);
10018
+ _el$140.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex() + 1);
9927
10019
  createRenderEffect((_p$) => {
9928
10020
  var _v$9 = highlightIndex() <= 0, _v$0 = highlightIndex() >= highlightCount() - 1;
9929
- _v$9 !== _p$.e && (_el$130.disabled = _p$.e = _v$9);
9930
- _v$0 !== _p$.t && (_el$133.disabled = _p$.t = _v$0);
10021
+ _v$9 !== _p$.e && (_el$137.disabled = _p$.e = _v$9);
10022
+ _v$0 !== _p$.t && (_el$140.disabled = _p$.t = _v$0);
9931
10023
  return _p$;
9932
10024
  }, {
9933
10025
  e: void 0,
9934
10026
  t: void 0
9935
10027
  });
9936
- return _el$129;
10028
+ return _el$136;
9937
10029
  }
9938
10030
  }), createComponent(Show, {
9939
10031
  get when() {
9940
10032
  return queueNotice2() !== null || pendingQueryCount() > 0;
9941
10033
  },
9942
10034
  get children() {
9943
- var _el$134 = _tmpl$27$1(), _el$135 = _el$134.firstChild, _el$136 = _el$135.firstChild;
9944
- insert(_el$136, () => queueNotice2() ?? `Queued ${pendingQueryCount()}/${pendingQueryLimit}.`);
9945
- insert(_el$135, createComponent(Show, {
10035
+ var _el$141 = _tmpl$28$1(), _el$142 = _el$141.firstChild, _el$143 = _el$142.firstChild;
10036
+ insert(_el$143, () => queueNotice2() ?? `Queued ${pendingQueryCount()}/${pendingQueryLimit}.`);
10037
+ insert(_el$142, createComponent(Show, {
9946
10038
  get when() {
9947
10039
  return pendingQueryCount() > 0;
9948
10040
  },
9949
10041
  get children() {
9950
- var _el$137 = _tmpl$25$1();
9951
- _el$137.$$click = () => clearPendingQueries();
9952
- return _el$137;
10042
+ var _el$144 = _tmpl$26$1();
10043
+ _el$144.$$click = () => clearPendingQueries();
10044
+ return _el$144;
9953
10045
  }
9954
10046
  }), null);
9955
- insert(_el$134, createComponent(Show, {
10047
+ insert(_el$141, createComponent(Show, {
9956
10048
  get when() {
9957
10049
  return pendingQueries2().length > 0;
9958
10050
  },
9959
10051
  get children() {
9960
- var _el$138 = _tmpl$26$1();
9961
- insert(_el$138, createComponent(For, {
10052
+ var _el$145 = _tmpl$27$1();
10053
+ insert(_el$145, createComponent(For, {
9962
10054
  get each() {
9963
10055
  return pendingQueries2();
9964
10056
  },
9965
10057
  children: (pendingPrompt, index) => (() => {
9966
- var _el$257 = _tmpl$63(), _el$258 = _el$257.firstChild, _el$259 = _el$258.nextSibling;
9967
- setAttribute(_el$258, "title", pendingPrompt);
9968
- insert(_el$258, pendingPrompt);
9969
- _el$259.$$click = () => removePendingQuery(index());
9970
- createRenderEffect(() => setAttribute(_el$259, "aria-label", `Remove queued prompt ${index() + 1}`));
9971
- return _el$257;
10058
+ var _el$264 = _tmpl$64(), _el$265 = _el$264.firstChild, _el$266 = _el$265.nextSibling;
10059
+ setAttribute(_el$265, "title", pendingPrompt);
10060
+ insert(_el$265, pendingPrompt);
10061
+ _el$266.$$click = () => removePendingQuery(index());
10062
+ createRenderEffect(() => setAttribute(_el$266, "aria-label", `Remove queued prompt ${index() + 1}`));
10063
+ return _el$264;
9972
10064
  })()
9973
10065
  }));
9974
- return _el$138;
10066
+ return _el$145;
9975
10067
  }
9976
10068
  }), null);
9977
- return _el$134;
10069
+ return _el$141;
9978
10070
  }
9979
10071
  }), (() => {
9980
- var _el$139 = _tmpl$28$1(), _el$140 = _el$139.firstChild, _el$141 = _el$140.nextSibling;
9981
- _el$140.$$keydown = (e) => {
10072
+ var _el$146 = _tmpl$29(), _el$147 = _el$146.firstChild, _el$148 = _el$147.nextSibling;
10073
+ _el$147.$$keydown = (e) => {
9982
10074
  if (e.key === "Enter" && !e.shiftKey) {
9983
10075
  e.preventDefault();
9984
10076
  void handleChatSend();
9985
10077
  }
9986
10078
  };
9987
- _el$140.$$input = (e) => setChatInput(e.currentTarget.value);
10079
+ _el$147.$$input = (e) => setChatInput(e.currentTarget.value);
9988
10080
  var _ref$2 = chatInputRef;
9989
- typeof _ref$2 === "function" ? use(_ref$2, _el$140) : chatInputRef = _el$140;
9990
- _el$141.$$click = () => void handleChatSend();
9991
- insert(_el$141, () => isStreaming2() ? "Queue" : "Send");
10081
+ typeof _ref$2 === "function" ? use(_ref$2, _el$147) : chatInputRef = _el$147;
10082
+ _el$148.$$click = () => void handleChatSend();
10083
+ insert(_el$148, () => isStreaming2() ? "Queue" : "Send");
9992
10084
  createRenderEffect((_p$) => {
9993
10085
  var _v$1 = isStreaming2() ? "Send now to queue the next prompt..." : "Ask anything...", _v$10 = !chatInput().trim();
9994
- _v$1 !== _p$.e && setAttribute(_el$140, "placeholder", _p$.e = _v$1);
9995
- _v$10 !== _p$.t && (_el$141.disabled = _p$.t = _v$10);
10086
+ _v$1 !== _p$.e && setAttribute(_el$147, "placeholder", _p$.e = _v$1);
10087
+ _v$10 !== _p$.t && (_el$148.disabled = _p$.t = _v$10);
9996
10088
  return _p$;
9997
10089
  }, {
9998
10090
  e: void 0,
9999
10091
  t: void 0
10000
10092
  });
10001
- createRenderEffect(() => _el$140.value = chatInput());
10002
- return _el$139;
10093
+ createRenderEffect(() => _el$147.value = chatInput());
10094
+ return _el$146;
10003
10095
  })()];
10004
10096
  }
10005
10097
  }), null);
@@ -10049,7 +10141,7 @@ ${contextBlock}` : contextBlock);
10049
10141
  });
10050
10142
  };
10051
10143
  delegateEvents(["click", "pointerdown", "input", "keydown"]);
10052
- var _tmpl$$9 = /* @__PURE__ */ template(`<div class=devtools-console>`), _tmpl$2$9 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for console output... Console monitoring activates when an agent uses devtools.`), _tmpl$3$8 = /* @__PURE__ */ template(`<div><span></span><span class=console-time></span><span class=console-text></span><span class=console-source>`), _tmpl$4$8 = /* @__PURE__ */ template(`<div class=devtools-network><div class=network-header><span>Method</span><span>URL</span><span>Status</span><span>Type</span><span>Time`), _tmpl$5$7 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for network requests... Network monitoring activates when an agent uses devtools.`), _tmpl$6$7 = /* @__PURE__ */ template(`<div><span class=network-method></span><span class=network-url></span><span></span><span class=network-type></span><span class=network-duration>`), _tmpl$7$5 = /* @__PURE__ */ template(`<div class=devtools-activity>`), _tmpl$8$4 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for agent devtools activity...`), _tmpl$9$2 = /* @__PURE__ */ template(`<div class=activity-entry><span class=activity-time></span><span class=activity-tool></span><span class=activity-args></span><span></span><span class=activity-duration>`), _tmpl$0$2 = /* @__PURE__ */ template(`<span class="devtools-tab-badge error">`), _tmpl$1$2 = /* @__PURE__ */ template(`<span class="devtools-tab-badge count">`), _tmpl$10$2 = /* @__PURE__ */ template(`<div class=export-date-inputs><div class=export-date-row><span class=export-date-label>From</span><input class=export-date-input type=date></div><div class=export-date-row><span class=export-date-label>To</span><input class=export-date-input type=date>`), _tmpl$11$2 = /* @__PURE__ */ template(`<div class=devtools-export-dropdown><div class=export-section><div class=export-section-label>Log Types</div><label class=export-checkbox><input type=checkbox>Console</label><label class=export-checkbox><input type=checkbox>Network</label><label class=export-checkbox><input type=checkbox>Activity</label></div><div class=export-section><div class=export-section-label>Date Range</div><div class=export-date-btns><button>Today</button><button>Custom</button></div></div><button class=export-submit>Export JSON`), _tmpl$12$2 = /* @__PURE__ */ template(`<div class=devtools-panel><div class=devtools-tabs><button>Console</button><button>Network</button><button>Activity</button><div class=devtools-tab-spacer></div><div class=devtools-export-wrap><button title="Export Logs"><svg width=13 height=13 viewBox="0 0 13 13"fill=none style=vertical-align:middle><path d="M6.5 1v7M3.5 5l3 3 3-3"stroke=currentColor stroke-width=1.3 stroke-linecap=round stroke-linejoin=round></path><path d="M1 9.5v1A1.5 1.5 0 0 0 2.5 12h8A1.5 1.5 0 0 0 12 10.5v-1"stroke=currentColor stroke-width=1.3 stroke-linecap=round></path></svg></button></div><button class=devtools-close-btn title="Close DevTools">×</button></div><div class=devtools-content>`);
10144
+ var _tmpl$$9 = /* @__PURE__ */ template(`<div class=devtools-console>`), _tmpl$2$9 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for console output... Console monitoring activates when an agent uses devtools.`), _tmpl$3$8 = /* @__PURE__ */ template(`<div><span></span><span class=console-time></span><span class=console-text></span><span class=console-source>`), _tmpl$4$8 = /* @__PURE__ */ template(`<div class=devtools-network><div class=network-header><span>Method</span><span>URL</span><span>Status</span><span>Type</span><span>Time`), _tmpl$5$7 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for network requests... Network monitoring activates when an agent uses devtools.`), _tmpl$6$7 = /* @__PURE__ */ template(`<div><span class=network-method></span><span class=network-url></span><span></span><span class=network-type></span><span class=network-duration>`), _tmpl$7$5 = /* @__PURE__ */ template(`<div class=devtools-activity>`), _tmpl$8$4 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for agent devtools activity...`), _tmpl$9$3 = /* @__PURE__ */ template(`<div class=activity-entry><span class=activity-time></span><span class=activity-tool></span><span class=activity-args></span><span></span><span class=activity-duration>`), _tmpl$0$2 = /* @__PURE__ */ template(`<span class="devtools-tab-badge error">`), _tmpl$1$2 = /* @__PURE__ */ template(`<span class="devtools-tab-badge count">`), _tmpl$10$2 = /* @__PURE__ */ template(`<div class=export-date-inputs><div class=export-date-row><span class=export-date-label>From</span><input class=export-date-input type=date></div><div class=export-date-row><span class=export-date-label>To</span><input class=export-date-input type=date>`), _tmpl$11$2 = /* @__PURE__ */ template(`<div class=devtools-export-dropdown><div class=export-section><div class=export-section-label>Log Types</div><label class=export-checkbox><input type=checkbox>Console</label><label class=export-checkbox><input type=checkbox>Network</label><label class=export-checkbox><input type=checkbox>Activity</label></div><div class=export-section><div class=export-section-label>Date Range</div><div class=export-date-btns><button>Today</button><button>Custom</button></div></div><button class=export-submit>Export JSON`), _tmpl$12$2 = /* @__PURE__ */ template(`<div class=devtools-panel><div class=devtools-tabs><button>Console</button><button>Network</button><button>Activity</button><div class=devtools-tab-spacer></div><div class=devtools-export-wrap><button title="Export Logs"><svg width=13 height=13 viewBox="0 0 13 13"fill=none style=vertical-align:middle><path d="M6.5 1v7M3.5 5l3 3 3-3"stroke=currentColor stroke-width=1.3 stroke-linecap=round stroke-linejoin=round></path><path d="M1 9.5v1A1.5 1.5 0 0 0 2.5 12h8A1.5 1.5 0 0 0 12 10.5v-1"stroke=currentColor stroke-width=1.3 stroke-linecap=round></path></svg></button></div><button class=devtools-close-btn title="Close DevTools">×</button></div><div class=devtools-content>`);
10053
10145
  function statusClass(status) {
10054
10146
  if (status == null) return "pending";
10055
10147
  if (status >= 200 && status < 300) return "ok";
@@ -10224,7 +10316,7 @@ const ActivityView = (props) => {
10224
10316
  return [...props.entries].reverse();
10225
10317
  },
10226
10318
  children: (entry) => (() => {
10227
- var _el$17 = _tmpl$9$2(), _el$18 = _el$17.firstChild, _el$19 = _el$18.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling;
10319
+ var _el$17 = _tmpl$9$3(), _el$18 = _el$17.firstChild, _el$19 = _el$18.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling;
10228
10320
  insert(_el$18, () => formatTime(entry.timestamp, {
10229
10321
  includeSeconds: true
10230
10322
  }));
@@ -10700,7 +10792,7 @@ const SettingsGeneral = (props) => {
10700
10792
  })();
10701
10793
  };
10702
10794
  delegateEvents(["click", "input"]);
10703
- var _tmpl$$7 = /* @__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$2$7 = /* @__PURE__ */ template(`<div style=display:flex;align-items:center;gap:8px><span style=width:8px;height:8px;border-radius:50%;background:var(--success);display:inline-block></span><span>Connected as `), _tmpl$3$6 = /* @__PURE__ */ template(`<p class=settings-hint><button type=button class=settings-link-btn>Disconnect`), _tmpl$4$6 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label>Account`), _tmpl$5$5 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$6$5 = /* @__PURE__ */ template(`<p class=settings-hint>An API key is already stored securely for this provider. Leave this blank to keep it, or enter a new key to replace it.`), _tmpl$7$4 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$8$3 = /* @__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$1 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$0$1 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$1$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$1 = /* @__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$1 = /* @__PURE__ */ template(`<p class=settings-hint>Vessel auto-detects the active model from your configured <code>llama-server</code> base URL. For agent loops, run <code>llama-server</code> with <code>--ctx-size 16384</code> minimum and <code>32768</code> recommended.`), _tmpl$12$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-reasoning-effort>Reasoning Level</label><select id=chat-reasoning-effort class="settings-input settings-select"></select><p class=settings-hint>Applies to providers and models that expose reasoning controls. Off requests no reasoning where supported and otherwise leaves the model at its normal behavior; Max requests the strongest supported reasoning tier.`), _tmpl$13$1 = /* @__PURE__ */ template(`<input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200>`), _tmpl$14$1 = /* @__PURE__ */ template(`<div class=settings-category-panel><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-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-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 class=settings-inline-actions><button type=button class=settings-secondary-btn>Regenerate MCP token</button></div></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=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-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.`), _tmpl$15$1 = /* @__PURE__ */ template(`<option>`), _tmpl$16 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--accent-primary)> <button type=button class=settings-link-btn>Cancel`), _tmpl$17 = /* @__PURE__ */ template(`<div>`), _tmpl$18 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>`), _tmpl$19 = /* @__PURE__ */ template(`<button type=button class=settings-btn>Try Again`), _tmpl$20 = /* @__PURE__ */ template(`<div><button type=button class=settings-btn>Connect with ChatGPT</button><p class=settings-hint>Sign in with your ChatGPT Plus or Pro subscription. A browser tab will open where you'll authorize Vessel.`), _tmpl$21 = /* @__PURE__ */ template(`<input id=chat-model class=settings-input style=flex:1>`), _tmpl$22 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--accent-primary)>`), _tmpl$23 = /* @__PURE__ */ template(`<p class=settings-hint>`), _tmpl$24 = /* @__PURE__ */ template(`<div class="settings-input settings-input-disabled"title="Upgrade to Vessel Premium for unlimited tool iterations">50`), _tmpl$25 = /* @__PURE__ */ template(`<div class=settings-health-issues>`), _tmpl$26 = /* @__PURE__ */ template(`<div class=settings-health><div class=settings-callout-title>Runtime Health</div><p class=settings-hint>MCP status: <strong></strong> `), _tmpl$27 = /* @__PURE__ */ template(`<p class=settings-hint>Active endpoint: <code>`), _tmpl$28 = /* @__PURE__ */ template(`<div class=settings-health-issue><strong></strong><div>`);
10795
+ var _tmpl$$7 = /* @__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$2$7 = /* @__PURE__ */ template(`<div style=display:flex;align-items:center;gap:8px><span style=width:8px;height:8px;border-radius:50%;background:var(--success);display:inline-block></span><span>Connected as `), _tmpl$3$6 = /* @__PURE__ */ template(`<p class=settings-hint><button type=button class=settings-link-btn>Disconnect`), _tmpl$4$6 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label>Account`), _tmpl$5$5 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$6$5 = /* @__PURE__ */ template(`<p class=settings-hint>An API key is already stored securely for this provider. Leave this blank to keep it, or enter a new key to replace it.`), _tmpl$7$4 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$8$3 = /* @__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$2 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$0$1 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$1$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$1 = /* @__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$1 = /* @__PURE__ */ template(`<p class=settings-hint>Vessel auto-detects the active model from your configured <code>llama-server</code> base URL. For agent loops, run <code>llama-server</code> with <code>--ctx-size 16384</code> minimum and <code>32768</code> recommended.`), _tmpl$12$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-reasoning-effort>Reasoning Level</label><select id=chat-reasoning-effort class="settings-input settings-select"></select><p class=settings-hint>Applies to providers and models that expose reasoning controls. Off requests no reasoning where supported and otherwise leaves the model at its normal behavior; Max requests the strongest supported reasoning tier.`), _tmpl$13$1 = /* @__PURE__ */ template(`<input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200>`), _tmpl$14$1 = /* @__PURE__ */ template(`<div class=settings-category-panel><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-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-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 class=settings-inline-actions><button type=button class=settings-secondary-btn>Regenerate MCP token</button></div></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=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-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.`), _tmpl$15$1 = /* @__PURE__ */ template(`<option>`), _tmpl$16 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--accent-primary)> <button type=button class=settings-link-btn>Cancel`), _tmpl$17 = /* @__PURE__ */ template(`<div>`), _tmpl$18 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>`), _tmpl$19 = /* @__PURE__ */ template(`<button type=button class=settings-btn>Try Again`), _tmpl$20 = /* @__PURE__ */ template(`<div><button type=button class=settings-btn>Connect with ChatGPT</button><p class=settings-hint>Sign in with your ChatGPT Plus or Pro subscription. A browser tab will open where you'll authorize Vessel.`), _tmpl$21 = /* @__PURE__ */ template(`<input id=chat-model class=settings-input style=flex:1>`), _tmpl$22 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--accent-primary)>`), _tmpl$23 = /* @__PURE__ */ template(`<p class=settings-hint>`), _tmpl$24 = /* @__PURE__ */ template(`<div class="settings-input settings-input-disabled"title="Upgrade to Vessel Premium for unlimited tool iterations">50`), _tmpl$25 = /* @__PURE__ */ template(`<div class=settings-health-issues>`), _tmpl$26 = /* @__PURE__ */ template(`<div class=settings-health><div class=settings-callout-title>Runtime Health</div><p class=settings-hint>MCP status: <strong></strong> `), _tmpl$27 = /* @__PURE__ */ template(`<p class=settings-hint>Active endpoint: <code>`), _tmpl$28 = /* @__PURE__ */ template(`<div class=settings-health-issue><strong></strong><div>`);
10704
10796
  const CHAT_PROVIDERS$1 = Object.values(PROVIDERS).map((p) => ({
10705
10797
  id: p.id,
10706
10798
  name: p.name,
@@ -10894,7 +10986,7 @@ const SettingsAgent = (props) => {
10894
10986
  })();
10895
10987
  },
10896
10988
  get children() {
10897
- var _el$25 = _tmpl$9$1();
10989
+ var _el$25 = _tmpl$9$2();
10898
10990
  _el$25.addEventListener("change", (e) => props.chat.setModel(e.currentTarget.value));
10899
10991
  insert(_el$25, createComponent(For, {
10900
10992
  get each() {
@@ -11080,7 +11172,7 @@ const SettingsAgent = (props) => {
11080
11172
  })();
11081
11173
  };
11082
11174
  delegateEvents(["click", "input"]);
11083
- var _tmpl$$6 = /* @__PURE__ */ template(`<span class=vault-premium-badge>Premium`), _tmpl$2$6 = /* @__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$3$5 = /* @__PURE__ */ template(`<div class=vault-entries>`), _tmpl$4$5 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Credential`), _tmpl$5$4 = /* @__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$6$4 = /* @__PURE__ */ template(`<p class=settings-hint style=margin-bottom:10px>Save login credentials for any website. Passwords are encrypted locally and filled directly into login forms. The agent can list and fill them with your consent, but passwords are never sent to AI providers.`), _tmpl$7$3 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Password`), _tmpl$8$2 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Title (e.g. GitHub Personal)"><input class=settings-input placeholder="URL (e.g. https://github.com)"><input class=settings-input placeholder="Username / email"><input class=settings-input type=password placeholder=Password><select class=settings-input><option value=login>Login</option><option value=credit_card>Credit Card</option><option value=identity>Identity</option><option value=secure_note>Secure Note</option></select><input class=settings-input placeholder="Notes (optional)"><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Password</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$9 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Profile`), _tmpl$0 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Profile name (e.g. Personal, Work)"><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder="First name"><input class=settings-input placeholder="Last name"></div><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder=Email><input class=settings-input placeholder=Phone></div><input class=settings-input placeholder="Organization (optional)"><input class=settings-input placeholder="Address line 1"><input class=settings-input placeholder="Address line 2 (optional)"><div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px"><input class=settings-input placeholder=City><input class=settings-input placeholder=State><input class=settings-input placeholder="ZIP / Postal"></div><input class=settings-input placeholder=Country><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Profile</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$1 = /* @__PURE__ */ template(`<div class=settings-category-panel><div class=settings-field><label class=settings-label>Agent Credential Vault</label></div><div class=settings-field><label class=settings-label>Passwords</label></div><div class=settings-field><label class=settings-label>Form Autofill</label><p class=settings-hint style=margin-bottom:10px>Store your info once. Vessel matches it to form fields on any site using labels, field names, and autocomplete hints.`), _tmpl$10 = /* @__PURE__ */ template(`<p class=settings-hint>Securely store credentials for agent-driven logins. Upgrade to Premium to unlock the Agent Credential Vault.`), _tmpl$11 = /* @__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;`), _tmpl$12 = /* @__PURE__ */ template(`<p class=settings-status>`), _tmpl$13 = /* @__PURE__ */ template(`<p class=settings-hint>Your personal password manager. Save, organize, and autofill login credentials. Upgrade to Premium to unlock Passwords.`), _tmpl$14 = /* @__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 password">&times;`), _tmpl$15 = /* @__PURE__ */ template(`<div class=vault-entry><div class=vault-entry-info><span class=vault-entry-label></span><span class=vault-entry-detail></span></div><div style=display:flex;gap:6px;align-items:center><button class="premium-btn premium-btn-activate"title="Fill forms on current page with this profile"style="padding:2px 10px;font-size:12px">Fill</button><button class=vault-entry-remove title="Remove profile">&times;`);
11175
+ var _tmpl$$6 = /* @__PURE__ */ template(`<span class=vault-premium-badge>Premium`), _tmpl$2$6 = /* @__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$3$5 = /* @__PURE__ */ template(`<div class=vault-entries>`), _tmpl$4$5 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Credential`), _tmpl$5$4 = /* @__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$6$4 = /* @__PURE__ */ template(`<p class=settings-hint style=margin-bottom:10px>Save login credentials for any website. Passwords are encrypted locally and filled directly into login forms. The agent can list and fill them with your consent, but passwords are never sent to AI providers.`), _tmpl$7$3 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Password`), _tmpl$8$2 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Title (e.g. GitHub Personal)"><input class=settings-input placeholder="URL (e.g. https://github.com)"><input class=settings-input placeholder="Username / email"><input class=settings-input type=password placeholder=Password><select class=settings-input><option value=login>Login</option><option value=credit_card>Credit Card</option><option value=identity>Identity</option><option value=secure_note>Secure Note</option></select><input class=settings-input placeholder="Notes (optional)"><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Password</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$9$1 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Profile`), _tmpl$0 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Profile name (e.g. Personal, Work)"><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder="First name"><input class=settings-input placeholder="Last name"></div><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder=Email><input class=settings-input placeholder=Phone></div><input class=settings-input placeholder="Organization (optional)"><input class=settings-input placeholder="Address line 1"><input class=settings-input placeholder="Address line 2 (optional)"><div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px"><input class=settings-input placeholder=City><input class=settings-input placeholder=State><input class=settings-input placeholder="ZIP / Postal"></div><input class=settings-input placeholder=Country><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Profile</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$1 = /* @__PURE__ */ template(`<div class=settings-category-panel><div class=settings-field><label class=settings-label>Agent Credential Vault</label></div><div class=settings-field><label class=settings-label>Passwords</label></div><div class=settings-field><label class=settings-label>Form Autofill</label><p class=settings-hint style=margin-bottom:10px>Store your info once. Vessel matches it to form fields on any site using labels, field names, and autocomplete hints.`), _tmpl$10 = /* @__PURE__ */ template(`<p class=settings-hint>Securely store credentials for agent-driven logins. Upgrade to Premium to unlock the Agent Credential Vault.`), _tmpl$11 = /* @__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;`), _tmpl$12 = /* @__PURE__ */ template(`<p class=settings-status>`), _tmpl$13 = /* @__PURE__ */ template(`<p class=settings-hint>Your personal password manager. Save, organize, and autofill login credentials. Upgrade to Premium to unlock Passwords.`), _tmpl$14 = /* @__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 password">&times;`), _tmpl$15 = /* @__PURE__ */ template(`<div class=vault-entry><div class=vault-entry-info><span class=vault-entry-label></span><span class=vault-entry-detail></span></div><div style=display:flex;gap:6px;align-items:center><button class="premium-btn premium-btn-activate"title="Fill forms on current page with this profile"style="padding:2px 10px;font-size:12px">Fill</button><button class=vault-entry-remove title="Remove profile">&times;`);
11084
11176
  const SettingsVaults = (props) => {
11085
11177
  const v = props.vault;
11086
11178
  const h = props.humanVault;
@@ -11359,7 +11451,7 @@ const SettingsVaults = (props) => {
11359
11451
  return !a.adding();
11360
11452
  },
11361
11453
  get children() {
11362
- var _el$38 = _tmpl$9();
11454
+ var _el$38 = _tmpl$9$1();
11363
11455
  _el$38.$$click = () => {
11364
11456
  a.setAdding(true);
11365
11457
  };
@@ -11515,22 +11607,96 @@ const SettingsPrivacy = (props) => {
11515
11607
  })();
11516
11608
  };
11517
11609
  delegateEvents(["input", "click"]);
11518
- var _tmpl$$4 = /* @__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$2$4 = /* @__PURE__ */ template(`<div class=vault-entries>`), _tmpl$3$3 = /* @__PURE__ */ template(`<div class=settings-category-panel><div class=settings-field><label class=settings-label>Vessel Premium</label></div><div class=settings-field><label class=settings-label>Saved Sessions</label><p class=settings-hint style=margin-bottom:10px>Save the current browser state (tabs, cookies, storage) as a named session. Restore it later from this panel.</p><div class=premium-activate-row style=margin-bottom:8px><input class="settings-input premium-email-input"placeholder="Session name"><button class="premium-btn premium-btn-activate">Save Current`), _tmpl$4$3 = /* @__PURE__ */ template(`<div class=premium-activate-row><input class="settings-input premium-email-input"inputmode=numeric maxlength=6 placeholder="Enter 6-digit code"><button class="premium-btn premium-btn-activate">`), _tmpl$5$2 = /* @__PURE__ */ template(`<button class="premium-btn premium-btn-reset">Clear Saved Email`), _tmpl$6$2 = /* @__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">`), _tmpl$7$2 = /* @__PURE__ */ template(`<p class=settings-status>`), _tmpl$8$1 = /* @__PURE__ */ template(`<div class=vault-entry><div class=vault-entry-info><span class=vault-entry-label></span><span class=vault-entry-detail> &middot; <!> cookies &middot; <!> domains</span></div><div style=display:flex;gap:6px;align-items:center><button class="premium-btn premium-btn-activate"title="Restore this session (replaces current tabs and cookies)"style="padding:2px 10px;font-size:12px">Load</button><button class=vault-entry-remove title="Delete session">&times;`);
11610
+ var _tmpl$$4 = /* @__PURE__ */ template(`<div class=settings-feedback-form><input class=settings-input type=email placeholder="Your reply email"><textarea class="settings-textarea settings-feedback-textarea"placeholder="Tell us what happened, what you expected, or what would make Vessel better."></textarea><div class=settings-inline-actions><button class=settings-secondary-btn>`), _tmpl$2$4 = /* @__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$3$3 = /* @__PURE__ */ template(`<div class=vault-entries>`), _tmpl$4$3 = /* @__PURE__ */ template(`<div class=settings-category-panel><div class=settings-field><label class=settings-label>Support</label><div class=settings-inline-actions><button class=settings-secondary-btn></button></div></div><div class=settings-field><label class=settings-label>Vessel Premium</label></div><div class=settings-field><label class=settings-label>Saved Sessions</label><p class=settings-hint style=margin-bottom:10px>Save the current browser state (tabs, cookies, storage) as a named session. Restore it later from this panel.</p><div class=premium-activate-row style=margin-bottom:8px><input class="settings-input premium-email-input"placeholder="Session name"><button class="premium-btn premium-btn-activate">Save Current`), _tmpl$5$2 = /* @__PURE__ */ template(`<p class=settings-status>`), _tmpl$6$2 = /* @__PURE__ */ template(`<div class=premium-activate-row><input class="settings-input premium-email-input"inputmode=numeric maxlength=6 placeholder="Enter 6-digit code"><button class="premium-btn premium-btn-activate">`), _tmpl$7$2 = /* @__PURE__ */ template(`<button class="premium-btn premium-btn-reset">Clear Saved Email`), _tmpl$8$1 = /* @__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">`), _tmpl$9 = /* @__PURE__ */ template(`<div class=vault-entry><div class=vault-entry-info><span class=vault-entry-label></span><span class=vault-entry-detail> &middot; <!> cookies &middot; <!> domains</span></div><div style=display:flex;gap:6px;align-items:center><button class="premium-btn premium-btn-activate"title="Restore this session (replaces current tabs and cookies)"style="padding:2px 10px;font-size:12px">Load</button><button class=vault-entry-remove title="Delete session">&times;`);
11519
11611
  const SettingsAccount = (props) => {
11520
11612
  const p = props.premium;
11521
11613
  const s = props.sessions;
11614
+ const [feedbackExpanded, setFeedbackExpanded] = createSignal(false);
11615
+ const [feedbackEmail, setFeedbackEmail] = createSignal(p.state().email || "");
11616
+ const [feedbackMessage, setFeedbackMessage] = createSignal("");
11617
+ const [feedbackSending, setFeedbackSending] = createSignal(false);
11618
+ const [feedbackStatus, setFeedbackStatus] = createSignal(null);
11619
+ const handleSubmitFeedback = async () => {
11620
+ setFeedbackSending(true);
11621
+ setFeedbackStatus(null);
11622
+ try {
11623
+ const result = await window.vessel.support.submitFeedback(feedbackEmail(), feedbackMessage());
11624
+ if (result.ok) {
11625
+ setFeedbackMessage("");
11626
+ setFeedbackExpanded(false);
11627
+ setFeedbackStatus({
11628
+ kind: "success",
11629
+ text: "Feedback sent. Thank you."
11630
+ });
11631
+ return;
11632
+ }
11633
+ setFeedbackStatus({
11634
+ kind: "error",
11635
+ text: result.error || "Could not send feedback."
11636
+ });
11637
+ } finally {
11638
+ setFeedbackSending(false);
11639
+ }
11640
+ };
11522
11641
  return (() => {
11523
- var _el$ = _tmpl$3$3(), _el$2 = _el$.firstChild;
11524
- _el$2.firstChild;
11525
- var _el$1 = _el$2.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling, _el$12 = _el$11.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling;
11642
+ var _el$ = _tmpl$4$3(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.firstChild, _el$1 = _el$2.nextSibling;
11643
+ _el$1.firstChild;
11644
+ var _el$18 = _el$1.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.firstChild, _el$23 = _el$22.nextSibling;
11645
+ _el$5.$$click = () => {
11646
+ setFeedbackExpanded(!feedbackExpanded());
11647
+ setFeedbackStatus(null);
11648
+ };
11649
+ insert(_el$5, () => feedbackExpanded() ? "Cancel" : "Submit Feedback");
11650
+ insert(_el$2, createComponent(Show, {
11651
+ get when() {
11652
+ return feedbackExpanded();
11653
+ },
11654
+ get children() {
11655
+ var _el$6 = _tmpl$$4(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling, _el$9 = _el$8.nextSibling, _el$0 = _el$9.firstChild;
11656
+ _el$7.$$input = (event) => {
11657
+ setFeedbackEmail(event.currentTarget.value);
11658
+ setFeedbackStatus(null);
11659
+ };
11660
+ setAttribute(_el$7, "spellcheck", false);
11661
+ _el$8.$$input = (event) => {
11662
+ setFeedbackMessage(event.currentTarget.value);
11663
+ setFeedbackStatus(null);
11664
+ };
11665
+ _el$0.$$click = handleSubmitFeedback;
11666
+ insert(_el$0, () => feedbackSending() ? "Sending..." : "Send Feedback");
11667
+ createRenderEffect(() => _el$0.disabled = feedbackSending() || !feedbackEmail().trim() || !feedbackMessage().trim());
11668
+ createRenderEffect(() => _el$7.value = feedbackEmail());
11669
+ createRenderEffect(() => _el$8.value = feedbackMessage());
11670
+ return _el$6;
11671
+ }
11672
+ }), null);
11526
11673
  insert(_el$2, createComponent(Show, {
11674
+ get when() {
11675
+ return feedbackStatus();
11676
+ },
11677
+ children: (status) => (() => {
11678
+ var _el$25 = _tmpl$5$2();
11679
+ insert(_el$25, () => status().text);
11680
+ createRenderEffect((_p$) => {
11681
+ var _v$ = !!(status().kind === "success"), _v$2 = !!(status().kind === "error");
11682
+ _v$ !== _p$.e && _el$25.classList.toggle("success", _p$.e = _v$);
11683
+ _v$2 !== _p$.t && _el$25.classList.toggle("error", _p$.t = _v$2);
11684
+ return _p$;
11685
+ }, {
11686
+ e: void 0,
11687
+ t: void 0
11688
+ });
11689
+ return _el$25;
11690
+ })()
11691
+ }), null);
11692
+ insert(_el$1, createComponent(Show, {
11527
11693
  get when() {
11528
11694
  return p.active();
11529
11695
  },
11530
11696
  get fallback() {
11531
11697
  return (() => {
11532
- var _el$16 = _tmpl$6$2(), _el$17 = _el$16.firstChild, _el$18 = _el$17.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$19.nextSibling, _el$24 = _el$18.nextSibling;
11533
- _el$19.$$input = (e) => {
11698
+ var _el$26 = _tmpl$8$1(), _el$27 = _el$26.firstChild, _el$28 = _el$27.nextSibling, _el$29 = _el$28.firstChild, _el$30 = _el$29.nextSibling, _el$34 = _el$28.nextSibling;
11699
+ _el$29.$$input = (e) => {
11534
11700
  const nextEmail = e.currentTarget.value;
11535
11701
  if (nextEmail.trim().toLowerCase() !== p.email().trim().toLowerCase()) {
11536
11702
  p.resetFlow();
@@ -11538,8 +11704,8 @@ const SettingsAccount = (props) => {
11538
11704
  }
11539
11705
  p.setEmail(nextEmail);
11540
11706
  };
11541
- setAttribute(_el$19, "spellcheck", false);
11542
- _el$20.$$click = async () => {
11707
+ setAttribute(_el$29, "spellcheck", false);
11708
+ _el$30.$$click = async () => {
11543
11709
  p.setLoading(true);
11544
11710
  p.setMessage(null);
11545
11711
  try {
@@ -11568,23 +11734,23 @@ const SettingsAccount = (props) => {
11568
11734
  p.setLoading(false);
11569
11735
  }
11570
11736
  };
11571
- insert(_el$20, (() => {
11737
+ insert(_el$30, (() => {
11572
11738
  var _c$ = memo(() => !!p.loading());
11573
11739
  return () => _c$() ? "Sending..." : p.codeSent() ? "Resend Code" : "Send Code";
11574
11740
  })());
11575
- insert(_el$16, createComponent(Show, {
11741
+ insert(_el$26, createComponent(Show, {
11576
11742
  get when() {
11577
11743
  return p.codeSent();
11578
11744
  },
11579
11745
  get children() {
11580
- var _el$21 = _tmpl$4$3(), _el$22 = _el$21.firstChild, _el$23 = _el$22.nextSibling;
11581
- _el$22.$$input = (e) => {
11746
+ var _el$31 = _tmpl$6$2(), _el$32 = _el$31.firstChild, _el$33 = _el$32.nextSibling;
11747
+ _el$32.$$input = (e) => {
11582
11748
  const nextCode = e.currentTarget.value.replace(/\D+/g, "").slice(0, 6);
11583
11749
  p.setCode(nextCode);
11584
11750
  p.setMessage(null);
11585
11751
  };
11586
- setAttribute(_el$22, "spellcheck", false);
11587
- _el$23.$$click = async () => {
11752
+ setAttribute(_el$32, "spellcheck", false);
11753
+ _el$33.$$click = async () => {
11588
11754
  p.setLoading(true);
11589
11755
  p.setMessage(null);
11590
11756
  try {
@@ -11611,69 +11777,69 @@ const SettingsAccount = (props) => {
11611
11777
  p.setLoading(false);
11612
11778
  }
11613
11779
  };
11614
- insert(_el$23, () => p.loading() ? "Verifying..." : "Verify Code");
11615
- createRenderEffect(() => _el$23.disabled = p.loading() || !p.email().trim() || p.code().trim().length !== 6 || !p.challengeToken());
11616
- createRenderEffect(() => _el$22.value = p.code());
11617
- return _el$21;
11780
+ insert(_el$33, () => p.loading() ? "Verifying..." : "Verify Code");
11781
+ createRenderEffect(() => _el$33.disabled = p.loading() || !p.email().trim() || p.code().trim().length !== 6 || !p.challengeToken());
11782
+ createRenderEffect(() => _el$32.value = p.code());
11783
+ return _el$31;
11618
11784
  }
11619
- }), _el$24);
11620
- _el$24.$$click = () => {
11785
+ }), _el$34);
11786
+ _el$34.$$click = () => {
11621
11787
  p.startCheckout();
11622
11788
  };
11623
- insert(_el$24, () => p.loading() ? "Opening Checkout..." : "Subscribe to Premium — $5.99/mo after 7-day free trial");
11624
- insert(_el$16, createComponent(Show, {
11789
+ insert(_el$34, () => p.loading() ? "Opening Checkout..." : "Subscribe to Premium — $5.99/mo after 7-day free trial");
11790
+ insert(_el$26, createComponent(Show, {
11625
11791
  get when() {
11626
11792
  return p.message();
11627
11793
  },
11628
11794
  children: (msg) => (() => {
11629
- var _el$26 = _tmpl$7$2();
11630
- insert(_el$26, () => msg().text);
11795
+ var _el$36 = _tmpl$5$2();
11796
+ insert(_el$36, () => msg().text);
11631
11797
  createRenderEffect((_p$) => {
11632
- var _v$3 = !!(msg().kind === "success"), _v$4 = !!(msg().kind === "error");
11633
- _v$3 !== _p$.e && _el$26.classList.toggle("success", _p$.e = _v$3);
11634
- _v$4 !== _p$.t && _el$26.classList.toggle("error", _p$.t = _v$4);
11798
+ var _v$5 = !!(msg().kind === "success"), _v$6 = !!(msg().kind === "error");
11799
+ _v$5 !== _p$.e && _el$36.classList.toggle("success", _p$.e = _v$5);
11800
+ _v$6 !== _p$.t && _el$36.classList.toggle("error", _p$.t = _v$6);
11635
11801
  return _p$;
11636
11802
  }, {
11637
11803
  e: void 0,
11638
11804
  t: void 0
11639
11805
  });
11640
- return _el$26;
11806
+ return _el$36;
11641
11807
  })()
11642
11808
  }), null);
11643
- insert(_el$16, createComponent(Show, {
11809
+ insert(_el$26, createComponent(Show, {
11644
11810
  get when() {
11645
11811
  return p.state().email || p.email();
11646
11812
  },
11647
11813
  get children() {
11648
- var _el$25 = _tmpl$5$2();
11649
- _el$25.$$click = async () => {
11814
+ var _el$35 = _tmpl$7$2();
11815
+ _el$35.$$click = async () => {
11650
11816
  const nextState = await window.vessel.premium.reset();
11651
11817
  p.setState(nextState);
11652
11818
  p.setEmail("");
11653
11819
  p.resetFlow();
11654
11820
  p.setMessage(null);
11655
11821
  };
11656
- return _el$25;
11822
+ return _el$35;
11657
11823
  }
11658
11824
  }), null);
11659
11825
  createRenderEffect((_p$) => {
11660
- var _v$ = p.loading() || !p.email().trim(), _v$2 = p.loading();
11661
- _v$ !== _p$.e && (_el$20.disabled = _p$.e = _v$);
11662
- _v$2 !== _p$.t && (_el$24.disabled = _p$.t = _v$2);
11826
+ var _v$3 = p.loading() || !p.email().trim(), _v$4 = p.loading();
11827
+ _v$3 !== _p$.e && (_el$30.disabled = _p$.e = _v$3);
11828
+ _v$4 !== _p$.t && (_el$34.disabled = _p$.t = _v$4);
11663
11829
  return _p$;
11664
11830
  }, {
11665
11831
  e: void 0,
11666
11832
  t: void 0
11667
11833
  });
11668
- createRenderEffect(() => _el$19.value = p.email());
11669
- return _el$16;
11834
+ createRenderEffect(() => _el$29.value = p.email());
11835
+ return _el$26;
11670
11836
  })();
11671
11837
  },
11672
11838
  get children() {
11673
- var _el$4 = _tmpl$$4(), _el$5 = _el$4.firstChild;
11674
- _el$5.firstChild;
11675
- var _el$7 = _el$5.nextSibling, _el$8 = _el$7.nextSibling, _el$9 = _el$8.firstChild, _el$0 = _el$9.nextSibling;
11676
- insert(_el$5, createComponent(Show, {
11839
+ var _el$11 = _tmpl$2$4(), _el$12 = _el$11.firstChild;
11840
+ _el$12.firstChild;
11841
+ var _el$14 = _el$12.nextSibling, _el$15 = _el$14.nextSibling, _el$16 = _el$15.firstChild, _el$17 = _el$16.nextSibling;
11842
+ insert(_el$12, createComponent(Show, {
11677
11843
  get when() {
11678
11844
  return p.state().status === "trialing";
11679
11845
  },
@@ -11681,8 +11847,8 @@ const SettingsAccount = (props) => {
11681
11847
  return [" ", "(Trial)"];
11682
11848
  }
11683
11849
  }), null);
11684
- insert(_el$7, () => p.state().email, null);
11685
- insert(_el$7, createComponent(Show, {
11850
+ insert(_el$14, () => p.state().email, null);
11851
+ insert(_el$14, createComponent(Show, {
11686
11852
  get when() {
11687
11853
  return p.state().expiresAt;
11688
11854
  },
@@ -11690,7 +11856,7 @@ const SettingsAccount = (props) => {
11690
11856
  return [" ", "· Renews", " ", memo(() => new Date(p.state().expiresAt).toLocaleDateString())];
11691
11857
  }
11692
11858
  }), null);
11693
- _el$9.$$click = async () => {
11859
+ _el$16.$$click = async () => {
11694
11860
  const result = await window.vessel.premium.portal();
11695
11861
  if (!result.ok) {
11696
11862
  p.setMessage({
@@ -11700,38 +11866,38 @@ const SettingsAccount = (props) => {
11700
11866
  setTimeout(() => p.setMessage(null), 5e3);
11701
11867
  }
11702
11868
  };
11703
- _el$0.$$click = async () => {
11869
+ _el$17.$$click = async () => {
11704
11870
  const nextState = await window.vessel.premium.reset();
11705
11871
  p.setState(nextState);
11706
11872
  p.setEmail("");
11707
11873
  p.resetFlow();
11708
11874
  p.setMessage(null);
11709
11875
  };
11710
- insert(_el$4, createComponent(Show, {
11876
+ insert(_el$11, createComponent(Show, {
11711
11877
  get when() {
11712
11878
  return p.message();
11713
11879
  },
11714
11880
  children: (msg) => (() => {
11715
- var _el$27 = _tmpl$7$2();
11716
- insert(_el$27, () => msg().text);
11881
+ var _el$37 = _tmpl$5$2();
11882
+ insert(_el$37, () => msg().text);
11717
11883
  createRenderEffect((_p$) => {
11718
- var _v$5 = !!(msg().kind === "success"), _v$6 = !!(msg().kind === "error");
11719
- _v$5 !== _p$.e && _el$27.classList.toggle("success", _p$.e = _v$5);
11720
- _v$6 !== _p$.t && _el$27.classList.toggle("error", _p$.t = _v$6);
11884
+ var _v$7 = !!(msg().kind === "success"), _v$8 = !!(msg().kind === "error");
11885
+ _v$7 !== _p$.e && _el$37.classList.toggle("success", _p$.e = _v$7);
11886
+ _v$8 !== _p$.t && _el$37.classList.toggle("error", _p$.t = _v$8);
11721
11887
  return _p$;
11722
11888
  }, {
11723
11889
  e: void 0,
11724
11890
  t: void 0
11725
11891
  });
11726
- return _el$27;
11892
+ return _el$37;
11727
11893
  })()
11728
11894
  }), null);
11729
- return _el$4;
11895
+ return _el$11;
11730
11896
  }
11731
11897
  }), null);
11732
- _el$13.$$input = (e) => s.setSaveName(e.currentTarget.value);
11733
- setAttribute(_el$13, "spellcheck", false);
11734
- _el$14.$$click = async () => {
11898
+ _el$22.$$input = (e) => s.setSaveName(e.currentTarget.value);
11899
+ setAttribute(_el$22, "spellcheck", false);
11900
+ _el$23.$$click = async () => {
11735
11901
  try {
11736
11902
  await window.vessel.sessions.save(s.saveName().trim());
11737
11903
  s.setSaveName("");
@@ -11748,25 +11914,25 @@ const SettingsAccount = (props) => {
11748
11914
  });
11749
11915
  }
11750
11916
  };
11751
- insert(_el$1, createComponent(Show, {
11917
+ insert(_el$18, createComponent(Show, {
11752
11918
  get when() {
11753
11919
  return s.list().length > 0;
11754
11920
  },
11755
11921
  get children() {
11756
- var _el$15 = _tmpl$2$4();
11757
- insert(_el$15, createComponent(For, {
11922
+ var _el$24 = _tmpl$3$3();
11923
+ insert(_el$24, createComponent(For, {
11758
11924
  get each() {
11759
11925
  return s.list();
11760
11926
  },
11761
11927
  children: (session) => (() => {
11762
- var _el$28 = _tmpl$8$1(), _el$29 = _el$28.firstChild, _el$30 = _el$29.firstChild, _el$31 = _el$30.nextSibling, _el$32 = _el$31.firstChild, _el$38 = _el$32.nextSibling, _el$34 = _el$38.nextSibling, _el$39 = _el$34.nextSibling;
11763
- _el$39.nextSibling;
11764
- var _el$40 = _el$29.nextSibling, _el$41 = _el$40.firstChild, _el$42 = _el$41.nextSibling;
11765
- insert(_el$30, () => session.name);
11766
- insert(_el$31, () => new Date(session.updatedAt).toLocaleDateString(), _el$32);
11767
- insert(_el$31, () => session.cookieCount, _el$38);
11768
- insert(_el$31, () => session.domains.length, _el$39);
11769
- _el$41.$$click = async () => {
11928
+ var _el$38 = _tmpl$9(), _el$39 = _el$38.firstChild, _el$40 = _el$39.firstChild, _el$41 = _el$40.nextSibling, _el$42 = _el$41.firstChild, _el$48 = _el$42.nextSibling, _el$44 = _el$48.nextSibling, _el$49 = _el$44.nextSibling;
11929
+ _el$49.nextSibling;
11930
+ var _el$50 = _el$39.nextSibling, _el$51 = _el$50.firstChild, _el$52 = _el$51.nextSibling;
11931
+ insert(_el$40, () => session.name);
11932
+ insert(_el$41, () => new Date(session.updatedAt).toLocaleDateString(), _el$42);
11933
+ insert(_el$41, () => session.cookieCount, _el$48);
11934
+ insert(_el$41, () => session.domains.length, _el$49);
11935
+ _el$51.$$click = async () => {
11770
11936
  try {
11771
11937
  await window.vessel.sessions.load(session.name);
11772
11938
  props.setStatus({
@@ -11781,18 +11947,18 @@ const SettingsAccount = (props) => {
11781
11947
  });
11782
11948
  }
11783
11949
  };
11784
- _el$42.$$click = async () => {
11950
+ _el$52.$$click = async () => {
11785
11951
  await window.vessel.sessions.delete(session.name);
11786
11952
  await s.loadList();
11787
11953
  };
11788
- return _el$28;
11954
+ return _el$38;
11789
11955
  })()
11790
11956
  }));
11791
- return _el$15;
11957
+ return _el$24;
11792
11958
  }
11793
11959
  }), null);
11794
- createRenderEffect(() => _el$14.disabled = !s.saveName().trim());
11795
- createRenderEffect(() => _el$13.value = s.saveName());
11960
+ createRenderEffect(() => _el$23.disabled = !s.saveName().trim());
11961
+ createRenderEffect(() => _el$22.value = s.saveName());
11796
11962
  return _el$;
11797
11963
  })();
11798
11964
  };
@@ -12084,6 +12250,10 @@ var _tmpl$$3 = /* @__PURE__ */ template(`<div class=settings-compact-upsell><spa
12084
12250
  box-sizing: border-box;
12085
12251
  line-height: 1.5;
12086
12252
  }
12253
+ .settings-feedback-textarea {
12254
+ margin-top: 8px;
12255
+ min-height: 96px;
12256
+ }
12087
12257
  .settings-input:focus,
12088
12258
  .settings-textarea:focus {
12089
12259
  outline: none;