@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.
- package/README.md +10 -4
- package/out/main/index.js +463 -133
- package/out/preload/index.js +10 -0
- package/out/renderer/assets/{index-COyRPuS5.js → index-Cvmlazb5.js} +1632 -806
- package/out/renderer/assets/{index-CFbT1_av.css → index-D2u6Brx4.css} +184 -0
- package/out/renderer/index.html +2 -2
- package/package.json +10 -5
|
@@ -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$$
|
|
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$$
|
|
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$$
|
|
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$$
|
|
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$
|
|
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$
|
|
1639
|
+
iconNode: iconNode$z,
|
|
1618
1640
|
name: "book-open"
|
|
1619
1641
|
}));
|
|
1620
1642
|
var book_open_default = BookOpen;
|
|
1621
|
-
var iconNode$
|
|
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$
|
|
1676
|
+
iconNode: iconNode$x,
|
|
1627
1677
|
name: "check"
|
|
1628
1678
|
}));
|
|
1629
1679
|
var check_default = Check;
|
|
1630
|
-
var iconNode$
|
|
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$
|
|
1722
|
+
iconNode: iconNode$v,
|
|
1656
1723
|
name: "clipboard-list"
|
|
1657
1724
|
}));
|
|
1658
1725
|
var clipboard_list_default = ClipboardList;
|
|
1659
|
-
var iconNode$
|
|
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$
|
|
1736
|
+
iconNode: iconNode$u,
|
|
1670
1737
|
name: "clock"
|
|
1671
1738
|
}));
|
|
1672
1739
|
var clock_default = Clock;
|
|
1673
|
-
var iconNode$
|
|
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$
|
|
1792
|
+
iconNode: iconNode$t,
|
|
1726
1793
|
name: "cpu"
|
|
1727
1794
|
}));
|
|
1728
1795
|
var cpu_default = Cpu;
|
|
1729
|
-
var iconNode$
|
|
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$
|
|
1807
|
+
iconNode: iconNode$s,
|
|
1741
1808
|
name: "download"
|
|
1742
1809
|
}));
|
|
1743
1810
|
var download_default = Download;
|
|
1744
|
-
var iconNode$
|
|
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$
|
|
1892
|
+
iconNode: iconNode$n,
|
|
1758
1893
|
name: "globe"
|
|
1759
1894
|
}));
|
|
1760
1895
|
var globe_default = Globe;
|
|
1761
|
-
var iconNode$
|
|
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$
|
|
1913
|
+
iconNode: iconNode$m,
|
|
1779
1914
|
name: "layers-plus"
|
|
1780
1915
|
}));
|
|
1781
1916
|
var layers_plus_default = LayersPlus;
|
|
1782
|
-
var iconNode$
|
|
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$
|
|
1930
|
+
iconNode: iconNode$l,
|
|
1796
1931
|
name: "lock"
|
|
1797
1932
|
}));
|
|
1798
1933
|
var lock_default = Lock;
|
|
1799
|
-
var iconNode$
|
|
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$
|
|
1997
|
+
iconNode: iconNode$h,
|
|
1812
1998
|
name: "panel-top"
|
|
1813
1999
|
}));
|
|
1814
2000
|
var panel_top_default = PanelTop;
|
|
1815
|
-
var iconNode$
|
|
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$
|
|
2009
|
+
iconNode: iconNode$g,
|
|
1824
2010
|
name: "plus"
|
|
1825
2011
|
}));
|
|
1826
2012
|
var plus_default = Plus;
|
|
1827
|
-
var iconNode$
|
|
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$
|
|
2054
|
+
iconNode: iconNode$d,
|
|
1838
2055
|
name: "search"
|
|
1839
2056
|
}));
|
|
1840
2057
|
var search_default = Search;
|
|
1841
|
-
var iconNode$
|
|
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$
|
|
2077
|
+
iconNode: iconNode$b,
|
|
1847
2078
|
name: "shield"
|
|
1848
2079
|
}));
|
|
1849
2080
|
var shield_default = Shield;
|
|
1850
|
-
var iconNode$
|
|
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$
|
|
2086
|
+
iconNode: iconNode$a,
|
|
1856
2087
|
name: "star"
|
|
1857
2088
|
}));
|
|
1858
2089
|
var star_default = Star;
|
|
1859
|
-
var iconNode$
|
|
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$
|
|
2101
|
+
iconNode: iconNode$9,
|
|
1871
2102
|
name: "tag"
|
|
1872
2103
|
}));
|
|
1873
2104
|
var tag_default = Tag;
|
|
1874
|
-
var iconNode$
|
|
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$
|
|
2122
|
+
iconNode: iconNode$8,
|
|
1892
2123
|
name: "trash-2"
|
|
1893
2124
|
}));
|
|
1894
2125
|
var trash_2_default = Trash2;
|
|
1895
|
-
var iconNode$
|
|
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$
|
|
2148
|
+
iconNode: iconNode$6,
|
|
1906
2149
|
name: "user"
|
|
1907
2150
|
}));
|
|
1908
2151
|
var user_default = User;
|
|
1909
|
-
var iconNode$
|
|
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$
|
|
2163
|
+
iconNode: iconNode$5,
|
|
1921
2164
|
name: "volume-2"
|
|
1922
2165
|
}));
|
|
1923
2166
|
var volume_2_default = Volume2;
|
|
1924
|
-
var iconNode$
|
|
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$
|
|
2184
|
+
iconNode: iconNode$4,
|
|
1942
2185
|
name: "volume-x"
|
|
1943
2186
|
}));
|
|
1944
2187
|
var volume_x_default = VolumeX;
|
|
1945
|
-
var iconNode$
|
|
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$
|
|
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
|
|
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$$
|
|
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$
|
|
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$$
|
|
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$
|
|
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$
|
|
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$$
|
|
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$
|
|
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$
|
|
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$
|
|
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$$
|
|
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
|
-
|
|
2698
|
-
|
|
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
|
-
|
|
2711
|
-
|
|
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$$
|
|
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>×`), _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$$
|
|
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$
|
|
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$
|
|
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$
|
|
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$$
|
|
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$$
|
|
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$
|
|
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$$
|
|
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$$
|
|
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$$
|
|
4249
|
+
var _tmpl$$m = /* @__PURE__ */ template(`<div class=download-toast-stack aria-live=polite>`), _tmpl$2$m = /* @__PURE__ */ template(`<span class=download-toast-done>✓`), _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$$
|
|
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$
|
|
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$
|
|
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$
|
|
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$$
|
|
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$$
|
|
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$
|
|
4443
|
+
return _tmpl$2$l();
|
|
4076
4444
|
},
|
|
4077
4445
|
children: (item) => (() => {
|
|
4078
|
-
var _el$0 = _tmpl$3$
|
|
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$
|
|
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$$
|
|
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)">▲</button><button class=find-bar-btn title="Next (Enter)">▼</button><button class="find-bar-btn find-bar-close"title="Close (Escape)">×`), _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$$
|
|
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$
|
|
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$$
|
|
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$$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$$
|
|
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
|
|
4362
|
-
const hasStreamingEntry = createMemo(() =>
|
|
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 =
|
|
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")() &&
|
|
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
|
-
|
|
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
|
|
5334
|
+
return filteredCommands().length > 0;
|
|
4380
5335
|
},
|
|
4381
|
-
get
|
|
4382
|
-
|
|
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
|
-
|
|
4412
|
-
|
|
4413
|
-
|
|
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
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
})
|
|
4450
|
-
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
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$$
|
|
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$
|
|
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$$
|
|
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$$
|
|
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$
|
|
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$$
|
|
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$$
|
|
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 & 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$$
|
|
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$
|
|
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$$
|
|
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 & 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$$
|
|
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$
|
|
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$$
|
|
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$$
|
|
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$
|
|
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 =
|
|
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$
|
|
9390
|
-
_el$
|
|
9391
|
-
var _el$19 = _el$
|
|
9392
|
-
_el$
|
|
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$
|
|
9396
|
-
|
|
9397
|
-
|
|
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$
|
|
9403
|
-
insert(_el$
|
|
9404
|
-
return _el$
|
|
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$
|
|
9408
|
-
_el$
|
|
9409
|
-
_el$
|
|
9410
|
-
_el$
|
|
9411
|
-
_el$
|
|
9412
|
-
_el$
|
|
9413
|
-
_el$
|
|
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$
|
|
9418
|
-
insert(_el$
|
|
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$
|
|
9424
|
-
_el$
|
|
9425
|
-
insert(_el$
|
|
9426
|
-
insert(_el$
|
|
9427
|
-
insert(_el$
|
|
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$
|
|
9438
|
-
_el$
|
|
9439
|
-
insert(_el$
|
|
9440
|
-
_el$
|
|
9441
|
-
insert(_el$
|
|
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$
|
|
9447
|
-
_el$
|
|
9448
|
-
createRenderEffect(() => setAttribute(_el$
|
|
9449
|
-
return _el$
|
|
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$
|
|
9453
|
-
insert(_el$
|
|
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$
|
|
10416
|
+
return _tmpl$32();
|
|
9459
10417
|
},
|
|
9460
10418
|
get children() {
|
|
9461
|
-
return [_tmpl$
|
|
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$
|
|
9467
|
-
insert(_el$
|
|
9468
|
-
insert(_el$
|
|
9469
|
-
insert(_el$
|
|
9470
|
-
_el$
|
|
9471
|
-
_el$
|
|
9472
|
-
return _el$
|
|
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$
|
|
9477
|
-
insert(_el$
|
|
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$
|
|
9483
|
-
_el$
|
|
9484
|
-
insert(_el$
|
|
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$
|
|
10446
|
+
return _el$40;
|
|
9489
10447
|
}
|
|
9490
10448
|
}), null);
|
|
9491
|
-
insert(_el$
|
|
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$
|
|
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$
|
|
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$
|
|
9513
|
-
insert(_el$
|
|
9514
|
-
insert(_el$
|
|
9515
|
-
insert(_el$
|
|
9516
|
-
insert(_el$
|
|
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$
|
|
9522
|
-
insert(_el$
|
|
9523
|
-
return _el$
|
|
10479
|
+
var _el$164 = _tmpl$36();
|
|
10480
|
+
insert(_el$164, () => action.resultSummary);
|
|
10481
|
+
return _el$164;
|
|
9524
10482
|
}
|
|
9525
10483
|
}), null);
|
|
9526
|
-
insert(_el$
|
|
10484
|
+
insert(_el$159, createComponent(Show, {
|
|
9527
10485
|
get when() {
|
|
9528
10486
|
return action.error;
|
|
9529
10487
|
},
|
|
9530
10488
|
get children() {
|
|
9531
|
-
var _el$
|
|
9532
|
-
insert(_el$
|
|
9533
|
-
return _el$
|
|
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$
|
|
9537
|
-
return _el$
|
|
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$
|
|
9545
|
-
return _el$
|
|
10502
|
+
createRenderEffect(() => _el$31.classList.toggle("paused", !!runtimeState2().supervisor.paused));
|
|
10503
|
+
return _el$26;
|
|
9546
10504
|
}
|
|
9547
|
-
}), _el$
|
|
9548
|
-
insert(_el$
|
|
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$
|
|
9554
|
-
insert(_el$
|
|
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$
|
|
10516
|
+
insert(_el$42, createComponent(Show, {
|
|
9559
10517
|
get when() {
|
|
9560
10518
|
return currentTabSaved();
|
|
9561
10519
|
},
|
|
9562
10520
|
get children() {
|
|
9563
|
-
return _tmpl$
|
|
10521
|
+
return _tmpl$9$4();
|
|
9564
10522
|
}
|
|
9565
10523
|
}), null);
|
|
9566
|
-
_el$
|
|
9567
|
-
_el$
|
|
9568
|
-
_el$
|
|
9569
|
-
_el$
|
|
9570
|
-
insert(_el$
|
|
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$
|
|
9576
|
-
insert(_el$
|
|
9577
|
-
return _el$
|
|
10533
|
+
var _el$54 = _tmpl$0$3();
|
|
10534
|
+
insert(_el$54, bookmarkExportMessage);
|
|
10535
|
+
return _el$54;
|
|
9578
10536
|
}
|
|
9579
10537
|
}), null);
|
|
9580
|
-
_el$
|
|
9581
|
-
insert(_el$
|
|
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$
|
|
9587
|
-
_el$
|
|
9588
|
-
_el$
|
|
9589
|
-
insert(_el$
|
|
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$
|
|
9595
|
-
insert(_el$
|
|
9596
|
-
return _el$
|
|
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$
|
|
9602
|
-
_v$2 !== _p$.t && (_el$
|
|
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$
|
|
10566
|
+
return _el$59;
|
|
9609
10567
|
}
|
|
9610
10568
|
}), null);
|
|
9611
|
-
_el$
|
|
9612
|
-
insert(_el$
|
|
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$
|
|
9618
|
-
insert(_el$
|
|
9619
|
-
insert(_el$
|
|
9620
|
-
insert(_el$
|
|
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$
|
|
9631
|
-
_el$
|
|
9632
|
-
_el$
|
|
9633
|
-
_el$
|
|
9634
|
-
_el$
|
|
9635
|
-
_el$
|
|
9636
|
-
_el$
|
|
9637
|
-
createRenderEffect(() => _el$
|
|
9638
|
-
createRenderEffect(() => _el$
|
|
9639
|
-
createRenderEffect(() => _el$
|
|
9640
|
-
createRenderEffect(() => _el$
|
|
9641
|
-
createRenderEffect(() => _el$
|
|
9642
|
-
createRenderEffect(() => _el$
|
|
9643
|
-
return _el$
|
|
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$
|
|
9647
|
-
_el$
|
|
9648
|
-
_el$
|
|
9649
|
-
insert(_el$
|
|
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$
|
|
9656
|
-
insert(_el$
|
|
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$
|
|
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$
|
|
9670
|
-
_el$
|
|
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$
|
|
9677
|
-
insert(_el$
|
|
9678
|
-
insert(_el$
|
|
9679
|
-
insert(_el$
|
|
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$
|
|
9685
|
-
insert(_el$
|
|
9686
|
-
return _el$
|
|
10642
|
+
var _el$175 = _tmpl$40();
|
|
10643
|
+
insert(_el$175, () => folder.summary);
|
|
10644
|
+
return _el$175;
|
|
9687
10645
|
}
|
|
9688
10646
|
}), null);
|
|
9689
|
-
insert(_el$
|
|
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$
|
|
9695
|
-
_el$
|
|
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$
|
|
10659
|
+
_el$178.$$click = (e) => {
|
|
9702
10660
|
e.stopPropagation();
|
|
9703
10661
|
void handleExportFolder(folder.id, folder.name);
|
|
9704
10662
|
};
|
|
9705
|
-
_el$
|
|
10663
|
+
_el$179.$$click = (e) => {
|
|
9706
10664
|
e.stopPropagation();
|
|
9707
10665
|
setDeletingFolderId(folder.id);
|
|
9708
10666
|
};
|
|
9709
|
-
createRenderEffect(() => _el$
|
|
9710
|
-
return _el$
|
|
10667
|
+
createRenderEffect(() => _el$178.disabled = bookmarkExporting());
|
|
10668
|
+
return _el$176;
|
|
9711
10669
|
}
|
|
9712
10670
|
}), null);
|
|
9713
|
-
insert(_el$
|
|
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$
|
|
9719
|
-
_el$
|
|
9720
|
-
var _el$
|
|
9721
|
-
insert(_el$
|
|
9722
|
-
insert(_el$
|
|
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$
|
|
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$
|
|
9732
|
-
_el$
|
|
9733
|
-
return _el$
|
|
10689
|
+
var _el$186 = _tmpl$42();
|
|
10690
|
+
_el$186.$$click = () => void handleRemoveFolder(folder.id, false);
|
|
10691
|
+
return _el$186;
|
|
9734
10692
|
}
|
|
9735
|
-
}), _el$
|
|
9736
|
-
_el$
|
|
9737
|
-
insert(_el$
|
|
9738
|
-
_el$
|
|
9739
|
-
return _el$
|
|
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$
|
|
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$
|
|
9748
|
-
_el$
|
|
9749
|
-
_el$
|
|
9750
|
-
_el$
|
|
9751
|
-
_el$
|
|
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$
|
|
9757
|
-
createRenderEffect(() => _el$
|
|
9758
|
-
createRenderEffect(() => _el$
|
|
9759
|
-
return _el$
|
|
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$
|
|
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$
|
|
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$
|
|
10733
|
+
return _tmpl$48();
|
|
9776
10734
|
},
|
|
9777
10735
|
get children() {
|
|
9778
|
-
var _el$
|
|
9779
|
-
insert(_el$
|
|
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$
|
|
9785
|
-
_el$
|
|
9786
|
-
insert(_el$
|
|
9787
|
-
insert(_el$
|
|
9788
|
-
insert(_el$
|
|
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$
|
|
9794
|
-
insert(_el$
|
|
9795
|
-
return _el$
|
|
10751
|
+
var _el$202 = _tmpl$49();
|
|
10752
|
+
insert(_el$202, () => bookmark.note);
|
|
10753
|
+
return _el$202;
|
|
9796
10754
|
}
|
|
9797
|
-
}), _el$
|
|
9798
|
-
insert(_el$
|
|
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$
|
|
9804
|
-
insert(_el$
|
|
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$
|
|
9810
|
-
_el$
|
|
9811
|
-
insert(_el$
|
|
9812
|
-
return _el$
|
|
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$
|
|
10773
|
+
insert(_el$203, createComponent(Show, {
|
|
9816
10774
|
get when() {
|
|
9817
10775
|
return bookmark.expectedContent;
|
|
9818
10776
|
},
|
|
9819
10777
|
get children() {
|
|
9820
|
-
var _el$
|
|
9821
|
-
_el$
|
|
9822
|
-
insert(_el$
|
|
9823
|
-
return _el$
|
|
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$
|
|
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$
|
|
9832
|
-
_el$
|
|
9833
|
-
insert(_el$
|
|
9834
|
-
return _el$
|
|
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$
|
|
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$
|
|
9843
|
-
_el$
|
|
9844
|
-
insert(_el$
|
|
9845
|
-
return _el$
|
|
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$
|
|
10806
|
+
return _el$203;
|
|
9849
10807
|
}
|
|
9850
|
-
}), _el$
|
|
9851
|
-
insert(_el$
|
|
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$
|
|
9857
|
-
_el$
|
|
9858
|
-
_el$
|
|
9859
|
-
_el$
|
|
9860
|
-
_el$
|
|
9861
|
-
_el$
|
|
9862
|
-
_el$
|
|
9863
|
-
_el$
|
|
9864
|
-
_el$
|
|
9865
|
-
createRenderEffect(() => _el$
|
|
9866
|
-
createRenderEffect(() => _el$
|
|
9867
|
-
createRenderEffect(() => _el$
|
|
9868
|
-
createRenderEffect(() => _el$
|
|
9869
|
-
createRenderEffect(() => _el$
|
|
9870
|
-
createRenderEffect(() => _el$
|
|
9871
|
-
return _el$
|
|
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$
|
|
9874
|
-
insert(_el$
|
|
9875
|
-
_el$
|
|
9876
|
-
insert(_el$
|
|
9877
|
-
_el$
|
|
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$
|
|
9884
|
-
return _el$
|
|
10841
|
+
createRenderEffect(() => setAttribute(_el$198, "data-bookmark-id", bookmark.id));
|
|
10842
|
+
return _el$198;
|
|
9885
10843
|
})()
|
|
9886
10844
|
}));
|
|
9887
|
-
return _el$
|
|
10845
|
+
return _el$195;
|
|
9888
10846
|
}
|
|
9889
10847
|
});
|
|
9890
10848
|
}
|
|
9891
10849
|
}), null);
|
|
9892
|
-
createRenderEffect(() => _el$
|
|
9893
|
-
return _el$
|
|
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$
|
|
9901
|
-
_v$4 !== _p$.t && (_el$
|
|
9902
|
-
_v$5 !== _p$.a && (_el$
|
|
9903
|
-
_v$6 !== _p$.o && _el$
|
|
9904
|
-
_v$7 !== _p$.i && _el$
|
|
9905
|
-
_v$8 !== _p$.n && (_el$
|
|
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$
|
|
9916
|
-
createRenderEffect(() => _el$
|
|
9917
|
-
createRenderEffect(() => _el$
|
|
9918
|
-
return _el$
|
|
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$
|
|
9921
|
-
insert(_el$
|
|
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$
|
|
9927
|
-
_el$
|
|
9928
|
-
insert(_el$
|
|
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$
|
|
9933
|
-
_el$
|
|
9934
|
-
_el$
|
|
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$
|
|
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$
|
|
10903
|
+
return _tmpl$56();
|
|
9946
10904
|
},
|
|
9947
10905
|
get children() {
|
|
9948
|
-
var _el$
|
|
9949
|
-
insert(_el$
|
|
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$
|
|
9955
|
-
insert(_el$
|
|
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$
|
|
10918
|
+
return _tmpl$57();
|
|
9961
10919
|
}
|
|
9962
10920
|
}), null);
|
|
9963
|
-
insert(_el$
|
|
9964
|
-
insert(_el$
|
|
9965
|
-
_el$
|
|
9966
|
-
_el$
|
|
9967
|
-
createRenderEffect(() => _el$
|
|
9968
|
-
createRenderEffect(() => _el$
|
|
9969
|
-
return _el$
|
|
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$
|
|
10930
|
+
return _el$95;
|
|
9973
10931
|
}
|
|
9974
10932
|
}), null);
|
|
9975
|
-
createRenderEffect(() => _el$
|
|
9976
|
-
createRenderEffect(() => _el$
|
|
9977
|
-
return _el$
|
|
10933
|
+
createRenderEffect(() => _el$91.value = checkpointName());
|
|
10934
|
+
createRenderEffect(() => _el$92.value = checkpointNote());
|
|
10935
|
+
return _el$84;
|
|
9978
10936
|
}
|
|
9979
|
-
}), _el$
|
|
9980
|
-
insert(_el$
|
|
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$
|
|
9990
|
-
insert(_el$
|
|
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$
|
|
9998
|
-
insert(_el$
|
|
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$
|
|
10004
|
-
_el$
|
|
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$
|
|
10965
|
+
_el$101.$$click = async () => {
|
|
10008
10966
|
const result = await window.vessel.history.exportHtml();
|
|
10009
10967
|
if (!result) return;
|
|
10010
10968
|
};
|
|
10011
|
-
_el$
|
|
10969
|
+
_el$102.$$click = async () => {
|
|
10012
10970
|
const result = await window.vessel.history.exportJson();
|
|
10013
10971
|
if (!result) return;
|
|
10014
10972
|
};
|
|
10015
|
-
_el$
|
|
10973
|
+
_el$103.$$click = async () => {
|
|
10016
10974
|
const result = await window.vessel.history.importFile();
|
|
10017
10975
|
if (!result) return;
|
|
10018
10976
|
};
|
|
10019
|
-
insert(_el$
|
|
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$
|
|
10025
|
-
_el$
|
|
10026
|
-
insert(_el$
|
|
10027
|
-
insert(_el$
|
|
10028
|
-
insert(_el$
|
|
10029
|
-
return _el$
|
|
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$
|
|
10990
|
+
insert(_el$104, createComponent(Show, {
|
|
10033
10991
|
get when() {
|
|
10034
10992
|
return history.hasMore();
|
|
10035
10993
|
},
|
|
10036
10994
|
get children() {
|
|
10037
|
-
var _el$
|
|
10038
|
-
_el$
|
|
10039
|
-
_el$
|
|
10040
|
-
insert(_el$
|
|
10041
|
-
insert(_el$
|
|
10042
|
-
return _el$
|
|
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$
|
|
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$
|
|
11008
|
+
return _tmpl$15$2();
|
|
10051
11009
|
}
|
|
10052
11010
|
}), null);
|
|
10053
|
-
return _el$
|
|
11011
|
+
return _el$96;
|
|
10054
11012
|
}
|
|
10055
|
-
}), _el$
|
|
10056
|
-
insert(_el$
|
|
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$
|
|
10062
|
-
insert(_el$
|
|
10063
|
-
insert(_el$
|
|
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$
|
|
10070
|
-
_el$
|
|
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$
|
|
10073
|
-
return _el$
|
|
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$
|
|
11038
|
+
return _el$113;
|
|
10081
11039
|
}
|
|
10082
|
-
}), _el$
|
|
10083
|
-
insert(_el$
|
|
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$
|
|
10094
|
-
_el$
|
|
10095
|
-
_el$
|
|
10096
|
-
return _el$
|
|
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$
|
|
10104
|
-
insert(_el$
|
|
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$
|
|
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$
|
|
10123
|
-
return _el$
|
|
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$
|
|
10131
|
-
insert(_el$
|
|
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$
|
|
11094
|
+
return _tmpl$62();
|
|
10137
11095
|
},
|
|
10138
11096
|
get children() {
|
|
10139
|
-
var _el$
|
|
10140
|
-
_el$
|
|
10141
|
-
insert(_el$
|
|
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$
|
|
10146
|
-
insert(_el$
|
|
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$
|
|
10159
|
-
insert(_el$
|
|
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$
|
|
10165
|
-
insert(_el$
|
|
10166
|
-
return _el$
|
|
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$
|
|
11127
|
+
return _el$125;
|
|
10170
11128
|
}
|
|
10171
11129
|
}));
|
|
10172
|
-
return _el$
|
|
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$
|
|
10185
|
-
insert(_el$
|
|
10186
|
-
insert(_el$
|
|
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$
|
|
10192
|
-
insert(_el$
|
|
10193
|
-
return _el$
|
|
11149
|
+
var _el$258 = _tmpl$63();
|
|
11150
|
+
insert(_el$258, () => approval.argsSummary);
|
|
11151
|
+
return _el$258;
|
|
10194
11152
|
}
|
|
10195
|
-
}), _el$
|
|
10196
|
-
insert(_el$
|
|
10197
|
-
_el$
|
|
10198
|
-
_el$
|
|
10199
|
-
return _el$
|
|
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$
|
|
11166
|
+
return _tmpl$22$1();
|
|
10209
11167
|
}
|
|
10210
11168
|
})];
|
|
10211
11169
|
}
|
|
10212
|
-
}), _el$
|
|
11170
|
+
}), _el$131);
|
|
10213
11171
|
var _ref$ = messagesEndRef;
|
|
10214
|
-
typeof _ref$ === "function" ? use(_ref$, _el$
|
|
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$
|
|
10226
|
-
insert(_el$
|
|
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$
|
|
10232
|
-
_el$
|
|
10233
|
-
return _el$
|
|
11189
|
+
var _el$133 = _tmpl$23$1();
|
|
11190
|
+
_el$133.$$click = () => cancel();
|
|
11191
|
+
return _el$133;
|
|
10234
11192
|
}
|
|
10235
11193
|
}), null);
|
|
10236
|
-
insert(_el$
|
|
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$
|
|
10242
|
-
_el$
|
|
10243
|
-
return _el$
|
|
11199
|
+
var _el$134 = _tmpl$24$1();
|
|
11200
|
+
_el$134.$$click = handleRetry;
|
|
11201
|
+
return _el$134;
|
|
10244
11202
|
}
|
|
10245
11203
|
}), null);
|
|
10246
|
-
return _el$
|
|
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$
|
|
10254
|
-
_el$
|
|
10255
|
-
var _el$
|
|
10256
|
-
_el$
|
|
10257
|
-
_el$
|
|
10258
|
-
insert(_el$
|
|
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$
|
|
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$
|
|
10266
|
-
_v$0 !== _p$.t && (_el$
|
|
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$
|
|
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$
|
|
10280
|
-
insert(_el$
|
|
10281
|
-
insert(_el$
|
|
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$
|
|
10287
|
-
_el$
|
|
10288
|
-
return _el$
|
|
11244
|
+
var _el$143 = _tmpl$27$1();
|
|
11245
|
+
_el$143.$$click = () => clearPendingQueries();
|
|
11246
|
+
return _el$143;
|
|
10289
11247
|
}
|
|
10290
11248
|
}), null);
|
|
10291
|
-
insert(_el$
|
|
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$
|
|
10297
|
-
insert(_el$
|
|
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$
|
|
10303
|
-
setAttribute(_el$
|
|
10304
|
-
insert(_el$
|
|
10305
|
-
_el$
|
|
10306
|
-
createRenderEffect(() => setAttribute(_el$
|
|
10307
|
-
return _el$
|
|
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$
|
|
11268
|
+
return _el$144;
|
|
10311
11269
|
}
|
|
10312
11270
|
}), null);
|
|
10313
|
-
return _el$
|
|
11271
|
+
return _el$140;
|
|
10314
11272
|
}
|
|
10315
11273
|
}), (() => {
|
|
10316
|
-
var _el$
|
|
10317
|
-
_el$
|
|
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$
|
|
11281
|
+
_el$146.$$input = (e) => setChatInput(e.currentTarget.value);
|
|
10324
11282
|
var _ref$2 = chatInputRef;
|
|
10325
|
-
typeof _ref$2 === "function" ? use(_ref$2, _el$
|
|
10326
|
-
_el$
|
|
10327
|
-
insert(_el$
|
|
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$
|
|
10331
|
-
_v$10 !== _p$.t && (_el$
|
|
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$
|
|
10338
|
-
return _el$
|
|
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 = !!
|
|
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$
|
|
10346
|
-
_v$13 !== _p$.a && _el$
|
|
10347
|
-
_v$14 !== _p$.o &&
|
|
10348
|
-
_v$15 !== _p$.i && _el$
|
|
10349
|
-
_v$16 !== _p$.n &&
|
|
10350
|
-
_v$17 !== _p$.s && _el$
|
|
10351
|
-
_v$18 !== _p$.h &&
|
|
10352
|
-
_v$19 !== _p$.r && _el$
|
|
10353
|
-
_v$20 !== _p$.d &&
|
|
10354
|
-
_v$21 !== _p$.l && _el$
|
|
10355
|
-
_v$22 !== _p$.u &&
|
|
10356
|
-
_v$23 !== _p$.c && _el$
|
|
10357
|
-
_v$24 !== _p$.w &&
|
|
10358
|
-
_v$25 !== _p$.m && _el$
|
|
10359
|
-
_v$26 !== _p$.f &&
|
|
10360
|
-
_v$27 !== _p$.y && _el$
|
|
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
|
|
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
|
|
14186
|
-
|
|
14187
|
-
|
|
14188
|
-
|
|
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
|
-
|
|
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(
|
|
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, {
|