@quanta-intellect/vessel-browser 0.1.137 → 0.1.138

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.
@@ -1606,7 +1606,7 @@ var Icon = (props) => {
1606
1606
  })();
1607
1607
  };
1608
1608
  var Icon_default = Icon;
1609
- var iconNode$A = [["rect", {
1609
+ var iconNode$E = [["rect", {
1610
1610
  x: "2",
1611
1611
  y: "4",
1612
1612
  width: "20",
@@ -1624,11 +1624,11 @@ var iconNode$A = [["rect", {
1624
1624
  key: "1svtjw"
1625
1625
  }]];
1626
1626
  var AppWindow = (props) => createComponent(Icon_default, mergeProps(props, {
1627
- iconNode: iconNode$A,
1627
+ iconNode: iconNode$E,
1628
1628
  name: "app-window"
1629
1629
  }));
1630
1630
  var app_window_default = AppWindow;
1631
- var iconNode$z = [["path", {
1631
+ var iconNode$D = [["path", {
1632
1632
  d: "M12 7v14",
1633
1633
  key: "1akyts"
1634
1634
  }], ["path", {
@@ -1636,11 +1636,11 @@ var iconNode$z = [["path", {
1636
1636
  key: "ruj8y"
1637
1637
  }]];
1638
1638
  var BookOpen = (props) => createComponent(Icon_default, mergeProps(props, {
1639
- iconNode: iconNode$z,
1639
+ iconNode: iconNode$D,
1640
1640
  name: "book-open"
1641
1641
  }));
1642
1642
  var book_open_default = BookOpen;
1643
- var iconNode$y = [["path", {
1643
+ var iconNode$C = [["path", {
1644
1644
  d: "M12 8V4H8",
1645
1645
  key: "hb8ula"
1646
1646
  }], ["rect", {
@@ -1664,20 +1664,29 @@ var iconNode$y = [["path", {
1664
1664
  key: "rq6x2g"
1665
1665
  }]];
1666
1666
  var Bot = (props) => createComponent(Icon_default, mergeProps(props, {
1667
- iconNode: iconNode$y,
1667
+ iconNode: iconNode$C,
1668
1668
  name: "bot"
1669
1669
  }));
1670
1670
  var bot_default = Bot;
1671
- var iconNode$x = [["path", {
1671
+ var iconNode$B = [["path", {
1672
1672
  d: "M20 6 9 17l-5-5",
1673
1673
  key: "1gmf2c"
1674
1674
  }]];
1675
1675
  var Check = (props) => createComponent(Icon_default, mergeProps(props, {
1676
- iconNode: iconNode$x,
1676
+ iconNode: iconNode$B,
1677
1677
  name: "check"
1678
1678
  }));
1679
1679
  var check_default = Check;
1680
- var iconNode$w = [["circle", {
1680
+ var iconNode$A = [["path", {
1681
+ d: "m9 18 6-6-6-6",
1682
+ key: "mthhwq"
1683
+ }]];
1684
+ var ChevronRight = (props) => createComponent(Icon_default, mergeProps(props, {
1685
+ iconNode: iconNode$A,
1686
+ name: "chevron-right"
1687
+ }));
1688
+ var chevron_right_default = ChevronRight;
1689
+ var iconNode$z = [["circle", {
1681
1690
  cx: "12",
1682
1691
  cy: "12",
1683
1692
  r: "10",
@@ -1690,11 +1699,11 @@ var iconNode$w = [["circle", {
1690
1699
  key: "p32p05"
1691
1700
  }]];
1692
1701
  var CircleQuestionMark = (props) => createComponent(Icon_default, mergeProps(props, {
1693
- iconNode: iconNode$w,
1702
+ iconNode: iconNode$z,
1694
1703
  name: "circle-question-mark"
1695
1704
  }));
1696
1705
  var circle_question_mark_default = CircleQuestionMark;
1697
- var iconNode$v = [["rect", {
1706
+ var iconNode$y = [["rect", {
1698
1707
  width: "8",
1699
1708
  height: "4",
1700
1709
  x: "8",
@@ -1719,11 +1728,11 @@ var iconNode$v = [["rect", {
1719
1728
  key: "18s6g9"
1720
1729
  }]];
1721
1730
  var ClipboardList = (props) => createComponent(Icon_default, mergeProps(props, {
1722
- iconNode: iconNode$v,
1731
+ iconNode: iconNode$y,
1723
1732
  name: "clipboard-list"
1724
1733
  }));
1725
1734
  var clipboard_list_default = ClipboardList;
1726
- var iconNode$u = [["circle", {
1735
+ var iconNode$x = [["circle", {
1727
1736
  cx: "12",
1728
1737
  cy: "12",
1729
1738
  r: "10",
@@ -1733,11 +1742,11 @@ var iconNode$u = [["circle", {
1733
1742
  key: "mmk7yg"
1734
1743
  }]];
1735
1744
  var Clock = (props) => createComponent(Icon_default, mergeProps(props, {
1736
- iconNode: iconNode$u,
1745
+ iconNode: iconNode$x,
1737
1746
  name: "clock"
1738
1747
  }));
1739
1748
  var clock_default = Clock;
1740
- var iconNode$t = [["path", {
1749
+ var iconNode$w = [["path", {
1741
1750
  d: "M12 20v2",
1742
1751
  key: "1lh1kg"
1743
1752
  }], ["path", {
@@ -1789,11 +1798,11 @@ var iconNode$t = [["path", {
1789
1798
  key: "z9xiuo"
1790
1799
  }]];
1791
1800
  var Cpu = (props) => createComponent(Icon_default, mergeProps(props, {
1792
- iconNode: iconNode$t,
1801
+ iconNode: iconNode$w,
1793
1802
  name: "cpu"
1794
1803
  }));
1795
1804
  var cpu_default = Cpu;
1796
- var iconNode$s = [["path", {
1805
+ var iconNode$v = [["path", {
1797
1806
  d: "M12 15V3",
1798
1807
  key: "m9g1x1"
1799
1808
  }], ["path", {
@@ -1804,11 +1813,11 @@ var iconNode$s = [["path", {
1804
1813
  key: "brsn70"
1805
1814
  }]];
1806
1815
  var Download = (props) => createComponent(Icon_default, mergeProps(props, {
1807
- iconNode: iconNode$s,
1816
+ iconNode: iconNode$v,
1808
1817
  name: "download"
1809
1818
  }));
1810
1819
  var download_default = Download;
1811
- var iconNode$r = [["path", {
1820
+ var iconNode$u = [["path", {
1812
1821
  d: "M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21",
1813
1822
  key: "g5wo59"
1814
1823
  }], ["path", {
@@ -1816,11 +1825,11 @@ var iconNode$r = [["path", {
1816
1825
  key: "1wx5vj"
1817
1826
  }]];
1818
1827
  var Eraser = (props) => createComponent(Icon_default, mergeProps(props, {
1819
- iconNode: iconNode$r,
1828
+ iconNode: iconNode$u,
1820
1829
  name: "eraser"
1821
1830
  }));
1822
1831
  var eraser_default = Eraser;
1823
- var iconNode$q = [["path", {
1832
+ var iconNode$t = [["path", {
1824
1833
  d: "M15 3h6v6",
1825
1834
  key: "1q9fwt"
1826
1835
  }], ["path", {
@@ -1831,11 +1840,25 @@ var iconNode$q = [["path", {
1831
1840
  key: "a6xqqp"
1832
1841
  }]];
1833
1842
  var ExternalLink = (props) => createComponent(Icon_default, mergeProps(props, {
1834
- iconNode: iconNode$q,
1843
+ iconNode: iconNode$t,
1835
1844
  name: "external-link"
1836
1845
  }));
1837
1846
  var external_link_default = ExternalLink;
1838
- var iconNode$p = [["path", {
1847
+ var iconNode$s = [["path", {
1848
+ d: "M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",
1849
+ key: "1nclc0"
1850
+ }], ["circle", {
1851
+ cx: "12",
1852
+ cy: "12",
1853
+ r: "3",
1854
+ key: "1v7zrd"
1855
+ }]];
1856
+ var Eye = (props) => createComponent(Icon_default, mergeProps(props, {
1857
+ iconNode: iconNode$s,
1858
+ name: "eye"
1859
+ }));
1860
+ var eye_default = Eye;
1861
+ var iconNode$r = [["path", {
1839
1862
  d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
1840
1863
  key: "1oefj6"
1841
1864
  }], ["path", {
@@ -1849,11 +1872,11 @@ var iconNode$p = [["path", {
1849
1872
  key: "1npd3o"
1850
1873
  }]];
1851
1874
  var FileDown = (props) => createComponent(Icon_default, mergeProps(props, {
1852
- iconNode: iconNode$p,
1875
+ iconNode: iconNode$r,
1853
1876
  name: "file-down"
1854
1877
  }));
1855
1878
  var file_down_default = FileDown;
1856
- var iconNode$o = [["circle", {
1879
+ var iconNode$q = [["circle", {
1857
1880
  cx: "12",
1858
1881
  cy: "12",
1859
1882
  r: "3",
@@ -1872,11 +1895,11 @@ var iconNode$o = [["circle", {
1872
1895
  key: "ioqczr"
1873
1896
  }]];
1874
1897
  var Focus = (props) => createComponent(Icon_default, mergeProps(props, {
1875
- iconNode: iconNode$o,
1898
+ iconNode: iconNode$q,
1876
1899
  name: "focus"
1877
1900
  }));
1878
1901
  var focus_default = Focus;
1879
- var iconNode$n = [["circle", {
1902
+ var iconNode$p = [["circle", {
1880
1903
  cx: "12",
1881
1904
  cy: "12",
1882
1905
  r: "10",
@@ -1889,11 +1912,11 @@ var iconNode$n = [["circle", {
1889
1912
  key: "9i4pu4"
1890
1913
  }]];
1891
1914
  var Globe = (props) => createComponent(Icon_default, mergeProps(props, {
1892
- iconNode: iconNode$n,
1915
+ iconNode: iconNode$p,
1893
1916
  name: "globe"
1894
1917
  }));
1895
1918
  var globe_default = Globe;
1896
- var iconNode$m = [["path", {
1919
+ var iconNode$o = [["path", {
1897
1920
  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",
1898
1921
  key: "zzgyd3"
1899
1922
  }], ["path", {
@@ -1910,11 +1933,11 @@ var iconNode$m = [["path", {
1910
1933
  key: "jksky3"
1911
1934
  }]];
1912
1935
  var LayersPlus = (props) => createComponent(Icon_default, mergeProps(props, {
1913
- iconNode: iconNode$m,
1936
+ iconNode: iconNode$o,
1914
1937
  name: "layers-plus"
1915
1938
  }));
1916
1939
  var layers_plus_default = LayersPlus;
1917
- var iconNode$l = [["rect", {
1940
+ var iconNode$n = [["rect", {
1918
1941
  width: "18",
1919
1942
  height: "11",
1920
1943
  x: "3",
@@ -1927,11 +1950,11 @@ var iconNode$l = [["rect", {
1927
1950
  key: "fwvmzm"
1928
1951
  }]];
1929
1952
  var Lock = (props) => createComponent(Icon_default, mergeProps(props, {
1930
- iconNode: iconNode$l,
1953
+ iconNode: iconNode$n,
1931
1954
  name: "lock"
1932
1955
  }));
1933
1956
  var lock_default = Lock;
1934
- var iconNode$k = [["rect", {
1957
+ var iconNode$m = [["rect", {
1935
1958
  width: "18",
1936
1959
  height: "18",
1937
1960
  x: "3",
@@ -1943,11 +1966,11 @@ var iconNode$k = [["rect", {
1943
1966
  key: "fh3hqa"
1944
1967
  }]];
1945
1968
  var PanelLeft = (props) => createComponent(Icon_default, mergeProps(props, {
1946
- iconNode: iconNode$k,
1969
+ iconNode: iconNode$m,
1947
1970
  name: "panel-left"
1948
1971
  }));
1949
1972
  var panel_left_default = PanelLeft;
1950
- var iconNode$j = [["rect", {
1973
+ var iconNode$l = [["rect", {
1951
1974
  width: "18",
1952
1975
  height: "18",
1953
1976
  x: "3",
@@ -1962,11 +1985,11 @@ var iconNode$j = [["rect", {
1962
1985
  key: "12hl5m"
1963
1986
  }]];
1964
1987
  var PanelRightClose = (props) => createComponent(Icon_default, mergeProps(props, {
1965
- iconNode: iconNode$j,
1988
+ iconNode: iconNode$l,
1966
1989
  name: "panel-right-close"
1967
1990
  }));
1968
1991
  var panel_right_close_default = PanelRightClose;
1969
- var iconNode$i = [["rect", {
1992
+ var iconNode$k = [["rect", {
1970
1993
  width: "18",
1971
1994
  height: "18",
1972
1995
  x: "3",
@@ -1978,11 +2001,11 @@ var iconNode$i = [["rect", {
1978
2001
  key: "14nvp0"
1979
2002
  }]];
1980
2003
  var PanelRight = (props) => createComponent(Icon_default, mergeProps(props, {
1981
- iconNode: iconNode$i,
2004
+ iconNode: iconNode$k,
1982
2005
  name: "panel-right"
1983
2006
  }));
1984
2007
  var panel_right_default = PanelRight;
1985
- var iconNode$h = [["rect", {
2008
+ var iconNode$j = [["rect", {
1986
2009
  width: "18",
1987
2010
  height: "18",
1988
2011
  x: "3",
@@ -1994,11 +2017,23 @@ var iconNode$h = [["rect", {
1994
2017
  key: "1pudct"
1995
2018
  }]];
1996
2019
  var PanelTop = (props) => createComponent(Icon_default, mergeProps(props, {
1997
- iconNode: iconNode$h,
2020
+ iconNode: iconNode$j,
1998
2021
  name: "panel-top"
1999
2022
  }));
2000
2023
  var panel_top_default = PanelTop;
2001
- var iconNode$g = [["path", {
2024
+ var iconNode$i = [["path", {
2025
+ d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
2026
+ key: "1a8usu"
2027
+ }], ["path", {
2028
+ d: "m15 5 4 4",
2029
+ key: "1mk7zo"
2030
+ }]];
2031
+ var Pencil = (props) => createComponent(Icon_default, mergeProps(props, {
2032
+ iconNode: iconNode$i,
2033
+ name: "pencil"
2034
+ }));
2035
+ var pencil_default = Pencil;
2036
+ var iconNode$h = [["path", {
2002
2037
  d: "M5 12h14",
2003
2038
  key: "1ays0h"
2004
2039
  }], ["path", {
@@ -2006,11 +2041,11 @@ var iconNode$g = [["path", {
2006
2041
  key: "s699le"
2007
2042
  }]];
2008
2043
  var Plus = (props) => createComponent(Icon_default, mergeProps(props, {
2009
- iconNode: iconNode$g,
2044
+ iconNode: iconNode$h,
2010
2045
  name: "plus"
2011
2046
  }));
2012
2047
  var plus_default = Plus;
2013
- var iconNode$f = [["path", {
2048
+ var iconNode$g = [["path", {
2014
2049
  d: "M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",
2015
2050
  key: "143wyd"
2016
2051
  }], ["path", {
@@ -2025,11 +2060,11 @@ var iconNode$f = [["path", {
2025
2060
  key: "1ue0tg"
2026
2061
  }]];
2027
2062
  var Printer = (props) => createComponent(Icon_default, mergeProps(props, {
2028
- iconNode: iconNode$f,
2063
+ iconNode: iconNode$g,
2029
2064
  name: "printer"
2030
2065
  }));
2031
2066
  var printer_default = Printer;
2032
- var iconNode$e = [["path", {
2067
+ var iconNode$f = [["path", {
2033
2068
  d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
2034
2069
  key: "1357e3"
2035
2070
  }], ["path", {
@@ -2037,11 +2072,11 @@ var iconNode$e = [["path", {
2037
2072
  key: "1xhq8a"
2038
2073
  }]];
2039
2074
  var RotateCcw = (props) => createComponent(Icon_default, mergeProps(props, {
2040
- iconNode: iconNode$e,
2075
+ iconNode: iconNode$f,
2041
2076
  name: "rotate-ccw"
2042
2077
  }));
2043
2078
  var rotate_ccw_default = RotateCcw;
2044
- var iconNode$d = [["path", {
2079
+ var iconNode$e = [["path", {
2045
2080
  d: "m21 21-4.34-4.34",
2046
2081
  key: "14j7rj"
2047
2082
  }], ["circle", {
@@ -2051,11 +2086,11 @@ var iconNode$d = [["path", {
2051
2086
  key: "4ej97u"
2052
2087
  }]];
2053
2088
  var Search = (props) => createComponent(Icon_default, mergeProps(props, {
2054
- iconNode: iconNode$d,
2089
+ iconNode: iconNode$e,
2055
2090
  name: "search"
2056
2091
  }));
2057
2092
  var search_default = Search;
2058
- var iconNode$c = [["path", {
2093
+ var iconNode$d = [["path", {
2059
2094
  d: "M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",
2060
2095
  key: "1i5ecw"
2061
2096
  }], ["circle", {
@@ -2065,29 +2100,29 @@ var iconNode$c = [["path", {
2065
2100
  key: "1v7zrd"
2066
2101
  }]];
2067
2102
  var Settings$1 = (props) => createComponent(Icon_default, mergeProps(props, {
2068
- iconNode: iconNode$c,
2103
+ iconNode: iconNode$d,
2069
2104
  name: "settings"
2070
2105
  }));
2071
2106
  var settings_default = Settings$1;
2072
- var iconNode$b = [["path", {
2107
+ var iconNode$c = [["path", {
2073
2108
  d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
2074
2109
  key: "oel41y"
2075
2110
  }]];
2076
2111
  var Shield = (props) => createComponent(Icon_default, mergeProps(props, {
2077
- iconNode: iconNode$b,
2112
+ iconNode: iconNode$c,
2078
2113
  name: "shield"
2079
2114
  }));
2080
2115
  var shield_default = Shield;
2081
- var iconNode$a = [["path", {
2116
+ var iconNode$b = [["path", {
2082
2117
  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",
2083
2118
  key: "r04s7s"
2084
2119
  }]];
2085
2120
  var Star = (props) => createComponent(Icon_default, mergeProps(props, {
2086
- iconNode: iconNode$a,
2121
+ iconNode: iconNode$b,
2087
2122
  name: "star"
2088
2123
  }));
2089
2124
  var star_default = Star;
2090
- var iconNode$9 = [["path", {
2125
+ var iconNode$a = [["path", {
2091
2126
  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",
2092
2127
  key: "vktsd0"
2093
2128
  }], ["circle", {
@@ -2098,11 +2133,11 @@ var iconNode$9 = [["path", {
2098
2133
  key: "kqv944"
2099
2134
  }]];
2100
2135
  var Tag = (props) => createComponent(Icon_default, mergeProps(props, {
2101
- iconNode: iconNode$9,
2136
+ iconNode: iconNode$a,
2102
2137
  name: "tag"
2103
2138
  }));
2104
2139
  var tag_default = Tag;
2105
- var iconNode$8 = [["path", {
2140
+ var iconNode$9 = [["path", {
2106
2141
  d: "M10 11v6",
2107
2142
  key: "nco0om"
2108
2143
  }], ["path", {
@@ -2119,11 +2154,11 @@ var iconNode$8 = [["path", {
2119
2154
  key: "e791ji"
2120
2155
  }]];
2121
2156
  var Trash2 = (props) => createComponent(Icon_default, mergeProps(props, {
2122
- iconNode: iconNode$8,
2157
+ iconNode: iconNode$9,
2123
2158
  name: "trash-2"
2124
2159
  }));
2125
2160
  var trash_2_default = Trash2;
2126
- var iconNode$7 = [["path", {
2161
+ var iconNode$8 = [["path", {
2127
2162
  d: "M9 14 4 9l5-5",
2128
2163
  key: "102s5s"
2129
2164
  }], ["path", {
@@ -2131,10 +2166,25 @@ var iconNode$7 = [["path", {
2131
2166
  key: "f3b9sd"
2132
2167
  }]];
2133
2168
  var Undo2 = (props) => createComponent(Icon_default, mergeProps(props, {
2134
- iconNode: iconNode$7,
2169
+ iconNode: iconNode$8,
2135
2170
  name: "undo-2"
2136
2171
  }));
2137
2172
  var undo_2_default = Undo2;
2173
+ var iconNode$7 = [["path", {
2174
+ d: "M12 3v12",
2175
+ key: "1x0j5s"
2176
+ }], ["path", {
2177
+ d: "m17 8-5-5-5 5",
2178
+ key: "7q97r8"
2179
+ }], ["path", {
2180
+ d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",
2181
+ key: "ih7n3h"
2182
+ }]];
2183
+ var Upload = (props) => createComponent(Icon_default, mergeProps(props, {
2184
+ iconNode: iconNode$7,
2185
+ name: "upload"
2186
+ }));
2187
+ var upload_default = Upload;
2138
2188
  var iconNode$6 = [["path", {
2139
2189
  d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",
2140
2190
  key: "975kel"
@@ -6045,6 +6095,94 @@ function buildAndRememberBookmarkContext(args) {
6045
6095
  rememberedSummary: remembered?.summary ?? null
6046
6096
  });
6047
6097
  }
6098
+ const logger$1 = createLogger("AutomationKits");
6099
+ const BUNDLED_KITS = [];
6100
+ function normalizeSkillCommandToken(value) {
6101
+ return value.trim().toLowerCase().replace(/^\/+/, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
6102
+ }
6103
+ function getSkillCommandTokens(kit) {
6104
+ return Array.from(
6105
+ new Set([
6106
+ normalizeSkillCommandToken(kit.name),
6107
+ normalizeSkillCommandToken(kit.id)
6108
+ ].filter(Boolean))
6109
+ );
6110
+ }
6111
+ function parseSkillSlashInvocation(value, kits) {
6112
+ const trimmed = value.trim();
6113
+ if (!trimmed.startsWith("/")) return null;
6114
+ const [rawCommand = "", ...rest] = trimmed.split(/\s+/);
6115
+ const command = normalizeSkillCommandToken(rawCommand);
6116
+ let skillToken = command;
6117
+ let task = rest.join(" ").trim();
6118
+ if (command === "skill") {
6119
+ const [rawSkillToken = "", ...skillRest] = rest;
6120
+ skillToken = normalizeSkillCommandToken(rawSkillToken);
6121
+ task = skillRest.join(" ").trim();
6122
+ }
6123
+ if (!skillToken) return null;
6124
+ const kit = kits.find(
6125
+ (candidate) => getSkillCommandTokens(candidate).includes(skillToken)
6126
+ );
6127
+ return kit ? { kit, task } : null;
6128
+ }
6129
+ function getSkillSlashSuggestionQuery(value) {
6130
+ if (!value.startsWith("/") || value.includes("\n")) return null;
6131
+ const withoutSlash = value.slice(1);
6132
+ if (/^\S+\s+\S/.test(withoutSlash) && !withoutSlash.startsWith("skill ")) {
6133
+ return null;
6134
+ }
6135
+ if (withoutSlash === "skill") return "";
6136
+ if (withoutSlash.startsWith("skill ")) {
6137
+ const afterSkill = withoutSlash.slice("skill ".length);
6138
+ if (afterSkill.includes(" ")) return null;
6139
+ return normalizeSkillCommandToken(afterSkill);
6140
+ }
6141
+ if (withoutSlash.includes(" ")) return null;
6142
+ return normalizeSkillCommandToken(withoutSlash);
6143
+ }
6144
+ function getSkillSlashSuggestions(value, kits, limit = 6) {
6145
+ const query = getSkillSlashSuggestionQuery(value);
6146
+ if (query === null) return [];
6147
+ return kits.map((kit) => ({
6148
+ kit,
6149
+ tokens: getSkillCommandTokens(kit),
6150
+ normalizedName: normalizeSkillCommandToken(kit.name)
6151
+ })).filter(
6152
+ ({ tokens, normalizedName }) => query ? tokens.some((token) => token.includes(query)) || normalizedName.includes(query) : true
6153
+ ).sort((left, right) => {
6154
+ if (!query) return left.kit.name.localeCompare(right.kit.name);
6155
+ const leftStarts = left.tokens.some((token) => token.startsWith(query));
6156
+ const rightStarts = right.tokens.some((token) => token.startsWith(query));
6157
+ if (leftStarts !== rightStarts) return leftStarts ? -1 : 1;
6158
+ return left.kit.name.localeCompare(right.kit.name);
6159
+ }).slice(0, limit).map(({ kit }) => kit);
6160
+ }
6161
+ function buildSlashSkillValues(kit, task) {
6162
+ const values = {};
6163
+ for (const input of kit.inputs) {
6164
+ values[input.key] = input.defaultValue ?? "";
6165
+ }
6166
+ const targetInput = kit.inputs.find((input) => input.key === "task") ?? kit.inputs.find((input) => input.type === "textarea") ?? kit.inputs.find((input) => input.required) ?? kit.inputs[0];
6167
+ if (targetInput) {
6168
+ values[targetInput.key] = task;
6169
+ }
6170
+ const missingLabels = kit.inputs.filter((input) => input.required).filter((input) => !values[input.key]?.trim()).map((input) => input.label);
6171
+ return { values, missingLabels };
6172
+ }
6173
+ function renderKitPrompt(kit, values) {
6174
+ for (const input of kit.inputs) {
6175
+ if (input.required && !values[input.key]?.trim()) {
6176
+ logger$1.warn(
6177
+ `Required field "${input.key}" is empty for kit "${kit.id}".`
6178
+ );
6179
+ }
6180
+ }
6181
+ return kit.promptTemplate.replace(
6182
+ /\{\{(\w+)\}\}/g,
6183
+ (_, key) => values[key] ?? ""
6184
+ );
6185
+ }
6048
6186
  function _arrayLikeToArray(r, a) {
6049
6187
  (null == a || a > r.length) && (a = r.length);
6050
6188
  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
@@ -7690,156 +7828,8 @@ const DropdownSelect = (props) => {
7690
7828
  })();
7691
7829
  };
7692
7830
  delegateEvents(["click"]);
7693
- const BUNDLED_KIT_IDS = /* @__PURE__ */ new Set([
7694
- "research-collect",
7695
- "price-scout",
7696
- "form-filler"
7697
- ]);
7698
- const logger$1 = createLogger("AutomationKits");
7699
- const BUNDLED_KITS = [
7700
- {
7701
- id: "research-collect",
7702
- name: "Research & Collect",
7703
- description: "Browse the web to research a topic, compile key findings, and save the best sources as bookmarks.",
7704
- category: "research",
7705
- icon: "BookOpen",
7706
- estimatedMinutes: 5,
7707
- inputs: [
7708
- {
7709
- key: "topic",
7710
- label: "Topic",
7711
- type: "text",
7712
- placeholder: "e.g. best ergonomic keyboards 2024",
7713
- required: true
7714
- },
7715
- {
7716
- key: "question",
7717
- label: "What do you want to know?",
7718
- type: "textarea",
7719
- placeholder: "e.g. What are the top-rated options under $200, and what makes each one stand out?",
7720
- hint: "The more specific your question, the better the results",
7721
- required: true
7722
- },
7723
- {
7724
- key: "folderName",
7725
- label: "Save bookmarks to folder",
7726
- type: "text",
7727
- placeholder: "e.g. Keyboard Research",
7728
- hint: "Folder will be created if it doesn't exist",
7729
- required: true,
7730
- defaultValue: "Research"
7731
- }
7732
- ],
7733
- promptTemplate: `Research the topic "{{topic}}" to answer this question: {{question}}
7734
-
7735
- Browse at least 3–5 reputable web sources. For each useful source you find:
7736
- 1. Read the key information relevant to the question
7737
- 2. Save the page as a bookmark in the "{{folderName}}" folder (create it if it doesn't exist)
7738
- 3. Add a short note to the bookmark explaining why it's relevant
7739
-
7740
- When finished, summarize the most important findings in 3–5 bullet points and list the sources saved.`
7741
- },
7742
- {
7743
- id: "price-scout",
7744
- name: "Price Scout",
7745
- description: "Search for a product across major retailers and surface the best current price.",
7746
- category: "shopping",
7747
- icon: "Tag",
7748
- estimatedMinutes: 4,
7749
- inputs: [
7750
- {
7751
- key: "product",
7752
- label: "Product",
7753
- type: "text",
7754
- placeholder: "e.g. Sony WH-1000XM5 headphones",
7755
- hint: "Include brand and model number for best results",
7756
- required: true
7757
- },
7758
- {
7759
- key: "condition",
7760
- label: "Condition",
7761
- type: "text",
7762
- placeholder: "new",
7763
- hint: "e.g. new, used, refurbished",
7764
- required: false,
7765
- defaultValue: "new"
7766
- }
7767
- ],
7768
- promptTemplate: `Find the best current price for "{{product}}" (condition: {{condition}}).
7769
-
7770
- Search Google Shopping, then check at least 3–4 major retailers (Amazon, Walmart, Best Buy, Target, or whichever are most relevant for this product type).
7771
-
7772
- For each retailer where you find the product:
7773
- 1. Note the price and any important details (shipping cost, availability, condition)
7774
- 2. Highlight the price on the page
7775
-
7776
- At the end, tell me:
7777
- - Which store has the best deal and why
7778
- - A summary of all prices found
7779
- - Any caveats worth knowing (limited stock, slow shipping, marketplace sellers, etc.)`
7780
- },
7781
- {
7782
- id: "form-filler",
7783
- name: "Form Filler",
7784
- description: "Navigate to any form, fill it out with your details, and confirm before submitting.",
7785
- category: "forms",
7786
- icon: "ClipboardList",
7787
- estimatedMinutes: 3,
7788
- inputs: [
7789
- {
7790
- key: "url",
7791
- label: "Form URL",
7792
- type: "url",
7793
- placeholder: "https://example.com/contact",
7794
- required: true
7795
- },
7796
- {
7797
- key: "formPurpose",
7798
- label: "What is this form for?",
7799
- type: "text",
7800
- placeholder: "e.g. contact inquiry, job application, newsletter signup",
7801
- hint: "Gives the agent context for how to interpret the fields",
7802
- required: false
7803
- },
7804
- {
7805
- key: "details",
7806
- label: "Your details",
7807
- type: "textarea",
7808
- placeholder: "Name: Jane Smith\nEmail: jane@example.com\nMessage: I'd like to learn more about...",
7809
- hint: "List as key: value pairs, one per line",
7810
- required: true
7811
- }
7812
- ],
7813
- promptTemplate: `Navigate to {{url}} and fill out the form.
7814
- {{formPurpose}}
7815
-
7816
- Use the following details to fill the form fields:
7817
- {{details}}
7818
-
7819
- Steps:
7820
- 1. Navigate to the page and dismiss any cookie banners or overlays
7821
- 2. Read the form to understand what each field expects
7822
- 3. Match and fill all fields you have information for — skip fields you have no data for
7823
- - Text inputs, textareas, and <select> dropdowns: use fill_form_field or select_option
7824
- - Checkboxes and radio buttons: use click — do NOT use select_option on these
7825
- - For multi-checkbox groups (e.g. "select all that apply"), click each relevant option individually
7826
- 4. Do NOT submit yet — show me a summary of everything you filled in and wait for my confirmation`
7827
- }
7828
- ];
7829
- function renderKitPrompt(kit, values) {
7830
- for (const input of kit.inputs) {
7831
- if (input.required && !values[input.key]?.trim()) {
7832
- logger$1.warn(
7833
- `Required field "${input.key}" is empty for kit "${kit.id}".`
7834
- );
7835
- }
7836
- }
7837
- return kit.promptTemplate.replace(
7838
- /\{\{(\w+)\}\}/g,
7839
- (_, key) => values[key] ?? ""
7840
- );
7841
- }
7842
- var _tmpl$$e = /* @__PURE__ */ template(`<div class=kit-upsell><div class=kit-upsell-icon aria-hidden=true></div><p class=kit-upsell-title>Vessel Premium</p><p class=kit-upsell-body>Automation Kits are a premium feature. Upgrade to unlock pre-built workflows you can launch with one click.</p><button class="agent-primary-button kit-upsell-btn"type=button>Start 7-day free trial — $5.99/mo after`), _tmpl$2$e = /* @__PURE__ */ template(`<div class=kit-list-header><span class=agent-panel-title>Automation Kits <span class=kit-beta-tag>Beta</span></span><div class=kit-list-header-actions><span class=kit-list-count> kits</span><button class=kit-install-btn type=button title="Install a kit from a .kit.json file">+ Install`), _tmpl$3$c = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$b = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$5$b = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$b = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$9 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$8 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$7 = /* @__PURE__ */ template(`<div class=kit-form-header><button class=kit-back-btn type=button title="Back to kits"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M9 11L5 7l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Back</button><div class=kit-form-title>`), _tmpl$0$5 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$5 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$5 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$5 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$5 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date &amp; time</label><input class=kit-form-input type=datetime-local>`), _tmpl$13$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time of day</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$14$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$16$3 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$3 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$18$3 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$3 = /* @__PURE__ */ template(`<div class=sched-edit-backdrop><div class=sched-edit-panel><div class=sched-edit-header><span class=sched-edit-title>Edit schedule</span><span class=sched-edit-job-name></span></div><div class=kit-schedule-types></div><div class=sched-edit-actions><button class=kit-back-btn type=button>Cancel</button><button class=agent-primary-button type=button>Save`), _tmpl$23$3 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$3 = /* @__PURE__ */ template(`<div class=kit-card-meta>~<!> min`), _tmpl$25$2 = /* @__PURE__ */ template(`<button class=kit-remove-btn type=button>×`), _tmpl$26$2 = /* @__PURE__ */ template(`<div class=kit-card role=button tabindex=0><span class=kit-card-icon aria-hidden=true></span><div class=kit-card-body><div class=kit-card-name></div><div class=kit-card-desc>`), _tmpl$27$2 = /* @__PURE__ */ template(`<svg class=kit-card-caret width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M5 3l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$28$2 = /* @__PURE__ */ template(`<div class=kit-sched-next>Next: `), _tmpl$29$2 = /* @__PURE__ */ template(`<div class=sched-context-menu><button class=sched-ctx-item type=button>Edit task</button><button class=sched-ctx-item type=button>Edit schedule</button><div class=sched-ctx-divider></div><button class=sched-ctx-item type=button></button><button class="sched-ctx-item sched-ctx-danger"type=button>Delete`), _tmpl$30$1 = /* @__PURE__ */ template(`<div class=kit-sched-card><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-sched-body><div class=kit-sched-name></div><div class=kit-sched-meta></div></div><div class=kit-sched-actions><button class=kit-sched-toggle type=button></button><button class=kit-remove-btn type=button title="Delete schedule"aria-label="Delete schedule">×`), _tmpl$31$1 = /* @__PURE__ */ template(`<div class=kit-activity-output>`), _tmpl$32$1 = /* @__PURE__ */ template(`<div class=kit-activity-card><div class=kit-activity-header><div class=kit-activity-title><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-activity-title-copy><div class=kit-sched-name></div><div class=kit-activity-time></div></div></div><span class=kit-activity-badge>`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class="kit-activity-output kit-activity-placeholder">`), _tmpl$34$1 = /* @__PURE__ */ template(`<span class=kit-form-required aria-hidden=true>*`), _tmpl$35$1 = /* @__PURE__ */ template(`<textarea class=kit-form-textarea rows=3>`), _tmpl$36$1 = /* @__PURE__ */ template(`<p class=kit-form-hint>`), _tmpl$37$1 = /* @__PURE__ */ template(`<div class=kit-form-field><label class=kit-form-label>`), _tmpl$38$1 = /* @__PURE__ */ template(`<input class=kit-form-input>`), _tmpl$39$1 = /* @__PURE__ */ template(`<span class=kit-run-spinner aria-hidden=true>`), _tmpl$40$1 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=sched-type>`), _tmpl$41$1 = /* @__PURE__ */ template(`<option>`), _tmpl$42$1 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=edit-sched-type>`);
7831
+ const BUNDLED_KIT_IDS = /* @__PURE__ */ new Set();
7832
+ var _tmpl$$e = /* @__PURE__ */ template(`<div class=kit-upsell><div class=kit-upsell-icon aria-hidden=true></div><p class=kit-upsell-title>Vessel Premium</p><p class=kit-upsell-body>Skills are a premium feature. Upgrade to import, inspect, and run reusable agent capabilities.</p><button class="agent-primary-button kit-upsell-btn"type=button>Start 7-day free trial — $5.99/mo after`), _tmpl$2$e = /* @__PURE__ */ template(`<div class=kit-list-header><span class=agent-panel-title>Skills</span><div class=kit-list-header-actions><span class=kit-list-count> skills</span><button class=kit-install-btn type=button title="Create a skill from text"aria-label="Create skill">Create</button><button class=kit-install-btn type=button title="Import a skill from a .skill.json file"aria-label="Import skill">Import`), _tmpl$3$c = /* @__PURE__ */ template(`<div class=kit-install-error><span></span><button class=kit-install-error-dismiss type=button aria-label=Dismiss>×`), _tmpl$4$b = /* @__PURE__ */ template(`<div class=kit-create-panel><div class=kit-create-header><span class=kit-create-title></span><button class=kit-install-error-dismiss type=button aria-label="Close create skill">×</button></div><input class=kit-form-input type=text placeholder="Skill name"><input class=kit-form-input type=text placeholder="Short description"><textarea class=kit-create-textarea placeholder="Write the skill instructions the agent should follow. Example: Research the topic carefully, compare trustworthy sources, then summarize the answer with links."></textarea><div class=kit-create-actions><button class=kit-back-btn type=button>Reset</button><button class=kit-back-btn type=button>Cancel</button><button class="agent-primary-button kit-create-save"type=button>`), _tmpl$5$b = /* @__PURE__ */ template(`<div class=kit-list>`), _tmpl$6$b = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$7$9 = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$8$8 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$9$7 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$0$5 = /* @__PURE__ */ template(`<div class=kit-form-header><button class=kit-back-btn type=button title="Back to skills"><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$1$5 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$10$5 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$11$5 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$12$5 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$13$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date &amp; time</label><input class=kit-form-input type=datetime-local>`), _tmpl$14$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Time of day</label><input class="kit-form-input kit-schedule-time"type=time>`), _tmpl$15$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$16$3 = /* @__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$17$3 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$18$3 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$19$3 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$20$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$21$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$22$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$23$3 = /* @__PURE__ */ template(`<div class=sched-edit-backdrop><div class=sched-edit-panel><div class=sched-edit-header><span class=sched-edit-title>Edit schedule</span><span class=sched-edit-job-name></span></div><div class=kit-schedule-types></div><div class=sched-edit-actions><button class=kit-back-btn type=button>Cancel</button><button class=agent-primary-button type=button>Save`), _tmpl$24$3 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$25$2 = /* @__PURE__ */ template(`<div class=kit-empty-state><div class=kit-empty-title>No skills imported</div><p class=kit-empty-copy>Import a skill definition to make it available to the agent.</p><div class=kit-empty-actions><button class=kit-install-btn type=button>Create</button><button class=kit-install-btn type=button>Import`), _tmpl$26$2 = /* @__PURE__ */ template(`<div class=kit-card-meta>~<!> min`), _tmpl$27$2 = /* @__PURE__ */ template(`<button class=kit-card-action-btn type=button>`), _tmpl$28$2 = /* @__PURE__ */ template(`<button class=kit-remove-btn type=button>`), _tmpl$29$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$30$1 = /* @__PURE__ */ template(`<div class=kit-sched-next>Next: `), _tmpl$31$1 = /* @__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$32$1 = /* @__PURE__ */ template(`<div class=kit-sched-card><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-sched-body><div class=kit-sched-name></div><div class=kit-sched-meta></div></div><div class=kit-sched-actions><button class=kit-sched-toggle type=button></button><button class=kit-remove-btn type=button title="Delete schedule"aria-label="Delete schedule">×`), _tmpl$33$1 = /* @__PURE__ */ template(`<div class=kit-activity-output>`), _tmpl$34$1 = /* @__PURE__ */ template(`<div class=kit-activity-card><div class=kit-activity-header><div class=kit-activity-title><span class="kit-card-icon kit-sched-icon"aria-hidden=true></span><div class=kit-activity-title-copy><div class=kit-sched-name></div><div class=kit-activity-time></div></div></div><span class=kit-activity-badge>`), _tmpl$35$1 = /* @__PURE__ */ template(`<div class="kit-activity-output kit-activity-placeholder">`), _tmpl$36$1 = /* @__PURE__ */ template(`<span class=kit-form-required aria-hidden=true>*`), _tmpl$37$1 = /* @__PURE__ */ template(`<textarea class=kit-form-textarea rows=3>`), _tmpl$38$1 = /* @__PURE__ */ template(`<p class=kit-form-hint>`), _tmpl$39$1 = /* @__PURE__ */ template(`<div class=kit-form-field><label class=kit-form-label>`), _tmpl$40$1 = /* @__PURE__ */ template(`<input class=kit-form-input>`), _tmpl$41$1 = /* @__PURE__ */ template(`<span class=kit-run-spinner aria-hidden=true>`), _tmpl$42$1 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=sched-type>`), _tmpl$43$1 = /* @__PURE__ */ template(`<option>`), _tmpl$44$1 = /* @__PURE__ */ template(`<label class=kit-schedule-type-option><input type=radio name=edit-sched-type>`);
7843
7833
  const ICON_MAP = {
7844
7834
  BookOpen: book_open_default,
7845
7835
  Tag: tag_default,
@@ -7910,6 +7900,39 @@ function toLocalDateTimeInput(iso) {
7910
7900
  const pad = (n) => String(n).padStart(2, "0");
7911
7901
  return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T${pad(d.getHours())}:${pad(d.getMinutes())}`;
7912
7902
  }
7903
+ function createSkillId(name) {
7904
+ const slug = name.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
7905
+ return slug ? `custom-${slug}` : `custom-skill-${Date.now()}`;
7906
+ }
7907
+ const SIMPLE_TASK_PROMPT_SUFFIX = "\n\nTask:\n{{task}}";
7908
+ function isSimpleTaskSkill(kit) {
7909
+ return kit.inputs.length === 1 && kit.inputs[0]?.key === "task" && kit.inputs[0]?.type === "textarea";
7910
+ }
7911
+ function getEditableInstructions(kit) {
7912
+ if (isSimpleTaskSkill(kit) && kit.promptTemplate.endsWith(SIMPLE_TASK_PROMPT_SUFFIX)) {
7913
+ return kit.promptTemplate.slice(0, -SIMPLE_TASK_PROMPT_SUFFIX.length);
7914
+ }
7915
+ return kit.promptTemplate;
7916
+ }
7917
+ function buildSkillDraft(name, description, instructions, existing) {
7918
+ const simpleTaskSkill = !existing || isSimpleTaskSkill(existing);
7919
+ return {
7920
+ id: existing?.id ?? createSkillId(name),
7921
+ name,
7922
+ description: description || "Custom agent skill.",
7923
+ category: existing?.category ?? "productivity",
7924
+ icon: existing?.icon ?? "Zap",
7925
+ estimatedMinutes: existing?.estimatedMinutes ?? 3,
7926
+ inputs: simpleTaskSkill ? [{
7927
+ key: "task",
7928
+ label: "Task",
7929
+ type: "textarea",
7930
+ placeholder: "What should the agent do with this skill?",
7931
+ required: true
7932
+ }] : existing.inputs,
7933
+ promptTemplate: simpleTaskSkill ? `${instructions}${SIMPLE_TASK_PROMPT_SUFFIX}` : instructions
7934
+ };
7935
+ }
7913
7936
  const AutomationTab = (props) => {
7914
7937
  const {
7915
7938
  runAutomationPrompt,
@@ -7922,6 +7945,13 @@ const AutomationTab = (props) => {
7922
7945
  const [selectedKit, setSelectedKit] = createSignal(null);
7923
7946
  const [fieldValues, setFieldValues] = createSignal({});
7924
7947
  const [installError, setInstallError] = createSignal(null);
7948
+ const [createEditorOpen, setCreateEditorOpen] = createSignal(false);
7949
+ const [createName, setCreateName] = createSignal("");
7950
+ const [createDescription, setCreateDescription] = createSignal("");
7951
+ const [createInstructions, setCreateInstructions] = createSignal("");
7952
+ const [createError, setCreateError] = createSignal(null);
7953
+ const [savingSkill, setSavingSkill] = createSignal(false);
7954
+ const [editingSkill, setEditingSkill] = createSignal(null);
7925
7955
  const [scheduleEnabled, setScheduleEnabled] = createSignal(false);
7926
7956
  const [schedType, setSchedType] = createSignal("daily");
7927
7957
  const [schedHour, setSchedHour] = createSignal(9);
@@ -7950,6 +7980,7 @@ const AutomationTab = (props) => {
7950
7980
  if (e.key === "Escape") {
7951
7981
  setOpenMenuJobId(null);
7952
7982
  setEditingJob(null);
7983
+ closeCreateEditor();
7953
7984
  }
7954
7985
  };
7955
7986
  document.addEventListener("keydown", onKeyDown);
@@ -8062,6 +8093,7 @@ const AutomationTab = (props) => {
8062
8093
  };
8063
8094
  const handleInstall = async () => {
8064
8095
  setInstallError(null);
8096
+ setCreateError(null);
8065
8097
  const result = await window.vessel.automation.installFromFile();
8066
8098
  if (!result.ok) {
8067
8099
  if (result.error !== "canceled") {
@@ -8071,11 +8103,81 @@ const AutomationTab = (props) => {
8071
8103
  }
8072
8104
  void refetchInstalled();
8073
8105
  };
8106
+ const openCreateEditor = () => {
8107
+ setInstallError(null);
8108
+ setCreateError(null);
8109
+ setSavingSkill(false);
8110
+ setEditingSkill(null);
8111
+ setCreateName("");
8112
+ setCreateDescription("");
8113
+ setCreateInstructions("");
8114
+ setCreateEditorOpen(true);
8115
+ };
8116
+ const closeCreateEditor = () => {
8117
+ setCreateEditorOpen(false);
8118
+ setCreateError(null);
8119
+ setSavingSkill(false);
8120
+ setEditingSkill(null);
8121
+ };
8122
+ const clearCreateDraft = () => {
8123
+ setCreateName("");
8124
+ setCreateDescription("");
8125
+ setCreateInstructions("");
8126
+ };
8127
+ const resetCreateDraft = () => {
8128
+ const skill = editingSkill();
8129
+ setCreateName(skill?.name ?? "");
8130
+ setCreateDescription(skill?.description ?? "");
8131
+ setCreateInstructions(skill ? getEditableInstructions(skill) : "");
8132
+ setCreateError(null);
8133
+ };
8134
+ const handleOpenEditSkill = (e, kit) => {
8135
+ e.stopPropagation();
8136
+ if (BUNDLED_KIT_IDS.has(kit.id)) return;
8137
+ setInstallError(null);
8138
+ setCreateError(null);
8139
+ setEditingSkill(kit);
8140
+ setCreateName(kit.name);
8141
+ setCreateDescription(kit.description);
8142
+ setCreateInstructions(getEditableInstructions(kit));
8143
+ setCreateEditorOpen(true);
8144
+ };
8145
+ const handleSaveSkill = async () => {
8146
+ if (savingSkill()) return;
8147
+ setInstallError(null);
8148
+ setCreateError(null);
8149
+ const name = createName().trim();
8150
+ const instructions = createInstructions().trim();
8151
+ if (!name || !instructions) {
8152
+ setCreateError("Add a skill name and instructions before saving.");
8153
+ return;
8154
+ }
8155
+ const existing = editingSkill() ?? void 0;
8156
+ const skill = buildSkillDraft(name, createDescription().trim(), instructions, existing);
8157
+ setSavingSkill(true);
8158
+ try {
8159
+ const source = JSON.stringify(skill);
8160
+ const automationApi = window.vessel.automation;
8161
+ const result = existing && automationApi.updateFromText ? await automationApi.updateFromText(existing.id, source) : await window.vessel.automation.createFromText(source);
8162
+ if (!result.ok) {
8163
+ setCreateError(result.error ?? "Could not save skill.");
8164
+ return;
8165
+ }
8166
+ setCreateEditorOpen(false);
8167
+ setEditingSkill(null);
8168
+ clearCreateDraft();
8169
+ void refetchInstalled();
8170
+ } catch (err) {
8171
+ setCreateError(err instanceof Error ? err.message : "Could not save skill.");
8172
+ } finally {
8173
+ setSavingSkill(false);
8174
+ }
8175
+ };
8074
8176
  const handleUninstall = async (e, id) => {
8075
8177
  e.stopPropagation();
8076
8178
  const result = await window.vessel.automation.uninstall(id);
8077
8179
  if (!result.ok) {
8078
- setInstallError(result.error ?? "Could not remove kit.");
8180
+ setInstallError(result.error ?? "Could not remove skill.");
8079
8181
  return;
8080
8182
  }
8081
8183
  void refetchInstalled();
@@ -8158,7 +8260,7 @@ const AutomationTab = (props) => {
8158
8260
  };
8159
8261
  const timeValue = () => `${String(schedHour()).padStart(2, "0")}:${String(schedMinute()).padStart(2, "0")}`;
8160
8262
  return (() => {
8161
- var _el$ = _tmpl$23$3();
8263
+ var _el$ = _tmpl$24$3();
8162
8264
  insert(_el$, createComponent(Show, {
8163
8265
  get when() {
8164
8266
  return memo(() => !!!premiumData.loading)() && !isPremium();
@@ -8178,158 +8280,270 @@ const AutomationTab = (props) => {
8178
8280
  },
8179
8281
  get children() {
8180
8282
  return [(() => {
8181
- var _el$7 = _tmpl$2$e(), _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.firstChild, _el$10 = _el$0.nextSibling;
8283
+ var _el$7 = _tmpl$2$e(), _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.firstChild, _el$10 = _el$0.nextSibling, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild;
8182
8284
  insert(_el$0, () => allKits().length, _el$1);
8183
- _el$10.$$click = () => void handleInstall();
8285
+ _el$10.$$click = openCreateEditor;
8286
+ insert(_el$10, createComponent(plus_default, {
8287
+ size: 12,
8288
+ "aria-hidden": "true"
8289
+ }), _el$11);
8290
+ _el$12.$$click = () => void handleInstall();
8291
+ insert(_el$12, createComponent(upload_default, {
8292
+ size: 12,
8293
+ "aria-hidden": "true"
8294
+ }), _el$13);
8184
8295
  return _el$7;
8185
8296
  })(), createComponent(Show, {
8186
8297
  get when() {
8187
8298
  return installError() !== null;
8188
8299
  },
8189
8300
  get children() {
8190
- var _el$11 = _tmpl$3$c(), _el$12 = _el$11.firstChild, _el$13 = _el$12.nextSibling;
8191
- insert(_el$12, installError);
8192
- _el$13.$$click = () => setInstallError(null);
8193
- return _el$11;
8301
+ var _el$14 = _tmpl$3$c(), _el$15 = _el$14.firstChild, _el$16 = _el$15.nextSibling;
8302
+ insert(_el$15, installError);
8303
+ _el$16.$$click = () => setInstallError(null);
8304
+ return _el$14;
8194
8305
  }
8195
- }), (() => {
8196
- var _el$14 = _tmpl$4$b();
8197
- insert(_el$14, createComponent(For, {
8198
- get each() {
8199
- return allKits();
8200
- },
8201
- children: (kit) => (() => {
8202
- var _el$73 = _tmpl$26$2(), _el$74 = _el$73.firstChild, _el$75 = _el$74.nextSibling, _el$76 = _el$75.firstChild, _el$77 = _el$76.nextSibling;
8203
- _el$73.$$keydown = (e) => e.key === "Enter" && selectKit(kit);
8204
- _el$73.$$click = () => selectKit(kit);
8205
- insert(_el$74, createComponent(KitIcon, {
8206
- get name() {
8207
- return kit.icon;
8208
- },
8209
- size: 18
8210
- }));
8211
- insert(_el$76, () => kit.name);
8212
- insert(_el$77, () => kit.description);
8213
- insert(_el$75, createComponent(Show, {
8214
- get when() {
8215
- return kit.estimatedMinutes !== void 0;
8216
- },
8217
- get children() {
8218
- var _el$78 = _tmpl$24$3(), _el$79 = _el$78.firstChild, _el$81 = _el$79.nextSibling;
8219
- _el$81.nextSibling;
8220
- insert(_el$78, () => kit.estimatedMinutes, _el$81);
8221
- return _el$78;
8222
- }
8223
- }), null);
8224
- insert(_el$73, createComponent(Show, {
8225
- get when() {
8226
- return !BUNDLED_KIT_IDS.has(kit.id);
8227
- },
8228
- get fallback() {
8229
- return _tmpl$27$2();
8230
- },
8231
- get children() {
8232
- var _el$82 = _tmpl$25$2();
8233
- _el$82.$$click = (e) => void handleUninstall(e, kit.id);
8234
- createRenderEffect((_p$) => {
8235
- var _v$ = `Remove ${kit.name}`, _v$2 = `Remove ${kit.name}`;
8236
- _v$ !== _p$.e && setAttribute(_el$82, "title", _p$.e = _v$);
8237
- _v$2 !== _p$.t && setAttribute(_el$82, "aria-label", _p$.t = _v$2);
8238
- return _p$;
8239
- }, {
8240
- e: void 0,
8241
- t: void 0
8242
- });
8243
- return _el$82;
8244
- }
8245
- }), null);
8246
- return _el$73;
8247
- })()
8248
- }));
8249
- return _el$14;
8250
- })(), createComponent(Show, {
8306
+ }), createComponent(Show, {
8307
+ get when() {
8308
+ return createEditorOpen();
8309
+ },
8310
+ get children() {
8311
+ var _el$17 = _tmpl$4$b(), _el$18 = _el$17.firstChild, _el$19 = _el$18.firstChild, _el$20 = _el$19.nextSibling, _el$21 = _el$18.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$27 = _el$23.nextSibling, _el$28 = _el$27.firstChild, _el$29 = _el$28.nextSibling, _el$30 = _el$29.nextSibling;
8312
+ insert(_el$19, () => editingSkill() ? "Edit Skill" : "Create Skill");
8313
+ _el$20.$$click = closeCreateEditor;
8314
+ _el$21.$$input = (e) => setCreateName(e.currentTarget.value);
8315
+ _el$22.$$input = (e) => setCreateDescription(e.currentTarget.value);
8316
+ _el$23.$$input = (e) => setCreateInstructions(e.currentTarget.value);
8317
+ insert(_el$17, createComponent(Show, {
8318
+ get when() {
8319
+ return createError() !== null;
8320
+ },
8321
+ get children() {
8322
+ var _el$24 = _tmpl$3$c(), _el$25 = _el$24.firstChild, _el$26 = _el$25.nextSibling;
8323
+ insert(_el$25, createError);
8324
+ _el$26.$$click = () => setCreateError(null);
8325
+ return _el$24;
8326
+ }
8327
+ }), _el$27);
8328
+ _el$28.$$click = resetCreateDraft;
8329
+ _el$29.$$click = closeCreateEditor;
8330
+ _el$30.$$click = () => void handleSaveSkill();
8331
+ insert(_el$30, (() => {
8332
+ var _c$ = memo(() => !!savingSkill());
8333
+ return () => _c$() ? "Saving..." : editingSkill() ? "Save Changes" : "Save Skill";
8334
+ })());
8335
+ createRenderEffect(() => _el$30.disabled = savingSkill());
8336
+ createRenderEffect(() => _el$21.value = createName());
8337
+ createRenderEffect(() => _el$22.value = createDescription());
8338
+ createRenderEffect(() => _el$23.value = createInstructions());
8339
+ return _el$17;
8340
+ }
8341
+ }), createComponent(Show, {
8342
+ get when() {
8343
+ return allKits().length > 0;
8344
+ },
8345
+ get fallback() {
8346
+ return (() => {
8347
+ var _el$90 = _tmpl$25$2(), _el$91 = _el$90.firstChild, _el$92 = _el$91.nextSibling, _el$93 = _el$92.nextSibling, _el$94 = _el$93.firstChild, _el$95 = _el$94.firstChild, _el$96 = _el$94.nextSibling, _el$97 = _el$96.firstChild;
8348
+ _el$94.$$click = openCreateEditor;
8349
+ insert(_el$94, createComponent(plus_default, {
8350
+ size: 12,
8351
+ "aria-hidden": "true"
8352
+ }), _el$95);
8353
+ _el$96.$$click = () => void handleInstall();
8354
+ insert(_el$96, createComponent(upload_default, {
8355
+ size: 12,
8356
+ "aria-hidden": "true"
8357
+ }), _el$97);
8358
+ return _el$90;
8359
+ })();
8360
+ },
8361
+ get children() {
8362
+ var _el$31 = _tmpl$5$b();
8363
+ insert(_el$31, createComponent(For, {
8364
+ get each() {
8365
+ return allKits();
8366
+ },
8367
+ children: (kit) => (() => {
8368
+ var _el$98 = _tmpl$29$2(), _el$99 = _el$98.firstChild, _el$100 = _el$99.nextSibling, _el$101 = _el$100.firstChild, _el$102 = _el$101.nextSibling;
8369
+ _el$98.$$keydown = (e) => e.key === "Enter" && selectKit(kit);
8370
+ _el$98.$$click = () => selectKit(kit);
8371
+ insert(_el$99, createComponent(KitIcon, {
8372
+ get name() {
8373
+ return kit.icon;
8374
+ },
8375
+ size: 18
8376
+ }));
8377
+ insert(_el$101, () => kit.name);
8378
+ insert(_el$102, () => kit.description);
8379
+ insert(_el$100, createComponent(Show, {
8380
+ get when() {
8381
+ return kit.estimatedMinutes !== void 0;
8382
+ },
8383
+ get children() {
8384
+ var _el$103 = _tmpl$26$2(), _el$104 = _el$103.firstChild, _el$106 = _el$104.nextSibling;
8385
+ _el$106.nextSibling;
8386
+ insert(_el$103, () => kit.estimatedMinutes, _el$106);
8387
+ return _el$103;
8388
+ }
8389
+ }), null);
8390
+ insert(_el$98, createComponent(Show, {
8391
+ get when() {
8392
+ return !BUNDLED_KIT_IDS.has(kit.id);
8393
+ },
8394
+ get fallback() {
8395
+ return createComponent(chevron_right_default, {
8396
+ "class": "kit-card-caret",
8397
+ size: 14,
8398
+ "aria-hidden": "true"
8399
+ });
8400
+ },
8401
+ get children() {
8402
+ return [(() => {
8403
+ var _el$107 = _tmpl$27$2();
8404
+ _el$107.$$click = (e) => handleOpenEditSkill(e, kit);
8405
+ insert(_el$107, createComponent(pencil_default, {
8406
+ size: 13,
8407
+ "aria-hidden": "true"
8408
+ }));
8409
+ createRenderEffect((_p$) => {
8410
+ var _v$ = `Edit ${kit.name}`, _v$2 = `Edit ${kit.name}`;
8411
+ _v$ !== _p$.e && setAttribute(_el$107, "title", _p$.e = _v$);
8412
+ _v$2 !== _p$.t && setAttribute(_el$107, "aria-label", _p$.t = _v$2);
8413
+ return _p$;
8414
+ }, {
8415
+ e: void 0,
8416
+ t: void 0
8417
+ });
8418
+ return _el$107;
8419
+ })(), (() => {
8420
+ var _el$108 = _tmpl$27$2();
8421
+ _el$108.$$click = (e) => {
8422
+ e.stopPropagation();
8423
+ selectKit(kit);
8424
+ };
8425
+ insert(_el$108, createComponent(eye_default, {
8426
+ size: 13,
8427
+ "aria-hidden": "true"
8428
+ }));
8429
+ createRenderEffect((_p$) => {
8430
+ var _v$3 = `View ${kit.name}`, _v$4 = `View ${kit.name}`;
8431
+ _v$3 !== _p$.e && setAttribute(_el$108, "title", _p$.e = _v$3);
8432
+ _v$4 !== _p$.t && setAttribute(_el$108, "aria-label", _p$.t = _v$4);
8433
+ return _p$;
8434
+ }, {
8435
+ e: void 0,
8436
+ t: void 0
8437
+ });
8438
+ return _el$108;
8439
+ })(), (() => {
8440
+ var _el$109 = _tmpl$28$2();
8441
+ _el$109.$$click = (e) => void handleUninstall(e, kit.id);
8442
+ insert(_el$109, createComponent(trash_2_default, {
8443
+ size: 13,
8444
+ "aria-hidden": "true"
8445
+ }));
8446
+ createRenderEffect((_p$) => {
8447
+ var _v$5 = `Delete ${kit.name}`, _v$6 = `Delete ${kit.name}`;
8448
+ _v$5 !== _p$.e && setAttribute(_el$109, "title", _p$.e = _v$5);
8449
+ _v$6 !== _p$.t && setAttribute(_el$109, "aria-label", _p$.t = _v$6);
8450
+ return _p$;
8451
+ }, {
8452
+ e: void 0,
8453
+ t: void 0
8454
+ });
8455
+ return _el$109;
8456
+ })()];
8457
+ }
8458
+ }), null);
8459
+ return _el$98;
8460
+ })()
8461
+ }));
8462
+ return _el$31;
8463
+ }
8464
+ }), createComponent(Show, {
8251
8465
  get when() {
8252
8466
  return scheduledJobs().length > 0;
8253
8467
  },
8254
8468
  get children() {
8255
8469
  return [(() => {
8256
- var _el$15 = _tmpl$5$b(), _el$16 = _el$15.firstChild, _el$17 = _el$16.nextSibling;
8257
- insert(_el$15, createComponent(clock_default, {
8470
+ var _el$32 = _tmpl$6$b(), _el$33 = _el$32.firstChild, _el$34 = _el$33.nextSibling;
8471
+ insert(_el$32, createComponent(clock_default, {
8258
8472
  size: 12
8259
- }), _el$16);
8260
- insert(_el$17, () => scheduledJobs().length);
8261
- return _el$15;
8473
+ }), _el$33);
8474
+ insert(_el$34, () => scheduledJobs().length);
8475
+ return _el$32;
8262
8476
  })(), (() => {
8263
- var _el$18 = _tmpl$6$b();
8264
- insert(_el$18, createComponent(For, {
8477
+ var _el$35 = _tmpl$7$9();
8478
+ insert(_el$35, createComponent(For, {
8265
8479
  get each() {
8266
8480
  return scheduledJobs();
8267
8481
  },
8268
8482
  children: (job) => (() => {
8269
- var _el$84 = _tmpl$30$1(), _el$85 = _el$84.firstChild, _el$86 = _el$85.nextSibling, _el$87 = _el$86.firstChild, _el$88 = _el$87.nextSibling, _el$91 = _el$86.nextSibling, _el$92 = _el$91.firstChild, _el$93 = _el$92.nextSibling;
8270
- _el$84.$$contextmenu = (e) => {
8483
+ var _el$110 = _tmpl$32$1(), _el$111 = _el$110.firstChild, _el$112 = _el$111.nextSibling, _el$113 = _el$112.firstChild, _el$114 = _el$113.nextSibling, _el$117 = _el$112.nextSibling, _el$118 = _el$117.firstChild, _el$119 = _el$118.nextSibling;
8484
+ _el$110.$$contextmenu = (e) => {
8271
8485
  e.preventDefault();
8272
8486
  e.stopPropagation();
8273
8487
  setOpenMenuJobId(job.id);
8274
8488
  };
8275
- insert(_el$85, createComponent(KitIcon, {
8489
+ insert(_el$111, createComponent(KitIcon, {
8276
8490
  get name() {
8277
8491
  return job.kitIcon;
8278
8492
  },
8279
8493
  size: 14
8280
8494
  }));
8281
- insert(_el$87, () => job.kitName);
8282
- insert(_el$88, () => formatScheduleLabel(job));
8283
- insert(_el$86, createComponent(Show, {
8495
+ insert(_el$113, () => job.kitName);
8496
+ insert(_el$114, () => formatScheduleLabel(job));
8497
+ insert(_el$112, createComponent(Show, {
8284
8498
  get when() {
8285
8499
  return job.enabled;
8286
8500
  },
8287
8501
  get children() {
8288
- var _el$89 = _tmpl$28$2();
8289
- _el$89.firstChild;
8290
- insert(_el$89, () => formatNextRun(job.nextRunAt), null);
8291
- return _el$89;
8502
+ var _el$115 = _tmpl$30$1();
8503
+ _el$115.firstChild;
8504
+ insert(_el$115, () => formatNextRun(job.nextRunAt), null);
8505
+ return _el$115;
8292
8506
  }
8293
8507
  }), null);
8294
- _el$92.$$click = (e) => void handleToggleJob(e, job);
8295
- insert(_el$92, () => job.enabled ? "⏸" : "▶");
8296
- _el$93.$$click = (e) => void handleDeleteJob(e, job.id);
8297
- insert(_el$84, createComponent(Show, {
8508
+ _el$118.$$click = (e) => void handleToggleJob(e, job);
8509
+ insert(_el$118, () => job.enabled ? "⏸" : "▶");
8510
+ _el$119.$$click = (e) => void handleDeleteJob(e, job.id);
8511
+ insert(_el$110, createComponent(Show, {
8298
8512
  get when() {
8299
8513
  return openMenuJobId() === job.id;
8300
8514
  },
8301
8515
  get children() {
8302
- var _el$94 = _tmpl$29$2(), _el$95 = _el$94.firstChild, _el$96 = _el$95.nextSibling, _el$97 = _el$96.nextSibling, _el$98 = _el$97.nextSibling, _el$99 = _el$98.nextSibling;
8303
- _el$94.$$click = (e) => e.stopPropagation();
8304
- _el$95.$$click = () => handleOpenEditTask(job);
8305
- _el$96.$$click = () => handleOpenEditSchedule(job);
8306
- _el$98.$$click = (e) => {
8516
+ var _el$120 = _tmpl$31$1(), _el$121 = _el$120.firstChild, _el$122 = _el$121.nextSibling, _el$123 = _el$122.nextSibling, _el$124 = _el$123.nextSibling, _el$125 = _el$124.nextSibling;
8517
+ _el$120.$$click = (e) => e.stopPropagation();
8518
+ _el$121.$$click = () => handleOpenEditTask(job);
8519
+ _el$122.$$click = () => handleOpenEditSchedule(job);
8520
+ _el$124.$$click = (e) => {
8307
8521
  void handleToggleJob(e, job);
8308
8522
  setOpenMenuJobId(null);
8309
8523
  };
8310
- insert(_el$98, () => job.enabled ? "Pause" : "Resume");
8311
- _el$99.$$click = (e) => {
8524
+ insert(_el$124, () => job.enabled ? "Pause" : "Resume");
8525
+ _el$125.$$click = (e) => {
8312
8526
  void handleDeleteJob(e, job.id);
8313
8527
  setOpenMenuJobId(null);
8314
8528
  };
8315
- return _el$94;
8529
+ return _el$120;
8316
8530
  }
8317
8531
  }), null);
8318
8532
  createRenderEffect((_p$) => {
8319
- var _v$3 = !job.enabled, _v$4 = job.enabled ? "Pause schedule" : "Resume schedule", _v$5 = job.enabled ? "Pause" : "Resume";
8320
- _v$3 !== _p$.e && _el$84.classList.toggle("kit-sched-disabled", _p$.e = _v$3);
8321
- _v$4 !== _p$.t && setAttribute(_el$92, "title", _p$.t = _v$4);
8322
- _v$5 !== _p$.a && setAttribute(_el$92, "aria-label", _p$.a = _v$5);
8533
+ var _v$7 = !job.enabled, _v$8 = job.enabled ? "Pause schedule" : "Resume schedule", _v$9 = job.enabled ? "Pause" : "Resume";
8534
+ _v$7 !== _p$.e && _el$110.classList.toggle("kit-sched-disabled", _p$.e = _v$7);
8535
+ _v$8 !== _p$.t && setAttribute(_el$118, "title", _p$.t = _v$8);
8536
+ _v$9 !== _p$.a && setAttribute(_el$118, "aria-label", _p$.a = _v$9);
8323
8537
  return _p$;
8324
8538
  }, {
8325
8539
  e: void 0,
8326
8540
  t: void 0,
8327
8541
  a: void 0
8328
8542
  });
8329
- return _el$84;
8543
+ return _el$110;
8330
8544
  })()
8331
8545
  }));
8332
- return _el$18;
8546
+ return _el$35;
8333
8547
  })()];
8334
8548
  }
8335
8549
  }), createComponent(Show, {
@@ -8338,59 +8552,59 @@ const AutomationTab = (props) => {
8338
8552
  },
8339
8553
  get children() {
8340
8554
  return [(() => {
8341
- var _el$19 = _tmpl$7$9(), _el$20 = _el$19.firstChild, _el$21 = _el$20.nextSibling;
8342
- insert(_el$19, createComponent(zap_default, {
8555
+ var _el$36 = _tmpl$8$8(), _el$37 = _el$36.firstChild, _el$38 = _el$37.nextSibling;
8556
+ insert(_el$36, createComponent(zap_default, {
8343
8557
  size: 12
8344
- }), _el$20);
8345
- insert(_el$21, () => automationActivities2().length);
8346
- return _el$19;
8558
+ }), _el$37);
8559
+ insert(_el$38, () => automationActivities2().length);
8560
+ return _el$36;
8347
8561
  })(), (() => {
8348
- var _el$22 = _tmpl$8$8();
8349
- insert(_el$22, createComponent(For, {
8562
+ var _el$39 = _tmpl$9$7();
8563
+ insert(_el$39, createComponent(For, {
8350
8564
  get each() {
8351
8565
  return automationActivities2();
8352
8566
  },
8353
8567
  children: (activity) => (() => {
8354
- var _el$100 = _tmpl$32$1(), _el$101 = _el$100.firstChild, _el$102 = _el$101.firstChild, _el$103 = _el$102.firstChild, _el$104 = _el$103.nextSibling, _el$105 = _el$104.firstChild, _el$106 = _el$105.nextSibling, _el$107 = _el$102.nextSibling;
8355
- insert(_el$103, createComponent(KitIcon, {
8568
+ var _el$126 = _tmpl$34$1(), _el$127 = _el$126.firstChild, _el$128 = _el$127.firstChild, _el$129 = _el$128.firstChild, _el$130 = _el$129.nextSibling, _el$131 = _el$130.firstChild, _el$132 = _el$131.nextSibling, _el$133 = _el$128.nextSibling;
8569
+ insert(_el$129, createComponent(KitIcon, {
8356
8570
  get name() {
8357
8571
  return activity.icon ?? "Zap";
8358
8572
  },
8359
8573
  size: 14
8360
8574
  }));
8361
- insert(_el$105, () => activity.title);
8362
- insert(_el$106, () => formatActivityTime(activity.startedAt));
8363
- insert(_el$107, () => formatActivityStatus(activity));
8364
- insert(_el$100, createComponent(Show, {
8575
+ insert(_el$131, () => activity.title);
8576
+ insert(_el$132, () => formatActivityTime(activity.startedAt));
8577
+ insert(_el$133, () => formatActivityStatus(activity));
8578
+ insert(_el$126, createComponent(Show, {
8365
8579
  get when() {
8366
8580
  return activity.output.trim().length > 0;
8367
8581
  },
8368
8582
  get fallback() {
8369
8583
  return (() => {
8370
- var _el$109 = _tmpl$33$1();
8371
- insert(_el$109, () => activity.status === "running" ? "Waiting for output..." : "No output captured.");
8372
- return _el$109;
8584
+ var _el$135 = _tmpl$35$1();
8585
+ insert(_el$135, () => activity.status === "running" ? "Waiting for output..." : "No output captured.");
8586
+ return _el$135;
8373
8587
  })();
8374
8588
  },
8375
8589
  get children() {
8376
- var _el$108 = _tmpl$31$1();
8377
- insert(_el$108, () => activity.output.trim());
8378
- return _el$108;
8590
+ var _el$134 = _tmpl$33$1();
8591
+ insert(_el$134, () => activity.output.trim());
8592
+ return _el$134;
8379
8593
  }
8380
8594
  }), null);
8381
8595
  createRenderEffect((_p$) => {
8382
- var _v$6 = !!(activity.status === "running"), _v$7 = !!(activity.status === "failed");
8383
- _v$6 !== _p$.e && _el$100.classList.toggle("kit-activity-running", _p$.e = _v$6);
8384
- _v$7 !== _p$.t && _el$100.classList.toggle("kit-activity-failed", _p$.t = _v$7);
8596
+ var _v$0 = !!(activity.status === "running"), _v$1 = !!(activity.status === "failed");
8597
+ _v$0 !== _p$.e && _el$126.classList.toggle("kit-activity-running", _p$.e = _v$0);
8598
+ _v$1 !== _p$.t && _el$126.classList.toggle("kit-activity-failed", _p$.t = _v$1);
8385
8599
  return _p$;
8386
8600
  }, {
8387
8601
  e: void 0,
8388
8602
  t: void 0
8389
8603
  });
8390
- return _el$100;
8604
+ return _el$126;
8391
8605
  })()
8392
8606
  }));
8393
- return _el$22;
8607
+ return _el$39;
8394
8608
  })()];
8395
8609
  }
8396
8610
  })];
@@ -8402,197 +8616,197 @@ const AutomationTab = (props) => {
8402
8616
  },
8403
8617
  get children() {
8404
8618
  return [(() => {
8405
- var _el$23 = _tmpl$9$7(), _el$24 = _el$23.firstChild, _el$25 = _el$24.nextSibling;
8406
- _el$24.$$click = () => {
8619
+ var _el$40 = _tmpl$0$5(), _el$41 = _el$40.firstChild, _el$42 = _el$41.nextSibling;
8620
+ _el$41.$$click = () => {
8407
8621
  setSelectedKit(null);
8408
8622
  setEditingTaskJobId(null);
8409
8623
  };
8410
- insert(_el$25, createComponent(KitIcon, {
8624
+ insert(_el$42, createComponent(KitIcon, {
8411
8625
  get name() {
8412
8626
  return selectedKit().icon;
8413
8627
  },
8414
8628
  size: 14
8415
8629
  }), null);
8416
- insert(_el$25, () => selectedKit().name, null);
8417
- return _el$23;
8630
+ insert(_el$42, () => selectedKit().name, null);
8631
+ return _el$40;
8418
8632
  })(), (() => {
8419
- var _el$26 = _tmpl$0$5();
8420
- insert(_el$26, () => selectedKit().description);
8421
- return _el$26;
8633
+ var _el$43 = _tmpl$1$5();
8634
+ insert(_el$43, () => selectedKit().description);
8635
+ return _el$43;
8422
8636
  })(), (() => {
8423
- var _el$27 = _tmpl$1$5();
8424
- insert(_el$27, createComponent(For, {
8637
+ var _el$44 = _tmpl$10$5();
8638
+ insert(_el$44, createComponent(For, {
8425
8639
  get each() {
8426
8640
  return selectedKit().inputs;
8427
8641
  },
8428
8642
  children: (input) => (() => {
8429
- var _el$110 = _tmpl$37$1(), _el$111 = _el$110.firstChild;
8430
- insert(_el$111, () => input.label, null);
8431
- insert(_el$111, createComponent(Show, {
8643
+ var _el$136 = _tmpl$39$1(), _el$137 = _el$136.firstChild;
8644
+ insert(_el$137, () => input.label, null);
8645
+ insert(_el$137, createComponent(Show, {
8432
8646
  get when() {
8433
8647
  return input.required;
8434
8648
  },
8435
8649
  get children() {
8436
- return _tmpl$34$1();
8650
+ return _tmpl$36$1();
8437
8651
  }
8438
8652
  }), null);
8439
- insert(_el$110, createComponent(Show, {
8653
+ insert(_el$136, createComponent(Show, {
8440
8654
  get when() {
8441
8655
  return input.type === "textarea";
8442
8656
  },
8443
8657
  get fallback() {
8444
8658
  return (() => {
8445
- var _el$115 = _tmpl$38$1();
8446
- _el$115.$$input = (e) => setField(input.key, e.currentTarget.value);
8659
+ var _el$141 = _tmpl$40$1();
8660
+ _el$141.$$input = (e) => setField(input.key, e.currentTarget.value);
8447
8661
  createRenderEffect((_p$) => {
8448
- var _v$8 = input.type === "url" ? "url" : input.type === "number" ? "number" : "text", _v$9 = input.placeholder ?? "";
8449
- _v$8 !== _p$.e && setAttribute(_el$115, "type", _p$.e = _v$8);
8450
- _v$9 !== _p$.t && setAttribute(_el$115, "placeholder", _p$.t = _v$9);
8662
+ var _v$10 = input.type === "url" ? "url" : input.type === "number" ? "number" : "text", _v$11 = input.placeholder ?? "";
8663
+ _v$10 !== _p$.e && setAttribute(_el$141, "type", _p$.e = _v$10);
8664
+ _v$11 !== _p$.t && setAttribute(_el$141, "placeholder", _p$.t = _v$11);
8451
8665
  return _p$;
8452
8666
  }, {
8453
8667
  e: void 0,
8454
8668
  t: void 0
8455
8669
  });
8456
- createRenderEffect(() => _el$115.value = fieldValues()[input.key] ?? "");
8457
- return _el$115;
8670
+ createRenderEffect(() => _el$141.value = fieldValues()[input.key] ?? "");
8671
+ return _el$141;
8458
8672
  })();
8459
8673
  },
8460
8674
  get children() {
8461
- var _el$113 = _tmpl$35$1();
8462
- _el$113.$$input = (e) => setField(input.key, e.currentTarget.value);
8463
- createRenderEffect(() => setAttribute(_el$113, "placeholder", input.placeholder ?? ""));
8464
- createRenderEffect(() => _el$113.value = fieldValues()[input.key] ?? "");
8465
- return _el$113;
8675
+ var _el$139 = _tmpl$37$1();
8676
+ _el$139.$$input = (e) => setField(input.key, e.currentTarget.value);
8677
+ createRenderEffect(() => setAttribute(_el$139, "placeholder", input.placeholder ?? ""));
8678
+ createRenderEffect(() => _el$139.value = fieldValues()[input.key] ?? "");
8679
+ return _el$139;
8466
8680
  }
8467
8681
  }), null);
8468
- insert(_el$110, createComponent(Show, {
8682
+ insert(_el$136, createComponent(Show, {
8469
8683
  get when() {
8470
8684
  return input.hint;
8471
8685
  },
8472
8686
  get children() {
8473
- var _el$114 = _tmpl$36$1();
8474
- insert(_el$114, () => input.hint);
8475
- return _el$114;
8687
+ var _el$140 = _tmpl$38$1();
8688
+ insert(_el$140, () => input.hint);
8689
+ return _el$140;
8476
8690
  }
8477
8691
  }), null);
8478
- return _el$110;
8692
+ return _el$136;
8479
8693
  })()
8480
8694
  }));
8481
- return _el$27;
8695
+ return _el$44;
8482
8696
  })(), createComponent(Show, {
8483
8697
  get when() {
8484
8698
  return selectedKit().estimatedMinutes !== void 0;
8485
8699
  },
8486
8700
  get children() {
8487
- var _el$28 = _tmpl$10$5(), _el$29 = _el$28.firstChild, _el$31 = _el$29.nextSibling;
8488
- _el$31.nextSibling;
8489
- insert(_el$28, () => selectedKit().estimatedMinutes, _el$31);
8490
- return _el$28;
8701
+ var _el$45 = _tmpl$11$5(), _el$46 = _el$45.firstChild, _el$48 = _el$46.nextSibling;
8702
+ _el$48.nextSibling;
8703
+ insert(_el$45, () => selectedKit().estimatedMinutes, _el$48);
8704
+ return _el$45;
8491
8705
  }
8492
8706
  }), (() => {
8493
- var _el$32 = _tmpl$11$5();
8494
- _el$32.$$click = () => void handleRun();
8495
- insert(_el$32, createComponent(Show, {
8707
+ var _el$49 = _tmpl$12$5();
8708
+ _el$49.$$click = () => void handleRun();
8709
+ insert(_el$49, createComponent(Show, {
8496
8710
  get when() {
8497
8711
  return !isStreaming2();
8498
8712
  },
8499
8713
  get fallback() {
8500
- return [_tmpl$39$1(), "Agent busy…"];
8714
+ return [_tmpl$41$1(), "Agent busy…"];
8501
8715
  },
8502
- children: "Run Kit"
8716
+ children: "Run Skill"
8503
8717
  }));
8504
- createRenderEffect(() => _el$32.disabled = !canRun());
8505
- return _el$32;
8718
+ createRenderEffect(() => _el$49.disabled = !canRun());
8719
+ return _el$49;
8506
8720
  })(), (() => {
8507
- var _el$33 = _tmpl$18$3(), _el$34 = _el$33.firstChild, _el$35 = _el$34.firstChild, _el$36 = _el$35.nextSibling;
8508
- _el$35.addEventListener("change", (e) => setScheduleEnabled(e.currentTarget.checked));
8509
- insert(_el$34, createComponent(clock_default, {
8721
+ var _el$50 = _tmpl$19$3(), _el$51 = _el$50.firstChild, _el$52 = _el$51.firstChild, _el$53 = _el$52.nextSibling;
8722
+ _el$52.addEventListener("change", (e) => setScheduleEnabled(e.currentTarget.checked));
8723
+ insert(_el$51, createComponent(clock_default, {
8510
8724
  size: 13
8511
- }), _el$36);
8512
- insert(_el$33, createComponent(Show, {
8725
+ }), _el$53);
8726
+ insert(_el$50, createComponent(Show, {
8513
8727
  get when() {
8514
8728
  return scheduleEnabled();
8515
8729
  },
8516
8730
  get children() {
8517
- var _el$37 = _tmpl$17$3(), _el$38 = _el$37.firstChild, _el$52 = _el$38.nextSibling, _el$53 = _el$52.nextSibling;
8518
- insert(_el$38, createComponent(For, {
8731
+ var _el$54 = _tmpl$18$3(), _el$55 = _el$54.firstChild, _el$69 = _el$55.nextSibling, _el$70 = _el$69.nextSibling;
8732
+ insert(_el$55, createComponent(For, {
8519
8733
  each: ["once", "hourly", "daily", "weekly"],
8520
8734
  children: (type) => (() => {
8521
- var _el$117 = _tmpl$40$1(), _el$118 = _el$117.firstChild;
8522
- _el$118.addEventListener("change", () => setSchedType(type));
8523
- _el$118.value = type;
8524
- insert(_el$117, () => type.charAt(0).toUpperCase() + type.slice(1), null);
8525
- createRenderEffect(() => _el$118.checked = schedType() === type);
8526
- return _el$117;
8735
+ var _el$143 = _tmpl$42$1(), _el$144 = _el$143.firstChild;
8736
+ _el$144.addEventListener("change", () => setSchedType(type));
8737
+ _el$144.value = type;
8738
+ insert(_el$143, () => type.charAt(0).toUpperCase() + type.slice(1), null);
8739
+ createRenderEffect(() => _el$144.checked = schedType() === type);
8740
+ return _el$143;
8527
8741
  })()
8528
8742
  }));
8529
- insert(_el$37, createComponent(Show, {
8743
+ insert(_el$54, createComponent(Show, {
8530
8744
  get when() {
8531
8745
  return schedType() === "once";
8532
8746
  },
8533
8747
  get children() {
8534
- var _el$39 = _tmpl$12$5(), _el$40 = _el$39.firstChild, _el$41 = _el$40.nextSibling;
8535
- _el$41.$$input = (e) => setSchedRunAt(e.currentTarget.value);
8536
- createRenderEffect(() => _el$41.value = schedRunAt());
8537
- return _el$39;
8748
+ var _el$56 = _tmpl$13$4(), _el$57 = _el$56.firstChild, _el$58 = _el$57.nextSibling;
8749
+ _el$58.$$input = (e) => setSchedRunAt(e.currentTarget.value);
8750
+ createRenderEffect(() => _el$58.value = schedRunAt());
8751
+ return _el$56;
8538
8752
  }
8539
- }), _el$52);
8540
- insert(_el$37, createComponent(Show, {
8753
+ }), _el$69);
8754
+ insert(_el$54, createComponent(Show, {
8541
8755
  get when() {
8542
8756
  return schedType() === "daily";
8543
8757
  },
8544
8758
  get children() {
8545
- var _el$42 = _tmpl$13$4(), _el$43 = _el$42.firstChild, _el$44 = _el$43.nextSibling;
8546
- _el$44.$$input = (e) => parseTimeInput(e.currentTarget.value);
8547
- createRenderEffect(() => _el$44.value = timeValue());
8548
- return _el$42;
8759
+ var _el$59 = _tmpl$14$4(), _el$60 = _el$59.firstChild, _el$61 = _el$60.nextSibling;
8760
+ _el$61.$$input = (e) => parseTimeInput(e.currentTarget.value);
8761
+ createRenderEffect(() => _el$61.value = timeValue());
8762
+ return _el$59;
8549
8763
  }
8550
- }), _el$52);
8551
- insert(_el$37, createComponent(Show, {
8764
+ }), _el$69);
8765
+ insert(_el$54, createComponent(Show, {
8552
8766
  get when() {
8553
8767
  return schedType() === "weekly";
8554
8768
  },
8555
8769
  get children() {
8556
8770
  return [(() => {
8557
- var _el$45 = _tmpl$14$4(), _el$46 = _el$45.firstChild, _el$47 = _el$46.nextSibling;
8558
- _el$47.addEventListener("change", (e) => setSchedDayOfWeek(Number(e.currentTarget.value)));
8559
- insert(_el$47, createComponent(For, {
8771
+ var _el$62 = _tmpl$15$4(), _el$63 = _el$62.firstChild, _el$64 = _el$63.nextSibling;
8772
+ _el$64.addEventListener("change", (e) => setSchedDayOfWeek(Number(e.currentTarget.value)));
8773
+ insert(_el$64, createComponent(For, {
8560
8774
  each: DAY_NAMES,
8561
8775
  children: (day, i) => (() => {
8562
- var _el$119 = _tmpl$41$1();
8563
- insert(_el$119, day);
8564
- createRenderEffect(() => _el$119.value = i());
8565
- return _el$119;
8776
+ var _el$145 = _tmpl$43$1();
8777
+ insert(_el$145, day);
8778
+ createRenderEffect(() => _el$145.value = i());
8779
+ return _el$145;
8566
8780
  })()
8567
8781
  }));
8568
- createRenderEffect(() => _el$47.value = schedDayOfWeek());
8569
- return _el$45;
8782
+ createRenderEffect(() => _el$64.value = schedDayOfWeek());
8783
+ return _el$62;
8570
8784
  })(), (() => {
8571
- var _el$48 = _tmpl$15$4(), _el$49 = _el$48.firstChild, _el$50 = _el$49.nextSibling;
8572
- _el$50.$$input = (e) => parseTimeInput(e.currentTarget.value);
8573
- createRenderEffect(() => _el$50.value = timeValue());
8574
- return _el$48;
8785
+ var _el$65 = _tmpl$16$3(), _el$66 = _el$65.firstChild, _el$67 = _el$66.nextSibling;
8786
+ _el$67.$$input = (e) => parseTimeInput(e.currentTarget.value);
8787
+ createRenderEffect(() => _el$67.value = timeValue());
8788
+ return _el$65;
8575
8789
  })()];
8576
8790
  }
8577
- }), _el$52);
8578
- insert(_el$37, createComponent(Show, {
8791
+ }), _el$69);
8792
+ insert(_el$54, createComponent(Show, {
8579
8793
  get when() {
8580
8794
  return scheduleError() !== null;
8581
8795
  },
8582
8796
  get children() {
8583
- var _el$51 = _tmpl$16$3();
8584
- insert(_el$51, scheduleError);
8585
- return _el$51;
8797
+ var _el$68 = _tmpl$17$3();
8798
+ insert(_el$68, scheduleError);
8799
+ return _el$68;
8586
8800
  }
8587
- }), _el$52);
8588
- _el$53.$$click = () => void handleSchedule();
8589
- insert(_el$53, () => editingTaskJobId() ? "Save Changes" : "Schedule Kit");
8590
- createRenderEffect(() => _el$53.disabled = !canSchedule());
8591
- return _el$37;
8801
+ }), _el$69);
8802
+ _el$70.$$click = () => void handleSchedule();
8803
+ insert(_el$70, () => editingTaskJobId() ? "Save Changes" : "Schedule Skill");
8804
+ createRenderEffect(() => _el$70.disabled = !canSchedule());
8805
+ return _el$54;
8592
8806
  }
8593
8807
  }), null);
8594
- createRenderEffect(() => _el$35.checked = scheduleEnabled());
8595
- return _el$33;
8808
+ createRenderEffect(() => _el$52.checked = scheduleEnabled());
8809
+ return _el$50;
8596
8810
  })()];
8597
8811
  }
8598
8812
  }), null);
@@ -8601,33 +8815,33 @@ const AutomationTab = (props) => {
8601
8815
  return editingJob() !== null;
8602
8816
  },
8603
8817
  get children() {
8604
- var _el$54 = _tmpl$22$3(), _el$55 = _el$54.firstChild, _el$56 = _el$55.firstChild, _el$57 = _el$56.firstChild, _el$58 = _el$57.nextSibling, _el$59 = _el$56.nextSibling, _el$70 = _el$59.nextSibling, _el$71 = _el$70.firstChild, _el$72 = _el$71.nextSibling;
8605
- _el$54.$$click = () => setEditingJob(null);
8606
- _el$55.$$click = (e) => e.stopPropagation();
8607
- insert(_el$58, () => editingJob().kitName);
8608
- insert(_el$59, createComponent(For, {
8818
+ var _el$71 = _tmpl$23$3(), _el$72 = _el$71.firstChild, _el$73 = _el$72.firstChild, _el$74 = _el$73.firstChild, _el$75 = _el$74.nextSibling, _el$76 = _el$73.nextSibling, _el$87 = _el$76.nextSibling, _el$88 = _el$87.firstChild, _el$89 = _el$88.nextSibling;
8819
+ _el$71.$$click = () => setEditingJob(null);
8820
+ _el$72.$$click = (e) => e.stopPropagation();
8821
+ insert(_el$75, () => editingJob().kitName);
8822
+ insert(_el$76, createComponent(For, {
8609
8823
  each: ["once", "hourly", "daily", "weekly"],
8610
8824
  children: (t) => (() => {
8611
- var _el$120 = _tmpl$42$1(), _el$121 = _el$120.firstChild;
8612
- _el$121.addEventListener("change", () => setEditType(t));
8613
- _el$121.value = t;
8614
- insert(_el$120, () => t.charAt(0).toUpperCase() + t.slice(1), null);
8615
- createRenderEffect(() => _el$121.checked = editType() === t);
8616
- return _el$120;
8825
+ var _el$146 = _tmpl$44$1(), _el$147 = _el$146.firstChild;
8826
+ _el$147.addEventListener("change", () => setEditType(t));
8827
+ _el$147.value = t;
8828
+ insert(_el$146, () => t.charAt(0).toUpperCase() + t.slice(1), null);
8829
+ createRenderEffect(() => _el$147.checked = editType() === t);
8830
+ return _el$146;
8617
8831
  })()
8618
8832
  }));
8619
- insert(_el$55, createComponent(Show, {
8833
+ insert(_el$72, createComponent(Show, {
8620
8834
  get when() {
8621
8835
  return editType() === "once";
8622
8836
  },
8623
8837
  get children() {
8624
- var _el$60 = _tmpl$19$3(), _el$61 = _el$60.firstChild, _el$62 = _el$61.nextSibling;
8625
- _el$62.$$input = (e) => setEditRunAt(e.currentTarget.value);
8626
- createRenderEffect(() => _el$62.value = editRunAt());
8627
- return _el$60;
8838
+ var _el$77 = _tmpl$20$3(), _el$78 = _el$77.firstChild, _el$79 = _el$78.nextSibling;
8839
+ _el$79.$$input = (e) => setEditRunAt(e.currentTarget.value);
8840
+ createRenderEffect(() => _el$79.value = editRunAt());
8841
+ return _el$77;
8628
8842
  }
8629
- }), _el$70);
8630
- insert(_el$55, createComponent(Show, {
8843
+ }), _el$87);
8844
+ insert(_el$72, createComponent(Show, {
8631
8845
  get when() {
8632
8846
  return editType() === "daily" || editType() === "weekly";
8633
8847
  },
@@ -8637,41 +8851,41 @@ const AutomationTab = (props) => {
8637
8851
  return editType() === "weekly";
8638
8852
  },
8639
8853
  get children() {
8640
- var _el$63 = _tmpl$20$3(), _el$64 = _el$63.firstChild, _el$65 = _el$64.nextSibling;
8641
- _el$65.addEventListener("change", (e) => setEditDayOfWeek(Number(e.currentTarget.value)));
8642
- insert(_el$65, createComponent(For, {
8854
+ var _el$80 = _tmpl$21$3(), _el$81 = _el$80.firstChild, _el$82 = _el$81.nextSibling;
8855
+ _el$82.addEventListener("change", (e) => setEditDayOfWeek(Number(e.currentTarget.value)));
8856
+ insert(_el$82, createComponent(For, {
8643
8857
  each: DAY_NAMES,
8644
8858
  children: (name, i) => (() => {
8645
- var _el$122 = _tmpl$41$1();
8646
- insert(_el$122, name);
8647
- createRenderEffect(() => _el$122.value = i());
8648
- return _el$122;
8859
+ var _el$148 = _tmpl$43$1();
8860
+ insert(_el$148, name);
8861
+ createRenderEffect(() => _el$148.value = i());
8862
+ return _el$148;
8649
8863
  })()
8650
8864
  }));
8651
- createRenderEffect(() => _el$65.value = editDayOfWeek());
8652
- return _el$63;
8865
+ createRenderEffect(() => _el$82.value = editDayOfWeek());
8866
+ return _el$80;
8653
8867
  }
8654
8868
  }), (() => {
8655
- var _el$66 = _tmpl$21$3(), _el$67 = _el$66.firstChild, _el$68 = _el$67.nextSibling;
8656
- _el$68.$$input = (e) => parseEditTimeInput(e.currentTarget.value);
8657
- createRenderEffect(() => _el$68.value = editTimeValue());
8658
- return _el$66;
8869
+ var _el$83 = _tmpl$22$3(), _el$84 = _el$83.firstChild, _el$85 = _el$84.nextSibling;
8870
+ _el$85.$$input = (e) => parseEditTimeInput(e.currentTarget.value);
8871
+ createRenderEffect(() => _el$85.value = editTimeValue());
8872
+ return _el$83;
8659
8873
  })()];
8660
8874
  }
8661
- }), _el$70);
8662
- insert(_el$55, createComponent(Show, {
8875
+ }), _el$87);
8876
+ insert(_el$72, createComponent(Show, {
8663
8877
  get when() {
8664
8878
  return editError();
8665
8879
  },
8666
8880
  get children() {
8667
- var _el$69 = _tmpl$16$3();
8668
- insert(_el$69, editError);
8669
- return _el$69;
8881
+ var _el$86 = _tmpl$17$3();
8882
+ insert(_el$86, editError);
8883
+ return _el$86;
8670
8884
  }
8671
- }), _el$70);
8672
- _el$71.$$click = () => setEditingJob(null);
8673
- _el$72.$$click = () => void handleSaveEditSchedule();
8674
- return _el$54;
8885
+ }), _el$87);
8886
+ _el$88.$$click = () => setEditingJob(null);
8887
+ _el$89.$$click = () => void handleSaveEditSchedule();
8888
+ return _el$71;
8675
8889
  }
8676
8890
  }), null);
8677
8891
  return _el$;
@@ -9591,7 +9805,7 @@ const SidebarWindowControls = (props) => {
9591
9805
  };
9592
9806
  delegateEvents(["click"]);
9593
9807
  const vesselLogo = "" + new URL("vessel-logo-transparent-IT25qr-Z.png", import.meta.url).href;
9594
- var _tmpl$$a = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$a = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$9 = /* @__PURE__ */ template(`<div class=sidebar-resize-handle>`), _tmpl$4$8 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$5$8 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$6$8 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$7$6 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$8$5 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$9$4 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$0$3 = /* @__PURE__ */ template(`<div class=bookmark-export-message>`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=bookmark-save-body><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Import HTML</button><button class=bookmark-secondary-button type=button>Import JSON`), _tmpl$10$3 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$11$3 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-export-card><div><div class=bookmark-panel-title>Export</div><div class=bookmark-panel-subtitle>Save browser-ready HTML or a full Vessel archive</div></div><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Browser HTML</button><button class=bookmark-secondary-button type=button>HTML + notes</button><button class=bookmark-secondary-button type=button>Vessel JSON</button></div></div><div class=bookmark-import-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Import Bookmarks</span><span class=bookmark-save-toggle-subtitle>Import from HTML or Vessel JSON</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$12$3 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$13$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><textarea class=agent-textarea rows=2 placeholder="Optional note for this checkpoint"></textarea><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$14$2 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title>Load more history</span><span class=history-entry-url>Showing <!> of `), _tmpl$15$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$16$1 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><div class=history-panel-actions><button class=history-clear-btn>Clear</button><button class=history-clear-btn>Export HTML</button><button class=history-clear-btn>Export JSON</button><button class=history-clear-btn>Import</button></div></div><div class=history-list>`), _tmpl$17$1 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div class=agent-panel-title>What Changed</div><div class=agent-panel-subtitle>`), _tmpl$18$1 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$19$1 = /* @__PURE__ */ template(`<span>`), _tmpl$20$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$21$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$22$1 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$23$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$24$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill=var(--accent-primary) stroke=var(--accent-primary) stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$27$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$30 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$31 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button><button class=sidebar-tab role=tab>Research<span class=sidebar-tab-beta>Beta</span></button></div><div class=sidebar-messages><div>`), _tmpl$32 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$33 = /* @__PURE__ */ template(`<div class="agent-card agent-card-approval"><div class=agent-card-approval-stripe aria-hidden=true></div><div class=agent-card-title></div><div class=agent-card-copy></div><div class=agent-card-copy></div><div class=agent-card-actions><button class=agent-primary-button type=button>Approve</button><button class=agent-control-button type=button>Reject`), _tmpl$34 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$35 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$36 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$37 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$38 = /* @__PURE__ */ template(`<div class=agent-card><div class=agent-action-row><span class=agent-card-title></span><span></span></div><div class=agent-card-copy>`), _tmpl$39 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$40 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$41 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class=bookmark-ghost-button type=button>Export</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$42 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$43 = /* @__PURE__ */ template(`<div class=bookmark-folder-delete-confirm><p class=bookmark-delete-prompt>Delete "<!>"?</p><div class=bookmark-delete-options><button class="bookmark-ghost-button danger"type=button></button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$44 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><div class=bookmark-folder-form-fields><input class=bookmark-input><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=button>Save</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$45 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$46 = /* @__PURE__ */ template(`<div class=bookmark-folder-section><div class="bookmark-folder-header clickable"role=button tabindex=0><div class=bookmark-folder-overview><span class=bookmark-folder-chevron aria-hidden=true>▸</span><div><div class=bookmark-folder-name></div><div class=bookmark-folder-meta> saved`), _tmpl$47 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$48 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$49 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$50 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$51 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$52 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$53 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$54 = /* @__PURE__ */ template(`<div class=bookmark-folder-edit><input class=bookmark-input placeholder="Bookmark title"><textarea class=bookmark-note-input rows=2 placeholder="Why this bookmark matters"></textarea><textarea class=bookmark-note-input rows=1 placeholder=Intent></textarea><textarea class=bookmark-note-input rows=1 placeholder="Expected content"></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input rows=2 placeholder="Agent hints (one key:value per line)"></textarea><div class=bookmark-item-footer><button class=bookmark-secondary-button type=button>Save edits</button><button class=bookmark-ghost-button type=button>Cancel`), _tmpl$55 = /* @__PURE__ */ template(`<div class=bookmark-item><button class=bookmark-item-link type=button><span class=bookmark-item-title></span><span class=bookmark-item-url></span></button><div class=bookmark-item-footer><span class=bookmark-item-time></span><button class=bookmark-ghost-button type=button></button><button class="bookmark-ghost-button danger"type=button>Remove`), _tmpl$56 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$57 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$58 = /* @__PURE__ */ template(`<div class=checkpoint-timeline-item><div class=checkpoint-timeline-rail><span class=checkpoint-timeline-dot></span></div><div class=checkpoint-timeline-content><div class=checkpoint-timeline-name></div><div class=checkpoint-timeline-time></div><textarea class=agent-textarea rows=2 placeholder="Add a note..."></textarea><button class=agent-control-button type=button>Restore`), _tmpl$59 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$60 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">The Diff timeline is a premium feature. Upgrade to see a full history of what changed on this page.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$61 = /* @__PURE__ */ template(`<div>`), _tmpl$62 = /* @__PURE__ */ template(`<div class=thinking-state><div class=thinking-orb aria-hidden=true><span></span><span></span><span></span></div><div class=thinking-copy><div class=thinking-title>Thinking`), _tmpl$63 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$64 = /* @__PURE__ */ template(`<div class=chat-approval><div class=chat-approval-icon aria-hidden=true><svg width=16 height=16 viewBox="0 0 16 16"fill=none><path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM7.25 4.75a.75.75 0 011.5 0v3.5a.75.75 0 01-1.5 0v-3.5zM8 11.5a.75.75 0 110-1.5.75.75 0 010 1.5z"fill=currentColor></path></svg></div><div class=chat-approval-body><div class=chat-approval-title>Approval needed: <strong></strong></div><div class=chat-approval-detail></div><div class=chat-approval-actions><button class="chat-approval-btn chat-approval-approve"type=button>Approve</button><button class="chat-approval-btn chat-approval-reject"type=button>Reject`), _tmpl$65 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
9808
+ var _tmpl$$a = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$a = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$9 = /* @__PURE__ */ template(`<div class=sidebar-resize-handle>`), _tmpl$4$8 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$5$8 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$6$8 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$7$6 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$8$5 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$9$4 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$0$3 = /* @__PURE__ */ template(`<div class=bookmark-export-message>`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=bookmark-save-body><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Import HTML</button><button class=bookmark-secondary-button type=button>Import JSON`), _tmpl$10$3 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$11$3 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-export-card><div><div class=bookmark-panel-title>Export</div><div class=bookmark-panel-subtitle>Save browser-ready HTML or a full Vessel archive</div></div><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Browser HTML</button><button class=bookmark-secondary-button type=button>HTML + notes</button><button class=bookmark-secondary-button type=button>Vessel JSON</button></div></div><div class=bookmark-import-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Import Bookmarks</span><span class=bookmark-save-toggle-subtitle>Import from HTML or Vessel JSON</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$12$3 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$13$2 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><textarea class=agent-textarea rows=2 placeholder="Optional note for this checkpoint"></textarea><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$14$2 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title>Load more history</span><span class=history-entry-url>Showing <!> of `), _tmpl$15$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$16$1 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><div class=history-panel-actions><button class=history-clear-btn>Clear</button><button class=history-clear-btn>Export HTML</button><button class=history-clear-btn>Export JSON</button><button class=history-clear-btn>Import</button></div></div><div class=history-list>`), _tmpl$17$1 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div class=agent-panel-title>What Changed</div><div class=agent-panel-subtitle>`), _tmpl$18$1 = /* @__PURE__ */ template(`<div class="kit-upsell premium-chat-banner"><p class=kit-upsell-title>Vessel Premium</p><p class="kit-upsell-body premium-chat-banner-body">Give the built-in agent a bigger toolbox and longer runway: screenshots, saved sessions, workflow tracking, table extraction, and up to 1,000 tool calls per turn.</p><div class="premium-inline-actions premium-chat-banner-actions"><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>See Premium`), _tmpl$19$1 = /* @__PURE__ */ template(`<span>`), _tmpl$20$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$21$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$22$1 = /* @__PURE__ */ template(`<div class=sidebar-empty><svg class=sidebar-empty-icon width=48 height=48 viewBox="0 0 48 48"aria-hidden=true><line x1=8 y1=8 x2=24 y2=5 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=24 y1=5 x2=40 y2=10 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=8 y1=8 x2=6 y2=24 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=40 y1=10 x2=44 y2=26 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=6 y1=24 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=44 y1=26 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=10 y1=38 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=38 y1=40 x2=24 y2=44 stroke=var(--border-visible) stroke-width=1 opacity=0.35></line><line x1=8 y1=8 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=24 y1=5 x2=20 y2=18 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=40 y1=10 x2=32 y2=20 stroke=var(--border-visible) stroke-width=1 opacity=0.5></line><line x1=20 y1=18 x2=32 y2=20 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.3></line><line x1=6 y1=24 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=20 y1=18 x2=18 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=32 y1=20 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=44 y1=26 x2=36 y2=30 stroke=var(--border-visible) stroke-width=1 opacity=0.45></line><line x1=18 y1=30 x2=36 y2=30 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.25></line><line x1=18 y1=30 x2=10 y2=38 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=36 y1=30 x2=38 y2=40 stroke=var(--border-visible) stroke-width=1 opacity=0.4></line><line x1=18 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><line x1=36 y1=30 x2=24 y2=44 stroke=var(--accent-primary) stroke-width=0.75 opacity=0.2></line><circle cx=8 cy=8 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=24 cy=5 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=40 cy=10 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.7></circle><circle cx=6 cy=24 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=44 cy=26 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.55></circle><circle cx=10 cy=38 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=38 cy=40 r=2 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.45></circle><circle cx=24 cy=44 r=2.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.5></circle><circle cx=20 cy=18 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.85></circle><circle cx=32 cy=20 r=4 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.9></circle><circle cx=18 cy=30 r=3 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.75></circle><circle cx=36 cy=30 r=3.5 fill=var(--bg-secondary) stroke=var(--accent-primary) stroke-width=1.5 opacity=0.8></circle></svg><p class=sidebar-empty-title>Your move.</p><p class=sidebar-empty-hint>Configure a provider in Settings (Ctrl+,) then ask anything about the current page or beyond.`), _tmpl$23$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Stop generating"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><rect x=2 y=2 width=10 height=10 rx=1.5 fill=currentColor></rect></svg>Stop`), _tmpl$24$1 = /* @__PURE__ */ template(`<button class=chat-action-btn title="Retry last prompt"><svg width=14 height=14 viewBox="0 0 14 14"fill=none aria-hidden=true><path d="M11.5 7a4.5 4.5 0 1 1-1.3-3.2"stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M10.5 1v3h-3"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg>Retry`), _tmpl$25$1 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$26$1 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill=var(--accent-primary) stroke=var(--accent-primary) stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$27$1 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$28$1 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$29$1 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$30 = /* @__PURE__ */ template(`<div class=chat-command-error><span></span><button class=chat-command-error-dismiss type=button aria-label="Dismiss command error">×`), _tmpl$31 = /* @__PURE__ */ template(`<div class=chat-skill-suggestions role=listbox>`), _tmpl$32 = /* @__PURE__ */ template(`<div class=sidebar-input-area><div class=sidebar-input-frame><textarea class=sidebar-input rows=2></textarea></div><button class=sidebar-send>`), _tmpl$33 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Skills</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button><button class=sidebar-tab role=tab>Research<span class=sidebar-tab-beta>Beta</span></button></div><div class=sidebar-messages><div>`), _tmpl$34 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$35 = /* @__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$36 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$37 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$38 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$39 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$40 = /* @__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$41 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$42 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$43 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class=bookmark-ghost-button type=button>Export</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$44 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$45 = /* @__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$46 = /* @__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$47 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$48 = /* @__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$49 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$50 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$51 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$52 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$53 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$54 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$55 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$56 = /* @__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$57 = /* @__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$58 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$59 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$60 = /* @__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$61 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$62 = /* @__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$63 = /* @__PURE__ */ template(`<div>`), _tmpl$64 = /* @__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$65 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$66 = /* @__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$67 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`), _tmpl$68 = /* @__PURE__ */ template(`<button class=chat-skill-suggestion type=button role=option><span class=chat-skill-suggestion-command>/</span><span class=chat-skill-suggestion-body><span class=chat-skill-suggestion-name></span><span class=chat-skill-suggestion-desc>`), _tmpl$69 = /* @__PURE__ */ template(`<div class=sidebar-input-highlight aria-hidden=true><span class=sidebar-input-highlight-command>`);
9595
9809
  const UNSORTED_FOLDER = {
9596
9810
  id: "unsorted",
9597
9811
  name: "Unsorted",
@@ -9642,6 +9856,7 @@ const Sidebar = (props) => {
9642
9856
  clearPendingQueries,
9643
9857
  clearHistory,
9644
9858
  query,
9859
+ runAutomationPrompt,
9645
9860
  cancel
9646
9861
  } = useAI();
9647
9862
  const {
@@ -9686,6 +9901,9 @@ const Sidebar = (props) => {
9686
9901
  } = useBookmarks();
9687
9902
  const [sidebarTab, setSidebarTab] = createSignal("supervisor");
9688
9903
  const [chatInput, setChatInput] = createSignal("");
9904
+ const [chatCommandError, setChatCommandError] = createSignal(null);
9905
+ const [installedSkillKits, setInstalledSkillKits] = createSignal([]);
9906
+ const [slashSuggestionIndex, setSlashSuggestionIndex] = createSignal(0);
9689
9907
  const [highlightCount, setHighlightCount] = createSignal(0);
9690
9908
  const [highlightIndex, setHighlightIndex] = createSignal(-1);
9691
9909
  const [premiumState, setPremiumState] = createSignal({
@@ -9698,6 +9916,33 @@ const Sidebar = (props) => {
9698
9916
  });
9699
9917
  const trackedPremiumContexts = /* @__PURE__ */ new Set();
9700
9918
  const isPremium = () => isPremiumStatus(premiumState().status);
9919
+ const allSkillKits = createMemo(() => [...BUNDLED_KITS, ...installedSkillKits()]);
9920
+ const slashSuggestions = createMemo(() => getSkillSlashSuggestions(chatInput(), allSkillKits()));
9921
+ const recognizedSkillInvocation = createMemo(() => {
9922
+ const input = chatInput().trimStart();
9923
+ if (!input.startsWith("/")) return null;
9924
+ return parseSkillSlashInvocation(input, allSkillKits());
9925
+ });
9926
+ const recognizedSkillInputParts = createMemo(() => {
9927
+ if (recognizedSkillInvocation() === null) return null;
9928
+ const match = chatInput().match(/^(\s*)(\/\S+)([\s\S]*)$/);
9929
+ if (!match) return null;
9930
+ return {
9931
+ leading: match[1],
9932
+ command: match[2],
9933
+ rest: match[3]
9934
+ };
9935
+ });
9936
+ const loadInstalledSkillKits = async () => {
9937
+ try {
9938
+ const kits = await window.vessel.automation.getInstalled();
9939
+ setInstalledSkillKits(kits);
9940
+ return kits;
9941
+ } catch {
9942
+ setInstalledSkillKits([]);
9943
+ return [];
9944
+ }
9945
+ };
9701
9946
  const trackPremiumContext = (step) => {
9702
9947
  if (trackedPremiumContexts.has(step)) return;
9703
9948
  trackedPremiumContexts.add(step);
@@ -9717,6 +9962,11 @@ const Sidebar = (props) => {
9717
9962
  });
9718
9963
  const cleanup2 = window.vessel.premium.onUpdate(setPremiumState);
9719
9964
  onCleanup(cleanup2);
9965
+ void loadInstalledSkillKits();
9966
+ });
9967
+ createEffect(() => {
9968
+ slashSuggestions();
9969
+ setSlashSuggestionIndex(0);
9720
9970
  });
9721
9971
  const syncHighlightCount = async () => {
9722
9972
  try {
@@ -9833,11 +10083,69 @@ ${contextBlock}` : contextBlock);
9833
10083
  const handleChatSend = async () => {
9834
10084
  const prompt = chatInput().trim();
9835
10085
  if (!prompt) return;
10086
+ setChatCommandError(null);
10087
+ if (prompt.startsWith("/")) {
10088
+ const installedKits = await loadInstalledSkillKits();
10089
+ const kits = [...BUNDLED_KITS, ...installedKits];
10090
+ const invocation = parseSkillSlashInvocation(prompt, kits);
10091
+ if (invocation) {
10092
+ if (!invocation.task) {
10093
+ const [command] = prompt.split(/\s+/);
10094
+ setChatCommandError(`Add instructions after ${command}.`);
10095
+ return;
10096
+ }
10097
+ const {
10098
+ values,
10099
+ missingLabels
10100
+ } = buildSlashSkillValues(invocation.kit, invocation.task);
10101
+ if (missingLabels.length > 0) {
10102
+ setChatCommandError(`${invocation.kit.name} needs ${missingLabels.join(", ")}. Open Skills to run it with all fields.`);
10103
+ return;
10104
+ }
10105
+ const renderedPrompt = renderKitPrompt(invocation.kit, values);
10106
+ const result2 = await runAutomationPrompt(renderedPrompt, {
10107
+ id: `slash:${invocation.kit.id}:${Date.now()}`,
10108
+ title: invocation.kit.name,
10109
+ icon: invocation.kit.icon
10110
+ });
10111
+ if (result2 !== "rejected") {
10112
+ setChatInput("");
10113
+ }
10114
+ return;
10115
+ }
10116
+ if (prompt.startsWith("/skill ")) {
10117
+ setChatCommandError("No matching skill found for that command.");
10118
+ return;
10119
+ }
10120
+ }
9836
10121
  const result = await query(prompt);
9837
10122
  if (result !== "rejected") {
9838
10123
  setChatInput("");
9839
10124
  }
9840
10125
  };
10126
+ const applySkillSuggestion = (kit) => {
10127
+ const token = getSkillCommandTokens(kit)[0] ?? kit.id;
10128
+ setChatInput(`/${token} `);
10129
+ setChatCommandError(null);
10130
+ setSlashSuggestionIndex(0);
10131
+ queueMicrotask(() => {
10132
+ chatInputRef?.focus();
10133
+ const length = chatInputRef?.value.length ?? 0;
10134
+ chatInputRef?.setSelectionRange(length, length);
10135
+ });
10136
+ };
10137
+ const applyActiveSkillSuggestion = () => {
10138
+ const suggestions = slashSuggestions();
10139
+ if (suggestions.length === 0) return false;
10140
+ const index = Math.max(0, Math.min(slashSuggestionIndex(), suggestions.length - 1));
10141
+ applySkillSuggestion(suggestions[index]);
10142
+ return true;
10143
+ };
10144
+ const moveSlashSuggestion = (delta) => {
10145
+ const count = slashSuggestions().length;
10146
+ if (count === 0) return;
10147
+ setSlashSuggestionIndex((current) => (current + delta + count) % count);
10148
+ };
9841
10149
  const handleRetry = () => {
9842
10150
  const msgs = messages2();
9843
10151
  for (let i = msgs.length - 1; i >= 0; i--) {
@@ -10217,7 +10525,7 @@ ${contextBlock}` : contextBlock);
10217
10525
  return props.forceOpen || sidebarOpen2();
10218
10526
  },
10219
10527
  get children() {
10220
- var _el$9 = _tmpl$31(), _el$1 = _el$9.firstChild, _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$1.nextSibling, _el$15 = _el$14.firstChild;
10528
+ var _el$9 = _tmpl$33(), _el$1 = _el$9.firstChild, _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild, _el$12 = _el$10.nextSibling, _el$13 = _el$12.firstChild, _el$14 = _el$1.nextSibling, _el$15 = _el$14.firstChild;
10221
10529
  _el$15.firstChild;
10222
10530
  var _el$18 = _el$15.nextSibling, _el$19 = _el$18.nextSibling, _el$20 = _el$19.nextSibling, _el$21 = _el$20.nextSibling, _el$22 = _el$21.nextSibling, _el$23 = _el$22.nextSibling, _el$24 = _el$23.nextSibling, _el$25 = _el$14.nextSibling, _el$131 = _el$25.firstChild;
10223
10531
  insert(_el$9, createComponent(Show, {
@@ -10301,7 +10609,7 @@ ${contextBlock}` : contextBlock);
10301
10609
  return runtimeState2().supervisor.pendingApprovals.length > 0;
10302
10610
  },
10303
10611
  get fallback() {
10304
- return _tmpl$32();
10612
+ return _tmpl$34();
10305
10613
  },
10306
10614
  get children() {
10307
10615
  return [_tmpl$6$8(), createComponent(For, {
@@ -10309,13 +10617,13 @@ ${contextBlock}` : contextBlock);
10309
10617
  return runtimeState2().supervisor.pendingApprovals;
10310
10618
  },
10311
10619
  children: (approval) => (() => {
10312
- var _el$149 = _tmpl$33(), _el$150 = _el$149.firstChild, _el$151 = _el$150.nextSibling, _el$152 = _el$151.nextSibling, _el$153 = _el$152.nextSibling, _el$154 = _el$153.nextSibling, _el$155 = _el$154.firstChild, _el$156 = _el$155.nextSibling;
10313
- insert(_el$151, () => approval.name);
10314
- insert(_el$152, () => approval.argsSummary);
10315
- insert(_el$153, () => approval.reason);
10316
- _el$155.$$click = () => void resolveApproval(approval.id, true);
10317
- _el$156.$$click = () => void resolveApproval(approval.id, false);
10318
- return _el$149;
10620
+ var _el$154 = _tmpl$35(), _el$155 = _el$154.firstChild, _el$156 = _el$155.nextSibling, _el$157 = _el$156.nextSibling, _el$158 = _el$157.nextSibling, _el$159 = _el$158.nextSibling, _el$160 = _el$159.firstChild, _el$161 = _el$160.nextSibling;
10621
+ insert(_el$156, () => approval.name);
10622
+ insert(_el$157, () => approval.argsSummary);
10623
+ insert(_el$158, () => approval.reason);
10624
+ _el$160.$$click = () => void resolveApproval(approval.id, true);
10625
+ _el$161.$$click = () => void resolveApproval(approval.id, false);
10626
+ return _el$154;
10319
10627
  })()
10320
10628
  })];
10321
10629
  }
@@ -10339,7 +10647,7 @@ ${contextBlock}` : contextBlock);
10339
10647
  return recentActions().length > 0;
10340
10648
  },
10341
10649
  get fallback() {
10342
- return _tmpl$34();
10650
+ return _tmpl$36();
10343
10651
  },
10344
10652
  get children() {
10345
10653
  return createComponent(Show, {
@@ -10347,7 +10655,7 @@ ${contextBlock}` : contextBlock);
10347
10655
  return actionsExpanded();
10348
10656
  },
10349
10657
  get fallback() {
10350
- return _tmpl$35();
10658
+ return _tmpl$37();
10351
10659
  },
10352
10660
  get children() {
10353
10661
  return createComponent(For, {
@@ -10355,32 +10663,32 @@ ${contextBlock}` : contextBlock);
10355
10663
  return recentActions();
10356
10664
  },
10357
10665
  children: (action) => (() => {
10358
- var _el$159 = _tmpl$38(), _el$160 = _el$159.firstChild, _el$161 = _el$160.firstChild, _el$162 = _el$161.nextSibling, _el$163 = _el$160.nextSibling;
10359
- insert(_el$161, () => action.name);
10360
- insert(_el$162, () => action.status);
10361
- insert(_el$163, () => action.argsSummary);
10362
- insert(_el$159, createComponent(Show, {
10666
+ var _el$164 = _tmpl$40(), _el$165 = _el$164.firstChild, _el$166 = _el$165.firstChild, _el$167 = _el$166.nextSibling, _el$168 = _el$165.nextSibling;
10667
+ insert(_el$166, () => action.name);
10668
+ insert(_el$167, () => action.status);
10669
+ insert(_el$168, () => action.argsSummary);
10670
+ insert(_el$164, createComponent(Show, {
10363
10671
  get when() {
10364
10672
  return action.resultSummary;
10365
10673
  },
10366
10674
  get children() {
10367
- var _el$164 = _tmpl$36();
10368
- insert(_el$164, () => action.resultSummary);
10369
- return _el$164;
10675
+ var _el$169 = _tmpl$38();
10676
+ insert(_el$169, () => action.resultSummary);
10677
+ return _el$169;
10370
10678
  }
10371
10679
  }), null);
10372
- insert(_el$159, createComponent(Show, {
10680
+ insert(_el$164, createComponent(Show, {
10373
10681
  get when() {
10374
10682
  return action.error;
10375
10683
  },
10376
10684
  get children() {
10377
- var _el$165 = _tmpl$37();
10378
- insert(_el$165, () => action.error);
10379
- return _el$165;
10685
+ var _el$170 = _tmpl$39();
10686
+ insert(_el$170, () => action.error);
10687
+ return _el$170;
10380
10688
  }
10381
10689
  }), null);
10382
- createRenderEffect(() => className(_el$162, `agent-action-status ${action.status}`));
10383
- return _el$159;
10690
+ createRenderEffect(() => className(_el$167, `agent-action-status ${action.status}`));
10691
+ return _el$164;
10384
10692
  })()
10385
10693
  });
10386
10694
  }
@@ -10498,12 +10806,12 @@ ${contextBlock}` : contextBlock);
10498
10806
  },
10499
10807
  get fallback() {
10500
10808
  return (() => {
10501
- var _el$166 = _tmpl$39();
10502
- insert(_el$166, (() => {
10809
+ var _el$171 = _tmpl$41();
10810
+ insert(_el$171, (() => {
10503
10811
  var _c$5 = memo(() => !!normalizedBookmarkSearch());
10504
10812
  return () => _c$5() ? `No bookmarks matched "${bookmarkSearchQuery().trim()}".` : "No bookmarks saved yet.";
10505
10813
  })());
10506
- return _el$166;
10814
+ return _el$171;
10507
10815
  })();
10508
10816
  },
10509
10817
  get children() {
@@ -10512,105 +10820,105 @@ ${contextBlock}` : contextBlock);
10512
10820
  return filteredGroupedBookmarks();
10513
10821
  },
10514
10822
  children: (folder) => (() => {
10515
- var _el$167 = _tmpl$46(), _el$168 = _el$167.firstChild, _el$169 = _el$168.firstChild, _el$170 = _el$169.firstChild, _el$171 = _el$170.nextSibling, _el$172 = _el$171.firstChild, _el$173 = _el$172.nextSibling, _el$174 = _el$173.firstChild;
10516
- _el$168.$$keydown = (e) => {
10823
+ var _el$172 = _tmpl$48(), _el$173 = _el$172.firstChild, _el$174 = _el$173.firstChild, _el$175 = _el$174.firstChild, _el$176 = _el$175.nextSibling, _el$177 = _el$176.firstChild, _el$178 = _el$177.nextSibling, _el$179 = _el$178.firstChild;
10824
+ _el$173.$$keydown = (e) => {
10517
10825
  if (e.key === "Enter" || e.key === " ") {
10518
10826
  e.preventDefault();
10519
10827
  toggleFolderExpanded(folder.id);
10520
10828
  }
10521
10829
  };
10522
- _el$168.$$click = () => toggleFolderExpanded(folder.id);
10523
- insert(_el$172, () => folder.name);
10524
- insert(_el$173, () => folder.items.length, _el$174);
10525
- insert(_el$171, createComponent(Show, {
10830
+ _el$173.$$click = () => toggleFolderExpanded(folder.id);
10831
+ insert(_el$177, () => folder.name);
10832
+ insert(_el$178, () => folder.items.length, _el$179);
10833
+ insert(_el$176, createComponent(Show, {
10526
10834
  get when() {
10527
10835
  return folder.summary;
10528
10836
  },
10529
10837
  get children() {
10530
- var _el$175 = _tmpl$40();
10531
- insert(_el$175, () => folder.summary);
10532
- return _el$175;
10838
+ var _el$180 = _tmpl$42();
10839
+ insert(_el$180, () => folder.summary);
10840
+ return _el$180;
10533
10841
  }
10534
10842
  }), null);
10535
- insert(_el$168, createComponent(Show, {
10843
+ insert(_el$173, createComponent(Show, {
10536
10844
  get when() {
10537
10845
  return folder.id !== UNSORTED_FOLDER.id;
10538
10846
  },
10539
10847
  get children() {
10540
- var _el$176 = _tmpl$41(), _el$177 = _el$176.firstChild, _el$178 = _el$177.nextSibling, _el$179 = _el$178.nextSibling;
10541
- _el$177.$$click = (e) => {
10848
+ var _el$181 = _tmpl$43(), _el$182 = _el$181.firstChild, _el$183 = _el$182.nextSibling, _el$184 = _el$183.nextSibling;
10849
+ _el$182.$$click = (e) => {
10542
10850
  e.stopPropagation();
10543
10851
  setEditingFolderId(folder.id);
10544
10852
  setEditingFolderName(folder.name);
10545
10853
  setEditingFolderSummary(folder.summary || "");
10546
10854
  };
10547
- _el$178.$$click = (e) => {
10855
+ _el$183.$$click = (e) => {
10548
10856
  e.stopPropagation();
10549
10857
  void handleExportFolder(folder.id, folder.name);
10550
10858
  };
10551
- _el$179.$$click = (e) => {
10859
+ _el$184.$$click = (e) => {
10552
10860
  e.stopPropagation();
10553
10861
  setDeletingFolderId(folder.id);
10554
10862
  };
10555
- createRenderEffect(() => _el$178.disabled = bookmarkExporting());
10556
- return _el$176;
10863
+ createRenderEffect(() => _el$183.disabled = bookmarkExporting());
10864
+ return _el$181;
10557
10865
  }
10558
10866
  }), null);
10559
- insert(_el$167, createComponent(Show, {
10867
+ insert(_el$172, createComponent(Show, {
10560
10868
  get when() {
10561
10869
  return deletingFolderId() === folder.id;
10562
10870
  },
10563
10871
  get children() {
10564
- var _el$180 = _tmpl$43(), _el$181 = _el$180.firstChild, _el$182 = _el$181.firstChild, _el$184 = _el$182.nextSibling;
10565
- _el$184.nextSibling;
10566
- var _el$185 = _el$181.nextSibling, _el$187 = _el$185.firstChild, _el$188 = _el$187.nextSibling;
10567
- insert(_el$181, () => folder.name, _el$184);
10568
- insert(_el$181, (() => {
10872
+ var _el$185 = _tmpl$45(), _el$186 = _el$185.firstChild, _el$187 = _el$186.firstChild, _el$189 = _el$187.nextSibling;
10873
+ _el$189.nextSibling;
10874
+ var _el$190 = _el$186.nextSibling, _el$192 = _el$190.firstChild, _el$193 = _el$192.nextSibling;
10875
+ insert(_el$186, () => folder.name, _el$189);
10876
+ insert(_el$186, (() => {
10569
10877
  var _c$6 = memo(() => folder.items.length > 0);
10570
10878
  return () => _c$6() ? ` This folder has ${folder.items.length} bookmark${folder.items.length === 1 ? "" : "s"}.` : "";
10571
10879
  })(), null);
10572
- insert(_el$185, createComponent(Show, {
10880
+ insert(_el$190, createComponent(Show, {
10573
10881
  get when() {
10574
10882
  return folder.items.length > 0;
10575
10883
  },
10576
10884
  get children() {
10577
- var _el$186 = _tmpl$42();
10578
- _el$186.$$click = () => void handleRemoveFolder(folder.id, false);
10579
- return _el$186;
10885
+ var _el$191 = _tmpl$44();
10886
+ _el$191.$$click = () => void handleRemoveFolder(folder.id, false);
10887
+ return _el$191;
10580
10888
  }
10581
- }), _el$187);
10582
- _el$187.$$click = () => void handleRemoveFolder(folder.id, true);
10583
- insert(_el$187, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
10584
- _el$188.$$click = () => setDeletingFolderId(null);
10585
- return _el$180;
10889
+ }), _el$192);
10890
+ _el$192.$$click = () => void handleRemoveFolder(folder.id, true);
10891
+ insert(_el$192, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
10892
+ _el$193.$$click = () => setDeletingFolderId(null);
10893
+ return _el$185;
10586
10894
  }
10587
10895
  }), null);
10588
- insert(_el$167, createComponent(Show, {
10896
+ insert(_el$172, createComponent(Show, {
10589
10897
  get when() {
10590
10898
  return editingFolderId() === folder.id;
10591
10899
  },
10592
10900
  get children() {
10593
- var _el$189 = _tmpl$44(), _el$190 = _el$189.firstChild, _el$191 = _el$190.firstChild, _el$192 = _el$191.nextSibling, _el$193 = _el$190.nextSibling, _el$194 = _el$193.nextSibling;
10594
- _el$191.$$input = (e) => setEditingFolderName(e.currentTarget.value);
10595
- _el$192.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
10596
- _el$193.$$click = () => void handleRenameFolder(folder.id);
10597
- _el$194.$$click = () => {
10901
+ var _el$194 = _tmpl$46(), _el$195 = _el$194.firstChild, _el$196 = _el$195.firstChild, _el$197 = _el$196.nextSibling, _el$198 = _el$195.nextSibling, _el$199 = _el$198.nextSibling;
10902
+ _el$196.$$input = (e) => setEditingFolderName(e.currentTarget.value);
10903
+ _el$197.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
10904
+ _el$198.$$click = () => void handleRenameFolder(folder.id);
10905
+ _el$199.$$click = () => {
10598
10906
  setEditingFolderId(null);
10599
10907
  setEditingFolderName("");
10600
10908
  setEditingFolderSummary("");
10601
10909
  };
10602
- createRenderEffect(() => _el$193.disabled = !editingFolderName().trim());
10603
- createRenderEffect(() => _el$191.value = editingFolderName());
10604
- createRenderEffect(() => _el$192.value = editingFolderSummary());
10605
- return _el$189;
10910
+ createRenderEffect(() => _el$198.disabled = !editingFolderName().trim());
10911
+ createRenderEffect(() => _el$196.value = editingFolderName());
10912
+ createRenderEffect(() => _el$197.value = editingFolderSummary());
10913
+ return _el$194;
10606
10914
  }
10607
10915
  }), null);
10608
- insert(_el$167, createComponent(Show, {
10916
+ insert(_el$172, createComponent(Show, {
10609
10917
  get when() {
10610
10918
  return isFolderExpanded(folder.id);
10611
10919
  },
10612
10920
  get fallback() {
10613
- return _tmpl$47();
10921
+ return _tmpl$49();
10614
10922
  },
10615
10923
  get children() {
10616
10924
  return createComponent(Show, {
@@ -10618,125 +10926,125 @@ ${contextBlock}` : contextBlock);
10618
10926
  return folder.items.length > 0;
10619
10927
  },
10620
10928
  get fallback() {
10621
- return _tmpl$48();
10929
+ return _tmpl$50();
10622
10930
  },
10623
10931
  get children() {
10624
- var _el$195 = _tmpl$45();
10625
- insert(_el$195, createComponent(For, {
10932
+ var _el$200 = _tmpl$47();
10933
+ insert(_el$200, createComponent(For, {
10626
10934
  get each() {
10627
10935
  return folder.items;
10628
10936
  },
10629
10937
  children: (bookmark) => (() => {
10630
- var _el$198 = _tmpl$55(), _el$199 = _el$198.firstChild, _el$200 = _el$199.firstChild, _el$201 = _el$200.nextSibling, _el$226 = _el$199.nextSibling, _el$227 = _el$226.firstChild, _el$228 = _el$227.nextSibling, _el$229 = _el$228.nextSibling;
10631
- _el$199.$$click = () => void createTab(bookmark.url);
10632
- insert(_el$200, () => bookmark.title || bookmark.url);
10633
- insert(_el$201, () => bookmark.url);
10634
- insert(_el$198, createComponent(Show, {
10938
+ var _el$203 = _tmpl$57(), _el$204 = _el$203.firstChild, _el$205 = _el$204.firstChild, _el$206 = _el$205.nextSibling, _el$231 = _el$204.nextSibling, _el$232 = _el$231.firstChild, _el$233 = _el$232.nextSibling, _el$234 = _el$233.nextSibling;
10939
+ _el$204.$$click = () => void createTab(bookmark.url);
10940
+ insert(_el$205, () => bookmark.title || bookmark.url);
10941
+ insert(_el$206, () => bookmark.url);
10942
+ insert(_el$203, createComponent(Show, {
10635
10943
  get when() {
10636
10944
  return bookmark.note;
10637
10945
  },
10638
10946
  get children() {
10639
- var _el$202 = _tmpl$49();
10640
- insert(_el$202, () => bookmark.note);
10641
- return _el$202;
10947
+ var _el$207 = _tmpl$51();
10948
+ insert(_el$207, () => bookmark.note);
10949
+ return _el$207;
10642
10950
  }
10643
- }), _el$226);
10644
- insert(_el$198, createComponent(Show, {
10951
+ }), _el$231);
10952
+ insert(_el$203, createComponent(Show, {
10645
10953
  get when() {
10646
10954
  return bookmark.intent || bookmark.expectedContent || (bookmark.keyFields?.length || 0) > 0 || (bookmark.agentHints && Object.keys(bookmark.agentHints).length || 0) > 0;
10647
10955
  },
10648
10956
  get children() {
10649
- var _el$203 = _tmpl$49();
10650
- insert(_el$203, createComponent(Show, {
10957
+ var _el$208 = _tmpl$51();
10958
+ insert(_el$208, createComponent(Show, {
10651
10959
  get when() {
10652
10960
  return bookmark.intent;
10653
10961
  },
10654
10962
  get children() {
10655
- var _el$204 = _tmpl$50(), _el$205 = _el$204.firstChild;
10656
- _el$205.nextSibling;
10657
- insert(_el$204, () => bookmark.intent, null);
10658
- return _el$204;
10963
+ var _el$209 = _tmpl$52(), _el$210 = _el$209.firstChild;
10964
+ _el$210.nextSibling;
10965
+ insert(_el$209, () => bookmark.intent, null);
10966
+ return _el$209;
10659
10967
  }
10660
10968
  }), null);
10661
- insert(_el$203, createComponent(Show, {
10969
+ insert(_el$208, createComponent(Show, {
10662
10970
  get when() {
10663
10971
  return bookmark.expectedContent;
10664
10972
  },
10665
10973
  get children() {
10666
- var _el$207 = _tmpl$51(), _el$208 = _el$207.firstChild;
10667
- _el$208.nextSibling;
10668
- insert(_el$207, () => bookmark.expectedContent, null);
10669
- return _el$207;
10974
+ var _el$212 = _tmpl$53(), _el$213 = _el$212.firstChild;
10975
+ _el$213.nextSibling;
10976
+ insert(_el$212, () => bookmark.expectedContent, null);
10977
+ return _el$212;
10670
10978
  }
10671
10979
  }), null);
10672
- insert(_el$203, createComponent(Show, {
10980
+ insert(_el$208, createComponent(Show, {
10673
10981
  get when() {
10674
10982
  return (bookmark.keyFields?.length || 0) > 0;
10675
10983
  },
10676
10984
  get children() {
10677
- var _el$210 = _tmpl$52(), _el$211 = _el$210.firstChild;
10678
- _el$211.nextSibling;
10679
- insert(_el$210, () => bookmark.keyFields?.join(", "), null);
10680
- return _el$210;
10985
+ var _el$215 = _tmpl$54(), _el$216 = _el$215.firstChild;
10986
+ _el$216.nextSibling;
10987
+ insert(_el$215, () => bookmark.keyFields?.join(", "), null);
10988
+ return _el$215;
10681
10989
  }
10682
10990
  }), null);
10683
- insert(_el$203, createComponent(Show, {
10991
+ insert(_el$208, createComponent(Show, {
10684
10992
  get when() {
10685
10993
  return memo(() => !!bookmark.agentHints)() && Object.keys(bookmark.agentHints).length > 0;
10686
10994
  },
10687
10995
  get children() {
10688
- var _el$213 = _tmpl$53(), _el$214 = _el$213.firstChild;
10689
- _el$214.nextSibling;
10690
- insert(_el$213, () => Object.entries(bookmark.agentHints || {}).map(([key, hint]) => `${key}: ${hint}`).join(" • "), null);
10691
- return _el$213;
10996
+ var _el$218 = _tmpl$55(), _el$219 = _el$218.firstChild;
10997
+ _el$219.nextSibling;
10998
+ insert(_el$218, () => Object.entries(bookmark.agentHints || {}).map(([key, hint]) => `${key}: ${hint}`).join(" • "), null);
10999
+ return _el$218;
10692
11000
  }
10693
11001
  }), null);
10694
- return _el$203;
11002
+ return _el$208;
10695
11003
  }
10696
- }), _el$226);
10697
- insert(_el$198, createComponent(Show, {
11004
+ }), _el$231);
11005
+ insert(_el$203, createComponent(Show, {
10698
11006
  get when() {
10699
11007
  return editingBookmarkId() === bookmark.id;
10700
11008
  },
10701
11009
  get children() {
10702
- var _el$216 = _tmpl$54(), _el$217 = _el$216.firstChild, _el$218 = _el$217.nextSibling, _el$219 = _el$218.nextSibling, _el$220 = _el$219.nextSibling, _el$221 = _el$220.nextSibling, _el$222 = _el$221.nextSibling, _el$223 = _el$222.nextSibling, _el$224 = _el$223.firstChild, _el$225 = _el$224.nextSibling;
10703
- _el$217.$$input = (e) => setEditingBookmarkTitle(e.currentTarget.value);
10704
- _el$218.$$input = (e) => setEditingBookmarkNote(e.currentTarget.value);
10705
- _el$219.$$input = (e) => setEditingBookmarkIntent(e.currentTarget.value);
10706
- _el$220.$$input = (e) => setEditingBookmarkExpectedContent(e.currentTarget.value);
10707
- _el$221.$$input = (e) => setEditingBookmarkKeyFields(e.currentTarget.value);
10708
- _el$222.$$input = (e) => setEditingBookmarkAgentHints(e.currentTarget.value);
10709
- _el$224.$$click = () => void handleUpdateBookmark(bookmark.id);
10710
- _el$225.$$click = resetBookmarkEditor;
10711
- createRenderEffect(() => _el$217.value = editingBookmarkTitle());
10712
- createRenderEffect(() => _el$218.value = editingBookmarkNote());
10713
- createRenderEffect(() => _el$219.value = editingBookmarkIntent());
10714
- createRenderEffect(() => _el$220.value = editingBookmarkExpectedContent());
10715
- createRenderEffect(() => _el$221.value = editingBookmarkKeyFields());
10716
- createRenderEffect(() => _el$222.value = editingBookmarkAgentHints());
10717
- return _el$216;
11010
+ var _el$221 = _tmpl$56(), _el$222 = _el$221.firstChild, _el$223 = _el$222.nextSibling, _el$224 = _el$223.nextSibling, _el$225 = _el$224.nextSibling, _el$226 = _el$225.nextSibling, _el$227 = _el$226.nextSibling, _el$228 = _el$227.nextSibling, _el$229 = _el$228.firstChild, _el$230 = _el$229.nextSibling;
11011
+ _el$222.$$input = (e) => setEditingBookmarkTitle(e.currentTarget.value);
11012
+ _el$223.$$input = (e) => setEditingBookmarkNote(e.currentTarget.value);
11013
+ _el$224.$$input = (e) => setEditingBookmarkIntent(e.currentTarget.value);
11014
+ _el$225.$$input = (e) => setEditingBookmarkExpectedContent(e.currentTarget.value);
11015
+ _el$226.$$input = (e) => setEditingBookmarkKeyFields(e.currentTarget.value);
11016
+ _el$227.$$input = (e) => setEditingBookmarkAgentHints(e.currentTarget.value);
11017
+ _el$229.$$click = () => void handleUpdateBookmark(bookmark.id);
11018
+ _el$230.$$click = resetBookmarkEditor;
11019
+ createRenderEffect(() => _el$222.value = editingBookmarkTitle());
11020
+ createRenderEffect(() => _el$223.value = editingBookmarkNote());
11021
+ createRenderEffect(() => _el$224.value = editingBookmarkIntent());
11022
+ createRenderEffect(() => _el$225.value = editingBookmarkExpectedContent());
11023
+ createRenderEffect(() => _el$226.value = editingBookmarkKeyFields());
11024
+ createRenderEffect(() => _el$227.value = editingBookmarkAgentHints());
11025
+ return _el$221;
10718
11026
  }
10719
- }), _el$226);
10720
- insert(_el$227, () => formatBookmarkDate(bookmark.savedAt));
10721
- _el$228.$$click = () => editingBookmarkId() === bookmark.id ? resetBookmarkEditor() : startEditingBookmark(bookmark);
10722
- insert(_el$228, () => editingBookmarkId() === bookmark.id ? "Close" : "Edit");
10723
- _el$229.$$click = () => {
11027
+ }), _el$231);
11028
+ insert(_el$232, () => formatBookmarkDate(bookmark.savedAt));
11029
+ _el$233.$$click = () => editingBookmarkId() === bookmark.id ? resetBookmarkEditor() : startEditingBookmark(bookmark);
11030
+ insert(_el$233, () => editingBookmarkId() === bookmark.id ? "Close" : "Edit");
11031
+ _el$234.$$click = () => {
10724
11032
  if (editingBookmarkId() === bookmark.id) {
10725
11033
  resetBookmarkEditor();
10726
11034
  }
10727
11035
  void removeBookmark(bookmark.id);
10728
11036
  };
10729
- createRenderEffect(() => setAttribute(_el$198, "data-bookmark-id", bookmark.id));
10730
- return _el$198;
11037
+ createRenderEffect(() => setAttribute(_el$203, "data-bookmark-id", bookmark.id));
11038
+ return _el$203;
10731
11039
  })()
10732
11040
  }));
10733
- return _el$195;
11041
+ return _el$200;
10734
11042
  }
10735
11043
  });
10736
11044
  }
10737
11045
  }), null);
10738
- createRenderEffect(() => _el$170.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
10739
- return _el$167;
11046
+ createRenderEffect(() => _el$175.classList.toggle("expanded", !!isFolderExpanded(folder.id)));
11047
+ return _el$172;
10740
11048
  })()
10741
11049
  });
10742
11050
  }
@@ -10788,7 +11096,7 @@ ${contextBlock}` : contextBlock);
10788
11096
  return recentCheckpoints().length > 0;
10789
11097
  },
10790
11098
  get fallback() {
10791
- return _tmpl$56();
11099
+ return _tmpl$58();
10792
11100
  },
10793
11101
  get children() {
10794
11102
  var _el$95 = _tmpl$12$3();
@@ -10797,22 +11105,22 @@ ${contextBlock}` : contextBlock);
10797
11105
  return recentCheckpoints();
10798
11106
  },
10799
11107
  children: (checkpoint, i) => (() => {
10800
- var _el$231 = _tmpl$58(), _el$232 = _el$231.firstChild, _el$233 = _el$232.firstChild, _el$235 = _el$232.nextSibling, _el$236 = _el$235.firstChild, _el$237 = _el$236.nextSibling, _el$238 = _el$237.nextSibling, _el$239 = _el$238.nextSibling;
10801
- insert(_el$232, createComponent(Show, {
11108
+ var _el$236 = _tmpl$60(), _el$237 = _el$236.firstChild, _el$238 = _el$237.firstChild, _el$240 = _el$237.nextSibling, _el$241 = _el$240.firstChild, _el$242 = _el$241.nextSibling, _el$243 = _el$242.nextSibling, _el$244 = _el$243.nextSibling;
11109
+ insert(_el$237, createComponent(Show, {
10802
11110
  get when() {
10803
11111
  return i() < recentCheckpoints().length - 1;
10804
11112
  },
10805
11113
  get children() {
10806
- return _tmpl$57();
11114
+ return _tmpl$59();
10807
11115
  }
10808
11116
  }), null);
10809
- insert(_el$236, () => checkpoint.name);
10810
- insert(_el$237, () => new Date(checkpoint.createdAt).toLocaleString());
10811
- _el$238.addEventListener("blur", (e) => void updateCheckpointNote(checkpoint.id, e.currentTarget.value));
10812
- _el$239.$$click = () => void restoreCheckpoint(checkpoint.id);
10813
- createRenderEffect(() => _el$233.classList.toggle("latest", !!(i() === 0)));
10814
- createRenderEffect(() => _el$238.value = checkpoint.note || "");
10815
- return _el$231;
11117
+ insert(_el$241, () => checkpoint.name);
11118
+ insert(_el$242, () => new Date(checkpoint.createdAt).toLocaleString());
11119
+ _el$243.addEventListener("blur", (e) => void updateCheckpointNote(checkpoint.id, e.currentTarget.value));
11120
+ _el$244.$$click = () => void restoreCheckpoint(checkpoint.id);
11121
+ createRenderEffect(() => _el$238.classList.toggle("latest", !!(i() === 0)));
11122
+ createRenderEffect(() => _el$243.value = checkpoint.note || "");
11123
+ return _el$236;
10816
11124
  })()
10817
11125
  }));
10818
11126
  return _el$95;
@@ -10867,12 +11175,12 @@ ${contextBlock}` : contextBlock);
10867
11175
  return history.historyState().entries;
10868
11176
  },
10869
11177
  children: (entry) => (() => {
10870
- var _el$240 = _tmpl$59(), _el$241 = _el$240.firstChild, _el$242 = _el$241.nextSibling, _el$243 = _el$242.nextSibling;
10871
- _el$240.$$click = () => createTab(entry.url);
10872
- insert(_el$241, () => entry.title || entry.url);
10873
- insert(_el$242, () => entry.url);
10874
- insert(_el$243, () => new Date(entry.visitedAt).toLocaleString());
10875
- return _el$240;
11178
+ var _el$245 = _tmpl$61(), _el$246 = _el$245.firstChild, _el$247 = _el$246.nextSibling, _el$248 = _el$247.nextSibling;
11179
+ _el$245.$$click = () => createTab(entry.url);
11180
+ insert(_el$246, () => entry.title || entry.url);
11181
+ insert(_el$247, () => entry.url);
11182
+ insert(_el$248, () => new Date(entry.visitedAt).toLocaleString());
11183
+ return _el$245;
10876
11184
  })()
10877
11185
  }), null);
10878
11186
  insert(_el$104, createComponent(Show, {
@@ -10912,11 +11220,11 @@ ${contextBlock}` : contextBlock);
10912
11220
  },
10913
11221
  get fallback() {
10914
11222
  return (() => {
10915
- var _el$244 = _tmpl$60(), _el$245 = _el$244.firstChild, _el$246 = _el$245.nextSibling, _el$247 = _el$246.nextSibling, _el$248 = _el$247.firstChild, _el$249 = _el$248.nextSibling;
10916
- _el$248.$$click = () => void window.vessel.premium.checkout(premiumState().email || void 0).catch(() => {
11223
+ var _el$249 = _tmpl$62(), _el$250 = _el$249.firstChild, _el$251 = _el$250.nextSibling, _el$252 = _el$251.nextSibling, _el$253 = _el$252.firstChild, _el$254 = _el$253.nextSibling;
11224
+ _el$253.$$click = () => void window.vessel.premium.checkout(premiumState().email || void 0).catch(() => {
10917
11225
  });
10918
- _el$249.$$click = openPremiumDetails;
10919
- return _el$244;
11226
+ _el$254.$$click = openPremiumDetails;
11227
+ return _el$249;
10920
11228
  })();
10921
11229
  },
10922
11230
  get children() {
@@ -10946,13 +11254,13 @@ ${contextBlock}` : contextBlock);
10946
11254
  return messages2();
10947
11255
  },
10948
11256
  children: (msg) => (() => {
10949
- var _el$250 = _tmpl$61();
10950
- insert(_el$250, createComponent(MarkdownMessage, {
11257
+ var _el$255 = _tmpl$63();
11258
+ insert(_el$255, createComponent(MarkdownMessage, {
10951
11259
  get content() {
10952
11260
  return msg.content;
10953
11261
  }
10954
11262
  }), null);
10955
- insert(_el$250, createComponent(Show, {
11263
+ insert(_el$255, createComponent(Show, {
10956
11264
  get when() {
10957
11265
  return memo(() => msg.role === "assistant")() ? getPremiumPromptKind(msg.content) : null;
10958
11266
  },
@@ -10965,8 +11273,8 @@ ${contextBlock}` : contextBlock);
10965
11273
  onOpenSettings: openPremiumDetails
10966
11274
  })
10967
11275
  }), null);
10968
- createRenderEffect(() => className(_el$250, `message message-${msg.role}`));
10969
- return _el$250;
11276
+ createRenderEffect(() => className(_el$255, `message message-${msg.role}`));
11277
+ return _el$255;
10970
11278
  })()
10971
11279
  }), createComponent(Show, {
10972
11280
  get when() {
@@ -10979,7 +11287,7 @@ ${contextBlock}` : contextBlock);
10979
11287
  return hasFirstChunk2();
10980
11288
  },
10981
11289
  get fallback() {
10982
- return _tmpl$62();
11290
+ return _tmpl$64();
10983
11291
  },
10984
11292
  get children() {
10985
11293
  var _el$125 = _tmpl$20$1(), _el$126 = _el$125.firstChild, _el$127 = _el$126.firstChild;
@@ -11027,22 +11335,22 @@ ${contextBlock}` : contextBlock);
11027
11335
  return runtimeState2().supervisor.pendingApprovals;
11028
11336
  },
11029
11337
  children: (approval) => (() => {
11030
- var _el$252 = _tmpl$64(), _el$253 = _el$252.firstChild, _el$254 = _el$253.nextSibling, _el$255 = _el$254.firstChild, _el$256 = _el$255.firstChild, _el$257 = _el$256.nextSibling, _el$259 = _el$255.nextSibling, _el$260 = _el$259.nextSibling, _el$261 = _el$260.firstChild, _el$262 = _el$261.nextSibling;
11031
- insert(_el$257, () => approval.name);
11032
- insert(_el$254, createComponent(Show, {
11338
+ var _el$257 = _tmpl$66(), _el$258 = _el$257.firstChild, _el$259 = _el$258.nextSibling, _el$260 = _el$259.firstChild, _el$261 = _el$260.firstChild, _el$262 = _el$261.nextSibling, _el$264 = _el$260.nextSibling, _el$265 = _el$264.nextSibling, _el$266 = _el$265.firstChild, _el$267 = _el$266.nextSibling;
11339
+ insert(_el$262, () => approval.name);
11340
+ insert(_el$259, createComponent(Show, {
11033
11341
  get when() {
11034
11342
  return approval.argsSummary;
11035
11343
  },
11036
11344
  get children() {
11037
- var _el$258 = _tmpl$63();
11038
- insert(_el$258, () => approval.argsSummary);
11039
- return _el$258;
11345
+ var _el$263 = _tmpl$65();
11346
+ insert(_el$263, () => approval.argsSummary);
11347
+ return _el$263;
11040
11348
  }
11041
- }), _el$259);
11042
- insert(_el$259, () => approval.reason);
11043
- _el$261.$$click = () => void resolveApproval(approval.id, true);
11044
- _el$262.$$click = () => void resolveApproval(approval.id, false);
11045
- return _el$252;
11349
+ }), _el$264);
11350
+ insert(_el$264, () => approval.reason);
11351
+ _el$266.$$click = () => void resolveApproval(approval.id, true);
11352
+ _el$267.$$click = () => void resolveApproval(approval.id, false);
11353
+ return _el$257;
11046
11354
  })()
11047
11355
  });
11048
11356
  }
@@ -11145,12 +11453,12 @@ ${contextBlock}` : contextBlock);
11145
11453
  return pendingQueries2();
11146
11454
  },
11147
11455
  children: (pendingPrompt, index) => (() => {
11148
- var _el$263 = _tmpl$65(), _el$264 = _el$263.firstChild, _el$265 = _el$264.nextSibling;
11149
- setAttribute(_el$264, "title", pendingPrompt);
11150
- insert(_el$264, pendingPrompt);
11151
- _el$265.$$click = () => removePendingQuery(index());
11152
- createRenderEffect(() => setAttribute(_el$265, "aria-label", `Remove queued prompt ${index() + 1}`));
11153
- return _el$263;
11456
+ var _el$268 = _tmpl$67(), _el$269 = _el$268.firstChild, _el$270 = _el$269.nextSibling;
11457
+ setAttribute(_el$269, "title", pendingPrompt);
11458
+ insert(_el$269, pendingPrompt);
11459
+ _el$270.$$click = () => removePendingQuery(index());
11460
+ createRenderEffect(() => setAttribute(_el$270, "aria-label", `Remove queued prompt ${index() + 1}`));
11461
+ return _el$268;
11154
11462
  })()
11155
11463
  }));
11156
11464
  return _el$144;
@@ -11158,52 +11466,136 @@ ${contextBlock}` : contextBlock);
11158
11466
  }), null);
11159
11467
  return _el$140;
11160
11468
  }
11469
+ }), createComponent(Show, {
11470
+ get when() {
11471
+ return chatCommandError() !== null;
11472
+ },
11473
+ get children() {
11474
+ var _el$145 = _tmpl$30(), _el$146 = _el$145.firstChild, _el$147 = _el$146.nextSibling;
11475
+ insert(_el$146, chatCommandError);
11476
+ _el$147.$$click = () => setChatCommandError(null);
11477
+ return _el$145;
11478
+ }
11479
+ }), createComponent(Show, {
11480
+ get when() {
11481
+ return slashSuggestions().length > 0;
11482
+ },
11483
+ get children() {
11484
+ var _el$148 = _tmpl$31();
11485
+ insert(_el$148, createComponent(For, {
11486
+ get each() {
11487
+ return slashSuggestions();
11488
+ },
11489
+ children: (kit, index) => (() => {
11490
+ var _el$271 = _tmpl$68(), _el$272 = _el$271.firstChild;
11491
+ _el$272.firstChild;
11492
+ var _el$274 = _el$272.nextSibling, _el$275 = _el$274.firstChild, _el$276 = _el$275.nextSibling;
11493
+ _el$271.$$mousedown = (event) => {
11494
+ event.preventDefault();
11495
+ applySkillSuggestion(kit);
11496
+ };
11497
+ insert(_el$272, () => getSkillCommandTokens(kit)[0], null);
11498
+ insert(_el$275, () => kit.name);
11499
+ insert(_el$276, () => kit.description);
11500
+ createRenderEffect((_p$) => {
11501
+ var _v$30 = !!(index() === slashSuggestionIndex()), _v$31 = index() === slashSuggestionIndex();
11502
+ _v$30 !== _p$.e && _el$271.classList.toggle("active", _p$.e = _v$30);
11503
+ _v$31 !== _p$.t && setAttribute(_el$271, "aria-selected", _p$.t = _v$31);
11504
+ return _p$;
11505
+ }, {
11506
+ e: void 0,
11507
+ t: void 0
11508
+ });
11509
+ return _el$271;
11510
+ })()
11511
+ }));
11512
+ return _el$148;
11513
+ }
11161
11514
  }), (() => {
11162
- var _el$145 = _tmpl$30(), _el$146 = _el$145.firstChild, _el$147 = _el$146.nextSibling;
11163
- _el$146.$$keydown = (e) => {
11515
+ var _el$149 = _tmpl$32(), _el$150 = _el$149.firstChild, _el$151 = _el$150.firstChild, _el$152 = _el$150.nextSibling;
11516
+ insert(_el$150, createComponent(Show, {
11517
+ get when() {
11518
+ return recognizedSkillInputParts();
11519
+ },
11520
+ children: (parts) => (() => {
11521
+ var _el$277 = _tmpl$69(), _el$278 = _el$277.firstChild;
11522
+ insert(_el$277, () => parts().leading, _el$278);
11523
+ insert(_el$278, () => parts().command);
11524
+ insert(_el$277, () => parts().rest || " ", null);
11525
+ return _el$277;
11526
+ })()
11527
+ }), _el$151);
11528
+ _el$151.$$keydown = (e) => {
11529
+ if (slashSuggestions().length > 0) {
11530
+ if (e.key === "ArrowDown") {
11531
+ e.preventDefault();
11532
+ moveSlashSuggestion(1);
11533
+ return;
11534
+ }
11535
+ if (e.key === "ArrowUp") {
11536
+ e.preventDefault();
11537
+ moveSlashSuggestion(-1);
11538
+ return;
11539
+ }
11540
+ if (e.key === "Enter" || e.key === "Tab") {
11541
+ e.preventDefault();
11542
+ applyActiveSkillSuggestion();
11543
+ return;
11544
+ }
11545
+ }
11164
11546
  if (e.key === "Enter" && !e.shiftKey) {
11165
11547
  e.preventDefault();
11166
11548
  void handleChatSend();
11167
11549
  }
11168
11550
  };
11169
- _el$146.$$input = (e) => setChatInput(e.currentTarget.value);
11551
+ _el$151.$$input = (e) => {
11552
+ setChatInput(e.currentTarget.value);
11553
+ if (chatCommandError()) setChatCommandError(null);
11554
+ if (e.currentTarget.value.startsWith("/")) {
11555
+ void loadInstalledSkillKits();
11556
+ }
11557
+ };
11170
11558
  var _ref$2 = chatInputRef;
11171
- typeof _ref$2 === "function" ? use(_ref$2, _el$146) : chatInputRef = _el$146;
11172
- _el$147.$$click = () => void handleChatSend();
11173
- insert(_el$147, () => isStreaming2() ? "Queue" : "Send");
11559
+ typeof _ref$2 === "function" ? use(_ref$2, _el$151) : chatInputRef = _el$151;
11560
+ _el$152.$$click = () => void handleChatSend();
11561
+ insert(_el$152, () => isStreaming2() ? "Queue" : "Send");
11174
11562
  createRenderEffect((_p$) => {
11175
- var _v$1 = isStreaming2() ? "Send now to queue the next prompt..." : "Ask anything...", _v$10 = !chatInput().trim();
11176
- _v$1 !== _p$.e && setAttribute(_el$146, "placeholder", _p$.e = _v$1);
11177
- _v$10 !== _p$.t && (_el$147.disabled = _p$.t = _v$10);
11563
+ var _v$1 = !!(recognizedSkillInputParts() !== null), _v$10 = !!(recognizedSkillInputParts() !== null), _v$11 = isStreaming2() ? "Send now to queue the next prompt..." : "Ask anything or run /skill-id...", _v$12 = !chatInput().trim();
11564
+ _v$1 !== _p$.e && _el$150.classList.toggle("skill-command-registered", _p$.e = _v$1);
11565
+ _v$10 !== _p$.t && _el$151.classList.toggle("skill-command-registered", _p$.t = _v$10);
11566
+ _v$11 !== _p$.a && setAttribute(_el$151, "placeholder", _p$.a = _v$11);
11567
+ _v$12 !== _p$.o && (_el$152.disabled = _p$.o = _v$12);
11178
11568
  return _p$;
11179
11569
  }, {
11180
11570
  e: void 0,
11181
- t: void 0
11571
+ t: void 0,
11572
+ a: void 0,
11573
+ o: void 0
11182
11574
  });
11183
- createRenderEffect(() => _el$146.value = chatInput());
11184
- return _el$145;
11575
+ createRenderEffect(() => _el$151.value = chatInput());
11576
+ return _el$149;
11185
11577
  })()];
11186
11578
  }
11187
11579
  }), null);
11188
11580
  createRenderEffect((_p$) => {
11189
- var _v$11 = sidebarDetached2() ? "100%" : `${sidebarWidth2()}px`, _v$12 = !!(sidebarTab() === "supervisor"), _v$13 = sidebarTab() === "supervisor", _v$14 = !!(sidebarTab() === "bookmarks"), _v$15 = sidebarTab() === "bookmarks", _v$16 = !!(sidebarTab() === "checkpoints"), _v$17 = sidebarTab() === "checkpoints", _v$18 = !!(sidebarTab() === "chat"), _v$19 = sidebarTab() === "chat", _v$20 = !!(sidebarTab() === "automation"), _v$21 = sidebarTab() === "automation", _v$22 = !!(sidebarTab() === "history"), _v$23 = sidebarTab() === "history", _v$24 = !!(sidebarTab() === "diff"), _v$25 = sidebarTab() === "diff", _v$26 = !!(sidebarTab() === "research"), _v$27 = sidebarTab() === "research";
11190
- _v$11 !== _p$.e && setStyleProperty(_el$9, "width", _p$.e = _v$11);
11191
- _v$12 !== _p$.t && _el$15.classList.toggle("active", _p$.t = _v$12);
11192
- _v$13 !== _p$.a && setAttribute(_el$15, "aria-selected", _p$.a = _v$13);
11193
- _v$14 !== _p$.o && _el$18.classList.toggle("active", _p$.o = _v$14);
11194
- _v$15 !== _p$.i && setAttribute(_el$18, "aria-selected", _p$.i = _v$15);
11195
- _v$16 !== _p$.n && _el$19.classList.toggle("active", _p$.n = _v$16);
11196
- _v$17 !== _p$.s && setAttribute(_el$19, "aria-selected", _p$.s = _v$17);
11197
- _v$18 !== _p$.h && _el$20.classList.toggle("active", _p$.h = _v$18);
11198
- _v$19 !== _p$.r && setAttribute(_el$20, "aria-selected", _p$.r = _v$19);
11199
- _v$20 !== _p$.d && _el$21.classList.toggle("active", _p$.d = _v$20);
11200
- _v$21 !== _p$.l && setAttribute(_el$21, "aria-selected", _p$.l = _v$21);
11201
- _v$22 !== _p$.u && _el$22.classList.toggle("active", _p$.u = _v$22);
11202
- _v$23 !== _p$.c && setAttribute(_el$22, "aria-selected", _p$.c = _v$23);
11203
- _v$24 !== _p$.w && _el$23.classList.toggle("active", _p$.w = _v$24);
11204
- _v$25 !== _p$.m && setAttribute(_el$23, "aria-selected", _p$.m = _v$25);
11205
- _v$26 !== _p$.f && _el$24.classList.toggle("active", _p$.f = _v$26);
11206
- _v$27 !== _p$.y && setAttribute(_el$24, "aria-selected", _p$.y = _v$27);
11581
+ var _v$13 = sidebarDetached2() ? "100%" : `${sidebarWidth2()}px`, _v$14 = !!(sidebarTab() === "supervisor"), _v$15 = sidebarTab() === "supervisor", _v$16 = !!(sidebarTab() === "bookmarks"), _v$17 = sidebarTab() === "bookmarks", _v$18 = !!(sidebarTab() === "checkpoints"), _v$19 = sidebarTab() === "checkpoints", _v$20 = !!(sidebarTab() === "chat"), _v$21 = sidebarTab() === "chat", _v$22 = !!(sidebarTab() === "automation"), _v$23 = sidebarTab() === "automation", _v$24 = !!(sidebarTab() === "history"), _v$25 = sidebarTab() === "history", _v$26 = !!(sidebarTab() === "diff"), _v$27 = sidebarTab() === "diff", _v$28 = !!(sidebarTab() === "research"), _v$29 = sidebarTab() === "research";
11582
+ _v$13 !== _p$.e && setStyleProperty(_el$9, "width", _p$.e = _v$13);
11583
+ _v$14 !== _p$.t && _el$15.classList.toggle("active", _p$.t = _v$14);
11584
+ _v$15 !== _p$.a && setAttribute(_el$15, "aria-selected", _p$.a = _v$15);
11585
+ _v$16 !== _p$.o && _el$18.classList.toggle("active", _p$.o = _v$16);
11586
+ _v$17 !== _p$.i && setAttribute(_el$18, "aria-selected", _p$.i = _v$17);
11587
+ _v$18 !== _p$.n && _el$19.classList.toggle("active", _p$.n = _v$18);
11588
+ _v$19 !== _p$.s && setAttribute(_el$19, "aria-selected", _p$.s = _v$19);
11589
+ _v$20 !== _p$.h && _el$20.classList.toggle("active", _p$.h = _v$20);
11590
+ _v$21 !== _p$.r && setAttribute(_el$20, "aria-selected", _p$.r = _v$21);
11591
+ _v$22 !== _p$.d && _el$21.classList.toggle("active", _p$.d = _v$22);
11592
+ _v$23 !== _p$.l && setAttribute(_el$21, "aria-selected", _p$.l = _v$23);
11593
+ _v$24 !== _p$.u && _el$22.classList.toggle("active", _p$.u = _v$24);
11594
+ _v$25 !== _p$.c && setAttribute(_el$22, "aria-selected", _p$.c = _v$25);
11595
+ _v$26 !== _p$.w && _el$23.classList.toggle("active", _p$.w = _v$26);
11596
+ _v$27 !== _p$.m && setAttribute(_el$23, "aria-selected", _p$.m = _v$27);
11597
+ _v$28 !== _p$.f && _el$24.classList.toggle("active", _p$.f = _v$28);
11598
+ _v$29 !== _p$.y && setAttribute(_el$24, "aria-selected", _p$.y = _v$29);
11207
11599
  return _p$;
11208
11600
  }, {
11209
11601
  e: void 0,
@@ -11228,7 +11620,7 @@ ${contextBlock}` : contextBlock);
11228
11620
  }
11229
11621
  });
11230
11622
  };
11231
- delegateEvents(["click", "pointerdown", "input", "keydown"]);
11623
+ delegateEvents(["click", "pointerdown", "input", "keydown", "mousedown"]);
11232
11624
  var _tmpl$$9 = /* @__PURE__ */ template(`<div class=devtools-console>`), _tmpl$2$9 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for console output... Console monitoring activates when an agent uses devtools.`), _tmpl$3$8 = /* @__PURE__ */ template(`<div><span></span><span class=console-time></span><span class=console-text></span><span class=console-source>`), _tmpl$4$7 = /* @__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$7 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for network requests... Network monitoring activates when an agent uses devtools.`), _tmpl$6$7 = /* @__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$5 = /* @__PURE__ */ template(`<div class=devtools-activity>`), _tmpl$8$4 = /* @__PURE__ */ template(`<div class=devtools-empty>Waiting for agent devtools activity...`), _tmpl$9$3 = /* @__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$2 = /* @__PURE__ */ template(`<span class="devtools-tab-badge error">`), _tmpl$1$2 = /* @__PURE__ */ template(`<span class="devtools-tab-badge count">`), _tmpl$10$2 = /* @__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$2 = /* @__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$2 = /* @__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>`);
11233
11625
  function statusClass(status) {
11234
11626
  if (status == null) return "pending";