@browserbridge/bbx 1.0.1 → 1.2.0

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.
Files changed (70) hide show
  1. package/README.md +4 -4
  2. package/package.json +11 -13
  3. package/packages/agent-client/src/cli-helpers.js +33 -0
  4. package/packages/agent-client/src/cli.js +122 -45
  5. package/packages/agent-client/src/client.js +134 -8
  6. package/packages/agent-client/src/command-registry.js +4 -1
  7. package/packages/agent-client/src/detect.js +159 -48
  8. package/packages/agent-client/src/install.js +24 -1
  9. package/packages/agent-client/src/mcp-config.js +29 -10
  10. package/packages/agent-client/src/setup-status.js +12 -4
  11. package/packages/mcp-server/src/bin.js +57 -5
  12. package/packages/mcp-server/src/handlers-capture.js +279 -0
  13. package/packages/mcp-server/src/handlers-dom.js +196 -0
  14. package/packages/mcp-server/src/handlers-navigation.js +79 -0
  15. package/packages/mcp-server/src/handlers-page.js +365 -0
  16. package/packages/mcp-server/src/handlers-utils.js +296 -0
  17. package/packages/mcp-server/src/handlers.js +63 -1159
  18. package/packages/mcp-server/src/server.js +13 -3
  19. package/packages/native-host/bin/bridge-daemon.js +34 -4
  20. package/packages/native-host/bin/install-manifest.js +32 -2
  21. package/packages/native-host/bin/postinstall.js +16 -0
  22. package/packages/native-host/src/config.js +131 -6
  23. package/packages/native-host/src/daemon-logger.js +157 -0
  24. package/packages/native-host/src/daemon-process.js +422 -0
  25. package/packages/native-host/src/daemon.js +322 -77
  26. package/packages/native-host/src/framing.js +131 -11
  27. package/packages/native-host/src/install-manifest.js +121 -7
  28. package/packages/native-host/src/native-host.js +110 -73
  29. package/packages/protocol/src/capabilities.js +4 -0
  30. package/packages/protocol/src/defaults.js +1 -0
  31. package/packages/protocol/src/errors.js +4 -0
  32. package/packages/protocol/src/payload-cost.js +19 -6
  33. package/packages/protocol/src/protocol.js +143 -7
  34. package/packages/protocol/src/registry.js +13 -0
  35. package/packages/protocol/src/summary.js +18 -10
  36. package/packages/protocol/src/types.js +28 -3
  37. package/skills/browser-bridge/SKILL.md +2 -1
  38. package/skills/browser-bridge/references/interaction.md +1 -0
  39. package/skills/browser-bridge/references/protocol.md +2 -1
  40. package/CHANGELOG.md +0 -55
  41. package/assets/banner.jpg +0 -0
  42. package/assets/logo.png +0 -0
  43. package/assets/logo.svg +0 -65
  44. package/docs/api-reference.md +0 -157
  45. package/docs/cli-guide.md +0 -128
  46. package/docs/index.md +0 -25
  47. package/docs/manual-setup.md +0 -140
  48. package/docs/mcp-vs-cli.md +0 -258
  49. package/docs/publishing.md +0 -112
  50. package/docs/quickstart.md +0 -104
  51. package/docs/troubleshooting.md +0 -59
  52. package/docs/unpacked-extension.md +0 -72
  53. package/docs/usage-scenarios.md +0 -136
  54. package/manifest.json +0 -38
  55. package/packages/extension/assets/icon-128.png +0 -0
  56. package/packages/extension/assets/icon-16.png +0 -0
  57. package/packages/extension/assets/icon-32.png +0 -0
  58. package/packages/extension/assets/icon-48.png +0 -0
  59. package/packages/extension/src/background-helpers.js +0 -474
  60. package/packages/extension/src/background-routing.js +0 -89
  61. package/packages/extension/src/background.js +0 -3490
  62. package/packages/extension/src/content-script-helpers.js +0 -282
  63. package/packages/extension/src/content-script.js +0 -2043
  64. package/packages/extension/src/debugger-coordinator.js +0 -188
  65. package/packages/extension/src/sidepanel-helpers.js +0 -104
  66. package/packages/extension/ui/popup.html +0 -35
  67. package/packages/extension/ui/popup.js +0 -298
  68. package/packages/extension/ui/sidepanel.html +0 -102
  69. package/packages/extension/ui/sidepanel.js +0 -1771
  70. package/packages/extension/ui/ui.css +0 -1160
