@quanta-intellect/vessel-browser 0.1.67 → 0.1.68

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.
@@ -1433,7 +1433,7 @@ function Dynamic(props) {
1433
1433
  const [, others] = splitProps(props, ["component"]);
1434
1434
  return createDynamic(() => props.component, others);
1435
1435
  }
1436
- var _tmpl$$h = /* @__PURE__ */ template(`<div class=title-bar><div class=title-bar-drag></div><div class=mcp-status-area><button class=mcp-status-indicator><span class=mcp-dot></span><span class=mcp-label>MCP</span></button></div><div class=window-controls><button class=window-btn data-tooltip=Minimize><svg width=10 height=10 viewBox="0 0 10 10"><rect x=1 y=5 width=8 height=1 fill=currentColor></rect></svg></button><button class=window-btn data-tooltip=Maximize><svg width=10 height=10 viewBox="0 0 10 10"><rect x=1 y=1 width=8 height=8 fill=none stroke=currentColor stroke-width=1></rect></svg></button><button class="window-btn window-btn-close"data-tooltip=Close><svg width=10 height=10 viewBox="0 0 10 10"><line x1=1 y1=1 x2=9 y2=9 stroke=currentColor stroke-width=1.2></line><line x1=9 y1=1 x2=1 y2=9 stroke=currentColor stroke-width=1.2>`);
1436
+ var _tmpl$$i = /* @__PURE__ */ template(`<div class=title-bar><div class=title-bar-drag></div><div class=mcp-status-area><button class=mcp-status-indicator><span class=mcp-dot></span><span class=mcp-label>MCP</span></button></div><div class=window-controls><button class=window-btn data-tooltip=Minimize><svg width=10 height=10 viewBox="0 0 10 10"><rect x=1 y=5 width=8 height=1 fill=currentColor></rect></svg></button><button class=window-btn data-tooltip=Maximize><svg width=10 height=10 viewBox="0 0 10 10"><rect x=1 y=1 width=8 height=8 fill=none stroke=currentColor stroke-width=1></rect></svg></button><button class="window-btn window-btn-close"data-tooltip=Close><svg width=10 height=10 viewBox="0 0 10 10"><line x1=1 y1=1 x2=9 y2=9 stroke=currentColor stroke-width=1.2></line><line x1=9 y1=1 x2=1 y2=9 stroke=currentColor stroke-width=1.2>`);
1437
1437
  const TitleBar = () => {
1438
1438
  const [mcpStatus, setMcpStatus] = createSignal("starting");
1439
1439
  const [mcpTooltip, setMcpTooltip] = createSignal("MCP: starting...");
@@ -1464,7 +1464,7 @@ const TitleBar = () => {
1464
1464
  window.vessel.ui.setSettingsVisibility(true);
1465
1465
  };
1466
1466
  return (() => {
1467
- var _el$ = _tmpl$$h(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$3.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling;
1467
+ var _el$ = _tmpl$$i(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$3.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling;
1468
1468
  _el$4.$$click = handleMcpClick;
1469
1469
  _el$6.$$click = () => window.vessel.window.minimize();
1470
1470
  _el$7.$$click = () => window.vessel.window.maximize();
@@ -1620,7 +1620,9 @@ const DEFAULT_RUNTIME_STATE = {
1620
1620
  transcript: [],
1621
1621
  mcpStatus: "stopped",
1622
1622
  flowState: null,
1623
- taskTracker: null
1623
+ taskTracker: null,
1624
+ canUndo: false,
1625
+ undoInfo: null
1624
1626
  };
1625
1627
  const [runtimeState, setRuntimeState] = createSignal(
1626
1628
  DEFAULT_RUNTIME_STATE
@@ -1657,6 +1659,8 @@ function useRuntime() {
1657
1659
  resolveApproval: (approvalId, approved) => window.vessel.ai.resolveApproval(approvalId, approved),
1658
1660
  createCheckpoint: (name, note) => window.vessel.ai.createCheckpoint(name, note),
1659
1661
  restoreCheckpoint: (checkpointId) => window.vessel.ai.restoreCheckpoint(checkpointId),
1662
+ updateCheckpointNote: (checkpointId, note) => window.vessel.ai.updateCheckpointNote(checkpointId, note),
1663
+ undoLastAction: () => window.vessel.ai.undoLastAction(),
1660
1664
  captureSession: (note) => window.vessel.ai.captureSession(note),
1661
1665
  restoreSession: () => window.vessel.ai.restoreSession()
1662
1666
  };
@@ -1769,7 +1773,7 @@ function getAgentPresence(state, currentTime = Date.now()) {
1769
1773
  }
1770
1774
  return "idle";
1771
1775
  }
1772
- var _tmpl$$g = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$e = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$b = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list><button class=tab-new data-tooltip="New Tab">+`), _tmpl$4$b = /* @__PURE__ */ template(`<div role=tab><span class=tab-title></span><button class=tab-close>×`), _tmpl$5$a = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$6$9 = /* @__PURE__ */ template(`<span class=tab-loading>`);
1776
+ var _tmpl$$h = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$f = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$c = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list><button class=tab-new data-tooltip="New Tab">+`), _tmpl$4$c = /* @__PURE__ */ template(`<div role=tab><span class=tab-title></span><button class=tab-close>×`), _tmpl$5$b = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$6$a = /* @__PURE__ */ template(`<span class=tab-loading>`);
1773
1777
  const TAB_CLOSE_MS = 200;
1774
1778
  function stringToHue(str) {
1775
1779
  let hash = 0;
@@ -1796,14 +1800,14 @@ const TabFavicon = (props) => {
1796
1800
  },
1797
1801
  get fallback() {
1798
1802
  return (() => {
1799
- var _el$2 = _tmpl$2$e();
1803
+ var _el$2 = _tmpl$2$f();
1800
1804
  insert(_el$2, letter);
1801
1805
  createRenderEffect((_$p) => setStyleProperty(_el$2, "--favicon-hue", `${hue()}`));
1802
1806
  return _el$2;
1803
1807
  })();
1804
1808
  },
1805
1809
  get children() {
1806
- var _el$ = _tmpl$$g();
1810
+ var _el$ = _tmpl$$h();
1807
1811
  _el$.addEventListener("error", () => setFailed(true));
1808
1812
  createRenderEffect(() => setAttribute(_el$, "src", props.favicon));
1809
1813
  return _el$;
@@ -1836,13 +1840,13 @@ const TabBar = () => {
1836
1840
  }, TAB_CLOSE_MS);
1837
1841
  };
1838
1842
  return (() => {
1839
- var _el$3 = _tmpl$3$b(), _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild;
1843
+ var _el$3 = _tmpl$3$c(), _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild;
1840
1844
  insert(_el$4, createComponent(For, {
1841
1845
  get each() {
1842
1846
  return tabs2();
1843
1847
  },
1844
1848
  children: (tab) => (() => {
1845
- var _el$6 = _tmpl$4$b(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
1849
+ var _el$6 = _tmpl$4$c(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
1846
1850
  _el$6.addEventListener("auxclick", (e) => {
1847
1851
  if (e.button === 1) handleClose(tab.id);
1848
1852
  });
@@ -1860,12 +1864,12 @@ const TabBar = () => {
1860
1864
  }), _el$7);
1861
1865
  insert(_el$6, (() => {
1862
1866
  var _c$ = memo(() => !!modelActiveTabIds().has(tab.id));
1863
- return () => _c$() && _tmpl$5$a();
1867
+ return () => _c$() && _tmpl$5$b();
1864
1868
  })(), _el$7);
1865
1869
  insert(_el$7, () => tab.title || "New Tab");
1866
1870
  insert(_el$6, (() => {
1867
1871
  var _c$2 = memo(() => !!tab.isLoading);
1868
- return () => _c$2() && _tmpl$6$9();
1872
+ return () => _c$2() && _tmpl$6$a();
1869
1873
  })(), _el$8);
1870
1874
  _el$8.$$click = (e) => {
1871
1875
  e.stopPropagation();
@@ -2074,7 +2078,7 @@ function buildPageSnapshotKey(rawUrl) {
2074
2078
  function matchesPageSnapshotUrl(left, right) {
2075
2079
  return buildPageSnapshotKey(left) === buildPageSnapshotKey(right);
2076
2080
  }
2077
- var _tmpl$$f = /* @__PURE__ */ template(`<button class="agent-status-badge recent"title="Page content has changed since your last visit"style=cursor:pointer;font-size:11px><span class=agent-status-dot aria-hidden=true style=background:#f59e0b></span><span class=agent-status-text>Changed`), _tmpl$2$d = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$3$a = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Changed recently`), _tmpl$4$a = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>What changed since </span></div><button class=page-diff-popup-close>&times;`), _tmpl$5$9 = /* @__PURE__ */ template(`<svg><path d="M3 3 L11 3 L11 9 Q7 13 3 9 Z"fill=none stroke=currentColor stroke-width=1.2 stroke-linejoin=round></svg>`, false, true, false), _tmpl$6$8 = /* @__PURE__ */ template(`<svg><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.4 stroke-linecap=round></svg>`, false, true, false), _tmpl$7$6 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$8$4 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"></form><div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text></span></div></div><div class=toolbar-actions><button class=nav-btn><svg width=14 height=14 viewBox="0 0 14 14"></svg></button><button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1></line></svg></button><button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round></line></svg></button><button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2></line></svg></button><button class=nav-btn data-tooltip=Settings><svg width=14 height=14 viewBox="0 0 14 14"><circle cx=7 cy=7 r=2 fill=none stroke=currentColor stroke-width=1.2></circle><path d="M7 1v2M7 11v2M1 7h2M11 7h2M2.8 2.8l1.4 1.4M9.8 9.8l1.4 1.4M11.2 2.8l-1.4 1.4M4.2 9.8l-1.4 1.4"stroke=currentColor stroke-width=1 stroke-linecap=round>`), _tmpl$9$4 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$0$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$1$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$10$4 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$11$4 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$12$4 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$13$3 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><span class=page-diff-section></span><span class=page-diff-summary>`), _tmpl$14$3 = /* @__PURE__ */ template(`<li>`);
2081
+ var _tmpl$$g = /* @__PURE__ */ template(`<button class="agent-status-badge recent"title="Open the What Changed timeline"style=cursor:pointer;font-size:11px><span class=agent-status-dot aria-hidden=true style=background:#f59e0b></span><span class=agent-status-text>What Changed?`), _tmpl$2$e = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$3$b = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Changed recently`), _tmpl$4$b = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>What changed since </span></div><div style=display:flex;gap:8px;align-items:center><button class=nav-btn title="Open the full What Changed timeline"style="height:24px;min-width:auto;padding:0 8px">Timeline</button><button class=page-diff-popup-close>&times;`), _tmpl$5$a = /* @__PURE__ */ template(`<svg><path d="M3 3 L11 3 L11 9 Q7 13 3 9 Z"fill=none stroke=currentColor stroke-width=1.2 stroke-linejoin=round></svg>`, false, true, false), _tmpl$6$9 = /* @__PURE__ */ template(`<svg><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.4 stroke-linecap=round></svg>`, false, true, false), _tmpl$7$7 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$8$5 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"></form><div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text></span></div></div><div class=toolbar-actions><button class=nav-btn><svg width=14 height=14 viewBox="0 0 14 14"></svg></button><button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1></line></svg></button><button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round></line></svg></button><button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2></line></svg></button><button class=nav-btn data-tooltip=Settings><svg width=14 height=14 viewBox="0 0 14 14"><circle cx=7 cy=7 r=2 fill=none stroke=currentColor stroke-width=1.2></circle><path d="M7 1v2M7 11v2M1 7h2M11 7h2M2.8 2.8l1.4 1.4M9.8 9.8l1.4 1.4M11.2 2.8l-1.4 1.4M4.2 9.8l-1.4 1.4"stroke=currentColor stroke-width=1 stroke-linecap=round>`), _tmpl$9$4 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$0$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$1$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$10$4 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$11$4 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$12$4 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$13$3 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><span class=page-diff-section></span><span class=page-diff-summary>`), _tmpl$14$3 = /* @__PURE__ */ template(`<li>`);
2078
2082
  const AddressBar = () => {
2079
2083
  const {
2080
2084
  activeTab,
@@ -2112,6 +2116,14 @@ const AddressBar = () => {
2112
2116
  diffCollapseTimer = null;
2113
2117
  }, 8e3);
2114
2118
  };
2119
+ const openDiffTimeline = async () => {
2120
+ setDiffExpanded(false);
2121
+ if (diffCollapseTimer) {
2122
+ clearTimeout(diffCollapseTimer);
2123
+ diffCollapseTimer = null;
2124
+ }
2125
+ await window.vessel.ui.openSidebarTab("diff");
2126
+ };
2115
2127
  const formatRelativeTime = (isoDate) => {
2116
2128
  const diff = Date.now() - new Date(isoDate).getTime();
2117
2129
  const mins = Math.floor(diff / 6e4);
@@ -2188,9 +2200,9 @@ const AddressBar = () => {
2188
2200
  };
2189
2201
  const formatSectionLabel = (section) => section === "title" ? "Title" : section === "headings" ? "Headings" : "Content";
2190
2202
  return (() => {
2191
- var _el$ = _tmpl$8$4(), _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$24 = _el$6.nextSibling, _el$25 = _el$24.firstChild, _el$26 = _el$25.firstChild, _el$30 = _el$25.nextSibling, _el$31 = _el$30.nextSibling, _el$32 = _el$31.nextSibling;
2192
- _el$32.firstChild;
2193
- var _el$35 = _el$32.nextSibling;
2203
+ var _el$ = _tmpl$8$5(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$2.nextSibling, _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild, _el$9 = _el$7.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$26 = _el$6.nextSibling, _el$27 = _el$26.firstChild, _el$28 = _el$27.firstChild, _el$32 = _el$27.nextSibling, _el$33 = _el$32.nextSibling, _el$34 = _el$33.nextSibling;
2204
+ _el$34.firstChild;
2205
+ var _el$37 = _el$34.nextSibling;
2194
2206
  addEventListener(_el$3, "click", goBack, true);
2195
2207
  addEventListener(_el$4, "click", goForward, true);
2196
2208
  addEventListener(_el$5, "click", reload, true);
@@ -2206,8 +2218,8 @@ const AddressBar = () => {
2206
2218
  return pageDiff();
2207
2219
  },
2208
2220
  get children() {
2209
- var _el$10 = _tmpl$$f();
2210
- _el$10.$$click = () => setDiffExpanded(!diffExpanded());
2221
+ var _el$10 = _tmpl$$g();
2222
+ _el$10.$$click = () => void openDiffTimeline();
2211
2223
  return _el$10;
2212
2224
  }
2213
2225
  }), null);
@@ -2216,42 +2228,43 @@ const AddressBar = () => {
2216
2228
  return memo(() => !!pageDiff())() && diffExpanded();
2217
2229
  },
2218
2230
  get children() {
2219
- var _el$11 = _tmpl$4$a(), _el$12 = _el$11.firstChild, _el$13 = _el$12.firstChild, _el$14 = _el$13.firstChild;
2231
+ var _el$11 = _tmpl$4$b(), _el$12 = _el$11.firstChild, _el$13 = _el$12.firstChild, _el$14 = _el$13.firstChild;
2220
2232
  _el$14.firstChild;
2221
- var _el$21 = _el$13.nextSibling;
2233
+ var _el$21 = _el$13.nextSibling, _el$22 = _el$21.firstChild, _el$23 = _el$22.nextSibling;
2222
2234
  insert(_el$14, () => formatRelativeTime(pageDiff().oldSnapshot.capturedAt), null);
2223
2235
  insert(_el$13, createComponent(Show, {
2224
2236
  get when() {
2225
2237
  return memo(() => !!((pageDiff().burstCount || 0) > 1 && pageDiff().firstDetectedAt))() && pageDiff().lastDetectedAt;
2226
2238
  },
2227
2239
  get children() {
2228
- var _el$16 = _tmpl$2$d(), _el$17 = _el$16.firstChild, _el$20 = _el$17.nextSibling;
2240
+ var _el$16 = _tmpl$2$e(), _el$17 = _el$16.firstChild, _el$20 = _el$17.nextSibling;
2229
2241
  _el$20.nextSibling;
2230
2242
  insert(_el$16, () => pageDiff().burstCount, _el$20);
2231
2243
  insert(_el$16, () => formatElapsed(pageDiff().firstDetectedAt, pageDiff().lastDetectedAt), null);
2232
2244
  return _el$16;
2233
2245
  }
2234
2246
  }), null);
2235
- _el$21.$$click = () => setDiffExpanded(false);
2247
+ _el$22.$$click = () => void openDiffTimeline();
2248
+ _el$23.$$click = () => setDiffExpanded(false);
2236
2249
  insert(_el$11, createComponent(Show, {
2237
2250
  get when() {
2238
2251
  return memo(() => !!pageDiff().recentBursts?.length)() && (pageDiff().recentBursts?.length || 0) > 1;
2239
2252
  },
2240
2253
  get children() {
2241
- var _el$22 = _tmpl$3$a();
2242
- _el$22.firstChild;
2243
- insert(_el$22, createComponent(For, {
2254
+ var _el$24 = _tmpl$3$b();
2255
+ _el$24.firstChild;
2256
+ insert(_el$24, createComponent(For, {
2244
2257
  get each() {
2245
2258
  return pageDiff().recentBursts;
2246
2259
  },
2247
2260
  children: (burst) => (() => {
2248
- var _el$36 = _tmpl$9$4(), _el$37 = _el$36.firstChild, _el$38 = _el$37.nextSibling;
2249
- insert(_el$37, () => formatRelativeTime(burst.detectedAt));
2250
- insert(_el$38, () => burst.summary);
2251
- return _el$36;
2261
+ var _el$38 = _tmpl$9$4(), _el$39 = _el$38.firstChild, _el$40 = _el$39.nextSibling;
2262
+ insert(_el$39, () => formatRelativeTime(burst.detectedAt));
2263
+ insert(_el$40, () => burst.summary);
2264
+ return _el$38;
2252
2265
  })()
2253
2266
  }), null);
2254
- return _el$22;
2267
+ return _el$24;
2255
2268
  }
2256
2269
  }), null);
2257
2270
  insert(_el$11, createComponent(For, {
@@ -2259,132 +2272,132 @@ const AddressBar = () => {
2259
2272
  return pageDiff().changes;
2260
2273
  },
2261
2274
  children: (change) => (() => {
2262
- var _el$39 = _tmpl$13$3(), _el$40 = _el$39.firstChild, _el$41 = _el$40.firstChild, _el$42 = _el$41.nextSibling;
2263
- insert(_el$41, () => formatSectionLabel(change.section));
2264
- insert(_el$42, () => change.summary);
2265
- insert(_el$39, createComponent(Show, {
2275
+ var _el$41 = _tmpl$13$3(), _el$42 = _el$41.firstChild, _el$43 = _el$42.firstChild, _el$44 = _el$43.nextSibling;
2276
+ insert(_el$43, () => formatSectionLabel(change.section));
2277
+ insert(_el$44, () => change.summary);
2278
+ insert(_el$41, createComponent(Show, {
2266
2279
  get when() {
2267
2280
  return change.before || change.after;
2268
2281
  },
2269
2282
  get children() {
2270
- var _el$43 = _tmpl$10$4();
2271
- insert(_el$43, createComponent(Show, {
2283
+ var _el$45 = _tmpl$10$4();
2284
+ insert(_el$45, createComponent(Show, {
2272
2285
  get when() {
2273
2286
  return change.before;
2274
2287
  },
2275
2288
  get children() {
2276
- var _el$44 = _tmpl$0$4(), _el$45 = _el$44.firstChild, _el$46 = _el$45.nextSibling;
2277
- insert(_el$46, () => change.before);
2278
- return _el$44;
2289
+ var _el$46 = _tmpl$0$4(), _el$47 = _el$46.firstChild, _el$48 = _el$47.nextSibling;
2290
+ insert(_el$48, () => change.before);
2291
+ return _el$46;
2279
2292
  }
2280
2293
  }), null);
2281
- insert(_el$43, createComponent(Show, {
2294
+ insert(_el$45, createComponent(Show, {
2282
2295
  get when() {
2283
2296
  return change.after;
2284
2297
  },
2285
2298
  get children() {
2286
- var _el$47 = _tmpl$1$4(), _el$48 = _el$47.firstChild, _el$49 = _el$48.nextSibling;
2287
- insert(_el$49, () => change.after);
2288
- return _el$47;
2299
+ var _el$49 = _tmpl$1$4(), _el$50 = _el$49.firstChild, _el$51 = _el$50.nextSibling;
2300
+ insert(_el$51, () => change.after);
2301
+ return _el$49;
2289
2302
  }
2290
2303
  }), null);
2291
- return _el$43;
2304
+ return _el$45;
2292
2305
  }
2293
2306
  }), null);
2294
- insert(_el$39, createComponent(Show, {
2307
+ insert(_el$41, createComponent(Show, {
2295
2308
  get when() {
2296
2309
  return change.addedItems?.length;
2297
2310
  },
2298
2311
  get children() {
2299
- var _el$50 = _tmpl$11$4(), _el$51 = _el$50.firstChild, _el$52 = _el$51.nextSibling;
2300
- insert(_el$52, createComponent(For, {
2312
+ var _el$52 = _tmpl$11$4(), _el$53 = _el$52.firstChild, _el$54 = _el$53.nextSibling;
2313
+ insert(_el$54, createComponent(For, {
2301
2314
  get each() {
2302
2315
  return change.addedItems;
2303
2316
  },
2304
2317
  children: (item) => (() => {
2305
- var _el$56 = _tmpl$14$3();
2306
- insert(_el$56, item);
2307
- return _el$56;
2318
+ var _el$58 = _tmpl$14$3();
2319
+ insert(_el$58, item);
2320
+ return _el$58;
2308
2321
  })()
2309
2322
  }));
2310
- return _el$50;
2323
+ return _el$52;
2311
2324
  }
2312
2325
  }), null);
2313
- insert(_el$39, createComponent(Show, {
2326
+ insert(_el$41, createComponent(Show, {
2314
2327
  get when() {
2315
2328
  return change.removedItems?.length;
2316
2329
  },
2317
2330
  get children() {
2318
- var _el$53 = _tmpl$12$4(), _el$54 = _el$53.firstChild, _el$55 = _el$54.nextSibling;
2319
- insert(_el$55, createComponent(For, {
2331
+ var _el$55 = _tmpl$12$4(), _el$56 = _el$55.firstChild, _el$57 = _el$56.nextSibling;
2332
+ insert(_el$57, createComponent(For, {
2320
2333
  get each() {
2321
2334
  return change.removedItems;
2322
2335
  },
2323
2336
  children: (item) => (() => {
2324
- var _el$57 = _tmpl$14$3();
2325
- insert(_el$57, item);
2326
- return _el$57;
2337
+ var _el$59 = _tmpl$14$3();
2338
+ insert(_el$59, item);
2339
+ return _el$59;
2327
2340
  })()
2328
2341
  }));
2329
- return _el$53;
2342
+ return _el$55;
2330
2343
  }
2331
2344
  }), null);
2332
- createRenderEffect(() => className(_el$39, `page-diff-item page-diff-${change.kind}`));
2333
- return _el$39;
2345
+ createRenderEffect(() => className(_el$41, `page-diff-item page-diff-${change.kind}`));
2346
+ return _el$41;
2334
2347
  })()
2335
2348
  }), null);
2336
2349
  return _el$11;
2337
2350
  }
2338
- }), _el$24);
2339
- _el$25.$$click = async () => {
2351
+ }), _el$26);
2352
+ _el$27.$$click = async () => {
2340
2353
  const id = activeTabId2();
2341
2354
  if (!id) return;
2342
2355
  await toggleAdBlock(id);
2343
2356
  };
2344
- insert(_el$26, createComponent(Show, {
2357
+ insert(_el$28, createComponent(Show, {
2345
2358
  get when() {
2346
2359
  return activeTab()?.adBlockingEnabled;
2347
2360
  },
2348
2361
  get children() {
2349
- return _tmpl$5$9();
2362
+ return _tmpl$5$a();
2350
2363
  }
2351
2364
  }), null);
2352
- insert(_el$26, createComponent(Show, {
2365
+ insert(_el$28, createComponent(Show, {
2353
2366
  get when() {
2354
2367
  return !activeTab()?.adBlockingEnabled;
2355
2368
  },
2356
2369
  get children() {
2357
- return [_tmpl$5$9(), _tmpl$6$8()];
2370
+ return [_tmpl$5$a(), _tmpl$6$9()];
2358
2371
  }
2359
2372
  }), null);
2360
- _el$30.$$click = () => window.vessel.content.toggleReader();
2361
- addEventListener(_el$31, "click", toggleDevTools, true);
2362
- addEventListener(_el$32, "click", toggleSidebar, true);
2363
- insert(_el$32, createComponent(Show, {
2373
+ _el$32.$$click = () => window.vessel.content.toggleReader();
2374
+ addEventListener(_el$33, "click", toggleDevTools, true);
2375
+ addEventListener(_el$34, "click", toggleSidebar, true);
2376
+ insert(_el$34, createComponent(Show, {
2364
2377
  get when() {
2365
2378
  return pendingApprovalCount() > 0;
2366
2379
  },
2367
2380
  get children() {
2368
- var _el$34 = _tmpl$7$6();
2369
- insert(_el$34, pendingApprovalCount);
2370
- createRenderEffect(() => setAttribute(_el$34, "aria-label", `${pendingApprovalCount()} pending`));
2371
- return _el$34;
2381
+ var _el$36 = _tmpl$7$7();
2382
+ insert(_el$36, pendingApprovalCount);
2383
+ createRenderEffect(() => setAttribute(_el$36, "aria-label", `${pendingApprovalCount()} pending`));
2384
+ return _el$36;
2372
2385
  }
2373
2386
  }), null);
2374
- addEventListener(_el$35, "click", openSettings, true);
2387
+ addEventListener(_el$37, "click", openSettings, true);
2375
2388
  createRenderEffect((_p$) => {
2376
2389
  var _v$ = !activeTab()?.canGoBack, _v$2 = !activeTab()?.canGoForward, _v$3 = `agent-status-badge ${agentPresence()}`, _v$4 = agentStatusMessage() || (agentPresence() === "active" ? "Agent is actively using the browser" : agentPresence() === "recent" ? "Agent is connected" : "No agent connection detected"), _v$5 = !!activeTab()?.adBlockingEnabled, _v$6 = !activeTab()?.adBlockingEnabled, _v$7 = activeTab()?.adBlockingEnabled ? "Ad Block: On (click to disable)" : "Ad Block: Off (click to enable)", _v$8 = !!activeTab()?.isReaderMode, _v$9 = !!devtoolsPanelOpen2(), _v$0 = !!(pendingApprovalCount() > 0), _v$1 = pendingApprovalCount() > 0 ? `AI Sidebar — ${pendingApprovalCount()} pending approval${pendingApprovalCount() > 1 ? "s" : ""}` : "AI Sidebar (Ctrl+Shift+L)";
2377
2390
  _v$ !== _p$.e && (_el$3.disabled = _p$.e = _v$);
2378
2391
  _v$2 !== _p$.t && (_el$4.disabled = _p$.t = _v$2);
2379
2392
  _v$3 !== _p$.a && className(_el$9, _p$.a = _v$3);
2380
2393
  _v$4 !== _p$.o && setAttribute(_el$9, "title", _p$.o = _v$4);
2381
- _v$5 !== _p$.i && _el$25.classList.toggle("active", _p$.i = _v$5);
2382
- _v$6 !== _p$.n && _el$25.classList.toggle("nav-btn-muted", _p$.n = _v$6);
2383
- _v$7 !== _p$.s && setAttribute(_el$25, "title", _p$.s = _v$7);
2384
- _v$8 !== _p$.h && _el$30.classList.toggle("active", _p$.h = _v$8);
2385
- _v$9 !== _p$.r && _el$31.classList.toggle("active", _p$.r = _v$9);
2386
- _v$0 !== _p$.d && _el$32.classList.toggle("has-approvals", _p$.d = _v$0);
2387
- _v$1 !== _p$.l && setAttribute(_el$32, "title", _p$.l = _v$1);
2394
+ _v$5 !== _p$.i && _el$27.classList.toggle("active", _p$.i = _v$5);
2395
+ _v$6 !== _p$.n && _el$27.classList.toggle("nav-btn-muted", _p$.n = _v$6);
2396
+ _v$7 !== _p$.s && setAttribute(_el$27, "title", _p$.s = _v$7);
2397
+ _v$8 !== _p$.h && _el$32.classList.toggle("active", _p$.h = _v$8);
2398
+ _v$9 !== _p$.r && _el$33.classList.toggle("active", _p$.r = _v$9);
2399
+ _v$0 !== _p$.d && _el$34.classList.toggle("has-approvals", _p$.d = _v$0);
2400
+ _v$1 !== _p$.l && setAttribute(_el$34, "title", _p$.l = _v$1);
2388
2401
  return _p$;
2389
2402
  }, {
2390
2403
  e: void 0,
@@ -2404,7 +2417,7 @@ const AddressBar = () => {
2404
2417
  })();
2405
2418
  };
2406
2419
  delegateEvents(["click", "input"]);
2407
- var _tmpl$$e = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite aria-atomic=true>`), _tmpl$2$c = /* @__PURE__ */ template(`<div class=bookmark-toast role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
2420
+ var _tmpl$$f = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite aria-atomic=true>`), _tmpl$2$d = /* @__PURE__ */ template(`<div class=bookmark-toast role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
2408
2421
  const TOAST_DURATION_MS$1 = 4200;
2409
2422
  const TOAST_EXIT_MS$2 = 300;
2410
2423
  function isBookmarkToastCandidate(action) {
@@ -2464,13 +2477,13 @@ const BookmarkNotifications = () => {
2464
2477
  timeoutIds.clear();
2465
2478
  });
2466
2479
  return (() => {
2467
- var _el$ = _tmpl$$e();
2480
+ var _el$ = _tmpl$$f();
2468
2481
  insert(_el$, createComponent(For, {
2469
2482
  get each() {
2470
2483
  return toasts();
2471
2484
  },
2472
2485
  children: (toast) => (() => {
2473
- var _el$2 = _tmpl$2$c(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
2486
+ var _el$2 = _tmpl$2$d(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
2474
2487
  insert(_el$3, () => toast.title);
2475
2488
  insert(_el$4, () => toast.message);
2476
2489
  createRenderEffect(() => _el$2.classList.toggle("bookmark-toast-leaving", !!toast.leaving));
@@ -2480,7 +2493,7 @@ const BookmarkNotifications = () => {
2480
2493
  return _el$;
2481
2494
  })();
2482
2495
  };
2483
- var _tmpl$$d = /* @__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>`);
2496
+ var _tmpl$$e = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite><div class="bookmark-toast highlight-toast"role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
2484
2497
  const TOAST_DURATION_MS = 3e3;
2485
2498
  const TOAST_EXIT_MS$1 = 300;
2486
2499
  const HighlightNotifications = (props) => {
@@ -2519,7 +2532,7 @@ const HighlightNotifications = (props) => {
2519
2532
  return memo(() => !!visible())() && current();
2520
2533
  },
2521
2534
  get children() {
2522
- var _el$ = _tmpl$$d(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
2535
+ var _el$ = _tmpl$$e(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
2523
2536
  insert(_el$3, () => current().title);
2524
2537
  insert(_el$4, () => current().message);
2525
2538
  createRenderEffect(() => _el$2.classList.toggle("bookmark-toast-leaving", !!leaving()));
@@ -2527,7 +2540,7 @@ const HighlightNotifications = (props) => {
2527
2540
  }
2528
2541
  });
2529
2542
  };
2530
- var _tmpl$$c = /* @__PURE__ */ template(`<div class=download-toast-stack aria-live=polite>`), _tmpl$2$b = /* @__PURE__ */ template(`<span class=download-toast-done>&#10003;`), _tmpl$3$9 = /* @__PURE__ */ template(`<span class=download-toast-failed>!`), _tmpl$4$9 = /* @__PURE__ */ template(`<div class=download-toast-bar-track><div class=download-toast-bar-fill>`), _tmpl$5$8 = /* @__PURE__ */ template(`<div class=download-toast-size>`), _tmpl$6$7 = /* @__PURE__ */ template(`<div class="download-toast-size download-toast-size-done"> downloaded`), _tmpl$7$5 = /* @__PURE__ */ template(`<div class=download-toast role=status><div class=download-toast-header><span class=download-toast-filename>`);
2543
+ var _tmpl$$d = /* @__PURE__ */ template(`<div class=download-toast-stack aria-live=polite>`), _tmpl$2$c = /* @__PURE__ */ template(`<span class=download-toast-done>&#10003;`), _tmpl$3$a = /* @__PURE__ */ template(`<span class=download-toast-failed>!`), _tmpl$4$a = /* @__PURE__ */ template(`<div class=download-toast-bar-track><div class=download-toast-bar-fill>`), _tmpl$5$9 = /* @__PURE__ */ template(`<div class=download-toast-size>`), _tmpl$6$8 = /* @__PURE__ */ template(`<div class="download-toast-size download-toast-size-done"> downloaded`), _tmpl$7$6 = /* @__PURE__ */ template(`<div class=download-toast role=status><div class=download-toast-header><span class=download-toast-filename>`);
2531
2544
  const TOAST_DONE_DURATION_MS = 4200;
2532
2545
  const TOAST_EXIT_MS = 300;
2533
2546
  function formatBytes(bytes) {
@@ -2618,20 +2631,20 @@ const DownloadToast = () => {
2618
2631
  return Math.min(100, Math.round(d.receivedBytes / d.totalBytes * 100));
2619
2632
  };
2620
2633
  return (() => {
2621
- var _el$ = _tmpl$$c();
2634
+ var _el$ = _tmpl$$d();
2622
2635
  insert(_el$, createComponent(For, {
2623
2636
  get each() {
2624
2637
  return downloads();
2625
2638
  },
2626
2639
  children: (dl) => (() => {
2627
- var _el$2 = _tmpl$7$5(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
2640
+ var _el$2 = _tmpl$7$6(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
2628
2641
  insert(_el$4, () => dl.filename);
2629
2642
  insert(_el$3, createComponent(Show, {
2630
2643
  get when() {
2631
2644
  return dl.state === "completed";
2632
2645
  },
2633
2646
  get children() {
2634
- return _tmpl$2$b();
2647
+ return _tmpl$2$c();
2635
2648
  }
2636
2649
  }), null);
2637
2650
  insert(_el$3, createComponent(Show, {
@@ -2639,7 +2652,7 @@ const DownloadToast = () => {
2639
2652
  return dl.state === "cancelled" || dl.state === "interrupted";
2640
2653
  },
2641
2654
  get children() {
2642
- return _tmpl$3$9();
2655
+ return _tmpl$3$a();
2643
2656
  }
2644
2657
  }), null);
2645
2658
  insert(_el$2, createComponent(Show, {
@@ -2648,11 +2661,11 @@ const DownloadToast = () => {
2648
2661
  },
2649
2662
  get children() {
2650
2663
  return [(() => {
2651
- var _el$7 = _tmpl$4$9(), _el$8 = _el$7.firstChild;
2664
+ var _el$7 = _tmpl$4$a(), _el$8 = _el$7.firstChild;
2652
2665
  createRenderEffect((_$p) => setStyleProperty(_el$8, "width", `${progressPercent(dl)}%`));
2653
2666
  return _el$7;
2654
2667
  })(), (() => {
2655
- var _el$9 = _tmpl$5$8();
2668
+ var _el$9 = _tmpl$5$9();
2656
2669
  insert(_el$9, () => formatBytes(dl.receivedBytes), null);
2657
2670
  insert(_el$9, createComponent(Show, {
2658
2671
  get when() {
@@ -2671,7 +2684,7 @@ const DownloadToast = () => {
2671
2684
  return dl.state === "completed";
2672
2685
  },
2673
2686
  get children() {
2674
- var _el$0 = _tmpl$6$7(), _el$1 = _el$0.firstChild;
2687
+ var _el$0 = _tmpl$6$8(), _el$1 = _el$0.firstChild;
2675
2688
  insert(_el$0, () => formatBytes(dl.receivedBytes), _el$1);
2676
2689
  return _el$0;
2677
2690
  }
@@ -2683,7 +2696,7 @@ const DownloadToast = () => {
2683
2696
  return _el$;
2684
2697
  })();
2685
2698
  };
2686
- var _tmpl$$b = /* @__PURE__ */ template(`<div class=find-bar><input class=find-bar-input type=text placeholder="Find in page..."><button class=find-bar-btn title="Previous (Shift+Enter)">&#9650;</button><button class=find-bar-btn title="Next (Enter)">&#9660;</button><button class="find-bar-btn find-bar-close"title="Close (Escape)">&times;`), _tmpl$2$a = /* @__PURE__ */ template(`<span class=find-bar-count>`);
2699
+ var _tmpl$$c = /* @__PURE__ */ template(`<div class=find-bar><input class=find-bar-input type=text placeholder="Find in page..."><button class=find-bar-btn title="Previous (Shift+Enter)">&#9650;</button><button class=find-bar-btn title="Next (Enter)">&#9660;</button><button class="find-bar-btn find-bar-close"title="Close (Escape)">&times;`), _tmpl$2$b = /* @__PURE__ */ template(`<span class=find-bar-count>`);
2687
2700
  const FindBar = () => {
2688
2701
  const [open, setOpen] = createSignal(false);
2689
2702
  const [query, setQuery] = createSignal("");
@@ -2761,7 +2774,7 @@ const FindBar = () => {
2761
2774
  return open();
2762
2775
  },
2763
2776
  get children() {
2764
- var _el$ = _tmpl$$b(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling;
2777
+ var _el$ = _tmpl$$c(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling;
2765
2778
  _el$2.$$input = (e) => handleInput(e.currentTarget.value);
2766
2779
  var _ref$ = inputRef;
2767
2780
  typeof _ref$ === "function" ? use(_ref$, _el$2) : inputRef = _el$2;
@@ -2771,7 +2784,7 @@ const FindBar = () => {
2771
2784
  return result();
2772
2785
  },
2773
2786
  children: (r) => (() => {
2774
- var _el$6 = _tmpl$2$a();
2787
+ var _el$6 = _tmpl$2$b();
2775
2788
  insert(_el$6, (() => {
2776
2789
  var _c$ = memo(() => r().matches > 0);
2777
2790
  return () => _c$() ? `${r().activeMatchOrdinal} / ${r().matches}` : "No results";
@@ -2788,7 +2801,7 @@ const FindBar = () => {
2788
2801
  });
2789
2802
  };
2790
2803
  delegateEvents(["input", "click"]);
2791
- var _tmpl$$a = /* @__PURE__ */ template(`<div class=flow-progress>`), _tmpl$2$9 = /* @__PURE__ */ template(`<div class=flow-progress-hint>Last: `), _tmpl$3$8 = /* @__PURE__ */ template(`<div class=flow-progress-hint>Next: `), _tmpl$4$8 = /* @__PURE__ */ template(`<div class=flow-progress-section><div class=flow-progress-header><span class=flow-progress-goal></span><span class=flow-progress-pct>%</span></div><div class=flow-progress-bar-track><div class=flow-progress-bar-fill></div></div><div class=flow-steps>`), _tmpl$5$7 = /* @__PURE__ */ template(`<div><span class=flow-step-dot></span><span class=flow-step-label>`);
2804
+ var _tmpl$$b = /* @__PURE__ */ template(`<div class=flow-progress>`), _tmpl$2$a = /* @__PURE__ */ template(`<div class=flow-progress-hint>Last: `), _tmpl$3$9 = /* @__PURE__ */ template(`<div class=flow-progress-hint>Next: `), _tmpl$4$9 = /* @__PURE__ */ template(`<div class=flow-progress-section><div class=flow-progress-header><span class=flow-progress-goal></span><span class=flow-progress-pct>%</span></div><div class=flow-progress-bar-track><div class=flow-progress-bar-fill></div></div><div class=flow-steps>`), _tmpl$5$8 = /* @__PURE__ */ template(`<div><span class=flow-step-dot></span><span class=flow-step-label>`);
2792
2805
  const FlowProgress = () => {
2793
2806
  const {
2794
2807
  runtimeState: runtimeState2
@@ -2819,13 +2832,13 @@ const FlowProgress = () => {
2819
2832
  return flow() || tracker();
2820
2833
  },
2821
2834
  get children() {
2822
- var _el$ = _tmpl$$a();
2835
+ var _el$ = _tmpl$$b();
2823
2836
  insert(_el$, createComponent(Show, {
2824
2837
  get when() {
2825
2838
  return tracker();
2826
2839
  },
2827
2840
  children: (t) => (() => {
2828
- var _el$2 = _tmpl$4$8(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$3.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$7.nextSibling;
2841
+ var _el$2 = _tmpl$4$9(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$3.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$7.nextSibling;
2829
2842
  insert(_el$4, () => t().goal);
2830
2843
  insert(_el$5, () => progressPercent(t().steps), _el$6);
2831
2844
  insert(_el$9, createComponent(For, {
@@ -2833,7 +2846,7 @@ const FlowProgress = () => {
2833
2846
  return t().steps;
2834
2847
  },
2835
2848
  children: (step) => (() => {
2836
- var _el$12 = _tmpl$5$7(), _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling;
2849
+ var _el$12 = _tmpl$5$8(), _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling;
2837
2850
  insert(_el$14, () => step.label);
2838
2851
  createRenderEffect(() => className(_el$12, `flow-step ${stepStatusClass(step.status)}`));
2839
2852
  return _el$12;
@@ -2844,7 +2857,7 @@ const FlowProgress = () => {
2844
2857
  return t().lastAction;
2845
2858
  },
2846
2859
  get children() {
2847
- var _el$0 = _tmpl$2$9();
2860
+ var _el$0 = _tmpl$2$a();
2848
2861
  _el$0.firstChild;
2849
2862
  insert(_el$0, () => t().lastAction, null);
2850
2863
  return _el$0;
@@ -2855,7 +2868,7 @@ const FlowProgress = () => {
2855
2868
  return memo(() => !!t().nextHint)() && !t().steps.every((s) => s.status === "done");
2856
2869
  },
2857
2870
  get children() {
2858
- var _el$10 = _tmpl$3$8();
2871
+ var _el$10 = _tmpl$3$9();
2859
2872
  _el$10.firstChild;
2860
2873
  insert(_el$10, () => t().nextHint, null);
2861
2874
  return _el$10;
@@ -2870,7 +2883,7 @@ const FlowProgress = () => {
2870
2883
  return memo(() => !!flow())() && !tracker();
2871
2884
  },
2872
2885
  children: (f) => (() => {
2873
- var _el$15 = _tmpl$4$8(), _el$16 = _el$15.firstChild, _el$17 = _el$16.firstChild, _el$18 = _el$17.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$16.nextSibling, _el$21 = _el$20.firstChild, _el$22 = _el$20.nextSibling;
2886
+ var _el$15 = _tmpl$4$9(), _el$16 = _el$15.firstChild, _el$17 = _el$16.firstChild, _el$18 = _el$17.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$16.nextSibling, _el$21 = _el$20.firstChild, _el$22 = _el$20.nextSibling;
2874
2887
  insert(_el$17, () => f().goal);
2875
2888
  insert(_el$18, () => progressPercent(f().steps), _el$19);
2876
2889
  insert(_el$22, createComponent(For, {
@@ -2878,7 +2891,7 @@ const FlowProgress = () => {
2878
2891
  return f().steps;
2879
2892
  },
2880
2893
  children: (step) => (() => {
2881
- var _el$23 = _tmpl$5$7(), _el$24 = _el$23.firstChild, _el$25 = _el$24.nextSibling;
2894
+ var _el$23 = _tmpl$5$8(), _el$24 = _el$23.firstChild, _el$25 = _el$24.nextSibling;
2882
2895
  insert(_el$25, () => step.label);
2883
2896
  createRenderEffect(() => className(_el$23, `flow-step ${stepStatusClass(step.status)}`));
2884
2897
  return _el$23;
@@ -2919,7 +2932,7 @@ function formatTime(iso, options) {
2919
2932
  ...options?.includeSeconds && { second: "2-digit" }
2920
2933
  });
2921
2934
  }
2922
- var _tmpl$$9 = /* @__PURE__ */ template(`<div class=agent-summary-hud>`), _tmpl$2$8 = /* @__PURE__ */ template(`<span class=agent-transcript-live><span class=agent-transcript-live-dot aria-hidden=true></span>Live`), _tmpl$3$7 = /* @__PURE__ */ template(`<div class=agent-transcript-list>`), _tmpl$4$7 = /* @__PURE__ */ template(`<aside class=agent-transcript-dock><div class=agent-transcript-header><div class=agent-transcript-title-row><span class=agent-transcript-title>Agent Transcript</span></div><div class=agent-transcript-actions><button class=agent-transcript-icon></button><button class=agent-transcript-icon data-tooltip=Hide>×`), _tmpl$5$6 = /* @__PURE__ */ template(`<span class=agent-summary-live-dot aria-hidden=true>`), _tmpl$6$6 = /* @__PURE__ */ template(`<span class=agent-summary-text>: `), _tmpl$7$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>`);
2935
+ var _tmpl$$a = /* @__PURE__ */ template(`<div class=agent-summary-hud>`), _tmpl$2$9 = /* @__PURE__ */ template(`<span class=agent-transcript-live><span class=agent-transcript-live-dot aria-hidden=true></span>Live`), _tmpl$3$8 = /* @__PURE__ */ template(`<div class=agent-transcript-list>`), _tmpl$4$8 = /* @__PURE__ */ template(`<aside class=agent-transcript-dock><div class=agent-transcript-header><div class=agent-transcript-title-row><span class=agent-transcript-title>Agent Transcript</span></div><div class=agent-transcript-actions><button class=agent-transcript-icon></button><button class=agent-transcript-icon data-tooltip=Hide>×`), _tmpl$5$7 = /* @__PURE__ */ template(`<span class=agent-summary-live-dot aria-hidden=true>`), _tmpl$6$7 = /* @__PURE__ */ template(`<span class=agent-summary-text>: `), _tmpl$7$5 = /* @__PURE__ */ template(`<article><div class=agent-transcript-meta><span class=agent-transcript-badge></span><span class=agent-transcript-time></span></div><div class=agent-transcript-text>`);
2923
2936
  const AgentTranscriptDock = () => {
2924
2937
  const {
2925
2938
  runtimeState: runtimeState2
@@ -2956,7 +2969,7 @@ const AgentTranscriptDock = () => {
2956
2969
  return isSummary();
2957
2970
  },
2958
2971
  get children() {
2959
- var _el$ = _tmpl$$9();
2972
+ var _el$ = _tmpl$$a();
2960
2973
  insert(_el$, createComponent(Show, {
2961
2974
  get when() {
2962
2975
  return latestEntry();
@@ -2966,10 +2979,10 @@ const AgentTranscriptDock = () => {
2966
2979
  return hasStreamingEntry();
2967
2980
  },
2968
2981
  get children() {
2969
- return _tmpl$5$6();
2982
+ return _tmpl$5$7();
2970
2983
  }
2971
2984
  }), (() => {
2972
- var _el$10 = _tmpl$6$6(), _el$11 = _el$10.firstChild;
2985
+ var _el$10 = _tmpl$6$7(), _el$11 = _el$10.firstChild;
2973
2986
  insert(_el$10, () => entry().title || entry().kind, _el$11);
2974
2987
  insert(_el$10, (() => {
2975
2988
  var _c$ = memo(() => entry().text.length > 80);
@@ -2985,7 +2998,7 @@ const AgentTranscriptDock = () => {
2985
2998
  return !isSummary();
2986
2999
  },
2987
3000
  get children() {
2988
- var _el$2 = _tmpl$4$7(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
3001
+ var _el$2 = _tmpl$4$8(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
2989
3002
  _el$4.firstChild;
2990
3003
  var _el$7 = _el$4.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling;
2991
3004
  insert(_el$4, createComponent(Show, {
@@ -2993,7 +3006,7 @@ const AgentTranscriptDock = () => {
2993
3006
  return hasStreamingEntry();
2994
3007
  },
2995
3008
  get children() {
2996
- return _tmpl$2$8();
3009
+ return _tmpl$2$9();
2997
3010
  }
2998
3011
  }), null);
2999
3012
  _el$8.$$click = () => setCollapsed((value) => !value);
@@ -3004,14 +3017,14 @@ const AgentTranscriptDock = () => {
3004
3017
  return !collapsed();
3005
3018
  },
3006
3019
  get children() {
3007
- var _el$0 = _tmpl$3$7();
3020
+ var _el$0 = _tmpl$3$8();
3008
3021
  use((el) => useScrollFade(el), _el$0);
3009
3022
  insert(_el$0, createComponent(For, {
3010
3023
  get each() {
3011
3024
  return visibleEntries();
3012
3025
  },
3013
3026
  children: (entry) => (() => {
3014
- var _el$12 = _tmpl$7$4(), _el$13 = _el$12.firstChild, _el$14 = _el$13.firstChild, _el$15 = _el$14.nextSibling, _el$16 = _el$13.nextSibling;
3027
+ var _el$12 = _tmpl$7$5(), _el$13 = _el$12.firstChild, _el$14 = _el$13.firstChild, _el$15 = _el$14.nextSibling, _el$16 = _el$13.nextSibling;
3015
3028
  insert(_el$14, () => entry.title || entry.kind);
3016
3029
  insert(_el$15, () => formatTime(entry.updatedAt));
3017
3030
  insert(_el$16, () => entry.text);
@@ -3376,7 +3389,7 @@ function useAnimatedPresence(isOpen, exitDurationMs) {
3376
3389
  });
3377
3390
  return { visible, closing };
3378
3391
  }
3379
- var _tmpl$$8 = /* @__PURE__ */ template(`<div class=command-bar-no-provider><p>Configure a chat provider to start using the AI assistant.</p><button class=command-bar-no-provider-btn>Open Settings <kbd>Ctrl+,`), _tmpl$2$7 = /* @__PURE__ */ template(`<div class=command-bar-recent><span class=command-bar-recent-label>Recent</span><div class=command-bar-recent-list>`), _tmpl$3$6 = /* @__PURE__ */ template(`<span>Try "summarize" or ask a question`), _tmpl$4$6 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=command-bar><form><div class=command-bar-icon><svg width=16 height=16 viewBox="0 0 16 16"><circle cx=8 cy=8 r=6 fill=none stroke=var(--accent-primary) stroke-width=1.5></circle><circle cx=6 cy=7 r=0.8 fill=var(--accent-primary)></circle><circle cx=10 cy=7 r=0.8 fill=var(--accent-primary)></circle><path d="M6 10c0.5 0.8 3.5 0.8 4 0"fill=none stroke=var(--accent-primary) stroke-width=0.8 stroke-linecap=round></path></svg></div><input class=command-bar-input type=text></form><div class=command-bar-hints><span><kbd>Enter</kbd> to ask</span><span><kbd>Esc</kbd> to close`), _tmpl$5$5 = /* @__PURE__ */ template(`<button class=command-bar-recent-item type=button>`), _tmpl$6$5 = /* @__PURE__ */ template(`<span>Set up a provider in Settings first`);
3392
+ var _tmpl$$9 = /* @__PURE__ */ template(`<div class=command-bar-no-provider><p>Configure a chat provider to start using the AI assistant.</p><button class=command-bar-no-provider-btn>Open Settings <kbd>Ctrl+,`), _tmpl$2$8 = /* @__PURE__ */ template(`<div class=command-bar-recent><span class=command-bar-recent-label>Recent</span><div class=command-bar-recent-list>`), _tmpl$3$7 = /* @__PURE__ */ template(`<span>Try "summarize" or ask a question`), _tmpl$4$7 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=command-bar><form><div class=command-bar-icon><svg width=16 height=16 viewBox="0 0 16 16"><circle cx=8 cy=8 r=6 fill=none stroke=var(--accent-primary) stroke-width=1.5></circle><circle cx=6 cy=7 r=0.8 fill=var(--accent-primary)></circle><circle cx=10 cy=7 r=0.8 fill=var(--accent-primary)></circle><path d="M6 10c0.5 0.8 3.5 0.8 4 0"fill=none stroke=var(--accent-primary) stroke-width=0.8 stroke-linecap=round></path></svg></div><input class=command-bar-input type=text></form><div class=command-bar-hints><span><kbd>Enter</kbd> to ask</span><span><kbd>Esc</kbd> to close`), _tmpl$5$6 = /* @__PURE__ */ template(`<button class=command-bar-recent-item type=button>`), _tmpl$6$6 = /* @__PURE__ */ template(`<span>Set up a provider in Settings first`);
3380
3393
  const COMMAND_BAR_EXIT_MS = 200;
3381
3394
  const CommandBar = () => {
3382
3395
  const {
@@ -3430,7 +3443,7 @@ const CommandBar = () => {
3430
3443
  return visible();
3431
3444
  },
3432
3445
  get children() {
3433
- var _el$ = _tmpl$4$6(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$10 = _el$3.nextSibling, _el$11 = _el$10.firstChild;
3446
+ var _el$ = _tmpl$4$7(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$10 = _el$3.nextSibling, _el$11 = _el$10.firstChild;
3434
3447
  _el$11.nextSibling;
3435
3448
  addEventListener(_el$, "click", closeCommandBar, true);
3436
3449
  _el$2.$$click = (e) => e.stopPropagation();
@@ -3444,7 +3457,7 @@ const CommandBar = () => {
3444
3457
  return !hasProvider();
3445
3458
  },
3446
3459
  get children() {
3447
- var _el$6 = _tmpl$$8(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
3460
+ var _el$6 = _tmpl$$9(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
3448
3461
  _el$8.$$click = () => {
3449
3462
  closeCommandBar();
3450
3463
  openSettings();
@@ -3457,13 +3470,13 @@ const CommandBar = () => {
3457
3470
  return memo(() => !!(hasProvider() && recentQueries2().length > 0))() && !input().trim();
3458
3471
  },
3459
3472
  get children() {
3460
- var _el$9 = _tmpl$2$7(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
3473
+ var _el$9 = _tmpl$2$8(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
3461
3474
  insert(_el$1, createComponent(For, {
3462
3475
  get each() {
3463
3476
  return recentQueries2();
3464
3477
  },
3465
3478
  children: (q) => (() => {
3466
- var _el$14 = _tmpl$5$5();
3479
+ var _el$14 = _tmpl$5$6();
3467
3480
  _el$14.$$click = () => void handleRecentClick(q);
3468
3481
  insert(_el$14, q);
3469
3482
  return _el$14;
@@ -3477,10 +3490,10 @@ const CommandBar = () => {
3477
3490
  return hasProvider();
3478
3491
  },
3479
3492
  get fallback() {
3480
- return _tmpl$6$5();
3493
+ return _tmpl$6$6();
3481
3494
  },
3482
3495
  get children() {
3483
- return _tmpl$3$6();
3496
+ return _tmpl$3$7();
3484
3497
  }
3485
3498
  }), null);
3486
3499
  createRenderEffect((_p$) => {
@@ -3568,6 +3581,7 @@ function useBookmarks() {
3568
3581
  keyFields,
3569
3582
  agentHints
3570
3583
  ),
3584
+ updateBookmark: (id, updates) => window.vessel.bookmarks.updateBookmark(id, updates),
3571
3585
  removeBookmark: (id) => window.vessel.bookmarks.removeBookmark(id),
3572
3586
  createFolder: (name) => window.vessel.bookmarks.createFolder(name),
3573
3587
  createFolderWithSummary: (name, summary) => window.vessel.bookmarks.createFolderWithSummary(name, summary),
@@ -5061,7 +5075,7 @@ function getBookmarkSearchMatch(args) {
5061
5075
  }
5062
5076
  return { matchedFields, score };
5063
5077
  }
5064
- var _tmpl$$7 = /* @__PURE__ */ template(`<div class=dropdown-select-menu role=listbox>`), _tmpl$2$6 = /* @__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$5 = /* @__PURE__ */ template(`<span class=dropdown-select-option-description>`), _tmpl$4$5 = /* @__PURE__ */ template(`<button class=dropdown-select-option type=button role=option><span class=dropdown-select-option-copy><span class=dropdown-select-option-label>`);
5078
+ var _tmpl$$8 = /* @__PURE__ */ template(`<div class=dropdown-select-menu role=listbox>`), _tmpl$2$7 = /* @__PURE__ */ template(`<div><button class=dropdown-select-trigger type=button aria-haspopup=listbox><span class=dropdown-select-value></span><span class=dropdown-select-caret aria-hidden=true>▾`), _tmpl$3$6 = /* @__PURE__ */ template(`<span class=dropdown-select-option-description>`), _tmpl$4$6 = /* @__PURE__ */ template(`<button class=dropdown-select-option type=button role=option><span class=dropdown-select-option-copy><span class=dropdown-select-option-label>`);
5065
5079
  const DropdownSelect = (props) => {
5066
5080
  const [open, setOpen] = createSignal(false);
5067
5081
  let rootRef;
@@ -5085,7 +5099,7 @@ const DropdownSelect = (props) => {
5085
5099
  });
5086
5100
  });
5087
5101
  return (() => {
5088
- var _el$ = _tmpl$2$6(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
5102
+ var _el$ = _tmpl$2$7(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
5089
5103
  var _ref$ = rootRef;
5090
5104
  typeof _ref$ === "function" ? use(_ref$, _el$) : rootRef = _el$;
5091
5105
  _el$2.$$click = () => setOpen((current) => !current);
@@ -5095,13 +5109,13 @@ const DropdownSelect = (props) => {
5095
5109
  return open();
5096
5110
  },
5097
5111
  get children() {
5098
- var _el$5 = _tmpl$$7();
5112
+ var _el$5 = _tmpl$$8();
5099
5113
  insert(_el$5, createComponent(For, {
5100
5114
  get each() {
5101
5115
  return props.options;
5102
5116
  },
5103
5117
  children: (option) => (() => {
5104
- var _el$6 = _tmpl$4$5(), _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild;
5118
+ var _el$6 = _tmpl$4$6(), _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild;
5105
5119
  _el$6.$$click = () => {
5106
5120
  props.onChange(option.value);
5107
5121
  setOpen(false);
@@ -5112,7 +5126,7 @@ const DropdownSelect = (props) => {
5112
5126
  return option.description;
5113
5127
  },
5114
5128
  get children() {
5115
- var _el$9 = _tmpl$3$5();
5129
+ var _el$9 = _tmpl$3$6();
5116
5130
  insert(_el$9, () => option.description);
5117
5131
  return _el$9;
5118
5132
  }
@@ -5168,7 +5182,7 @@ var LucideContext = createContext({
5168
5182
  absoluteStrokeWidth: false,
5169
5183
  class: ""
5170
5184
  });
5171
- var _tmpl$$6 = /* @__PURE__ */ template(`<svg>`);
5185
+ var _tmpl$$7 = /* @__PURE__ */ template(`<svg>`);
5172
5186
  var hasA11yProp = (props) => {
5173
5187
  for (const prop in props) {
5174
5188
  if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
@@ -5190,7 +5204,7 @@ var Icon = (props) => {
5190
5204
  const [localProps, rest] = splitProps(props, ["color", "size", "strokeWidth", "children", "class", "name", "iconNode", "absoluteStrokeWidth"]);
5191
5205
  const globalProps = useContext(LucideContext);
5192
5206
  return (() => {
5193
- var _el$ = _tmpl$$6();
5207
+ var _el$ = _tmpl$$7();
5194
5208
  spread(_el$, mergeProps(defaultAttributes_default, {
5195
5209
  get width() {
5196
5210
  return localProps.size ?? globalProps.size ?? defaultAttributes_default.width;
@@ -5508,7 +5522,7 @@ function renderKitPrompt(kit, values) {
5508
5522
  (_, key) => values[key] ?? ""
5509
5523
  );
5510
5524
  }
5511
- var _tmpl$$5 = /* @__PURE__ */ template(`<div class=kit-upsell><div class=kit-upsell-icon aria-hidden=true></div><p class=kit-upsell-title>Vessel Premium</p><p class=kit-upsell-body>Automation Kits are a premium feature. Upgrade to unlock pre-built workflows you can launch with one click.</p><button class="agent-primary-button kit-upsell-btn"type=button>Start 7-day free trial — $5.99/mo after`), _tmpl$2$5 = /* @__PURE__ */ template(`<div class=kit-list-header><span class=agent-panel-title>Automation Kits <span class=kit-beta-tag>Beta</span></span><div class=kit-list-header-actions><span class=kit-list-count> kits</span><button class=kit-install-btn type=button title="Install a kit from a .kit.json file">+ Install`), _tmpl$3$4 = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$4 = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$4 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$4 = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$3 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$3 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$3 = /* @__PURE__ */ template(`<div class=kit-form-header><button class=kit-back-btn type=button title="Back to kits"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M9 11L5 7l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Back</button><div class=kit-form-title>`), _tmpl$0$3 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$3 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$3 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date &amp; time</label><input class=kit-form-input type=datetime-local>`), _tmpl$13$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time of day</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$14$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$16$2 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$18$2 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$2 = /* @__PURE__ */ template(`<div class=sched-edit-backdrop><div class=sched-edit-panel><div class=sched-edit-header><span class=sched-edit-title>Edit schedule</span><span class=sched-edit-job-name></span></div><div class=kit-schedule-types></div><div class=sched-edit-actions><button class=kit-back-btn type=button>Cancel</button><button class=agent-primary-button type=button>Save`), _tmpl$23$2 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$2 = /* @__PURE__ */ template(`<div class=kit-card-meta>~<!> min`), _tmpl$25$2 = /* @__PURE__ */ template(`<button class=kit-remove-btn type=button>×`), _tmpl$26$2 = /* @__PURE__ */ template(`<div class=kit-card role=button tabindex=0><span class=kit-card-icon aria-hidden=true></span><div class=kit-card-body><div class=kit-card-name></div><div class=kit-card-desc>`), _tmpl$27$2 = /* @__PURE__ */ template(`<svg class=kit-card-caret width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M5 3l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$28$2 = /* @__PURE__ */ template(`<div class=kit-sched-next>Next: `), _tmpl$29$2 = /* @__PURE__ */ template(`<div class=sched-context-menu><button class=sched-ctx-item type=button>Edit task</button><button class=sched-ctx-item type=button>Edit schedule</button><div class=sched-ctx-divider></div><button class=sched-ctx-item type=button></button><button class="sched-ctx-item sched-ctx-danger"type=button>Delete`), _tmpl$30$2 = /* @__PURE__ */ template(`<div class=kit-sched-card><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-sched-body><div class=kit-sched-name></div><div class=kit-sched-meta></div></div><div class=kit-sched-actions><button class=kit-sched-toggle type=button></button><button class=kit-remove-btn type=button title="Delete schedule"aria-label="Delete schedule">×`), _tmpl$31$2 = /* @__PURE__ */ template(`<div class=kit-activity-output>`), _tmpl$32$2 = /* @__PURE__ */ template(`<div class=kit-activity-card><div class=kit-activity-header><div class=kit-activity-title><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-activity-title-copy><div class=kit-sched-name></div><div class=kit-activity-time></div></div></div><span class=kit-activity-badge>`), _tmpl$33$2 = /* @__PURE__ */ template(`<div class="kit-activity-output kit-activity-placeholder">`), _tmpl$34$2 = /* @__PURE__ */ template(`<span class=kit-form-required aria-hidden=true>*`), _tmpl$35$2 = /* @__PURE__ */ template(`<textarea class=kit-form-textarea rows=3>`), _tmpl$36$2 = /* @__PURE__ */ template(`<p class=kit-form-hint>`), _tmpl$37$2 = /* @__PURE__ */ template(`<div class=kit-form-field><label class=kit-form-label>`), _tmpl$38$2 = /* @__PURE__ */ template(`<input class=kit-form-input>`), _tmpl$39$2 = /* @__PURE__ */ template(`<span class=kit-run-spinner aria-hidden=true>`), _tmpl$40$2 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=sched-type>`), _tmpl$41$2 = /* @__PURE__ */ template(`<option>`), _tmpl$42$2 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=edit-sched-type>`);
5525
+ var _tmpl$$6 = /* @__PURE__ */ template(`<div class=kit-upsell><div class=kit-upsell-icon aria-hidden=true></div><p class=kit-upsell-title>Vessel Premium</p><p class=kit-upsell-body>Automation Kits are a premium feature. Upgrade to unlock pre-built workflows you can launch with one click.</p><button class="agent-primary-button kit-upsell-btn"type=button>Start 7-day free trial — $5.99/mo after`), _tmpl$2$6 = /* @__PURE__ */ template(`<div class=kit-list-header><span class=agent-panel-title>Automation Kits <span class=kit-beta-tag>Beta</span></span><div class=kit-list-header-actions><span class=kit-list-count> kits</span><button class=kit-install-btn type=button title="Install a kit from a .kit.json file">+ Install`), _tmpl$3$5 = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$5 = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$5 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$5 = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$4 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$4 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$3 = /* @__PURE__ */ template(`<div class=kit-form-header><button class=kit-back-btn type=button title="Back to kits"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M9 11L5 7l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Back</button><div class=kit-form-title>`), _tmpl$0$3 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$3 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$3 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date &amp; time</label><input class=kit-form-input type=datetime-local>`), _tmpl$13$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time of day</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$14$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$16$2 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$18$2 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$2 = /* @__PURE__ */ template(`<div class=sched-edit-backdrop><div class=sched-edit-panel><div class=sched-edit-header><span class=sched-edit-title>Edit schedule</span><span class=sched-edit-job-name></span></div><div class=kit-schedule-types></div><div class=sched-edit-actions><button class=kit-back-btn type=button>Cancel</button><button class=agent-primary-button type=button>Save`), _tmpl$23$2 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$2 = /* @__PURE__ */ template(`<div class=kit-card-meta>~<!> min`), _tmpl$25$2 = /* @__PURE__ */ template(`<button class=kit-remove-btn type=button>×`), _tmpl$26$2 = /* @__PURE__ */ template(`<div class=kit-card role=button tabindex=0><span class=kit-card-icon aria-hidden=true></span><div class=kit-card-body><div class=kit-card-name></div><div class=kit-card-desc>`), _tmpl$27$2 = /* @__PURE__ */ template(`<svg class=kit-card-caret width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M5 3l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$28$2 = /* @__PURE__ */ template(`<div class=kit-sched-next>Next: `), _tmpl$29$2 = /* @__PURE__ */ template(`<div class=sched-context-menu><button class=sched-ctx-item type=button>Edit task</button><button class=sched-ctx-item type=button>Edit schedule</button><div class=sched-ctx-divider></div><button class=sched-ctx-item type=button></button><button class="sched-ctx-item sched-ctx-danger"type=button>Delete`), _tmpl$30$2 = /* @__PURE__ */ template(`<div class=kit-sched-card><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-sched-body><div class=kit-sched-name></div><div class=kit-sched-meta></div></div><div class=kit-sched-actions><button class=kit-sched-toggle type=button></button><button class=kit-remove-btn type=button title="Delete schedule"aria-label="Delete schedule">×`), _tmpl$31$2 = /* @__PURE__ */ template(`<div class=kit-activity-output>`), _tmpl$32$2 = /* @__PURE__ */ template(`<div class=kit-activity-card><div class=kit-activity-header><div class=kit-activity-title><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-activity-title-copy><div class=kit-sched-name></div><div class=kit-activity-time></div></div></div><span class=kit-activity-badge>`), _tmpl$33$2 = /* @__PURE__ */ template(`<div class="kit-activity-output kit-activity-placeholder">`), _tmpl$34$2 = /* @__PURE__ */ template(`<span class=kit-form-required aria-hidden=true>*`), _tmpl$35$2 = /* @__PURE__ */ template(`<textarea class=kit-form-textarea rows=3>`), _tmpl$36$2 = /* @__PURE__ */ template(`<p class=kit-form-hint>`), _tmpl$37$2 = /* @__PURE__ */ template(`<div class=kit-form-field><label class=kit-form-label>`), _tmpl$38$2 = /* @__PURE__ */ template(`<input class=kit-form-input>`), _tmpl$39$2 = /* @__PURE__ */ template(`<span class=kit-run-spinner aria-hidden=true>`), _tmpl$40$2 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=sched-type>`), _tmpl$41$2 = /* @__PURE__ */ template(`<option>`), _tmpl$42$2 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=edit-sched-type>`);
5512
5526
  const ICON_MAP = {
5513
5527
  BookOpen: book_open_default,
5514
5528
  Tag: tag_default,
@@ -5833,7 +5847,7 @@ const AutomationTab = (props) => {
5833
5847
  return memo(() => !!!premiumData.loading)() && !isPremium();
5834
5848
  },
5835
5849
  get children() {
5836
- var _el$2 = _tmpl$$5(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling;
5850
+ var _el$2 = _tmpl$$6(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling;
5837
5851
  insert(_el$3, createComponent(zap_default, {
5838
5852
  size: 24
5839
5853
  }));
@@ -5847,7 +5861,7 @@ const AutomationTab = (props) => {
5847
5861
  },
5848
5862
  get children() {
5849
5863
  return [(() => {
5850
- var _el$7 = _tmpl$2$5(), _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.firstChild, _el$10 = _el$0.nextSibling;
5864
+ var _el$7 = _tmpl$2$6(), _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.firstChild, _el$10 = _el$0.nextSibling;
5851
5865
  insert(_el$0, () => allKits().length, _el$1);
5852
5866
  _el$10.$$click = () => void handleInstall();
5853
5867
  return _el$7;
@@ -5856,13 +5870,13 @@ const AutomationTab = (props) => {
5856
5870
  return installError() !== null;
5857
5871
  },
5858
5872
  get children() {
5859
- var _el$11 = _tmpl$3$4(), _el$12 = _el$11.firstChild, _el$13 = _el$12.nextSibling;
5873
+ var _el$11 = _tmpl$3$5(), _el$12 = _el$11.firstChild, _el$13 = _el$12.nextSibling;
5860
5874
  insert(_el$12, installError);
5861
5875
  _el$13.$$click = () => setInstallError(null);
5862
5876
  return _el$11;
5863
5877
  }
5864
5878
  }), (() => {
5865
- var _el$14 = _tmpl$4$4();
5879
+ var _el$14 = _tmpl$4$5();
5866
5880
  insert(_el$14, createComponent(For, {
5867
5881
  get each() {
5868
5882
  return allKits();
@@ -5922,14 +5936,14 @@ const AutomationTab = (props) => {
5922
5936
  },
5923
5937
  get children() {
5924
5938
  return [(() => {
5925
- var _el$15 = _tmpl$5$4(), _el$16 = _el$15.firstChild, _el$17 = _el$16.nextSibling;
5939
+ var _el$15 = _tmpl$5$5(), _el$16 = _el$15.firstChild, _el$17 = _el$16.nextSibling;
5926
5940
  insert(_el$15, createComponent(clock_default, {
5927
5941
  size: 12
5928
5942
  }), _el$16);
5929
5943
  insert(_el$17, () => scheduledJobs().length);
5930
5944
  return _el$15;
5931
5945
  })(), (() => {
5932
- var _el$18 = _tmpl$6$4();
5946
+ var _el$18 = _tmpl$6$5();
5933
5947
  insert(_el$18, createComponent(For, {
5934
5948
  get each() {
5935
5949
  return scheduledJobs();
@@ -6007,14 +6021,14 @@ const AutomationTab = (props) => {
6007
6021
  },
6008
6022
  get children() {
6009
6023
  return [(() => {
6010
- var _el$19 = _tmpl$7$3(), _el$20 = _el$19.firstChild, _el$21 = _el$20.nextSibling;
6024
+ var _el$19 = _tmpl$7$4(), _el$20 = _el$19.firstChild, _el$21 = _el$20.nextSibling;
6011
6025
  insert(_el$19, createComponent(zap_default, {
6012
6026
  size: 12
6013
6027
  }), _el$20);
6014
6028
  insert(_el$21, () => automationActivities2().length);
6015
6029
  return _el$19;
6016
6030
  })(), (() => {
6017
- var _el$22 = _tmpl$8$3();
6031
+ var _el$22 = _tmpl$8$4();
6018
6032
  insert(_el$22, createComponent(For, {
6019
6033
  get each() {
6020
6034
  return automationActivities2();
@@ -6347,8 +6361,121 @@ const AutomationTab = (props) => {
6347
6361
  })();
6348
6362
  };
6349
6363
  delegateEvents(["click", "input", "keydown", "contextmenu"]);
6364
+ var _tmpl$$5 = /* @__PURE__ */ template(`<div class=agent-muted>Loading...`), _tmpl$2$5 = /* @__PURE__ */ template(`<div class=agent-muted>`), _tmpl$3$4 = /* @__PURE__ */ template(`<div class=agent-muted>No changes detected yet.`), _tmpl$4$4 = /* @__PURE__ */ template(`<div class=agent-section-title>Recent page changes`), _tmpl$5$4 = /* @__PURE__ */ template(`<div class=page-diff-list>`), _tmpl$6$4 = /* @__PURE__ */ template(`<div class=page-diff-timeline>`), _tmpl$7$3 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$8$3 = /* @__PURE__ */ template(`<div class=page-diff-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=page-diff-content><div class=page-diff-time></div><div class=page-diff-summary>`);
6365
+ const PageDiffTimeline = () => {
6366
+ const {
6367
+ activeTab
6368
+ } = useTabs();
6369
+ const [bursts, setBursts] = createSignal([]);
6370
+ const [loading, setLoading] = createSignal(true);
6371
+ const [error, setError] = createSignal(null);
6372
+ let latestRequestId = 0;
6373
+ const loadHistory = async () => {
6374
+ const requestId = ++latestRequestId;
6375
+ const tab = activeTab();
6376
+ if (!tab?.url) {
6377
+ setBursts([]);
6378
+ setError(null);
6379
+ setLoading(false);
6380
+ return;
6381
+ }
6382
+ setLoading(true);
6383
+ try {
6384
+ const result = await window.vessel.pageDiff.getHistory();
6385
+ if (requestId !== latestRequestId) return;
6386
+ if (result && typeof result === "object" && "error" in result) {
6387
+ setError(result.error);
6388
+ setBursts([]);
6389
+ } else {
6390
+ setBursts(result ?? []);
6391
+ setError(null);
6392
+ }
6393
+ } catch {
6394
+ if (requestId !== latestRequestId) return;
6395
+ setError("Failed to load diff history");
6396
+ setBursts([]);
6397
+ } finally {
6398
+ if (requestId === latestRequestId) {
6399
+ setLoading(false);
6400
+ }
6401
+ }
6402
+ };
6403
+ createEffect(() => {
6404
+ void activeTab()?.url;
6405
+ void loadHistory();
6406
+ });
6407
+ const unsubscribe = window.vessel.pageDiff.onChanged((diff) => {
6408
+ const tab = activeTab();
6409
+ if (!tab || !matchesPageSnapshotUrl(tab.url, diff.url)) return;
6410
+ void loadHistory();
6411
+ });
6412
+ onCleanup(() => {
6413
+ unsubscribe();
6414
+ });
6415
+ return (() => {
6416
+ var _el$ = _tmpl$6$4();
6417
+ insert(_el$, createComponent(Show, {
6418
+ get when() {
6419
+ return loading();
6420
+ },
6421
+ get children() {
6422
+ return _tmpl$$5();
6423
+ }
6424
+ }), null);
6425
+ insert(_el$, createComponent(Show, {
6426
+ get when() {
6427
+ return memo(() => !!!loading())() && error();
6428
+ },
6429
+ get children() {
6430
+ var _el$3 = _tmpl$2$5();
6431
+ insert(_el$3, error);
6432
+ return _el$3;
6433
+ }
6434
+ }), null);
6435
+ insert(_el$, createComponent(Show, {
6436
+ get when() {
6437
+ return memo(() => !!(!loading() && !error()))() && bursts().length === 0;
6438
+ },
6439
+ get children() {
6440
+ return _tmpl$3$4();
6441
+ }
6442
+ }), null);
6443
+ insert(_el$, createComponent(Show, {
6444
+ get when() {
6445
+ return memo(() => !!(!loading() && !error()))() && bursts().length > 0;
6446
+ },
6447
+ get children() {
6448
+ return [_tmpl$4$4(), (() => {
6449
+ var _el$6 = _tmpl$5$4();
6450
+ insert(_el$6, createComponent(For, {
6451
+ get each() {
6452
+ return bursts();
6453
+ },
6454
+ children: (burst, i) => (() => {
6455
+ var _el$7 = _tmpl$8$3(), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild, _el$1 = _el$8.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling;
6456
+ insert(_el$8, createComponent(Show, {
6457
+ get when() {
6458
+ return i() < bursts().length - 1;
6459
+ },
6460
+ get children() {
6461
+ return _tmpl$7$3();
6462
+ }
6463
+ }), null);
6464
+ insert(_el$10, () => new Date(burst.detectedAt).toLocaleString());
6465
+ insert(_el$11, () => burst.summary);
6466
+ createRenderEffect(() => _el$9.classList.toggle("latest", !!(i() === 0)));
6467
+ return _el$7;
6468
+ })()
6469
+ }));
6470
+ return _el$6;
6471
+ })()];
6472
+ }
6473
+ }), null);
6474
+ return _el$;
6475
+ })();
6476
+ };
6350
6477
  const vesselLogo = "" + new URL("vessel-logo-transparent-IT25qr-Z.png", import.meta.url).href;
6351
- var _tmpl$$4 = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$4 = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$3 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$3 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$5$3 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$6$3 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$7$2 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$8$2 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2>`), _tmpl$9$2 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$0$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$1$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$10$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$11$2 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><button class=history-clear-btn>Clear</button></div><div class=history-list>`), _tmpl$12$2 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$13$1 = /* @__PURE__ */ template(`<span>`), _tmpl$14$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$15$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$16$1 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$17$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$18$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$19$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$20$1 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$21$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$22$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$23$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$24$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button></div><div class=sidebar-messages><div>`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class="agent-card agent-card-approval"><div class=agent-card-approval-stripe aria-hidden=true></div><div class=agent-card-title></div><div class=agent-card-copy></div><div class=agent-card-copy></div><div class=agent-card-actions><button class=agent-primary-button type=button>Approve</button><button class=agent-control-button type=button>Reject`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$32$1 = /* @__PURE__ */ template(`<div class=agent-card><div class=agent-action-row><span class=agent-card-title></span><span></span></div><div class=agent-card-copy>`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$34$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$35$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$36$1 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$37$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-delete-confirm><p class=bookmark-delete-prompt>Delete "<!>"?</p><div class=bookmark-delete-options><button class="bookmark-ghost-button danger"type=button></button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$38$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><div class=bookmark-folder-form-fields><input class=bookmark-input><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=button>Save</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$39$1 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$40$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-section><div class="bookmark-folder-header clickable"role=button tabindex=0><div class=bookmark-folder-overview><span class=bookmark-folder-chevron aria-hidden=true>▸</span><div><div class=bookmark-folder-name></div><div class=bookmark-folder-meta> saved`), _tmpl$41$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$42$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$43 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$44 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$45 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$46 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$47 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><button class=agent-control-button type=button>Restore`), _tmpl$48 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$49 = /* @__PURE__ */ template(`<div>`), _tmpl$50 = /* @__PURE__ */ template(`<div class=thinking-state><div class=thinking-orb aria-hidden=true><span></span><span></span><span></span></div><div class=thinking-copy><div class=thinking-title>Thinking`), _tmpl$51 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$52 = /* @__PURE__ */ template(`<div class=chat-approval><div class=chat-approval-icon aria-hidden=true><svg width=16 height=16 viewBox="0 0 16 16"fill=none><path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM7.25 4.75a.75.75 0 011.5 0v3.5a.75.75 0 01-1.5 0v-3.5zM8 11.5a.75.75 0 110-1.5.75.75 0 010 1.5z"fill=currentColor></path></svg></div><div class=chat-approval-body><div class=chat-approval-title>Approval needed: <strong></strong></div><div class=chat-approval-detail></div><div class=chat-approval-actions><button class="chat-approval-btn chat-approval-approve"type=button>Approve</button><button class="chat-approval-btn chat-approval-reject"type=button>Reject`), _tmpl$53 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
6478
+ var _tmpl$$4 = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$4 = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$3 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$3 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$5$3 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$6$3 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$7$2 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$8$2 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$9$2 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$0$2 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$1$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$10$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><textarea class=agent-textarea rows=2 placeholder="Optional note for this checkpoint"></textarea><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$11$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$12$2 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><button class=history-clear-btn>Clear</button></div><div class=history-list>`), _tmpl$13$1 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div class=agent-panel-title>What Changed</div><div class=agent-panel-subtitle>`), _tmpl$14$1 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$15$1 = /* @__PURE__ */ template(`<span>`), _tmpl$16$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$17$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$18$1 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$19$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$20$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$21$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$22$1 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$23$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$24$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button></div><div class=sidebar-messages><div>`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class="agent-card agent-card-approval"><div class=agent-card-approval-stripe aria-hidden=true></div><div class=agent-card-title></div><div class=agent-card-copy></div><div class=agent-card-copy></div><div class=agent-card-actions><button class=agent-primary-button type=button>Approve</button><button class=agent-control-button type=button>Reject`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$32$1 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$34$1 = /* @__PURE__ */ template(`<div class=agent-card><div class=agent-action-row><span class=agent-card-title></span><span></span></div><div class=agent-card-copy>`), _tmpl$35$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$36$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$37$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$38$1 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$39$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-delete-confirm><p class=bookmark-delete-prompt>Delete "<!>"?</p><div class=bookmark-delete-options><button class="bookmark-ghost-button danger"type=button></button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$40$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><div class=bookmark-folder-form-fields><input class=bookmark-input><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=button>Save</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$41$1 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$42$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-section><div class="bookmark-folder-header clickable"role=button tabindex=0><div class=bookmark-folder-overview><span class=bookmark-folder-chevron aria-hidden=true>▸</span><div><div class=bookmark-folder-name></div><div class=bookmark-folder-meta> saved`), _tmpl$43 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$44 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$45 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$46 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$47 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$48 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$49 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$50 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><input class=bookmark-input placeholder="Bookmark title"><textarea class=bookmark-note-input rows=2 placeholder="Why this bookmark matters"></textarea><textarea class=bookmark-note-input rows=1 placeholder=Intent></textarea><textarea class=bookmark-note-input rows=1 placeholder="Expected content"></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input rows=2 placeholder="Agent hints (one key:value per line)"></textarea><div class=bookmark-item-footer><button class=bookmark-secondary-button type=button>Save edits</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$51 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class=bookmark-ghost-button type=button></button><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$52 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$53 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$54 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><textarea class=agent-textarea rows=2 placeholder="Add a note..."></textarea><button class=agent-control-button type=button>Restore`), _tmpl$55 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$56 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">The Diff timeline is a premium feature. Upgrade to see a full history of what changed on this page.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$57 = /* @__PURE__ */ template(`<div>`), _tmpl$58 = /* @__PURE__ */ template(`<div class=thinking-state><div class=thinking-orb aria-hidden=true><span></span><span></span><span></span></div><div class=thinking-copy><div class=thinking-title>Thinking`), _tmpl$59 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$60 = /* @__PURE__ */ template(`<div class=chat-approval><div class=chat-approval-icon aria-hidden=true><svg width=16 height=16 viewBox="0 0 16 16"fill=none><path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM7.25 4.75a.75.75 0 011.5 0v3.5a.75.75 0 01-1.5 0v-3.5zM8 11.5a.75.75 0 110-1.5.75.75 0 010 1.5z"fill=currentColor></path></svg></div><div class=chat-approval-body><div class=chat-approval-title>Approval needed: <strong></strong></div><div class=chat-approval-detail></div><div class=chat-approval-actions><button class="chat-approval-btn chat-approval-approve"type=button>Approve</button><button class="chat-approval-btn chat-approval-reject"type=button>Reject`), _tmpl$61 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
6352
6479
  const UNSORTED_FOLDER = {
6353
6480
  id: "unsorted",
6354
6481
  name: "Unsorted",
@@ -6409,6 +6536,8 @@ const Sidebar = (props) => {
6409
6536
  resolveApproval,
6410
6537
  createCheckpoint,
6411
6538
  restoreCheckpoint,
6539
+ updateCheckpointNote,
6540
+ undoLastAction,
6412
6541
  restoreSession
6413
6542
  } = useRuntime();
6414
6543
  const {
@@ -6427,6 +6556,7 @@ const Sidebar = (props) => {
6427
6556
  const {
6428
6557
  bookmarksState: bookmarksState2,
6429
6558
  saveBookmark,
6559
+ updateBookmark,
6430
6560
  removeBookmark,
6431
6561
  createFolderWithSummary,
6432
6562
  removeFolder,
@@ -6596,7 +6726,12 @@ ${contextBlock}` : contextBlock);
6596
6726
  }
6597
6727
  };
6598
6728
  const [checkpointName, setCheckpointName] = createSignal("");
6729
+ const [checkpointNote, setCheckpointNote] = createSignal("");
6599
6730
  const [bookmarkNote, setBookmarkNote] = createSignal("");
6731
+ const [bookmarkIntent, setBookmarkIntent] = createSignal("");
6732
+ const [bookmarkExpectedContent, setBookmarkExpectedContent] = createSignal("");
6733
+ const [bookmarkKeyFields, setBookmarkKeyFields] = createSignal("");
6734
+ const [bookmarkAgentHints, setBookmarkAgentHints] = createSignal("");
6600
6735
  const [bookmarkSaveExpanded, setBookmarkSaveExpanded] = createSignal(false);
6601
6736
  const [selectedFolderId, setSelectedFolderId] = createSignal(UNSORTED_FOLDER.id);
6602
6737
  const [newFolderName, setNewFolderName] = createSignal("");
@@ -6605,6 +6740,13 @@ ${contextBlock}` : contextBlock);
6605
6740
  const [editingFolderId, setEditingFolderId] = createSignal(null);
6606
6741
  const [editingFolderName, setEditingFolderName] = createSignal("");
6607
6742
  const [editingFolderSummary, setEditingFolderSummary] = createSignal("");
6743
+ const [editingBookmarkId, setEditingBookmarkId] = createSignal(null);
6744
+ const [editingBookmarkTitle, setEditingBookmarkTitle] = createSignal("");
6745
+ const [editingBookmarkNote, setEditingBookmarkNote] = createSignal("");
6746
+ const [editingBookmarkIntent, setEditingBookmarkIntent] = createSignal("");
6747
+ const [editingBookmarkExpectedContent, setEditingBookmarkExpectedContent] = createSignal("");
6748
+ const [editingBookmarkKeyFields, setEditingBookmarkKeyFields] = createSignal("");
6749
+ const [editingBookmarkAgentHints, setEditingBookmarkAgentHints] = createSignal("");
6608
6750
  const [deletingFolderId, setDeletingFolderId] = createSignal(null);
6609
6751
  const [expandedFolderIds, setExpandedFolderIds] = createSignal([UNSORTED_FOLDER.id]);
6610
6752
  const [actionsExpanded, setActionsExpanded] = createSignal(false);
@@ -6781,13 +6923,63 @@ ${contextBlock}` : contextBlock);
6781
6923
  day: "numeric",
6782
6924
  year: "numeric"
6783
6925
  });
6926
+ const parseBookmarkKeyFields = (value) => {
6927
+ const fields = value.split(",").map((entry) => entry.trim()).filter(Boolean);
6928
+ return fields.length > 0 ? fields : void 0;
6929
+ };
6930
+ const parseBookmarkAgentHints = (value) => {
6931
+ const entries2 = value.split("\n").map((line) => {
6932
+ const separator = line.indexOf(":");
6933
+ if (separator === -1) return null;
6934
+ const key = line.slice(0, separator).trim();
6935
+ const hint = line.slice(separator + 1).trim();
6936
+ return key ? [key, hint] : null;
6937
+ }).filter((entry) => Boolean(entry)).filter(([, hint]) => hint.length > 0);
6938
+ return entries2.length > 0 ? Object.fromEntries(entries2) : void 0;
6939
+ };
6940
+ const formatBookmarkKeyFields = (value) => value?.join(", ") || "";
6941
+ const formatBookmarkAgentHints = (value) => value ? Object.entries(value).map(([key, hint]) => `${key}: ${hint}`).join("\n") : "";
6942
+ const resetBookmarkEditor = () => {
6943
+ setEditingBookmarkId(null);
6944
+ setEditingBookmarkTitle("");
6945
+ setEditingBookmarkNote("");
6946
+ setEditingBookmarkIntent("");
6947
+ setEditingBookmarkExpectedContent("");
6948
+ setEditingBookmarkKeyFields("");
6949
+ setEditingBookmarkAgentHints("");
6950
+ };
6951
+ const startEditingBookmark = (bookmark) => {
6952
+ setEditingBookmarkId(bookmark.id);
6953
+ setEditingBookmarkTitle(bookmark.title || bookmark.url);
6954
+ setEditingBookmarkNote(bookmark.note || "");
6955
+ setEditingBookmarkIntent(bookmark.intent || "");
6956
+ setEditingBookmarkExpectedContent(bookmark.expectedContent || "");
6957
+ setEditingBookmarkKeyFields(formatBookmarkKeyFields(bookmark.keyFields));
6958
+ setEditingBookmarkAgentHints(formatBookmarkAgentHints(bookmark.agentHints));
6959
+ };
6784
6960
  const handleSaveBookmark = async () => {
6785
6961
  const tab = currentTab();
6786
6962
  if (!tab?.url) return;
6787
- await saveBookmark(tab.url, tab.title?.trim() || tab.url, selectedFolderId(), bookmarkNote());
6963
+ await saveBookmark(tab.url, tab.title?.trim() || tab.url, selectedFolderId(), bookmarkNote(), bookmarkIntent() || void 0, bookmarkExpectedContent() || void 0, parseBookmarkKeyFields(bookmarkKeyFields()), parseBookmarkAgentHints(bookmarkAgentHints()));
6788
6964
  setBookmarkNote("");
6965
+ setBookmarkIntent("");
6966
+ setBookmarkExpectedContent("");
6967
+ setBookmarkKeyFields("");
6968
+ setBookmarkAgentHints("");
6789
6969
  setBookmarkSaveExpanded(false);
6790
6970
  };
6971
+ const handleUpdateBookmark = async (bookmarkId) => {
6972
+ const updated = await updateBookmark(bookmarkId, {
6973
+ title: editingBookmarkTitle(),
6974
+ note: editingBookmarkNote(),
6975
+ intent: editingBookmarkIntent(),
6976
+ expectedContent: editingBookmarkExpectedContent(),
6977
+ keyFields: parseBookmarkKeyFields(editingBookmarkKeyFields()),
6978
+ agentHints: parseBookmarkAgentHints(editingBookmarkAgentHints())
6979
+ });
6980
+ if (!updated) return;
6981
+ resetBookmarkEditor();
6982
+ };
6791
6983
  const handleCreateFolder = async (e) => {
6792
6984
  e.preventDefault();
6793
6985
  const name = newFolderName().trim();
@@ -6825,14 +7017,22 @@ ${contextBlock}` : contextBlock);
6825
7017
  setExpandedFolderIds((current) => current.includes(folderId) ? current.filter((id) => id !== folderId) : [...current, folderId]);
6826
7018
  };
6827
7019
  const isFolderExpanded = (folderId) => normalizedBookmarkSearch().length > 0 || expandedFolderIds().includes(folderId);
7020
+ onMount(() => {
7021
+ const cleanup = window.vessel.ui.onSidebarNavigate((tab) => {
7022
+ if (tab === "supervisor" || tab === "bookmarks" || tab === "checkpoints" || tab === "chat" || tab === "automation" || tab === "history" || tab === "diff") {
7023
+ setSidebarTab(tab);
7024
+ }
7025
+ });
7026
+ onCleanup(cleanup);
7027
+ });
6828
7028
  return createComponent(Show, {
6829
7029
  get when() {
6830
7030
  return props.forceOpen || sidebarOpen2();
6831
7031
  },
6832
7032
  get children() {
6833
- var _el$9 = _tmpl$25$1(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling, _el$15 = _el$1.nextSibling, _el$16 = _el$15.firstChild;
7033
+ var _el$9 = _tmpl$27$1(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling, _el$15 = _el$1.nextSibling, _el$16 = _el$15.firstChild;
6834
7034
  _el$16.firstChild;
6835
- var _el$19 = _el$16.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$15.nextSibling, _el$93 = _el$24.firstChild;
7035
+ var _el$19 = _el$16.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$23.nextSibling, _el$25 = _el$15.nextSibling, _el$104 = _el$25.firstChild;
6836
7036
  _el$0.$$pointerdown = startResize;
6837
7037
  setAttribute(_el$11, "src", vesselLogo);
6838
7038
  addEventListener(_el$13, "click", clearHistory, true);
@@ -6853,20 +7053,21 @@ ${contextBlock}` : contextBlock);
6853
7053
  _el$21.$$click = () => setSidebarTab("chat");
6854
7054
  _el$22.$$click = () => setSidebarTab("automation");
6855
7055
  _el$23.$$click = () => setSidebarTab("history");
7056
+ _el$24.$$click = () => setSidebarTab("diff");
6856
7057
  use((el) => {
6857
7058
  messagesContainerRef = el;
6858
7059
  useScrollFade(el);
6859
- }, _el$24);
6860
- insert(_el$24, createComponent(Show, {
7060
+ }, _el$25);
7061
+ insert(_el$25, createComponent(Show, {
6861
7062
  get when() {
6862
7063
  return sidebarTab() === "supervisor";
6863
7064
  },
6864
7065
  get children() {
6865
- var _el$25 = _tmpl$6$3(), _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;
6866
- _el$36.firstChild;
6867
- insert(_el$29, () => runtimeState2().supervisor.paused ? "Agent is paused" : "Agent is live");
6868
- insert(_el$30, () => runtimeState2().supervisor.paused ? "Paused" : "Running");
6869
- insert(_el$31, createComponent(DropdownSelect, {
7066
+ var _el$26 = _tmpl$7$2(), _el$27 = _el$26.firstChild, _el$28 = _el$27.firstChild, _el$29 = _el$28.firstChild, _el$30 = _el$29.nextSibling, _el$31 = _el$28.nextSibling, _el$32 = _el$27.nextSibling, _el$33 = _el$32.firstChild, _el$34 = _el$33.nextSibling, _el$36 = _el$32.nextSibling, _el$38 = _el$36.nextSibling;
7067
+ _el$38.firstChild;
7068
+ insert(_el$30, () => runtimeState2().supervisor.paused ? "Agent is paused" : "Agent is live");
7069
+ insert(_el$31, () => runtimeState2().supervisor.paused ? "Paused" : "Running");
7070
+ insert(_el$32, createComponent(DropdownSelect, {
6870
7071
  "class": "agent-select",
6871
7072
  get value() {
6872
7073
  return runtimeState2().supervisor.approvalMode;
@@ -6876,55 +7077,66 @@ ${contextBlock}` : contextBlock);
6876
7077
  },
6877
7078
  ariaLabel: "Approval mode",
6878
7079
  onChange: (value) => void setApprovalMode(value)
6879
- }), _el$32);
6880
- _el$32.$$click = () => void (runtimeState2().supervisor.paused ? resume() : pause());
6881
- insert(_el$32, () => runtimeState2().supervisor.paused ? "Resume" : "Pause");
6882
- _el$33.$$click = () => void restoreSession();
6883
- insert(_el$34, approvalModeDescription);
6884
- insert(_el$25, createComponent(Show, {
7080
+ }), _el$33);
7081
+ _el$33.$$click = () => void (runtimeState2().supervisor.paused ? resume() : pause());
7082
+ insert(_el$33, () => runtimeState2().supervisor.paused ? "Resume" : "Pause");
7083
+ _el$34.$$click = () => void restoreSession();
7084
+ insert(_el$32, createComponent(Show, {
7085
+ get when() {
7086
+ return runtimeState2().canUndo;
7087
+ },
7088
+ get children() {
7089
+ var _el$35 = _tmpl$4$3();
7090
+ _el$35.$$click = () => void undoLastAction();
7091
+ createRenderEffect(() => setAttribute(_el$35, "title", runtimeState2().undoInfo ? `Undo: ${runtimeState2().undoInfo.actionName}` : "Undo last action"));
7092
+ return _el$35;
7093
+ }
7094
+ }), null);
7095
+ insert(_el$36, approvalModeDescription);
7096
+ insert(_el$26, createComponent(Show, {
6885
7097
  get when() {
6886
7098
  return runtimeState2().supervisor.pendingApprovals.length > 0;
6887
7099
  },
6888
7100
  get fallback() {
6889
- return _tmpl$26$1();
7101
+ return _tmpl$28$1();
6890
7102
  },
6891
7103
  get children() {
6892
- return [_tmpl$4$3(), createComponent(For, {
7104
+ return [_tmpl$5$3(), createComponent(For, {
6893
7105
  get each() {
6894
7106
  return runtimeState2().supervisor.pendingApprovals;
6895
7107
  },
6896
7108
  children: (approval) => (() => {
6897
- var _el$111 = _tmpl$27$1(), _el$112 = _el$111.firstChild, _el$113 = _el$112.nextSibling, _el$114 = _el$113.nextSibling, _el$115 = _el$114.nextSibling, _el$116 = _el$115.nextSibling, _el$117 = _el$116.firstChild, _el$118 = _el$117.nextSibling;
6898
- insert(_el$113, () => approval.name);
6899
- insert(_el$114, () => approval.argsSummary);
6900
- insert(_el$115, () => approval.reason);
6901
- _el$117.$$click = () => void resolveApproval(approval.id, true);
6902
- _el$118.$$click = () => void resolveApproval(approval.id, false);
6903
- return _el$111;
7109
+ var _el$122 = _tmpl$29$1(), _el$123 = _el$122.firstChild, _el$124 = _el$123.nextSibling, _el$125 = _el$124.nextSibling, _el$126 = _el$125.nextSibling, _el$127 = _el$126.nextSibling, _el$128 = _el$127.firstChild, _el$129 = _el$128.nextSibling;
7110
+ insert(_el$124, () => approval.name);
7111
+ insert(_el$125, () => approval.argsSummary);
7112
+ insert(_el$126, () => approval.reason);
7113
+ _el$128.$$click = () => void resolveApproval(approval.id, true);
7114
+ _el$129.$$click = () => void resolveApproval(approval.id, false);
7115
+ return _el$122;
6904
7116
  })()
6905
7117
  })];
6906
7118
  }
6907
- }), _el$36);
6908
- insert(_el$36, createComponent(Show, {
7119
+ }), _el$38);
7120
+ insert(_el$38, createComponent(Show, {
6909
7121
  get when() {
6910
7122
  return recentActions().length > 0;
6911
7123
  },
6912
7124
  get children() {
6913
- var _el$38 = _tmpl$5$3();
6914
- _el$38.$$click = () => setActionsExpanded((current) => !current);
6915
- insert(_el$38, (() => {
7125
+ var _el$40 = _tmpl$6$3();
7126
+ _el$40.$$click = () => setActionsExpanded((current) => !current);
7127
+ insert(_el$40, (() => {
6916
7128
  var _c$ = memo(() => !!actionsExpanded());
6917
7129
  return () => _c$() ? "Hide history" : `Show history (${recentActions().length})`;
6918
7130
  })());
6919
- return _el$38;
7131
+ return _el$40;
6920
7132
  }
6921
7133
  }), null);
6922
- insert(_el$25, createComponent(Show, {
7134
+ insert(_el$26, createComponent(Show, {
6923
7135
  get when() {
6924
7136
  return recentActions().length > 0;
6925
7137
  },
6926
7138
  get fallback() {
6927
- return _tmpl$28$1();
7139
+ return _tmpl$30$1();
6928
7140
  },
6929
7141
  get children() {
6930
7142
  return createComponent(Show, {
@@ -6932,7 +7144,7 @@ ${contextBlock}` : contextBlock);
6932
7144
  return actionsExpanded();
6933
7145
  },
6934
7146
  get fallback() {
6935
- return _tmpl$29$1();
7147
+ return _tmpl$31$1();
6936
7148
  },
6937
7149
  get children() {
6938
7150
  return createComponent(For, {
@@ -6940,71 +7152,71 @@ ${contextBlock}` : contextBlock);
6940
7152
  return recentActions();
6941
7153
  },
6942
7154
  children: (action) => (() => {
6943
- var _el$121 = _tmpl$32$1(), _el$122 = _el$121.firstChild, _el$123 = _el$122.firstChild, _el$124 = _el$123.nextSibling, _el$125 = _el$122.nextSibling;
6944
- insert(_el$123, () => action.name);
6945
- insert(_el$124, () => action.status);
6946
- insert(_el$125, () => action.argsSummary);
6947
- insert(_el$121, createComponent(Show, {
7155
+ var _el$132 = _tmpl$34$1(), _el$133 = _el$132.firstChild, _el$134 = _el$133.firstChild, _el$135 = _el$134.nextSibling, _el$136 = _el$133.nextSibling;
7156
+ insert(_el$134, () => action.name);
7157
+ insert(_el$135, () => action.status);
7158
+ insert(_el$136, () => action.argsSummary);
7159
+ insert(_el$132, createComponent(Show, {
6948
7160
  get when() {
6949
7161
  return action.resultSummary;
6950
7162
  },
6951
7163
  get children() {
6952
- var _el$126 = _tmpl$30$1();
6953
- insert(_el$126, () => action.resultSummary);
6954
- return _el$126;
7164
+ var _el$137 = _tmpl$32$1();
7165
+ insert(_el$137, () => action.resultSummary);
7166
+ return _el$137;
6955
7167
  }
6956
7168
  }), null);
6957
- insert(_el$121, createComponent(Show, {
7169
+ insert(_el$132, createComponent(Show, {
6958
7170
  get when() {
6959
7171
  return action.error;
6960
7172
  },
6961
7173
  get children() {
6962
- var _el$127 = _tmpl$31$1();
6963
- insert(_el$127, () => action.error);
6964
- return _el$127;
7174
+ var _el$138 = _tmpl$33$1();
7175
+ insert(_el$138, () => action.error);
7176
+ return _el$138;
6965
7177
  }
6966
7178
  }), null);
6967
- createRenderEffect(() => className(_el$124, `agent-action-status ${action.status}`));
6968
- return _el$121;
7179
+ createRenderEffect(() => className(_el$135, `agent-action-status ${action.status}`));
7180
+ return _el$132;
6969
7181
  })()
6970
7182
  });
6971
7183
  }
6972
7184
  });
6973
7185
  }
6974
7186
  }), null);
6975
- createRenderEffect(() => _el$30.classList.toggle("paused", !!runtimeState2().supervisor.paused));
6976
- return _el$25;
7187
+ createRenderEffect(() => _el$31.classList.toggle("paused", !!runtimeState2().supervisor.paused));
7188
+ return _el$26;
6977
7189
  }
6978
- }), _el$93);
6979
- insert(_el$24, createComponent(Show, {
7190
+ }), _el$104);
7191
+ insert(_el$25, createComponent(Show, {
6980
7192
  get when() {
6981
7193
  return sidebarTab() === "bookmarks";
6982
7194
  },
6983
7195
  get children() {
6984
- var _el$39 = _tmpl$9$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;
6985
- insert(_el$43, (() => {
7196
+ var _el$41 = _tmpl$0$2(), _el$42 = _el$41.firstChild, _el$43 = _el$42.firstChild, _el$44 = _el$43.firstChild, _el$45 = _el$44.nextSibling, _el$47 = _el$42.nextSibling, _el$48 = _el$47.nextSibling, _el$49 = _el$48.firstChild, _el$50 = _el$49.firstChild, _el$51 = _el$50.nextSibling, _el$62 = _el$48.nextSibling, _el$63 = _el$62.firstChild, _el$64 = _el$63.firstChild, _el$65 = _el$64.nextSibling, _el$66 = _el$63.nextSibling, _el$67 = _el$62.nextSibling;
7197
+ insert(_el$45, (() => {
6986
7198
  var _c$2 = memo(() => !!normalizedBookmarkSearch());
6987
7199
  return () => _c$2() ? `${bookmarkMatchCount()} matches for "${bookmarkSearchQuery().trim()}"` : `${bookmarksState2().bookmarks.length} saved across ${bookmarkFolders().length} folders`;
6988
7200
  })());
6989
- insert(_el$40, createComponent(Show, {
7201
+ insert(_el$42, createComponent(Show, {
6990
7202
  get when() {
6991
7203
  return currentTabSaved();
6992
7204
  },
6993
7205
  get children() {
6994
- return _tmpl$7$2();
7206
+ return _tmpl$8$2();
6995
7207
  }
6996
7208
  }), null);
6997
- _el$45.$$input = (e) => setBookmarkSearchQuery(e.currentTarget.value);
6998
- _el$47.$$click = () => setBookmarkSaveExpanded((current) => !current);
6999
- insert(_el$46, createComponent(Show, {
7209
+ _el$47.$$input = (e) => setBookmarkSearchQuery(e.currentTarget.value);
7210
+ _el$49.$$click = () => setBookmarkSaveExpanded((current) => !current);
7211
+ insert(_el$48, createComponent(Show, {
7000
7212
  get when() {
7001
7213
  return bookmarkSaveExpanded();
7002
7214
  },
7003
7215
  get children() {
7004
- var _el$50 = _tmpl$8$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;
7005
- insert(_el$51, () => currentTab()?.title || "No active page");
7006
- insert(_el$52, () => currentTab()?.url || "Open a page to save it here.");
7007
- insert(_el$53, createComponent(DropdownSelect, {
7216
+ var _el$52 = _tmpl$9$2(), _el$53 = _el$52.firstChild, _el$54 = _el$53.nextSibling, _el$55 = _el$54.nextSibling, _el$56 = _el$55.firstChild, _el$57 = _el$55.nextSibling, _el$58 = _el$57.nextSibling, _el$59 = _el$58.nextSibling, _el$60 = _el$59.nextSibling, _el$61 = _el$60.nextSibling;
7217
+ insert(_el$53, () => currentTab()?.title || "No active page");
7218
+ insert(_el$54, () => currentTab()?.url || "Open a page to save it here.");
7219
+ insert(_el$55, createComponent(DropdownSelect, {
7008
7220
  "class": "bookmark-select",
7009
7221
  get value() {
7010
7222
  return selectedFolderId();
@@ -7014,29 +7226,37 @@ ${contextBlock}` : contextBlock);
7014
7226
  },
7015
7227
  ariaLabel: "Bookmark folder",
7016
7228
  onChange: (value) => setSelectedFolderId(value)
7017
- }), _el$54);
7018
- _el$54.$$click = () => void handleSaveBookmark();
7019
- _el$55.$$input = (e) => setBookmarkNote(e.currentTarget.value);
7020
- createRenderEffect(() => _el$54.disabled = !currentTab()?.url);
7021
- createRenderEffect(() => _el$55.value = bookmarkNote());
7022
- return _el$50;
7229
+ }), _el$56);
7230
+ _el$56.$$click = () => void handleSaveBookmark();
7231
+ _el$57.$$input = (e) => setBookmarkNote(e.currentTarget.value);
7232
+ _el$58.$$input = (e) => setBookmarkIntent(e.currentTarget.value);
7233
+ _el$59.$$input = (e) => setBookmarkExpectedContent(e.currentTarget.value);
7234
+ _el$60.$$input = (e) => setBookmarkKeyFields(e.currentTarget.value);
7235
+ _el$61.$$input = (e) => setBookmarkAgentHints(e.currentTarget.value);
7236
+ createRenderEffect(() => _el$56.disabled = !currentTab()?.url);
7237
+ createRenderEffect(() => _el$57.value = bookmarkNote());
7238
+ createRenderEffect(() => _el$58.value = bookmarkIntent());
7239
+ createRenderEffect(() => _el$59.value = bookmarkExpectedContent());
7240
+ createRenderEffect(() => _el$60.value = bookmarkKeyFields());
7241
+ createRenderEffect(() => _el$61.value = bookmarkAgentHints());
7242
+ return _el$52;
7023
7243
  }
7024
7244
  }), null);
7025
- _el$56.addEventListener("submit", handleCreateFolder);
7026
- _el$58.$$input = (e) => setNewFolderName(e.currentTarget.value);
7027
- _el$59.$$input = (e) => setNewFolderSummary(e.currentTarget.value);
7028
- insert(_el$61, createComponent(Show, {
7245
+ _el$62.addEventListener("submit", handleCreateFolder);
7246
+ _el$64.$$input = (e) => setNewFolderName(e.currentTarget.value);
7247
+ _el$65.$$input = (e) => setNewFolderSummary(e.currentTarget.value);
7248
+ insert(_el$67, createComponent(Show, {
7029
7249
  get when() {
7030
7250
  return filteredGroupedBookmarks().length > 0;
7031
7251
  },
7032
7252
  get fallback() {
7033
7253
  return (() => {
7034
- var _el$128 = _tmpl$33$1();
7035
- insert(_el$128, (() => {
7254
+ var _el$139 = _tmpl$35$1();
7255
+ insert(_el$139, (() => {
7036
7256
  var _c$5 = memo(() => !!normalizedBookmarkSearch());
7037
7257
  return () => _c$5() ? `No bookmarks matched "${bookmarkSearchQuery().trim()}".` : "No bookmarks saved yet.";
7038
7258
  })());
7039
- return _el$128;
7259
+ return _el$139;
7040
7260
  })();
7041
7261
  },
7042
7262
  get children() {
@@ -7045,100 +7265,100 @@ ${contextBlock}` : contextBlock);
7045
7265
  return filteredGroupedBookmarks();
7046
7266
  },
7047
7267
  children: (folder) => (() => {
7048
- var _el$129 = _tmpl$40$1(), _el$130 = _el$129.firstChild, _el$131 = _el$130.firstChild, _el$132 = _el$131.firstChild, _el$133 = _el$132.nextSibling, _el$134 = _el$133.firstChild, _el$135 = _el$134.nextSibling, _el$136 = _el$135.firstChild;
7049
- _el$130.$$keydown = (e) => {
7268
+ var _el$140 = _tmpl$42$1(), _el$141 = _el$140.firstChild, _el$142 = _el$141.firstChild, _el$143 = _el$142.firstChild, _el$144 = _el$143.nextSibling, _el$145 = _el$144.firstChild, _el$146 = _el$145.nextSibling, _el$147 = _el$146.firstChild;
7269
+ _el$141.$$keydown = (e) => {
7050
7270
  if (e.key === "Enter" || e.key === " ") {
7051
7271
  e.preventDefault();
7052
7272
  toggleFolderExpanded(folder.id);
7053
7273
  }
7054
7274
  };
7055
- _el$130.$$click = () => toggleFolderExpanded(folder.id);
7056
- insert(_el$134, () => folder.name);
7057
- insert(_el$135, () => folder.items.length, _el$136);
7058
- insert(_el$133, createComponent(Show, {
7275
+ _el$141.$$click = () => toggleFolderExpanded(folder.id);
7276
+ insert(_el$145, () => folder.name);
7277
+ insert(_el$146, () => folder.items.length, _el$147);
7278
+ insert(_el$144, createComponent(Show, {
7059
7279
  get when() {
7060
7280
  return folder.summary;
7061
7281
  },
7062
7282
  get children() {
7063
- var _el$137 = _tmpl$34$1();
7064
- insert(_el$137, () => folder.summary);
7065
- return _el$137;
7283
+ var _el$148 = _tmpl$36$1();
7284
+ insert(_el$148, () => folder.summary);
7285
+ return _el$148;
7066
7286
  }
7067
7287
  }), null);
7068
- insert(_el$130, createComponent(Show, {
7288
+ insert(_el$141, createComponent(Show, {
7069
7289
  get when() {
7070
7290
  return folder.id !== UNSORTED_FOLDER.id;
7071
7291
  },
7072
7292
  get children() {
7073
- var _el$138 = _tmpl$35$1(), _el$139 = _el$138.firstChild, _el$140 = _el$139.nextSibling;
7074
- _el$139.$$click = (e) => {
7293
+ var _el$149 = _tmpl$37$1(), _el$150 = _el$149.firstChild, _el$151 = _el$150.nextSibling;
7294
+ _el$150.$$click = (e) => {
7075
7295
  e.stopPropagation();
7076
7296
  setEditingFolderId(folder.id);
7077
7297
  setEditingFolderName(folder.name);
7078
7298
  setEditingFolderSummary(folder.summary || "");
7079
7299
  };
7080
- _el$140.$$click = (e) => {
7300
+ _el$151.$$click = (e) => {
7081
7301
  e.stopPropagation();
7082
7302
  setDeletingFolderId(folder.id);
7083
7303
  };
7084
- return _el$138;
7304
+ return _el$149;
7085
7305
  }
7086
7306
  }), null);
7087
- insert(_el$129, createComponent(Show, {
7307
+ insert(_el$140, createComponent(Show, {
7088
7308
  get when() {
7089
7309
  return deletingFolderId() === folder.id;
7090
7310
  },
7091
7311
  get children() {
7092
- var _el$141 = _tmpl$37$1(), _el$142 = _el$141.firstChild, _el$143 = _el$142.firstChild, _el$145 = _el$143.nextSibling;
7093
- _el$145.nextSibling;
7094
- var _el$146 = _el$142.nextSibling, _el$148 = _el$146.firstChild, _el$149 = _el$148.nextSibling;
7095
- insert(_el$142, () => folder.name, _el$145);
7096
- insert(_el$142, (() => {
7312
+ var _el$152 = _tmpl$39$1(), _el$153 = _el$152.firstChild, _el$154 = _el$153.firstChild, _el$156 = _el$154.nextSibling;
7313
+ _el$156.nextSibling;
7314
+ var _el$157 = _el$153.nextSibling, _el$159 = _el$157.firstChild, _el$160 = _el$159.nextSibling;
7315
+ insert(_el$153, () => folder.name, _el$156);
7316
+ insert(_el$153, (() => {
7097
7317
  var _c$6 = memo(() => folder.items.length > 0);
7098
7318
  return () => _c$6() ? ` This folder has ${folder.items.length} bookmark${folder.items.length === 1 ? "" : "s"}.` : "";
7099
7319
  })(), null);
7100
- insert(_el$146, createComponent(Show, {
7320
+ insert(_el$157, createComponent(Show, {
7101
7321
  get when() {
7102
7322
  return folder.items.length > 0;
7103
7323
  },
7104
7324
  get children() {
7105
- var _el$147 = _tmpl$36$1();
7106
- _el$147.$$click = () => void handleRemoveFolder(folder.id, false);
7107
- return _el$147;
7325
+ var _el$158 = _tmpl$38$1();
7326
+ _el$158.$$click = () => void handleRemoveFolder(folder.id, false);
7327
+ return _el$158;
7108
7328
  }
7109
- }), _el$148);
7110
- _el$148.$$click = () => void handleRemoveFolder(folder.id, true);
7111
- insert(_el$148, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
7112
- _el$149.$$click = () => setDeletingFolderId(null);
7113
- return _el$141;
7329
+ }), _el$159);
7330
+ _el$159.$$click = () => void handleRemoveFolder(folder.id, true);
7331
+ insert(_el$159, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
7332
+ _el$160.$$click = () => setDeletingFolderId(null);
7333
+ return _el$152;
7114
7334
  }
7115
7335
  }), null);
7116
- insert(_el$129, createComponent(Show, {
7336
+ insert(_el$140, createComponent(Show, {
7117
7337
  get when() {
7118
7338
  return editingFolderId() === folder.id;
7119
7339
  },
7120
7340
  get children() {
7121
- var _el$150 = _tmpl$38$1(), _el$151 = _el$150.firstChild, _el$152 = _el$151.firstChild, _el$153 = _el$152.nextSibling, _el$154 = _el$151.nextSibling, _el$155 = _el$154.nextSibling;
7122
- _el$152.$$input = (e) => setEditingFolderName(e.currentTarget.value);
7123
- _el$153.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
7124
- _el$154.$$click = () => void handleRenameFolder(folder.id);
7125
- _el$155.$$click = () => {
7341
+ var _el$161 = _tmpl$40$1(), _el$162 = _el$161.firstChild, _el$163 = _el$162.firstChild, _el$164 = _el$163.nextSibling, _el$165 = _el$162.nextSibling, _el$166 = _el$165.nextSibling;
7342
+ _el$163.$$input = (e) => setEditingFolderName(e.currentTarget.value);
7343
+ _el$164.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
7344
+ _el$165.$$click = () => void handleRenameFolder(folder.id);
7345
+ _el$166.$$click = () => {
7126
7346
  setEditingFolderId(null);
7127
7347
  setEditingFolderName("");
7128
7348
  setEditingFolderSummary("");
7129
7349
  };
7130
- createRenderEffect(() => _el$154.disabled = !editingFolderName().trim());
7131
- createRenderEffect(() => _el$152.value = editingFolderName());
7132
- createRenderEffect(() => _el$153.value = editingFolderSummary());
7133
- return _el$150;
7350
+ createRenderEffect(() => _el$165.disabled = !editingFolderName().trim());
7351
+ createRenderEffect(() => _el$163.value = editingFolderName());
7352
+ createRenderEffect(() => _el$164.value = editingFolderSummary());
7353
+ return _el$161;
7134
7354
  }
7135
7355
  }), null);
7136
- insert(_el$129, createComponent(Show, {
7356
+ insert(_el$140, createComponent(Show, {
7137
7357
  get when() {
7138
7358
  return isFolderExpanded(folder.id);
7139
7359
  },
7140
7360
  get fallback() {
7141
- return _tmpl$41$1();
7361
+ return _tmpl$43();
7142
7362
  },
7143
7363
  get children() {
7144
7364
  return createComponent(Show, {
@@ -7146,116 +7366,204 @@ ${contextBlock}` : contextBlock);
7146
7366
  return folder.items.length > 0;
7147
7367
  },
7148
7368
  get fallback() {
7149
- return _tmpl$42$1();
7369
+ return _tmpl$44();
7150
7370
  },
7151
7371
  get children() {
7152
- var _el$156 = _tmpl$39$1();
7153
- insert(_el$156, createComponent(For, {
7372
+ var _el$167 = _tmpl$41$1();
7373
+ insert(_el$167, createComponent(For, {
7154
7374
  get each() {
7155
7375
  return folder.items;
7156
7376
  },
7157
7377
  children: (bookmark) => (() => {
7158
- var _el$159 = _tmpl$44(), _el$160 = _el$159.firstChild, _el$161 = _el$160.firstChild, _el$162 = _el$161.nextSibling, _el$164 = _el$160.nextSibling, _el$165 = _el$164.firstChild, _el$166 = _el$165.nextSibling;
7159
- _el$160.$$click = () => void createTab(bookmark.url);
7160
- insert(_el$161, () => bookmark.title || bookmark.url);
7161
- insert(_el$162, () => bookmark.url);
7162
- insert(_el$159, createComponent(Show, {
7378
+ var _el$170 = _tmpl$51(), _el$171 = _el$170.firstChild, _el$172 = _el$171.firstChild, _el$173 = _el$172.nextSibling, _el$198 = _el$171.nextSibling, _el$199 = _el$198.firstChild, _el$200 = _el$199.nextSibling, _el$201 = _el$200.nextSibling;
7379
+ _el$171.$$click = () => void createTab(bookmark.url);
7380
+ insert(_el$172, () => bookmark.title || bookmark.url);
7381
+ insert(_el$173, () => bookmark.url);
7382
+ insert(_el$170, createComponent(Show, {
7163
7383
  get when() {
7164
7384
  return bookmark.note;
7165
7385
  },
7166
7386
  get children() {
7167
- var _el$163 = _tmpl$43();
7168
- insert(_el$163, () => bookmark.note);
7169
- return _el$163;
7387
+ var _el$174 = _tmpl$45();
7388
+ insert(_el$174, () => bookmark.note);
7389
+ return _el$174;
7390
+ }
7391
+ }), _el$198);
7392
+ insert(_el$170, createComponent(Show, {
7393
+ get when() {
7394
+ return bookmark.intent || bookmark.expectedContent || (bookmark.keyFields?.length || 0) > 0 || (bookmark.agentHints && Object.keys(bookmark.agentHints).length || 0) > 0;
7395
+ },
7396
+ get children() {
7397
+ var _el$175 = _tmpl$45();
7398
+ insert(_el$175, createComponent(Show, {
7399
+ get when() {
7400
+ return bookmark.intent;
7401
+ },
7402
+ get children() {
7403
+ var _el$176 = _tmpl$46(), _el$177 = _el$176.firstChild;
7404
+ _el$177.nextSibling;
7405
+ insert(_el$176, () => bookmark.intent, null);
7406
+ return _el$176;
7407
+ }
7408
+ }), null);
7409
+ insert(_el$175, createComponent(Show, {
7410
+ get when() {
7411
+ return bookmark.expectedContent;
7412
+ },
7413
+ get children() {
7414
+ var _el$179 = _tmpl$47(), _el$180 = _el$179.firstChild;
7415
+ _el$180.nextSibling;
7416
+ insert(_el$179, () => bookmark.expectedContent, null);
7417
+ return _el$179;
7418
+ }
7419
+ }), null);
7420
+ insert(_el$175, createComponent(Show, {
7421
+ get when() {
7422
+ return (bookmark.keyFields?.length || 0) > 0;
7423
+ },
7424
+ get children() {
7425
+ var _el$182 = _tmpl$48(), _el$183 = _el$182.firstChild;
7426
+ _el$183.nextSibling;
7427
+ insert(_el$182, () => bookmark.keyFields?.join(", "), null);
7428
+ return _el$182;
7429
+ }
7430
+ }), null);
7431
+ insert(_el$175, createComponent(Show, {
7432
+ get when() {
7433
+ return memo(() => !!bookmark.agentHints)() && Object.keys(bookmark.agentHints).length > 0;
7434
+ },
7435
+ get children() {
7436
+ var _el$185 = _tmpl$49(), _el$186 = _el$185.firstChild;
7437
+ _el$186.nextSibling;
7438
+ insert(_el$185, () => Object.entries(bookmark.agentHints || {}).map(([key, hint]) => `${key}: ${hint}`).join(" • "), null);
7439
+ return _el$185;
7440
+ }
7441
+ }), null);
7442
+ return _el$175;
7443
+ }
7444
+ }), _el$198);
7445
+ insert(_el$170, createComponent(Show, {
7446
+ get when() {
7447
+ return editingBookmarkId() === bookmark.id;
7448
+ },
7449
+ get children() {
7450
+ var _el$188 = _tmpl$50(), _el$189 = _el$188.firstChild, _el$190 = _el$189.nextSibling, _el$191 = _el$190.nextSibling, _el$192 = _el$191.nextSibling, _el$193 = _el$192.nextSibling, _el$194 = _el$193.nextSibling, _el$195 = _el$194.nextSibling, _el$196 = _el$195.firstChild, _el$197 = _el$196.nextSibling;
7451
+ _el$189.$$input = (e) => setEditingBookmarkTitle(e.currentTarget.value);
7452
+ _el$190.$$input = (e) => setEditingBookmarkNote(e.currentTarget.value);
7453
+ _el$191.$$input = (e) => setEditingBookmarkIntent(e.currentTarget.value);
7454
+ _el$192.$$input = (e) => setEditingBookmarkExpectedContent(e.currentTarget.value);
7455
+ _el$193.$$input = (e) => setEditingBookmarkKeyFields(e.currentTarget.value);
7456
+ _el$194.$$input = (e) => setEditingBookmarkAgentHints(e.currentTarget.value);
7457
+ _el$196.$$click = () => void handleUpdateBookmark(bookmark.id);
7458
+ _el$197.$$click = resetBookmarkEditor;
7459
+ createRenderEffect(() => _el$189.value = editingBookmarkTitle());
7460
+ createRenderEffect(() => _el$190.value = editingBookmarkNote());
7461
+ createRenderEffect(() => _el$191.value = editingBookmarkIntent());
7462
+ createRenderEffect(() => _el$192.value = editingBookmarkExpectedContent());
7463
+ createRenderEffect(() => _el$193.value = editingBookmarkKeyFields());
7464
+ createRenderEffect(() => _el$194.value = editingBookmarkAgentHints());
7465
+ return _el$188;
7466
+ }
7467
+ }), _el$198);
7468
+ insert(_el$199, () => formatBookmarkDate(bookmark.savedAt));
7469
+ _el$200.$$click = () => editingBookmarkId() === bookmark.id ? resetBookmarkEditor() : startEditingBookmark(bookmark);
7470
+ insert(_el$200, () => editingBookmarkId() === bookmark.id ? "Close" : "Edit");
7471
+ _el$201.$$click = () => {
7472
+ if (editingBookmarkId() === bookmark.id) {
7473
+ resetBookmarkEditor();
7170
7474
  }
7171
- }), _el$164);
7172
- insert(_el$165, () => formatBookmarkDate(bookmark.savedAt));
7173
- _el$166.$$click = () => void removeBookmark(bookmark.id);
7174
- createRenderEffect(() => setAttribute(_el$159, "data-bookmark-id", bookmark.id));
7175
- return _el$159;
7475
+ void removeBookmark(bookmark.id);
7476
+ };
7477
+ createRenderEffect(() => setAttribute(_el$170, "data-bookmark-id", bookmark.id));
7478
+ return _el$170;
7176
7479
  })()
7177
7480
  }));
7178
- return _el$156;
7481
+ return _el$167;
7179
7482
  }
7180
7483
  });
7181
7484
  }
7182
7485
  }), null);
7183
- createRenderEffect(() => _el$132.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
7184
- return _el$129;
7486
+ createRenderEffect(() => _el$143.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
7487
+ return _el$140;
7185
7488
  })()
7186
7489
  });
7187
7490
  }
7188
7491
  }));
7189
7492
  createRenderEffect((_p$) => {
7190
7493
  var _v$ = !!bookmarkSaveExpanded(), _v$2 = !newFolderName().trim();
7191
- _v$ !== _p$.e && _el$49.classList.toggle("expanded", _p$.e = _v$);
7192
- _v$2 !== _p$.t && (_el$60.disabled = _p$.t = _v$2);
7494
+ _v$ !== _p$.e && _el$51.classList.toggle("expanded", _p$.e = _v$);
7495
+ _v$2 !== _p$.t && (_el$66.disabled = _p$.t = _v$2);
7193
7496
  return _p$;
7194
7497
  }, {
7195
7498
  e: void 0,
7196
7499
  t: void 0
7197
7500
  });
7198
- createRenderEffect(() => _el$45.value = bookmarkSearchQuery());
7199
- createRenderEffect(() => _el$58.value = newFolderName());
7200
- createRenderEffect(() => _el$59.value = newFolderSummary());
7201
- return _el$39;
7501
+ createRenderEffect(() => _el$47.value = bookmarkSearchQuery());
7502
+ createRenderEffect(() => _el$64.value = newFolderName());
7503
+ createRenderEffect(() => _el$65.value = newFolderSummary());
7504
+ return _el$41;
7202
7505
  }
7203
- }), _el$93);
7204
- insert(_el$24, createComponent(Show, {
7506
+ }), _el$104);
7507
+ insert(_el$25, createComponent(Show, {
7205
7508
  get when() {
7206
7509
  return sidebarTab() === "checkpoints";
7207
7510
  },
7208
7511
  get children() {
7209
- var _el$62 = _tmpl$1$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;
7210
- _el$68.nextSibling;
7211
- insert(_el$66, (() => {
7512
+ var _el$68 = _tmpl$10$2(), _el$69 = _el$68.firstChild, _el$70 = _el$69.firstChild, _el$71 = _el$70.firstChild, _el$72 = _el$71.nextSibling, _el$73 = _el$69.nextSibling, _el$74 = _el$73.firstChild, _el$75 = _el$74.firstChild, _el$76 = _el$75.nextSibling, _el$77 = _el$76.nextSibling;
7513
+ _el$74.nextSibling;
7514
+ insert(_el$72, (() => {
7212
7515
  var _c$3 = memo(() => recentCheckpoints().length > 0);
7213
7516
  return () => _c$3() ? `${recentCheckpoints().length} saved snapshots` : "Save and restore session snapshots";
7214
7517
  })());
7215
- _el$69.$$input = (e) => setCheckpointName(e.currentTarget.value);
7216
- _el$70.$$click = async () => {
7518
+ _el$75.$$input = (e) => setCheckpointName(e.currentTarget.value);
7519
+ _el$76.$$input = (e) => setCheckpointNote(e.currentTarget.value);
7520
+ _el$77.$$click = async () => {
7217
7521
  const name = checkpointName().trim();
7218
- await createCheckpoint(name || void 0);
7522
+ await createCheckpoint(name || void 0, checkpointNote() || void 0);
7219
7523
  setCheckpointName("");
7524
+ setCheckpointNote("");
7220
7525
  };
7221
- insert(_el$67, createComponent(Show, {
7526
+ insert(_el$73, createComponent(Show, {
7222
7527
  get when() {
7223
7528
  return recentCheckpoints().length > 0;
7224
7529
  },
7225
7530
  get fallback() {
7226
- return _tmpl$45();
7531
+ return _tmpl$52();
7227
7532
  },
7228
7533
  get children() {
7229
- var _el$72 = _tmpl$0$2();
7230
- insert(_el$72, createComponent(For, {
7534
+ var _el$79 = _tmpl$1$2();
7535
+ insert(_el$79, createComponent(For, {
7231
7536
  get each() {
7232
7537
  return recentCheckpoints();
7233
7538
  },
7234
7539
  children: (checkpoint, i) => (() => {
7235
- var _el$168 = _tmpl$47(), _el$169 = _el$168.firstChild, _el$170 = _el$169.firstChild, _el$172 = _el$169.nextSibling, _el$173 = _el$172.firstChild, _el$174 = _el$173.nextSibling, _el$175 = _el$174.nextSibling;
7236
- insert(_el$169, createComponent(Show, {
7540
+ var _el$203 = _tmpl$54(), _el$204 = _el$203.firstChild, _el$205 = _el$204.firstChild, _el$207 = _el$204.nextSibling, _el$208 = _el$207.firstChild, _el$209 = _el$208.nextSibling, _el$210 = _el$209.nextSibling, _el$211 = _el$210.nextSibling;
7541
+ insert(_el$204, createComponent(Show, {
7237
7542
  get when() {
7238
7543
  return i() < recentCheckpoints().length - 1;
7239
7544
  },
7240
7545
  get children() {
7241
- return _tmpl$46();
7546
+ return _tmpl$53();
7242
7547
  }
7243
7548
  }), null);
7244
- insert(_el$173, () => checkpoint.name);
7245
- insert(_el$174, () => new Date(checkpoint.createdAt).toLocaleString());
7246
- _el$175.$$click = () => void restoreCheckpoint(checkpoint.id);
7247
- createRenderEffect(() => _el$170.classList.toggle("latest", !!(i() === 0)));
7248
- return _el$168;
7549
+ insert(_el$208, () => checkpoint.name);
7550
+ insert(_el$209, () => new Date(checkpoint.createdAt).toLocaleString());
7551
+ _el$210.addEventListener("blur", (e) => void updateCheckpointNote(checkpoint.id, e.currentTarget.value));
7552
+ _el$211.$$click = () => void restoreCheckpoint(checkpoint.id);
7553
+ createRenderEffect(() => _el$205.classList.toggle("latest", !!(i() === 0)));
7554
+ createRenderEffect(() => _el$210.value = checkpoint.note || "");
7555
+ return _el$203;
7249
7556
  })()
7250
7557
  }));
7251
- return _el$72;
7558
+ return _el$79;
7252
7559
  }
7253
7560
  }), null);
7254
- createRenderEffect(() => _el$69.value = checkpointName());
7255
- return _el$62;
7561
+ createRenderEffect(() => _el$75.value = checkpointName());
7562
+ createRenderEffect(() => _el$76.value = checkpointNote());
7563
+ return _el$68;
7256
7564
  }
7257
- }), _el$93);
7258
- insert(_el$24, createComponent(Show, {
7565
+ }), _el$104);
7566
+ insert(_el$25, createComponent(Show, {
7259
7567
  get when() {
7260
7568
  return sidebarTab() === "automation";
7261
7569
  },
@@ -7264,41 +7572,68 @@ ${contextBlock}` : contextBlock);
7264
7572
  onRun: () => setSidebarTab("supervisor")
7265
7573
  });
7266
7574
  }
7267
- }), _el$93);
7268
- insert(_el$24, createComponent(Show, {
7575
+ }), _el$104);
7576
+ insert(_el$25, createComponent(Show, {
7269
7577
  get when() {
7270
7578
  return sidebarTab() === "history";
7271
7579
  },
7272
7580
  get children() {
7273
- var _el$73 = _tmpl$11$2(), _el$74 = _el$73.firstChild, _el$75 = _el$74.firstChild, _el$76 = _el$75.nextSibling, _el$77 = _el$74.nextSibling;
7274
- _el$76.$$click = async () => {
7581
+ var _el$80 = _tmpl$12$2(), _el$81 = _el$80.firstChild, _el$82 = _el$81.firstChild, _el$83 = _el$82.nextSibling, _el$84 = _el$81.nextSibling;
7582
+ _el$83.$$click = async () => {
7275
7583
  await history.clear();
7276
7584
  };
7277
- insert(_el$77, createComponent(For, {
7585
+ insert(_el$84, createComponent(For, {
7278
7586
  get each() {
7279
7587
  return history.historyState().entries;
7280
7588
  },
7281
7589
  children: (entry) => (() => {
7282
- var _el$176 = _tmpl$48(), _el$177 = _el$176.firstChild, _el$178 = _el$177.nextSibling, _el$179 = _el$178.nextSibling;
7283
- _el$176.$$click = () => createTab(entry.url);
7284
- insert(_el$177, () => entry.title || entry.url);
7285
- insert(_el$178, () => entry.url);
7286
- insert(_el$179, () => new Date(entry.visitedAt).toLocaleString());
7287
- return _el$176;
7590
+ var _el$212 = _tmpl$55(), _el$213 = _el$212.firstChild, _el$214 = _el$213.nextSibling, _el$215 = _el$214.nextSibling;
7591
+ _el$212.$$click = () => createTab(entry.url);
7592
+ insert(_el$213, () => entry.title || entry.url);
7593
+ insert(_el$214, () => entry.url);
7594
+ insert(_el$215, () => new Date(entry.visitedAt).toLocaleString());
7595
+ return _el$212;
7288
7596
  })()
7289
7597
  }), null);
7290
- insert(_el$77, createComponent(Show, {
7598
+ insert(_el$84, createComponent(Show, {
7291
7599
  get when() {
7292
7600
  return history.historyState().entries.length === 0;
7293
7601
  },
7294
7602
  get children() {
7295
- return _tmpl$10$2();
7603
+ return _tmpl$11$2();
7296
7604
  }
7297
7605
  }), null);
7298
- return _el$73;
7606
+ return _el$80;
7299
7607
  }
7300
- }), _el$93);
7301
- insert(_el$24, createComponent(Show, {
7608
+ }), _el$104);
7609
+ insert(_el$25, createComponent(Show, {
7610
+ get when() {
7611
+ return sidebarTab() === "diff";
7612
+ },
7613
+ get children() {
7614
+ var _el$86 = _tmpl$13$1(), _el$87 = _el$86.firstChild, _el$88 = _el$87.firstChild, _el$89 = _el$88.nextSibling;
7615
+ insert(_el$89, () => isPremium() ? "Page change timeline" : "Premium feature");
7616
+ insert(_el$86, createComponent(Show, {
7617
+ get when() {
7618
+ return isPremium();
7619
+ },
7620
+ get fallback() {
7621
+ return (() => {
7622
+ var _el$216 = _tmpl$56(), _el$217 = _el$216.firstChild, _el$218 = _el$217.nextSibling, _el$219 = _el$218.nextSibling, _el$220 = _el$219.firstChild, _el$221 = _el$220.nextSibling;
7623
+ _el$220.$$click = () => void window.vessel.premium.checkout(premiumState().email || void 0).catch(() => {
7624
+ });
7625
+ _el$221.$$click = openPremiumDetails;
7626
+ return _el$216;
7627
+ })();
7628
+ },
7629
+ get children() {
7630
+ return createComponent(PageDiffTimeline, {});
7631
+ }
7632
+ }), null);
7633
+ return _el$86;
7634
+ }
7635
+ }), _el$104);
7636
+ insert(_el$25, createComponent(Show, {
7302
7637
  get when() {
7303
7638
  return sidebarTab() === "chat";
7304
7639
  },
@@ -7308,23 +7643,23 @@ ${contextBlock}` : contextBlock);
7308
7643
  return !isPremium();
7309
7644
  },
7310
7645
  get children() {
7311
- var _el$79 = _tmpl$12$2(), _el$80 = _el$79.firstChild, _el$81 = _el$80.nextSibling, _el$82 = _el$81.nextSibling, _el$83 = _el$82.firstChild, _el$84 = _el$83.nextSibling;
7312
- _el$83.$$click = () => openPremiumCheckout("chat_banner_clicked");
7313
- _el$84.$$click = openPremiumDetails;
7314
- return _el$79;
7646
+ var _el$90 = _tmpl$14$1(), _el$91 = _el$90.firstChild, _el$92 = _el$91.nextSibling, _el$93 = _el$92.nextSibling, _el$94 = _el$93.firstChild, _el$95 = _el$94.nextSibling;
7647
+ _el$94.$$click = () => openPremiumCheckout("chat_banner_clicked");
7648
+ _el$95.$$click = openPremiumDetails;
7649
+ return _el$90;
7315
7650
  }
7316
7651
  }), createComponent(For, {
7317
7652
  get each() {
7318
7653
  return messages2();
7319
7654
  },
7320
7655
  children: (msg) => (() => {
7321
- var _el$180 = _tmpl$49();
7322
- insert(_el$180, createComponent(MarkdownMessage, {
7656
+ var _el$222 = _tmpl$57();
7657
+ insert(_el$222, createComponent(MarkdownMessage, {
7323
7658
  get content() {
7324
7659
  return msg.content;
7325
7660
  }
7326
7661
  }), null);
7327
- insert(_el$180, createComponent(Show, {
7662
+ insert(_el$222, createComponent(Show, {
7328
7663
  get when() {
7329
7664
  return memo(() => msg.role === "assistant")() ? getPremiumPromptKind(msg.content) : null;
7330
7665
  },
@@ -7337,31 +7672,31 @@ ${contextBlock}` : contextBlock);
7337
7672
  onOpenSettings: openPremiumDetails
7338
7673
  })
7339
7674
  }), null);
7340
- createRenderEffect(() => className(_el$180, `message message-${msg.role}`));
7341
- return _el$180;
7675
+ createRenderEffect(() => className(_el$222, `message message-${msg.role}`));
7676
+ return _el$222;
7342
7677
  })()
7343
7678
  }), createComponent(Show, {
7344
7679
  get when() {
7345
7680
  return isStreaming2();
7346
7681
  },
7347
7682
  get children() {
7348
- var _el$85 = _tmpl$15$1(), _el$86 = _el$85.firstChild;
7349
- insert(_el$86, createComponent(Show, {
7683
+ var _el$96 = _tmpl$17$1(), _el$97 = _el$96.firstChild;
7684
+ insert(_el$97, createComponent(Show, {
7350
7685
  get when() {
7351
7686
  return hasFirstChunk2();
7352
7687
  },
7353
7688
  get fallback() {
7354
- return _tmpl$50();
7689
+ return _tmpl$58();
7355
7690
  },
7356
7691
  get children() {
7357
- var _el$87 = _tmpl$14$1(), _el$88 = _el$87.firstChild, _el$89 = _el$88.firstChild;
7358
- _el$89.nextSibling;
7359
- insert(_el$87, createComponent(MarkdownMessage, {
7692
+ var _el$98 = _tmpl$16$1(), _el$99 = _el$98.firstChild, _el$100 = _el$99.firstChild;
7693
+ _el$100.nextSibling;
7694
+ insert(_el$98, createComponent(MarkdownMessage, {
7360
7695
  get content() {
7361
7696
  return streamingText2();
7362
7697
  }
7363
- }), _el$88);
7364
- insert(_el$87, createComponent(Show, {
7698
+ }), _el$99);
7699
+ insert(_el$98, createComponent(Show, {
7365
7700
  get when() {
7366
7701
  return getPremiumPromptKind(streamingText2());
7367
7702
  },
@@ -7373,21 +7708,21 @@ ${contextBlock}` : contextBlock);
7373
7708
  onStartTrial: () => openPremiumCheckout(kind() === "premium_gate" ? "premium_gate_clicked" : "iteration_limit_clicked"),
7374
7709
  onOpenSettings: openPremiumDetails
7375
7710
  })
7376
- }), _el$88);
7377
- insert(_el$88, createComponent(Show, {
7711
+ }), _el$99);
7712
+ insert(_el$99, createComponent(Show, {
7378
7713
  get when() {
7379
7714
  return elapsedSeconds() > 0;
7380
7715
  },
7381
7716
  get children() {
7382
- var _el$91 = _tmpl$13$1();
7383
- insert(_el$91, () => ` • ${elapsedSeconds()}s`);
7384
- return _el$91;
7717
+ var _el$102 = _tmpl$15$1();
7718
+ insert(_el$102, () => ` • ${elapsedSeconds()}s`);
7719
+ return _el$102;
7385
7720
  }
7386
7721
  }), null);
7387
- return _el$87;
7722
+ return _el$98;
7388
7723
  }
7389
7724
  }));
7390
- return _el$85;
7725
+ return _el$96;
7391
7726
  }
7392
7727
  }), createComponent(Show, {
7393
7728
  get when() {
@@ -7399,22 +7734,22 @@ ${contextBlock}` : contextBlock);
7399
7734
  return runtimeState2().supervisor.pendingApprovals;
7400
7735
  },
7401
7736
  children: (approval) => (() => {
7402
- var _el$182 = _tmpl$52(), _el$183 = _el$182.firstChild, _el$184 = _el$183.nextSibling, _el$185 = _el$184.firstChild, _el$186 = _el$185.firstChild, _el$187 = _el$186.nextSibling, _el$189 = _el$185.nextSibling, _el$190 = _el$189.nextSibling, _el$191 = _el$190.firstChild, _el$192 = _el$191.nextSibling;
7403
- insert(_el$187, () => approval.name);
7404
- insert(_el$184, createComponent(Show, {
7737
+ var _el$224 = _tmpl$60(), _el$225 = _el$224.firstChild, _el$226 = _el$225.nextSibling, _el$227 = _el$226.firstChild, _el$228 = _el$227.firstChild, _el$229 = _el$228.nextSibling, _el$231 = _el$227.nextSibling, _el$232 = _el$231.nextSibling, _el$233 = _el$232.firstChild, _el$234 = _el$233.nextSibling;
7738
+ insert(_el$229, () => approval.name);
7739
+ insert(_el$226, createComponent(Show, {
7405
7740
  get when() {
7406
7741
  return approval.argsSummary;
7407
7742
  },
7408
7743
  get children() {
7409
- var _el$188 = _tmpl$51();
7410
- insert(_el$188, () => approval.argsSummary);
7411
- return _el$188;
7744
+ var _el$230 = _tmpl$59();
7745
+ insert(_el$230, () => approval.argsSummary);
7746
+ return _el$230;
7412
7747
  }
7413
- }), _el$189);
7414
- insert(_el$189, () => approval.reason);
7415
- _el$191.$$click = () => void resolveApproval(approval.id, true);
7416
- _el$192.$$click = () => void resolveApproval(approval.id, false);
7417
- return _el$182;
7748
+ }), _el$231);
7749
+ insert(_el$231, () => approval.reason);
7750
+ _el$233.$$click = () => void resolveApproval(approval.id, true);
7751
+ _el$234.$$click = () => void resolveApproval(approval.id, false);
7752
+ return _el$224;
7418
7753
  })()
7419
7754
  });
7420
7755
  }
@@ -7423,13 +7758,13 @@ ${contextBlock}` : contextBlock);
7423
7758
  return memo(() => messages2().length === 0)() && !isStreaming2();
7424
7759
  },
7425
7760
  get children() {
7426
- return _tmpl$16$1();
7761
+ return _tmpl$18$1();
7427
7762
  }
7428
7763
  })];
7429
7764
  }
7430
- }), _el$93);
7765
+ }), _el$104);
7431
7766
  var _ref$ = messagesEndRef;
7432
- typeof _ref$ === "function" ? use(_ref$, _el$93) : messagesEndRef = _el$93;
7767
+ typeof _ref$ === "function" ? use(_ref$, _el$104) : messagesEndRef = _el$104;
7433
7768
  insert(_el$9, createComponent(Show, {
7434
7769
  get when() {
7435
7770
  return sidebarTab() === "chat";
@@ -7440,125 +7775,125 @@ ${contextBlock}` : contextBlock);
7440
7775
  return isStreaming2() || messages2().length > 0;
7441
7776
  },
7442
7777
  get children() {
7443
- var _el$94 = _tmpl$19$1();
7444
- insert(_el$94, createComponent(Show, {
7778
+ var _el$105 = _tmpl$21$1();
7779
+ insert(_el$105, createComponent(Show, {
7445
7780
  get when() {
7446
7781
  return isStreaming2();
7447
7782
  },
7448
7783
  get children() {
7449
- var _el$95 = _tmpl$17$1();
7450
- _el$95.$$click = () => cancel();
7451
- return _el$95;
7784
+ var _el$106 = _tmpl$19$1();
7785
+ _el$106.$$click = () => cancel();
7786
+ return _el$106;
7452
7787
  }
7453
7788
  }), null);
7454
- insert(_el$94, createComponent(Show, {
7789
+ insert(_el$105, createComponent(Show, {
7455
7790
  get when() {
7456
7791
  return memo(() => !!!isStreaming2())() && messages2().length > 0;
7457
7792
  },
7458
7793
  get children() {
7459
- var _el$96 = _tmpl$18$1();
7460
- _el$96.$$click = handleRetry;
7461
- return _el$96;
7794
+ var _el$107 = _tmpl$20$1();
7795
+ _el$107.$$click = handleRetry;
7796
+ return _el$107;
7462
7797
  }
7463
7798
  }), null);
7464
- return _el$94;
7799
+ return _el$105;
7465
7800
  }
7466
7801
  }), createComponent(Show, {
7467
7802
  get when() {
7468
7803
  return highlightCount() > 0;
7469
7804
  },
7470
7805
  get children() {
7471
- var _el$97 = _tmpl$20$1(), _el$98 = _el$97.firstChild, _el$99 = _el$98.nextSibling;
7472
- _el$99.firstChild;
7473
- var _el$101 = _el$99.nextSibling;
7474
- _el$98.$$click = () => void scrollToHighlight(highlightIndex() - 1);
7475
- _el$99.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex());
7476
- insert(_el$99, (() => {
7806
+ var _el$108 = _tmpl$22$1(), _el$109 = _el$108.firstChild, _el$110 = _el$109.nextSibling;
7807
+ _el$110.firstChild;
7808
+ var _el$112 = _el$110.nextSibling;
7809
+ _el$109.$$click = () => void scrollToHighlight(highlightIndex() - 1);
7810
+ _el$110.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex());
7811
+ insert(_el$110, (() => {
7477
7812
  var _c$4 = memo(() => highlightIndex() >= 0);
7478
7813
  return () => _c$4() ? `${highlightIndex() + 1} / ${highlightCount()}` : `${highlightCount()} highlight${highlightCount() > 1 ? "s" : ""}`;
7479
7814
  })(), null);
7480
- _el$101.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex() + 1);
7815
+ _el$112.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex() + 1);
7481
7816
  createRenderEffect((_p$) => {
7482
7817
  var _v$3 = highlightIndex() <= 0, _v$4 = highlightIndex() >= highlightCount() - 1;
7483
- _v$3 !== _p$.e && (_el$98.disabled = _p$.e = _v$3);
7484
- _v$4 !== _p$.t && (_el$101.disabled = _p$.t = _v$4);
7818
+ _v$3 !== _p$.e && (_el$109.disabled = _p$.e = _v$3);
7819
+ _v$4 !== _p$.t && (_el$112.disabled = _p$.t = _v$4);
7485
7820
  return _p$;
7486
7821
  }, {
7487
7822
  e: void 0,
7488
7823
  t: void 0
7489
7824
  });
7490
- return _el$97;
7825
+ return _el$108;
7491
7826
  }
7492
7827
  }), createComponent(Show, {
7493
7828
  get when() {
7494
7829
  return queueNotice2() !== null || pendingQueryCount() > 0;
7495
7830
  },
7496
7831
  get children() {
7497
- var _el$102 = _tmpl$23$1(), _el$103 = _el$102.firstChild, _el$104 = _el$103.firstChild;
7498
- insert(_el$104, () => queueNotice2() ?? `Queued ${pendingQueryCount()}/${pendingQueryLimit}.`);
7499
- insert(_el$103, createComponent(Show, {
7832
+ var _el$113 = _tmpl$25$1(), _el$114 = _el$113.firstChild, _el$115 = _el$114.firstChild;
7833
+ insert(_el$115, () => queueNotice2() ?? `Queued ${pendingQueryCount()}/${pendingQueryLimit}.`);
7834
+ insert(_el$114, createComponent(Show, {
7500
7835
  get when() {
7501
7836
  return pendingQueryCount() > 0;
7502
7837
  },
7503
7838
  get children() {
7504
- var _el$105 = _tmpl$21$1();
7505
- _el$105.$$click = () => clearPendingQueries();
7506
- return _el$105;
7839
+ var _el$116 = _tmpl$23$1();
7840
+ _el$116.$$click = () => clearPendingQueries();
7841
+ return _el$116;
7507
7842
  }
7508
7843
  }), null);
7509
- insert(_el$102, createComponent(Show, {
7844
+ insert(_el$113, createComponent(Show, {
7510
7845
  get when() {
7511
7846
  return pendingQueries2().length > 0;
7512
7847
  },
7513
7848
  get children() {
7514
- var _el$106 = _tmpl$22$1();
7515
- insert(_el$106, createComponent(For, {
7849
+ var _el$117 = _tmpl$24$1();
7850
+ insert(_el$117, createComponent(For, {
7516
7851
  get each() {
7517
7852
  return pendingQueries2();
7518
7853
  },
7519
7854
  children: (pendingPrompt, index) => (() => {
7520
- var _el$193 = _tmpl$53(), _el$194 = _el$193.firstChild, _el$195 = _el$194.nextSibling;
7521
- setAttribute(_el$194, "title", pendingPrompt);
7522
- insert(_el$194, pendingPrompt);
7523
- _el$195.$$click = () => removePendingQuery(index());
7524
- createRenderEffect(() => setAttribute(_el$195, "aria-label", `Remove queued prompt ${index() + 1}`));
7525
- return _el$193;
7855
+ var _el$235 = _tmpl$61(), _el$236 = _el$235.firstChild, _el$237 = _el$236.nextSibling;
7856
+ setAttribute(_el$236, "title", pendingPrompt);
7857
+ insert(_el$236, pendingPrompt);
7858
+ _el$237.$$click = () => removePendingQuery(index());
7859
+ createRenderEffect(() => setAttribute(_el$237, "aria-label", `Remove queued prompt ${index() + 1}`));
7860
+ return _el$235;
7526
7861
  })()
7527
7862
  }));
7528
- return _el$106;
7863
+ return _el$117;
7529
7864
  }
7530
7865
  }), null);
7531
- return _el$102;
7866
+ return _el$113;
7532
7867
  }
7533
7868
  }), (() => {
7534
- var _el$107 = _tmpl$24$1(), _el$108 = _el$107.firstChild, _el$109 = _el$108.nextSibling;
7535
- _el$108.$$keydown = (e) => {
7869
+ var _el$118 = _tmpl$26$1(), _el$119 = _el$118.firstChild, _el$120 = _el$119.nextSibling;
7870
+ _el$119.$$keydown = (e) => {
7536
7871
  if (e.key === "Enter" && !e.shiftKey) {
7537
7872
  e.preventDefault();
7538
7873
  void handleChatSend();
7539
7874
  }
7540
7875
  };
7541
- _el$108.$$input = (e) => setChatInput(e.currentTarget.value);
7876
+ _el$119.$$input = (e) => setChatInput(e.currentTarget.value);
7542
7877
  var _ref$2 = chatInputRef;
7543
- typeof _ref$2 === "function" ? use(_ref$2, _el$108) : chatInputRef = _el$108;
7544
- _el$109.$$click = () => void handleChatSend();
7545
- insert(_el$109, () => isStreaming2() ? "Queue" : "Send");
7878
+ typeof _ref$2 === "function" ? use(_ref$2, _el$119) : chatInputRef = _el$119;
7879
+ _el$120.$$click = () => void handleChatSend();
7880
+ insert(_el$120, () => isStreaming2() ? "Queue" : "Send");
7546
7881
  createRenderEffect((_p$) => {
7547
7882
  var _v$5 = isStreaming2() ? "Send now to queue the next prompt..." : "Ask anything...", _v$6 = !chatInput().trim();
7548
- _v$5 !== _p$.e && setAttribute(_el$108, "placeholder", _p$.e = _v$5);
7549
- _v$6 !== _p$.t && (_el$109.disabled = _p$.t = _v$6);
7883
+ _v$5 !== _p$.e && setAttribute(_el$119, "placeholder", _p$.e = _v$5);
7884
+ _v$6 !== _p$.t && (_el$120.disabled = _p$.t = _v$6);
7550
7885
  return _p$;
7551
7886
  }, {
7552
7887
  e: void 0,
7553
7888
  t: void 0
7554
7889
  });
7555
- createRenderEffect(() => _el$108.value = chatInput());
7556
- return _el$107;
7890
+ createRenderEffect(() => _el$119.value = chatInput());
7891
+ return _el$118;
7557
7892
  })()];
7558
7893
  }
7559
7894
  }), null);
7560
7895
  createRenderEffect((_p$) => {
7561
- var _v$7 = `${sidebarWidth2()}px`, _v$8 = !!isDragging(), _v$9 = !!(sidebarTab() === "supervisor"), _v$0 = sidebarTab() === "supervisor", _v$1 = !!(sidebarTab() === "bookmarks"), _v$10 = sidebarTab() === "bookmarks", _v$11 = !!(sidebarTab() === "checkpoints"), _v$12 = sidebarTab() === "checkpoints", _v$13 = !!(sidebarTab() === "chat"), _v$14 = sidebarTab() === "chat", _v$15 = !!(sidebarTab() === "automation"), _v$16 = sidebarTab() === "automation", _v$17 = !!(sidebarTab() === "history"), _v$18 = sidebarTab() === "history";
7896
+ var _v$7 = `${sidebarWidth2()}px`, _v$8 = !!isDragging(), _v$9 = !!(sidebarTab() === "supervisor"), _v$0 = sidebarTab() === "supervisor", _v$1 = !!(sidebarTab() === "bookmarks"), _v$10 = sidebarTab() === "bookmarks", _v$11 = !!(sidebarTab() === "checkpoints"), _v$12 = sidebarTab() === "checkpoints", _v$13 = !!(sidebarTab() === "chat"), _v$14 = sidebarTab() === "chat", _v$15 = !!(sidebarTab() === "automation"), _v$16 = sidebarTab() === "automation", _v$17 = !!(sidebarTab() === "history"), _v$18 = sidebarTab() === "history", _v$19 = !!(sidebarTab() === "diff"), _v$20 = sidebarTab() === "diff";
7562
7897
  _v$7 !== _p$.e && setStyleProperty(_el$9, "width", _p$.e = _v$7);
7563
7898
  _v$8 !== _p$.t && _el$0.classList.toggle("dragging", _p$.t = _v$8);
7564
7899
  _v$9 !== _p$.a && _el$16.classList.toggle("active", _p$.a = _v$9);
@@ -7573,6 +7908,8 @@ ${contextBlock}` : contextBlock);
7573
7908
  _v$16 !== _p$.u && setAttribute(_el$22, "aria-selected", _p$.u = _v$16);
7574
7909
  _v$17 !== _p$.c && _el$23.classList.toggle("active", _p$.c = _v$17);
7575
7910
  _v$18 !== _p$.w && setAttribute(_el$23, "aria-selected", _p$.w = _v$18);
7911
+ _v$19 !== _p$.m && _el$24.classList.toggle("active", _p$.m = _v$19);
7912
+ _v$20 !== _p$.f && setAttribute(_el$24, "aria-selected", _p$.f = _v$20);
7576
7913
  return _p$;
7577
7914
  }, {
7578
7915
  e: void 0,
@@ -7588,7 +7925,9 @@ ${contextBlock}` : contextBlock);
7588
7925
  l: void 0,
7589
7926
  u: void 0,
7590
7927
  c: void 0,
7591
- w: void 0
7928
+ w: void 0,
7929
+ m: void 0,
7930
+ f: void 0
7592
7931
  });
7593
7932
  return _el$9;
7594
7933
  }