@spzxg/cli-ui 0.6.5 → 0.6.6

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 (36) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +33 -13
  3. package/dist/cli-ui-embed-BAqonuoD.js +45952 -0
  4. package/dist/{cli-ui-index-D4qfPHMd.js → cli-ui-index-b8wF7wrN.js} +2 -2
  5. package/dist/{cli-ui-jszip.min-DpEl0G1z.js → cli-ui-jszip.min-B0uLrCHg.js} +2 -2
  6. package/dist/{cli-ui-jszip.min-DC9898pC.js → cli-ui-jszip.min-ggP8OokP.js} +1 -1
  7. package/dist/{cli-ui-xlsx-zs7oEtPj.js → cli-ui-xlsx-DEDdHrJJ.js} +1 -1
  8. package/dist/cli-ui.css +1 -1
  9. package/dist/cli-ui.js +1 -1
  10. package/package.json +9 -8
  11. package/src/board/BrowserPane.tsx +198 -53
  12. package/src/board/FileViewer.tsx +22 -9
  13. package/src/board/fileWatch.ts +9 -3
  14. package/src/board/frameQuote.ts +2 -2
  15. package/src/board/textLoad.ts +7 -5
  16. package/src/board/workspace.ts +15 -5
  17. package/src/chat/CliChat.tsx +21 -11
  18. package/src/chat/Composer.tsx +4 -2
  19. package/src/core/blocks.ts +15 -4
  20. package/src/core/client.ts +96 -14
  21. package/src/core/conversation.ts +1 -0
  22. package/src/core/provider.tsx +7 -0
  23. package/src/core/store.ts +68 -27
  24. package/src/core/types.ts +30 -9
  25. package/src/layout/split.ts +67 -30
  26. package/src/msglist/CliMsgList.tsx +9 -3
  27. package/src/operator/node/Transcript.tsx +7 -2
  28. package/src/operator/node/boardBackend.ts +6 -4
  29. package/src/operator/node/protocol/types.ts +2 -2
  30. package/src/operator/node/useTaskStream.ts +5 -4
  31. package/src/operator.base.css +8 -0
  32. package/src/operator.css +8 -0
  33. package/src/styles.css +29 -1
  34. package/src/ui/Popover.tsx +10 -5
  35. package/src/ui/Transcript.tsx +7 -2
  36. package/dist/cli-ui-embed-BmLN2Jjg.js +0 -43290
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.6.6 — 本地候选,2026-11-05
4
+
5
+ - 唯一源码归入 `cli-task-center/packages/cli-ui`,节点与中枢在同仓库维护,兼容路径只保留软链接与转发。
6
+ - 手机低高度布局保持输入框与发送操作可达,转录溢出不遮挡引用操作;触摸控件、预览安全区和缩放/平移后的菜单边界适配。
7
+ - 分栏从手机切回桌面时重新计算百分比和最小宽度,保留用户拖动偏好与回调契约,正确分配隐藏/收起栏的空间。
8
+ - 并发渲染中的聊天操作绑定已提交会话;附件解析可取消,中文输入法组合期间不误发。
9
+ - 手机浏览器滑动不唤起键盘;点击先定位再输入。触摸选区可引用,预览读取真正响应取消,下载失败保留有效预览。
10
+ - 业务回调逐监听器隔离数据,连接释放可重入且幂等;切任务后旧传输回调与迟到读取不能污染新工作区。
11
+ - 文档附件读取前限制 10 MiB,提取内容超过 200000 字符明确拒绝;YAML 保留完整正文,不静默截断。
12
+ - 组件开发工具升级到修复版本,独立安装、完整回归与发布构建在唯一目录验证。
13
+
14
+ - 补齐 Ego/YAML 创建配置与 Provider 异步加载,支持 YAML 文档附件并保留原文;执行手册通过 browserPlaybook/browserPacing 显式登记。
15
+ - 停止后撤销未消费输入的自动续跑;保密值保留前后空格、拒绝超长值,输入提交失败可重试;多来源人工等待采用服务端汇总,兼容旧节点事件。
16
+
17
+ - 窄聊天栏按容器宽度换行标题操作区,避免桌面分栏和手机端导出/状态控件被挤出边界。
18
+ - 浏览器按任务展示多个页面,接管后可切换;页面与输入绑定 targetId/targetEpoch,切页和断线清理旧输入、画面、弹窗及复制来源。旧节点保持单页兼容。
19
+ - 节点看板输入额外校验任务与 viewer 的归属,避免向另一任务的连接发送操作。
20
+ - 修复异步新建/续派响应抢回已切换任务,以及旧任务操作错误污染当前聊天;共享 store 与受控选择均保持用户当前选择。
21
+ - 列表和聊天接受服务端结构化 `awaiting_input: true | false | null`,区分运行中等待人工、明确解除和未知状态。
22
+ - 默认中枢适配器接入原生文件事件;服务明确不支持时回退可见文件轮询,鉴权或任务不存在错误不伪装成降级成功。
23
+ - 浏览器多页协议需要同步更新节点及中枢;原生文件事件需要中枢新增代理。单独更新 npm 包不会升级生产服务。
24
+
25
+
3
26
  ## 0.6.5 — 2026-11-05
