@quanta-intellect/vessel-browser 0.1.81 → 0.1.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -5
- package/out/main/index.js +173 -11
- package/out/preload/index.js +2 -0
- package/out/renderer/assets/{index-DOJa9vgV.js → index-DRzS5XLW.js} +254 -193
- package/out/renderer/index.html +1 -1
- package/package.json +1 -1
|
@@ -2752,6 +2752,7 @@ function useBookmarks() {
|
|
|
2752
2752
|
removeBookmark: (id) => window.vessel.bookmarks.removeBookmark(id),
|
|
2753
2753
|
exportHtml: (options) => window.vessel.bookmarks.exportHtml(options),
|
|
2754
2754
|
exportJson: () => window.vessel.bookmarks.exportJson(),
|
|
2755
|
+
exportFolderHtml: (folderId, options) => window.vessel.bookmarks.exportFolderHtml(folderId, options),
|
|
2755
2756
|
createFolder: (name) => window.vessel.bookmarks.createFolder(name),
|
|
2756
2757
|
createFolderWithSummary: (name, summary) => window.vessel.bookmarks.createFolderWithSummary(name, summary),
|
|
2757
2758
|
removeFolder: (id, deleteContents) => window.vessel.bookmarks.removeFolder(id, deleteContents),
|
|
@@ -2950,7 +2951,7 @@ const SEARCH_ENGINE_PRESETS = {
|
|
|
2950
2951
|
ecosia: { label: "Ecosia", url: "https://www.ecosia.org/search?q=" },
|
|
2951
2952
|
kagi: { label: "Kagi", url: "https://kagi.com/search?q=" }
|
|
2952
2953
|
};
|
|
2953
|
-
var _tmpl$$l = /* @__PURE__ */ template(`<div class=private-badge title="Private Browsing - history and cookies are not saved"><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11zM5.5 7a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zm3.5 3.5c0-1-1.5-2-2.5-2s-2.5 1-2.5 2"></path></svg><span>Private`), _tmpl$2$k = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z">`), _tmpl$3$h = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.5>`), _tmpl$4$h = /* @__PURE__ */ template(`<div class=security-indicator-wrapper><button>`), _tmpl$5$d = /* @__PURE__ */ template(`<div id=address-autocomplete class=autocomplete-dropdown role=listbox>`), _tmpl$6$c = /* @__PURE__ */ template(`<div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text>`), _tmpl$7$b = /* @__PURE__ */ template(`<button class="agent-status-badge recent"title="Open the What Changed timeline"style=cursor:pointer;font-size:11px><span class=agent-status-dot aria-hidden=true style=background:#f59e0b></span><span class=agent-status-text>What Changed?`), _tmpl$8$8 = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$9$6 = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Recent detections`), _tmpl$0$5 = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>Compared with your last visit</span><span class=page-diff-burst-meta>Previous snapshot from </span></div><div style=display:flex;gap:8px;align-items:center><button class=nav-btn title="Open the full What Changed timeline"style="height:24px;min-width:auto;padding:0 8px">Timeline</button><button class=page-diff-popup-close>×`), _tmpl$1$5 = /* @__PURE__ */ template(`<svg><path d="M3 3 L11 3 L11 9 Q7 13 3 9 Z"fill=none stroke=currentColor stroke-width=1.2 stroke-linejoin=round></svg>`, false, true, false), _tmpl$10$5 = /* @__PURE__ */ template(`<svg><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.4 stroke-linecap=round></svg>`, false, true, false), _tmpl$11$5 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1>`), _tmpl$12$5 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round>`), _tmpl$13$4 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$14$4 = /* @__PURE__ */ template(`<button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2>`), _tmpl$15$4 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Clear Data">`), _tmpl$16$3 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip=Settings><svg width=14 height=14 viewBox="0 0 14 14"><circle cx=7 cy=7 r=2 fill=none stroke=currentColor stroke-width=1.2></circle><path d="M7 1v2M7 11v2M1 7h2M11 7h2M2.8 2.8l1.4 1.4M9.8 9.8l1.4 1.4M11.2 2.8l-1.4 1.4M4.2 9.8l-1.4 1.4"stroke=currentColor stroke-width=1 stroke-linecap=round>`), _tmpl$17$3 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"autocomplete=off aria-autocomplete=list aria-controls=address-autocomplete></form></div><div class=toolbar-actions><button class=nav-btn><svg width=14 height=14 viewBox="0 0 14 14">`), _tmpl$18$3 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><circle cx=7 cy=8 r=0.8 fill=white>`), _tmpl$19$3 = /* @__PURE__ */ template(`<div role=option><span class=autocomplete-icon></span><span class=autocomplete-text><span class=autocomplete-title></span><span class=autocomplete-url>`), _tmpl$20$
|
|
2954
|
+
var _tmpl$$l = /* @__PURE__ */ template(`<div class=private-badge title="Private Browsing - history and cookies are not saved"><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11zM5.5 7a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zm3.5 3.5c0-1-1.5-2-2.5-2s-2.5 1-2.5 2"></path></svg><span>Private`), _tmpl$2$k = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z">`), _tmpl$3$h = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.5>`), _tmpl$4$h = /* @__PURE__ */ template(`<div class=security-indicator-wrapper><button>`), _tmpl$5$d = /* @__PURE__ */ template(`<div id=address-autocomplete class=autocomplete-dropdown role=listbox>`), _tmpl$6$c = /* @__PURE__ */ template(`<div><span class=agent-status-dot aria-hidden=true></span><span class=agent-status-text>`), _tmpl$7$b = /* @__PURE__ */ template(`<button class="agent-status-badge recent"title="Open the What Changed timeline"style=cursor:pointer;font-size:11px><span class=agent-status-dot aria-hidden=true style=background:#f59e0b></span><span class=agent-status-text>What Changed?`), _tmpl$8$8 = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$9$6 = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Recent detections`), _tmpl$0$5 = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>Compared with your last visit</span><span class=page-diff-burst-meta>Previous snapshot from </span></div><div style=display:flex;gap:8px;align-items:center><button class=nav-btn title="Open the full What Changed timeline"style="height:24px;min-width:auto;padding:0 8px">Timeline</button><button class=page-diff-popup-close>×`), _tmpl$1$5 = /* @__PURE__ */ template(`<svg><path d="M3 3 L11 3 L11 9 Q7 13 3 9 Z"fill=none stroke=currentColor stroke-width=1.2 stroke-linejoin=round></svg>`, false, true, false), _tmpl$10$5 = /* @__PURE__ */ template(`<svg><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.4 stroke-linecap=round></svg>`, false, true, false), _tmpl$11$5 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1>`), _tmpl$12$5 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round>`), _tmpl$13$4 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$14$4 = /* @__PURE__ */ template(`<button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2>`), _tmpl$15$4 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Clear Data">`), _tmpl$16$3 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip=Settings><svg width=14 height=14 viewBox="0 0 14 14"><circle cx=7 cy=7 r=2 fill=none stroke=currentColor stroke-width=1.2></circle><path d="M7 1v2M7 11v2M1 7h2M11 7h2M2.8 2.8l1.4 1.4M9.8 9.8l1.4 1.4M11.2 2.8l-1.4 1.4M4.2 9.8l-1.4 1.4"stroke=currentColor stroke-width=1 stroke-linecap=round>`), _tmpl$17$3 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"autocomplete=off aria-autocomplete=list aria-controls=address-autocomplete></form></div><div class=toolbar-actions><button class=nav-btn><svg width=14 height=14 viewBox="0 0 14 14">`), _tmpl$18$3 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><circle cx=7 cy=8 r=0.8 fill=white>`), _tmpl$19$3 = /* @__PURE__ */ template(`<div role=option><span class=autocomplete-icon></span><span class=autocomplete-text><span class=autocomplete-title></span><span class=autocomplete-url>`), _tmpl$20$3 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$21$2 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-section>`), _tmpl$22$2 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-part><span>`), _tmpl$23$2 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$24$2 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$25$2 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$26$2 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$27$2 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$28$2 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><div class=page-diff-badges><span class=page-diff-kind></span><span class=page-diff-section></span></div><span class=page-diff-summary>`), _tmpl$29$2 = /* @__PURE__ */ template(`<li>`);
|
|
2954
2955
|
const AddressBar = (props) => {
|
|
2955
2956
|
const {
|
|
2956
2957
|
activeTab,
|
|
@@ -3428,7 +3429,7 @@ const AddressBar = (props) => {
|
|
|
3428
3429
|
return pageDiff().recentBursts;
|
|
3429
3430
|
},
|
|
3430
3431
|
children: (burst, i) => (() => {
|
|
3431
|
-
var _el$55 = _tmpl$20$
|
|
3432
|
+
var _el$55 = _tmpl$20$3(), _el$56 = _el$55.firstChild, _el$57 = _el$56.nextSibling;
|
|
3432
3433
|
insert(_el$56, (() => {
|
|
3433
3434
|
var _c$2 = memo(() => i() === 0);
|
|
3434
3435
|
return () => _c$2() ? "Latest" : formatRelativeTime(burst.detectedAt);
|
|
@@ -6538,7 +6539,7 @@ function renderKitPrompt(kit, values) {
|
|
|
6538
6539
|
(_, key) => values[key] ?? ""
|
|
6539
6540
|
);
|
|
6540
6541
|
}
|
|
6541
|
-
var _tmpl$$c = /* @__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$c = /* @__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$b = /* @__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$8 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$8 = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$8 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$7 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$5 = /* @__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$4 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$4 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$4 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$4 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date & time</label><input class=kit-form-input type=datetime-local>`), _tmpl$13$3 = /* @__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$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$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$16$2 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$18$2 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$
|
|
6542
|
+
var _tmpl$$c = /* @__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$c = /* @__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$b = /* @__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$8 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Scheduled</span><span class=kit-list-count>`), _tmpl$6$8 = /* @__PURE__ */ template(`<div class=kit-sched-list>`), _tmpl$7$8 = /* @__PURE__ */ template(`<div class=kit-sched-section><span>Recent Activity</span><span class=kit-list-count>`), _tmpl$8$7 = /* @__PURE__ */ template(`<div class=kit-activity-list>`), _tmpl$9$5 = /* @__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$4 = /* @__PURE__ */ template(`<p class=kit-form-desc>`), _tmpl$1$4 = /* @__PURE__ */ template(`<div class=kit-form-fields>`), _tmpl$10$4 = /* @__PURE__ */ template(`<p class=kit-form-estimate>Estimated run time: ~<!> min`), _tmpl$11$4 = /* @__PURE__ */ template(`<button class="agent-primary-button kit-run-btn"type=button>`), _tmpl$12$4 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Date & time</label><input class=kit-form-input type=datetime-local>`), _tmpl$13$3 = /* @__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$3 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label class=kit-form-label>Day</label><select class=kit-form-input>`), _tmpl$15$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$16$2 = /* @__PURE__ */ template(`<p class=kit-schedule-error>`), _tmpl$17$2 = /* @__PURE__ */ template(`<div class=kit-schedule-form><div class=kit-schedule-types></div><p class=kit-schedule-note>Schedules run only while Vessel is open. Missed runs are skipped.</p><button class="agent-primary-button kit-schedule-btn"type=button>`), _tmpl$18$2 = /* @__PURE__ */ template(`<div class=kit-schedule-section><label class=kit-schedule-toggle><input type=checkbox>Schedule for later`), _tmpl$19$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Run at</label><input type=datetime-local class="kit-form-input kit-schedule-time">`), _tmpl$20$2 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Day</label><select class="kit-form-input kit-schedule-time">`), _tmpl$21$1 = /* @__PURE__ */ template(`<div class=kit-schedule-row><label>Time</label><input type=time class="kit-form-input kit-schedule-time">`), _tmpl$22$1 = /* @__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$1 = /* @__PURE__ */ template(`<section class=automation-panel>`), _tmpl$24$1 = /* @__PURE__ */ template(`<div class=kit-card-meta>~<!> min`), _tmpl$25$1 = /* @__PURE__ */ template(`<button class=kit-remove-btn type=button>×`), _tmpl$26$1 = /* @__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$1 = /* @__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$1 = /* @__PURE__ */ template(`<div class=kit-sched-next>Next: `), _tmpl$29$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$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>`);
|
|
6542
6543
|
const ICON_MAP = {
|
|
6543
6544
|
BookOpen: book_open_default,
|
|
6544
6545
|
Tag: tag_default,
|
|
@@ -7336,7 +7337,7 @@ const AutomationTab = (props) => {
|
|
|
7336
7337
|
return editType() === "weekly";
|
|
7337
7338
|
},
|
|
7338
7339
|
get children() {
|
|
7339
|
-
var _el$63 = _tmpl$20$
|
|
7340
|
+
var _el$63 = _tmpl$20$2(), _el$64 = _el$63.firstChild, _el$65 = _el$64.nextSibling;
|
|
7340
7341
|
_el$65.addEventListener("change", (e) => setEditDayOfWeek(Number(e.currentTarget.value)));
|
|
7341
7342
|
insert(_el$65, createComponent(For, {
|
|
7342
7343
|
each: DAY_NAMES,
|
|
@@ -7508,7 +7509,7 @@ const PageDiffTimeline = () => {
|
|
|
7508
7509
|
})();
|
|
7509
7510
|
};
|
|
7510
7511
|
const vesselLogo = "" + new URL("vessel-logo-transparent-IT25qr-Z.png", import.meta.url).href;
|
|
7511
|
-
var _tmpl$$a = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$a = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$9 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$9 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$5$6 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$6$6 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$7$6 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$8$5 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$9$3 = /* @__PURE__ */ template(`<div class=bookmark-export-message>`), _tmpl$0$3 = /* @__PURE__ */ template(`<div class=bookmark-save-body><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Import HTML</button><button class=bookmark-secondary-button type=button>Import JSON`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$10$3 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-export-card><div><div class=bookmark-panel-title>Export</div><div class=bookmark-panel-subtitle>Save browser-ready HTML or a full Vessel archive</div></div><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Browser HTML</button><button class=bookmark-secondary-button type=button>HTML + notes</button><button class=bookmark-secondary-button type=button>Vessel JSON</button></div></div><div class=bookmark-import-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Import Bookmarks</span><span class=bookmark-save-toggle-subtitle>Import from HTML or Vessel JSON</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$11$3 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$12$3 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><textarea class=agent-textarea rows=2 placeholder="Optional note for this checkpoint"></textarea><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$13$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$14$2 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><div class=history-panel-actions><button class=history-clear-btn>Clear</button><button class=history-clear-btn>Export HTML</button><button class=history-clear-btn>Export JSON</button><button class=history-clear-btn>Import</button></div></div><div class=history-list>`), _tmpl$15$2 = /* @__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$16$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$17$1 = /* @__PURE__ */ template(`<span>`), _tmpl$18$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$19$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$20 = /* @__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$21 = /* @__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$22 = /* @__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$23 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$24 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$25 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$26 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$27 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$28 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$29 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button></div><div class=sidebar-messages><div>`), _tmpl$30 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$31 = /* @__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$32 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$33 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$34 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$35 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$36 = /* @__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$37 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$38 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$39 = /* @__PURE__ */ template(`<div class=bookmark-folder-actions><button class=bookmark-ghost-button type=button>Rename</button><button class="bookmark-ghost-button danger"type=button>Delete`), _tmpl$40 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$41 = /* @__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$42 = /* @__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$43 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$44 = /* @__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$45 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$46 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$47 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$48 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$49 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$50 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$51 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$52 = /* @__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$53 = /* @__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$54 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$55 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$56 = /* @__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$57 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$58 = /* @__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$59 = /* @__PURE__ */ template(`<div>`), _tmpl$60 = /* @__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$61 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$62 = /* @__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$63 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
|
|
7512
|
+
var _tmpl$$a = /* @__PURE__ */ template(`<div class="message-content markdown-content">`), _tmpl$2$a = /* @__PURE__ */ template(`<div class=premium-inline-offer><div class=premium-inline-kicker>Vessel Premium</div><div class=premium-inline-title></div><p class=premium-inline-copy></p><div class=premium-inline-actions><button class="agent-primary-button premium-inline-primary"type=button>Start 7-day free trial — $5.99/mo after</button><button class="agent-control-button premium-inline-secondary"type=button>View details`), _tmpl$3$9 = /* @__PURE__ */ template(`<span class=sidebar-tab-badge>`), _tmpl$4$9 = /* @__PURE__ */ template(`<button class=agent-primary-button type=button>Undo last action`), _tmpl$5$6 = /* @__PURE__ */ template(`<div class=agent-section-title>Pending approvals`), _tmpl$6$6 = /* @__PURE__ */ template(`<button class=agent-section-toggle type=button>`), _tmpl$7$6 = /* @__PURE__ */ template(`<section class=agent-panel><div class=agent-panel-header><div><div class=agent-panel-title>Supervisor</div><div class=agent-panel-subtitle></div></div><span class=agent-status-pill></span></div><div class=agent-panel-controls><button class=agent-control-button type=button></button><button class=agent-control-button type=button>Restore session</button></div><div class=agent-muted></div><div class=agent-section-header><div class=agent-section-title>Recent actions`), _tmpl$8$5 = /* @__PURE__ */ template(`<span class=bookmark-status-pill>Saved`), _tmpl$9$3 = /* @__PURE__ */ template(`<div class=bookmark-export-message>`), _tmpl$0$3 = /* @__PURE__ */ template(`<div class=bookmark-save-body><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Import HTML</button><button class=bookmark-secondary-button type=button>Import JSON`), _tmpl$1$3 = /* @__PURE__ */ template(`<div class=bookmark-save-card><div class=bookmark-current-title></div><div class=bookmark-current-url></div><div class=bookmark-save-controls><button class=bookmark-primary-button type=button>Save page</button></div><textarea class=bookmark-note-input placeholder="Optional note about why this matters"rows=2></textarea><textarea class=bookmark-note-input placeholder="Intent: what is this page for?"rows=1></textarea><textarea class=bookmark-note-input placeholder="Expected content: what should be here?"rows=1></textarea><input class=bookmark-input placeholder="Key fields (comma-separated)"><textarea class=bookmark-note-input placeholder="Agent hints (one key:value per line)"rows=2>`), _tmpl$10$3 = /* @__PURE__ */ template(`<section class=bookmark-panel><div class=bookmark-panel-header><div><div class=bookmark-panel-title>Bookmarks</div><div class=bookmark-panel-subtitle></div></div></div><input class="bookmark-input bookmark-search-input"placeholder="Search titles, URLs, notes, and folders"><div class=bookmark-export-card><div><div class=bookmark-panel-title>Export</div><div class=bookmark-panel-subtitle>Save browser-ready HTML or a full Vessel archive</div></div><div class=bookmark-export-actions><button class=bookmark-secondary-button type=button>Browser HTML</button><button class=bookmark-secondary-button type=button>HTML + notes</button><button class=bookmark-secondary-button type=button>Vessel JSON</button></div></div><div class=bookmark-import-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Import Bookmarks</span><span class=bookmark-save-toggle-subtitle>Import from HTML or Vessel JSON</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><div class=bookmark-save-shell><button class=bookmark-save-toggle type=button><span class=bookmark-save-toggle-copy><span class=bookmark-save-toggle-title>Save Current Page</span><span class=bookmark-save-toggle-subtitle>Manual bookmark save options</span></span><span class=bookmark-save-toggle-caret aria-hidden=true>▾</span></button></div><form class=bookmark-folder-create><div class=bookmark-folder-form-fields><input class=bookmark-input placeholder="Create a folder"><input class=bookmark-input placeholder="Optional one-line summary"></div><button class=bookmark-secondary-button type=submit>New folder</button></form><div class=bookmark-folder-list>`), _tmpl$11$3 = /* @__PURE__ */ template(`<div class=checkpoint-timeline>`), _tmpl$12$3 = /* @__PURE__ */ template(`<section class="agent-panel checkpoint-panel"><div class=agent-panel-header><div><div class=agent-panel-title>Checkpoints</div><div class=agent-panel-subtitle></div></div></div><div class=agent-panel-body><div class=agent-checkpoint-row><input class=agent-input placeholder="Checkpoint name"><textarea class=agent-textarea rows=2 placeholder="Optional note for this checkpoint"></textarea><button class=agent-primary-button type=button>Save checkpoint</button></div><div class=agent-section-title>Recent checkpoints`), _tmpl$13$2 = /* @__PURE__ */ template(`<p class=history-empty>No browsing history yet.`), _tmpl$14$2 = /* @__PURE__ */ template(`<div class=history-panel><div class=history-panel-header><span class=history-panel-title>Browsing History</span><div class=history-panel-actions><button class=history-clear-btn>Clear</button><button class=history-clear-btn>Export HTML</button><button class=history-clear-btn>Export JSON</button><button class=history-clear-btn>Import</button></div></div><div class=history-list>`), _tmpl$15$2 = /* @__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$16$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$17$1 = /* @__PURE__ */ template(`<span>`), _tmpl$18$1 = /* @__PURE__ */ template(`<div><div class=streaming-status><span class=streaming-pulse aria-hidden=true></span><span>Generating`), _tmpl$19$1 = /* @__PURE__ */ template(`<div class="message message-assistant"><div class=message-content>`), _tmpl$20$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$21 = /* @__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$22 = /* @__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$23 = /* @__PURE__ */ template(`<div class=chat-actions>`), _tmpl$24 = /* @__PURE__ */ template(`<div class=highlight-nav><button class=highlight-nav-btn type=button title="Previous highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M8 10L4 6l4-4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=highlight-nav-label type=button title="Go to current highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><circle cx=6 cy=6 r=3 fill="rgba(196, 160, 90, 0.6)"stroke="rgba(196, 160, 90, 0.9)"stroke-width=1></circle></svg></button><button class=highlight-nav-btn type=button title="Next highlight"><svg width=12 height=12 viewBox="0 0 12 12"fill=none aria-hidden=true><path d="M4 2l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`), _tmpl$25 = /* @__PURE__ */ template(`<button class=chat-queue-clear type=button>Clear queue`), _tmpl$26 = /* @__PURE__ */ template(`<div class=chat-queue-list>`), _tmpl$27 = /* @__PURE__ */ template(`<div class=chat-queue-status><div class=chat-queue-status-row><span>`), _tmpl$28 = /* @__PURE__ */ template(`<div class=sidebar-input-area><textarea class=sidebar-input rows=2></textarea><button class=sidebar-send>`), _tmpl$29 = /* @__PURE__ */ template(`<div class=sidebar><div class=sidebar-resize-handle></div><div class=sidebar-header><div class=sidebar-brand><img class=sidebar-logo alt=Vessel><span class=sidebar-brand-text>Vessel Browser</span></div><div class=sidebar-header-actions><button class=sidebar-clear title="Clear chat">Clear</button><button class=sidebar-close title="Close AI chat (Esc)"aria-label="Close AI chat"><svg width=14 height=14 viewBox="0 0 14 14"aria-hidden=true><path d="M3.5 3.5l7 7M10.5 3.5l-7 7"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round></path></svg></button></div></div><div class=sidebar-tabs role=tablist><button class=sidebar-tab role=tab>Supervisor</button><button class=sidebar-tab role=tab>Bookmarks</button><button class=sidebar-tab role=tab>Checkpoints</button><button class=sidebar-tab role=tab>Chat</button><button class=sidebar-tab role=tab>Automate</button><button class=sidebar-tab role=tab>History</button><button class=sidebar-tab role=tab>Changes</button></div><div class=sidebar-messages><div>`), _tmpl$30 = /* @__PURE__ */ template(`<div class=agent-muted>No pending approvals.`), _tmpl$31 = /* @__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$32 = /* @__PURE__ */ template(`<div class=agent-muted>No actions yet.`), _tmpl$33 = /* @__PURE__ */ template(`<div class=agent-muted>Recent actions are collapsed to reduce noise.`), _tmpl$34 = /* @__PURE__ */ template(`<div class="agent-card-copy success">`), _tmpl$35 = /* @__PURE__ */ template(`<div class="agent-card-copy error">`), _tmpl$36 = /* @__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$37 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>`), _tmpl$38 = /* @__PURE__ */ template(`<div class=bookmark-folder-summary>`), _tmpl$39 = /* @__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$40 = /* @__PURE__ */ template(`<button class=bookmark-ghost-button type=button>Keep bookmarks`), _tmpl$41 = /* @__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$42 = /* @__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$43 = /* @__PURE__ */ template(`<div class=bookmark-items>`), _tmpl$44 = /* @__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$45 = /* @__PURE__ */ template(`<div class=bookmark-folder-collapsed-hint>Click to view saved links.`), _tmpl$46 = /* @__PURE__ */ template(`<div class=bookmark-empty-folder>No bookmarks in this folder yet.`), _tmpl$47 = /* @__PURE__ */ template(`<div class=bookmark-item-note>`), _tmpl$48 = /* @__PURE__ */ template(`<div><strong>Intent:</strong> `), _tmpl$49 = /* @__PURE__ */ template(`<div><strong>Expected:</strong> `), _tmpl$50 = /* @__PURE__ */ template(`<div><strong>Key fields:</strong> `), _tmpl$51 = /* @__PURE__ */ template(`<div><strong>Hints:</strong> `), _tmpl$52 = /* @__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$53 = /* @__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$54 = /* @__PURE__ */ template(`<div class=agent-muted>No checkpoints yet.`), _tmpl$55 = /* @__PURE__ */ template(`<span class=checkpoint-timeline-line>`), _tmpl$56 = /* @__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$57 = /* @__PURE__ */ template(`<button class=history-entry><span class=history-entry-title></span><span class=history-entry-url></span><span class=history-entry-time>`), _tmpl$58 = /* @__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$59 = /* @__PURE__ */ template(`<div>`), _tmpl$60 = /* @__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$61 = /* @__PURE__ */ template(`<div class=chat-approval-detail>`), _tmpl$62 = /* @__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$63 = /* @__PURE__ */ template(`<div class=chat-queue-item><span class=chat-queue-text></span><button class=chat-queue-remove type=button>×`);
|
|
7512
7513
|
const UNSORTED_FOLDER = {
|
|
7513
7514
|
id: "unsorted",
|
|
7514
7515
|
name: "Unsorted",
|
|
@@ -7593,6 +7594,7 @@ const Sidebar = (props) => {
|
|
|
7593
7594
|
removeBookmark,
|
|
7594
7595
|
exportHtml,
|
|
7595
7596
|
exportJson,
|
|
7597
|
+
exportFolderHtml,
|
|
7596
7598
|
createFolderWithSummary,
|
|
7597
7599
|
removeFolder,
|
|
7598
7600
|
renameFolder
|
|
@@ -8053,6 +8055,24 @@ ${contextBlock}` : contextBlock);
|
|
|
8053
8055
|
setEditingFolderSummary("");
|
|
8054
8056
|
}
|
|
8055
8057
|
};
|
|
8058
|
+
const handleExportFolder = async (folderId, folderName) => {
|
|
8059
|
+
setBookmarkExporting(true);
|
|
8060
|
+
setBookmarkExportMessage("");
|
|
8061
|
+
try {
|
|
8062
|
+
const result = await exportFolderHtml(folderId, {
|
|
8063
|
+
includeNotes: true
|
|
8064
|
+
});
|
|
8065
|
+
if (!result) {
|
|
8066
|
+
setBookmarkExportMessage("Export canceled.");
|
|
8067
|
+
return;
|
|
8068
|
+
}
|
|
8069
|
+
setBookmarkExportMessage(`Exported ${folderName} (${result.count} bookmarks) to ${result.filePath}`);
|
|
8070
|
+
} catch (error) {
|
|
8071
|
+
setBookmarkExportMessage(error instanceof Error ? error.message : `Could not export ${folderName}.`);
|
|
8072
|
+
} finally {
|
|
8073
|
+
setBookmarkExporting(false);
|
|
8074
|
+
}
|
|
8075
|
+
};
|
|
8056
8076
|
const handleExportBookmarks = async (format) => {
|
|
8057
8077
|
setBookmarkExporting(true);
|
|
8058
8078
|
setBookmarkExportMessage("");
|
|
@@ -8408,7 +8428,7 @@ ${contextBlock}` : contextBlock);
|
|
|
8408
8428
|
return folder.id !== UNSORTED_FOLDER.id;
|
|
8409
8429
|
},
|
|
8410
8430
|
get children() {
|
|
8411
|
-
var _el$169 = _tmpl$39(), _el$170 = _el$169.firstChild, _el$171 = _el$170.nextSibling;
|
|
8431
|
+
var _el$169 = _tmpl$39(), _el$170 = _el$169.firstChild, _el$171 = _el$170.nextSibling, _el$172 = _el$171.nextSibling;
|
|
8412
8432
|
_el$170.$$click = (e) => {
|
|
8413
8433
|
e.stopPropagation();
|
|
8414
8434
|
setEditingFolderId(folder.id);
|
|
@@ -8416,9 +8436,14 @@ ${contextBlock}` : contextBlock);
|
|
|
8416
8436
|
setEditingFolderSummary(folder.summary || "");
|
|
8417
8437
|
};
|
|
8418
8438
|
_el$171.$$click = (e) => {
|
|
8439
|
+
e.stopPropagation();
|
|
8440
|
+
void handleExportFolder(folder.id, folder.name);
|
|
8441
|
+
};
|
|
8442
|
+
_el$172.$$click = (e) => {
|
|
8419
8443
|
e.stopPropagation();
|
|
8420
8444
|
setDeletingFolderId(folder.id);
|
|
8421
8445
|
};
|
|
8446
|
+
createRenderEffect(() => _el$171.disabled = bookmarkExporting());
|
|
8422
8447
|
return _el$169;
|
|
8423
8448
|
}
|
|
8424
8449
|
}), null);
|
|
@@ -8427,28 +8452,28 @@ ${contextBlock}` : contextBlock);
|
|
|
8427
8452
|
return deletingFolderId() === folder.id;
|
|
8428
8453
|
},
|
|
8429
8454
|
get children() {
|
|
8430
|
-
var _el$
|
|
8431
|
-
_el$
|
|
8432
|
-
var _el$
|
|
8433
|
-
insert(_el$
|
|
8434
|
-
insert(_el$
|
|
8455
|
+
var _el$173 = _tmpl$41(), _el$174 = _el$173.firstChild, _el$175 = _el$174.firstChild, _el$177 = _el$175.nextSibling;
|
|
8456
|
+
_el$177.nextSibling;
|
|
8457
|
+
var _el$178 = _el$174.nextSibling, _el$180 = _el$178.firstChild, _el$181 = _el$180.nextSibling;
|
|
8458
|
+
insert(_el$174, () => folder.name, _el$177);
|
|
8459
|
+
insert(_el$174, (() => {
|
|
8435
8460
|
var _c$6 = memo(() => folder.items.length > 0);
|
|
8436
8461
|
return () => _c$6() ? ` This folder has ${folder.items.length} bookmark${folder.items.length === 1 ? "" : "s"}.` : "";
|
|
8437
8462
|
})(), null);
|
|
8438
|
-
insert(_el$
|
|
8463
|
+
insert(_el$178, createComponent(Show, {
|
|
8439
8464
|
get when() {
|
|
8440
8465
|
return folder.items.length > 0;
|
|
8441
8466
|
},
|
|
8442
8467
|
get children() {
|
|
8443
|
-
var _el$
|
|
8444
|
-
_el$
|
|
8445
|
-
return _el$
|
|
8468
|
+
var _el$179 = _tmpl$40();
|
|
8469
|
+
_el$179.$$click = () => void handleRemoveFolder(folder.id, false);
|
|
8470
|
+
return _el$179;
|
|
8446
8471
|
}
|
|
8447
|
-
}), _el$
|
|
8448
|
-
_el$
|
|
8449
|
-
insert(_el$
|
|
8450
|
-
_el$
|
|
8451
|
-
return _el$
|
|
8472
|
+
}), _el$180);
|
|
8473
|
+
_el$180.$$click = () => void handleRemoveFolder(folder.id, true);
|
|
8474
|
+
insert(_el$180, () => folder.items.length > 0 ? "Delete all" : "Delete folder");
|
|
8475
|
+
_el$181.$$click = () => setDeletingFolderId(null);
|
|
8476
|
+
return _el$173;
|
|
8452
8477
|
}
|
|
8453
8478
|
}), null);
|
|
8454
8479
|
insert(_el$160, createComponent(Show, {
|
|
@@ -8456,19 +8481,19 @@ ${contextBlock}` : contextBlock);
|
|
|
8456
8481
|
return editingFolderId() === folder.id;
|
|
8457
8482
|
},
|
|
8458
8483
|
get children() {
|
|
8459
|
-
var _el$
|
|
8460
|
-
_el$
|
|
8461
|
-
_el$
|
|
8462
|
-
_el$
|
|
8463
|
-
_el$
|
|
8484
|
+
var _el$182 = _tmpl$42(), _el$183 = _el$182.firstChild, _el$184 = _el$183.firstChild, _el$185 = _el$184.nextSibling, _el$186 = _el$183.nextSibling, _el$187 = _el$186.nextSibling;
|
|
8485
|
+
_el$184.$$input = (e) => setEditingFolderName(e.currentTarget.value);
|
|
8486
|
+
_el$185.$$input = (e) => setEditingFolderSummary(e.currentTarget.value);
|
|
8487
|
+
_el$186.$$click = () => void handleRenameFolder(folder.id);
|
|
8488
|
+
_el$187.$$click = () => {
|
|
8464
8489
|
setEditingFolderId(null);
|
|
8465
8490
|
setEditingFolderName("");
|
|
8466
8491
|
setEditingFolderSummary("");
|
|
8467
8492
|
};
|
|
8468
|
-
createRenderEffect(() => _el$
|
|
8469
|
-
createRenderEffect(() => _el$
|
|
8470
|
-
createRenderEffect(() => _el$
|
|
8471
|
-
return _el$
|
|
8493
|
+
createRenderEffect(() => _el$186.disabled = !editingFolderName().trim());
|
|
8494
|
+
createRenderEffect(() => _el$184.value = editingFolderName());
|
|
8495
|
+
createRenderEffect(() => _el$185.value = editingFolderSummary());
|
|
8496
|
+
return _el$182;
|
|
8472
8497
|
}
|
|
8473
8498
|
}), null);
|
|
8474
8499
|
insert(_el$160, createComponent(Show, {
|
|
@@ -8487,116 +8512,116 @@ ${contextBlock}` : contextBlock);
|
|
|
8487
8512
|
return _tmpl$46();
|
|
8488
8513
|
},
|
|
8489
8514
|
get children() {
|
|
8490
|
-
var _el$
|
|
8491
|
-
insert(_el$
|
|
8515
|
+
var _el$188 = _tmpl$43();
|
|
8516
|
+
insert(_el$188, createComponent(For, {
|
|
8492
8517
|
get each() {
|
|
8493
8518
|
return folder.items;
|
|
8494
8519
|
},
|
|
8495
8520
|
children: (bookmark) => (() => {
|
|
8496
|
-
var _el$
|
|
8497
|
-
_el$
|
|
8498
|
-
insert(_el$
|
|
8499
|
-
insert(_el$
|
|
8500
|
-
insert(_el$
|
|
8521
|
+
var _el$191 = _tmpl$53(), _el$192 = _el$191.firstChild, _el$193 = _el$192.firstChild, _el$194 = _el$193.nextSibling, _el$219 = _el$192.nextSibling, _el$220 = _el$219.firstChild, _el$221 = _el$220.nextSibling, _el$222 = _el$221.nextSibling;
|
|
8522
|
+
_el$192.$$click = () => void createTab(bookmark.url);
|
|
8523
|
+
insert(_el$193, () => bookmark.title || bookmark.url);
|
|
8524
|
+
insert(_el$194, () => bookmark.url);
|
|
8525
|
+
insert(_el$191, createComponent(Show, {
|
|
8501
8526
|
get when() {
|
|
8502
8527
|
return bookmark.note;
|
|
8503
8528
|
},
|
|
8504
8529
|
get children() {
|
|
8505
|
-
var _el$
|
|
8506
|
-
insert(_el$
|
|
8507
|
-
return _el$
|
|
8530
|
+
var _el$195 = _tmpl$47();
|
|
8531
|
+
insert(_el$195, () => bookmark.note);
|
|
8532
|
+
return _el$195;
|
|
8508
8533
|
}
|
|
8509
|
-
}), _el$
|
|
8510
|
-
insert(_el$
|
|
8534
|
+
}), _el$219);
|
|
8535
|
+
insert(_el$191, createComponent(Show, {
|
|
8511
8536
|
get when() {
|
|
8512
8537
|
return bookmark.intent || bookmark.expectedContent || (bookmark.keyFields?.length || 0) > 0 || (bookmark.agentHints && Object.keys(bookmark.agentHints).length || 0) > 0;
|
|
8513
8538
|
},
|
|
8514
8539
|
get children() {
|
|
8515
|
-
var _el$
|
|
8516
|
-
insert(_el$
|
|
8540
|
+
var _el$196 = _tmpl$47();
|
|
8541
|
+
insert(_el$196, createComponent(Show, {
|
|
8517
8542
|
get when() {
|
|
8518
8543
|
return bookmark.intent;
|
|
8519
8544
|
},
|
|
8520
8545
|
get children() {
|
|
8521
|
-
var _el$
|
|
8522
|
-
_el$
|
|
8523
|
-
insert(_el$
|
|
8524
|
-
return _el$
|
|
8546
|
+
var _el$197 = _tmpl$48(), _el$198 = _el$197.firstChild;
|
|
8547
|
+
_el$198.nextSibling;
|
|
8548
|
+
insert(_el$197, () => bookmark.intent, null);
|
|
8549
|
+
return _el$197;
|
|
8525
8550
|
}
|
|
8526
8551
|
}), null);
|
|
8527
|
-
insert(_el$
|
|
8552
|
+
insert(_el$196, createComponent(Show, {
|
|
8528
8553
|
get when() {
|
|
8529
8554
|
return bookmark.expectedContent;
|
|
8530
8555
|
},
|
|
8531
8556
|
get children() {
|
|
8532
|
-
var _el$
|
|
8533
|
-
_el$
|
|
8534
|
-
insert(_el$
|
|
8535
|
-
return _el$
|
|
8557
|
+
var _el$200 = _tmpl$49(), _el$201 = _el$200.firstChild;
|
|
8558
|
+
_el$201.nextSibling;
|
|
8559
|
+
insert(_el$200, () => bookmark.expectedContent, null);
|
|
8560
|
+
return _el$200;
|
|
8536
8561
|
}
|
|
8537
8562
|
}), null);
|
|
8538
|
-
insert(_el$
|
|
8563
|
+
insert(_el$196, createComponent(Show, {
|
|
8539
8564
|
get when() {
|
|
8540
8565
|
return (bookmark.keyFields?.length || 0) > 0;
|
|
8541
8566
|
},
|
|
8542
8567
|
get children() {
|
|
8543
|
-
var _el$
|
|
8544
|
-
_el$
|
|
8545
|
-
insert(_el$
|
|
8546
|
-
return _el$
|
|
8568
|
+
var _el$203 = _tmpl$50(), _el$204 = _el$203.firstChild;
|
|
8569
|
+
_el$204.nextSibling;
|
|
8570
|
+
insert(_el$203, () => bookmark.keyFields?.join(", "), null);
|
|
8571
|
+
return _el$203;
|
|
8547
8572
|
}
|
|
8548
8573
|
}), null);
|
|
8549
|
-
insert(_el$
|
|
8574
|
+
insert(_el$196, createComponent(Show, {
|
|
8550
8575
|
get when() {
|
|
8551
8576
|
return memo(() => !!bookmark.agentHints)() && Object.keys(bookmark.agentHints).length > 0;
|
|
8552
8577
|
},
|
|
8553
8578
|
get children() {
|
|
8554
|
-
var _el$
|
|
8555
|
-
_el$
|
|
8556
|
-
insert(_el$
|
|
8557
|
-
return _el$
|
|
8579
|
+
var _el$206 = _tmpl$51(), _el$207 = _el$206.firstChild;
|
|
8580
|
+
_el$207.nextSibling;
|
|
8581
|
+
insert(_el$206, () => Object.entries(bookmark.agentHints || {}).map(([key, hint]) => `${key}: ${hint}`).join(" • "), null);
|
|
8582
|
+
return _el$206;
|
|
8558
8583
|
}
|
|
8559
8584
|
}), null);
|
|
8560
|
-
return _el$
|
|
8585
|
+
return _el$196;
|
|
8561
8586
|
}
|
|
8562
|
-
}), _el$
|
|
8563
|
-
insert(_el$
|
|
8587
|
+
}), _el$219);
|
|
8588
|
+
insert(_el$191, createComponent(Show, {
|
|
8564
8589
|
get when() {
|
|
8565
8590
|
return editingBookmarkId() === bookmark.id;
|
|
8566
8591
|
},
|
|
8567
8592
|
get children() {
|
|
8568
|
-
var _el$
|
|
8569
|
-
_el$
|
|
8570
|
-
_el$
|
|
8571
|
-
_el$
|
|
8572
|
-
_el$
|
|
8573
|
-
_el$
|
|
8574
|
-
_el$
|
|
8575
|
-
_el$
|
|
8576
|
-
_el$
|
|
8577
|
-
createRenderEffect(() => _el$
|
|
8578
|
-
createRenderEffect(() => _el$
|
|
8579
|
-
createRenderEffect(() => _el$
|
|
8580
|
-
createRenderEffect(() => _el$
|
|
8581
|
-
createRenderEffect(() => _el$
|
|
8582
|
-
createRenderEffect(() => _el$
|
|
8583
|
-
return _el$
|
|
8593
|
+
var _el$209 = _tmpl$52(), _el$210 = _el$209.firstChild, _el$211 = _el$210.nextSibling, _el$212 = _el$211.nextSibling, _el$213 = _el$212.nextSibling, _el$214 = _el$213.nextSibling, _el$215 = _el$214.nextSibling, _el$216 = _el$215.nextSibling, _el$217 = _el$216.firstChild, _el$218 = _el$217.nextSibling;
|
|
8594
|
+
_el$210.$$input = (e) => setEditingBookmarkTitle(e.currentTarget.value);
|
|
8595
|
+
_el$211.$$input = (e) => setEditingBookmarkNote(e.currentTarget.value);
|
|
8596
|
+
_el$212.$$input = (e) => setEditingBookmarkIntent(e.currentTarget.value);
|
|
8597
|
+
_el$213.$$input = (e) => setEditingBookmarkExpectedContent(e.currentTarget.value);
|
|
8598
|
+
_el$214.$$input = (e) => setEditingBookmarkKeyFields(e.currentTarget.value);
|
|
8599
|
+
_el$215.$$input = (e) => setEditingBookmarkAgentHints(e.currentTarget.value);
|
|
8600
|
+
_el$217.$$click = () => void handleUpdateBookmark(bookmark.id);
|
|
8601
|
+
_el$218.$$click = resetBookmarkEditor;
|
|
8602
|
+
createRenderEffect(() => _el$210.value = editingBookmarkTitle());
|
|
8603
|
+
createRenderEffect(() => _el$211.value = editingBookmarkNote());
|
|
8604
|
+
createRenderEffect(() => _el$212.value = editingBookmarkIntent());
|
|
8605
|
+
createRenderEffect(() => _el$213.value = editingBookmarkExpectedContent());
|
|
8606
|
+
createRenderEffect(() => _el$214.value = editingBookmarkKeyFields());
|
|
8607
|
+
createRenderEffect(() => _el$215.value = editingBookmarkAgentHints());
|
|
8608
|
+
return _el$209;
|
|
8584
8609
|
}
|
|
8585
|
-
}), _el$
|
|
8586
|
-
insert(_el$
|
|
8587
|
-
_el$
|
|
8588
|
-
insert(_el$
|
|
8589
|
-
_el$
|
|
8610
|
+
}), _el$219);
|
|
8611
|
+
insert(_el$220, () => formatBookmarkDate(bookmark.savedAt));
|
|
8612
|
+
_el$221.$$click = () => editingBookmarkId() === bookmark.id ? resetBookmarkEditor() : startEditingBookmark(bookmark);
|
|
8613
|
+
insert(_el$221, () => editingBookmarkId() === bookmark.id ? "Close" : "Edit");
|
|
8614
|
+
_el$222.$$click = () => {
|
|
8590
8615
|
if (editingBookmarkId() === bookmark.id) {
|
|
8591
8616
|
resetBookmarkEditor();
|
|
8592
8617
|
}
|
|
8593
8618
|
void removeBookmark(bookmark.id);
|
|
8594
8619
|
};
|
|
8595
|
-
createRenderEffect(() => setAttribute(_el$
|
|
8596
|
-
return _el$
|
|
8620
|
+
createRenderEffect(() => setAttribute(_el$191, "data-bookmark-id", bookmark.id));
|
|
8621
|
+
return _el$191;
|
|
8597
8622
|
})()
|
|
8598
8623
|
}));
|
|
8599
|
-
return _el$
|
|
8624
|
+
return _el$188;
|
|
8600
8625
|
}
|
|
8601
8626
|
});
|
|
8602
8627
|
}
|
|
@@ -8663,8 +8688,8 @@ ${contextBlock}` : contextBlock);
|
|
|
8663
8688
|
return recentCheckpoints();
|
|
8664
8689
|
},
|
|
8665
8690
|
children: (checkpoint, i) => (() => {
|
|
8666
|
-
var _el$
|
|
8667
|
-
insert(_el$
|
|
8691
|
+
var _el$224 = _tmpl$56(), _el$225 = _el$224.firstChild, _el$226 = _el$225.firstChild, _el$228 = _el$225.nextSibling, _el$229 = _el$228.firstChild, _el$230 = _el$229.nextSibling, _el$231 = _el$230.nextSibling, _el$232 = _el$231.nextSibling;
|
|
8692
|
+
insert(_el$225, createComponent(Show, {
|
|
8668
8693
|
get when() {
|
|
8669
8694
|
return i() < recentCheckpoints().length - 1;
|
|
8670
8695
|
},
|
|
@@ -8672,13 +8697,13 @@ ${contextBlock}` : contextBlock);
|
|
|
8672
8697
|
return _tmpl$55();
|
|
8673
8698
|
}
|
|
8674
8699
|
}), null);
|
|
8675
|
-
insert(_el$
|
|
8676
|
-
insert(_el$
|
|
8677
|
-
_el$
|
|
8678
|
-
_el$
|
|
8679
|
-
createRenderEffect(() => _el$
|
|
8680
|
-
createRenderEffect(() => _el$
|
|
8681
|
-
return _el$
|
|
8700
|
+
insert(_el$229, () => checkpoint.name);
|
|
8701
|
+
insert(_el$230, () => new Date(checkpoint.createdAt).toLocaleString());
|
|
8702
|
+
_el$231.addEventListener("blur", (e) => void updateCheckpointNote(checkpoint.id, e.currentTarget.value));
|
|
8703
|
+
_el$232.$$click = () => void restoreCheckpoint(checkpoint.id);
|
|
8704
|
+
createRenderEffect(() => _el$226.classList.toggle("latest", !!(i() === 0)));
|
|
8705
|
+
createRenderEffect(() => _el$231.value = checkpoint.note || "");
|
|
8706
|
+
return _el$224;
|
|
8682
8707
|
})()
|
|
8683
8708
|
}));
|
|
8684
8709
|
return _el$95;
|
|
@@ -8725,12 +8750,12 @@ ${contextBlock}` : contextBlock);
|
|
|
8725
8750
|
return history.historyState().entries;
|
|
8726
8751
|
},
|
|
8727
8752
|
children: (entry) => (() => {
|
|
8728
|
-
var _el$
|
|
8729
|
-
_el$
|
|
8730
|
-
insert(_el$
|
|
8731
|
-
insert(_el$
|
|
8732
|
-
insert(_el$
|
|
8733
|
-
return _el$
|
|
8753
|
+
var _el$233 = _tmpl$57(), _el$234 = _el$233.firstChild, _el$235 = _el$234.nextSibling, _el$236 = _el$235.nextSibling;
|
|
8754
|
+
_el$233.$$click = () => createTab(entry.url);
|
|
8755
|
+
insert(_el$234, () => entry.title || entry.url);
|
|
8756
|
+
insert(_el$235, () => entry.url);
|
|
8757
|
+
insert(_el$236, () => new Date(entry.visitedAt).toLocaleString());
|
|
8758
|
+
return _el$233;
|
|
8734
8759
|
})()
|
|
8735
8760
|
}), null);
|
|
8736
8761
|
insert(_el$104, createComponent(Show, {
|
|
@@ -8757,11 +8782,11 @@ ${contextBlock}` : contextBlock);
|
|
|
8757
8782
|
},
|
|
8758
8783
|
get fallback() {
|
|
8759
8784
|
return (() => {
|
|
8760
|
-
var _el$
|
|
8761
|
-
_el$
|
|
8785
|
+
var _el$237 = _tmpl$58(), _el$238 = _el$237.firstChild, _el$239 = _el$238.nextSibling, _el$240 = _el$239.nextSibling, _el$241 = _el$240.firstChild, _el$242 = _el$241.nextSibling;
|
|
8786
|
+
_el$241.$$click = () => void window.vessel.premium.checkout(premiumState().email || void 0).catch(() => {
|
|
8762
8787
|
});
|
|
8763
|
-
_el$
|
|
8764
|
-
return _el$
|
|
8788
|
+
_el$242.$$click = openPremiumDetails;
|
|
8789
|
+
return _el$237;
|
|
8765
8790
|
})();
|
|
8766
8791
|
},
|
|
8767
8792
|
get children() {
|
|
@@ -8791,13 +8816,13 @@ ${contextBlock}` : contextBlock);
|
|
|
8791
8816
|
return messages2();
|
|
8792
8817
|
},
|
|
8793
8818
|
children: (msg) => (() => {
|
|
8794
|
-
var _el$
|
|
8795
|
-
insert(_el$
|
|
8819
|
+
var _el$243 = _tmpl$59();
|
|
8820
|
+
insert(_el$243, createComponent(MarkdownMessage, {
|
|
8796
8821
|
get content() {
|
|
8797
8822
|
return msg.content;
|
|
8798
8823
|
}
|
|
8799
8824
|
}), null);
|
|
8800
|
-
insert(_el$
|
|
8825
|
+
insert(_el$243, createComponent(Show, {
|
|
8801
8826
|
get when() {
|
|
8802
8827
|
return memo(() => msg.role === "assistant")() ? getPremiumPromptKind(msg.content) : null;
|
|
8803
8828
|
},
|
|
@@ -8810,8 +8835,8 @@ ${contextBlock}` : contextBlock);
|
|
|
8810
8835
|
onOpenSettings: openPremiumDetails
|
|
8811
8836
|
})
|
|
8812
8837
|
}), null);
|
|
8813
|
-
createRenderEffect(() => className(_el$
|
|
8814
|
-
return _el$
|
|
8838
|
+
createRenderEffect(() => className(_el$243, `message message-${msg.role}`));
|
|
8839
|
+
return _el$243;
|
|
8815
8840
|
})()
|
|
8816
8841
|
}), createComponent(Show, {
|
|
8817
8842
|
get when() {
|
|
@@ -8872,22 +8897,22 @@ ${contextBlock}` : contextBlock);
|
|
|
8872
8897
|
return runtimeState2().supervisor.pendingApprovals;
|
|
8873
8898
|
},
|
|
8874
8899
|
children: (approval) => (() => {
|
|
8875
|
-
var _el$
|
|
8876
|
-
insert(_el$
|
|
8877
|
-
insert(_el$
|
|
8900
|
+
var _el$245 = _tmpl$62(), _el$246 = _el$245.firstChild, _el$247 = _el$246.nextSibling, _el$248 = _el$247.firstChild, _el$249 = _el$248.firstChild, _el$250 = _el$249.nextSibling, _el$252 = _el$248.nextSibling, _el$253 = _el$252.nextSibling, _el$254 = _el$253.firstChild, _el$255 = _el$254.nextSibling;
|
|
8901
|
+
insert(_el$250, () => approval.name);
|
|
8902
|
+
insert(_el$247, createComponent(Show, {
|
|
8878
8903
|
get when() {
|
|
8879
8904
|
return approval.argsSummary;
|
|
8880
8905
|
},
|
|
8881
8906
|
get children() {
|
|
8882
|
-
var _el$
|
|
8883
|
-
insert(_el$
|
|
8884
|
-
return _el$
|
|
8907
|
+
var _el$251 = _tmpl$61();
|
|
8908
|
+
insert(_el$251, () => approval.argsSummary);
|
|
8909
|
+
return _el$251;
|
|
8885
8910
|
}
|
|
8886
|
-
}), _el$
|
|
8887
|
-
insert(_el$
|
|
8888
|
-
_el$
|
|
8889
|
-
_el$
|
|
8890
|
-
return _el$
|
|
8911
|
+
}), _el$252);
|
|
8912
|
+
insert(_el$252, () => approval.reason);
|
|
8913
|
+
_el$254.$$click = () => void resolveApproval(approval.id, true);
|
|
8914
|
+
_el$255.$$click = () => void resolveApproval(approval.id, false);
|
|
8915
|
+
return _el$245;
|
|
8891
8916
|
})()
|
|
8892
8917
|
});
|
|
8893
8918
|
}
|
|
@@ -8896,7 +8921,7 @@ ${contextBlock}` : contextBlock);
|
|
|
8896
8921
|
return memo(() => messages2().length === 0)() && !isStreaming2();
|
|
8897
8922
|
},
|
|
8898
8923
|
get children() {
|
|
8899
|
-
return _tmpl$20();
|
|
8924
|
+
return _tmpl$20$1();
|
|
8900
8925
|
}
|
|
8901
8926
|
})];
|
|
8902
8927
|
}
|
|
@@ -8990,12 +9015,12 @@ ${contextBlock}` : contextBlock);
|
|
|
8990
9015
|
return pendingQueries2();
|
|
8991
9016
|
},
|
|
8992
9017
|
children: (pendingPrompt, index) => (() => {
|
|
8993
|
-
var _el$
|
|
8994
|
-
setAttribute(_el$
|
|
8995
|
-
insert(_el$
|
|
8996
|
-
_el$
|
|
8997
|
-
createRenderEffect(() => setAttribute(_el$
|
|
8998
|
-
return _el$
|
|
9018
|
+
var _el$256 = _tmpl$63(), _el$257 = _el$256.firstChild, _el$258 = _el$257.nextSibling;
|
|
9019
|
+
setAttribute(_el$257, "title", pendingPrompt);
|
|
9020
|
+
insert(_el$257, pendingPrompt);
|
|
9021
|
+
_el$258.$$click = () => removePendingQuery(index());
|
|
9022
|
+
createRenderEffect(() => setAttribute(_el$258, "aria-label", `Remove queued prompt ${index() + 1}`));
|
|
9023
|
+
return _el$256;
|
|
8999
9024
|
})()
|
|
9000
9025
|
}));
|
|
9001
9026
|
return _el$137;
|
|
@@ -9658,7 +9683,7 @@ const SettingsGeneral = (props) => {
|
|
|
9658
9683
|
})();
|
|
9659
9684
|
};
|
|
9660
9685
|
delegateEvents(["click", "input"]);
|
|
9661
|
-
var _tmpl$$7 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-provider>Provider</label><select id=chat-provider class="settings-input settings-select">`), _tmpl$2$7 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$3$6 = /* @__PURE__ */ template(`<p class=settings-hint>An API key is already stored securely for this provider. Leave this blank to keep it, or enter a new key to replace it.`), _tmpl$4$6 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$5$4 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-api-key>API Key</label><input id=chat-api-key class=settings-input type=password>`), _tmpl$6$4 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$7$4 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$8$3 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-model>Model</label><div style=display:flex;gap:6px;align-items:center><button type=button class=settings-refresh-btn title="Refresh model list">↺`), _tmpl$9$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-base-url>Base URL</label><input id=chat-base-url class=settings-input>`), _tmpl$0$1 = /* @__PURE__ */ template(`<p class=settings-hint>Vessel auto-detects the active model from your configured <code>llama-server</code> base URL. For agent loops, run <code>llama-server</code> with <code>--ctx-size 16384</code> minimum and <code>32768</code> recommended.`), _tmpl$1$1 = /* @__PURE__ */ template(`<input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200>`), _tmpl$
|
|
9686
|
+
var _tmpl$$7 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-provider>Provider</label><select id=chat-provider class="settings-input settings-select">`), _tmpl$2$7 = /* @__PURE__ */ template(`<span class=settings-label-optional> (optional)`), _tmpl$3$6 = /* @__PURE__ */ template(`<p class=settings-hint>An API key is already stored securely for this provider. Leave this blank to keep it, or enter a new key to replace it.`), _tmpl$4$6 = /* @__PURE__ */ template(`<p class=settings-hint>If your endpoint requires authentication, enter the API key or bearer token here.`), _tmpl$5$4 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-api-key>API Key</label><input id=chat-api-key class=settings-input type=password>`), _tmpl$6$4 = /* @__PURE__ */ template(`<select id=chat-model class="settings-input settings-select"style=flex:1>`), _tmpl$7$4 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--error)>Could not fetch models — check your API key and connection.`), _tmpl$8$3 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-model>Model</label><div style=display:flex;gap:6px;align-items:center><button type=button class=settings-refresh-btn title="Refresh model list">↺`), _tmpl$9$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-base-url>Base URL</label><input id=chat-base-url class=settings-input>`), _tmpl$0$1 = /* @__PURE__ */ template(`<p class=settings-hint>Vessel auto-detects the active model from your configured <code>llama-server</code> base URL. For agent loops, run <code>llama-server</code> with <code>--ctx-size 16384</code> minimum and <code>32768</code> recommended.`), _tmpl$1$1 = /* @__PURE__ */ template(`<div class=settings-field><label class=settings-label for=chat-reasoning-effort>Reasoning Level</label><select id=chat-reasoning-effort class="settings-input settings-select"></select><p class=settings-hint>Applies to providers and models that expose reasoning controls. Off requests no reasoning where supported and otherwise leaves the model at its normal behavior; Max requests the strongest supported reasoning tier.`), _tmpl$10$1 = /* @__PURE__ */ template(`<input id=max-tool-iterations class=settings-input type=number min=10 max=1000 placeholder=200>`), _tmpl$11$1 = /* @__PURE__ */ template(`<div class=settings-category-panel><div class=settings-callout><div class=settings-callout-title>External Agent Control</div><p class=settings-callout-copy>Vessel is configured to run under an external harness such as Hermes Agent or OpenClaw. Provider and model selection are not configured inside Vessel.</p></div><div class=settings-field><label class=settings-toggle><button type=button class=toggle-switch role=switch><span class=toggle-switch-thumb></span></button><span>Enable Chat Assistant</span></label><p class=settings-hint>Adds a Chat tab to the sidebar for conversing with an AI provider of your choice.</p></div><div class=settings-field><label class=settings-label for=mcp-port>MCP Port</label><input id=mcp-port class=settings-input placeholder=3100><p class=settings-hint>External harnesses connect to Vessel at <code>http://127.0.0.1:<port>/mcp</code>. Changing this value restarts the MCP server immediately.</p></div><div class=settings-field><label class=settings-label for=max-tool-iterations>Max Tool Iterations</label><p class=settings-hint></p></div><div class=settings-field><label class=settings-label for=agent-transcript-mode>Agent Transcript Monitor</label><select id=agent-transcript-mode class="settings-input settings-select"><option value=off>Off</option><option value=summary>Summary HUD</option><option value=full>Full transcript</option></select><p class=settings-hint>Controls the in-browser transcript monitor when an external harness publishes reasoning or status updates into Vessel via the <code>vessel_publish_transcript</code> MCP tool. Summary HUD shows a compact 2-line status surface; Full transcript shows the recent entry list.</p></div><div class=settings-field><label class=settings-label for=obsidian-vault-path>Obsidian Vault Path</label><input id=obsidian-vault-path class=settings-input placeholder=/home/you/Documents/MyVault><p class=settings-hint>Optional. When set, Vessel memory tools can write markdown notes into this vault for research breadcrumbs and summaries.`), _tmpl$12$1 = /* @__PURE__ */ template(`<option>`), _tmpl$13$1 = /* @__PURE__ */ template(`<input id=chat-model class=settings-input style=flex:1>`), _tmpl$14$1 = /* @__PURE__ */ template(`<p class=settings-hint style=color:var(--accent-primary)>`), _tmpl$15$1 = /* @__PURE__ */ template(`<div class="settings-input settings-input-disabled"title="Upgrade to Vessel Premium for unlimited tool iterations">50`), _tmpl$16 = /* @__PURE__ */ template(`<div class=settings-health-issues>`), _tmpl$17 = /* @__PURE__ */ template(`<div class=settings-health><div class=settings-callout-title>Runtime Health</div><p class=settings-hint>MCP status: <strong></strong> `), _tmpl$18 = /* @__PURE__ */ template(`<p class=settings-hint>Active endpoint: <code>`), _tmpl$19 = /* @__PURE__ */ template(`<div class=settings-health-issue><strong></strong><div>`), _tmpl$20 = /* @__PURE__ */ template(`<div>`);
|
|
9662
9687
|
const CHAT_PROVIDERS$1 = Object.values(PROVIDERS).map((p) => ({
|
|
9663
9688
|
id: p.id,
|
|
9664
9689
|
name: p.name,
|
|
@@ -9669,10 +9694,26 @@ const CHAT_PROVIDERS$1 = Object.values(PROVIDERS).map((p) => ({
|
|
|
9669
9694
|
defaultModel: p.defaultModel,
|
|
9670
9695
|
models: p.models
|
|
9671
9696
|
}));
|
|
9697
|
+
const REASONING_EFFORT_OPTIONS = [{
|
|
9698
|
+
value: "off",
|
|
9699
|
+
label: "Off"
|
|
9700
|
+
}, {
|
|
9701
|
+
value: "low",
|
|
9702
|
+
label: "Low"
|
|
9703
|
+
}, {
|
|
9704
|
+
value: "medium",
|
|
9705
|
+
label: "Medium"
|
|
9706
|
+
}, {
|
|
9707
|
+
value: "high",
|
|
9708
|
+
label: "High"
|
|
9709
|
+
}, {
|
|
9710
|
+
value: "max",
|
|
9711
|
+
label: "Max"
|
|
9712
|
+
}];
|
|
9672
9713
|
const SettingsAgent = (props) => {
|
|
9673
9714
|
const chatMeta = () => CHAT_PROVIDERS$1.find((p) => p.id === props.chat.providerId()) ?? CHAT_PROVIDERS$1[0];
|
|
9674
9715
|
return (() => {
|
|
9675
|
-
var _el$ = _tmpl$
|
|
9716
|
+
var _el$ = _tmpl$11$1(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$27 = _el$3.nextSibling, _el$28 = _el$27.firstChild, _el$29 = _el$28.nextSibling, _el$30 = _el$27.nextSibling, _el$31 = _el$30.firstChild, _el$33 = _el$31.nextSibling, _el$34 = _el$30.nextSibling, _el$35 = _el$34.firstChild, _el$36 = _el$35.nextSibling, _el$37 = _el$34.nextSibling, _el$38 = _el$37.firstChild, _el$39 = _el$38.nextSibling;
|
|
9676
9717
|
_el$5.$$click = () => props.chat.setEnabled(!props.chat.enabled());
|
|
9677
9718
|
insert(_el$, createComponent(Show, {
|
|
9678
9719
|
get when() {
|
|
@@ -9693,10 +9734,10 @@ const SettingsAgent = (props) => {
|
|
|
9693
9734
|
insert(_el$8, createComponent(For, {
|
|
9694
9735
|
each: CHAT_PROVIDERS$1,
|
|
9695
9736
|
children: (p) => (() => {
|
|
9696
|
-
var _el$
|
|
9697
|
-
insert(_el$
|
|
9698
|
-
createRenderEffect(() => _el$
|
|
9699
|
-
return _el$
|
|
9737
|
+
var _el$40 = _tmpl$12$1();
|
|
9738
|
+
insert(_el$40, () => p.name);
|
|
9739
|
+
createRenderEffect(() => _el$40.value = p.id);
|
|
9740
|
+
return _el$40;
|
|
9700
9741
|
})()
|
|
9701
9742
|
}));
|
|
9702
9743
|
createRenderEffect(() => _el$8.value = props.chat.providerId());
|
|
@@ -9752,12 +9793,12 @@ const SettingsAgent = (props) => {
|
|
|
9752
9793
|
},
|
|
9753
9794
|
get fallback() {
|
|
9754
9795
|
return (() => {
|
|
9755
|
-
var _el$
|
|
9756
|
-
_el$
|
|
9757
|
-
setAttribute(_el$
|
|
9758
|
-
createRenderEffect(() => setAttribute(_el$
|
|
9759
|
-
createRenderEffect(() => _el$
|
|
9760
|
-
return _el$
|
|
9796
|
+
var _el$41 = _tmpl$13$1();
|
|
9797
|
+
_el$41.$$input = (e) => props.chat.setModel(e.currentTarget.value);
|
|
9798
|
+
setAttribute(_el$41, "spellcheck", false);
|
|
9799
|
+
createRenderEffect(() => setAttribute(_el$41, "placeholder", props.chat.modelFetchState() === "loading" ? "Fetching models…" : chatMeta().requiresKey && !props.chat.apiKey().trim() && !props.chat.hasStoredApiKey() ? "Enter API key to load models" : chatMeta().defaultModel || "model name"));
|
|
9800
|
+
createRenderEffect(() => _el$41.value = props.chat.model());
|
|
9801
|
+
return _el$41;
|
|
9761
9802
|
})();
|
|
9762
9803
|
},
|
|
9763
9804
|
get children() {
|
|
@@ -9768,10 +9809,10 @@ const SettingsAgent = (props) => {
|
|
|
9768
9809
|
return props.chat.providerModels();
|
|
9769
9810
|
},
|
|
9770
9811
|
children: (m) => (() => {
|
|
9771
|
-
var _el$
|
|
9772
|
-
_el$
|
|
9773
|
-
insert(_el$
|
|
9774
|
-
return _el$
|
|
9812
|
+
var _el$42 = _tmpl$12$1();
|
|
9813
|
+
_el$42.value = m;
|
|
9814
|
+
insert(_el$42, m);
|
|
9815
|
+
return _el$42;
|
|
9775
9816
|
})()
|
|
9776
9817
|
}));
|
|
9777
9818
|
createRenderEffect(() => _el$17.value = props.chat.model());
|
|
@@ -9792,9 +9833,9 @@ const SettingsAgent = (props) => {
|
|
|
9792
9833
|
return props.chat.modelFetchWarning();
|
|
9793
9834
|
},
|
|
9794
9835
|
children: (warning) => (() => {
|
|
9795
|
-
var _el$
|
|
9796
|
-
insert(_el$
|
|
9797
|
-
return _el$
|
|
9836
|
+
var _el$43 = _tmpl$14$1();
|
|
9837
|
+
insert(_el$43, warning);
|
|
9838
|
+
return _el$43;
|
|
9798
9839
|
})()
|
|
9799
9840
|
}), null);
|
|
9800
9841
|
createRenderEffect(() => _el$18.disabled = props.chat.modelFetchState() === "loading");
|
|
@@ -9818,91 +9859,105 @@ const SettingsAgent = (props) => {
|
|
|
9818
9859
|
get children() {
|
|
9819
9860
|
return _tmpl$0$1();
|
|
9820
9861
|
}
|
|
9821
|
-
})
|
|
9862
|
+
}), (() => {
|
|
9863
|
+
var _el$24 = _tmpl$1$1(), _el$25 = _el$24.firstChild, _el$26 = _el$25.nextSibling;
|
|
9864
|
+
_el$26.addEventListener("change", (e) => props.chat.setReasoningEffort(e.currentTarget.value));
|
|
9865
|
+
insert(_el$26, createComponent(For, {
|
|
9866
|
+
each: REASONING_EFFORT_OPTIONS,
|
|
9867
|
+
children: (option) => (() => {
|
|
9868
|
+
var _el$44 = _tmpl$12$1();
|
|
9869
|
+
insert(_el$44, () => option.label);
|
|
9870
|
+
createRenderEffect(() => _el$44.value = option.value);
|
|
9871
|
+
return _el$44;
|
|
9872
|
+
})()
|
|
9873
|
+
}));
|
|
9874
|
+
createRenderEffect(() => _el$26.value = props.chat.reasoningEffort());
|
|
9875
|
+
return _el$24;
|
|
9876
|
+
})()];
|
|
9822
9877
|
}
|
|
9823
|
-
}), _el$
|
|
9824
|
-
_el$
|
|
9825
|
-
setAttribute(_el$
|
|
9826
|
-
insert(_el$
|
|
9878
|
+
}), _el$27);
|
|
9879
|
+
_el$29.$$input = (e) => props.setMcpPort(e.currentTarget.value);
|
|
9880
|
+
setAttribute(_el$29, "spellcheck", false);
|
|
9881
|
+
insert(_el$30, createComponent(Show, {
|
|
9827
9882
|
get when() {
|
|
9828
9883
|
return props.premiumActive();
|
|
9829
9884
|
},
|
|
9830
9885
|
get fallback() {
|
|
9831
|
-
return _tmpl$
|
|
9886
|
+
return _tmpl$15$1();
|
|
9832
9887
|
},
|
|
9833
9888
|
get children() {
|
|
9834
|
-
var _el$
|
|
9835
|
-
_el$
|
|
9836
|
-
createRenderEffect(() => _el$
|
|
9837
|
-
return _el$
|
|
9889
|
+
var _el$32 = _tmpl$10$1();
|
|
9890
|
+
_el$32.$$input = (e) => props.setMaxToolIterations(e.currentTarget.value);
|
|
9891
|
+
createRenderEffect(() => _el$32.value = props.maxToolIterations());
|
|
9892
|
+
return _el$32;
|
|
9838
9893
|
}
|
|
9839
|
-
}), _el$
|
|
9840
|
-
insert(_el$
|
|
9894
|
+
}), _el$33);
|
|
9895
|
+
insert(_el$33, createComponent(Show, {
|
|
9841
9896
|
get when() {
|
|
9842
9897
|
return props.premiumActive();
|
|
9843
9898
|
},
|
|
9844
9899
|
fallback: "Free tier: 50 tool calls per conversation turn. Upgrade to Vessel Premium to customize this limit (up to 1,000).",
|
|
9845
9900
|
children: "Maximum number of tool calls the AI agent can make per conversation turn before pausing. Higher values let the agent complete longer multi-step workflows without stopping. Range: 10–1000."
|
|
9846
9901
|
}));
|
|
9847
|
-
_el$
|
|
9902
|
+
_el$36.addEventListener("change", (e) => props.setAgentTranscriptMode(e.currentTarget.value));
|
|
9848
9903
|
insert(_el$, createComponent(Show, {
|
|
9849
9904
|
get when() {
|
|
9850
9905
|
return props.health();
|
|
9851
9906
|
},
|
|
9852
9907
|
children: (currentHealth) => (() => {
|
|
9853
|
-
var _el$
|
|
9854
|
-
_el$
|
|
9855
|
-
insert(_el$
|
|
9856
|
-
insert(_el$
|
|
9857
|
-
insert(_el$
|
|
9908
|
+
var _el$46 = _tmpl$17(), _el$47 = _el$46.firstChild, _el$48 = _el$47.nextSibling, _el$49 = _el$48.firstChild, _el$50 = _el$49.nextSibling;
|
|
9909
|
+
_el$50.nextSibling;
|
|
9910
|
+
insert(_el$50, () => currentHealth().mcp.status);
|
|
9911
|
+
insert(_el$48, () => currentHealth().mcp.message, null);
|
|
9912
|
+
insert(_el$46, createComponent(Show, {
|
|
9858
9913
|
get when() {
|
|
9859
9914
|
return currentHealth().mcp.endpoint;
|
|
9860
9915
|
},
|
|
9861
9916
|
children: (endpoint) => (() => {
|
|
9862
|
-
var _el$
|
|
9863
|
-
insert(_el$
|
|
9864
|
-
return _el$
|
|
9917
|
+
var _el$53 = _tmpl$18(), _el$54 = _el$53.firstChild, _el$55 = _el$54.nextSibling;
|
|
9918
|
+
insert(_el$55, endpoint);
|
|
9919
|
+
return _el$53;
|
|
9865
9920
|
})()
|
|
9866
9921
|
}), null);
|
|
9867
|
-
insert(_el$
|
|
9922
|
+
insert(_el$46, createComponent(Show, {
|
|
9868
9923
|
get when() {
|
|
9869
9924
|
return currentHealth().startupIssues.length > 0;
|
|
9870
9925
|
},
|
|
9871
9926
|
get children() {
|
|
9872
|
-
var _el$
|
|
9873
|
-
insert(_el$
|
|
9874
|
-
var _el$
|
|
9875
|
-
insert(_el$
|
|
9876
|
-
insert(_el$
|
|
9877
|
-
insert(_el$
|
|
9927
|
+
var _el$52 = _tmpl$16();
|
|
9928
|
+
insert(_el$52, () => currentHealth().startupIssues.map((issue) => (() => {
|
|
9929
|
+
var _el$56 = _tmpl$19(), _el$57 = _el$56.firstChild, _el$58 = _el$57.nextSibling;
|
|
9930
|
+
insert(_el$57, () => issue.title);
|
|
9931
|
+
insert(_el$58, () => issue.detail);
|
|
9932
|
+
insert(_el$56, createComponent(Show, {
|
|
9878
9933
|
get when() {
|
|
9879
9934
|
return issue.action;
|
|
9880
9935
|
},
|
|
9881
9936
|
children: (action) => (() => {
|
|
9882
|
-
var _el$
|
|
9883
|
-
insert(_el$
|
|
9884
|
-
return _el$
|
|
9937
|
+
var _el$59 = _tmpl$20();
|
|
9938
|
+
insert(_el$59, action);
|
|
9939
|
+
return _el$59;
|
|
9885
9940
|
})()
|
|
9886
9941
|
}), null);
|
|
9887
9942
|
createRenderEffect((_p$) => {
|
|
9888
9943
|
var _v$3 = !!(issue.severity === "warning"), _v$4 = !!(issue.severity === "error");
|
|
9889
|
-
_v$3 !== _p$.e && _el$
|
|
9890
|
-
_v$4 !== _p$.t && _el$
|
|
9944
|
+
_v$3 !== _p$.e && _el$56.classList.toggle("warning", _p$.e = _v$3);
|
|
9945
|
+
_v$4 !== _p$.t && _el$56.classList.toggle("error", _p$.t = _v$4);
|
|
9891
9946
|
return _p$;
|
|
9892
9947
|
}, {
|
|
9893
9948
|
e: void 0,
|
|
9894
9949
|
t: void 0
|
|
9895
9950
|
});
|
|
9896
|
-
return _el$
|
|
9951
|
+
return _el$56;
|
|
9897
9952
|
})()));
|
|
9898
|
-
return _el$
|
|
9953
|
+
return _el$52;
|
|
9899
9954
|
}
|
|
9900
9955
|
}), null);
|
|
9901
|
-
return _el$
|
|
9956
|
+
return _el$46;
|
|
9902
9957
|
})()
|
|
9903
|
-
}), _el$
|
|
9904
|
-
_el$
|
|
9905
|
-
setAttribute(_el$
|
|
9958
|
+
}), _el$37);
|
|
9959
|
+
_el$39.$$input = (e) => props.setObsidianVaultPath(e.currentTarget.value);
|
|
9960
|
+
setAttribute(_el$39, "spellcheck", false);
|
|
9906
9961
|
createRenderEffect((_p$) => {
|
|
9907
9962
|
var _v$ = !!props.chat.enabled(), _v$2 = props.chat.enabled();
|
|
9908
9963
|
_v$ !== _p$.e && _el$5.classList.toggle("on", _p$.e = _v$);
|
|
@@ -9912,9 +9967,9 @@ const SettingsAgent = (props) => {
|
|
|
9912
9967
|
e: void 0,
|
|
9913
9968
|
t: void 0
|
|
9914
9969
|
});
|
|
9915
|
-
createRenderEffect(() => _el$
|
|
9916
|
-
createRenderEffect(() => _el$
|
|
9917
|
-
createRenderEffect(() => _el$
|
|
9970
|
+
createRenderEffect(() => _el$29.value = props.mcpPort());
|
|
9971
|
+
createRenderEffect(() => _el$36.value = props.agentTranscriptMode());
|
|
9972
|
+
createRenderEffect(() => _el$39.value = props.obsidianVaultPath());
|
|
9918
9973
|
return _el$;
|
|
9919
9974
|
})();
|
|
9920
9975
|
};
|
|
@@ -11607,6 +11662,7 @@ const Settings = () => {
|
|
|
11607
11662
|
const [chatHasStoredApiKey, setChatHasStoredApiKey] = createSignal(false);
|
|
11608
11663
|
const [chatModel, setChatModel] = createSignal("");
|
|
11609
11664
|
const [chatBaseUrl, setChatBaseUrl] = createSignal("");
|
|
11665
|
+
const [chatReasoningEffort, setChatReasoningEffort] = createSignal("off");
|
|
11610
11666
|
const chatProviderMeta = () => CHAT_PROVIDERS.find((p) => p.id === chatProviderId()) ?? CHAT_PROVIDERS[0];
|
|
11611
11667
|
const [providerModels, setProviderModels] = createSignal([]);
|
|
11612
11668
|
const [modelFetchState, setModelFetchState] = createSignal("idle");
|
|
@@ -11692,9 +11748,11 @@ const Settings = () => {
|
|
|
11692
11748
|
setChatHasStoredApiKey(cp.hasApiKey === true);
|
|
11693
11749
|
setChatModel(cp.model);
|
|
11694
11750
|
setChatBaseUrl(cp.baseUrl ?? "");
|
|
11751
|
+
setChatReasoningEffort(cp.reasoningEffort ?? "off");
|
|
11695
11752
|
} else {
|
|
11696
11753
|
setChatApiKey("");
|
|
11697
11754
|
setChatHasStoredApiKey(false);
|
|
11755
|
+
setChatReasoningEffort("off");
|
|
11698
11756
|
}
|
|
11699
11757
|
setTelemetryEnabled(settings.telemetryEnabled !== false);
|
|
11700
11758
|
const dp = settings.domainPolicy ?? {
|
|
@@ -11796,7 +11854,8 @@ const Settings = () => {
|
|
|
11796
11854
|
apiKey: chatApiKey().trim(),
|
|
11797
11855
|
hasApiKey: chatHasStoredApiKey() && !chatApiKey().trim(),
|
|
11798
11856
|
model: chatModel().trim() || chatProviderMeta().defaultModel,
|
|
11799
|
-
baseUrl: chatBaseUrl().trim() || void 0
|
|
11857
|
+
baseUrl: chatBaseUrl().trim() || void 0,
|
|
11858
|
+
reasoningEffort: chatReasoningEffort()
|
|
11800
11859
|
} : null;
|
|
11801
11860
|
await window.vessel.settings.set("chatProvider", chatConfig);
|
|
11802
11861
|
await loadState();
|
|
@@ -11906,6 +11965,8 @@ const Settings = () => {
|
|
|
11906
11965
|
setModel: setChatModel,
|
|
11907
11966
|
baseUrl: chatBaseUrl,
|
|
11908
11967
|
setBaseUrl: setChatBaseUrl,
|
|
11968
|
+
reasoningEffort: chatReasoningEffort,
|
|
11969
|
+
setReasoningEffort: setChatReasoningEffort,
|
|
11909
11970
|
providerModels,
|
|
11910
11971
|
modelFetchState,
|
|
11911
11972
|
modelFetchWarning,
|