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.
- package/docs/limitations.md +1 -1
- package/extension/manifest.json +3 -2
- package/extension/sw.js +8 -0
- package/package.json +1 -1
package/docs/limitations.md
CHANGED
|
@@ -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`
|
|
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
|
именно было изменено и какие границы остались.
|
package/extension/manifest.json
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
"manifest_version": 3,
|
|
3
3
|
"default_locale": "en",
|
|
4
4
|
"name": "__MSG_appName__",
|
|
5
|
-
"version": "0.8.
|
|
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.
|
|
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",
|