4
27
 
5
28
  - 文件预览按后端、任务和路径隔离,切换不沿用旧正文、选区或短期链接。
package/README.md CHANGED
@@ -75,6 +75,23 @@ location /api/center/ {
75
75
  - **组件自己建**:`<CliChat jobId={null} newConversation={{ title, businessId }} />`,建好后通过 `job_change` 事件把 job_id 交给页面。
76
76
  - **业务后端建**(要带 callback 时):后端调 `POST /api/jobs`,前端只传 `jobId`,这样 callback 的密钥留在服务端。
77
77
 
78
+ ## 启用 Ego 与传递 YAML
79
+
80
+ 新建对话时显式配置 `browser: true`。`browserPlaybook` 是 YAML 正文,`browserPacing` 是节点每次浏览器操作前的随机等待范围:
81
+
82
+ ```tsx
83
+ const yaml = await selectedFile.text(); // 业务选择的 .yaml/.yml 文件,不传文件名或 URL
84
+ <CliChat jobId={null} newConversation={{
85
+ browser: true,
86
+ browserPlaybook: yaml,
87
+ browserPacing: { min_seconds: 1, max_seconds: 2 },
88
+ }} />
89
+ ```
90
+
91
+ 默认适配器把它们映射为创建接口 `tasks[0].browser_playbook` / `browser_pacing`;YAML 校验由任务中心和节点执行,格式不合法或缺少 `browser:true` 会显示错误。React、`CliUI.mountChat` 与 Web Component 的 `new-conversation` JSON 使用相同字段。Provider 的 `newConversation` 默认项也可在文件读取完成后更新,保持原有连接和当前选择。通过同一 Job 的“新对话”入口创建时,手册与间隔沿用首对话;已创建对话的普通消息不支持覆盖这些设置。
92
+
93
+ 加号也接受 `.yaml/.yml` 作为文本附件,保留缩进、空行和结尾换行。附件用于交给 AI 阅读,不会自动启用 Ego 或替换已登记的执行手册。浏览器密码、验证码等用户输入仍走输入卡片/浏览器接管流程。
94
+
78
95
  ## 组合使用(列表 + 对话 + 看板联动)
79
96
 
80
97
  放进同一个 `CliCenterProvider`(Web Component 写同一个 `group`),三个组件互相通信、切换时一起变:列表点哪个对话,对话和看板就切到哪个;对话里新建 / 接续出的新对话,列表跟着加上并选中、看板跟过去;对话里点文件在看板里打开。
@@ -234,18 +251,19 @@ Agent 回复里指向本地文件的链接(`report.md`、`src/a.ts:12`、`file
234
251
 
235
252
  ## 开发
236
253
 
237
- 源码在 **operator-oss/packages/cli-ui**(这里)。三个工程的关系:
254
+ 所有源码统一在 **`/Users/spzhong/cli-task-center`**,后续只在这里维护:
238
255
 
239
- | 工程 | 放什么 | 和组件的关系 |
240
- | --- | --- | --- |
241
- | `operator-oss` | 执行节点(Operator)+ **组件源码** `packages/cli-ui` | 改组件都在这里改;界面、交互和共享样式均在组件包维护;当前工程通过本地包依赖使用组件 |
242
- | `clawbizx` | 业务协同工程,统一发布 `@spzxg/*` 包 | `packages/cli-ui` 是指向 `../../operator-oss/packages/cli-ui` 的链接,`scripts/publish-shared-packages.sh` 从这里发布到 npm |
243
- | `cli-task-center` | 中枢(组件的数据都来自它) | 组件的使用文档在中枢 API 文档的「前端组件」页签(`backend/public/api.html`) |
256
+ | 目录 | 维护内容 |
257
+ | --- | --- |
258
+ | `packages/cli-ui` | 三组件、完整工作区界面、共享状态和适配;唯一组件实现 |
259
+ | `operator` | 配套执行节点、API、runner、浏览器与宿主;`packages/cli-ui` 仅是根组件的兼容软链接 |
260
+ | `backend` | 中枢调度、鉴权、代理、业务回调与 `public/api.html` 接入文档 |
261
+ | `examples/production-workbench` | 消费实际分发包的薄宿主与生产接口联调示例 |
244
262
 
245
- 两个仓库要并排放在同一个目录下(`~/operator-oss`、`~/clawbizx`),链接才有效。组件可独立安装;Operator 使用本地 `file:packages/cli-ui` 依赖,React 使用宿主的 peer dependency:
263
+ 不再要求旧仓库并排放置。Operator 用 `file:../packages/cli-ui` 依赖根组件,先在组件目录运行 `npm ci`,再在 `operator` 运行 `npm ci`;React 保持宿主 peer dependency。旧外部发布脚本和链接已不作为维护入口。
246
264
 
247
265
  ```bash
248
- cd operator-oss/packages/cli-ui
266
+ cd cli-task-center/packages/cli-ui
249
267
  npm install # 第一次
250
268
  npm test # 测试
251
269
  npm run lint # 类型检查
@@ -257,8 +275,8 @@ bash demo/e2e-local.sh stop
257
275
  bash demo/e2e-real.sh # 真实整条链路:本地 center + 源码跑的真实节点 + 本机 ego lite(看板浏览器、故障演练;不跑智能体)
258
276
  bash demo/e2e-real.sh stop
259
277
 
260
- # 发布(在 clawbizx 里)
261
- cd clawbizx && bash scripts/publish-shared-packages.sh
278
+ # 发布前打本地候选(在 packages/cli-ui 中;npm 发布由维护者执行)
279
+ npm pack
262
280
  ```
263
281
 
264
282
  演示使用 `demo/mock-center.mjs` 的内存数据。Operator 的 Next 构建和 Docker 镜像现已包含组件包;不要恢复旧的 packages 全目录排除规则。
@@ -290,7 +308,7 @@ export default function App() { return <OperatorWorkspace />; }
290
308
 
291
309
  `src/operator.base.css` 是共享样式源,`src/operator.css` 是 `css:sync` 的生成结果;根工程 `app/globals.css` 只导入包的样式。迁移与备份清单见仓库的 `docs/CLI_UI_MERGE.md`。
292
310
 
293
- 当前 npm 的 `0.6.2` 已发布,不能覆盖重发。本地此次版本为 `0.6.5`,需要通过组件测试、嵌入构建、真实工程构建和浏览器回归,再发布新的补丁版本;不要运行会连带发布其他共享包的批量脚本。
311
+ npm 已于 2026-11-05 核验发布 `0.6.5`,不能覆盖重发。本地此次候选版本为 `0.6.6`,需要通过组件测试、嵌入构建、真实工程构建和浏览器回归,再发布新的补丁版本;不要运行会连带发布其他共享包的批量脚本。
294
312
 
295
313
 
296
314
  ### 文件、对话与浏览器看板联动
@@ -369,7 +387,9 @@ Web Component 发出 `cli-files-change`、`cli-files-watch`、`cli-board-context
369
387
 
370
388
  事件含 `jobId`、`changes[{kind,path,file?,previous?}]`、`revision?`、`mode`、`coverage`、`complete`;创建/修改/删除分别为 created/modified/deleted,初始快照不冒充全部新建。多个组件与业务监听共享连接,最后取消时释放;关闭模块不会关闭会话持有的订阅。
371
389
 
372
- 节点支持实际工作区文件事件(含隐藏业务文件,排除Git/Operator内部状态与symlink),经 `/live` 复用。旧中枢尚无文件事件代理,明确降级为约15秒目录快照比对:`mode=poll, coverage=listed-files, complete=false`,不保证隐藏项/瞬时变化/同metadata改写;完整推送需后端实现可选 `BoardBackend.watchFiles`。原生清单默认上限100000项,不完整/异常会明确报告resync;精准路径事件不受初始清单截断遮蔽。完整协议与业务接入见仓库 `docs/CLI_UI_BOARD_FLOW.md`。
390
+ 节点支持实际工作区文件事件(含隐藏业务文件,排除Git/Operator内部状态与symlink),经 `/live` 复用。默认中枢适配器通过 `GET /api/jobs/:id/files/events?task=...` 接收文件事件,需要中枢和节点同时部署支持此协议的版本。旧中枢缺少路由或服务明确返回 `501 file_watch_unsupported` 时,降级为约15秒目录快照比对:`mode=poll, coverage=listed-files, complete=false`,不保证隐藏项/瞬时变化/同metadata改写;任务不存在、鉴权失败和代理异常不会冒充正常降级。降级在当前订阅期间保持,升级服务后重新挂载页面即可重新探测事件能力。原生清单默认上限100000项,不完整/异常会明确报告resync;精准路径事件不受初始清单截断遮蔽。完整协议与业务接入见仓库 `docs/CLI_UI_BOARD_FLOW.md`。
391
+
392
+ 列表和聊天可消费中枢任务摘要/实时 task 的可选 `awaiting_input`:`true` 表示节点确认需要人工处理(含浏览器验证码和输入卡片),`false` 表示已确认不等待,`null` 或缺省表示没有有效观测。正在执行的回合也可能需要人工处理,此时显示“需要你处理”,不会把任务误标为完成或暂停。中枢升级后从已有节点对账取得此状态;旧中枢仍兼容原有提问状态。新建/接续的迟到响应与旧操作报错不会抢走用户已切换到的任务。
373
393
 
374
394
  ### v0.6.4 接入加固
375
395
 
@@ -377,7 +397,7 @@ Web Component 发出 `cli-files-change`、`cli-files-watch`、`cli-board-context
377
397
 
378
398
  `workspace.readFile()` 对自定义后端也校验实际字节数并及时响应取消,后端仍应正确实现 AbortSignal 以释放内部资源。浏览器重连、接管交还和切换任务不等待或重放旧会话输入。当前看板为只读预览,文件编辑由 AI/服务端执行,再通过事件刷新和交付给业务方。
379
399
 
380
- 本地版本 `0.6.5`,更新记录见随包 `CHANGELOG.md`。发布验收记录见仓库 `docs/CLI_UI_RELEASE_0.6.5.md`;本地打包不等于 npm 已发布。
400
+ 本地候选版本 `0.6.6`,更新记录见随包 `CHANGELOG.md`。本轮验收记录见仓库 `docs/CLI_UI_UNIFIED_CANDIDATE_2026-11-05.md`;本地打包不等于 npm 或生产服务已更新。
381
401
 
382
402
  ### v0.6.5 文件和业务交付加固
383
403