@opentabs-dev/browser-extension 0.0.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/background-log-state.d.ts +10 -0
- package/dist/background-log-state.d.ts.map +1 -0
- package/dist/background-log-state.js +11 -0
- package/dist/background-log-state.js.map +1 -0
- package/dist/background-message-handlers.d.ts +41 -0
- package/dist/background-message-handlers.d.ts.map +1 -0
- package/dist/background-message-handlers.js +214 -0
- package/dist/background-message-handlers.js.map +1 -0
- package/dist/background.d.ts +2 -0
- package/dist/background.d.ts.map +1 -0
- package/dist/background.js +3780 -0
- package/dist/background.js.map +1 -0
- package/dist/bg-log-state.d.ts +10 -0
- package/dist/bg-log-state.d.ts.map +1 -0
- package/dist/bg-log-state.js +11 -0
- package/dist/bg-log-state.js.map +1 -0
- package/dist/browser-commands/content-commands.d.ts +25 -0
- package/dist/browser-commands/content-commands.d.ts.map +1 -0
- package/dist/browser-commands/content-commands.js +166 -0
- package/dist/browser-commands/content-commands.js.map +1 -0
- package/dist/browser-commands/cookie-commands.d.ts +14 -0
- package/dist/browser-commands/cookie-commands.d.ts.map +1 -0
- package/dist/browser-commands/cookie-commands.js +99 -0
- package/dist/browser-commands/cookie-commands.js.map +1 -0
- package/dist/browser-commands/extension-commands.d.ts +12 -0
- package/dist/browser-commands/extension-commands.d.ts.map +1 -0
- package/dist/browser-commands/extension-commands.js +386 -0
- package/dist/browser-commands/extension-commands.js.map +1 -0
- package/dist/browser-commands/helpers.d.ts +35 -0
- package/dist/browser-commands/helpers.d.ts.map +1 -0
- package/dist/browser-commands/helpers.js +121 -0
- package/dist/browser-commands/helpers.js.map +1 -0
- package/dist/browser-commands/index.d.ts +11 -0
- package/dist/browser-commands/index.d.ts.map +1 -0
- package/dist/browser-commands/index.js +10 -0
- package/dist/browser-commands/index.js.map +1 -0
- package/dist/browser-commands/interaction-commands.d.ts +23 -0
- package/dist/browser-commands/interaction-commands.d.ts.map +1 -0
- package/dist/browser-commands/interaction-commands.js +353 -0
- package/dist/browser-commands/interaction-commands.js.map +1 -0
- package/dist/browser-commands/key-press-command.d.ts +2 -0
- package/dist/browser-commands/key-press-command.d.ts.map +1 -0
- package/dist/browser-commands/key-press-command.js +144 -0
- package/dist/browser-commands/key-press-command.js.map +1 -0
- package/dist/browser-commands/network-commands.d.ts +6 -0
- package/dist/browser-commands/network-commands.d.ts.map +1 -0
- package/dist/browser-commands/network-commands.js +69 -0
- package/dist/browser-commands/network-commands.js.map +1 -0
- package/dist/browser-commands/resource-commands.d.ts +37 -0
- package/dist/browser-commands/resource-commands.d.ts.map +1 -0
- package/dist/browser-commands/resource-commands.js +153 -0
- package/dist/browser-commands/resource-commands.js.map +1 -0
- package/dist/browser-commands/scroll-command.d.ts +2 -0
- package/dist/browser-commands/scroll-command.d.ts.map +1 -0
- package/dist/browser-commands/scroll-command.js +133 -0
- package/dist/browser-commands/scroll-command.js.map +1 -0
- package/dist/browser-commands/tab-commands.d.ts +33 -0
- package/dist/browser-commands/tab-commands.d.ts.map +1 -0
- package/dist/browser-commands/tab-commands.js +121 -0
- package/dist/browser-commands/tab-commands.js.map +1 -0
- package/dist/browser-commands.d.ts +36 -0
- package/dist/browser-commands.d.ts.map +1 -0
- package/dist/browser-commands.js +1931 -0
- package/dist/browser-commands.js.map +1 -0
- package/dist/confirmation-badge.d.ts +17 -0
- package/dist/confirmation-badge.d.ts.map +1 -0
- package/dist/confirmation-badge.js +64 -0
- package/dist/confirmation-badge.js.map +1 -0
- package/dist/constants.d.ts +79 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +79 -0
- package/dist/constants.js.map +1 -0
- package/dist/dispatch-helpers.d.ts +61 -0
- package/dist/dispatch-helpers.d.ts.map +1 -0
- package/dist/dispatch-helpers.js +149 -0
- package/dist/dispatch-helpers.js.map +1 -0
- package/dist/extension-messages.d.ts +146 -0
- package/dist/extension-messages.d.ts.map +1 -0
- package/dist/extension-messages.js +2 -0
- package/dist/extension-messages.js.map +1 -0
- package/dist/iife-injection.d.ts +55 -0
- package/dist/iife-injection.d.ts.map +1 -0
- package/dist/iife-injection.js +474 -0
- package/dist/iife-injection.js.map +1 -0
- package/dist/json-rpc-errors.d.ts +8 -0
- package/dist/json-rpc-errors.d.ts.map +1 -0
- package/dist/json-rpc-errors.js +8 -0
- package/dist/json-rpc-errors.js.map +1 -0
- package/dist/known-methods.d.ts +19 -0
- package/dist/known-methods.d.ts.map +1 -0
- package/dist/known-methods.js +68 -0
- package/dist/known-methods.js.map +1 -0
- package/dist/log-collector.d.ts +45 -0
- package/dist/log-collector.d.ts.map +1 -0
- package/dist/log-collector.js +99 -0
- package/dist/log-collector.js.map +1 -0
- package/dist/message-router.d.ts +28 -0
- package/dist/message-router.d.ts.map +1 -0
- package/dist/message-router.js +367 -0
- package/dist/message-router.js.map +1 -0
- package/dist/messaging.d.ts +15 -0
- package/dist/messaging.d.ts.map +1 -0
- package/dist/messaging.js +41 -0
- package/dist/messaging.js.map +1 -0
- package/dist/network-capture.d.ts +56 -0
- package/dist/network-capture.d.ts.map +1 -0
- package/dist/network-capture.js +374 -0
- package/dist/network-capture.js.map +1 -0
- package/dist/offscreen/index.d.ts +16 -0
- package/dist/offscreen/index.d.ts.map +1 -0
- package/dist/offscreen/index.js +549 -0
- package/dist/offscreen/index.js.map +1 -0
- package/dist/plugin-storage.d.ts +19 -0
- package/dist/plugin-storage.d.ts.map +1 -0
- package/dist/plugin-storage.js +100 -0
- package/dist/plugin-storage.js.map +1 -0
- package/dist/rate-limiter.d.ts +18 -0
- package/dist/rate-limiter.d.ts.map +1 -0
- package/dist/rate-limiter.js +53 -0
- package/dist/rate-limiter.js.map +1 -0
- package/dist/resource-prompt-dispatch.d.ts +14 -0
- package/dist/resource-prompt-dispatch.d.ts.map +1 -0
- package/dist/resource-prompt-dispatch.js +195 -0
- package/dist/resource-prompt-dispatch.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-svg.d.ts +20 -0
- package/dist/sanitize-svg.d.ts.map +1 -0
- package/dist/sanitize-svg.js +296 -0
- package/dist/sanitize-svg.js.map +1 -0
- package/dist/side-panel/App.d.ts +3 -0
- package/dist/side-panel/App.d.ts.map +1 -0
- package/dist/side-panel/App.js +147 -0
- package/dist/side-panel/App.js.map +1 -0
- package/dist/side-panel/bridge.d.ts +50 -0
- package/dist/side-panel/bridge.d.ts.map +1 -0
- package/dist/side-panel/bridge.js +113 -0
- package/dist/side-panel/bridge.js.map +1 -0
- package/dist/side-panel/components/ConfirmationDialog.d.ts +16 -0
- package/dist/side-panel/components/ConfirmationDialog.d.ts.map +1 -0
- package/dist/side-panel/components/ConfirmationDialog.js +39 -0
- package/dist/side-panel/components/ConfirmationDialog.js.map +1 -0
- package/dist/side-panel/components/EmptyStates.d.ts +8 -0
- package/dist/side-panel/components/EmptyStates.d.ts.map +1 -0
- package/dist/side-panel/components/EmptyStates.js +40 -0
- package/dist/side-panel/components/EmptyStates.js.map +1 -0
- package/dist/side-panel/components/ErrorBoundary.d.ts +23 -0
- package/dist/side-panel/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/side-panel/components/ErrorBoundary.js +28 -0
- package/dist/side-panel/components/ErrorBoundary.js.map +1 -0
- package/dist/side-panel/components/FailedPluginCard.d.ts +6 -0
- package/dist/side-panel/components/FailedPluginCard.d.ts.map +1 -0
- package/dist/side-panel/components/FailedPluginCard.js +9 -0
- package/dist/side-panel/components/FailedPluginCard.js.map +1 -0
- package/dist/side-panel/components/Footer.d.ts +3 -0
- package/dist/side-panel/components/Footer.d.ts.map +1 -0
- package/dist/side-panel/components/Footer.js +32 -0
- package/dist/side-panel/components/Footer.js.map +1 -0
- package/dist/side-panel/components/Header.d.ts +5 -0
- package/dist/side-panel/components/Header.d.ts.map +1 -0
- package/dist/side-panel/components/Header.js +6 -0
- package/dist/side-panel/components/Header.js.map +1 -0
- package/dist/side-panel/components/PluginCard.d.ts +10 -0
- package/dist/side-panel/components/PluginCard.d.ts.map +1 -0
- package/dist/side-panel/components/PluginCard.js +50 -0
- package/dist/side-panel/components/PluginCard.js.map +1 -0
- package/dist/side-panel/components/PluginIcon.d.ts +21 -0
- package/dist/side-panel/components/PluginIcon.d.ts.map +1 -0
- package/dist/side-panel/components/PluginIcon.js +48 -0
- package/dist/side-panel/components/PluginIcon.js.map +1 -0
- package/dist/side-panel/components/PluginList.d.ts +11 -0
- package/dist/side-panel/components/PluginList.d.ts.map +1 -0
- package/dist/side-panel/components/PluginList.js +17 -0
- package/dist/side-panel/components/PluginList.js.map +1 -0
- package/dist/side-panel/components/ToolIcon.d.ts +7 -0
- package/dist/side-panel/components/ToolIcon.d.ts.map +1 -0
- package/dist/side-panel/components/ToolIcon.js +8 -0
- package/dist/side-panel/components/ToolIcon.js.map +1 -0
- package/dist/side-panel/components/ToolRow.d.ts +11 -0
- package/dist/side-panel/components/ToolRow.d.ts.map +1 -0
- package/dist/side-panel/components/ToolRow.js +8 -0
- package/dist/side-panel/components/ToolRow.js.map +1 -0
- package/dist/side-panel/components/VersionMismatchBanner.d.ts +3 -0
- package/dist/side-panel/components/VersionMismatchBanner.d.ts.map +1 -0
- package/dist/side-panel/components/VersionMismatchBanner.js +5 -0
- package/dist/side-panel/components/VersionMismatchBanner.js.map +1 -0
- package/dist/side-panel/components/retro/Accordion.d.ts +8 -0
- package/dist/side-panel/components/retro/Accordion.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Accordion.js +15 -0
- package/dist/side-panel/components/retro/Accordion.js.map +1 -0
- package/dist/side-panel/components/retro/Alert.d.ts +25 -0
- package/dist/side-panel/components/retro/Alert.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Alert.js +33 -0
- package/dist/side-panel/components/retro/Alert.js.map +1 -0
- package/dist/side-panel/components/retro/Badge.d.ts +15 -0
- package/dist/side-panel/components/retro/Badge.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Badge.js +23 -0
- package/dist/side-panel/components/retro/Badge.js.map +1 -0
- package/dist/side-panel/components/retro/Button.d.ts +13 -0
- package/dist/side-panel/components/retro/Button.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Button.js +33 -0
- package/dist/side-panel/components/retro/Button.js.map +1 -0
- package/dist/side-panel/components/retro/Empty.d.ts +31 -0
- package/dist/side-panel/components/retro/Empty.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Empty.js +25 -0
- package/dist/side-panel/components/retro/Empty.js.map +1 -0
- package/dist/side-panel/components/retro/Input.d.ts +8 -0
- package/dist/side-panel/components/retro/Input.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Input.js +7 -0
- package/dist/side-panel/components/retro/Input.js.map +1 -0
- package/dist/side-panel/components/retro/Loader.d.ts +14 -0
- package/dist/side-panel/components/retro/Loader.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Loader.js +30 -0
- package/dist/side-panel/components/retro/Loader.js.map +1 -0
- package/dist/side-panel/components/retro/Menu.d.ts +9 -0
- package/dist/side-panel/components/retro/Menu.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Menu.js +17 -0
- package/dist/side-panel/components/retro/Menu.js.map +1 -0
- package/dist/side-panel/components/retro/NumberStepper.d.ts +18 -0
- package/dist/side-panel/components/retro/NumberStepper.d.ts.map +1 -0
- package/dist/side-panel/components/retro/NumberStepper.js +38 -0
- package/dist/side-panel/components/retro/NumberStepper.js.map +1 -0
- package/dist/side-panel/components/retro/Progress.d.ts +9 -0
- package/dist/side-panel/components/retro/Progress.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Progress.js +6 -0
- package/dist/side-panel/components/retro/Progress.js.map +1 -0
- package/dist/side-panel/components/retro/Switch.d.ts +4 -0
- package/dist/side-panel/components/retro/Switch.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Switch.js +6 -0
- package/dist/side-panel/components/retro/Switch.js.map +1 -0
- package/dist/side-panel/components/retro/Text.d.ts +11 -0
- package/dist/side-panel/components/retro/Text.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Text.js +28 -0
- package/dist/side-panel/components/retro/Text.js.map +1 -0
- package/dist/side-panel/components/retro/Tooltip.d.ts +12 -0
- package/dist/side-panel/components/retro/Tooltip.d.ts.map +1 -0
- package/dist/side-panel/components/retro/Tooltip.js +32 -0
- package/dist/side-panel/components/retro/Tooltip.js.map +1 -0
- package/dist/side-panel/constants.d.ts +5 -0
- package/dist/side-panel/constants.d.ts.map +1 -0
- package/dist/side-panel/constants.js +5 -0
- package/dist/side-panel/constants.js.map +1 -0
- package/dist/side-panel/hooks/useServerNotifications.d.ts +21 -0
- package/dist/side-panel/hooks/useServerNotifications.d.ts.map +1 -0
- package/dist/side-panel/hooks/useServerNotifications.js +93 -0
- package/dist/side-panel/hooks/useServerNotifications.js.map +1 -0
- package/dist/side-panel/hooks/useTheme.d.ts +8 -0
- package/dist/side-panel/hooks/useTheme.d.ts.map +1 -0
- package/dist/side-panel/hooks/useTheme.js +30 -0
- package/dist/side-panel/hooks/useTheme.js.map +1 -0
- package/dist/side-panel/index.d.ts +2 -0
- package/dist/side-panel/index.d.ts.map +1 -0
- package/dist/side-panel/index.js +12 -0
- package/dist/side-panel/index.js.map +1 -0
- package/dist/side-panel/lib/cn.d.ts +3 -0
- package/dist/side-panel/lib/cn.d.ts.map +1 -0
- package/dist/side-panel/lib/cn.js +4 -0
- package/dist/side-panel/lib/cn.js.map +1 -0
- package/dist/side-panel/lib/utils.d.ts +3 -0
- package/dist/side-panel/lib/utils.d.ts.map +1 -0
- package/dist/side-panel/lib/utils.js +4 -0
- package/dist/side-panel/lib/utils.js.map +1 -0
- package/dist/side-panel/side-panel.js +78034 -0
- package/dist/side-panel/styles.css +2 -0
- package/dist/side-panel-state.d.ts +11 -0
- package/dist/side-panel-state.d.ts.map +1 -0
- package/dist/side-panel-state.js +38 -0
- package/dist/side-panel-state.js.map +1 -0
- package/dist/side-panel-toggle.d.ts +3 -0
- package/dist/side-panel-toggle.d.ts.map +1 -0
- package/dist/side-panel-toggle.js +31 -0
- package/dist/side-panel-toggle.js.map +1 -0
- package/dist/tab-matching.d.ts +51 -0
- package/dist/tab-matching.d.ts.map +1 -0
- package/dist/tab-matching.js +160 -0
- package/dist/tab-matching.js.map +1 -0
- package/dist/tab-state.d.ts +56 -0
- package/dist/tab-state.d.ts.map +1 -0
- package/dist/tab-state.js +282 -0
- package/dist/tab-state.js.map +1 -0
- package/dist/tool-dispatch.d.ts +19 -0
- package/dist/tool-dispatch.d.ts.map +1 -0
- package/dist/tool-dispatch.js +336 -0
- package/dist/tool-dispatch.js.map +1 -0
- package/dist/types.d.ts +82 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/icons/icon-128.png +0 -0
- package/icons/icon-16.png +0 -0
- package/icons/icon-32.png +0 -0
- package/icons/icon-48.png +0 -0
- package/icons/icon.svg +6 -0
- package/manifest.json +38 -0
- package/offscreen/offscreen.html +10 -0
- package/package.json +49 -0
- package/side-panel/dark-mode.js +29 -0
- package/side-panel/fonts/archivo-black-latin.woff2 +0 -0
- package/side-panel/fonts/space-grotesk-latin.woff2 +0 -0
- package/side-panel/fonts/space-mono-400-latin.woff2 +0 -0
- package/side-panel/fonts/space-mono-700-latin.woff2 +0 -0
- package/side-panel/fonts.css +34 -0
- package/side-panel/side-panel.html +16 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messaging.js","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"AAUA,wEAAwE;AACxE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAa,EAAQ,EAAE;IAClD,MAAM,MAAM,GAAI,IAA4B,CAAC,MAAM,IAAI,SAAS,CAAC;IACjE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAA4B,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACrG,OAAO,CAAC,IAAI,CAAC,uCAAuC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAyB,EAAQ,EAAE;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACzD,OAAO,CAAC,IAAI,CAAC,6CAA6C,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,UAAkB,EAAE,SAA6B,EAAQ,EAAE;IAClG,MAAM,MAAM,GAAG;QACb,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,GAAG,EAAE,SAAS,CAAC,GAAG;KACnB,CAAC;IAEF,YAAY,CAAC;QACX,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,kBAAkB;QAC1B,MAAM;KACP,CAAC,CAAC;IAEH,kBAAkB,CAAC;QACjB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,kBAAkB;YAC1B,MAAM;SACP;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replace sensitive header values with '[REDACTED]', preserving keys.
|
|
3
|
+
* For Authorization/Proxy-Authorization headers, the scheme prefix (e.g.,
|
|
4
|
+
* "Basic", "Bearer") is preserved so downstream detection can distinguish
|
|
5
|
+
* auth methods: "Bearer [REDACTED]" vs "Basic [REDACTED]".
|
|
6
|
+
*/
|
|
7
|
+
declare const scrubHeaders: (headers?: Record<string, string>) => Record<string, string> | undefined;
|
|
8
|
+
interface CapturedRequest {
|
|
9
|
+
url: string;
|
|
10
|
+
method: string;
|
|
11
|
+
status?: number;
|
|
12
|
+
statusText?: string;
|
|
13
|
+
requestHeaders?: Record<string, string>;
|
|
14
|
+
responseHeaders?: Record<string, string>;
|
|
15
|
+
requestBody?: string;
|
|
16
|
+
responseBody?: string;
|
|
17
|
+
mimeType?: string;
|
|
18
|
+
timestamp: number;
|
|
19
|
+
}
|
|
20
|
+
interface ConsoleEntry {
|
|
21
|
+
level: string;
|
|
22
|
+
message: string;
|
|
23
|
+
timestamp: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Start capturing network requests and console logs for a tab.
|
|
27
|
+
* Attaches the Chrome DevTools Protocol debugger and enables Network + Runtime domains.
|
|
28
|
+
*/
|
|
29
|
+
export declare const startCapture: (tabId: number, maxRequests?: number, urlFilter?: string, maxConsoleLogs?: number) => Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Stop capturing network requests and console logs for a tab.
|
|
32
|
+
* Detaches the debugger and clears all buffers.
|
|
33
|
+
*/
|
|
34
|
+
export declare const stopCapture: (tabId: number) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Get captured network requests for a tab.
|
|
37
|
+
* Optionally clears the buffer after reading.
|
|
38
|
+
*/
|
|
39
|
+
export declare const getRequests: (tabId: number, clear?: boolean) => CapturedRequest[];
|
|
40
|
+
/** Check whether network capture is active for a tab. */
|
|
41
|
+
export declare const isCapturing: (tabId: number) => boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Get captured console logs for a tab.
|
|
44
|
+
* Optionally filter by level and/or clear the buffer after reading.
|
|
45
|
+
*/
|
|
46
|
+
export declare const getConsoleLogs: (tabId: number, clear?: boolean, level?: string) => ConsoleEntry[];
|
|
47
|
+
/** Clear the console log buffer for a tab without stopping capture. */
|
|
48
|
+
export declare const clearConsoleLogs: (tabId: number) => void;
|
|
49
|
+
/** Return a summary of all active network captures for state inspection. */
|
|
50
|
+
export declare const getActiveCapturesSummary: () => Array<{
|
|
51
|
+
tabId: number;
|
|
52
|
+
requestCount: number;
|
|
53
|
+
isCapturing: boolean;
|
|
54
|
+
}>;
|
|
55
|
+
export { scrubHeaders };
|
|
56
|
+
//# sourceMappingURL=network-capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-capture.d.ts","sourceRoot":"","sources":["../src/network-capture.ts"],"names":[],"mappings":"AAyBA;;;;;GAKG;AACH,QAAA,MAAM,YAAY,GAAI,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAiBjF,CAAC;AAEF,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AA+PD;;;GAGG;AACH,eAAO,MAAM,YAAY,GACvB,OAAO,MAAM,EACb,cAAa,MAAY,EACzB,YAAY,MAAM,EAClB,iBAAgB,MAAY,KAC3B,OAAO,CAAC,IAAI,CA+Bd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,IAM3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,EAAE,QAAO,OAAe,KAAG,eAAe,EAclF,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,OAA8B,CAAC;AAE3E;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,QAAO,OAAe,EAAE,QAAQ,MAAM,KAAG,YAAY,EAYlG,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,KAAG,IAKhD,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,QAAO,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAK1G,CAAC;AAEN,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
import { CDP_VERSION } from './constants.js';
|
|
2
|
+
import { toErrorMessage } from '@opentabs-dev/shared';
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Types
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
/** Maximum character length for request bodies before truncation. */
|
|
7
|
+
const MAX_BODY_LENGTH = 102_400;
|
|
8
|
+
/** Headers whose values are replaced with '[REDACTED]' before returning to MCP clients. */
|
|
9
|
+
const SENSITIVE_HEADERS = new Set([
|
|
10
|
+
'authorization',
|
|
11
|
+
'cookie',
|
|
12
|
+
'set-cookie',
|
|
13
|
+
'x-csrf-token',
|
|
14
|
+
'x-xsrf-token',
|
|
15
|
+
'proxy-authorization',
|
|
16
|
+
'x-api-key',
|
|
17
|
+
'x-auth-token',
|
|
18
|
+
'x-access-token',
|
|
19
|
+
'x-api-token',
|
|
20
|
+
'www-authenticate',
|
|
21
|
+
]);
|
|
22
|
+
/**
|
|
23
|
+
* Replace sensitive header values with '[REDACTED]', preserving keys.
|
|
24
|
+
* For Authorization/Proxy-Authorization headers, the scheme prefix (e.g.,
|
|
25
|
+
* "Basic", "Bearer") is preserved so downstream detection can distinguish
|
|
26
|
+
* auth methods: "Bearer [REDACTED]" vs "Basic [REDACTED]".
|
|
27
|
+
*/
|
|
28
|
+
const scrubHeaders = (headers) => {
|
|
29
|
+
if (!headers)
|
|
30
|
+
return undefined;
|
|
31
|
+
const scrubbed = {};
|
|
32
|
+
for (const [k, v] of Object.entries(headers)) {
|
|
33
|
+
const lower = k.toLowerCase();
|
|
34
|
+
if (!SENSITIVE_HEADERS.has(lower)) {
|
|
35
|
+
scrubbed[k] = v;
|
|
36
|
+
}
|
|
37
|
+
else if (lower === 'authorization' || lower === 'proxy-authorization') {
|
|
38
|
+
// Preserve the auth scheme (text before the first space) so that
|
|
39
|
+
// detect-auth can tell Basic from Bearer without seeing credentials.
|
|
40
|
+
const spaceIdx = v.indexOf(' ');
|
|
41
|
+
scrubbed[k] = spaceIdx > 0 ? `${v.slice(0, spaceIdx)} [REDACTED]` : '[REDACTED]';
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
scrubbed[k] = '[REDACTED]';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return scrubbed;
|
|
48
|
+
};
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
// Per-tab capture state
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
const captures = new Map();
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
// Chrome debugger event listener (registered once at module load)
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
/**
|
|
57
|
+
* Convert Chrome DevTools Protocol headers (array of { name, value }) to a
|
|
58
|
+
* plain Record. CDP sometimes sends headers as an object and sometimes as an
|
|
59
|
+
* array depending on the event — handle both.
|
|
60
|
+
*/
|
|
61
|
+
const headersToRecord = (raw) => {
|
|
62
|
+
if (!raw)
|
|
63
|
+
return undefined;
|
|
64
|
+
if (typeof raw === 'object' && !Array.isArray(raw)) {
|
|
65
|
+
return raw;
|
|
66
|
+
}
|
|
67
|
+
if (Array.isArray(raw)) {
|
|
68
|
+
const record = {};
|
|
69
|
+
for (const entry of raw) {
|
|
70
|
+
if (typeof entry.name === 'string') {
|
|
71
|
+
record[entry.name] = entry.value !== undefined ? entry.value : '';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return record;
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
};
|
|
78
|
+
/** Extract a string property from a Record<string, unknown>, defaulting to fallback. */
|
|
79
|
+
const stringProp = (obj, key, fallback) => {
|
|
80
|
+
const propertyValue = obj[key];
|
|
81
|
+
return typeof propertyValue === 'string' ? propertyValue : fallback;
|
|
82
|
+
};
|
|
83
|
+
/** Truncate a string to MAX_BODY_LENGTH, appending a suffix if truncated. */
|
|
84
|
+
const truncateBody = (body) => body.length > MAX_BODY_LENGTH ? body.slice(0, MAX_BODY_LENGTH) + '... (truncated)' : body;
|
|
85
|
+
/**
|
|
86
|
+
* Remove the oldest request from the buffer when at capacity, and clean up
|
|
87
|
+
* any stale `requestIdToRequest` entry that referenced the evicted request.
|
|
88
|
+
*/
|
|
89
|
+
const evictOldestRequest = (state) => {
|
|
90
|
+
const shifted = state.requests.shift();
|
|
91
|
+
if (shifted) {
|
|
92
|
+
for (const [key, value] of state.requestIdToRequest) {
|
|
93
|
+
if (value === shifted) {
|
|
94
|
+
state.requestIdToRequest.delete(key);
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
/** MIME type prefixes for binary content whose response bodies should not be captured. */
|
|
101
|
+
const BINARY_MIME_PREFIXES = ['image/', 'font/', 'video/', 'audio/'];
|
|
102
|
+
const BINARY_MIME_EXACT = new Set(['application/octet-stream', 'application/wasm']);
|
|
103
|
+
/** Returns true if the MIME type represents binary content that should be skipped. */
|
|
104
|
+
const isBinaryMime = (mimeType) => {
|
|
105
|
+
if (!mimeType)
|
|
106
|
+
return false;
|
|
107
|
+
const lower = mimeType.toLowerCase();
|
|
108
|
+
if (BINARY_MIME_EXACT.has(lower))
|
|
109
|
+
return true;
|
|
110
|
+
return BINARY_MIME_PREFIXES.some(prefix => lower.startsWith(prefix));
|
|
111
|
+
};
|
|
112
|
+
chrome.debugger.onEvent.addListener((source, method, params) => {
|
|
113
|
+
const paramsRecord = params;
|
|
114
|
+
const tabId = source.tabId;
|
|
115
|
+
if (tabId === undefined)
|
|
116
|
+
return;
|
|
117
|
+
const state = captures.get(tabId);
|
|
118
|
+
if (!state)
|
|
119
|
+
return;
|
|
120
|
+
if (method === 'Network.requestWillBeSent') {
|
|
121
|
+
const requestId = paramsRecord?.requestId;
|
|
122
|
+
const request = paramsRecord?.request;
|
|
123
|
+
if (!requestId || !request)
|
|
124
|
+
return;
|
|
125
|
+
const url = stringProp(request, 'url', '');
|
|
126
|
+
// Apply URL filter — skip requests that don't match
|
|
127
|
+
if (state.urlFilter && !url.includes(state.urlFilter))
|
|
128
|
+
return;
|
|
129
|
+
const postData = typeof request.postData === 'string' ? request.postData : undefined;
|
|
130
|
+
state.pendingRequests.set(requestId, {
|
|
131
|
+
url,
|
|
132
|
+
method: stringProp(request, 'method', 'GET'),
|
|
133
|
+
requestHeaders: headersToRecord(request.headers),
|
|
134
|
+
requestBody: postData ? truncateBody(postData) : undefined,
|
|
135
|
+
timestamp: Date.now(),
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
else if (method === 'Network.responseReceived') {
|
|
139
|
+
const requestId = paramsRecord?.requestId;
|
|
140
|
+
const response = paramsRecord?.response;
|
|
141
|
+
if (!requestId || !response)
|
|
142
|
+
return;
|
|
143
|
+
const pending = state.pendingRequests.get(requestId);
|
|
144
|
+
if (!pending)
|
|
145
|
+
return;
|
|
146
|
+
const completed = {
|
|
147
|
+
url: pending.url ?? stringProp(response, 'url', ''),
|
|
148
|
+
method: pending.method ?? 'GET',
|
|
149
|
+
status: typeof response.status === 'number' ? response.status : undefined,
|
|
150
|
+
statusText: typeof response.statusText === 'string' ? response.statusText : undefined,
|
|
151
|
+
requestHeaders: pending.requestHeaders,
|
|
152
|
+
responseHeaders: headersToRecord(response.headers),
|
|
153
|
+
requestBody: pending.requestBody,
|
|
154
|
+
mimeType: typeof response.mimeType === 'string' ? response.mimeType : undefined,
|
|
155
|
+
timestamp: pending.timestamp ?? Date.now(),
|
|
156
|
+
};
|
|
157
|
+
state.pendingRequests.delete(requestId);
|
|
158
|
+
// Add to buffer, dropping oldest if at capacity
|
|
159
|
+
if (state.requests.length >= state.maxRequests) {
|
|
160
|
+
evictOldestRequest(state);
|
|
161
|
+
}
|
|
162
|
+
state.requests.push(completed);
|
|
163
|
+
state.requestIdToRequest.set(requestId, completed);
|
|
164
|
+
}
|
|
165
|
+
else if (method === 'Network.loadingFailed') {
|
|
166
|
+
const requestId = paramsRecord?.requestId;
|
|
167
|
+
if (!requestId)
|
|
168
|
+
return;
|
|
169
|
+
const pending = state.pendingRequests.get(requestId);
|
|
170
|
+
if (!pending)
|
|
171
|
+
return;
|
|
172
|
+
state.pendingRequests.delete(requestId);
|
|
173
|
+
state.requestIdToRequest.delete(requestId);
|
|
174
|
+
const errorText = typeof paramsRecord?.errorText === 'string' ? paramsRecord.errorText : 'Unknown error';
|
|
175
|
+
const completed = {
|
|
176
|
+
url: pending.url ?? '',
|
|
177
|
+
method: pending.method ?? 'GET',
|
|
178
|
+
status: 0,
|
|
179
|
+
statusText: errorText,
|
|
180
|
+
requestHeaders: pending.requestHeaders,
|
|
181
|
+
requestBody: pending.requestBody,
|
|
182
|
+
timestamp: pending.timestamp ?? Date.now(),
|
|
183
|
+
};
|
|
184
|
+
if (state.requests.length >= state.maxRequests) {
|
|
185
|
+
evictOldestRequest(state);
|
|
186
|
+
}
|
|
187
|
+
state.requests.push(completed);
|
|
188
|
+
}
|
|
189
|
+
else if (method === 'Network.loadingFinished') {
|
|
190
|
+
const requestId = paramsRecord?.requestId;
|
|
191
|
+
if (!requestId)
|
|
192
|
+
return;
|
|
193
|
+
const request = state.requestIdToRequest.get(requestId);
|
|
194
|
+
if (!request)
|
|
195
|
+
return;
|
|
196
|
+
state.requestIdToRequest.delete(requestId);
|
|
197
|
+
// Skip binary MIME types — response body would not be useful text
|
|
198
|
+
if (isBinaryMime(request.mimeType))
|
|
199
|
+
return;
|
|
200
|
+
// Fetch the response body via CDP
|
|
201
|
+
chrome.debugger.sendCommand({ tabId }, 'Network.getResponseBody', { requestId }, (result) => {
|
|
202
|
+
// Graceful handling: if the request was aborted or the body is unavailable,
|
|
203
|
+
// chrome.runtime.lastError is set and result is undefined
|
|
204
|
+
if (chrome.runtime.lastError || !result)
|
|
205
|
+
return;
|
|
206
|
+
const responseData = result;
|
|
207
|
+
if (typeof responseData.body !== 'string')
|
|
208
|
+
return;
|
|
209
|
+
// For text content, store directly; for base64-encoded text, decode from
|
|
210
|
+
// base64 to UTF-8 via Uint8Array + TextDecoder (bare atob returns Latin1,
|
|
211
|
+
// which corrupts non-ASCII characters like Chinese text or emoji).
|
|
212
|
+
const body = responseData.base64Encoded
|
|
213
|
+
? new TextDecoder().decode(Uint8Array.from(atob(responseData.body), c => c.charCodeAt(0)))
|
|
214
|
+
: responseData.body;
|
|
215
|
+
request.responseBody = truncateBody(body);
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
else if (method === 'Network.webSocketCreated') {
|
|
219
|
+
// WebSocket connections use separate CDP events (not requestWillBeSent).
|
|
220
|
+
// Capture the creation event as a synthetic request so that the
|
|
221
|
+
// analyze-site API detection module can classify it as websocket.
|
|
222
|
+
const url = paramsRecord?.url;
|
|
223
|
+
if (!url)
|
|
224
|
+
return;
|
|
225
|
+
// Apply URL filter
|
|
226
|
+
if (state.urlFilter && !url.includes(state.urlFilter))
|
|
227
|
+
return;
|
|
228
|
+
const completed = {
|
|
229
|
+
url,
|
|
230
|
+
method: 'GET',
|
|
231
|
+
status: 101,
|
|
232
|
+
statusText: 'Switching Protocols',
|
|
233
|
+
requestHeaders: { Upgrade: 'websocket', Connection: 'Upgrade' },
|
|
234
|
+
timestamp: Date.now(),
|
|
235
|
+
};
|
|
236
|
+
if (state.requests.length >= state.maxRequests) {
|
|
237
|
+
evictOldestRequest(state);
|
|
238
|
+
}
|
|
239
|
+
state.requests.push(completed);
|
|
240
|
+
}
|
|
241
|
+
else if (method === 'Runtime.consoleAPICalled') {
|
|
242
|
+
const type = paramsRecord?.type;
|
|
243
|
+
const args = paramsRecord?.args;
|
|
244
|
+
if (!type || !args)
|
|
245
|
+
return;
|
|
246
|
+
const messageParts = [];
|
|
247
|
+
for (const arg of args) {
|
|
248
|
+
if (arg.value !== undefined) {
|
|
249
|
+
messageParts.push(typeof arg.value === 'string' ? arg.value : JSON.stringify(arg.value));
|
|
250
|
+
}
|
|
251
|
+
else if (arg.description) {
|
|
252
|
+
messageParts.push(arg.description);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
messageParts.push(arg.type ?? 'undefined');
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
if (state.consoleLogs.length >= state.maxConsoleLogs) {
|
|
259
|
+
state.consoleLogs.shift();
|
|
260
|
+
}
|
|
261
|
+
state.consoleLogs.push({
|
|
262
|
+
level: type,
|
|
263
|
+
message: messageParts.join(' '),
|
|
264
|
+
timestamp: Date.now(),
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
// Clean up capture state when a tab is closed
|
|
269
|
+
chrome.tabs.onRemoved.addListener((tabId) => {
|
|
270
|
+
if (captures.has(tabId)) {
|
|
271
|
+
void chrome.debugger.detach({ tabId }).catch(() => { });
|
|
272
|
+
captures.delete(tabId);
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
// ---------------------------------------------------------------------------
|
|
276
|
+
// Public API
|
|
277
|
+
// ---------------------------------------------------------------------------
|
|
278
|
+
/**
|
|
279
|
+
* Start capturing network requests and console logs for a tab.
|
|
280
|
+
* Attaches the Chrome DevTools Protocol debugger and enables Network + Runtime domains.
|
|
281
|
+
*/
|
|
282
|
+
export const startCapture = async (tabId, maxRequests = 100, urlFilter, maxConsoleLogs = 500) => {
|
|
283
|
+
if (captures.has(tabId)) {
|
|
284
|
+
throw new Error(`Network capture already active for tab ${tabId}. Call stopCapture first.`);
|
|
285
|
+
}
|
|
286
|
+
try {
|
|
287
|
+
await chrome.debugger.attach({ tabId }, CDP_VERSION);
|
|
288
|
+
}
|
|
289
|
+
catch (err) {
|
|
290
|
+
throw new Error(`Failed to attach debugger to tab ${tabId}: ${toErrorMessage(err)}. ` +
|
|
291
|
+
'Another debugger (e.g., DevTools) may already be attached.');
|
|
292
|
+
}
|
|
293
|
+
try {
|
|
294
|
+
await chrome.debugger.sendCommand({ tabId }, 'Network.enable');
|
|
295
|
+
await chrome.debugger.sendCommand({ tabId }, 'Runtime.enable');
|
|
296
|
+
}
|
|
297
|
+
catch (err) {
|
|
298
|
+
await chrome.debugger.detach({ tabId }).catch(() => { });
|
|
299
|
+
throw err;
|
|
300
|
+
}
|
|
301
|
+
captures.set(tabId, {
|
|
302
|
+
requests: [],
|
|
303
|
+
consoleLogs: [],
|
|
304
|
+
maxRequests,
|
|
305
|
+
maxConsoleLogs,
|
|
306
|
+
urlFilter,
|
|
307
|
+
pendingRequests: new Map(),
|
|
308
|
+
requestIdToRequest: new Map(),
|
|
309
|
+
});
|
|
310
|
+
};
|
|
311
|
+
/**
|
|
312
|
+
* Stop capturing network requests and console logs for a tab.
|
|
313
|
+
* Detaches the debugger and clears all buffers.
|
|
314
|
+
*/
|
|
315
|
+
export const stopCapture = (tabId) => {
|
|
316
|
+
const state = captures.get(tabId);
|
|
317
|
+
if (!state)
|
|
318
|
+
return;
|
|
319
|
+
void chrome.debugger.detach({ tabId }).catch(() => { });
|
|
320
|
+
captures.delete(tabId);
|
|
321
|
+
};
|
|
322
|
+
/**
|
|
323
|
+
* Get captured network requests for a tab.
|
|
324
|
+
* Optionally clears the buffer after reading.
|
|
325
|
+
*/
|
|
326
|
+
export const getRequests = (tabId, clear = false) => {
|
|
327
|
+
const state = captures.get(tabId);
|
|
328
|
+
if (!state)
|
|
329
|
+
return [];
|
|
330
|
+
const requests = state.requests.map(req => ({
|
|
331
|
+
...req,
|
|
332
|
+
requestHeaders: scrubHeaders(req.requestHeaders),
|
|
333
|
+
responseHeaders: scrubHeaders(req.responseHeaders),
|
|
334
|
+
}));
|
|
335
|
+
if (clear) {
|
|
336
|
+
state.requests = [];
|
|
337
|
+
state.requestIdToRequest.clear();
|
|
338
|
+
}
|
|
339
|
+
return requests;
|
|
340
|
+
};
|
|
341
|
+
/** Check whether network capture is active for a tab. */
|
|
342
|
+
export const isCapturing = (tabId) => captures.has(tabId);
|
|
343
|
+
/**
|
|
344
|
+
* Get captured console logs for a tab.
|
|
345
|
+
* Optionally filter by level and/or clear the buffer after reading.
|
|
346
|
+
*/
|
|
347
|
+
export const getConsoleLogs = (tabId, clear = false, level) => {
|
|
348
|
+
const state = captures.get(tabId);
|
|
349
|
+
if (!state)
|
|
350
|
+
return [];
|
|
351
|
+
let logs = [...state.consoleLogs];
|
|
352
|
+
if (level && level !== 'all') {
|
|
353
|
+
logs = logs.filter(entry => entry.level === level);
|
|
354
|
+
}
|
|
355
|
+
if (clear) {
|
|
356
|
+
state.consoleLogs = [];
|
|
357
|
+
}
|
|
358
|
+
return logs;
|
|
359
|
+
};
|
|
360
|
+
/** Clear the console log buffer for a tab without stopping capture. */
|
|
361
|
+
export const clearConsoleLogs = (tabId) => {
|
|
362
|
+
const state = captures.get(tabId);
|
|
363
|
+
if (state) {
|
|
364
|
+
state.consoleLogs = [];
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
/** Return a summary of all active network captures for state inspection. */
|
|
368
|
+
export const getActiveCapturesSummary = () => Array.from(captures.entries()).map(([tabId, state]) => ({
|
|
369
|
+
tabId,
|
|
370
|
+
requestCount: state.requests.length,
|
|
371
|
+
isCapturing: true,
|
|
372
|
+
}));
|
|
373
|
+
export { scrubHeaders };
|
|
374
|
+
//# sourceMappingURL=network-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-capture.js","sourceRoot":"","sources":["../src/network-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Offscreen document — maintains persistent WebSocket to MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Reconnection: exponential backoff (1s → 2s → 4s → 8s → … → 30s cap), resets on success.
|
|
5
|
+
* Keepalive: sends ping every 15s; if no pong within 5s, connection is considered dead
|
|
6
|
+
* and force-closed to trigger reconnect. This detects zombie connections
|
|
7
|
+
* caused by server hot reload (bun --hot) where the TCP socket stays alive
|
|
8
|
+
* but the server-side handler has been replaced.
|
|
9
|
+
*
|
|
10
|
+
* The WebSocket URL defaults to ws://localhost:9515/ws. The port is
|
|
11
|
+
* configurable via chrome.storage.local ('serverPort' key). The background
|
|
12
|
+
* script reads the port and relays the constructed URL here because offscreen
|
|
13
|
+
* documents do not have access to chrome.storage APIs.
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/offscreen/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
|