@opentabs-dev/mcp-server 0.0.61 → 0.0.62
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/browser-tools/analyze-site.d.ts.map +1 -1
- package/dist/browser-tools/analyze-site.js +2 -0
- package/dist/browser-tools/analyze-site.js.map +1 -1
- package/dist/browser-tools/clear-console-logs.d.ts.map +1 -1
- package/dist/browser-tools/clear-console-logs.js +2 -0
- package/dist/browser-tools/clear-console-logs.js.map +1 -1
- package/dist/browser-tools/click-element.d.ts.map +1 -1
- package/dist/browser-tools/click-element.js +2 -0
- package/dist/browser-tools/click-element.js.map +1 -1
- package/dist/browser-tools/close-tab.d.ts.map +1 -1
- package/dist/browser-tools/close-tab.js +2 -0
- package/dist/browser-tools/close-tab.js.map +1 -1
- package/dist/browser-tools/definition.d.ts +4 -0
- package/dist/browser-tools/definition.d.ts.map +1 -1
- package/dist/browser-tools/definition.js.map +1 -1
- package/dist/browser-tools/delete-cookies.d.ts.map +1 -1
- package/dist/browser-tools/delete-cookies.js +2 -0
- package/dist/browser-tools/delete-cookies.js.map +1 -1
- package/dist/browser-tools/disable-network-capture.d.ts.map +1 -1
- package/dist/browser-tools/disable-network-capture.js +2 -0
- package/dist/browser-tools/disable-network-capture.js.map +1 -1
- package/dist/browser-tools/enable-network-capture.d.ts.map +1 -1
- package/dist/browser-tools/enable-network-capture.js +2 -0
- package/dist/browser-tools/enable-network-capture.js.map +1 -1
- package/dist/browser-tools/execute-script.d.ts.map +1 -1
- package/dist/browser-tools/execute-script.js +2 -0
- package/dist/browser-tools/execute-script.js.map +1 -1
- package/dist/browser-tools/export-har.d.ts.map +1 -1
- package/dist/browser-tools/export-har.js +2 -0
- package/dist/browser-tools/export-har.js.map +1 -1
- package/dist/browser-tools/extension-check-adapter.d.ts.map +1 -1
- package/dist/browser-tools/extension-check-adapter.js +2 -0
- package/dist/browser-tools/extension-check-adapter.js.map +1 -1
- package/dist/browser-tools/extension-force-reconnect.d.ts.map +1 -1
- package/dist/browser-tools/extension-force-reconnect.js +2 -0
- package/dist/browser-tools/extension-force-reconnect.js.map +1 -1
- package/dist/browser-tools/extension-get-logs.d.ts +1 -1
- package/dist/browser-tools/extension-get-logs.d.ts.map +1 -1
- package/dist/browser-tools/extension-get-logs.js +2 -0
- package/dist/browser-tools/extension-get-logs.js.map +1 -1
- package/dist/browser-tools/extension-get-side-panel.d.ts.map +1 -1
- package/dist/browser-tools/extension-get-side-panel.js +2 -0
- package/dist/browser-tools/extension-get-side-panel.js.map +1 -1
- package/dist/browser-tools/extension-get-state.d.ts.map +1 -1
- package/dist/browser-tools/extension-get-state.js +2 -0
- package/dist/browser-tools/extension-get-state.js.map +1 -1
- package/dist/browser-tools/focus-tab.d.ts.map +1 -1
- package/dist/browser-tools/focus-tab.js +2 -0
- package/dist/browser-tools/focus-tab.js.map +1 -1
- package/dist/browser-tools/get-console-logs.d.ts +1 -1
- package/dist/browser-tools/get-console-logs.d.ts.map +1 -1
- package/dist/browser-tools/get-console-logs.js +2 -0
- package/dist/browser-tools/get-console-logs.js.map +1 -1
- package/dist/browser-tools/get-cookies.d.ts.map +1 -1
- package/dist/browser-tools/get-cookies.js +2 -0
- package/dist/browser-tools/get-cookies.js.map +1 -1
- package/dist/browser-tools/get-network-requests.d.ts.map +1 -1
- package/dist/browser-tools/get-network-requests.js +2 -0
- package/dist/browser-tools/get-network-requests.js.map +1 -1
- package/dist/browser-tools/get-page-html.d.ts.map +1 -1
- package/dist/browser-tools/get-page-html.js +2 -0
- package/dist/browser-tools/get-page-html.js.map +1 -1
- package/dist/browser-tools/get-resource-content.d.ts.map +1 -1
- package/dist/browser-tools/get-resource-content.js +2 -0
- package/dist/browser-tools/get-resource-content.js.map +1 -1
- package/dist/browser-tools/get-storage.d.ts.map +1 -1
- package/dist/browser-tools/get-storage.js +2 -0
- package/dist/browser-tools/get-storage.js.map +1 -1
- package/dist/browser-tools/get-tab-content.d.ts.map +1 -1
- package/dist/browser-tools/get-tab-content.js +2 -0
- package/dist/browser-tools/get-tab-content.js.map +1 -1
- package/dist/browser-tools/get-tab-info.d.ts.map +1 -1
- package/dist/browser-tools/get-tab-info.js +2 -0
- package/dist/browser-tools/get-tab-info.js.map +1 -1
- package/dist/browser-tools/get-websocket-frames.d.ts.map +1 -1
- package/dist/browser-tools/get-websocket-frames.js +2 -0
- package/dist/browser-tools/get-websocket-frames.js.map +1 -1
- package/dist/browser-tools/handle-dialog.d.ts.map +1 -1
- package/dist/browser-tools/handle-dialog.js +2 -0
- package/dist/browser-tools/handle-dialog.js.map +1 -1
- package/dist/browser-tools/hover-element.d.ts.map +1 -1
- package/dist/browser-tools/hover-element.js +2 -0
- package/dist/browser-tools/hover-element.js.map +1 -1
- package/dist/browser-tools/index.d.ts.map +1 -1
- package/dist/browser-tools/index.js +5 -0
- package/dist/browser-tools/index.js.map +1 -1
- package/dist/browser-tools/list-resources.d.ts.map +1 -1
- package/dist/browser-tools/list-resources.js +2 -0
- package/dist/browser-tools/list-resources.js.map +1 -1
- package/dist/browser-tools/list-tabs.d.ts.map +1 -1
- package/dist/browser-tools/list-tabs.js +2 -0
- package/dist/browser-tools/list-tabs.js.map +1 -1
- package/dist/browser-tools/navigate-tab.d.ts.map +1 -1
- package/dist/browser-tools/navigate-tab.js +2 -0
- package/dist/browser-tools/navigate-tab.js.map +1 -1
- package/dist/browser-tools/open-tab.d.ts.map +1 -1
- package/dist/browser-tools/open-tab.js +2 -0
- package/dist/browser-tools/open-tab.js.map +1 -1
- package/dist/browser-tools/plugin-list-tabs.d.ts.map +1 -1
- package/dist/browser-tools/plugin-list-tabs.js +2 -0
- package/dist/browser-tools/plugin-list-tabs.js.map +1 -1
- package/dist/browser-tools/press-key.d.ts.map +1 -1
- package/dist/browser-tools/press-key.js +2 -0
- package/dist/browser-tools/press-key.js.map +1 -1
- package/dist/browser-tools/query-elements.d.ts.map +1 -1
- package/dist/browser-tools/query-elements.js +2 -0
- package/dist/browser-tools/query-elements.js.map +1 -1
- package/dist/browser-tools/reload-extension.d.ts.map +1 -1
- package/dist/browser-tools/reload-extension.js +2 -0
- package/dist/browser-tools/reload-extension.js.map +1 -1
- package/dist/browser-tools/screenshot-tab.d.ts.map +1 -1
- package/dist/browser-tools/screenshot-tab.js +2 -0
- package/dist/browser-tools/screenshot-tab.js.map +1 -1
- package/dist/browser-tools/scroll.d.ts.map +1 -1
- package/dist/browser-tools/scroll.js +2 -0
- package/dist/browser-tools/scroll.js.map +1 -1
- package/dist/browser-tools/select-option.d.ts.map +1 -1
- package/dist/browser-tools/select-option.js +2 -0
- package/dist/browser-tools/select-option.js.map +1 -1
- package/dist/browser-tools/set-cookie.d.ts.map +1 -1
- package/dist/browser-tools/set-cookie.js +2 -0
- package/dist/browser-tools/set-cookie.js.map +1 -1
- package/dist/browser-tools/type-text.d.ts.map +1 -1
- package/dist/browser-tools/type-text.js +2 -0
- package/dist/browser-tools/type-text.js.map +1 -1
- package/dist/browser-tools/wait-for-element.d.ts.map +1 -1
- package/dist/browser-tools/wait-for-element.js +2 -0
- package/dist/browser-tools/wait-for-element.js.map +1 -1
- package/dist/config.d.ts +16 -41
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +56 -111
- package/dist/config.js.map +1 -1
- package/dist/discovery.d.ts +1 -4
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +5 -17
- package/dist/discovery.js.map +1 -1
- package/dist/extension-handlers.d.ts +21 -14
- package/dist/extension-handlers.d.ts.map +1 -1
- package/dist/extension-handlers.js +108 -188
- package/dist/extension-handlers.js.map +1 -1
- package/dist/extension-protocol.d.ts +4 -9
- package/dist/extension-protocol.d.ts.map +1 -1
- package/dist/extension-protocol.js +16 -45
- package/dist/extension-protocol.js.map +1 -1
- package/dist/file-watcher.js +2 -2
- package/dist/file-watcher.js.map +1 -1
- package/dist/http-routes.d.ts.map +1 -1
- package/dist/http-routes.js +5 -9
- package/dist/http-routes.js.map +1 -1
- package/dist/loader.d.ts +2 -4
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +6 -5
- package/dist/loader.js.map +1 -1
- package/dist/mcp-setup.d.ts +9 -9
- package/dist/mcp-setup.d.ts.map +1 -1
- package/dist/mcp-setup.js +39 -26
- package/dist/mcp-setup.js.map +1 -1
- package/dist/mcp-tool-dispatch.d.ts +11 -12
- package/dist/mcp-tool-dispatch.d.ts.map +1 -1
- package/dist/mcp-tool-dispatch.js +86 -125
- package/dist/mcp-tool-dispatch.js.map +1 -1
- package/dist/plugin-management.d.ts +0 -1
- package/dist/plugin-management.d.ts.map +1 -1
- package/dist/plugin-management.js +1 -2
- package/dist/plugin-management.js.map +1 -1
- package/dist/registry.d.ts +2 -4
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +1 -12
- package/dist/registry.js.map +1 -1
- package/dist/reload.d.ts.map +1 -1
- package/dist/reload.js +40 -35
- package/dist/reload.js.map +1 -1
- package/dist/state.d.ts +18 -44
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +14 -43
- package/dist/state.js.map +1 -1
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +1 -1
- package/dist/version-check.js.map +1 -1
- package/package.json +1 -1
package/dist/config.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Config system — ~/.opentabs/config.json
|
|
3
3
|
*
|
|
4
|
-
* Single source of truth for local plugin paths and
|
|
4
|
+
* Single source of truth for local plugin paths and per-plugin permission state.
|
|
5
5
|
* Created automatically on first MCP server run with sensible defaults.
|
|
6
6
|
*
|
|
7
7
|
* The config directory defaults to ~/.opentabs but can be overridden via the
|
|
@@ -9,36 +9,24 @@
|
|
|
9
9
|
* E2E test execution where each test worker needs its own isolated config
|
|
10
10
|
* to avoid clobbering shared state.
|
|
11
11
|
*/
|
|
12
|
-
import { generateSecret, getConfigDir, getExtensionDir } from '@opentabs-dev/shared';
|
|
12
|
+
import { generateSecret, getConfigDir, getExtensionDir, type PluginPermissionConfig } from '@opentabs-dev/shared';
|
|
13
13
|
/**
|
|
14
14
|
* Shape of ~/.opentabs/config.json
|
|
15
15
|
*
|
|
16
16
|
* `localPlugins` holds local filesystem paths to plugin directories. These paths
|
|
17
17
|
* start with `./`, `../`, `/`, or `~/` and are resolved relative to the config
|
|
18
18
|
* directory. npm plugins are auto-discovered from global node_modules.
|
|
19
|
+
*
|
|
20
|
+
* `plugins` is a map of plugin name → permission config. Each entry may have
|
|
21
|
+
* a top-level `permission` (default for all tools in that plugin) and a `tools`
|
|
22
|
+
* map of tool base name → per-tool override. Browser tools use the special key
|
|
23
|
+
* `__browser__`.
|
|
19
24
|
*/
|
|
20
|
-
/** Permission policy for a tool: allow (no confirmation), ask (require confirmation), deny (block) */
|
|
21
|
-
type ToolPermission = 'allow' | 'ask' | 'deny';
|
|
22
|
-
/** Permission configuration for browser tool confirmation */
|
|
23
|
-
interface PermissionsConfig {
|
|
24
|
-
/** Domains where all tools are auto-allowed (supports glob patterns, e.g., '*.example.com') */
|
|
25
|
-
trustedDomains: string[];
|
|
26
|
-
/** Domains where all tools require confirmation regardless of tier (supports glob patterns) */
|
|
27
|
-
sensitiveDomains: string[];
|
|
28
|
-
/** Per-tool policy overrides: browser tool name → permission */
|
|
29
|
-
toolPolicy: Record<string, ToolPermission>;
|
|
30
|
-
/** Per-domain per-tool policy overrides: domain → { tool name → permission } */
|
|
31
|
-
domainToolPolicy: Record<string, Record<string, ToolPermission>>;
|
|
32
|
-
}
|
|
33
25
|
interface OpentabsConfig {
|
|
34
26
|
/** Local plugin directory paths (resolved relative to the config directory) */
|
|
35
27
|
localPlugins: string[];
|
|
36
|
-
/**
|
|
37
|
-
|
|
38
|
-
/** Browser tool enabled/disabled state: browser tool name → boolean. Absent = enabled (default). */
|
|
39
|
-
browserToolPolicy: Record<string, boolean>;
|
|
40
|
-
/** Permission configuration for browser tool confirmation */
|
|
41
|
-
permissions: PermissionsConfig;
|
|
28
|
+
/** Per-plugin permission configuration: plugin name → { permission?, tools? } */
|
|
29
|
+
plugins: Record<string, PluginPermissionConfig>;
|
|
42
30
|
/** Whether to skip all permission prompts (dangerous — disables human-in-the-loop) */
|
|
43
31
|
skipPermissions?: boolean;
|
|
44
32
|
}
|
|
@@ -66,30 +54,17 @@ declare const saveConfig: (state: {
|
|
|
66
54
|
configWriteMutex: Promise<void>;
|
|
67
55
|
}, config: OpentabsConfig) => Promise<void>;
|
|
68
56
|
/**
|
|
69
|
-
* Persist
|
|
57
|
+
* Persist plugin permissions to config.json.
|
|
70
58
|
*
|
|
71
|
-
* Reads the current config from disk, updates only the `
|
|
59
|
+
* Reads the current config from disk, updates only the `plugins` field,
|
|
72
60
|
* and writes it back atomically. This prevents stale in-memory plugin
|
|
73
|
-
* paths from overwriting externally-added plugins
|
|
74
|
-
* the "plugin disappears during development" bug.
|
|
75
|
-
*
|
|
76
|
-
* The read-modify-write is serialized via state.configWriteMutex.
|
|
77
|
-
*/
|
|
78
|
-
declare const saveToolConfig: (state: {
|
|
79
|
-
configWriteMutex: Promise<void>;
|
|
80
|
-
}, tools: Record<string, boolean>) => Promise<void>;
|
|
81
|
-
/**
|
|
82
|
-
* Persist only the browser tool enabled/disabled policy to config.json.
|
|
83
|
-
*
|
|
84
|
-
* Reads the current config from disk, updates only the `browserToolPolicy`
|
|
85
|
-
* field, and writes it back atomically. Follows the same read-modify-write
|
|
86
|
-
* pattern as saveToolConfig to prevent overwriting externally-added data.
|
|
61
|
+
* paths from overwriting externally-added plugins.
|
|
87
62
|
*
|
|
88
63
|
* The read-modify-write is serialized via state.configWriteMutex.
|
|
89
64
|
*/
|
|
90
|
-
declare const
|
|
65
|
+
declare const savePluginPermissions: (state: {
|
|
91
66
|
configWriteMutex: Promise<void>;
|
|
92
|
-
},
|
|
67
|
+
}, plugins: Record<string, PluginPermissionConfig>) => Promise<void>;
|
|
93
68
|
/**
|
|
94
69
|
* Write auth.json to the managed extension directory so the Chrome extension
|
|
95
70
|
* can bootstrap the shared secret without an unauthenticated HTTP request.
|
|
@@ -103,6 +78,6 @@ declare const writeAuthFile: (secret: string) => Promise<void>;
|
|
|
103
78
|
* If auth.json exists with a valid secret, returns it without overwriting.
|
|
104
79
|
*/
|
|
105
80
|
declare const loadSecret: () => Promise<string>;
|
|
106
|
-
export type { OpentabsConfig
|
|
107
|
-
export { loadConfig, loadSecret, saveConfig,
|
|
81
|
+
export type { OpentabsConfig };
|
|
82
|
+
export { loadConfig, loadSecret, saveConfig, savePluginPermissions, writeAuthFile, generateSecret, getConfigDir, getExtensionDir, getExtensionVersionFile, getAdaptersDir, };
|
|
108
83
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAEL,cAAc,EACd,YAAY,EAEZ,eAAe,EACf,KAAK,sBAAsB,EAE5B,MAAM,sBAAsB,CAAC;AAO9B;;;;;;;;;;;GAWG;AACH,UAAU,cAAc;IACtB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAChD,sFAAsF;IACtF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,4DAA4D;AAC5D,QAAA,MAAM,uBAAuB,QAAO,MAAsD,CAAC;AAE3F,sEAAsE;AACtE,QAAA,MAAM,cAAc,QAAO,MAA6C,CAAC;AAwLzE;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU,QAAa,OAAO,CAAC,cAAc,CA8BlD,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,UAAU,GAAU,OAAO;IAAE,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,EAAE,QAAQ,cAAc,KAAG,OAAO,CAAC,IAAI,CAY1G,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,qBAAqB,GACzB,OAAO;IAAE,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,EAC1C,SAAS,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,KAC9C,OAAO,CAAC,IAAI,CAyBd,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,aAAa,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAKzD,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,UAAU,QAAa,OAAO,CAAC,MAAM,CA4B1C,CAAC;AAEF,YAAY,EAAE,cAAc,EAAE,CAAC;AAC/B,OAAO,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,cAAc,GACf,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Config system — ~/.opentabs/config.json
|
|
3
3
|
*
|
|
4
|
-
* Single source of truth for local plugin paths and
|
|
4
|
+
* Single source of truth for local plugin paths and per-plugin permission state.
|
|
5
5
|
* Created automatically on first MCP server run with sensible defaults.
|
|
6
6
|
*
|
|
7
7
|
* The config directory defaults to ~/.opentabs but can be overridden via the
|
|
@@ -11,8 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { access, mkdir, readFile } from 'node:fs/promises';
|
|
13
13
|
import { join } from 'node:path';
|
|
14
|
-
import { atomicWrite, generateSecret, getConfigDir, getConfigPath, getExtensionDir } from '@opentabs-dev/shared';
|
|
14
|
+
import { atomicWrite, generateSecret, getConfigDir, getConfigPath, getExtensionDir, } from '@opentabs-dev/shared';
|
|
15
15
|
import { log } from './logger.js';
|
|
16
|
+
const VALID_TOOL_PERMISSIONS = new Set(['off', 'ask', 'auto']);
|
|
17
|
+
const isToolPermission = (v) => typeof v === 'string' && VALID_TOOL_PERMISSIONS.has(v);
|
|
16
18
|
/** Version marker file for the managed extension install */
|
|
17
19
|
const getExtensionVersionFile = () => join(getExtensionDir(), '.opentabs-version');
|
|
18
20
|
/** Directory for plugin adapter IIFEs inside the managed extension */
|
|
@@ -67,52 +69,44 @@ const isLocalPathEntry = (s) => s.startsWith('./') ||
|
|
|
67
69
|
s.startsWith('/') ||
|
|
68
70
|
s.startsWith('~/') ||
|
|
69
71
|
/^[A-Za-z]:[/\\]/.test(s);
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
trustedDomains: ['localhost', '127.0.0.1'],
|
|
75
|
-
sensitiveDomains: [],
|
|
76
|
-
toolPolicy: {},
|
|
77
|
-
domainToolPolicy: {},
|
|
78
|
-
});
|
|
79
|
-
/** Parse a raw permissions value from config.json into a validated PermissionsConfig */
|
|
80
|
-
const parsePermissionsConfig = (raw) => {
|
|
81
|
-
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
82
|
-
return defaultPermissions();
|
|
83
|
-
}
|
|
72
|
+
/** Parse and validate a single PluginPermissionConfig entry from raw JSON */
|
|
73
|
+
const parsePluginPermissionEntry = (raw) => {
|
|
74
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
75
|
+
return null;
|
|
84
76
|
const obj = raw;
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if (obj.toolPolicy && typeof obj.toolPolicy === 'object' && !Array.isArray(obj.toolPolicy)) {
|
|
93
|
-
for (const [key, value] of Object.entries(obj.toolPolicy)) {
|
|
77
|
+
const result = {};
|
|
78
|
+
if (isToolPermission(obj.permission)) {
|
|
79
|
+
result.permission = obj.permission;
|
|
80
|
+
}
|
|
81
|
+
if (obj.tools && typeof obj.tools === 'object' && !Array.isArray(obj.tools)) {
|
|
82
|
+
const tools = {};
|
|
83
|
+
for (const [key, value] of Object.entries(obj.tools)) {
|
|
94
84
|
if (isToolPermission(value)) {
|
|
95
|
-
|
|
85
|
+
tools[key] = value;
|
|
96
86
|
}
|
|
97
87
|
}
|
|
88
|
+
if (Object.keys(tools).length > 0) {
|
|
89
|
+
result.tools = tools;
|
|
90
|
+
}
|
|
98
91
|
}
|
|
99
|
-
|
|
100
|
-
if (
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
92
|
+
// Only return if at least one field was set
|
|
93
|
+
if (result.permission !== undefined || result.tools !== undefined) {
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
};
|
|
98
|
+
/** Parse the plugins map from a raw config record */
|
|
99
|
+
const parsePluginsConfig = (raw) => {
|
|
100
|
+
const result = {};
|
|
101
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
102
|
+
return result;
|
|
103
|
+
for (const [pluginName, entry] of Object.entries(raw)) {
|
|
104
|
+
const parsed = parsePluginPermissionEntry(entry);
|
|
105
|
+
if (parsed) {
|
|
106
|
+
result[pluginName] = parsed;
|
|
113
107
|
}
|
|
114
108
|
}
|
|
115
|
-
return
|
|
109
|
+
return result;
|
|
116
110
|
};
|
|
117
111
|
/**
|
|
118
112
|
* Parse a raw config record into an OpentabsConfig.
|
|
@@ -122,32 +116,25 @@ const parseConfigRecord = (record) => {
|
|
|
122
116
|
const localPlugins = Array.isArray(record.localPlugins)
|
|
123
117
|
? record.localPlugins.filter((p) => typeof p === 'string')
|
|
124
118
|
: [];
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if (typeof value === 'boolean') {
|
|
129
|
-
tools[key] = value;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
const browserToolPolicy = {};
|
|
134
|
-
if (record.browserToolPolicy &&
|
|
119
|
+
// Migration: detect old-format config with `tools: Record<string, boolean>` or `browserToolPolicy`
|
|
120
|
+
const hasOldToolsFormat = record.tools && typeof record.tools === 'object' && !Array.isArray(record.tools);
|
|
121
|
+
const hasOldBrowserToolPolicy = record.browserToolPolicy &&
|
|
135
122
|
typeof record.browserToolPolicy === 'object' &&
|
|
136
|
-
!Array.isArray(record.browserToolPolicy)
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
123
|
+
!Array.isArray(record.browserToolPolicy);
|
|
124
|
+
const hasOldPermissions = record.permissions && typeof record.permissions === 'object' && !Array.isArray(record.permissions);
|
|
125
|
+
if (hasOldToolsFormat || hasOldBrowserToolPolicy || hasOldPermissions) {
|
|
126
|
+
log.info('Migrating config from old format (tools/browserToolPolicy/permissions) to new plugin-centric model. ' +
|
|
127
|
+
'Old permission settings have been discarded — please re-configure permissions in the side panel.');
|
|
142
128
|
}
|
|
143
|
-
//
|
|
144
|
-
|
|
129
|
+
// Parse the new-format plugins map (returns empty if old format or absent)
|
|
130
|
+
const plugins = parsePluginsConfig(record.plugins);
|
|
131
|
+
// Migration: if the old `plugins` array exists (legacy plugin list, not the new map),
|
|
132
|
+
// extract local paths into localPlugins and drop npm package names.
|
|
145
133
|
if (Array.isArray(record.plugins)) {
|
|
146
134
|
const legacyPlugins = record.plugins.filter((p) => typeof p === 'string');
|
|
147
135
|
const localPaths = legacyPlugins.filter(isLocalPathEntry);
|
|
148
136
|
const npmPackages = legacyPlugins.filter(p => !isLocalPathEntry(p));
|
|
149
137
|
if (localPaths.length > 0) {
|
|
150
|
-
// Merge into localPlugins, deduplicating
|
|
151
138
|
const existing = new Set(localPlugins);
|
|
152
139
|
for (const p of localPaths) {
|
|
153
140
|
if (!existing.has(p)) {
|
|
@@ -172,15 +159,13 @@ const parseConfigRecord = (record) => {
|
|
|
172
159
|
'npm plugins are now auto-discovered from global node_modules.');
|
|
173
160
|
}
|
|
174
161
|
}
|
|
175
|
-
// Parse permissions config with defensive validation
|
|
176
|
-
const permissions = parsePermissionsConfig(record.permissions);
|
|
177
162
|
// Read skipPermissions (new name); fall back to skipConfirmation (old name) for backward compatibility.
|
|
178
163
|
const skipPermissions = typeof record.skipPermissions === 'boolean'
|
|
179
164
|
? record.skipPermissions
|
|
180
165
|
: typeof record.skipConfirmation === 'boolean'
|
|
181
166
|
? record.skipConfirmation
|
|
182
167
|
: undefined;
|
|
183
|
-
return { localPlugins,
|
|
168
|
+
return { localPlugins, plugins, skipPermissions };
|
|
184
169
|
};
|
|
185
170
|
/**
|
|
186
171
|
* Load config from ~/.opentabs/config.json.
|
|
@@ -198,9 +183,7 @@ const loadConfig = async () => {
|
|
|
198
183
|
if (!(await access(configPath).then(() => true, () => false))) {
|
|
199
184
|
const config = {
|
|
200
185
|
localPlugins: [],
|
|
201
|
-
|
|
202
|
-
browserToolPolicy: {},
|
|
203
|
-
permissions: defaultPermissions(),
|
|
186
|
+
plugins: {},
|
|
204
187
|
};
|
|
205
188
|
await atomicWriteConfig(configPath, `${JSON.stringify(config, null, 2)}\n`);
|
|
206
189
|
log.info(`Created default config at ${configPath}`);
|
|
@@ -235,34 +218,30 @@ const saveConfig = async (state, config) => {
|
|
|
235
218
|
await writePromise;
|
|
236
219
|
};
|
|
237
220
|
/**
|
|
238
|
-
* Persist
|
|
221
|
+
* Persist plugin permissions to config.json.
|
|
239
222
|
*
|
|
240
|
-
* Reads the current config from disk, updates only the `
|
|
223
|
+
* Reads the current config from disk, updates only the `plugins` field,
|
|
241
224
|
* and writes it back atomically. This prevents stale in-memory plugin
|
|
242
|
-
* paths from overwriting externally-added plugins
|
|
243
|
-
* the "plugin disappears during development" bug.
|
|
225
|
+
* paths from overwriting externally-added plugins.
|
|
244
226
|
*
|
|
245
227
|
* The read-modify-write is serialized via state.configWriteMutex.
|
|
246
228
|
*/
|
|
247
|
-
const
|
|
229
|
+
const savePluginPermissions = async (state, plugins) => {
|
|
248
230
|
const configDir = getConfigDir();
|
|
249
231
|
const configPath = getConfigPath();
|
|
250
232
|
const prev = state.configWriteMutex;
|
|
251
233
|
const writePromise = (async () => {
|
|
252
234
|
await prev;
|
|
253
235
|
await mkdir(configDir, { recursive: true, mode: 0o700 });
|
|
254
|
-
// Read current config from disk to preserve localPlugins
|
|
255
236
|
const record = await readConfigWithRetry(configPath, 2, 50);
|
|
256
237
|
if (!record) {
|
|
257
|
-
log.warn('Cannot persist
|
|
238
|
+
log.warn('Cannot persist plugin permissions — config file unreadable');
|
|
258
239
|
return;
|
|
259
240
|
}
|
|
260
241
|
const current = parseConfigRecord(record);
|
|
261
242
|
const updated = {
|
|
262
243
|
localPlugins: current.localPlugins,
|
|
263
|
-
|
|
264
|
-
browserToolPolicy: current.browserToolPolicy,
|
|
265
|
-
permissions: current.permissions,
|
|
244
|
+
plugins,
|
|
266
245
|
skipPermissions: current.skipPermissions,
|
|
267
246
|
};
|
|
268
247
|
await atomicWriteConfig(configPath, `${JSON.stringify(updated, null, 2)}\n`);
|
|
@@ -271,40 +250,6 @@ const saveToolConfig = async (state, tools) => {
|
|
|
271
250
|
state.configWriteMutex = writePromise.catch(() => { });
|
|
272
251
|
await writePromise;
|
|
273
252
|
};
|
|
274
|
-
/**
|
|
275
|
-
* Persist only the browser tool enabled/disabled policy to config.json.
|
|
276
|
-
*
|
|
277
|
-
* Reads the current config from disk, updates only the `browserToolPolicy`
|
|
278
|
-
* field, and writes it back atomically. Follows the same read-modify-write
|
|
279
|
-
* pattern as saveToolConfig to prevent overwriting externally-added data.
|
|
280
|
-
*
|
|
281
|
-
* The read-modify-write is serialized via state.configWriteMutex.
|
|
282
|
-
*/
|
|
283
|
-
const saveBrowserToolPolicy = async (state, browserToolPolicy) => {
|
|
284
|
-
const configDir = getConfigDir();
|
|
285
|
-
const configPath = getConfigPath();
|
|
286
|
-
const prev = state.configWriteMutex;
|
|
287
|
-
const writePromise = (async () => {
|
|
288
|
-
await prev;
|
|
289
|
-
await mkdir(configDir, { recursive: true, mode: 0o700 });
|
|
290
|
-
const record = await readConfigWithRetry(configPath, 2, 50);
|
|
291
|
-
if (!record) {
|
|
292
|
-
log.warn('Cannot persist browser tool policy — config file unreadable');
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
const current = parseConfigRecord(record);
|
|
296
|
-
const updated = {
|
|
297
|
-
localPlugins: current.localPlugins,
|
|
298
|
-
tools: current.tools,
|
|
299
|
-
browserToolPolicy,
|
|
300
|
-
permissions: current.permissions,
|
|
301
|
-
skipPermissions: current.skipPermissions,
|
|
302
|
-
};
|
|
303
|
-
await atomicWriteConfig(configPath, `${JSON.stringify(updated, null, 2)}\n`);
|
|
304
|
-
})();
|
|
305
|
-
state.configWriteMutex = writePromise.catch(() => { });
|
|
306
|
-
await writePromise;
|
|
307
|
-
};
|
|
308
253
|
/**
|
|
309
254
|
* Write auth.json to the managed extension directory so the Chrome extension
|
|
310
255
|
* can bootstrap the shared secret without an unauthenticated HTTP request.
|
|
@@ -346,5 +291,5 @@ const loadSecret = async () => {
|
|
|
346
291
|
log.info(`Generated WebSocket authentication secret in ${authPath}`);
|
|
347
292
|
return secret;
|
|
348
293
|
};
|
|
349
|
-
export { loadConfig, loadSecret, saveConfig,
|
|
294
|
+
export { loadConfig, loadSecret, saveConfig, savePluginPermissions, writeAuthFile, generateSecret, getConfigDir, getExtensionDir, getExtensionVersionFile, getAdaptersDir, };
|
|
350
295
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAqClC,4DAA4D;AAC5D,MAAM,uBAAuB,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAE3F,sEAAsE;AACtE,MAAM,cAAc,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,CAAC,CAAC;AAEzE,kFAAkF;AAClF,MAAM,iBAAiB,GAAG,CAAC,UAAkB,EAAE,OAAe,EAAiB,EAAE,CAC/E,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAE1C;;;;;;;;;GASG;AACH,MAAM,mBAAmB,GAAG,KAAK,EAC/B,UAAkB,EAClB,UAAU,GAAG,CAAC,EACd,cAAc,GAAG,GAAG,EACqB,EAAE;IAC3C,IAAI,KAAK,GAAG,cAAc,CAAC;IAC3B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAExC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3E,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;oBAC3B,GAAG,CAAC,IAAI,CAAC,aAAa,UAAU,+BAA+B,UAAU,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC5F,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,GAAG,CAAC,KAAK,CAAC,aAAa,UAAU,6CAA6C,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9F,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC7C,KAAK,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;YAED,OAAO,MAAiC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3B,GAAG,CAAC,IAAI,CAAC,8BAA8B,UAAU,UAAU,UAAU,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;gBAC9F,OAAO,IAAI,CAAC;YACd,CAAC;YACD,GAAG,CAAC,KAAK,CAAC,uBAAuB,OAAO,GAAG,CAAC,wBAAwB,KAAK,IAAI,CAAC,CAAC;YAC/E,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7C,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,iEAAiE;AACjE,MAAM,gBAAgB,GAAG,CAAC,CAAS,EAAW,EAAE,CAC9C,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;IAClB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;IACnB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;IACnB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACpB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;IACjB,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;IAClB,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE5B,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAS,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAEzE,MAAM,gBAAgB,GAAG,CAAC,CAAU,EAAuB,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAErH,sFAAsF;AACtF,MAAM,kBAAkB,GAAG,GAAsB,EAAE,CAAC,CAAC;IACnD,cAAc,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1C,gBAAgB,EAAE,EAAE;IACpB,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,EAAE;CACrB,CAAC,CAAC;AAEH,wFAAwF;AACxF,MAAM,sBAAsB,GAAG,CAAC,GAAY,EAAqB,EAAE;IACjE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,GAAG,GAAG,GAA8B,CAAC;IAE3C,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACtD,CAAC,CAAE,GAAG,CAAC,cAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QACrF,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAE/B,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC1D,CAAC,CAAE,GAAG,CAAC,gBAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QACvF,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAmC,EAAE,CAAC;IACtD,IAAI,GAAG,CAAC,UAAU,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3F,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAqC,CAAC,EAAE,CAAC;YACrF,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAmD,EAAE,CAAC;IAC5E,IAAI,GAAG,CAAC,gBAAgB,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC7G,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAA2C,CAAC,EAAE,CAAC;YAC9F,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChE,MAAM,WAAW,GAAmC,EAAE,CAAC;gBACvD,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;oBAChF,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3B,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;oBAC/B,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,gBAAgB,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AAC5E,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,iBAAiB,GAAG,CAAC,MAA+B,EAAkB,EAAE;IAC5E,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;QACrD,CAAC,CAAE,MAAM,CAAC,YAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QACtF,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACrF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAgC,CAAC,EAAE,CAAC;YACnF,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAA4B,EAAE,CAAC;IACtD,IACE,MAAM,CAAC,iBAAiB;QACxB,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ;QAC5C,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,EACxC,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,iBAA4C,CAAC,EAAE,CAAC;YAC/F,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,iBAAiB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,sFAAsF;IACtF,sFAAsF;IACtF,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,aAAa,GAAI,MAAM,CAAC,OAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;QACtG,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,yCAAyC;YACzC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;YACvC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrB,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YACD,GAAG,CAAC,IAAI,CACN,aAAa,UAAU,CAAC,MAAM,mDAAmD;gBAC/E,uEAAuE,CAC1E,CAAC;QACJ,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CACN,YAAY,WAAW,CAAC,MAAM,oDAAoD;gBAChF,+DAA+D,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,4FAA4F;IAC5F,qCAAqC;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,MAAM,SAAS,GAAI,MAAM,CAAC,UAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;QACrG,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CACN,YAAY,SAAS,CAAC,MAAM,6BAA6B;gBACvD,+DAA+D,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,MAAM,WAAW,GAAG,sBAAsB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAE/D,wGAAwG;IACxG,MAAM,eAAe,GACnB,OAAO,MAAM,CAAC,eAAe,KAAK,SAAS;QACzC,CAAC,CAAC,MAAM,CAAC,eAAe;QACxB,CAAC,CAAC,OAAO,MAAM,CAAC,gBAAgB,KAAK,SAAS;YAC5C,CAAC,CAAC,MAAM,CAAC,gBAAgB;YACzB,CAAC,CAAC,SAAS,CAAC;IAElB,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;AAClF,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,KAAK,IAA6B,EAAE;IACrD,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEzD,IACE,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAC7B,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACZ,CAAC,EACF,CAAC;QACD,MAAM,MAAM,GAAmB;YAC7B,YAAY,EAAE,EAAE;YAChB,KAAK,EAAE,EAAE;YACT,iBAAiB,EAAE,EAAE;YACrB,WAAW,EAAE,kBAAkB,EAAE;SAClC,CAAC;QACF,MAAM,iBAAiB,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5E,GAAG,CAAC,IAAI,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,2EAA2E;QAC3E,uEAAuE;QACvE,uEAAuE;QACvE,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,8BAA8B,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,GAAG,KAAK,EAAE,KAA0C,EAAE,MAAsB,EAAiB,EAAE;IAC7G,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACpC,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;QAC/B,MAAM,IAAI,CAAC;QACX,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,MAAM,iBAAiB,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC,CAAC,EAAE,CAAC;IACL,qFAAqF;IACrF,KAAK,CAAC,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtD,MAAM,YAAY,CAAC;AACrB,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,cAAc,GAAG,KAAK,EAC1B,KAA0C,EAC1C,KAA8B,EACf,EAAE;IACjB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACpC,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;QAC/B,MAAM,IAAI,CAAC;QACX,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAEzD,yDAAyD;QACzD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAmB;YAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK;YACL,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC;QACF,MAAM,iBAAiB,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC,CAAC,EAAE,CAAC;IACL,qFAAqF;IACrF,KAAK,CAAC,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtD,MAAM,YAAY,CAAC;AACrB,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,qBAAqB,GAAG,KAAK,EACjC,KAA0C,EAC1C,iBAA0C,EAC3B,EAAE;IACjB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACpC,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;QAC/B,MAAM,IAAI,CAAC;QACX,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAmB;YAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,iBAAiB;YACjB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC;QACF,MAAM,iBAAiB,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC,CAAC,EAAE,CAAC;IACL,KAAK,CAAC,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtD,MAAM,YAAY,CAAC;AACrB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,aAAa,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;IAC5D,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACjD,MAAM,WAAW,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,GAAG,KAAK,IAAqB,EAAE;IAC7C,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACjD,IACE,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACzB,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACZ,EACD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YACtE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnE,MAAM,MAAM,GAAI,MAAkC,CAAC,MAAM,CAAC;gBAC1D,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpD,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,gCAAgC,QAAQ,0BAA0B,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,MAAM,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,MAAM,WAAW,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtE,GAAG,CAAC,IAAI,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAGF,OAAO,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,cAAc,GACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/discovery.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/** Plugin discovery orchestrator: resolve → load → register pipeline. */
|
|
2
|
-
import type { TrustTier } from '@opentabs-dev/shared';
|
|
3
2
|
import type { PluginRegistry } from './state.js';
|
|
4
3
|
/** Outcome of plugin discovery: an immutable registry plus any errors from failed plugins. */
|
|
5
4
|
interface DiscoveryResult {
|
|
@@ -11,8 +10,6 @@ interface DiscoveryError {
|
|
|
11
10
|
readonly specifier: string;
|
|
12
11
|
readonly error: string;
|
|
13
12
|
}
|
|
14
|
-
/** Determine trust tier for an npm plugin directory path based on its package name. */
|
|
15
|
-
declare const npmTrustTier: (dir: string) => TrustTier;
|
|
16
13
|
/**
|
|
17
14
|
* Discover plugins from auto-discovered npm globals and explicit local paths.
|
|
18
15
|
*
|
|
@@ -23,6 +20,6 @@ declare const npmTrustTier: (dir: string) => TrustTier;
|
|
|
23
20
|
* Phase 5: Build immutable registry.
|
|
24
21
|
*/
|
|
25
22
|
declare const discoverPlugins: (localPlugins: string[], configDir: string) => Promise<DiscoveryResult>;
|
|
26
|
-
export { discoverPlugins
|
|
23
|
+
export { discoverPlugins };
|
|
27
24
|
export type { DiscoveryError, DiscoveryResult };
|
|
28
25
|
//# sourceMappingURL=discovery.d.ts.map
|
package/dist/discovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,yEAAyE;
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,yEAAyE;AASzE,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,8FAA8F;AAC9F,UAAU,eAAe;IACvB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED,yFAAyF;AACzF,UAAU,cAAc;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,QAAA,MAAM,eAAe,GAAU,cAAc,MAAM,EAAE,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,eAAe,CA6FjG,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/discovery.js
CHANGED
|
@@ -1,21 +1,10 @@
|
|
|
1
1
|
/** Plugin discovery orchestrator: resolve → load → register pipeline. */
|
|
2
|
-
import
|
|
3
|
-
import { isErr, OFFICIAL_SCOPE, toErrorMessage } from '@opentabs-dev/shared';
|
|
2
|
+
import { isErr, toErrorMessage } from '@opentabs-dev/shared';
|
|
4
3
|
import { loadPlugin } from './loader.js';
|
|
5
4
|
import { log } from './logger.js';
|
|
6
5
|
import { buildRegistry } from './registry.js';
|
|
7
6
|
import { discoverGlobalNpmPlugins, resolvePluginPath } from './resolver.js';
|
|
8
7
|
import { isSkipNpmDiscovery } from './skip-npm-discovery.js';
|
|
9
|
-
/** Determine trust tier for an npm plugin directory path based on its package name. */
|
|
10
|
-
const npmTrustTier = (dir) => {
|
|
11
|
-
// Extract the immediate parent directory name (e.g. "@opentabs-dev") from a path like
|
|
12
|
-
// "/usr/lib/node_modules/@opentabs-dev/opentabs-plugin-slack". Using basename(dirname(dir))
|
|
13
|
-
// avoids false-positives where /@opentabs-dev/ appears elsewhere in the path (e.g. a
|
|
14
|
-
// user's home directory) but is not the package scope.
|
|
15
|
-
if (path.basename(path.dirname(dir)) === OFFICIAL_SCOPE)
|
|
16
|
-
return 'official';
|
|
17
|
-
return 'community';
|
|
18
|
-
};
|
|
19
8
|
/**
|
|
20
9
|
* Discover plugins from auto-discovered npm globals and explicit local paths.
|
|
21
10
|
*
|
|
@@ -38,8 +27,7 @@ const discoverPlugins = async (localPlugins, configDir) => {
|
|
|
38
27
|
}
|
|
39
28
|
// Phase 2 + 3: Resolve and load all plugins in parallel
|
|
40
29
|
const loadNpm = npmDirs.map(async (dir) => {
|
|
41
|
-
const
|
|
42
|
-
const loadResult = await loadPlugin(dir, trustTier, 'npm');
|
|
30
|
+
const loadResult = await loadPlugin(dir, 'npm');
|
|
43
31
|
if (isErr(loadResult)) {
|
|
44
32
|
errors.push({ specifier: dir, error: loadResult.error });
|
|
45
33
|
failures.push({ path: dir, error: loadResult.error });
|
|
@@ -60,7 +48,7 @@ const discoverPlugins = async (localPlugins, configDir) => {
|
|
|
60
48
|
return null;
|
|
61
49
|
}
|
|
62
50
|
const dir = resolveResult.value;
|
|
63
|
-
const loadResult = await loadPlugin(dir, 'local'
|
|
51
|
+
const loadResult = await loadPlugin(dir, 'local');
|
|
64
52
|
if (isErr(loadResult)) {
|
|
65
53
|
errors.push({ specifier, error: loadResult.error });
|
|
66
54
|
failures.push({ path: dir, error: loadResult.error });
|
|
@@ -100,10 +88,10 @@ const discoverPlugins = async (localPlugins, configDir) => {
|
|
|
100
88
|
const registry = buildRegistry(Array.from(merged.values()), failures);
|
|
101
89
|
for (const plugin of registry.plugins.values()) {
|
|
102
90
|
const toolNames = plugin.tools.map(t => t.name).join(', ');
|
|
103
|
-
log.info(`Discovered plugin: ${plugin.name} v${plugin.version} (${plugin.
|
|
91
|
+
log.info(`Discovered plugin: ${plugin.name} v${plugin.version} (${plugin.source}) from ${plugin.sourcePath ?? '(npm)'} — tools: [${toolNames}]`);
|
|
104
92
|
}
|
|
105
93
|
log.info(`Plugin discovery complete: ${registry.plugins.size} plugin(s) loaded, ${errors.length} error(s)`);
|
|
106
94
|
return { registry, errors };
|
|
107
95
|
};
|
|
108
|
-
export { discoverPlugins
|
|
96
|
+
export { discoverPlugins };
|
|
109
97
|
//# sourceMappingURL=discovery.js.map
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,OAAO,
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,14 +4,13 @@
|
|
|
4
4
|
* Exported individually so they can be unit tested independently of the
|
|
5
5
|
* handleExtensionMessage router in extension-protocol.ts.
|
|
6
6
|
*/
|
|
7
|
-
import type { ConfigStateResult, JsonRpcError, JsonRpcNotification, JsonRpcRequest, JsonRpcResult, PluginTabInfo,
|
|
7
|
+
import type { ConfigStateResult, JsonRpcError, JsonRpcNotification, JsonRpcRequest, JsonRpcResult, PluginTabInfo, ToolPermission } from '@opentabs-dev/shared';
|
|
8
8
|
import type { PluginLogEntry } from './log-buffer.js';
|
|
9
9
|
import type { RegisteredPlugin, ServerState, TabMapping } from './state.js';
|
|
10
10
|
/** Callbacks the extension protocol can invoke on the MCP side */
|
|
11
11
|
interface McpCallbacks {
|
|
12
12
|
onToolConfigChanged: () => void;
|
|
13
|
-
|
|
14
|
-
onBrowserToolPolicyPersist: () => void;
|
|
13
|
+
onPluginPermissionsPersist: () => void;
|
|
15
14
|
onPluginLog: (entry: PluginLogEntry) => void;
|
|
16
15
|
onReload: () => Promise<{
|
|
17
16
|
plugins: number;
|
|
@@ -41,13 +40,16 @@ declare const sendPluginManagementError: (state: ServerState, id: string | numbe
|
|
|
41
40
|
* Returns the common core shape shared by sync.full, plugin.update, and config.getState.
|
|
42
41
|
* Callers can spread additional fields on top (e.g., sourcePath, adapterHash for sync messages,
|
|
43
42
|
* or tabState, source, sdkVersion for config.getState).
|
|
43
|
+
*
|
|
44
|
+
* The plugin-level permission comes from pluginPermissions[plugin.name]?.permission ?? 'off'.
|
|
45
|
+
* Each tool's permission is resolved via getToolPermission() (per-tool override → plugin default → 'off').
|
|
44
46
|
*/
|
|
45
|
-
declare const serializePluginForExtension: (
|
|
47
|
+
declare const serializePluginForExtension: (state: ServerState, plugin: RegisteredPlugin) => {
|
|
46
48
|
name: string;
|
|
47
49
|
version: string;
|
|
48
50
|
displayName: string;
|
|
49
51
|
urlPatterns: string[];
|
|
50
|
-
|
|
52
|
+
permission: ToolPermission;
|
|
51
53
|
iconSvg?: string;
|
|
52
54
|
iconInactiveSvg?: string;
|
|
53
55
|
iconDarkSvg?: string;
|
|
@@ -56,11 +58,12 @@ declare const serializePluginForExtension: (plugin: RegisteredPlugin, state: Ser
|
|
|
56
58
|
name: string;
|
|
57
59
|
displayName: string;
|
|
58
60
|
description: string;
|
|
61
|
+
summary?: string;
|
|
59
62
|
icon: string;
|
|
60
63
|
iconSvg?: string;
|
|
61
64
|
iconInactiveSvg?: string;
|
|
62
65
|
group?: string;
|
|
63
|
-
|
|
66
|
+
permission: ToolPermission;
|
|
64
67
|
}[];
|
|
65
68
|
};
|
|
66
69
|
/** Wire shape for a single tab info entry — all fields may be absent or wrong type */
|
|
@@ -86,11 +89,16 @@ declare const handleTabStateChanged: (state: ServerState, params: Record<string,
|
|
|
86
89
|
*/
|
|
87
90
|
declare const buildConfigStatePayload: (state: ServerState) => ConfigStateResult;
|
|
88
91
|
declare const handleConfigGetState: (state: ServerState, id: string | number) => void;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
declare const
|
|
92
|
+
/**
|
|
93
|
+
* Handle config.setToolPermission: set a per-tool permission override.
|
|
94
|
+
* Works for both plugin tools (plugin=pluginName) and browser tools (plugin='browser').
|
|
95
|
+
*/
|
|
96
|
+
declare const handleConfigSetToolPermission: (state: ServerState, params: Record<string, unknown> | undefined, id: string | number, callbacks: McpCallbacks) => void;
|
|
97
|
+
/**
|
|
98
|
+
* Handle config.setPluginPermission: set the plugin-level default permission.
|
|
99
|
+
* Works for both plugins (plugin=pluginName) and browser tools (plugin='browser').
|
|
100
|
+
*/
|
|
101
|
+
declare const handleConfigSetPluginPermission: (state: ServerState, params: Record<string, unknown> | undefined, id: string | number, callbacks: McpCallbacks) => void;
|
|
94
102
|
/**
|
|
95
103
|
* Handle tool.progress notification from the extension.
|
|
96
104
|
* Looks up the pending dispatch by dispatchId, invokes the onProgress callback
|
|
@@ -105,8 +113,7 @@ declare const VALID_LOG_LEVELS: Set<string>;
|
|
|
105
113
|
declare const handlePluginLog: (params: Record<string, unknown> | undefined, callbacks: McpCallbacks) => void;
|
|
106
114
|
/**
|
|
107
115
|
* Handle a confirmation.response from the extension.
|
|
108
|
-
* Resolves the pending confirmation promise with the user's decision.
|
|
109
|
-
* For 'allow_always', also adds a session permission rule.
|
|
116
|
+
* Resolves the pending confirmation promise with the user's decision ('allow' or 'deny').
|
|
110
117
|
*/
|
|
111
118
|
declare const handleConfirmationResponse: (state: ServerState, params: Record<string, unknown> | undefined) => void;
|
|
112
119
|
/**
|
|
@@ -120,5 +127,5 @@ declare const handlePluginUpdateFromRegistry: (state: ServerState, params: Recor
|
|
|
120
127
|
declare const handlePluginRemove: (state: ServerState, params: Record<string, unknown> | undefined, id: string | number, callbacks: McpCallbacks) => Promise<void>;
|
|
121
128
|
declare const handlePluginCheckUpdates: (state: ServerState, id: string | number) => Promise<void>;
|
|
122
129
|
export type { McpCallbacks, WireTabMapping, WirePluginTabInfo };
|
|
123
|
-
export { buildConfigStatePayload, sendToExtension, sendJsonRpcError, sendPluginManagementError, serializePluginForExtension, parsePluginTabInfo, parseTabMapping, VALID_LOG_LEVELS, handleTabSyncAll, handleTabStateChanged, handleConfigGetState,
|
|
130
|
+
export { buildConfigStatePayload, sendToExtension, sendJsonRpcError, sendPluginManagementError, serializePluginForExtension, parsePluginTabInfo, parseTabMapping, VALID_LOG_LEVELS, handleTabSyncAll, handleTabStateChanged, handleConfigGetState, handleConfigSetToolPermission, handleConfigSetPluginPermission, handlePluginSearch, handlePluginInstall, handlePluginUpdateFromRegistry, handlePluginRemove, handlePluginCheckUpdates, handleToolProgress, handlePluginLog, handleConfirmationResponse, rejectAllPendingConfirmations, };
|
|
124
131
|
//# sourceMappingURL=extension-handlers.d.ts.map
|