@quanta-intellect/vessel-browser 0.1.120 → 0.1.123

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.
@@ -1474,7 +1474,7 @@ function Dynamic(props) {
1474
1474
  const [, others] = splitProps(props, ["component"]);
1475
1475
  return createDynamic(() => props.component, others);
1476
1476
  }
1477
- var _tmpl$$r = /* @__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=Downloads>↓</button><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>`);
1477
+ var _tmpl$$t = /* @__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=Downloads>↓</button><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>`);
1478
1478
  const TitleBar = (props) => {
1479
1479
  const isPrivateWindow = new URLSearchParams(window.location.search).get("private") === "1";
1480
1480
  const [mcpStatus, setMcpStatus] = createSignal("starting");
@@ -1507,7 +1507,7 @@ const TitleBar = (props) => {
1507
1507
  window.vessel.ui.setSettingsVisibility(true);
1508
1508
  };
1509
1509
  return (() => {
1510
- var _el$ = _tmpl$$r(), _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, _el$9 = _el$8.nextSibling;
1510
+ var _el$ = _tmpl$$t(), _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, _el$9 = _el$8.nextSibling;
1511
1511
  _el$4.$$click = handleMcpClick;
1512
1512
  _el$6.$$click = () => props.onOpenDownloads?.();
1513
1513
  _el$7.$$click = () => window.vessel.window.minimize();
@@ -1549,7 +1549,7 @@ var LucideContext = createContext({
1549
1549
  absoluteStrokeWidth: false,
1550
1550
  class: ""
1551
1551
  });
1552
- var _tmpl$$q = /* @__PURE__ */ template(`<svg>`);
1552
+ var _tmpl$$s = /* @__PURE__ */ template(`<svg>`);
1553
1553
  var hasA11yProp = (props) => {
1554
1554
  for (const prop in props) {
1555
1555
  if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
@@ -1571,7 +1571,7 @@ var Icon = (props) => {
1571
1571
  const [localProps, rest] = splitProps(props, ["color", "size", "strokeWidth", "children", "class", "name", "iconNode", "absoluteStrokeWidth"]);
1572
1572
  const globalProps = useContext(LucideContext);
1573
1573
  return (() => {
1574
- var _el$ = _tmpl$$q();
1574
+ var _el$ = _tmpl$$s();
1575
1575
  spread(_el$, mergeProps(defaultAttributes_default, {
1576
1576
  get width() {
1577
1577
  return localProps.size ?? globalProps.size ?? defaultAttributes_default.width;
@@ -1606,7 +1606,29 @@ var Icon = (props) => {
1606
1606
  })();
1607
1607
  };
1608
1608
  var Icon_default = Icon;
1609
- var iconNode$k = [["path", {
1609
+ var iconNode$A = [["rect", {
1610
+ x: "2",
1611
+ y: "4",
1612
+ width: "20",
1613
+ height: "16",
1614
+ rx: "2",
1615
+ key: "izxlao"
1616
+ }], ["path", {
1617
+ d: "M10 4v4",
1618
+ key: "pp8u80"
1619
+ }], ["path", {
1620
+ d: "M2 8h20",
1621
+ key: "d11cs7"
1622
+ }], ["path", {
1623
+ d: "M6 4v4",
1624
+ key: "1svtjw"
1625
+ }]];
1626
+ var AppWindow = (props) => createComponent(Icon_default, mergeProps(props, {
1627
+ iconNode: iconNode$A,
1628
+ name: "app-window"
1629
+ }));
1630
+ var app_window_default = AppWindow;
1631
+ var iconNode$z = [["path", {
1610
1632
  d: "M12 7v14",
1611
1633
  key: "1akyts"
1612
1634
  }], ["path", {
@@ -1614,20 +1636,65 @@ var iconNode$k = [["path", {
1614
1636
  key: "ruj8y"
1615
1637
  }]];
1616
1638
  var BookOpen = (props) => createComponent(Icon_default, mergeProps(props, {
1617
- iconNode: iconNode$k,
1639
+ iconNode: iconNode$z,
1618
1640
  name: "book-open"
1619
1641
  }));
1620
1642
  var book_open_default = BookOpen;
1621
- var iconNode$j = [["path", {
1643
+ var iconNode$y = [["path", {
1644
+ d: "M12 8V4H8",
1645
+ key: "hb8ula"
1646
+ }], ["rect", {
1647
+ width: "16",
1648
+ height: "12",
1649
+ x: "4",
1650
+ y: "8",
1651
+ rx: "2",
1652
+ key: "enze0r"
1653
+ }], ["path", {
1654
+ d: "M2 14h2",
1655
+ key: "vft8re"
1656
+ }], ["path", {
1657
+ d: "M20 14h2",
1658
+ key: "4cs60a"
1659
+ }], ["path", {
1660
+ d: "M15 13v2",
1661
+ key: "1xurst"
1662
+ }], ["path", {
1663
+ d: "M9 13v2",
1664
+ key: "rq6x2g"
1665
+ }]];
1666
+ var Bot = (props) => createComponent(Icon_default, mergeProps(props, {
1667
+ iconNode: iconNode$y,
1668
+ name: "bot"
1669
+ }));
1670
+ var bot_default = Bot;
1671
+ var iconNode$x = [["path", {
1622
1672
  d: "M20 6 9 17l-5-5",
1623
1673
  key: "1gmf2c"
1624
1674
  }]];
1625
1675
  var Check = (props) => createComponent(Icon_default, mergeProps(props, {
1626
- iconNode: iconNode$j,
1676
+ iconNode: iconNode$x,
1627
1677
  name: "check"
1628
1678
  }));
1629
1679
  var check_default = Check;
1630
- var iconNode$i = [["rect", {
1680
+ var iconNode$w = [["circle", {
1681
+ cx: "12",
1682
+ cy: "12",
1683
+ r: "10",
1684
+ key: "1mglay"
1685
+ }], ["path", {
1686
+ d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",
1687
+ key: "1u773s"
1688
+ }], ["path", {
1689
+ d: "M12 17h.01",
1690
+ key: "p32p05"
1691
+ }]];
1692
+ var CircleQuestionMark = (props) => createComponent(Icon_default, mergeProps(props, {
1693
+ iconNode: iconNode$w,
1694
+ name: "circle-question-mark"
1695
+ }));
1696
+ var circle_question_mark_default = CircleQuestionMark;
1697
+ var iconNode$v = [["rect", {
1631
1698
  width: "8",
1632
1699
  height: "4",
1633
1700
  x: "8",
@@ -1652,11 +1719,11 @@ var iconNode$i = [["rect", {
1652
1719
  key: "18s6g9"
1653
1720
  }]];
1654
1721
  var ClipboardList = (props) => createComponent(Icon_default, mergeProps(props, {
1655
- iconNode: iconNode$i,
1722
+ iconNode: iconNode$v,
1656
1723
  name: "clipboard-list"
1657
1724
  }));
1658
1725
  var clipboard_list_default = ClipboardList;
1659
- var iconNode$h = [["circle", {
1726
+ var iconNode$u = [["circle", {
1660
1727
  cx: "12",
1661
1728
  cy: "12",
1662
1729
  r: "10",
@@ -1666,11 +1733,11 @@ var iconNode$h = [["circle", {
1666
1733
  key: "mmk7yg"
1667
1734
  }]];
1668
1735
  var Clock = (props) => createComponent(Icon_default, mergeProps(props, {
1669
- iconNode: iconNode$h,
1736
+ iconNode: iconNode$u,
1670
1737
  name: "clock"
1671
1738
  }));
1672
1739
  var clock_default = Clock;
1673
- var iconNode$g = [["path", {
1740
+ var iconNode$t = [["path", {
1674
1741
  d: "M12 20v2",
1675
1742
  key: "1lh1kg"
1676
1743
  }], ["path", {
@@ -1722,11 +1789,11 @@ var iconNode$g = [["path", {
1722
1789
  key: "z9xiuo"
1723
1790
  }]];
1724
1791
  var Cpu = (props) => createComponent(Icon_default, mergeProps(props, {
1725
- iconNode: iconNode$g,
1792
+ iconNode: iconNode$t,
1726
1793
  name: "cpu"
1727
1794
  }));
1728
1795
  var cpu_default = Cpu;
1729
- var iconNode$f = [["path", {
1796
+ var iconNode$s = [["path", {
1730
1797
  d: "M12 15V3",
1731
1798
  key: "m9g1x1"
1732
1799
  }], ["path", {
@@ -1737,11 +1804,79 @@ var iconNode$f = [["path", {
1737
1804
  key: "brsn70"
1738
1805
  }]];
1739
1806
  var Download = (props) => createComponent(Icon_default, mergeProps(props, {
1740
- iconNode: iconNode$f,
1807
+ iconNode: iconNode$s,
1741
1808
  name: "download"
1742
1809
  }));
1743
1810
  var download_default = Download;
1744
- var iconNode$e = [["circle", {
1811
+ var iconNode$r = [["path", {
1812
+ d: "M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21",
1813
+ key: "g5wo59"
1814
+ }], ["path", {
1815
+ d: "m5.082 11.09 8.828 8.828",
1816
+ key: "1wx5vj"
1817
+ }]];
1818
+ var Eraser = (props) => createComponent(Icon_default, mergeProps(props, {
1819
+ iconNode: iconNode$r,
1820
+ name: "eraser"
1821
+ }));
1822
+ var eraser_default = Eraser;
1823
+ var iconNode$q = [["path", {
1824
+ d: "M15 3h6v6",
1825
+ key: "1q9fwt"
1826
+ }], ["path", {
1827
+ d: "M10 14 21 3",
1828
+ key: "gplh6r"
1829
+ }], ["path", {
1830
+ d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",
1831
+ key: "a6xqqp"
1832
+ }]];
1833
+ var ExternalLink = (props) => createComponent(Icon_default, mergeProps(props, {
1834
+ iconNode: iconNode$q,
1835
+ name: "external-link"
1836
+ }));
1837
+ var external_link_default = ExternalLink;
1838
+ var iconNode$p = [["path", {
1839
+ d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
1840
+ key: "1oefj6"
1841
+ }], ["path", {
1842
+ d: "M14 2v5a1 1 0 0 0 1 1h5",
1843
+ key: "wfsgrz"
1844
+ }], ["path", {
1845
+ d: "M12 18v-6",
1846
+ key: "17g6i2"
1847
+ }], ["path", {
1848
+ d: "m9 15 3 3 3-3",
1849
+ key: "1npd3o"
1850
+ }]];
1851
+ var FileDown = (props) => createComponent(Icon_default, mergeProps(props, {
1852
+ iconNode: iconNode$p,
1853
+ name: "file-down"
1854
+ }));
1855
+ var file_down_default = FileDown;
1856
+ var iconNode$o = [["circle", {
1857
+ cx: "12",
1858
+ cy: "12",
1859
+ r: "3",
1860
+ key: "1v7zrd"
1861
+ }], ["path", {
1862
+ d: "M3 7V5a2 2 0 0 1 2-2h2",
1863
+ key: "aa7l1z"
1864
+ }], ["path", {
1865
+ d: "M17 3h2a2 2 0 0 1 2 2v2",
1866
+ key: "4qcy5o"
1867
+ }], ["path", {
1868
+ d: "M21 17v2a2 2 0 0 1-2 2h-2",
1869
+ key: "6vwrx8"
1870
+ }], ["path", {
1871
+ d: "M7 21H5a2 2 0 0 1-2-2v-2",
1872
+ key: "ioqczr"
1873
+ }]];
1874
+ var Focus = (props) => createComponent(Icon_default, mergeProps(props, {
1875
+ iconNode: iconNode$o,
1876
+ name: "focus"
1877
+ }));
1878
+ var focus_default = Focus;
1879
+ var iconNode$n = [["circle", {
1745
1880
  cx: "12",
1746
1881
  cy: "12",
1747
1882
  r: "10",
@@ -1754,11 +1889,11 @@ var iconNode$e = [["circle", {
1754
1889
  key: "9i4pu4"
1755
1890
  }]];
1756
1891
  var Globe = (props) => createComponent(Icon_default, mergeProps(props, {
1757
- iconNode: iconNode$e,
1892
+ iconNode: iconNode$n,
1758
1893
  name: "globe"
1759
1894
  }));
1760
1895
  var globe_default = Globe;
1761
- var iconNode$d = [["path", {
1896
+ var iconNode$m = [["path", {
1762
1897
  d: "M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 .83.18 2 2 0 0 0 .83-.18l8.58-3.9a1 1 0 0 0 0-1.831z",
1763
1898
  key: "zzgyd3"
1764
1899
  }], ["path", {
@@ -1775,11 +1910,11 @@ var iconNode$d = [["path", {
1775
1910
  key: "jksky3"
1776
1911
  }]];
1777
1912
  var LayersPlus = (props) => createComponent(Icon_default, mergeProps(props, {
1778
- iconNode: iconNode$d,
1913
+ iconNode: iconNode$m,
1779
1914
  name: "layers-plus"
1780
1915
  }));
1781
1916
  var layers_plus_default = LayersPlus;
1782
- var iconNode$c = [["rect", {
1917
+ var iconNode$l = [["rect", {
1783
1918
  width: "18",
1784
1919
  height: "11",
1785
1920
  x: "3",
@@ -1792,11 +1927,62 @@ var iconNode$c = [["rect", {
1792
1927
  key: "fwvmzm"
1793
1928
  }]];
1794
1929
  var Lock = (props) => createComponent(Icon_default, mergeProps(props, {
1795
- iconNode: iconNode$c,
1930
+ iconNode: iconNode$l,
1796
1931
  name: "lock"
1797
1932
  }));
1798
1933
  var lock_default = Lock;
1799
- var iconNode$b = [["rect", {
1934
+ var iconNode$k = [["rect", {
1935
+ width: "18",
1936
+ height: "18",
1937
+ x: "3",
1938
+ y: "3",
1939
+ rx: "2",
1940
+ key: "afitv7"
1941
+ }], ["path", {
1942
+ d: "M9 3v18",
1943
+ key: "fh3hqa"
1944
+ }]];
1945
+ var PanelLeft = (props) => createComponent(Icon_default, mergeProps(props, {
1946
+ iconNode: iconNode$k,
1947
+ name: "panel-left"
1948
+ }));
1949
+ var panel_left_default = PanelLeft;
1950
+ var iconNode$j = [["rect", {
1951
+ width: "18",
1952
+ height: "18",
1953
+ x: "3",
1954
+ y: "3",
1955
+ rx: "2",
1956
+ key: "afitv7"
1957
+ }], ["path", {
1958
+ d: "M15 3v18",
1959
+ key: "14nvp0"
1960
+ }], ["path", {
1961
+ d: "m8 9 3 3-3 3",
1962
+ key: "12hl5m"
1963
+ }]];
1964
+ var PanelRightClose = (props) => createComponent(Icon_default, mergeProps(props, {
1965
+ iconNode: iconNode$j,
1966
+ name: "panel-right-close"
1967
+ }));
1968
+ var panel_right_close_default = PanelRightClose;
1969
+ var iconNode$i = [["rect", {
1970
+ width: "18",
1971
+ height: "18",
1972
+ x: "3",
1973
+ y: "3",
1974
+ rx: "2",
1975
+ key: "afitv7"
1976
+ }], ["path", {
1977
+ d: "M15 3v18",
1978
+ key: "14nvp0"
1979
+ }]];
1980
+ var PanelRight = (props) => createComponent(Icon_default, mergeProps(props, {
1981
+ iconNode: iconNode$i,
1982
+ name: "panel-right"
1983
+ }));
1984
+ var panel_right_default = PanelRight;
1985
+ var iconNode$h = [["rect", {
1800
1986
  width: "18",
1801
1987
  height: "18",
1802
1988
  x: "3",
@@ -1808,11 +1994,11 @@ var iconNode$b = [["rect", {
1808
1994
  key: "1pudct"
1809
1995
  }]];
1810
1996
  var PanelTop = (props) => createComponent(Icon_default, mergeProps(props, {
1811
- iconNode: iconNode$b,
1997
+ iconNode: iconNode$h,
1812
1998
  name: "panel-top"
1813
1999
  }));
1814
2000
  var panel_top_default = PanelTop;
1815
- var iconNode$a = [["path", {
2001
+ var iconNode$g = [["path", {
1816
2002
  d: "M5 12h14",
1817
2003
  key: "1ays0h"
1818
2004
  }], ["path", {
@@ -1820,11 +2006,42 @@ var iconNode$a = [["path", {
1820
2006
  key: "s699le"
1821
2007
  }]];
1822
2008
  var Plus = (props) => createComponent(Icon_default, mergeProps(props, {
1823
- iconNode: iconNode$a,
2009
+ iconNode: iconNode$g,
1824
2010
  name: "plus"
1825
2011
  }));
1826
2012
  var plus_default = Plus;
1827
- var iconNode$9 = [["path", {
2013
+ var iconNode$f = [["path", {
2014
+ d: "M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",
2015
+ key: "143wyd"
2016
+ }], ["path", {
2017
+ d: "M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",
2018
+ key: "1itne7"
2019
+ }], ["rect", {
2020
+ x: "6",
2021
+ y: "14",
2022
+ width: "12",
2023
+ height: "8",
2024
+ rx: "1",
2025
+ key: "1ue0tg"
2026
+ }]];
2027
+ var Printer = (props) => createComponent(Icon_default, mergeProps(props, {
2028
+ iconNode: iconNode$f,
2029
+ name: "printer"
2030
+ }));
2031
+ var printer_default = Printer;
2032
+ var iconNode$e = [["path", {
2033
+ d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
2034
+ key: "1357e3"
2035
+ }], ["path", {
2036
+ d: "M3 3v5h5",
2037
+ key: "1xhq8a"
2038
+ }]];
2039
+ var RotateCcw = (props) => createComponent(Icon_default, mergeProps(props, {
2040
+ iconNode: iconNode$e,
2041
+ name: "rotate-ccw"
2042
+ }));
2043
+ var rotate_ccw_default = RotateCcw;
2044
+ var iconNode$d = [["path", {
1828
2045
  d: "m21 21-4.34-4.34",
1829
2046
  key: "14j7rj"
1830
2047
  }], ["circle", {
@@ -1834,29 +2051,43 @@ var iconNode$9 = [["path", {
1834
2051
  key: "4ej97u"
1835
2052
  }]];
1836
2053
  var Search = (props) => createComponent(Icon_default, mergeProps(props, {
1837
- iconNode: iconNode$9,
2054
+ iconNode: iconNode$d,
1838
2055
  name: "search"
1839
2056
  }));
1840
2057
  var search_default = Search;
1841
- var iconNode$8 = [["path", {
2058
+ var iconNode$c = [["path", {
2059
+ d: "M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",
2060
+ key: "1i5ecw"
2061
+ }], ["circle", {
2062
+ cx: "12",
2063
+ cy: "12",
2064
+ r: "3",
2065
+ key: "1v7zrd"
2066
+ }]];
2067
+ var Settings$1 = (props) => createComponent(Icon_default, mergeProps(props, {
2068
+ iconNode: iconNode$c,
2069
+ name: "settings"
2070
+ }));
2071
+ var settings_default = Settings$1;
2072
+ var iconNode$b = [["path", {
1842
2073
  d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
1843
2074
  key: "oel41y"
1844
2075
  }]];
1845
2076
  var Shield = (props) => createComponent(Icon_default, mergeProps(props, {
1846
- iconNode: iconNode$8,
2077
+ iconNode: iconNode$b,
1847
2078
  name: "shield"
1848
2079
  }));
1849
2080
  var shield_default = Shield;
1850
- var iconNode$7 = [["path", {
2081
+ var iconNode$a = [["path", {
1851
2082
  d: "M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",
1852
2083
  key: "r04s7s"
1853
2084
  }]];
1854
2085
  var Star = (props) => createComponent(Icon_default, mergeProps(props, {
1855
- iconNode: iconNode$7,
2086
+ iconNode: iconNode$a,
1856
2087
  name: "star"
1857
2088
  }));
1858
2089
  var star_default = Star;
1859
- var iconNode$6 = [["path", {
2090
+ var iconNode$9 = [["path", {
1860
2091
  d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",
1861
2092
  key: "vktsd0"
1862
2093
  }], ["circle", {
@@ -1867,11 +2098,11 @@ var iconNode$6 = [["path", {
1867
2098
  key: "kqv944"
1868
2099
  }]];
1869
2100
  var Tag = (props) => createComponent(Icon_default, mergeProps(props, {
1870
- iconNode: iconNode$6,
2101
+ iconNode: iconNode$9,
1871
2102
  name: "tag"
1872
2103
  }));
1873
2104
  var tag_default = Tag;
1874
- var iconNode$5 = [["path", {
2105
+ var iconNode$8 = [["path", {
1875
2106
  d: "M10 11v6",
1876
2107
  key: "nco0om"
1877
2108
  }], ["path", {
@@ -1888,11 +2119,23 @@ var iconNode$5 = [["path", {
1888
2119
  key: "e791ji"
1889
2120
  }]];
1890
2121
  var Trash2 = (props) => createComponent(Icon_default, mergeProps(props, {
1891
- iconNode: iconNode$5,
2122
+ iconNode: iconNode$8,
1892
2123
  name: "trash-2"
1893
2124
  }));
1894
2125
  var trash_2_default = Trash2;
1895
- var iconNode$4 = [["path", {
2126
+ var iconNode$7 = [["path", {
2127
+ d: "M9 14 4 9l5-5",
2128
+ key: "102s5s"
2129
+ }], ["path", {
2130
+ d: "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",
2131
+ key: "f3b9sd"
2132
+ }]];
2133
+ var Undo2 = (props) => createComponent(Icon_default, mergeProps(props, {
2134
+ iconNode: iconNode$7,
2135
+ name: "undo-2"
2136
+ }));
2137
+ var undo_2_default = Undo2;
2138
+ var iconNode$6 = [["path", {
1896
2139
  d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",
1897
2140
  key: "975kel"
1898
2141
  }], ["circle", {
@@ -1902,11 +2145,11 @@ var iconNode$4 = [["path", {
1902
2145
  key: "17ys0d"
1903
2146
  }]];
1904
2147
  var User = (props) => createComponent(Icon_default, mergeProps(props, {
1905
- iconNode: iconNode$4,
2148
+ iconNode: iconNode$6,
1906
2149
  name: "user"
1907
2150
  }));
1908
2151
  var user_default = User;
1909
- var iconNode$3 = [["path", {
2152
+ var iconNode$5 = [["path", {
1910
2153
  d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",
1911
2154
  key: "uqj9uw"
1912
2155
  }], ["path", {
@@ -1917,11 +2160,11 @@ var iconNode$3 = [["path", {
1917
2160
  key: "ijwkga"
1918
2161
  }]];
1919
2162
  var Volume2 = (props) => createComponent(Icon_default, mergeProps(props, {
1920
- iconNode: iconNode$3,
2163
+ iconNode: iconNode$5,
1921
2164
  name: "volume-2"
1922
2165
  }));
1923
2166
  var volume_2_default = Volume2;
1924
- var iconNode$2 = [["path", {
2167
+ var iconNode$4 = [["path", {
1925
2168
  d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",
1926
2169
  key: "uqj9uw"
1927
2170
  }], ["line", {
@@ -1938,11 +2181,11 @@ var iconNode$2 = [["path", {
1938
2181
  key: "5ykzw1"
1939
2182
  }]];
1940
2183
  var VolumeX = (props) => createComponent(Icon_default, mergeProps(props, {
1941
- iconNode: iconNode$2,
2184
+ iconNode: iconNode$4,
1942
2185
  name: "volume-x"
1943
2186
  }));
1944
2187
  var volume_x_default = VolumeX;
1945
- var iconNode$1 = [["path", {
2188
+ var iconNode$3 = [["path", {
1946
2189
  d: "M18 6 6 18",
1947
2190
  key: "1bl5f8"
1948
2191
  }], ["path", {
@@ -1950,19 +2193,71 @@ var iconNode$1 = [["path", {
1950
2193
  key: "d8bk6v"
1951
2194
  }]];
1952
2195
  var X = (props) => createComponent(Icon_default, mergeProps(props, {
1953
- iconNode: iconNode$1,
2196
+ iconNode: iconNode$3,
1954
2197
  name: "x"
1955
2198
  }));
1956
2199
  var x_default = X;
1957
- var iconNode = [["path", {
2200
+ var iconNode$2 = [["path", {
1958
2201
  d: "M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",
1959
2202
  key: "1xq2db"
1960
2203
  }]];
1961
2204
  var Zap = (props) => createComponent(Icon_default, mergeProps(props, {
1962
- iconNode,
2205
+ iconNode: iconNode$2,
1963
2206
  name: "zap"
1964
2207
  }));
1965
2208
  var zap_default = Zap;
2209
+ var iconNode$1 = [["circle", {
2210
+ cx: "11",
2211
+ cy: "11",
2212
+ r: "8",
2213
+ key: "4ej97u"
2214
+ }], ["line", {
2215
+ x1: "21",
2216
+ x2: "16.65",
2217
+ y1: "21",
2218
+ y2: "16.65",
2219
+ key: "13gj7c"
2220
+ }], ["line", {
2221
+ x1: "11",
2222
+ x2: "11",
2223
+ y1: "8",
2224
+ y2: "14",
2225
+ key: "1vmskp"
2226
+ }], ["line", {
2227
+ x1: "8",
2228
+ x2: "14",
2229
+ y1: "11",
2230
+ y2: "11",
2231
+ key: "durymu"
2232
+ }]];
2233
+ var ZoomIn = (props) => createComponent(Icon_default, mergeProps(props, {
2234
+ iconNode: iconNode$1,
2235
+ name: "zoom-in"
2236
+ }));
2237
+ var zoom_in_default = ZoomIn;
2238
+ var iconNode = [["circle", {
2239
+ cx: "11",
2240
+ cy: "11",
2241
+ r: "8",
2242
+ key: "4ej97u"
2243
+ }], ["line", {
2244
+ x1: "21",
2245
+ x2: "16.65",
2246
+ y1: "21",
2247
+ y2: "16.65",
2248
+ key: "13gj7c"
2249
+ }], ["line", {
2250
+ x1: "8",
2251
+ x2: "14",
2252
+ y1: "11",
2253
+ y2: "11",
2254
+ key: "durymu"
2255
+ }]];
2256
+ var ZoomOut = (props) => createComponent(Icon_default, mergeProps(props, {
2257
+ iconNode,
2258
+ name: "zoom-out"
2259
+ }));
2260
+ var zoom_out_default = ZoomOut;
1966
2261
  function getEnvFlag(name) {
1967
2262
  const globalProcess = typeof globalThis === "object" && "process" in globalThis ? globalThis.process : void 0;
1968
2263
  return globalProcess?.env?.[name];
@@ -2196,6 +2491,53 @@ function useRuntime() {
2196
2491
  restoreSession: () => window.vessel.ai.restoreSession()
2197
2492
  };
2198
2493
  }
2494
+ function formatAgentActionName(name) {
2495
+ return name.split(/[_-]+/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
2496
+ }
2497
+ function summarizeAgentAction(action) {
2498
+ if (action.status === "waiting-approval") {
2499
+ return action.argsSummary || "Waiting for approval";
2500
+ }
2501
+ if (action.status === "running") {
2502
+ return action.argsSummary || "Running";
2503
+ }
2504
+ if (action.status === "failed") {
2505
+ return action.error || action.resultSummary || "Action failed";
2506
+ }
2507
+ return action.resultSummary || action.argsSummary || "Completed";
2508
+ }
2509
+ function formatAgentTimelineDuration(durationMs) {
2510
+ if (!durationMs || durationMs < 1) return null;
2511
+ if (durationMs < 1e3) return `${Math.round(durationMs)}ms`;
2512
+ return `${(durationMs / 1e3).toFixed(durationMs < 1e4 ? 1 : 0)}s`;
2513
+ }
2514
+ function buildAgentTimelineItems(state, limit = 12) {
2515
+ const transcriptItems = state.transcript.map((entry) => ({
2516
+ id: `transcript:${entry.id}`,
2517
+ type: "transcript",
2518
+ timestamp: entry.updatedAt,
2519
+ status: entry.status,
2520
+ kind: entry.kind,
2521
+ label: entry.title || entry.kind,
2522
+ detail: entry.text
2523
+ }));
2524
+ const actionItems = state.actions.map((action) => ({
2525
+ id: `action:${action.id}`,
2526
+ type: "action",
2527
+ timestamp: action.finishedAt || action.startedAt,
2528
+ status: action.status,
2529
+ kind: "action",
2530
+ label: formatAgentActionName(action.name),
2531
+ detail: summarizeAgentAction(action),
2532
+ durationMs: action.durationMs
2533
+ }));
2534
+ return [...transcriptItems, ...actionItems].sort(
2535
+ (left, right) => new Date(right.timestamp).getTime() - new Date(left.timestamp).getTime()
2536
+ ).slice(0, limit);
2537
+ }
2538
+ function isLiveAgentTimelineItem(item) {
2539
+ return item.status === "streaming" || item.status === "running";
2540
+ }
2199
2541
  const AGENT_ACTIVITY_WINDOW_MS = 6e3;
2200
2542
  const AGENT_RECENT_WINDOW_MS = 3e4;
2201
2543
  const AGENT_RUNNING_STALE_WINDOW_MS = 5 * 6e4;
@@ -2219,7 +2561,7 @@ function summarizeTranscriptText(entry) {
2219
2561
  return singleLine.length > 96 ? `${singleLine.slice(0, 93).trimEnd()}...` : singleLine;
2220
2562
  }
2221
2563
  function summarizeActionText(action) {
2222
- const name = action.name.split(/[_-]+/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
2564
+ const name = formatAgentActionName(action.name);
2223
2565
  if (action.status === "running") {
2224
2566
  return `${name} in progress`;
2225
2567
  }
@@ -2309,7 +2651,7 @@ function getAgentPresence(state, currentTime = Date.now()) {
2309
2651
  }
2310
2652
  return "idle";
2311
2653
  }
2312
- var _tmpl$$p = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$o = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$l = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list></div><div class=tab-actions><button class=tab-new data-tooltip="New window"data-tooltip-pos=left></button><button class=tab-new data-tooltip="Add active tab to group"data-tooltip-pos=left></button><button class=tab-new data-tooltip="New tab"data-tooltip-pos=left></button><button class="tab-new tab-new-private"data-tooltip="Private window"data-tooltip-pos=left><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11z">`), _tmpl$4$l = /* @__PURE__ */ template(`<button><span class=tab-group-dot></span><span class=tab-group-name></span><span class=tab-group-count>`), _tmpl$5$i = /* @__PURE__ */ template(`<button class="tab-audio tab-audio-pinned">`), _tmpl$6$g = /* @__PURE__ */ template(`<div role=tab>`), _tmpl$7$e = /* @__PURE__ */ template(`<span class=tab-title>`), _tmpl$8$a = /* @__PURE__ */ template(`<button class=tab-audio>`), _tmpl$9$9 = /* @__PURE__ */ template(`<button class=tab-close>×`), _tmpl$0$7 = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$1$7 = /* @__PURE__ */ template(`<span class=tab-loading>`);
2654
+ var _tmpl$$r = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$q = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$m = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list></div><div class=tab-actions><button class=tab-new data-tooltip="New window"data-tooltip-pos=left></button><button class=tab-new data-tooltip="Add active tab to group"data-tooltip-pos=left></button><button class=tab-new data-tooltip="New tab"data-tooltip-pos=left></button><button class="tab-new tab-new-private"data-tooltip="Private window"data-tooltip-pos=left><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11z">`), _tmpl$4$m = /* @__PURE__ */ template(`<button><span class=tab-group-dot></span><span class=tab-group-name></span><span class=tab-group-count>`), _tmpl$5$i = /* @__PURE__ */ template(`<button class="tab-audio tab-audio-pinned">`), _tmpl$6$g = /* @__PURE__ */ template(`<div role=tab>`), _tmpl$7$e = /* @__PURE__ */ template(`<span class=tab-title>`), _tmpl$8$a = /* @__PURE__ */ template(`<button class=tab-audio>`), _tmpl$9$9 = /* @__PURE__ */ template(`<button class=tab-close>×`), _tmpl$0$7 = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$1$7 = /* @__PURE__ */ template(`<span class=tab-loading>`);
2313
2655
  const TAB_CLOSE_MS = 200;
2314
2656
  function stringToHue(str) {
2315
2657
  let hash = 0;
@@ -2336,14 +2678,14 @@ const TabFavicon = (props) => {
2336
2678
  },
2337
2679
  get fallback() {
2338
2680
  return (() => {
2339
- var _el$2 = _tmpl$2$o();
2681
+ var _el$2 = _tmpl$2$q();
2340
2682
  insert(_el$2, letter);
2341
2683
  createRenderEffect((_$p) => setStyleProperty(_el$2, "--favicon-hue", `${hue()}`));
2342
2684
  return _el$2;
2343
2685
  })();
2344
2686
  },
2345
2687
  get children() {
2346
- var _el$ = _tmpl$$p();
2688
+ var _el$ = _tmpl$$r();
2347
2689
  _el$.addEventListener("error", () => setFailed(true));
2348
2690
  createRenderEffect(() => setAttribute(_el$, "src", props.favicon));
2349
2691
  return _el$;
@@ -2409,7 +2751,7 @@ const TabBar = () => {
2409
2751
  }, TAB_CLOSE_MS);
2410
2752
  };
2411
2753
  return (() => {
2412
- var _el$3 = _tmpl$3$l(), _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling, _el$9 = _el$8.nextSibling;
2754
+ var _el$3 = _tmpl$3$m(), _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling, _el$9 = _el$8.nextSibling;
2413
2755
  insert(_el$4, createComponent(For, {
2414
2756
  get each() {
2415
2757
  return tabEntries();
@@ -2420,7 +2762,7 @@ const TabBar = () => {
2420
2762
  },
2421
2763
  get fallback() {
2422
2764
  return memo(() => entry.type === "group")() && (() => {
2423
- var _el$0 = _tmpl$4$l(), _el$1 = _el$0.firstChild, _el$10 = _el$1.nextSibling, _el$11 = _el$10.nextSibling;
2765
+ var _el$0 = _tmpl$4$m(), _el$1 = _el$0.firstChild, _el$10 = _el$1.nextSibling, _el$11 = _el$10.nextSibling;
2424
2766
  _el$0.$$contextmenu = (e) => {
2425
2767
  e.preventDefault();
2426
2768
  window.vessel.tabs.showGroupContextMenu(entry.groupId);
@@ -2575,7 +2917,7 @@ const TabBar = () => {
2575
2917
  })();
2576
2918
  };
2577
2919
  delegateEvents(["click", "contextmenu"]);
2578
- var _tmpl$$o = /* @__PURE__ */ template(`<button class=security-popup-link>Reset permissions for this site`), _tmpl$2$n = /* @__PURE__ */ template(`<div class=security-popup><div class=security-popup-content><p class=security-popup-text></p><button class=security-popup-link>Learn More</button><div class=security-popup-section><div class=security-popup-section-title>Site permissions`), _tmpl$3$k = /* @__PURE__ */ template(`<p class=security-popup-muted>No saved permission decisions for this site.`), _tmpl$4$k = /* @__PURE__ */ template(`<div class=security-popup-permission-row><span></span><strong>`), _tmpl$5$h = /* @__PURE__ */ template(`<div class=security-popup-actions><button class=security-popup-action-proceed>Proceed Anyway</button><button class=security-popup-action-back>Go Back to Safety`);
2920
+ var _tmpl$$q = /* @__PURE__ */ template(`<button class=security-popup-link>Reset permissions for this site`), _tmpl$2$p = /* @__PURE__ */ template(`<div class=security-popup><div class=security-popup-content><p class=security-popup-text></p><button class=security-popup-link>Learn More</button><div class=security-popup-section><div class=security-popup-section-title>Site permissions`), _tmpl$3$l = /* @__PURE__ */ template(`<p class=security-popup-muted>No saved permission decisions for this site.`), _tmpl$4$l = /* @__PURE__ */ template(`<div class=security-popup-permission-row><span></span><strong>`), _tmpl$5$h = /* @__PURE__ */ template(`<div class=security-popup-actions><button class=security-popup-action-proceed>Proceed Anyway</button><button class=security-popup-action-back>Go Back to Safety`);
2579
2921
  const SecurityPopup = (props) => {
2580
2922
  const statusText = () => {
2581
2923
  switch (props.state.status) {
@@ -2628,7 +2970,7 @@ const SecurityPopup = (props) => {
2628
2970
  onCleanup(() => document.removeEventListener("click", handleClickOutside, true));
2629
2971
  });
2630
2972
  return (() => {
2631
- var _el$ = _tmpl$2$n(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling;
2973
+ var _el$ = _tmpl$2$p(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling;
2632
2974
  _el$5.firstChild;
2633
2975
  _el$.$$click = (e) => e.stopPropagation();
2634
2976
  insert(_el$3, statusText);
@@ -2638,7 +2980,7 @@ const SecurityPopup = (props) => {
2638
2980
  return sitePermissions().length > 0;
2639
2981
  },
2640
2982
  get fallback() {
2641
- return _tmpl$3$k();
2983
+ return _tmpl$3$l();
2642
2984
  },
2643
2985
  get children() {
2644
2986
  return [createComponent(For, {
@@ -2646,14 +2988,14 @@ const SecurityPopup = (props) => {
2646
2988
  return sitePermissions();
2647
2989
  },
2648
2990
  children: (item) => (() => {
2649
- var _el$9 = _tmpl$4$k(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
2991
+ var _el$9 = _tmpl$4$l(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
2650
2992
  insert(_el$0, () => item.permission);
2651
2993
  insert(_el$1, () => item.decision);
2652
2994
  createRenderEffect(() => className(_el$1, item.decision));
2653
2995
  return _el$9;
2654
2996
  })()
2655
2997
  }), (() => {
2656
- var _el$7 = _tmpl$$o();
2998
+ var _el$7 = _tmpl$$q();
2657
2999
  _el$7.$$click = async () => {
2658
3000
  await window.vessel.permissions.clearOrigin(origin());
2659
3001
  await loadPermissions();
@@ -2675,40 +3017,64 @@ const SecurityPopup = (props) => {
2675
3017
  })();
2676
3018
  };
2677
3019
  delegateEvents(["click"]);
3020
+ const SIDEBAR_MIN_WIDTH = 240;
3021
+ const SIDEBAR_MAX_WIDTH = 800;
3022
+ function clampSidebarWidth(width) {
3023
+ return Math.max(
3024
+ SIDEBAR_MIN_WIDTH,
3025
+ Math.min(SIDEBAR_MAX_WIDTH, Math.round(width))
3026
+ );
3027
+ }
2678
3028
  const DEFAULT_SIDEBAR_WIDTH = 400;
2679
- const MIN_SIDEBAR = 240;
2680
- const MAX_SIDEBAR = 800;
2681
3029
  const [sidebarOpen, setSidebarOpen] = createSignal(true);
2682
3030
  const [sidebarWidth, setSidebarWidth] = createSignal(DEFAULT_SIDEBAR_WIDTH);
3031
+ const [sidebarDetached, setSidebarDetached] = createSignal(false);
2683
3032
  window.vessel?.settings?.get().then((settings) => {
2684
3033
  if (settings?.sidebarWidth && typeof settings.sidebarWidth === "number") {
2685
- setSidebarWidth(
2686
- Math.max(MIN_SIDEBAR, Math.min(MAX_SIDEBAR, settings.sidebarWidth))
2687
- );
3034
+ setSidebarWidth(clampSidebarWidth(settings.sidebarWidth));
2688
3035
  }
2689
3036
  }).catch(() => {
2690
3037
  });
2691
3038
  const [focusMode, setFocusMode] = createSignal(false);
2692
3039
  const [commandBarOpen, setCommandBarOpen] = createSignal(false);
3040
+ const [browserCommandPaletteOpen, setBrowserCommandPaletteOpen] = createSignal(false);
2693
3041
  const [settingsOpen, setSettingsOpen] = createSignal(false);
2694
3042
  const [devtoolsPanelOpen, setDevtoolsPanelOpen] = createSignal(false);
2695
3043
  let lastIpcTime = 0;
2696
3044
  const IPC_THROTTLE_MS = 8;
2697
- function clampSidebarWidth(width) {
2698
- return Math.max(MIN_SIDEBAR, Math.min(MAX_SIDEBAR, Math.round(width)));
3045
+ let sidebarStateListenerInitialized = false;
3046
+ function applySidebarState(result) {
3047
+ setSidebarOpen(result.open);
3048
+ setSidebarWidth(result.width);
3049
+ setSidebarDetached(result.detached);
3050
+ }
3051
+ function ensureSidebarStateListener() {
3052
+ if (sidebarStateListenerInitialized) return;
3053
+ sidebarStateListenerInitialized = true;
3054
+ window.vessel?.ui?.onSidebarStateUpdate?.(applySidebarState);
2699
3055
  }
2700
3056
  function useUI() {
3057
+ ensureSidebarStateListener();
2701
3058
  return {
2702
3059
  sidebarOpen,
2703
3060
  sidebarWidth,
3061
+ sidebarDetached,
2704
3062
  focusMode,
2705
3063
  commandBarOpen,
3064
+ browserCommandPaletteOpen,
2706
3065
  settingsOpen,
2707
3066
  devtoolsPanelOpen,
2708
3067
  toggleSidebar: async () => {
2709
3068
  const result = await window.vessel.ui.toggleSidebar();
2710
- setSidebarOpen(result.open);
2711
- setSidebarWidth(result.width);
3069
+ applySidebarState(result);
3070
+ },
3071
+ popOutSidebar: async () => {
3072
+ const result = await window.vessel.ui.popOutSidebar();
3073
+ applySidebarState(result);
3074
+ },
3075
+ dockSidebar: async () => {
3076
+ const result = await window.vessel.ui.dockSidebar();
3077
+ applySidebarState(result);
2712
3078
  },
2713
3079
  resizeSidebar: (width) => {
2714
3080
  const clamped = clampSidebarWidth(width);
@@ -2735,6 +3101,8 @@ function useUI() {
2735
3101
  },
2736
3102
  openCommandBar: () => setCommandBarOpen(true),
2737
3103
  closeCommandBar: () => setCommandBarOpen(false),
3104
+ openBrowserCommandPalette: () => setBrowserCommandPaletteOpen(true),
3105
+ closeBrowserCommandPalette: () => setBrowserCommandPaletteOpen(false),
2738
3106
  openSettings: async () => {
2739
3107
  setSidebarOpen(false);
2740
3108
  setSettingsOpen(true);
@@ -3034,7 +3402,7 @@ const SEARCH_ENGINE_PRESETS = {
3034
3402
  ecosia: { label: "Ecosia", url: "https://www.ecosia.org/search?q=" },
3035
3403
  kagi: { label: "Kagi", url: "https://kagi.com/search?q=" }
3036
3404
  };
3037
- var _tmpl$$n = /* @__PURE__ */ template(`<div class=private-badge title="Private Browsing - history and cookies are not saved"><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11zM5.5 7a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zm3.5 3.5c0-1-1.5-2-2.5-2s-2.5 1-2.5 2"></path></svg><span>Private`), _tmpl$2$m = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z">`), _tmpl$3$j = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.5>`), _tmpl$4$j = /* @__PURE__ */ template(`<div class=security-indicator-wrapper><button>`), _tmpl$5$g = /* @__PURE__ */ template(`<div id=address-autocomplete class=autocomplete-dropdown role=listbox>`), _tmpl$6$f = /* @__PURE__ */ template(`<div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text>`), _tmpl$7$d = /* @__PURE__ */ template(`<button class="agent-status-badge recent"title="Open the What Changed timeline"style=cursor:pointer;font-size:11px><span class=agent-status-dot aria-hidden=true style=background:#f59e0b></span><span class=agent-status-text>What Changed?`), _tmpl$8$9 = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$9$8 = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Recent detections`), _tmpl$0$6 = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>Compared with your last visit</span><span class=page-diff-burst-meta>Previous snapshot from </span></div><div style=display:flex;gap:8px;align-items:center><button class=nav-btn title="Open the full What Changed timeline"style="height:24px;min-width:auto;padding:0 8px">Timeline</button><button class=page-diff-popup-close>&times;`), _tmpl$1$6 = /* @__PURE__ */ template(`<svg><path d="M3 3 L11 3 L11 9 Q7 13 3 9 Z"fill=none stroke=currentColor stroke-width=1.2 stroke-linejoin=round></svg>`, false, true, false), _tmpl$10$6 = /* @__PURE__ */ template(`<svg><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.4 stroke-linecap=round></svg>`, false, true, false), _tmpl$11$6 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1>`), _tmpl$12$6 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round>`), _tmpl$13$5 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$14$5 = /* @__PURE__ */ template(`<button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2>`), _tmpl$15$5 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Clear Data">`), _tmpl$16$4 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip=Settings><svg width=14 height=14 viewBox="0 0 14 14"><circle cx=7 cy=7 r=2 fill=none stroke=currentColor stroke-width=1.2></circle><path d="M7 1v2M7 11v2M1 7h2M11 7h2M2.8 2.8l1.4 1.4M9.8 9.8l1.4 1.4M11.2 2.8l-1.4 1.4M4.2 9.8l-1.4 1.4"stroke=currentColor stroke-width=1 stroke-linecap=round>`), _tmpl$17$4 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"autocomplete=off aria-autocomplete=list aria-controls=address-autocomplete></form></div><div class=toolbar-actions><button class=nav-btn><svg width=14 height=14 viewBox="0 0 14 14">`), _tmpl$18$4 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><circle cx=7 cy=8 r=0.8 fill=white>`), _tmpl$19$4 = /* @__PURE__ */ template(`<div role=option><span class=autocomplete-icon></span><span class=autocomplete-text><span class=autocomplete-title></span><span class=autocomplete-url>`), _tmpl$20$4 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$21$4 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-section>`), _tmpl$22$4 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-part><span>`), _tmpl$23$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$24$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$25$3 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$26$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$27$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$28$3 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><div class=page-diff-badges><span class=page-diff-kind></span><span class=page-diff-section></span></div><span class=page-diff-summary>`), _tmpl$29$3 = /* @__PURE__ */ template(`<li>`);
3405
+ var _tmpl$$p = /* @__PURE__ */ template(`<div class=private-badge title="Private Browsing - history and cookies are not saved"><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11zM5.5 7a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zm3.5 3.5c0-1-1.5-2-2.5-2s-2.5 1-2.5 2"></path></svg><span>Private`), _tmpl$2$o = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z">`), _tmpl$3$k = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.5>`), _tmpl$4$k = /* @__PURE__ */ template(`<div class=security-indicator-wrapper><button>`), _tmpl$5$g = /* @__PURE__ */ template(`<div id=address-autocomplete class=autocomplete-dropdown role=listbox>`), _tmpl$6$f = /* @__PURE__ */ template(`<div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text>`), _tmpl$7$d = /* @__PURE__ */ template(`<button class="agent-status-badge recent"title="Open the What Changed timeline"style=cursor:pointer;font-size:11px><span class=agent-status-dot aria-hidden=true style=background:#f59e0b></span><span class=agent-status-text>What Changed?`), _tmpl$8$9 = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$9$8 = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Recent detections`), _tmpl$0$6 = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>Compared with your last visit</span><span class=page-diff-burst-meta>Previous snapshot from </span></div><div style=display:flex;gap:8px;align-items:center><button class=nav-btn title="Open the full What Changed timeline"style="height:24px;min-width:auto;padding:0 8px">Timeline</button><button class=page-diff-popup-close>&times;`), _tmpl$1$6 = /* @__PURE__ */ template(`<svg><path d="M3 3 L11 3 L11 9 Q7 13 3 9 Z"fill=none stroke=currentColor stroke-width=1.2 stroke-linejoin=round></svg>`, false, true, false), _tmpl$10$6 = /* @__PURE__ */ template(`<svg><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.4 stroke-linecap=round></svg>`, false, true, false), _tmpl$11$6 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1>`), _tmpl$12$6 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round>`), _tmpl$13$5 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$14$5 = /* @__PURE__ */ template(`<button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2>`), _tmpl$15$5 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Clear Data">`), _tmpl$16$4 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip=Settings><svg width=14 height=14 viewBox="0 0 14 14"><circle cx=7 cy=7 r=2 fill=none stroke=currentColor stroke-width=1.2></circle><path d="M7 1v2M7 11v2M1 7h2M11 7h2M2.8 2.8l1.4 1.4M9.8 9.8l1.4 1.4M11.2 2.8l-1.4 1.4M4.2 9.8l-1.4 1.4"stroke=currentColor stroke-width=1 stroke-linecap=round>`), _tmpl$17$4 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"autocomplete=off aria-autocomplete=list aria-controls=address-autocomplete></form></div><div class=toolbar-actions><button class=nav-btn><svg width=14 height=14 viewBox="0 0 14 14">`), _tmpl$18$4 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><circle cx=7 cy=8 r=0.8 fill=white>`), _tmpl$19$4 = /* @__PURE__ */ template(`<div role=option><span class=autocomplete-icon></span><span class=autocomplete-text><span class=autocomplete-title></span><span class=autocomplete-url>`), _tmpl$20$4 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$21$4 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-section>`), _tmpl$22$4 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-part><span>`), _tmpl$23$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$24$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$25$3 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$26$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$27$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$28$3 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><div class=page-diff-badges><span class=page-diff-kind></span><span class=page-diff-section></span></div><span class=page-diff-summary>`), _tmpl$29$3 = /* @__PURE__ */ template(`<li>`);
3038
3406
  const AddressBar = (props) => {
3039
3407
  const {
3040
3408
  activeTab,
@@ -3337,7 +3705,7 @@ const AddressBar = (props) => {
3337
3705
  insert(_el$, createComponent(Show, {
3338
3706
  when: isPrivateWindow,
3339
3707
  get children() {
3340
- return _tmpl$$n();
3708
+ return _tmpl$$p();
3341
3709
  }
3342
3710
  }), _el$11);
3343
3711
  insert(_el$, createComponent(Show, {
@@ -3345,7 +3713,7 @@ const AddressBar = (props) => {
3345
3713
  return memo(() => !!securityState()?.status)() && securityState()?.status !== "none";
3346
3714
  },
3347
3715
  get children() {
3348
- var _el$7 = _tmpl$4$j(), _el$8 = _el$7.firstChild;
3716
+ var _el$7 = _tmpl$4$k(), _el$8 = _el$7.firstChild;
3349
3717
  _el$8.$$click = () => setShowSecurityPopup((prev) => !prev);
3350
3718
  insert(_el$8, createComponent(Switch, {
3351
3719
  get fallback() {
@@ -3361,7 +3729,7 @@ const AddressBar = (props) => {
3361
3729
  return securityState()?.status === "secure";
3362
3730
  },
3363
3731
  get children() {
3364
- var _el$9 = _tmpl$2$m();
3732
+ var _el$9 = _tmpl$2$o();
3365
3733
  _el$9.firstChild;
3366
3734
  return _el$9;
3367
3735
  }
@@ -3370,7 +3738,7 @@ const AddressBar = (props) => {
3370
3738
  return securityState()?.status === "insecure";
3371
3739
  },
3372
3740
  get children() {
3373
- var _el$1 = _tmpl$3$j();
3741
+ var _el$1 = _tmpl$3$k();
3374
3742
  _el$1.firstChild;
3375
3743
  return _el$1;
3376
3744
  }
@@ -3751,7 +4119,7 @@ const AddressBar = (props) => {
3751
4119
  })();
3752
4120
  };
3753
4121
  delegateEvents(["click", "input", "keydown", "mousedown"]);
3754
- var _tmpl$$m = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite aria-atomic=true>`), _tmpl$2$l = /* @__PURE__ */ template(`<div class=bookmark-toast role=status><div class=bookmark-toast-header><div class=bookmark-toast-title></div><button type=button class=bookmark-toast-close aria-label="Dismiss notification">×</button></div><div class=bookmark-toast-message>`);
4122
+ var _tmpl$$o = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite aria-atomic=true>`), _tmpl$2$n = /* @__PURE__ */ template(`<div class=bookmark-toast role=status><div class=bookmark-toast-header><div class=bookmark-toast-title></div><button type=button class=bookmark-toast-close aria-label="Dismiss notification">×</button></div><div class=bookmark-toast-message>`);
3755
4123
  const TOAST_DURATION_MS$1 = 4200;
3756
4124
  const TOAST_EXIT_MS$2 = 300;
3757
4125
  function isBookmarkToastCandidate(action) {
@@ -3811,13 +4179,13 @@ const BookmarkNotifications = () => {
3811
4179
  timeoutIds.clear();
3812
4180
  });
3813
4181
  return (() => {
3814
- var _el$ = _tmpl$$m();
4182
+ var _el$ = _tmpl$$o();
3815
4183
  insert(_el$, createComponent(For, {
3816
4184
  get each() {
3817
4185
  return toasts();
3818
4186
  },
3819
4187
  children: (toast) => (() => {
3820
- var _el$2 = _tmpl$2$l(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$3.nextSibling;
4188
+ var _el$2 = _tmpl$2$n(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$3.nextSibling;
3821
4189
  insert(_el$4, () => toast.title);
3822
4190
  _el$5.$$click = () => dismissToast(toast.id);
3823
4191
  insert(_el$6, () => toast.message);
@@ -3829,7 +4197,7 @@ const BookmarkNotifications = () => {
3829
4197
  })();
3830
4198
  };
3831
4199
  delegateEvents(["click"]);
3832
- var _tmpl$$l = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite><div class="bookmark-toast highlight-toast"role=status><div class=bookmark-toast-header><div class=bookmark-toast-title></div><button type=button class=bookmark-toast-close aria-label="Dismiss notification">×</button></div><div class=bookmark-toast-message>`);
4200
+ var _tmpl$$n = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite><div class="bookmark-toast highlight-toast"role=status><div class=bookmark-toast-header><div class=bookmark-toast-title></div><button type=button class=bookmark-toast-close aria-label="Dismiss notification">×</button></div><div class=bookmark-toast-message>`);
3833
4201
  const TOAST_DURATION_MS = 3e3;
3834
4202
  const TOAST_EXIT_MS$1 = 300;
3835
4203
  const HighlightNotifications = (props) => {
@@ -3868,7 +4236,7 @@ const HighlightNotifications = (props) => {
3868
4236
  return memo(() => !!visible())() && current();
3869
4237
  },
3870
4238
  get children() {
3871
- var _el$ = _tmpl$$l(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$3.nextSibling;
4239
+ var _el$ = _tmpl$$n(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$3.nextSibling;
3872
4240
  insert(_el$4, () => current().title);
3873
4241
  _el$5.$$click = dismiss;
3874
4242
  insert(_el$6, () => current().message);
@@ -3878,7 +4246,7 @@ const HighlightNotifications = (props) => {
3878
4246
  });
3879
4247
  };
3880
4248
  delegateEvents(["click"]);
3881
- var _tmpl$$k = /* @__PURE__ */ template(`<div class=download-toast-stack aria-live=polite>`), _tmpl$2$k = /* @__PURE__ */ template(`<span class=download-toast-done>&#10003;`), _tmpl$3$i = /* @__PURE__ */ template(`<span class=download-toast-failed>!`), _tmpl$4$i = /* @__PURE__ */ template(`<div class=download-toast-bar-track><div class=download-toast-bar-fill>`), _tmpl$5$f = /* @__PURE__ */ template(`<div class=download-toast-size>`), _tmpl$6$e = /* @__PURE__ */ template(`<div class="download-toast-size download-toast-size-done"> downloaded`), _tmpl$7$c = /* @__PURE__ */ template(`<div class=download-toast role=status><div class=download-toast-header><span class=download-toast-filename>`);
4249
+ var _tmpl$$m = /* @__PURE__ */ template(`<div class=download-toast-stack aria-live=polite>`), _tmpl$2$m = /* @__PURE__ */ template(`<span class=download-toast-done>&#10003;`), _tmpl$3$j = /* @__PURE__ */ template(`<span class=download-toast-failed>!`), _tmpl$4$j = /* @__PURE__ */ template(`<div class=download-toast-bar-track><div class=download-toast-bar-fill>`), _tmpl$5$f = /* @__PURE__ */ template(`<div class=download-toast-size>`), _tmpl$6$e = /* @__PURE__ */ template(`<div class="download-toast-size download-toast-size-done"> downloaded`), _tmpl$7$c = /* @__PURE__ */ template(`<div class=download-toast role=status><div class=download-toast-header><span class=download-toast-filename>`);
3882
4250
  const TOAST_DONE_DURATION_MS = 4200;
3883
4251
  const TOAST_EXIT_MS = 300;
3884
4252
  function formatBytes$1(bytes) {
@@ -3969,7 +4337,7 @@ const DownloadToast = () => {
3969
4337
  return Math.min(100, Math.round(d.receivedBytes / d.totalBytes * 100));
3970
4338
  };
3971
4339
  return (() => {
3972
- var _el$ = _tmpl$$k();
4340
+ var _el$ = _tmpl$$m();
3973
4341
  insert(_el$, createComponent(For, {
3974
4342
  get each() {
3975
4343
  return downloads();
@@ -3982,7 +4350,7 @@ const DownloadToast = () => {
3982
4350
  return dl.state === "completed";
3983
4351
  },
3984
4352
  get children() {
3985
- return _tmpl$2$k();
4353
+ return _tmpl$2$m();
3986
4354
  }
3987
4355
  }), null);
3988
4356
  insert(_el$3, createComponent(Show, {
@@ -3990,7 +4358,7 @@ const DownloadToast = () => {
3990
4358
  return dl.state === "cancelled" || dl.state === "interrupted";
3991
4359
  },
3992
4360
  get children() {
3993
- return _tmpl$3$i();
4361
+ return _tmpl$3$j();
3994
4362
  }
3995
4363
  }), null);
3996
4364
  insert(_el$2, createComponent(Show, {
@@ -3999,7 +4367,7 @@ const DownloadToast = () => {
3999
4367
  },
4000
4368
  get children() {
4001
4369
  return [(() => {
4002
- var _el$7 = _tmpl$4$i(), _el$8 = _el$7.firstChild;
4370
+ var _el$7 = _tmpl$4$j(), _el$8 = _el$7.firstChild;
4003
4371
  createRenderEffect((_$p) => setStyleProperty(_el$8, "width", `${progressPercent(dl)}%`));
4004
4372
  return _el$7;
4005
4373
  })(), (() => {
@@ -4034,7 +4402,7 @@ const DownloadToast = () => {
4034
4402
  return _el$;
4035
4403
  })();
4036
4404
  };
4037
- var _tmpl$$j = /* @__PURE__ */ template(`<div class=modal-backdrop><div class=downloads-panel><div class=downloads-panel-header><div><h2>Downloads</h2><p>Recent files saved by Vessel</p></div><div class=downloads-panel-actions><button>Clear</button><button>Close</button></div></div><div class=downloads-panel-list>`), _tmpl$2$j = /* @__PURE__ */ template(`<div class=downloads-empty>No downloads yet.`), _tmpl$3$h = /* @__PURE__ */ template(`<div class=downloads-row><div class=downloads-file><strong></strong><span></span><small> · </small></div><div class=downloads-row-actions><button>Open</button><button>Show in folder`), _tmpl$4$h = /* @__PURE__ */ template(`<span>Source: `);
4405
+ var _tmpl$$l = /* @__PURE__ */ template(`<div class=modal-backdrop><div class=downloads-panel><div class=downloads-panel-header><div><h2>Downloads</h2><p>Recent files saved by Vessel</p></div><div class=downloads-panel-actions><button>Clear</button><button>Close</button></div></div><div class=downloads-panel-list>`), _tmpl$2$l = /* @__PURE__ */ template(`<div class=downloads-empty>No downloads yet.`), _tmpl$3$i = /* @__PURE__ */ template(`<div class=downloads-row><div class=downloads-file><strong></strong><span></span><small> · </small></div><div class=downloads-row-actions><button>Open</button><button>Show in folder`), _tmpl$4$i = /* @__PURE__ */ template(`<span>Source: `);
4038
4406
  const formatBytes = (bytes) => {
4039
4407
  if (!bytes) return "0 B";
4040
4408
  const units = ["B", "KB", "MB", "GB"];
@@ -4059,7 +4427,7 @@ const DownloadsPanel = (props) => {
4059
4427
  return props.open;
4060
4428
  },
4061
4429
  get children() {
4062
- var _el$ = _tmpl$$j(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$3.nextSibling;
4430
+ var _el$ = _tmpl$$l(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$3.nextSibling;
4063
4431
  addEventListener(_el$, "click", props.onClose, true);
4064
4432
  _el$2.$$click = (e) => e.stopPropagation();
4065
4433
  _el$6.$$click = async () => {
@@ -4072,10 +4440,10 @@ const DownloadsPanel = (props) => {
4072
4440
  return items();
4073
4441
  },
4074
4442
  get fallback() {
4075
- return _tmpl$2$j();
4443
+ return _tmpl$2$l();
4076
4444
  },
4077
4445
  children: (item) => (() => {
4078
- var _el$0 = _tmpl$3$h(), _el$1 = _el$0.firstChild, _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling, _el$12 = _el$11.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$1.nextSibling, _el$15 = _el$14.firstChild, _el$16 = _el$15.nextSibling;
4446
+ var _el$0 = _tmpl$3$i(), _el$1 = _el$0.firstChild, _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling, _el$12 = _el$11.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$1.nextSibling, _el$15 = _el$14.firstChild, _el$16 = _el$15.nextSibling;
4079
4447
  insert(_el$10, () => item.filename);
4080
4448
  insert(_el$11, () => item.savePath);
4081
4449
  insert(_el$1, createComponent(Show, {
@@ -4083,7 +4451,7 @@ const DownloadsPanel = (props) => {
4083
4451
  return item.url;
4084
4452
  },
4085
4453
  children: (url) => (() => {
4086
- var _el$17 = _tmpl$4$h();
4454
+ var _el$17 = _tmpl$4$i();
4087
4455
  _el$17.firstChild;
4088
4456
  insert(_el$17, url, null);
4089
4457
  return _el$17;
@@ -4106,7 +4474,7 @@ const DownloadsPanel = (props) => {
4106
4474
  });
4107
4475
  };
4108
4476
  delegateEvents(["click"]);
4109
- var _tmpl$$i = /* @__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$i = /* @__PURE__ */ template(`<span class=find-bar-count>`);
4477
+ var _tmpl$$k = /* @__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$k = /* @__PURE__ */ template(`<span class=find-bar-count>`);
4110
4478
  const FindBar = () => {
4111
4479
  const [open, setOpen] = createSignal(false);
4112
4480
  const [query, setQuery] = createSignal("");
@@ -4184,7 +4552,7 @@ const FindBar = () => {
4184
4552
  return open();
4185
4553
  },
4186
4554
  get children() {
4187
- var _el$ = _tmpl$$i(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling;
4555
+ var _el$ = _tmpl$$k(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling;
4188
4556
  _el$2.$$input = (e) => handleInput(e.currentTarget.value);
4189
4557
  var _ref$ = inputRef;
4190
4558
  typeof _ref$ === "function" ? use(_ref$, _el$2) : inputRef = _el$2;
@@ -4194,7 +4562,7 @@ const FindBar = () => {
4194
4562
  return result();
4195
4563
  },
4196
4564
  children: (r) => (() => {
4197
- var _el$6 = _tmpl$2$i();
4565
+ var _el$6 = _tmpl$2$k();
4198
4566
  insert(_el$6, (() => {
4199
4567
  var _c$ = memo(() => r().matches > 0);
4200
4568
  return () => _c$() ? `${r().activeMatchOrdinal} / ${r().matches}` : "No results";
@@ -4211,7 +4579,7 @@ const FindBar = () => {
4211
4579
  });
4212
4580
  };
4213
4581
  delegateEvents(["input", "click"]);
4214
- var _tmpl$$h = /* @__PURE__ */ template(`<div class=flow-progress>`), _tmpl$2$h = /* @__PURE__ */ template(`<div class=flow-progress-hint>Last: `), _tmpl$3$g = /* @__PURE__ */ template(`<div class=flow-progress-hint>Next: `), _tmpl$4$g = /* @__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$e = /* @__PURE__ */ template(`<div><span class=flow-step-dot></span><span class=flow-step-label>`);
4582
+ var _tmpl$$j = /* @__PURE__ */ template(`<div class=flow-progress>`), _tmpl$2$j = /* @__PURE__ */ template(`<div class=flow-progress-hint>Last: `), _tmpl$3$h = /* @__PURE__ */ template(`<div class=flow-progress-hint>Next: `), _tmpl$4$h = /* @__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$e = /* @__PURE__ */ template(`<div><span class=flow-step-dot></span><span class=flow-step-label>`);
4215
4583
  const FlowProgress = () => {
4216
4584
  const {
4217
4585
  runtimeState: runtimeState2
@@ -4242,13 +4610,13 @@ const FlowProgress = () => {
4242
4610
  return flow() || tracker();
4243
4611
  },
4244
4612
  get children() {
4245
- var _el$ = _tmpl$$h();
4613
+ var _el$ = _tmpl$$j();
4246
4614
  insert(_el$, createComponent(Show, {
4247
4615
  get when() {
4248
4616
  return tracker();
4249
4617
  },
4250
4618
  children: (t) => (() => {
4251
- var _el$2 = _tmpl$4$g(), _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;
4619
+ var _el$2 = _tmpl$4$h(), _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;
4252
4620
  insert(_el$4, () => t().goal);
4253
4621
  insert(_el$5, () => progressPercent(t().steps), _el$6);
4254
4622
  insert(_el$9, createComponent(For, {
@@ -4267,7 +4635,7 @@ const FlowProgress = () => {
4267
4635
  return t().lastAction;
4268
4636
  },
4269
4637
  get children() {
4270
- var _el$0 = _tmpl$2$h();
4638
+ var _el$0 = _tmpl$2$j();
4271
4639
  _el$0.firstChild;
4272
4640
  insert(_el$0, () => t().lastAction, null);
4273
4641
  return _el$0;
@@ -4278,7 +4646,7 @@ const FlowProgress = () => {
4278
4646
  return memo(() => !!t().nextHint)() && !t().steps.every((s) => s.status === "done");
4279
4647
  },
4280
4648
  get children() {
4281
- var _el$10 = _tmpl$3$g();
4649
+ var _el$10 = _tmpl$3$h();
4282
4650
  _el$10.firstChild;
4283
4651
  insert(_el$10, () => t().nextHint, null);
4284
4652
  return _el$10;
@@ -4293,7 +4661,7 @@ const FlowProgress = () => {
4293
4661
  return memo(() => !!flow())() && !tracker();
4294
4662
  },
4295
4663
  children: (f) => (() => {
4296
- var _el$15 = _tmpl$4$g(), _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;
4664
+ var _el$15 = _tmpl$4$h(), _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;
4297
4665
  insert(_el$17, () => f().goal);
4298
4666
  insert(_el$18, () => progressPercent(f().steps), _el$19);
4299
4667
  insert(_el$22, createComponent(For, {
@@ -4342,7 +4710,7 @@ function formatTime(iso, options) {
4342
4710
  ...options?.includeSeconds && { second: "2-digit" }
4343
4711
  });
4344
4712
  }
4345
- var _tmpl$$g = /* @__PURE__ */ template(`<div class=agent-summary-hud>`), _tmpl$2$g = /* @__PURE__ */ template(`<span class=agent-transcript-live><span class=agent-transcript-live-dot aria-hidden=true></span>Live`), _tmpl$3$f = /* @__PURE__ */ template(`<div class=agent-transcript-list>`), _tmpl$4$f = /* @__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$d = /* @__PURE__ */ template(`<span class=agent-summary-live-dot aria-hidden=true>`), _tmpl$6$d = /* @__PURE__ */ template(`<span class=agent-summary-text>: `), _tmpl$7$b = /* @__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>`);
4713
+ var _tmpl$$i = /* @__PURE__ */ template(`<div class=agent-summary-hud>`), _tmpl$2$i = /* @__PURE__ */ template(`<span class=agent-transcript-live><span class=agent-transcript-live-dot aria-hidden=true></span>Live`), _tmpl$3$g = /* @__PURE__ */ template(`<div class=agent-transcript-list>`), _tmpl$4$g = /* @__PURE__ */ template(`<aside class=agent-transcript-dock><div class=agent-transcript-header><div class=agent-transcript-title-row><span class=agent-transcript-title>Agent Timeline</span></div><div class=agent-transcript-actions><button class=agent-transcript-icon></button><button class=agent-transcript-icon data-tooltip=Hide>×`), _tmpl$5$d = /* @__PURE__ */ template(`<span class=agent-summary-live-dot aria-hidden=true>`), _tmpl$6$d = /* @__PURE__ */ template(`<span class=agent-summary-text>: `), _tmpl$7$b = /* @__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>`);
4346
4714
  const AgentTranscriptDock = () => {
4347
4715
  const {
4348
4716
  runtimeState: runtimeState2
@@ -4358,117 +4726,665 @@ const AgentTranscriptDock = () => {
4358
4726
  });
4359
4727
  onCleanup(unsubscribe2);
4360
4728
  });
4361
- const visibleEntries = createMemo(() => runtimeState2().transcript.slice(-6).reverse());
4362
- const hasStreamingEntry = createMemo(() => visibleEntries().some((entry) => entry.status === "streaming"));
4729
+ const timelineItems = createMemo(() => buildAgentTimelineItems(runtimeState2()));
4730
+ const hasStreamingEntry = createMemo(() => timelineItems().some(isLiveAgentTimelineItem));
4363
4731
  const hideDock = async () => {
4364
4732
  setMode("off");
4365
4733
  await window.vessel.settings.set("agentTranscriptMode", "off");
4366
4734
  };
4367
4735
  const isSummary = createMemo(() => mode() === "summary");
4368
4736
  const latestEntry = createMemo(() => {
4369
- const entries2 = visibleEntries();
4737
+ const entries2 = timelineItems();
4370
4738
  return entries2.length > 0 ? entries2[0] : null;
4371
4739
  });
4372
4740
  return createComponent(Show, {
4373
4741
  get when() {
4374
- return memo(() => mode() !== "off")() && visibleEntries().length > 0;
4742
+ return memo(() => mode() !== "off")() && timelineItems().length > 0;
4743
+ },
4744
+ get children() {
4745
+ return [createComponent(Show, {
4746
+ get when() {
4747
+ return isSummary();
4748
+ },
4749
+ get children() {
4750
+ var _el$ = _tmpl$$i();
4751
+ insert(_el$, createComponent(Show, {
4752
+ get when() {
4753
+ return latestEntry();
4754
+ },
4755
+ children: (entry) => [createComponent(Show, {
4756
+ get when() {
4757
+ return hasStreamingEntry();
4758
+ },
4759
+ get children() {
4760
+ return _tmpl$5$d();
4761
+ }
4762
+ }), (() => {
4763
+ var _el$10 = _tmpl$6$d(), _el$11 = _el$10.firstChild;
4764
+ insert(_el$10, () => entry().label, _el$11);
4765
+ insert(_el$10, (() => {
4766
+ var _c$ = memo(() => entry().detail.length > 80);
4767
+ return () => _c$() ? entry().detail.slice(0, 77) + "..." : entry().detail;
4768
+ })(), null);
4769
+ return _el$10;
4770
+ })()]
4771
+ }));
4772
+ return _el$;
4773
+ }
4774
+ }), createComponent(Show, {
4775
+ get when() {
4776
+ return !isSummary();
4777
+ },
4778
+ get children() {
4779
+ var _el$2 = _tmpl$4$g(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
4780
+ _el$4.firstChild;
4781
+ var _el$7 = _el$4.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling;
4782
+ insert(_el$4, createComponent(Show, {
4783
+ get when() {
4784
+ return hasStreamingEntry();
4785
+ },
4786
+ get children() {
4787
+ return _tmpl$2$i();
4788
+ }
4789
+ }), null);
4790
+ _el$8.$$click = () => setCollapsed((value) => !value);
4791
+ insert(_el$8, () => collapsed() ? "▴" : "▾");
4792
+ _el$9.$$click = () => void hideDock();
4793
+ insert(_el$2, createComponent(Show, {
4794
+ get when() {
4795
+ return !collapsed();
4796
+ },
4797
+ get children() {
4798
+ var _el$0 = _tmpl$3$g();
4799
+ use((el) => useScrollFade(el), _el$0);
4800
+ insert(_el$0, createComponent(For, {
4801
+ get each() {
4802
+ return timelineItems();
4803
+ },
4804
+ children: (entry) => {
4805
+ const duration = () => entry.type === "action" ? formatAgentTimelineDuration(entry.durationMs) : null;
4806
+ return (() => {
4807
+ var _el$13 = _tmpl$7$b(), _el$14 = _el$13.firstChild, _el$15 = _el$14.firstChild, _el$16 = _el$15.nextSibling, _el$17 = _el$14.nextSibling;
4808
+ insert(_el$15, () => entry.label);
4809
+ insert(_el$16, () => formatTime(entry.timestamp), null);
4810
+ insert(_el$16, createComponent(Show, {
4811
+ get when() {
4812
+ return duration();
4813
+ },
4814
+ children: (value) => [" · ", memo(value)]
4815
+ }), null);
4816
+ insert(_el$17, () => entry.detail);
4817
+ createRenderEffect((_p$) => {
4818
+ var _v$3 = `agent-transcript-entry ${entry.kind}`, _v$4 = !!isLiveAgentTimelineItem(entry), _v$5 = !!(entry.status === "failed"), _v$6 = !!(entry.status === "waiting-approval");
4819
+ _v$3 !== _p$.e && className(_el$13, _p$.e = _v$3);
4820
+ _v$4 !== _p$.t && _el$13.classList.toggle("streaming", _p$.t = _v$4);
4821
+ _v$5 !== _p$.a && _el$13.classList.toggle("failed", _p$.a = _v$5);
4822
+ _v$6 !== _p$.o && _el$13.classList.toggle("waiting-approval", _p$.o = _v$6);
4823
+ return _p$;
4824
+ }, {
4825
+ e: void 0,
4826
+ t: void 0,
4827
+ a: void 0,
4828
+ o: void 0
4829
+ });
4830
+ return _el$13;
4831
+ })();
4832
+ }
4833
+ }));
4834
+ return _el$0;
4835
+ }
4836
+ }), null);
4837
+ createRenderEffect((_p$) => {
4838
+ var _v$ = !!collapsed(), _v$2 = collapsed() ? "Expand" : "Collapse";
4839
+ _v$ !== _p$.e && _el$2.classList.toggle("collapsed", _p$.e = _v$);
4840
+ _v$2 !== _p$.t && setAttribute(_el$8, "data-tooltip", _p$.t = _v$2);
4841
+ return _p$;
4842
+ }, {
4843
+ e: void 0,
4844
+ t: void 0
4845
+ });
4846
+ return _el$2;
4847
+ }
4848
+ })];
4849
+ }
4850
+ });
4851
+ };
4852
+ delegateEvents(["click"]);
4853
+ function useAnimatedPresence(isOpen, exitDurationMs) {
4854
+ const [visible, setVisible] = createSignal(false);
4855
+ const [closing, setClosing] = createSignal(false);
4856
+ let exitTimer;
4857
+ createEffect(() => {
4858
+ const open = isOpen();
4859
+ if (open) {
4860
+ if (exitTimer) {
4861
+ clearTimeout(exitTimer);
4862
+ exitTimer = void 0;
4863
+ }
4864
+ setClosing(false);
4865
+ setVisible(true);
4866
+ } else if (visible()) {
4867
+ setClosing(true);
4868
+ exitTimer = window.setTimeout(() => {
4869
+ setVisible(false);
4870
+ setClosing(false);
4871
+ exitTimer = void 0;
4872
+ }, exitDurationMs);
4873
+ }
4874
+ });
4875
+ onCleanup(() => {
4876
+ if (exitTimer) clearTimeout(exitTimer);
4877
+ });
4878
+ return { visible, closing };
4879
+ }
4880
+ const BROWSER_COMMAND_DEFINITIONS = [
4881
+ {
4882
+ id: "browser-command-palette",
4883
+ label: "Browser Command Palette",
4884
+ hint: "Search browser actions",
4885
+ keywords: "command palette actions",
4886
+ shortcuts: [{ ctrl: true, key: "k" }],
4887
+ shortcutLabel: "Ctrl+K",
4888
+ icon: "search",
4889
+ privateMode: false,
4890
+ showInPalette: false
4891
+ },
4892
+ {
4893
+ id: "ask-agent",
4894
+ label: "Ask Agent",
4895
+ hint: "Open the AI command bar",
4896
+ keywords: "ai ask chat command bar",
4897
+ shortcuts: [{ ctrl: true, key: "l" }],
4898
+ shortcutLabel: "Ctrl+L",
4899
+ icon: "bot",
4900
+ privateMode: false
4901
+ },
4902
+ {
4903
+ id: "toggle-sidebar",
4904
+ label: "Toggle Agent Panel",
4905
+ hint: "Show or hide the docked agent sidebar",
4906
+ keywords: "agent sidebar panel chat",
4907
+ shortcuts: [{ ctrl: true, shift: true, key: "l" }],
4908
+ shortcutLabel: "Ctrl+Shift+L",
4909
+ icon: "sidebar",
4910
+ privateMode: false
4911
+ },
4912
+ {
4913
+ id: "focus-mode",
4914
+ label: "Toggle Focus Mode",
4915
+ hint: "Hide or restore browser chrome",
4916
+ keywords: "focus fullscreen chrome",
4917
+ shortcuts: [{ ctrl: true, shift: true, key: "f" }],
4918
+ shortcutLabel: "Ctrl+Shift+F",
4919
+ icon: "focus",
4920
+ privateMode: false
4921
+ },
4922
+ {
4923
+ id: "new-tab",
4924
+ label: "New Tab",
4925
+ hint: "Open a fresh browser tab",
4926
+ keywords: "tab create open",
4927
+ shortcuts: [{ ctrl: true, key: "t" }],
4928
+ shortcutLabel: "Ctrl+T",
4929
+ icon: "plus"
4930
+ },
4931
+ {
4932
+ id: "close-tab",
4933
+ label: "Close Tab",
4934
+ hint: "Close the active browser tab",
4935
+ keywords: "tab close remove",
4936
+ shortcuts: [{ ctrl: true, key: "w" }],
4937
+ shortcutLabel: "Ctrl+W",
4938
+ icon: "eraser"
4939
+ },
4940
+ {
4941
+ id: "reopen-tab",
4942
+ label: "Reopen Closed Tab",
4943
+ hint: "Restore the most recently closed tab",
4944
+ keywords: "undo restore closed tab",
4945
+ shortcuts: [{ ctrl: true, shift: true, key: "t" }],
4946
+ shortcutLabel: "Ctrl+Shift+T",
4947
+ icon: "undo"
4948
+ },
4949
+ {
4950
+ id: "new-window",
4951
+ label: "New Window",
4952
+ hint: "Open another Vessel window",
4953
+ keywords: "window browser",
4954
+ shortcuts: [{ ctrl: true, key: "n" }],
4955
+ shortcutLabel: "Ctrl+N",
4956
+ icon: "app-window"
4957
+ },
4958
+ {
4959
+ id: "private-window",
4960
+ label: "New Private Window",
4961
+ hint: "Browse without saving local session data",
4962
+ keywords: "incognito private window",
4963
+ shortcuts: [{ ctrl: true, shift: true, key: "n" }],
4964
+ shortcutLabel: "Ctrl+Shift+N",
4965
+ icon: "shield"
4966
+ },
4967
+ {
4968
+ id: "reload",
4969
+ label: "Reload Page",
4970
+ hint: (context) => context.activeTabTitle() || "Reload the active tab",
4971
+ keywords: "refresh reload page",
4972
+ icon: "rotate"
4973
+ },
4974
+ {
4975
+ id: "go-back",
4976
+ label: "Go Back",
4977
+ hint: "Navigate the active tab backward",
4978
+ keywords: "history previous back",
4979
+ icon: "undo"
4980
+ },
4981
+ {
4982
+ id: "go-forward",
4983
+ label: "Go Forward",
4984
+ hint: "Navigate the active tab forward",
4985
+ keywords: "history next forward",
4986
+ icon: "panel-right"
4987
+ },
4988
+ {
4989
+ id: "find-page",
4990
+ label: "Find in Page",
4991
+ hint: "Search text in the active page",
4992
+ keywords: "find search page text",
4993
+ shortcuts: [{ ctrl: true, key: "f" }],
4994
+ shortcutLabel: "Ctrl+F",
4995
+ icon: "search",
4996
+ showInPalette: false
4997
+ },
4998
+ {
4999
+ id: "settings",
5000
+ label: "Settings",
5001
+ hint: "Open runtime settings",
5002
+ keywords: "preferences configuration provider",
5003
+ shortcuts: [{ ctrl: true, key: "," }],
5004
+ shortcutLabel: "Ctrl+,",
5005
+ icon: "settings",
5006
+ privateMode: false
5007
+ },
5008
+ {
5009
+ id: "downloads",
5010
+ label: "Downloads",
5011
+ hint: "Show recent downloads",
5012
+ keywords: "download files",
5013
+ icon: "download"
5014
+ },
5015
+ {
5016
+ id: "clear-data",
5017
+ label: "Clear Browsing Data",
5018
+ hint: "Open privacy cleanup options",
5019
+ keywords: "privacy cache cookies history",
5020
+ shortcuts: [{ ctrl: true, shift: true, key: "Delete" }],
5021
+ shortcutLabel: "Ctrl+Shift+Delete",
5022
+ icon: "eraser",
5023
+ privateMode: false
5024
+ },
5025
+ {
5026
+ id: "keyboard-help",
5027
+ label: "Keyboard Shortcuts",
5028
+ hint: "Show available browser shortcuts",
5029
+ keywords: "help shortcuts keys",
5030
+ shortcuts: [{ shift: true, key: "?" }],
5031
+ shortcutLabel: "?",
5032
+ icon: "help-circle",
5033
+ ignoreEditableTarget: true
5034
+ },
5035
+ {
5036
+ id: "devtools",
5037
+ label: "Toggle Agent DevTools",
5038
+ hint: "Open or close the agent debugging panel",
5039
+ keywords: "debug devtools activity network console",
5040
+ shortcuts: [{ key: "F12" }],
5041
+ shortcutLabel: "F12",
5042
+ icon: "shield",
5043
+ privateMode: false
5044
+ },
5045
+ {
5046
+ id: "zoom-in",
5047
+ label: "Zoom In",
5048
+ hint: "Increase active page zoom",
5049
+ keywords: "page scale larger",
5050
+ shortcuts: [
5051
+ { ctrl: true, key: "+" },
5052
+ { ctrl: true, key: "=" }
5053
+ ],
5054
+ shortcutLabel: "Ctrl++ / Ctrl+=",
5055
+ icon: "zoom-in"
5056
+ },
5057
+ {
5058
+ id: "zoom-out",
5059
+ label: "Zoom Out",
5060
+ hint: "Decrease active page zoom",
5061
+ keywords: "page scale smaller",
5062
+ shortcuts: [{ ctrl: true, key: "-" }],
5063
+ shortcutLabel: "Ctrl+-",
5064
+ icon: "zoom-out"
5065
+ },
5066
+ {
5067
+ id: "zoom-reset",
5068
+ label: "Reset Zoom",
5069
+ hint: "Return active page zoom to default",
5070
+ keywords: "page scale normal",
5071
+ shortcuts: [{ ctrl: true, key: "0" }],
5072
+ shortcutLabel: "Ctrl+0",
5073
+ icon: "search"
5074
+ },
5075
+ {
5076
+ id: "print",
5077
+ label: "Print Page",
5078
+ hint: "Open print options for the active tab",
5079
+ keywords: "printer paper",
5080
+ shortcuts: [{ ctrl: true, key: "p" }],
5081
+ shortcutLabel: "Ctrl+P",
5082
+ icon: "printer"
5083
+ },
5084
+ {
5085
+ id: "save-pdf",
5086
+ label: "Save Page as PDF",
5087
+ hint: "Export the active tab to a PDF",
5088
+ keywords: "print pdf export",
5089
+ shortcuts: [{ ctrl: true, shift: true, key: "p" }],
5090
+ shortcutLabel: "Ctrl+Shift+P",
5091
+ icon: "file-down"
5092
+ },
5093
+ {
5094
+ id: "toggle-pip",
5095
+ label: "Toggle Picture-in-Picture",
5096
+ hint: "Toggle picture-in-picture for supported media",
5097
+ keywords: "video picture in picture pip",
5098
+ shortcuts: [{ ctrl: true, shift: true, key: "i" }],
5099
+ shortcutLabel: "Ctrl+Shift+I",
5100
+ icon: "panel-right",
5101
+ privateMode: false
5102
+ },
5103
+ {
5104
+ id: "capture-highlight",
5105
+ label: "Capture Highlight",
5106
+ hint: "Save the current page selection",
5107
+ keywords: "highlight selection save quote",
5108
+ shortcuts: [{ ctrl: true, key: "h" }],
5109
+ shortcutLabel: "Ctrl+H",
5110
+ icon: "plus",
5111
+ privateMode: false
5112
+ }
5113
+ ];
5114
+ function createBrowserCommands(context) {
5115
+ const actions = {
5116
+ "browser-command-palette": context.openBrowserCommandPalette,
5117
+ "ask-agent": context.openCommandBar,
5118
+ "toggle-sidebar": context.toggleSidebar,
5119
+ "focus-mode": context.toggleFocusMode,
5120
+ "new-tab": context.createTab,
5121
+ "close-tab": context.closeActiveTab,
5122
+ "reopen-tab": context.reopenClosedTab,
5123
+ "new-window": context.openNewWindow,
5124
+ "private-window": context.openPrivateWindow,
5125
+ reload: context.reload,
5126
+ "go-back": context.goBack,
5127
+ "go-forward": context.goForward,
5128
+ "find-page": () => void 0,
5129
+ settings: context.openSettings,
5130
+ downloads: context.openDownloads,
5131
+ "clear-data": context.clearBrowsingData,
5132
+ "keyboard-help": context.toggleKeyboardHelp,
5133
+ devtools: context.toggleDevTools,
5134
+ "zoom-in": context.zoomIn,
5135
+ "zoom-out": context.zoomOut,
5136
+ "zoom-reset": context.zoomReset,
5137
+ print: context.print,
5138
+ "save-pdf": context.printToPdf,
5139
+ "toggle-pip": context.togglePip,
5140
+ "capture-highlight": context.captureHighlight
5141
+ };
5142
+ return BROWSER_COMMAND_DEFINITIONS.filter(
5143
+ (definition) => definition.showInPalette !== false
5144
+ ).map((definition) => ({
5145
+ id: definition.id,
5146
+ label: definition.label,
5147
+ hint: typeof definition.hint === "function" ? definition.hint(context) : definition.hint,
5148
+ keywords: definition.keywords,
5149
+ shortcut: definition.shortcutLabel,
5150
+ icon: definition.icon,
5151
+ run: actions[definition.id]
5152
+ }));
5153
+ }
5154
+ function getBrowserCommandShortcutHelp(privateMode = false) {
5155
+ return BROWSER_COMMAND_DEFINITIONS.filter(
5156
+ (definition) => definition.shortcutLabel && (!privateMode || definition.privateMode !== false)
5157
+ ).map((definition) => ({
5158
+ keys: definition.shortcutLabel,
5159
+ action: definition.label
5160
+ }));
5161
+ }
5162
+ function getBrowserCommandIdForKeyboardEvent(event) {
5163
+ for (const definition of BROWSER_COMMAND_DEFINITIONS) {
5164
+ if (!definition.shortcuts) continue;
5165
+ if (definition.ignoreEditableTarget && isEditableTarget(event.target)) {
5166
+ continue;
5167
+ }
5168
+ if (definition.shortcuts.some((shortcut) => matchesShortcut(event, shortcut))) {
5169
+ return definition.id;
5170
+ }
5171
+ }
5172
+ return null;
5173
+ }
5174
+ function matchesShortcut(event, shortcut) {
5175
+ const ctrl = event.ctrlKey || event.metaKey;
5176
+ return ctrl === Boolean(shortcut.ctrl) && event.shiftKey === Boolean(shortcut.shift) && event.altKey === Boolean(shortcut.alt) && event.key.toLowerCase() === shortcut.key.toLowerCase();
5177
+ }
5178
+ function isEditableTarget(target) {
5179
+ if (typeof HTMLElement === "undefined" || !(target instanceof HTMLElement)) {
5180
+ return false;
5181
+ }
5182
+ return target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.isContentEditable;
5183
+ }
5184
+ var _tmpl$$h = /* @__PURE__ */ template(`<div class=browser-command-overlay><section class=browser-command-palette><div class=browser-command-search><input placeholder="Search browser commands..."><kbd>Esc</kbd></div><div class=browser-command-list role=listbox>`), _tmpl$2$h = /* @__PURE__ */ template(`<div class=browser-command-empty>No matching commands`), _tmpl$3$f = /* @__PURE__ */ template(`<button type=button class=browser-command-item role=option><span class=browser-command-icon></span><span class=browser-command-copy><span class=browser-command-label></span><span class=browser-command-hint>`), _tmpl$4$f = /* @__PURE__ */ template(`<kbd class=browser-command-shortcut>`);
5185
+ const PALETTE_EXIT_MS = 160;
5186
+ const COMMAND_ICONS = {
5187
+ "app-window": app_window_default,
5188
+ bot: bot_default,
5189
+ download: download_default,
5190
+ eraser: eraser_default,
5191
+ "file-down": file_down_default,
5192
+ focus: focus_default,
5193
+ "help-circle": circle_question_mark_default,
5194
+ "panel-right": panel_right_default,
5195
+ plus: plus_default,
5196
+ printer: printer_default,
5197
+ rotate: rotate_ccw_default,
5198
+ search: search_default,
5199
+ settings: settings_default,
5200
+ shield: shield_default,
5201
+ sidebar: panel_left_default,
5202
+ undo: undo_2_default,
5203
+ "zoom-in": zoom_in_default,
5204
+ "zoom-out": zoom_out_default
5205
+ };
5206
+ const BrowserCommandPalette = (props) => {
5207
+ const {
5208
+ browserCommandPaletteOpen: browserCommandPaletteOpen2,
5209
+ closeBrowserCommandPalette,
5210
+ openCommandBar,
5211
+ toggleSidebar,
5212
+ toggleFocusMode,
5213
+ toggleDevTools,
5214
+ openSettings
5215
+ } = useUI();
5216
+ const {
5217
+ activeTab,
5218
+ activeTabId: activeTabId2,
5219
+ createTab,
5220
+ closeTab,
5221
+ reload,
5222
+ goBack,
5223
+ goForward,
5224
+ reopenClosed,
5225
+ zoomIn,
5226
+ zoomOut,
5227
+ zoomReset,
5228
+ print,
5229
+ printToPdf
5230
+ } = useTabs();
5231
+ const {
5232
+ visible,
5233
+ closing
5234
+ } = useAnimatedPresence(browserCommandPaletteOpen2, PALETTE_EXIT_MS);
5235
+ const [query, setQuery] = createSignal("");
5236
+ const [selectedIndex, setSelectedIndex] = createSignal(0);
5237
+ let inputRef;
5238
+ const runForActiveTab = (action) => {
5239
+ const id = activeTabId2();
5240
+ if (id) return action(id);
5241
+ };
5242
+ const commands = createMemo(() => createBrowserCommands({
5243
+ activeTabTitle: () => activeTab()?.title,
5244
+ createTab: () => createTab(),
5245
+ closeActiveTab: () => runForActiveTab((id) => closeTab(id)),
5246
+ reopenClosedTab: () => reopenClosed(),
5247
+ openNewWindow: () => window.vessel.tabs.openNewWindow(),
5248
+ openPrivateWindow: () => window.vessel.tabs.openPrivateWindow(),
5249
+ reload: () => reload(),
5250
+ goBack: () => goBack(),
5251
+ goForward: () => goForward(),
5252
+ openBrowserCommandPalette: () => void 0,
5253
+ openCommandBar: () => openCommandBar(),
5254
+ toggleSidebar: () => toggleSidebar(),
5255
+ toggleFocusMode: () => toggleFocusMode(),
5256
+ openSettings: () => openSettings(),
5257
+ openDownloads: props.onOpenDownloads,
5258
+ clearBrowsingData: props.onOpenClearData,
5259
+ toggleKeyboardHelp: props.onToggleKeyboardHelp,
5260
+ toggleDevTools: () => toggleDevTools(),
5261
+ zoomIn: () => runForActiveTab((id) => zoomIn(id)),
5262
+ zoomOut: () => runForActiveTab((id) => zoomOut(id)),
5263
+ zoomReset: () => runForActiveTab((id) => zoomReset(id)),
5264
+ print: () => runForActiveTab((id) => print(id)),
5265
+ printToPdf: () => runForActiveTab((id) => printToPdf(id)),
5266
+ togglePip: () => window.vessel.pip.toggle(),
5267
+ captureHighlight: props.onCaptureHighlight
5268
+ }));
5269
+ const filteredCommands = createMemo(() => {
5270
+ const needle = query().trim().toLowerCase();
5271
+ if (!needle) return commands();
5272
+ return commands().filter((command) => `${command.label} ${command.hint} ${command.keywords}`.toLowerCase().includes(needle));
5273
+ });
5274
+ createEffect(() => {
5275
+ if (!browserCommandPaletteOpen2()) return;
5276
+ setQuery("");
5277
+ setSelectedIndex(0);
5278
+ queueMicrotask(() => inputRef?.focus());
5279
+ });
5280
+ createEffect(() => {
5281
+ const count = filteredCommands().length;
5282
+ if (selectedIndex() >= count) {
5283
+ setSelectedIndex(Math.max(0, count - 1));
5284
+ }
5285
+ });
5286
+ const close = () => closeBrowserCommandPalette();
5287
+ const runCommand = async (command) => {
5288
+ close();
5289
+ await command.run();
5290
+ };
5291
+ const onKeyDown = (event) => {
5292
+ if (event.key === "Escape") {
5293
+ event.preventDefault();
5294
+ close();
5295
+ return;
5296
+ }
5297
+ if (event.key === "ArrowDown") {
5298
+ event.preventDefault();
5299
+ const count = filteredCommands().length;
5300
+ if (count > 0) setSelectedIndex((selectedIndex() + 1) % count);
5301
+ return;
5302
+ }
5303
+ if (event.key === "ArrowUp") {
5304
+ event.preventDefault();
5305
+ const count = filteredCommands().length;
5306
+ if (count > 0) setSelectedIndex((selectedIndex() - 1 + count) % count);
5307
+ return;
5308
+ }
5309
+ if (event.key === "Enter") {
5310
+ event.preventDefault();
5311
+ const command = filteredCommands()[selectedIndex()];
5312
+ if (command) void runCommand(command);
5313
+ }
5314
+ };
5315
+ return createComponent(Show, {
5316
+ get when() {
5317
+ return visible();
4375
5318
  },
4376
5319
  get children() {
4377
- return [createComponent(Show, {
5320
+ var _el$ = _tmpl$$h(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$3.nextSibling;
5321
+ _el$.$$click = close;
5322
+ _el$2.$$click = (event) => event.stopPropagation();
5323
+ insert(_el$3, createComponent(search_default, {
5324
+ size: 17,
5325
+ "aria-hidden": "true"
5326
+ }), _el$4);
5327
+ _el$4.$$keydown = onKeyDown;
5328
+ _el$4.$$input = (event) => setQuery(event.currentTarget.value);
5329
+ var _ref$ = inputRef;
5330
+ typeof _ref$ === "function" ? use(_ref$, _el$4) : inputRef = _el$4;
5331
+ setAttribute(_el$4, "spellcheck", false);
5332
+ insert(_el$5, createComponent(Show, {
4378
5333
  get when() {
4379
- return isSummary();
5334
+ return filteredCommands().length > 0;
4380
5335
  },
4381
- get children() {
4382
- var _el$ = _tmpl$$g();
4383
- insert(_el$, createComponent(Show, {
4384
- get when() {
4385
- return latestEntry();
4386
- },
4387
- children: (entry) => [createComponent(Show, {
4388
- get when() {
4389
- return hasStreamingEntry();
4390
- },
4391
- get children() {
4392
- return _tmpl$5$d();
4393
- }
4394
- }), (() => {
4395
- var _el$10 = _tmpl$6$d(), _el$11 = _el$10.firstChild;
4396
- insert(_el$10, () => entry().title || entry().kind, _el$11);
4397
- insert(_el$10, (() => {
4398
- var _c$ = memo(() => entry().text.length > 80);
4399
- return () => _c$() ? entry().text.slice(0, 77) + "..." : entry().text;
4400
- })(), null);
4401
- return _el$10;
4402
- })()]
4403
- }));
4404
- return _el$;
4405
- }
4406
- }), createComponent(Show, {
4407
- get when() {
4408
- return !isSummary();
5336
+ get fallback() {
5337
+ return _tmpl$2$h();
4409
5338
  },
4410
5339
  get children() {
4411
- var _el$2 = _tmpl$4$f(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
4412
- _el$4.firstChild;
4413
- var _el$7 = _el$4.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling;
4414
- insert(_el$4, createComponent(Show, {
4415
- get when() {
4416
- return hasStreamingEntry();
4417
- },
4418
- get children() {
4419
- return _tmpl$2$g();
4420
- }
4421
- }), null);
4422
- _el$8.$$click = () => setCollapsed((value) => !value);
4423
- insert(_el$8, () => collapsed() ? "▴" : "▾");
4424
- _el$9.$$click = () => void hideDock();
4425
- insert(_el$2, createComponent(Show, {
4426
- get when() {
4427
- return !collapsed();
5340
+ return createComponent(For, {
5341
+ get each() {
5342
+ return filteredCommands();
4428
5343
  },
4429
- get children() {
4430
- var _el$0 = _tmpl$3$f();
4431
- use((el) => useScrollFade(el), _el$0);
4432
- insert(_el$0, createComponent(For, {
4433
- get each() {
4434
- return visibleEntries();
4435
- },
4436
- children: (entry) => (() => {
4437
- var _el$12 = _tmpl$7$b(), _el$13 = _el$12.firstChild, _el$14 = _el$13.firstChild, _el$15 = _el$14.nextSibling, _el$16 = _el$13.nextSibling;
4438
- insert(_el$14, () => entry.title || entry.kind);
4439
- insert(_el$15, () => formatTime(entry.updatedAt));
4440
- insert(_el$16, () => entry.text);
4441
- createRenderEffect((_p$) => {
4442
- var _v$3 = `agent-transcript-entry ${entry.kind}`, _v$4 = !!(entry.status === "streaming");
4443
- _v$3 !== _p$.e && className(_el$12, _p$.e = _v$3);
4444
- _v$4 !== _p$.t && _el$12.classList.toggle("streaming", _p$.t = _v$4);
4445
- return _p$;
4446
- }, {
4447
- e: void 0,
4448
- t: void 0
4449
- });
4450
- return _el$12;
4451
- })()
4452
- }));
4453
- return _el$0;
5344
+ children: (command, index) => {
5345
+ const Icon2 = COMMAND_ICONS[command.icon];
5346
+ return (() => {
5347
+ var _el$7 = _tmpl$3$f(), _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
5348
+ _el$7.$$click = () => void runCommand(command);
5349
+ _el$7.addEventListener("mouseenter", () => setSelectedIndex(index()));
5350
+ insert(_el$8, createComponent(Icon2, {
5351
+ size: 16,
5352
+ "aria-hidden": "true"
5353
+ }));
5354
+ insert(_el$0, () => command.label);
5355
+ insert(_el$1, () => command.hint);
5356
+ insert(_el$7, createComponent(Show, {
5357
+ get when() {
5358
+ return command.shortcut;
5359
+ },
5360
+ children: (shortcut) => (() => {
5361
+ var _el$10 = _tmpl$4$f();
5362
+ insert(_el$10, shortcut);
5363
+ return _el$10;
5364
+ })()
5365
+ }), null);
5366
+ createRenderEffect((_p$) => {
5367
+ var _v$ = !!(index() === selectedIndex()), _v$2 = index() === selectedIndex();
5368
+ _v$ !== _p$.e && _el$7.classList.toggle("selected", _p$.e = _v$);
5369
+ _v$2 !== _p$.t && setAttribute(_el$7, "aria-selected", _p$.t = _v$2);
5370
+ return _p$;
5371
+ }, {
5372
+ e: void 0,
5373
+ t: void 0
5374
+ });
5375
+ return _el$7;
5376
+ })();
4454
5377
  }
4455
- }), null);
4456
- createRenderEffect((_p$) => {
4457
- var _v$ = !!collapsed(), _v$2 = collapsed() ? "Expand" : "Collapse";
4458
- _v$ !== _p$.e && _el$2.classList.toggle("collapsed", _p$.e = _v$);
4459
- _v$2 !== _p$.t && setAttribute(_el$8, "data-tooltip", _p$.t = _v$2);
4460
- return _p$;
4461
- }, {
4462
- e: void 0,
4463
- t: void 0
4464
5378
  });
4465
- return _el$2;
4466
5379
  }
4467
- })];
5380
+ }));
5381
+ createRenderEffect(() => _el$.classList.toggle("closing", !!closing()));
5382
+ createRenderEffect(() => _el$4.value = query());
5383
+ return _el$;
4468
5384
  }
4469
5385
  });
4470
5386
  };
4471
- delegateEvents(["click"]);
5387
+ delegateEvents(["click", "input", "keydown"]);
4472
5388
  const MAX_PROVIDER_HISTORY_MESSAGES = 24;
4473
5389
  const MAX_PROVIDER_HISTORY_CHARS = 24e3;
4474
5390
  const MAX_PROVIDER_HISTORY_MESSAGE_CHARS = 3e3;
@@ -4842,33 +5758,6 @@ function useAI() {
4842
5758
  }
4843
5759
  };
4844
5760
  }
4845
- function useAnimatedPresence(isOpen, exitDurationMs) {
4846
- const [visible, setVisible] = createSignal(false);
4847
- const [closing, setClosing] = createSignal(false);
4848
- let exitTimer;
4849
- createEffect(() => {
4850
- const open = isOpen();
4851
- if (open) {
4852
- if (exitTimer) {
4853
- clearTimeout(exitTimer);
4854
- exitTimer = void 0;
4855
- }
4856
- setClosing(false);
4857
- setVisible(true);
4858
- } else if (visible()) {
4859
- setClosing(true);
4860
- exitTimer = window.setTimeout(() => {
4861
- setVisible(false);
4862
- setClosing(false);
4863
- exitTimer = void 0;
4864
- }, exitDurationMs);
4865
- }
4866
- });
4867
- onCleanup(() => {
4868
- if (exitTimer) clearTimeout(exitTimer);
4869
- });
4870
- return { visible, closing };
4871
- }
4872
5761
  function useProviderAuthSetup(options = {}) {
4873
5762
  const [codexAuthStatus, setCodexAuthStatus] = createSignal("idle");
4874
5763
  const [codexAccountEmail, setCodexAccountEmail] = createSignal("");
@@ -4963,7 +5852,7 @@ function useProviderAuthSetup(options = {}) {
4963
5852
  startOpenRouterAuth
4964
5853
  };
4965
5854
  }
4966
- var _tmpl$$f = /* @__PURE__ */ template(`<p class=command-bar-no-provider-error>`), _tmpl$2$f = /* @__PURE__ */ template(`<div class=command-bar-no-provider><p>Start with OpenRouter's free model router, or open Settings for more providers.</p><button class=command-bar-no-provider-btn></button><button class=command-bar-no-provider-link>More options`), _tmpl$3$e = /* @__PURE__ */ template(`<div class=command-bar-recent><span class=command-bar-recent-label>Recent</span><div class=command-bar-recent-list>`), _tmpl$4$e = /* @__PURE__ */ template(`<span>Try "summarize" or ask a question`), _tmpl$5$c = /* @__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$6$c = /* @__PURE__ */ template(`<button class=command-bar-recent-item type=button>`), _tmpl$7$a = /* @__PURE__ */ template(`<span>Set up a provider in Settings first`);
5855
+ var _tmpl$$g = /* @__PURE__ */ template(`<p class=command-bar-no-provider-error>`), _tmpl$2$g = /* @__PURE__ */ template(`<div class=command-bar-no-provider><p>Start with OpenRouter's free model router, or open Settings for more providers.</p><button class=command-bar-no-provider-btn></button><button class=command-bar-no-provider-link>More options`), _tmpl$3$e = /* @__PURE__ */ template(`<div class=command-bar-recent><span class=command-bar-recent-label>Recent</span><div class=command-bar-recent-list>`), _tmpl$4$e = /* @__PURE__ */ template(`<span>Try "summarize" or ask a question`), _tmpl$5$c = /* @__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$6$c = /* @__PURE__ */ template(`<button class=command-bar-recent-item type=button>`), _tmpl$7$a = /* @__PURE__ */ template(`<span>Set up a provider in Settings first`);
4967
5856
  const COMMAND_BAR_EXIT_MS = 200;
4968
5857
  const CommandBar = () => {
4969
5858
  const {
@@ -5042,7 +5931,7 @@ const CommandBar = () => {
5042
5931
  return !hasProvider();
5043
5932
  },
5044
5933
  get children() {
5045
- var _el$6 = _tmpl$2$f(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling, _el$9 = _el$8.nextSibling;
5934
+ var _el$6 = _tmpl$2$g(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling, _el$9 = _el$8.nextSibling;
5046
5935
  _el$8.$$click = () => void providerAuth.startOpenRouterAuth();
5047
5936
  insert(_el$8, createComponent(Show, {
5048
5937
  get when() {
@@ -5060,7 +5949,7 @@ const CommandBar = () => {
5060
5949
  return providerAuth.openRouterAuthStatus() === "error";
5061
5950
  },
5062
5951
  get children() {
5063
- var _el$0 = _tmpl$$f();
5952
+ var _el$0 = _tmpl$$g();
5064
5953
  insert(_el$0, () => providerAuth.openRouterAuthError());
5065
5954
  return _el$0;
5066
5955
  }
@@ -6824,7 +7713,7 @@ function getBookmarkSearchMatch(args) {
6824
7713
  }
6825
7714
  return { matchedFields, score };
6826
7715
  }
6827
- var _tmpl$$e = /* @__PURE__ */ template(`<div class=dropdown-select-menu role=listbox>`), _tmpl$2$e = /* @__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$d = /* @__PURE__ */ template(`<span class=dropdown-select-option-description>`), _tmpl$4$d = /* @__PURE__ */ template(`<button class=dropdown-select-option type=button role=option><span class=dropdown-select-option-copy><span class=dropdown-select-option-label>`);
7716
+ var _tmpl$$f = /* @__PURE__ */ template(`<div class=dropdown-select-menu role=listbox>`), _tmpl$2$f = /* @__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$d = /* @__PURE__ */ template(`<span class=dropdown-select-option-description>`), _tmpl$4$d = /* @__PURE__ */ template(`<button class=dropdown-select-option type=button role=option><span class=dropdown-select-option-copy><span class=dropdown-select-option-label>`);
6828
7717
  const DropdownSelect = (props) => {
6829
7718
  const [open, setOpen] = createSignal(false);
6830
7719
  let rootRef;
@@ -6848,7 +7737,7 @@ const DropdownSelect = (props) => {
6848
7737
  });
6849
7738
  });
6850
7739
  return (() => {
6851
- var _el$ = _tmpl$2$e(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
7740
+ var _el$ = _tmpl$2$f(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
6852
7741
  var _ref$ = rootRef;
6853
7742
  typeof _ref$ === "function" ? use(_ref$, _el$) : rootRef = _el$;
6854
7743
  _el$2.$$click = () => setOpen((current) => !current);
@@ -6858,7 +7747,7 @@ const DropdownSelect = (props) => {
6858
7747
  return open();
6859
7748
  },
6860
7749
  get children() {
6861
- var _el$5 = _tmpl$$e();
7750
+ var _el$5 = _tmpl$$f();
6862
7751
  insert(_el$5, createComponent(For, {
6863
7752
  get each() {
6864
7753
  return props.options;
@@ -7061,7 +7950,7 @@ function renderKitPrompt(kit, values) {
7061
7950
  (_, key) => values[key] ?? ""
7062
7951
  );
7063
7952
  }
7064
- var _tmpl$$d = /* @__PURE__ */ template(`<div class=kit-upsell><div class=kit-upsell-icon aria-hidden=true></div><p class=kit-upsell-title>Vessel Premium</p><p class=kit-upsell-body>Automation Kits are a premium feature. Upgrade to unlock pre-built workflows you can launch with one click.</p><button class="agent-primary-button kit-upsell-btn"type=button>Start 7-day free trial — $5.99/mo after`), _tmpl$2$d = /* @__PURE__ */ template(`<div class=kit-list-header><span class=agent-panel-title>Automation Kits <span class=kit-beta-tag>Beta</span></span><div class=kit-list-header-actions><span class=kit-list-count> kits</span><button class=kit-install-btn type=button title="Install a kit from a .kit.json file">+ Install`), _tmpl$3$c = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$c = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$b = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$b = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$9 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$8 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$7 = /* @__PURE__ */ template(`<div class=kit-form-header><button class=kit-back-btn type=button title="Back to kits"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M9 11L5 7l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Back</button><div class=kit-form-title>`), _tmpl$0$5 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$5 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$5 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$5 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$5 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date &amp; time</label><input class=kit-form-input type=datetime-local>`), _tmpl$13$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time of day</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$14$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$16$3 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$3 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$18$3 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$3 = /* @__PURE__ */ template(`<div class=sched-edit-backdrop><div class=sched-edit-panel><div class=sched-edit-header><span class=sched-edit-title>Edit schedule</span><span class=sched-edit-job-name></span></div><div class=kit-schedule-types></div><div class=sched-edit-actions><button class=kit-back-btn type=button>Cancel</button><button class=agent-primary-button type=button>Save`), _tmpl$23$3 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$3 = /* @__PURE__ */ template(`<div class=kit-card-meta>~<!> min`), _tmpl$25$2 = /* @__PURE__ */ template(`<button class=kit-remove-btn type=button>×`), _tmpl$26$2 = /* @__PURE__ */ template(`<div class=kit-card role=button tabindex=0><span class=kit-card-icon aria-hidden=true></span><div class=kit-card-body><div class=kit-card-name></div><div class=kit-card-desc>`), _tmpl$27$2 = /* @__PURE__ */ template(`<svg class=kit-card-caret width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M5 3l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$28$2 = /* @__PURE__ */ template(`<div class=kit-sched-next>Next: `), _tmpl$29$2 = /* @__PURE__ */ template(`<div class=sched-context-menu><button class=sched-ctx-item type=button>Edit task</button><button class=sched-ctx-item type=button>Edit schedule</button><div class=sched-ctx-divider></div><button class=sched-ctx-item type=button></button><button class="sched-ctx-item sched-ctx-danger"type=button>Delete`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class=kit-sched-card><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-sched-body><div class=kit-sched-name></div><div class=kit-sched-meta></div></div><div class=kit-sched-actions><button class=kit-sched-toggle type=button></button><button class=kit-remove-btn type=button title="Delete schedule"aria-label="Delete schedule">×`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class=kit-activity-output>`), _tmpl$32$1 = /* @__PURE__ */ template(`<div class=kit-activity-card><div class=kit-activity-header><div class=kit-activity-title><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-activity-title-copy><div class=kit-sched-name></div><div class=kit-activity-time></div></div></div><span class=kit-activity-badge>`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class="kit-activity-output kit-activity-placeholder">`), _tmpl$34$1 = /* @__PURE__ */ template(`<span class=kit-form-required aria-hidden=true>*`), _tmpl$35$1 = /* @__PURE__ */ template(`<textarea class=kit-form-textarea rows=3>`), _tmpl$36$1 = /* @__PURE__ */ template(`<p class=kit-form-hint>`), _tmpl$37$1 = /* @__PURE__ */ template(`<div class=kit-form-field><label class=kit-form-label>`), _tmpl$38$1 = /* @__PURE__ */ template(`<input class=kit-form-input>`), _tmpl$39$1 = /* @__PURE__ */ template(`<span class=kit-run-spinner aria-hidden=true>`), _tmpl$40$1 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=sched-type>`), _tmpl$41$1 = /* @__PURE__ */ template(`<option>`), _tmpl$42$1 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=edit-sched-type>`);
7953
+ var _tmpl$$e = /* @__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$e = /* @__PURE__ */ template(`<div class=kit-list-header><span class=agent-panel-title>Automation Kits <span class=kit-beta-tag>Beta</span></span><div class=kit-list-header-actions><span class=kit-list-count> kits</span><button class=kit-install-btn type=button title="Install a kit from a .kit.json file">+ Install`), _tmpl$3$c = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$c = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$b = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$b = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$9 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$8 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$7 = /* @__PURE__ */ template(`<div class=kit-form-header><button class=kit-back-btn type=button title="Back to kits"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M9 11L5 7l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Back</button><div class=kit-form-title>`), _tmpl$0$5 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$5 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$5 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$5 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$5 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date &amp; time</label><input class=kit-form-input type=datetime-local>`), _tmpl$13$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time of day</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$14$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$16$3 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$3 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$18$3 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$3 = /* @__PURE__ */ template(`<div class=sched-edit-backdrop><div class=sched-edit-panel><div class=sched-edit-header><span class=sched-edit-title>Edit schedule</span><span class=sched-edit-job-name></span></div><div class=kit-schedule-types></div><div class=sched-edit-actions><button class=kit-back-btn type=button>Cancel</button><button class=agent-primary-button type=button>Save`), _tmpl$23$3 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$3 = /* @__PURE__ */ template(`<div class=kit-card-meta>~<!> min`), _tmpl$25$2 = /* @__PURE__ */ template(`<button class=kit-remove-btn type=button>×`), _tmpl$26$2 = /* @__PURE__ */ template(`<div class=kit-card role=button tabindex=0><span class=kit-card-icon aria-hidden=true></span><div class=kit-card-body><div class=kit-card-name></div><div class=kit-card-desc>`), _tmpl$27$2 = /* @__PURE__ */ template(`<svg class=kit-card-caret width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M5 3l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$28$2 = /* @__PURE__ */ template(`<div class=kit-sched-next>Next: `), _tmpl$29$2 = /* @__PURE__ */ template(`<div class=sched-context-menu><button class=sched-ctx-item type=button>Edit task</button><button class=sched-ctx-item type=button>Edit schedule</button><div class=sched-ctx-divider></div><button class=sched-ctx-item type=button></button><button class="sched-ctx-item sched-ctx-danger"type=button>Delete`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class=kit-sched-card><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-sched-body><div class=kit-sched-name></div><div class=kit-sched-meta></div></div><div class=kit-sched-actions><button class=kit-sched-toggle type=button></button><button class=kit-remove-btn type=button title="Delete schedule"aria-label="Delete schedule">×`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class=kit-activity-output>`), _tmpl$32$1 = /* @__PURE__ */ template(`<div class=kit-activity-card><div class=kit-activity-header><div class=kit-activity-title><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-activity-title-copy><div class=kit-sched-name></div><div class=kit-activity-time></div></div></div><span class=kit-activity-badge>`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class="kit-activity-output kit-activity-placeholder">`), _tmpl$34$1 = /* @__PURE__ */ template(`<span class=kit-form-required aria-hidden=true>*`), _tmpl$35$1 = /* @__PURE__ */ template(`<textarea class=kit-form-textarea rows=3>`), _tmpl$36$1 = /* @__PURE__ */ template(`<p class=kit-form-hint>`), _tmpl$37$1 = /* @__PURE__ */ template(`<div class=kit-form-field><label class=kit-form-label>`), _tmpl$38$1 = /* @__PURE__ */ template(`<input class=kit-form-input>`), _tmpl$39$1 = /* @__PURE__ */ template(`<span class=kit-run-spinner aria-hidden=true>`), _tmpl$40$1 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=sched-type>`), _tmpl$41$1 = /* @__PURE__ */ template(`<option>`), _tmpl$42$1 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=edit-sched-type>`);
7065
7954
  const ICON_MAP = {
7066
7955
  BookOpen: book_open_default,
7067
7956
  Tag: tag_default,
@@ -7386,7 +8275,7 @@ const AutomationTab = (props) => {
7386
8275
  return memo(() => !!!premiumData.loading)() && !isPremium();
7387
8276
  },
7388
8277
  get children() {
7389
- var _el$2 = _tmpl$$d(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling;
8278
+ var _el$2 = _tmpl$$e(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling;
7390
8279
  insert(_el$3, createComponent(zap_default, {
7391
8280
  size: 24
7392
8281
  }));
@@ -7400,7 +8289,7 @@ const AutomationTab = (props) => {
7400
8289
  },
7401
8290
  get children() {
7402
8291
  return [(() => {
7403
- var _el$7 = _tmpl$2$d(), _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;
8292
+ var _el$7 = _tmpl$2$e(), _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;
7404
8293
  insert(_el$0, () => allKits().length, _el$1);
7405
8294
  _el$10.$$click = () => void handleInstall();
7406
8295
  return _el$7;
@@ -7977,17 +8866,17 @@ function useResearch() {
7977
8866
  }
7978
8867
  };
7979
8868
  }
7980
- var _tmpl$$c = /* @__PURE__ */ template(`<div class=markdown-content>`), _tmpl$2$c = /* @__PURE__ */ template(`<div>`), _tmpl$3$b = /* @__PURE__ */ template(`<div class=research-premium-notice><span class=premium-badge>Premium</span> Brief is free; full research and export require Vessel Premium.`), _tmpl$4$b = /* @__PURE__ */ template(`<div class=research-brief-status>`), _tmpl$5$a = /* @__PURE__ */ template(`<div class=research-idle><h3>Research Desk</h3><p>Start with a topic. Vessel will shape it into a focused brief, draft a research plan, and then send sub-agents after the strongest sources.</p><form class=research-topic-form><textarea class=research-topic-input rows=3 placeholder="What should we research?"></textarea><button class=research-start-btn type=submit>Start Briefing`), _tmpl$6$a = /* @__PURE__ */ template(`<div class=research-brief-loading role=status aria-live=polite><span class=research-spinner aria-hidden=true></span><div><div class=research-loading-title>Brief started</div><div class=research-loading-copy>Preparing the first briefing question...`), _tmpl$7$8 = /* @__PURE__ */ template(`<div class="research-brief-status thinking"role=status aria-live=polite><span class=research-spinner aria-hidden=true></span><span>Thinking...`), _tmpl$8$7 = /* @__PURE__ */ template(`<div class=research-brief-status> queued`), _tmpl$9$6 = /* @__PURE__ */ template(`<div class=research-phase><h3>Briefing</h3><p>Work through the brief here. Once the assistant has enough context, turn it into a research plan.</p><div class=research-brief-thread></div><form class=research-brief-form><textarea class=research-brief-input rows=2></textarea><button type=submit></button></form><div class=phase-controls><button>Build Research Plan</button><button class=secondary>Cancel`), _tmpl$0$4 = /* @__PURE__ */ template(`<div class=research-phase><h3>Planning Research</h3><p>Creating Research Objectives based on your brief...`), _tmpl$1$4 = /* @__PURE__ */ template(`<div class=research-phase><h3>Research Objectives`), _tmpl$10$4 = /* @__PURE__ */ template(`<div class=research-thread-progress-list>`), _tmpl$11$4 = /* @__PURE__ */ template(`<button>Switch to Walk-Away`), _tmpl$12$4 = /* @__PURE__ */ template(`<button>Switch to Interactive`), _tmpl$13$3 = /* @__PURE__ */ template(`<div class=research-phase><h3>Researching</h3><div class=research-active-card role=status aria-live=polite><span class="research-spinner research-active-spinner"aria-hidden=true></span><div class=research-active-copy><div class=research-active-title>Agents are working</div><p> of <!> threads complete</p></div></div><div class=phase-controls><button class=secondary>Stop Research</button><button>Stop Research &amp; Synthesize Current Findings`), _tmpl$14$3 = /* @__PURE__ */ template(`<div class=research-phase><h3>Synthesizing Report</h3><p>Compiling findings into the Research Report...`), _tmpl$15$3 = /* @__PURE__ */ template(`<div class=research-phase><h3>Report Ready`), _tmpl$16$2 = /* @__PURE__ */ template(`<div class=research-desk>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class="research-quick-replies inline"aria-label="Suggested briefing responses">`), _tmpl$18$2 = /* @__PURE__ */ template(`<button type=button class=research-quick-reply>`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=objectives-card><section class=objectives-section><p class=objectives-label>Question</p><p class=objectives-question></p></section><section class=objectives-section><div class=objectives-section-header><p class=objectives-label>Research Threads</p><span></span></div><ul class=objectives-thread-list></ul></section><section class="objectives-section objectives-settings"><label class=mode-toggle><input type=checkbox><span>Walk-away mode (notified when done)</span></label><label class=traces-toggle><input type=checkbox><span>Include agent traces with report</span></label></section><div class=phase-controls><button>Start Research</button><button class=secondary>Cancel`), _tmpl$20$2 = /* @__PURE__ */ template(`<li><span></span><small> sources`), _tmpl$21$2 = /* @__PURE__ */ template(`<section class=objectives-section><p class=objectives-label>Excluded Sources</p><div class=objectives-source-list>`), _tmpl$22$2 = /* @__PURE__ */ template(`<span>`), _tmpl$23$2 = /* @__PURE__ */ template(`<div><span></span><small>`), _tmpl$24$2 = /* @__PURE__ */ template(`<div class=report-card><h4></h4><p>...</p><p> sources cited</p><button>Export as Markdown</button><button class=secondary>New Research`);
8869
+ var _tmpl$$d = /* @__PURE__ */ template(`<div class=markdown-content>`), _tmpl$2$d = /* @__PURE__ */ template(`<div>`), _tmpl$3$b = /* @__PURE__ */ template(`<div class=research-premium-notice><span class=premium-badge>Premium</span> Brief is free; full research and export require Vessel Premium.`), _tmpl$4$b = /* @__PURE__ */ template(`<div class=research-brief-status>`), _tmpl$5$a = /* @__PURE__ */ template(`<div class=research-idle><h3>Research Desk</h3><p>Start with a topic. Vessel will shape it into a focused brief, draft a research plan, and then send sub-agents after the strongest sources.</p><form class=research-topic-form><textarea class=research-topic-input rows=3 placeholder="What should we research?"></textarea><button class=research-start-btn type=submit>Start Briefing`), _tmpl$6$a = /* @__PURE__ */ template(`<div class=research-brief-loading role=status aria-live=polite><span class=research-spinner aria-hidden=true></span><div><div class=research-loading-title>Brief started</div><div class=research-loading-copy>Preparing the first briefing question...`), _tmpl$7$8 = /* @__PURE__ */ template(`<div class="research-brief-status thinking"role=status aria-live=polite><span class=research-spinner aria-hidden=true></span><span>Thinking...`), _tmpl$8$7 = /* @__PURE__ */ template(`<div class=research-brief-status> queued`), _tmpl$9$6 = /* @__PURE__ */ template(`<div class=research-phase><h3>Briefing</h3><p>Work through the brief here. Once the assistant has enough context, turn it into a research plan.</p><div class=research-brief-thread></div><form class=research-brief-form><textarea class=research-brief-input rows=2></textarea><button type=submit></button></form><div class=phase-controls><button>Build Research Plan</button><button class=secondary>Cancel`), _tmpl$0$4 = /* @__PURE__ */ template(`<div class=research-phase><h3>Planning Research</h3><p>Creating Research Objectives based on your brief...`), _tmpl$1$4 = /* @__PURE__ */ template(`<div class=research-phase><h3>Research Objectives`), _tmpl$10$4 = /* @__PURE__ */ template(`<div class=research-thread-progress-list>`), _tmpl$11$4 = /* @__PURE__ */ template(`<button>Switch to Walk-Away`), _tmpl$12$4 = /* @__PURE__ */ template(`<button>Switch to Interactive`), _tmpl$13$3 = /* @__PURE__ */ template(`<div class=research-phase><h3>Researching</h3><div class=research-active-card role=status aria-live=polite><span class="research-spinner research-active-spinner"aria-hidden=true></span><div class=research-active-copy><div class=research-active-title>Agents are working</div><p> of <!> threads complete</p></div></div><div class=phase-controls><button class=secondary>Stop Research</button><button>Stop Research &amp; Synthesize Current Findings`), _tmpl$14$3 = /* @__PURE__ */ template(`<div class=research-phase><h3>Synthesizing Report</h3><p>Compiling findings into the Research Report...`), _tmpl$15$3 = /* @__PURE__ */ template(`<div class=research-phase><h3>Report Ready`), _tmpl$16$2 = /* @__PURE__ */ template(`<div class=research-desk>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class="research-quick-replies inline"aria-label="Suggested briefing responses">`), _tmpl$18$2 = /* @__PURE__ */ template(`<button type=button class=research-quick-reply>`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=objectives-card><section class=objectives-section><p class=objectives-label>Question</p><p class=objectives-question></p></section><section class=objectives-section><div class=objectives-section-header><p class=objectives-label>Research Threads</p><span></span></div><ul class=objectives-thread-list></ul></section><section class="objectives-section objectives-settings"><label class=mode-toggle><input type=checkbox><span>Walk-away mode (notified when done)</span></label><label class=traces-toggle><input type=checkbox><span>Include agent traces with report</span></label></section><div class=phase-controls><button>Start Research</button><button class=secondary>Cancel`), _tmpl$20$2 = /* @__PURE__ */ template(`<li><span></span><small> sources`), _tmpl$21$2 = /* @__PURE__ */ template(`<section class=objectives-section><p class=objectives-label>Excluded Sources</p><div class=objectives-source-list>`), _tmpl$22$2 = /* @__PURE__ */ template(`<span>`), _tmpl$23$2 = /* @__PURE__ */ template(`<div><span></span><small>`), _tmpl$24$2 = /* @__PURE__ */ template(`<div class=report-card><h4></h4><p>...</p><p> sources cited</p><button>Export as Markdown</button><button class=secondary>New Research`);
7981
8870
  const ResearchBriefMarkdown = (props) => {
7982
8871
  const html2 = createMemo(() => renderMarkdown(props.content));
7983
8872
  return (() => {
7984
- var _el$ = _tmpl$$c();
8873
+ var _el$ = _tmpl$$d();
7985
8874
  createRenderEffect(() => _el$.innerHTML = html2());
7986
8875
  return _el$;
7987
8876
  })();
7988
8877
  };
7989
8878
  const ResearchBriefMessage = (props) => (() => {
7990
- var _el$2 = _tmpl$2$c();
8879
+ var _el$2 = _tmpl$2$d();
7991
8880
  insert(_el$2, createComponent(Show, {
7992
8881
  get when() {
7993
8882
  return props.role === "assistant";
@@ -8632,7 +9521,7 @@ const ResearchDesk = () => {
8632
9521
  })();
8633
9522
  };
8634
9523
  delegateEvents(["input", "keydown", "click"]);
8635
- var _tmpl$$b = /* @__PURE__ */ template(`<div class=agent-muted>Loading...`), _tmpl$2$b = /* @__PURE__ */ template(`<div class=agent-muted>`), _tmpl$3$a = /* @__PURE__ */ template(`<div class=agent-muted>No changes detected yet.`), _tmpl$4$a = /* @__PURE__ */ template(`<div class=page-diff-timeline-header><div class=agent-section-title>Change history for this page</div><div class=agent-muted>Newest detections are first. Each entry is a saved change burst.`), _tmpl$5$9 = /* @__PURE__ */ template(`<div class=page-diff-history-list>`), _tmpl$6$9 = /* @__PURE__ */ template(`<div class=page-diff-timeline>`), _tmpl$7$7 = /* @__PURE__ */ template(`<div class=page-diff-history-item><div class=page-diff-history-time><span class=page-diff-history-label></span><span></span></div><div class=page-diff-history-card><div class=page-diff-history-summary-list></div><div class=page-diff-history-position>Entry <!> of `), _tmpl$8$6 = /* @__PURE__ */ template(`<span class=page-diff-history-summary-section>`), _tmpl$9$5 = /* @__PURE__ */ template(`<div class=page-diff-history-summary-row><span class=page-diff-history-summary>`);
9524
+ var _tmpl$$c = /* @__PURE__ */ template(`<div class=agent-muted>Loading...`), _tmpl$2$c = /* @__PURE__ */ template(`<div class=agent-muted>`), _tmpl$3$a = /* @__PURE__ */ template(`<div class=agent-muted>No changes detected yet.`), _tmpl$4$a = /* @__PURE__ */ template(`<div class=page-diff-timeline-header><div class=agent-section-title>Change history for this page</div><div class=agent-muted>Newest detections are first. Each entry is a saved change burst.`), _tmpl$5$9 = /* @__PURE__ */ template(`<div class=page-diff-history-list>`), _tmpl$6$9 = /* @__PURE__ */ template(`<div class=page-diff-timeline>`), _tmpl$7$7 = /* @__PURE__ */ template(`<div class=page-diff-history-item><div class=page-diff-history-time><span class=page-diff-history-label></span><span></span></div><div class=page-diff-history-card><div class=page-diff-history-summary-list></div><div class=page-diff-history-position>Entry <!> of `), _tmpl$8$6 = /* @__PURE__ */ template(`<span class=page-diff-history-summary-section>`), _tmpl$9$5 = /* @__PURE__ */ template(`<div class=page-diff-history-summary-row><span class=page-diff-history-summary>`);
8636
9525
  const PageDiffTimeline = () => {
8637
9526
  const {
8638
9527
  activeTab
@@ -8690,7 +9579,7 @@ const PageDiffTimeline = () => {
8690
9579
  return loading();
8691
9580
  },
8692
9581
  get children() {
8693
- return _tmpl$$b();
9582
+ return _tmpl$$c();
8694
9583
  }
8695
9584
  }), null);
8696
9585
  insert(_el$, createComponent(Show, {
@@ -8698,7 +9587,7 @@ const PageDiffTimeline = () => {
8698
9587
  return memo(() => !!!loading())() && error();
8699
9588
  },
8700
9589
  get children() {
8701
- var _el$3 = _tmpl$2$b();
9590
+ var _el$3 = _tmpl$2$c();
8702
9591
  insert(_el$3, error);
8703
9592
  return _el$3;
8704
9593
  }
@@ -8762,8 +9651,58 @@ const PageDiffTimeline = () => {
8762
9651
  return _el$;
8763
9652
  })();
8764
9653
  };
9654
+ var _tmpl$$b = /* @__PURE__ */ template(`<button class=sidebar-close>`), _tmpl$2$b = /* @__PURE__ */ template(`<button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat">`);
9655
+ const SidebarWindowControls = (props) => {
9656
+ const togglePlacement = () => props.detached() ? props.dock() : props.popOut();
9657
+ const placementLabel = () => props.detached() ? "Dock agent panel" : "Pop out agent panel";
9658
+ return [(() => {
9659
+ var _el$ = _tmpl$$b();
9660
+ _el$.$$click = () => void togglePlacement();
9661
+ insert(_el$, createComponent(Show, {
9662
+ get when() {
9663
+ return props.detached();
9664
+ },
9665
+ get fallback() {
9666
+ return createComponent(external_link_default, {
9667
+ size: 14,
9668
+ "aria-hidden": "true"
9669
+ });
9670
+ },
9671
+ get children() {
9672
+ return createComponent(panel_right_close_default, {
9673
+ size: 14,
9674
+ "aria-hidden": "true"
9675
+ });
9676
+ }
9677
+ }));
9678
+ createRenderEffect((_p$) => {
9679
+ var _v$ = placementLabel(), _v$2 = placementLabel();
9680
+ _v$ !== _p$.e && setAttribute(_el$, "title", _p$.e = _v$);
9681
+ _v$2 !== _p$.t && setAttribute(_el$, "aria-label", _p$.t = _v$2);
9682
+ return _p$;
9683
+ }, {
9684
+ e: void 0,
9685
+ t: void 0
9686
+ });
9687
+ return _el$;
9688
+ })(), createComponent(Show, {
9689
+ get when() {
9690
+ return !props.detached();
9691
+ },
9692
+ get children() {
9693
+ var _el$2 = _tmpl$2$b();
9694
+ _el$2.$$click = () => void props.close();
9695
+ insert(_el$2, createComponent(x_default, {
9696
+ size: 14,
9697
+ "aria-hidden": "true"
9698
+ }));
9699
+ return _el$2;
9700
+ }
9701
+ })];
9702
+ };
9703
+ delegateEvents(["click"]);
8765
9704
  const vesselLogo = "" + new URL("vessel-logo-transparent-IT25qr-Z.png", import.meta.url).href;
8766
- var _tmpl$$a = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$a = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$9 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$9 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$5$8 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$6$8 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$7$6 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$8$5 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$9$4 = /* @__PURE__ */ template(`<div class=bookmark-export-message>`), _tmpl$0$3 = /* @__PURE__ */ template(`<div class=bookmark-save-body><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Import HTML</button><button class=bookmark-secondary-button type=button>Import JSON`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$10$3 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-export-card><div><div class=bookmark-panel-title>Export</div><div class=bookmark-panel-subtitle>Save browser-ready HTML or a full Vessel archive</div></div><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Browser HTML</button><button class=bookmark-secondary-button type=button>HTML + notes</button><button class=bookmark-secondary-button type=button>Vessel JSON</button></div></div><div class=bookmark-import-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Import Bookmarks</span><span class=bookmark-save-toggle-subtitle>Import from HTML or Vessel JSON</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$11$3 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$12$3 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><textarea class=agent-textarea rows=2 placeholder="Optional note for this checkpoint"></textarea><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$13$2 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title>Load more history</span><span class=history-entry-url>Showing <!> of `), _tmpl$14$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$15$2 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><div class=history-panel-actions><button class=history-clear-btn>Clear</button><button class=history-clear-btn>Export HTML</button><button class=history-clear-btn>Export JSON</button><button class=history-clear-btn>Import</button></div></div><div class=history-list>`), _tmpl$16$1 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div class=agent-panel-title>What Changed</div><div class=agent-panel-subtitle>`), _tmpl$17$1 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$18$1 = /* @__PURE__ */ template(`<span>`), _tmpl$19$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$20$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$21$1 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$22$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$23$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$24$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$26$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$30 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button><button class=sidebar-tab role=tab>Research<span class=sidebar-tab-beta>Beta</span></button></div><div class=sidebar-messages><div>`), _tmpl$31 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$32 = /* @__PURE__ */ template(`<div class="agent-card agent-card-approval"><div class=agent-card-approval-stripe aria-hidden=true></div><div class=agent-card-title></div><div class=agent-card-copy></div><div class=agent-card-copy></div><div class=agent-card-actions><button class=agent-primary-button type=button>Approve</button><button class=agent-control-button type=button>Reject`), _tmpl$33 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$34 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$35 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$36 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$37 = /* @__PURE__ */ template(`<div class=agent-card><div class=agent-action-row><span class=agent-card-title></span><span></span></div><div class=agent-card-copy>`), _tmpl$38 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$39 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$40 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class=bookmark-ghost-button type=button>Export</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$41 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$42 = /* @__PURE__ */ template(`<div class=bookmark-folder-delete-confirm><p class=bookmark-delete-prompt>Delete "<!>"?</p><div class=bookmark-delete-options><button class="bookmark-ghost-button danger"type=button></button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$43 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><div class=bookmark-folder-form-fields><input class=bookmark-input><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=button>Save</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$44 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$45 = /* @__PURE__ */ template(`<div class=bookmark-folder-section><div class="bookmark-folder-header clickable"role=button tabindex=0><div class=bookmark-folder-overview><span class=bookmark-folder-chevron aria-hidden=true>▸</span><div><div class=bookmark-folder-name></div><div class=bookmark-folder-meta> saved`), _tmpl$46 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$47 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$48 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$49 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$50 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$51 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$52 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$53 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><input class=bookmark-input placeholder="Bookmark title"><textarea class=bookmark-note-input rows=2 placeholder="Why this bookmark matters"></textarea><textarea class=bookmark-note-input rows=1 placeholder=Intent></textarea><textarea class=bookmark-note-input rows=1 placeholder="Expected content"></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input rows=2 placeholder="Agent hints (one key:value per line)"></textarea><div class=bookmark-item-footer><button class=bookmark-secondary-button type=button>Save edits</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$54 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class=bookmark-ghost-button type=button></button><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$55 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$56 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$57 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><textarea class=agent-textarea rows=2 placeholder="Add a note..."></textarea><button class=agent-control-button type=button>Restore`), _tmpl$58 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$59 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">The Diff timeline is a premium feature. Upgrade to see a full history of what changed on this page.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$60 = /* @__PURE__ */ template(`<div>`), _tmpl$61 = /* @__PURE__ */ template(`<div class=thinking-state><div class=thinking-orb aria-hidden=true><span></span><span></span><span></span></div><div class=thinking-copy><div class=thinking-title>Thinking`), _tmpl$62 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$63 = /* @__PURE__ */ template(`<div class=chat-approval><div class=chat-approval-icon aria-hidden=true><svg width=16 height=16 viewBox="0 0 16 16"fill=none><path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM7.25 4.75a.75.75 0 011.5 0v3.5a.75.75 0 01-1.5 0v-3.5zM8 11.5a.75.75 0 110-1.5.75.75 0 010 1.5z"fill=currentColor></path></svg></div><div class=chat-approval-body><div class=chat-approval-title>Approval needed: <strong></strong></div><div class=chat-approval-detail></div><div class=chat-approval-actions><button class="chat-approval-btn chat-approval-approve"type=button>Approve</button><button class="chat-approval-btn chat-approval-reject"type=button>Reject`), _tmpl$64 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
9705
+ var _tmpl$$a = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$a = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$9 = /* @__PURE__ */ template(`<div class=sidebar-resize-handle>`), _tmpl$4$9 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$5$8 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$6$8 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$7$6 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$8$5 = /* @__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$9$4 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$0$3 = /* @__PURE__ */ template(`<div class=bookmark-export-message>`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=bookmark-save-body><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Import HTML</button><button class=bookmark-secondary-button type=button>Import JSON`), _tmpl$10$3 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$11$3 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-export-card><div><div class=bookmark-panel-title>Export</div><div class=bookmark-panel-subtitle>Save browser-ready HTML or a full Vessel archive</div></div><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Browser HTML</button><button class=bookmark-secondary-button type=button>HTML + notes</button><button class=bookmark-secondary-button type=button>Vessel JSON</button></div></div><div class=bookmark-import-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Import Bookmarks</span><span class=bookmark-save-toggle-subtitle>Import from HTML or Vessel JSON</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$12$3 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$13$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$14$2 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title>Load more history</span><span class=history-entry-url>Showing <!> of `), _tmpl$15$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$16$1 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><div class=history-panel-actions><button class=history-clear-btn>Clear</button><button class=history-clear-btn>Export HTML</button><button class=history-clear-btn>Export JSON</button><button class=history-clear-btn>Import</button></div></div><div class=history-list>`), _tmpl$17$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$18$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$19$1 = /* @__PURE__ */ template(`<span>`), _tmpl$20$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$21$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$22$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$23$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$24$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$25$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$26$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$27$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$30 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$31 = /* @__PURE__ */ template(`<div class=sidebar><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></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button><button class=sidebar-tab role=tab>Research<span class=sidebar-tab-beta>Beta</span></button></div><div class=sidebar-messages><div>`), _tmpl$32 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$33 = /* @__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$34 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$35 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$36 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$37 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$38 = /* @__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$39 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$40 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$41 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class=bookmark-ghost-button type=button>Export</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$42 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$43 = /* @__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$44 = /* @__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$45 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$46 = /* @__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$47 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$48 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$49 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$50 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$51 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$52 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$53 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$54 = /* @__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$55 = /* @__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$56 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$57 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$58 = /* @__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$59 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$60 = /* @__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$61 = /* @__PURE__ */ template(`<div>`), _tmpl$62 = /* @__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$63 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$64 = /* @__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$65 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
8767
9706
  const UNSORTED_FOLDER = {
8768
9707
  id: "unsorted",
8769
9708
  name: "Unsorted",
@@ -8831,9 +9770,12 @@ const Sidebar = (props) => {
8831
9770
  const {
8832
9771
  sidebarOpen: sidebarOpen2,
8833
9772
  sidebarWidth: sidebarWidth2,
9773
+ sidebarDetached: sidebarDetached2,
8834
9774
  resizeSidebar,
8835
9775
  commitResize,
8836
9776
  toggleSidebar,
9777
+ popOutSidebar,
9778
+ dockSidebar,
8837
9779
  openSettings
8838
9780
  } = useUI();
8839
9781
  const {
@@ -9145,6 +10087,7 @@ ${contextBlock}` : contextBlock);
9145
10087
  return Math.max(0, Math.floor((now2() - startedAt) / 1e3));
9146
10088
  });
9147
10089
  const startResize = (e) => {
10090
+ if (sidebarDetached2()) return;
9148
10091
  e.preventDefault();
9149
10092
  const target = e.currentTarget;
9150
10093
  target.setPointerCapture(e.pointerId);
@@ -9165,7 +10108,7 @@ ${contextBlock}` : contextBlock);
9165
10108
  if (finished) return;
9166
10109
  const totalDelta = startX - state.currentX;
9167
10110
  const targetWidth = startWidth + totalDelta;
9168
- const newWidth = Math.max(240, Math.min(800, Math.round(targetWidth)));
10111
+ const newWidth = clampSidebarWidth(targetWidth);
9169
10112
  resizeSidebar(newWidth);
9170
10113
  };
9171
10114
  const clearPointerTracking = () => {
@@ -9386,45 +10329,60 @@ ${contextBlock}` : contextBlock);
9386
10329
  return props.forceOpen || sidebarOpen2();
9387
10330
  },
9388
10331
  get children() {
9389
- var _el$9 = _tmpl$30(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling, _el$15 = _el$1.nextSibling, _el$16 = _el$15.firstChild;
9390
- _el$16.firstChild;
9391
- var _el$19 = _el$16.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$23.nextSibling, _el$25 = _el$24.nextSibling, _el$26 = _el$15.nextSibling, _el$132 = _el$26.firstChild;
9392
- _el$0.$$pointerdown = startResize;
10332
+ var _el$9 = _tmpl$31(), _el$1 = _el$9.firstChild, _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$1.nextSibling, _el$15 = _el$14.firstChild;
10333
+ _el$15.firstChild;
10334
+ var _el$18 = _el$15.nextSibling, _el$19 = _el$18.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$14.nextSibling, _el$131 = _el$25.firstChild;
10335
+ insert(_el$9, createComponent(Show, {
10336
+ get when() {
10337
+ return !sidebarDetached2();
10338
+ },
10339
+ get children() {
10340
+ var _el$0 = _tmpl$3$9();
10341
+ _el$0.$$pointerdown = startResize;
10342
+ createRenderEffect(() => _el$0.classList.toggle("dragging", !!isDragging()));
10343
+ return _el$0;
10344
+ }
10345
+ }), _el$1);
9393
10346
  setAttribute(_el$11, "src", vesselLogo);
9394
10347
  addEventListener(_el$13, "click", clearHistory, true);
9395
- _el$14.$$click = () => void toggleSidebar();
9396
- _el$16.$$click = () => setSidebarTab("supervisor");
9397
- insert(_el$16, createComponent(Show, {
10348
+ insert(_el$12, createComponent(SidebarWindowControls, {
10349
+ detached: sidebarDetached2,
10350
+ popOut: popOutSidebar,
10351
+ dock: dockSidebar,
10352
+ close: toggleSidebar
10353
+ }), null);
10354
+ _el$15.$$click = () => setSidebarTab("supervisor");
10355
+ insert(_el$15, createComponent(Show, {
9398
10356
  get when() {
9399
10357
  return runtimeState2().supervisor.pendingApprovals.length > 0;
9400
10358
  },
9401
10359
  get children() {
9402
- var _el$18 = _tmpl$3$9();
9403
- insert(_el$18, () => runtimeState2().supervisor.pendingApprovals.length);
9404
- return _el$18;
10360
+ var _el$17 = _tmpl$4$9();
10361
+ insert(_el$17, () => runtimeState2().supervisor.pendingApprovals.length);
10362
+ return _el$17;
9405
10363
  }
9406
10364
  }), null);
9407
- _el$19.$$click = () => setSidebarTab("bookmarks");
9408
- _el$20.$$click = () => setSidebarTab("checkpoints");
9409
- _el$21.$$click = () => setSidebarTab("chat");
9410
- _el$22.$$click = () => setSidebarTab("automation");
9411
- _el$23.$$click = () => setSidebarTab("history");
9412
- _el$24.$$click = () => setSidebarTab("diff");
9413
- _el$25.$$click = () => setSidebarTab("research");
10365
+ _el$18.$$click = () => setSidebarTab("bookmarks");
10366
+ _el$19.$$click = () => setSidebarTab("checkpoints");
10367
+ _el$20.$$click = () => setSidebarTab("chat");
10368
+ _el$21.$$click = () => setSidebarTab("automation");
10369
+ _el$22.$$click = () => setSidebarTab("history");
10370
+ _el$23.$$click = () => setSidebarTab("diff");
10371
+ _el$24.$$click = () => setSidebarTab("research");
9414
10372
  use((el) => {
9415
10373
  messagesContainerRef = el;
9416
10374
  useScrollFade(el);
9417
- }, _el$26);
9418
- insert(_el$26, createComponent(Show, {
10375
+ }, _el$25);
10376
+ insert(_el$25, createComponent(Show, {
9419
10377
  get when() {
9420
10378
  return sidebarTab() === "supervisor";
9421
10379
  },
9422
10380
  get children() {
9423
- var _el$27 = _tmpl$7$6(), _el$28 = _el$27.firstChild, _el$29 = _el$28.firstChild, _el$30 = _el$29.firstChild, _el$31 = _el$30.nextSibling, _el$32 = _el$29.nextSibling, _el$33 = _el$28.nextSibling, _el$34 = _el$33.firstChild, _el$35 = _el$34.nextSibling, _el$37 = _el$33.nextSibling, _el$39 = _el$37.nextSibling;
9424
- _el$39.firstChild;
9425
- insert(_el$31, () => runtimeState2().supervisor.paused ? "Agent is paused" : "Agent is live");
9426
- insert(_el$32, () => runtimeState2().supervisor.paused ? "Paused" : "Running");
9427
- insert(_el$33, createComponent(DropdownSelect, {
10381
+ var _el$26 = _tmpl$8$5(), _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;
10382
+ _el$38.firstChild;
10383
+ insert(_el$30, () => runtimeState2().supervisor.paused ? "Agent is paused" : "Agent is live");
10384
+ insert(_el$31, () => runtimeState2().supervisor.paused ? "Paused" : "Running");
10385
+ insert(_el$32, createComponent(DropdownSelect, {
9428
10386
  "class": "agent-select",
9429
10387
  get value() {
9430
10388
  return runtimeState2().supervisor.approvalMode;
@@ -9434,66 +10392,66 @@ ${contextBlock}` : contextBlock);
9434
10392
  },
9435
10393
  ariaLabel: "Approval mode",
9436
10394
  onChange: (value) => void setApprovalMode(value)
9437
- }), _el$34);
9438
- _el$34.$$click = () => void (runtimeState2().supervisor.paused ? resume() : pause());
9439
- insert(_el$34, () => runtimeState2().supervisor.paused ? "Resume" : "Pause");
9440
- _el$35.$$click = () => void restoreSession();
9441
- insert(_el$33, createComponent(Show, {
10395
+ }), _el$33);
10396
+ _el$33.$$click = () => void (runtimeState2().supervisor.paused ? resume() : pause());
10397
+ insert(_el$33, () => runtimeState2().supervisor.paused ? "Resume" : "Pause");
10398
+ _el$34.$$click = () => void restoreSession();
10399
+ insert(_el$32, createComponent(Show, {
9442
10400
  get when() {
9443
10401
  return runtimeState2().canUndo;
9444
10402
  },
9445
10403
  get children() {
9446
- var _el$36 = _tmpl$4$9();
9447
- _el$36.$$click = () => void undoLastAction();
9448
- createRenderEffect(() => setAttribute(_el$36, "title", runtimeState2().undoInfo ? `Undo: ${runtimeState2().undoInfo.actionName}` : "Undo last action"));
9449
- return _el$36;
10404
+ var _el$35 = _tmpl$5$8();
10405
+ _el$35.$$click = () => void undoLastAction();
10406
+ createRenderEffect(() => setAttribute(_el$35, "title", runtimeState2().undoInfo ? `Undo: ${runtimeState2().undoInfo.actionName}` : "Undo last action"));
10407
+ return _el$35;
9450
10408
  }
9451
10409
  }), null);
9452
- insert(_el$37, approvalModeDescription);
9453
- insert(_el$27, createComponent(Show, {
10410
+ insert(_el$36, approvalModeDescription);
10411
+ insert(_el$26, createComponent(Show, {
9454
10412
  get when() {
9455
10413
  return runtimeState2().supervisor.pendingApprovals.length > 0;
9456
10414
  },
9457
10415
  get fallback() {
9458
- return _tmpl$31();
10416
+ return _tmpl$32();
9459
10417
  },
9460
10418
  get children() {
9461
- return [_tmpl$5$8(), createComponent(For, {
10419
+ return [_tmpl$6$8(), createComponent(For, {
9462
10420
  get each() {
9463
10421
  return runtimeState2().supervisor.pendingApprovals;
9464
10422
  },
9465
10423
  children: (approval) => (() => {
9466
- var _el$150 = _tmpl$32(), _el$151 = _el$150.firstChild, _el$152 = _el$151.nextSibling, _el$153 = _el$152.nextSibling, _el$154 = _el$153.nextSibling, _el$155 = _el$154.nextSibling, _el$156 = _el$155.firstChild, _el$157 = _el$156.nextSibling;
9467
- insert(_el$152, () => approval.name);
9468
- insert(_el$153, () => approval.argsSummary);
9469
- insert(_el$154, () => approval.reason);
9470
- _el$156.$$click = () => void resolveApproval(approval.id, true);
9471
- _el$157.$$click = () => void resolveApproval(approval.id, false);
9472
- return _el$150;
10424
+ var _el$149 = _tmpl$33(), _el$150 = _el$149.firstChild, _el$151 = _el$150.nextSibling, _el$152 = _el$151.nextSibling, _el$153 = _el$152.nextSibling, _el$154 = _el$153.nextSibling, _el$155 = _el$154.firstChild, _el$156 = _el$155.nextSibling;
10425
+ insert(_el$151, () => approval.name);
10426
+ insert(_el$152, () => approval.argsSummary);
10427
+ insert(_el$153, () => approval.reason);
10428
+ _el$155.$$click = () => void resolveApproval(approval.id, true);
10429
+ _el$156.$$click = () => void resolveApproval(approval.id, false);
10430
+ return _el$149;
9473
10431
  })()
9474
10432
  })];
9475
10433
  }
9476
- }), _el$39);
9477
- insert(_el$39, createComponent(Show, {
10434
+ }), _el$38);
10435
+ insert(_el$38, createComponent(Show, {
9478
10436
  get when() {
9479
10437
  return recentActions().length > 0;
9480
10438
  },
9481
10439
  get children() {
9482
- var _el$41 = _tmpl$6$8();
9483
- _el$41.$$click = () => setActionsExpanded((current) => !current);
9484
- insert(_el$41, (() => {
10440
+ var _el$40 = _tmpl$7$6();
10441
+ _el$40.$$click = () => setActionsExpanded((current) => !current);
10442
+ insert(_el$40, (() => {
9485
10443
  var _c$ = memo(() => !!actionsExpanded());
9486
10444
  return () => _c$() ? "Hide history" : `Show history (${recentActions().length})`;
9487
10445
  })());
9488
- return _el$41;
10446
+ return _el$40;
9489
10447
  }
9490
10448
  }), null);
9491
- insert(_el$27, createComponent(Show, {
10449
+ insert(_el$26, createComponent(Show, {
9492
10450
  get when() {
9493
10451
  return recentActions().length > 0;
9494
10452
  },
9495
10453
  get fallback() {
9496
- return _tmpl$33();
10454
+ return _tmpl$34();
9497
10455
  },
9498
10456
  get children() {
9499
10457
  return createComponent(Show, {
@@ -9501,7 +10459,7 @@ ${contextBlock}` : contextBlock);
9501
10459
  return actionsExpanded();
9502
10460
  },
9503
10461
  get fallback() {
9504
- return _tmpl$34();
10462
+ return _tmpl$35();
9505
10463
  },
9506
10464
  get children() {
9507
10465
  return createComponent(For, {
@@ -9509,115 +10467,115 @@ ${contextBlock}` : contextBlock);
9509
10467
  return recentActions();
9510
10468
  },
9511
10469
  children: (action) => (() => {
9512
- var _el$160 = _tmpl$37(), _el$161 = _el$160.firstChild, _el$162 = _el$161.firstChild, _el$163 = _el$162.nextSibling, _el$164 = _el$161.nextSibling;
9513
- insert(_el$162, () => action.name);
9514
- insert(_el$163, () => action.status);
9515
- insert(_el$164, () => action.argsSummary);
9516
- insert(_el$160, createComponent(Show, {
10470
+ var _el$159 = _tmpl$38(), _el$160 = _el$159.firstChild, _el$161 = _el$160.firstChild, _el$162 = _el$161.nextSibling, _el$163 = _el$160.nextSibling;
10471
+ insert(_el$161, () => action.name);
10472
+ insert(_el$162, () => action.status);
10473
+ insert(_el$163, () => action.argsSummary);
10474
+ insert(_el$159, createComponent(Show, {
9517
10475
  get when() {
9518
10476
  return action.resultSummary;
9519
10477
  },
9520
10478
  get children() {
9521
- var _el$165 = _tmpl$35();
9522
- insert(_el$165, () => action.resultSummary);
9523
- return _el$165;
10479
+ var _el$164 = _tmpl$36();
10480
+ insert(_el$164, () => action.resultSummary);
10481
+ return _el$164;
9524
10482
  }
9525
10483
  }), null);
9526
- insert(_el$160, createComponent(Show, {
10484
+ insert(_el$159, createComponent(Show, {
9527
10485
  get when() {
9528
10486
  return action.error;
9529
10487
  },
9530
10488
  get children() {
9531
- var _el$166 = _tmpl$36();
9532
- insert(_el$166, () => action.error);
9533
- return _el$166;
10489
+ var _el$165 = _tmpl$37();
10490
+ insert(_el$165, () => action.error);
10491
+ return _el$165;
9534
10492
  }
9535
10493
  }), null);
9536
- createRenderEffect(() => className(_el$163, `agent-action-status ${action.status}`));
9537
- return _el$160;
10494
+ createRenderEffect(() => className(_el$162, `agent-action-status ${action.status}`));
10495
+ return _el$159;
9538
10496
  })()
9539
10497
  });
9540
10498
  }
9541
10499
  });
9542
10500
  }
9543
10501
  }), null);
9544
- createRenderEffect(() => _el$32.classList.toggle("paused", !!runtimeState2().supervisor.paused));
9545
- return _el$27;
10502
+ createRenderEffect(() => _el$31.classList.toggle("paused", !!runtimeState2().supervisor.paused));
10503
+ return _el$26;
9546
10504
  }
9547
- }), _el$132);
9548
- insert(_el$26, createComponent(Show, {
10505
+ }), _el$131);
10506
+ insert(_el$25, createComponent(Show, {
9549
10507
  get when() {
9550
10508
  return sidebarTab() === "bookmarks";
9551
10509
  },
9552
10510
  get children() {
9553
- var _el$42 = _tmpl$10$3(), _el$43 = _el$42.firstChild, _el$44 = _el$43.firstChild, _el$45 = _el$44.firstChild, _el$46 = _el$45.nextSibling, _el$48 = _el$43.nextSibling, _el$49 = _el$48.nextSibling, _el$50 = _el$49.firstChild, _el$51 = _el$50.nextSibling, _el$52 = _el$51.firstChild, _el$53 = _el$52.nextSibling, _el$54 = _el$53.nextSibling, _el$56 = _el$49.nextSibling, _el$57 = _el$56.firstChild, _el$58 = _el$57.firstChild, _el$59 = _el$58.nextSibling, _el$65 = _el$56.nextSibling, _el$66 = _el$65.firstChild, _el$67 = _el$66.firstChild, _el$68 = _el$67.nextSibling, _el$79 = _el$65.nextSibling, _el$80 = _el$79.firstChild, _el$81 = _el$80.firstChild, _el$82 = _el$81.nextSibling, _el$83 = _el$80.nextSibling, _el$84 = _el$79.nextSibling;
9554
- insert(_el$46, (() => {
10511
+ var _el$41 = _tmpl$11$3(), _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.nextSibling, _el$51 = _el$50.firstChild, _el$52 = _el$51.nextSibling, _el$53 = _el$52.nextSibling, _el$55 = _el$48.nextSibling, _el$56 = _el$55.firstChild, _el$57 = _el$56.firstChild, _el$58 = _el$57.nextSibling, _el$64 = _el$55.nextSibling, _el$65 = _el$64.firstChild, _el$66 = _el$65.firstChild, _el$67 = _el$66.nextSibling, _el$78 = _el$64.nextSibling, _el$79 = _el$78.firstChild, _el$80 = _el$79.firstChild, _el$81 = _el$80.nextSibling, _el$82 = _el$79.nextSibling, _el$83 = _el$78.nextSibling;
10512
+ insert(_el$45, (() => {
9555
10513
  var _c$2 = memo(() => !!normalizedBookmarkSearch());
9556
10514
  return () => _c$2() ? `${bookmarkMatchCount()} matches for "${bookmarkSearchQuery().trim()}"` : `${bookmarksState2().bookmarks.length} saved across ${bookmarkFolders().length} folders`;
9557
10515
  })());
9558
- insert(_el$43, createComponent(Show, {
10516
+ insert(_el$42, createComponent(Show, {
9559
10517
  get when() {
9560
10518
  return currentTabSaved();
9561
10519
  },
9562
10520
  get children() {
9563
- return _tmpl$8$5();
10521
+ return _tmpl$9$4();
9564
10522
  }
9565
10523
  }), null);
9566
- _el$48.$$input = (e) => setBookmarkSearchQuery(e.currentTarget.value);
9567
- _el$52.$$click = () => void handleExportBookmarks("html");
9568
- _el$53.$$click = () => void handleExportBookmarks("html-with-notes");
9569
- _el$54.$$click = () => void handleExportBookmarks("json");
9570
- insert(_el$49, createComponent(Show, {
10524
+ _el$47.$$input = (e) => setBookmarkSearchQuery(e.currentTarget.value);
10525
+ _el$51.$$click = () => void handleExportBookmarks("html");
10526
+ _el$52.$$click = () => void handleExportBookmarks("html-with-notes");
10527
+ _el$53.$$click = () => void handleExportBookmarks("json");
10528
+ insert(_el$48, createComponent(Show, {
9571
10529
  get when() {
9572
10530
  return bookmarkExportMessage();
9573
10531
  },
9574
10532
  get children() {
9575
- var _el$55 = _tmpl$9$4();
9576
- insert(_el$55, bookmarkExportMessage);
9577
- return _el$55;
10533
+ var _el$54 = _tmpl$0$3();
10534
+ insert(_el$54, bookmarkExportMessage);
10535
+ return _el$54;
9578
10536
  }
9579
10537
  }), null);
9580
- _el$57.$$click = () => setBookmarkImportExpanded((current) => !current);
9581
- insert(_el$56, createComponent(Show, {
10538
+ _el$56.$$click = () => setBookmarkImportExpanded((current) => !current);
10539
+ insert(_el$55, createComponent(Show, {
9582
10540
  get when() {
9583
10541
  return bookmarkImportExpanded();
9584
10542
  },
9585
10543
  get children() {
9586
- var _el$60 = _tmpl$0$3(), _el$61 = _el$60.firstChild, _el$62 = _el$61.firstChild, _el$63 = _el$62.nextSibling;
9587
- _el$62.$$click = () => void handleImportBookmarks("html");
9588
- _el$63.$$click = () => void handleImportBookmarks("json");
9589
- insert(_el$60, createComponent(Show, {
10544
+ var _el$59 = _tmpl$1$3(), _el$60 = _el$59.firstChild, _el$61 = _el$60.firstChild, _el$62 = _el$61.nextSibling;
10545
+ _el$61.$$click = () => void handleImportBookmarks("html");
10546
+ _el$62.$$click = () => void handleImportBookmarks("json");
10547
+ insert(_el$59, createComponent(Show, {
9590
10548
  get when() {
9591
10549
  return bookmarkImportMessage();
9592
10550
  },
9593
10551
  get children() {
9594
- var _el$64 = _tmpl$9$4();
9595
- insert(_el$64, bookmarkImportMessage);
9596
- return _el$64;
10552
+ var _el$63 = _tmpl$0$3();
10553
+ insert(_el$63, bookmarkImportMessage);
10554
+ return _el$63;
9597
10555
  }
9598
10556
  }), null);
9599
10557
  createRenderEffect((_p$) => {
9600
10558
  var _v$ = bookmarkImporting(), _v$2 = bookmarkImporting();
9601
- _v$ !== _p$.e && (_el$62.disabled = _p$.e = _v$);
9602
- _v$2 !== _p$.t && (_el$63.disabled = _p$.t = _v$2);
10559
+ _v$ !== _p$.e && (_el$61.disabled = _p$.e = _v$);
10560
+ _v$2 !== _p$.t && (_el$62.disabled = _p$.t = _v$2);
9603
10561
  return _p$;
9604
10562
  }, {
9605
10563
  e: void 0,
9606
10564
  t: void 0
9607
10565
  });
9608
- return _el$60;
10566
+ return _el$59;
9609
10567
  }
9610
10568
  }), null);
9611
- _el$66.$$click = () => setBookmarkSaveExpanded((current) => !current);
9612
- insert(_el$65, createComponent(Show, {
10569
+ _el$65.$$click = () => setBookmarkSaveExpanded((current) => !current);
10570
+ insert(_el$64, createComponent(Show, {
9613
10571
  get when() {
9614
10572
  return bookmarkSaveExpanded();
9615
10573
  },
9616
10574
  get children() {
9617
- var _el$69 = _tmpl$1$3(), _el$70 = _el$69.firstChild, _el$71 = _el$70.nextSibling, _el$72 = _el$71.nextSibling, _el$73 = _el$72.firstChild, _el$74 = _el$72.nextSibling, _el$75 = _el$74.nextSibling, _el$76 = _el$75.nextSibling, _el$77 = _el$76.nextSibling, _el$78 = _el$77.nextSibling;
9618
- insert(_el$70, () => currentTab()?.title || "No active page");
9619
- insert(_el$71, () => currentTab()?.url || "Open a page to save it here.");
9620
- insert(_el$72, createComponent(DropdownSelect, {
10575
+ var _el$68 = _tmpl$10$3(), _el$69 = _el$68.firstChild, _el$70 = _el$69.nextSibling, _el$71 = _el$70.nextSibling, _el$72 = _el$71.firstChild, _el$73 = _el$71.nextSibling, _el$74 = _el$73.nextSibling, _el$75 = _el$74.nextSibling, _el$76 = _el$75.nextSibling, _el$77 = _el$76.nextSibling;
10576
+ insert(_el$69, () => currentTab()?.title || "No active page");
10577
+ insert(_el$70, () => currentTab()?.url || "Open a page to save it here.");
10578
+ insert(_el$71, createComponent(DropdownSelect, {
9621
10579
  "class": "bookmark-select",
9622
10580
  get value() {
9623
10581
  return selectedFolderId();
@@ -9627,37 +10585,37 @@ ${contextBlock}` : contextBlock);
9627
10585
  },
9628
10586
  ariaLabel: "Bookmark folder",
9629
10587
  onChange: (value) => setSelectedFolderId(value)
9630
- }), _el$73);
9631
- _el$73.$$click = () => void handleSaveBookmark();
9632
- _el$74.$$input = (e) => setBookmarkNote(e.currentTarget.value);
9633
- _el$75.$$input = (e) => setBookmarkIntent(e.currentTarget.value);
9634
- _el$76.$$input = (e) => setBookmarkExpectedContent(e.currentTarget.value);
9635
- _el$77.$$input = (e) => setBookmarkKeyFields(e.currentTarget.value);
9636
- _el$78.$$input = (e) => setBookmarkAgentHints(e.currentTarget.value);
9637
- createRenderEffect(() => _el$73.disabled = !currentTab()?.url);
9638
- createRenderEffect(() => _el$74.value = bookmarkNote());
9639
- createRenderEffect(() => _el$75.value = bookmarkIntent());
9640
- createRenderEffect(() => _el$76.value = bookmarkExpectedContent());
9641
- createRenderEffect(() => _el$77.value = bookmarkKeyFields());
9642
- createRenderEffect(() => _el$78.value = bookmarkAgentHints());
9643
- return _el$69;
10588
+ }), _el$72);
10589
+ _el$72.$$click = () => void handleSaveBookmark();
10590
+ _el$73.$$input = (e) => setBookmarkNote(e.currentTarget.value);
10591
+ _el$74.$$input = (e) => setBookmarkIntent(e.currentTarget.value);
10592
+ _el$75.$$input = (e) => setBookmarkExpectedContent(e.currentTarget.value);
10593
+ _el$76.$$input = (e) => setBookmarkKeyFields(e.currentTarget.value);
10594
+ _el$77.$$input = (e) => setBookmarkAgentHints(e.currentTarget.value);
10595
+ createRenderEffect(() => _el$72.disabled = !currentTab()?.url);
10596
+ createRenderEffect(() => _el$73.value = bookmarkNote());
10597
+ createRenderEffect(() => _el$74.value = bookmarkIntent());
10598
+ createRenderEffect(() => _el$75.value = bookmarkExpectedContent());
10599
+ createRenderEffect(() => _el$76.value = bookmarkKeyFields());
10600
+ createRenderEffect(() => _el$77.value = bookmarkAgentHints());
10601
+ return _el$68;
9644
10602
  }
9645
10603
  }), null);
9646
- _el$79.addEventListener("submit", handleCreateFolder);
9647
- _el$81.$$input = (e) => setNewFolderName(e.currentTarget.value);
9648
- _el$82.$$input = (e) => setNewFolderSummary(e.currentTarget.value);
9649
- insert(_el$84, createComponent(Show, {
10604
+ _el$78.addEventListener("submit", handleCreateFolder);
10605
+ _el$80.$$input = (e) => setNewFolderName(e.currentTarget.value);
10606
+ _el$81.$$input = (e) => setNewFolderSummary(e.currentTarget.value);
10607
+ insert(_el$83, createComponent(Show, {
9650
10608
  get when() {
9651
10609
  return filteredGroupedBookmarks().length > 0;
9652
10610
  },
9653
10611
  get fallback() {
9654
10612
  return (() => {
9655
- var _el$167 = _tmpl$38();
9656
- insert(_el$167, (() => {
10613
+ var _el$166 = _tmpl$39();
10614
+ insert(_el$166, (() => {
9657
10615
  var _c$5 = memo(() => !!normalizedBookmarkSearch());
9658
10616
  return () => _c$5() ? `No bookmarks matched "${bookmarkSearchQuery().trim()}".` : "No bookmarks saved yet.";
9659
10617
  })());
9660
- return _el$167;
10618
+ return _el$166;
9661
10619
  })();
9662
10620
  },
9663
10621
  get children() {
@@ -9666,105 +10624,105 @@ ${contextBlock}` : contextBlock);
9666
10624
  return filteredGroupedBookmarks();
9667
10625
  },
9668
10626
  children: (folder) => (() => {
9669
- var _el$168 = _tmpl$45(), _el$169 = _el$168.firstChild, _el$170 = _el$169.firstChild, _el$171 = _el$170.firstChild, _el$172 = _el$171.nextSibling, _el$173 = _el$172.firstChild, _el$174 = _el$173.nextSibling, _el$175 = _el$174.firstChild;
9670
- _el$169.$$keydown = (e) => {
10627
+ var _el$167 = _tmpl$46(), _el$168 = _el$167.firstChild, _el$169 = _el$168.firstChild, _el$170 = _el$169.firstChild, _el$171 = _el$170.nextSibling, _el$172 = _el$171.firstChild, _el$173 = _el$172.nextSibling, _el$174 = _el$173.firstChild;
10628
+ _el$168.$$keydown = (e) => {
9671
10629
  if (e.key === "Enter" || e.key === " ") {
9672
10630
  e.preventDefault();
9673
10631
  toggleFolderExpanded(folder.id);
9674
10632
  }
9675
10633
  };
9676
- _el$169.$$click = () => toggleFolderExpanded(folder.id);
9677
- insert(_el$173, () => folder.name);
9678
- insert(_el$174, () => folder.items.length, _el$175);
9679
- insert(_el$172, createComponent(Show, {
10634
+ _el$168.$$click = () => toggleFolderExpanded(folder.id);
10635
+ insert(_el$172, () => folder.name);
10636
+ insert(_el$173, () => folder.items.length, _el$174);
10637
+ insert(_el$171, createComponent(Show, {
9680
10638
  get when() {
9681
10639
  return folder.summary;
9682
10640
  },
9683
10641
  get children() {
9684
- var _el$176 = _tmpl$39();
9685
- insert(_el$176, () => folder.summary);
9686
- return _el$176;
10642
+ var _el$175 = _tmpl$40();
10643
+ insert(_el$175, () => folder.summary);
10644
+ return _el$175;
9687
10645
  }
9688
10646
  }), null);
9689
- insert(_el$169, createComponent(Show, {
10647
+ insert(_el$168, createComponent(Show, {
9690
10648
  get when() {
9691
10649
  return folder.id !== UNSORTED_FOLDER.id;
9692
10650
  },
9693
10651
  get children() {
9694
- var _el$177 = _tmpl$40(), _el$178 = _el$177.firstChild, _el$179 = _el$178.nextSibling, _el$180 = _el$179.nextSibling;
9695
- _el$178.$$click = (e) => {
10652
+ var _el$176 = _tmpl$41(), _el$177 = _el$176.firstChild, _el$178 = _el$177.nextSibling, _el$179 = _el$178.nextSibling;
10653
+ _el$177.$$click = (e) => {
9696
10654
  e.stopPropagation();
9697
10655
  setEditingFolderId(folder.id);
9698
10656
  setEditingFolderName(folder.name);
9699
10657
  setEditingFolderSummary(folder.summary || "");
9700
10658
  };
9701
- _el$179.$$click = (e) => {
10659
+ _el$178.$$click = (e) => {
9702
10660
  e.stopPropagation();
9703
10661
  void handleExportFolder(folder.id, folder.name);
9704
10662
  };
9705
- _el$180.$$click = (e) => {
10663
+ _el$179.$$click = (e) => {
9706
10664
  e.stopPropagation();
9707
10665
  setDeletingFolderId(folder.id);
9708
10666
  };
9709
- createRenderEffect(() => _el$179.disabled = bookmarkExporting());
9710
- return _el$177;
10667
+ createRenderEffect(() => _el$178.disabled = bookmarkExporting());
10668
+ return _el$176;
9711
10669
  }
9712
10670
  }), null);
9713
- insert(_el$168, createComponent(Show, {
10671
+ insert(_el$167, createComponent(Show, {
9714
10672
  get when() {
9715
10673
  return deletingFolderId() === folder.id;
9716
10674
  },
9717
10675
  get children() {
9718
- var _el$181 = _tmpl$42(), _el$182 = _el$181.firstChild, _el$183 = _el$182.firstChild, _el$185 = _el$183.nextSibling;
9719
- _el$185.nextSibling;
9720
- var _el$186 = _el$182.nextSibling, _el$188 = _el$186.firstChild, _el$189 = _el$188.nextSibling;
9721
- insert(_el$182, () => folder.name, _el$185);
9722
- insert(_el$182, (() => {
10676
+ var _el$180 = _tmpl$43(), _el$181 = _el$180.firstChild, _el$182 = _el$181.firstChild, _el$184 = _el$182.nextSibling;
10677
+ _el$184.nextSibling;
10678
+ var _el$185 = _el$181.nextSibling, _el$187 = _el$185.firstChild, _el$188 = _el$187.nextSibling;
10679
+ insert(_el$181, () => folder.name, _el$184);
10680
+ insert(_el$181, (() => {
9723
10681
  var _c$6 = memo(() => folder.items.length > 0);
9724
10682
  return () => _c$6() ? ` This folder has ${folder.items.length} bookmark${folder.items.length === 1 ? "" : "s"}.` : "";
9725
10683
  })(), null);
9726
- insert(_el$186, createComponent(Show, {
10684
+ insert(_el$185, createComponent(Show, {
9727
10685
  get when() {
9728
10686
  return folder.items.length > 0;
9729
10687
  },
9730
10688
  get children() {
9731
- var _el$187 = _tmpl$41();
9732
- _el$187.$$click = () => void handleRemoveFolder(folder.id, false);
9733
- return _el$187;
10689
+ var _el$186 = _tmpl$42();
10690
+ _el$186.$$click = () => void handleRemoveFolder(folder.id, false);
10691
+ return _el$186;
9734
10692
  }
9735
- }), _el$188);
9736
- _el$188.$$click = () => void handleRemoveFolder(folder.id, true);
9737
- insert(_el$188, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
9738
- _el$189.$$click = () => setDeletingFolderId(null);
9739
- return _el$181;
10693
+ }), _el$187);
10694
+ _el$187.$$click = () => void handleRemoveFolder(folder.id, true);
10695
+ insert(_el$187, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
10696
+ _el$188.$$click = () => setDeletingFolderId(null);
10697
+ return _el$180;
9740
10698
  }
9741
10699
  }), null);
9742
- insert(_el$168, createComponent(Show, {
10700
+ insert(_el$167, createComponent(Show, {
9743
10701
  get when() {
9744
10702
  return editingFolderId() === folder.id;
9745
10703
  },
9746
10704
  get children() {
9747
- var _el$190 = _tmpl$43(), _el$191 = _el$190.firstChild, _el$192 = _el$191.firstChild, _el$193 = _el$192.nextSibling, _el$194 = _el$191.nextSibling, _el$195 = _el$194.nextSibling;
9748
- _el$192.$$input = (e) => setEditingFolderName(e.currentTarget.value);
9749
- _el$193.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
9750
- _el$194.$$click = () => void handleRenameFolder(folder.id);
9751
- _el$195.$$click = () => {
10705
+ var _el$189 = _tmpl$44(), _el$190 = _el$189.firstChild, _el$191 = _el$190.firstChild, _el$192 = _el$191.nextSibling, _el$193 = _el$190.nextSibling, _el$194 = _el$193.nextSibling;
10706
+ _el$191.$$input = (e) => setEditingFolderName(e.currentTarget.value);
10707
+ _el$192.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
10708
+ _el$193.$$click = () => void handleRenameFolder(folder.id);
10709
+ _el$194.$$click = () => {
9752
10710
  setEditingFolderId(null);
9753
10711
  setEditingFolderName("");
9754
10712
  setEditingFolderSummary("");
9755
10713
  };
9756
- createRenderEffect(() => _el$194.disabled = !editingFolderName().trim());
9757
- createRenderEffect(() => _el$192.value = editingFolderName());
9758
- createRenderEffect(() => _el$193.value = editingFolderSummary());
9759
- return _el$190;
10714
+ createRenderEffect(() => _el$193.disabled = !editingFolderName().trim());
10715
+ createRenderEffect(() => _el$191.value = editingFolderName());
10716
+ createRenderEffect(() => _el$192.value = editingFolderSummary());
10717
+ return _el$189;
9760
10718
  }
9761
10719
  }), null);
9762
- insert(_el$168, createComponent(Show, {
10720
+ insert(_el$167, createComponent(Show, {
9763
10721
  get when() {
9764
10722
  return isFolderExpanded(folder.id);
9765
10723
  },
9766
10724
  get fallback() {
9767
- return _tmpl$46();
10725
+ return _tmpl$47();
9768
10726
  },
9769
10727
  get children() {
9770
10728
  return createComponent(Show, {
@@ -9772,137 +10730,137 @@ ${contextBlock}` : contextBlock);
9772
10730
  return folder.items.length > 0;
9773
10731
  },
9774
10732
  get fallback() {
9775
- return _tmpl$47();
10733
+ return _tmpl$48();
9776
10734
  },
9777
10735
  get children() {
9778
- var _el$196 = _tmpl$44();
9779
- insert(_el$196, createComponent(For, {
10736
+ var _el$195 = _tmpl$45();
10737
+ insert(_el$195, createComponent(For, {
9780
10738
  get each() {
9781
10739
  return folder.items;
9782
10740
  },
9783
10741
  children: (bookmark) => (() => {
9784
- var _el$199 = _tmpl$54(), _el$200 = _el$199.firstChild, _el$201 = _el$200.firstChild, _el$202 = _el$201.nextSibling, _el$227 = _el$200.nextSibling, _el$228 = _el$227.firstChild, _el$229 = _el$228.nextSibling, _el$230 = _el$229.nextSibling;
9785
- _el$200.$$click = () => void createTab(bookmark.url);
9786
- insert(_el$201, () => bookmark.title || bookmark.url);
9787
- insert(_el$202, () => bookmark.url);
9788
- insert(_el$199, createComponent(Show, {
10742
+ var _el$198 = _tmpl$55(), _el$199 = _el$198.firstChild, _el$200 = _el$199.firstChild, _el$201 = _el$200.nextSibling, _el$226 = _el$199.nextSibling, _el$227 = _el$226.firstChild, _el$228 = _el$227.nextSibling, _el$229 = _el$228.nextSibling;
10743
+ _el$199.$$click = () => void createTab(bookmark.url);
10744
+ insert(_el$200, () => bookmark.title || bookmark.url);
10745
+ insert(_el$201, () => bookmark.url);
10746
+ insert(_el$198, createComponent(Show, {
9789
10747
  get when() {
9790
10748
  return bookmark.note;
9791
10749
  },
9792
10750
  get children() {
9793
- var _el$203 = _tmpl$48();
9794
- insert(_el$203, () => bookmark.note);
9795
- return _el$203;
10751
+ var _el$202 = _tmpl$49();
10752
+ insert(_el$202, () => bookmark.note);
10753
+ return _el$202;
9796
10754
  }
9797
- }), _el$227);
9798
- insert(_el$199, createComponent(Show, {
10755
+ }), _el$226);
10756
+ insert(_el$198, createComponent(Show, {
9799
10757
  get when() {
9800
10758
  return bookmark.intent || bookmark.expectedContent || (bookmark.keyFields?.length || 0) > 0 || (bookmark.agentHints && Object.keys(bookmark.agentHints).length || 0) > 0;
9801
10759
  },
9802
10760
  get children() {
9803
- var _el$204 = _tmpl$48();
9804
- insert(_el$204, createComponent(Show, {
10761
+ var _el$203 = _tmpl$49();
10762
+ insert(_el$203, createComponent(Show, {
9805
10763
  get when() {
9806
10764
  return bookmark.intent;
9807
10765
  },
9808
10766
  get children() {
9809
- var _el$205 = _tmpl$49(), _el$206 = _el$205.firstChild;
9810
- _el$206.nextSibling;
9811
- insert(_el$205, () => bookmark.intent, null);
9812
- return _el$205;
10767
+ var _el$204 = _tmpl$50(), _el$205 = _el$204.firstChild;
10768
+ _el$205.nextSibling;
10769
+ insert(_el$204, () => bookmark.intent, null);
10770
+ return _el$204;
9813
10771
  }
9814
10772
  }), null);
9815
- insert(_el$204, createComponent(Show, {
10773
+ insert(_el$203, createComponent(Show, {
9816
10774
  get when() {
9817
10775
  return bookmark.expectedContent;
9818
10776
  },
9819
10777
  get children() {
9820
- var _el$208 = _tmpl$50(), _el$209 = _el$208.firstChild;
9821
- _el$209.nextSibling;
9822
- insert(_el$208, () => bookmark.expectedContent, null);
9823
- return _el$208;
10778
+ var _el$207 = _tmpl$51(), _el$208 = _el$207.firstChild;
10779
+ _el$208.nextSibling;
10780
+ insert(_el$207, () => bookmark.expectedContent, null);
10781
+ return _el$207;
9824
10782
  }
9825
10783
  }), null);
9826
- insert(_el$204, createComponent(Show, {
10784
+ insert(_el$203, createComponent(Show, {
9827
10785
  get when() {
9828
10786
  return (bookmark.keyFields?.length || 0) > 0;
9829
10787
  },
9830
10788
  get children() {
9831
- var _el$211 = _tmpl$51(), _el$212 = _el$211.firstChild;
9832
- _el$212.nextSibling;
9833
- insert(_el$211, () => bookmark.keyFields?.join(", "), null);
9834
- return _el$211;
10789
+ var _el$210 = _tmpl$52(), _el$211 = _el$210.firstChild;
10790
+ _el$211.nextSibling;
10791
+ insert(_el$210, () => bookmark.keyFields?.join(", "), null);
10792
+ return _el$210;
9835
10793
  }
9836
10794
  }), null);
9837
- insert(_el$204, createComponent(Show, {
10795
+ insert(_el$203, createComponent(Show, {
9838
10796
  get when() {
9839
10797
  return memo(() => !!bookmark.agentHints)() && Object.keys(bookmark.agentHints).length > 0;
9840
10798
  },
9841
10799
  get children() {
9842
- var _el$214 = _tmpl$52(), _el$215 = _el$214.firstChild;
9843
- _el$215.nextSibling;
9844
- insert(_el$214, () => Object.entries(bookmark.agentHints || {}).map(([key, hint]) => `${key}: ${hint}`).join(" • "), null);
9845
- return _el$214;
10800
+ var _el$213 = _tmpl$53(), _el$214 = _el$213.firstChild;
10801
+ _el$214.nextSibling;
10802
+ insert(_el$213, () => Object.entries(bookmark.agentHints || {}).map(([key, hint]) => `${key}: ${hint}`).join(" • "), null);
10803
+ return _el$213;
9846
10804
  }
9847
10805
  }), null);
9848
- return _el$204;
10806
+ return _el$203;
9849
10807
  }
9850
- }), _el$227);
9851
- insert(_el$199, createComponent(Show, {
10808
+ }), _el$226);
10809
+ insert(_el$198, createComponent(Show, {
9852
10810
  get when() {
9853
10811
  return editingBookmarkId() === bookmark.id;
9854
10812
  },
9855
10813
  get children() {
9856
- var _el$217 = _tmpl$53(), _el$218 = _el$217.firstChild, _el$219 = _el$218.nextSibling, _el$220 = _el$219.nextSibling, _el$221 = _el$220.nextSibling, _el$222 = _el$221.nextSibling, _el$223 = _el$222.nextSibling, _el$224 = _el$223.nextSibling, _el$225 = _el$224.firstChild, _el$226 = _el$225.nextSibling;
9857
- _el$218.$$input = (e) => setEditingBookmarkTitle(e.currentTarget.value);
9858
- _el$219.$$input = (e) => setEditingBookmarkNote(e.currentTarget.value);
9859
- _el$220.$$input = (e) => setEditingBookmarkIntent(e.currentTarget.value);
9860
- _el$221.$$input = (e) => setEditingBookmarkExpectedContent(e.currentTarget.value);
9861
- _el$222.$$input = (e) => setEditingBookmarkKeyFields(e.currentTarget.value);
9862
- _el$223.$$input = (e) => setEditingBookmarkAgentHints(e.currentTarget.value);
9863
- _el$225.$$click = () => void handleUpdateBookmark(bookmark.id);
9864
- _el$226.$$click = resetBookmarkEditor;
9865
- createRenderEffect(() => _el$218.value = editingBookmarkTitle());
9866
- createRenderEffect(() => _el$219.value = editingBookmarkNote());
9867
- createRenderEffect(() => _el$220.value = editingBookmarkIntent());
9868
- createRenderEffect(() => _el$221.value = editingBookmarkExpectedContent());
9869
- createRenderEffect(() => _el$222.value = editingBookmarkKeyFields());
9870
- createRenderEffect(() => _el$223.value = editingBookmarkAgentHints());
9871
- return _el$217;
10814
+ var _el$216 = _tmpl$54(), _el$217 = _el$216.firstChild, _el$218 = _el$217.nextSibling, _el$219 = _el$218.nextSibling, _el$220 = _el$219.nextSibling, _el$221 = _el$220.nextSibling, _el$222 = _el$221.nextSibling, _el$223 = _el$222.nextSibling, _el$224 = _el$223.firstChild, _el$225 = _el$224.nextSibling;
10815
+ _el$217.$$input = (e) => setEditingBookmarkTitle(e.currentTarget.value);
10816
+ _el$218.$$input = (e) => setEditingBookmarkNote(e.currentTarget.value);
10817
+ _el$219.$$input = (e) => setEditingBookmarkIntent(e.currentTarget.value);
10818
+ _el$220.$$input = (e) => setEditingBookmarkExpectedContent(e.currentTarget.value);
10819
+ _el$221.$$input = (e) => setEditingBookmarkKeyFields(e.currentTarget.value);
10820
+ _el$222.$$input = (e) => setEditingBookmarkAgentHints(e.currentTarget.value);
10821
+ _el$224.$$click = () => void handleUpdateBookmark(bookmark.id);
10822
+ _el$225.$$click = resetBookmarkEditor;
10823
+ createRenderEffect(() => _el$217.value = editingBookmarkTitle());
10824
+ createRenderEffect(() => _el$218.value = editingBookmarkNote());
10825
+ createRenderEffect(() => _el$219.value = editingBookmarkIntent());
10826
+ createRenderEffect(() => _el$220.value = editingBookmarkExpectedContent());
10827
+ createRenderEffect(() => _el$221.value = editingBookmarkKeyFields());
10828
+ createRenderEffect(() => _el$222.value = editingBookmarkAgentHints());
10829
+ return _el$216;
9872
10830
  }
9873
- }), _el$227);
9874
- insert(_el$228, () => formatBookmarkDate(bookmark.savedAt));
9875
- _el$229.$$click = () => editingBookmarkId() === bookmark.id ? resetBookmarkEditor() : startEditingBookmark(bookmark);
9876
- insert(_el$229, () => editingBookmarkId() === bookmark.id ? "Close" : "Edit");
9877
- _el$230.$$click = () => {
10831
+ }), _el$226);
10832
+ insert(_el$227, () => formatBookmarkDate(bookmark.savedAt));
10833
+ _el$228.$$click = () => editingBookmarkId() === bookmark.id ? resetBookmarkEditor() : startEditingBookmark(bookmark);
10834
+ insert(_el$228, () => editingBookmarkId() === bookmark.id ? "Close" : "Edit");
10835
+ _el$229.$$click = () => {
9878
10836
  if (editingBookmarkId() === bookmark.id) {
9879
10837
  resetBookmarkEditor();
9880
10838
  }
9881
10839
  void removeBookmark(bookmark.id);
9882
10840
  };
9883
- createRenderEffect(() => setAttribute(_el$199, "data-bookmark-id", bookmark.id));
9884
- return _el$199;
10841
+ createRenderEffect(() => setAttribute(_el$198, "data-bookmark-id", bookmark.id));
10842
+ return _el$198;
9885
10843
  })()
9886
10844
  }));
9887
- return _el$196;
10845
+ return _el$195;
9888
10846
  }
9889
10847
  });
9890
10848
  }
9891
10849
  }), null);
9892
- createRenderEffect(() => _el$171.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
9893
- return _el$168;
10850
+ createRenderEffect(() => _el$170.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
10851
+ return _el$167;
9894
10852
  })()
9895
10853
  });
9896
10854
  }
9897
10855
  }));
9898
10856
  createRenderEffect((_p$) => {
9899
10857
  var _v$3 = bookmarkExporting(), _v$4 = bookmarkExporting(), _v$5 = bookmarkExporting(), _v$6 = !!bookmarkImportExpanded(), _v$7 = !!bookmarkSaveExpanded(), _v$8 = !newFolderName().trim();
9900
- _v$3 !== _p$.e && (_el$52.disabled = _p$.e = _v$3);
9901
- _v$4 !== _p$.t && (_el$53.disabled = _p$.t = _v$4);
9902
- _v$5 !== _p$.a && (_el$54.disabled = _p$.a = _v$5);
9903
- _v$6 !== _p$.o && _el$59.classList.toggle("expanded", _p$.o = _v$6);
9904
- _v$7 !== _p$.i && _el$68.classList.toggle("expanded", _p$.i = _v$7);
9905
- _v$8 !== _p$.n && (_el$83.disabled = _p$.n = _v$8);
10858
+ _v$3 !== _p$.e && (_el$51.disabled = _p$.e = _v$3);
10859
+ _v$4 !== _p$.t && (_el$52.disabled = _p$.t = _v$4);
10860
+ _v$5 !== _p$.a && (_el$53.disabled = _p$.a = _v$5);
10861
+ _v$6 !== _p$.o && _el$58.classList.toggle("expanded", _p$.o = _v$6);
10862
+ _v$7 !== _p$.i && _el$67.classList.toggle("expanded", _p$.i = _v$7);
10863
+ _v$8 !== _p$.n && (_el$82.disabled = _p$.n = _v$8);
9906
10864
  return _p$;
9907
10865
  }, {
9908
10866
  e: void 0,
@@ -9912,72 +10870,72 @@ ${contextBlock}` : contextBlock);
9912
10870
  i: void 0,
9913
10871
  n: void 0
9914
10872
  });
9915
- createRenderEffect(() => _el$48.value = bookmarkSearchQuery());
9916
- createRenderEffect(() => _el$81.value = newFolderName());
9917
- createRenderEffect(() => _el$82.value = newFolderSummary());
9918
- return _el$42;
10873
+ createRenderEffect(() => _el$47.value = bookmarkSearchQuery());
10874
+ createRenderEffect(() => _el$80.value = newFolderName());
10875
+ createRenderEffect(() => _el$81.value = newFolderSummary());
10876
+ return _el$41;
9919
10877
  }
9920
- }), _el$132);
9921
- insert(_el$26, createComponent(Show, {
10878
+ }), _el$131);
10879
+ insert(_el$25, createComponent(Show, {
9922
10880
  get when() {
9923
10881
  return sidebarTab() === "checkpoints";
9924
10882
  },
9925
10883
  get children() {
9926
- var _el$85 = _tmpl$12$3(), _el$86 = _el$85.firstChild, _el$87 = _el$86.firstChild, _el$88 = _el$87.firstChild, _el$89 = _el$88.nextSibling, _el$90 = _el$86.nextSibling, _el$91 = _el$90.firstChild, _el$92 = _el$91.firstChild, _el$93 = _el$92.nextSibling, _el$94 = _el$93.nextSibling;
9927
- _el$91.nextSibling;
9928
- insert(_el$89, (() => {
10884
+ var _el$84 = _tmpl$13$2(), _el$85 = _el$84.firstChild, _el$86 = _el$85.firstChild, _el$87 = _el$86.firstChild, _el$88 = _el$87.nextSibling, _el$89 = _el$85.nextSibling, _el$90 = _el$89.firstChild, _el$91 = _el$90.firstChild, _el$92 = _el$91.nextSibling, _el$93 = _el$92.nextSibling;
10885
+ _el$90.nextSibling;
10886
+ insert(_el$88, (() => {
9929
10887
  var _c$3 = memo(() => recentCheckpoints().length > 0);
9930
10888
  return () => _c$3() ? `${recentCheckpoints().length} saved snapshots` : "Save and restore session snapshots";
9931
10889
  })());
9932
- _el$92.$$input = (e) => setCheckpointName(e.currentTarget.value);
9933
- _el$93.$$input = (e) => setCheckpointNote(e.currentTarget.value);
9934
- _el$94.$$click = async () => {
10890
+ _el$91.$$input = (e) => setCheckpointName(e.currentTarget.value);
10891
+ _el$92.$$input = (e) => setCheckpointNote(e.currentTarget.value);
10892
+ _el$93.$$click = async () => {
9935
10893
  const name = checkpointName().trim();
9936
10894
  await createCheckpoint(name || void 0, checkpointNote() || void 0);
9937
10895
  setCheckpointName("");
9938
10896
  setCheckpointNote("");
9939
10897
  };
9940
- insert(_el$90, createComponent(Show, {
10898
+ insert(_el$89, createComponent(Show, {
9941
10899
  get when() {
9942
10900
  return recentCheckpoints().length > 0;
9943
10901
  },
9944
10902
  get fallback() {
9945
- return _tmpl$55();
10903
+ return _tmpl$56();
9946
10904
  },
9947
10905
  get children() {
9948
- var _el$96 = _tmpl$11$3();
9949
- insert(_el$96, createComponent(For, {
10906
+ var _el$95 = _tmpl$12$3();
10907
+ insert(_el$95, createComponent(For, {
9950
10908
  get each() {
9951
10909
  return recentCheckpoints();
9952
10910
  },
9953
10911
  children: (checkpoint, i) => (() => {
9954
- var _el$232 = _tmpl$57(), _el$233 = _el$232.firstChild, _el$234 = _el$233.firstChild, _el$236 = _el$233.nextSibling, _el$237 = _el$236.firstChild, _el$238 = _el$237.nextSibling, _el$239 = _el$238.nextSibling, _el$240 = _el$239.nextSibling;
9955
- insert(_el$233, createComponent(Show, {
10912
+ var _el$231 = _tmpl$58(), _el$232 = _el$231.firstChild, _el$233 = _el$232.firstChild, _el$235 = _el$232.nextSibling, _el$236 = _el$235.firstChild, _el$237 = _el$236.nextSibling, _el$238 = _el$237.nextSibling, _el$239 = _el$238.nextSibling;
10913
+ insert(_el$232, createComponent(Show, {
9956
10914
  get when() {
9957
10915
  return i() < recentCheckpoints().length - 1;
9958
10916
  },
9959
10917
  get children() {
9960
- return _tmpl$56();
10918
+ return _tmpl$57();
9961
10919
  }
9962
10920
  }), null);
9963
- insert(_el$237, () => checkpoint.name);
9964
- insert(_el$238, () => new Date(checkpoint.createdAt).toLocaleString());
9965
- _el$239.addEventListener("blur", (e) => void updateCheckpointNote(checkpoint.id, e.currentTarget.value));
9966
- _el$240.$$click = () => void restoreCheckpoint(checkpoint.id);
9967
- createRenderEffect(() => _el$234.classList.toggle("latest", !!(i() === 0)));
9968
- createRenderEffect(() => _el$239.value = checkpoint.note || "");
9969
- return _el$232;
10921
+ insert(_el$236, () => checkpoint.name);
10922
+ insert(_el$237, () => new Date(checkpoint.createdAt).toLocaleString());
10923
+ _el$238.addEventListener("blur", (e) => void updateCheckpointNote(checkpoint.id, e.currentTarget.value));
10924
+ _el$239.$$click = () => void restoreCheckpoint(checkpoint.id);
10925
+ createRenderEffect(() => _el$233.classList.toggle("latest", !!(i() === 0)));
10926
+ createRenderEffect(() => _el$238.value = checkpoint.note || "");
10927
+ return _el$231;
9970
10928
  })()
9971
10929
  }));
9972
- return _el$96;
10930
+ return _el$95;
9973
10931
  }
9974
10932
  }), null);
9975
- createRenderEffect(() => _el$92.value = checkpointName());
9976
- createRenderEffect(() => _el$93.value = checkpointNote());
9977
- return _el$85;
10933
+ createRenderEffect(() => _el$91.value = checkpointName());
10934
+ createRenderEffect(() => _el$92.value = checkpointNote());
10935
+ return _el$84;
9978
10936
  }
9979
- }), _el$132);
9980
- insert(_el$26, createComponent(Show, {
10937
+ }), _el$131);
10938
+ insert(_el$25, createComponent(Show, {
9981
10939
  get when() {
9982
10940
  return sidebarTab() === "automation";
9983
10941
  },
@@ -9986,101 +10944,101 @@ ${contextBlock}` : contextBlock);
9986
10944
  onRun: () => setSidebarTab("supervisor")
9987
10945
  });
9988
10946
  }
9989
- }), _el$132);
9990
- insert(_el$26, createComponent(Show, {
10947
+ }), _el$131);
10948
+ insert(_el$25, createComponent(Show, {
9991
10949
  get when() {
9992
10950
  return sidebarTab() === "research";
9993
10951
  },
9994
10952
  get children() {
9995
10953
  return createComponent(ResearchDesk, {});
9996
10954
  }
9997
- }), _el$132);
9998
- insert(_el$26, createComponent(Show, {
10955
+ }), _el$131);
10956
+ insert(_el$25, createComponent(Show, {
9999
10957
  get when() {
10000
10958
  return sidebarTab() === "history";
10001
10959
  },
10002
10960
  get children() {
10003
- var _el$97 = _tmpl$15$2(), _el$98 = _el$97.firstChild, _el$99 = _el$98.firstChild, _el$100 = _el$99.nextSibling, _el$101 = _el$100.firstChild, _el$102 = _el$101.nextSibling, _el$103 = _el$102.nextSibling, _el$104 = _el$103.nextSibling, _el$105 = _el$98.nextSibling;
10004
- _el$101.$$click = async () => {
10961
+ var _el$96 = _tmpl$16$1(), _el$97 = _el$96.firstChild, _el$98 = _el$97.firstChild, _el$99 = _el$98.nextSibling, _el$100 = _el$99.firstChild, _el$101 = _el$100.nextSibling, _el$102 = _el$101.nextSibling, _el$103 = _el$102.nextSibling, _el$104 = _el$97.nextSibling;
10962
+ _el$100.$$click = async () => {
10005
10963
  await history.clear();
10006
10964
  };
10007
- _el$102.$$click = async () => {
10965
+ _el$101.$$click = async () => {
10008
10966
  const result = await window.vessel.history.exportHtml();
10009
10967
  if (!result) return;
10010
10968
  };
10011
- _el$103.$$click = async () => {
10969
+ _el$102.$$click = async () => {
10012
10970
  const result = await window.vessel.history.exportJson();
10013
10971
  if (!result) return;
10014
10972
  };
10015
- _el$104.$$click = async () => {
10973
+ _el$103.$$click = async () => {
10016
10974
  const result = await window.vessel.history.importFile();
10017
10975
  if (!result) return;
10018
10976
  };
10019
- insert(_el$105, createComponent(For, {
10977
+ insert(_el$104, createComponent(For, {
10020
10978
  get each() {
10021
10979
  return history.historyState().entries;
10022
10980
  },
10023
10981
  children: (entry) => (() => {
10024
- var _el$241 = _tmpl$58(), _el$242 = _el$241.firstChild, _el$243 = _el$242.nextSibling, _el$244 = _el$243.nextSibling;
10025
- _el$241.$$click = () => createTab(entry.url);
10026
- insert(_el$242, () => entry.title || entry.url);
10027
- insert(_el$243, () => entry.url);
10028
- insert(_el$244, () => new Date(entry.visitedAt).toLocaleString());
10029
- return _el$241;
10982
+ var _el$240 = _tmpl$59(), _el$241 = _el$240.firstChild, _el$242 = _el$241.nextSibling, _el$243 = _el$242.nextSibling;
10983
+ _el$240.$$click = () => createTab(entry.url);
10984
+ insert(_el$241, () => entry.title || entry.url);
10985
+ insert(_el$242, () => entry.url);
10986
+ insert(_el$243, () => new Date(entry.visitedAt).toLocaleString());
10987
+ return _el$240;
10030
10988
  })()
10031
10989
  }), null);
10032
- insert(_el$105, createComponent(Show, {
10990
+ insert(_el$104, createComponent(Show, {
10033
10991
  get when() {
10034
10992
  return history.hasMore();
10035
10993
  },
10036
10994
  get children() {
10037
- var _el$106 = _tmpl$13$2(), _el$107 = _el$106.firstChild, _el$108 = _el$107.nextSibling, _el$109 = _el$108.firstChild, _el$112 = _el$109.nextSibling;
10038
- _el$112.nextSibling;
10039
- _el$106.$$click = () => void history.loadMore();
10040
- insert(_el$108, () => history.historyState().entries.length, _el$112);
10041
- insert(_el$108, () => history.historyTotal(), null);
10042
- return _el$106;
10995
+ var _el$105 = _tmpl$14$2(), _el$106 = _el$105.firstChild, _el$107 = _el$106.nextSibling, _el$108 = _el$107.firstChild, _el$111 = _el$108.nextSibling;
10996
+ _el$111.nextSibling;
10997
+ _el$105.$$click = () => void history.loadMore();
10998
+ insert(_el$107, () => history.historyState().entries.length, _el$111);
10999
+ insert(_el$107, () => history.historyTotal(), null);
11000
+ return _el$105;
10043
11001
  }
10044
11002
  }), null);
10045
- insert(_el$105, createComponent(Show, {
11003
+ insert(_el$104, createComponent(Show, {
10046
11004
  get when() {
10047
11005
  return history.historyState().entries.length === 0;
10048
11006
  },
10049
11007
  get children() {
10050
- return _tmpl$14$2();
11008
+ return _tmpl$15$2();
10051
11009
  }
10052
11010
  }), null);
10053
- return _el$97;
11011
+ return _el$96;
10054
11012
  }
10055
- }), _el$132);
10056
- insert(_el$26, createComponent(Show, {
11013
+ }), _el$131);
11014
+ insert(_el$25, createComponent(Show, {
10057
11015
  get when() {
10058
11016
  return sidebarTab() === "diff";
10059
11017
  },
10060
11018
  get children() {
10061
- var _el$114 = _tmpl$16$1(), _el$115 = _el$114.firstChild, _el$116 = _el$115.firstChild, _el$117 = _el$116.nextSibling;
10062
- insert(_el$117, () => isPremium() ? "Page change timeline" : "Premium feature");
10063
- insert(_el$114, createComponent(Show, {
11019
+ var _el$113 = _tmpl$17$1(), _el$114 = _el$113.firstChild, _el$115 = _el$114.firstChild, _el$116 = _el$115.nextSibling;
11020
+ insert(_el$116, () => isPremium() ? "Page change timeline" : "Premium feature");
11021
+ insert(_el$113, createComponent(Show, {
10064
11022
  get when() {
10065
11023
  return isPremium();
10066
11024
  },
10067
11025
  get fallback() {
10068
11026
  return (() => {
10069
- var _el$245 = _tmpl$59(), _el$246 = _el$245.firstChild, _el$247 = _el$246.nextSibling, _el$248 = _el$247.nextSibling, _el$249 = _el$248.firstChild, _el$250 = _el$249.nextSibling;
10070
- _el$249.$$click = () => void window.vessel.premium.checkout(premiumState().email || void 0).catch(() => {
11027
+ var _el$244 = _tmpl$60(), _el$245 = _el$244.firstChild, _el$246 = _el$245.nextSibling, _el$247 = _el$246.nextSibling, _el$248 = _el$247.firstChild, _el$249 = _el$248.nextSibling;
11028
+ _el$248.$$click = () => void window.vessel.premium.checkout(premiumState().email || void 0).catch(() => {
10071
11029
  });
10072
- _el$250.$$click = openPremiumDetails;
10073
- return _el$245;
11030
+ _el$249.$$click = openPremiumDetails;
11031
+ return _el$244;
10074
11032
  })();
10075
11033
  },
10076
11034
  get children() {
10077
11035
  return createComponent(PageDiffTimeline, {});
10078
11036
  }
10079
11037
  }), null);
10080
- return _el$114;
11038
+ return _el$113;
10081
11039
  }
10082
- }), _el$132);
10083
- insert(_el$26, createComponent(Show, {
11040
+ }), _el$131);
11041
+ insert(_el$25, createComponent(Show, {
10084
11042
  get when() {
10085
11043
  return sidebarTab() === "chat";
10086
11044
  },
@@ -10090,23 +11048,23 @@ ${contextBlock}` : contextBlock);
10090
11048
  return !isPremium();
10091
11049
  },
10092
11050
  get children() {
10093
- var _el$118 = _tmpl$17$1(), _el$119 = _el$118.firstChild, _el$120 = _el$119.nextSibling, _el$121 = _el$120.nextSibling, _el$122 = _el$121.firstChild, _el$123 = _el$122.nextSibling;
10094
- _el$122.$$click = () => openPremiumCheckout("chat_banner_clicked");
10095
- _el$123.$$click = openPremiumDetails;
10096
- return _el$118;
11051
+ var _el$117 = _tmpl$18$1(), _el$118 = _el$117.firstChild, _el$119 = _el$118.nextSibling, _el$120 = _el$119.nextSibling, _el$121 = _el$120.firstChild, _el$122 = _el$121.nextSibling;
11052
+ _el$121.$$click = () => openPremiumCheckout("chat_banner_clicked");
11053
+ _el$122.$$click = openPremiumDetails;
11054
+ return _el$117;
10097
11055
  }
10098
11056
  }), createComponent(For, {
10099
11057
  get each() {
10100
11058
  return messages2();
10101
11059
  },
10102
11060
  children: (msg) => (() => {
10103
- var _el$251 = _tmpl$60();
10104
- insert(_el$251, createComponent(MarkdownMessage, {
11061
+ var _el$250 = _tmpl$61();
11062
+ insert(_el$250, createComponent(MarkdownMessage, {
10105
11063
  get content() {
10106
11064
  return msg.content;
10107
11065
  }
10108
11066
  }), null);
10109
- insert(_el$251, createComponent(Show, {
11067
+ insert(_el$250, createComponent(Show, {
10110
11068
  get when() {
10111
11069
  return memo(() => msg.role === "assistant")() ? getPremiumPromptKind(msg.content) : null;
10112
11070
  },
@@ -10119,31 +11077,31 @@ ${contextBlock}` : contextBlock);
10119
11077
  onOpenSettings: openPremiumDetails
10120
11078
  })
10121
11079
  }), null);
10122
- createRenderEffect(() => className(_el$251, `message message-${msg.role}`));
10123
- return _el$251;
11080
+ createRenderEffect(() => className(_el$250, `message message-${msg.role}`));
11081
+ return _el$250;
10124
11082
  })()
10125
11083
  }), createComponent(Show, {
10126
11084
  get when() {
10127
11085
  return isStreaming2();
10128
11086
  },
10129
11087
  get children() {
10130
- var _el$124 = _tmpl$20$1(), _el$125 = _el$124.firstChild;
10131
- insert(_el$125, createComponent(Show, {
11088
+ var _el$123 = _tmpl$21$1(), _el$124 = _el$123.firstChild;
11089
+ insert(_el$124, createComponent(Show, {
10132
11090
  get when() {
10133
11091
  return hasFirstChunk2();
10134
11092
  },
10135
11093
  get fallback() {
10136
- return _tmpl$61();
11094
+ return _tmpl$62();
10137
11095
  },
10138
11096
  get children() {
10139
- var _el$126 = _tmpl$19$1(), _el$127 = _el$126.firstChild, _el$128 = _el$127.firstChild;
10140
- _el$128.nextSibling;
10141
- insert(_el$126, createComponent(MarkdownMessage, {
11097
+ var _el$125 = _tmpl$20$1(), _el$126 = _el$125.firstChild, _el$127 = _el$126.firstChild;
11098
+ _el$127.nextSibling;
11099
+ insert(_el$125, createComponent(MarkdownMessage, {
10142
11100
  get content() {
10143
11101
  return streamingText2();
10144
11102
  }
10145
- }), _el$127);
10146
- insert(_el$126, createComponent(Show, {
11103
+ }), _el$126);
11104
+ insert(_el$125, createComponent(Show, {
10147
11105
  get when() {
10148
11106
  return getPremiumPromptKind(streamingText2());
10149
11107
  },
@@ -10155,21 +11113,21 @@ ${contextBlock}` : contextBlock);
10155
11113
  onStartTrial: () => openPremiumCheckout(kind() === "premium_gate" ? "premium_gate_clicked" : "iteration_limit_clicked"),
10156
11114
  onOpenSettings: openPremiumDetails
10157
11115
  })
10158
- }), _el$127);
10159
- insert(_el$127, createComponent(Show, {
11116
+ }), _el$126);
11117
+ insert(_el$126, createComponent(Show, {
10160
11118
  get when() {
10161
11119
  return elapsedSeconds() > 0;
10162
11120
  },
10163
11121
  get children() {
10164
- var _el$130 = _tmpl$18$1();
10165
- insert(_el$130, () => ` • ${elapsedSeconds()}s`);
10166
- return _el$130;
11122
+ var _el$129 = _tmpl$19$1();
11123
+ insert(_el$129, () => ` • ${elapsedSeconds()}s`);
11124
+ return _el$129;
10167
11125
  }
10168
11126
  }), null);
10169
- return _el$126;
11127
+ return _el$125;
10170
11128
  }
10171
11129
  }));
10172
- return _el$124;
11130
+ return _el$123;
10173
11131
  }
10174
11132
  }), createComponent(Show, {
10175
11133
  get when() {
@@ -10181,22 +11139,22 @@ ${contextBlock}` : contextBlock);
10181
11139
  return runtimeState2().supervisor.pendingApprovals;
10182
11140
  },
10183
11141
  children: (approval) => (() => {
10184
- var _el$253 = _tmpl$63(), _el$254 = _el$253.firstChild, _el$255 = _el$254.nextSibling, _el$256 = _el$255.firstChild, _el$257 = _el$256.firstChild, _el$258 = _el$257.nextSibling, _el$260 = _el$256.nextSibling, _el$261 = _el$260.nextSibling, _el$262 = _el$261.firstChild, _el$263 = _el$262.nextSibling;
10185
- insert(_el$258, () => approval.name);
10186
- insert(_el$255, createComponent(Show, {
11142
+ var _el$252 = _tmpl$64(), _el$253 = _el$252.firstChild, _el$254 = _el$253.nextSibling, _el$255 = _el$254.firstChild, _el$256 = _el$255.firstChild, _el$257 = _el$256.nextSibling, _el$259 = _el$255.nextSibling, _el$260 = _el$259.nextSibling, _el$261 = _el$260.firstChild, _el$262 = _el$261.nextSibling;
11143
+ insert(_el$257, () => approval.name);
11144
+ insert(_el$254, createComponent(Show, {
10187
11145
  get when() {
10188
11146
  return approval.argsSummary;
10189
11147
  },
10190
11148
  get children() {
10191
- var _el$259 = _tmpl$62();
10192
- insert(_el$259, () => approval.argsSummary);
10193
- return _el$259;
11149
+ var _el$258 = _tmpl$63();
11150
+ insert(_el$258, () => approval.argsSummary);
11151
+ return _el$258;
10194
11152
  }
10195
- }), _el$260);
10196
- insert(_el$260, () => approval.reason);
10197
- _el$262.$$click = () => void resolveApproval(approval.id, true);
10198
- _el$263.$$click = () => void resolveApproval(approval.id, false);
10199
- return _el$253;
11153
+ }), _el$259);
11154
+ insert(_el$259, () => approval.reason);
11155
+ _el$261.$$click = () => void resolveApproval(approval.id, true);
11156
+ _el$262.$$click = () => void resolveApproval(approval.id, false);
11157
+ return _el$252;
10200
11158
  })()
10201
11159
  });
10202
11160
  }
@@ -10205,13 +11163,13 @@ ${contextBlock}` : contextBlock);
10205
11163
  return memo(() => messages2().length === 0)() && !isStreaming2();
10206
11164
  },
10207
11165
  get children() {
10208
- return _tmpl$21$1();
11166
+ return _tmpl$22$1();
10209
11167
  }
10210
11168
  })];
10211
11169
  }
10212
- }), _el$132);
11170
+ }), _el$131);
10213
11171
  var _ref$ = messagesEndRef;
10214
- typeof _ref$ === "function" ? use(_ref$, _el$132) : messagesEndRef = _el$132;
11172
+ typeof _ref$ === "function" ? use(_ref$, _el$131) : messagesEndRef = _el$131;
10215
11173
  insert(_el$9, createComponent(Show, {
10216
11174
  get when() {
10217
11175
  return sidebarTab() === "chat";
@@ -10222,143 +11180,142 @@ ${contextBlock}` : contextBlock);
10222
11180
  return isStreaming2() || messages2().length > 0;
10223
11181
  },
10224
11182
  get children() {
10225
- var _el$133 = _tmpl$24$1();
10226
- insert(_el$133, createComponent(Show, {
11183
+ var _el$132 = _tmpl$25$1();
11184
+ insert(_el$132, createComponent(Show, {
10227
11185
  get when() {
10228
11186
  return isStreaming2();
10229
11187
  },
10230
11188
  get children() {
10231
- var _el$134 = _tmpl$22$1();
10232
- _el$134.$$click = () => cancel();
10233
- return _el$134;
11189
+ var _el$133 = _tmpl$23$1();
11190
+ _el$133.$$click = () => cancel();
11191
+ return _el$133;
10234
11192
  }
10235
11193
  }), null);
10236
- insert(_el$133, createComponent(Show, {
11194
+ insert(_el$132, createComponent(Show, {
10237
11195
  get when() {
10238
11196
  return memo(() => !!!isStreaming2())() && messages2().length > 0;
10239
11197
  },
10240
11198
  get children() {
10241
- var _el$135 = _tmpl$23$1();
10242
- _el$135.$$click = handleRetry;
10243
- return _el$135;
11199
+ var _el$134 = _tmpl$24$1();
11200
+ _el$134.$$click = handleRetry;
11201
+ return _el$134;
10244
11202
  }
10245
11203
  }), null);
10246
- return _el$133;
11204
+ return _el$132;
10247
11205
  }
10248
11206
  }), createComponent(Show, {
10249
11207
  get when() {
10250
11208
  return highlightCount() > 0;
10251
11209
  },
10252
11210
  get children() {
10253
- var _el$136 = _tmpl$25$1(), _el$137 = _el$136.firstChild, _el$138 = _el$137.nextSibling;
10254
- _el$138.firstChild;
10255
- var _el$140 = _el$138.nextSibling;
10256
- _el$137.$$click = () => void scrollToHighlight(highlightIndex() - 1);
10257
- _el$138.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex());
10258
- insert(_el$138, (() => {
11211
+ var _el$135 = _tmpl$26$1(), _el$136 = _el$135.firstChild, _el$137 = _el$136.nextSibling;
11212
+ _el$137.firstChild;
11213
+ var _el$139 = _el$137.nextSibling;
11214
+ _el$136.$$click = () => void scrollToHighlight(highlightIndex() - 1);
11215
+ _el$137.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex());
11216
+ insert(_el$137, (() => {
10259
11217
  var _c$4 = memo(() => highlightIndex() >= 0);
10260
11218
  return () => _c$4() ? `${highlightIndex() + 1} / ${highlightCount()}` : `${highlightCount()} highlight${highlightCount() > 1 ? "s" : ""}`;
10261
11219
  })(), null);
10262
- _el$140.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex() + 1);
11220
+ _el$139.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex() + 1);
10263
11221
  createRenderEffect((_p$) => {
10264
11222
  var _v$9 = highlightIndex() <= 0, _v$0 = highlightIndex() >= highlightCount() - 1;
10265
- _v$9 !== _p$.e && (_el$137.disabled = _p$.e = _v$9);
10266
- _v$0 !== _p$.t && (_el$140.disabled = _p$.t = _v$0);
11223
+ _v$9 !== _p$.e && (_el$136.disabled = _p$.e = _v$9);
11224
+ _v$0 !== _p$.t && (_el$139.disabled = _p$.t = _v$0);
10267
11225
  return _p$;
10268
11226
  }, {
10269
11227
  e: void 0,
10270
11228
  t: void 0
10271
11229
  });
10272
- return _el$136;
11230
+ return _el$135;
10273
11231
  }
10274
11232
  }), createComponent(Show, {
10275
11233
  get when() {
10276
11234
  return queueNotice2() !== null || pendingQueryCount() > 0;
10277
11235
  },
10278
11236
  get children() {
10279
- var _el$141 = _tmpl$28$1(), _el$142 = _el$141.firstChild, _el$143 = _el$142.firstChild;
10280
- insert(_el$143, () => queueNotice2() ?? `Queued ${pendingQueryCount()}/${pendingQueryLimit}.`);
10281
- insert(_el$142, createComponent(Show, {
11237
+ var _el$140 = _tmpl$29$1(), _el$141 = _el$140.firstChild, _el$142 = _el$141.firstChild;
11238
+ insert(_el$142, () => queueNotice2() ?? `Queued ${pendingQueryCount()}/${pendingQueryLimit}.`);
11239
+ insert(_el$141, createComponent(Show, {
10282
11240
  get when() {
10283
11241
  return pendingQueryCount() > 0;
10284
11242
  },
10285
11243
  get children() {
10286
- var _el$144 = _tmpl$26$1();
10287
- _el$144.$$click = () => clearPendingQueries();
10288
- return _el$144;
11244
+ var _el$143 = _tmpl$27$1();
11245
+ _el$143.$$click = () => clearPendingQueries();
11246
+ return _el$143;
10289
11247
  }
10290
11248
  }), null);
10291
- insert(_el$141, createComponent(Show, {
11249
+ insert(_el$140, createComponent(Show, {
10292
11250
  get when() {
10293
11251
  return pendingQueries2().length > 0;
10294
11252
  },
10295
11253
  get children() {
10296
- var _el$145 = _tmpl$27$1();
10297
- insert(_el$145, createComponent(For, {
11254
+ var _el$144 = _tmpl$28$1();
11255
+ insert(_el$144, createComponent(For, {
10298
11256
  get each() {
10299
11257
  return pendingQueries2();
10300
11258
  },
10301
11259
  children: (pendingPrompt, index) => (() => {
10302
- var _el$264 = _tmpl$64(), _el$265 = _el$264.firstChild, _el$266 = _el$265.nextSibling;
10303
- setAttribute(_el$265, "title", pendingPrompt);
10304
- insert(_el$265, pendingPrompt);
10305
- _el$266.$$click = () => removePendingQuery(index());
10306
- createRenderEffect(() => setAttribute(_el$266, "aria-label", `Remove queued prompt ${index() + 1}`));
10307
- return _el$264;
11260
+ var _el$263 = _tmpl$65(), _el$264 = _el$263.firstChild, _el$265 = _el$264.nextSibling;
11261
+ setAttribute(_el$264, "title", pendingPrompt);
11262
+ insert(_el$264, pendingPrompt);
11263
+ _el$265.$$click = () => removePendingQuery(index());
11264
+ createRenderEffect(() => setAttribute(_el$265, "aria-label", `Remove queued prompt ${index() + 1}`));
11265
+ return _el$263;
10308
11266
  })()
10309
11267
  }));
10310
- return _el$145;
11268
+ return _el$144;
10311
11269
  }
10312
11270
  }), null);
10313
- return _el$141;
11271
+ return _el$140;
10314
11272
  }
10315
11273
  }), (() => {
10316
- var _el$146 = _tmpl$29$1(), _el$147 = _el$146.firstChild, _el$148 = _el$147.nextSibling;
10317
- _el$147.$$keydown = (e) => {
11274
+ var _el$145 = _tmpl$30(), _el$146 = _el$145.firstChild, _el$147 = _el$146.nextSibling;
11275
+ _el$146.$$keydown = (e) => {
10318
11276
  if (e.key === "Enter" && !e.shiftKey) {
10319
11277
  e.preventDefault();
10320
11278
  void handleChatSend();
10321
11279
  }
10322
11280
  };
10323
- _el$147.$$input = (e) => setChatInput(e.currentTarget.value);
11281
+ _el$146.$$input = (e) => setChatInput(e.currentTarget.value);
10324
11282
  var _ref$2 = chatInputRef;
10325
- typeof _ref$2 === "function" ? use(_ref$2, _el$147) : chatInputRef = _el$147;
10326
- _el$148.$$click = () => void handleChatSend();
10327
- insert(_el$148, () => isStreaming2() ? "Queue" : "Send");
11283
+ typeof _ref$2 === "function" ? use(_ref$2, _el$146) : chatInputRef = _el$146;
11284
+ _el$147.$$click = () => void handleChatSend();
11285
+ insert(_el$147, () => isStreaming2() ? "Queue" : "Send");
10328
11286
  createRenderEffect((_p$) => {
10329
11287
  var _v$1 = isStreaming2() ? "Send now to queue the next prompt..." : "Ask anything...", _v$10 = !chatInput().trim();
10330
- _v$1 !== _p$.e && setAttribute(_el$147, "placeholder", _p$.e = _v$1);
10331
- _v$10 !== _p$.t && (_el$148.disabled = _p$.t = _v$10);
11288
+ _v$1 !== _p$.e && setAttribute(_el$146, "placeholder", _p$.e = _v$1);
11289
+ _v$10 !== _p$.t && (_el$147.disabled = _p$.t = _v$10);
10332
11290
  return _p$;
10333
11291
  }, {
10334
11292
  e: void 0,
10335
11293
  t: void 0
10336
11294
  });
10337
- createRenderEffect(() => _el$147.value = chatInput());
10338
- return _el$146;
11295
+ createRenderEffect(() => _el$146.value = chatInput());
11296
+ return _el$145;
10339
11297
  })()];
10340
11298
  }
10341
11299
  }), null);
10342
11300
  createRenderEffect((_p$) => {
10343
- var _v$11 = `${sidebarWidth2()}px`, _v$12 = !!isDragging(), _v$13 = !!(sidebarTab() === "supervisor"), _v$14 = sidebarTab() === "supervisor", _v$15 = !!(sidebarTab() === "bookmarks"), _v$16 = sidebarTab() === "bookmarks", _v$17 = !!(sidebarTab() === "checkpoints"), _v$18 = sidebarTab() === "checkpoints", _v$19 = !!(sidebarTab() === "chat"), _v$20 = sidebarTab() === "chat", _v$21 = !!(sidebarTab() === "automation"), _v$22 = sidebarTab() === "automation", _v$23 = !!(sidebarTab() === "history"), _v$24 = sidebarTab() === "history", _v$25 = !!(sidebarTab() === "diff"), _v$26 = sidebarTab() === "diff", _v$27 = !!(sidebarTab() === "research"), _v$28 = sidebarTab() === "research";
11301
+ var _v$11 = sidebarDetached2() ? "100%" : `${sidebarWidth2()}px`, _v$12 = !!(sidebarTab() === "supervisor"), _v$13 = sidebarTab() === "supervisor", _v$14 = !!(sidebarTab() === "bookmarks"), _v$15 = sidebarTab() === "bookmarks", _v$16 = !!(sidebarTab() === "checkpoints"), _v$17 = sidebarTab() === "checkpoints", _v$18 = !!(sidebarTab() === "chat"), _v$19 = sidebarTab() === "chat", _v$20 = !!(sidebarTab() === "automation"), _v$21 = sidebarTab() === "automation", _v$22 = !!(sidebarTab() === "history"), _v$23 = sidebarTab() === "history", _v$24 = !!(sidebarTab() === "diff"), _v$25 = sidebarTab() === "diff", _v$26 = !!(sidebarTab() === "research"), _v$27 = sidebarTab() === "research";
10344
11302
  _v$11 !== _p$.e && setStyleProperty(_el$9, "width", _p$.e = _v$11);
10345
- _v$12 !== _p$.t && _el$0.classList.toggle("dragging", _p$.t = _v$12);
10346
- _v$13 !== _p$.a && _el$16.classList.toggle("active", _p$.a = _v$13);
10347
- _v$14 !== _p$.o && setAttribute(_el$16, "aria-selected", _p$.o = _v$14);
10348
- _v$15 !== _p$.i && _el$19.classList.toggle("active", _p$.i = _v$15);
10349
- _v$16 !== _p$.n && setAttribute(_el$19, "aria-selected", _p$.n = _v$16);
10350
- _v$17 !== _p$.s && _el$20.classList.toggle("active", _p$.s = _v$17);
10351
- _v$18 !== _p$.h && setAttribute(_el$20, "aria-selected", _p$.h = _v$18);
10352
- _v$19 !== _p$.r && _el$21.classList.toggle("active", _p$.r = _v$19);
10353
- _v$20 !== _p$.d && setAttribute(_el$21, "aria-selected", _p$.d = _v$20);
10354
- _v$21 !== _p$.l && _el$22.classList.toggle("active", _p$.l = _v$21);
10355
- _v$22 !== _p$.u && setAttribute(_el$22, "aria-selected", _p$.u = _v$22);
10356
- _v$23 !== _p$.c && _el$23.classList.toggle("active", _p$.c = _v$23);
10357
- _v$24 !== _p$.w && setAttribute(_el$23, "aria-selected", _p$.w = _v$24);
10358
- _v$25 !== _p$.m && _el$24.classList.toggle("active", _p$.m = _v$25);
10359
- _v$26 !== _p$.f && setAttribute(_el$24, "aria-selected", _p$.f = _v$26);
10360
- _v$27 !== _p$.y && _el$25.classList.toggle("active", _p$.y = _v$27);
10361
- _v$28 !== _p$.g && setAttribute(_el$25, "aria-selected", _p$.g = _v$28);
11303
+ _v$12 !== _p$.t && _el$15.classList.toggle("active", _p$.t = _v$12);
11304
+ _v$13 !== _p$.a && setAttribute(_el$15, "aria-selected", _p$.a = _v$13);
11305
+ _v$14 !== _p$.o && _el$18.classList.toggle("active", _p$.o = _v$14);
11306
+ _v$15 !== _p$.i && setAttribute(_el$18, "aria-selected", _p$.i = _v$15);
11307
+ _v$16 !== _p$.n && _el$19.classList.toggle("active", _p$.n = _v$16);
11308
+ _v$17 !== _p$.s && setAttribute(_el$19, "aria-selected", _p$.s = _v$17);
11309
+ _v$18 !== _p$.h && _el$20.classList.toggle("active", _p$.h = _v$18);
11310
+ _v$19 !== _p$.r && setAttribute(_el$20, "aria-selected", _p$.r = _v$19);
11311
+ _v$20 !== _p$.d && _el$21.classList.toggle("active", _p$.d = _v$20);
11312
+ _v$21 !== _p$.l && setAttribute(_el$21, "aria-selected", _p$.l = _v$21);
11313
+ _v$22 !== _p$.u && _el$22.classList.toggle("active", _p$.u = _v$22);
11314
+ _v$23 !== _p$.c && setAttribute(_el$22, "aria-selected", _p$.c = _v$23);
11315
+ _v$24 !== _p$.w && _el$23.classList.toggle("active", _p$.w = _v$24);
11316
+ _v$25 !== _p$.m && setAttribute(_el$23, "aria-selected", _p$.m = _v$25);
11317
+ _v$26 !== _p$.f && _el$24.classList.toggle("active", _p$.f = _v$26);
11318
+ _v$27 !== _p$.y && setAttribute(_el$24, "aria-selected", _p$.y = _v$27);
10362
11319
  return _p$;
10363
11320
  }, {
10364
11321
  e: void 0,
@@ -10377,8 +11334,7 @@ ${contextBlock}` : contextBlock);
10377
11334
  w: void 0,
10378
11335
  m: void 0,
10379
11336
  f: void 0,
10380
- y: void 0,
10381
- g: void 0
11337
+ y: void 0
10382
11338
  });
10383
11339
  return _el$9;
10384
11340
  }
@@ -13933,75 +14889,6 @@ var _tmpl$$2 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div cla
13933
14889
  color: var(--text-secondary);
13934
14890
  }
13935
14891
  `), _tmpl$3$1 = /* @__PURE__ */ template(`<div class=keyboard-help-keys>`), _tmpl$4$1 = /* @__PURE__ */ template(`<div class=keyboard-help-action>`), _tmpl$5$1 = /* @__PURE__ */ template(`<span class=keyboard-help-plus>/`), _tmpl$6$1 = /* @__PURE__ */ template(`<kbd>`), _tmpl$7$1 = /* @__PURE__ */ template(`<span class=keyboard-help-plus>+`);
13936
- const SHORTCUTS = [{
13937
- keys: "Ctrl+L",
13938
- action: "AI Command Bar",
13939
- privateMode: false
13940
- }, {
13941
- keys: "Ctrl+Shift+L",
13942
- action: "Toggle AI Sidebar",
13943
- privateMode: false
13944
- }, {
13945
- keys: "Ctrl+Shift+F",
13946
- action: "Toggle Focus Mode",
13947
- privateMode: false
13948
- }, {
13949
- keys: "F12",
13950
- action: "Toggle Dev Tools Panel",
13951
- privateMode: false
13952
- }, {
13953
- keys: "Ctrl+N",
13954
- action: "New Window"
13955
- }, {
13956
- keys: "Ctrl+T",
13957
- action: "New Tab"
13958
- }, {
13959
- keys: "Ctrl+W",
13960
- action: "Close Tab"
13961
- }, {
13962
- keys: "Ctrl+Shift+T",
13963
- action: "Reopen Closed Tab"
13964
- }, {
13965
- keys: "Ctrl+F",
13966
- action: "Find in Page"
13967
- }, {
13968
- keys: "Ctrl++ / Ctrl+=",
13969
- action: "Zoom In"
13970
- }, {
13971
- keys: "Ctrl+-",
13972
- action: "Zoom Out"
13973
- }, {
13974
- keys: "Ctrl+0",
13975
- action: "Reset Zoom"
13976
- }, {
13977
- keys: "Ctrl+Shift+N",
13978
- action: "New Private Window"
13979
- }, {
13980
- keys: "Ctrl+P",
13981
- action: "Print Page"
13982
- }, {
13983
- keys: "Ctrl+Shift+P",
13984
- action: "Save Page as PDF"
13985
- }, {
13986
- keys: "Ctrl+Shift+I",
13987
- action: "Toggle Picture-in-Picture",
13988
- privateMode: false
13989
- }, {
13990
- keys: "Ctrl+Shift+Delete",
13991
- action: "Clear Browsing Data",
13992
- privateMode: false
13993
- }, {
13994
- keys: "Ctrl+,",
13995
- action: "Settings",
13996
- privateMode: false
13997
- }, {
13998
- keys: "Ctrl+H",
13999
- action: "Capture Highlight",
14000
- privateMode: false
14001
- }, {
14002
- keys: "?",
14003
- action: "This help overlay"
14004
- }];
14005
14892
  function shortcutParts(keys) {
14006
14893
  return keys.split(" / ").map((combo) => combo.replace(/\+\+/g, "+Plus").split("+").filter(Boolean).map((key) => key === "Plus" ? "+" : key));
14007
14894
  }
@@ -14010,7 +14897,7 @@ const KeyboardHelp = (props) => {
14010
14897
  visible,
14011
14898
  closing
14012
14899
  } = useAnimatedPresence(() => props.open, 200);
14013
- const shortcuts = () => props.privateMode ? SHORTCUTS.filter((shortcut) => shortcut.privateMode !== false) : SHORTCUTS;
14900
+ const shortcuts = () => getBrowserCommandShortcutHelp(props.privateMode);
14014
14901
  return createComponent(Show, {
14015
14902
  get when() {
14016
14903
  return visible();
@@ -14182,110 +15069,42 @@ const ClearBrowsingData = (props) => {
14182
15069
  delegateEvents(["click"]);
14183
15070
  function setupKeybindings(handlers) {
14184
15071
  const listener = (e) => {
14185
- const ctrl = e.ctrlKey || e.metaKey;
14186
- const key = e.key.toLowerCase();
14187
- if (ctrl && key === "l" && !e.shiftKey) {
14188
- e.preventDefault();
14189
- handlers.openCommandBar?.();
14190
- return;
14191
- }
14192
- if (ctrl && key === "l" && e.shiftKey) {
14193
- e.preventDefault();
14194
- handlers.toggleSidebar?.();
14195
- return;
14196
- }
14197
- if (ctrl && key === "f" && e.shiftKey) {
14198
- e.preventDefault();
14199
- handlers.toggleFocusMode?.();
14200
- return;
14201
- }
14202
- if (ctrl && key === "t" && e.shiftKey) {
14203
- e.preventDefault();
14204
- handlers.reopenClosedTab?.();
14205
- return;
14206
- }
14207
- if (ctrl && key === "n" && e.shiftKey) {
14208
- e.preventDefault();
14209
- handlers.openPrivateWindow?.();
14210
- return;
14211
- }
14212
- if (ctrl && key === "n" && !e.shiftKey) {
14213
- e.preventDefault();
14214
- handlers.openNewWindow?.();
14215
- return;
14216
- }
14217
- if (ctrl && key === "t" && !e.shiftKey) {
14218
- e.preventDefault();
14219
- handlers.newTab();
14220
- return;
14221
- }
14222
- if (ctrl && key === "w") {
14223
- e.preventDefault();
14224
- handlers.closeTab();
14225
- return;
14226
- }
14227
- if (ctrl && key === "p" && e.shiftKey) {
14228
- e.preventDefault();
14229
- handlers.printToPdf?.();
14230
- return;
14231
- }
14232
- if (ctrl && key === "i" && e.shiftKey) {
14233
- e.preventDefault();
14234
- handlers.togglePip?.();
14235
- return;
14236
- }
14237
- if (ctrl && e.shiftKey && e.key === "Delete") {
14238
- e.preventDefault();
14239
- handlers.clearBrowsingData?.();
14240
- return;
14241
- }
14242
- if (ctrl && key === "p" && !e.shiftKey) {
14243
- e.preventDefault();
14244
- handlers.print?.();
14245
- return;
14246
- }
14247
- if (ctrl && e.key === ",") {
14248
- e.preventDefault();
14249
- handlers.openSettings?.();
14250
- return;
14251
- }
14252
- if (ctrl && key === "h" && !e.shiftKey) {
14253
- e.preventDefault();
14254
- handlers.captureHighlight?.();
14255
- return;
14256
- }
14257
- if (e.key === "F12") {
14258
- e.preventDefault();
14259
- handlers.toggleDevTools?.();
14260
- return;
14261
- }
14262
- if (ctrl && (e.key === "+" || e.key === "=")) {
14263
- e.preventDefault();
14264
- handlers.zoomIn?.();
14265
- return;
14266
- }
14267
- if (ctrl && e.key === "-") {
14268
- e.preventDefault();
14269
- handlers.zoomOut?.();
14270
- return;
14271
- }
14272
- if (ctrl && e.key === "0") {
15072
+ const commandId = getBrowserCommandIdForKeyboardEvent(e);
15073
+ if (!commandId) return;
15074
+ const commandHandler = getCommandHandler(commandId, handlers);
15075
+ if (commandHandler) {
14273
15076
  e.preventDefault();
14274
- handlers.zoomReset?.();
14275
- return;
14276
- }
14277
- if (e.key === "?" && !ctrl && !e.altKey) {
14278
- const tag = e.target?.tagName;
14279
- if (tag !== "INPUT" && tag !== "TEXTAREA" && !e.target?.isContentEditable) {
14280
- e.preventDefault();
14281
- handlers.toggleKeyboardHelp?.();
14282
- return;
14283
- }
15077
+ commandHandler();
14284
15078
  }
14285
15079
  };
14286
15080
  document.addEventListener("keydown", listener);
14287
15081
  return () => document.removeEventListener("keydown", listener);
14288
15082
  }
15083
+ function getCommandHandler(commandId, handlers) {
15084
+ const commandHandlers = {
15085
+ "browser-command-palette": handlers.openBrowserCommandPalette,
15086
+ "ask-agent": handlers.openCommandBar,
15087
+ "toggle-sidebar": handlers.toggleSidebar,
15088
+ "focus-mode": handlers.toggleFocusMode,
15089
+ "new-tab": handlers.newTab,
15090
+ "close-tab": handlers.closeTab,
15091
+ "reopen-tab": handlers.reopenClosedTab,
15092
+ "new-window": handlers.openNewWindow,
15093
+ "private-window": handlers.openPrivateWindow,
15094
+ settings: handlers.openSettings,
15095
+ "clear-data": handlers.clearBrowsingData,
15096
+ "keyboard-help": handlers.toggleKeyboardHelp,
15097
+ devtools: handlers.toggleDevTools,
15098
+ "zoom-in": handlers.zoomIn,
15099
+ "zoom-out": handlers.zoomOut,
15100
+ "zoom-reset": handlers.zoomReset,
15101
+ print: handlers.print,
15102
+ "save-pdf": handlers.printToPdf,
15103
+ "toggle-pip": handlers.togglePip,
15104
+ "capture-highlight": handlers.captureHighlight
15105
+ };
15106
+ return commandHandlers[commandId];
15107
+ }
14289
15108
  var _tmpl$ = /* @__PURE__ */ template(`<div class=loading-bar>`), _tmpl$2 = /* @__PURE__ */ template(`<div class=app><div class=chrome>`);
14290
15109
  try {
14291
15110
  const cached = localStorage.getItem("vessel:theme");
@@ -14301,6 +15120,7 @@ const App = () => {
14301
15120
  const isChromeOnlyWindow = isPrivateWindow || isSecondaryWindow;
14302
15121
  const {
14303
15122
  openCommandBar,
15123
+ openBrowserCommandPalette,
14304
15124
  toggleSidebar,
14305
15125
  toggleFocusMode,
14306
15126
  openSettings,
@@ -14370,6 +15190,7 @@ const App = () => {
14370
15190
  if (view !== "chrome") return;
14371
15191
  const cleanupKeys = setupKeybindings({
14372
15192
  openCommandBar: isChromeOnlyWindow ? void 0 : openCommandBar,
15193
+ openBrowserCommandPalette: isChromeOnlyWindow ? void 0 : openBrowserCommandPalette,
14373
15194
  toggleSidebar: isChromeOnlyWindow ? void 0 : toggleSidebar,
14374
15195
  toggleFocusMode: isChromeOnlyWindow ? void 0 : toggleFocusMode,
14375
15196
  newTab: () => createTab(),
@@ -14470,7 +15291,12 @@ const App = () => {
14470
15291
  insert(_el$, createComponent(Show, {
14471
15292
  when: !isChromeOnlyWindow,
14472
15293
  get children() {
14473
- return [createComponent(CommandBar, {}), createComponent(Settings, {})];
15294
+ return [createComponent(BrowserCommandPalette, {
15295
+ onOpenClearData: () => setClearDataOpen(true),
15296
+ onToggleKeyboardHelp: () => setKeyboardHelpOpen((v) => !v),
15297
+ onCaptureHighlight: captureHighlight,
15298
+ onOpenDownloads: () => setDownloadsOpen(true)
15299
+ }), createComponent(CommandBar, {}), createComponent(Settings, {})];
14474
15300
  }
14475
15301
  }), null);
14476
15302
  insert(_el$, createComponent(DownloadsPanel, {