@spzxg/cli-ui 0.6.0 → 0.6.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/README.md +17 -5
- package/dist/{cli-ui-embed-CXdmrwo1.js → cli-ui-embed-6IJ_jRVh.js} +11479 -11152
- package/dist/cli-ui-index-BY5i3wId.js +11209 -0
- package/dist/cli-ui-jszip.min-BZsUwI-s.js +2324 -0
- package/dist/cli-ui-jszip.min-m01fexHW.js +26 -0
- package/dist/cli-ui-xlsx-CpWicJLT.js +93 -0
- package/dist/cli-ui.css +1 -1
- package/dist/cli-ui.js +1 -1
- package/package.json +2 -1
- package/src/board/CliBoard.tsx +2 -2
- package/src/board/FileViewer.tsx +168 -35
- package/src/board/fileKind.ts +31 -0
- package/src/board/frameQuote.ts +50 -0
- package/src/board/textLoad.ts +99 -0
- package/src/chat/CliChat.tsx +56 -33
- package/src/chat/Composer.tsx +36 -25
- package/src/core/blocks.ts +50 -11
- package/src/core/client.ts +55 -20
- package/src/core/config.ts +26 -17
- package/src/core/conversation.ts +1 -1
- package/src/core/xlsx.ts +142 -0
- package/src/styles.css +31 -0
- package/src/ui/TextBlock.tsx +1 -1
- package/src/ui/Transcript.tsx +10 -5
- package/src/ui/icons.tsx +1 -0
- package/dist/cli-ui-index-BZppwn-v.js +0 -13528
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ import "@spzxg/cli-ui/styles.css";
|
|
|
18
18
|
|
|
19
19
|
<CliChat jobId="job_xxx" /> // 打开已有对话(对话任务的第一个对话)
|
|
20
20
|
<CliChat jobId="job_xxx" taskId="task_yyy" /> // 对话任务里的某个对话;taskId="new" 新开一个
|
|
21
|
-
<CliChat jobId="job_batch" taskId="task_zzz" /> //
|
|
21
|
+
<CliChat jobId="job_batch" taskId="task_zzz" /> // 一次性子任务:运行中可排队输入,支持暂停 / 继续
|
|
22
22
|
<CliChat jobId={null} newConversation={{ title: "周报", businessId: "biz-1" }} /> // 新对话
|
|
23
23
|
<CliMsgList jobIds={["job_xxx"]} onSelect={setJobId} /> // 列表
|
|
24
24
|
```
|
|
@@ -135,12 +135,16 @@ location /api/center/ {
|
|
|
135
135
|
- 放大:文件预览、浏览器画面都能放大到整页(Esc 还原);接管浏览器时自动放大。图片可缩放(Ctrl / ⌘ + 滚轮)。
|
|
136
136
|
- 引用到对话:文件预览、浏览器的「引用到对话」把它带进下一条消息(`store.addRef`),对话输入框上方显示、可去掉;发出时合成「看板上下文」附件。自定义页签(`extraTabs`)的 `quote` 同理——终端之类的交互以后都走这条路进对话。
|
|
137
137
|
- 多个文件页签:点开的文件各占一个页签(最多 8 个,再开关掉最早的),可关闭(× 或鼠标中键),按对话记在 sessionStorage,刷新后还在。
|
|
138
|
-
-
|
|
139
|
-
- 正在看:打开着的文件 /
|
|
138
|
+
- 选中引用:在预览里选中文字浮出「引用到对话」(Markdown / 代码 / 文本 / 表格 / HTML / Word 及其源文件;HTML、Word 在沙箱 iframe 里,预览用 srcdoc 插一段选区小脚本报给宿主,页面自己的脚本仍不执行);在浏览器网页里复制(⌘C / Ctrl+C)后提示里也有「引用到对话」。
|
|
139
|
+
- 正在看:打开着的文件 / 浏览器页面缺省随下一条消息带给智能体(换了再带;`autoQuoteOpenFile={false}` 关掉),单独一块「看板正在看」,缺省在输入框上方和对话里都不显示。cli-chat 的 `config.refs` 按种类控制显示:`{ viewing: true }` 显示「正在看」虚线卡片(× 这次不带),`{ selection: false }` 不显示选中引用,`true` / `false` 全部。状态在 `store.getState().viewing`。
|
|
140
140
|
- 浏览器弱网:操作没送达时提示(不自动重发,免得点两次);接管时发了操作 8 秒画面没变化提示并给「重连画面」;按住鼠标切走窗口自动补发松开;地址栏自动补 `https://`。
|
|
141
141
|
- 数据都经中枢:`/api/jobs/:id/board`、`/files`、`/files/raw/<路径>`、`/diff`、`/browser`(+ `events` / `frames` / `input`)。
|
|
142
142
|
- 链路、交互、故障与重试的设计见 [BOARD-DESIGN.md](BOARD-DESIGN.md)。
|
|
143
|
-
- 浏览器里带令牌时(传了 `token` / `headers` / `line`,或代理跨域),图片、PDF、HTML、下载用中枢发的 30 分钟短期链接(令牌在路径里,HTML 的相对资源也能加载,大文件流式下载、不进内存);走同源代理时直接用地址。中枢太旧发不了短期链接时退回先 fetch 成 blob(超过
|
|
143
|
+
- 浏览器里带令牌时(传了 `token` / `headers` / `line`,或代理跨域),图片、PDF、HTML、下载用中枢发的 30 分钟短期链接(令牌在路径里,HTML 的相对资源也能加载,大文件流式下载、不进内存);走同源代理时直接用地址。中枢太旧发不了短期链接时退回先 fetch 成 blob(超过 100 MB 的图片 / PDF 不预览)。
|
|
144
|
+
- 预览能看多大(实测 Chromium):
|
|
145
|
+
- HTML 最大 100 MB 整个读进来、能选中引用(读的时候显示进度;60 MB、60 万行表格的报告约 25 秒显示出来),更大的直接按地址打开(能看,不能选中引用);
|
|
146
|
+
- 文本、代码、日志、CSV、Markdown 一次最多读 32 MB,更大的看开头 / 末尾;文件在变时只取新增的部分(追加 1 行只传几百字节),被改写才整个重读;
|
|
147
|
+
- 大 Markdown 每 128 KB 一段、滚到哪渲染到哪;CSV 表格先画 2000 行、可以再显示;代码 512 KB 以内高亮,更大的按纯文本显示;Word 最大 50 MB。
|
|
144
148
|
|
|
145
149
|
## 对接业务数据
|
|
146
150
|
|
|
@@ -183,6 +187,12 @@ await store.send(jobId, text);
|
|
|
183
187
|
|
|
184
188
|
cli-chat 的顶部栏(面包屑、标题、智能体、用量、模型、状态、结束对话)缺省全部隐藏,需要哪项写哪项。各种状态(未开始、进行中、已完成……)缺省都不显示:要显示打开 chat 的 `header.status`、`transcript.status`,list 的 `card.status`(卡片状态)、`grouped`(按状态分组)。所有配置项和缺省值都在 [`src/core/config.ts`](src/core/config.ts) 里,每一项都有注释。Web Component 上用 `config='{"header":{"title":true}}'`。
|
|
185
189
|
|
|
190
|
+
已随项目上下文发送的初始提示缺省不渲染正文、头像或徽标;需要查看时设置 `transcript.initialPrompt: true`,`initialBadge` 只控制显示后的标记。后续消息不受影响,初始提示仍保留在原始记录和导出内容中。列表顶部手动刷新按钮缺省隐藏,需要时设 `header.refresh: true`,自动更新照常运行。
|
|
191
|
+
|
|
192
|
+
`header.export: true` 在标题栏操作区显示「导出」,点击直接下载 Markdown(初始上下文、消息和工具记录)。导出范围为已加载的记录;还有未加载历史时按钮显示「导出已加载」。输入区把附件、发送和执行控制分开显示。任务运行 / 暂停期间保留可编辑输入框,新消息排队执行;后端不支持发送或连接错误时仍保留输入框和草稿,并提示原因。宿主显式设置 `composer: false` 或 `readOnly` 时隐藏输入框。
|
|
193
|
+
|
|
194
|
+
上传附件(`composer.fileUpload`,缺省开)只收文档:Word(.docx)、Excel(.xlsx / .xlsm)、Markdown、TXT、HTML、CSV / TSV。都在浏览器里转成文字、作为可折叠的附件随消息发出:Excel 每个工作表一段 CSV(日期写成 2026-08-10、百分比写成 0.6%),HTML 保留源码(内嵌的大段 data: 图片换成占位),GBK 导出的 CSV / TXT 不乱码。图片、PDF、压缩包等不收;老版 .doc / .xls 提示另存为 .docx / .xlsx。
|
|
195
|
+
|
|
186
196
|
## 事件
|
|
187
197
|
|
|
188
198
|
都在浏览器里从实时流算出,不需要配 callback:
|
|
@@ -201,7 +211,9 @@ cli-chat 的顶部栏(面包屑、标题、智能体、用量、模型、状
|
|
|
201
211
|
|
|
202
212
|
`<CliChat jobId taskId>` 两个参数,或者把对话键整个交给 `jobId` 都可以。cli-msglist 里开了几个对话的任务按对话展开,卡片上的「+」新开对话;`onSelect(id, { jobId, taskId })` 的 `id` 就是对话键,直接交给 CliChat 即可。指定了对话时,「结束对话」只关这一个(`POST /api/jobs/:id/conversations/:taskId/close`),没指定时结束整个对话任务。工具函数 `convKey` / `parseConvKey` 从包里导出。
|
|
203
213
|
|
|
204
|
-
一次性任务(含续派,`mode` 不是 `conversation`)也能交给 CliChat
|
|
214
|
+
一次性任务(含续派,`mode` 不是 `conversation`)也能交给 CliChat:显示子任务执行过程,运行中允许输入,发送后通过 `continueTask` 排到同一对话后面。`taskId` 指定看哪个子任务,不给看最近派发的那个(续派开出新的子任务后自动跟过去)。转录里中枢的派发标记行(`[CENTER-ATTEMPT…]`)去掉,完成核对(`[CENTER-CONFIRM]`)合成一行说明。需要中枢实时流支持 `?task=` 和续派接口。
|
|
215
|
+
|
|
216
|
+
`composer.stop` 缺省开启执行控制:普通对话仍停止当前轮次;一次性子任务通过 `pauseTask` / `resumeTask` 显示「暂停 / 继续」,只操作当前对话执行链中的子任务。暂停会中止当前执行,继续会重新派发该子任务,排队消息随后执行;不是进程原地冻结。自定义后端没有提供这两个可选方法时不显示暂停 / 继续按钮。
|
|
205
217
|
|
|
206
218
|
例外是对话式续派的子任务(续派时 `mode: "conversation"`):用 `taskId` 打开它就是一个能一直聊下去的对话——有输入框,不显示「子任务已完成」之类的状态;每发一条 = 续派一条 `continue_from` 这个子任务的子任务(接在同一个 Agent 会话里),对话键不变。需要 0.4.0 + 同版本中枢。
|
|
207
219
|
- Web Component 上监听 `cli-turn-end` / `cli-conversation-end` / `cli-event` 事件。
|