@quanta-intellect/vessel-browser 0.1.6
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/LICENSE +21 -0
- package/README.md +377 -0
- package/bin/vessel-browser.js +25 -0
- package/out/main/index.js +13004 -0
- package/out/preload/content-script.js +2836 -0
- package/out/preload/index.js +172 -0
- package/out/renderer/assets/index-BYA528aQ.js +4883 -0
- package/out/renderer/assets/index-Bz1EMkt-.css +3354 -0
- package/out/renderer/assets/vessel-logo-transparent-IT25qr-Z.png +0 -0
- package/out/renderer/index.html +13 -0
- package/package.json +72 -0
- package/resources/vessel-icon.png +0 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const electron = require("electron");
|
|
3
|
+
const Channels = {
|
|
4
|
+
// Tab management
|
|
5
|
+
TAB_CREATE: "tab:create",
|
|
6
|
+
TAB_CLOSE: "tab:close",
|
|
7
|
+
TAB_SWITCH: "tab:switch",
|
|
8
|
+
TAB_NAVIGATE: "tab:navigate",
|
|
9
|
+
TAB_BACK: "tab:back",
|
|
10
|
+
TAB_FORWARD: "tab:forward",
|
|
11
|
+
TAB_RELOAD: "tab:reload",
|
|
12
|
+
TAB_STATE_UPDATE: "tab:state-update",
|
|
13
|
+
// AI
|
|
14
|
+
AI_QUERY: "ai:query",
|
|
15
|
+
AI_STREAM_START: "ai:stream-start",
|
|
16
|
+
AI_STREAM_CHUNK: "ai:stream-chunk",
|
|
17
|
+
AI_STREAM_END: "ai:stream-end",
|
|
18
|
+
AI_CANCEL: "ai:cancel",
|
|
19
|
+
AI_FETCH_MODELS: "ai:fetch-models",
|
|
20
|
+
AGENT_RUNTIME_GET: "agent-runtime:get",
|
|
21
|
+
AGENT_RUNTIME_UPDATE: "agent-runtime:update",
|
|
22
|
+
AGENT_PAUSE: "agent:pause",
|
|
23
|
+
AGENT_RESUME: "agent:resume",
|
|
24
|
+
AGENT_SET_APPROVAL_MODE: "agent:set-approval-mode",
|
|
25
|
+
AGENT_APPROVAL_RESOLVE: "agent:approval-resolve",
|
|
26
|
+
AGENT_CHECKPOINT_CREATE: "agent:checkpoint-create",
|
|
27
|
+
AGENT_CHECKPOINT_RESTORE: "agent:checkpoint-restore",
|
|
28
|
+
AGENT_SESSION_CAPTURE: "agent:session-capture",
|
|
29
|
+
AGENT_SESSION_RESTORE: "agent:session-restore",
|
|
30
|
+
// Content
|
|
31
|
+
CONTENT_EXTRACT: "content:extract",
|
|
32
|
+
READER_MODE_TOGGLE: "reader:toggle",
|
|
33
|
+
// UI state
|
|
34
|
+
SIDEBAR_TOGGLE: "ui:sidebar-toggle",
|
|
35
|
+
SIDEBAR_RESIZE: "ui:sidebar-resize",
|
|
36
|
+
SIDEBAR_RESIZE_START: "ui:sidebar-resize-start",
|
|
37
|
+
SIDEBAR_RESIZE_COMMIT: "ui:sidebar-resize-commit",
|
|
38
|
+
FOCUS_MODE_TOGGLE: "ui:focus-mode-toggle",
|
|
39
|
+
SETTINGS_VISIBILITY: "ui:settings-visibility",
|
|
40
|
+
// Settings
|
|
41
|
+
SETTINGS_GET: "settings:get",
|
|
42
|
+
SETTINGS_SET: "settings:set",
|
|
43
|
+
SETTINGS_UPDATE: "settings:update",
|
|
44
|
+
SETTINGS_HEALTH_GET: "settings:health:get",
|
|
45
|
+
// Bookmarks
|
|
46
|
+
BOOKMARKS_GET: "bookmarks:get",
|
|
47
|
+
BOOKMARKS_UPDATE: "bookmarks:update",
|
|
48
|
+
BOOKMARK_SAVE: "bookmarks:save",
|
|
49
|
+
BOOKMARK_REMOVE: "bookmarks:remove",
|
|
50
|
+
FOLDER_CREATE: "bookmarks:folder-create",
|
|
51
|
+
FOLDER_REMOVE: "bookmarks:folder-remove",
|
|
52
|
+
FOLDER_RENAME: "bookmarks:folder-rename",
|
|
53
|
+
// Highlights
|
|
54
|
+
HIGHLIGHT_CAPTURE: "highlights:capture",
|
|
55
|
+
HIGHLIGHT_CAPTURE_RESULT: "highlights:capture-result",
|
|
56
|
+
// DevTools panel
|
|
57
|
+
DEVTOOLS_PANEL_TOGGLE: "devtools-panel:toggle",
|
|
58
|
+
DEVTOOLS_PANEL_STATE: "devtools-panel:state",
|
|
59
|
+
// Window controls
|
|
60
|
+
WINDOW_MINIMIZE: "window:minimize",
|
|
61
|
+
WINDOW_MAXIMIZE: "window:maximize",
|
|
62
|
+
WINDOW_CLOSE: "window:close"
|
|
63
|
+
};
|
|
64
|
+
const api = {
|
|
65
|
+
tabs: {
|
|
66
|
+
create: (url) => electron.ipcRenderer.invoke(Channels.TAB_CREATE, url),
|
|
67
|
+
close: (id) => electron.ipcRenderer.invoke(Channels.TAB_CLOSE, id),
|
|
68
|
+
switch: (id) => electron.ipcRenderer.invoke(Channels.TAB_SWITCH, id),
|
|
69
|
+
navigate: (id, url) => electron.ipcRenderer.invoke(Channels.TAB_NAVIGATE, id, url),
|
|
70
|
+
back: (id) => electron.ipcRenderer.invoke(Channels.TAB_BACK, id),
|
|
71
|
+
forward: (id) => electron.ipcRenderer.invoke(Channels.TAB_FORWARD, id),
|
|
72
|
+
reload: (id) => electron.ipcRenderer.invoke(Channels.TAB_RELOAD, id),
|
|
73
|
+
onStateUpdate: (cb) => {
|
|
74
|
+
const handler = (_, tabs, activeId) => cb(tabs, activeId);
|
|
75
|
+
electron.ipcRenderer.on(Channels.TAB_STATE_UPDATE, handler);
|
|
76
|
+
return () => electron.ipcRenderer.removeListener(Channels.TAB_STATE_UPDATE, handler);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
ai: {
|
|
80
|
+
query: (prompt, history) => electron.ipcRenderer.invoke(Channels.AI_QUERY, prompt, history),
|
|
81
|
+
onStreamStart: (cb) => {
|
|
82
|
+
const handler = (_, prompt) => cb(prompt);
|
|
83
|
+
electron.ipcRenderer.on(Channels.AI_STREAM_START, handler);
|
|
84
|
+
return () => electron.ipcRenderer.removeListener(Channels.AI_STREAM_START, handler);
|
|
85
|
+
},
|
|
86
|
+
onStreamChunk: (cb) => {
|
|
87
|
+
const handler = (_, chunk) => cb(chunk);
|
|
88
|
+
electron.ipcRenderer.on(Channels.AI_STREAM_CHUNK, handler);
|
|
89
|
+
return () => electron.ipcRenderer.removeListener(Channels.AI_STREAM_CHUNK, handler);
|
|
90
|
+
},
|
|
91
|
+
onStreamEnd: (cb) => {
|
|
92
|
+
const handler = () => cb();
|
|
93
|
+
electron.ipcRenderer.on(Channels.AI_STREAM_END, handler);
|
|
94
|
+
return () => electron.ipcRenderer.removeListener(Channels.AI_STREAM_END, handler);
|
|
95
|
+
},
|
|
96
|
+
cancel: () => electron.ipcRenderer.invoke(Channels.AI_CANCEL),
|
|
97
|
+
fetchModels: (config) => electron.ipcRenderer.invoke(Channels.AI_FETCH_MODELS, config),
|
|
98
|
+
getRuntime: () => electron.ipcRenderer.invoke(Channels.AGENT_RUNTIME_GET),
|
|
99
|
+
onRuntimeUpdate: (cb) => {
|
|
100
|
+
const handler = (_, state) => cb(state);
|
|
101
|
+
electron.ipcRenderer.on(Channels.AGENT_RUNTIME_UPDATE, handler);
|
|
102
|
+
return () => electron.ipcRenderer.removeListener(Channels.AGENT_RUNTIME_UPDATE, handler);
|
|
103
|
+
},
|
|
104
|
+
pause: () => electron.ipcRenderer.invoke(Channels.AGENT_PAUSE),
|
|
105
|
+
resume: () => electron.ipcRenderer.invoke(Channels.AGENT_RESUME),
|
|
106
|
+
setApprovalMode: (mode) => electron.ipcRenderer.invoke(Channels.AGENT_SET_APPROVAL_MODE, mode),
|
|
107
|
+
resolveApproval: (approvalId, approved) => electron.ipcRenderer.invoke(Channels.AGENT_APPROVAL_RESOLVE, approvalId, approved),
|
|
108
|
+
createCheckpoint: (name, note) => electron.ipcRenderer.invoke(Channels.AGENT_CHECKPOINT_CREATE, name, note),
|
|
109
|
+
restoreCheckpoint: (checkpointId) => electron.ipcRenderer.invoke(Channels.AGENT_CHECKPOINT_RESTORE, checkpointId),
|
|
110
|
+
captureSession: (note) => electron.ipcRenderer.invoke(Channels.AGENT_SESSION_CAPTURE, note),
|
|
111
|
+
restoreSession: (snapshot) => electron.ipcRenderer.invoke(Channels.AGENT_SESSION_RESTORE, snapshot)
|
|
112
|
+
},
|
|
113
|
+
content: {
|
|
114
|
+
extract: () => electron.ipcRenderer.invoke(Channels.CONTENT_EXTRACT),
|
|
115
|
+
toggleReader: () => electron.ipcRenderer.invoke(Channels.READER_MODE_TOGGLE)
|
|
116
|
+
},
|
|
117
|
+
highlights: {
|
|
118
|
+
capture: () => electron.ipcRenderer.invoke(Channels.HIGHLIGHT_CAPTURE),
|
|
119
|
+
onCaptureResult: (cb) => {
|
|
120
|
+
const handler = (_, result) => cb(result);
|
|
121
|
+
electron.ipcRenderer.on(Channels.HIGHLIGHT_CAPTURE_RESULT, handler);
|
|
122
|
+
return () => electron.ipcRenderer.removeListener(Channels.HIGHLIGHT_CAPTURE_RESULT, handler);
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
ui: {
|
|
126
|
+
toggleSidebar: () => electron.ipcRenderer.invoke(Channels.SIDEBAR_TOGGLE),
|
|
127
|
+
startSidebarResize: () => electron.ipcRenderer.invoke(Channels.SIDEBAR_RESIZE_START),
|
|
128
|
+
resizeSidebar: (width) => electron.ipcRenderer.invoke(Channels.SIDEBAR_RESIZE, width),
|
|
129
|
+
commitSidebarResize: () => electron.ipcRenderer.invoke(Channels.SIDEBAR_RESIZE_COMMIT),
|
|
130
|
+
toggleFocusMode: () => electron.ipcRenderer.invoke(Channels.FOCUS_MODE_TOGGLE),
|
|
131
|
+
setSettingsVisibility: (open) => electron.ipcRenderer.invoke(Channels.SETTINGS_VISIBILITY, open)
|
|
132
|
+
},
|
|
133
|
+
settings: {
|
|
134
|
+
get: () => electron.ipcRenderer.invoke(Channels.SETTINGS_GET),
|
|
135
|
+
getHealth: () => electron.ipcRenderer.invoke(Channels.SETTINGS_HEALTH_GET),
|
|
136
|
+
set: (key, value) => electron.ipcRenderer.invoke(Channels.SETTINGS_SET, key, value),
|
|
137
|
+
onUpdate: (cb) => {
|
|
138
|
+
const handler = (_, settings) => cb(settings);
|
|
139
|
+
electron.ipcRenderer.on(Channels.SETTINGS_UPDATE, handler);
|
|
140
|
+
return () => electron.ipcRenderer.removeListener(Channels.SETTINGS_UPDATE, handler);
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
bookmarks: {
|
|
144
|
+
get: () => electron.ipcRenderer.invoke(Channels.BOOKMARKS_GET),
|
|
145
|
+
saveBookmark: (url, title, folderId, note) => electron.ipcRenderer.invoke(Channels.BOOKMARK_SAVE, url, title, folderId, note),
|
|
146
|
+
removeBookmark: (id) => electron.ipcRenderer.invoke(Channels.BOOKMARK_REMOVE, id),
|
|
147
|
+
createFolder: (name) => electron.ipcRenderer.invoke(Channels.FOLDER_CREATE, name),
|
|
148
|
+
createFolderWithSummary: (name, summary) => electron.ipcRenderer.invoke(Channels.FOLDER_CREATE, name, summary),
|
|
149
|
+
removeFolder: (id) => electron.ipcRenderer.invoke(Channels.FOLDER_REMOVE, id),
|
|
150
|
+
renameFolder: (id, newName, summary) => electron.ipcRenderer.invoke(Channels.FOLDER_RENAME, id, newName, summary),
|
|
151
|
+
onUpdate: (cb) => {
|
|
152
|
+
const handler = (_, state) => cb(state);
|
|
153
|
+
electron.ipcRenderer.on(Channels.BOOKMARKS_UPDATE, handler);
|
|
154
|
+
return () => electron.ipcRenderer.removeListener(Channels.BOOKMARKS_UPDATE, handler);
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
devtoolsPanel: {
|
|
158
|
+
toggle: () => electron.ipcRenderer.invoke(Channels.DEVTOOLS_PANEL_TOGGLE),
|
|
159
|
+
resize: (height) => electron.ipcRenderer.invoke("devtools-panel:resize", height),
|
|
160
|
+
onStateUpdate: (cb) => {
|
|
161
|
+
const handler = (_, state) => cb(state);
|
|
162
|
+
electron.ipcRenderer.on(Channels.DEVTOOLS_PANEL_STATE, handler);
|
|
163
|
+
return () => electron.ipcRenderer.removeListener(Channels.DEVTOOLS_PANEL_STATE, handler);
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
window: {
|
|
167
|
+
minimize: () => electron.ipcRenderer.invoke(Channels.WINDOW_MINIMIZE),
|
|
168
|
+
maximize: () => electron.ipcRenderer.invoke(Channels.WINDOW_MAXIMIZE),
|
|
169
|
+
close: () => electron.ipcRenderer.invoke(Channels.WINDOW_CLOSE)
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
electron.contextBridge.exposeInMainWorld("vessel", api);
|