@quanta-intellect/vessel-browser 0.1.71 → 0.1.73
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 +14 -2
- package/out/main/index.js +1376 -60
- package/out/preload/index.js +33 -0
- package/out/renderer/assets/{index-DbnD-fG3.js → index-C2iAShPa.js} +943 -633
- package/out/renderer/assets/{index-wmYomTVM.css → index-MB-_tN9U.css} +142 -0
- package/out/renderer/index.html +2 -2
- package/package.json +1 -1
|
@@ -1488,6 +1488,301 @@ const TitleBar = () => {
|
|
|
1488
1488
|
})();
|
|
1489
1489
|
};
|
|
1490
1490
|
delegateEvents(["click"]);
|
|
1491
|
+
var defaultAttributes = {
|
|
1492
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1493
|
+
width: 24,
|
|
1494
|
+
height: 24,
|
|
1495
|
+
viewBox: "0 0 24 24",
|
|
1496
|
+
fill: "none",
|
|
1497
|
+
stroke: "currentColor",
|
|
1498
|
+
"stroke-width": 2,
|
|
1499
|
+
"stroke-linecap": "round",
|
|
1500
|
+
"stroke-linejoin": "round"
|
|
1501
|
+
};
|
|
1502
|
+
var defaultAttributes_default = defaultAttributes;
|
|
1503
|
+
var LucideContext = createContext({
|
|
1504
|
+
size: 24,
|
|
1505
|
+
color: "currentColor",
|
|
1506
|
+
strokeWidth: 2,
|
|
1507
|
+
absoluteStrokeWidth: false,
|
|
1508
|
+
class: ""
|
|
1509
|
+
});
|
|
1510
|
+
var _tmpl$$h = /* @__PURE__ */ template(`<svg>`);
|
|
1511
|
+
var hasA11yProp = (props) => {
|
|
1512
|
+
for (const prop in props) {
|
|
1513
|
+
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
1514
|
+
return true;
|
|
1515
|
+
}
|
|
1516
|
+
}
|
|
1517
|
+
return false;
|
|
1518
|
+
};
|
|
1519
|
+
var mergeClasses = (...classes) => classes.filter((className2, index, array) => {
|
|
1520
|
+
return Boolean(className2) && className2.trim() !== "" && array.indexOf(className2) === index;
|
|
1521
|
+
}).join(" ").trim();
|
|
1522
|
+
var toCamelCase = (string) => string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase());
|
|
1523
|
+
var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
1524
|
+
var toPascalCase = (string) => {
|
|
1525
|
+
const camelCase = toCamelCase(string);
|
|
1526
|
+
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
|
1527
|
+
};
|
|
1528
|
+
var Icon = (props) => {
|
|
1529
|
+
const [localProps, rest] = splitProps(props, ["color", "size", "strokeWidth", "children", "class", "name", "iconNode", "absoluteStrokeWidth"]);
|
|
1530
|
+
const globalProps = useContext(LucideContext);
|
|
1531
|
+
return (() => {
|
|
1532
|
+
var _el$ = _tmpl$$h();
|
|
1533
|
+
spread(_el$, mergeProps(defaultAttributes_default, {
|
|
1534
|
+
get width() {
|
|
1535
|
+
return localProps.size ?? globalProps.size ?? defaultAttributes_default.width;
|
|
1536
|
+
},
|
|
1537
|
+
get height() {
|
|
1538
|
+
return localProps.size ?? globalProps.size ?? defaultAttributes_default.height;
|
|
1539
|
+
},
|
|
1540
|
+
get stroke() {
|
|
1541
|
+
return localProps.color ?? globalProps.color ?? defaultAttributes_default.stroke;
|
|
1542
|
+
},
|
|
1543
|
+
get ["stroke-width"]() {
|
|
1544
|
+
return memo(() => (localProps.absoluteStrokeWidth ?? globalProps.absoluteStrokeWidth) === true)() ? Number(localProps.strokeWidth ?? globalProps.strokeWidth ?? defaultAttributes_default["stroke-width"]) * 24 / Number(localProps.size ?? globalProps.size) : Number(localProps.strokeWidth ?? globalProps.strokeWidth ?? defaultAttributes_default["stroke-width"]);
|
|
1545
|
+
},
|
|
1546
|
+
get ["class"]() {
|
|
1547
|
+
return mergeClasses("lucide", "lucide-icon", globalProps.class, ...localProps.name != null ? [`lucide-${toKebabCase(toPascalCase(localProps.name))}`, `lucide-${toKebabCase(localProps.name)}`] : [], localProps.class);
|
|
1548
|
+
},
|
|
1549
|
+
get ["aria-hidden"]() {
|
|
1550
|
+
return !localProps.children && !hasA11yProp(rest) ? "true" : void 0;
|
|
1551
|
+
}
|
|
1552
|
+
}, rest), true, true);
|
|
1553
|
+
insert(_el$, createComponent(For, {
|
|
1554
|
+
get each() {
|
|
1555
|
+
return localProps.iconNode;
|
|
1556
|
+
},
|
|
1557
|
+
children: ([elementName, attrs]) => {
|
|
1558
|
+
return createComponent(Dynamic, mergeProps({
|
|
1559
|
+
component: elementName
|
|
1560
|
+
}, attrs));
|
|
1561
|
+
}
|
|
1562
|
+
}));
|
|
1563
|
+
return _el$;
|
|
1564
|
+
})();
|
|
1565
|
+
};
|
|
1566
|
+
var Icon_default = Icon;
|
|
1567
|
+
var iconNode$d = [["path", {
|
|
1568
|
+
d: "M12 7v14",
|
|
1569
|
+
key: "1akyts"
|
|
1570
|
+
}], ["path", {
|
|
1571
|
+
d: "M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",
|
|
1572
|
+
key: "ruj8y"
|
|
1573
|
+
}]];
|
|
1574
|
+
var BookOpen = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1575
|
+
iconNode: iconNode$d,
|
|
1576
|
+
name: "book-open"
|
|
1577
|
+
}));
|
|
1578
|
+
var book_open_default = BookOpen;
|
|
1579
|
+
var iconNode$c = [["rect", {
|
|
1580
|
+
width: "8",
|
|
1581
|
+
height: "4",
|
|
1582
|
+
x: "8",
|
|
1583
|
+
y: "2",
|
|
1584
|
+
rx: "1",
|
|
1585
|
+
ry: "1",
|
|
1586
|
+
key: "tgr4d6"
|
|
1587
|
+
}], ["path", {
|
|
1588
|
+
d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",
|
|
1589
|
+
key: "116196"
|
|
1590
|
+
}], ["path", {
|
|
1591
|
+
d: "M12 11h4",
|
|
1592
|
+
key: "1jrz19"
|
|
1593
|
+
}], ["path", {
|
|
1594
|
+
d: "M12 16h4",
|
|
1595
|
+
key: "n85exb"
|
|
1596
|
+
}], ["path", {
|
|
1597
|
+
d: "M8 11h.01",
|
|
1598
|
+
key: "1dfujw"
|
|
1599
|
+
}], ["path", {
|
|
1600
|
+
d: "M8 16h.01",
|
|
1601
|
+
key: "18s6g9"
|
|
1602
|
+
}]];
|
|
1603
|
+
var ClipboardList = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1604
|
+
iconNode: iconNode$c,
|
|
1605
|
+
name: "clipboard-list"
|
|
1606
|
+
}));
|
|
1607
|
+
var clipboard_list_default = ClipboardList;
|
|
1608
|
+
var iconNode$b = [["circle", {
|
|
1609
|
+
cx: "12",
|
|
1610
|
+
cy: "12",
|
|
1611
|
+
r: "10",
|
|
1612
|
+
key: "1mglay"
|
|
1613
|
+
}], ["path", {
|
|
1614
|
+
d: "M12 6v6l4 2",
|
|
1615
|
+
key: "mmk7yg"
|
|
1616
|
+
}]];
|
|
1617
|
+
var Clock = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1618
|
+
iconNode: iconNode$b,
|
|
1619
|
+
name: "clock"
|
|
1620
|
+
}));
|
|
1621
|
+
var clock_default = Clock;
|
|
1622
|
+
var iconNode$a = [["path", {
|
|
1623
|
+
d: "M12 15V3",
|
|
1624
|
+
key: "m9g1x1"
|
|
1625
|
+
}], ["path", {
|
|
1626
|
+
d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",
|
|
1627
|
+
key: "ih7n3h"
|
|
1628
|
+
}], ["path", {
|
|
1629
|
+
d: "m7 10 5 5 5-5",
|
|
1630
|
+
key: "brsn70"
|
|
1631
|
+
}]];
|
|
1632
|
+
var Download = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1633
|
+
iconNode: iconNode$a,
|
|
1634
|
+
name: "download"
|
|
1635
|
+
}));
|
|
1636
|
+
var download_default = Download;
|
|
1637
|
+
var iconNode$9 = [["circle", {
|
|
1638
|
+
cx: "12",
|
|
1639
|
+
cy: "12",
|
|
1640
|
+
r: "10",
|
|
1641
|
+
key: "1mglay"
|
|
1642
|
+
}], ["path", {
|
|
1643
|
+
d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",
|
|
1644
|
+
key: "13o1zl"
|
|
1645
|
+
}], ["path", {
|
|
1646
|
+
d: "M2 12h20",
|
|
1647
|
+
key: "9i4pu4"
|
|
1648
|
+
}]];
|
|
1649
|
+
var Globe = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1650
|
+
iconNode: iconNode$9,
|
|
1651
|
+
name: "globe"
|
|
1652
|
+
}));
|
|
1653
|
+
var globe_default = Globe;
|
|
1654
|
+
var iconNode$8 = [["path", {
|
|
1655
|
+
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",
|
|
1656
|
+
key: "zzgyd3"
|
|
1657
|
+
}], ["path", {
|
|
1658
|
+
d: "M16 17h6",
|
|
1659
|
+
key: "1ook5g"
|
|
1660
|
+
}], ["path", {
|
|
1661
|
+
d: "M19 14v6",
|
|
1662
|
+
key: "1ckrd5"
|
|
1663
|
+
}], ["path", {
|
|
1664
|
+
d: "M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 .825.178",
|
|
1665
|
+
key: "1ia9y3"
|
|
1666
|
+
}], ["path", {
|
|
1667
|
+
d: "M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l2.116-.962",
|
|
1668
|
+
key: "jksky3"
|
|
1669
|
+
}]];
|
|
1670
|
+
var LayersPlus = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1671
|
+
iconNode: iconNode$8,
|
|
1672
|
+
name: "layers-plus"
|
|
1673
|
+
}));
|
|
1674
|
+
var layers_plus_default = LayersPlus;
|
|
1675
|
+
var iconNode$7 = [["rect", {
|
|
1676
|
+
width: "18",
|
|
1677
|
+
height: "18",
|
|
1678
|
+
x: "3",
|
|
1679
|
+
y: "3",
|
|
1680
|
+
rx: "2",
|
|
1681
|
+
key: "afitv7"
|
|
1682
|
+
}], ["path", {
|
|
1683
|
+
d: "M3 9h18",
|
|
1684
|
+
key: "1pudct"
|
|
1685
|
+
}]];
|
|
1686
|
+
var PanelTop = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1687
|
+
iconNode: iconNode$7,
|
|
1688
|
+
name: "panel-top"
|
|
1689
|
+
}));
|
|
1690
|
+
var panel_top_default = PanelTop;
|
|
1691
|
+
var iconNode$6 = [["path", {
|
|
1692
|
+
d: "M5 12h14",
|
|
1693
|
+
key: "1ays0h"
|
|
1694
|
+
}], ["path", {
|
|
1695
|
+
d: "M12 5v14",
|
|
1696
|
+
key: "s699le"
|
|
1697
|
+
}]];
|
|
1698
|
+
var Plus = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1699
|
+
iconNode: iconNode$6,
|
|
1700
|
+
name: "plus"
|
|
1701
|
+
}));
|
|
1702
|
+
var plus_default = Plus;
|
|
1703
|
+
var iconNode$5 = [["path", {
|
|
1704
|
+
d: "m21 21-4.34-4.34",
|
|
1705
|
+
key: "14j7rj"
|
|
1706
|
+
}], ["circle", {
|
|
1707
|
+
cx: "11",
|
|
1708
|
+
cy: "11",
|
|
1709
|
+
r: "8",
|
|
1710
|
+
key: "4ej97u"
|
|
1711
|
+
}]];
|
|
1712
|
+
var Search = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1713
|
+
iconNode: iconNode$5,
|
|
1714
|
+
name: "search"
|
|
1715
|
+
}));
|
|
1716
|
+
var search_default = Search;
|
|
1717
|
+
var iconNode$4 = [["path", {
|
|
1718
|
+
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",
|
|
1719
|
+
key: "r04s7s"
|
|
1720
|
+
}]];
|
|
1721
|
+
var Star = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1722
|
+
iconNode: iconNode$4,
|
|
1723
|
+
name: "star"
|
|
1724
|
+
}));
|
|
1725
|
+
var star_default = Star;
|
|
1726
|
+
var iconNode$3 = [["path", {
|
|
1727
|
+
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",
|
|
1728
|
+
key: "vktsd0"
|
|
1729
|
+
}], ["circle", {
|
|
1730
|
+
cx: "7.5",
|
|
1731
|
+
cy: "7.5",
|
|
1732
|
+
r: ".5",
|
|
1733
|
+
fill: "currentColor",
|
|
1734
|
+
key: "kqv944"
|
|
1735
|
+
}]];
|
|
1736
|
+
var Tag = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1737
|
+
iconNode: iconNode$3,
|
|
1738
|
+
name: "tag"
|
|
1739
|
+
}));
|
|
1740
|
+
var tag_default = Tag;
|
|
1741
|
+
var iconNode$2 = [["path", {
|
|
1742
|
+
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",
|
|
1743
|
+
key: "uqj9uw"
|
|
1744
|
+
}], ["path", {
|
|
1745
|
+
d: "M16 9a5 5 0 0 1 0 6",
|
|
1746
|
+
key: "1q6k2b"
|
|
1747
|
+
}], ["path", {
|
|
1748
|
+
d: "M19.364 18.364a9 9 0 0 0 0-12.728",
|
|
1749
|
+
key: "ijwkga"
|
|
1750
|
+
}]];
|
|
1751
|
+
var Volume2 = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1752
|
+
iconNode: iconNode$2,
|
|
1753
|
+
name: "volume-2"
|
|
1754
|
+
}));
|
|
1755
|
+
var volume_2_default = Volume2;
|
|
1756
|
+
var iconNode$1 = [["path", {
|
|
1757
|
+
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",
|
|
1758
|
+
key: "uqj9uw"
|
|
1759
|
+
}], ["line", {
|
|
1760
|
+
x1: "22",
|
|
1761
|
+
x2: "16",
|
|
1762
|
+
y1: "9",
|
|
1763
|
+
y2: "15",
|
|
1764
|
+
key: "1ewh16"
|
|
1765
|
+
}], ["line", {
|
|
1766
|
+
x1: "16",
|
|
1767
|
+
x2: "22",
|
|
1768
|
+
y1: "9",
|
|
1769
|
+
y2: "15",
|
|
1770
|
+
key: "5ykzw1"
|
|
1771
|
+
}]];
|
|
1772
|
+
var VolumeX = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1773
|
+
iconNode: iconNode$1,
|
|
1774
|
+
name: "volume-x"
|
|
1775
|
+
}));
|
|
1776
|
+
var volume_x_default = VolumeX;
|
|
1777
|
+
var iconNode = [["path", {
|
|
1778
|
+
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",
|
|
1779
|
+
key: "1xq2db"
|
|
1780
|
+
}]];
|
|
1781
|
+
var Zap = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
1782
|
+
iconNode,
|
|
1783
|
+
name: "zap"
|
|
1784
|
+
}));
|
|
1785
|
+
var zap_default = Zap;
|
|
1491
1786
|
function getEnvFlag(name) {
|
|
1492
1787
|
const globalProcess = typeof globalThis === "object" && "process" in globalThis ? globalThis.process : void 0;
|
|
1493
1788
|
return globalProcess?.env?.[name];
|
|
@@ -1601,7 +1896,17 @@ function useTabs() {
|
|
|
1601
1896
|
zoomOut: (id) => window.vessel.tabs.zoomOut(id),
|
|
1602
1897
|
zoomReset: (id) => window.vessel.tabs.zoomReset(id),
|
|
1603
1898
|
reopenClosed: () => window.vessel.tabs.reopenClosed(),
|
|
1604
|
-
duplicate: (id) => window.vessel.tabs.duplicate(id)
|
|
1899
|
+
duplicate: (id) => window.vessel.tabs.duplicate(id),
|
|
1900
|
+
pin: (id) => window.vessel.tabs.pin(id),
|
|
1901
|
+
unpin: (id) => window.vessel.tabs.unpin(id),
|
|
1902
|
+
createGroup: (id) => window.vessel.tabs.createGroup(id),
|
|
1903
|
+
addToGroup: (id, groupId) => window.vessel.tabs.addToGroup(id, groupId),
|
|
1904
|
+
removeFromGroup: (id) => window.vessel.tabs.removeFromGroup(id),
|
|
1905
|
+
toggleGroupCollapsed: (groupId) => window.vessel.tabs.toggleGroupCollapsed(groupId),
|
|
1906
|
+
setGroupColor: (groupId, color) => window.vessel.tabs.setGroupColor(groupId, color),
|
|
1907
|
+
toggleMute: (id) => window.vessel.tabs.toggleMute(id),
|
|
1908
|
+
print: (id) => window.vessel.tabs.print(id),
|
|
1909
|
+
printToPdf: (id) => window.vessel.tabs.printToPdf(id)
|
|
1605
1910
|
};
|
|
1606
1911
|
}
|
|
1607
1912
|
const [now, setNow] = createSignal(Date.now());
|
|
@@ -1780,7 +2085,7 @@ function getAgentPresence(state, currentTime = Date.now()) {
|
|
|
1780
2085
|
}
|
|
1781
2086
|
return "idle";
|
|
1782
2087
|
}
|
|
1783
|
-
var _tmpl$$
|
|
2088
|
+
var _tmpl$$g = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$f = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$c = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list></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$c = /* @__PURE__ */ template(`<button><span class=tab-group-dot></span><span class=tab-group-name></span><span class=tab-group-count>`), _tmpl$5$b = /* @__PURE__ */ template(`<button class="tab-audio tab-audio-pinned">`), _tmpl$6$a = /* @__PURE__ */ template(`<div role=tab>`), _tmpl$7$9 = /* @__PURE__ */ template(`<span class=tab-title>`), _tmpl$8$6 = /* @__PURE__ */ template(`<button class=tab-audio>`), _tmpl$9$5 = /* @__PURE__ */ template(`<button class=tab-close>×`), _tmpl$0$5 = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$1$5 = /* @__PURE__ */ template(`<span class=tab-loading>`);
|
|
1784
2089
|
const TAB_CLOSE_MS = 200;
|
|
1785
2090
|
function stringToHue(str) {
|
|
1786
2091
|
let hash = 0;
|
|
@@ -1814,7 +2119,7 @@ const TabFavicon = (props) => {
|
|
|
1814
2119
|
})();
|
|
1815
2120
|
},
|
|
1816
2121
|
get children() {
|
|
1817
|
-
var _el$ = _tmpl$$
|
|
2122
|
+
var _el$ = _tmpl$$g();
|
|
1818
2123
|
_el$.addEventListener("error", () => setFailed(true));
|
|
1819
2124
|
createRenderEffect(() => setAttribute(_el$, "src", props.favicon));
|
|
1820
2125
|
return _el$;
|
|
@@ -1827,7 +2132,10 @@ const TabBar = () => {
|
|
|
1827
2132
|
activeTabId: activeTabId2,
|
|
1828
2133
|
switchTab,
|
|
1829
2134
|
closeTab,
|
|
1830
|
-
createTab
|
|
2135
|
+
createTab,
|
|
2136
|
+
createGroup,
|
|
2137
|
+
toggleGroupCollapsed,
|
|
2138
|
+
toggleMute
|
|
1831
2139
|
} = useTabs();
|
|
1832
2140
|
const {
|
|
1833
2141
|
runtimeState: runtimeState2
|
|
@@ -1835,6 +2143,30 @@ const TabBar = () => {
|
|
|
1835
2143
|
const now2 = useNow();
|
|
1836
2144
|
const [closingTabIds, setClosingTabIds] = createSignal(/* @__PURE__ */ new Set());
|
|
1837
2145
|
const modelActiveTabIds = createMemo(() => getAgentActiveTabIds(runtimeState2(), now2()));
|
|
2146
|
+
const tabEntries = createMemo(() => {
|
|
2147
|
+
const seenGroups = /* @__PURE__ */ new Set();
|
|
2148
|
+
return tabs2().flatMap((tab) => {
|
|
2149
|
+
const entries2 = [];
|
|
2150
|
+
if (tab.groupId && !seenGroups.has(tab.groupId)) {
|
|
2151
|
+
seenGroups.add(tab.groupId);
|
|
2152
|
+
entries2.push({
|
|
2153
|
+
type: "group",
|
|
2154
|
+
groupId: tab.groupId,
|
|
2155
|
+
name: tab.groupName || "Group",
|
|
2156
|
+
color: tab.groupColor || "blue",
|
|
2157
|
+
collapsed: !!tab.groupCollapsed,
|
|
2158
|
+
count: tabs2().filter((candidate) => candidate.groupId === tab.groupId).length
|
|
2159
|
+
});
|
|
2160
|
+
}
|
|
2161
|
+
if (!tab.groupCollapsed || tab.id === activeTabId2()) {
|
|
2162
|
+
entries2.push({
|
|
2163
|
+
type: "tab",
|
|
2164
|
+
tab
|
|
2165
|
+
});
|
|
2166
|
+
}
|
|
2167
|
+
return entries2;
|
|
2168
|
+
});
|
|
2169
|
+
});
|
|
1838
2170
|
const handleClose = (id) => {
|
|
1839
2171
|
setClosingTabIds((prev) => new Set(prev).add(id));
|
|
1840
2172
|
setTimeout(() => {
|
|
@@ -1847,61 +2179,168 @@ const TabBar = () => {
|
|
|
1847
2179
|
}, TAB_CLOSE_MS);
|
|
1848
2180
|
};
|
|
1849
2181
|
return (() => {
|
|
1850
|
-
var _el$3 = _tmpl$3$c(), _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling;
|
|
2182
|
+
var _el$3 = _tmpl$3$c(), _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;
|
|
1851
2183
|
insert(_el$4, createComponent(For, {
|
|
1852
2184
|
get each() {
|
|
1853
|
-
return
|
|
2185
|
+
return tabEntries();
|
|
1854
2186
|
},
|
|
1855
|
-
children: (
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
2187
|
+
children: (entry) => createComponent(Show, {
|
|
2188
|
+
get when() {
|
|
2189
|
+
return entry.type === "tab";
|
|
2190
|
+
},
|
|
2191
|
+
get fallback() {
|
|
2192
|
+
return memo(() => entry.type === "group")() && (() => {
|
|
2193
|
+
var _el$0 = _tmpl$4$c(), _el$1 = _el$0.firstChild, _el$10 = _el$1.nextSibling, _el$11 = _el$10.nextSibling;
|
|
2194
|
+
_el$0.$$contextmenu = (e) => {
|
|
2195
|
+
e.preventDefault();
|
|
2196
|
+
window.vessel.tabs.showGroupContextMenu(entry.groupId);
|
|
2197
|
+
};
|
|
2198
|
+
_el$0.$$click = () => void toggleGroupCollapsed(entry.groupId);
|
|
2199
|
+
insert(_el$10, () => entry.name);
|
|
2200
|
+
insert(_el$11, () => entry.count);
|
|
2201
|
+
createRenderEffect((_p$) => {
|
|
2202
|
+
var _v$ = `tab-group-chip group-${entry.color}`, _v$2 = !!entry.collapsed, _v$3 = `${entry.name} (${entry.count} tabs)`;
|
|
2203
|
+
_v$ !== _p$.e && className(_el$0, _p$.e = _v$);
|
|
2204
|
+
_v$2 !== _p$.t && _el$0.classList.toggle("collapsed", _p$.t = _v$2);
|
|
2205
|
+
_v$3 !== _p$.a && setAttribute(_el$0, "title", _p$.a = _v$3);
|
|
2206
|
+
return _p$;
|
|
2207
|
+
}, {
|
|
2208
|
+
e: void 0,
|
|
2209
|
+
t: void 0,
|
|
2210
|
+
a: void 0
|
|
2211
|
+
});
|
|
2212
|
+
return _el$0;
|
|
2213
|
+
})();
|
|
2214
|
+
},
|
|
2215
|
+
get children() {
|
|
2216
|
+
return memo(() => entry.type === "tab")() && (() => {
|
|
2217
|
+
const tab = entry.tab;
|
|
2218
|
+
return (() => {
|
|
2219
|
+
var _el$12 = _tmpl$6$a();
|
|
2220
|
+
_el$12.$$contextmenu = (e) => {
|
|
2221
|
+
e.preventDefault();
|
|
2222
|
+
window.vessel.tabs.showContextMenu(tab.id);
|
|
2223
|
+
};
|
|
2224
|
+
_el$12.addEventListener("auxclick", (e) => {
|
|
2225
|
+
if (e.button === 1 && !tab.isPinned) handleClose(tab.id);
|
|
2226
|
+
});
|
|
2227
|
+
_el$12.$$click = () => switchTab(tab.id);
|
|
2228
|
+
insert(_el$12, createComponent(TabFavicon, {
|
|
2229
|
+
get favicon() {
|
|
2230
|
+
return tab.favicon;
|
|
2231
|
+
},
|
|
2232
|
+
get title() {
|
|
2233
|
+
return tab.title || "New Tab";
|
|
2234
|
+
},
|
|
2235
|
+
get url() {
|
|
2236
|
+
return tab.url;
|
|
2237
|
+
}
|
|
2238
|
+
}), null);
|
|
2239
|
+
insert(_el$12, createComponent(Show, {
|
|
2240
|
+
get when() {
|
|
2241
|
+
return memo(() => !!tab.isPinned)() && (tab.isAudible || tab.isMuted);
|
|
2242
|
+
},
|
|
2243
|
+
get children() {
|
|
2244
|
+
var _el$13 = _tmpl$5$b();
|
|
2245
|
+
_el$13.$$click = (e) => {
|
|
2246
|
+
e.stopPropagation();
|
|
2247
|
+
void toggleMute(tab.id);
|
|
2248
|
+
};
|
|
2249
|
+
insert(_el$13, createComponent(Show, {
|
|
2250
|
+
get when() {
|
|
2251
|
+
return tab.isMuted;
|
|
2252
|
+
},
|
|
2253
|
+
get fallback() {
|
|
2254
|
+
return createComponent(volume_2_default, {
|
|
2255
|
+
size: 11
|
|
2256
|
+
});
|
|
2257
|
+
},
|
|
2258
|
+
get children() {
|
|
2259
|
+
return createComponent(volume_x_default, {
|
|
2260
|
+
size: 11
|
|
2261
|
+
});
|
|
2262
|
+
}
|
|
2263
|
+
}));
|
|
2264
|
+
createRenderEffect(() => setAttribute(_el$13, "title", tab.isMuted ? "Unmute tab" : "Mute tab"));
|
|
2265
|
+
return _el$13;
|
|
2266
|
+
}
|
|
2267
|
+
}), null);
|
|
2268
|
+
insert(_el$12, (() => {
|
|
2269
|
+
var _c$ = memo(() => !!!tab.isPinned);
|
|
2270
|
+
return () => _c$() && [memo(() => memo(() => !!modelActiveTabIds().has(tab.id))() && _tmpl$0$5()), (() => {
|
|
2271
|
+
var _el$14 = _tmpl$7$9();
|
|
2272
|
+
insert(_el$14, () => tab.title || "New Tab");
|
|
2273
|
+
return _el$14;
|
|
2274
|
+
})(), createComponent(Show, {
|
|
2275
|
+
get when() {
|
|
2276
|
+
return tab.isAudible || tab.isMuted;
|
|
2277
|
+
},
|
|
2278
|
+
get children() {
|
|
2279
|
+
var _el$15 = _tmpl$8$6();
|
|
2280
|
+
_el$15.$$click = (e) => {
|
|
2281
|
+
e.stopPropagation();
|
|
2282
|
+
void toggleMute(tab.id);
|
|
2283
|
+
};
|
|
2284
|
+
insert(_el$15, createComponent(Show, {
|
|
2285
|
+
get when() {
|
|
2286
|
+
return tab.isMuted;
|
|
2287
|
+
},
|
|
2288
|
+
get fallback() {
|
|
2289
|
+
return createComponent(volume_2_default, {
|
|
2290
|
+
size: 12
|
|
2291
|
+
});
|
|
2292
|
+
},
|
|
2293
|
+
get children() {
|
|
2294
|
+
return createComponent(volume_x_default, {
|
|
2295
|
+
size: 12
|
|
2296
|
+
});
|
|
2297
|
+
}
|
|
2298
|
+
}));
|
|
2299
|
+
createRenderEffect(() => setAttribute(_el$15, "title", tab.isMuted ? "Unmute tab" : "Mute tab"));
|
|
2300
|
+
return _el$15;
|
|
2301
|
+
}
|
|
2302
|
+
}), memo(() => memo(() => !!tab.isLoading)() && _tmpl$1$5()), (() => {
|
|
2303
|
+
var _el$16 = _tmpl$9$5();
|
|
2304
|
+
_el$16.$$click = (e) => {
|
|
2305
|
+
e.stopPropagation();
|
|
2306
|
+
handleClose(tab.id);
|
|
2307
|
+
};
|
|
2308
|
+
return _el$16;
|
|
2309
|
+
})()];
|
|
2310
|
+
})(), null);
|
|
2311
|
+
createRenderEffect((_p$) => {
|
|
2312
|
+
var _v$4 = `tab-item ${tab.isPinned ? "pinned" : ""} ${tab.id === activeTabId2() ? "active" : ""} ${modelActiveTabIds().has(tab.id) ? "model-active" : ""} ${tab.groupId ? `group-${tab.groupColor || "blue"}` : ""}`, _v$5 = !!closingTabIds().has(tab.id), _v$6 = tab.isPinned ? tab.title || tab.url : modelActiveTabIds().has(tab.id) ? `${tab.title || "New Tab"} • Agent active` : tab.title;
|
|
2313
|
+
_v$4 !== _p$.e && className(_el$12, _p$.e = _v$4);
|
|
2314
|
+
_v$5 !== _p$.t && _el$12.classList.toggle("closing", _p$.t = _v$5);
|
|
2315
|
+
_v$6 !== _p$.a && setAttribute(_el$12, "title", _p$.a = _v$6);
|
|
2316
|
+
return _p$;
|
|
2317
|
+
}, {
|
|
2318
|
+
e: void 0,
|
|
2319
|
+
t: void 0,
|
|
2320
|
+
a: void 0
|
|
2321
|
+
});
|
|
2322
|
+
return _el$12;
|
|
2323
|
+
})();
|
|
2324
|
+
})();
|
|
2325
|
+
}
|
|
2326
|
+
})
|
|
2327
|
+
}));
|
|
2328
|
+
_el$6.$$click = () => window.vessel.tabs.openNewWindow();
|
|
2329
|
+
insert(_el$6, createComponent(panel_top_default, {
|
|
2330
|
+
size: 14
|
|
2331
|
+
}));
|
|
2332
|
+
_el$7.$$click = () => {
|
|
2333
|
+
const id = activeTabId2();
|
|
2334
|
+
if (id) void createGroup(id);
|
|
2335
|
+
};
|
|
2336
|
+
insert(_el$7, createComponent(layers_plus_default, {
|
|
2337
|
+
size: 14
|
|
1902
2338
|
}));
|
|
1903
|
-
_el$
|
|
1904
|
-
_el$
|
|
2339
|
+
_el$8.$$click = () => createTab();
|
|
2340
|
+
insert(_el$8, createComponent(plus_default, {
|
|
2341
|
+
size: 15
|
|
2342
|
+
}));
|
|
2343
|
+
_el$9.$$click = () => window.vessel.tabs.openPrivateWindow();
|
|
1905
2344
|
return _el$3;
|
|
1906
2345
|
})();
|
|
1907
2346
|
};
|
|
@@ -2046,6 +2485,8 @@ function useBookmarks() {
|
|
|
2046
2485
|
),
|
|
2047
2486
|
updateBookmark: (id, updates) => window.vessel.bookmarks.updateBookmark(id, updates),
|
|
2048
2487
|
removeBookmark: (id) => window.vessel.bookmarks.removeBookmark(id),
|
|
2488
|
+
exportHtml: (options) => window.vessel.bookmarks.exportHtml(options),
|
|
2489
|
+
exportJson: () => window.vessel.bookmarks.exportJson(),
|
|
2049
2490
|
createFolder: (name) => window.vessel.bookmarks.createFolder(name),
|
|
2050
2491
|
createFolderWithSummary: (name, summary) => window.vessel.bookmarks.createFolderWithSummary(name, summary),
|
|
2051
2492
|
removeFolder: (id, deleteContents) => window.vessel.bookmarks.removeFolder(id, deleteContents),
|
|
@@ -2174,7 +2615,7 @@ const SEARCH_ENGINE_PRESETS = {
|
|
|
2174
2615
|
ecosia: { label: "Ecosia", url: "https://www.ecosia.org/search?q=" },
|
|
2175
2616
|
kagi: { label: "Kagi", url: "https://kagi.com/search?q=" }
|
|
2176
2617
|
};
|
|
2177
|
-
var _tmpl$$
|
|
2618
|
+
var _tmpl$$f = /* @__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$e = /* @__PURE__ */ template(`<div id=address-autocomplete class=autocomplete-dropdown role=listbox>`), _tmpl$3$b = /* @__PURE__ */ template(`<div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text>`), _tmpl$4$b = /* @__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$5$a = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$6$9 = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Changed recently`), _tmpl$7$8 = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>What changed since </span></div><div style=display:flex;gap:8px;align-items:center><button class=nav-btn title="Open the full What Changed timeline"style="height:24px;min-width:auto;padding:0 8px">Timeline</button><button class=page-diff-popup-close>×`), _tmpl$8$5 = /* @__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$9$4 = /* @__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$0$4 = /* @__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$1$4 = /* @__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$10$4 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$11$4 = /* @__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$12$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$13$3 = /* @__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$14$3 = /* @__PURE__ */ template(`<div role=option><span class=autocomplete-icon></span><span class=autocomplete-text><span class=autocomplete-title></span><span class=autocomplete-url>`), _tmpl$15$3 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$16$3 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$17$3 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$18$3 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$19$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$20$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$21$3 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><span class=page-diff-section></span><span class=page-diff-summary>`), _tmpl$22$3 = /* @__PURE__ */ template(`<li>`);
|
|
2178
2619
|
const AddressBar = () => {
|
|
2179
2620
|
const {
|
|
2180
2621
|
activeTab,
|
|
@@ -2430,7 +2871,7 @@ const AddressBar = () => {
|
|
|
2430
2871
|
insert(_el$, createComponent(Show, {
|
|
2431
2872
|
when: isPrivateWindow,
|
|
2432
2873
|
get children() {
|
|
2433
|
-
return _tmpl$$
|
|
2874
|
+
return _tmpl$$f();
|
|
2434
2875
|
}
|
|
2435
2876
|
}), _el$7);
|
|
2436
2877
|
_el$8.addEventListener("submit", handleSubmit);
|
|
@@ -2526,7 +2967,7 @@ const AddressBar = () => {
|
|
|
2526
2967
|
return memo(() => !!pageDiff())() && diffExpanded();
|
|
2527
2968
|
},
|
|
2528
2969
|
get children() {
|
|
2529
|
-
var _el$13 = _tmpl$7$
|
|
2970
|
+
var _el$13 = _tmpl$7$8(), _el$14 = _el$13.firstChild, _el$15 = _el$14.firstChild, _el$16 = _el$15.firstChild;
|
|
2530
2971
|
_el$16.firstChild;
|
|
2531
2972
|
var _el$23 = _el$15.nextSibling, _el$24 = _el$23.firstChild, _el$25 = _el$24.nextSibling;
|
|
2532
2973
|
insert(_el$16, () => formatRelativeTime(pageDiff().oldSnapshot.capturedAt), null);
|
|
@@ -2747,7 +3188,7 @@ const AddressBar = () => {
|
|
|
2747
3188
|
})();
|
|
2748
3189
|
};
|
|
2749
3190
|
delegateEvents(["click", "input", "keydown", "mousedown"]);
|
|
2750
|
-
var _tmpl$$
|
|
3191
|
+
var _tmpl$$e = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite aria-atomic=true>`), _tmpl$2$d = /* @__PURE__ */ template(`<div class=bookmark-toast role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
|
|
2751
3192
|
const TOAST_DURATION_MS$1 = 4200;
|
|
2752
3193
|
const TOAST_EXIT_MS$2 = 300;
|
|
2753
3194
|
function isBookmarkToastCandidate(action) {
|
|
@@ -2807,7 +3248,7 @@ const BookmarkNotifications = () => {
|
|
|
2807
3248
|
timeoutIds.clear();
|
|
2808
3249
|
});
|
|
2809
3250
|
return (() => {
|
|
2810
|
-
var _el$ = _tmpl$$
|
|
3251
|
+
var _el$ = _tmpl$$e();
|
|
2811
3252
|
insert(_el$, createComponent(For, {
|
|
2812
3253
|
get each() {
|
|
2813
3254
|
return toasts();
|
|
@@ -2823,7 +3264,7 @@ const BookmarkNotifications = () => {
|
|
|
2823
3264
|
return _el$;
|
|
2824
3265
|
})();
|
|
2825
3266
|
};
|
|
2826
|
-
var _tmpl$$
|
|
3267
|
+
var _tmpl$$d = /* @__PURE__ */ template(`<div class=bookmark-toast-stack aria-live=polite><div class="bookmark-toast highlight-toast"role=status><div class=bookmark-toast-title></div><div class=bookmark-toast-message>`);
|
|
2827
3268
|
const TOAST_DURATION_MS = 3e3;
|
|
2828
3269
|
const TOAST_EXIT_MS$1 = 300;
|
|
2829
3270
|
const HighlightNotifications = (props) => {
|
|
@@ -2862,7 +3303,7 @@ const HighlightNotifications = (props) => {
|
|
|
2862
3303
|
return memo(() => !!visible())() && current();
|
|
2863
3304
|
},
|
|
2864
3305
|
get children() {
|
|
2865
|
-
var _el$ = _tmpl$$
|
|
3306
|
+
var _el$ = _tmpl$$d(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
|
|
2866
3307
|
insert(_el$3, () => current().title);
|
|
2867
3308
|
insert(_el$4, () => current().message);
|
|
2868
3309
|
createRenderEffect(() => _el$2.classList.toggle("bookmark-toast-leaving", !!leaving()));
|
|
@@ -2870,7 +3311,7 @@ const HighlightNotifications = (props) => {
|
|
|
2870
3311
|
}
|
|
2871
3312
|
});
|
|
2872
3313
|
};
|
|
2873
|
-
var _tmpl$$
|
|
3314
|
+
var _tmpl$$c = /* @__PURE__ */ template(`<div class=download-toast-stack aria-live=polite>`), _tmpl$2$c = /* @__PURE__ */ template(`<span class=download-toast-done>✓`), _tmpl$3$a = /* @__PURE__ */ template(`<span class=download-toast-failed>!`), _tmpl$4$a = /* @__PURE__ */ template(`<div class=download-toast-bar-track><div class=download-toast-bar-fill>`), _tmpl$5$9 = /* @__PURE__ */ template(`<div class=download-toast-size>`), _tmpl$6$8 = /* @__PURE__ */ template(`<div class="download-toast-size download-toast-size-done"> downloaded`), _tmpl$7$7 = /* @__PURE__ */ template(`<div class=download-toast role=status><div class=download-toast-header><span class=download-toast-filename>`);
|
|
2874
3315
|
const TOAST_DONE_DURATION_MS = 4200;
|
|
2875
3316
|
const TOAST_EXIT_MS = 300;
|
|
2876
3317
|
function formatBytes(bytes) {
|
|
@@ -2961,13 +3402,13 @@ const DownloadToast = () => {
|
|
|
2961
3402
|
return Math.min(100, Math.round(d.receivedBytes / d.totalBytes * 100));
|
|
2962
3403
|
};
|
|
2963
3404
|
return (() => {
|
|
2964
|
-
var _el$ = _tmpl$$
|
|
3405
|
+
var _el$ = _tmpl$$c();
|
|
2965
3406
|
insert(_el$, createComponent(For, {
|
|
2966
3407
|
get each() {
|
|
2967
3408
|
return downloads();
|
|
2968
3409
|
},
|
|
2969
3410
|
children: (dl) => (() => {
|
|
2970
|
-
var _el$2 = _tmpl$7$
|
|
3411
|
+
var _el$2 = _tmpl$7$7(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
|
|
2971
3412
|
insert(_el$4, () => dl.filename);
|
|
2972
3413
|
insert(_el$3, createComponent(Show, {
|
|
2973
3414
|
get when() {
|
|
@@ -3026,7 +3467,7 @@ const DownloadToast = () => {
|
|
|
3026
3467
|
return _el$;
|
|
3027
3468
|
})();
|
|
3028
3469
|
};
|
|
3029
|
-
var _tmpl$$
|
|
3470
|
+
var _tmpl$$b = /* @__PURE__ */ template(`<div class=find-bar><input class=find-bar-input type=text placeholder="Find in page..."><button class=find-bar-btn title="Previous (Shift+Enter)">▲</button><button class=find-bar-btn title="Next (Enter)">▼</button><button class="find-bar-btn find-bar-close"title="Close (Escape)">×`), _tmpl$2$b = /* @__PURE__ */ template(`<span class=find-bar-count>`);
|
|
3030
3471
|
const FindBar = () => {
|
|
3031
3472
|
const [open, setOpen] = createSignal(false);
|
|
3032
3473
|
const [query, setQuery] = createSignal("");
|
|
@@ -3104,7 +3545,7 @@ const FindBar = () => {
|
|
|
3104
3545
|
return open();
|
|
3105
3546
|
},
|
|
3106
3547
|
get children() {
|
|
3107
|
-
var _el$ = _tmpl$$
|
|
3548
|
+
var _el$ = _tmpl$$b(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling;
|
|
3108
3549
|
_el$2.$$input = (e) => handleInput(e.currentTarget.value);
|
|
3109
3550
|
var _ref$ = inputRef;
|
|
3110
3551
|
typeof _ref$ === "function" ? use(_ref$, _el$2) : inputRef = _el$2;
|
|
@@ -3131,7 +3572,7 @@ const FindBar = () => {
|
|
|
3131
3572
|
});
|
|
3132
3573
|
};
|
|
3133
3574
|
delegateEvents(["input", "click"]);
|
|
3134
|
-
var _tmpl$$
|
|
3575
|
+
var _tmpl$$a = /* @__PURE__ */ template(`<div class=flow-progress>`), _tmpl$2$a = /* @__PURE__ */ template(`<div class=flow-progress-hint>Last: `), _tmpl$3$9 = /* @__PURE__ */ template(`<div class=flow-progress-hint>Next: `), _tmpl$4$9 = /* @__PURE__ */ template(`<div class=flow-progress-section><div class=flow-progress-header><span class=flow-progress-goal></span><span class=flow-progress-pct>%</span></div><div class=flow-progress-bar-track><div class=flow-progress-bar-fill></div></div><div class=flow-steps>`), _tmpl$5$8 = /* @__PURE__ */ template(`<div><span class=flow-step-dot></span><span class=flow-step-label>`);
|
|
3135
3576
|
const FlowProgress = () => {
|
|
3136
3577
|
const {
|
|
3137
3578
|
runtimeState: runtimeState2
|
|
@@ -3162,7 +3603,7 @@ const FlowProgress = () => {
|
|
|
3162
3603
|
return flow() || tracker();
|
|
3163
3604
|
},
|
|
3164
3605
|
get children() {
|
|
3165
|
-
var _el$ = _tmpl$$
|
|
3606
|
+
var _el$ = _tmpl$$a();
|
|
3166
3607
|
insert(_el$, createComponent(Show, {
|
|
3167
3608
|
get when() {
|
|
3168
3609
|
return tracker();
|
|
@@ -3262,7 +3703,7 @@ function formatTime(iso, options) {
|
|
|
3262
3703
|
...options?.includeSeconds && { second: "2-digit" }
|
|
3263
3704
|
});
|
|
3264
3705
|
}
|
|
3265
|
-
var _tmpl$$
|
|
3706
|
+
var _tmpl$$9 = /* @__PURE__ */ template(`<div class=agent-summary-hud>`), _tmpl$2$9 = /* @__PURE__ */ template(`<span class=agent-transcript-live><span class=agent-transcript-live-dot aria-hidden=true></span>Live`), _tmpl$3$8 = /* @__PURE__ */ template(`<div class=agent-transcript-list>`), _tmpl$4$8 = /* @__PURE__ */ template(`<aside class=agent-transcript-dock><div class=agent-transcript-header><div class=agent-transcript-title-row><span class=agent-transcript-title>Agent Transcript</span></div><div class=agent-transcript-actions><button class=agent-transcript-icon></button><button class=agent-transcript-icon data-tooltip=Hide>×`), _tmpl$5$7 = /* @__PURE__ */ template(`<span class=agent-summary-live-dot aria-hidden=true>`), _tmpl$6$7 = /* @__PURE__ */ template(`<span class=agent-summary-text>: `), _tmpl$7$6 = /* @__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>`);
|
|
3266
3707
|
const AgentTranscriptDock = () => {
|
|
3267
3708
|
const {
|
|
3268
3709
|
runtimeState: runtimeState2
|
|
@@ -3299,7 +3740,7 @@ const AgentTranscriptDock = () => {
|
|
|
3299
3740
|
return isSummary();
|
|
3300
3741
|
},
|
|
3301
3742
|
get children() {
|
|
3302
|
-
var _el$ = _tmpl$$
|
|
3743
|
+
var _el$ = _tmpl$$9();
|
|
3303
3744
|
insert(_el$, createComponent(Show, {
|
|
3304
3745
|
get when() {
|
|
3305
3746
|
return latestEntry();
|
|
@@ -3354,7 +3795,7 @@ const AgentTranscriptDock = () => {
|
|
|
3354
3795
|
return visibleEntries();
|
|
3355
3796
|
},
|
|
3356
3797
|
children: (entry) => (() => {
|
|
3357
|
-
var _el$12 = _tmpl$7$
|
|
3798
|
+
var _el$12 = _tmpl$7$6(), _el$13 = _el$12.firstChild, _el$14 = _el$13.firstChild, _el$15 = _el$14.nextSibling, _el$16 = _el$13.nextSibling;
|
|
3358
3799
|
insert(_el$14, () => entry.title || entry.kind);
|
|
3359
3800
|
insert(_el$15, () => formatTime(entry.updatedAt));
|
|
3360
3801
|
insert(_el$16, () => entry.text);
|
|
@@ -3719,7 +4160,7 @@ function useAnimatedPresence(isOpen, exitDurationMs) {
|
|
|
3719
4160
|
});
|
|
3720
4161
|
return { visible, closing };
|
|
3721
4162
|
}
|
|
3722
|
-
var _tmpl$$
|
|
4163
|
+
var _tmpl$$8 = /* @__PURE__ */ template(`<div class=command-bar-no-provider><p>Configure a chat provider to start using the AI assistant.</p><button class=command-bar-no-provider-btn>Open Settings <kbd>Ctrl+,`), _tmpl$2$8 = /* @__PURE__ */ template(`<div class=command-bar-recent><span class=command-bar-recent-label>Recent</span><div class=command-bar-recent-list>`), _tmpl$3$7 = /* @__PURE__ */ template(`<span>Try "summarize" or ask a question`), _tmpl$4$7 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=command-bar><form><div class=command-bar-icon><svg width=16 height=16 viewBox="0 0 16 16"><circle cx=8 cy=8 r=6 fill=none stroke=var(--accent-primary) stroke-width=1.5></circle><circle cx=6 cy=7 r=0.8 fill=var(--accent-primary)></circle><circle cx=10 cy=7 r=0.8 fill=var(--accent-primary)></circle><path d="M6 10c0.5 0.8 3.5 0.8 4 0"fill=none stroke=var(--accent-primary) stroke-width=0.8 stroke-linecap=round></path></svg></div><input class=command-bar-input type=text></form><div class=command-bar-hints><span><kbd>Enter</kbd> to ask</span><span><kbd>Esc</kbd> to close`), _tmpl$5$6 = /* @__PURE__ */ template(`<button class=command-bar-recent-item type=button>`), _tmpl$6$6 = /* @__PURE__ */ template(`<span>Set up a provider in Settings first`);
|
|
3723
4164
|
const COMMAND_BAR_EXIT_MS = 200;
|
|
3724
4165
|
const CommandBar = () => {
|
|
3725
4166
|
const {
|
|
@@ -3787,7 +4228,7 @@ const CommandBar = () => {
|
|
|
3787
4228
|
return !hasProvider();
|
|
3788
4229
|
},
|
|
3789
4230
|
get children() {
|
|
3790
|
-
var _el$6 = _tmpl$$
|
|
4231
|
+
var _el$6 = _tmpl$$8(), _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling;
|
|
3791
4232
|
_el$8.$$click = () => {
|
|
3792
4233
|
closeCommandBar();
|
|
3793
4234
|
openSettings();
|
|
@@ -5335,7 +5776,7 @@ function getBookmarkSearchMatch(args) {
|
|
|
5335
5776
|
}
|
|
5336
5777
|
return { matchedFields, score };
|
|
5337
5778
|
}
|
|
5338
|
-
var _tmpl$$
|
|
5779
|
+
var _tmpl$$7 = /* @__PURE__ */ template(`<div class=dropdown-select-menu role=listbox>`), _tmpl$2$7 = /* @__PURE__ */ template(`<div><button class=dropdown-select-trigger type=button aria-haspopup=listbox><span class=dropdown-select-value></span><span class=dropdown-select-caret aria-hidden=true>▾`), _tmpl$3$6 = /* @__PURE__ */ template(`<span class=dropdown-select-option-description>`), _tmpl$4$6 = /* @__PURE__ */ template(`<button class=dropdown-select-option type=button role=option><span class=dropdown-select-option-copy><span class=dropdown-select-option-label>`);
|
|
5339
5780
|
const DropdownSelect = (props) => {
|
|
5340
5781
|
const [open, setOpen] = createSignal(false);
|
|
5341
5782
|
let rootRef;
|
|
@@ -5369,7 +5810,7 @@ const DropdownSelect = (props) => {
|
|
|
5369
5810
|
return open();
|
|
5370
5811
|
},
|
|
5371
5812
|
get children() {
|
|
5372
|
-
var _el$5 = _tmpl$$
|
|
5813
|
+
var _el$5 = _tmpl$$7();
|
|
5373
5814
|
insert(_el$5, createComponent(For, {
|
|
5374
5815
|
get each() {
|
|
5375
5816
|
return props.options;
|
|
@@ -5423,216 +5864,6 @@ const DropdownSelect = (props) => {
|
|
|
5423
5864
|
})();
|
|
5424
5865
|
};
|
|
5425
5866
|
delegateEvents(["click"]);
|
|
5426
|
-
var defaultAttributes = {
|
|
5427
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
5428
|
-
width: 24,
|
|
5429
|
-
height: 24,
|
|
5430
|
-
viewBox: "0 0 24 24",
|
|
5431
|
-
fill: "none",
|
|
5432
|
-
stroke: "currentColor",
|
|
5433
|
-
"stroke-width": 2,
|
|
5434
|
-
"stroke-linecap": "round",
|
|
5435
|
-
"stroke-linejoin": "round"
|
|
5436
|
-
};
|
|
5437
|
-
var defaultAttributes_default = defaultAttributes;
|
|
5438
|
-
var LucideContext = createContext({
|
|
5439
|
-
size: 24,
|
|
5440
|
-
color: "currentColor",
|
|
5441
|
-
strokeWidth: 2,
|
|
5442
|
-
absoluteStrokeWidth: false,
|
|
5443
|
-
class: ""
|
|
5444
|
-
});
|
|
5445
|
-
var _tmpl$$7 = /* @__PURE__ */ template(`<svg>`);
|
|
5446
|
-
var hasA11yProp = (props) => {
|
|
5447
|
-
for (const prop in props) {
|
|
5448
|
-
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
5449
|
-
return true;
|
|
5450
|
-
}
|
|
5451
|
-
}
|
|
5452
|
-
return false;
|
|
5453
|
-
};
|
|
5454
|
-
var mergeClasses = (...classes) => classes.filter((className2, index, array) => {
|
|
5455
|
-
return Boolean(className2) && className2.trim() !== "" && array.indexOf(className2) === index;
|
|
5456
|
-
}).join(" ").trim();
|
|
5457
|
-
var toCamelCase = (string) => string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase());
|
|
5458
|
-
var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
5459
|
-
var toPascalCase = (string) => {
|
|
5460
|
-
const camelCase = toCamelCase(string);
|
|
5461
|
-
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
|
5462
|
-
};
|
|
5463
|
-
var Icon = (props) => {
|
|
5464
|
-
const [localProps, rest] = splitProps(props, ["color", "size", "strokeWidth", "children", "class", "name", "iconNode", "absoluteStrokeWidth"]);
|
|
5465
|
-
const globalProps = useContext(LucideContext);
|
|
5466
|
-
return (() => {
|
|
5467
|
-
var _el$ = _tmpl$$7();
|
|
5468
|
-
spread(_el$, mergeProps(defaultAttributes_default, {
|
|
5469
|
-
get width() {
|
|
5470
|
-
return localProps.size ?? globalProps.size ?? defaultAttributes_default.width;
|
|
5471
|
-
},
|
|
5472
|
-
get height() {
|
|
5473
|
-
return localProps.size ?? globalProps.size ?? defaultAttributes_default.height;
|
|
5474
|
-
},
|
|
5475
|
-
get stroke() {
|
|
5476
|
-
return localProps.color ?? globalProps.color ?? defaultAttributes_default.stroke;
|
|
5477
|
-
},
|
|
5478
|
-
get ["stroke-width"]() {
|
|
5479
|
-
return memo(() => (localProps.absoluteStrokeWidth ?? globalProps.absoluteStrokeWidth) === true)() ? Number(localProps.strokeWidth ?? globalProps.strokeWidth ?? defaultAttributes_default["stroke-width"]) * 24 / Number(localProps.size ?? globalProps.size) : Number(localProps.strokeWidth ?? globalProps.strokeWidth ?? defaultAttributes_default["stroke-width"]);
|
|
5480
|
-
},
|
|
5481
|
-
get ["class"]() {
|
|
5482
|
-
return mergeClasses("lucide", "lucide-icon", globalProps.class, ...localProps.name != null ? [`lucide-${toKebabCase(toPascalCase(localProps.name))}`, `lucide-${toKebabCase(localProps.name)}`] : [], localProps.class);
|
|
5483
|
-
},
|
|
5484
|
-
get ["aria-hidden"]() {
|
|
5485
|
-
return !localProps.children && !hasA11yProp(rest) ? "true" : void 0;
|
|
5486
|
-
}
|
|
5487
|
-
}, rest), true, true);
|
|
5488
|
-
insert(_el$, createComponent(For, {
|
|
5489
|
-
get each() {
|
|
5490
|
-
return localProps.iconNode;
|
|
5491
|
-
},
|
|
5492
|
-
children: ([elementName, attrs]) => {
|
|
5493
|
-
return createComponent(Dynamic, mergeProps({
|
|
5494
|
-
component: elementName
|
|
5495
|
-
}, attrs));
|
|
5496
|
-
}
|
|
5497
|
-
}));
|
|
5498
|
-
return _el$;
|
|
5499
|
-
})();
|
|
5500
|
-
};
|
|
5501
|
-
var Icon_default = Icon;
|
|
5502
|
-
var iconNode$8 = [["path", {
|
|
5503
|
-
d: "M12 7v14",
|
|
5504
|
-
key: "1akyts"
|
|
5505
|
-
}], ["path", {
|
|
5506
|
-
d: "M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",
|
|
5507
|
-
key: "ruj8y"
|
|
5508
|
-
}]];
|
|
5509
|
-
var BookOpen = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
5510
|
-
iconNode: iconNode$8,
|
|
5511
|
-
name: "book-open"
|
|
5512
|
-
}));
|
|
5513
|
-
var book_open_default = BookOpen;
|
|
5514
|
-
var iconNode$7 = [["rect", {
|
|
5515
|
-
width: "8",
|
|
5516
|
-
height: "4",
|
|
5517
|
-
x: "8",
|
|
5518
|
-
y: "2",
|
|
5519
|
-
rx: "1",
|
|
5520
|
-
ry: "1",
|
|
5521
|
-
key: "tgr4d6"
|
|
5522
|
-
}], ["path", {
|
|
5523
|
-
d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",
|
|
5524
|
-
key: "116196"
|
|
5525
|
-
}], ["path", {
|
|
5526
|
-
d: "M12 11h4",
|
|
5527
|
-
key: "1jrz19"
|
|
5528
|
-
}], ["path", {
|
|
5529
|
-
d: "M12 16h4",
|
|
5530
|
-
key: "n85exb"
|
|
5531
|
-
}], ["path", {
|
|
5532
|
-
d: "M8 11h.01",
|
|
5533
|
-
key: "1dfujw"
|
|
5534
|
-
}], ["path", {
|
|
5535
|
-
d: "M8 16h.01",
|
|
5536
|
-
key: "18s6g9"
|
|
5537
|
-
}]];
|
|
5538
|
-
var ClipboardList = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
5539
|
-
iconNode: iconNode$7,
|
|
5540
|
-
name: "clipboard-list"
|
|
5541
|
-
}));
|
|
5542
|
-
var clipboard_list_default = ClipboardList;
|
|
5543
|
-
var iconNode$6 = [["circle", {
|
|
5544
|
-
cx: "12",
|
|
5545
|
-
cy: "12",
|
|
5546
|
-
r: "10",
|
|
5547
|
-
key: "1mglay"
|
|
5548
|
-
}], ["path", {
|
|
5549
|
-
d: "M12 6v6l4 2",
|
|
5550
|
-
key: "mmk7yg"
|
|
5551
|
-
}]];
|
|
5552
|
-
var Clock = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
5553
|
-
iconNode: iconNode$6,
|
|
5554
|
-
name: "clock"
|
|
5555
|
-
}));
|
|
5556
|
-
var clock_default = Clock;
|
|
5557
|
-
var iconNode$5 = [["path", {
|
|
5558
|
-
d: "M12 15V3",
|
|
5559
|
-
key: "m9g1x1"
|
|
5560
|
-
}], ["path", {
|
|
5561
|
-
d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",
|
|
5562
|
-
key: "ih7n3h"
|
|
5563
|
-
}], ["path", {
|
|
5564
|
-
d: "m7 10 5 5 5-5",
|
|
5565
|
-
key: "brsn70"
|
|
5566
|
-
}]];
|
|
5567
|
-
var Download = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
5568
|
-
iconNode: iconNode$5,
|
|
5569
|
-
name: "download"
|
|
5570
|
-
}));
|
|
5571
|
-
var download_default = Download;
|
|
5572
|
-
var iconNode$4 = [["circle", {
|
|
5573
|
-
cx: "12",
|
|
5574
|
-
cy: "12",
|
|
5575
|
-
r: "10",
|
|
5576
|
-
key: "1mglay"
|
|
5577
|
-
}], ["path", {
|
|
5578
|
-
d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",
|
|
5579
|
-
key: "13o1zl"
|
|
5580
|
-
}], ["path", {
|
|
5581
|
-
d: "M2 12h20",
|
|
5582
|
-
key: "9i4pu4"
|
|
5583
|
-
}]];
|
|
5584
|
-
var Globe = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
5585
|
-
iconNode: iconNode$4,
|
|
5586
|
-
name: "globe"
|
|
5587
|
-
}));
|
|
5588
|
-
var globe_default = Globe;
|
|
5589
|
-
var iconNode$3 = [["path", {
|
|
5590
|
-
d: "m21 21-4.34-4.34",
|
|
5591
|
-
key: "14j7rj"
|
|
5592
|
-
}], ["circle", {
|
|
5593
|
-
cx: "11",
|
|
5594
|
-
cy: "11",
|
|
5595
|
-
r: "8",
|
|
5596
|
-
key: "4ej97u"
|
|
5597
|
-
}]];
|
|
5598
|
-
var Search = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
5599
|
-
iconNode: iconNode$3,
|
|
5600
|
-
name: "search"
|
|
5601
|
-
}));
|
|
5602
|
-
var search_default = Search;
|
|
5603
|
-
var iconNode$2 = [["path", {
|
|
5604
|
-
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",
|
|
5605
|
-
key: "r04s7s"
|
|
5606
|
-
}]];
|
|
5607
|
-
var Star = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
5608
|
-
iconNode: iconNode$2,
|
|
5609
|
-
name: "star"
|
|
5610
|
-
}));
|
|
5611
|
-
var star_default = Star;
|
|
5612
|
-
var iconNode$1 = [["path", {
|
|
5613
|
-
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",
|
|
5614
|
-
key: "vktsd0"
|
|
5615
|
-
}], ["circle", {
|
|
5616
|
-
cx: "7.5",
|
|
5617
|
-
cy: "7.5",
|
|
5618
|
-
r: ".5",
|
|
5619
|
-
fill: "currentColor",
|
|
5620
|
-
key: "kqv944"
|
|
5621
|
-
}]];
|
|
5622
|
-
var Tag = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
5623
|
-
iconNode: iconNode$1,
|
|
5624
|
-
name: "tag"
|
|
5625
|
-
}));
|
|
5626
|
-
var tag_default = Tag;
|
|
5627
|
-
var iconNode = [["path", {
|
|
5628
|
-
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",
|
|
5629
|
-
key: "1xq2db"
|
|
5630
|
-
}]];
|
|
5631
|
-
var Zap = (props) => createComponent(Icon_default, mergeProps(props, {
|
|
5632
|
-
iconNode,
|
|
5633
|
-
name: "zap"
|
|
5634
|
-
}));
|
|
5635
|
-
var zap_default = Zap;
|
|
5636
5867
|
const BUNDLED_KIT_IDS = /* @__PURE__ */ new Set([
|
|
5637
5868
|
"research-collect",
|
|
5638
5869
|
"price-scout",
|
|
@@ -5782,7 +6013,7 @@ function renderKitPrompt(kit, values) {
|
|
|
5782
6013
|
(_, key) => values[key] ?? ""
|
|
5783
6014
|
);
|
|
5784
6015
|
}
|
|
5785
|
-
var _tmpl$$6 = /* @__PURE__ */ template(`<div class=kit-upsell><div class=kit-upsell-icon aria-hidden=true></div><p class=kit-upsell-title>Vessel Premium</p><p class=kit-upsell-body>Automation Kits are a premium feature. Upgrade to unlock pre-built workflows you can launch with one click.</p><button class="agent-primary-button kit-upsell-btn"type=button>Start 7-day free trial — $5.99/mo after`), _tmpl$2$6 = /* @__PURE__ */ template(`<div class=kit-list-header><span class=agent-panel-title>Automation Kits <span class=kit-beta-tag>Beta</span></span><div class=kit-list-header-actions><span class=kit-list-count> kits</span><button class=kit-install-btn type=button title="Install a kit from a .kit.json file">+ Install`), _tmpl$3$5 = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$5 = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$5 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$5 = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$
|
|
6016
|
+
var _tmpl$$6 = /* @__PURE__ */ template(`<div class=kit-upsell><div class=kit-upsell-icon aria-hidden=true></div><p class=kit-upsell-title>Vessel Premium</p><p class=kit-upsell-body>Automation Kits are a premium feature. Upgrade to unlock pre-built workflows you can launch with one click.</p><button class="agent-primary-button kit-upsell-btn"type=button>Start 7-day free trial — $5.99/mo after`), _tmpl$2$6 = /* @__PURE__ */ template(`<div class=kit-list-header><span class=agent-panel-title>Automation Kits <span class=kit-beta-tag>Beta</span></span><div class=kit-list-header-actions><span class=kit-list-count> kits</span><button class=kit-install-btn type=button title="Install a kit from a .kit.json file">+ Install`), _tmpl$3$5 = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$5 = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$5 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$5 = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$5 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$4 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$3 = /* @__PURE__ */ template(`<div class=kit-form-header><button class=kit-back-btn type=button title="Back to kits"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M9 11L5 7l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Back</button><div class=kit-form-title>`), _tmpl$0$3 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$3 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$3 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date & time</label><input class=kit-form-input type=datetime-local>`), _tmpl$13$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time of day</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$14$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$16$2 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$18$2 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$2 = /* @__PURE__ */ template(`<div class=sched-edit-backdrop><div class=sched-edit-panel><div class=sched-edit-header><span class=sched-edit-title>Edit schedule</span><span class=sched-edit-job-name></span></div><div class=kit-schedule-types></div><div class=sched-edit-actions><button class=kit-back-btn type=button>Cancel</button><button class=agent-primary-button type=button>Save`), _tmpl$23$2 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$2 = /* @__PURE__ */ template(`<div class=kit-card-meta>~<!> min`), _tmpl$25$2 = /* @__PURE__ */ template(`<button class=kit-remove-btn type=button>×`), _tmpl$26$2 = /* @__PURE__ */ template(`<div class=kit-card role=button tabindex=0><span class=kit-card-icon aria-hidden=true></span><div class=kit-card-body><div class=kit-card-name></div><div class=kit-card-desc>`), _tmpl$27$2 = /* @__PURE__ */ template(`<svg class=kit-card-caret width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M5 3l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$28$2 = /* @__PURE__ */ template(`<div class=kit-sched-next>Next: `), _tmpl$29$2 = /* @__PURE__ */ template(`<div class=sched-context-menu><button class=sched-ctx-item type=button>Edit task</button><button class=sched-ctx-item type=button>Edit schedule</button><div class=sched-ctx-divider></div><button class=sched-ctx-item type=button></button><button class="sched-ctx-item sched-ctx-danger"type=button>Delete`), _tmpl$30$2 = /* @__PURE__ */ template(`<div class=kit-sched-card><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-sched-body><div class=kit-sched-name></div><div class=kit-sched-meta></div></div><div class=kit-sched-actions><button class=kit-sched-toggle type=button></button><button class=kit-remove-btn type=button title="Delete schedule"aria-label="Delete schedule">×`), _tmpl$31$2 = /* @__PURE__ */ template(`<div class=kit-activity-output>`), _tmpl$32$2 = /* @__PURE__ */ template(`<div class=kit-activity-card><div class=kit-activity-header><div class=kit-activity-title><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-activity-title-copy><div class=kit-sched-name></div><div class=kit-activity-time></div></div></div><span class=kit-activity-badge>`), _tmpl$33$2 = /* @__PURE__ */ template(`<div class="kit-activity-output kit-activity-placeholder">`), _tmpl$34$2 = /* @__PURE__ */ template(`<span class=kit-form-required aria-hidden=true>*`), _tmpl$35$2 = /* @__PURE__ */ template(`<textarea class=kit-form-textarea rows=3>`), _tmpl$36$2 = /* @__PURE__ */ template(`<p class=kit-form-hint>`), _tmpl$37$2 = /* @__PURE__ */ template(`<div class=kit-form-field><label class=kit-form-label>`), _tmpl$38$2 = /* @__PURE__ */ template(`<input class=kit-form-input>`), _tmpl$39$2 = /* @__PURE__ */ template(`<span class=kit-run-spinner aria-hidden=true>`), _tmpl$40$2 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=sched-type>`), _tmpl$41$2 = /* @__PURE__ */ template(`<option>`), _tmpl$42$2 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=edit-sched-type>`);
|
|
5786
6017
|
const ICON_MAP = {
|
|
5787
6018
|
BookOpen: book_open_default,
|
|
5788
6019
|
Tag: tag_default,
|
|
@@ -6281,7 +6512,7 @@ const AutomationTab = (props) => {
|
|
|
6281
6512
|
},
|
|
6282
6513
|
get children() {
|
|
6283
6514
|
return [(() => {
|
|
6284
|
-
var _el$19 = _tmpl$7$
|
|
6515
|
+
var _el$19 = _tmpl$7$5(), _el$20 = _el$19.firstChild, _el$21 = _el$20.nextSibling;
|
|
6285
6516
|
insert(_el$19, createComponent(zap_default, {
|
|
6286
6517
|
size: 12
|
|
6287
6518
|
}), _el$20);
|
|
@@ -6621,7 +6852,7 @@ const AutomationTab = (props) => {
|
|
|
6621
6852
|
})();
|
|
6622
6853
|
};
|
|
6623
6854
|
delegateEvents(["click", "input", "keydown", "contextmenu"]);
|
|
6624
|
-
var _tmpl$$5 = /* @__PURE__ */ template(`<div class=agent-muted>Loading...`), _tmpl$2$5 = /* @__PURE__ */ template(`<div class=agent-muted>`), _tmpl$3$4 = /* @__PURE__ */ template(`<div class=agent-muted>No changes detected yet.`), _tmpl$4$4 = /* @__PURE__ */ template(`<div class=agent-section-title>Recent page changes`), _tmpl$5$4 = /* @__PURE__ */ template(`<div class=page-diff-list>`), _tmpl$6$4 = /* @__PURE__ */ template(`<div class=page-diff-timeline>`), _tmpl$7$
|
|
6855
|
+
var _tmpl$$5 = /* @__PURE__ */ template(`<div class=agent-muted>Loading...`), _tmpl$2$5 = /* @__PURE__ */ template(`<div class=agent-muted>`), _tmpl$3$4 = /* @__PURE__ */ template(`<div class=agent-muted>No changes detected yet.`), _tmpl$4$4 = /* @__PURE__ */ template(`<div class=agent-section-title>Recent page changes`), _tmpl$5$4 = /* @__PURE__ */ template(`<div class=page-diff-list>`), _tmpl$6$4 = /* @__PURE__ */ template(`<div class=page-diff-timeline>`), _tmpl$7$4 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$8$3 = /* @__PURE__ */ template(`<div class=page-diff-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=page-diff-content><div class=page-diff-time></div><div class=page-diff-summary>`);
|
|
6625
6856
|
const PageDiffTimeline = () => {
|
|
6626
6857
|
const {
|
|
6627
6858
|
activeTab
|
|
@@ -6718,7 +6949,7 @@ const PageDiffTimeline = () => {
|
|
|
6718
6949
|
return i() < bursts().length - 1;
|
|
6719
6950
|
},
|
|
6720
6951
|
get children() {
|
|
6721
|
-
return _tmpl$7$
|
|
6952
|
+
return _tmpl$7$4();
|
|
6722
6953
|
}
|
|
6723
6954
|
}), null);
|
|
6724
6955
|
insert(_el$10, () => new Date(burst.detectedAt).toLocaleString());
|
|
@@ -6735,7 +6966,7 @@ const PageDiffTimeline = () => {
|
|
|
6735
6966
|
})();
|
|
6736
6967
|
};
|
|
6737
6968
|
const vesselLogo = "" + new URL("vessel-logo-transparent-IT25qr-Z.png", import.meta.url).href;
|
|
6738
|
-
var _tmpl$$4 = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$4 = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$3 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$3 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$5$3 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$6$3 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$7$2 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$8$2 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$9$2 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$0$2 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$1$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$10$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><textarea class=agent-textarea rows=2 placeholder="Optional note for this checkpoint"></textarea><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$11$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$12$2 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><button class=history-clear-btn>Clear</button></div><div class=history-list>`), _tmpl$13$1 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div class=agent-panel-title>What Changed</div><div class=agent-panel-subtitle>`), _tmpl$14$1 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$15$1 = /* @__PURE__ */ template(`<span>`), _tmpl$16$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$17$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$18$1 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$19$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$20$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$21$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$22$1 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$23$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$24$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button></div><div class=sidebar-messages><div>`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class="agent-card agent-card-approval"><div class=agent-card-approval-stripe aria-hidden=true></div><div class=agent-card-title></div><div class=agent-card-copy></div><div class=agent-card-copy></div><div class=agent-card-actions><button class=agent-primary-button type=button>Approve</button><button class=agent-control-button type=button>Reject`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$32$1 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$34$1 = /* @__PURE__ */ template(`<div class=agent-card><div class=agent-action-row><span class=agent-card-title></span><span></span></div><div class=agent-card-copy>`), _tmpl$35$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$36$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$37$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$38$1 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$39$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-delete-confirm><p class=bookmark-delete-prompt>Delete "<!>"?</p><div class=bookmark-delete-options><button class="bookmark-ghost-button danger"type=button></button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$40$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><div class=bookmark-folder-form-fields><input class=bookmark-input><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=button>Save</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$41$1 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$42$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-section><div class="bookmark-folder-header clickable"role=button tabindex=0><div class=bookmark-folder-overview><span class=bookmark-folder-chevron aria-hidden=true>▸</span><div><div class=bookmark-folder-name></div><div class=bookmark-folder-meta> saved`), _tmpl$43 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$44 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$45 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$46 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$47 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$48 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$49 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$50 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><input class=bookmark-input placeholder="Bookmark title"><textarea class=bookmark-note-input rows=2 placeholder="Why this bookmark matters"></textarea><textarea class=bookmark-note-input rows=1 placeholder=Intent></textarea><textarea class=bookmark-note-input rows=1 placeholder="Expected content"></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input rows=2 placeholder="Agent hints (one key:value per line)"></textarea><div class=bookmark-item-footer><button class=bookmark-secondary-button type=button>Save edits</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$51 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class=bookmark-ghost-button type=button></button><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$52 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$53 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$54 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><textarea class=agent-textarea rows=2 placeholder="Add a note..."></textarea><button class=agent-control-button type=button>Restore`), _tmpl$55 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$56 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">The Diff timeline is a premium feature. Upgrade to see a full history of what changed on this page.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$57 = /* @__PURE__ */ template(`<div>`), _tmpl$58 = /* @__PURE__ */ template(`<div class=thinking-state><div class=thinking-orb aria-hidden=true><span></span><span></span><span></span></div><div class=thinking-copy><div class=thinking-title>Thinking`), _tmpl$59 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$60 = /* @__PURE__ */ template(`<div class=chat-approval><div class=chat-approval-icon aria-hidden=true><svg width=16 height=16 viewBox="0 0 16 16"fill=none><path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM7.25 4.75a.75.75 0 011.5 0v3.5a.75.75 0 01-1.5 0v-3.5zM8 11.5a.75.75 0 110-1.5.75.75 0 010 1.5z"fill=currentColor></path></svg></div><div class=chat-approval-body><div class=chat-approval-title>Approval needed: <strong></strong></div><div class=chat-approval-detail></div><div class=chat-approval-actions><button class="chat-approval-btn chat-approval-approve"type=button>Approve</button><button class="chat-approval-btn chat-approval-reject"type=button>Reject`), _tmpl$61 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
|
|
6969
|
+
var _tmpl$$4 = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$4 = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$3 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$3 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$5$3 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$6$3 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$7$3 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$8$2 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$9$2 = /* @__PURE__ */ template(`<div class=bookmark-export-message>`), _tmpl$0$2 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$1$2 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-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-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$10$2 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$11$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$12$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$13$1 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><button class=history-clear-btn>Clear</button></div><div class=history-list>`), _tmpl$14$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$15$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$16$1 = /* @__PURE__ */ template(`<span>`), _tmpl$17$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$18$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$19$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$20$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$21$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$22$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$23$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$24$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$27$1 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button></div><div class=sidebar-messages><div>`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class="agent-card agent-card-approval"><div class=agent-card-approval-stripe aria-hidden=true></div><div class=agent-card-title></div><div class=agent-card-copy></div><div class=agent-card-copy></div><div class=agent-card-actions><button class=agent-primary-button type=button>Approve</button><button class=agent-control-button type=button>Reject`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$32$1 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$34$1 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$35$1 = /* @__PURE__ */ template(`<div class=agent-card><div class=agent-action-row><span class=agent-card-title></span><span></span></div><div class=agent-card-copy>`), _tmpl$36$1 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$37$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$38$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$39$1 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$40$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-delete-confirm><p class=bookmark-delete-prompt>Delete "<!>"?</p><div class=bookmark-delete-options><button class="bookmark-ghost-button danger"type=button></button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$41$1 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><div class=bookmark-folder-form-fields><input class=bookmark-input><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=button>Save</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$42$1 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$43 = /* @__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$44 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$45 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$46 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$47 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$48 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$49 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$50 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$51 = /* @__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$52 = /* @__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$53 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$54 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$55 = /* @__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$56 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$57 = /* @__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$58 = /* @__PURE__ */ template(`<div>`), _tmpl$59 = /* @__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$60 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$61 = /* @__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$62 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
|
|
6739
6970
|
const UNSORTED_FOLDER = {
|
|
6740
6971
|
id: "unsorted",
|
|
6741
6972
|
name: "Unsorted",
|
|
@@ -6818,6 +7049,8 @@ const Sidebar = (props) => {
|
|
|
6818
7049
|
saveBookmark,
|
|
6819
7050
|
updateBookmark,
|
|
6820
7051
|
removeBookmark,
|
|
7052
|
+
exportHtml,
|
|
7053
|
+
exportJson,
|
|
6821
7054
|
createFolderWithSummary,
|
|
6822
7055
|
removeFolder,
|
|
6823
7056
|
renameFolder
|
|
@@ -6997,6 +7230,8 @@ ${contextBlock}` : contextBlock);
|
|
|
6997
7230
|
const [newFolderName, setNewFolderName] = createSignal("");
|
|
6998
7231
|
const [newFolderSummary, setNewFolderSummary] = createSignal("");
|
|
6999
7232
|
const [bookmarkSearchQuery, setBookmarkSearchQuery] = createSignal("");
|
|
7233
|
+
const [bookmarkExportMessage, setBookmarkExportMessage] = createSignal("");
|
|
7234
|
+
const [bookmarkExporting, setBookmarkExporting] = createSignal(false);
|
|
7000
7235
|
const [editingFolderId, setEditingFolderId] = createSignal(null);
|
|
7001
7236
|
const [editingFolderName, setEditingFolderName] = createSignal("");
|
|
7002
7237
|
const [editingFolderSummary, setEditingFolderSummary] = createSignal("");
|
|
@@ -7273,6 +7508,24 @@ ${contextBlock}` : contextBlock);
|
|
|
7273
7508
|
setEditingFolderSummary("");
|
|
7274
7509
|
}
|
|
7275
7510
|
};
|
|
7511
|
+
const handleExportBookmarks = async (format) => {
|
|
7512
|
+
setBookmarkExporting(true);
|
|
7513
|
+
setBookmarkExportMessage("");
|
|
7514
|
+
try {
|
|
7515
|
+
const result = format === "json" ? await exportJson() : await exportHtml({
|
|
7516
|
+
includeNotes: format === "html-with-notes"
|
|
7517
|
+
});
|
|
7518
|
+
if (!result) {
|
|
7519
|
+
setBookmarkExportMessage("Export canceled.");
|
|
7520
|
+
return;
|
|
7521
|
+
}
|
|
7522
|
+
setBookmarkExportMessage(`Exported ${result.count} bookmarks to ${result.filePath}`);
|
|
7523
|
+
} catch (error) {
|
|
7524
|
+
setBookmarkExportMessage(error instanceof Error ? error.message : "Could not export bookmarks.");
|
|
7525
|
+
} finally {
|
|
7526
|
+
setBookmarkExporting(false);
|
|
7527
|
+
}
|
|
7528
|
+
};
|
|
7276
7529
|
const toggleFolderExpanded = (folderId) => {
|
|
7277
7530
|
setExpandedFolderIds((current) => current.includes(folderId) ? current.filter((id) => id !== folderId) : [...current, folderId]);
|
|
7278
7531
|
};
|
|
@@ -7290,9 +7543,9 @@ ${contextBlock}` : contextBlock);
|
|
|
7290
7543
|
return props.forceOpen || sidebarOpen2();
|
|
7291
7544
|
},
|
|
7292
7545
|
get children() {
|
|
7293
|
-
var _el$9 = _tmpl$
|
|
7546
|
+
var _el$9 = _tmpl$28$1(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling, _el$15 = _el$1.nextSibling, _el$16 = _el$15.firstChild;
|
|
7294
7547
|
_el$16.firstChild;
|
|
7295
|
-
var _el$19 = _el$16.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$23.nextSibling, _el$25 = _el$15.nextSibling, _el$
|
|
7548
|
+
var _el$19 = _el$16.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$23.nextSibling, _el$25 = _el$15.nextSibling, _el$111 = _el$25.firstChild;
|
|
7296
7549
|
_el$0.$$pointerdown = startResize;
|
|
7297
7550
|
setAttribute(_el$11, "src", vesselLogo);
|
|
7298
7551
|
addEventListener(_el$13, "click", clearHistory, true);
|
|
@@ -7323,7 +7576,7 @@ ${contextBlock}` : contextBlock);
|
|
|
7323
7576
|
return sidebarTab() === "supervisor";
|
|
7324
7577
|
},
|
|
7325
7578
|
get children() {
|
|
7326
|
-
var _el$26 = _tmpl$7$
|
|
7579
|
+
var _el$26 = _tmpl$7$3(), _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;
|
|
7327
7580
|
_el$38.firstChild;
|
|
7328
7581
|
insert(_el$30, () => runtimeState2().supervisor.paused ? "Agent is paused" : "Agent is live");
|
|
7329
7582
|
insert(_el$31, () => runtimeState2().supervisor.paused ? "Paused" : "Running");
|
|
@@ -7358,7 +7611,7 @@ ${contextBlock}` : contextBlock);
|
|
|
7358
7611
|
return runtimeState2().supervisor.pendingApprovals.length > 0;
|
|
7359
7612
|
},
|
|
7360
7613
|
get fallback() {
|
|
7361
|
-
return _tmpl$
|
|
7614
|
+
return _tmpl$29$1();
|
|
7362
7615
|
},
|
|
7363
7616
|
get children() {
|
|
7364
7617
|
return [_tmpl$5$3(), createComponent(For, {
|
|
@@ -7366,13 +7619,13 @@ ${contextBlock}` : contextBlock);
|
|
|
7366
7619
|
return runtimeState2().supervisor.pendingApprovals;
|
|
7367
7620
|
},
|
|
7368
7621
|
children: (approval) => (() => {
|
|
7369
|
-
var _el$
|
|
7370
|
-
insert(_el$
|
|
7371
|
-
insert(_el$
|
|
7372
|
-
insert(_el$
|
|
7373
|
-
_el$
|
|
7374
|
-
_el$
|
|
7375
|
-
return _el$
|
|
7622
|
+
var _el$129 = _tmpl$30$1(), _el$130 = _el$129.firstChild, _el$131 = _el$130.nextSibling, _el$132 = _el$131.nextSibling, _el$133 = _el$132.nextSibling, _el$134 = _el$133.nextSibling, _el$135 = _el$134.firstChild, _el$136 = _el$135.nextSibling;
|
|
7623
|
+
insert(_el$131, () => approval.name);
|
|
7624
|
+
insert(_el$132, () => approval.argsSummary);
|
|
7625
|
+
insert(_el$133, () => approval.reason);
|
|
7626
|
+
_el$135.$$click = () => void resolveApproval(approval.id, true);
|
|
7627
|
+
_el$136.$$click = () => void resolveApproval(approval.id, false);
|
|
7628
|
+
return _el$129;
|
|
7376
7629
|
})()
|
|
7377
7630
|
})];
|
|
7378
7631
|
}
|
|
@@ -7396,7 +7649,7 @@ ${contextBlock}` : contextBlock);
|
|
|
7396
7649
|
return recentActions().length > 0;
|
|
7397
7650
|
},
|
|
7398
7651
|
get fallback() {
|
|
7399
|
-
return _tmpl$
|
|
7652
|
+
return _tmpl$31$1();
|
|
7400
7653
|
},
|
|
7401
7654
|
get children() {
|
|
7402
7655
|
return createComponent(Show, {
|
|
@@ -7404,7 +7657,7 @@ ${contextBlock}` : contextBlock);
|
|
|
7404
7657
|
return actionsExpanded();
|
|
7405
7658
|
},
|
|
7406
7659
|
get fallback() {
|
|
7407
|
-
return _tmpl$
|
|
7660
|
+
return _tmpl$32$1();
|
|
7408
7661
|
},
|
|
7409
7662
|
get children() {
|
|
7410
7663
|
return createComponent(For, {
|
|
@@ -7412,32 +7665,32 @@ ${contextBlock}` : contextBlock);
|
|
|
7412
7665
|
return recentActions();
|
|
7413
7666
|
},
|
|
7414
7667
|
children: (action) => (() => {
|
|
7415
|
-
var _el$
|
|
7416
|
-
insert(_el$
|
|
7417
|
-
insert(_el$
|
|
7418
|
-
insert(_el$
|
|
7419
|
-
insert(_el$
|
|
7668
|
+
var _el$139 = _tmpl$35$1(), _el$140 = _el$139.firstChild, _el$141 = _el$140.firstChild, _el$142 = _el$141.nextSibling, _el$143 = _el$140.nextSibling;
|
|
7669
|
+
insert(_el$141, () => action.name);
|
|
7670
|
+
insert(_el$142, () => action.status);
|
|
7671
|
+
insert(_el$143, () => action.argsSummary);
|
|
7672
|
+
insert(_el$139, createComponent(Show, {
|
|
7420
7673
|
get when() {
|
|
7421
7674
|
return action.resultSummary;
|
|
7422
7675
|
},
|
|
7423
7676
|
get children() {
|
|
7424
|
-
var _el$
|
|
7425
|
-
insert(_el$
|
|
7426
|
-
return _el$
|
|
7677
|
+
var _el$144 = _tmpl$33$1();
|
|
7678
|
+
insert(_el$144, () => action.resultSummary);
|
|
7679
|
+
return _el$144;
|
|
7427
7680
|
}
|
|
7428
7681
|
}), null);
|
|
7429
|
-
insert(_el$
|
|
7682
|
+
insert(_el$139, createComponent(Show, {
|
|
7430
7683
|
get when() {
|
|
7431
7684
|
return action.error;
|
|
7432
7685
|
},
|
|
7433
7686
|
get children() {
|
|
7434
|
-
var _el$
|
|
7435
|
-
insert(_el$
|
|
7436
|
-
return _el$
|
|
7687
|
+
var _el$145 = _tmpl$34$1();
|
|
7688
|
+
insert(_el$145, () => action.error);
|
|
7689
|
+
return _el$145;
|
|
7437
7690
|
}
|
|
7438
7691
|
}), null);
|
|
7439
|
-
createRenderEffect(() => className(_el$
|
|
7440
|
-
return _el$
|
|
7692
|
+
createRenderEffect(() => className(_el$142, `agent-action-status ${action.status}`));
|
|
7693
|
+
return _el$139;
|
|
7441
7694
|
})()
|
|
7442
7695
|
});
|
|
7443
7696
|
}
|
|
@@ -7447,13 +7700,13 @@ ${contextBlock}` : contextBlock);
|
|
|
7447
7700
|
createRenderEffect(() => _el$31.classList.toggle("paused", !!runtimeState2().supervisor.paused));
|
|
7448
7701
|
return _el$26;
|
|
7449
7702
|
}
|
|
7450
|
-
}), _el$
|
|
7703
|
+
}), _el$111);
|
|
7451
7704
|
insert(_el$25, createComponent(Show, {
|
|
7452
7705
|
get when() {
|
|
7453
7706
|
return sidebarTab() === "bookmarks";
|
|
7454
7707
|
},
|
|
7455
7708
|
get children() {
|
|
7456
|
-
var _el$41 = _tmpl$
|
|
7709
|
+
var _el$41 = _tmpl$1$2(), _el$42 = _el$41.firstChild, _el$43 = _el$42.firstChild, _el$44 = _el$43.firstChild, _el$45 = _el$44.nextSibling, _el$47 = _el$42.nextSibling, _el$48 = _el$47.nextSibling, _el$49 = _el$48.firstChild, _el$50 = _el$49.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$69 = _el$55.nextSibling, _el$70 = _el$69.firstChild, _el$71 = _el$70.firstChild, _el$72 = _el$71.nextSibling, _el$73 = _el$70.nextSibling, _el$74 = _el$69.nextSibling;
|
|
7457
7710
|
insert(_el$45, (() => {
|
|
7458
7711
|
var _c$2 = memo(() => !!normalizedBookmarkSearch());
|
|
7459
7712
|
return () => _c$2() ? `${bookmarkMatchCount()} matches for "${bookmarkSearchQuery().trim()}"` : `${bookmarksState2().bookmarks.length} saved across ${bookmarkFolders().length} folders`;
|
|
@@ -7467,16 +7720,29 @@ ${contextBlock}` : contextBlock);
|
|
|
7467
7720
|
}
|
|
7468
7721
|
}), null);
|
|
7469
7722
|
_el$47.$$input = (e) => setBookmarkSearchQuery(e.currentTarget.value);
|
|
7470
|
-
_el$
|
|
7723
|
+
_el$51.$$click = () => void handleExportBookmarks("html");
|
|
7724
|
+
_el$52.$$click = () => void handleExportBookmarks("html-with-notes");
|
|
7725
|
+
_el$53.$$click = () => void handleExportBookmarks("json");
|
|
7471
7726
|
insert(_el$48, createComponent(Show, {
|
|
7727
|
+
get when() {
|
|
7728
|
+
return bookmarkExportMessage();
|
|
7729
|
+
},
|
|
7730
|
+
get children() {
|
|
7731
|
+
var _el$54 = _tmpl$9$2();
|
|
7732
|
+
insert(_el$54, bookmarkExportMessage);
|
|
7733
|
+
return _el$54;
|
|
7734
|
+
}
|
|
7735
|
+
}), null);
|
|
7736
|
+
_el$56.$$click = () => setBookmarkSaveExpanded((current) => !current);
|
|
7737
|
+
insert(_el$55, createComponent(Show, {
|
|
7472
7738
|
get when() {
|
|
7473
7739
|
return bookmarkSaveExpanded();
|
|
7474
7740
|
},
|
|
7475
7741
|
get children() {
|
|
7476
|
-
var _el$
|
|
7477
|
-
insert(_el$
|
|
7478
|
-
insert(_el$
|
|
7479
|
-
insert(_el$
|
|
7742
|
+
var _el$59 = _tmpl$0$2(), _el$60 = _el$59.firstChild, _el$61 = _el$60.nextSibling, _el$62 = _el$61.nextSibling, _el$63 = _el$62.firstChild, _el$64 = _el$62.nextSibling, _el$65 = _el$64.nextSibling, _el$66 = _el$65.nextSibling, _el$67 = _el$66.nextSibling, _el$68 = _el$67.nextSibling;
|
|
7743
|
+
insert(_el$60, () => currentTab()?.title || "No active page");
|
|
7744
|
+
insert(_el$61, () => currentTab()?.url || "Open a page to save it here.");
|
|
7745
|
+
insert(_el$62, createComponent(DropdownSelect, {
|
|
7480
7746
|
"class": "bookmark-select",
|
|
7481
7747
|
get value() {
|
|
7482
7748
|
return selectedFolderId();
|
|
@@ -7486,37 +7752,37 @@ ${contextBlock}` : contextBlock);
|
|
|
7486
7752
|
},
|
|
7487
7753
|
ariaLabel: "Bookmark folder",
|
|
7488
7754
|
onChange: (value) => setSelectedFolderId(value)
|
|
7489
|
-
}), _el$
|
|
7490
|
-
_el$
|
|
7491
|
-
_el$
|
|
7492
|
-
_el$
|
|
7493
|
-
_el$
|
|
7494
|
-
_el$
|
|
7495
|
-
_el$
|
|
7496
|
-
createRenderEffect(() => _el$
|
|
7497
|
-
createRenderEffect(() => _el$
|
|
7498
|
-
createRenderEffect(() => _el$
|
|
7499
|
-
createRenderEffect(() => _el$
|
|
7500
|
-
createRenderEffect(() => _el$
|
|
7501
|
-
createRenderEffect(() => _el$
|
|
7502
|
-
return _el$
|
|
7755
|
+
}), _el$63);
|
|
7756
|
+
_el$63.$$click = () => void handleSaveBookmark();
|
|
7757
|
+
_el$64.$$input = (e) => setBookmarkNote(e.currentTarget.value);
|
|
7758
|
+
_el$65.$$input = (e) => setBookmarkIntent(e.currentTarget.value);
|
|
7759
|
+
_el$66.$$input = (e) => setBookmarkExpectedContent(e.currentTarget.value);
|
|
7760
|
+
_el$67.$$input = (e) => setBookmarkKeyFields(e.currentTarget.value);
|
|
7761
|
+
_el$68.$$input = (e) => setBookmarkAgentHints(e.currentTarget.value);
|
|
7762
|
+
createRenderEffect(() => _el$63.disabled = !currentTab()?.url);
|
|
7763
|
+
createRenderEffect(() => _el$64.value = bookmarkNote());
|
|
7764
|
+
createRenderEffect(() => _el$65.value = bookmarkIntent());
|
|
7765
|
+
createRenderEffect(() => _el$66.value = bookmarkExpectedContent());
|
|
7766
|
+
createRenderEffect(() => _el$67.value = bookmarkKeyFields());
|
|
7767
|
+
createRenderEffect(() => _el$68.value = bookmarkAgentHints());
|
|
7768
|
+
return _el$59;
|
|
7503
7769
|
}
|
|
7504
7770
|
}), null);
|
|
7505
|
-
_el$
|
|
7506
|
-
_el$
|
|
7507
|
-
_el$
|
|
7508
|
-
insert(_el$
|
|
7771
|
+
_el$69.addEventListener("submit", handleCreateFolder);
|
|
7772
|
+
_el$71.$$input = (e) => setNewFolderName(e.currentTarget.value);
|
|
7773
|
+
_el$72.$$input = (e) => setNewFolderSummary(e.currentTarget.value);
|
|
7774
|
+
insert(_el$74, createComponent(Show, {
|
|
7509
7775
|
get when() {
|
|
7510
7776
|
return filteredGroupedBookmarks().length > 0;
|
|
7511
7777
|
},
|
|
7512
7778
|
get fallback() {
|
|
7513
7779
|
return (() => {
|
|
7514
|
-
var _el$
|
|
7515
|
-
insert(_el$
|
|
7780
|
+
var _el$146 = _tmpl$36$1();
|
|
7781
|
+
insert(_el$146, (() => {
|
|
7516
7782
|
var _c$5 = memo(() => !!normalizedBookmarkSearch());
|
|
7517
7783
|
return () => _c$5() ? `No bookmarks matched "${bookmarkSearchQuery().trim()}".` : "No bookmarks saved yet.";
|
|
7518
7784
|
})());
|
|
7519
|
-
return _el$
|
|
7785
|
+
return _el$146;
|
|
7520
7786
|
})();
|
|
7521
7787
|
},
|
|
7522
7788
|
get children() {
|
|
@@ -7525,100 +7791,100 @@ ${contextBlock}` : contextBlock);
|
|
|
7525
7791
|
return filteredGroupedBookmarks();
|
|
7526
7792
|
},
|
|
7527
7793
|
children: (folder) => (() => {
|
|
7528
|
-
var _el$
|
|
7529
|
-
_el$
|
|
7794
|
+
var _el$147 = _tmpl$43(), _el$148 = _el$147.firstChild, _el$149 = _el$148.firstChild, _el$150 = _el$149.firstChild, _el$151 = _el$150.nextSibling, _el$152 = _el$151.firstChild, _el$153 = _el$152.nextSibling, _el$154 = _el$153.firstChild;
|
|
7795
|
+
_el$148.$$keydown = (e) => {
|
|
7530
7796
|
if (e.key === "Enter" || e.key === " ") {
|
|
7531
7797
|
e.preventDefault();
|
|
7532
7798
|
toggleFolderExpanded(folder.id);
|
|
7533
7799
|
}
|
|
7534
7800
|
};
|
|
7535
|
-
_el$
|
|
7536
|
-
insert(_el$
|
|
7537
|
-
insert(_el$
|
|
7538
|
-
insert(_el$
|
|
7801
|
+
_el$148.$$click = () => toggleFolderExpanded(folder.id);
|
|
7802
|
+
insert(_el$152, () => folder.name);
|
|
7803
|
+
insert(_el$153, () => folder.items.length, _el$154);
|
|
7804
|
+
insert(_el$151, createComponent(Show, {
|
|
7539
7805
|
get when() {
|
|
7540
7806
|
return folder.summary;
|
|
7541
7807
|
},
|
|
7542
7808
|
get children() {
|
|
7543
|
-
var _el$
|
|
7544
|
-
insert(_el$
|
|
7545
|
-
return _el$
|
|
7809
|
+
var _el$155 = _tmpl$37$1();
|
|
7810
|
+
insert(_el$155, () => folder.summary);
|
|
7811
|
+
return _el$155;
|
|
7546
7812
|
}
|
|
7547
7813
|
}), null);
|
|
7548
|
-
insert(_el$
|
|
7814
|
+
insert(_el$148, createComponent(Show, {
|
|
7549
7815
|
get when() {
|
|
7550
7816
|
return folder.id !== UNSORTED_FOLDER.id;
|
|
7551
7817
|
},
|
|
7552
7818
|
get children() {
|
|
7553
|
-
var _el$
|
|
7554
|
-
_el$
|
|
7819
|
+
var _el$156 = _tmpl$38$1(), _el$157 = _el$156.firstChild, _el$158 = _el$157.nextSibling;
|
|
7820
|
+
_el$157.$$click = (e) => {
|
|
7555
7821
|
e.stopPropagation();
|
|
7556
7822
|
setEditingFolderId(folder.id);
|
|
7557
7823
|
setEditingFolderName(folder.name);
|
|
7558
7824
|
setEditingFolderSummary(folder.summary || "");
|
|
7559
7825
|
};
|
|
7560
|
-
_el$
|
|
7826
|
+
_el$158.$$click = (e) => {
|
|
7561
7827
|
e.stopPropagation();
|
|
7562
7828
|
setDeletingFolderId(folder.id);
|
|
7563
7829
|
};
|
|
7564
|
-
return _el$
|
|
7830
|
+
return _el$156;
|
|
7565
7831
|
}
|
|
7566
7832
|
}), null);
|
|
7567
|
-
insert(_el$
|
|
7833
|
+
insert(_el$147, createComponent(Show, {
|
|
7568
7834
|
get when() {
|
|
7569
7835
|
return deletingFolderId() === folder.id;
|
|
7570
7836
|
},
|
|
7571
7837
|
get children() {
|
|
7572
|
-
var _el$
|
|
7573
|
-
_el$
|
|
7574
|
-
var _el$
|
|
7575
|
-
insert(_el$
|
|
7576
|
-
insert(_el$
|
|
7838
|
+
var _el$159 = _tmpl$40$1(), _el$160 = _el$159.firstChild, _el$161 = _el$160.firstChild, _el$163 = _el$161.nextSibling;
|
|
7839
|
+
_el$163.nextSibling;
|
|
7840
|
+
var _el$164 = _el$160.nextSibling, _el$166 = _el$164.firstChild, _el$167 = _el$166.nextSibling;
|
|
7841
|
+
insert(_el$160, () => folder.name, _el$163);
|
|
7842
|
+
insert(_el$160, (() => {
|
|
7577
7843
|
var _c$6 = memo(() => folder.items.length > 0);
|
|
7578
7844
|
return () => _c$6() ? ` This folder has ${folder.items.length} bookmark${folder.items.length === 1 ? "" : "s"}.` : "";
|
|
7579
7845
|
})(), null);
|
|
7580
|
-
insert(_el$
|
|
7846
|
+
insert(_el$164, createComponent(Show, {
|
|
7581
7847
|
get when() {
|
|
7582
7848
|
return folder.items.length > 0;
|
|
7583
7849
|
},
|
|
7584
7850
|
get children() {
|
|
7585
|
-
var _el$
|
|
7586
|
-
_el$
|
|
7587
|
-
return _el$
|
|
7851
|
+
var _el$165 = _tmpl$39$1();
|
|
7852
|
+
_el$165.$$click = () => void handleRemoveFolder(folder.id, false);
|
|
7853
|
+
return _el$165;
|
|
7588
7854
|
}
|
|
7589
|
-
}), _el$
|
|
7590
|
-
_el$
|
|
7591
|
-
insert(_el$
|
|
7592
|
-
_el$
|
|
7593
|
-
return _el$
|
|
7855
|
+
}), _el$166);
|
|
7856
|
+
_el$166.$$click = () => void handleRemoveFolder(folder.id, true);
|
|
7857
|
+
insert(_el$166, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
|
|
7858
|
+
_el$167.$$click = () => setDeletingFolderId(null);
|
|
7859
|
+
return _el$159;
|
|
7594
7860
|
}
|
|
7595
7861
|
}), null);
|
|
7596
|
-
insert(_el$
|
|
7862
|
+
insert(_el$147, createComponent(Show, {
|
|
7597
7863
|
get when() {
|
|
7598
7864
|
return editingFolderId() === folder.id;
|
|
7599
7865
|
},
|
|
7600
7866
|
get children() {
|
|
7601
|
-
var _el$
|
|
7602
|
-
_el$
|
|
7603
|
-
_el$
|
|
7604
|
-
_el$
|
|
7605
|
-
_el$
|
|
7867
|
+
var _el$168 = _tmpl$41$1(), _el$169 = _el$168.firstChild, _el$170 = _el$169.firstChild, _el$171 = _el$170.nextSibling, _el$172 = _el$169.nextSibling, _el$173 = _el$172.nextSibling;
|
|
7868
|
+
_el$170.$$input = (e) => setEditingFolderName(e.currentTarget.value);
|
|
7869
|
+
_el$171.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
|
|
7870
|
+
_el$172.$$click = () => void handleRenameFolder(folder.id);
|
|
7871
|
+
_el$173.$$click = () => {
|
|
7606
7872
|
setEditingFolderId(null);
|
|
7607
7873
|
setEditingFolderName("");
|
|
7608
7874
|
setEditingFolderSummary("");
|
|
7609
7875
|
};
|
|
7610
|
-
createRenderEffect(() => _el$
|
|
7611
|
-
createRenderEffect(() => _el$
|
|
7612
|
-
createRenderEffect(() => _el$
|
|
7613
|
-
return _el$
|
|
7876
|
+
createRenderEffect(() => _el$172.disabled = !editingFolderName().trim());
|
|
7877
|
+
createRenderEffect(() => _el$170.value = editingFolderName());
|
|
7878
|
+
createRenderEffect(() => _el$171.value = editingFolderSummary());
|
|
7879
|
+
return _el$168;
|
|
7614
7880
|
}
|
|
7615
7881
|
}), null);
|
|
7616
|
-
insert(_el$
|
|
7882
|
+
insert(_el$147, createComponent(Show, {
|
|
7617
7883
|
get when() {
|
|
7618
7884
|
return isFolderExpanded(folder.id);
|
|
7619
7885
|
},
|
|
7620
7886
|
get fallback() {
|
|
7621
|
-
return _tmpl$
|
|
7887
|
+
return _tmpl$44();
|
|
7622
7888
|
},
|
|
7623
7889
|
get children() {
|
|
7624
7890
|
return createComponent(Show, {
|
|
@@ -7626,203 +7892,209 @@ ${contextBlock}` : contextBlock);
|
|
|
7626
7892
|
return folder.items.length > 0;
|
|
7627
7893
|
},
|
|
7628
7894
|
get fallback() {
|
|
7629
|
-
return _tmpl$
|
|
7895
|
+
return _tmpl$45();
|
|
7630
7896
|
},
|
|
7631
7897
|
get children() {
|
|
7632
|
-
var _el$
|
|
7633
|
-
insert(_el$
|
|
7898
|
+
var _el$174 = _tmpl$42$1();
|
|
7899
|
+
insert(_el$174, createComponent(For, {
|
|
7634
7900
|
get each() {
|
|
7635
7901
|
return folder.items;
|
|
7636
7902
|
},
|
|
7637
7903
|
children: (bookmark) => (() => {
|
|
7638
|
-
var _el$
|
|
7639
|
-
_el$
|
|
7640
|
-
insert(_el$
|
|
7641
|
-
insert(_el$
|
|
7642
|
-
insert(_el$
|
|
7904
|
+
var _el$177 = _tmpl$52(), _el$178 = _el$177.firstChild, _el$179 = _el$178.firstChild, _el$180 = _el$179.nextSibling, _el$205 = _el$178.nextSibling, _el$206 = _el$205.firstChild, _el$207 = _el$206.nextSibling, _el$208 = _el$207.nextSibling;
|
|
7905
|
+
_el$178.$$click = () => void createTab(bookmark.url);
|
|
7906
|
+
insert(_el$179, () => bookmark.title || bookmark.url);
|
|
7907
|
+
insert(_el$180, () => bookmark.url);
|
|
7908
|
+
insert(_el$177, createComponent(Show, {
|
|
7643
7909
|
get when() {
|
|
7644
7910
|
return bookmark.note;
|
|
7645
7911
|
},
|
|
7646
7912
|
get children() {
|
|
7647
|
-
var _el$
|
|
7648
|
-
insert(_el$
|
|
7649
|
-
return _el$
|
|
7913
|
+
var _el$181 = _tmpl$46();
|
|
7914
|
+
insert(_el$181, () => bookmark.note);
|
|
7915
|
+
return _el$181;
|
|
7650
7916
|
}
|
|
7651
|
-
}), _el$
|
|
7652
|
-
insert(_el$
|
|
7917
|
+
}), _el$205);
|
|
7918
|
+
insert(_el$177, createComponent(Show, {
|
|
7653
7919
|
get when() {
|
|
7654
7920
|
return bookmark.intent || bookmark.expectedContent || (bookmark.keyFields?.length || 0) > 0 || (bookmark.agentHints && Object.keys(bookmark.agentHints).length || 0) > 0;
|
|
7655
7921
|
},
|
|
7656
7922
|
get children() {
|
|
7657
|
-
var _el$
|
|
7658
|
-
insert(_el$
|
|
7923
|
+
var _el$182 = _tmpl$46();
|
|
7924
|
+
insert(_el$182, createComponent(Show, {
|
|
7659
7925
|
get when() {
|
|
7660
7926
|
return bookmark.intent;
|
|
7661
7927
|
},
|
|
7662
7928
|
get children() {
|
|
7663
|
-
var _el$
|
|
7664
|
-
_el$
|
|
7665
|
-
insert(_el$
|
|
7666
|
-
return _el$
|
|
7929
|
+
var _el$183 = _tmpl$47(), _el$184 = _el$183.firstChild;
|
|
7930
|
+
_el$184.nextSibling;
|
|
7931
|
+
insert(_el$183, () => bookmark.intent, null);
|
|
7932
|
+
return _el$183;
|
|
7667
7933
|
}
|
|
7668
7934
|
}), null);
|
|
7669
|
-
insert(_el$
|
|
7935
|
+
insert(_el$182, createComponent(Show, {
|
|
7670
7936
|
get when() {
|
|
7671
7937
|
return bookmark.expectedContent;
|
|
7672
7938
|
},
|
|
7673
7939
|
get children() {
|
|
7674
|
-
var _el$
|
|
7675
|
-
_el$
|
|
7676
|
-
insert(_el$
|
|
7677
|
-
return _el$
|
|
7940
|
+
var _el$186 = _tmpl$48(), _el$187 = _el$186.firstChild;
|
|
7941
|
+
_el$187.nextSibling;
|
|
7942
|
+
insert(_el$186, () => bookmark.expectedContent, null);
|
|
7943
|
+
return _el$186;
|
|
7678
7944
|
}
|
|
7679
7945
|
}), null);
|
|
7680
|
-
insert(_el$
|
|
7946
|
+
insert(_el$182, createComponent(Show, {
|
|
7681
7947
|
get when() {
|
|
7682
7948
|
return (bookmark.keyFields?.length || 0) > 0;
|
|
7683
7949
|
},
|
|
7684
7950
|
get children() {
|
|
7685
|
-
var _el$
|
|
7686
|
-
_el$
|
|
7687
|
-
insert(_el$
|
|
7688
|
-
return _el$
|
|
7951
|
+
var _el$189 = _tmpl$49(), _el$190 = _el$189.firstChild;
|
|
7952
|
+
_el$190.nextSibling;
|
|
7953
|
+
insert(_el$189, () => bookmark.keyFields?.join(", "), null);
|
|
7954
|
+
return _el$189;
|
|
7689
7955
|
}
|
|
7690
7956
|
}), null);
|
|
7691
|
-
insert(_el$
|
|
7957
|
+
insert(_el$182, createComponent(Show, {
|
|
7692
7958
|
get when() {
|
|
7693
7959
|
return memo(() => !!bookmark.agentHints)() && Object.keys(bookmark.agentHints).length > 0;
|
|
7694
7960
|
},
|
|
7695
7961
|
get children() {
|
|
7696
|
-
var _el$
|
|
7697
|
-
_el$
|
|
7698
|
-
insert(_el$
|
|
7699
|
-
return _el$
|
|
7962
|
+
var _el$192 = _tmpl$50(), _el$193 = _el$192.firstChild;
|
|
7963
|
+
_el$193.nextSibling;
|
|
7964
|
+
insert(_el$192, () => Object.entries(bookmark.agentHints || {}).map(([key, hint]) => `${key}: ${hint}`).join(" • "), null);
|
|
7965
|
+
return _el$192;
|
|
7700
7966
|
}
|
|
7701
7967
|
}), null);
|
|
7702
|
-
return _el$
|
|
7968
|
+
return _el$182;
|
|
7703
7969
|
}
|
|
7704
|
-
}), _el$
|
|
7705
|
-
insert(_el$
|
|
7970
|
+
}), _el$205);
|
|
7971
|
+
insert(_el$177, createComponent(Show, {
|
|
7706
7972
|
get when() {
|
|
7707
7973
|
return editingBookmarkId() === bookmark.id;
|
|
7708
7974
|
},
|
|
7709
7975
|
get children() {
|
|
7710
|
-
var _el$
|
|
7711
|
-
_el$
|
|
7712
|
-
_el$
|
|
7713
|
-
_el$
|
|
7714
|
-
_el$
|
|
7715
|
-
_el$
|
|
7716
|
-
_el$
|
|
7717
|
-
_el$
|
|
7718
|
-
_el$
|
|
7719
|
-
createRenderEffect(() => _el$
|
|
7720
|
-
createRenderEffect(() => _el$
|
|
7721
|
-
createRenderEffect(() => _el$
|
|
7722
|
-
createRenderEffect(() => _el$
|
|
7723
|
-
createRenderEffect(() => _el$
|
|
7724
|
-
createRenderEffect(() => _el$
|
|
7725
|
-
return _el$
|
|
7976
|
+
var _el$195 = _tmpl$51(), _el$196 = _el$195.firstChild, _el$197 = _el$196.nextSibling, _el$198 = _el$197.nextSibling, _el$199 = _el$198.nextSibling, _el$200 = _el$199.nextSibling, _el$201 = _el$200.nextSibling, _el$202 = _el$201.nextSibling, _el$203 = _el$202.firstChild, _el$204 = _el$203.nextSibling;
|
|
7977
|
+
_el$196.$$input = (e) => setEditingBookmarkTitle(e.currentTarget.value);
|
|
7978
|
+
_el$197.$$input = (e) => setEditingBookmarkNote(e.currentTarget.value);
|
|
7979
|
+
_el$198.$$input = (e) => setEditingBookmarkIntent(e.currentTarget.value);
|
|
7980
|
+
_el$199.$$input = (e) => setEditingBookmarkExpectedContent(e.currentTarget.value);
|
|
7981
|
+
_el$200.$$input = (e) => setEditingBookmarkKeyFields(e.currentTarget.value);
|
|
7982
|
+
_el$201.$$input = (e) => setEditingBookmarkAgentHints(e.currentTarget.value);
|
|
7983
|
+
_el$203.$$click = () => void handleUpdateBookmark(bookmark.id);
|
|
7984
|
+
_el$204.$$click = resetBookmarkEditor;
|
|
7985
|
+
createRenderEffect(() => _el$196.value = editingBookmarkTitle());
|
|
7986
|
+
createRenderEffect(() => _el$197.value = editingBookmarkNote());
|
|
7987
|
+
createRenderEffect(() => _el$198.value = editingBookmarkIntent());
|
|
7988
|
+
createRenderEffect(() => _el$199.value = editingBookmarkExpectedContent());
|
|
7989
|
+
createRenderEffect(() => _el$200.value = editingBookmarkKeyFields());
|
|
7990
|
+
createRenderEffect(() => _el$201.value = editingBookmarkAgentHints());
|
|
7991
|
+
return _el$195;
|
|
7726
7992
|
}
|
|
7727
|
-
}), _el$
|
|
7728
|
-
insert(_el$
|
|
7729
|
-
_el$
|
|
7730
|
-
insert(_el$
|
|
7731
|
-
_el$
|
|
7993
|
+
}), _el$205);
|
|
7994
|
+
insert(_el$206, () => formatBookmarkDate(bookmark.savedAt));
|
|
7995
|
+
_el$207.$$click = () => editingBookmarkId() === bookmark.id ? resetBookmarkEditor() : startEditingBookmark(bookmark);
|
|
7996
|
+
insert(_el$207, () => editingBookmarkId() === bookmark.id ? "Close" : "Edit");
|
|
7997
|
+
_el$208.$$click = () => {
|
|
7732
7998
|
if (editingBookmarkId() === bookmark.id) {
|
|
7733
7999
|
resetBookmarkEditor();
|
|
7734
8000
|
}
|
|
7735
8001
|
void removeBookmark(bookmark.id);
|
|
7736
8002
|
};
|
|
7737
|
-
createRenderEffect(() => setAttribute(_el$
|
|
7738
|
-
return _el$
|
|
8003
|
+
createRenderEffect(() => setAttribute(_el$177, "data-bookmark-id", bookmark.id));
|
|
8004
|
+
return _el$177;
|
|
7739
8005
|
})()
|
|
7740
8006
|
}));
|
|
7741
|
-
return _el$
|
|
8007
|
+
return _el$174;
|
|
7742
8008
|
}
|
|
7743
8009
|
});
|
|
7744
8010
|
}
|
|
7745
8011
|
}), null);
|
|
7746
|
-
createRenderEffect(() => _el$
|
|
7747
|
-
return _el$
|
|
8012
|
+
createRenderEffect(() => _el$150.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
|
|
8013
|
+
return _el$147;
|
|
7748
8014
|
})()
|
|
7749
8015
|
});
|
|
7750
8016
|
}
|
|
7751
8017
|
}));
|
|
7752
8018
|
createRenderEffect((_p$) => {
|
|
7753
|
-
var _v$ = !!bookmarkSaveExpanded(), _v$
|
|
7754
|
-
_v$ !== _p$.e && _el$51.
|
|
7755
|
-
_v$2 !== _p$.t && (_el$
|
|
8019
|
+
var _v$ = bookmarkExporting(), _v$2 = bookmarkExporting(), _v$3 = bookmarkExporting(), _v$4 = !!bookmarkSaveExpanded(), _v$5 = !newFolderName().trim();
|
|
8020
|
+
_v$ !== _p$.e && (_el$51.disabled = _p$.e = _v$);
|
|
8021
|
+
_v$2 !== _p$.t && (_el$52.disabled = _p$.t = _v$2);
|
|
8022
|
+
_v$3 !== _p$.a && (_el$53.disabled = _p$.a = _v$3);
|
|
8023
|
+
_v$4 !== _p$.o && _el$58.classList.toggle("expanded", _p$.o = _v$4);
|
|
8024
|
+
_v$5 !== _p$.i && (_el$73.disabled = _p$.i = _v$5);
|
|
7756
8025
|
return _p$;
|
|
7757
8026
|
}, {
|
|
7758
8027
|
e: void 0,
|
|
7759
|
-
t: void 0
|
|
8028
|
+
t: void 0,
|
|
8029
|
+
a: void 0,
|
|
8030
|
+
o: void 0,
|
|
8031
|
+
i: void 0
|
|
7760
8032
|
});
|
|
7761
8033
|
createRenderEffect(() => _el$47.value = bookmarkSearchQuery());
|
|
7762
|
-
createRenderEffect(() => _el$
|
|
7763
|
-
createRenderEffect(() => _el$
|
|
8034
|
+
createRenderEffect(() => _el$71.value = newFolderName());
|
|
8035
|
+
createRenderEffect(() => _el$72.value = newFolderSummary());
|
|
7764
8036
|
return _el$41;
|
|
7765
8037
|
}
|
|
7766
|
-
}), _el$
|
|
8038
|
+
}), _el$111);
|
|
7767
8039
|
insert(_el$25, createComponent(Show, {
|
|
7768
8040
|
get when() {
|
|
7769
8041
|
return sidebarTab() === "checkpoints";
|
|
7770
8042
|
},
|
|
7771
8043
|
get children() {
|
|
7772
|
-
var _el$
|
|
7773
|
-
_el$
|
|
7774
|
-
insert(_el$
|
|
8044
|
+
var _el$75 = _tmpl$11$2(), _el$76 = _el$75.firstChild, _el$77 = _el$76.firstChild, _el$78 = _el$77.firstChild, _el$79 = _el$78.nextSibling, _el$80 = _el$76.nextSibling, _el$81 = _el$80.firstChild, _el$82 = _el$81.firstChild, _el$83 = _el$82.nextSibling, _el$84 = _el$83.nextSibling;
|
|
8045
|
+
_el$81.nextSibling;
|
|
8046
|
+
insert(_el$79, (() => {
|
|
7775
8047
|
var _c$3 = memo(() => recentCheckpoints().length > 0);
|
|
7776
8048
|
return () => _c$3() ? `${recentCheckpoints().length} saved snapshots` : "Save and restore session snapshots";
|
|
7777
8049
|
})());
|
|
7778
|
-
_el$
|
|
7779
|
-
_el$
|
|
7780
|
-
_el$
|
|
8050
|
+
_el$82.$$input = (e) => setCheckpointName(e.currentTarget.value);
|
|
8051
|
+
_el$83.$$input = (e) => setCheckpointNote(e.currentTarget.value);
|
|
8052
|
+
_el$84.$$click = async () => {
|
|
7781
8053
|
const name = checkpointName().trim();
|
|
7782
8054
|
await createCheckpoint(name || void 0, checkpointNote() || void 0);
|
|
7783
8055
|
setCheckpointName("");
|
|
7784
8056
|
setCheckpointNote("");
|
|
7785
8057
|
};
|
|
7786
|
-
insert(_el$
|
|
8058
|
+
insert(_el$80, createComponent(Show, {
|
|
7787
8059
|
get when() {
|
|
7788
8060
|
return recentCheckpoints().length > 0;
|
|
7789
8061
|
},
|
|
7790
8062
|
get fallback() {
|
|
7791
|
-
return _tmpl$
|
|
8063
|
+
return _tmpl$53();
|
|
7792
8064
|
},
|
|
7793
8065
|
get children() {
|
|
7794
|
-
var _el$
|
|
7795
|
-
insert(_el$
|
|
8066
|
+
var _el$86 = _tmpl$10$2();
|
|
8067
|
+
insert(_el$86, createComponent(For, {
|
|
7796
8068
|
get each() {
|
|
7797
8069
|
return recentCheckpoints();
|
|
7798
8070
|
},
|
|
7799
8071
|
children: (checkpoint, i) => (() => {
|
|
7800
|
-
var _el$
|
|
7801
|
-
insert(_el$
|
|
8072
|
+
var _el$210 = _tmpl$55(), _el$211 = _el$210.firstChild, _el$212 = _el$211.firstChild, _el$214 = _el$211.nextSibling, _el$215 = _el$214.firstChild, _el$216 = _el$215.nextSibling, _el$217 = _el$216.nextSibling, _el$218 = _el$217.nextSibling;
|
|
8073
|
+
insert(_el$211, createComponent(Show, {
|
|
7802
8074
|
get when() {
|
|
7803
8075
|
return i() < recentCheckpoints().length - 1;
|
|
7804
8076
|
},
|
|
7805
8077
|
get children() {
|
|
7806
|
-
return _tmpl$
|
|
8078
|
+
return _tmpl$54();
|
|
7807
8079
|
}
|
|
7808
8080
|
}), null);
|
|
7809
|
-
insert(_el$
|
|
7810
|
-
insert(_el$
|
|
7811
|
-
_el$
|
|
7812
|
-
_el$
|
|
7813
|
-
createRenderEffect(() => _el$
|
|
7814
|
-
createRenderEffect(() => _el$
|
|
7815
|
-
return _el$
|
|
8081
|
+
insert(_el$215, () => checkpoint.name);
|
|
8082
|
+
insert(_el$216, () => new Date(checkpoint.createdAt).toLocaleString());
|
|
8083
|
+
_el$217.addEventListener("blur", (e) => void updateCheckpointNote(checkpoint.id, e.currentTarget.value));
|
|
8084
|
+
_el$218.$$click = () => void restoreCheckpoint(checkpoint.id);
|
|
8085
|
+
createRenderEffect(() => _el$212.classList.toggle("latest", !!(i() === 0)));
|
|
8086
|
+
createRenderEffect(() => _el$217.value = checkpoint.note || "");
|
|
8087
|
+
return _el$210;
|
|
7816
8088
|
})()
|
|
7817
8089
|
}));
|
|
7818
|
-
return _el$
|
|
8090
|
+
return _el$86;
|
|
7819
8091
|
}
|
|
7820
8092
|
}), null);
|
|
7821
|
-
createRenderEffect(() => _el$
|
|
7822
|
-
createRenderEffect(() => _el$
|
|
7823
|
-
return _el$
|
|
8093
|
+
createRenderEffect(() => _el$82.value = checkpointName());
|
|
8094
|
+
createRenderEffect(() => _el$83.value = checkpointNote());
|
|
8095
|
+
return _el$75;
|
|
7824
8096
|
}
|
|
7825
|
-
}), _el$
|
|
8097
|
+
}), _el$111);
|
|
7826
8098
|
insert(_el$25, createComponent(Show, {
|
|
7827
8099
|
get when() {
|
|
7828
8100
|
return sidebarTab() === "automation";
|
|
@@ -7832,67 +8104,67 @@ ${contextBlock}` : contextBlock);
|
|
|
7832
8104
|
onRun: () => setSidebarTab("supervisor")
|
|
7833
8105
|
});
|
|
7834
8106
|
}
|
|
7835
|
-
}), _el$
|
|
8107
|
+
}), _el$111);
|
|
7836
8108
|
insert(_el$25, createComponent(Show, {
|
|
7837
8109
|
get when() {
|
|
7838
8110
|
return sidebarTab() === "history";
|
|
7839
8111
|
},
|
|
7840
8112
|
get children() {
|
|
7841
|
-
var _el$
|
|
7842
|
-
_el$
|
|
8113
|
+
var _el$87 = _tmpl$13$1(), _el$88 = _el$87.firstChild, _el$89 = _el$88.firstChild, _el$90 = _el$89.nextSibling, _el$91 = _el$88.nextSibling;
|
|
8114
|
+
_el$90.$$click = async () => {
|
|
7843
8115
|
await history.clear();
|
|
7844
8116
|
};
|
|
7845
|
-
insert(_el$
|
|
8117
|
+
insert(_el$91, createComponent(For, {
|
|
7846
8118
|
get each() {
|
|
7847
8119
|
return history.historyState().entries;
|
|
7848
8120
|
},
|
|
7849
8121
|
children: (entry) => (() => {
|
|
7850
|
-
var _el$
|
|
7851
|
-
_el$
|
|
7852
|
-
insert(_el$
|
|
7853
|
-
insert(_el$
|
|
7854
|
-
insert(_el$
|
|
7855
|
-
return _el$
|
|
8122
|
+
var _el$219 = _tmpl$56(), _el$220 = _el$219.firstChild, _el$221 = _el$220.nextSibling, _el$222 = _el$221.nextSibling;
|
|
8123
|
+
_el$219.$$click = () => createTab(entry.url);
|
|
8124
|
+
insert(_el$220, () => entry.title || entry.url);
|
|
8125
|
+
insert(_el$221, () => entry.url);
|
|
8126
|
+
insert(_el$222, () => new Date(entry.visitedAt).toLocaleString());
|
|
8127
|
+
return _el$219;
|
|
7856
8128
|
})()
|
|
7857
8129
|
}), null);
|
|
7858
|
-
insert(_el$
|
|
8130
|
+
insert(_el$91, createComponent(Show, {
|
|
7859
8131
|
get when() {
|
|
7860
8132
|
return history.historyState().entries.length === 0;
|
|
7861
8133
|
},
|
|
7862
8134
|
get children() {
|
|
7863
|
-
return _tmpl$
|
|
8135
|
+
return _tmpl$12$2();
|
|
7864
8136
|
}
|
|
7865
8137
|
}), null);
|
|
7866
|
-
return _el$
|
|
8138
|
+
return _el$87;
|
|
7867
8139
|
}
|
|
7868
|
-
}), _el$
|
|
8140
|
+
}), _el$111);
|
|
7869
8141
|
insert(_el$25, createComponent(Show, {
|
|
7870
8142
|
get when() {
|
|
7871
8143
|
return sidebarTab() === "diff";
|
|
7872
8144
|
},
|
|
7873
8145
|
get children() {
|
|
7874
|
-
var _el$
|
|
7875
|
-
insert(_el$
|
|
7876
|
-
insert(_el$
|
|
8146
|
+
var _el$93 = _tmpl$14$1(), _el$94 = _el$93.firstChild, _el$95 = _el$94.firstChild, _el$96 = _el$95.nextSibling;
|
|
8147
|
+
insert(_el$96, () => isPremium() ? "Page change timeline" : "Premium feature");
|
|
8148
|
+
insert(_el$93, createComponent(Show, {
|
|
7877
8149
|
get when() {
|
|
7878
8150
|
return isPremium();
|
|
7879
8151
|
},
|
|
7880
8152
|
get fallback() {
|
|
7881
8153
|
return (() => {
|
|
7882
|
-
var _el$
|
|
7883
|
-
_el$
|
|
8154
|
+
var _el$223 = _tmpl$57(), _el$224 = _el$223.firstChild, _el$225 = _el$224.nextSibling, _el$226 = _el$225.nextSibling, _el$227 = _el$226.firstChild, _el$228 = _el$227.nextSibling;
|
|
8155
|
+
_el$227.$$click = () => void window.vessel.premium.checkout(premiumState().email || void 0).catch(() => {
|
|
7884
8156
|
});
|
|
7885
|
-
_el$
|
|
7886
|
-
return _el$
|
|
8157
|
+
_el$228.$$click = openPremiumDetails;
|
|
8158
|
+
return _el$223;
|
|
7887
8159
|
})();
|
|
7888
8160
|
},
|
|
7889
8161
|
get children() {
|
|
7890
8162
|
return createComponent(PageDiffTimeline, {});
|
|
7891
8163
|
}
|
|
7892
8164
|
}), null);
|
|
7893
|
-
return _el$
|
|
8165
|
+
return _el$93;
|
|
7894
8166
|
}
|
|
7895
|
-
}), _el$
|
|
8167
|
+
}), _el$111);
|
|
7896
8168
|
insert(_el$25, createComponent(Show, {
|
|
7897
8169
|
get when() {
|
|
7898
8170
|
return sidebarTab() === "chat";
|
|
@@ -7903,23 +8175,23 @@ ${contextBlock}` : contextBlock);
|
|
|
7903
8175
|
return !isPremium();
|
|
7904
8176
|
},
|
|
7905
8177
|
get children() {
|
|
7906
|
-
var _el$
|
|
7907
|
-
_el$
|
|
7908
|
-
_el$
|
|
7909
|
-
return _el$
|
|
8178
|
+
var _el$97 = _tmpl$15$1(), _el$98 = _el$97.firstChild, _el$99 = _el$98.nextSibling, _el$100 = _el$99.nextSibling, _el$101 = _el$100.firstChild, _el$102 = _el$101.nextSibling;
|
|
8179
|
+
_el$101.$$click = () => openPremiumCheckout("chat_banner_clicked");
|
|
8180
|
+
_el$102.$$click = openPremiumDetails;
|
|
8181
|
+
return _el$97;
|
|
7910
8182
|
}
|
|
7911
8183
|
}), createComponent(For, {
|
|
7912
8184
|
get each() {
|
|
7913
8185
|
return messages2();
|
|
7914
8186
|
},
|
|
7915
8187
|
children: (msg) => (() => {
|
|
7916
|
-
var _el$
|
|
7917
|
-
insert(_el$
|
|
8188
|
+
var _el$229 = _tmpl$58();
|
|
8189
|
+
insert(_el$229, createComponent(MarkdownMessage, {
|
|
7918
8190
|
get content() {
|
|
7919
8191
|
return msg.content;
|
|
7920
8192
|
}
|
|
7921
8193
|
}), null);
|
|
7922
|
-
insert(_el$
|
|
8194
|
+
insert(_el$229, createComponent(Show, {
|
|
7923
8195
|
get when() {
|
|
7924
8196
|
return memo(() => msg.role === "assistant")() ? getPremiumPromptKind(msg.content) : null;
|
|
7925
8197
|
},
|
|
@@ -7932,31 +8204,31 @@ ${contextBlock}` : contextBlock);
|
|
|
7932
8204
|
onOpenSettings: openPremiumDetails
|
|
7933
8205
|
})
|
|
7934
8206
|
}), null);
|
|
7935
|
-
createRenderEffect(() => className(_el$
|
|
7936
|
-
return _el$
|
|
8207
|
+
createRenderEffect(() => className(_el$229, `message message-${msg.role}`));
|
|
8208
|
+
return _el$229;
|
|
7937
8209
|
})()
|
|
7938
8210
|
}), createComponent(Show, {
|
|
7939
8211
|
get when() {
|
|
7940
8212
|
return isStreaming2();
|
|
7941
8213
|
},
|
|
7942
8214
|
get children() {
|
|
7943
|
-
var _el$
|
|
7944
|
-
insert(_el$
|
|
8215
|
+
var _el$103 = _tmpl$18$1(), _el$104 = _el$103.firstChild;
|
|
8216
|
+
insert(_el$104, createComponent(Show, {
|
|
7945
8217
|
get when() {
|
|
7946
8218
|
return hasFirstChunk2();
|
|
7947
8219
|
},
|
|
7948
8220
|
get fallback() {
|
|
7949
|
-
return _tmpl$
|
|
8221
|
+
return _tmpl$59();
|
|
7950
8222
|
},
|
|
7951
8223
|
get children() {
|
|
7952
|
-
var _el$
|
|
7953
|
-
_el$
|
|
7954
|
-
insert(_el$
|
|
8224
|
+
var _el$105 = _tmpl$17$1(), _el$106 = _el$105.firstChild, _el$107 = _el$106.firstChild;
|
|
8225
|
+
_el$107.nextSibling;
|
|
8226
|
+
insert(_el$105, createComponent(MarkdownMessage, {
|
|
7955
8227
|
get content() {
|
|
7956
8228
|
return streamingText2();
|
|
7957
8229
|
}
|
|
7958
|
-
}), _el$
|
|
7959
|
-
insert(_el$
|
|
8230
|
+
}), _el$106);
|
|
8231
|
+
insert(_el$105, createComponent(Show, {
|
|
7960
8232
|
get when() {
|
|
7961
8233
|
return getPremiumPromptKind(streamingText2());
|
|
7962
8234
|
},
|
|
@@ -7968,21 +8240,21 @@ ${contextBlock}` : contextBlock);
|
|
|
7968
8240
|
onStartTrial: () => openPremiumCheckout(kind() === "premium_gate" ? "premium_gate_clicked" : "iteration_limit_clicked"),
|
|
7969
8241
|
onOpenSettings: openPremiumDetails
|
|
7970
8242
|
})
|
|
7971
|
-
}), _el$
|
|
7972
|
-
insert(_el$
|
|
8243
|
+
}), _el$106);
|
|
8244
|
+
insert(_el$106, createComponent(Show, {
|
|
7973
8245
|
get when() {
|
|
7974
8246
|
return elapsedSeconds() > 0;
|
|
7975
8247
|
},
|
|
7976
8248
|
get children() {
|
|
7977
|
-
var _el$
|
|
7978
|
-
insert(_el$
|
|
7979
|
-
return _el$
|
|
8249
|
+
var _el$109 = _tmpl$16$1();
|
|
8250
|
+
insert(_el$109, () => ` • ${elapsedSeconds()}s`);
|
|
8251
|
+
return _el$109;
|
|
7980
8252
|
}
|
|
7981
8253
|
}), null);
|
|
7982
|
-
return _el$
|
|
8254
|
+
return _el$105;
|
|
7983
8255
|
}
|
|
7984
8256
|
}));
|
|
7985
|
-
return _el$
|
|
8257
|
+
return _el$103;
|
|
7986
8258
|
}
|
|
7987
8259
|
}), createComponent(Show, {
|
|
7988
8260
|
get when() {
|
|
@@ -7994,22 +8266,22 @@ ${contextBlock}` : contextBlock);
|
|
|
7994
8266
|
return runtimeState2().supervisor.pendingApprovals;
|
|
7995
8267
|
},
|
|
7996
8268
|
children: (approval) => (() => {
|
|
7997
|
-
var _el$
|
|
7998
|
-
insert(_el$
|
|
7999
|
-
insert(_el$
|
|
8269
|
+
var _el$231 = _tmpl$61(), _el$232 = _el$231.firstChild, _el$233 = _el$232.nextSibling, _el$234 = _el$233.firstChild, _el$235 = _el$234.firstChild, _el$236 = _el$235.nextSibling, _el$238 = _el$234.nextSibling, _el$239 = _el$238.nextSibling, _el$240 = _el$239.firstChild, _el$241 = _el$240.nextSibling;
|
|
8270
|
+
insert(_el$236, () => approval.name);
|
|
8271
|
+
insert(_el$233, createComponent(Show, {
|
|
8000
8272
|
get when() {
|
|
8001
8273
|
return approval.argsSummary;
|
|
8002
8274
|
},
|
|
8003
8275
|
get children() {
|
|
8004
|
-
var _el$
|
|
8005
|
-
insert(_el$
|
|
8006
|
-
return _el$
|
|
8276
|
+
var _el$237 = _tmpl$60();
|
|
8277
|
+
insert(_el$237, () => approval.argsSummary);
|
|
8278
|
+
return _el$237;
|
|
8007
8279
|
}
|
|
8008
|
-
}), _el$
|
|
8009
|
-
insert(_el$
|
|
8010
|
-
_el$
|
|
8011
|
-
_el$
|
|
8012
|
-
return _el$
|
|
8280
|
+
}), _el$238);
|
|
8281
|
+
insert(_el$238, () => approval.reason);
|
|
8282
|
+
_el$240.$$click = () => void resolveApproval(approval.id, true);
|
|
8283
|
+
_el$241.$$click = () => void resolveApproval(approval.id, false);
|
|
8284
|
+
return _el$231;
|
|
8013
8285
|
})()
|
|
8014
8286
|
});
|
|
8015
8287
|
}
|
|
@@ -8018,13 +8290,13 @@ ${contextBlock}` : contextBlock);
|
|
|
8018
8290
|
return memo(() => messages2().length === 0)() && !isStreaming2();
|
|
8019
8291
|
},
|
|
8020
8292
|
get children() {
|
|
8021
|
-
return _tmpl$
|
|
8293
|
+
return _tmpl$19$1();
|
|
8022
8294
|
}
|
|
8023
8295
|
})];
|
|
8024
8296
|
}
|
|
8025
|
-
}), _el$
|
|
8297
|
+
}), _el$111);
|
|
8026
8298
|
var _ref$ = messagesEndRef;
|
|
8027
|
-
typeof _ref$ === "function" ? use(_ref$, _el$
|
|
8299
|
+
typeof _ref$ === "function" ? use(_ref$, _el$111) : messagesEndRef = _el$111;
|
|
8028
8300
|
insert(_el$9, createComponent(Show, {
|
|
8029
8301
|
get when() {
|
|
8030
8302
|
return sidebarTab() === "chat";
|
|
@@ -8035,141 +8307,141 @@ ${contextBlock}` : contextBlock);
|
|
|
8035
8307
|
return isStreaming2() || messages2().length > 0;
|
|
8036
8308
|
},
|
|
8037
8309
|
get children() {
|
|
8038
|
-
var _el$
|
|
8039
|
-
insert(_el$
|
|
8310
|
+
var _el$112 = _tmpl$22$1();
|
|
8311
|
+
insert(_el$112, createComponent(Show, {
|
|
8040
8312
|
get when() {
|
|
8041
8313
|
return isStreaming2();
|
|
8042
8314
|
},
|
|
8043
8315
|
get children() {
|
|
8044
|
-
var _el$
|
|
8045
|
-
_el$
|
|
8046
|
-
return _el$
|
|
8316
|
+
var _el$113 = _tmpl$20$1();
|
|
8317
|
+
_el$113.$$click = () => cancel();
|
|
8318
|
+
return _el$113;
|
|
8047
8319
|
}
|
|
8048
8320
|
}), null);
|
|
8049
|
-
insert(_el$
|
|
8321
|
+
insert(_el$112, createComponent(Show, {
|
|
8050
8322
|
get when() {
|
|
8051
8323
|
return memo(() => !!!isStreaming2())() && messages2().length > 0;
|
|
8052
8324
|
},
|
|
8053
8325
|
get children() {
|
|
8054
|
-
var _el$
|
|
8055
|
-
_el$
|
|
8056
|
-
return _el$
|
|
8326
|
+
var _el$114 = _tmpl$21$1();
|
|
8327
|
+
_el$114.$$click = handleRetry;
|
|
8328
|
+
return _el$114;
|
|
8057
8329
|
}
|
|
8058
8330
|
}), null);
|
|
8059
|
-
return _el$
|
|
8331
|
+
return _el$112;
|
|
8060
8332
|
}
|
|
8061
8333
|
}), createComponent(Show, {
|
|
8062
8334
|
get when() {
|
|
8063
8335
|
return highlightCount() > 0;
|
|
8064
8336
|
},
|
|
8065
8337
|
get children() {
|
|
8066
|
-
var _el$
|
|
8067
|
-
_el$
|
|
8068
|
-
var _el$
|
|
8069
|
-
_el$
|
|
8070
|
-
_el$
|
|
8071
|
-
insert(_el$
|
|
8338
|
+
var _el$115 = _tmpl$23$1(), _el$116 = _el$115.firstChild, _el$117 = _el$116.nextSibling;
|
|
8339
|
+
_el$117.firstChild;
|
|
8340
|
+
var _el$119 = _el$117.nextSibling;
|
|
8341
|
+
_el$116.$$click = () => void scrollToHighlight(highlightIndex() - 1);
|
|
8342
|
+
_el$117.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex());
|
|
8343
|
+
insert(_el$117, (() => {
|
|
8072
8344
|
var _c$4 = memo(() => highlightIndex() >= 0);
|
|
8073
8345
|
return () => _c$4() ? `${highlightIndex() + 1} / ${highlightCount()}` : `${highlightCount()} highlight${highlightCount() > 1 ? "s" : ""}`;
|
|
8074
8346
|
})(), null);
|
|
8075
|
-
_el$
|
|
8347
|
+
_el$119.$$click = () => void scrollToHighlight(highlightIndex() < 0 ? 0 : highlightIndex() + 1);
|
|
8076
8348
|
createRenderEffect((_p$) => {
|
|
8077
|
-
var _v$
|
|
8078
|
-
_v$
|
|
8079
|
-
_v$
|
|
8349
|
+
var _v$6 = highlightIndex() <= 0, _v$7 = highlightIndex() >= highlightCount() - 1;
|
|
8350
|
+
_v$6 !== _p$.e && (_el$116.disabled = _p$.e = _v$6);
|
|
8351
|
+
_v$7 !== _p$.t && (_el$119.disabled = _p$.t = _v$7);
|
|
8080
8352
|
return _p$;
|
|
8081
8353
|
}, {
|
|
8082
8354
|
e: void 0,
|
|
8083
8355
|
t: void 0
|
|
8084
8356
|
});
|
|
8085
|
-
return _el$
|
|
8357
|
+
return _el$115;
|
|
8086
8358
|
}
|
|
8087
8359
|
}), createComponent(Show, {
|
|
8088
8360
|
get when() {
|
|
8089
8361
|
return queueNotice2() !== null || pendingQueryCount() > 0;
|
|
8090
8362
|
},
|
|
8091
8363
|
get children() {
|
|
8092
|
-
var _el$
|
|
8093
|
-
insert(_el$
|
|
8094
|
-
insert(_el$
|
|
8364
|
+
var _el$120 = _tmpl$26$1(), _el$121 = _el$120.firstChild, _el$122 = _el$121.firstChild;
|
|
8365
|
+
insert(_el$122, () => queueNotice2() ?? `Queued ${pendingQueryCount()}/${pendingQueryLimit}.`);
|
|
8366
|
+
insert(_el$121, createComponent(Show, {
|
|
8095
8367
|
get when() {
|
|
8096
8368
|
return pendingQueryCount() > 0;
|
|
8097
8369
|
},
|
|
8098
8370
|
get children() {
|
|
8099
|
-
var _el$
|
|
8100
|
-
_el$
|
|
8101
|
-
return _el$
|
|
8371
|
+
var _el$123 = _tmpl$24$1();
|
|
8372
|
+
_el$123.$$click = () => clearPendingQueries();
|
|
8373
|
+
return _el$123;
|
|
8102
8374
|
}
|
|
8103
8375
|
}), null);
|
|
8104
|
-
insert(_el$
|
|
8376
|
+
insert(_el$120, createComponent(Show, {
|
|
8105
8377
|
get when() {
|
|
8106
8378
|
return pendingQueries2().length > 0;
|
|
8107
8379
|
},
|
|
8108
8380
|
get children() {
|
|
8109
|
-
var _el$
|
|
8110
|
-
insert(_el$
|
|
8381
|
+
var _el$124 = _tmpl$25$1();
|
|
8382
|
+
insert(_el$124, createComponent(For, {
|
|
8111
8383
|
get each() {
|
|
8112
8384
|
return pendingQueries2();
|
|
8113
8385
|
},
|
|
8114
8386
|
children: (pendingPrompt, index) => (() => {
|
|
8115
|
-
var _el$
|
|
8116
|
-
setAttribute(_el$
|
|
8117
|
-
insert(_el$
|
|
8118
|
-
_el$
|
|
8119
|
-
createRenderEffect(() => setAttribute(_el$
|
|
8120
|
-
return _el$
|
|
8387
|
+
var _el$242 = _tmpl$62(), _el$243 = _el$242.firstChild, _el$244 = _el$243.nextSibling;
|
|
8388
|
+
setAttribute(_el$243, "title", pendingPrompt);
|
|
8389
|
+
insert(_el$243, pendingPrompt);
|
|
8390
|
+
_el$244.$$click = () => removePendingQuery(index());
|
|
8391
|
+
createRenderEffect(() => setAttribute(_el$244, "aria-label", `Remove queued prompt ${index() + 1}`));
|
|
8392
|
+
return _el$242;
|
|
8121
8393
|
})()
|
|
8122
8394
|
}));
|
|
8123
|
-
return _el$
|
|
8395
|
+
return _el$124;
|
|
8124
8396
|
}
|
|
8125
8397
|
}), null);
|
|
8126
|
-
return _el$
|
|
8398
|
+
return _el$120;
|
|
8127
8399
|
}
|
|
8128
8400
|
}), (() => {
|
|
8129
|
-
var _el$
|
|
8130
|
-
_el$
|
|
8401
|
+
var _el$125 = _tmpl$27$1(), _el$126 = _el$125.firstChild, _el$127 = _el$126.nextSibling;
|
|
8402
|
+
_el$126.$$keydown = (e) => {
|
|
8131
8403
|
if (e.key === "Enter" && !e.shiftKey) {
|
|
8132
8404
|
e.preventDefault();
|
|
8133
8405
|
void handleChatSend();
|
|
8134
8406
|
}
|
|
8135
8407
|
};
|
|
8136
|
-
_el$
|
|
8408
|
+
_el$126.$$input = (e) => setChatInput(e.currentTarget.value);
|
|
8137
8409
|
var _ref$2 = chatInputRef;
|
|
8138
|
-
typeof _ref$2 === "function" ? use(_ref$2, _el$
|
|
8139
|
-
_el$
|
|
8140
|
-
insert(_el$
|
|
8410
|
+
typeof _ref$2 === "function" ? use(_ref$2, _el$126) : chatInputRef = _el$126;
|
|
8411
|
+
_el$127.$$click = () => void handleChatSend();
|
|
8412
|
+
insert(_el$127, () => isStreaming2() ? "Queue" : "Send");
|
|
8141
8413
|
createRenderEffect((_p$) => {
|
|
8142
|
-
var _v$
|
|
8143
|
-
_v$
|
|
8144
|
-
_v$
|
|
8414
|
+
var _v$8 = isStreaming2() ? "Send now to queue the next prompt..." : "Ask anything...", _v$9 = !chatInput().trim();
|
|
8415
|
+
_v$8 !== _p$.e && setAttribute(_el$126, "placeholder", _p$.e = _v$8);
|
|
8416
|
+
_v$9 !== _p$.t && (_el$127.disabled = _p$.t = _v$9);
|
|
8145
8417
|
return _p$;
|
|
8146
8418
|
}, {
|
|
8147
8419
|
e: void 0,
|
|
8148
8420
|
t: void 0
|
|
8149
8421
|
});
|
|
8150
|
-
createRenderEffect(() => _el$
|
|
8151
|
-
return _el$
|
|
8422
|
+
createRenderEffect(() => _el$126.value = chatInput());
|
|
8423
|
+
return _el$125;
|
|
8152
8424
|
})()];
|
|
8153
8425
|
}
|
|
8154
8426
|
}), null);
|
|
8155
8427
|
createRenderEffect((_p$) => {
|
|
8156
|
-
var _v$
|
|
8157
|
-
_v$
|
|
8158
|
-
_v$
|
|
8159
|
-
_v$
|
|
8160
|
-
_v$
|
|
8161
|
-
_v$
|
|
8162
|
-
_v$
|
|
8163
|
-
_v$
|
|
8164
|
-
_v$
|
|
8165
|
-
_v$
|
|
8166
|
-
_v$
|
|
8167
|
-
_v$
|
|
8168
|
-
_v$
|
|
8169
|
-
_v$
|
|
8170
|
-
_v$
|
|
8171
|
-
_v$
|
|
8172
|
-
_v$
|
|
8428
|
+
var _v$0 = `${sidebarWidth2()}px`, _v$1 = !!isDragging(), _v$10 = !!(sidebarTab() === "supervisor"), _v$11 = sidebarTab() === "supervisor", _v$12 = !!(sidebarTab() === "bookmarks"), _v$13 = sidebarTab() === "bookmarks", _v$14 = !!(sidebarTab() === "checkpoints"), _v$15 = sidebarTab() === "checkpoints", _v$16 = !!(sidebarTab() === "chat"), _v$17 = sidebarTab() === "chat", _v$18 = !!(sidebarTab() === "automation"), _v$19 = sidebarTab() === "automation", _v$20 = !!(sidebarTab() === "history"), _v$21 = sidebarTab() === "history", _v$22 = !!(sidebarTab() === "diff"), _v$23 = sidebarTab() === "diff";
|
|
8429
|
+
_v$0 !== _p$.e && setStyleProperty(_el$9, "width", _p$.e = _v$0);
|
|
8430
|
+
_v$1 !== _p$.t && _el$0.classList.toggle("dragging", _p$.t = _v$1);
|
|
8431
|
+
_v$10 !== _p$.a && _el$16.classList.toggle("active", _p$.a = _v$10);
|
|
8432
|
+
_v$11 !== _p$.o && setAttribute(_el$16, "aria-selected", _p$.o = _v$11);
|
|
8433
|
+
_v$12 !== _p$.i && _el$19.classList.toggle("active", _p$.i = _v$12);
|
|
8434
|
+
_v$13 !== _p$.n && setAttribute(_el$19, "aria-selected", _p$.n = _v$13);
|
|
8435
|
+
_v$14 !== _p$.s && _el$20.classList.toggle("active", _p$.s = _v$14);
|
|
8436
|
+
_v$15 !== _p$.h && setAttribute(_el$20, "aria-selected", _p$.h = _v$15);
|
|
8437
|
+
_v$16 !== _p$.r && _el$21.classList.toggle("active", _p$.r = _v$16);
|
|
8438
|
+
_v$17 !== _p$.d && setAttribute(_el$21, "aria-selected", _p$.d = _v$17);
|
|
8439
|
+
_v$18 !== _p$.l && _el$22.classList.toggle("active", _p$.l = _v$18);
|
|
8440
|
+
_v$19 !== _p$.u && setAttribute(_el$22, "aria-selected", _p$.u = _v$19);
|
|
8441
|
+
_v$20 !== _p$.c && _el$23.classList.toggle("active", _p$.c = _v$20);
|
|
8442
|
+
_v$21 !== _p$.w && setAttribute(_el$23, "aria-selected", _p$.w = _v$21);
|
|
8443
|
+
_v$22 !== _p$.m && _el$24.classList.toggle("active", _p$.m = _v$22);
|
|
8444
|
+
_v$23 !== _p$.f && setAttribute(_el$24, "aria-selected", _p$.f = _v$23);
|
|
8173
8445
|
return _p$;
|
|
8174
8446
|
}, {
|
|
8175
8447
|
e: void 0,
|
|
@@ -8194,7 +8466,7 @@ ${contextBlock}` : contextBlock);
|
|
|
8194
8466
|
});
|
|
8195
8467
|
};
|
|
8196
8468
|
delegateEvents(["click", "pointerdown", "input", "keydown"]);
|
|
8197
|
-
var _tmpl$$3 = /* @__PURE__ */ template(`<div class=devtools-console>`), _tmpl$2$3 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for console output... Console monitoring activates when an agent uses devtools.`), _tmpl$3$2 = /* @__PURE__ */ template(`<div><span></span><span class=console-time></span><span class=console-text></span><span class=console-source>`), _tmpl$4$2 = /* @__PURE__ */ template(`<div class=devtools-network><div class=network-header><span>Method</span><span>URL</span><span>Status</span><span>Type</span><span>Time`), _tmpl$5$2 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for network requests... Network monitoring activates when an agent uses devtools.`), _tmpl$6$2 = /* @__PURE__ */ template(`<div><span class=network-method></span><span class=network-url></span><span></span><span class=network-type></span><span class=network-duration>`), _tmpl$7$
|
|
8469
|
+
var _tmpl$$3 = /* @__PURE__ */ template(`<div class=devtools-console>`), _tmpl$2$3 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for console output... Console monitoring activates when an agent uses devtools.`), _tmpl$3$2 = /* @__PURE__ */ template(`<div><span></span><span class=console-time></span><span class=console-text></span><span class=console-source>`), _tmpl$4$2 = /* @__PURE__ */ template(`<div class=devtools-network><div class=network-header><span>Method</span><span>URL</span><span>Status</span><span>Type</span><span>Time`), _tmpl$5$2 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for network requests... Network monitoring activates when an agent uses devtools.`), _tmpl$6$2 = /* @__PURE__ */ template(`<div><span class=network-method></span><span class=network-url></span><span></span><span class=network-type></span><span class=network-duration>`), _tmpl$7$2 = /* @__PURE__ */ template(`<div class=devtools-activity>`), _tmpl$8$1 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for agent devtools activity...`), _tmpl$9$1 = /* @__PURE__ */ template(`<div class=activity-entry><span class=activity-time></span><span class=activity-tool></span><span class=activity-args></span><span></span><span class=activity-duration>`), _tmpl$0$1 = /* @__PURE__ */ template(`<span class="devtools-tab-badge error">`), _tmpl$1$1 = /* @__PURE__ */ template(`<span class="devtools-tab-badge count">`), _tmpl$10$1 = /* @__PURE__ */ template(`<div class=export-date-inputs><div class=export-date-row><span class=export-date-label>From</span><input class=export-date-input type=date></div><div class=export-date-row><span class=export-date-label>To</span><input class=export-date-input type=date>`), _tmpl$11$1 = /* @__PURE__ */ template(`<div class=devtools-export-dropdown><div class=export-section><div class=export-section-label>Log Types</div><label class=export-checkbox><input type=checkbox>Console</label><label class=export-checkbox><input type=checkbox>Network</label><label class=export-checkbox><input type=checkbox>Activity</label></div><div class=export-section><div class=export-section-label>Date Range</div><div class=export-date-btns><button>Today</button><button>Custom</button></div></div><button class=export-submit>Export JSON`), _tmpl$12$1 = /* @__PURE__ */ template(`<div class=devtools-panel><div class=devtools-tabs><button>Console</button><button>Network</button><button>Activity</button><div class=devtools-tab-spacer></div><div class=devtools-export-wrap><button title="Export Logs"><svg width=13 height=13 viewBox="0 0 13 13"fill=none style=vertical-align:middle><path d="M6.5 1v7M3.5 5l3 3 3-3"stroke=currentColor stroke-width=1.3 stroke-linecap=round stroke-linejoin=round></path><path d="M1 9.5v1A1.5 1.5 0 0 0 2.5 12h8A1.5 1.5 0 0 0 12 10.5v-1"stroke=currentColor stroke-width=1.3 stroke-linecap=round></path></svg></button></div><button class=devtools-close-btn title="Close DevTools">×</button></div><div class=devtools-content>`);
|
|
8198
8470
|
function statusClass(status) {
|
|
8199
8471
|
if (status == null) return "pending";
|
|
8200
8472
|
if (status >= 200 && status < 300) return "ok";
|
|
@@ -8363,7 +8635,7 @@ const ActivityView = (props) => {
|
|
|
8363
8635
|
return _tmpl$8$1();
|
|
8364
8636
|
},
|
|
8365
8637
|
get children() {
|
|
8366
|
-
var _el$15 = _tmpl$7$
|
|
8638
|
+
var _el$15 = _tmpl$7$2();
|
|
8367
8639
|
insert(_el$15, createComponent(For, {
|
|
8368
8640
|
get each() {
|
|
8369
8641
|
return [...props.entries].reverse();
|
|
@@ -8715,7 +8987,7 @@ const PROVIDERS = {
|
|
|
8715
8987
|
apiKeyHint: "Optional — only if your endpoint requires authentication"
|
|
8716
8988
|
}
|
|
8717
8989
|
};
|
|
8718
|
-
var _tmpl$$2 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><button class="premium-btn premium-btn-upgrade">Try Premium free for 7 days — $5.99/mo after</button><span class=welcome-banner-note>Best for screenshots, saved sessions, credential vault, and longer autonomous runs.`), _tmpl$2$2 = /* @__PURE__ */ template(`<div class=welcome-banner><div class=welcome-banner-header><span class=welcome-banner-title>Welcome to Vessel</span><button class=welcome-banner-dismiss>×</button></div><p class=welcome-banner-text>Get started in three steps:</p><ol class=welcome-banner-steps><li><strong>Configure a chat provider</strong> — scroll to Chat Assistant below and add an API key</li><li><strong>Connect your agent harness</strong> — point it at the MCP endpoint shown below</li><li><strong>Learn the shortcuts</strong> — press <kbd>?</kbd> anytime for a quick reference`), _tmpl$3$1 = /* @__PURE__ */ template(`<div class="settings-callout settings-premium-callout"><div class=settings-callout-title>Start Vessel Premium with a 7-day free trial</div><p class=settings-callout-copy>Unlock screenshots, saved sessions, workflow tracking, table extraction, the credential vault, and longer autonomous runs without leaving the app.</p><div class=settings-premium-callout-actions><button class="premium-btn premium-btn-upgrade">Start 7-day free trial — $5.99/mo after</button><button class="premium-btn premium-btn-activate">See activation steps`), _tmpl$4$1 = /* @__PURE__ */ template(`<input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200>`), _tmpl$5$1 = /* @__PURE__ */ template(`<div class=vault-entries>`), _tmpl$6$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-provider>Provider</label><select id=chat-provider class="settings-input settings-select">`), _tmpl$7 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$8 = /* @__PURE__ */ template(`<p class=settings-hint>An API key is already stored securely for this provider. Leave this blank to keep it, or enter a new key to replace it.`), _tmpl$9 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$0 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-api-key>API Key</label><input id=chat-api-key class=settings-input type=password>`), _tmpl$1 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$10 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$11 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-model>Model</label><div style=display:flex;gap:6px;align-items:center><button type=button class=settings-refresh-btn title="Refresh model list">↺`), _tmpl$12 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-base-url>Base URL</label><input id=chat-base-url class=settings-input>`), _tmpl$13 = /* @__PURE__ */ template(`<p class=settings-hint>Vessel auto-detects the active model from your configured \`llama-server\` base URL. For agent loops, run \`llama-server\` with \`--ctx-size 16384\` minimum and \`32768\` recommended.`), _tmpl$14 = /* @__PURE__ */ template(`<div class=premium-section><div class=premium-active-badge>Premium Active</div><p class=premium-detail></p><div class=premium-actions-row><button class="premium-btn premium-btn-manage">Manage Subscription</button><button class="premium-btn premium-btn-reset">Sign Out`), _tmpl$15 = /* @__PURE__ */ template(`<span class=vault-premium-badge>Premium`), _tmpl$16 = /* @__PURE__ */ template(`<p class=settings-hint style=margin-bottom:10px>Store credentials for agent-driven logins. Credentials are encrypted at rest and never sent to AI providers — they are filled directly into login forms with your consent.`), _tmpl$17 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Credential`), _tmpl$18 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Label (e.g. Work GitHub)"><input class=settings-input placeholder="Domain pattern (e.g. github.com, *.aws.amazon.com)"><input class=settings-input placeholder="Username / email"><input class=settings-input type=password placeholder=Password><input class=settings-input placeholder="TOTP secret (optional, base32)"><input class=settings-input placeholder="Notes (optional)"><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Credential</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$19 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Profile`), _tmpl$20 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Profile name (e.g. Personal, Work)"><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder="First name"><input class=settings-input placeholder="Last name"></div><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder=Email><input class=settings-input placeholder=Phone></div><input class=settings-input placeholder="Organization (optional)"><input class=settings-input placeholder="Address line 1"><input class=settings-input placeholder="Address line 2 (optional)"><div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px"><input class=settings-input placeholder=City><input class=settings-input placeholder=State><input class=settings-input placeholder="ZIP / Postal"></div><input class=settings-input placeholder=Country><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Profile</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$21 = /* @__PURE__ */ template(`<textarea class="settings-input settings-textarea"rows=4>`), _tmpl$22 = /* @__PURE__ */ template(`<p class=settings-hint>`), _tmpl$23 = /* @__PURE__ */ template(`<p class=settings-hint>Restrict which domains can be navigated to. Use allowlist mode for kiosk or supervised browsing, blocklist to block specific sites.`), _tmpl$24 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=settings-panel><h2 class=settings-title>Runtime Settings</h2><div class=settings-callout><div class=settings-callout-title>External Agent Control</div><p class=settings-callout-copy>Vessel is configured to run under an external harness such as Hermes Agent or OpenClaw. Provider and model selection are not configured inside Vessel.</p></div><div class=settings-field><label class=settings-label for=default-homepage>Homepage</label><input id=default-homepage class=settings-input placeholder=https://start.duckduckgo.com><p class=settings-hint>The page that opens when you create a new tab or launch Vessel without restoring a previous session.</p></div><div class=settings-field><label class=settings-label for=default-search-engine>Default Search Engine</label><select id=default-search-engine class=settings-input><option value=none>None (disabled)</option></select><p class=settings-hint>The search engine used by the AI agent when it needs to search the web. "None" disables the fallback and forces the agent to use on-page search inputs only.</p></div><div class=settings-field><label class=settings-label for=download-path>Download Location</label><input id=download-path class=settings-input placeholder="Default: ~/Downloads"><p class=settings-hint>Directory for saved files. Leave blank to use the system default Downloads folder.</p></div><div class=settings-field><label class=settings-label for=mcp-port>MCP Port</label><input id=mcp-port class=settings-input placeholder=3100><p class=settings-hint>External harnesses connect to Vessel at <code>http://127.0.0.1:<port>/mcp</code>. Changing this value restarts the MCP server immediately.</p></div><div class=settings-field><label class=settings-label for=max-tool-iterations>Max Tool Iterations</label><p class=settings-hint></p></div><div class=settings-field><label class=settings-label for=obsidian-vault-path>Obsidian Vault Path</label><input id=obsidian-vault-path class=settings-input placeholder=/home/you/Documents/MyVault><p class=settings-hint>Optional. When set, Vessel memory tools can write markdown notes into this vault for research breadcrumbs and summaries.</p></div><div class=settings-field><label class=settings-label for=agent-transcript-mode>Agent Transcript Monitor</label><select id=agent-transcript-mode class="settings-input settings-select"><option value=off>Off</option><option value=summary>Summary HUD</option><option value=full>Full transcript</option></select><p class=settings-hint>Controls the in-browser transcript monitor when an external harness publishes reasoning or status updates into Vessel via the<code>vessel_publish_transcript</code> MCP tool. Summary HUD shows a compact 2-line status surface; Full transcript shows the recent entry list.</p></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Restore last browser session on launch</span></label></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Start bookmarks fresh on launch</span></label><p class=settings-hint>Off by default. When enabled, bookmark folders and saved pages are cleared each time Vessel starts.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Saved Sessions</label><p class=settings-hint style=margin-bottom:10px>Save the current browser state (tabs, cookies, storage) as a named session. Restore it later from this panel.</p><div class=premium-activate-row style=margin-bottom:8px><input class="settings-input premium-email-input"placeholder="Session name"><button class="premium-btn premium-btn-activate">Save Current</button></div></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Enable Chat Assistant</span></label><p class=settings-hint>Adds a Chat tab to the sidebar for conversing with an AI provider of your choice.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Vessel Premium</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Agent Credential Vault</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Form Autofill</label><p class=settings-hint style=margin-bottom:10px>Store your info once. Vessel matches it to form fields on any site using labels, field names, and autocomplete hints.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Anonymous Usage Analytics</span></label><p class=settings-hint>Help improve Vessel by sending anonymous usage data (tool popularity, session duration, provider type). No URLs, page content, queries, or personal data is ever collected.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label for=theme-select>Theme</label><select id=theme-select class="settings-input settings-select"><option value=dark>Dark</option><option value=light>Light</option></select><p class=settings-hint>Choose the application color scheme. Takes effect after saving.</p></div><div class=settings-field><label class=settings-label for=domain-policy-mode>Domain Restrictions</label><select id=domain-policy-mode class="settings-input settings-select"><option value=none>No restrictions</option><option value=allowlist>Allowlist (only listed domains)</option><option value=blocklist>Blocklist (block listed domains)</option></select></div><div class=settings-actions><button class=settings-save>Save</button><button class=settings-close>Close`), _tmpl$25 = /* @__PURE__ */ template(`<style>
|
|
8990
|
+
var _tmpl$$2 = /* @__PURE__ */ template(`<div class=welcome-banner-actions><button class="premium-btn premium-btn-upgrade">Try Premium free for 7 days — $5.99/mo after</button><span class=welcome-banner-note>Best for screenshots, saved sessions, credential vault, and longer autonomous runs.`), _tmpl$2$2 = /* @__PURE__ */ template(`<div class=welcome-banner><div class=welcome-banner-header><span class=welcome-banner-title>Welcome to Vessel</span><button class=welcome-banner-dismiss>×</button></div><p class=welcome-banner-text>Get started in three steps:</p><ol class=welcome-banner-steps><li><strong>Configure a chat provider</strong> — scroll to Chat Assistant below and add an API key</li><li><strong>Connect your agent harness</strong> — point it at the MCP endpoint shown below</li><li><strong>Learn the shortcuts</strong> — press <kbd>?</kbd> anytime for a quick reference`), _tmpl$3$1 = /* @__PURE__ */ template(`<div class="settings-callout settings-premium-callout"><div class=settings-callout-title>Start Vessel Premium with a 7-day free trial</div><p class=settings-callout-copy>Unlock screenshots, saved sessions, workflow tracking, table extraction, the credential vault, and longer autonomous runs without leaving the app.</p><div class=settings-premium-callout-actions><button class="premium-btn premium-btn-upgrade">Start 7-day free trial — $5.99/mo after</button><button class="premium-btn premium-btn-activate">See activation steps`), _tmpl$4$1 = /* @__PURE__ */ template(`<input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200>`), _tmpl$5$1 = /* @__PURE__ */ template(`<div class=vault-entries>`), _tmpl$6$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-provider>Provider</label><select id=chat-provider class="settings-input settings-select">`), _tmpl$7$1 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$8 = /* @__PURE__ */ template(`<p class=settings-hint>An API key is already stored securely for this provider. Leave this blank to keep it, or enter a new key to replace it.`), _tmpl$9 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$0 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-api-key>API Key</label><input id=chat-api-key class=settings-input type=password>`), _tmpl$1 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$10 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$11 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-model>Model</label><div style=display:flex;gap:6px;align-items:center><button type=button class=settings-refresh-btn title="Refresh model list">↺`), _tmpl$12 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-base-url>Base URL</label><input id=chat-base-url class=settings-input>`), _tmpl$13 = /* @__PURE__ */ template(`<p class=settings-hint>Vessel auto-detects the active model from your configured \`llama-server\` base URL. For agent loops, run \`llama-server\` with \`--ctx-size 16384\` minimum and \`32768\` recommended.`), _tmpl$14 = /* @__PURE__ */ template(`<div class=premium-section><div class=premium-active-badge>Premium Active</div><p class=premium-detail></p><div class=premium-actions-row><button class="premium-btn premium-btn-manage">Manage Subscription</button><button class="premium-btn premium-btn-reset">Sign Out`), _tmpl$15 = /* @__PURE__ */ template(`<span class=vault-premium-badge>Premium`), _tmpl$16 = /* @__PURE__ */ template(`<p class=settings-hint style=margin-bottom:10px>Store credentials for agent-driven logins. Credentials are encrypted at rest and never sent to AI providers — they are filled directly into login forms with your consent.`), _tmpl$17 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Credential`), _tmpl$18 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Label (e.g. Work GitHub)"><input class=settings-input placeholder="Domain pattern (e.g. github.com, *.aws.amazon.com)"><input class=settings-input placeholder="Username / email"><input class=settings-input type=password placeholder=Password><input class=settings-input placeholder="TOTP secret (optional, base32)"><input class=settings-input placeholder="Notes (optional)"><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Credential</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$19 = /* @__PURE__ */ template(`<button class=vault-add-btn>+ Add Profile`), _tmpl$20 = /* @__PURE__ */ template(`<div class=vault-add-form><input class=settings-input placeholder="Profile name (e.g. Personal, Work)"><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder="First name"><input class=settings-input placeholder="Last name"></div><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px"><input class=settings-input placeholder=Email><input class=settings-input placeholder=Phone></div><input class=settings-input placeholder="Organization (optional)"><input class=settings-input placeholder="Address line 1"><input class=settings-input placeholder="Address line 2 (optional)"><div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px"><input class=settings-input placeholder=City><input class=settings-input placeholder=State><input class=settings-input placeholder="ZIP / Postal"></div><input class=settings-input placeholder=Country><div class=vault-add-actions><button class="premium-btn premium-btn-activate">Save Profile</button><button class="premium-btn premium-btn-reset">Cancel`), _tmpl$21 = /* @__PURE__ */ template(`<textarea class="settings-input settings-textarea"rows=4>`), _tmpl$22 = /* @__PURE__ */ template(`<p class=settings-hint>`), _tmpl$23 = /* @__PURE__ */ template(`<p class=settings-hint>Restrict which domains can be navigated to. Use allowlist mode for kiosk or supervised browsing, blocklist to block specific sites.`), _tmpl$24 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div class=settings-panel><h2 class=settings-title>Runtime Settings</h2><div class=settings-callout><div class=settings-callout-title>External Agent Control</div><p class=settings-callout-copy>Vessel is configured to run under an external harness such as Hermes Agent or OpenClaw. Provider and model selection are not configured inside Vessel.</p></div><div class=settings-field><label class=settings-label for=default-homepage>Homepage</label><input id=default-homepage class=settings-input placeholder=https://start.duckduckgo.com><p class=settings-hint>The page that opens when you create a new tab or launch Vessel without restoring a previous session.</p></div><div class=settings-field><label class=settings-label for=default-search-engine>Default Search Engine</label><select id=default-search-engine class=settings-input><option value=none>None (disabled)</option></select><p class=settings-hint>The search engine used by the AI agent when it needs to search the web. "None" disables the fallback and forces the agent to use on-page search inputs only.</p></div><div class=settings-field><label class=settings-label for=download-path>Download Location</label><input id=download-path class=settings-input placeholder="Default: ~/Downloads"><p class=settings-hint>Directory for saved files. Leave blank to use the system default Downloads folder.</p></div><div class=settings-field><label class=settings-label for=mcp-port>MCP Port</label><input id=mcp-port class=settings-input placeholder=3100><p class=settings-hint>External harnesses connect to Vessel at <code>http://127.0.0.1:<port>/mcp</code>. Changing this value restarts the MCP server immediately.</p></div><div class=settings-field><label class=settings-label for=max-tool-iterations>Max Tool Iterations</label><p class=settings-hint></p></div><div class=settings-field><label class=settings-label for=obsidian-vault-path>Obsidian Vault Path</label><input id=obsidian-vault-path class=settings-input placeholder=/home/you/Documents/MyVault><p class=settings-hint>Optional. When set, Vessel memory tools can write markdown notes into this vault for research breadcrumbs and summaries.</p></div><div class=settings-field><label class=settings-label for=agent-transcript-mode>Agent Transcript Monitor</label><select id=agent-transcript-mode class="settings-input settings-select"><option value=off>Off</option><option value=summary>Summary HUD</option><option value=full>Full transcript</option></select><p class=settings-hint>Controls the in-browser transcript monitor when an external harness publishes reasoning or status updates into Vessel via the<code>vessel_publish_transcript</code> MCP tool. Summary HUD shows a compact 2-line status surface; Full transcript shows the recent entry list.</p></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Restore last browser session on launch</span></label></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Start bookmarks fresh on launch</span></label><p class=settings-hint>Off by default. When enabled, bookmark folders and saved pages are cleared each time Vessel starts.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Saved Sessions</label><p class=settings-hint style=margin-bottom:10px>Save the current browser state (tabs, cookies, storage) as a named session. Restore it later from this panel.</p><div class=premium-activate-row style=margin-bottom:8px><input class="settings-input premium-email-input"placeholder="Session name"><button class="premium-btn premium-btn-activate">Save Current</button></div></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Enable Chat Assistant</span></label><p class=settings-hint>Adds a Chat tab to the sidebar for conversing with an AI provider of your choice.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Vessel Premium</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Agent Credential Vault</label></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label>Form Autofill</label><p class=settings-hint style=margin-bottom:10px>Store your info once. Vessel matches it to form fields on any site using labels, field names, and autocomplete hints.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Anonymous Usage Analytics</span></label><p class=settings-hint>Help improve Vessel by sending anonymous usage data (tool popularity, session duration, provider type). No URLs, page content, queries, or personal data is ever collected.</p></div><div class=settings-section-divider></div><div class=settings-field><label class=settings-label for=theme-select>Theme</label><select id=theme-select class="settings-input settings-select"><option value=dark>Dark</option><option value=light>Light</option></select><p class=settings-hint>Choose the application color scheme. Takes effect after saving.</p></div><div class=settings-field><label class=settings-label for=domain-policy-mode>Domain Restrictions</label><select id=domain-policy-mode class="settings-input settings-select"><option value=none>No restrictions</option><option value=allowlist>Allowlist (only listed domains)</option><option value=blocklist>Blocklist (block listed domains)</option></select></div><div class=settings-actions><button class=settings-save>Save</button><button class=settings-close>Close`), _tmpl$25 = /* @__PURE__ */ template(`<style>
|
|
8719
8991
|
.settings-panel {
|
|
8720
8992
|
width: min(440px, calc(100vw - 32px));
|
|
8721
8993
|
max-height: calc(100vh - 48px);
|
|
@@ -9978,7 +10250,7 @@ const Settings = () => {
|
|
|
9978
10250
|
return !chatProviderMeta().requiresKey;
|
|
9979
10251
|
},
|
|
9980
10252
|
get children() {
|
|
9981
|
-
return _tmpl$7();
|
|
10253
|
+
return _tmpl$7$1();
|
|
9982
10254
|
}
|
|
9983
10255
|
}), null);
|
|
9984
10256
|
_el$66.$$input = (e) => {
|
|
@@ -10681,7 +10953,7 @@ var _tmpl$$1 = /* @__PURE__ */ template(`<div class=command-bar-overlay><div cla
|
|
|
10681
10953
|
font-size: 13px;
|
|
10682
10954
|
color: var(--text-secondary);
|
|
10683
10955
|
}
|
|
10684
|
-
`), _tmpl$3 = /* @__PURE__ */ template(`<div class=keyboard-help-keys>`), _tmpl$4 = /* @__PURE__ */ template(`<div class=keyboard-help-action>`), _tmpl$5 = /* @__PURE__ */ template(`<kbd>`), _tmpl$
|
|
10956
|
+
`), _tmpl$3 = /* @__PURE__ */ template(`<div class=keyboard-help-keys>`), _tmpl$4 = /* @__PURE__ */ template(`<div class=keyboard-help-action>`), _tmpl$5 = /* @__PURE__ */ template(`<span class=keyboard-help-plus>/`), _tmpl$6 = /* @__PURE__ */ template(`<kbd>`), _tmpl$7 = /* @__PURE__ */ template(`<span class=keyboard-help-plus>+`);
|
|
10685
10957
|
const SHORTCUTS = [{
|
|
10686
10958
|
keys: "Ctrl+L",
|
|
10687
10959
|
action: "AI Command Bar",
|
|
@@ -10698,6 +10970,9 @@ const SHORTCUTS = [{
|
|
|
10698
10970
|
keys: "F12",
|
|
10699
10971
|
action: "Toggle Dev Tools Panel",
|
|
10700
10972
|
privateMode: false
|
|
10973
|
+
}, {
|
|
10974
|
+
keys: "Ctrl+N",
|
|
10975
|
+
action: "New Window"
|
|
10701
10976
|
}, {
|
|
10702
10977
|
keys: "Ctrl+T",
|
|
10703
10978
|
action: "New Tab"
|
|
@@ -10722,6 +10997,12 @@ const SHORTCUTS = [{
|
|
|
10722
10997
|
}, {
|
|
10723
10998
|
keys: "Ctrl+Shift+N",
|
|
10724
10999
|
action: "New Private Window"
|
|
11000
|
+
}, {
|
|
11001
|
+
keys: "Ctrl+P",
|
|
11002
|
+
action: "Print Page"
|
|
11003
|
+
}, {
|
|
11004
|
+
keys: "Ctrl+Shift+P",
|
|
11005
|
+
action: "Save Page as PDF"
|
|
10725
11006
|
}, {
|
|
10726
11007
|
keys: "Ctrl+,",
|
|
10727
11008
|
action: "Settings",
|
|
@@ -10734,6 +11015,9 @@ const SHORTCUTS = [{
|
|
|
10734
11015
|
keys: "?",
|
|
10735
11016
|
action: "This help overlay"
|
|
10736
11017
|
}];
|
|
11018
|
+
function shortcutParts(keys) {
|
|
11019
|
+
return keys.split(" / ").map((combo) => combo.replace(/\+\+/g, "+Plus").split("+").filter(Boolean).map((key) => key === "Plus" ? "+" : key));
|
|
11020
|
+
}
|
|
10737
11021
|
const KeyboardHelp = (props) => {
|
|
10738
11022
|
const {
|
|
10739
11023
|
visible,
|
|
@@ -10752,11 +11036,11 @@ const KeyboardHelp = (props) => {
|
|
|
10752
11036
|
addEventListener(_el$5, "click", props.onClose, true);
|
|
10753
11037
|
insert(_el$6, () => shortcuts().map((s) => [(() => {
|
|
10754
11038
|
var _el$8 = _tmpl$3();
|
|
10755
|
-
insert(_el$8, () => s.keys.
|
|
10756
|
-
var _el$
|
|
10757
|
-
insert(_el$
|
|
10758
|
-
return _el$
|
|
10759
|
-
})()]));
|
|
11039
|
+
insert(_el$8, () => shortcutParts(s.keys).map((combo, comboIndex) => [comboIndex > 0 && _tmpl$5(), memo(() => combo.map((key, keyIndex) => [keyIndex > 0 && _tmpl$7(), (() => {
|
|
11040
|
+
var _el$1 = _tmpl$6();
|
|
11041
|
+
insert(_el$1, key);
|
|
11042
|
+
return _el$1;
|
|
11043
|
+
})()]))]));
|
|
10760
11044
|
return _el$8;
|
|
10761
11045
|
})(), (() => {
|
|
10762
11046
|
var _el$9 = _tmpl$4();
|
|
@@ -10776,17 +11060,17 @@ function setupKeybindings(handlers) {
|
|
|
10776
11060
|
const key = e.key.toLowerCase();
|
|
10777
11061
|
if (ctrl && key === "l" && !e.shiftKey) {
|
|
10778
11062
|
e.preventDefault();
|
|
10779
|
-
handlers.openCommandBar();
|
|
11063
|
+
handlers.openCommandBar?.();
|
|
10780
11064
|
return;
|
|
10781
11065
|
}
|
|
10782
11066
|
if (ctrl && key === "l" && e.shiftKey) {
|
|
10783
11067
|
e.preventDefault();
|
|
10784
|
-
handlers.toggleSidebar();
|
|
11068
|
+
handlers.toggleSidebar?.();
|
|
10785
11069
|
return;
|
|
10786
11070
|
}
|
|
10787
11071
|
if (ctrl && key === "f" && e.shiftKey) {
|
|
10788
11072
|
e.preventDefault();
|
|
10789
|
-
handlers.toggleFocusMode();
|
|
11073
|
+
handlers.toggleFocusMode?.();
|
|
10790
11074
|
return;
|
|
10791
11075
|
}
|
|
10792
11076
|
if (ctrl && key === "t" && e.shiftKey) {
|
|
@@ -10799,6 +11083,11 @@ function setupKeybindings(handlers) {
|
|
|
10799
11083
|
handlers.openPrivateWindow?.();
|
|
10800
11084
|
return;
|
|
10801
11085
|
}
|
|
11086
|
+
if (ctrl && key === "n" && !e.shiftKey) {
|
|
11087
|
+
e.preventDefault();
|
|
11088
|
+
handlers.openNewWindow?.();
|
|
11089
|
+
return;
|
|
11090
|
+
}
|
|
10802
11091
|
if (ctrl && key === "t" && !e.shiftKey) {
|
|
10803
11092
|
e.preventDefault();
|
|
10804
11093
|
handlers.newTab();
|
|
@@ -10809,14 +11098,24 @@ function setupKeybindings(handlers) {
|
|
|
10809
11098
|
handlers.closeTab();
|
|
10810
11099
|
return;
|
|
10811
11100
|
}
|
|
11101
|
+
if (ctrl && key === "p" && e.shiftKey) {
|
|
11102
|
+
e.preventDefault();
|
|
11103
|
+
handlers.printToPdf?.();
|
|
11104
|
+
return;
|
|
11105
|
+
}
|
|
11106
|
+
if (ctrl && key === "p" && !e.shiftKey) {
|
|
11107
|
+
e.preventDefault();
|
|
11108
|
+
handlers.print?.();
|
|
11109
|
+
return;
|
|
11110
|
+
}
|
|
10812
11111
|
if (ctrl && e.key === ",") {
|
|
10813
11112
|
e.preventDefault();
|
|
10814
|
-
handlers.openSettings();
|
|
11113
|
+
handlers.openSettings?.();
|
|
10815
11114
|
return;
|
|
10816
11115
|
}
|
|
10817
11116
|
if (ctrl && key === "h" && !e.shiftKey) {
|
|
10818
11117
|
e.preventDefault();
|
|
10819
|
-
handlers.captureHighlight();
|
|
11118
|
+
handlers.captureHighlight?.();
|
|
10820
11119
|
return;
|
|
10821
11120
|
}
|
|
10822
11121
|
if (e.key === "F12") {
|
|
@@ -10862,6 +11161,8 @@ try {
|
|
|
10862
11161
|
const App = () => {
|
|
10863
11162
|
const view = new URLSearchParams(window.location.search).get("view") || "chrome";
|
|
10864
11163
|
const isPrivateWindow = new URLSearchParams(window.location.search).get("private") === "1";
|
|
11164
|
+
const isSecondaryWindow = new URLSearchParams(window.location.search).get("secondary") === "1";
|
|
11165
|
+
const isChromeOnlyWindow = isPrivateWindow || isSecondaryWindow;
|
|
10865
11166
|
const {
|
|
10866
11167
|
openCommandBar,
|
|
10867
11168
|
toggleSidebar,
|
|
@@ -10929,16 +11230,16 @@ const App = () => {
|
|
|
10929
11230
|
});
|
|
10930
11231
|
if (view !== "chrome") return;
|
|
10931
11232
|
const cleanupKeys = setupKeybindings({
|
|
10932
|
-
openCommandBar:
|
|
10933
|
-
toggleSidebar:
|
|
10934
|
-
toggleFocusMode:
|
|
11233
|
+
openCommandBar: isChromeOnlyWindow ? void 0 : openCommandBar,
|
|
11234
|
+
toggleSidebar: isChromeOnlyWindow ? void 0 : toggleSidebar,
|
|
11235
|
+
toggleFocusMode: isChromeOnlyWindow ? void 0 : toggleFocusMode,
|
|
10935
11236
|
newTab: () => createTab(),
|
|
10936
11237
|
closeTab: () => {
|
|
10937
11238
|
const id = activeTabId2();
|
|
10938
11239
|
if (id) closeTab(id);
|
|
10939
11240
|
},
|
|
10940
|
-
openSettings:
|
|
10941
|
-
captureHighlight:
|
|
11241
|
+
openSettings: isChromeOnlyWindow ? void 0 : openSettings,
|
|
11242
|
+
captureHighlight: isChromeOnlyWindow ? void 0 : captureHighlight,
|
|
10942
11243
|
zoomIn: () => {
|
|
10943
11244
|
const id = activeTabId2();
|
|
10944
11245
|
if (id) zoomIn(id);
|
|
@@ -10952,8 +11253,17 @@ const App = () => {
|
|
|
10952
11253
|
if (id) zoomReset(id);
|
|
10953
11254
|
},
|
|
10954
11255
|
reopenClosedTab: () => reopenClosed(),
|
|
11256
|
+
openNewWindow: () => window.vessel.tabs.openNewWindow(),
|
|
10955
11257
|
openPrivateWindow: () => window.vessel.tabs.openPrivateWindow(),
|
|
10956
|
-
|
|
11258
|
+
print: () => {
|
|
11259
|
+
const id = activeTabId2();
|
|
11260
|
+
if (id) window.vessel.tabs.print(id);
|
|
11261
|
+
},
|
|
11262
|
+
printToPdf: () => {
|
|
11263
|
+
const id = activeTabId2();
|
|
11264
|
+
if (id) void window.vessel.tabs.printToPdf(id);
|
|
11265
|
+
},
|
|
11266
|
+
toggleDevTools: isChromeOnlyWindow ? void 0 : () => {
|
|
10957
11267
|
window.vessel.devtoolsPanel.toggle();
|
|
10958
11268
|
},
|
|
10959
11269
|
toggleKeyboardHelp: () => setKeyboardHelpOpen((v) => !v)
|
|
@@ -10988,7 +11298,7 @@ const App = () => {
|
|
|
10988
11298
|
insert(_el$, createComponent(DownloadToast, {}), _el$2);
|
|
10989
11299
|
insert(_el$, createComponent(FindBar, {}), _el$2);
|
|
10990
11300
|
insert(_el$, createComponent(Show, {
|
|
10991
|
-
when: !
|
|
11301
|
+
when: !isChromeOnlyWindow,
|
|
10992
11302
|
get children() {
|
|
10993
11303
|
return [createComponent(FlowProgress, {}), createComponent(AgentTranscriptDock, {})];
|
|
10994
11304
|
}
|
|
@@ -11007,7 +11317,7 @@ const App = () => {
|
|
|
11007
11317
|
}
|
|
11008
11318
|
}), null);
|
|
11009
11319
|
insert(_el$, createComponent(Show, {
|
|
11010
|
-
when: !
|
|
11320
|
+
when: !isChromeOnlyWindow,
|
|
11011
11321
|
get children() {
|
|
11012
11322
|
return [createComponent(CommandBar, {}), createComponent(Settings, {})];
|
|
11013
11323
|
}
|
|
@@ -11017,7 +11327,7 @@ const App = () => {
|
|
|
11017
11327
|
return keyboardHelpOpen();
|
|
11018
11328
|
},
|
|
11019
11329
|
onClose: () => setKeyboardHelpOpen(false),
|
|
11020
|
-
privateMode:
|
|
11330
|
+
privateMode: isChromeOnlyWindow
|
|
11021
11331
|
}), null);
|
|
11022
11332
|
createRenderEffect(() => _el$.classList.toggle("focus-mode", !!focusMode2()));
|
|
11023
11333
|
return _el$;
|