@@ -1,89 +0,0 @@
1
- // @ts-check
2
-
3
- import { ERROR_CODES } from '../../protocol/src/index.js';
4
-
5
- /**
6
- * @typedef {{
7
- * tabId: number,
8
- * windowId: number,
9
- * title: string,
10
- * url: string
11
- * }} ResolvedTabTarget
12
- */
13
-
14
- /**
15
- * @param {string} url
16
- * @returns {boolean}
17
- */
18
- export function isRestrictedAutomationUrl(url) {
19
- return /^(about:|chrome:|chrome-extension:|chrome-search:|devtools:|edge:|brave:|moz-extension:|view-source:)/i.test(
20
- url
21
- );
22
- }
23
-
24
- /**
25
- * @param {number | null | undefined} requestTabId
26
- * @param {chrome.tabs.Tab | null | undefined} explicitTab
27
- * @param {chrome.tabs.Tab | null | undefined} activeTab
28
- * @returns {chrome.tabs.Tab | null}
29
- */
30
- export function selectRequestTabCandidate(requestTabId, explicitTab, activeTab) {
31
- if (typeof requestTabId === 'number' && Number.isFinite(requestTabId)) {
32
- return explicitTab ?? null;
33
- }
34
- return activeTab ?? null;
35
- }
36
-
37
- /**
38
- * @param {chrome.tabs.Tab | null | undefined} tab
39
- * @param {number} enabledWindowId
40
- * @param {{ requireScriptable?: boolean }} [options]
41
- * @returns {ResolvedTabTarget}
42
- */
43
- export function resolveWindowScopedTab(tab, enabledWindowId, options = {}) {
44
- const requireScriptable = options.requireScriptable !== false;
45
- if (typeof tab?.id !== 'number' || !Number.isFinite(tab.id) || typeof tab.windowId !== 'number') {
46
- throw new Error(ERROR_CODES.TAB_MISMATCH);
47
- }
48
- if (tab.windowId !== enabledWindowId) {
49
- throw new Error(ERROR_CODES.ACCESS_DENIED);
50
- }
51
- if (typeof tab.url !== 'string' || !tab.url) {
52
- throw new Error(ERROR_CODES.TAB_MISMATCH);
53
- }
54
- if (requireScriptable && isRestrictedAutomationUrl(tab.url)) {
55
- throw new Error(ERROR_CODES.ACCESS_DENIED);
56
- }
57
-
58
- return {
59
- tabId: tab.id,
60
- windowId: tab.windowId,
61
- title: tab.title ?? '',
62
- url: tab.url,
63
- };
64
- }
65
-
66
- /**
67
- * @param {chrome.tabs.Tab | null | undefined} tab
68
- * @returns {ResolvedTabTarget | null}
69
- */
70
- export function normalizeRequestedAccessTab(tab) {
71
- if (
72
- typeof tab?.id !== 'number' ||
73
- !Number.isFinite(tab.id) ||
74
- typeof tab.windowId !== 'number' ||
75
- typeof tab.url !== 'string' ||
76
- !tab.url
77
- ) {
78
- return null;
79
- }
80
- if (isRestrictedAutomationUrl(tab.url)) {
81
- return null;
82
- }
83
- return {
84
- tabId: tab.id,
85
- windowId: tab.windowId,
86
- title: tab.title ?? '',
87
- url: tab.url,
88
- };
89
- }