@opentabs-dev/mcp-server 0.0.19
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/audit-disk.d.ts +23 -0
- package/dist/audit-disk.d.ts.map +1 -0
- package/dist/audit-disk.js +74 -0
- package/dist/audit-disk.js.map +1 -0
- package/dist/browser-tools/analyze-site/detect-apis.d.ts +36 -0
- package/dist/browser-tools/analyze-site/detect-apis.d.ts.map +1 -0
- package/dist/browser-tools/analyze-site/detect-apis.js +383 -0
- package/dist/browser-tools/analyze-site/detect-apis.js.map +1 -0
- package/dist/browser-tools/analyze-site/detect-auth.d.ts +72 -0
- package/dist/browser-tools/analyze-site/detect-auth.d.ts.map +1 -0
- package/dist/browser-tools/analyze-site/detect-auth.js +384 -0
- package/dist/browser-tools/analyze-site/detect-auth.js.map +1 -0
- package/dist/browser-tools/analyze-site/detect-dom.d.ts +65 -0
- package/dist/browser-tools/analyze-site/detect-dom.d.ts.map +1 -0
- package/dist/browser-tools/analyze-site/detect-dom.js +45 -0
- package/dist/browser-tools/analyze-site/detect-dom.js.map +1 -0
- package/dist/browser-tools/analyze-site/detect-framework.d.ts +48 -0
- package/dist/browser-tools/analyze-site/detect-framework.d.ts.map +1 -0
- package/dist/browser-tools/analyze-site/detect-framework.js +31 -0
- package/dist/browser-tools/analyze-site/detect-framework.js.map +1 -0
- package/dist/browser-tools/analyze-site/detect-globals.d.ts +41 -0
- package/dist/browser-tools/analyze-site/detect-globals.d.ts.map +1 -0
- package/dist/browser-tools/analyze-site/detect-globals.js +42 -0
- package/dist/browser-tools/analyze-site/detect-globals.js.map +1 -0
- package/dist/browser-tools/analyze-site/detect-storage.d.ts +39 -0
- package/dist/browser-tools/analyze-site/detect-storage.d.ts.map +1 -0
- package/dist/browser-tools/analyze-site/detect-storage.js +34 -0
- package/dist/browser-tools/analyze-site/detect-storage.js.map +1 -0
- package/dist/browser-tools/analyze-site/index.d.ts +52 -0
- package/dist/browser-tools/analyze-site/index.d.ts.map +1 -0
- package/dist/browser-tools/analyze-site/index.js +827 -0
- package/dist/browser-tools/analyze-site/index.js.map +1 -0
- package/dist/browser-tools/analyze-site.d.ts +17 -0
- package/dist/browser-tools/analyze-site.d.ts.map +1 -0
- package/dist/browser-tools/analyze-site.js +41 -0
- package/dist/browser-tools/analyze-site.js.map +1 -0
- package/dist/browser-tools/clear-console-logs.d.ts +9 -0
- package/dist/browser-tools/clear-console-logs.d.ts.map +1 -0
- package/dist/browser-tools/clear-console-logs.js +16 -0
- package/dist/browser-tools/clear-console-logs.js.map +1 -0
- package/dist/browser-tools/click-element.d.ts +10 -0
- package/dist/browser-tools/click-element.d.ts.map +1 -0
- package/dist/browser-tools/click-element.js +22 -0
- package/dist/browser-tools/click-element.js.map +1 -0
- package/dist/browser-tools/close-tab.d.ts +9 -0
- package/dist/browser-tools/close-tab.d.ts.map +1 -0
- package/dist/browser-tools/close-tab.js +16 -0
- package/dist/browser-tools/close-tab.js.map +1 -0
- package/dist/browser-tools/definition.d.ts +26 -0
- package/dist/browser-tools/definition.d.ts.map +1 -0
- package/dist/browser-tools/definition.js +16 -0
- package/dist/browser-tools/definition.js.map +1 -0
- package/dist/browser-tools/delete-cookies.d.ts +10 -0
- package/dist/browser-tools/delete-cookies.d.ts.map +1 -0
- package/dist/browser-tools/delete-cookies.js +19 -0
- package/dist/browser-tools/delete-cookies.js.map +1 -0
- package/dist/browser-tools/disable-network-capture.d.ts +9 -0
- package/dist/browser-tools/disable-network-capture.d.ts.map +1 -0
- package/dist/browser-tools/disable-network-capture.js +16 -0
- package/dist/browser-tools/disable-network-capture.js.map +1 -0
- package/dist/browser-tools/enable-network-capture.d.ts +12 -0
- package/dist/browser-tools/enable-network-capture.d.ts.map +1 -0
- package/dist/browser-tools/enable-network-capture.js +42 -0
- package/dist/browser-tools/enable-network-capture.js.map +1 -0
- package/dist/browser-tools/execute-script.d.ts +19 -0
- package/dist/browser-tools/execute-script.d.ts.map +1 -0
- package/dist/browser-tools/execute-script.js +51 -0
- package/dist/browser-tools/execute-script.js.map +1 -0
- package/dist/browser-tools/extension-check-adapter.d.ts +11 -0
- package/dist/browser-tools/extension-check-adapter.d.ts.map +1 -0
- package/dist/browser-tools/extension-check-adapter.js +22 -0
- package/dist/browser-tools/extension-check-adapter.js.map +1 -0
- package/dist/browser-tools/extension-force-reconnect.d.ts +9 -0
- package/dist/browser-tools/extension-force-reconnect.d.ts.map +1 -0
- package/dist/browser-tools/extension-force-reconnect.js +19 -0
- package/dist/browser-tools/extension-force-reconnect.js.map +1 -0
- package/dist/browser-tools/extension-get-logs.d.ts +24 -0
- package/dist/browser-tools/extension-get-logs.d.ts.map +1 -0
- package/dist/browser-tools/extension-get-logs.js +34 -0
- package/dist/browser-tools/extension-get-logs.js.map +1 -0
- package/dist/browser-tools/extension-get-side-panel.d.ts +8 -0
- package/dist/browser-tools/extension-get-side-panel.d.ts.map +1 -0
- package/dist/browser-tools/extension-get-side-panel.js +17 -0
- package/dist/browser-tools/extension-get-side-panel.js.map +1 -0
- package/dist/browser-tools/extension-get-state.d.ts +9 -0
- package/dist/browser-tools/extension-get-state.d.ts.map +1 -0
- package/dist/browser-tools/extension-get-state.js +19 -0
- package/dist/browser-tools/extension-get-state.js.map +1 -0
- package/dist/browser-tools/focus-tab.d.ts +9 -0
- package/dist/browser-tools/focus-tab.d.ts.map +1 -0
- package/dist/browser-tools/focus-tab.js +17 -0
- package/dist/browser-tools/focus-tab.js.map +1 -0
- package/dist/browser-tools/get-console-logs.d.ts +18 -0
- package/dist/browser-tools/get-console-logs.d.ts.map +1 -0
- package/dist/browser-tools/get-console-logs.js +30 -0
- package/dist/browser-tools/get-console-logs.js.map +1 -0
- package/dist/browser-tools/get-cookies.d.ts +10 -0
- package/dist/browser-tools/get-cookies.d.ts.map +1 -0
- package/dist/browser-tools/get-cookies.js +23 -0
- package/dist/browser-tools/get-cookies.js.map +1 -0
- package/dist/browser-tools/get-network-requests.d.ts +10 -0
- package/dist/browser-tools/get-network-requests.d.ts.map +1 -0
- package/dist/browser-tools/get-network-requests.js +27 -0
- package/dist/browser-tools/get-network-requests.js.map +1 -0
- package/dist/browser-tools/get-page-html.d.ts +11 -0
- package/dist/browser-tools/get-page-html.d.ts.map +1 -0
- package/dist/browser-tools/get-page-html.js +32 -0
- package/dist/browser-tools/get-page-html.js.map +1 -0
- package/dist/browser-tools/get-resource-content.d.ts +11 -0
- package/dist/browser-tools/get-resource-content.d.ts.map +1 -0
- package/dist/browser-tools/get-resource-content.js +31 -0
- package/dist/browser-tools/get-resource-content.js.map +1 -0
- package/dist/browser-tools/get-storage.d.ts +14 -0
- package/dist/browser-tools/get-storage.d.ts.map +1 -0
- package/dist/browser-tools/get-storage.js +28 -0
- package/dist/browser-tools/get-storage.js.map +1 -0
- package/dist/browser-tools/get-tab-content.d.ts +11 -0
- package/dist/browser-tools/get-tab-content.d.ts.map +1 -0
- package/dist/browser-tools/get-tab-content.js +29 -0
- package/dist/browser-tools/get-tab-content.js.map +1 -0
- package/dist/browser-tools/get-tab-info.d.ts +9 -0
- package/dist/browser-tools/get-tab-info.d.ts.map +1 -0
- package/dist/browser-tools/get-tab-info.js +17 -0
- package/dist/browser-tools/get-tab-info.js.map +1 -0
- package/dist/browser-tools/handle-dialog.d.ts +14 -0
- package/dist/browser-tools/handle-dialog.d.ts.map +1 -0
- package/dist/browser-tools/handle-dialog.js +30 -0
- package/dist/browser-tools/handle-dialog.js.map +1 -0
- package/dist/browser-tools/hover-element.d.ts +11 -0
- package/dist/browser-tools/hover-element.d.ts.map +1 -0
- package/dist/browser-tools/hover-element.js +24 -0
- package/dist/browser-tools/hover-element.js.map +1 -0
- package/dist/browser-tools/index.d.ts +7 -0
- package/dist/browser-tools/index.d.ts.map +1 -0
- package/dist/browser-tools/index.js +81 -0
- package/dist/browser-tools/index.js.map +1 -0
- package/dist/browser-tools/list-resources.d.ts +10 -0
- package/dist/browser-tools/list-resources.d.ts.map +1 -0
- package/dist/browser-tools/list-resources.js +29 -0
- package/dist/browser-tools/list-resources.js.map +1 -0
- package/dist/browser-tools/list-tabs.d.ts +7 -0
- package/dist/browser-tools/list-tabs.d.ts.map +1 -0
- package/dist/browser-tools/list-tabs.js +16 -0
- package/dist/browser-tools/list-tabs.js.map +1 -0
- package/dist/browser-tools/navigate-tab.d.ts +10 -0
- package/dist/browser-tools/navigate-tab.d.ts.map +1 -0
- package/dist/browser-tools/navigate-tab.js +18 -0
- package/dist/browser-tools/navigate-tab.js.map +1 -0
- package/dist/browser-tools/open-tab.d.ts +9 -0
- package/dist/browser-tools/open-tab.d.ts.map +1 -0
- package/dist/browser-tools/open-tab.js +18 -0
- package/dist/browser-tools/open-tab.js.map +1 -0
- package/dist/browser-tools/press-key.d.ts +17 -0
- package/dist/browser-tools/press-key.d.ts.map +1 -0
- package/dist/browser-tools/press-key.js +43 -0
- package/dist/browser-tools/press-key.js.map +1 -0
- package/dist/browser-tools/query-elements.d.ts +12 -0
- package/dist/browser-tools/query-elements.d.ts.map +1 -0
- package/dist/browser-tools/query-elements.js +30 -0
- package/dist/browser-tools/query-elements.js.map +1 -0
- package/dist/browser-tools/reload-extension.d.ts +13 -0
- package/dist/browser-tools/reload-extension.d.ts.map +1 -0
- package/dist/browser-tools/reload-extension.js +35 -0
- package/dist/browser-tools/reload-extension.js.map +1 -0
- package/dist/browser-tools/screenshot-tab.d.ts +9 -0
- package/dist/browser-tools/screenshot-tab.d.ts.map +1 -0
- package/dist/browser-tools/screenshot-tab.js +22 -0
- package/dist/browser-tools/screenshot-tab.js.map +1 -0
- package/dist/browser-tools/scroll.d.ts +23 -0
- package/dist/browser-tools/scroll.d.ts.map +1 -0
- package/dist/browser-tools/scroll.js +56 -0
- package/dist/browser-tools/scroll.js.map +1 -0
- package/dist/browser-tools/select-option.d.ts +12 -0
- package/dist/browser-tools/select-option.d.ts.map +1 -0
- package/dist/browser-tools/select-option.js +25 -0
- package/dist/browser-tools/select-option.js.map +1 -0
- package/dist/browser-tools/set-cookie.d.ts +16 -0
- package/dist/browser-tools/set-cookie.d.ts.map +1 -0
- package/dist/browser-tools/set-cookie.js +42 -0
- package/dist/browser-tools/set-cookie.js.map +1 -0
- package/dist/browser-tools/type-text.d.ts +12 -0
- package/dist/browser-tools/type-text.d.ts.map +1 -0
- package/dist/browser-tools/type-text.js +25 -0
- package/dist/browser-tools/type-text.js.map +1 -0
- package/dist/browser-tools/url-validation.d.ts +13 -0
- package/dist/browser-tools/url-validation.d.ts.map +1 -0
- package/dist/browser-tools/url-validation.js +23 -0
- package/dist/browser-tools/url-validation.js.map +1 -0
- package/dist/browser-tools/wait-for-element.d.ts +12 -0
- package/dist/browser-tools/wait-for-element.d.ts.map +1 -0
- package/dist/browser-tools/wait-for-element.js +29 -0
- package/dist/browser-tools/wait-for-element.js.map +1 -0
- package/dist/config.d.ts +99 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +344 -0
- package/dist/config.js.map +1 -0
- package/dist/dev-mode.d.ts +14 -0
- package/dist/dev-mode.d.ts.map +1 -0
- package/dist/dev-mode.js +15 -0
- package/dist/dev-mode.js.map +1 -0
- package/dist/discovery-legacy.d.ts +32 -0
- package/dist/discovery-legacy.d.ts.map +1 -0
- package/dist/discovery-legacy.js +415 -0
- package/dist/discovery-legacy.js.map +1 -0
- package/dist/discovery.d.ts +28 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +97 -0
- package/dist/discovery.js.map +1 -0
- package/dist/extension-install.d.ts +27 -0
- package/dist/extension-install.d.ts.map +1 -0
- package/dist/extension-install.js +75 -0
- package/dist/extension-install.js.map +1 -0
- package/dist/extension-protocol.d.ts +130 -0
- package/dist/extension-protocol.d.ts.map +1 -0
- package/dist/extension-protocol.js +869 -0
- package/dist/extension-protocol.js.map +1 -0
- package/dist/file-watcher.d.ts +75 -0
- package/dist/file-watcher.d.ts.map +1 -0
- package/dist/file-watcher.js +616 -0
- package/dist/file-watcher.js.map +1 -0
- package/dist/http-routes.d.ts +88 -0
- package/dist/http-routes.d.ts.map +1 -0
- package/dist/http-routes.js +545 -0
- package/dist/http-routes.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +187 -0
- package/dist/index.js.map +1 -0
- package/dist/loader.d.ts +100 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +402 -0
- package/dist/loader.js.map +1 -0
- package/dist/log-buffer.d.ts +33 -0
- package/dist/log-buffer.d.ts.map +1 -0
- package/dist/log-buffer.js +64 -0
- package/dist/log-buffer.js.map +1 -0
- package/dist/logger.d.ts +34 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +81 -0
- package/dist/logger.js.map +1 -0
- package/dist/manifest-schema.d.ts +14 -0
- package/dist/manifest-schema.d.ts.map +1 -0
- package/dist/manifest-schema.js +51 -0
- package/dist/manifest-schema.js.map +1 -0
- package/dist/mcp-setup.d.ts +131 -0
- package/dist/mcp-setup.d.ts.map +1 -0
- package/dist/mcp-setup.js +673 -0
- package/dist/mcp-setup.js.map +1 -0
- package/dist/permissions.d.ts +59 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +141 -0
- package/dist/permissions.js.map +1 -0
- package/dist/registry.d.ts +78 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +187 -0
- package/dist/registry.js.map +1 -0
- package/dist/reload.d.ts +52 -0
- package/dist/reload.d.ts.map +1 -0
- package/dist/reload.js +326 -0
- package/dist/reload.js.map +1 -0
- package/dist/resolver.d.ts +53 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +272 -0
- package/dist/resolver.js.map +1 -0
- package/dist/sanitize-error.d.ts +8 -0
- package/dist/sanitize-error.d.ts.map +1 -0
- package/dist/sanitize-error.js +25 -0
- package/dist/sanitize-error.js.map +1 -0
- package/dist/sanitize-tool-output.d.ts +20 -0
- package/dist/sanitize-tool-output.d.ts.map +1 -0
- package/dist/sanitize-tool-output.js +52 -0
- package/dist/sanitize-tool-output.js.map +1 -0
- package/dist/sdk-version.d.ts +11 -0
- package/dist/sdk-version.d.ts.map +1 -0
- package/dist/sdk-version.js +23 -0
- package/dist/sdk-version.js.map +1 -0
- package/dist/shutdown.d.ts +28 -0
- package/dist/shutdown.d.ts.map +1 -0
- package/dist/shutdown.js +68 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/skip-confirmation.d.ts +15 -0
- package/dist/skip-confirmation.d.ts.map +1 -0
- package/dist/skip-confirmation.js +16 -0
- package/dist/skip-confirmation.js.map +1 -0
- package/dist/skip-sanitization.d.ts +17 -0
- package/dist/skip-sanitization.d.ts.map +1 -0
- package/dist/skip-sanitization.js +18 -0
- package/dist/skip-sanitization.js.map +1 -0
- package/dist/skip-verification.d.ts +11 -0
- package/dist/skip-verification.d.ts.map +1 -0
- package/dist/skip-verification.js +12 -0
- package/dist/skip-verification.js.map +1 -0
- package/dist/state.d.ts +290 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +111 -0
- package/dist/state.js.map +1 -0
- package/dist/verify-plugin.d.ts +53 -0
- package/dist/verify-plugin.d.ts.map +1 -0
- package/dist/verify-plugin.js +123 -0
- package/dist/verify-plugin.js.map +1 -0
- package/dist/version-check.d.ts +35 -0
- package/dist/version-check.d.ts.map +1 -0
- package/dist/version-check.js +111 -0
- package/dist/version-check.js.map +1 -0
- package/dist/version.d.ts +10 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +22 -0
- package/dist/version.js.map +1 -0
- package/package.json +28 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-setup.js","sourceRoot":"","sources":["../src/mcp-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser tool permission evaluation engine.
|
|
3
|
+
*
|
|
4
|
+
* Classifies browser tools into three security tiers (observe, interact,
|
|
5
|
+
* sensitive) and evaluates whether a tool call should be auto-allowed,
|
|
6
|
+
* require human confirmation, or be denied outright.
|
|
7
|
+
*
|
|
8
|
+
* The evaluation order (first match wins):
|
|
9
|
+
* 1. domainToolPolicy[domain][tool] — per-domain per-tool override
|
|
10
|
+
* 2. sensitiveDomains match → 'ask'
|
|
11
|
+
* 3. toolPolicy[tool] — global per-tool override
|
|
12
|
+
* 4. Tool tier default (observe=allow, interact=ask, sensitive=ask)
|
|
13
|
+
* 5. trustedDomains match → override 'ask' to 'allow' (does NOT override 'deny')
|
|
14
|
+
*/
|
|
15
|
+
import type { ToolPermission } from './config.js';
|
|
16
|
+
import type { ServerState } from './state.js';
|
|
17
|
+
/** Security tier for browser tools */
|
|
18
|
+
type ToolTier = 'observe' | 'interact' | 'sensitive';
|
|
19
|
+
/**
|
|
20
|
+
* Browser tool → security tier mapping.
|
|
21
|
+
*
|
|
22
|
+
* - observe: read-only tools that list or inspect without accessing sensitive data
|
|
23
|
+
* - interact: tools that modify page state (click, type, navigate, screenshot)
|
|
24
|
+
* - sensitive: tools that access credentials, execute arbitrary code, or modify auth state
|
|
25
|
+
*/
|
|
26
|
+
declare const TOOL_TIERS: Record<string, ToolTier>;
|
|
27
|
+
/** Default permission for each tier */
|
|
28
|
+
declare const TIER_DEFAULTS: Record<ToolTier, ToolPermission>;
|
|
29
|
+
/**
|
|
30
|
+
* Match a hostname against a domain pattern.
|
|
31
|
+
*
|
|
32
|
+
* Supports:
|
|
33
|
+
* - Exact match: 'example.com' matches 'example.com'
|
|
34
|
+
* - Wildcard prefix: '*.example.com' matches 'sub.example.com' and 'a.b.example.com'
|
|
35
|
+
* but NOT 'example.com' itself
|
|
36
|
+
*/
|
|
37
|
+
declare const matchDomain: (hostname: string, pattern: string) => boolean;
|
|
38
|
+
/** Check if a hostname matches any pattern in a domain list */
|
|
39
|
+
declare const matchesDomainList: (hostname: string, patterns: string[]) => boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Get the security tier for a browser tool by looking up the TOOL_TIERS map.
|
|
42
|
+
* Tools not in the map default to 'interact' (safe middle ground).
|
|
43
|
+
*
|
|
44
|
+
* @param toolName - Browser tool name (e.g., 'browser_execute_script')
|
|
45
|
+
* @returns The tool's security tier: 'observe', 'interact', or 'sensitive'
|
|
46
|
+
*/
|
|
47
|
+
export declare const getToolTier: (toolName: string) => ToolTier;
|
|
48
|
+
/**
|
|
49
|
+
* Evaluate the permission for a browser tool call.
|
|
50
|
+
*
|
|
51
|
+
* @param toolName - Browser tool name (e.g., 'browser_execute_script')
|
|
52
|
+
* @param domain - Target domain hostname (e.g., 'mail.google.com'), or null for tools with no target
|
|
53
|
+
* @param state - Server state (for skipConfirmation flag and permissions config)
|
|
54
|
+
* @returns 'allow', 'ask', or 'deny'
|
|
55
|
+
*/
|
|
56
|
+
export declare const evaluatePermission: (toolName: string, domain: string | null, state: ServerState) => ToolPermission;
|
|
57
|
+
export { TOOL_TIERS, TIER_DEFAULTS, matchDomain, matchesDomainList };
|
|
58
|
+
export type { ToolTier };
|
|
59
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,sCAAsC;AACtC,KAAK,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;AAErD;;;;;;GAMG;AACH,QAAA,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA2CxC,CAAC;AAEF,uCAAuC;AACvC,QAAA,MAAM,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc,CAInD,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,WAAW,GAAI,UAAU,MAAM,EAAE,SAAS,MAAM,KAAG,OAOxD,CAAC;AAEF,+DAA+D;AAC/D,QAAA,MAAM,iBAAiB,GAAI,UAAU,MAAM,EAAE,UAAU,MAAM,EAAE,KAAG,OACpB,CAAC;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,QAA8C,CAAC;AAE9F;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,OAAO,WAAW,KAAG,cAsChG,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AACrE,YAAY,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser tool permission evaluation engine.
|
|
3
|
+
*
|
|
4
|
+
* Classifies browser tools into three security tiers (observe, interact,
|
|
5
|
+
* sensitive) and evaluates whether a tool call should be auto-allowed,
|
|
6
|
+
* require human confirmation, or be denied outright.
|
|
7
|
+
*
|
|
8
|
+
* The evaluation order (first match wins):
|
|
9
|
+
* 1. domainToolPolicy[domain][tool] — per-domain per-tool override
|
|
10
|
+
* 2. sensitiveDomains match → 'ask'
|
|
11
|
+
* 3. toolPolicy[tool] — global per-tool override
|
|
12
|
+
* 4. Tool tier default (observe=allow, interact=ask, sensitive=ask)
|
|
13
|
+
* 5. trustedDomains match → override 'ask' to 'allow' (does NOT override 'deny')
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Browser tool → security tier mapping.
|
|
17
|
+
*
|
|
18
|
+
* - observe: read-only tools that list or inspect without accessing sensitive data
|
|
19
|
+
* - interact: tools that modify page state (click, type, navigate, screenshot)
|
|
20
|
+
* - sensitive: tools that access credentials, execute arbitrary code, or modify auth state
|
|
21
|
+
*/
|
|
22
|
+
const TOOL_TIERS = {
|
|
23
|
+
// Observe tier — read-only, low risk
|
|
24
|
+
browser_list_tabs: 'observe',
|
|
25
|
+
browser_get_tab_info: 'observe',
|
|
26
|
+
browser_query_elements: 'observe',
|
|
27
|
+
browser_wait_for_element: 'observe',
|
|
28
|
+
browser_get_tab_content: 'observe',
|
|
29
|
+
browser_get_console_logs: 'observe',
|
|
30
|
+
browser_clear_console_logs: 'observe',
|
|
31
|
+
browser_list_resources: 'observe',
|
|
32
|
+
browser_get_resource_content: 'observe',
|
|
33
|
+
browser_disable_network_capture: 'observe',
|
|
34
|
+
extension_get_state: 'observe',
|
|
35
|
+
extension_get_logs: 'observe',
|
|
36
|
+
extension_get_side_panel: 'observe',
|
|
37
|
+
extension_check_adapter: 'observe',
|
|
38
|
+
extension_force_reconnect: 'observe',
|
|
39
|
+
extension_reload: 'observe',
|
|
40
|
+
// Interact tier — modifies page state or captures content
|
|
41
|
+
browser_click_element: 'interact',
|
|
42
|
+
browser_type_text: 'interact',
|
|
43
|
+
browser_select_option: 'interact',
|
|
44
|
+
browser_hover_element: 'interact',
|
|
45
|
+
browser_press_key: 'interact',
|
|
46
|
+
browser_scroll: 'interact',
|
|
47
|
+
browser_screenshot_tab: 'interact',
|
|
48
|
+
browser_navigate_tab: 'interact',
|
|
49
|
+
browser_open_tab: 'interact',
|
|
50
|
+
browser_close_tab: 'interact',
|
|
51
|
+
browser_focus_tab: 'interact',
|
|
52
|
+
browser_handle_dialog: 'interact',
|
|
53
|
+
browser_get_page_html: 'interact',
|
|
54
|
+
browser_enable_network_capture: 'interact',
|
|
55
|
+
browser_get_network_requests: 'interact',
|
|
56
|
+
plugin_analyze_site: 'interact',
|
|
57
|
+
// Sensitive tier — access credentials, execute arbitrary code, modify auth
|
|
58
|
+
browser_execute_script: 'sensitive',
|
|
59
|
+
browser_get_cookies: 'sensitive',
|
|
60
|
+
browser_set_cookie: 'sensitive',
|
|
61
|
+
browser_delete_cookies: 'sensitive',
|
|
62
|
+
browser_get_storage: 'sensitive',
|
|
63
|
+
};
|
|
64
|
+
/** Default permission for each tier */
|
|
65
|
+
const TIER_DEFAULTS = {
|
|
66
|
+
observe: 'allow',
|
|
67
|
+
interact: 'ask',
|
|
68
|
+
sensitive: 'ask',
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Match a hostname against a domain pattern.
|
|
72
|
+
*
|
|
73
|
+
* Supports:
|
|
74
|
+
* - Exact match: 'example.com' matches 'example.com'
|
|
75
|
+
* - Wildcard prefix: '*.example.com' matches 'sub.example.com' and 'a.b.example.com'
|
|
76
|
+
* but NOT 'example.com' itself
|
|
77
|
+
*/
|
|
78
|
+
const matchDomain = (hostname, pattern) => {
|
|
79
|
+
if (pattern === hostname)
|
|
80
|
+
return true;
|
|
81
|
+
if (pattern.startsWith('*.')) {
|
|
82
|
+
const suffix = pattern.slice(1); // '.example.com'
|
|
83
|
+
return hostname.endsWith(suffix) && hostname.length > suffix.length;
|
|
84
|
+
}
|
|
85
|
+
return false;
|
|
86
|
+
};
|
|
87
|
+
/** Check if a hostname matches any pattern in a domain list */
|
|
88
|
+
const matchesDomainList = (hostname, patterns) => patterns.some(p => matchDomain(hostname, p));
|
|
89
|
+
/**
|
|
90
|
+
* Get the security tier for a browser tool by looking up the TOOL_TIERS map.
|
|
91
|
+
* Tools not in the map default to 'interact' (safe middle ground).
|
|
92
|
+
*
|
|
93
|
+
* @param toolName - Browser tool name (e.g., 'browser_execute_script')
|
|
94
|
+
* @returns The tool's security tier: 'observe', 'interact', or 'sensitive'
|
|
95
|
+
*/
|
|
96
|
+
export const getToolTier = (toolName) => TOOL_TIERS[toolName] ?? 'interact';
|
|
97
|
+
/**
|
|
98
|
+
* Evaluate the permission for a browser tool call.
|
|
99
|
+
*
|
|
100
|
+
* @param toolName - Browser tool name (e.g., 'browser_execute_script')
|
|
101
|
+
* @param domain - Target domain hostname (e.g., 'mail.google.com'), or null for tools with no target
|
|
102
|
+
* @param state - Server state (for skipConfirmation flag and permissions config)
|
|
103
|
+
* @returns 'allow', 'ask', or 'deny'
|
|
104
|
+
*/
|
|
105
|
+
export const evaluatePermission = (toolName, domain, state) => {
|
|
106
|
+
// Bypass: if skipConfirmation is active, all tools are auto-allowed
|
|
107
|
+
if (state.skipConfirmation)
|
|
108
|
+
return 'allow';
|
|
109
|
+
const permissions = state.permissions;
|
|
110
|
+
// 1. Per-domain per-tool override (most specific)
|
|
111
|
+
if (domain) {
|
|
112
|
+
for (const [pattern, toolPolicies] of Object.entries(permissions.domainToolPolicy)) {
|
|
113
|
+
if (matchDomain(domain, pattern) && toolName in toolPolicies) {
|
|
114
|
+
const policy = toolPolicies[toolName];
|
|
115
|
+
if (policy)
|
|
116
|
+
return policy;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// 2. Sensitive domain check: if the domain matches, force 'ask'
|
|
121
|
+
if (domain && matchesDomainList(domain, permissions.sensitiveDomains)) {
|
|
122
|
+
return 'ask';
|
|
123
|
+
}
|
|
124
|
+
// 3. Global per-tool override
|
|
125
|
+
if (toolName in permissions.toolPolicy) {
|
|
126
|
+
const policy = permissions.toolPolicy[toolName];
|
|
127
|
+
if (policy)
|
|
128
|
+
return policy;
|
|
129
|
+
}
|
|
130
|
+
// 4. Tool tier default
|
|
131
|
+
const tier = getToolTier(toolName);
|
|
132
|
+
const tierDefault = TIER_DEFAULTS[tier];
|
|
133
|
+
// 5. Trusted domain override: if tier default is 'ask' and domain is trusted,
|
|
134
|
+
// upgrade to 'allow'. Does NOT override 'deny'.
|
|
135
|
+
if (tierDefault === 'ask' && domain && matchesDomainList(domain, permissions.trustedDomains)) {
|
|
136
|
+
return 'allow';
|
|
137
|
+
}
|
|
138
|
+
return tierDefault;
|
|
139
|
+
};
|
|
140
|
+
export { TOOL_TIERS, TIER_DEFAULTS, matchDomain, matchesDomainList };
|
|
141
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Immutable plugin registry.
|
|
3
|
+
*
|
|
4
|
+
* Holds all discovered plugins, a pre-built O(1) tool lookup map with
|
|
5
|
+
* compiled Ajv validators, and a list of discovery failures. The registry
|
|
6
|
+
* is built once and never mutated — when plugins change, a new registry
|
|
7
|
+
* is constructed and swapped atomically on ServerState.
|
|
8
|
+
*/
|
|
9
|
+
import type { FailedPlugin, PluginRegistry, RegisteredPlugin, ServerState, ToolLookupEntry } from './state.js';
|
|
10
|
+
import type { ManifestTool, ManifestResource, ManifestPrompt, TrustTier } from '@opentabs-dev/shared';
|
|
11
|
+
/** Result of looking up a tool in the registry */
|
|
12
|
+
interface ToolLookupResult {
|
|
13
|
+
readonly plugin: RegisteredPlugin;
|
|
14
|
+
readonly tool: ManifestTool;
|
|
15
|
+
readonly lookup: ToolLookupEntry;
|
|
16
|
+
}
|
|
17
|
+
/** Result of looking up a resource in the registry */
|
|
18
|
+
interface ResourceLookupResult {
|
|
19
|
+
readonly plugin: RegisteredPlugin;
|
|
20
|
+
readonly resource: ManifestResource;
|
|
21
|
+
}
|
|
22
|
+
/** Result of looking up a prompt in the registry */
|
|
23
|
+
interface PromptLookupResult {
|
|
24
|
+
readonly plugin: RegisteredPlugin;
|
|
25
|
+
readonly prompt: ManifestPrompt;
|
|
26
|
+
}
|
|
27
|
+
/** Map trust tier to a human-readable prefix for MCP tool descriptions */
|
|
28
|
+
declare const trustTierPrefix: (tier: TrustTier) => string;
|
|
29
|
+
/**
|
|
30
|
+
* Build an immutable PluginRegistry from loaded plugins and failures.
|
|
31
|
+
*
|
|
32
|
+
* Compiles Ajv validators for each tool's input schema during construction
|
|
33
|
+
* so that tool dispatch has O(1) lookup with pre-compiled validation.
|
|
34
|
+
*
|
|
35
|
+
* All returned objects are frozen to prevent accidental mutation.
|
|
36
|
+
*/
|
|
37
|
+
declare const buildRegistry: (loadedPlugins: readonly RegisteredPlugin[], failures: readonly FailedPlugin[]) => PluginRegistry;
|
|
38
|
+
/** Create an empty registry (used for initial state) */
|
|
39
|
+
declare const emptyRegistry: () => PluginRegistry;
|
|
40
|
+
/** Get a plugin by internal name, or undefined if not found */
|
|
41
|
+
declare const getPlugin: (registry: PluginRegistry, name: string) => RegisteredPlugin | undefined;
|
|
42
|
+
/** Get a tool by prefixed name, or undefined if not found */
|
|
43
|
+
declare const getTool: (registry: PluginRegistry, prefixedName: string) => ToolLookupResult | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Return enabled tools for MCP tools/list responses.
|
|
46
|
+
*
|
|
47
|
+
* Plugin tools are filtered by the toolConfig on state (disabled tools
|
|
48
|
+
* are excluded). Each tool description is prefixed with the trust tier.
|
|
49
|
+
*/
|
|
50
|
+
declare const listEnabledTools: (registry: PluginRegistry, state: ServerState) => Array<{
|
|
51
|
+
name: string;
|
|
52
|
+
description: string;
|
|
53
|
+
inputSchema: Record<string, unknown>;
|
|
54
|
+
}>;
|
|
55
|
+
/** Look up a resource by its prefixed URI */
|
|
56
|
+
declare const getResource: (registry: PluginRegistry, prefixedUri: string) => ResourceLookupResult | undefined;
|
|
57
|
+
/** Look up a prompt by its prefixed name */
|
|
58
|
+
declare const getPrompt: (registry: PluginRegistry, prefixedName: string) => PromptLookupResult | undefined;
|
|
59
|
+
/** Return all resources from all plugins with prefixed URIs for MCP resources/list responses */
|
|
60
|
+
declare const listAllResources: (registry: PluginRegistry) => Array<{
|
|
61
|
+
uri: string;
|
|
62
|
+
name: string;
|
|
63
|
+
description?: string;
|
|
64
|
+
mimeType?: string;
|
|
65
|
+
}>;
|
|
66
|
+
/** Return all prompts from all plugins with prefixed names for MCP prompts/list responses */
|
|
67
|
+
declare const listAllPrompts: (registry: PluginRegistry) => Array<{
|
|
68
|
+
name: string;
|
|
69
|
+
description?: string;
|
|
70
|
+
arguments?: Array<{
|
|
71
|
+
name: string;
|
|
72
|
+
description?: string;
|
|
73
|
+
required?: boolean;
|
|
74
|
+
}>;
|
|
75
|
+
}>;
|
|
76
|
+
export { buildRegistry, emptyRegistry, getPlugin, getPrompt, getResource, getTool, listAllPrompts, listAllResources, listEnabledTools, trustTierPrefix, };
|
|
77
|
+
export type { PromptLookupResult, ResourceLookupResult, ToolLookupResult };
|
|
78
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAGhB,WAAW,EACX,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtG,kDAAkD;AAClD,UAAU,gBAAgB;IACxB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AAED,sDAAsD;AACtD,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;CACrC;AAED,oDAAoD;AACpD,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;CACjC;AAED,0EAA0E;AAC1E,QAAA,MAAM,eAAe,GAAI,MAAM,SAAS,KAAG,MAS1C,CAAC;AAoCF;;;;;;;GAOG;AACH,QAAA,MAAM,aAAa,GACjB,eAAe,SAAS,gBAAgB,EAAE,EAC1C,UAAU,SAAS,YAAY,EAAE,KAChC,cAiCF,CAAC;AAEF,wDAAwD;AACxD,QAAA,MAAM,aAAa,QAAO,cAAuC,CAAC;AAElE,+DAA+D;AAC/D,QAAA,MAAM,SAAS,GAAI,UAAU,cAAc,EAAE,MAAM,MAAM,KAAG,gBAAgB,GAAG,SAAuC,CAAC;AAEvH,6DAA6D;AAC7D,QAAA,MAAM,OAAO,GAAI,UAAU,cAAc,EAAE,cAAc,MAAM,KAAG,gBAAgB,GAAG,SAWpF,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,gBAAgB,GACpB,UAAU,cAAc,EACxB,OAAO,WAAW,KACjB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAgBnF,CAAC;AAEF,6CAA6C;AAC7C,QAAA,MAAM,WAAW,GAAI,UAAU,cAAc,EAAE,aAAa,MAAM,KAAG,oBAAoB,GAAG,SAW3F,CAAC;AAEF,4CAA4C;AAC5C,QAAA,MAAM,SAAS,GAAI,UAAU,cAAc,EAAE,cAAc,MAAM,KAAG,kBAAkB,GAAG,SAWxF,CAAC;AAEF,gGAAgG;AAChG,QAAA,MAAM,gBAAgB,GACpB,UAAU,cAAc,KACvB,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAe9E,CAAC;AAEF,6FAA6F;AAC7F,QAAA,MAAM,cAAc,GAClB,UAAU,cAAc,KACvB,KAAK,CAAC;IACP,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC/E,CAkBA,CAAC;AAEF,OAAO,EACL,aAAa,EACb,aAAa,EACb,SAAS,EACT,SAAS,EACT,WAAW,EACX,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,CAAC;AACF,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,CAAC"}
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Immutable plugin registry.
|
|
3
|
+
*
|
|
4
|
+
* Holds all discovered plugins, a pre-built O(1) tool lookup map with
|
|
5
|
+
* compiled Ajv validators, and a list of discovery failures. The registry
|
|
6
|
+
* is built once and never mutated — when plugins change, a new registry
|
|
7
|
+
* is constructed and swapped atomically on ServerState.
|
|
8
|
+
*/
|
|
9
|
+
import { log } from './logger.js';
|
|
10
|
+
import { prefixedToolName, prefixedResourceUri, prefixedPromptName, isToolEnabled } from './state.js';
|
|
11
|
+
import AjvValidator from 'ajv';
|
|
12
|
+
/** Map trust tier to a human-readable prefix for MCP tool descriptions */
|
|
13
|
+
const trustTierPrefix = (tier) => {
|
|
14
|
+
switch (tier) {
|
|
15
|
+
case 'official':
|
|
16
|
+
return '[Official] ';
|
|
17
|
+
case 'community':
|
|
18
|
+
return '[Community plugin — unverified] ';
|
|
19
|
+
case 'local':
|
|
20
|
+
return '[Local plugin] ';
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Compile a JSON Schema into an Ajv validate function.
|
|
25
|
+
* Returns a ToolLookupEntry with the validate fn and error formatter.
|
|
26
|
+
* If compilation fails, validate is null and errors are logged.
|
|
27
|
+
*/
|
|
28
|
+
const compileToolValidator = (ajv, pluginName, toolName, inputSchema) => {
|
|
29
|
+
try {
|
|
30
|
+
const validate = ajv.compile(inputSchema);
|
|
31
|
+
return {
|
|
32
|
+
validate,
|
|
33
|
+
validationErrors: () => {
|
|
34
|
+
if (!validate.errors?.length)
|
|
35
|
+
return 'Unknown validation error';
|
|
36
|
+
return validate.errors
|
|
37
|
+
.map(e => {
|
|
38
|
+
const path = e.instancePath || '(root)';
|
|
39
|
+
return ` - ${path}: ${e.message ?? 'invalid'}`;
|
|
40
|
+
})
|
|
41
|
+
.join('\n');
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
log.warn(`Failed to compile JSON Schema for ${pluginName}/${toolName}:`, err);
|
|
47
|
+
return {
|
|
48
|
+
validate: null,
|
|
49
|
+
validationErrors: () => 'Schema compilation failed — validation skipped',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Build an immutable PluginRegistry from loaded plugins and failures.
|
|
55
|
+
*
|
|
56
|
+
* Compiles Ajv validators for each tool's input schema during construction
|
|
57
|
+
* so that tool dispatch has O(1) lookup with pre-compiled validation.
|
|
58
|
+
*
|
|
59
|
+
* All returned objects are frozen to prevent accidental mutation.
|
|
60
|
+
*/
|
|
61
|
+
const buildRegistry = (loadedPlugins, failures) => {
|
|
62
|
+
const ajv = new AjvValidator({ allErrors: false });
|
|
63
|
+
const plugins = new Map();
|
|
64
|
+
const toolLookup = new Map();
|
|
65
|
+
const resourceLookup = new Map();
|
|
66
|
+
const promptLookup = new Map();
|
|
67
|
+
for (const plugin of loadedPlugins) {
|
|
68
|
+
plugins.set(plugin.name, plugin);
|
|
69
|
+
for (const toolDef of plugin.tools) {
|
|
70
|
+
const prefixed = prefixedToolName(plugin.name, toolDef.name);
|
|
71
|
+
const { validate, validationErrors } = compileToolValidator(ajv, plugin.name, toolDef.name, toolDef.input_schema);
|
|
72
|
+
toolLookup.set(prefixed, { pluginName: plugin.name, toolName: toolDef.name, validate, validationErrors });
|
|
73
|
+
}
|
|
74
|
+
for (const resource of plugin.resources) {
|
|
75
|
+
const prefixed = prefixedResourceUri(plugin.name, resource.uri);
|
|
76
|
+
resourceLookup.set(prefixed, { pluginName: plugin.name, originalUri: resource.uri });
|
|
77
|
+
}
|
|
78
|
+
for (const prompt of plugin.prompts) {
|
|
79
|
+
const prefixed = prefixedPromptName(plugin.name, prompt.name);
|
|
80
|
+
promptLookup.set(prefixed, { pluginName: plugin.name, originalName: prompt.name });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const registry = {
|
|
84
|
+
plugins,
|
|
85
|
+
toolLookup,
|
|
86
|
+
resourceLookup,
|
|
87
|
+
promptLookup,
|
|
88
|
+
failures,
|
|
89
|
+
};
|
|
90
|
+
return Object.freeze(registry);
|
|
91
|
+
};
|
|
92
|
+
/** Create an empty registry (used for initial state) */
|
|
93
|
+
const emptyRegistry = () => buildRegistry([], []);
|
|
94
|
+
/** Get a plugin by internal name, or undefined if not found */
|
|
95
|
+
const getPlugin = (registry, name) => registry.plugins.get(name);
|
|
96
|
+
/** Get a tool by prefixed name, or undefined if not found */
|
|
97
|
+
const getTool = (registry, prefixedName) => {
|
|
98
|
+
const lookup = registry.toolLookup.get(prefixedName);
|
|
99
|
+
if (!lookup)
|
|
100
|
+
return undefined;
|
|
101
|
+
const plugin = registry.plugins.get(lookup.pluginName);
|
|
102
|
+
if (!plugin)
|
|
103
|
+
return undefined;
|
|
104
|
+
const tool = plugin.tools.find(t => t.name === lookup.toolName);
|
|
105
|
+
if (!tool)
|
|
106
|
+
return undefined;
|
|
107
|
+
return { plugin, tool, lookup };
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Return enabled tools for MCP tools/list responses.
|
|
111
|
+
*
|
|
112
|
+
* Plugin tools are filtered by the toolConfig on state (disabled tools
|
|
113
|
+
* are excluded). Each tool description is prefixed with the trust tier.
|
|
114
|
+
*/
|
|
115
|
+
const listEnabledTools = (registry, state) => {
|
|
116
|
+
const tools = [];
|
|
117
|
+
for (const plugin of registry.plugins.values()) {
|
|
118
|
+
for (const toolDef of plugin.tools) {
|
|
119
|
+
const prefixed = prefixedToolName(plugin.name, toolDef.name);
|
|
120
|
+
if (!isToolEnabled(state, prefixed))
|
|
121
|
+
continue;
|
|
122
|
+
tools.push({
|
|
123
|
+
name: prefixed,
|
|
124
|
+
description: trustTierPrefix(plugin.trustTier) + toolDef.description,
|
|
125
|
+
inputSchema: toolDef.input_schema,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return tools;
|
|
130
|
+
};
|
|
131
|
+
/** Look up a resource by its prefixed URI */
|
|
132
|
+
const getResource = (registry, prefixedUri) => {
|
|
133
|
+
const lookup = registry.resourceLookup.get(prefixedUri);
|
|
134
|
+
if (!lookup)
|
|
135
|
+
return undefined;
|
|
136
|
+
const plugin = registry.plugins.get(lookup.pluginName);
|
|
137
|
+
if (!plugin)
|
|
138
|
+
return undefined;
|
|
139
|
+
const resource = plugin.resources.find(r => r.uri === lookup.originalUri);
|
|
140
|
+
if (!resource)
|
|
141
|
+
return undefined;
|
|
142
|
+
return { plugin, resource };
|
|
143
|
+
};
|
|
144
|
+
/** Look up a prompt by its prefixed name */
|
|
145
|
+
const getPrompt = (registry, prefixedName) => {
|
|
146
|
+
const lookup = registry.promptLookup.get(prefixedName);
|
|
147
|
+
if (!lookup)
|
|
148
|
+
return undefined;
|
|
149
|
+
const plugin = registry.plugins.get(lookup.pluginName);
|
|
150
|
+
if (!plugin)
|
|
151
|
+
return undefined;
|
|
152
|
+
const prompt = plugin.prompts.find(p => p.name === lookup.originalName);
|
|
153
|
+
if (!prompt)
|
|
154
|
+
return undefined;
|
|
155
|
+
return { plugin, prompt };
|
|
156
|
+
};
|
|
157
|
+
/** Return all resources from all plugins with prefixed URIs for MCP resources/list responses */
|
|
158
|
+
const listAllResources = (registry) => {
|
|
159
|
+
const resources = [];
|
|
160
|
+
for (const plugin of registry.plugins.values()) {
|
|
161
|
+
for (const resource of plugin.resources) {
|
|
162
|
+
resources.push({
|
|
163
|
+
uri: prefixedResourceUri(plugin.name, resource.uri),
|
|
164
|
+
name: resource.name,
|
|
165
|
+
description: resource.description,
|
|
166
|
+
mimeType: resource.mimeType,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return resources;
|
|
171
|
+
};
|
|
172
|
+
/** Return all prompts from all plugins with prefixed names for MCP prompts/list responses */
|
|
173
|
+
const listAllPrompts = (registry) => {
|
|
174
|
+
const prompts = [];
|
|
175
|
+
for (const plugin of registry.plugins.values()) {
|
|
176
|
+
for (const prompt of plugin.prompts) {
|
|
177
|
+
prompts.push({
|
|
178
|
+
name: prefixedPromptName(plugin.name, prompt.name),
|
|
179
|
+
description: prompt.description,
|
|
180
|
+
arguments: prompt.arguments,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return prompts;
|
|
185
|
+
};
|
|
186
|
+
export { buildRegistry, emptyRegistry, getPlugin, getPrompt, getResource, getTool, listAllPrompts, listAllResources, listEnabledTools, trustTierPrefix, };
|
|
187
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/reload.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hot reload orchestration module.
|
|
3
|
+
*
|
|
4
|
+
* Encapsulates the entire reload sequence: config loading, plugin discovery,
|
|
5
|
+
* state swap, stale entry pruning, MCP handler re-registration, file watcher
|
|
6
|
+
* restart, extension re-sync, client notification, and version check.
|
|
7
|
+
*
|
|
8
|
+
* Called on every module evaluation (both first load and hot reload). This
|
|
9
|
+
* separation keeps index.ts as a thin frozen shell (Bun.serve() delegate,
|
|
10
|
+
* HotState management, handler definitions) that rarely needs to change,
|
|
11
|
+
* while all reload logic lives here and is freely editable.
|
|
12
|
+
*/
|
|
13
|
+
import type { McpServerInstance } from './mcp-setup.js';
|
|
14
|
+
import type { ServerState } from './state.js';
|
|
15
|
+
import type { WebStandardStreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js';
|
|
16
|
+
/** Metadata from a completed reload, stored on HotState for the /health endpoint */
|
|
17
|
+
interface ReloadResult {
|
|
18
|
+
lastReloadTimestamp: number;
|
|
19
|
+
lastReloadDurationMs: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Run the full reload sequence.
|
|
23
|
+
*
|
|
24
|
+
* On first load: discovers plugins, kicks off version check. In dev mode,
|
|
25
|
+
* also starts file watchers for local plugins and config.json.
|
|
26
|
+
* On hot reload: additionally re-registers MCP handlers on existing sessions,
|
|
27
|
+
* refreshes browser tools, installs/updates the managed extension, and notifies
|
|
28
|
+
* all MCP clients.
|
|
29
|
+
*
|
|
30
|
+
* If discovery fails, the server continues with whatever plugins were in state
|
|
31
|
+
* before the reload attempt.
|
|
32
|
+
*
|
|
33
|
+
* A globalThis-based guard prevents concurrent reloads: if a previous reload
|
|
34
|
+
* is still running (e.g., bun --hot fires twice in quick succession), this
|
|
35
|
+
* call waits for it to finish before proceeding.
|
|
36
|
+
*/
|
|
37
|
+
declare const performReload: (state: ServerState, sessionServers: McpServerInstance[], transports: Map<string, WebStandardStreamableHTTPServerTransport>, isHotReload: boolean) => Promise<ReloadResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Reload config and rediscover plugins at runtime without bun --hot.
|
|
40
|
+
* Called from the POST /reload HTTP endpoint. Performs the same config/plugin
|
|
41
|
+
* rediscovery as performReload but without the bun --hot-specific module
|
|
42
|
+
* re-evaluation aspects (browser tools refresh, session handler re-registration).
|
|
43
|
+
*
|
|
44
|
+
* Returns the number of plugins discovered and the duration in milliseconds.
|
|
45
|
+
*/
|
|
46
|
+
declare const performConfigReload: (state: ServerState, sessionServers: McpServerInstance[], transports: Map<string, WebStandardStreamableHTTPServerTransport>) => Promise<{
|
|
47
|
+
plugins: number;
|
|
48
|
+
durationMs: number;
|
|
49
|
+
}>;
|
|
50
|
+
export type { ReloadResult };
|
|
51
|
+
export { performReload, performConfigReload };
|
|
52
|
+
//# sourceMappingURL=reload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reload.d.ts","sourceRoot":"","sources":["../src/reload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsBH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,+DAA+D,CAAC;AAE9H,oFAAoF;AACpF,UAAU,YAAY;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAgMD;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,aAAa,GACjB,OAAO,WAAW,EAClB,gBAAgB,iBAAiB,EAAE,EACnC,YAAY,GAAG,CAAC,MAAM,EAAE,wCAAwC,CAAC,EACjE,aAAa,OAAO,KACnB,OAAO,CAAC,YAAY,CA+FtB,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,mBAAmB,GACvB,OAAO,WAAW,EAClB,gBAAgB,iBAAiB,EAAE,EACnC,YAAY,GAAG,CAAC,MAAM,EAAE,wCAAwC,CAAC,KAChE,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAmCjD,CAAC;AAEF,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC"}
|