@coboot/headless 0.2.2-rc.6 → 0.2.2-rc.8

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/README.md CHANGED
@@ -6,10 +6,30 @@ Headless 业务运行时要求 Node.js 20+;当入口检测到 Node.js 18/19
6
6
  首次启动只需一次性设备 token:
7
7
 
8
8
  ```bash
9
- npx -y @coboot/headless@0.2.2-rc.6 '<device-token>'
9
+ npx -y @coboot/headless@0.2.2-rc.8 '<device-token>'
10
10
  ```
11
11
 
12
- 命令会把运行时安装到 `/data/coboot/.siboot`,在客户端鉴权和运行时初始化完成后启动
12
+ Siboot 和 Coboot 都继承入口进程的运行身份:入口是 root 就以 root 运行,入口是普通用户就以该用户运行。
13
+ 不会根据 `ANY_USERNAME`、`COBOOT_RUN_UID`、`HEADLESS_RUN_AS_USER` 或 sudo 来源自动切换身份、
14
+ 改写 HOME、复制到普通用户缓存或移交数据目录属主。
15
+ 后续 start/restart/update/status/stop 应保持相同运行用户和 XDG/HOME;切换账号不会自动
16
+ 查找另一用户的安装或凭据。
17
+
18
+
19
+
20
+ 新用户默认数据目录为 `${XDG_DATA_HOME:-$HOME/.local/share}/coboot-headless`,由当前普通用户创建,无需 sudo,不要求机器存在 `/data`。
21
+ 以 root 启动时仍以 root 创建和使用数据目录,默认使用该入口的 XDG/HOME(通常为
22
+ `/root/.local/share/coboot-headless`);不查找登录用户、不自动 chown 已有目录。
23
+ 需要普通用户运行时,应先切换到该用户再执行命令,不要使用 `sudo npx`。
24
+ 日常安装、设备注册、启动、管理和更新都不需要 sudo;Node LTS 引导、包内 Linux sandbox 和
25
+ 浏览器下载使用用户可写目录,不安装全局 npm 包、不修改系统配置。
26
+ 普通命令与 sudo 命令不要混用:sudo 保持 root,HOME/XDG 由 sudo 的环境策略决定,可能操作
27
+ 另一份安装或留下 root 属主的文件。只有补浏览器系统动态库等管理员操作时才考虑 sudo。
28
+ 凭证、程序版本和日志位于数据根下的 `.coboot/`;不检测、迁移或兼容旧目录。
29
+ 目录不可写时明确失败;请指定可写的应用数据目录,不要将项目目录用作应用数据目录。
30
+
31
+
32
+ 命令会把运行时安装到 `${XDG_DATA_HOME:-$HOME/.local/share}/coboot-headless` 下的私有运行目录,在客户端鉴权和运行时初始化完成后启动
13
33
  detached daemon 并退出。不需要设置 `BACKEND_URL`、`CLIENT_UID`。终端、文件等非浏览器能力不要求
14
34
  目标机安装 Chromium。
15
35
 
@@ -18,10 +38,10 @@ detached daemon 并退出。不需要设置 `BACKEND_URL`、`CLIENT_UID`。终
18
38
  并重新启动旧 client,不会让两个 Headless 进程争抢同一台物理机的 Driver 锁。
19
39
 
20
40
  ```bash
21
- npx -y @coboot/headless@0.2.2-rc.6 status
22
- npx -y @coboot/headless@0.2.2-rc.6 logs
23
- npx -y @coboot/headless@0.2.2-rc.6 restart
24
- npx -y @coboot/headless@0.2.2-rc.6 stop
41
+ npx -y @coboot/headless@0.2.2-rc.8 status
42
+ npx -y @coboot/headless@0.2.2-rc.8 logs
43
+ npx -y @coboot/headless@0.2.2-rc.8 restart
44
+ npx -y @coboot/headless@0.2.2-rc.8 stop
25
45
  ```
26
46
 
27
47
  更新到 npm `latest` 并重启:
@@ -33,8 +53,28 @@ npx -y @coboot/headless@latest update
33
53
  `update` 会先完成 Node.js 版本、设备凭证和新包完整性预检,再停止旧进程并切换版本;新版本启动失败时
34
54
  会自动恢复并重启旧版本。`restart` 只重启已经安装的版本,不再隐式替换运行时。
35
55
 
