@opentabs-dev/browser-extension 0.0.52 → 0.0.54
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/dist/background-message-handlers.d.ts +33 -6
- package/dist/background-message-handlers.d.ts.map +1 -1
- package/dist/background-message-handlers.js +335 -20
- package/dist/background-message-handlers.js.map +1 -1
- package/dist/background.js +859 -365
- package/dist/background.js.map +1 -1
- package/dist/browser-commands/extension-commands.d.ts.map +1 -1
- package/dist/browser-commands/extension-commands.js +5 -2
- package/dist/browser-commands/extension-commands.js.map +1 -1
- package/dist/browser-commands/key-press-command.d.ts +2 -0
- package/dist/browser-commands/key-press-command.d.ts.map +1 -1
- package/dist/browser-commands/key-press-command.js +42 -4
- package/dist/browser-commands/key-press-command.js.map +1 -1
- package/dist/confirmation-badge.d.ts +17 -3
- package/dist/confirmation-badge.d.ts.map +1 -1
- package/dist/confirmation-badge.js +55 -18
- package/dist/confirmation-badge.js.map +1 -1
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +8 -0
- package/dist/constants.js.map +1 -1
- package/dist/dispatch-helpers.d.ts +1 -1
- package/dist/extension-messages.d.ts +48 -21
- package/dist/extension-messages.d.ts.map +1 -1
- package/dist/known-methods.d.ts +2 -2
- package/dist/known-methods.d.ts.map +1 -1
- package/dist/known-methods.js +1 -2
- package/dist/known-methods.js.map +1 -1
- package/dist/message-router.d.ts.map +1 -1
- package/dist/message-router.js +163 -24
- package/dist/message-router.js.map +1 -1
- package/dist/offscreen/index.js +17 -7
- package/dist/offscreen/index.js.map +1 -1
- package/dist/server-request.d.ts +19 -0
- package/dist/server-request.d.ts.map +1 -0
- package/dist/server-request.js +79 -0
- package/dist/server-request.js.map +1 -0
- package/dist/server-state-cache.d.ts +68 -0
- package/dist/server-state-cache.d.ts.map +1 -0
- package/dist/server-state-cache.js +208 -0
- package/dist/server-state-cache.js.map +1 -0
- package/dist/side-panel/App.d.ts.map +1 -1
- package/dist/side-panel/App.js +60 -58
- package/dist/side-panel/App.js.map +1 -1
- package/dist/side-panel/bridge.d.ts +31 -34
- package/dist/side-panel/bridge.d.ts.map +1 -1
- package/dist/side-panel/bridge.js +27 -91
- package/dist/side-panel/bridge.js.map +1 -1
- package/dist/side-panel/components/BrowserToolsCard.d.ts.map +1 -1
- package/dist/side-panel/components/BrowserToolsCard.js +2 -1
- package/dist/side-panel/components/BrowserToolsCard.js.map +1 -1
- package/dist/side-panel/components/ConfirmationDialog.d.ts +7 -2
- package/dist/side-panel/components/ConfirmationDialog.d.ts.map +1 -1
- package/dist/side-panel/components/ConfirmationDialog.js.map +1 -1
- package/dist/side-panel/components/PluginCard.d.ts.map +1 -1
- package/dist/side-panel/components/PluginCard.js +2 -1
- package/dist/side-panel/components/PluginCard.js.map +1 -1
- package/dist/side-panel/components/PluginIcon.d.ts +2 -1
- package/dist/side-panel/components/PluginIcon.d.ts.map +1 -1
- package/dist/side-panel/components/PluginIcon.js +23 -5
- package/dist/side-panel/components/PluginIcon.js.map +1 -1
- package/dist/side-panel/components/ToolIcon.d.ts +2 -1
- package/dist/side-panel/components/ToolIcon.d.ts.map +1 -1
- package/dist/side-panel/components/ToolIcon.js +17 -3
- package/dist/side-panel/components/ToolIcon.js.map +1 -1
- package/dist/side-panel/components/ToolRow.d.ts.map +1 -1
- package/dist/side-panel/components/ToolRow.js +1 -2
- package/dist/side-panel/components/ToolRow.js.map +1 -1
- package/dist/side-panel/components/retro/Button.d.ts +1 -1
- package/dist/side-panel/hooks/useServerNotifications.d.ts +1 -3
- package/dist/side-panel/hooks/useServerNotifications.d.ts.map +1 -1
- package/dist/side-panel/hooks/useServerNotifications.js +15 -11
- package/dist/side-panel/hooks/useServerNotifications.js.map +1 -1
- package/dist/side-panel/side-panel.js +1254 -1218
- package/dist/side-panel/styles.css +1 -1
- package/dist/side-panel-toggle.d.ts +6 -0
- package/dist/side-panel-toggle.d.ts.map +1 -1
- package/dist/side-panel-toggle.js +6 -0
- package/dist/side-panel-toggle.js.map +1 -1
- package/dist/tab-state.d.ts +26 -1
- package/dist/tab-state.d.ts.map +1 -1
- package/dist/tab-state.js +163 -11
- package/dist/tab-state.js.map +1 -1
- package/dist/tool-dispatch.d.ts.map +1 -1
- package/dist/tool-dispatch.js +3 -2
- package/dist/tool-dispatch.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { sendToServer } from './messaging.js';
|
|
2
|
+
/**
|
|
3
|
+
* JSON-RPC request/response correlator for background → MCP server communication.
|
|
4
|
+
*
|
|
5
|
+
* The background script uses sendServerRequest() to send JSON-RPC requests to
|
|
6
|
+
* the MCP server and receive responses as promises. Each request gets a unique
|
|
7
|
+
* integer ID; consumeServerResponse() matches incoming responses to pending
|
|
8
|
+
* requests by ID.
|
|
9
|
+
*
|
|
10
|
+
* This replaces the side panel's bridge.ts sendRequest relay — mutations now
|
|
11
|
+
* flow through the background script directly, keeping the side panel decoupled
|
|
12
|
+
* from the WebSocket.
|
|
13
|
+
*/
|
|
14
|
+
const REQUEST_TIMEOUT_MS = 30_000;
|
|
15
|
+
/** Map of request ID → pending request. Responses are matched by ID. */
|
|
16
|
+
const pendingRequests = new Map();
|
|
17
|
+
/** Monotonically increasing request ID counter */
|
|
18
|
+
let nextId = 1;
|
|
19
|
+
/**
|
|
20
|
+
* Send a JSON-RPC request to the MCP server via the offscreen WebSocket
|
|
21
|
+
* and return a promise that resolves with the response result or rejects
|
|
22
|
+
* with the response error. Times out after 30 seconds.
|
|
23
|
+
*/
|
|
24
|
+
const sendServerRequest = (method, params = {}) => {
|
|
25
|
+
const id = nextId++;
|
|
26
|
+
const data = { jsonrpc: '2.0', method, params, id };
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
const timerId = setTimeout(() => {
|
|
29
|
+
if (pendingRequests.has(id)) {
|
|
30
|
+
pendingRequests.delete(id);
|
|
31
|
+
reject(new Error(`Request ${method} timed out after ${REQUEST_TIMEOUT_MS}ms`));
|
|
32
|
+
}
|
|
33
|
+
}, REQUEST_TIMEOUT_MS);
|
|
34
|
+
pendingRequests.set(id, { resolve, reject, timerId });
|
|
35
|
+
sendToServer(data);
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Check if an incoming message is a response to a pending request.
|
|
40
|
+
* If it matches (by id), resolves or rejects the promise and returns true.
|
|
41
|
+
* Returns false if the message is not a response or doesn't match any pending request.
|
|
42
|
+
*/
|
|
43
|
+
const consumeServerResponse = (data) => {
|
|
44
|
+
// Responses have an id but no method
|
|
45
|
+
if (data.method !== undefined)
|
|
46
|
+
return false;
|
|
47
|
+
const rawId = data.id;
|
|
48
|
+
if (rawId === undefined || rawId === null)
|
|
49
|
+
return false;
|
|
50
|
+
const id = typeof rawId === 'number' ? rawId : undefined;
|
|
51
|
+
if (id === undefined)
|
|
52
|
+
return false;
|
|
53
|
+
const pending = pendingRequests.get(id);
|
|
54
|
+
if (!pending)
|
|
55
|
+
return false;
|
|
56
|
+
pendingRequests.delete(id);
|
|
57
|
+
clearTimeout(pending.timerId);
|
|
58
|
+
if (data.error !== undefined && data.error !== null) {
|
|
59
|
+
const err = data.error;
|
|
60
|
+
pending.reject(new Error(err.message ?? 'Unknown server error'));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
pending.resolve(data.result);
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Reject all pending requests immediately. Called on WebSocket disconnect
|
|
69
|
+
* so handlers get fast errors instead of waiting for individual 30s timeouts.
|
|
70
|
+
*/
|
|
71
|
+
const rejectAllPendingServerRequests = () => {
|
|
72
|
+
for (const [id, pending] of pendingRequests) {
|
|
73
|
+
pendingRequests.delete(id);
|
|
74
|
+
clearTimeout(pending.timerId);
|
|
75
|
+
pending.reject(new Error('Server disconnected'));
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
export { consumeServerResponse, rejectAllPendingServerRequests, sendServerRequest };
|
|
79
|
+
//# sourceMappingURL=server-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-request.js","sourceRoot":"","sources":["../src/server-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { ConfigStateBrowserTool, ConfigStateFailedPlugin, ConfigStatePlugin } from '@opentabs-dev/shared';
|
|
2
|
+
/**
|
|
3
|
+
* In-memory cache of server-owned state. This mirrors the shape of
|
|
4
|
+
* ConfigStateResult from @opentabs-dev/shared so there is no translation
|
|
5
|
+
* layer when serving data to the side panel.
|
|
6
|
+
*
|
|
7
|
+
* The cache is populated from sync.full and plugins.changed push notifications.
|
|
8
|
+
* It is cleared on WebSocket disconnect and rebuilt from scratch on the next
|
|
9
|
+
* sync.full. The in-memory cache is the primary read path (instant). Every
|
|
10
|
+
* mutation writes through to chrome.storage.session (debounced 500ms) so
|
|
11
|
+
* the cache survives MV3 service worker suspension.
|
|
12
|
+
*/
|
|
13
|
+
interface ServerStateCache {
|
|
14
|
+
plugins: ConfigStatePlugin[];
|
|
15
|
+
failedPlugins: ConfigStateFailedPlugin[];
|
|
16
|
+
browserTools: ConfigStateBrowserTool[];
|
|
17
|
+
serverVersion?: string;
|
|
18
|
+
}
|
|
19
|
+
/** Register a pending optimistic update for a single plugin tool. */
|
|
20
|
+
declare const addPendingPluginToolUpdate: (plugin: string, tool: string, enabled: boolean) => void;
|
|
21
|
+
/** Clear the pending optimistic update for a single plugin tool. */
|
|
22
|
+
declare const removePendingPluginToolUpdate: (plugin: string, tool: string) => void;
|
|
23
|
+
/** Register pending optimistic updates for all tools of a plugin. */
|
|
24
|
+
declare const addPendingPluginAllToolsUpdate: (plugin: string, toolNames: string[], enabled: boolean) => void;
|
|
25
|
+
/** Clear pending optimistic updates for all tools of a plugin. */
|
|
26
|
+
declare const removePendingPluginAllToolsUpdate: (plugin: string, toolNames: string[]) => void;
|
|
27
|
+
/** Register a pending optimistic update for a single browser tool. */
|
|
28
|
+
declare const addPendingBrowserToolUpdate: (tool: string, enabled: boolean) => void;
|
|
29
|
+
/** Clear the pending optimistic update for a single browser tool. */
|
|
30
|
+
declare const removePendingBrowserToolUpdate: (tool: string) => void;
|
|
31
|
+
/** Register pending optimistic updates for all browser tools. */
|
|
32
|
+
declare const addPendingAllBrowserToolsUpdate: (toolNames: string[], enabled: boolean) => void;
|
|
33
|
+
/** Clear pending optimistic updates for all browser tools. */
|
|
34
|
+
declare const removePendingAllBrowserToolsUpdate: (toolNames: string[]) => void;
|
|
35
|
+
/** Return a deep copy of the current server state cache. */
|
|
36
|
+
declare const getServerStateCache: () => ServerStateCache;
|
|
37
|
+
/**
|
|
38
|
+
* Merge a partial update into the server state cache. Only the provided
|
|
39
|
+
* fields are overwritten — omitted fields retain their previous values.
|
|
40
|
+
* The in-memory cache updates immediately; session storage write is debounced.
|
|
41
|
+
*/
|
|
42
|
+
declare const updateServerStateCache: (partial: Partial<ServerStateCache>) => void;
|
|
43
|
+
/**
|
|
44
|
+
* Write the current in-memory cache to chrome.storage.session immediately,
|
|
45
|
+
* cancelling any pending debounced write. Called after sync.full populates
|
|
46
|
+
* the cache to ensure critical state survives MV3 service worker suspension
|
|
47
|
+
* without waiting for the 500ms debounce window.
|
|
48
|
+
*/
|
|
49
|
+
declare const flushServerStateCacheToSession: () => void;
|
|
50
|
+
/**
|
|
51
|
+
* Clear the server state cache. Called on WebSocket disconnect so the
|
|
52
|
+
* next connection rebuilds state from sync.full without stale data.
|
|
53
|
+
* Clears both in-memory cache and chrome.storage.session.
|
|
54
|
+
*/
|
|
55
|
+
declare const clearServerStateCache: () => void;
|
|
56
|
+
/**
|
|
57
|
+
* Load the server state cache from chrome.storage.session and populate the
|
|
58
|
+
* in-memory cache. Called on service worker wake to restore state that was
|
|
59
|
+
* persisted before suspension.
|
|
60
|
+
*/
|
|
61
|
+
declare const loadServerStateCacheFromSession: () => Promise<void>;
|
|
62
|
+
/** Returns whether sync.full has populated the caches in the current session. */
|
|
63
|
+
declare const getCachesInitialized: () => boolean;
|
|
64
|
+
/** Mark caches as initialized after sync.full populates them. */
|
|
65
|
+
declare const setCachesInitialized: (value: boolean) => void;
|
|
66
|
+
export { addPendingAllBrowserToolsUpdate, addPendingBrowserToolUpdate, addPendingPluginAllToolsUpdate, addPendingPluginToolUpdate, clearServerStateCache, flushServerStateCacheToSession, getCachesInitialized, getServerStateCache, loadServerStateCacheFromSession, removePendingAllBrowserToolsUpdate, removePendingBrowserToolUpdate, removePendingPluginAllToolsUpdate, removePendingPluginToolUpdate, setCachesInitialized, updateServerStateCache, };
|
|
67
|
+
export type { ServerStateCache };
|
|
68
|
+
//# sourceMappingURL=server-state-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-state-cache.d.ts","sourceRoot":"","sources":["../src/server-state-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE/G;;;;;;;;;;GAUG;AACH,UAAU,gBAAgB;IACxB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,aAAa,EAAE,uBAAuB,EAAE,CAAC;IACzC,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAqDD,qEAAqE;AACrE,QAAA,MAAM,0BAA0B,GAAI,QAAQ,MAAM,EAAE,MAAM,MAAM,EAAE,SAAS,OAAO,KAAG,IAOpF,CAAC;AAEF,oEAAoE;AACpE,QAAA,MAAM,6BAA6B,GAAI,QAAQ,MAAM,EAAE,MAAM,MAAM,KAAG,IAKrE,CAAC;AAEF,qEAAqE;AACrE,QAAA,MAAM,8BAA8B,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,EAAE,EAAE,SAAS,OAAO,KAAG,IAS/F,CAAC;AAEF,kEAAkE;AAClE,QAAA,MAAM,iCAAiC,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,EAAE,KAAG,IAOhF,CAAC;AAEF,sEAAsE;AACtE,QAAA,MAAM,2BAA2B,GAAI,MAAM,MAAM,EAAE,SAAS,OAAO,KAAG,IAErE,CAAC;AAEF,qEAAqE;AACrE,QAAA,MAAM,8BAA8B,GAAI,MAAM,MAAM,KAAG,IAEtD,CAAC;AAEF,iEAAiE;AACjE,QAAA,MAAM,+BAA+B,GAAI,WAAW,MAAM,EAAE,EAAE,SAAS,OAAO,KAAG,IAIhF,CAAC;AAEF,8DAA8D;AAC9D,QAAA,MAAM,kCAAkC,GAAI,WAAW,MAAM,EAAE,KAAG,IAIjE,CAAC;AA+BF,4DAA4D;AAC5D,QAAA,MAAM,mBAAmB,QAAO,gBAA0C,CAAC;AAE3E;;;;GAIG;AACH,QAAA,MAAM,sBAAsB,GAAI,SAAS,OAAO,CAAC,gBAAgB,CAAC,KAAG,IAIpE,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,8BAA8B,QAAO,IAM1C,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,qBAAqB,QAAO,IAYjC,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,+BAA+B,QAAa,OAAO,CAAC,IAAI,CAkB7D,CAAC;AAEF,iFAAiF;AACjF,QAAA,MAAM,oBAAoB,QAAO,OAA4B,CAAC;AAE9D,iEAAiE;AACjE,QAAA,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,IAE9C,CAAC;AAEF,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,EAC9B,0BAA0B,EAC1B,qBAAqB,EACrB,8BAA8B,EAC9B,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,EAC/B,kCAAkC,EAClC,8BAA8B,EAC9B,iCAAiC,EACjC,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,GACvB,CAAC;AACF,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
const SESSION_KEY = 'serverStateCache';
|
|
2
|
+
const CACHES_INITIALIZED_KEY = 'cachesInitialized';
|
|
3
|
+
const EMPTY_CACHE = {
|
|
4
|
+
plugins: [],
|
|
5
|
+
failedPlugins: [],
|
|
6
|
+
browserTools: [],
|
|
7
|
+
serverVersion: undefined,
|
|
8
|
+
};
|
|
9
|
+
let cache = { ...EMPTY_CACHE };
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Pending optimistic updates — protect in-flight toggle states from being
|
|
12
|
+
// overwritten by incoming plugins.changed notifications. Outer map key is
|
|
13
|
+
// plugin name, inner map key is tool name, value is the optimistic enabled
|
|
14
|
+
// state. Browser tools use a flat map keyed by tool name.
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
const pendingPluginToolUpdates = new Map();
|
|
17
|
+
const pendingBrowserToolUpdates = new Map();
|
|
18
|
+
/** Re-apply pending optimistic updates on top of the current cache. */
|
|
19
|
+
const reapplyPendingOptimisticUpdates = () => {
|
|
20
|
+
if (pendingPluginToolUpdates.size > 0) {
|
|
21
|
+
cache = {
|
|
22
|
+
...cache,
|
|
23
|
+
plugins: cache.plugins.map(plugin => {
|
|
24
|
+
const toolOverrides = pendingPluginToolUpdates.get(plugin.name);
|
|
25
|
+
if (!toolOverrides)
|
|
26
|
+
return plugin;
|
|
27
|
+
return {
|
|
28
|
+
...plugin,
|
|
29
|
+
tools: plugin.tools.map(tool => {
|
|
30
|
+
const override = toolOverrides.get(tool.name);
|
|
31
|
+
return override !== undefined ? { ...tool, enabled: override } : tool;
|
|
32
|
+
}),
|
|
33
|
+
};
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (pendingBrowserToolUpdates.size > 0) {
|
|
38
|
+
cache = {
|
|
39
|
+
...cache,
|
|
40
|
+
browserTools: cache.browserTools.map(bt => {
|
|
41
|
+
const override = pendingBrowserToolUpdates.get(bt.name);
|
|
42
|
+
return override !== undefined ? { ...bt, enabled: override } : bt;
|
|
43
|
+
}),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
/** Register a pending optimistic update for a single plugin tool. */
|
|
48
|
+
const addPendingPluginToolUpdate = (plugin, tool, enabled) => {
|
|
49
|
+
let toolMap = pendingPluginToolUpdates.get(plugin);
|
|
50
|
+
if (!toolMap) {
|
|
51
|
+
toolMap = new Map();
|
|
52
|
+
pendingPluginToolUpdates.set(plugin, toolMap);
|
|
53
|
+
}
|
|
54
|
+
toolMap.set(tool, enabled);
|
|
55
|
+
};
|
|
56
|
+
/** Clear the pending optimistic update for a single plugin tool. */
|
|
57
|
+
const removePendingPluginToolUpdate = (plugin, tool) => {
|
|
58
|
+
const toolMap = pendingPluginToolUpdates.get(plugin);
|
|
59
|
+
if (!toolMap)
|
|
60
|
+
return;
|
|
61
|
+
toolMap.delete(tool);
|
|
62
|
+
if (toolMap.size === 0)
|
|
63
|
+
pendingPluginToolUpdates.delete(plugin);
|
|
64
|
+
};
|
|
65
|
+
/** Register pending optimistic updates for all tools of a plugin. */
|
|
66
|
+
const addPendingPluginAllToolsUpdate = (plugin, toolNames, enabled) => {
|
|
67
|
+
let toolMap = pendingPluginToolUpdates.get(plugin);
|
|
68
|
+
if (!toolMap) {
|
|
69
|
+
toolMap = new Map();
|
|
70
|
+
pendingPluginToolUpdates.set(plugin, toolMap);
|
|
71
|
+
}
|
|
72
|
+
for (const name of toolNames) {
|
|
73
|
+
toolMap.set(name, enabled);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
/** Clear pending optimistic updates for all tools of a plugin. */
|
|
77
|
+
const removePendingPluginAllToolsUpdate = (plugin, toolNames) => {
|
|
78
|
+
const toolMap = pendingPluginToolUpdates.get(plugin);
|
|
79
|
+
if (!toolMap)
|
|
80
|
+
return;
|
|
81
|
+
for (const name of toolNames) {
|
|
82
|
+
toolMap.delete(name);
|
|
83
|
+
}
|
|
84
|
+
if (toolMap.size === 0)
|
|
85
|
+
pendingPluginToolUpdates.delete(plugin);
|
|
86
|
+
};
|
|
87
|
+
/** Register a pending optimistic update for a single browser tool. */
|
|
88
|
+
const addPendingBrowserToolUpdate = (tool, enabled) => {
|
|
89
|
+
pendingBrowserToolUpdates.set(tool, enabled);
|
|
90
|
+
};
|
|
91
|
+
/** Clear the pending optimistic update for a single browser tool. */
|
|
92
|
+
const removePendingBrowserToolUpdate = (tool) => {
|
|
93
|
+
pendingBrowserToolUpdates.delete(tool);
|
|
94
|
+
};
|
|
95
|
+
/** Register pending optimistic updates for all browser tools. */
|
|
96
|
+
const addPendingAllBrowserToolsUpdate = (toolNames, enabled) => {
|
|
97
|
+
for (const name of toolNames) {
|
|
98
|
+
pendingBrowserToolUpdates.set(name, enabled);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
/** Clear pending optimistic updates for all browser tools. */
|
|
102
|
+
const removePendingAllBrowserToolsUpdate = (toolNames) => {
|
|
103
|
+
for (const name of toolNames) {
|
|
104
|
+
pendingBrowserToolUpdates.delete(name);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Tracks whether sync.full has populated the caches at least once in the
|
|
109
|
+
* current WebSocket session. Distinguishes "service worker woke from
|
|
110
|
+
* suspension" (cachesInitialized=true, caches empty) from "WebSocket just
|
|
111
|
+
* connected but sync.full has not arrived yet" (cachesInitialized=false,
|
|
112
|
+
* caches empty). Persisted to chrome.storage.session so it survives
|
|
113
|
+
* MV3 service worker suspension.
|
|
114
|
+
*/
|
|
115
|
+
let cachesInitialized = false;
|
|
116
|
+
/** Debounce timer for session storage writes. */
|
|
117
|
+
let persistTimer;
|
|
118
|
+
/** Write the current in-memory cache to chrome.storage.session. */
|
|
119
|
+
const persistToSession = () => {
|
|
120
|
+
chrome.storage.session.set({ [SESSION_KEY]: cache, [CACHES_INITIALIZED_KEY]: cachesInitialized }).catch(() => {
|
|
121
|
+
// Best-effort persistence — session storage may not be available
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
/** Schedule a debounced write to session storage (500ms). */
|
|
125
|
+
const schedulePersist = () => {
|
|
126
|
+
if (persistTimer !== undefined)
|
|
127
|
+
clearTimeout(persistTimer);
|
|
128
|
+
persistTimer = setTimeout(() => {
|
|
129
|
+
persistTimer = undefined;
|
|
130
|
+
persistToSession();
|
|
131
|
+
}, 500);
|
|
132
|
+
};
|
|
133
|
+
/** Return a deep copy of the current server state cache. */
|
|
134
|
+
const getServerStateCache = () => structuredClone(cache);
|
|
135
|
+
/**
|
|
136
|
+
* Merge a partial update into the server state cache. Only the provided
|
|
137
|
+
* fields are overwritten — omitted fields retain their previous values.
|
|
138
|
+
* The in-memory cache updates immediately; session storage write is debounced.
|
|
139
|
+
*/
|
|
140
|
+
const updateServerStateCache = (partial) => {
|
|
141
|
+
cache = { ...cache, ...partial };
|
|
142
|
+
reapplyPendingOptimisticUpdates();
|
|
143
|
+
schedulePersist();
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Write the current in-memory cache to chrome.storage.session immediately,
|
|
147
|
+
* cancelling any pending debounced write. Called after sync.full populates
|
|
148
|
+
* the cache to ensure critical state survives MV3 service worker suspension
|
|
149
|
+
* without waiting for the 500ms debounce window.
|
|
150
|
+
*/
|
|
151
|
+
const flushServerStateCacheToSession = () => {
|
|
152
|
+
if (persistTimer !== undefined) {
|
|
153
|
+
clearTimeout(persistTimer);
|
|
154
|
+
persistTimer = undefined;
|
|
155
|
+
}
|
|
156
|
+
persistToSession();
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* Clear the server state cache. Called on WebSocket disconnect so the
|
|
160
|
+
* next connection rebuilds state from sync.full without stale data.
|
|
161
|
+
* Clears both in-memory cache and chrome.storage.session.
|
|
162
|
+
*/
|
|
163
|
+
const clearServerStateCache = () => {
|
|
164
|
+
cache = { ...EMPTY_CACHE };
|
|
165
|
+
cachesInitialized = false;
|
|
166
|
+
pendingPluginToolUpdates.clear();
|
|
167
|
+
pendingBrowserToolUpdates.clear();
|
|
168
|
+
if (persistTimer !== undefined) {
|
|
169
|
+
clearTimeout(persistTimer);
|
|
170
|
+
persistTimer = undefined;
|
|
171
|
+
}
|
|
172
|
+
chrome.storage.session.remove([SESSION_KEY, CACHES_INITIALIZED_KEY]).catch(() => {
|
|
173
|
+
// Best-effort removal
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* Load the server state cache from chrome.storage.session and populate the
|
|
178
|
+
* in-memory cache. Called on service worker wake to restore state that was
|
|
179
|
+
* persisted before suspension.
|
|
180
|
+
*/
|
|
181
|
+
const loadServerStateCacheFromSession = async () => {
|
|
182
|
+
try {
|
|
183
|
+
const data = await chrome.storage.session.get([SESSION_KEY, CACHES_INITIALIZED_KEY]);
|
|
184
|
+
const stored = data[SESSION_KEY];
|
|
185
|
+
if (stored && typeof stored === 'object') {
|
|
186
|
+
cache = {
|
|
187
|
+
plugins: Array.isArray(stored.plugins) ? stored.plugins : [],
|
|
188
|
+
failedPlugins: Array.isArray(stored.failedPlugins) ? stored.failedPlugins : [],
|
|
189
|
+
browserTools: Array.isArray(stored.browserTools) ? stored.browserTools : [],
|
|
190
|
+
serverVersion: typeof stored.serverVersion === 'string' ? stored.serverVersion : undefined,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
if (typeof data[CACHES_INITIALIZED_KEY] === 'boolean') {
|
|
194
|
+
cachesInitialized = data[CACHES_INITIALIZED_KEY];
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
// Session storage may not be available — keep empty cache
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
/** Returns whether sync.full has populated the caches in the current session. */
|
|
202
|
+
const getCachesInitialized = () => cachesInitialized;
|
|
203
|
+
/** Mark caches as initialized after sync.full populates them. */
|
|
204
|
+
const setCachesInitialized = (value) => {
|
|
205
|
+
cachesInitialized = value;
|
|
206
|
+
};
|
|
207
|
+
export { addPendingAllBrowserToolsUpdate, addPendingBrowserToolUpdate, addPendingPluginAllToolsUpdate, addPendingPluginToolUpdate, clearServerStateCache, flushServerStateCacheToSession, getCachesInitialized, getServerStateCache, loadServerStateCacheFromSession, removePendingAllBrowserToolsUpdate, removePendingBrowserToolUpdate, removePendingPluginAllToolsUpdate, removePendingPluginToolUpdate, setCachesInitialized, updateServerStateCache, };
|
|
208
|
+
//# sourceMappingURL=server-state-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-state-cache.js","sourceRoot":"","sources":["../src/server-state-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/side-panel/App.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/side-panel/App.tsx"],"names":[],"mappings":"AAiCA,QAAA,MAAM,GAAG,+CA4ZR,CAAC;AAEF,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
package/dist/side-panel/App.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { getFullState, sendConfirmationResponse, searchPlugins, installPlugin, removePlugin, updatePlugin, } from './bridge.js';
|
|
3
3
|
import { BrowserToolsCard } from './components/BrowserToolsCard.js';
|
|
4
4
|
import { ConfirmationDialog } from './components/ConfirmationDialog.js';
|
|
5
5
|
import { DisconnectedState, LoadingState } from './components/EmptyStates.js';
|
|
@@ -32,9 +32,7 @@ const App = () => {
|
|
|
32
32
|
const [removingPlugins, setRemovingPlugins] = useState(new Set());
|
|
33
33
|
const [installErrors, setInstallErrors] = useState(new Map());
|
|
34
34
|
const [pluginErrors, setPluginErrors] = useState(new Map());
|
|
35
|
-
const lastFetchRef = useRef(0);
|
|
36
35
|
const pluginErrorTimers = useRef(new Map());
|
|
37
|
-
const pendingTabStates = useRef(new Map());
|
|
38
36
|
const npmSearchTimer = useRef(undefined);
|
|
39
37
|
const npmSearchCounter = useRef(0);
|
|
40
38
|
const connectedRef = useRef(connected);
|
|
@@ -49,7 +47,6 @@ const App = () => {
|
|
|
49
47
|
setPlugins,
|
|
50
48
|
setActiveTools,
|
|
51
49
|
setPendingConfirmations,
|
|
52
|
-
pendingTabStates,
|
|
53
50
|
});
|
|
54
51
|
useEffect(() => () => {
|
|
55
52
|
for (const timer of pluginErrorTimers.current.values())
|
|
@@ -162,49 +159,56 @@ const App = () => {
|
|
|
162
159
|
});
|
|
163
160
|
};
|
|
164
161
|
useEffect(() => {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
updatedPlugins = updatedPlugins.map(p => {
|
|
175
|
-
const buffered = pendingTabStates.current.get(p.name);
|
|
176
|
-
return buffered ? { ...p, tabState: buffered } : p;
|
|
177
|
-
});
|
|
178
|
-
pendingTabStates.current.clear();
|
|
162
|
+
/** Apply a full state snapshot from the background script to React state */
|
|
163
|
+
const applyFullState = (result) => {
|
|
164
|
+
setConnected(result.connected);
|
|
165
|
+
setDisconnectReason(result.disconnectReason);
|
|
166
|
+
setPlugins(result.plugins);
|
|
167
|
+
setFailedPlugins(result.failedPlugins);
|
|
168
|
+
setBrowserTools(() => {
|
|
169
|
+
if (result.browserTools.length === 0) {
|
|
170
|
+
return BROWSER_TOOLS_CATALOG.map(t => ({ ...t, enabled: true }));
|
|
179
171
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
172
|
+
const serverNames = new Set(result.browserTools.map(t => t.name));
|
|
173
|
+
const merged = [...result.browserTools];
|
|
174
|
+
for (const local of BROWSER_TOOLS_CATALOG) {
|
|
175
|
+
if (!serverNames.has(local.name))
|
|
176
|
+
merged.push({ ...local, enabled: true });
|
|
177
|
+
}
|
|
178
|
+
return merged;
|
|
179
|
+
});
|
|
180
|
+
setServerVersion(result.serverVersion);
|
|
181
|
+
setActiveTools(prev => {
|
|
182
|
+
const next = new Set();
|
|
183
|
+
for (const key of prev) {
|
|
184
|
+
if (key.startsWith('browser:') || result.plugins.some(p => key.startsWith(p.name + ':'))) {
|
|
185
|
+
next.add(key);
|
|
193
186
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
})
|
|
197
|
-
.catch(() => {
|
|
198
|
-
// Server may not be ready yet
|
|
187
|
+
}
|
|
188
|
+
return next;
|
|
199
189
|
});
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
190
|
+
// Hydrate pending confirmations from the background. Replay each one
|
|
191
|
+
// through handleNotification so auto-removal timeouts are registered.
|
|
192
|
+
// handleNotification adds each confirmation to React state and sets up
|
|
193
|
+
// the auto-removal timeout using the background's receivedAt timestamp.
|
|
194
|
+
for (const c of result.pendingConfirmations ?? []) {
|
|
195
|
+
handleNotification({
|
|
196
|
+
method: 'confirmation.request',
|
|
197
|
+
params: {
|
|
198
|
+
id: c.id,
|
|
199
|
+
tool: c.tool,
|
|
200
|
+
domain: c.domain,
|
|
201
|
+
tabId: c.tabId,
|
|
202
|
+
paramsPreview: c.paramsPreview,
|
|
203
|
+
timeoutMs: c.timeoutMs,
|
|
204
|
+
receivedAt: c.receivedAt,
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
207
|
}
|
|
208
|
+
};
|
|
209
|
+
void getFullState()
|
|
210
|
+
.then(result => {
|
|
211
|
+
applyFullState(result);
|
|
208
212
|
setLoading(false);
|
|
209
213
|
})
|
|
210
214
|
.catch(() => {
|
|
@@ -231,8 +235,9 @@ const App = () => {
|
|
|
231
235
|
setConnected(isConnected);
|
|
232
236
|
setDisconnectReason(isConnected ? undefined : message.data.disconnectReason);
|
|
233
237
|
if (isConnected) {
|
|
234
|
-
|
|
235
|
-
|
|
238
|
+
void getFullState()
|
|
239
|
+
.then(applyFullState)
|
|
240
|
+
.catch(() => { });
|
|
236
241
|
}
|
|
237
242
|
else {
|
|
238
243
|
setPlugins([]);
|
|
@@ -245,19 +250,23 @@ const App = () => {
|
|
|
245
250
|
clearTimeout(npmSearchTimer.current);
|
|
246
251
|
setNpmResults([]);
|
|
247
252
|
setNpmSearching(false);
|
|
248
|
-
|
|
253
|
+
setInstallingPlugins(new Set());
|
|
254
|
+
setRemovingPlugins(new Set());
|
|
255
|
+
setInstallErrors(new Map());
|
|
256
|
+
for (const timer of pluginErrorTimers.current.values())
|
|
257
|
+
clearTimeout(timer);
|
|
258
|
+
pluginErrorTimers.current.clear();
|
|
259
|
+
setPluginErrors(new Map());
|
|
249
260
|
}
|
|
250
261
|
sendResponse({ ok: true });
|
|
251
262
|
return true;
|
|
252
263
|
}
|
|
253
264
|
if (message.type === 'sp:serverMessage') {
|
|
254
265
|
const data = message.data;
|
|
255
|
-
if (handleServerResponse(data)) {
|
|
256
|
-
sendResponse({ ok: true });
|
|
257
|
-
return true;
|
|
258
|
-
}
|
|
259
266
|
if (data.method === 'plugins.changed') {
|
|
260
|
-
void
|
|
267
|
+
void getFullState()
|
|
268
|
+
.then(applyFullState)
|
|
269
|
+
.catch(() => { });
|
|
261
270
|
sendResponse({ ok: true });
|
|
262
271
|
return true;
|
|
263
272
|
}
|
|
@@ -265,13 +274,6 @@ const App = () => {
|
|
|
265
274
|
sendResponse({ ok: true });
|
|
266
275
|
return true;
|
|
267
276
|
}
|
|
268
|
-
if (message.type === 'ws:message') {
|
|
269
|
-
const wsData = message.data;
|
|
270
|
-
if (wsData?.method === 'sync.full') {
|
|
271
|
-
void loadPlugins();
|
|
272
|
-
}
|
|
273
|
-
return false;
|
|
274
|
-
}
|
|
275
277
|
return false;
|
|
276
278
|
};
|
|
277
279
|
chrome.runtime.onMessage.addListener(listener);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/side-panel/App.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/side-panel/App.tsx"],"names":[],"mappings":"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"}
|