@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.
@@ -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);