36
- 默认数据根目录可通过 `SIBOOT_DATA_ROOT` 修改。该设置不会写入配置,首次安装以及后续的
37
- `status`、`logs`、`restart`、`update`、`stop` 都必须传入同一个值,否则 CLI 会操作 edition 默认目录。
56
+ 一般不需要修改数据目录。确需放到其他位置时,用 `COBOOT_DATA_ROOT` 指定一个当前用户可写的绝对路径。
57
+
58
+
59
+
60
+ Coboot 将安装位置写入用户默认应用目录的 `installation.json`(不含凭据),后续 `status`、`logs`、
61
+ `start`、`restart`、`update`、`stop` 无需重复传变量。
62
+ 首次安装指定 `COBOOT_DATA_ROOT=/自定义应用目录` 即可保存该位置。
63
+ 记录损坏时需要先修复记录;已经登记的安装不允许用一个参数静默切换到另一数据根。
64
+ 停止和查看状态不写记录,项目目录已删除时仍可停止进程。
65
+
66
+ Agent 默认工作目录可在首次绑定或重启时单独指定,必须是已存在的绝对目录:
67
+
68
+ ```bash
69
+ npx -y @coboot/headless@0.2.2-rc.8 '<device-token>' --workspace-dir /home/demo/project
70
+ npx -y @coboot/headless@0.2.2-rc.8 restart --workspace-dir /home/demo/another-project
71
+ ```
72
+
73
+ 该设置会保存;任务明确选中的本机目录优先于安装默认值。Bash cwd 和相对文件路径使用同一默认值,
74
+ 仍受既有文件权限与沙箱策略限制。凭据、日志和后台进程 cwd 留在应用目录,不写入项目。
75
+ 显式 `$COBOOT_WORKSPACE` 和托管会话产物目录仍使用原有布局,不被此参数重定位。
76
+ 项目不可访问时启动/更新预检失败,不先停止正在运行的实例。`status` 可查看数据根和默认工作目录。
77
+
38
78
 
39
79
 
40
80
  ## Coboot 浏览器
@@ -45,13 +85,13 @@ Coboot daemon 默认禁用 updater 和浏览器预热,第一次调用 `browser
45
85
 
46
86
  ```bash
47
87
  HEADLESS_BROWSER_EXECUTABLE=/absolute/path/to/chrome \
48
- npx -y @coboot/headless@0.2.2-rc.6 '<device-token>'
88
+ npx -y @coboot/headless@0.2.2-rc.8 '<device-token>'
49
89
  ```
50
90
 
51
91
  需要安装浏览器时,由用户执行:
52
92
 
53
93
  ```bash
54
- npx -y @coboot/headless@0.2.2-rc.6 install-browser
94
+ npx -y @coboot/headless@0.2.2-rc.8 install-browser
55
95
  ```
56
96
 
57
97
  该命令不需要设备 token,也不要求 root。它会先检查现有浏览器并执行启动验证;浏览器已经可用时
@@ -61,9 +101,9 @@ npx -y @coboot/headless@0.2.2-rc.6 install-browser
61
101
  生效。镜像没有可用包管理器、源里没有 Chromium 或机器离线时,自动回退到下面的下载安装。
62
102
  - **非 root**:直接下载安装,不需要 sudo。
63
103
 
64
- 下载安装用包内 `playwright-core` 把 Chromium 取到 `/data/coboot/.siboot/browsers`,需要访问
65
- `cdn.playwright.dev`。这个目录不是用户 HOME,daemon 启动时会指向同一个路径,因此换一个账号跑
66
- daemon 也不会失配,也不需要设置任何环境变量。用 `PLAYWRIGHT_BROWSERS_PATH` 可以改写该路径,
104
+ 下载安装用包内 `playwright-core` 把 Chromium 取到 `${XDG_DATA_HOME:-$HOME/.local/share}/coboot-headless` 下的私有浏览器目录,需要访问
105
+ `cdn.playwright.dev`。浏览器缓存不直接使用 `~/.cache`,同一安装的 daemon 会指向同一个路径,
106
+ 无需另设环境变量;不同账号不会自动共享安装记录或凭据。用 `PLAYWRIGHT_BROWSERS_PATH` 可以改写该路径,
67
107
  但改写后启动或重启 daemon 必须带上同一个值。
68
108
 
69
109
  两条路径最后都会用包内 `playwright-core` 按 daemon 的真实启动参数做一次启动检查,因此可以安全
@@ -89,7 +129,7 @@ dnf/yum 先试仓库中的 `chromium`,x86_64 回退到官方 RPM 并关闭 wea
89
129
  自动化或排障需要显式表达重新注册时,也可以使用:
90
130
 
91
131
  ```bash
