@quanta-intellect/vessel-browser 0.1.13 → 0.1.15

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.
@@ -703,10 +703,10 @@ function cleanChildren(parent, current, marker, replacement) {
703
703
  } else parent.insertBefore(node, marker);
704
704
  return [node];
705
705
  }
706
- var _tmpl$$a = /* @__PURE__ */ template(`<div class=title-bar><div class=title-bar-drag></div><div class=window-controls><button class=window-btn data-tooltip=Minimize><svg width=10 height=10 viewBox="0 0 10 10"><rect x=1 y=5 width=8 height=1 fill=currentColor></rect></svg></button><button class=window-btn data-tooltip=Maximize><svg width=10 height=10 viewBox="0 0 10 10"><rect x=1 y=1 width=8 height=8 fill=none stroke=currentColor stroke-width=1></rect></svg></button><button class="window-btn window-btn-close"data-tooltip=Close><svg width=10 height=10 viewBox="0 0 10 10"><line x1=1 y1=1 x2=9 y2=9 stroke=currentColor stroke-width=1.2></line><line x1=9 y1=1 x2=1 y2=9 stroke=currentColor stroke-width=1.2>`);
706
+ var _tmpl$$b = /* @__PURE__ */ template(`<div class=title-bar><div class=title-bar-drag></div><div class=window-controls><button class=window-btn data-tooltip=Minimize><svg width=10 height=10 viewBox="0 0 10 10"><rect x=1 y=5 width=8 height=1 fill=currentColor></rect></svg></button><button class=window-btn data-tooltip=Maximize><svg width=10 height=10 viewBox="0 0 10 10"><rect x=1 y=1 width=8 height=8 fill=none stroke=currentColor stroke-width=1></rect></svg></button><button class="window-btn window-btn-close"data-tooltip=Close><svg width=10 height=10 viewBox="0 0 10 10"><line x1=1 y1=1 x2=9 y2=9 stroke=currentColor stroke-width=1.2></line><line x1=9 y1=1 x2=1 y2=9 stroke=currentColor stroke-width=1.2>`);
707
707
  const TitleBar = () => {
708
708
  return (() => {
709
- var _el$ = _tmpl$$a(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling;
709
+ var _el$ = _tmpl$$b(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling;
710
710
  _el$4.$$click = () => window.vessel.window.minimize();
711
711
  _el$5.$$click = () => window.vessel.window.maximize();
712
712
  _el$6.$$click = () => window.vessel.window.close();
@@ -905,7 +905,7 @@ function getAgentPresence(state, currentTime = Date.now()) {
905
905
  }
906
906
  return "idle";
907
907
  }
908
- var _tmpl$$9 = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$8 = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$5 = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list><button class=tab-new data-tooltip="New Tab">+`), _tmpl$4$4 = /* @__PURE__ */ template(`<div role=tab><span class=tab-title></span><button class=tab-close>×`), _tmpl$5$3 = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$6$3 = /* @__PURE__ */ template(`<span class=tab-loading>`);
908
+ var _tmpl$$a = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$9 = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$6 = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list><button class=tab-new data-tooltip="New Tab">+`), _tmpl$4$5 = /* @__PURE__ */ template(`<div role=tab><span class=tab-title></span><button class=tab-close>×`), _tmpl$5$3 = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$6$3 = /* @__PURE__ */ template(`<span class=tab-loading>`);
909
909
  function stringToHue(str) {
910
910
  let hash = 0;
911
911
  for (let i = 0; i < str.length; i++) {
@@ -931,14 +931,14 @@ const TabFavicon = (props) => {
931
931
  },
932
932
  get fallback() {
933
933
  return (() => {
934
- var _el$2 = _tmpl$2$8();
934
+ var _el$2 = _tmpl$2$9();
935
935
  insert(_el$2, letter);
936
936
  createRenderEffect((_$p) => setStyleProperty(_el$2, "--favicon-hue", `${hue()}`));
937
937
  return _el$2;
938
938
  })();
939
939
  },
940
940
  get children() {
941
- var _el$ = _tmpl$$9();
941
+ var _el$ = _tmpl$$a();
942
942
  _el$.addEventListener("error", () => setFailed(true));
943
943
  createRenderEffect(() => setAttribute(_el$, "src", props.favicon));
944
944
  return _el$;
@@ -961,13 +961,13 @@ const TabBar = () => {
961
961
  onCleanup(() => clearInterval(ticker));
962
962
  const modelActiveTabIds = createMemo(() => getAgentActiveTabIds(runtimeState2(), now()));
963
963
  return (() => {
964
- var _el$3 = _tmpl$3$5(), _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild;
964
+ var _el$3 = _tmpl$3$6(), _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild;
965
965
  insert(_el$4, createComponent(For, {
966
966
  get each() {
967
967
  return tabs2();
968
968
  },
969
969
  children: (tab) => (() => {
970
- var _el$6 = _tmpl$4$4(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
970
+ var _el$6 = _tmpl$4$5(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
971
971
  _el$6.addEventListener("auxclick", (e) => {
972
972
  if (e.button === 1) closeTab(tab.id);
973
973
  });
@@ -1094,7 +1094,7 @@ function useUI() {
1094
1094
  }
1095
1095
  };
1096
1096
  }
1097
- var _tmpl$$8 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$2$7 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"></form><div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text></span></div></div><div class=toolbar-actions><button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1></line></svg></button><button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round></line></svg></button><button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2></line></svg></button><button class=nav-btn data-tooltip=Settings><svg width=14 height=14 viewBox="0 0 14 14"><circle cx=7 cy=7 r=2 fill=none stroke=currentColor stroke-width=1.2></circle><path d="M7 1v2M7 11v2M1 7h2M11 7h2M2.8 2.8l1.4 1.4M9.8 9.8l1.4 1.4M11.2 2.8l-1.4 1.4M4.2 9.8l-1.4 1.4"stroke=currentColor stroke-width=1 stroke-linecap=round>`);
1097
+ var _tmpl$$9 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$2$8 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"></form><div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text></span></div></div><div class=toolbar-actions><button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1></line></svg></button><button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round></line></svg></button><button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2></line></svg></button><button class=nav-btn data-tooltip=Settings><svg width=14 height=14 viewBox="0 0 14 14"><circle cx=7 cy=7 r=2 fill=none stroke=currentColor stroke-width=1.2></circle><path d="M7 1v2M7 11v2M1 7h2M11 7h2M2.8 2.8l1.4 1.4M9.8 9.8l1.4 1.4M11.2 2.8l-1.4 1.4M4.2 9.8l-1.4 1.4"stroke=currentColor stroke-width=1 stroke-linecap=round>`);
1098
1098
  const AddressBar = () => {
1099
1099
  const {
1100
1100
  activeTab,
@@ -1135,7 +1135,7 @@ const AddressBar = () => {
1135
1135
  }
1136
1136
  };
1137
1137
  return (() => {
1138
- var _el$ = _tmpl$2$7(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$2.nextSibling, _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild, _el$9 = _el$7.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$10 = _el$6.nextSibling, _el$11 = _el$10.firstChild, _el$12 = _el$11.nextSibling, _el$13 = _el$12.nextSibling;
1138
+ var _el$ = _tmpl$2$8(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$2.nextSibling, _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild, _el$9 = _el$7.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$10 = _el$6.nextSibling, _el$11 = _el$10.firstChild, _el$12 = _el$11.nextSibling, _el$13 = _el$12.nextSibling;
1139
1139
  _el$13.firstChild;
1140
1140
  var _el$16 = _el$13.nextSibling;
1141
1141
  addEventListener(_el$3, "click", goBack);
@@ -1156,7 +1156,7 @@ const AddressBar = () => {
1156
1156
  return pendingApprovalCount() > 0;
1157
1157
  },
1158
1158
  get children() {
1159
- var _el$15 = _tmpl$$8();
1159
+ var _el$15 = _tmpl$$9();
1160
1160
  insert(_el$15, pendingApprovalCount);
1161
1161
  createRenderEffect(() => setAttribute(_el$15, "aria-label", `${pendingApprovalCount()} pending`));
1162
1162
  return _el$15;
@@ -1189,7 +1189,7 @@ const AddressBar = () => {
1189
1189
  })();
1190
1190
  };
1191
1191
  delegateEvents(["click", "input"]);
1192
- var _tmpl$$7 = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite aria-atomic=true>`), _tmpl$2$6 = /* @__PURE__ */ template(`<div class=bookmark-toast role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
1192
+ var _tmpl$$8 = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite aria-atomic=true>`), _tmpl$2$7 = /* @__PURE__ */ template(`<div class=bookmark-toast role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
1193
1193
  const TOAST_DURATION_MS$1 = 4200;
1194
1194
  const TOAST_EXIT_MS$1 = 300;
1195
1195
  function isBookmarkToastCandidate(action) {
@@ -1249,13 +1249,13 @@ const BookmarkNotifications = () => {
1249
1249
  timeoutIds.clear();
1250
1250
  });
1251
1251
  return (() => {
1252
- var _el$ = _tmpl$$7();
1252
+ var _el$ = _tmpl$$8();
1253
1253
  insert(_el$, createComponent(For, {
1254
1254
  get each() {
1255
1255
  return toasts();
1256
1256
  },
1257
1257
  children: (toast) => (() => {
1258
- var _el$2 = _tmpl$2$6(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
1258
+ var _el$2 = _tmpl$2$7(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
1259
1259
  insert(_el$3, () => toast.title);
1260
1260
  insert(_el$4, () => toast.message);
1261
1261
  createRenderEffect(() => _el$2.classList.toggle("bookmark-toast-leaving", !!toast.leaving));
@@ -1265,7 +1265,7 @@ const BookmarkNotifications = () => {
1265
1265
  return _el$;
1266
1266
  })();
1267
1267
  };
1268
- var _tmpl$$6 = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite><div class="bookmark-toast highlight-toast"role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
1268
+ var _tmpl$$7 = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite><div class="bookmark-toast highlight-toast"role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
1269
1269
  const TOAST_DURATION_MS = 3e3;
1270
1270
  const TOAST_EXIT_MS = 300;
1271
1271
  const HighlightNotifications = (props) => {
@@ -1304,7 +1304,7 @@ const HighlightNotifications = (props) => {
1304
1304
  return memo(() => !!visible())() && current();
1305
1305
  },
1306
1306
  get children() {
1307
- var _el$ = _tmpl$$6(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
1307
+ var _el$ = _tmpl$$7(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
1308
1308
  insert(_el$3, () => current().title);
1309
1309
  insert(_el$4, () => current().message);
1310
1310
  createRenderEffect(() => _el$2.classList.toggle("bookmark-toast-leaving", !!leaving()));
@@ -1330,7 +1330,7 @@ function useScrollFade(el) {
1330
1330
  observer.disconnect();
1331
1331
  });
1332
1332
  }
1333
- var _tmpl$$5 = /* @__PURE__ */ template(`<span class=agent-transcript-live><span class=agent-transcript-live-dot aria-hidden=true></span>Live`), _tmpl$2$5 = /* @__PURE__ */ template(`<div class=agent-transcript-list>`), _tmpl$3$4 = /* @__PURE__ */ template(`<aside class=agent-transcript-dock><div class=agent-transcript-header><div class=agent-transcript-title-row><span class=agent-transcript-title>Agent Transcript</span></div><div class=agent-transcript-actions><button class=agent-transcript-icon></button><button class=agent-transcript-icon data-tooltip=Hide>×`), _tmpl$4$3 = /* @__PURE__ */ template(`<article><div class=agent-transcript-meta><span class=agent-transcript-badge></span><span class=agent-transcript-time></span></div><div class=agent-transcript-text>`);
1333
+ var _tmpl$$6 = /* @__PURE__ */ template(`<span class=agent-transcript-live><span class=agent-transcript-live-dot aria-hidden=true></span>Live`), _tmpl$2$6 = /* @__PURE__ */ template(`<div class=agent-transcript-list>`), _tmpl$3$5 = /* @__PURE__ */ template(`<aside class=agent-transcript-dock><div class=agent-transcript-header><div class=agent-transcript-title-row><span class=agent-transcript-title>Agent Transcript</span></div><div class=agent-transcript-actions><button class=agent-transcript-icon></button><button class=agent-transcript-icon data-tooltip=Hide>×`), _tmpl$4$4 = /* @__PURE__ */ template(`<article><div class=agent-transcript-meta><span class=agent-transcript-badge></span><span class=agent-transcript-time></span></div><div class=agent-transcript-text>`);
1334
1334
  const AgentTranscriptDock = () => {
1335
1335
  const {
1336
1336
  runtimeState: runtimeState2
@@ -1365,7 +1365,7 @@ const AgentTranscriptDock = () => {
1365
1365
  return memo(() => mode() === "full")() && visibleEntries().length > 0;
1366
1366
  },
1367
1367
  get children() {
1368
- var _el$ = _tmpl$3$4(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
1368
+ var _el$ = _tmpl$3$5(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
1369
1369
  _el$3.firstChild;
1370
1370
  var _el$6 = _el$3.nextSibling, _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
1371
1371
  insert(_el$3, createComponent(Show, {
@@ -1373,7 +1373,7 @@ const AgentTranscriptDock = () => {
1373
1373
  return hasStreamingEntry();
1374
1374
  },
1375
1375
  get children() {
1376
- return _tmpl$$5();
1376
+ return _tmpl$$6();
1377
1377
  }
1378
1378
  }), null);
1379
1379
  _el$7.$$click = () => setCollapsed((value) => !value);
@@ -1384,14 +1384,14 @@ const AgentTranscriptDock = () => {
1384
1384
  return !collapsed();
1385
1385
  },
1386
1386
  get children() {
1387
- var _el$9 = _tmpl$2$5();
1387
+ var _el$9 = _tmpl$2$6();
1388
1388
  use((el) => useScrollFade(el), _el$9);
1389
1389
  insert(_el$9, createComponent(For, {
1390
1390
  get each() {
1391
1391
  return visibleEntries();
1392
1392
  },
1393
1393
  children: (entry) => (() => {
1394
- var _el$0 = _tmpl$4$3(), _el$1 = _el$0.firstChild, _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling, _el$12 = _el$1.nextSibling;
1394
+ var _el$0 = _tmpl$4$4(), _el$1 = _el$0.firstChild, _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling, _el$12 = _el$1.nextSibling;
1395
1395
  insert(_el$10, () => entry.title || entry.kind);
1396
1396
  insert(_el$11, () => formatTime2(entry.updatedAt));
1397
1397
  insert(_el$12, () => entry.text);
@@ -1425,6 +1425,7 @@ const AgentTranscriptDock = () => {
1425
1425
  };
1426
1426
  delegateEvents(["click"]);
1427
1427
  const MAX_RECENT_QUERIES = 5;
1428
+ const MAX_MESSAGE_HISTORY = 200;
1428
1429
  const [messages, setMessages] = createSignal([]);
1429
1430
  const [streamingText, setStreamingText] = createSignal("");
1430
1431
  const [isStreaming, setIsStreaming] = createSignal(false);
@@ -1436,7 +1437,10 @@ function init$1() {
1436
1437
  if (initialized$1) return;
1437
1438
  initialized$1 = true;
1438
1439
  window.vessel.ai.onStreamStart((prompt) => {
1439
- setMessages((prev) => [...prev, { role: "user", content: prompt }]);
1440
+ setMessages((prev) => {
1441
+ const next = [...prev, { role: "user", content: prompt }];
1442
+ return next.length > MAX_MESSAGE_HISTORY ? next.slice(-MAX_MESSAGE_HISTORY) : next;
1443
+ });
1440
1444
  setStreamingText("");
1441
1445
  setIsStreaming(true);
1442
1446
  setHasFirstChunk(false);
@@ -1451,10 +1455,10 @@ function init$1() {
1451
1455
  window.vessel.ai.onStreamEnd(() => {
1452
1456
  const finalText = streamingText();
1453
1457
  if (finalText) {
1454
- setMessages((prev) => [
1455
- ...prev,
1456
- { role: "assistant", content: finalText }
1457
- ]);
1458
+ setMessages((prev) => {
1459
+ const next = [...prev, { role: "assistant", content: finalText }];
1460
+ return next.length > MAX_MESSAGE_HISTORY ? next.slice(-MAX_MESSAGE_HISTORY) : next;
1461
+ });
1458
1462
  }
1459
1463
  setStreamingText("");
1460
1464
  setIsStreaming(false);
@@ -1482,7 +1486,7 @@ function useAI() {
1482
1486
  clearHistory: () => setMessages([])
1483
1487
  };
1484
1488
  }
1485
- var _tmpl$$4 = /* @__PURE__ */ template(`<div class=command-bar-recent><span class=command-bar-recent-label>Recent</span><div class=command-bar-recent-list>`), _tmpl$2$4 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=command-bar><form><div class=command-bar-icon><svg width=16 height=16 viewBox="0 0 16 16"><circle cx=8 cy=8 r=6 fill=none stroke=var(--accent-primary) stroke-width=1.5></circle><circle cx=6 cy=7 r=0.8 fill=var(--accent-primary)></circle><circle cx=10 cy=7 r=0.8 fill=var(--accent-primary)></circle><path d="M6 10c0.5 0.8 3.5 0.8 4 0"fill=none stroke=var(--accent-primary) stroke-width=0.8 stroke-linecap=round></path></svg></div><input class=command-bar-input type=text placeholder="Ask about this page, summarize, or search..."></form><div class=command-bar-hints><span><kbd>Enter</kbd> to ask</span><span><kbd>Esc</kbd> to close</span><span>Try "summarize" or ask a question`), _tmpl$3$3 = /* @__PURE__ */ template(`<button class=command-bar-recent-item type=button>`);
1489
+ var _tmpl$$5 = /* @__PURE__ */ template(`<div class=command-bar-recent><span class=command-bar-recent-label>Recent</span><div class=command-bar-recent-list>`), _tmpl$2$5 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=command-bar><form><div class=command-bar-icon><svg width=16 height=16 viewBox="0 0 16 16"><circle cx=8 cy=8 r=6 fill=none stroke=var(--accent-primary) stroke-width=1.5></circle><circle cx=6 cy=7 r=0.8 fill=var(--accent-primary)></circle><circle cx=10 cy=7 r=0.8 fill=var(--accent-primary)></circle><path d="M6 10c0.5 0.8 3.5 0.8 4 0"fill=none stroke=var(--accent-primary) stroke-width=0.8 stroke-linecap=round></path></svg></div><input class=command-bar-input type=text placeholder="Ask about this page, summarize, or search..."></form><div class=command-bar-hints><span><kbd>Enter</kbd> to ask</span><span><kbd>Esc</kbd> to close</span><span>Try "summarize" or ask a question`), _tmpl$3$4 = /* @__PURE__ */ template(`<button class=command-bar-recent-item type=button>`);
1486
1490
  const CommandBar = () => {
1487
1491
  const {
1488
1492
  commandBarOpen: commandBarOpen2,
@@ -1527,7 +1531,7 @@ const CommandBar = () => {
1527
1531
  return commandBarOpen2();
1528
1532
  },
1529
1533
  get children() {
1530
- var _el$ = _tmpl$2$4(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$9 = _el$3.nextSibling;
1534
+ var _el$ = _tmpl$2$5(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$9 = _el$3.nextSibling;
1531
1535
  addEventListener(_el$, "click", closeCommandBar);
1532
1536
  _el$2.$$click = (e) => e.stopPropagation();
1533
1537
  _el$3.addEventListener("submit", handleSubmit);
@@ -1540,13 +1544,13 @@ const CommandBar = () => {
1540
1544
  return memo(() => recentQueries2().length > 0)() && !input().trim();
1541
1545
  },
1542
1546
  get children() {
1543
- var _el$6 = _tmpl$$4(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
1547
+ var _el$6 = _tmpl$$5(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
1544
1548
  insert(_el$8, createComponent(For, {
1545
1549
  get each() {
1546
1550
  return recentQueries2();
1547
1551
  },
1548
1552
  children: (q) => (() => {
1549
- var _el$0 = _tmpl$3$3();
1553
+ var _el$0 = _tmpl$3$4();
1550
1554
  _el$0.$$click = () => void handleRecentClick(q);
1551
1555
  insert(_el$0, q);
1552
1556
  return _el$0;
@@ -2805,15 +2809,15 @@ function isTableBlock(text2) {
2805
2809
  const lines = text2.split("\n").filter((l) => l.trim());
2806
2810
  if (lines.length < 2) return false;
2807
2811
  const hasPipes = lines.every((l) => l.trim().includes("|"));
2808
- const hasSeparator = lines.some((l) => /^\|?\s*[-:]+[-|\s:]*$/.test(l.trim()));
2812
+ const hasSeparator = lines.some(
2813
+ (l) => /^\|?\s*[-:]+[-|\s:]*$/.test(l.trim())
2814
+ );
2809
2815
  return hasPipes && hasSeparator;
2810
2816
  }
2811
2817
  function renderTable(block) {
2812
2818
  const lines = block.split("\n").map((l) => l.trim()).filter(Boolean);
2813
2819
  const parseRow = (line) => line.replace(/^\|/, "").replace(/\|$/, "").split("|").map((cell) => cell.trim());
2814
- const sepIndex = lines.findIndex(
2815
- (l) => /^\|?\s*[-:]+[-|\s:]*$/.test(l)
2816
- );
2820
+ const sepIndex = lines.findIndex((l) => /^\|?\s*[-:]+[-|\s:]*$/.test(l));
2817
2821
  const headerRows = sepIndex > 0 ? lines.slice(0, sepIndex) : [lines[0]];
2818
2822
  const bodyRows = lines.slice(sepIndex + 1);
2819
2823
  const sepCells = sepIndex >= 0 ? parseRow(lines[sepIndex]) : [];
@@ -2828,10 +2832,14 @@ function renderTable(block) {
2828
2832
  return align && align !== "left" ? ` style="text-align:${align}"` : "";
2829
2833
  };
2830
2834
  const thead = headerRows.map(
2831
- (row) => `<tr>${parseRow(row).map((cell, i) => `<th${alignAttr(i)}>${applyInlineMarkdown(cell)}</th>`).join("")}</tr>`
2835
+ (row) => `<tr>${parseRow(row).map(
2836
+ (cell, i) => `<th${alignAttr(i)}>${applyInlineMarkdown(cell)}</th>`
2837
+ ).join("")}</tr>`
2832
2838
  ).join("");
2833
2839
  const tbody = bodyRows.map(
2834
- (row) => `<tr>${parseRow(row).map((cell, i) => `<td${alignAttr(i)}>${applyInlineMarkdown(cell)}</td>`).join("")}</tr>`
2840
+ (row) => `<tr>${parseRow(row).map(
2841
+ (cell, i) => `<td${alignAttr(i)}>${applyInlineMarkdown(cell)}</td>`
2842
+ ).join("")}</tr>`
2835
2843
  ).join("");
2836
2844
  return `<table><thead>${thead}</thead><tbody>${tbody}</tbody></table>`;
2837
2845
  }
@@ -2877,9 +2885,11 @@ function renderBlock(block) {
2877
2885
  const tableBlock = tableEndIdx > 0 ? tableLines.slice(0, tableEndIdx).join("\n") : tableLines.join("\n");
2878
2886
  const afterTable = tableEndIdx > 0 ? tableLines.slice(tableEndIdx).join("\n").trim() : "";
2879
2887
  let result = "";
2880
- if (beforeTable) result += `<p>${applyInlineMarkdown(beforeTable).replace(/\n/g, "<br>")}</p>`;
2888
+ if (beforeTable)
2889
+ result += `<p>${applyInlineMarkdown(beforeTable).replace(/\n/g, "<br>")}</p>`;
2881
2890
  result += renderTable(tableBlock);
2882
- if (afterTable) result += `<p>${applyInlineMarkdown(afterTable).replace(/\n/g, "<br>")}</p>`;
2891
+ if (afterTable)
2892
+ result += `<p>${applyInlineMarkdown(afterTable).replace(/\n/g, "<br>")}</p>`;
2883
2893
  return result;
2884
2894
  }
2885
2895
  if (trimmed.split("\n").every((line) => /^[-*+]\s+/.test(line))) {
@@ -2916,6 +2926,7 @@ const TOOL_ICONS = {
2916
2926
  flow_status: "◈",
2917
2927
  flow_end: "■",
2918
2928
  dismiss_popup: "✕",
2929
+ clear_overlays: "✕",
2919
2930
  wait_for: "◴",
2920
2931
  create_tab: "+",
2921
2932
  switch_tab: "⇥",
@@ -3059,21 +3070,7 @@ function getBookmarkSearchMatch(args) {
3059
3070
  }
3060
3071
  return { matchedFields, score };
3061
3072
  }
3062
- const vesselLogo = "" + new URL("vessel-logo-transparent-IT25qr-Z.png", import.meta.url).href;
3063
- var _tmpl$$3 = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$3 = /* @__PURE__ */ template(`<div class=dropdown-select-menu role=listbox>`), _tmpl$3$2 = /* @__PURE__ */ template(`<div><button class=dropdown-select-trigger type=button aria-haspopup=listbox><span class=dropdown-select-value></span><span class=dropdown-select-caret aria-hidden=true>▾`), _tmpl$4$2 = /* @__PURE__ */ template(`<span class=dropdown-select-option-description>`), _tmpl$5$2 = /* @__PURE__ */ template(`<button class=dropdown-select-option type=button role=option><span class=dropdown-select-option-copy><span class=dropdown-select-option-label>`), _tmpl$6$2 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$7$2 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$8$2 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$9$2 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$0$2 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$1$2 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2>`), _tmpl$10$2 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$11$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$12$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$13$1 = /* @__PURE__ */ template(`<span>`), _tmpl$14$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$15 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$16 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$17 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$18 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$19 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$20 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$21 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2 placeholder="Ask anything..."></textarea><button class=sidebar-send>Send`), _tmpl$22 = /* @__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></div><div class=sidebar-messages><div>`), _tmpl$23 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$24 = /* @__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$25 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$26 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$27 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$28 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$29 = /* @__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$30 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$31 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$32 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$33 = /* @__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$34 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$35 = /* @__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$36 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$37 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$38 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$39 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$40 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$41 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$42 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><button class=agent-control-button type=button>Restore`), _tmpl$43 = /* @__PURE__ */ template(`<div>`), _tmpl$44 = /* @__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$45 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$46 = /* @__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`);
3064
- const UNSORTED_FOLDER = {
3065
- id: "unsorted",
3066
- name: "Unsorted",
3067
- createdAt: ""
3068
- };
3069
- const MarkdownMessage = (props) => {
3070
- const html2 = createMemo(() => renderMarkdown(props.content));
3071
- return (() => {
3072
- var _el$ = _tmpl$$3();
3073
- createRenderEffect(() => _el$.innerHTML = html2());
3074
- return _el$;
3075
- })();
3076
- };
3073
+ var _tmpl$$4 = /* @__PURE__ */ template(`<div class=dropdown-select-menu role=listbox>`), _tmpl$2$4 = /* @__PURE__ */ template(`<div><button class=dropdown-select-trigger type=button aria-haspopup=listbox><span class=dropdown-select-value></span><span class=dropdown-select-caret aria-hidden=true>▾`), _tmpl$3$3 = /* @__PURE__ */ template(`<span class=dropdown-select-option-description>`), _tmpl$4$3 = /* @__PURE__ */ template(`<button class=dropdown-select-option type=button role=option><span class=dropdown-select-option-copy><span class=dropdown-select-option-label>`);
3077
3074
  const DropdownSelect = (props) => {
3078
3075
  const [open, setOpen] = createSignal(false);
3079
3076
  let rootRef;
@@ -3097,59 +3094,59 @@ const DropdownSelect = (props) => {
3097
3094
  });
3098
3095
  });
3099
3096
  return (() => {
3100
- var _el$2 = _tmpl$3$2(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling;
3097
+ var _el$ = _tmpl$2$4(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
3101
3098
  var _ref$ = rootRef;
3102
- typeof _ref$ === "function" ? use(_ref$, _el$2) : rootRef = _el$2;
3103
- _el$3.$$click = () => setOpen((current) => !current);
3104
- insert(_el$4, selectedLabel);
3105
- insert(_el$2, createComponent(Show, {
3099
+ typeof _ref$ === "function" ? use(_ref$, _el$) : rootRef = _el$;
3100
+ _el$2.$$click = () => setOpen((current) => !current);
3101
+ insert(_el$3, selectedLabel);
3102
+ insert(_el$, createComponent(Show, {
3106
3103
  get when() {
3107
3104
  return open();
3108
3105
  },
3109
3106
  get children() {
3110
- var _el$6 = _tmpl$2$3();
3111
- insert(_el$6, createComponent(For, {
3107
+ var _el$5 = _tmpl$$4();
3108
+ insert(_el$5, createComponent(For, {
3112
3109
  get each() {
3113
3110
  return props.options;
3114
3111
  },
3115
3112
  children: (option) => (() => {
3116
- var _el$7 = _tmpl$5$2(), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild;
3117
- _el$7.$$click = () => {
3113
+ var _el$6 = _tmpl$4$3(), _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild;
3114
+ _el$6.$$click = () => {
3118
3115
  props.onChange(option.value);
3119
3116
  setOpen(false);
3120
3117
  };
3121
- insert(_el$9, () => option.label);
3122
- insert(_el$8, createComponent(Show, {
3118
+ insert(_el$8, () => option.label);
3119
+ insert(_el$7, createComponent(Show, {
3123
3120
  get when() {
3124
3121
  return option.description;
3125
3122
  },
3126
3123
  get children() {
3127
- var _el$0 = _tmpl$4$2();
3128
- insert(_el$0, () => option.description);
3129
- return _el$0;
3124
+ var _el$9 = _tmpl$3$3();
3125
+ insert(_el$9, () => option.description);
3126
+ return _el$9;
3130
3127
  }
3131
3128
  }), null);
3132
3129
  createRenderEffect((_p$) => {
3133
3130
  var _v$5 = !!(option.value === props.value), _v$6 = option.value === props.value;
3134
- _v$5 !== _p$.e && _el$7.classList.toggle("selected", _p$.e = _v$5);
3135
- _v$6 !== _p$.t && setAttribute(_el$7, "aria-selected", _p$.t = _v$6);
3131
+ _v$5 !== _p$.e && _el$6.classList.toggle("selected", _p$.e = _v$5);
3132
+ _v$6 !== _p$.t && setAttribute(_el$6, "aria-selected", _p$.t = _v$6);
3136
3133
  return _p$;
3137
3134
  }, {
3138
3135
  e: void 0,
3139
3136
  t: void 0
3140
3137
  });
3141
- return _el$7;
3138
+ return _el$6;
3142
3139
  })()
3143
3140
  }));
3144
- return _el$6;
3141
+ return _el$5;
3145
3142
  }
3146
3143
  }), null);
3147
3144
  createRenderEffect((_p$) => {
3148
3145
  var _v$ = `dropdown-select ${props.class || ""}`, _v$2 = open(), _v$3 = props.ariaLabel, _v$4 = !!open();
3149
- _v$ !== _p$.e && className(_el$2, _p$.e = _v$);
3150
- _v$2 !== _p$.t && setAttribute(_el$3, "aria-expanded", _p$.t = _v$2);
3151
- _v$3 !== _p$.a && setAttribute(_el$3, "aria-label", _p$.a = _v$3);
3152
- _v$4 !== _p$.o && _el$5.classList.toggle("open", _p$.o = _v$4);
3146
+ _v$ !== _p$.e && className(_el$, _p$.e = _v$);
3147
+ _v$2 !== _p$.t && setAttribute(_el$2, "aria-expanded", _p$.t = _v$2);
3148
+ _v$3 !== _p$.a && setAttribute(_el$2, "aria-label", _p$.a = _v$3);
3149
+ _v$4 !== _p$.o && _el$4.classList.toggle("open", _p$.o = _v$4);
3153
3150
  return _p$;
3154
3151
  }, {
3155
3152
  e: void 0,
@@ -3157,7 +3154,23 @@ const DropdownSelect = (props) => {
3157
3154
  a: void 0,
3158
3155
  o: void 0
3159
3156
  });
3160
- return _el$2;
3157
+ return _el$;
3158
+ })();
3159
+ };
3160
+ delegateEvents(["click"]);
3161
+ const vesselLogo = "" + new URL("vessel-logo-transparent-IT25qr-Z.png", import.meta.url).href;
3162
+ var _tmpl$$3 = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$3 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$3$2 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$4$2 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$5$2 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$6$2 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$7$2 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2>`), _tmpl$8$2 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$9$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$0$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$1$2 = /* @__PURE__ */ template(`<span>`), _tmpl$10$2 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$11$2 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$12$2 = /* @__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$13$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$14$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$15 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$16 = /* @__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$17 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2 placeholder="Ask anything..."></textarea><button class=sidebar-send>Send`), _tmpl$18 = /* @__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></div><div class=sidebar-messages><div>`), _tmpl$19 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$20 = /* @__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$21 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$22 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$23 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$24 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$25 = /* @__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$26 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$27 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$28 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$29 = /* @__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$30 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$31 = /* @__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$32 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$33 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$34 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$35 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$36 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$37 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$38 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><button class=agent-control-button type=button>Restore`), _tmpl$39 = /* @__PURE__ */ template(`<div>`), _tmpl$40 = /* @__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$41 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$42 = /* @__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`);
3163
+ const UNSORTED_FOLDER = {
3164
+ id: "unsorted",
3165
+ name: "Unsorted",
3166
+ createdAt: ""
3167
+ };
3168
+ const MarkdownMessage = (props) => {
3169
+ const html2 = createMemo(() => renderMarkdown(props.content));
3170
+ return (() => {
3171
+ var _el$ = _tmpl$$3();
3172
+ createRenderEffect(() => _el$.innerHTML = html2());
3173
+ return _el$;
3161
3174
  })();
3162
3175
  };
3163
3176
  const Sidebar = (props) => {
@@ -3485,41 +3498,41 @@ ${contextBlock}` : contextBlock);
3485
3498
  return props.forceOpen || sidebarOpen2();
3486
3499
  },
3487
3500
  get children() {
3488
- var _el$1 = _tmpl$22(), _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling, _el$12 = _el$11.firstChild, _el$13 = _el$12.firstChild, _el$14 = _el$12.nextSibling, _el$15 = _el$14.firstChild, _el$16 = _el$15.nextSibling, _el$17 = _el$11.nextSibling, _el$18 = _el$17.firstChild;
3489
- _el$18.firstChild;
3490
- var _el$21 = _el$18.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$17.nextSibling, _el$81 = _el$24.firstChild;
3491
- _el$10.$$pointerdown = startResize;
3492
- setAttribute(_el$13, "src", vesselLogo);
3493
- addEventListener(_el$15, "click", clearHistory);
3494
- _el$16.$$click = () => void toggleSidebar();
3495
- _el$18.$$click = () => setSidebarTab("supervisor");
3496
- insert(_el$18, createComponent(Show, {
3501
+ var _el$2 = _tmpl$18(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.firstChild, _el$6 = _el$5.firstChild, _el$7 = _el$5.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling, _el$0 = _el$4.nextSibling, _el$1 = _el$0.firstChild;
3502
+ _el$1.firstChild;
3503
+ var _el$12 = _el$1.nextSibling, _el$13 = _el$12.nextSibling, _el$14 = _el$13.nextSibling, _el$15 = _el$0.nextSibling, _el$72 = _el$15.firstChild;
3504
+ _el$3.$$pointerdown = startResize;
3505
+ setAttribute(_el$6, "src", vesselLogo);
3506
+ addEventListener(_el$8, "click", clearHistory);
3507
+ _el$9.$$click = () => void toggleSidebar();
3508
+ _el$1.$$click = () => setSidebarTab("supervisor");
3509
+ insert(_el$1, createComponent(Show, {
3497
3510
  get when() {
3498
3511
  return runtimeState2().supervisor.pendingApprovals.length > 0;
3499
3512
  },
3500
3513
  get children() {
3501
- var _el$20 = _tmpl$6$2();
3502
- insert(_el$20, () => runtimeState2().supervisor.pendingApprovals.length);
3503
- return _el$20;
3514
+ var _el$11 = _tmpl$2$3();
3515
+ insert(_el$11, () => runtimeState2().supervisor.pendingApprovals.length);
3516
+ return _el$11;
3504
3517
  }
3505
3518
  }), null);
3506
- _el$21.$$click = () => setSidebarTab("bookmarks");
3507
- _el$22.$$click = () => setSidebarTab("checkpoints");
3508
- _el$23.$$click = () => setSidebarTab("chat");
3519
+ _el$12.$$click = () => setSidebarTab("bookmarks");
3520
+ _el$13.$$click = () => setSidebarTab("checkpoints");
3521
+ _el$14.$$click = () => setSidebarTab("chat");
3509
3522
  use((el) => {
3510
3523
  messagesContainerRef = el;
3511
3524
  useScrollFade(el);
3512
- }, _el$24);
3513
- insert(_el$24, createComponent(Show, {
3525
+ }, _el$15);
3526
+ insert(_el$15, createComponent(Show, {
3514
3527
  get when() {
3515
3528
  return sidebarTab() === "supervisor";
3516
3529
  },
3517
3530
  get children() {
3518
- var _el$25 = _tmpl$9$2(), _el$26 = _el$25.firstChild, _el$27 = _el$26.firstChild, _el$28 = _el$27.firstChild, _el$29 = _el$28.nextSibling, _el$30 = _el$27.nextSibling, _el$31 = _el$26.nextSibling, _el$32 = _el$31.firstChild, _el$33 = _el$32.nextSibling, _el$34 = _el$31.nextSibling, _el$36 = _el$34.nextSibling;
3519
- _el$36.firstChild;
3520
- insert(_el$29, () => runtimeState2().supervisor.paused ? "Agent is paused" : "Agent is live");
3521
- insert(_el$30, () => runtimeState2().supervisor.paused ? "Paused" : "Running");
3522
- insert(_el$31, createComponent(DropdownSelect, {
3531
+ var _el$16 = _tmpl$5$2(), _el$17 = _el$16.firstChild, _el$18 = _el$17.firstChild, _el$19 = _el$18.firstChild, _el$20 = _el$19.nextSibling, _el$21 = _el$18.nextSibling, _el$22 = _el$17.nextSibling, _el$23 = _el$22.firstChild, _el$24 = _el$23.nextSibling, _el$25 = _el$22.nextSibling, _el$27 = _el$25.nextSibling;
3532
+ _el$27.firstChild;
3533
+ insert(_el$20, () => runtimeState2().supervisor.paused ? "Agent is paused" : "Agent is live");
3534
+ insert(_el$21, () => runtimeState2().supervisor.paused ? "Paused" : "Running");
3535
+ insert(_el$22, createComponent(DropdownSelect, {
3523
3536
  "class": "agent-select",
3524
3537
  get value() {
3525
3538
  return runtimeState2().supervisor.approvalMode;
@@ -3529,55 +3542,55 @@ ${contextBlock}` : contextBlock);
3529
3542
  },
3530
3543
  ariaLabel: "Approval mode",
3531
3544
  onChange: (value) => void setApprovalMode(value)
3532
- }), _el$32);
3533
- _el$32.$$click = () => void (runtimeState2().supervisor.paused ? resume() : pause());
3534
- insert(_el$32, () => runtimeState2().supervisor.paused ? "Resume" : "Pause");
3535
- _el$33.$$click = () => void restoreSession();
3536
- insert(_el$34, approvalModeDescription);
3537
- insert(_el$25, createComponent(Show, {
3545
+ }), _el$23);
3546
+ _el$23.$$click = () => void (runtimeState2().supervisor.paused ? resume() : pause());
3547
+ insert(_el$23, () => runtimeState2().supervisor.paused ? "Resume" : "Pause");
3548
+ _el$24.$$click = () => void restoreSession();
3549
+ insert(_el$25, approvalModeDescription);
3550
+ insert(_el$16, createComponent(Show, {
3538
3551
  get when() {
3539
3552
  return runtimeState2().supervisor.pendingApprovals.length > 0;
3540
3553
  },
3541
3554
  get fallback() {
3542
- return _tmpl$23();
3555
+ return _tmpl$19();
3543
3556
  },
3544
3557
  get children() {
3545
- return [_tmpl$7$2(), createComponent(For, {
3558
+ return [_tmpl$3$2(), createComponent(For, {
3546
3559
  get each() {
3547
3560
  return runtimeState2().supervisor.pendingApprovals;
3548
3561
  },
3549
3562
  children: (approval) => (() => {
3550
- var _el$94 = _tmpl$24(), _el$95 = _el$94.firstChild, _el$96 = _el$95.nextSibling, _el$97 = _el$96.nextSibling, _el$98 = _el$97.nextSibling, _el$99 = _el$98.nextSibling, _el$100 = _el$99.firstChild, _el$101 = _el$100.nextSibling;
3551
- insert(_el$96, () => approval.name);
3552
- insert(_el$97, () => approval.argsSummary);
3553
- insert(_el$98, () => approval.reason);
3554
- _el$100.$$click = () => void resolveApproval(approval.id, true);
3555
- _el$101.$$click = () => void resolveApproval(approval.id, false);
3556
- return _el$94;
3563
+ var _el$85 = _tmpl$20(), _el$86 = _el$85.firstChild, _el$87 = _el$86.nextSibling, _el$88 = _el$87.nextSibling, _el$89 = _el$88.nextSibling, _el$90 = _el$89.nextSibling, _el$91 = _el$90.firstChild, _el$92 = _el$91.nextSibling;
3564
+ insert(_el$87, () => approval.name);
3565
+ insert(_el$88, () => approval.argsSummary);
3566
+ insert(_el$89, () => approval.reason);
3567
+ _el$91.$$click = () => void resolveApproval(approval.id, true);
3568
+ _el$92.$$click = () => void resolveApproval(approval.id, false);
3569
+ return _el$85;
3557
3570
  })()
3558
3571
  })];
3559
3572
  }
3560
- }), _el$36);
3561
- insert(_el$36, createComponent(Show, {
3573
+ }), _el$27);
3574
+ insert(_el$27, createComponent(Show, {
3562
3575
  get when() {
3563
3576
  return recentActions().length > 0;
3564
3577
  },
3565
3578
  get children() {
3566
- var _el$38 = _tmpl$8$2();
3567
- _el$38.$$click = () => setActionsExpanded((current) => !current);
3568
- insert(_el$38, (() => {
3579
+ var _el$29 = _tmpl$4$2();
3580
+ _el$29.$$click = () => setActionsExpanded((current) => !current);
3581
+ insert(_el$29, (() => {
3569
3582
  var _c$ = memo(() => !!actionsExpanded());
3570
3583
  return () => _c$() ? "Hide history" : `Show history (${recentActions().length})`;
3571
3584
  })());
3572
- return _el$38;
3585
+ return _el$29;
3573
3586
  }
3574
3587
  }), null);
3575
- insert(_el$25, createComponent(Show, {
3588
+ insert(_el$16, createComponent(Show, {
3576
3589
  get when() {
3577
3590
  return recentActions().length > 0;
3578
3591
  },
3579
3592
  get fallback() {
3580
- return _tmpl$25();
3593
+ return _tmpl$21();
3581
3594
  },
3582
3595
  get children() {
3583
3596
  return createComponent(Show, {
@@ -3585,7 +3598,7 @@ ${contextBlock}` : contextBlock);
3585
3598
  return actionsExpanded();
3586
3599
  },
3587
3600
  get fallback() {
3588
- return _tmpl$26();
3601
+ return _tmpl$22();
3589
3602
  },
3590
3603
  get children() {
3591
3604
  return createComponent(For, {
@@ -3593,71 +3606,71 @@ ${contextBlock}` : contextBlock);
3593
3606
  return recentActions();
3594
3607
  },
3595
3608
  children: (action) => (() => {
3596
- var _el$104 = _tmpl$29(), _el$105 = _el$104.firstChild, _el$106 = _el$105.firstChild, _el$107 = _el$106.nextSibling, _el$108 = _el$105.nextSibling;
3597
- insert(_el$106, () => action.name);
3598
- insert(_el$107, () => action.status);
3599
- insert(_el$108, () => action.argsSummary);
3600
- insert(_el$104, createComponent(Show, {
3609
+ var _el$95 = _tmpl$25(), _el$96 = _el$95.firstChild, _el$97 = _el$96.firstChild, _el$98 = _el$97.nextSibling, _el$99 = _el$96.nextSibling;
3610
+ insert(_el$97, () => action.name);
3611
+ insert(_el$98, () => action.status);
3612
+ insert(_el$99, () => action.argsSummary);
3613
+ insert(_el$95, createComponent(Show, {
3601
3614
  get when() {
3602
3615
  return action.resultSummary;
3603
3616
  },
3604
3617
  get children() {
3605
- var _el$109 = _tmpl$27();
3606
- insert(_el$109, () => action.resultSummary);
3607
- return _el$109;
3618
+ var _el$100 = _tmpl$23();
3619
+ insert(_el$100, () => action.resultSummary);
3620
+ return _el$100;
3608
3621
  }
3609
3622
  }), null);
3610
- insert(_el$104, createComponent(Show, {
3623
+ insert(_el$95, createComponent(Show, {
3611
3624
  get when() {
3612
3625
  return action.error;
3613
3626
  },
3614
3627
  get children() {
3615
- var _el$110 = _tmpl$28();
3616
- insert(_el$110, () => action.error);
3617
- return _el$110;
3628
+ var _el$101 = _tmpl$24();
3629
+ insert(_el$101, () => action.error);
3630
+ return _el$101;
3618
3631
  }
3619
3632
  }), null);
3620
- createRenderEffect(() => className(_el$107, `agent-action-status ${action.status}`));
3621
- return _el$104;
3633
+ createRenderEffect(() => className(_el$98, `agent-action-status ${action.status}`));
3634
+ return _el$95;
3622
3635
  })()
3623
3636
  });
3624
3637
  }
3625
3638
  });
3626
3639
  }
3627
3640
  }), null);
3628
- createRenderEffect(() => _el$30.classList.toggle("paused", !!runtimeState2().supervisor.paused));
3629
- return _el$25;
3641
+ createRenderEffect(() => _el$21.classList.toggle("paused", !!runtimeState2().supervisor.paused));
3642
+ return _el$16;
3630
3643
  }
3631
- }), _el$81);
3632
- insert(_el$24, createComponent(Show, {
3644
+ }), _el$72);
3645
+ insert(_el$15, createComponent(Show, {
3633
3646
  get when() {
3634
3647
  return sidebarTab() === "bookmarks";
3635
3648
  },
3636
3649
  get children() {
3637
- var _el$39 = _tmpl$10$2(), _el$40 = _el$39.firstChild, _el$41 = _el$40.firstChild, _el$42 = _el$41.firstChild, _el$43 = _el$42.nextSibling, _el$45 = _el$40.nextSibling, _el$46 = _el$45.nextSibling, _el$47 = _el$46.firstChild, _el$48 = _el$47.firstChild, _el$49 = _el$48.nextSibling, _el$56 = _el$46.nextSibling, _el$57 = _el$56.firstChild, _el$58 = _el$57.firstChild, _el$59 = _el$58.nextSibling, _el$60 = _el$57.nextSibling, _el$61 = _el$56.nextSibling;
3638
- insert(_el$43, (() => {
3650
+ var _el$30 = _tmpl$8$2(), _el$31 = _el$30.firstChild, _el$32 = _el$31.firstChild, _el$33 = _el$32.firstChild, _el$34 = _el$33.nextSibling, _el$36 = _el$31.nextSibling, _el$37 = _el$36.nextSibling, _el$38 = _el$37.firstChild, _el$39 = _el$38.firstChild, _el$40 = _el$39.nextSibling, _el$47 = _el$37.nextSibling, _el$48 = _el$47.firstChild, _el$49 = _el$48.firstChild, _el$50 = _el$49.nextSibling, _el$51 = _el$48.nextSibling, _el$52 = _el$47.nextSibling;
3651
+ insert(_el$34, (() => {
3639
3652
  var _c$2 = memo(() => !!normalizedBookmarkSearch());
3640
3653
  return () => _c$2() ? `${bookmarkMatchCount()} matches for "${bookmarkSearchQuery().trim()}"` : `${bookmarksState2().bookmarks.length} saved across ${bookmarkFolders().length} folders`;
3641
3654
  })());
3642
- insert(_el$40, createComponent(Show, {
3655
+ insert(_el$31, createComponent(Show, {
3643
3656
  get when() {
3644
3657
  return currentTabSaved();
3645
3658
  },
3646
3659
  get children() {
3647
- return _tmpl$0$2();
3660
+ return _tmpl$6$2();
3648
3661
  }
3649
3662
  }), null);
3650
- _el$45.$$input = (e) => setBookmarkSearchQuery(e.currentTarget.value);
3651
- _el$47.$$click = () => setBookmarkSaveExpanded((current) => !current);
3652
- insert(_el$46, createComponent(Show, {
3663
+ _el$36.$$input = (e) => setBookmarkSearchQuery(e.currentTarget.value);
3664
+ _el$38.$$click = () => setBookmarkSaveExpanded((current) => !current);
3665
+ insert(_el$37, createComponent(Show, {
3653
3666
  get when() {
3654
3667
  return bookmarkSaveExpanded();
3655
3668
  },
3656
3669
  get children() {
3657
- var _el$50 = _tmpl$1$2(), _el$51 = _el$50.firstChild, _el$52 = _el$51.nextSibling, _el$53 = _el$52.nextSibling, _el$54 = _el$53.firstChild, _el$55 = _el$53.nextSibling;
3658
- insert(_el$51, () => currentTab()?.title || "No active page");
3659
- insert(_el$52, () => currentTab()?.url || "Open a page to save it here.");
3660
- insert(_el$53, createComponent(DropdownSelect, {
3670
+ var _el$41 = _tmpl$7$2(), _el$42 = _el$41.firstChild, _el$43 = _el$42.nextSibling, _el$44 = _el$43.nextSibling, _el$45 = _el$44.firstChild, _el$46 = _el$44.nextSibling;
3671
+ insert(_el$42, () => currentTab()?.title || "No active page");
3672
+ insert(_el$43, () => currentTab()?.url || "Open a page to save it here.");
3673
+ insert(_el$44, createComponent(DropdownSelect, {
3661
3674
  "class": "bookmark-select",
3662
3675
  get value() {
3663
3676
  return selectedFolderId();
@@ -3667,29 +3680,29 @@ ${contextBlock}` : contextBlock);
3667
3680
  },
3668
3681
  ariaLabel: "Bookmark folder",
3669
3682
  onChange: (value) => setSelectedFolderId(value)
3670
- }), _el$54);
3671
- _el$54.$$click = () => void handleSaveBookmark();
3672
- _el$55.$$input = (e) => setBookmarkNote(e.currentTarget.value);
3673
- createRenderEffect(() => _el$54.disabled = !currentTab()?.url);
3674
- createRenderEffect(() => _el$55.value = bookmarkNote());
3675
- return _el$50;
3683
+ }), _el$45);
3684
+ _el$45.$$click = () => void handleSaveBookmark();
3685
+ _el$46.$$input = (e) => setBookmarkNote(e.currentTarget.value);
3686
+ createRenderEffect(() => _el$45.disabled = !currentTab()?.url);
3687
+ createRenderEffect(() => _el$46.value = bookmarkNote());
3688
+ return _el$41;
3676
3689
  }
3677
3690
  }), null);
3678
- _el$56.addEventListener("submit", handleCreateFolder);
3679
- _el$58.$$input = (e) => setNewFolderName(e.currentTarget.value);
3680
- _el$59.$$input = (e) => setNewFolderSummary(e.currentTarget.value);
3681
- insert(_el$61, createComponent(Show, {
3691
+ _el$47.addEventListener("submit", handleCreateFolder);
3692
+ _el$49.$$input = (e) => setNewFolderName(e.currentTarget.value);
3693
+ _el$50.$$input = (e) => setNewFolderSummary(e.currentTarget.value);
3694
+ insert(_el$52, createComponent(Show, {
3682
3695
  get when() {
3683
3696
  return filteredGroupedBookmarks().length > 0;
3684
3697
  },
3685
3698
  get fallback() {
3686
3699
  return (() => {
3687
- var _el$111 = _tmpl$30();
3688
- insert(_el$111, (() => {
3700
+ var _el$102 = _tmpl$26();
3701
+ insert(_el$102, (() => {
3689
3702
  var _c$5 = memo(() => !!normalizedBookmarkSearch());
3690
3703
  return () => _c$5() ? `No bookmarks matched "${bookmarkSearchQuery().trim()}".` : "No bookmarks saved yet.";
3691
3704
  })());
3692
- return _el$111;
3705
+ return _el$102;
3693
3706
  })();
3694
3707
  },
3695
3708
  get children() {
@@ -3698,71 +3711,71 @@ ${contextBlock}` : contextBlock);
3698
3711
  return filteredGroupedBookmarks();
3699
3712
  },
3700
3713
  children: (folder) => (() => {
3701
- var _el$112 = _tmpl$35(), _el$113 = _el$112.firstChild, _el$114 = _el$113.firstChild, _el$115 = _el$114.firstChild, _el$116 = _el$115.nextSibling, _el$117 = _el$116.firstChild, _el$118 = _el$117.nextSibling, _el$119 = _el$118.firstChild;
3702
- _el$113.$$keydown = (e) => {
3714
+ var _el$103 = _tmpl$31(), _el$104 = _el$103.firstChild, _el$105 = _el$104.firstChild, _el$106 = _el$105.firstChild, _el$107 = _el$106.nextSibling, _el$108 = _el$107.firstChild, _el$109 = _el$108.nextSibling, _el$110 = _el$109.firstChild;
3715
+ _el$104.$$keydown = (e) => {
3703
3716
  if (e.key === "Enter" || e.key === " ") {
3704
3717
  e.preventDefault();
3705
3718
  toggleFolderExpanded(folder.id);
3706
3719
  }
3707
3720
  };
3708
- _el$113.$$click = () => toggleFolderExpanded(folder.id);
3709
- insert(_el$117, () => folder.name);
3710
- insert(_el$118, () => folder.items.length, _el$119);
3711
- insert(_el$116, createComponent(Show, {
3721
+ _el$104.$$click = () => toggleFolderExpanded(folder.id);
3722
+ insert(_el$108, () => folder.name);
3723
+ insert(_el$109, () => folder.items.length, _el$110);
3724
+ insert(_el$107, createComponent(Show, {
3712
3725
  get when() {
3713
3726
  return folder.summary;
3714
3727
  },
3715
3728
  get children() {
3716
- var _el$120 = _tmpl$31();
3717
- insert(_el$120, () => folder.summary);
3718
- return _el$120;
3729
+ var _el$111 = _tmpl$27();
3730
+ insert(_el$111, () => folder.summary);
3731
+ return _el$111;
3719
3732
  }
3720
3733
  }), null);
3721
- insert(_el$113, createComponent(Show, {
3734
+ insert(_el$104, createComponent(Show, {
3722
3735
  get when() {
3723
3736
  return folder.id !== UNSORTED_FOLDER.id;
3724
3737
  },
3725
3738
  get children() {
3726
- var _el$121 = _tmpl$32(), _el$122 = _el$121.firstChild, _el$123 = _el$122.nextSibling;
3727
- _el$122.$$click = (e) => {
3739
+ var _el$112 = _tmpl$28(), _el$113 = _el$112.firstChild, _el$114 = _el$113.nextSibling;
3740
+ _el$113.$$click = (e) => {
3728
3741
  e.stopPropagation();
3729
3742
  setEditingFolderId(folder.id);
3730
3743
  setEditingFolderName(folder.name);
3731
3744
  setEditingFolderSummary(folder.summary || "");
3732
3745
  };
3733
- _el$123.$$click = (e) => {
3746
+ _el$114.$$click = (e) => {
3734
3747
  e.stopPropagation();
3735
3748
  void handleRemoveFolder(folder.id);
3736
3749
  };
3737
- return _el$121;
3750
+ return _el$112;
3738
3751
  }
3739
3752
  }), null);
3740
- insert(_el$112, createComponent(Show, {
3753
+ insert(_el$103, createComponent(Show, {
3741
3754
  get when() {
3742
3755
  return editingFolderId() === folder.id;
3743
3756
  },
3744
3757
  get children() {
3745
- var _el$124 = _tmpl$33(), _el$125 = _el$124.firstChild, _el$126 = _el$125.firstChild, _el$127 = _el$126.nextSibling, _el$128 = _el$125.nextSibling, _el$129 = _el$128.nextSibling;
3746
- _el$126.$$input = (e) => setEditingFolderName(e.currentTarget.value);
3747
- _el$127.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
3748
- _el$128.$$click = () => void handleRenameFolder(folder.id);
3749
- _el$129.$$click = () => {
3758
+ var _el$115 = _tmpl$29(), _el$116 = _el$115.firstChild, _el$117 = _el$116.firstChild, _el$118 = _el$117.nextSibling, _el$119 = _el$116.nextSibling, _el$120 = _el$119.nextSibling;
3759
+ _el$117.$$input = (e) => setEditingFolderName(e.currentTarget.value);
3760
+ _el$118.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
3761
+ _el$119.$$click = () => void handleRenameFolder(folder.id);
3762
+ _el$120.$$click = () => {
3750
3763
  setEditingFolderId(null);
3751
3764
  setEditingFolderName("");
3752
3765
  setEditingFolderSummary("");
3753
3766
  };
3754
- createRenderEffect(() => _el$128.disabled = !editingFolderName().trim());
3755
- createRenderEffect(() => _el$126.value = editingFolderName());
3756
- createRenderEffect(() => _el$127.value = editingFolderSummary());
3757
- return _el$124;
3767
+ createRenderEffect(() => _el$119.disabled = !editingFolderName().trim());
3768
+ createRenderEffect(() => _el$117.value = editingFolderName());
3769
+ createRenderEffect(() => _el$118.value = editingFolderSummary());
3770
+ return _el$115;
3758
3771
  }
3759
3772
  }), null);
3760
- insert(_el$112, createComponent(Show, {
3773
+ insert(_el$103, createComponent(Show, {
3761
3774
  get when() {
3762
3775
  return isFolderExpanded(folder.id);
3763
3776
  },
3764
3777
  get fallback() {
3765
- return _tmpl$36();
3778
+ return _tmpl$32();
3766
3779
  },
3767
3780
  get children() {
3768
3781
  return createComponent(Show, {
@@ -3770,116 +3783,116 @@ ${contextBlock}` : contextBlock);
3770
3783
  return folder.items.length > 0;
3771
3784
  },
3772
3785
  get fallback() {
3773
- return _tmpl$37();
3786
+ return _tmpl$33();
3774
3787
  },
3775
3788
  get children() {
3776
- var _el$130 = _tmpl$34();
3777
- insert(_el$130, createComponent(For, {
3789
+ var _el$121 = _tmpl$30();
3790
+ insert(_el$121, createComponent(For, {
3778
3791
  get each() {
3779
3792
  return folder.items;
3780
3793
  },
3781
3794
  children: (bookmark) => (() => {
3782
- var _el$133 = _tmpl$39(), _el$134 = _el$133.firstChild, _el$135 = _el$134.firstChild, _el$136 = _el$135.nextSibling, _el$138 = _el$134.nextSibling, _el$139 = _el$138.firstChild, _el$140 = _el$139.nextSibling;
3783
- _el$134.$$click = () => void createTab(bookmark.url);
3784
- insert(_el$135, () => bookmark.title || bookmark.url);
3785
- insert(_el$136, () => bookmark.url);
3786
- insert(_el$133, createComponent(Show, {
3795
+ var _el$124 = _tmpl$35(), _el$125 = _el$124.firstChild, _el$126 = _el$125.firstChild, _el$127 = _el$126.nextSibling, _el$129 = _el$125.nextSibling, _el$130 = _el$129.firstChild, _el$131 = _el$130.nextSibling;
3796
+ _el$125.$$click = () => void createTab(bookmark.url);
3797
+ insert(_el$126, () => bookmark.title || bookmark.url);
3798
+ insert(_el$127, () => bookmark.url);
3799
+ insert(_el$124, createComponent(Show, {
3787
3800
  get when() {
3788
3801
  return bookmark.note;
3789
3802
  },
3790
3803
  get children() {
3791
- var _el$137 = _tmpl$38();
3792
- insert(_el$137, () => bookmark.note);
3793
- return _el$137;
3804
+ var _el$128 = _tmpl$34();
3805
+ insert(_el$128, () => bookmark.note);
3806
+ return _el$128;
3794
3807
  }
3795
- }), _el$138);
3796
- insert(_el$139, () => formatBookmarkDate(bookmark.savedAt));
3797
- _el$140.$$click = () => void removeBookmark(bookmark.id);
3798
- createRenderEffect(() => setAttribute(_el$133, "data-bookmark-id", bookmark.id));
3799
- return _el$133;
3808
+ }), _el$129);
3809
+ insert(_el$130, () => formatBookmarkDate(bookmark.savedAt));
3810
+ _el$131.$$click = () => void removeBookmark(bookmark.id);
3811
+ createRenderEffect(() => setAttribute(_el$124, "data-bookmark-id", bookmark.id));
3812
+ return _el$124;
3800
3813
  })()
3801
3814
  }));
3802
- return _el$130;
3815
+ return _el$121;
3803
3816
  }
3804
3817
  });
3805
3818
  }
3806
3819
  }), null);
3807
- createRenderEffect(() => _el$115.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
3808
- return _el$112;
3820
+ createRenderEffect(() => _el$106.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
3821
+ return _el$103;
3809
3822
  })()
3810
3823
  });
3811
3824
  }
3812
3825
  }));
3813
3826
  createRenderEffect((_p$) => {
3814
- var _v$7 = !!bookmarkSaveExpanded(), _v$8 = !newFolderName().trim();
3815
- _v$7 !== _p$.e && _el$49.classList.toggle("expanded", _p$.e = _v$7);
3816
- _v$8 !== _p$.t && (_el$60.disabled = _p$.t = _v$8);
3827
+ var _v$ = !!bookmarkSaveExpanded(), _v$2 = !newFolderName().trim();
3828
+ _v$ !== _p$.e && _el$40.classList.toggle("expanded", _p$.e = _v$);
3829
+ _v$2 !== _p$.t && (_el$51.disabled = _p$.t = _v$2);
3817
3830
  return _p$;
3818
3831
  }, {
3819
3832
  e: void 0,
3820
3833
  t: void 0
3821
3834
  });
3822
- createRenderEffect(() => _el$45.value = bookmarkSearchQuery());
3823
- createRenderEffect(() => _el$58.value = newFolderName());
3824
- createRenderEffect(() => _el$59.value = newFolderSummary());
3825
- return _el$39;
3835
+ createRenderEffect(() => _el$36.value = bookmarkSearchQuery());
3836
+ createRenderEffect(() => _el$49.value = newFolderName());
3837
+ createRenderEffect(() => _el$50.value = newFolderSummary());
3838
+ return _el$30;
3826
3839
  }
3827
- }), _el$81);
3828
- insert(_el$24, createComponent(Show, {
3840
+ }), _el$72);
3841
+ insert(_el$15, createComponent(Show, {
3829
3842
  get when() {
3830
3843
  return sidebarTab() === "checkpoints";
3831
3844
  },
3832
3845
  get children() {
3833
- var _el$62 = _tmpl$12$2(), _el$63 = _el$62.firstChild, _el$64 = _el$63.firstChild, _el$65 = _el$64.firstChild, _el$66 = _el$65.nextSibling, _el$67 = _el$63.nextSibling, _el$68 = _el$67.firstChild, _el$69 = _el$68.firstChild, _el$70 = _el$69.nextSibling;
3834
- _el$68.nextSibling;
3835
- insert(_el$66, (() => {
3846
+ var _el$53 = _tmpl$0$2(), _el$54 = _el$53.firstChild, _el$55 = _el$54.firstChild, _el$56 = _el$55.firstChild, _el$57 = _el$56.nextSibling, _el$58 = _el$54.nextSibling, _el$59 = _el$58.firstChild, _el$60 = _el$59.firstChild, _el$61 = _el$60.nextSibling;
3847
+ _el$59.nextSibling;
3848
+ insert(_el$57, (() => {
3836
3849
  var _c$3 = memo(() => recentCheckpoints().length > 0);
3837
3850
  return () => _c$3() ? `${recentCheckpoints().length} saved snapshots` : "Save and restore session snapshots";
3838
3851
  })());
3839
- _el$69.$$input = (e) => setCheckpointName(e.currentTarget.value);
3840
- _el$70.$$click = async () => {
3852
+ _el$60.$$input = (e) => setCheckpointName(e.currentTarget.value);
3853
+ _el$61.$$click = async () => {
3841
3854
  const name = checkpointName().trim();
3842
3855
  await createCheckpoint(name || void 0);
3843
3856
  setCheckpointName("");
3844
3857
  };
3845
- insert(_el$67, createComponent(Show, {
3858
+ insert(_el$58, createComponent(Show, {
3846
3859
  get when() {
3847
3860
  return recentCheckpoints().length > 0;
3848
3861
  },
3849
3862
  get fallback() {
3850
- return _tmpl$40();
3863
+ return _tmpl$36();
3851
3864
  },
3852
3865
  get children() {
3853
- var _el$72 = _tmpl$11$2();
3854
- insert(_el$72, createComponent(For, {
3866
+ var _el$63 = _tmpl$9$2();
3867
+ insert(_el$63, createComponent(For, {
3855
3868
  get each() {
3856
3869
  return recentCheckpoints();
3857
3870
  },
3858
3871
  children: (checkpoint, i) => (() => {
3859
- var _el$142 = _tmpl$42(), _el$143 = _el$142.firstChild, _el$144 = _el$143.firstChild, _el$146 = _el$143.nextSibling, _el$147 = _el$146.firstChild, _el$148 = _el$147.nextSibling, _el$149 = _el$148.nextSibling;
3860
- insert(_el$143, createComponent(Show, {
3872
+ var _el$133 = _tmpl$38(), _el$134 = _el$133.firstChild, _el$135 = _el$134.firstChild, _el$137 = _el$134.nextSibling, _el$138 = _el$137.firstChild, _el$139 = _el$138.nextSibling, _el$140 = _el$139.nextSibling;
3873
+ insert(_el$134, createComponent(Show, {
3861
3874
  get when() {
3862
3875
  return i() < recentCheckpoints().length - 1;
3863
3876
  },
3864
3877
  get children() {
3865
- return _tmpl$41();
3878
+ return _tmpl$37();
3866
3879
  }
3867
3880
  }), null);
3868
- insert(_el$147, () => checkpoint.name);
3869
- insert(_el$148, () => new Date(checkpoint.createdAt).toLocaleString());
3870
- _el$149.$$click = () => void restoreCheckpoint(checkpoint.id);
3871
- createRenderEffect(() => _el$144.classList.toggle("latest", !!(i() === 0)));
3872
- return _el$142;
3881
+ insert(_el$138, () => checkpoint.name);
3882
+ insert(_el$139, () => new Date(checkpoint.createdAt).toLocaleString());
3883
+ _el$140.$$click = () => void restoreCheckpoint(checkpoint.id);
3884
+ createRenderEffect(() => _el$135.classList.toggle("latest", !!(i() === 0)));
3885
+ return _el$133;
3873
3886
  })()
3874
3887
  }));
3875
- return _el$72;
3888
+ return _el$63;
3876
3889
  }
3877
3890
  }), null);
3878
- createRenderEffect(() => _el$69.value = checkpointName());
3879
- return _el$62;
3891
+ createRenderEffect(() => _el$60.value = checkpointName());
3892
+ return _el$53;
3880
3893
  }
3881
- }), _el$81);
3882
- insert(_el$24, createComponent(Show, {
3894
+ }), _el$72);
3895
+ insert(_el$15, createComponent(Show, {
3883
3896
  get when() {
3884
3897
  return sidebarTab() === "chat";
3885
3898
  },
@@ -3889,50 +3902,50 @@ ${contextBlock}` : contextBlock);
3889
3902
  return messages2();
3890
3903
  },
3891
3904
  children: (msg) => (() => {
3892
- var _el$150 = _tmpl$43();
3893
- insert(_el$150, createComponent(MarkdownMessage, {
3905
+ var _el$141 = _tmpl$39();
3906
+ insert(_el$141, createComponent(MarkdownMessage, {
3894
3907
  get content() {
3895
3908
  return msg.content;
3896
3909
  }
3897
3910
  }));
3898
- createRenderEffect(() => className(_el$150, `message message-${msg.role}`));
3899
- return _el$150;
3911
+ createRenderEffect(() => className(_el$141, `message message-${msg.role}`));
3912
+ return _el$141;
3900
3913
  })()
3901
3914
  }), createComponent(Show, {
3902
3915
  get when() {
3903
3916
  return isStreaming2();
3904
3917
  },
3905
3918
  get children() {
3906
- var _el$73 = _tmpl$15(), _el$74 = _el$73.firstChild;
3907
- insert(_el$74, createComponent(Show, {
3919
+ var _el$64 = _tmpl$11$2(), _el$65 = _el$64.firstChild;
3920
+ insert(_el$65, createComponent(Show, {
3908
3921
  get when() {
3909
3922
  return hasFirstChunk2();
3910
3923
  },
3911
3924
  get fallback() {
3912
- return _tmpl$44();
3925
+ return _tmpl$40();
3913
3926
  },
3914
3927
  get children() {
3915
- var _el$75 = _tmpl$14$1(), _el$76 = _el$75.firstChild, _el$77 = _el$76.firstChild;
3916
- _el$77.nextSibling;
3917
- insert(_el$75, createComponent(MarkdownMessage, {
3928
+ var _el$66 = _tmpl$10$2(), _el$67 = _el$66.firstChild, _el$68 = _el$67.firstChild;
3929
+ _el$68.nextSibling;
3930
+ insert(_el$66, createComponent(MarkdownMessage, {
3918
3931
  get content() {
3919
3932
  return streamingText2();
3920
3933
  }
3921
- }), _el$76);
3922
- insert(_el$76, createComponent(Show, {
3934
+ }), _el$67);
3935
+ insert(_el$67, createComponent(Show, {
3923
3936
  get when() {
3924
3937
  return elapsedSeconds() > 0;
3925
3938
  },
3926
3939
  get children() {
3927
- var _el$79 = _tmpl$13$1();
3928
- insert(_el$79, () => ` • ${elapsedSeconds()}s`);
3929
- return _el$79;
3940
+ var _el$70 = _tmpl$1$2();
3941
+ insert(_el$70, () => ` • ${elapsedSeconds()}s`);
3942
+ return _el$70;
3930
3943
  }
3931
3944
  }), null);
3932
- return _el$75;
3945
+ return _el$66;
3933
3946
  }
3934
3947
  }));
3935
- return _el$73;
3948
+ return _el$64;
3936
3949
  }
3937
3950
  }), createComponent(Show, {
3938
3951
  get when() {
@@ -3944,22 +3957,22 @@ ${contextBlock}` : contextBlock);
3944
3957
  return runtimeState2().supervisor.pendingApprovals;
3945
3958
  },
3946
3959
  children: (approval) => (() => {
3947
- var _el$152 = _tmpl$46(), _el$153 = _el$152.firstChild, _el$154 = _el$153.nextSibling, _el$155 = _el$154.firstChild, _el$156 = _el$155.firstChild, _el$157 = _el$156.nextSibling, _el$159 = _el$155.nextSibling, _el$160 = _el$159.nextSibling, _el$161 = _el$160.firstChild, _el$162 = _el$161.nextSibling;
3948
- insert(_el$157, () => approval.name);
3949
- insert(_el$154, createComponent(Show, {
3960
+ var _el$143 = _tmpl$42(), _el$144 = _el$143.firstChild, _el$145 = _el$144.nextSibling, _el$146 = _el$145.firstChild, _el$147 = _el$146.firstChild, _el$148 = _el$147.nextSibling, _el$150 = _el$146.nextSibling, _el$151 = _el$150.nextSibling, _el$152 = _el$151.firstChild, _el$153 = _el$152.nextSibling;
3961
+ insert(_el$148, () => approval.name);
3962
+ insert(_el$145, createComponent(Show, {
3950
3963
  get when() {
3951
3964
  return approval.argsSummary;
3952
3965
  },
3953
3966
  get children() {
3954
- var _el$158 = _tmpl$45();
3955
- insert(_el$158, () => approval.argsSummary);
3956
- return _el$158;
3967
+ var _el$149 = _tmpl$41();
3968
+ insert(_el$149, () => approval.argsSummary);
3969
+ return _el$149;
3957
3970
  }
3958
- }), _el$159);
3959
- insert(_el$159, () => approval.reason);
3960
- _el$161.$$click = () => void resolveApproval(approval.id, true);
3961
- _el$162.$$click = () => void resolveApproval(approval.id, false);
3962
- return _el$152;
3971
+ }), _el$150);
3972
+ insert(_el$150, () => approval.reason);
3973
+ _el$152.$$click = () => void resolveApproval(approval.id, true);
3974
+ _el$153.$$click = () => void resolveApproval(approval.id, false);
3975
+ return _el$143;
3963
3976
  })()
3964
3977
  });
3965
3978
  }
@@ -3968,14 +3981,14 @@ ${contextBlock}` : contextBlock);
3968
3981
  return memo(() => messages2().length === 0)() && !isStreaming2();
3969
3982
  },
3970
3983
  get children() {
3971
- return _tmpl$16();
3984
+ return _tmpl$12$2();
3972
3985
  }
3973
3986
  })];
3974
3987
  }
3975
- }), _el$81);
3976
- var _ref$2 = messagesEndRef;
3977
- typeof _ref$2 === "function" ? use(_ref$2, _el$81) : messagesEndRef = _el$81;
3978
- insert(_el$1, createComponent(Show, {
3988
+ }), _el$72);
3989
+ var _ref$ = messagesEndRef;
3990
+ typeof _ref$ === "function" ? use(_ref$, _el$72) : messagesEndRef = _el$72;
3991
+ insert(_el$2, createComponent(Show, {
3979
3992
  get when() {
3980
3993
  return sidebarTab() === "chat";
3981
3994
  },
@@ -3985,85 +3998,85 @@ ${contextBlock}` : contextBlock);
3985
3998
  return isStreaming2() || messages2().length > 0;
3986
3999
  },
3987
4000
  get children() {
3988
- var _el$82 = _tmpl$19();
3989
- insert(_el$82, createComponent(Show, {
4001
+ var _el$73 = _tmpl$15();
4002
+ insert(_el$73, createComponent(Show, {
3990
4003
  get when() {
3991
4004
  return isStreaming2();
3992
4005
  },
3993
4006
  get children() {
3994
- var _el$83 = _tmpl$17();
3995
- _el$83.$$click = () => cancel();
3996
- return _el$83;
4007
+ var _el$74 = _tmpl$13$1();
4008
+ _el$74.$$click = () => cancel();
4009
+ return _el$74;
3997
4010
  }
3998
4011
  }), null);
3999
- insert(_el$82, createComponent(Show, {
4012
+ insert(_el$73, createComponent(Show, {
4000
4013
  get when() {
4001
4014
  return memo(() => !!!isStreaming2())() && messages2().length > 0;
4002
4015
  },
4003
4016
  get children() {
4004
- var _el$84 = _tmpl$18();
4005
- _el$84.$$click = handleRetry;
4006
- return _el$84;
4017
+ var _el$75 = _tmpl$14$1();
4018
+ _el$75.$$click = handleRetry;
4019
+ return _el$75;
4007
4020
  }
4008
4021
  }), null);
4009
- return _el$82;
4022
+ return _el$73;
4010
4023
  }
4011
4024
  }), createComponent(Show, {
4012
4025
  get when() {
4013
4026
  return highlightCount() > 0;
4014
4027
  },
4015
4028
  get children() {
4016
- var _el$85 = _tmpl$20(), _el$86 = _el$85.firstChild, _el$87 = _el$86.nextSibling;
4017
- _el$87.firstChild;
4018
- var _el$89 = _el$87.nextSibling;
4019
- _el$86.$$click = () => void scrollToHighlight(highlightIndex() - 1);
4020
- _el$87.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex());
4021
- insert(_el$87, (() => {
4029
+ var _el$76 = _tmpl$16(), _el$77 = _el$76.firstChild, _el$78 = _el$77.nextSibling;
4030
+ _el$78.firstChild;
4031
+ var _el$80 = _el$78.nextSibling;
4032
+ _el$77.$$click = () => void scrollToHighlight(highlightIndex() - 1);
4033
+ _el$78.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex());
4034
+ insert(_el$78, (() => {
4022
4035
  var _c$4 = memo(() => highlightIndex() >= 0);
4023
4036
  return () => _c$4() ? `${highlightIndex() + 1} / ${highlightCount()}` : `${highlightCount()} highlight${highlightCount() > 1 ? "s" : ""}`;
4024
4037
  })(), null);
4025
- _el$89.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex() + 1);
4038
+ _el$80.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex() + 1);
4026
4039
  createRenderEffect((_p$) => {
4027
- var _v$9 = highlightIndex() <= 0, _v$0 = highlightIndex() >= highlightCount() - 1;
4028
- _v$9 !== _p$.e && (_el$86.disabled = _p$.e = _v$9);
4029
- _v$0 !== _p$.t && (_el$89.disabled = _p$.t = _v$0);
4040
+ var _v$3 = highlightIndex() <= 0, _v$4 = highlightIndex() >= highlightCount() - 1;
4041
+ _v$3 !== _p$.e && (_el$77.disabled = _p$.e = _v$3);
4042
+ _v$4 !== _p$.t && (_el$80.disabled = _p$.t = _v$4);
4030
4043
  return _p$;
4031
4044
  }, {
4032
4045
  e: void 0,
4033
4046
  t: void 0
4034
4047
  });
4035
- return _el$85;
4048
+ return _el$76;
4036
4049
  }
4037
4050
  }), (() => {
4038
- var _el$90 = _tmpl$21(), _el$91 = _el$90.firstChild, _el$92 = _el$91.nextSibling;
4039
- _el$91.$$keydown = (e) => {
4051
+ var _el$81 = _tmpl$17(), _el$82 = _el$81.firstChild, _el$83 = _el$82.nextSibling;
4052
+ _el$82.$$keydown = (e) => {
4040
4053
  if (e.key === "Enter" && !e.shiftKey) {
4041
4054
  e.preventDefault();
4042
4055
  void handleChatSend();
4043
4056
  }
4044
4057
  };
4045
- _el$91.$$input = (e) => setChatInput(e.currentTarget.value);
4046
- var _ref$3 = chatInputRef;
4047
- typeof _ref$3 === "function" ? use(_ref$3, _el$91) : chatInputRef = _el$91;
4048
- _el$92.$$click = () => void handleChatSend();
4049
- createRenderEffect(() => _el$92.disabled = !chatInput().trim() || isStreaming2());
4050
- createRenderEffect(() => _el$91.value = chatInput());
4051
- return _el$90;
4058
+ _el$82.$$input = (e) => setChatInput(e.currentTarget.value);
4059
+ var _ref$2 = chatInputRef;
4060
+ typeof _ref$2 === "function" ? use(_ref$2, _el$82) : chatInputRef = _el$82;
4061
+ _el$83.$$click = () => void handleChatSend();
4062
+ createRenderEffect(() => _el$83.disabled = !chatInput().trim() || isStreaming2());
4063
+ createRenderEffect(() => _el$82.value = chatInput());
4064
+ return _el$81;
4052
4065
  })()];
4053
4066
  }
4054
4067
  }), null);
4055
4068
  createRenderEffect((_p$) => {
4056
- var _v$1 = `${sidebarWidth2()}px`, _v$10 = !!isDragging(), _v$11 = !!(sidebarTab() === "supervisor"), _v$12 = sidebarTab() === "supervisor", _v$13 = !!(sidebarTab() === "bookmarks"), _v$14 = sidebarTab() === "bookmarks", _v$15 = !!(sidebarTab() === "checkpoints"), _v$16 = sidebarTab() === "checkpoints", _v$17 = !!(sidebarTab() === "chat"), _v$18 = sidebarTab() === "chat";
4057
- _v$1 !== _p$.e && setStyleProperty(_el$1, "width", _p$.e = _v$1);
4058
- _v$10 !== _p$.t && _el$10.classList.toggle("dragging", _p$.t = _v$10);
4059
- _v$11 !== _p$.a && _el$18.classList.toggle("active", _p$.a = _v$11);
4060
- _v$12 !== _p$.o && setAttribute(_el$18, "aria-selected", _p$.o = _v$12);
4061
- _v$13 !== _p$.i && _el$21.classList.toggle("active", _p$.i = _v$13);
4062
- _v$14 !== _p$.n && setAttribute(_el$21, "aria-selected", _p$.n = _v$14);
4063
- _v$15 !== _p$.s && _el$22.classList.toggle("active", _p$.s = _v$15);
4064
- _v$16 !== _p$.h && setAttribute(_el$22, "aria-selected", _p$.h = _v$16);
4065
- _v$17 !== _p$.r && _el$23.classList.toggle("active", _p$.r = _v$17);
4066
- _v$18 !== _p$.d && setAttribute(_el$23, "aria-selected", _p$.d = _v$18);
4069
+ var _v$5 = `${sidebarWidth2()}px`, _v$6 = !!isDragging(), _v$7 = !!(sidebarTab() === "supervisor"), _v$8 = sidebarTab() === "supervisor", _v$9 = !!(sidebarTab() === "bookmarks"), _v$0 = sidebarTab() === "bookmarks", _v$1 = !!(sidebarTab() === "checkpoints"), _v$10 = sidebarTab() === "checkpoints", _v$11 = !!(sidebarTab() === "chat"), _v$12 = sidebarTab() === "chat";
4070
+ _v$5 !== _p$.e && setStyleProperty(_el$2, "width", _p$.e = _v$5);
4071
+ _v$6 !== _p$.t && _el$3.classList.toggle("dragging", _p$.t = _v$6);
4072
+ _v$7 !== _p$.a && _el$1.classList.toggle("active", _p$.a = _v$7);
4073
+ _v$8 !== _p$.o && setAttribute(_el$1, "aria-selected", _p$.o = _v$8);
4074
+ _v$9 !== _p$.i && _el$12.classList.toggle("active", _p$.i = _v$9);
4075
+ _v$0 !== _p$.n && setAttribute(_el$12, "aria-selected", _p$.n = _v$0);
4076
+ _v$1 !== _p$.s && _el$13.classList.toggle("active", _p$.s = _v$1);
4077
+ _v$10 !== _p$.h && setAttribute(_el$13, "aria-selected", _p$.h = _v$10);
4078
+ _v$11 !== _p$.r && _el$14.classList.toggle("active", _p$.r = _v$11);
4079
+ _v$12 !== _p$.d && setAttribute(_el$14, "aria-selected", _p$.d = _v$12);
4067
4080
  return _p$;
4068
4081
  }, {
4069
4082
  e: void 0,
@@ -4077,11 +4090,11 @@ ${contextBlock}` : contextBlock);
4077
4090
  r: void 0,
4078
4091
  d: void 0
4079
4092
  });
4080
- return _el$1;
4093
+ return _el$2;
4081
4094
  }
4082
4095
  });
4083
4096
  };
4084
- delegateEvents(["click", "pointerdown", "input", "keydown"]);
4097
+ delegateEvents(["pointerdown", "click", "input", "keydown"]);
4085
4098
  var _tmpl$$2 = /* @__PURE__ */ template(`<div class=devtools-console>`), _tmpl$2$2 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for console output... Console monitoring activates when an agent uses devtools.`), _tmpl$3$1 = /* @__PURE__ */ template(`<div><span></span><span class=console-time></span><span class=console-text></span><span class=console-source>`), _tmpl$4$1 = /* @__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$1 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for network requests... Network monitoring activates when an agent uses devtools.`), _tmpl$6$1 = /* @__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$1 = /* @__PURE__ */ template(`<div class=devtools-activity>`), _tmpl$8$1 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for agent devtools activity...`), _tmpl$9$1 = /* @__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$1 = /* @__PURE__ */ template(`<span class="devtools-tab-badge error">`), _tmpl$1$1 = /* @__PURE__ */ template(`<span class="devtools-tab-badge count">`), _tmpl$10$1 = /* @__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$1 = /* @__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$1 = /* @__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>`);
4086
4099
  function formatTime(iso) {
4087
4100
  try {
@@ -4529,7 +4542,7 @@ const DevToolsPanel = () => {
4529
4542
  })();
4530
4543
  };
4531
4544
  delegateEvents(["click", "input"]);
4532
- var _tmpl$$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-provider>Provider</label><select id=chat-provider class="settings-input settings-select">`), _tmpl$2$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-api-key>API Key</label><input id=chat-api-key class=settings-input type=password>`), _tmpl$3 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$4 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$5 = /* @__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$6 = /* @__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$7 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=settings-panel><h2 class=settings-title>Runtime Settings</h2><div class=settings-callout><div class=settings-callout-title>External Agent Control</div><p class=settings-callout-copy>Vessel is configured to run under an external harness such as Hermes Agent or OpenClaw. Provider and model selection are not configured inside Vessel.</p></div><div class=settings-field><label class=settings-label for=mcp-port>MCP Port</label><input id=mcp-port class=settings-input placeholder=3100><p class=settings-hint>External harnesses connect to Vessel at <code>http://127.0.0.1:&lt;port&gt;/mcp</code>. Changing this value restarts the MCP server immediately.</p></div><div class=settings-field><label class=settings-label for=max-tool-iterations>Max Tool Iterations</label><input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200><p class=settings-hint>Maximum number of tool calls the AI agent can make per conversation turn before pausing. Higher values let the agent complete longer multi-step workflows without stopping. Range: 10–1000.</p></div><div class=settings-field><label class=settings-label for=obsidian-vault-path>Obsidian Vault Path</label><input id=obsidian-vault-path class=settings-input placeholder=/home/you/Documents/MyVault><p class=settings-hint>Optional. When set, Vessel memory tools can write markdown notes into this vault for research breadcrumbs and summaries.</p></div><div class=settings-field><label class=settings-label for=agent-transcript-mode>Agent Transcript Monitor</label><select id=agent-transcript-mode class="settings-input settings-select"><option value=off>Off</option><option value=summary>Summary HUD</option><option value=full>Full transcript</option></select><p class=settings-hint>Controls the in-browser transcript monitor when an external harness publishes reasoning or status updates into Vessel via the<code>vessel_publish_transcript</code> MCP tool. Summary HUD shows a compact 2-line status surface; Full transcript shows the recent entry list.</p></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Restore last browser session on launch</span></label></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Start bookmarks fresh on launch</span></label><p class=settings-hint>Off by default. When enabled, bookmark folders and saved pages are cleared each time Vessel starts.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Enable Chat Assistant</span></label><p class=settings-hint>Adds a Chat tab to the sidebar for conversing with an AI provider of your choice.</p></div><div class=settings-actions><button class=settings-save>Save</button><button class=settings-close>Close`), _tmpl$8 = /* @__PURE__ */ template(`<style>
4545
+ var _tmpl$$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-provider>Provider</label><select id=chat-provider class="settings-input settings-select">`), _tmpl$2$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-api-key>API Key</label><input id=chat-api-key class=settings-input type=password>`), _tmpl$3 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$4 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$5 = /* @__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$6 = /* @__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$7 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=settings-panel><h2 class=settings-title>Runtime Settings</h2><div class=settings-callout><div class=settings-callout-title>External Agent Control</div><p class=settings-callout-copy>Vessel is configured to run under an external harness such as Hermes Agent or OpenClaw. Provider and model selection are not configured inside Vessel.</p></div><div class=settings-field><label class=settings-label for=default-homepage>Homepage</label><input id=default-homepage class=settings-input placeholder=https://start.duckduckgo.com><p class=settings-hint>The page that opens when you create a new tab or launch Vessel without restoring a previous session.</p></div><div class=settings-field><label class=settings-label for=mcp-port>MCP Port</label><input id=mcp-port class=settings-input placeholder=3100><p class=settings-hint>External harnesses connect to Vessel at <code>http://127.0.0.1:&lt;port&gt;/mcp</code>. Changing this value restarts the MCP server immediately.</p></div><div class=settings-field><label class=settings-label for=max-tool-iterations>Max Tool Iterations</label><input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200><p class=settings-hint>Maximum number of tool calls the AI agent can make per conversation turn before pausing. Higher values let the agent complete longer multi-step workflows without stopping. Range: 10–1000.</p></div><div class=settings-field><label class=settings-label for=obsidian-vault-path>Obsidian Vault Path</label><input id=obsidian-vault-path class=settings-input placeholder=/home/you/Documents/MyVault><p class=settings-hint>Optional. When set, Vessel memory tools can write markdown notes into this vault for research breadcrumbs and summaries.</p></div><div class=settings-field><label class=settings-label for=agent-transcript-mode>Agent Transcript Monitor</label><select id=agent-transcript-mode class="settings-input settings-select"><option value=off>Off</option><option value=summary>Summary HUD</option><option value=full>Full transcript</option></select><p class=settings-hint>Controls the in-browser transcript monitor when an external harness publishes reasoning or status updates into Vessel via the<code>vessel_publish_transcript</code> MCP tool. Summary HUD shows a compact 2-line status surface; Full transcript shows the recent entry list.</p></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Restore last browser session on launch</span></label></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Start bookmarks fresh on launch</span></label><p class=settings-hint>Off by default. When enabled, bookmark folders and saved pages are cleared each time Vessel starts.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Enable Chat Assistant</span></label><p class=settings-hint>Adds a Chat tab to the sidebar for conversing with an AI provider of your choice.</p></div><div class=settings-actions><button class=settings-save>Save</button><button class=settings-close>Close`), _tmpl$8 = /* @__PURE__ */ template(`<style>
4533
4546
  .settings-panel {
4534
4547
  width: min(440px, calc(100vw - 32px));
4535
4548
  max-height: calc(100vh - 48px);
@@ -4833,6 +4846,7 @@ const Settings = () => {
4833
4846
  const [maxToolIterations, setMaxToolIterations] = createSignal("200");
4834
4847
  const [agentTranscriptMode, setAgentTranscriptMode] = createSignal("summary");
4835
4848
  const [health, setHealth] = createSignal(null);
4849
+ const [defaultUrl, setDefaultUrl] = createSignal("https://start.duckduckgo.com");
4836
4850
  const [status, setStatus] = createSignal(null);
4837
4851
  const [chatEnabled, setChatEnabled] = createSignal(false);
4838
4852
  const [chatProviderId, setChatProviderId] = createSignal("anthropic");
@@ -4890,6 +4904,7 @@ const Settings = () => {
4890
4904
  const loadState = async () => {
4891
4905
  const settings = await window.vessel.settings.get();
4892
4906
  const runtimeHealth = await window.vessel.settings.getHealth();
4907
+ setDefaultUrl(settings.defaultUrl ?? "https://start.duckduckgo.com");
4893
4908
  setAutoRestoreSession(settings.autoRestoreSession ?? true);
4894
4909
  setClearBookmarksOnLaunch(settings.clearBookmarksOnLaunch ?? false);
4895
4910
  setObsidianVaultPath(settings.obsidianVaultPath ?? "");
@@ -4924,6 +4939,7 @@ const Settings = () => {
4924
4939
  });
4925
4940
  return;
4926
4941
  }
4942
+ await window.vessel.settings.set("defaultUrl", defaultUrl().trim() || "https://start.duckduckgo.com");
4927
4943
  await window.vessel.settings.set("autoRestoreSession", autoRestoreSession());
4928
4944
  await window.vessel.settings.set("clearBookmarksOnLaunch", clearBookmarksOnLaunch());
4929
4945
  await window.vessel.settings.set("obsidianVaultPath", obsidianVaultPath());
@@ -4959,83 +4975,85 @@ const Settings = () => {
4959
4975
  },
4960
4976
  get children() {
4961
4977
  return [(() => {
4962
- var _el$ = _tmpl$7(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$5.nextSibling, _el$9 = _el$8.firstChild, _el$0 = _el$9.nextSibling, _el$1 = _el$8.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling, _el$12 = _el$1.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling, _el$15 = _el$12.nextSibling, _el$16 = _el$15.firstChild, _el$17 = _el$16.firstChild, _el$18 = _el$15.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$19.firstChild, _el$21 = _el$18.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.firstChild, _el$24 = _el$23.firstChild, _el$40 = _el$22.nextSibling, _el$41 = _el$40.firstChild, _el$42 = _el$41.nextSibling;
4978
+ var _el$ = _tmpl$7(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$5.nextSibling, _el$9 = _el$8.firstChild, _el$0 = _el$9.nextSibling, _el$1 = _el$8.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling, _el$12 = _el$1.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling, _el$15 = _el$12.nextSibling, _el$16 = _el$15.firstChild, _el$17 = _el$16.nextSibling, _el$18 = _el$15.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$19.firstChild, _el$21 = _el$18.nextSibling, _el$22 = _el$21.firstChild, _el$23 = _el$22.firstChild, _el$24 = _el$21.nextSibling, _el$25 = _el$24.nextSibling, _el$26 = _el$25.firstChild, _el$27 = _el$26.firstChild, _el$43 = _el$25.nextSibling, _el$44 = _el$43.firstChild, _el$45 = _el$44.nextSibling;
4963
4979
  addEventListener(_el$, "click", closeSettings);
4964
4980
  _el$2.$$keydown = handleKeyDown;
4965
4981
  _el$2.$$click = (e) => e.stopPropagation();
4966
- _el$7.$$input = (e) => setMcpPort(e.currentTarget.value);
4982
+ _el$7.$$input = (e) => setDefaultUrl(e.currentTarget.value);
4967
4983
  setAttribute(_el$7, "spellcheck", false);
4968
- _el$0.$$input = (e) => setMaxToolIterations(e.currentTarget.value);
4984
+ _el$0.$$input = (e) => setMcpPort(e.currentTarget.value);
4985
+ setAttribute(_el$0, "spellcheck", false);
4986
+ _el$11.$$input = (e) => setMaxToolIterations(e.currentTarget.value);
4969
4987
  insert(_el$2, createComponent(Show, {
4970
4988
  get when() {
4971
4989
  return health();
4972
4990
  },
4973
4991
  children: (currentHealth) => (() => {
4974
- var _el$44 = _tmpl$0(), _el$45 = _el$44.firstChild, _el$46 = _el$45.nextSibling, _el$47 = _el$46.firstChild, _el$49 = _el$47.nextSibling;
4975
- _el$49.nextSibling;
4976
- insert(_el$49, () => currentHealth().mcp.status);
4977
- insert(_el$46, () => currentHealth().mcp.message, null);
4978
- insert(_el$44, createComponent(Show, {
4992
+ var _el$47 = _tmpl$0(), _el$48 = _el$47.firstChild, _el$49 = _el$48.nextSibling, _el$50 = _el$49.firstChild, _el$52 = _el$50.nextSibling;
4993
+ _el$52.nextSibling;
4994
+ insert(_el$52, () => currentHealth().mcp.status);
4995
+ insert(_el$49, () => currentHealth().mcp.message, null);
4996
+ insert(_el$47, createComponent(Show, {
4979
4997
  get when() {
4980
4998
  return currentHealth().mcp.endpoint;
4981
4999
  },
4982
5000
  children: (endpoint) => (() => {
4983
- var _el$52 = _tmpl$1(), _el$53 = _el$52.firstChild, _el$54 = _el$53.nextSibling;
4984
- insert(_el$54, endpoint);
4985
- return _el$52;
5001
+ var _el$55 = _tmpl$1(), _el$56 = _el$55.firstChild, _el$57 = _el$56.nextSibling;
5002
+ insert(_el$57, endpoint);
5003
+ return _el$55;
4986
5004
  })()
4987
5005
  }), null);
4988
- insert(_el$44, createComponent(Show, {
5006
+ insert(_el$47, createComponent(Show, {
4989
5007
  get when() {
4990
5008
  return currentHealth().startupIssues.length > 0;
4991
5009
  },
4992
5010
  get children() {
4993
- var _el$51 = _tmpl$9();
4994
- insert(_el$51, () => currentHealth().startupIssues.map((issue) => (() => {
4995
- var _el$55 = _tmpl$10(), _el$56 = _el$55.firstChild, _el$57 = _el$56.nextSibling;
4996
- insert(_el$56, () => issue.title);
4997
- insert(_el$57, () => issue.detail);
4998
- insert(_el$55, createComponent(Show, {
5011
+ var _el$54 = _tmpl$9();
5012
+ insert(_el$54, () => currentHealth().startupIssues.map((issue) => (() => {
5013
+ var _el$58 = _tmpl$10(), _el$59 = _el$58.firstChild, _el$60 = _el$59.nextSibling;
5014
+ insert(_el$59, () => issue.title);
5015
+ insert(_el$60, () => issue.detail);
5016
+ insert(_el$58, createComponent(Show, {
4999
5017
  get when() {
5000
5018
  return issue.action;
5001
5019
  },
5002
5020
  children: (action) => (() => {
5003
- var _el$58 = _tmpl$11();
5004
- insert(_el$58, action);
5005
- return _el$58;
5021
+ var _el$61 = _tmpl$11();
5022
+ insert(_el$61, action);
5023
+ return _el$61;
5006
5024
  })()
5007
5025
  }), null);
5008
5026
  createRenderEffect((_p$) => {
5009
5027
  var _v$7 = !!(issue.severity === "warning"), _v$8 = !!(issue.severity === "error");
5010
- _v$7 !== _p$.e && _el$55.classList.toggle("warning", _p$.e = _v$7);
5011
- _v$8 !== _p$.t && _el$55.classList.toggle("error", _p$.t = _v$8);
5028
+ _v$7 !== _p$.e && _el$58.classList.toggle("warning", _p$.e = _v$7);
5029
+ _v$8 !== _p$.t && _el$58.classList.toggle("error", _p$.t = _v$8);
5012
5030
  return _p$;
5013
5031
  }, {
5014
5032
  e: void 0,
5015
5033
  t: void 0
5016
5034
  });
5017
- return _el$55;
5035
+ return _el$58;
5018
5036
  })()));
5019
- return _el$51;
5037
+ return _el$54;
5020
5038
  }
5021
5039
  }), null);
5022
- return _el$44;
5040
+ return _el$47;
5023
5041
  })()
5024
- }), _el$1);
5025
- _el$11.$$input = (e) => setObsidianVaultPath(e.currentTarget.value);
5026
- setAttribute(_el$11, "spellcheck", false);
5027
- _el$14.addEventListener("change", (e) => setAgentTranscriptMode(e.currentTarget.value));
5028
- _el$17.$$click = () => setAutoRestoreSession(!autoRestoreSession());
5029
- _el$20.$$click = () => setClearBookmarksOnLaunch(!clearBookmarksOnLaunch());
5030
- _el$24.$$click = () => setChatEnabled(!chatEnabled());
5042
+ }), _el$12);
5043
+ _el$14.$$input = (e) => setObsidianVaultPath(e.currentTarget.value);
5044
+ setAttribute(_el$14, "spellcheck", false);
5045
+ _el$17.addEventListener("change", (e) => setAgentTranscriptMode(e.currentTarget.value));
5046
+ _el$20.$$click = () => setAutoRestoreSession(!autoRestoreSession());
5047
+ _el$23.$$click = () => setClearBookmarksOnLaunch(!clearBookmarksOnLaunch());
5048
+ _el$27.$$click = () => setChatEnabled(!chatEnabled());
5031
5049
  insert(_el$2, createComponent(Show, {
5032
5050
  get when() {
5033
5051
  return chatEnabled();
5034
5052
  },
5035
5053
  get children() {
5036
5054
  return [(() => {
5037
- var _el$25 = _tmpl$$1(), _el$26 = _el$25.firstChild, _el$27 = _el$26.nextSibling;
5038
- _el$27.addEventListener("change", (e) => {
5055
+ var _el$28 = _tmpl$$1(), _el$29 = _el$28.firstChild, _el$30 = _el$29.nextSibling;
5056
+ _el$30.addEventListener("change", (e) => {
5039
5057
  const id = e.currentTarget.value;
5040
5058
  setChatProviderId(id);
5041
5059
  setChatModel("");
@@ -5044,65 +5062,65 @@ const Settings = () => {
5044
5062
  setProviderModels([]);
5045
5063
  setModelFetchState("idle");
5046
5064
  });
5047
- insert(_el$27, createComponent(For, {
5065
+ insert(_el$30, createComponent(For, {
5048
5066
  each: CHAT_PROVIDERS,
5049
5067
  children: (p) => (() => {
5050
- var _el$59 = _tmpl$12();
5051
- insert(_el$59, () => p.name);
5052
- createRenderEffect(() => _el$59.value = p.id);
5053
- return _el$59;
5068
+ var _el$62 = _tmpl$12();
5069
+ insert(_el$62, () => p.name);
5070
+ createRenderEffect(() => _el$62.value = p.id);
5071
+ return _el$62;
5054
5072
  })()
5055
5073
  }));
5056
- createRenderEffect(() => _el$27.value = chatProviderId());
5057
- return _el$25;
5074
+ createRenderEffect(() => _el$30.value = chatProviderId());
5075
+ return _el$28;
5058
5076
  })(), createComponent(Show, {
5059
5077
  get when() {
5060
5078
  return chatProviderMeta().requiresKey;
5061
5079
  },
5062
5080
  get children() {
5063
- var _el$28 = _tmpl$2$1(), _el$29 = _el$28.firstChild, _el$30 = _el$29.nextSibling;
5064
- _el$30.$$input = (e) => setChatApiKey(e.currentTarget.value);
5065
- setAttribute(_el$30, "spellcheck", false);
5066
- createRenderEffect(() => setAttribute(_el$30, "placeholder", chatProviderMeta().keyPlaceholder));
5067
- createRenderEffect(() => _el$30.value = chatApiKey());
5068
- return _el$28;
5081
+ var _el$31 = _tmpl$2$1(), _el$32 = _el$31.firstChild, _el$33 = _el$32.nextSibling;
5082
+ _el$33.$$input = (e) => setChatApiKey(e.currentTarget.value);
5083
+ setAttribute(_el$33, "spellcheck", false);
5084
+ createRenderEffect(() => setAttribute(_el$33, "placeholder", chatProviderMeta().keyPlaceholder));
5085
+ createRenderEffect(() => _el$33.value = chatApiKey());
5086
+ return _el$31;
5069
5087
  }
5070
5088
  }), (() => {
5071
- var _el$31 = _tmpl$5(), _el$32 = _el$31.firstChild, _el$33 = _el$32.nextSibling, _el$35 = _el$33.firstChild;
5072
- insert(_el$33, createComponent(Show, {
5089
+ var _el$34 = _tmpl$5(), _el$35 = _el$34.firstChild, _el$36 = _el$35.nextSibling, _el$38 = _el$36.firstChild;
5090
+ insert(_el$36, createComponent(Show, {
5073
5091
  get when() {
5074
5092
  return providerModels().length > 0;
5075
5093
  },
5076
5094
  get fallback() {
5077
5095
  return (() => {
5078
- var _el$60 = _tmpl$13();
5079
- _el$60.$$input = (e) => setChatModel(e.currentTarget.value);
5080
- setAttribute(_el$60, "spellcheck", false);
5081
- createRenderEffect(() => setAttribute(_el$60, "placeholder", modelFetchState() === "loading" ? "Fetching models…" : chatProviderMeta().requiresKey && !chatApiKey().trim() ? "Enter API key to load models" : chatProviderMeta().defaultModel || "model name"));
5082
- createRenderEffect(() => _el$60.value = chatModel());
5083
- return _el$60;
5096
+ var _el$63 = _tmpl$13();
5097
+ _el$63.$$input = (e) => setChatModel(e.currentTarget.value);
5098
+ setAttribute(_el$63, "spellcheck", false);
5099
+ createRenderEffect(() => setAttribute(_el$63, "placeholder", modelFetchState() === "loading" ? "Fetching models…" : chatProviderMeta().requiresKey && !chatApiKey().trim() ? "Enter API key to load models" : chatProviderMeta().defaultModel || "model name"));
5100
+ createRenderEffect(() => _el$63.value = chatModel());
5101
+ return _el$63;
5084
5102
  })();
5085
5103
  },
5086
5104
  get children() {
5087
- var _el$34 = _tmpl$3();
5088
- _el$34.addEventListener("change", (e) => setChatModel(e.currentTarget.value));
5089
- insert(_el$34, createComponent(For, {
5105
+ var _el$37 = _tmpl$3();
5106
+ _el$37.addEventListener("change", (e) => setChatModel(e.currentTarget.value));
5107
+ insert(_el$37, createComponent(For, {
5090
5108
  get each() {
5091
5109
  return providerModels();
5092
5110
  },
5093
5111
  children: (m) => (() => {
5094
- var _el$61 = _tmpl$12();
5095
- _el$61.value = m;
5096
- insert(_el$61, m);
5097
- return _el$61;
5112
+ var _el$64 = _tmpl$12();
5113
+ _el$64.value = m;
5114
+ insert(_el$64, m);
5115
+ return _el$64;
5098
5116
  })()
5099
5117
  }));
5100
- createRenderEffect(() => _el$34.value = chatModel());
5101
- return _el$34;
5118
+ createRenderEffect(() => _el$37.value = chatModel());
5119
+ return _el$37;
5102
5120
  }
5103
- }), _el$35);
5104
- _el$35.$$click = doFetchModels;
5105
- insert(_el$31, createComponent(Show, {
5121
+ }), _el$38);
5122
+ _el$38.$$click = doFetchModels;
5123
+ insert(_el$34, createComponent(Show, {
5106
5124
  get when() {
5107
5125
  return modelFetchState() === "error";
5108
5126
  },
@@ -5110,52 +5128,52 @@ const Settings = () => {
5110
5128
  return _tmpl$4();
5111
5129
  }
5112
5130
  }), null);
5113
- createRenderEffect(() => _el$35.disabled = modelFetchState() === "loading");
5114
- return _el$31;
5131
+ createRenderEffect(() => _el$38.disabled = modelFetchState() === "loading");
5132
+ return _el$34;
5115
5133
  })(), createComponent(Show, {
5116
5134
  get when() {
5117
5135
  return chatProviderMeta().needsBaseUrl || chatProviderId() === "custom";
5118
5136
  },
5119
5137
  get children() {
5120
- var _el$37 = _tmpl$6(), _el$38 = _el$37.firstChild, _el$39 = _el$38.nextSibling;
5121
- _el$39.$$input = (e) => setChatBaseUrl(e.currentTarget.value);
5122
- setAttribute(_el$39, "spellcheck", false);
5123
- createRenderEffect(() => setAttribute(_el$39, "placeholder", chatProviderMeta().defaultBaseUrl ?? "https://..."));
5124
- createRenderEffect(() => _el$39.value = chatBaseUrl());
5125
- return _el$37;
5138
+ var _el$40 = _tmpl$6(), _el$41 = _el$40.firstChild, _el$42 = _el$41.nextSibling;
5139
+ _el$42.$$input = (e) => setChatBaseUrl(e.currentTarget.value);
5140
+ setAttribute(_el$42, "spellcheck", false);
5141
+ createRenderEffect(() => setAttribute(_el$42, "placeholder", chatProviderMeta().defaultBaseUrl ?? "https://..."));
5142
+ createRenderEffect(() => _el$42.value = chatBaseUrl());
5143
+ return _el$40;
5126
5144
  }
5127
5145
  })];
5128
5146
  }
5129
- }), _el$40);
5130
- _el$41.$$click = handleSave;
5131
- addEventListener(_el$42, "click", closeSettings);
5147
+ }), _el$43);
5148
+ _el$44.$$click = handleSave;
5149
+ addEventListener(_el$45, "click", closeSettings);
5132
5150
  insert(_el$2, createComponent(Show, {
5133
5151
  get when() {
5134
5152
  return status();
5135
5153
  },
5136
5154
  children: (currentStatus) => (() => {
5137
- var _el$62 = _tmpl$14();
5138
- insert(_el$62, () => currentStatus().text);
5155
+ var _el$65 = _tmpl$14();
5156
+ insert(_el$65, () => currentStatus().text);
5139
5157
  createRenderEffect((_p$) => {
5140
5158
  var _v$9 = !!(currentStatus().kind === "success"), _v$0 = !!(currentStatus().kind === "error");
5141
- _v$9 !== _p$.e && _el$62.classList.toggle("success", _p$.e = _v$9);
5142
- _v$0 !== _p$.t && _el$62.classList.toggle("error", _p$.t = _v$0);
5159
+ _v$9 !== _p$.e && _el$65.classList.toggle("success", _p$.e = _v$9);
5160
+ _v$0 !== _p$.t && _el$65.classList.toggle("error", _p$.t = _v$0);
5143
5161
  return _p$;
5144
5162
  }, {
5145
5163
  e: void 0,
5146
5164
  t: void 0
5147
5165
  });
5148
- return _el$62;
5166
+ return _el$65;
5149
5167
  })()
5150
5168
  }), null);
5151
5169
  createRenderEffect((_p$) => {
5152
5170
  var _v$ = !!autoRestoreSession(), _v$2 = autoRestoreSession(), _v$3 = !!clearBookmarksOnLaunch(), _v$4 = clearBookmarksOnLaunch(), _v$5 = !!chatEnabled(), _v$6 = chatEnabled();
5153
- _v$ !== _p$.e && _el$17.classList.toggle("on", _p$.e = _v$);
5154
- _v$2 !== _p$.t && setAttribute(_el$17, "aria-checked", _p$.t = _v$2);
5155
- _v$3 !== _p$.a && _el$20.classList.toggle("on", _p$.a = _v$3);
5156
- _v$4 !== _p$.o && setAttribute(_el$20, "aria-checked", _p$.o = _v$4);
5157
- _v$5 !== _p$.i && _el$24.classList.toggle("on", _p$.i = _v$5);
5158
- _v$6 !== _p$.n && setAttribute(_el$24, "aria-checked", _p$.n = _v$6);
5171
+ _v$ !== _p$.e && _el$20.classList.toggle("on", _p$.e = _v$);
5172
+ _v$2 !== _p$.t && setAttribute(_el$20, "aria-checked", _p$.t = _v$2);
5173
+ _v$3 !== _p$.a && _el$23.classList.toggle("on", _p$.a = _v$3);
5174
+ _v$4 !== _p$.o && setAttribute(_el$23, "aria-checked", _p$.o = _v$4);
5175
+ _v$5 !== _p$.i && _el$27.classList.toggle("on", _p$.i = _v$5);
5176
+ _v$6 !== _p$.n && setAttribute(_el$27, "aria-checked", _p$.n = _v$6);
5159
5177
  return _p$;
5160
5178
  }, {
5161
5179
  e: void 0,
@@ -5165,10 +5183,11 @@ const Settings = () => {
5165
5183
  i: void 0,
5166
5184
  n: void 0
5167
5185
  });
5168
- createRenderEffect(() => _el$7.value = mcpPort());
5169
- createRenderEffect(() => _el$0.value = maxToolIterations());
5170
- createRenderEffect(() => _el$11.value = obsidianVaultPath());
5171
- createRenderEffect(() => _el$14.value = agentTranscriptMode());
5186
+ createRenderEffect(() => _el$7.value = defaultUrl());
5187
+ createRenderEffect(() => _el$0.value = mcpPort());
5188
+ createRenderEffect(() => _el$11.value = maxToolIterations());
5189
+ createRenderEffect(() => _el$14.value = obsidianVaultPath());
5190
+ createRenderEffect(() => _el$17.value = agentTranscriptMode());
5172
5191
  return _el$;
5173
5192
  })(), _tmpl$8()];
5174
5193
  }