@quanta-intellect/vessel-browser 0.1.144 → 0.1.146

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.
@@ -20,7 +20,14 @@ const AIChannels = {
20
20
  AGENT_CHECKPOINT_UPDATE_NOTE: "agent:checkpoint-update-note",
21
21
  AGENT_UNDO_LAST_ACTION: "agent:undo-last-action",
22
22
  AGENT_SESSION_CAPTURE: "agent:session-capture",
23
- AGENT_SESSION_RESTORE: "agent:session-restore"
23
+ AGENT_SESSION_RESTORE: "agent:session-restore",
24
+ AGENT_TASK_START: "agent:task-start",
25
+ AGENT_TASK_UPDATE: "agent:task-update",
26
+ AGENT_TASK_NOTE: "agent:task-note",
27
+ AGENT_TASK_BLOCKER: "agent:task-blocker",
28
+ AGENT_TASK_RESOLVE: "agent:task-resolve",
29
+ AGENT_TASK_ABANDON: "agent:task-abandon",
30
+ AGENT_TASK_CLEAR: "agent:task-clear"
24
31
  };
25
32
  const AutofillChannels = {
26
33
  AUTOFILL_LIST: "autofill:list",
@@ -374,7 +381,14 @@ const api = {
374
381
  updateCheckpointNote: (checkpointId, note) => electron.ipcRenderer.invoke(Channels.AGENT_CHECKPOINT_UPDATE_NOTE, checkpointId, note),
375
382
  undoLastAction: () => electron.ipcRenderer.invoke(Channels.AGENT_UNDO_LAST_ACTION),
376
383
  captureSession: (note) => electron.ipcRenderer.invoke(Channels.AGENT_SESSION_CAPTURE, note),
377
- restoreSession: (snapshot) => electron.ipcRenderer.invoke(Channels.AGENT_SESSION_RESTORE, snapshot)
384
+ restoreSession: (snapshot) => electron.ipcRenderer.invoke(Channels.AGENT_SESSION_RESTORE, snapshot),
385
+ startTaskMemory: (goal) => electron.ipcRenderer.invoke(Channels.AGENT_TASK_START, goal),
386
+ updateTaskMemory: (patch) => electron.ipcRenderer.invoke(Channels.AGENT_TASK_UPDATE, patch),
387
+ addTaskNote: (text) => electron.ipcRenderer.invoke(Channels.AGENT_TASK_NOTE, text),
388
+ setTaskBlocker: (blocker) => electron.ipcRenderer.invoke(Channels.AGENT_TASK_BLOCKER, blocker),
389
+ resolveTaskMemory: (summary) => electron.ipcRenderer.invoke(Channels.AGENT_TASK_RESOLVE, summary),
390
+ abandonTaskMemory: (reason) => electron.ipcRenderer.invoke(Channels.AGENT_TASK_ABANDON, reason),
391
+ clearTaskMemory: () => electron.ipcRenderer.invoke(Channels.AGENT_TASK_CLEAR)
378
392
  },
379
393
  research: {
380
394
  getState: () => electron.ipcRenderer.invoke(Channels.RESEARCH_STATE_GET),
@@ -1147,6 +1147,112 @@
1147
1147
  white-space: nowrap;
1148
1148
  }
1149
1149
 
1150
+ /* ═══════════════════════════════════════
1151
+ Task Memory overlay — in-flow progress
1152
+ ═══════════════════════════════════════ */
1153
+
1154
+ .task-memory-status {
1155
+ font-size: 10px;
1156
+ font-weight: 600;
1157
+ text-transform: uppercase;
1158
+ letter-spacing: 0.5px;
1159
+ padding: 2px 6px;
1160
+ border-radius: 3px;
1161
+ flex-shrink: 0;
1162
+ }
1163
+
1164
+ .task-memory-status-active {
1165
+ color: var(--accent-primary);
1166
+ background: color-mix(in srgb, var(--accent-primary) 12%, transparent);
1167
+ }
1168
+
1169
+ .task-memory-status-completed {
1170
+ color: var(--accent-secondary, #8aad6b);
1171
+ background: color-mix(in srgb, var(--accent-secondary, #8aad6b) 12%, transparent);
1172
+ }
1173
+
1174
+ .task-memory-status-abandoned {
1175
+ color: var(--text-muted);
1176
+ background: color-mix(in srgb, var(--text-muted) 8%, transparent);
1177
+ }
1178
+
1179
+ .task-memory-status-blocked {
1180
+ color: var(--status-error);
1181
+ background: color-mix(in srgb, var(--status-error) 12%, transparent);
1182
+ }
1183
+
1184
+ .task-memory-blocker {
1185
+ margin-top: 6px;
1186
+ font-size: 11px;
1187
+ color: var(--status-error);
1188
+ line-height: 1.4;
1189
+ }
1190
+
1191
+ .task-memory-next-step {
1192
+ margin-top: 4px;
1193
+ font-size: 11px;
1194
+ color: var(--text-secondary);
1195
+ line-height: 1.4;
1196
+ }
1197
+
1198
+ .task-memory-facts {
1199
+ margin-top: 6px;
1200
+ display: flex;
1201
+ flex-direction: column;
1202
+ gap: 2px;
1203
+ }
1204
+
1205
+ .task-memory-fact {
1206
+ display: flex;
1207
+ gap: 6px;
1208
+ font-size: 11px;
1209
+ line-height: 1.4;
1210
+ }
1211
+
1212
+ .task-memory-fact-key {
1213
+ color: var(--text-muted);
1214
+ flex-shrink: 0;
1215
+ }
1216
+
1217
+ .task-memory-fact-key::after {
1218
+ content: ":";
1219
+ }
1220
+
1221
+ .task-memory-fact-value {
1222
+ color: var(--text-secondary);
1223
+ overflow: hidden;
1224
+ text-overflow: ellipsis;
1225
+ white-space: nowrap;
1226
+ }
1227
+
1228
+ .task-memory-notes {
1229
+ margin-top: 6px;
1230
+ display: flex;
1231
+ flex-direction: column;
1232
+ gap: 3px;
1233
+ }
1234
+
1235
+ .task-memory-note {
1236
+ display: flex;
1237
+ gap: 6px;
1238
+ font-size: 11px;
1239
+ line-height: 1.4;
1240
+ }
1241
+
1242
+ .task-memory-note-time {
1243
+ color: var(--text-muted);
1244
+ flex-shrink: 0;
1245
+ font-family: var(--font-mono);
1246
+ font-size: 10px;
1247
+ }
1248
+
1249
+ .task-memory-note-text {
1250
+ color: var(--text-secondary);
1251
+ overflow: hidden;
1252
+ text-overflow: ellipsis;
1253
+ white-space: nowrap;
1254
+ }
1255
+
1150
1256
  /* ═══════════════════════════════════════
1151
1257
  Agent transcript dock — floating panel
1152
1258
  ═══════════════════════════════════════ */
@@ -7011,6 +7117,11 @@
7011
7117
  background-repeat: no-repeat;
7012
7118
  background-position: right 10px center;
7013
7119
  }
7120
+ .settings-select option,
7121
+ .settings-select optgroup {
7122
+ color: var(--text-primary);
7123
+ background-color: var(--bg-elevated);
7124
+ }
7014
7125
  .settings-textarea {
7015
7126
  width: 100%;
7016
7127
  padding: 8px 10px;
@@ -2497,6 +2497,7 @@ const DEFAULT_RUNTIME_STATE = {
2497
2497
  mcpStatus: "stopped",
2498
2498
  flowState: null,
2499
2499
  taskTracker: null,
2500
+ taskMemory: null,
2500
2501
  canUndo: false,
2501
2502
  undoInfo: null
2502
2503
  };
@@ -2538,7 +2539,14 @@ function useRuntime() {
2538
2539
  updateCheckpointNote: (checkpointId, note) => window.vessel.ai.updateCheckpointNote(checkpointId, note),
2539
2540
  undoLastAction: () => window.vessel.ai.undoLastAction(),
2540
2541
  captureSession: (note) => window.vessel.ai.captureSession(note),
2541
- restoreSession: () => window.vessel.ai.restoreSession()
2542
+ restoreSession: () => window.vessel.ai.restoreSession(),
2543
+ startTaskMemory: (goal) => window.vessel.ai.startTaskMemory(goal),
2544
+ updateTaskMemory: (patch) => window.vessel.ai.updateTaskMemory(patch),
2545
+ addTaskNote: (text2) => window.vessel.ai.addTaskNote(text2),
2546
+ setTaskBlocker: (blocker) => window.vessel.ai.setTaskBlocker(blocker),
2547
+ resolveTaskMemory: (summary) => window.vessel.ai.resolveTaskMemory(summary),
2548
+ abandonTaskMemory: (reason) => window.vessel.ai.abandonTaskMemory(reason),
2549
+ clearTaskMemory: () => window.vessel.ai.clearTaskMemory()
2542
2550
  };
2543
2551
  }
2544
2552
  const AGENT_ACTIVITY_WINDOW_MS = 6e3;
@@ -2573,7 +2581,7 @@ function getAgentActiveTabIds(state, currentTime = Date.now()) {
2573
2581
  }
2574
2582
  return activeTabIds;
2575
2583
  }
2576
- var _tmpl$$r = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$q = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$m = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list></div><div class=tab-actions><button class=tab-new data-tooltip="New window"data-tooltip-pos=left></button><button class=tab-new data-tooltip="Add active tab to group"data-tooltip-pos=left></button><button class=tab-new data-tooltip="New tab"data-tooltip-pos=left></button><button class="tab-new tab-new-private"data-tooltip="Private window"data-tooltip-pos=left><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11z">`), _tmpl$4$l = /* @__PURE__ */ template(`<button><span class=tab-group-dot></span><span class=tab-group-name></span><span class=tab-group-count>`), _tmpl$5$h = /* @__PURE__ */ template(`<button class="tab-audio tab-audio-pinned">`), _tmpl$6$f = /* @__PURE__ */ template(`<div role=tab>`), _tmpl$7$d = /* @__PURE__ */ template(`<span class=tab-title>`), _tmpl$8$a = /* @__PURE__ */ template(`<button class=tab-audio>`), _tmpl$9$9 = /* @__PURE__ */ template(`<button class=tab-close>×`), _tmpl$0$7 = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$1$7 = /* @__PURE__ */ template(`<span class=tab-loading>`);
2584
+ var _tmpl$$r = /* @__PURE__ */ template(`<img class=tab-favicon alt>`), _tmpl$2$q = /* @__PURE__ */ template(`<span class=tab-favicon-fallback>`), _tmpl$3$m = /* @__PURE__ */ template(`<div class=tab-bar><div class=tab-list></div><div class=tab-actions><button class=tab-new data-tooltip="New window"data-tooltip-pos=left></button><button class=tab-new data-tooltip="Add active tab to group"data-tooltip-pos=left></button><button class=tab-new data-tooltip="New tab"data-tooltip-pos=left></button><button class="tab-new tab-new-private"data-tooltip="Private window"data-tooltip-pos=left><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11z">`), _tmpl$4$l = /* @__PURE__ */ template(`<button><span class=tab-group-dot></span><span class=tab-group-name></span><span class=tab-group-count>`), _tmpl$5$h = /* @__PURE__ */ template(`<button class="tab-audio tab-audio-pinned">`), _tmpl$6$g = /* @__PURE__ */ template(`<div role=tab>`), _tmpl$7$e = /* @__PURE__ */ template(`<span class=tab-title>`), _tmpl$8$b = /* @__PURE__ */ template(`<button class=tab-audio>`), _tmpl$9$a = /* @__PURE__ */ template(`<button class=tab-close>×`), _tmpl$0$8 = /* @__PURE__ */ template(`<span class=tab-agent-indicator aria-hidden=true title="Agent active on this tab">`), _tmpl$1$8 = /* @__PURE__ */ template(`<span class=tab-loading>`);
2577
2585
  const TAB_CLOSE_MS = 200;
2578
2586
  function stringToHue(str) {
2579
2587
  let hash = 0;
@@ -2710,7 +2718,7 @@ const TabBar = () => {
2710
2718
  return memo(() => entry.type === "tab")() && (() => {
2711
2719
  const tab = entry.tab;
2712
2720
  return (() => {
2713
- var _el$12 = _tmpl$6$f();
2721
+ var _el$12 = _tmpl$6$g();
2714
2722
  _el$12.$$contextmenu = (e) => {
2715
2723
  e.preventDefault();
2716
2724
  window.vessel.tabs.showContextMenu(tab.id);
@@ -2761,8 +2769,8 @@ const TabBar = () => {
2761
2769
  }), null);
2762
2770
  insert(_el$12, (() => {
2763
2771
  var _c$ = memo(() => !!!tab.isPinned);
2764
- return () => _c$() && [memo(() => memo(() => !!modelActiveTabIds().has(tab.id))() && _tmpl$0$7()), (() => {
2765
- var _el$14 = _tmpl$7$d();
2772
+ return () => _c$() && [memo(() => memo(() => !!modelActiveTabIds().has(tab.id))() && _tmpl$0$8()), (() => {
2773
+ var _el$14 = _tmpl$7$e();
2766
2774
  insert(_el$14, () => tab.title || "New Tab");
2767
2775
  return _el$14;
2768
2776
  })(), createComponent(Show, {
@@ -2770,7 +2778,7 @@ const TabBar = () => {
2770
2778
  return tab.isAudible || tab.isMuted;
2771
2779
  },
2772
2780
  get children() {
2773
- var _el$15 = _tmpl$8$a();
2781
+ var _el$15 = _tmpl$8$b();
2774
2782
  _el$15.$$click = (e) => {
2775
2783
  e.stopPropagation();
2776
2784
  void toggleMute(tab.id);
@@ -2793,8 +2801,8 @@ const TabBar = () => {
2793
2801
  createRenderEffect(() => setAttribute(_el$15, "title", tab.isMuted ? "Unmute tab" : "Mute tab"));
2794
2802
  return _el$15;
2795
2803
  }
2796
- }), memo(() => memo(() => !!tab.isLoading)() && _tmpl$1$7()), (() => {
2797
- var _el$16 = _tmpl$9$9();
2804
+ }), memo(() => memo(() => !!tab.isLoading)() && _tmpl$1$8()), (() => {
2805
+ var _el$16 = _tmpl$9$a();
2798
2806
  _el$16.$$click = (e) => {
2799
2807
  e.stopPropagation();
2800
2808
  handleClose(tab.id);
@@ -3330,7 +3338,7 @@ const SEARCH_ENGINE_PRESETS = {
3330
3338
  ecosia: { label: "Ecosia", url: "https://www.ecosia.org/search?q=" },
3331
3339
  kagi: { label: "Kagi", url: "https://kagi.com/search?q=" }
3332
3340
  };
3333
- var _tmpl$$p = /* @__PURE__ */ template(`<div class=private-badge title="Private Browsing - history and cookies are not saved"><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11zM5.5 7a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zm3.5 3.5c0-1-1.5-2-2.5-2s-2.5 1-2.5 2"></path></svg><span>Private`), _tmpl$2$o = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z">`), _tmpl$3$k = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.5>`), _tmpl$4$j = /* @__PURE__ */ template(`<div class=security-indicator-wrapper><button>`), _tmpl$5$f = /* @__PURE__ */ template(`<div id=address-autocomplete class=autocomplete-dropdown role=listbox>`), _tmpl$6$e = /* @__PURE__ */ template(`<button class=page-diff-trigger title="Open the What Changed timeline"><span class=page-diff-trigger-dot aria-hidden=true></span><span class=page-diff-trigger-text>What Changed?`), _tmpl$7$c = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$8$9 = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Recent detections`), _tmpl$9$8 = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>Compared with your last visit</span><span class=page-diff-burst-meta>Previous snapshot from </span></div><div style=display:flex;gap:8px;align-items:center><button class=nav-btn title="Open the full What Changed timeline"style="height:24px;min-width:auto;padding:0 8px">Timeline</button><button class=page-diff-popup-close>&times;`), _tmpl$0$6 = /* @__PURE__ */ template(`<svg><path d="M3 3 L11 3 L11 9 Q7 13 3 9 Z"fill=none stroke=currentColor stroke-width=1.2 stroke-linejoin=round></svg>`, false, true, false), _tmpl$1$6 = /* @__PURE__ */ template(`<svg><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.4 stroke-linecap=round></svg>`, false, true, false), _tmpl$10$6 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Reader Mode"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=2 y=1 width=10 height=12 rx=1 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=4 y1=4 x2=10 y2=4 stroke=currentColor stroke-width=1></line><line x1=4 y1=6.5 x2=10 y2=6.5 stroke=currentColor stroke-width=1></line><line x1=4 y1=9 x2=8 y2=9 stroke=currentColor stroke-width=1>`), _tmpl$11$6 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round>`), _tmpl$12$6 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$13$5 = /* @__PURE__ */ template(`<button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2>`), _tmpl$14$5 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Clear Data">`), _tmpl$15$5 = /* @__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$16$4 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"autocomplete=off aria-autocomplete=list aria-controls=address-autocomplete></form></div><div class=toolbar-actions><button class=nav-btn><svg width=14 height=14 viewBox="0 0 14 14">`), _tmpl$17$4 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><circle cx=7 cy=8 r=0.8 fill=white>`), _tmpl$18$4 = /* @__PURE__ */ template(`<div role=option><span class=autocomplete-icon></span><span class=autocomplete-text><span class=autocomplete-title></span><span class=autocomplete-url>`), _tmpl$19$4 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$20$4 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-section>`), _tmpl$21$4 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-part><span>`), _tmpl$22$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$23$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$24$4 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$25$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$26$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$27$3 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><div class=page-diff-badges><span class=page-diff-kind></span><span class=page-diff-section></span></div><span class=page-diff-summary>`), _tmpl$28$3 = /* @__PURE__ */ template(`<li>`);
3341
+ var _tmpl$$p = /* @__PURE__ */ template(`<div class=private-badge title="Private Browsing - history and cookies are not saved"><svg width=12 height=12 viewBox="0 0 16 16"fill=currentColor><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 110 11 5.5 5.5 0 010-11zM5.5 7a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zm3.5 3.5c0-1-1.5-2-2.5-2s-2.5 1-2.5 2"></path></svg><span>Private`), _tmpl$2$o = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z">`), _tmpl$3$k = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><line x1=2 y1=12 x2=12 y2=2 stroke=currentColor stroke-width=1.5>`), _tmpl$4$j = /* @__PURE__ */ template(`<div class=security-indicator-wrapper><button>`), _tmpl$5$f = /* @__PURE__ */ template(`<div id=address-autocomplete class=autocomplete-dropdown role=listbox>`), _tmpl$6$f = /* @__PURE__ */ template(`<button class=page-diff-trigger title="Open the What Changed timeline"><span class=page-diff-trigger-dot aria-hidden=true></span><span class=page-diff-trigger-text>What Changed?`), _tmpl$7$d = /* @__PURE__ */ template(`<span class=page-diff-burst-meta>Updated <!> times over `), _tmpl$8$a = /* @__PURE__ */ template(`<div class=page-diff-burst-history><div class=page-diff-burst-history-label>Recent detections`), _tmpl$9$9 = /* @__PURE__ */ template(`<div class=page-diff-popup><div class=page-diff-popup-header><div class=page-diff-popup-header-copy><span>Compared with your last visit</span><span class=page-diff-burst-meta>Previous snapshot from </span></div><div style=display:flex;gap:8px;align-items:center><button class=nav-btn title="Open the full What Changed timeline"style="height:24px;min-width:auto;padding:0 8px">Timeline</button><button class=page-diff-popup-close>&times;`), _tmpl$0$7 = /* @__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$1$7 = /* @__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$10$7 = /* @__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$11$6 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Dev Tools"><svg width=14 height=14 viewBox="0 0 14 14"><polyline points="3,5 1,7 3,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><polyline points="11,5 13,7 11,9"fill=none stroke=currentColor stroke-width=1.2 stroke-linecap=round stroke-linejoin=round></polyline><line x1=8.5 y1=2 x2=5.5 y2=12 stroke=currentColor stroke-width=1.2 stroke-linecap=round>`), _tmpl$12$6 = /* @__PURE__ */ template(`<span class=nav-btn-badge>`), _tmpl$13$5 = /* @__PURE__ */ template(`<button class="nav-btn nav-btn-sidebar"><svg width=14 height=14 viewBox="0 0 14 14"><rect x=1 y=1 width=12 height=12 rx=1.5 fill=none stroke=currentColor stroke-width=1.2></rect><line x1=9 y1=1 x2=9 y2=13 stroke=currentColor stroke-width=1.2>`), _tmpl$14$5 = /* @__PURE__ */ template(`<button class=nav-btn data-tooltip="Clear Data">`), _tmpl$15$5 = /* @__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$16$4 = /* @__PURE__ */ template(`<div class=address-bar><div class=nav-controls><button class=nav-btn data-tooltip=Back><svg width=14 height=14 viewBox="0 0 14 14"><path d="M9 2L4 7l5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Forward><svg width=14 height=14 viewBox="0 0 14 14"><path d="M5 2l5 5-5 5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button><button class=nav-btn data-tooltip=Reload><svg width=14 height=14 viewBox="0 0 14 14"><path d="M2.5 7a4.5 4.5 0 1 1 1 3"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round></path><path d="M2 4v3.5h3.5"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round></path></svg></button></div><div class=url-shell><form class=url-form><input class=url-input type=text placeholder="Search or enter URL"autocomplete=off aria-autocomplete=list aria-controls=address-autocomplete></form></div><div class=toolbar-actions><button class=nav-btn><svg width=14 height=14 viewBox="0 0 14 14">`), _tmpl$17$4 = /* @__PURE__ */ template(`<svg width=14 height=14 viewBox="0 0 14 14"fill=currentColor><path d="M7 1a4 4 0 00-4 4v2H1.5a.5.5 0 00-.5.5v5a.5.5 0 00.5.5h11a.5.5 0 00.5-.5v-5a.5.5 0 00-.5-.5H11V5a4 4 0 00-4-4zm0 1a3 3 0 013 3v2H4V5a3 3 0 013-3z"></path><circle cx=7 cy=8 r=0.8 fill=white>`), _tmpl$18$4 = /* @__PURE__ */ template(`<div role=option><span class=autocomplete-icon></span><span class=autocomplete-text><span class=autocomplete-title></span><span class=autocomplete-url>`), _tmpl$19$4 = /* @__PURE__ */ template(`<div class=page-diff-burst-row><span class=page-diff-burst-time></span><span class=page-diff-burst-summary>`), _tmpl$20$4 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-section>`), _tmpl$21$4 = /* @__PURE__ */ template(`<span class=page-diff-burst-summary-part><span>`), _tmpl$22$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>Before</span><span class=page-diff-snippet-text>`), _tmpl$23$4 = /* @__PURE__ */ template(`<div class=page-diff-snippet><span class=page-diff-snippet-label>After</span><span class=page-diff-snippet-text>`), _tmpl$24$4 = /* @__PURE__ */ template(`<div class=page-diff-snippets>`), _tmpl$25$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Added</span><ul class=page-diff-list>`), _tmpl$26$3 = /* @__PURE__ */ template(`<div class=page-diff-list-group><span class=page-diff-list-label>Removed</span><ul class=page-diff-list>`), _tmpl$27$3 = /* @__PURE__ */ template(`<div><div class=page-diff-item-header><div class=page-diff-badges><span class=page-diff-kind></span><span class=page-diff-section></span></div><span class=page-diff-summary>`), _tmpl$28$3 = /* @__PURE__ */ template(`<li>`);
3334
3342
  const AddressBar = (props) => {
3335
3343
  const {
3336
3344
  activeTab,
@@ -3764,7 +3772,7 @@ const AddressBar = (props) => {
3764
3772
  return pageDiff();
3765
3773
  },
3766
3774
  get children() {
3767
- var _el$15 = _tmpl$6$e();
3775
+ var _el$15 = _tmpl$6$f();
3768
3776
  _el$15.$$click = () => void openDiffTimeline();
3769
3777
  return _el$15;
3770
3778
  }
@@ -3774,7 +3782,7 @@ const AddressBar = (props) => {
3774
3782
  return memo(() => !!pageDiff())() && diffExpanded();
3775
3783
  },
3776
3784
  get children() {
3777
- var _el$16 = _tmpl$9$8(), _el$17 = _el$16.firstChild, _el$18 = _el$17.firstChild, _el$19 = _el$18.firstChild, _el$20 = _el$19.nextSibling;
3785
+ var _el$16 = _tmpl$9$9(), _el$17 = _el$16.firstChild, _el$18 = _el$17.firstChild, _el$19 = _el$18.firstChild, _el$20 = _el$19.nextSibling;
3778
3786
  _el$20.firstChild;
3779
3787
  var _el$27 = _el$18.nextSibling, _el$28 = _el$27.firstChild, _el$29 = _el$28.nextSibling;
3780
3788
  insert(_el$20, () => formatRelativeTime(pageDiff().oldSnapshot.capturedAt), null);
@@ -3783,7 +3791,7 @@ const AddressBar = (props) => {
3783
3791
  return memo(() => !!((pageDiff().burstCount || 0) > 1 && pageDiff().firstDetectedAt))() && pageDiff().lastDetectedAt;
3784
3792
  },
3785
3793
  get children() {
3786
- var _el$22 = _tmpl$7$c(), _el$23 = _el$22.firstChild, _el$26 = _el$23.nextSibling;
3794
+ var _el$22 = _tmpl$7$d(), _el$23 = _el$22.firstChild, _el$26 = _el$23.nextSibling;
3787
3795
  _el$26.nextSibling;
3788
3796
  insert(_el$22, () => pageDiff().burstCount, _el$26);
3789
3797
  insert(_el$22, () => formatElapsedTime(pageDiff().firstDetectedAt, pageDiff().lastDetectedAt), null);
@@ -3797,7 +3805,7 @@ const AddressBar = (props) => {
3797
3805
  return memo(() => !!pageDiff().recentBursts?.length)() && (pageDiff().recentBursts?.length || 0) > 1;
3798
3806
  },
3799
3807
  get children() {
3800
- var _el$30 = _tmpl$8$9();
3808
+ var _el$30 = _tmpl$8$a();
3801
3809
  _el$30.firstChild;
3802
3810
  insert(_el$30, createComponent(For, {
3803
3811
  get each() {
@@ -3929,7 +3937,7 @@ const AddressBar = (props) => {
3929
3937
  return activeTab()?.adBlockingEnabled;
3930
3938
  },
3931
3939
  get children() {
3932
- return _tmpl$0$6();
3940
+ return _tmpl$0$7();
3933
3941
  }
3934
3942
  }), null);
3935
3943
  insert(_el$34, createComponent(Show, {
@@ -3937,13 +3945,13 @@ const AddressBar = (props) => {
3937
3945
  return !activeTab()?.adBlockingEnabled;
3938
3946
  },
3939
3947
  get children() {
3940
- return [_tmpl$0$6(), _tmpl$1$6()];
3948
+ return [_tmpl$0$7(), _tmpl$1$7()];
3941
3949
  }
3942
3950
  }), null);
3943
3951
  insert(_el$32, createComponent(Show, {
3944
3952
  when: !isPrivateWindow,
3945
3953
  get children() {
3946
- var _el$38 = _tmpl$10$6();
3954
+ var _el$38 = _tmpl$10$7();
3947
3955
  _el$38.$$click = () => window.vessel.content.toggleReader();
3948
3956
  createRenderEffect(() => _el$38.classList.toggle("active", !!activeTab()?.isReaderMode));
3949
3957
  return _el$38;
@@ -4159,7 +4167,7 @@ const HighlightNotifications = (props) => {
4159
4167
  });
4160
4168
  };
4161
4169
  delegateEvents(["click"]);
4162
- var _tmpl$$m = /* @__PURE__ */ template(`<div class=download-toast-stack aria-live=polite>`), _tmpl$2$m = /* @__PURE__ */ template(`<span class=download-toast-done>&#10003;`), _tmpl$3$j = /* @__PURE__ */ template(`<span class=download-toast-failed>!`), _tmpl$4$i = /* @__PURE__ */ template(`<div class=download-toast-bar-track><div class=download-toast-bar-fill>`), _tmpl$5$e = /* @__PURE__ */ template(`<div class=download-toast-size>`), _tmpl$6$d = /* @__PURE__ */ template(`<div class="download-toast-size download-toast-size-done"> downloaded`), _tmpl$7$b = /* @__PURE__ */ template(`<div class=download-toast role=status><div class=download-toast-header><span class=download-toast-filename>`);
4170
+ var _tmpl$$m = /* @__PURE__ */ template(`<div class=download-toast-stack aria-live=polite>`), _tmpl$2$m = /* @__PURE__ */ template(`<span class=download-toast-done>&#10003;`), _tmpl$3$j = /* @__PURE__ */ template(`<span class=download-toast-failed>!`), _tmpl$4$i = /* @__PURE__ */ template(`<div class=download-toast-bar-track><div class=download-toast-bar-fill>`), _tmpl$5$e = /* @__PURE__ */ template(`<div class=download-toast-size>`), _tmpl$6$e = /* @__PURE__ */ template(`<div class="download-toast-size download-toast-size-done"> downloaded`), _tmpl$7$c = /* @__PURE__ */ template(`<div class=download-toast role=status><div class=download-toast-header><span class=download-toast-filename>`);
4163
4171
  const TOAST_DONE_DURATION_MS = 4200;
4164
4172
  const TOAST_EXIT_MS = 300;
4165
4173
  function formatBytes$1(bytes) {
@@ -4256,7 +4264,7 @@ const DownloadToast = () => {
4256
4264
  return downloads();
4257
4265
  },
4258
4266
  children: (dl) => (() => {
4259
- var _el$2 = _tmpl$7$b(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
4267
+ var _el$2 = _tmpl$7$c(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
4260
4268
  insert(_el$4, () => dl.filename);
4261
4269
  insert(_el$3, createComponent(Show, {
4262
4270
  get when() {
@@ -4303,7 +4311,7 @@ const DownloadToast = () => {
4303
4311
  return dl.state === "completed";
4304
4312
  },
4305
4313
  get children() {
4306
- var _el$0 = _tmpl$6$d(), _el$1 = _el$0.firstChild;
4314
+ var _el$0 = _tmpl$6$e(), _el$1 = _el$0.firstChild;
4307
4315
  insert(_el$0, () => formatBytes$1(dl.receivedBytes), _el$1);
4308
4316
  return _el$0;
4309
4317
  }
@@ -4492,13 +4500,26 @@ const FindBar = () => {
4492
4500
  });
4493
4501
  };
4494
4502
  delegateEvents(["input", "click"]);
4495
- var _tmpl$$j = /* @__PURE__ */ template(`<div class=flow-progress>`), _tmpl$2$j = /* @__PURE__ */ template(`<div class=flow-progress-hint>Last: `), _tmpl$3$h = /* @__PURE__ */ template(`<div class=flow-progress-hint>Next: `), _tmpl$4$g = /* @__PURE__ */ template(`<div class=flow-progress-section><div class=flow-progress-header><span class=flow-progress-goal></span><span class=flow-progress-pct>%</span></div><div class=flow-progress-bar-track><div class=flow-progress-bar-fill></div></div><div class=flow-steps>`), _tmpl$5$d = /* @__PURE__ */ template(`<div><span class=flow-step-dot></span><span class=flow-step-label>`);
4503
+ var _tmpl$$j = /* @__PURE__ */ template(`<div class=flow-progress>`), _tmpl$2$j = /* @__PURE__ */ template(`<div class=task-memory-blocker>Blocked: `), _tmpl$3$h = /* @__PURE__ */ template(`<div class=task-memory-next-step>Next: `), _tmpl$4$g = /* @__PURE__ */ template(`<div class=task-memory-facts>`), _tmpl$5$d = /* @__PURE__ */ template(`<div class=task-memory-notes>`), _tmpl$6$d = /* @__PURE__ */ template(`<div class=flow-progress-section><div class=flow-progress-header><span class=flow-progress-goal> </span><span>`), _tmpl$7$b = /* @__PURE__ */ template(`<div class=task-memory-fact><span class=task-memory-fact-key></span><span class=task-memory-fact-value>`), _tmpl$8$9 = /* @__PURE__ */ template(`<div class=task-memory-note><span class=task-memory-note-time></span><span class=task-memory-note-text>`), _tmpl$9$8 = /* @__PURE__ */ template(`<div class=flow-progress-hint>Last: `), _tmpl$0$6 = /* @__PURE__ */ template(`<div class=flow-progress-hint>Next: `), _tmpl$1$6 = /* @__PURE__ */ template(`<div class=flow-progress-section><div class=flow-progress-header><span class=flow-progress-goal></span><span class=flow-progress-pct>%</span></div><div class=flow-progress-bar-track><div class=flow-progress-bar-fill></div></div><div class=flow-steps>`), _tmpl$10$6 = /* @__PURE__ */ template(`<div><span class=flow-step-dot></span><span class=flow-step-label>`);
4504
+ const statusLabel = {
4505
+ active: "Active",
4506
+ completed: "Completed",
4507
+ abandoned: "Abandoned",
4508
+ blocked: "Blocked"
4509
+ };
4510
+ const statusIcon = {
4511
+ active: "▶",
4512
+ completed: "✓",
4513
+ abandoned: "✗",
4514
+ blocked: "⏸"
4515
+ };
4496
4516
  const FlowProgress = () => {
4497
4517
  const {
4498
4518
  runtimeState: runtimeState2
4499
4519
  } = useRuntime();
4500
4520
  const flow = createMemo(() => runtimeState2().flowState);
4501
4521
  const tracker = createMemo(() => runtimeState2().taskTracker);
4522
+ const taskMemory = createMemo(() => runtimeState2().taskMemory);
4502
4523
  const stepStatusClass = (status) => {
4503
4524
  switch (status) {
4504
4525
  case "done":
@@ -4520,53 +4541,136 @@ const FlowProgress = () => {
4520
4541
  };
4521
4542
  return createComponent(Show, {
4522
4543
  get when() {
4523
- return flow() || tracker();
4544
+ return flow() || tracker() || taskMemory();
4524
4545
  },
4525
4546
  get children() {
4526
4547
  var _el$ = _tmpl$$j();
4548
+ insert(_el$, createComponent(Show, {
4549
+ get when() {
4550
+ return taskMemory();
4551
+ },
4552
+ children: (tm) => (() => {
4553
+ var _el$2 = _tmpl$6$d(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$4.nextSibling;
4554
+ insert(_el$4, () => statusIcon[tm().status], _el$5);
4555
+ insert(_el$4, () => tm().goal, null);
4556
+ insert(_el$6, () => statusLabel[tm().status]);
4557
+ insert(_el$2, createComponent(Show, {
4558
+ get when() {
4559
+ return tm().blocker;
4560
+ },
4561
+ get children() {
4562
+ var _el$7 = _tmpl$2$j();
4563
+ _el$7.firstChild;
4564
+ insert(_el$7, () => tm().blocker, null);
4565
+ return _el$7;
4566
+ }
4567
+ }), null);
4568
+ insert(_el$2, createComponent(Show, {
4569
+ get when() {
4570
+ return tm().nextStep;
4571
+ },
4572
+ get children() {
4573
+ var _el$9 = _tmpl$3$h();
4574
+ _el$9.firstChild;
4575
+ insert(_el$9, () => tm().nextStep, null);
4576
+ return _el$9;
4577
+ }
4578
+ }), null);
4579
+ insert(_el$2, createComponent(Show, {
4580
+ get when() {
4581
+ return Object.keys(tm().facts).length > 0;
4582
+ },
4583
+ get children() {
4584
+ var _el$1 = _tmpl$4$g();
4585
+ insert(_el$1, createComponent(For, {
4586
+ get each() {
4587
+ return Object.entries(tm().facts);
4588
+ },
4589
+ children: ([key, value]) => (() => {
4590
+ var _el$11 = _tmpl$7$b(), _el$12 = _el$11.firstChild, _el$13 = _el$12.nextSibling;
4591
+ insert(_el$12, key);
4592
+ insert(_el$13, value);
4593
+ return _el$11;
4594
+ })()
4595
+ }));
4596
+ return _el$1;
4597
+ }
4598
+ }), null);
4599
+ insert(_el$2, createComponent(Show, {
4600
+ get when() {
4601
+ return tm().notes.length > 0;
4602
+ },
4603
+ get children() {
4604
+ var _el$10 = _tmpl$5$d();
4605
+ insert(_el$10, createComponent(For, {
4606
+ get each() {
4607
+ return tm().notes.slice(-3);
4608
+ },
4609
+ children: (note) => (() => {
4610
+ var _el$14 = _tmpl$8$9(), _el$15 = _el$14.firstChild, _el$16 = _el$15.nextSibling;
4611
+ insert(_el$15, () => note.createdAt.slice(11, 16));
4612
+ insert(_el$16, () => note.text);
4613
+ return _el$14;
4614
+ })()
4615
+ }));
4616
+ return _el$10;
4617
+ }
4618
+ }), null);
4619
+ createRenderEffect((_p$) => {
4620
+ var _v$ = tracker() || flow() ? "12px" : "0", _v$2 = `task-memory-status task-memory-status-${tm().status}`;
4621
+ _v$ !== _p$.e && setStyleProperty(_el$2, "margin-bottom", _p$.e = _v$);
4622
+ _v$2 !== _p$.t && className(_el$6, _p$.t = _v$2);
4623
+ return _p$;
4624
+ }, {
4625
+ e: void 0,
4626
+ t: void 0
4627
+ });
4628
+ return _el$2;
4629
+ })()
4630
+ }), null);
4527
4631
  insert(_el$, createComponent(Show, {
4528
4632
  get when() {
4529
4633
  return tracker();
4530
4634
  },
4531
4635
  children: (t) => (() => {
4532
- var _el$2 = _tmpl$4$g(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$3.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$7.nextSibling;
4533
- insert(_el$4, () => t().goal);
4534
- insert(_el$5, () => progressPercent(t().steps), _el$6);
4535
- insert(_el$9, createComponent(For, {
4636
+ var _el$17 = _tmpl$1$6(), _el$18 = _el$17.firstChild, _el$19 = _el$18.firstChild, _el$20 = _el$19.nextSibling, _el$21 = _el$20.firstChild, _el$22 = _el$18.nextSibling, _el$23 = _el$22.firstChild, _el$24 = _el$22.nextSibling;
4637
+ insert(_el$19, () => t().goal);
4638
+ insert(_el$20, () => progressPercent(t().steps), _el$21);
4639
+ insert(_el$24, createComponent(For, {
4536
4640
  get each() {
4537
4641
  return t().steps;
4538
4642
  },
4539
4643
  children: (step) => (() => {
4540
- var _el$12 = _tmpl$5$d(), _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling;
4541
- insert(_el$14, () => step.label);
4542
- createRenderEffect(() => className(_el$12, `flow-step ${stepStatusClass(step.status)}`));
4543
- return _el$12;
4644
+ var _el$29 = _tmpl$10$6(), _el$30 = _el$29.firstChild, _el$31 = _el$30.nextSibling;
4645
+ insert(_el$31, () => step.label);
4646
+ createRenderEffect(() => className(_el$29, `flow-step ${stepStatusClass(step.status)}`));
4647
+ return _el$29;
4544
4648
  })()
4545
4649
  }));
4546
- insert(_el$2, createComponent(Show, {
4650
+ insert(_el$17, createComponent(Show, {
4547
4651
  get when() {
4548
4652
  return t().lastAction;
4549
4653
  },
4550
4654
  get children() {
4551
- var _el$0 = _tmpl$2$j();
4552
- _el$0.firstChild;
4553
- insert(_el$0, () => t().lastAction, null);
4554
- return _el$0;
4655
+ var _el$25 = _tmpl$9$8();
4656
+ _el$25.firstChild;
4657
+ insert(_el$25, () => t().lastAction, null);
4658
+ return _el$25;
4555
4659
  }
4556
4660
  }), null);
4557
- insert(_el$2, createComponent(Show, {
4661
+ insert(_el$17, createComponent(Show, {
4558
4662
  get when() {
4559
4663
  return memo(() => !!t().nextHint)() && !t().steps.every((s) => s.status === "done");
4560
4664
  },
4561
4665
  get children() {
4562
- var _el$10 = _tmpl$3$h();
4563
- _el$10.firstChild;
4564
- insert(_el$10, () => t().nextHint, null);
4565
- return _el$10;
4666
+ var _el$27 = _tmpl$0$6();
4667
+ _el$27.firstChild;
4668
+ insert(_el$27, () => t().nextHint, null);
4669
+ return _el$27;
4566
4670
  }
4567
4671
  }), null);
4568
- createRenderEffect((_$p) => setStyleProperty(_el$8, "width", `${progressPercent(t().steps)}%`));
4569
- return _el$2;
4672
+ createRenderEffect((_$p) => setStyleProperty(_el$23, "width", `${progressPercent(t().steps)}%`));
4673
+ return _el$17;
4570
4674
  })()
4571
4675
  }), null);
4572
4676
  insert(_el$, createComponent(Show, {
@@ -4574,22 +4678,22 @@ const FlowProgress = () => {
4574
4678
  return memo(() => !!flow())() && !tracker();
4575
4679
  },
4576
4680
  children: (f) => (() => {
4577
- var _el$15 = _tmpl$4$g(), _el$16 = _el$15.firstChild, _el$17 = _el$16.firstChild, _el$18 = _el$17.nextSibling, _el$19 = _el$18.firstChild, _el$20 = _el$16.nextSibling, _el$21 = _el$20.firstChild, _el$22 = _el$20.nextSibling;
4578
- insert(_el$17, () => f().goal);
4579
- insert(_el$18, () => progressPercent(f().steps), _el$19);
4580
- insert(_el$22, createComponent(For, {
4681
+ var _el$32 = _tmpl$1$6(), _el$33 = _el$32.firstChild, _el$34 = _el$33.firstChild, _el$35 = _el$34.nextSibling, _el$36 = _el$35.firstChild, _el$37 = _el$33.nextSibling, _el$38 = _el$37.firstChild, _el$39 = _el$37.nextSibling;
4682
+ insert(_el$34, () => f().goal);
4683
+ insert(_el$35, () => progressPercent(f().steps), _el$36);
4684
+ insert(_el$39, createComponent(For, {
4581
4685
  get each() {
4582
4686
  return f().steps;
4583
4687
  },
4584
4688
  children: (step) => (() => {
4585
- var _el$23 = _tmpl$5$d(), _el$24 = _el$23.firstChild, _el$25 = _el$24.nextSibling;
4586
- insert(_el$25, () => step.label);
4587
- createRenderEffect(() => className(_el$23, `flow-step ${stepStatusClass(step.status)}`));
4588
- return _el$23;
4689
+ var _el$40 = _tmpl$10$6(), _el$41 = _el$40.firstChild, _el$42 = _el$41.nextSibling;
4690
+ insert(_el$42, () => step.label);
4691
+ createRenderEffect(() => className(_el$40, `flow-step ${stepStatusClass(step.status)}`));
4692
+ return _el$40;
4589
4693
  })()
4590
4694
  }));
4591
- createRenderEffect((_$p) => setStyleProperty(_el$21, "width", `${progressPercent(f().steps)}%`));
4592
- return _el$15;
4695
+ createRenderEffect((_$p) => setStyleProperty(_el$38, "width", `${progressPercent(f().steps)}%`));
4696
+ return _el$32;
4593
4697
  })()
4594
4698
  }), null);
4595
4699
  return _el$;
@@ -5,8 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <meta http-equiv="Content-Security-Policy" content="default-src 'self'; base-uri 'none'; object-src 'none'; frame-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'; font-src 'self' data:; form-action 'self';" />
7
7
  <title>Vessel</title>
8
- <script type="module" crossorigin src="./assets/index-BW4Oa1R1.js"></script>
9
- <link rel="stylesheet" crossorigin href="./assets/index-B4pY2BdC.css">
8
+ <script type="module" crossorigin src="./assets/index-DPKkNFWo.js"></script>
9
+ <link rel="stylesheet" crossorigin href="./assets/index-BJctp4s0.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@quanta-intellect/vessel-browser",
3
3
  "mcpName": "io.github.unmodeled-tyler/vessel-browser",
4
- "version": "0.1.144",
4
+ "version": "0.1.146",
5
5
  "description": "AI-native web browser runtime for autonomous agents with human supervision",
6
6
  "main": "./out/main/index.js",
7
7
  "bin": {