dsh-site-bridge 0.8.1 → 0.8.2

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.
@@ -9,7 +9,7 @@
9
9
  | 2 | shadow DOM частично | **частично снято** | открытые корни: селекторы-цепочки и поиск работают; закрытые корни не видны |
10
10
  | 3 | тело ответа ≤ 400 КБ | **снято** | лимит 5 МБ в воркере, тела > 200 КБ выносятся в `bodies/<id>.json` |
11
11
  | 4 | один таб на сессию | **снято** | `Map<tabId, session>`, `tabId` в командах, переключатель в попапе |
12
- | 5 | Chrome отказывает в `chrome.debugger.attach` отдельной вкладке (`Cannot access a chrome-extension:// URL of different extension`) | открыто | воспроизведено на `mail.google.com`: соседние сайты подключаются, Gmail — нет, при этом `tabs.get` вкладку отдаёт, а в списке целей у неё обычный `page` с https-адресом. Обход не найден; `site_tabs {action:"diagnose"}` показывает, что видит Chrome |
12
+ | 5 | Chrome отказывает в `chrome.debugger.attach` вкладке или вешает вызов (`Cannot access a chrome-extension:// URL of different extension`) | открыто, но зависит от профиля | воспроизведено у пользователя на `mail.google.com` (отказ) и на странице поиска Google (зависание), при этом `tabs.get` вкладку отдаёт, а `chrome.debugger.getTargets` показывает обычный `page` с https-адресом. В чистом профиле с одним нашим расширением те же адреса (`accounts.google.com`, `google.com/sorry`) подключаются без ошибок — значит на вкладке есть фрейм другого расширения либо отладку перехватывает стороннее ПО. Лечится профилем без посторонних расширений |
13
13
 
14
14
  Ниже — исходный разбор каждого ограничения; для снятых пунктов оставлено описание того, что
15
15
  именно было изменено и какие границы остались.
@@ -2,13 +2,14 @@
2
2
  "manifest_version": 3,
3
3
  "default_locale": "en",
4
4
  "name": "__MSG_appName__",
5
- "version": "0.8.1",
5
+ "version": "0.8.2",
6
6
  "description": "__MSG_appDesc__",
7
7
  "minimum_chrome_version": "116",
8
8
  "permissions": [
9
9
  "debugger",
10
10
  "tabs",
11
- "storage"
11
+ "storage",
12
+ "webNavigation"
12
13
  ],
13
14
  "host_permissions": [
14
15
  "http://127.0.0.1/*",
package/extension/sw.js CHANGED
@@ -1613,6 +1613,7 @@ async function dispatch(op, args) {
1613
1613
  const windows = await chrome.windows.getAll({}).catch(() => [])
1614
1614
  const window = windows.find((item) => item.id === info?.windowId) ?? null
1615
1615
  const targets = await chrome.debugger.getTargets().catch(() => [])
1616
+ const frames = await chrome.webNavigation.getAllFrames({ tabId: id }).catch(() => null)
1616
1617
  const mine = targets
1617
1618
  .filter((target) => target.tabId === id)
1618
1619
  .map((target) => ({
@@ -1638,6 +1639,13 @@ async function dispatch(op, args) {
1638
1639
  : { error: info?.error },
1639
1640
  window: window ? { id: window.id, type: window.type, state: window.state } : null,
1640
1641
  targets: mine,
1642
+ frames: Array.isArray(frames)
1643
+ ? frames.map((frame) => ({
1644
+ frameId: frame.frameId,
1645
+ parentFrameId: frame.parentFrameId,
1646
+ url: String(frame.url ?? '').slice(0, 200)
1647
+ }))
1648
+ : null,
1641
1649
  targetCount: targets.length
1642
1650
  }
1643
1651
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-site-bridge",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "Chrome/Edge MV3 bridge for DeepSeek Harness: capture page markup (DOM, styles, selectors) and BFF traffic (xhr/fetch with headers and bodies) into a workspace snapshot bundle, drive the page with trusted CDP input, and verify injected scripts. Authorization never leaves the browser and is never written to disk.",
5
5
  "icon": "./icon.svg",
6
6
  "type": "module",