92
- npx -y @coboot/headless@0.2.2-rc.6 --force-enroll '<device-token>'
132
+ npx -y @coboot/headless@0.2.2-rc.8 --force-enroll '<device-token>'
93
133
  ```
94
134
 
95
135
  当本地已经存在设备身份时,该命令与再次传入 positional token 使用同一套事务式替换流程。
@@ -107,8 +147,8 @@ session 级 `COBOOT_WORKSPACE` 时,将 `COBOOT_WORKSPACE/.home` 作为 Bash
107
147
  session workspace,则删除继承的 `HOME`。两种情况都会清理 `BASH_ENV` / `ENV`,不会读取宿主
108
148
  账号的 shell 启动脚本。
109
149
 
110
- Coboot Linux Headless 会把整个 `SIBOOT_DATA_ROOT`(默认 `/data/coboot`)作为可写根,其中
111
- `.siboot` 运行状态目录仍由 hard deny 遮蔽。这同时允许访问同机其他 team/agent/session 的数据,
150
+ Coboot Linux Headless 会把整个 `COBOOT_DATA_ROOT`(默认 `${XDG_DATA_HOME:-$HOME/.local/share}/coboot-headless`)作为可写根,其中
151
+ 私有运行目录仍由 hard deny 遮蔽。这同时允许访问同机其他 team/agent/session 的数据,
112
152
  只适用于部署侧接受该权限边界的独占目标机;结构化文件工具仍继续执行自身的 ACL。
113
153
 
114
154
 
@@ -117,7 +157,7 @@ Coboot Linux Headless 会把整个 `SIBOOT_DATA_ROOT`(默认 `/data/coboot`)
117
157
  - Edition:`coboot`,在构建期写入,启动时不能切换。
118
158
  - 默认 HTTP 服务:`https://www.coboot.com`。
119
159
  - 默认 WebSocket 服务:`wss://www.coboot.com/wsschat`。
120
- - 默认数据根目录:`/data/coboot`。
160
+ - 默认数据根目录:`${XDG_DATA_HOME:-$HOME/.local/share}/coboot-headless`。
121
161
 
122
162
  npm CLI 默认清理父进程遗留的 endpoint 环境变量。仅本地联调或自建环境可显式开启覆盖,且
123
163
  HTTP 与 WebSocket 必须同域并与设备 token 匹配:
@@ -126,7 +166,7 @@ HTTP 与 WebSocket 必须同域并与设备 token 匹配:
126
166
  HEADLESS_ALLOW_ENDPOINT_OVERRIDE=1 \
127
167
  BACKEND_URL=https://example.com \
128
168
  WS_URL=wss://example.com/wsschat \
129
- npx -y @coboot/headless@0.2.2-rc.6 '<device-token>'
169
+ npx -y @coboot/headless@0.2.2-rc.8 '<device-token>'
130
170
  ```
131
171
 
132
172
  WebSocket 覆盖变量名是 `WS_URL`,不是 `WSS_URL`。
@@ -140,7 +180,7 @@ endpoint 覆盖同样不会写入配置;后续执行 `restart` 时必须再次
140
180
  CU_EDITION=coboot \
141
181
  PKG_NAME=@coboot/headless \
142
182
  PKG_BIN_NAME=coboot-headless \
143
- PKG_VERSION=0.2.2-rc.6 \
183
+ PKG_VERSION=0.2.2-rc.8 \
144
184
  pnpm build:headless:npm
145
185
  ```
146
186
 
@@ -148,8 +188,8 @@ pnpm build:headless:npm
148
188
 
149
189
  ```bash
150
190
  npm pack --dry-run --json ./dist-headless
151
- tar -xOf dist-headless/coboot-headless-0.2.2-rc.6.tgz package/package.json
152
- sha256sum dist-headless/coboot-headless-0.2.2-rc.6.tgz
191
+ tar -xOf dist-headless/coboot-headless-0.2.2-rc.8.tgz package/package.json
192
+ sha256sum dist-headless/coboot-headless-0.2.2-rc.8.tgz
153
193
  ```
154
194
 
155
195