dsh-web-annotator 0.2.0-alpha.11 → 0.2.0-alpha.12
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/CHANGELOG.md +13 -0
- package/docs/distribution.md +9 -9
- package/docs/marketplace/cslkkl__dsh-web-annotator.yml +1 -1
- package/docs/publishing.md +54 -14
- package/lib/host/browser-provider/lib/client.css +1 -1
- package/lib/host/browser-provider/lib/client.css.map +1 -1
- package/lib/host/browser-provider/lib/client.js +28 -28
- package/lib/host/browser-provider/lib/client.js.map +1 -1
- package/lib/host/browser-provider/lib/index.js +1 -1
- package/lib/host/browser-provider/lib/index.js.map +1 -1
- package/lib/host/bundle.json +19 -19
- package/lib/host/chat-provider/lib/client.css +18 -18
- package/lib/host/chat-provider/lib/client.css.map +1 -1
- package/lib/host/chat-provider/lib/client.js +137 -137
- package/lib/host/chat-provider/lib/client.js.map +1 -1
- package/lib/host/chat-provider/lib/index.js +4 -4
- package/lib/host/chat-provider/lib/index.js.map +1 -1
- package/lib/host/layout-provider/lib/client.css +1 -1
- package/lib/host/layout-provider/lib/client.css.map +1 -1
- package/lib/host/layout-provider/lib/client.js +12 -12
- package/lib/host/layout-provider/lib/client.js.map +1 -1
- package/lib/host/layout-provider/lib/index.js +1 -1
- package/lib/host/layout-provider/lib/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.0-alpha.12 — 发布链路接上 npm 的 OIDC
|
|
4
|
+
|
|
5
|
+
- 发布链路新增 npm 一路:推 `v*` 标签后,Release 建完再由 **Trusted Publishing(OIDC)**
|
|
6
|
+
把同一份产物发到 npm 的 `alpha` dist-tag,仓库里不存 token(`id-token: write` + `--provenance`)。
|
|
7
|
+
它排在建 Release **之后**:npm 那半失败时用户仍拿得到安装包,也排除了「npm 有、GitHub 没有」。
|
|
8
|
+
- 本版是这条路径的第一次真实运行,兼作 npm Trusted Publisher 连接的激活发布 ——
|
|
9
|
+
新建的连接**有 2 天激活期**,过期后连字段都不可改。
|
|
10
|
+
- 文档补上这轮踩到的三处,都写在 [发布链路](docs/publishing.md) 与 [AGENTS.md](AGENTS.md)
|
|
11
|
+
的「活跃坑」:本机 npm 指向镜像时登录/发布报 `Public registration is not allowed`;
|
|
12
|
+
Trusted Publisher 的 `Allowed actions` 默认**不含**直接发布(漏勾则 CI 全绿而 npm 上没有新版本);
|
|
13
|
+
发布成功后头几分钟 `npm install` 会因传播延迟报 `ETARGET`,那不是失败。
|
|
14
|
+
- 插件代码与宿主提供方**没有变化**,界面行为与 alpha.11 相同。
|
|
15
|
+
|
|
3
16
|
## 0.2.0-alpha.11 — 输入框入口不再显成“被选中”
|
|
4
17
|
|
|
5
18
|
- 输入框左侧的“批注网页”不再是一块恒有灰底的实心按钮。它原先借用了 `variant="toolbar"`
|
package/docs/distribution.md
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
包名 `dsh-web-annotator`,源码在 [cslkkl/dsh-web-annotator](https://github.com/cslkkl/dsh-web-annotator)。
|
|
6
6
|
预构建包通过 GitHub Release 分发,面向精确 Harness **0.2.0-rc.2**,用户不需要编译。
|
|
7
|
-
版本号见 [../package.json](../package.json)。npm
|
|
8
|
-
|
|
7
|
+
版本号见 [../package.json](../package.json)。npm 已发布预览版(`npm install dsh-web-annotator@alpha`),
|
|
8
|
+
发布由 CI 走 OIDC Trusted Publishing,见 [发布链路](publishing.md) 的 npm 发布节。
|
|
9
9
|
社区目录的条目已提交、**等待维护者审阅**([awesome-dsh-plugin#6833](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/6833)),
|
|
10
10
|
**提交不等于收录**:合并并被目录同步之后,才能声明该市场可搜索、可安装。
|
|
11
11
|
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
|
|
30
30
|
## 各渠道的收录规则
|
|
31
31
|
|
|
32
|
-
| 渠道 | 要求 | 本项目的做法
|
|
33
|
-
| -------------------------------------- | -------------------------------------------------------------------------------- |
|
|
34
|
-
| DSH 官方插件管理页 / CLI | 预构建包声明合法 `dsh.bundle.patch`,可安装 npm spec 或本地 tgz | 安装一个预构建包
|
|
35
|
-
| `dshmarket`(awesome-dsh-plugin 目录) | 向目录仓库提交插件 YAML,维护者审阅合并;仓库须创建满一天并带 `dsh-plugin` topic | 条目用 `tarball` 指向已发布的 Release tgz,不必先发 npm
|
|
36
|
-
| 按 GitHub topic 自动发现的市场 | 仓库带 `dsh-plugin` topic;安装方式取决于各市场 | 标签便于发现,不等于安装已验收
|
|
37
|
-
| Desktop 的 `dsh-community-market` | 目录解析唯一 npm 包名,要求 npm `latest` 是稳定精确版本 |
|
|
38
|
-
| npm(可选) | 包的 `repository` 字段必须指回本仓库,否则不会与条目关联 | 已声明;发布走 OIDC,用 `alpha` dist-tag
|
|
32
|
+
| 渠道 | 要求 | 本项目的做法 |
|
|
33
|
+
| -------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
34
|
+
| DSH 官方插件管理页 / CLI | 预构建包声明合法 `dsh.bundle.patch`,可安装 npm spec 或本地 tgz | 安装一个预构建包 |
|
|
35
|
+
| `dshmarket`(awesome-dsh-plugin 目录) | 向目录仓库提交插件 YAML,维护者审阅合并;仓库须创建满一天并带 `dsh-plugin` topic | 条目用 `tarball` 指向已发布的 Release tgz,不必先发 npm |
|
|
36
|
+
| 按 GitHub topic 自动发现的市场 | 仓库带 `dsh-plugin` topic;安装方式取决于各市场 | 标签便于发现,不等于安装已验收 |
|
|
37
|
+
| Desktop 的 `dsh-community-market` | 目录解析唯一 npm 包名,要求 npm `latest` 是稳定精确版本 | **仍不满足**:还没有稳定版,而全新包的首个版本会被 npm 强制占住 `latest`,所以它现在指向一个 alpha |
|
|
38
|
+
| npm(可选) | 包的 `repository` 字段必须指回本仓库,否则不会与条目关联 | 已声明;发布走 OIDC,用 `alpha` dist-tag |
|
|
39
39
|
|
|
40
40
|
以上是查阅公开实现得到的规则,未在市场 UI 中实际安装本项目。
|
|
41
41
|
其他版本或来源的行为需要分别确认。收录结果由市场维护者决定。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
url: https://github.com/cslkkl/dsh-web-annotator
|
|
2
2
|
name: cslkkl/dsh-web-annotator
|
|
3
3
|
category: browser
|
|
4
|
-
tarball: https://github.com/cslkkl/dsh-web-annotator/releases/download/v0.2.0-alpha.
|
|
4
|
+
tarball: https://github.com/cslkkl/dsh-web-annotator/releases/download/v0.2.0-alpha.12/dsh-web-annotator-0.2.0-alpha.12.tgz
|
|
5
5
|
description:
|
|
6
6
|
en: 'Annotate pages inside the existing Harness Browser: click or drag to select, comment or ask, then send marked screenshots or DOM location details to the current session. While enabled it replaces the official Browser, Chat and Layout providers; targets Harness 0.2.0-rc.2.'
|
|
7
7
|
zh: '在 Harness 原有 Browser 内批注网页:点选或框选后就地评论、提问,可把标记截图或 DOM 定位资料发给当前会话;启用期间替换官方 Browser、Chat 与 Layout 提供方,精确支持 Harness 0.2.0-rc.2。'
|
package/docs/publishing.md
CHANGED
|
@@ -66,31 +66,71 @@ Release 的附件列表。
|
|
|
66
66
|
同一套做法:**仓库里不存任何 npm token**,npm 侧凭「本仓库的 `release.yml`」授权,
|
|
67
67
|
所以 `release.yml` 里必须有 `id-token: write`。**不要**加 `NPM_TOKEN` secret ——
|
|
68
68
|
OIDC 已替代它,加了反而会在 token 过期后静默回到「workflow 能跑、包发不出去」的状态。
|
|
69
|
+
配好之后建议把包的 Publishing access 改成「**Require two-factor authentication and
|
|
70
|
+
disallow bypass 2fa tokens**」,堵掉 token 这条并行通道。
|
|
69
71
|
|
|
70
72
|
环境要求 npm CLI ≥ 11.5.1(Node 24 自带的够新),registry 由 `setup-node` 的
|
|
71
73
|
`registry-url` 显式钉到 `https://registry.npmjs.org`。
|
|
72
74
|
|
|
73
|
-
###
|
|
75
|
+
### npm 侧怎么配(一次性)
|
|
74
76
|
|
|
75
|
-
Trusted Publishing
|
|
77
|
+
Trusted Publishing 配在**已存在的包**上,所以顺序不能颠倒:先让包存在,再配连接。
|
|
78
|
+
登录 npmjs.com → **Packages → 本包 → Settings → Trusted publishing** →
|
|
79
|
+
**Add trusted publisher** → 选 **GitHub Actions**:
|
|
76
80
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
| 字段 | 值 |
|
|
82
|
+
| -------------------- | ------------------------------------------------ |
|
|
83
|
+
| Organization or user | `cslkkl` |
|
|
84
|
+
| Repository | `dsh-web-annotator` |
|
|
85
|
+
| Workflow filename | `release.yml`(**只填文件名**,不带 `.github/`) |
|
|
86
|
+
| Environment name | 留空 |
|
|
87
|
+
|
|
88
|
+
⚠️ **`Allowed actions` 里必须勾 `Allow npm publish`。** 2026-09-03 之后新建的连接
|
|
89
|
+
**默认只允许 `npm stage publish`**(暂存发布,要人工批准才上线)。漏勾时包只会进暂存区,
|
|
90
|
+
而 **workflow 依然全绿** —— 症状是「CI 成功、npm 上看不到新版本」,最难查的一类。
|
|
91
|
+
`Allow npm dist-tag` 不用勾:发稳定版用的是 `npm publish --tag latest`,属于 publish 权限。
|
|
92
|
+
|
|
93
|
+
⚠️ **字段建好不可改** —— provider 与必填项一旦创建即固定,填错只能删掉重建。
|
|
94
|
+
|
|
95
|
+
⚠️ **新建的连接有 2 天激活期**:必须在 2 天内成功发布一次,否则连接**过期且不可编辑**,
|
|
96
|
+
只能删除重建。所以「配好」与「发一版」要挨着做;而为了激活而发的那一版本身也得有内容,
|
|
97
|
+
不要为了跑通链路发一个空版本。
|
|
85
98
|
|
|
86
99
|
包还不存在时,`release.yml` 里的 npm 这一步会**明确警告后跳过**(Release 已经建好了,
|
|
87
100
|
缺的只是 npm 这一路),不会让发布无故变红。
|
|
88
101
|
|
|
89
|
-
###
|
|
102
|
+
### 备用路径:本机手发
|
|
103
|
+
|
|
104
|
+
OIDC 不可用时,所有者可在本机发布,但**只用于建包这类一次性动作**。本机打包的字节与
|
|
105
|
+
CI 验收过的那份**不同**:provider 产物里会写进检出目录名(`../harness-browser-integration/…`
|
|
106
|
+
而不是 `.host-source/…`),sourcemap 也跟着变 —— 长期走这条路等于让「发出去的就是验收过的
|
|
107
|
+
那一份」失效。首个版本之后一律由 CI 发。
|
|
108
|
+
|
|
109
|
+
⚠️ 本机 `npm` 若指向镜像(如 `registry.npmmirror.com`),`npm login` / `npm publish` 会报
|
|
110
|
+
`Public registration is not allowed` —— 镜像只读,不提供账号与发布。发布时显式指定官方源:
|
|
111
|
+
|
|
112
|
+
```powershell
|
|
113
|
+
npm publish <tgz 或 .> --registry=https://registry.npmjs.org --access public --tag alpha
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
装包仍走镜像(快),所以**不要**改全局 registry。
|
|
117
|
+
|
|
118
|
+
### dist-tag 与 `latest`
|
|
119
|
+
|
|
120
|
+
发布命令固定 `--tag alpha`,用户按 `@alpha` 取预览版。
|
|
121
|
+
|
|
122
|
+
⚠️ **全新包的第一个版本会被 npm 强制占住 `latest`** —— 包必须有一个 `latest`,
|
|
123
|
+
`--tag alpha` 拦不住这件事。所以在**还没有稳定版**期间,`latest` 会指向某个 alpha。
|
|
124
|
+
这不等于「预览冒充稳定版」(用户显式要 `@alpha` 拿到的才是我们承诺的那条),
|
|
125
|
+
但意味着 Desktop 社区市场**仍不会收录**:它要求 `latest` 是稳定精确版本
|
|
126
|
+
(见 [分发说明](distribution.md))。发稳定版时才把 `latest` 指过去。
|
|
127
|
+
|
|
128
|
+
### 发布后复核
|
|
90
129
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
130
|
+
1. `npm view dsh-web-annotator dist-tags` —— `alpha` 应指向刚发的版本。
|
|
131
|
+
2. `npm install dsh-web-annotator@alpha` 真装一次。
|
|
132
|
+
⚠️ 头几分钟可能报 `ETARGET … No matching version found`:那是 npm/CDN 的**传播延迟**,
|
|
133
|
+
而 `npm view` 同时已经能看到新版本。**等几分钟再试,不是失败。**
|
|
94
134
|
|
|
95
135
|
## 不在这里的事
|
|
96
136
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../.host-source/packages/client/ui-sidebar-browser/src/client/view/Browser.module.css"],
|
|
4
4
|
"sourcesContent": [".root {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-base);\n}\n\n.toolbar {\n display: flex;\n flex: 0 0 auto;\n gap: 4px;\n align-items: center;\n box-sizing: border-box;\n height: 38px;\n padding: 5px 6px;\n border-bottom: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n.tool {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n background: transparent;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n cursor: pointer;\n}\n\n.tool:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.tool:disabled {\n color: var(--dsw-alias-label-quaternary);\n cursor: default;\n}\n\n.sandboxOff {\n color: var(--dsw-alias-state-error-primary);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 10%, transparent);\n}\n\n.addressBox {\n position: relative;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.address {\n width: 100%;\n height: 28px;\n box-sizing: border-box;\n padding: 0 34px 0 9px;\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-xxs-12);\n background: var(--dsw-alias-bg-layer-1);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n}\n\n.addressGo {\n position: absolute;\n top: 0;\n right: 0;\n visibility: hidden;\n opacity: 0;\n}\n\n.addressBox:focus-within .addressGo {\n visibility: visible;\n opacity: 1;\n}\n\n.addressUnknown {\n --dsh-scrollbar-thumb: var(--dsw-alias-scrollbar-bg-l2);\n --dsh-scrollbar-thumb-hover: var(--dsw-alias-scrollbar-hover-l2);\n\n color: var(--dsw-alias-label-tertiary);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.addressUnknown:focus {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n.addressChanged {\n position: absolute;\n top: 6px;\n right: 8px;\n padding-left: 8px;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxxs-11);\n line-height: 16px;\n pointer-events: none;\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.addressBox:focus-within .addressChanged {\n visibility: hidden;\n opacity: 0;\n}\n\n.address:focus {\n outline: 1px solid var(--dsw-alias-state-business-primary);\n outline-offset: -1px;\n}\n\n.frame {\n display: flex;\n flex: 1 1 auto;\n width: 100%;\n min-height: 0;\n border: 0;\n background: var(--dsw-alias-bg-base);\n}\n\n.content {\n position: relative;\n display: flex;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n}\n\n.viewport {\n display: flex;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n}\n\n.placeholder {\n position: absolute;\n inset: 0;\n display: flex;\n pointer-events: none;\n}\n\n.restore {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 24px;\n overflow: auto;\n text-align: center;\n}\n\n.restoreLabel {\n margin: auto 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n\n.restoreTitle {\n max-width: 100%;\n margin: 0;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n.restoreUrl {\n max-width: 100%;\n margin: 0;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n.restore > :last-child {\n flex-shrink: 0;\n margin-bottom: auto;\n}\n\n.webview {\n display: flex;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n width: 100%;\n height: 100%;\n border: 0;\n -webkit-app-region: no-drag;\n}\n\n/* Native guest input must not consume a docking gesture's window events. */\n:global(html:has([data-dockkit-pointer])) .webview {\n pointer-events: none;\n}\n\n.start {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n justify-content: center;\n min-height: 0;\n padding: 24px;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xs-13);\n text-align: center;\n}\n\n.failure {\n flex: 0 0 auto;\n padding: 6px 12px;\n color: var(--dsw-alias-state-error-primary);\n font: var(--dsw-font-xxxs-11);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n\n.sandboxWarning {\n flex: 0 0 auto;\n padding: 6px 12px;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxxs-11);\n background: var(--dsw-alias-state-warn-tertiary);\n}\n\n.limit {\n flex: 0 0 auto;\n margin: 0;\n padding: 4px 10px;\n overflow: hidden;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxxs-11);\n text-overflow: ellipsis;\n white-space: nowrap;\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n.titleIcon {\n flex: 0 0 auto;\n margin-right: 4px;\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["root", "toolbar", "tool", "sandboxOff", "addressBox", "address", "addressGo", "addressUnknown", "addressChanged", "frame", "content", "viewport", "placeholder", "restore", "restoreLabel", "restoreTitle", "restoreUrl", "webview", "start", "failure", "sandboxWarning", "limit", "titleIcon"]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
window.__ModuleLoader__.load({ id: '@deepseek-ai/dsh-client-ui-sidebar-browser', factory: function(require) { var module = { exports: {} }; var exports = module.exports;
|
|
2
|
-
const cssDispose = () => { const style = document.createElement('style'); style.textContent = "/*
|
|
2
|
+
const cssDispose = () => { const style = document.createElement('style'); style.textContent = "/* .host-source/packages/client/ui-sidebar-browser/src/client/view/Browser.module.css */\n.Browser_root {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-base);\n}\n.Browser_toolbar {\n display: flex;\n flex: 0 0 auto;\n gap: 4px;\n align-items: center;\n box-sizing: border-box;\n height: 38px;\n padding: 5px 6px;\n border-bottom: 0.5px solid var(--dsw-alias-border-l3);\n}\n.Browser_tool {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n background: transparent;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n cursor: pointer;\n}\n.Browser_tool:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n.Browser_tool:disabled {\n color: var(--dsw-alias-label-quaternary);\n cursor: default;\n}\n.Browser_sandboxOff {\n color: var(--dsw-alias-state-error-primary);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 10%, transparent);\n}\n.Browser_addressBox {\n position: relative;\n flex: 1 1 auto;\n min-width: 0;\n}\n.Browser_address {\n width: 100%;\n height: 28px;\n box-sizing: border-box;\n padding: 0 34px 0 9px;\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-xxs-12);\n background: var(--dsw-alias-bg-layer-1);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n}\n.Browser_addressGo {\n position: absolute;\n top: 0;\n right: 0;\n visibility: hidden;\n opacity: 0;\n}\n.Browser_addressBox:focus-within .Browser_addressGo {\n visibility: visible;\n opacity: 1;\n}\n.Browser_addressUnknown {\n --dsh-scrollbar-thumb: var(--dsw-alias-scrollbar-bg-l2);\n --dsh-scrollbar-thumb-hover: var(--dsw-alias-scrollbar-hover-l2);\n color: var(--dsw-alias-label-tertiary);\n background: var(--dsw-alias-bg-layer-2);\n}\n.Browser_addressUnknown:focus {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-layer-1);\n}\n.Browser_addressChanged {\n position: absolute;\n top: 6px;\n right: 8px;\n padding-left: 8px;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxxs-11);\n line-height: 16px;\n pointer-events: none;\n background: var(--dsw-alias-bg-layer-2);\n}\n.Browser_addressBox:focus-within .Browser_addressChanged {\n visibility: hidden;\n opacity: 0;\n}\n.Browser_address:focus {\n outline: 1px solid var(--dsw-alias-state-business-primary);\n outline-offset: -1px;\n}\n.Browser_frame {\n display: flex;\n flex: 1 1 auto;\n width: 100%;\n min-height: 0;\n border: 0;\n background: var(--dsw-alias-bg-base);\n}\n.Browser_content {\n position: relative;\n display: flex;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n}\n.Browser_viewport {\n display: flex;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n}\n.Browser_placeholder {\n position: absolute;\n inset: 0;\n display: flex;\n pointer-events: none;\n}\n.Browser_restore {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 24px;\n overflow: auto;\n text-align: center;\n}\n.Browser_restoreLabel {\n margin: auto 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n.Browser_restoreTitle {\n max-width: 100%;\n margin: 0;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n.Browser_restoreUrl {\n max-width: 100%;\n margin: 0;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n.Browser_restore > :last-child {\n flex-shrink: 0;\n margin-bottom: auto;\n}\n.Browser_webview {\n display: flex;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n width: 100%;\n height: 100%;\n border: 0;\n -webkit-app-region: no-drag;\n}\nhtml:has([data-dockkit-pointer]) .Browser_webview {\n pointer-events: none;\n}\n.Browser_start {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n justify-content: center;\n min-height: 0;\n padding: 24px;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xs-13);\n text-align: center;\n}\n.Browser_failure {\n flex: 0 0 auto;\n padding: 6px 12px;\n color: var(--dsw-alias-state-error-primary);\n font: var(--dsw-font-xxxs-11);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.Browser_sandboxWarning {\n flex: 0 0 auto;\n padding: 6px 12px;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxxs-11);\n background: var(--dsw-alias-state-warn-tertiary);\n}\n.Browser_limit {\n flex: 0 0 auto;\n margin: 0;\n padding: 4px 10px;\n overflow: hidden;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxxs-11);\n text-overflow: ellipsis;\n white-space: nowrap;\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n.Browser_titleIcon {\n flex: 0 0 auto;\n margin-right: 4px;\n}\n/*# sourceMappingURL=client.css.map */\n"; document.head.append(style); return () => style.remove(); };
|
|
3
3
|
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
5
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -19,7 +19,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
19
19
|
};
|
|
20
20
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
21
|
|
|
22
|
-
//
|
|
22
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/index.ts
|
|
23
23
|
var index_exports = {};
|
|
24
24
|
__export(index_exports, {
|
|
25
25
|
apply: () => apply,
|
|
@@ -27,11 +27,11 @@ __export(index_exports, {
|
|
|
27
27
|
});
|
|
28
28
|
module.exports = __toCommonJS(index_exports);
|
|
29
29
|
|
|
30
|
-
//
|
|
30
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/view/BrowserBody.tsx
|
|
31
31
|
var import_react = require("react");
|
|
32
32
|
var import_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
33
33
|
|
|
34
|
-
//
|
|
34
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/browser/BrowserFrame.ts
|
|
35
35
|
function emptyBrowserFrame() {
|
|
36
36
|
return {
|
|
37
37
|
target: void 0,
|
|
@@ -44,7 +44,7 @@ function emptyBrowserFrame() {
|
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
//
|
|
47
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/browser/BrowserPersistence.ts
|
|
48
48
|
function currentBrowserTarget(state) {
|
|
49
49
|
return state === void 0 || state.index < 0 ? void 0 : state.entries[state.index];
|
|
50
50
|
}
|
|
@@ -58,7 +58,7 @@ function browserAddressCheckpoint(target, revision) {
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
//
|
|
61
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/view/Browser.module.css
|
|
62
62
|
var Browser_default = {
|
|
63
63
|
root: "Browser_root",
|
|
64
64
|
toolbar: "Browser_toolbar",
|
|
@@ -85,7 +85,7 @@ var Browser_default = {
|
|
|
85
85
|
titleIcon: "Browser_titleIcon"
|
|
86
86
|
};
|
|
87
87
|
|
|
88
|
-
//
|
|
88
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/view/BrowserBody.tsx
|
|
89
89
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
90
90
|
var EMPTY_FRAME = emptyBrowserFrame();
|
|
91
91
|
function SandboxPolicyIcon({ sandboxed }) {
|
|
@@ -230,7 +230,7 @@ function BrowserBody(props) {
|
|
|
230
230
|
] });
|
|
231
231
|
}
|
|
232
232
|
|
|
233
|
-
//
|
|
233
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/view/BrowserTitle.tsx
|
|
234
234
|
var import_dsh_client_ui_primitives2 = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
235
235
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
236
236
|
function BrowserTitle({ useTabInfo, useStore }) {
|
|
@@ -242,10 +242,10 @@ function BrowserTitle({ useTabInfo, useStore }) {
|
|
|
242
242
|
] });
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
-
//
|
|
245
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/browser/BrowserController.ts
|
|
246
246
|
var import_dsh_client_store = require("@deepseek-ai/dsh-client-store");
|
|
247
247
|
|
|
248
|
-
//
|
|
248
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/browser/url.ts
|
|
249
249
|
var MAX_BROWSER_URL_LENGTH = 16 * 1024;
|
|
250
250
|
function parseBrowserAddress(input, applicationOrigin) {
|
|
251
251
|
const trimmed = input.trim();
|
|
@@ -272,7 +272,7 @@ function parseBrowserAddress(input, applicationOrigin) {
|
|
|
272
272
|
return { ok: false, reason: "protocol" };
|
|
273
273
|
}
|
|
274
274
|
|
|
275
|
-
//
|
|
275
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/browser/BrowserController.ts
|
|
276
276
|
var BrowserController = class {
|
|
277
277
|
/** @param options - identity, persistence, page factory and source-tab navigation. */
|
|
278
278
|
constructor(options) {
|
|
@@ -523,10 +523,10 @@ function createBrowserControllers(actions, createPage, isTabOpen) {
|
|
|
523
523
|
};
|
|
524
524
|
}
|
|
525
525
|
|
|
526
|
-
//
|
|
526
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/browser/IframeImpl.ts
|
|
527
527
|
var import_dsh_client_store2 = require("@deepseek-ai/dsh-client-store");
|
|
528
528
|
|
|
529
|
-
//
|
|
529
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/browser/BrowserNavigation.ts
|
|
530
530
|
var MAX_BROWSER_HISTORY = 100;
|
|
531
531
|
var BrowserNavigation = class _BrowserNavigation {
|
|
532
532
|
value;
|
|
@@ -642,7 +642,7 @@ var BrowserNavigation = class _BrowserNavigation {
|
|
|
642
642
|
}
|
|
643
643
|
};
|
|
644
644
|
|
|
645
|
-
//
|
|
645
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/browser/IframeImpl.ts
|
|
646
646
|
var IframeImpl = class {
|
|
647
647
|
/** @param options - initial checkpoint and persistence writer. @param presentation - iframe DOM adapter. */
|
|
648
648
|
constructor(options, presentation) {
|
|
@@ -744,7 +744,7 @@ var IframeImpl = class {
|
|
|
744
744
|
}
|
|
745
745
|
};
|
|
746
746
|
|
|
747
|
-
//
|
|
747
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/annotation/protocol.ts
|
|
748
748
|
function object(value) {
|
|
749
749
|
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
750
750
|
}
|
|
@@ -800,7 +800,7 @@ function isAnnotationResult(value) {
|
|
|
800
800
|
}
|
|
801
801
|
}
|
|
802
802
|
|
|
803
|
-
//
|
|
803
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/annotation/iframe-annotation.ts
|
|
804
804
|
function annotateIframe(frame, url, options, signal) {
|
|
805
805
|
if (signal.aborted) return Promise.resolve({ cancelled: true });
|
|
806
806
|
return new Promise((resolve, reject) => {
|
|
@@ -860,7 +860,7 @@ function annotateIframe(frame, url, options, signal) {
|
|
|
860
860
|
});
|
|
861
861
|
}
|
|
862
862
|
|
|
863
|
-
//
|
|
863
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/view/IframePresentation.ts
|
|
864
864
|
var WEB_BROWSER_SANDBOX = "allow-scripts allow-forms allow-same-origin allow-popups allow-popups-to-escape-sandbox";
|
|
865
865
|
var IframePresentation = class {
|
|
866
866
|
/** @param events - provider-owned load and remount callbacks. */
|
|
@@ -932,7 +932,7 @@ var IframePresentation = class {
|
|
|
932
932
|
}
|
|
933
933
|
};
|
|
934
934
|
|
|
935
|
-
//
|
|
935
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/pages.ts
|
|
936
936
|
function createIframePage(options) {
|
|
937
937
|
const presentation = new IframePresentation({
|
|
938
938
|
loaded: (revision) => {
|
|
@@ -949,7 +949,7 @@ function createIframePage(options) {
|
|
|
949
949
|
return { frame, presentation };
|
|
950
950
|
}
|
|
951
951
|
|
|
952
|
-
//
|
|
952
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/electron/ElectronWebViewImpl.ts
|
|
953
953
|
var import_dsh_client_store3 = require("@deepseek-ai/dsh-client-store");
|
|
954
954
|
var ElectronWebViewImpl = class {
|
|
955
955
|
/**
|
|
@@ -1217,7 +1217,7 @@ var ElectronWebViewImpl = class {
|
|
|
1217
1217
|
}
|
|
1218
1218
|
};
|
|
1219
1219
|
|
|
1220
|
-
//
|
|
1220
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/annotation/page-inspector.ts
|
|
1221
1221
|
function annotatePage(options) {
|
|
1222
1222
|
window.__DSH_PAGE_ANNOTATION_CANCEL__?.();
|
|
1223
1223
|
const doc = document;
|
|
@@ -1992,7 +1992,7 @@ function annotatePage(options) {
|
|
|
1992
1992
|
return result;
|
|
1993
1993
|
}
|
|
1994
1994
|
|
|
1995
|
-
//
|
|
1995
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/annotation/screenshot.ts
|
|
1996
1996
|
async function markScreenshot(dataUrl, annotation) {
|
|
1997
1997
|
const picture = new Image();
|
|
1998
1998
|
picture.src = dataUrl;
|
|
@@ -2030,7 +2030,7 @@ async function markScreenshot(dataUrl, annotation) {
|
|
|
2030
2030
|
return { mediaType: "image/jpeg", data, width: canvas.width, height: canvas.height };
|
|
2031
2031
|
}
|
|
2032
2032
|
|
|
2033
|
-
//
|
|
2033
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/electron/ElectronWebviewPresentation.ts
|
|
2034
2034
|
var ElectronWebviewPresentation = class {
|
|
2035
2035
|
constructor(events) {
|
|
2036
2036
|
this.events = events;
|
|
@@ -2137,7 +2137,7 @@ var ElectronWebviewPresentation = class {
|
|
|
2137
2137
|
}
|
|
2138
2138
|
};
|
|
2139
2139
|
|
|
2140
|
-
//
|
|
2140
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/electron/pages.ts
|
|
2141
2141
|
function createElectronPage(options, bridge, workspace) {
|
|
2142
2142
|
const presentation = new ElectronWebviewPresentation({
|
|
2143
2143
|
mounted: () => {
|
|
@@ -2151,7 +2151,7 @@ function createElectronPage(options, bridge, workspace) {
|
|
|
2151
2151
|
return { frame, presentation };
|
|
2152
2152
|
}
|
|
2153
2153
|
|
|
2154
|
-
//
|
|
2154
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/electron/workspace.ts
|
|
2155
2155
|
async function browserWorkspace(source, sessionId, signal) {
|
|
2156
2156
|
signal.throwIfAborted();
|
|
2157
2157
|
if (source.getSnapshot().phase !== "ready") {
|
|
@@ -2175,7 +2175,7 @@ async function browserWorkspace(source, sessionId, signal) {
|
|
|
2175
2175
|
return workspace === void 0 ? `session:${sessionId}` : `cwd:${workspace.path}`;
|
|
2176
2176
|
}
|
|
2177
2177
|
|
|
2178
|
-
//
|
|
2178
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/definition.tsx
|
|
2179
2179
|
var import_dsh_client_ui_primitives3 = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
2180
2180
|
var BROWSER_KIND = "browser";
|
|
2181
2181
|
var BROWSER_ID = "@deepseek-ai/dsh-client-ui-sidebar-browser";
|
|
@@ -2197,7 +2197,7 @@ function browserDefinition(t) {
|
|
|
2197
2197
|
};
|
|
2198
2198
|
}
|
|
2199
2199
|
|
|
2200
|
-
//
|
|
2200
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/locales.ts
|
|
2201
2201
|
var zh = {
|
|
2202
2202
|
"type.label": "\u6D4F\u89C8\u5668",
|
|
2203
2203
|
"guide.title": "\u6D4F\u89C8\u5668",
|
|
@@ -2255,7 +2255,7 @@ var en = {
|
|
|
2255
2255
|
"address.unknown": "The page navigated; this carrier cannot read its new URL."
|
|
2256
2256
|
};
|
|
2257
2257
|
|
|
2258
|
-
//
|
|
2258
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/browser/store.ts
|
|
2259
2259
|
var import_dsh_client_store4 = require("@deepseek-ai/dsh-client-store");
|
|
2260
2260
|
function createBrowserStore() {
|
|
2261
2261
|
return (0, import_dsh_client_store4.defineStore)({
|
|
@@ -2276,7 +2276,7 @@ function createBrowserStore() {
|
|
|
2276
2276
|
});
|
|
2277
2277
|
}
|
|
2278
2278
|
|
|
2279
|
-
//
|
|
2279
|
+
// .host-source/packages/client/ui-sidebar-browser/src/client/index.ts
|
|
2280
2280
|
var inject = ["slots", "locale", "sidebarRight", "sidebarRightTabs"];
|
|
2281
2281
|
function apply(ctx) {
|
|
2282
2282
|
ctx.effect(cssDispose);
|