@opentabs-dev/browser-extension 0.0.52 → 0.0.53
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 +24 -3
- package/dist/background-message-handlers.d.ts.map +1 -1
- package/dist/background-message-handlers.js +251 -9
- package/dist/background-message-handlers.js.map +1 -1
- package/dist/background.js +593 -117
- package/dist/background.js.map +1 -1
- package/dist/confirmation-badge.d.ts +2 -2
- package/dist/confirmation-badge.d.ts.map +1 -1
- package/dist/confirmation-badge.js +49 -17
- 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/extension-messages.d.ts +49 -6
- 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 -0
- package/dist/known-methods.js.map +1 -1
- package/dist/message-router.d.ts.map +1 -1
- package/dist/message-router.js +119 -11
- package/dist/message-router.js.map +1 -1
- package/dist/offscreen/index.js +11 -2
- 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 +41 -0
- package/dist/server-state-cache.d.ts.map +1 -0
- package/dist/server-state-cache.js +75 -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 +28 -59
- package/dist/side-panel/App.js.map +1 -1
- package/dist/side-panel/bridge.d.ts +19 -33
- 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/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 +2 -8
- package/dist/side-panel/hooks/useServerNotifications.js.map +1 -1
- package/dist/side-panel/side-panel.js +1201 -1210
- 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 +19 -1
- package/dist/tab-state.d.ts.map +1 -1
- package/dist/tab-state.js +128 -3
- package/dist/tab-state.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +1 -1
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Bridge for side panel ↔ background script
|
|
2
|
+
* Bridge for side panel ↔ background script communication.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Each pending request has a 30-second timeout to prevent hanging promises when
|
|
9
|
-
* the server disconnects between send and response. All pending requests are
|
|
10
|
-
* also rejected on WebSocket disconnect (sp:connectionState connected=false).
|
|
4
|
+
* All state is fetched from the background script's local caches via
|
|
5
|
+
* bg:getFullState. Mutations (tool toggles, plugin management) are relayed
|
|
6
|
+
* to the MCP server via dedicated bg:* message handlers in the background
|
|
7
|
+
* script. The side panel never communicates with the MCP server directly.
|
|
11
8
|
*/
|
|
12
9
|
import type { DisconnectReason } from '../extension-messages.js';
|
|
13
|
-
import type { ConfigStateBrowserTool, ConfigStateFailedPlugin, ConfigStatePlugin,
|
|
10
|
+
import type { ConfigStateBrowserTool, ConfigStateFailedPlugin, ConfigStatePlugin, WireToolDef } from '@opentabs-dev/shared';
|
|
14
11
|
/** Plugin state as displayed in the side panel. tools is optional to reflect that the server response may omit it. */
|
|
15
12
|
type PluginState = Omit<ConfigStatePlugin, 'tools'> & {
|
|
16
13
|
tools?: WireToolDef[];
|
|
@@ -37,6 +34,15 @@ interface PluginInstallResult {
|
|
|
37
34
|
toolCount: number;
|
|
38
35
|
};
|
|
39
36
|
}
|
|
37
|
+
/** Full state returned by bg:getFullState */
|
|
38
|
+
interface FullStateResult {
|
|
39
|
+
connected: boolean;
|
|
40
|
+
disconnectReason?: DisconnectReason;
|
|
41
|
+
plugins: PluginState[];
|
|
42
|
+
failedPlugins: FailedPluginState[];
|
|
43
|
+
browserTools: BrowserToolState[];
|
|
44
|
+
serverVersion?: string;
|
|
45
|
+
}
|
|
40
46
|
/** Returns true if a tool's displayName, name, or description matches the filter string */
|
|
41
47
|
declare const matchesTool: (tool: WireToolDef, filterLower: string) => boolean;
|
|
42
48
|
/** Returns true if a plugin's displayName, name, or any tool name matches the filter string.
|
|
@@ -50,28 +56,8 @@ declare const matchesPlugin: (plugin: PluginState, filterLower: string) => boole
|
|
|
50
56
|
* "slack" → "slack"
|
|
51
57
|
*/
|
|
52
58
|
declare const extractShortName: (name: string) => string;
|
|
53
|
-
/**
|
|
54
|
-
|
|
55
|
-
* Called on WebSocket disconnect (sp:connectionState connected=false) so the
|
|
56
|
-
* side panel gets fast errors instead of waiting for individual 30s timeouts.
|
|
57
|
-
*/
|
|
58
|
-
declare const rejectAllPending: () => void;
|
|
59
|
-
/**
|
|
60
|
-
* Handle a server message forwarded by the background script.
|
|
61
|
-
* If the message is a response (has id, no method), resolve the matching
|
|
62
|
-
* pending request and return true. Otherwise return false so the caller
|
|
63
|
-
* can handle it as a notification.
|
|
64
|
-
*/
|
|
65
|
-
declare const handleServerResponse: (data: Record<string, unknown>) => boolean;
|
|
66
|
-
/** Result from querying the background script for WebSocket connection state */
|
|
67
|
-
interface ConnectionStateResult {
|
|
68
|
-
connected: boolean;
|
|
69
|
-
disconnectReason?: DisconnectReason;
|
|
70
|
-
}
|
|
71
|
-
/** Query the background script for WebSocket connection state */
|
|
72
|
-
declare const getConnectionState: () => Promise<ConnectionStateResult>;
|
|
73
|
-
/** Request full state from MCP server via config.getState */
|
|
74
|
-
declare const fetchConfigState: () => Promise<Partial<ConfigStateResult>>;
|
|
59
|
+
/** Fetch full merged state from the background script's local caches */
|
|
60
|
+
declare const getFullState: () => Promise<FullStateResult>;
|
|
75
61
|
/** Toggle a single tool's enabled state */
|
|
76
62
|
declare const setToolEnabled: (plugin: string, tool: string, enabled: boolean) => Promise<unknown>;
|
|
77
63
|
/** Toggle all tools for a plugin */
|
|
@@ -94,6 +80,6 @@ declare const removePlugin: (name: string) => Promise<{
|
|
|
94
80
|
declare const updatePlugin: (name: string) => Promise<PluginInstallResult>;
|
|
95
81
|
/** Send a confirmation response to the MCP server via the background script (fire-and-forget) */
|
|
96
82
|
declare const sendConfirmationResponse: (id: string, decision: "allow_once" | "allow_always" | "deny", scope?: "tool_domain" | "tool_all" | "domain_all") => void;
|
|
97
|
-
export type { BrowserToolState, FailedPluginState, PluginInstallResult, PluginSearchResult, PluginState, WireToolDef };
|
|
98
|
-
export {
|
|
83
|
+
export type { BrowserToolState, FailedPluginState, FullStateResult, PluginInstallResult, PluginSearchResult, PluginState, WireToolDef, };
|
|
84
|
+
export { extractShortName, getFullState, installPlugin, matchesPlugin, matchesTool, removePlugin, searchPlugins, sendConfirmationResponse, setAllBrowserToolsEnabled, setAllToolsEnabled, setBrowserToolEnabled, setToolEnabled, updatePlugin, };
|
|
99
85
|
//# sourceMappingURL=bridge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/side-panel/bridge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/side-panel/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Bridge for side panel ↔ background script
|
|
2
|
+
* Bridge for side panel ↔ background script communication.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Each pending request has a 30-second timeout to prevent hanging promises when
|
|
9
|
-
* the server disconnects between send and response. All pending requests are
|
|
10
|
-
* also rejected on WebSocket disconnect (sp:connectionState connected=false).
|
|
4
|
+
* All state is fetched from the background script's local caches via
|
|
5
|
+
* bg:getFullState. Mutations (tool toggles, plugin management) are relayed
|
|
6
|
+
* to the MCP server via dedicated bg:* message handlers in the background
|
|
7
|
+
* script. The side panel never communicates with the MCP server directly.
|
|
11
8
|
*/
|
|
12
9
|
/** Returns true if a tool's displayName, name, or description matches the filter string */
|
|
13
10
|
const matchesTool = (tool, filterLower) => tool.displayName.toLowerCase().includes(filterLower) ||
|
|
@@ -26,103 +23,42 @@ const matchesPlugin = (plugin, filterLower) => plugin.displayName.toLowerCase().
|
|
|
26
23
|
* "slack" → "slack"
|
|
27
24
|
*/
|
|
28
25
|
const extractShortName = (name) => (name.split('/').pop() ?? name).replace(/^opentabs-plugin-/, '');
|
|
29
|
-
/** Timeout for pending JSON-RPC requests relayed through the background script (ms) */
|
|
30
|
-
const REQUEST_TIMEOUT_MS = 30_000;
|
|
31
|
-
/** Map of request ID → pending request. Responses are matched by ID. */
|
|
32
|
-
const pendingRequests = new Map();
|
|
33
26
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
27
|
+
* Send a message to the background script and return the response as a Promise.
|
|
28
|
+
* Rejects with an Error if chrome.runtime.lastError is set or the response
|
|
29
|
+
* contains an `error` field (the pattern used by bg:* mutation handlers).
|
|
37
30
|
*/
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
pendingRequests.delete(id);
|
|
41
|
-
clearTimeout(pending.timerId);
|
|
42
|
-
pending.reject(new Error('Server disconnected'));
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Send a JSON-RPC request to the MCP server via the background script.
|
|
47
|
-
* Returns a promise that resolves with the MCP server's response (not the
|
|
48
|
-
* background script's ack). Call handleServerResponse() when sp:serverMessage
|
|
49
|
-
* arrives to resolve pending requests.
|
|
50
|
-
*/
|
|
51
|
-
const sendRequest = (method, params = {}) => {
|
|
52
|
-
const id = crypto.randomUUID();
|
|
53
|
-
const data = { jsonrpc: '2.0', method, params, id };
|
|
54
|
-
return new Promise((resolve, reject) => {
|
|
55
|
-
const timerId = setTimeout(() => {
|
|
56
|
-
if (pendingRequests.has(id)) {
|
|
57
|
-
pendingRequests.delete(id);
|
|
58
|
-
reject(new Error(`Request ${method} timed out after ${REQUEST_TIMEOUT_MS}ms`));
|
|
59
|
-
}
|
|
60
|
-
}, REQUEST_TIMEOUT_MS);
|
|
61
|
-
pendingRequests.set(id, { resolve, reject, timerId });
|
|
62
|
-
chrome.runtime.sendMessage({ type: 'bg:send', data }).catch((err) => {
|
|
63
|
-
clearTimeout(timerId);
|
|
64
|
-
pendingRequests.delete(id);
|
|
65
|
-
reject(err instanceof Error ? err : new Error(String(err)));
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* Handle a server message forwarded by the background script.
|
|
71
|
-
* If the message is a response (has id, no method), resolve the matching
|
|
72
|
-
* pending request and return true. Otherwise return false so the caller
|
|
73
|
-
* can handle it as a notification.
|
|
74
|
-
*/
|
|
75
|
-
const handleServerResponse = (data) => {
|
|
76
|
-
const rawId = data.id;
|
|
77
|
-
if (rawId === undefined || rawId === null || data.method)
|
|
78
|
-
return false;
|
|
79
|
-
const id = String(rawId);
|
|
80
|
-
const pending = pendingRequests.get(id);
|
|
81
|
-
if (!pending)
|
|
82
|
-
return false;
|
|
83
|
-
pendingRequests.delete(id);
|
|
84
|
-
clearTimeout(pending.timerId);
|
|
85
|
-
if ('error' in data) {
|
|
86
|
-
const err = data.error;
|
|
87
|
-
pending.reject(new Error(err.message ?? 'Unknown server error'));
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
pending.resolve(data.result);
|
|
91
|
-
}
|
|
92
|
-
return true;
|
|
93
|
-
};
|
|
94
|
-
/** Query the background script for WebSocket connection state */
|
|
95
|
-
const getConnectionState = () => new Promise(resolve => {
|
|
96
|
-
chrome.runtime.sendMessage({ type: 'bg:getConnectionState' }, (response) => {
|
|
31
|
+
const sendBgMessage = (message) => new Promise((resolve, reject) => {
|
|
32
|
+
chrome.runtime.sendMessage(message, (response) => {
|
|
97
33
|
if (chrome.runtime.lastError) {
|
|
98
|
-
|
|
34
|
+
reject(new Error(chrome.runtime.lastError.message ?? 'Unknown error'));
|
|
35
|
+
return;
|
|
99
36
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
disconnectReason: response?.disconnectReason,
|
|
104
|
-
});
|
|
37
|
+
if (response && typeof response === 'object' && 'error' in response) {
|
|
38
|
+
reject(new Error(response.error));
|
|
39
|
+
return;
|
|
105
40
|
}
|
|
41
|
+
resolve(response);
|
|
106
42
|
});
|
|
107
43
|
});
|
|
108
|
-
/**
|
|
109
|
-
const
|
|
44
|
+
/** Fetch full merged state from the background script's local caches */
|
|
45
|
+
const getFullState = () => sendBgMessage({ type: 'bg:getFullState' });
|
|
110
46
|
/** Toggle a single tool's enabled state */
|
|
111
|
-
const setToolEnabled = (plugin, tool, enabled) =>
|
|
47
|
+
const setToolEnabled = (plugin, tool, enabled) => sendBgMessage({ type: 'bg:setToolEnabled', plugin, tool, enabled });
|
|
112
48
|
/** Toggle all tools for a plugin */
|
|
113
|
-
const setAllToolsEnabled = (plugin, enabled) =>
|
|
49
|
+
const setAllToolsEnabled = (plugin, enabled) => sendBgMessage({ type: 'bg:setAllToolsEnabled', plugin, enabled });
|
|
114
50
|
/** Toggle a browser tool's enabled state */
|
|
115
|
-
const setBrowserToolEnabled = (tool, enabled) =>
|
|
51
|
+
const setBrowserToolEnabled = (tool, enabled) => sendBgMessage({ type: 'bg:setBrowserToolEnabled', tool, enabled });
|
|
116
52
|
/** Toggle all browser tools' enabled state in a single batch request */
|
|
117
|
-
const setAllBrowserToolsEnabled = (enabled) =>
|
|
53
|
+
const setAllBrowserToolsEnabled = (enabled) => sendBgMessage({ type: 'bg:setAllBrowserToolsEnabled', enabled });
|
|
118
54
|
/** Search npm registry for plugins matching the given query */
|
|
119
|
-
const searchPlugins = (query) =>
|
|
55
|
+
const searchPlugins = (query) => sendBgMessage({ type: 'bg:searchPlugins', query });
|
|
120
56
|
/** Install a plugin by package name */
|
|
121
|
-
const installPlugin = (name) =>
|
|
57
|
+
const installPlugin = (name) => sendBgMessage({ type: 'bg:installPlugin', name });
|
|
122
58
|
/** Remove an installed plugin by name */
|
|
123
|
-
const removePlugin = (name) =>
|
|
59
|
+
const removePlugin = (name) => sendBgMessage({ type: 'bg:removePlugin', name });
|
|
124
60
|
/** Update an installed plugin to the latest registry version */
|
|
125
|
-
const updatePlugin = (name) =>
|
|
61
|
+
const updatePlugin = (name) => sendBgMessage({ type: 'bg:updatePlugin', name });
|
|
126
62
|
/** Send a confirmation response to the MCP server via the background script (fire-and-forget) */
|
|
127
63
|
const sendConfirmationResponse = (id, decision, scope) => {
|
|
128
64
|
chrome.runtime
|
|
@@ -134,5 +70,5 @@ const sendConfirmationResponse = (id, decision, scope) => {
|
|
|
134
70
|
console.warn('[opentabs:side-panel] Failed to send confirmation response:', err);
|
|
135
71
|
});
|
|
136
72
|
};
|
|
137
|
-
export {
|
|
73
|
+
export { extractShortName, getFullState, installPlugin, matchesPlugin, matchesTool, removePlugin, searchPlugins, sendConfirmationResponse, setAllBrowserToolsEnabled, setAllToolsEnabled, setBrowserToolEnabled, setToolEnabled, updatePlugin, };
|
|
138
74
|
//# sourceMappingURL=bridge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/side-panel/bridge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/side-panel/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserToolsCard.d.ts","sourceRoot":"","sources":["../../../src/side-panel/components/BrowserToolsCard.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAyBrD;8DAC8D;AAC9D,QAAA,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MAKxB,CAAC;AAEf,QAAA,MAAM,gBAAgB,GAAI,mEAMvB;IACD,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,IAAI,CAAC;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,
|
|
1
|
+
{"version":3,"file":"BrowserToolsCard.d.ts","sourceRoot":"","sources":["../../../src/side-panel/components/BrowserToolsCard.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAyBrD;8DAC8D;AAC9D,QAAA,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MAKxB,CAAC;AAEf,QAAA,MAAM,gBAAgB,GAAI,mEAMvB;IACD,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,IAAI,CAAC;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,4CAoHA,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -85,7 +85,8 @@ const BrowserToolsCard = ({ tools, activeTools, onToolsChange, toolFilter, serve
|
|
|
85
85
|
t.name.toLowerCase().includes(filterLower) ||
|
|
86
86
|
t.description.toLowerCase().includes(filterLower))
|
|
87
87
|
: tools;
|
|
88
|
-
|
|
88
|
+
const hasActiveTool = tools.some(t => activeTools.has(`browser:${t.name}`));
|
|
89
|
+
return (_jsxs(Accordion.Item, { value: "browser-tools", children: [_jsxs(AccordionPrimitive.Header, { className: "flex", children: [_jsxs(AccordionPrimitive.Trigger, { className: "flex min-w-0 flex-1 cursor-pointer items-center gap-2 px-3 py-2 focus:outline-hidden [&[data-state=open]>svg.chevron]:rotate-180", children: [_jsx(PluginIcon, { pluginName: "browser", displayName: "Browser", tabState: "ready", size: 32, iconSvg: CHROME_ICON_SVG, iconInactiveSvg: CHROME_ICON_SVG, active: hasActiveTool }), _jsxs("div", { className: "font-head text-foreground flex min-w-0 flex-1 items-center gap-1.5 truncate text-sm", children: ["Browser", _jsx(Badge, { variant: "default", size: "sm", className: "align-middle", children: "CORE" })] }), _jsx(ChevronDown, { className: "chevron h-4 w-4 shrink-0 transition-transform duration-200" })] }), _jsx(BrowserToolsMenu, { serverVersion: serverVersion, className: "flex shrink-0 items-center px-1" }), _jsx("div", { className: "flex shrink-0 items-center px-3", onClick: (e) => e.stopPropagation(), onKeyDown: (e) => {
|
|
89
90
|
if (e.key === 'Enter' || e.key === ' ')
|
|
90
91
|
e.stopPropagation();
|
|
91
92
|
}, role: "presentation", children: _jsx(Switch, { checked: allEnabled, onCheckedChange: handleToggleAll, "aria-label": "Toggle all browser tools" }) })] }), toggleError && (_jsx(Alert, { status: "error", className: "mx-3 mb-1 px-2 py-1 text-xs", children: toggleError })), _jsxs(Accordion.Content, { className: "border-border border-t", children: [toolFilter && (_jsxs("div", { className: "text-muted-foreground mb-1 px-3 pt-2 text-xs", children: [visibleTools.length, " of ", tools.length, " tools"] })), visibleTools.map(tool => (_jsx(ToolRow, { name: tool.name, displayName: toDisplayName(tool.name), description: tool.description, icon: tool.icon ?? 'globe', enabled: tool.enabled, active: activeTools.has(`browser:${tool.name}`), onToggle: () => handleToggleTool(tool.name, tool.enabled) }, tool.name)))] })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserToolsCard.js","sourceRoot":"","sources":["../../../src/side-panel/components/BrowserToolsCard.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"BrowserToolsCard.js","sourceRoot":"","sources":["../../../src/side-panel/components/BrowserToolsCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginCard.d.ts","sourceRoot":"","sources":["../../../src/side-panel/components/PluginCard.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEtD,QAAA,MAAM,UAAU,GAAI,mHAUjB;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,
|
|
1
|
+
{"version":3,"file":"PluginCard.d.ts","sourceRoot":"","sources":["../../../src/side-panel/components/PluginCard.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEtD,QAAA,MAAM,UAAU,GAAI,mHAUjB;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,4CA8JA,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -56,7 +56,8 @@ const PluginCard = ({ plugin, activeTools, setPlugins, toolFilter, onUpdate, onR
|
|
|
56
56
|
};
|
|
57
57
|
const filterLower = toolFilter?.toLowerCase() ?? '';
|
|
58
58
|
const visibleTools = filterLower ? pluginTools.filter(t => matchesTool(t, filterLower)) : pluginTools;
|
|
59
|
-
|
|
59
|
+
const hasActiveTool = pluginTools.some(t => activeTools.has(`${plugin.name}:${t.name}`));
|
|
60
|
+
return (_jsxs(Accordion.Item, { value: plugin.name, className: removingPlugin ? 'pointer-events-none opacity-60 transition-opacity' : undefined, children: [_jsxs(AccordionPrimitive.Header, { className: "flex", children: [_jsxs(AccordionPrimitive.Trigger, { className: "flex min-w-0 flex-1 cursor-pointer items-center gap-2 px-3 py-2 focus:outline-hidden [&[data-state=open]>svg]:rotate-180", children: [_jsxs(Tooltip, { children: [_jsx(Tooltip.Trigger, { asChild: true, children: _jsx("div", { children: _jsx(PluginIcon, { pluginName: plugin.name, displayName: plugin.displayName, tabState: plugin.tabState, hasUpdate: !!plugin.update, size: 32, iconSvg: plugin.iconSvg, iconInactiveSvg: plugin.iconInactiveSvg, active: hasActiveTool }) }) }), _jsxs(Tooltip.Content, { children: ["v", plugin.version, " \u00B7 ", plugin.trustTier, plugin.update && _jsxs(_Fragment, { children: [" \u00B7 Update: ", plugin.update.latestVersion] })] })] }), _jsxs("div", { className: "font-head text-foreground flex min-w-0 flex-1 items-center gap-1.5 truncate text-sm", children: [plugin.displayName, plugin.source === 'local' && (_jsx(Badge, { variant: "default", size: "sm", className: "align-middle", children: "DEV" })), !plugin.sdkVersion && (_jsxs(Tooltip, { children: [_jsx(Tooltip.Trigger, { asChild: true, children: _jsx(Badge, { variant: "outline", size: "sm", className: "border-accent bg-accent/10 text-accent-foreground align-middle", children: "SDK" }) }), _jsx(Tooltip.Content, { children: "SDK version mismatch \u2014 rebuild plugin" })] }))] }), _jsx(ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-200" })] }), _jsx(PluginMenu, { plugin: plugin, onUpdate: onUpdate ?? (() => undefined), onRemove: onRemove ?? (() => undefined), updating: updatingPlugin ?? false, removing: removingPlugin ?? false, className: "flex shrink-0 items-center px-1" }), _jsx("div", { className: "flex shrink-0 items-center px-3", onClick: (e) => e.stopPropagation(), onKeyDown: (e) => {
|
|
60
61
|
if (e.key === 'Enter' || e.key === ' ')
|
|
61
62
|
e.stopPropagation();
|
|
62
63
|
}, role: "presentation", children: _jsx(Switch, { checked: allEnabled, onCheckedChange: handleToggleAll, "aria-label": `Toggle all tools for ${plugin.name}` }) })] }), toggleError && (_jsx(Alert, { status: "error", className: "mx-3 mb-1 px-2 py-1 text-xs", children: toggleError })), actionError && (_jsx(Alert, { status: "error", className: "mx-3 mb-1 px-2 py-1 text-xs", children: actionError })), _jsxs(Accordion.Content, { className: "border-border border-t", children: [toolFilter && (_jsxs("div", { className: "text-muted-foreground mb-1 px-3 pt-2 text-xs", children: [visibleTools.length, " of ", pluginTools.length, " tools"] })), visibleTools.map(tool => (_jsx(ToolRow, { name: tool.name, displayName: tool.displayName, description: tool.description, icon: tool.icon, enabled: tool.enabled, active: activeTools.has(`${plugin.name}:${tool.name}`), onToggle: () => handleToggleTool(tool.name, tool.enabled) }, tool.name)))] })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginCard.js","sourceRoot":"","sources":["../../../src/side-panel/components/PluginCard.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PluginCard.js","sourceRoot":"","sources":["../../../src/side-panel/components/PluginCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,12 +15,13 @@ interface PluginIconProps {
|
|
|
15
15
|
className?: string;
|
|
16
16
|
iconSvg?: string;
|
|
17
17
|
iconInactiveSvg?: string;
|
|
18
|
+
active?: boolean;
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
20
21
|
* Sanitizes rawSvg for rendering, returning undefined and logging a warning if sanitizeSvg throws.
|
|
21
22
|
* Exported for unit testing.
|
|
22
23
|
*/
|
|
23
24
|
declare const tryGetSanitizedSvg: (rawSvg: string | undefined, pluginName: string) => string | undefined;
|
|
24
|
-
declare const PluginIcon: ({ pluginName, displayName, tabState, hasUpdate, size, className, iconSvg, iconInactiveSvg, }: PluginIconProps) => import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
declare const PluginIcon: ({ pluginName, displayName, tabState, hasUpdate, size, className, iconSvg, iconInactiveSvg, active, }: PluginIconProps) => import("react/jsx-runtime").JSX.Element;
|
|
25
26
|
export { AVATAR_PALETTE_SIZE, getAvatarLetter, getAvatarVar, hashString, tryGetSanitizedSvg, PluginIcon };
|
|
26
27
|
//# sourceMappingURL=PluginIcon.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginIcon.d.ts","sourceRoot":"","sources":["../../../src/side-panel/components/PluginIcon.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PluginIcon.d.ts","sourceRoot":"","sources":["../../../src/side-panel/components/PluginIcon.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,QAAA,MAAM,mBAAmB,KAAK,CAAC;AAE/B,mDAAmD;AACnD,QAAA,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,MAMjC,CAAC;AAEF,2EAA2E;AAC3E,QAAA,MAAM,YAAY,GAAI,YAAY,MAAM,KAAG,MAC8B,CAAC;AAE1E,uFAAuF;AACvF,QAAA,MAAM,eAAe,GAAI,aAAa,MAAM,EAAE,YAAY,MAAM,KAAG,MACX,CAAC;AAEzD,UAAU,eAAe;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAsED;;;GAGG;AACH,QAAA,MAAM,kBAAkB,GAAI,QAAQ,MAAM,GAAG,SAAS,EAAE,YAAY,MAAM,KAAG,MAAM,GAAG,SAQrF,CAAC;AAEF,QAAA,MAAM,UAAU,GAAI,sGAUjB,eAAe,4CAuCjB,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { sanitizeSvg } from '../../sanitize-svg.js';
|
|
3
|
+
import { cn } from '../lib/cn.js';
|
|
3
4
|
import { ArrowUp } from 'lucide-react';
|
|
5
|
+
import { useState, useEffect, useRef } from 'react';
|
|
4
6
|
const AVATAR_PALETTE_SIZE = 10;
|
|
5
7
|
/** djb2 string hash to unsigned 32-bit integer. */
|
|
6
8
|
const hashString = (str) => {
|
|
@@ -17,8 +19,24 @@ const getAvatarLetter = (displayName, pluginName) => (displayName[0] ?? pluginNa
|
|
|
17
19
|
/**
|
|
18
20
|
* Priority-based status indicator positioned at the bottom-right of the icon.
|
|
19
21
|
* Priority: closed = nothing, unavailable = yellow dot, ready+update = ArrowUp icon, ready = green dot.
|
|
22
|
+
* When active is true and state is ready (no update), the dot flashes with HDD-style activity animation.
|
|
23
|
+
* When active transitions to false, the dot soft-fades out over 500ms.
|
|
20
24
|
*/
|
|
21
|
-
const StatusIndicator = ({ tabState, hasUpdate, size }) => {
|
|
25
|
+
const StatusIndicator = ({ tabState, hasUpdate, size, active = false, }) => {
|
|
26
|
+
const prevActiveRef = useRef(false);
|
|
27
|
+
const [fadingOut, setFadingOut] = useState(false);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
const wasActive = prevActiveRef.current;
|
|
30
|
+
prevActiveRef.current = active;
|
|
31
|
+
if (!wasActive || active)
|
|
32
|
+
return;
|
|
33
|
+
const startTimer = setTimeout(() => setFadingOut(true), 0);
|
|
34
|
+
const endTimer = setTimeout(() => setFadingOut(false), 500);
|
|
35
|
+
return () => {
|
|
36
|
+
clearTimeout(startTimer);
|
|
37
|
+
clearTimeout(endTimer);
|
|
38
|
+
};
|
|
39
|
+
}, [active]);
|
|
22
40
|
if (tabState === 'closed')
|
|
23
41
|
return null;
|
|
24
42
|
const dotSize = Math.max(8, Math.round(size * 0.3));
|
|
@@ -29,7 +47,7 @@ const StatusIndicator = ({ tabState, hasUpdate, size }) => {
|
|
|
29
47
|
const iconSize = Math.max(6, Math.round(dotSize * 0.6));
|
|
30
48
|
return (_jsx("div", { className: "bg-accent border-card absolute flex items-center justify-center rounded-full border-2", style: { width: dotSize, height: dotSize, bottom: -2, right: -2 }, children: _jsx(ArrowUp, { className: "text-accent-foreground", style: { width: iconSize, height: iconSize }, strokeWidth: 3 }) }));
|
|
31
49
|
}
|
|
32
|
-
return (_jsx("div", { className:
|
|
50
|
+
return (_jsx("div", { className: cn('bg-success border-card absolute rounded-full border-2', active && 'animate-activity-flash', fadingOut && !active && 'animate-activity-fade-out'), style: { width: dotSize, height: dotSize, bottom: -2, right: -2 } }));
|
|
33
51
|
};
|
|
34
52
|
/**
|
|
35
53
|
* Sanitizes rawSvg for rendering, returning undefined and logging a warning if sanitizeSvg throws.
|
|
@@ -46,18 +64,18 @@ const tryGetSanitizedSvg = (rawSvg, pluginName) => {
|
|
|
46
64
|
return undefined;
|
|
47
65
|
}
|
|
48
66
|
};
|
|
49
|
-
const PluginIcon = ({ pluginName, displayName, tabState = 'closed', hasUpdate = false, size = 32, className = '', iconSvg, iconInactiveSvg, }) => {
|
|
67
|
+
const PluginIcon = ({ pluginName, displayName, tabState = 'closed', hasUpdate = false, size = 32, className = '', iconSvg, iconInactiveSvg, active = false, }) => {
|
|
50
68
|
const isReady = tabState === 'ready';
|
|
51
69
|
const hasSvg = !!iconSvg;
|
|
52
70
|
const rawSvg = isReady ? iconSvg : iconInactiveSvg;
|
|
53
71
|
const svgToRender = tryGetSanitizedSvg(rawSvg, pluginName);
|
|
54
72
|
const innerSize = Math.round(size * 0.6);
|
|
55
73
|
if (hasSvg && svgToRender) {
|
|
56
|
-
return (_jsxs("div", { className: `relative shrink-0 ${className}`, style: { width: size, height: size }, children: [_jsx("div", { className: "border-border flex h-full w-full items-center justify-center rounded border-2", style: { width: size, height: size }, children: _jsx("div", { className: "overflow-hidden", style: { width: innerSize, height: innerSize }, dangerouslySetInnerHTML: { __html: svgToRender } }) }), _jsx(StatusIndicator, { tabState: tabState, hasUpdate: hasUpdate, size: size })] }));
|
|
74
|
+
return (_jsxs("div", { className: `relative shrink-0 ${className}`, style: { width: size, height: size }, children: [_jsx("div", { className: "border-border flex h-full w-full items-center justify-center rounded border-2", style: { width: size, height: size }, children: _jsx("div", { className: "overflow-hidden", style: { width: innerSize, height: innerSize }, dangerouslySetInnerHTML: { __html: svgToRender } }) }), _jsx(StatusIndicator, { tabState: tabState, hasUpdate: hasUpdate, size: size, active: active })] }));
|
|
57
75
|
}
|
|
58
76
|
const letter = getAvatarLetter(displayName, pluginName);
|
|
59
77
|
const fontSize = Math.round(size * 0.55);
|
|
60
|
-
return (_jsxs("div", { className: `relative shrink-0 ${className}`, style: { width: size, height: size }, children: [_jsx("div", { className: "border-border flex h-full w-full items-center justify-center rounded border-2", style: { width: size, height: size, backgroundColor: getAvatarVar(pluginName) }, children: _jsx("span", { className: "font-head leading-none text-white select-none", style: { fontSize, letterSpacing: '-0.02em' }, children: letter }) }), _jsx(StatusIndicator, { tabState: tabState, hasUpdate: hasUpdate, size: size })] }));
|
|
78
|
+
return (_jsxs("div", { className: `relative shrink-0 ${className}`, style: { width: size, height: size }, children: [_jsx("div", { className: "border-border flex h-full w-full items-center justify-center rounded border-2", style: { width: size, height: size, backgroundColor: getAvatarVar(pluginName) }, children: _jsx("span", { className: "font-head leading-none text-white select-none", style: { fontSize, letterSpacing: '-0.02em' }, children: letter }) }), _jsx(StatusIndicator, { tabState: tabState, hasUpdate: hasUpdate, size: size, active: active })] }));
|
|
61
79
|
};
|
|
62
80
|
export { AVATAR_PALETTE_SIZE, getAvatarLetter, getAvatarVar, hashString, tryGetSanitizedSvg, PluginIcon };
|
|
63
81
|
//# sourceMappingURL=PluginIcon.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginIcon.js","sourceRoot":"","sources":["../../../src/side-panel/components/PluginIcon.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"PluginIcon.js","sourceRoot":"","sources":["../../../src/side-panel/components/PluginIcon.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@ interface ToolIconProps {
|
|
|
2
2
|
icon?: string;
|
|
3
3
|
className?: string;
|
|
4
4
|
enabled?: boolean;
|
|
5
|
+
active?: boolean;
|
|
5
6
|
}
|
|
6
|
-
declare const ToolIcon: ({ icon, className, enabled }: ToolIconProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare const ToolIcon: ({ icon, className, enabled, active }: ToolIconProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
8
|
export { ToolIcon };
|
|
8
9
|
//# sourceMappingURL=ToolIcon.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolIcon.d.ts","sourceRoot":"","sources":["../../../src/side-panel/components/ToolIcon.tsx"],"names":[],"mappings":"AAMA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolIcon.d.ts","sourceRoot":"","sources":["../../../src/side-panel/components/ToolIcon.tsx"],"names":[],"mappings":"AAMA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAMD,QAAA,MAAM,QAAQ,GAAI,sCAA0D,aAAa,4CA6CxF,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -1,9 +1,23 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from '../lib/cn.js';
|
|
3
3
|
import { Wrench } from 'lucide-react';
|
|
4
4
|
import { DynamicIcon } from 'lucide-react/dynamic';
|
|
5
|
-
import { Suspense } from 'react';
|
|
5
|
+
import { Suspense, useState, useEffect, useRef } from 'react';
|
|
6
6
|
const FallbackIcon = ({ enabled = true }) => (_jsx(Wrench, { className: cn('h-3 w-3 transition-colors', enabled ? 'text-primary-foreground' : 'text-muted-foreground') }));
|
|
7
|
-
const ToolIcon = ({ icon, className = '', enabled = true
|
|
7
|
+
const ToolIcon = ({ icon, className = '', enabled = true, active = false }) => {
|
|
8
|
+
const [fadingOut, setFadingOut] = useState(false);
|
|
9
|
+
const prevActiveRef = useRef(false);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (prevActiveRef.current && !active) {
|
|
12
|
+
setTimeout(() => setFadingOut(true), 0);
|
|
13
|
+
const timer = setTimeout(() => setFadingOut(false), 500);
|
|
14
|
+
prevActiveRef.current = active;
|
|
15
|
+
return () => clearTimeout(timer);
|
|
16
|
+
}
|
|
17
|
+
prevActiveRef.current = active;
|
|
18
|
+
return;
|
|
19
|
+
}, [active]);
|
|
20
|
+
return (_jsxs("div", { className: cn('relative flex h-6 w-6 shrink-0 items-center justify-center rounded border-2 transition-colors', enabled ? 'border-border bg-primary' : 'border-border/40 bg-muted/40', className), children: [icon ? (_jsx(Suspense, { fallback: _jsx(FallbackIcon, { enabled: enabled }), children: _jsx(DynamicIcon, { name: icon, className: cn('h-3 w-3 transition-colors', enabled ? 'text-primary-foreground' : 'text-muted-foreground'), fallback: () => _jsx(FallbackIcon, { enabled: enabled }) }) })) : (_jsx(FallbackIcon, { enabled: enabled })), (active || fadingOut) && (_jsx("div", { className: cn('bg-success border-card absolute rounded-full border-2', active && 'animate-activity-flash', fadingOut && !active && 'animate-activity-fade-out'), style: { width: 8, height: 8, bottom: -2, right: -2 } }))] }));
|
|
21
|
+
};
|
|
8
22
|
export { ToolIcon };
|
|
9
23
|
//# sourceMappingURL=ToolIcon.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolIcon.js","sourceRoot":"","sources":["../../../src/side-panel/components/ToolIcon.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolIcon.js","sourceRoot":"","sources":["../../../src/side-panel/components/ToolIcon.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAU9D,MAAM,YAAY,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,EAAyB,EAAE,EAAE,CAAC,CAClE,KAAC,MAAM,IAAC,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAI,CACtH,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,GAAG,KAAK,EAAiB,EAAE,EAAE;IAC3F,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,aAAa,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACrC,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;YACzD,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC;YAC/B,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,OAAO;IACT,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,+FAA+F,EAC/F,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,8BAA8B,EACrE,SAAS,CACV,aACA,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,YACpD,KAAC,WAAW,IACV,IAAI,EAAE,IAAgB,EACtB,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,uBAAuB,CAAC,EACzG,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,GAClD,GACO,CACZ,CAAC,CAAC,CAAC,CACF,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,CACnC,EACA,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,CACxB,cACE,SAAS,EAAE,EAAE,CACX,uDAAuD,EACvD,MAAM,IAAI,wBAAwB,EAClC,SAAS,IAAI,CAAC,MAAM,IAAI,2BAA2B,CACpD,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,GACrD,CACH,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolRow.d.ts","sourceRoot":"","sources":["../../../src/side-panel/components/ToolRow.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolRow.d.ts","sourceRoot":"","sources":["../../../src/side-panel/components/ToolRow.tsx"],"names":[],"mappings":"AAKA,QAAA,MAAM,OAAO,GAAI,sEAQd;IACD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,4CAwBA,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Loader } from './retro/Loader.js';
|
|
3
2
|
import { Switch } from './retro/Switch.js';
|
|
4
3
|
import { Tooltip } from './retro/Tooltip.js';
|
|
5
4
|
import { ToolIcon } from './ToolIcon.js';
|
|
6
5
|
import { cn } from '../lib/cn.js';
|
|
7
|
-
const ToolRow = ({ name, displayName, description, icon, enabled, active, onToggle, }) => (_jsxs("div", { className: cn('border-border flex items-center gap-2 border-b px-3 py-2 transition-colors last:border-b-0', enabled ? 'hover:bg-primary/10' : 'hover:bg-muted/50'
|
|
6
|
+
const ToolRow = ({ name, displayName, description, icon, enabled, active, onToggle, }) => (_jsxs("div", { className: cn('border-border flex items-center gap-2 border-b px-3 py-2 transition-colors last:border-b-0', enabled ? 'hover:bg-primary/10' : 'hover:bg-muted/50'), children: [_jsx(ToolIcon, { icon: icon, enabled: enabled, active: active }), _jsxs(Tooltip, { children: [_jsx(Tooltip.Trigger, { asChild: true, children: _jsx("div", { className: "min-w-0 flex-1", children: _jsx("div", { className: "text-foreground truncate text-sm", children: displayName }) }) }), _jsx(Tooltip.Content, { children: description })] }), _jsx("div", { className: "flex shrink-0 items-center gap-2", children: _jsx(Switch, { checked: enabled, onCheckedChange: () => onToggle(), onClick: (e) => e.stopPropagation(), "aria-label": `Toggle ${name} tool` }) })] }));
|
|
8
7
|
export { ToolRow };
|
|
9
8
|
//# sourceMappingURL=ToolRow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolRow.js","sourceRoot":"","sources":["../../../src/side-panel/components/ToolRow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ToolRow.js","sourceRoot":"","sources":["../../../src/side-panel/components/ToolRow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,OAAO,GAAG,CAAC,EACf,IAAI,EACJ,WAAW,EACX,WAAW,EACX,IAAI,EACJ,OAAO,EACP,MAAM,EACN,QAAQ,GAST,EAAE,EAAE,CAAC,CACJ,eACE,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CACtD,aACD,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAI,EAC1D,MAAC,OAAO,eACN,KAAC,OAAO,CAAC,OAAO,IAAC,OAAO,kBACtB,cAAK,SAAS,EAAC,gBAAgB,YAC7B,cAAK,SAAS,EAAC,kCAAkC,YAAE,WAAW,GAAO,GACjE,GACU,EAClB,KAAC,OAAO,CAAC,OAAO,cAAE,WAAW,GAAmB,IACxC,EACV,cAAK,SAAS,EAAC,kCAAkC,YAC/C,KAAC,MAAM,IACL,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,EACjC,OAAO,EAAE,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,gBACzC,UAAU,IAAI,OAAO,GACjC,GACE,IACF,CACP,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
|