wezard 2.1.4 → 2.2.1

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 (54) hide show
  1. package/README.md +69 -24
  2. package/dist/daemon/cc-session.js +14 -1
  3. package/dist/daemon/cc-session.js.map +1 -1
  4. package/dist/daemon/danger.js +48 -7
  5. package/dist/daemon/danger.js.map +1 -1
  6. package/dist/daemon/detail.js +28 -7
  7. package/dist/daemon/detail.js.map +1 -1
  8. package/dist/daemon/handoff.js +132 -0
  9. package/dist/daemon/handoff.js.map +1 -0
  10. package/dist/daemon/inbound.js +2 -1
  11. package/dist/daemon/inbound.js.map +1 -1
  12. package/dist/daemon/index.js +191 -99
  13. package/dist/daemon/index.js.map +1 -1
  14. package/dist/daemon/mirror-bridge.js +136 -12
  15. package/dist/daemon/mirror-bridge.js.map +1 -1
  16. package/dist/daemon/peers.js +114 -34
  17. package/dist/daemon/peers.js.map +1 -1
  18. package/dist/daemon/receipts.js +190 -0
  19. package/dist/daemon/receipts.js.map +1 -0
  20. package/dist/daemon/route.js +92 -0
  21. package/dist/daemon/route.js.map +1 -0
  22. package/dist/daemon/wizard.js +38 -19
  23. package/dist/daemon/wizard.js.map +1 -1
  24. package/dist/mcp/server.js +60 -25
  25. package/dist/mcp/server.js.map +1 -1
  26. package/dist/shared/chat-http.js +101 -21
  27. package/dist/shared/chat-http.js.map +1 -1
  28. package/dist/shared/chat-render.js +0 -1
  29. package/dist/shared/chat-render.js.map +1 -1
  30. package/dist/shared/chat-view.js +2 -9
  31. package/dist/shared/chat-view.js.map +1 -1
  32. package/dist/shared/config.js +6 -0
  33. package/dist/shared/config.js.map +1 -1
  34. package/dist/shared/detail-render.js +3 -2
  35. package/dist/shared/detail-render.js.map +1 -1
  36. package/dist/shared/detail-store.js +1 -1
  37. package/dist/shared/detail-store.js.map +1 -1
  38. package/dist/shared/keepalive.js +46 -0
  39. package/dist/shared/keepalive.js.map +1 -0
  40. package/dist/shared/reminder.js +13 -0
  41. package/dist/shared/reminder.js.map +1 -1
  42. package/dist/shared/role-render.js +2 -1
  43. package/dist/shared/role-render.js.map +1 -1
  44. package/dist/shared/role-search.js +100 -0
  45. package/dist/shared/role-search.js.map +1 -0
  46. package/dist/shared/role-view.js +85 -26
  47. package/dist/shared/role-view.js.map +1 -1
  48. package/dist/shared/world.js +38 -8
  49. package/dist/shared/world.js.map +1 -1
  50. package/dist/svr/index.js +1 -1
  51. package/dist/svr/index.js.map +1 -1
  52. package/package.json +1 -1
  53. package/web/chat.css +415 -333
  54. package/web/chat.js +899 -741
package/README.md CHANGED
@@ -4,7 +4,10 @@
4
4
 
5
5
  <h1>wezard</h1>
6
6
 
7
- <p><b>把 AI 编程 Agent 装进企业微信。</b><br/>在地铁上、被窝里、开会摸鱼时,照样能跟你电脑上的 Agent 干活。</p>
7
+ <p><b>在企业微信里远程操控本机的 AI 编程 Agent,并让多个 Agent 互相感知、协同干活。</b></p>
8
+
9
+ <p>地铁上发一句话,电脑上的 Agent 就开始干:每次工具调用推一张审批卡等你点,回复、工具调用、思考过程实时回到聊天,回到电脑前 <code>tmux attach</code> 接着干。<br/>
10
+ 一个聊天里住着多个 <b>wizard</b>——全局唯一的 <code>.name</code>、各自的职责与记忆,彼此看得见也叫得动。没点名的话落到管家,由它判断转给对口的那个还是新起一个;派出去的活不必守着等,对方干完结论自动回到发话方。</p>
8
11
 
9
12
  <p>
10
13
  <a href="https://www.npmjs.com/package/wezard"><img src="https://img.shields.io/npm/v/wezard?style=flat-square&color=07C160&label=npm" alt="npm version" /></a>
@@ -19,24 +22,23 @@
19
22
 
20
23
  ![demo](images/demo.png)
21
24
 
22
- | 功能<img width="160"> | 说明 |
23
- | --- | --- |
24
- | 🛎 **远程审批** | Agent 要跑 `Bash` / `Edit` 时,审批卡片直推 IM:`✅` 放行一次、`⏱` 一段时间内自动放行、`✅总是` 记成规则、`❌` 拒绝。危险操作(`rm` / 强推 / `DROP` / 敏感路径)每次都要单独确认。 |
25
- | 📋 **计划审批** | Agent 做完计划时,摘要和审批卡推到 IM:`✅同意` 开始执行,`✏️继续改` 接着完善。Agent 提的选择题也会变成投票卡。 |
26
- | 🪞 **会话镜像** | 电脑上 Agent 的回复、工具调用、思考过程实时同步到企业微信;IM 里发的消息原样落进 CLI 输入框。回到电脑前 `tmux attach -t wezard` 接着干,对话一字不少。 |
27
- | 🖼 **图片直贴** | 在企业微信里发图,Agent 直接当贴图处理。 |
28
- | 🔍 **详情页** | 每次工具调用 / 审批请求都有详情页,IM 里点链接看完整 input / result / git diff。 |
29
- | 📡 **主动汇报** | Agent 可以主动给你发消息、发卡片、向你提问。 |
30
- | 📄 **文档读写** | Agent 直接新建企业微信在线文档、写 Markdown、读文档链接、操作智能表格。 |
31
- | 🗂 **多会话** | 列出本机所有在跑的会话、切换 IM 镜像到哪一个、在指定目录新开会话。每个会话有一枚固定的 emoji,审批卡和回复一眼区分。 |
32
- | 🧙 **多 wizard 协同** | 每个会话是一个有名字的 wizard,写作 `.name`,在任何群里都叫得到;有职责、有记忆,能分身、能互相派活,把一件大活拆成几路并行做完。 |
33
- | ⏰ **定时任务** | 「每个工作日晚上 9:30 跑一遍回归」——到点自动起一个 wizard 去干,结果发回群里。 |
34
- | 🔄 **重启即续** | 电脑重启 / tmux 关了 / daemon 崩了都不掉档:下一条 IM 消息自动把会话拉起来,历史完整继承。 |
25
+ 1. 🪞 **远程控制本机 Agent CLI** — 企业微信里发的消息原样落进 CLI 输入框;Agent 的回复、工具调用、思考过程实时同步回聊天。回到电脑前 `tmux attach -t wezard` 接着干,对话一字不少。支持 `claude` / `claude-internal` / `codebuddy`。
26
+ 2. 🛎 **远程审批** — Agent 要跑 `Bash` / `Edit` 时审批卡直推 IM:`✅` 放行一次、`⏱` 一段时间内自动放行、`✅总是` 记成规则、`❌` 拒绝。危险操作(`rm` / 强推 / `DROP` / 敏感路径)每次都要单独确认;做完计划推计划卡(`✅同意` / `✏️继续改`),Agent 提的选择题变成投票卡。
27
+ 3. 🧙 **多 wizard** — 每个会话是一个有名字的 wizard,写作 `.name`,全局唯一,在任何群里都叫得到;有职责、有记忆,看得见彼此在干什么。克隆一个分身让它继承当前上下文,或者从白板新起一个。
28
+ 4. 🎩 **管家分派** — 没点名的话落到聊天的默认 wizard:一两句能答完的它自己答,其余判断转给对口的那个还是新起一个。转交是公开的,被转到的那个直接在群里回你。
29
+ 5. 📮 **派完就放手** — wizard 之间派活不必守着等:对方那一轮一结束,守护进程把它的结论作为新的一轮自动送回发话方。
30
+ 6. 🧠 **三层记忆** — 自己的、本群共享的、本工作区共享的。「这个仓库 reload 要先 build」这类约定写一次,之后每个新 wizard 开局就知道;共享的两层由一个定时整理者去重合并。
31
+ 7. 🪪 **rolepage** — 每个 wizard 视角下的 IM:`⌘K` 搜遍 role / 会话 / 消息,关系图看清谁和谁对过话,用量条一眼看出模型、轮次、上下文与 token 花在哪。
32
+ 8. ⏰ **定时任务** — 「每个工作日晚上 9:30 跑一遍回归」,到点自动起一个 wizard 去干,结果发回群里。任务本身是一个可以直接编辑的 `.mjs` 文件,存盘即生效。
33
+ 9. 🔍 **详情页与主动汇报** — 每次工具调用、审批请求都有详情页,IM 里点链接看完整 input / result / git diff;Agent 也能主动把一段话贴进任意一个群。
34
+ 10. 📄 **企业微信文档** — 新建在线文档、写 Markdown、读文档链接、操作智能表格。
35
+ 11. 🔄 **重启即续** — 电脑重启 / tmux 关了 / daemon 崩了都不掉档:下一条 IM 消息自动把会话拉起来,历史完整继承。
35
36
 
36
37
  <details>
37
38
  <summary><b>目录</b></summary>
38
39
 
39
40
  - [快速开始](#快速开始)
41
+ - [双向镜像](#双向镜像)
40
42
  - [多 wizard 协同](#多-wizard-协同)
41
43
  - [任务编排](#任务编排)
42
44
  - [rolepage](#rolepage)
@@ -87,11 +89,23 @@ wezard init
87
89
 
88
90
  ---
89
91
 
92
+ ## 双向镜像
93
+
94
+ 左边是 tmux 里的 CLI,右边是企业微信里的同一段对话。
95
+
96
+ ![tmux 与企业微信双向镜像](images/mirror.png)
97
+
98
+ - **IM → CLI**:企业微信里发的消息由守护进程 `tmux paste-buffer` 进 CLI 的输入框——这是唯一能让远程消息出现在你本机窗口里的通路,你坐回电脑前看到的,就是它替你敲的那一行。
99
+ - **CLI → IM**:Agent 的回复、工具调用、思考过程实时推回聊天。默认只推**聊天自己发起的那一轮**:你在电脑前敲出来的轮次只记进 [rolepage](#rolepage),不刷群;审批卡、投票卡和 `[mirror]` 通知不受这条限制。
100
+ - **随时接管**:`tmux attach -t wezard` 回到那个 pane 接着干,对话一字不少。
101
+
102
+ ---
103
+
90
104
  ## 多 wizard 协同
91
105
 
92
106
  一个绑定了聊天的会话叫一个 **wizard**:有自己的终端、工作区、名字和职责,知道还有谁在,也叫得动它们。名字**全局唯一**,写作 `.name`——不管它住在哪个群,在任何群里都叫得到。
93
107
 
94
- ![多会话](images/multi-session.png)
108
+ ![多 wizard 协同](images/demo.png)
95
109
 
96
110
  **创建**
97
111
 
@@ -115,6 +129,32 @@ wezard init
115
129
 
116
130
  每条回复都带 `emoji .name` 头(emoji 固定),在群里引用它的气泡就等于跟它说话。句中的 `a.ts`、`.gitignore` 这类不会被当成名字。
117
131
 
132
+ **管家**
133
+
134
+ 每个聊天的默认 wizard 是这个群的**管家**。没点名的话都落到它这儿——它一两句能答完的(问进度、谁在干什么、闲聊)自己答;要读很多代码、改文件、跑很久的活,哪怕它自己做得了也**转出去**:它一忙,这个群里没点名的话就都排在它后面。
135
+
136
+ 转给谁由它判断:上下文里已经看得出该给谁(刚派过同一摊活的、职责对口的)就直接转;拿不准才调一张候选表——谁的职责、最近的话、读过的文件和这件活有交集,在不在同一个工作区,忙不忙,上下文多重。相关且接着用那段上下文划算就转给它;没有对口的,或对口的那个上下文已经太重,就从白板新起一个。
137
+
138
+ **转交是公开的**:群里出现一条 `.管家 → .它` 的气泡,它的回复直接发进这个群。你不用等管家转述,管家也只回一句「已转给 `.它`」。
139
+
140
+ ```mermaid
141
+ flowchart TD
142
+ msg["群里的一条消息"] --> named{"点了 .name ?"}
143
+ named -- "是" --> direct["直达那个 wizard<br/>不经过管家"]
144
+ named -- "否" --> butler["管家 (聊天的默认 wizard)"]
145
+ butler --> small{"一两句能答完 ?"}
146
+ small -- "是" --> self["自己答"]
147
+ small -- "否" --> who{"该给谁 ?"}
148
+ who -- "上下文里看得出" --> pick["选中已有的"]
149
+ who -- "拿不准" --> table["候选表<br/>职责 · 最近的话 · 读过的文件<br/>工作区 · 忙闲 · ctx"]
150
+ table --> judge{"相关, 且接着用<br/>那段上下文划算 ?"}
151
+ judge -- "是" --> pick
152
+ judge -- "否 / 没有候选" --> fresh["白板新起一个"]
153
+ pick --> relay["公开转交<br/>群里一条气泡"]
154
+ fresh --> relay
155
+ relay --> reply["它的回复直接进群"]
156
+ ```
157
+
118
158
  **名字**
119
159
 
120
160
  | wizard | 名字 |
@@ -134,15 +174,16 @@ wezard init
134
174
  | 记住:发版前必须更新 CHANGELOG | 写进它的长期记忆,`/clear` 之后仍在 |
135
175
  | 记到这个群 / 这个仓库的记忆里 | 提交到群或工作区的共享记忆,之后来的 wizard 开局就知道 |
136
176
  | 还有谁在跑 / 谁在弄那个项目 | 列出全部 wizard:名字、职责、忙闲、谁是谁的分身 |
137
- | 让 .fix 看一眼这个报错 | 它去找 `.fix` 派活,等结果回来再答你 |
177
+ | 让 .fix 看一眼这个报错 | 它把活交给 `.fix` 就放手去干别的,`.fix` 的结论自动送回来,它再答你 |
138
178
  | 分个身去把这三个目录都扫一遍 | 分出三个带着当前上下文的分身并行干,干完收掉 |
139
179
  | 切到 /path/to/proj | 换工作区,重开会话 |
140
180
 
141
- - **记忆分三层**:自己的、本群共享的、本工作区共享的。「这个群习惯先出方案再动手」「这个仓库 reload 要先 build」不必每来一个新 wizard 再教一遍。
181
+ - **记忆分三层**:自己的、本群共享的、本工作区共享的。「这个群习惯先出方案再动手」「这个仓库 reload 要先 build」不必每来一个新 wizard 再教一遍。共享的那两层是**提议**——一个定时的整理者去重、改写、合并后才写进去,所以不会立刻生效,也不会被几十个 wizard 越写越长。
142
182
  - **分身继承上下文**:分身开局就带着原 wizard 读过的全部材料,原 wizard 不受影响;也可以生一个白板的子 wizard,顺便换个工作区。分身还能再分身。
143
183
  - **模型可以挑**:`/new [cli] [model]`,或让它生分身时指定——要判断的给 opus,跑腿的给 haiku。
144
- - **群里只留结论**:wizard 之间派活、来回默认是私聊,不刷群;群里只出现回给你的那条回复、通知、工单的开工 / 收工,以及它们主动公开的讨论。过程想看去 [rolepage](#rolepage)。
145
- - **上下文满了自己交接**:它会写一份简报、原地重开,接着干。
184
+ - **派完就放手**:wizard 之间说一句就走,不守着等;对方那一轮一结束,守护进程把它的结论作为新的一轮送回发话方(约 0.2 秒内,由 CLI 自己的忙闲事件触发)。对方正忙时可以约好「等它闲下来再说」,同样是它一停下就投。
185
+ - **群里只留结论**:wizard 之间派活、来回默认是私聊,不刷群;生分身、收工、交接这类生命周期事件也不进群。群里只出现回给你的那条回复、通知、工单的开工 / 收工、定时任务的 ⏰,以及它们主动公开的讨论。过程想看去 [rolepage](#rolepage)。
186
+ - **上下文满了自己交接**:它把工作压成一份简报、原地换一个全新会话接着干,名字和职责都不变。交接那几秒里进来的话(人说的、同伴派的、回执、定时任务)一律等它重开完再送进去,一句不丢。
146
187
 
147
188
  ---
148
189
 
@@ -161,7 +202,7 @@ sequenceDiagram
161
202
  W->>U: 📋 开工(标题 + 计划)
162
203
  W->>K: 分出 N 个分身,各领一份活
163
204
  Note over K: 并行干活,过程不刷群
164
- K-->>W: 各自交回结论
205
+ K-->>W: 结论自动回执(第几份 / 还差几份)
165
206
  W->>U: 📋 收工(汇总)
166
207
  Note over W,K: 为这单活生出来的分身整批回收
167
208
  ```
@@ -169,6 +210,7 @@ sequenceDiagram
169
210
  - **群里只有两条气泡**:开工和收工。中间的过程在各自的 rolepage 里。
170
211
  - **材料只读一遍**:分身是从发起方的上下文里分出来的,不用各自重读。
171
212
  - **并行**:几路同时干,总耗时只取决于最慢的那一路。
213
+ - **齐了才汇总**:回执是陆续回来的,守护进程替它数——每一份都写着第几份、还差几份,最后一份明说「全部到齐」,它才汇总收工。
172
214
  - **自动回收**:收工时为这单活生出来的分身一并收掉;被拉来帮忙的长期 wizard 不受影响。
173
215
 
174
216
  流程固定的循环(几个 wizard 互相评审、迭代到收敛)可以让它搭成一条流水线,按轮次跑,达到约定的结束条件就提前收工。
@@ -179,10 +221,13 @@ sequenceDiagram
179
221
 
180
222
  点气泡头的 `emoji .name`,打开那个 wizard 的 **rolepage**——它视角下的 IM:
181
223
 
182
- - **侧栏**:它参与的每个群聊,以及与人、与其他 wizard 的单聊。
183
- - **消息窗**:它发的靠右,收到的靠左;工具调用和用量细节折叠在回复里。
184
- - **切视角**:点一条消息对侧的空白,切到对方的 rolepage。
185
- - **顶栏**:名字、职责、工作区、模型;历史会话切换;关系图(谁是谁的分身、谁给谁派过活);日程(它名下的定时任务和工单)。
224
+ - **侧栏**:它参与的每个群聊,以及与人、与其他 wizard 的单聊;有新消息亮未读红点。
225
+ - **消息窗**:它发的靠右,收到的靠左;每一轮的工具调用收进一个可折叠的虚线框,终句是一颗气泡,模型 / ctx / 耗时写在名字那一行。
226
+ - **切视角**:点一条消息对侧的空白,切到对方的 rolepage,气泡带动画换边。
227
+ - **`⌘K` 搜索**:按 role 名字、会话名、消息正文搜,键盘选中回车直接跳到那个会话的那一句;空查询时是最近会话的快速切换器。
228
+ - **关系图**:侧栏切到关系图,一棵树把家谱(谁是谁的分身)和对话(谁和谁说过话、几次)画在一起,人也是节点。卡片就是会话项——最近一句、时刻、未读都和会话列表同一口径;点卡片打开它与图上相连者之间的往来。
229
+ - **用量条**:页脚两条,一条是当前视角,一条是窗口对端那个 wizard——模型、轮次、工具调用、API 请求、上下文峰值、耗时,以及 cache read / input / cache write / output 的分布。
230
+ - **名片**:名字、职责、工作区、模型与忙闲;点名字复制 `.name`;历史会话切换(默认看全部);日程列出它名下的定时任务和工单。
186
231
 
187
232
  ---
188
233
 
@@ -10,7 +10,7 @@
10
10
  // jsonl 在首条消息之前根本不存在 (`--session-id` 新建与 `--fork-session` 都一样),
11
11
  // 所以「就绪」只能靠注册表; 「已提交」则注册表 (busy 翻转) 与 jsonl 任一确认即可。
12
12
  // 没有注册表的后端 (codebuddy / 旧版 CC) 一律返回 undefined, 由调用方退回读 pane。
13
- import { closeSync, existsSync, openSync, readdirSync, readFileSync, readSync, statSync } from "node:fs";
13
+ import { closeSync, existsSync, openSync, readdirSync, readFileSync, readSync, statSync, watch } from "node:fs";
14
14
  import { join } from "node:path";
15
15
  import { expandHome } from "../shared/paths.js";
16
16
  export const registryDirOf = (homeDir) => join(expandHome(homeDir), "sessions");
@@ -70,6 +70,19 @@ export const readRegistry = (homeDir) => {
70
70
  export const sessionOnPane = (homeDir, pane) => readRegistry(homeDir)
71
71
  .filter((r) => r.pane === pane && pidAlive(r.pid))
72
72
  .sort((a, b) => b.statusUpdatedAt - a.statusUpdatedAt)[0];
73
+ /** 注册表目录一有写入就回调 —— status 翻转的事件源, 省得按固定间隔去抽样。
74
+ * CC 以整文件改写 (可能是 rename) 落盘, 所以看目录而不是单个文件。返回撤销函数;
75
+ * 目录不在 / watch 起不来时是空操作, 调用方自带的兜底轮询照样能收尾。 */
76
+ export const watchRegistry = (homeDir, onChange) => {
77
+ try {
78
+ const w = watch(registryDirOf(homeDir), () => onChange());
79
+ w.on("error", () => w.close());
80
+ return () => w.close();
81
+ }
82
+ catch {
83
+ return () => { };
84
+ }
85
+ };
73
86
  /** 注册表里进程还活着的会话各住在哪个 pane —— 「这个 pane 是不是会话 pane」的正面证据。 */
74
87
  export const sessionPanes = (homeDir) => new Set(readRegistry(homeDir).filter((r) => r.pane && pidAlive(r.pid)).map((r) => r.pane));
75
88
  // ── 提交确认 ──────────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"cc-session.js","sourceRoot":"","sources":["../../daemon/cc-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cc-session.js","sourceRoot":"","sources":["../../daemon/cc-session.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,gEAAgE;AAChE,sEAAsE;AACtE,oEAAoE;AACpE,qCAAqC;AACrC,+DAA+D;AAC/D,8DAA8D;AAC9D,EAAE;AACF,gEAAgE;AAChE,oDAAoD;AACpD,6DAA6D;AAC7D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAahD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;AAEhG,4BAA4B;AAC5B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAW,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAE5F,2DAA2D;AAC3D,8CAA8C;AAC9C,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAW,EAAE;IACxC,IAAI,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAAC,OAAQ,CAA2B,CAAC,IAAI,KAAK,OAAO,CAAC;IAAC,CAAC;AAChH,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,IAAa,EAAU,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAElH,MAAM,QAAQ,GAAG,CAAC,GAAW,EAA2B,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACrD,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACnF,OAAO;YACL,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACpD,eAAe,EAAE,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC9E,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;SAC/C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC,CAAC,UAAU;IAC9B,CAAC;AACH,CAAC,CAAC;AAEF,yDAAyD;AACzD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAiB,EAAE;IAC7D,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QAAC,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IACtD,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;QAAC,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC,CAAC,CAAC,CAAC;SACxG,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,IAAY,EAA2B,EAAE,CACtF,YAAY,CAAC,OAAO,CAAC;KAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9D;;8CAE8C;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,QAAoB,EAAgB,EAAE;IACnF,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/B,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAe,EAAE,CAC3D,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAE7F,qEAAqE;AAErE,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAEhE,wDAAwD;AACxD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAI9E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAkB,EAAE;IAC7D,IAAI,CAAC;QAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAAC,CAAC;AAC7F,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,MAAc,EAAU,EAAE;IACxD,IAAI,EAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,IAAI,MAAM;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;QAC9C,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YAAC,IAAI,CAAC;gBAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAAC,CAAC;IACzE,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,CAAU,EAAU,EAAE,CAC3C,OAAO,CAAC,KAAK,QAAQ;IACnB,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAK,CAAuB,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAE,CAAwB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5H,CAAC,CAAC,EAAE,CAAC;AAEX,2EAA2E;AAC3E,MAAM,YAAY,GAAG,CAAC,IAAY,EAA4C,EAAE;IAC9E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,SAAS;IAC7F,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;QACtD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,aAAa,CAAE,CAAC,CAAC,OAA6C,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;QAC1I,MAAM,GAAG,GAAG,CAAC,CAAC,UAA6D,CAAC;QAC5E,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,EAAE,IAAI,KAAK,gBAAgB;YAAE,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;IAChH,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACxB,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;2BAE2B;AAC3B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAgC,EAAE,KAAa,EAAE,KAAa,EAAW,EAAE,CACxG,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACjC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;KACvB,KAAK,CAAC,IAAI,CAAC;KACX,GAAG,CAAC,YAAY,CAAC;KACjB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
@@ -1,17 +1,55 @@
1
+ // 「命令词位置」前缀: 行首 / 换行 / `;` `&&` `||` `(` 之后 / 引号紧邻处 /
2
+ // 包装器命令之后 / `do` `then` `else` 之后 / `--` 参数分隔符之后。
3
+ //
4
+ // 为什么需要它: 名单是对**整条命令文本**做 test 的, 光靠 `\b` 界定的词只要在
5
+ // 任何位置出现就算命中 —— 而 `-` `/` 都是非单词字符, 于是分支名、文件名、参数值
6
+ // 里带上这些词就会让所有沾边的命令被判危险。真实案例: 分支
7
+ // `feature/graceful-shutdown` 让 `git checkout` / `git push` /
8
+ // `npm run test -- graceful-shutdown.spec.ts` 全部命中「关机/重启」必发单卡,
9
+ // 流程被审批卡堵死; 同族的 `\brm\b` 还会把 `docker run --rm` 判成删除文件。
10
+ //
11
+ // 包装器 (提权/计时/限流/改环境, 自己不干事只把后面的命令包一层跑) 是开放集合,
12
+ // 初版只列了 sudo·nohup·exec·xargs·env·time, 于是 `command rm` / `timeout 5 rm` /
13
+ // `nice rm` / `env FOO=1 rm` / `watch reboot` 全部漏报 —— 这里尽量收全, 并允许
14
+ // 包装器与命令之间隔一串参数 token。token 只认 `-` 开头的选项 / 纯数字时长 /
15
+ // `K=V` 赋值: 普通单词会打断链条, `timeout 5 rg -n sudo` 里的检索词钓不出命中。
16
+ const WRAPPERS = String.raw `sudo|doas|nohup|exec|xargs|env|time|command|builtin|timeout|nice|ionice|stdbuf|setsid|watch|caffeinate|do|then|else`;
17
+ const WRAP_ARG = String.raw `(?:-[^\s;|&]*|\d+(?:\.\d+)?[smhd]?|\w+=[^\s;|&]*)\s+`;
18
+ const CMD_HEAD = String.raw `(?:^|[\n;&|(]\s*|["'\`]\s*|\b(?:${WRAPPERS})\s+(?:${WRAP_ARG})*|--\s+)`;
19
+ // 「远程执行」上下文: 命令把动作送到别的机器/容器里跑时, 位置约束失效 ——
20
+ // `ssh host rm -rf /`、`kubectl exec pod -- halt` 里危险词前面是主机名或 `--`。
21
+ // 因为前置了 ssh / exec 才触发, 不会误伤本机的普通命令, 所以这里保持宽匹配。
22
+ const REMOTE_CTX = String.raw `\b(?:ssh|(?:kubectl|docker)\s+exec)\b[\s\S]*\b`;
23
+ /**
24
+ * 给「词本身太常见、只有出现在命令位置才危险」的规则配一对正则: 本机版带
25
+ * 命令词位置约束, 远程版在 ssh/exec 上下文里放宽。
26
+ *
27
+ * 只用于纯单词触发的规则 —— `kubectl delete`、`dd if=` 这类自带结构约束的
28
+ * 不需要, 它们的第二个 token 已经把误伤面挡住了。
29
+ */
30
+ const cmdWord = (label, words, flags = "") => [
31
+ // `\\?`: `\rm` 这种反斜杠转义 (绕开 alias 的惯用写法) 仍处于命令词位置。
32
+ [label, new RegExp(`${CMD_HEAD}\\\\?(?:${words})\\b`, flags)],
33
+ [`远程${label}`, new RegExp(`${REMOTE_CTX}(?:${words})\\b`, flags)],
34
+ ];
1
35
  // ── 内置命令名单 (Bash / 任何带 command 的工具) ────────────────────────
2
36
  const CMD_RULES = [
3
- ["删除文件 rm", /\brm\b/],
4
- ["删除目录 rmdir", /\brmdir\b/],
37
+ ...cmdWord("删除文件 rm", "rm"),
38
+ ...cmdWord("删除目录 rmdir", "rmdir"),
5
39
  ["批量删除 find -delete", /\bfind\b[\s\S]*(-delete|-exec\s+rm)\b/],
40
+ // xargs 传参形态 (`xargs -I{} rm {}`) 里 rm 前面是 `}`, 命令词位置约束够不着,
41
+ // 靠这条宽规则兜住 —— 有 xargs 前置, 同样不会误伤普通命令。
6
42
  ["管道删除 xargs rm", /\bxargs\b[\s\S]*\brm\b/],
7
- ["清空文件 truncate", /\btruncate\b/],
43
+ ...cmdWord("清空文件 truncate", "truncate"),
8
44
  ["裸设备写入 dd", /\bdd\s+(if|of)=/],
9
45
  ["格式化 mkfs", /\bmkfs\b|\bdiskutil\s+(erase|partition)/],
10
46
  ["重定向到设备", />\s*\/dev\/(?!null\b|stdout\b|stderr\b)/],
11
- ["提权 sudo", /\bsudo\b|\bsu\s+-/],
47
+ ...cmdWord("提权 sudo", "sudo"),
48
+ ["切换用户 su", /\bsu\s+-/],
12
49
  ["递归改权限", /\bch(mod|own)\b[\s\S]*(-R|\b777\b)/],
13
- ["强制杀进程", /\bkill\s+-9\b|\bkillall\b|\bpkill\b/],
14
- ["关机/重启", /\b(shutdown|reboot|halt|poweroff)\b/],
50
+ ["强制杀进程", /\bkill\s+-9\b/],
51
+ ...cmdWord("强制杀进程", "killall|pkill"),
52
+ ...cmdWord("关机/重启", "shutdown|reboot|halt|poweroff"),
15
53
  ["服务停用", /\blaunchctl\s+(unload|bootout|remove)\b|\bsystemctl\s+(stop|disable|mask)\b/],
16
54
  ["git 强推", /\bgit\b[\s\S]*\bpush\b[\s\S]*(--force|-f\b)/],
17
55
  ["git 丢弃改动", /\bgit\s+(reset\s+--hard|clean\b|checkout\s+--\s|restore\b)/],
@@ -24,7 +62,10 @@ const CMD_RULES = [
24
62
  ["GitHub 删除", /\bgh\s+(repo|release|secret|ssh-key)\s+delete\b/],
25
63
  ["数据库 DROP/TRUNCATE", /\b(drop|truncate)\s+(table|database|schema|index)\b/i],
26
64
  ["无条件 DELETE", /\bdelete\s+from\b(?![\s\S]*\bwhere\b)/i],
27
- ["Redis 清库", /\bflush(all|db)\b/i],
65
+ // flushall/flushdb 是 redis-cli 的**子命令**, 永远不在 shell 命令词位置, 所以
66
+ // 这里用 redis 上下文约束而不是 CMD_HEAD —— 同样挡住 `feat/flushdb-guard`
67
+ // 这类分支名, 又不会漏掉 `redis-cli -h h flushall`。
68
+ ["Redis 清库", /\bredis(-cli)?\b[\s\S]*\bflush(all|db)\b/i],
28
69
  ["下载即执行", /\b(curl|wget)\b[\s\S]*\|\s*(sudo\s+)?(ba)?sh\b/],
29
70
  ["fork 炸弹", /:\(\)\s*\{.*\|.*&.*\}/],
30
71
  ["清历史", /\bhistory\s+-c\b|\bdefaults\s+delete\b/],
@@ -1 +1 @@
1
- {"version":3,"file":"danger.js","sourceRoot":"","sources":["../../daemon/danger.ts"],"names":[],"mappings":"AAgBA,8DAA8D;AAC9D,MAAM,SAAS,GAAoB;IACjC,CAAC,SAAS,EAAE,QAAQ,CAAC;IACrB,CAAC,YAAY,EAAE,WAAW,CAAC;IAC3B,CAAC,mBAAmB,EAAE,uCAAuC,CAAC;IAC9D,CAAC,eAAe,EAAE,wBAAwB,CAAC;IAC3C,CAAC,eAAe,EAAE,cAAc,CAAC;IACjC,CAAC,UAAU,EAAE,iBAAiB,CAAC;IAC/B,CAAC,UAAU,EAAE,yCAAyC,CAAC;IACvD,CAAC,QAAQ,EAAE,yCAAyC,CAAC;IACrD,CAAC,SAAS,EAAE,mBAAmB,CAAC;IAChC,CAAC,OAAO,EAAE,oCAAoC,CAAC;IAC/C,CAAC,OAAO,EAAE,qCAAqC,CAAC;IAChD,CAAC,OAAO,EAAE,qCAAqC,CAAC;IAChD,CAAC,MAAM,EAAE,6EAA6E,CAAC;IACvF,CAAC,QAAQ,EAAE,6CAA6C,CAAC;IACzD,CAAC,UAAU,EAAE,4DAA4D,CAAC;IAC1E,CAAC,SAAS,EAAE,uDAAuD,CAAC;IACpE,CAAC,KAAK,EAAE,qEAAqE,CAAC;IAC9E,CAAC,MAAM,EAAE,iEAAiE,CAAC;IAC3E,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAClC,CAAC,QAAQ,EAAE,yBAAyB,CAAC;IACrC,CAAC,OAAO,EAAE,0EAA0E,CAAC;IACrF,CAAC,WAAW,EAAE,iDAAiD,CAAC;IAChE,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;IAC7E,CAAC,YAAY,EAAE,wCAAwC,CAAC;IACxD,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAClC,CAAC,OAAO,EAAE,gDAAgD,CAAC;IAC3D,CAAC,SAAS,EAAE,uBAAuB,CAAC;IACpC,CAAC,KAAK,EAAE,wCAAwC,CAAC;CAClD,CAAC;AAEF,0DAA0D;AAC1D,MAAM,UAAU,GAAoB;IAClC,CAAC,OAAO,EAAE,iEAAiE,CAAC;CAC7E,CAAC;AAEF,sDAAsD;AACtD,MAAM,UAAU,GAAoB;IAClC,CAAC,QAAQ,EAAE,0DAA0D,CAAC;IACtE,CAAC,MAAM,EAAE,kFAAkF,CAAC;IAC5F,CAAC,MAAM,EAAE,4DAA4D,CAAC;IACtE,CAAC,UAAU,EAAE,0BAA0B,CAAC;CACzC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,OAA0B,EAAU,EAAE,CACrD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;IACpB,IAAI,CAAC;QACH,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAS,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,iBAAiB;IAC9B,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,QAAQ,GAAG,CAAC,KAAsB,EAAE,IAAY,EAAyB,EAAE;IAC/E,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC,CAAC;AAEF,oCAAoC;AACpC,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,OAAO,GAAG,CAAC,CAAU,EAAE,KAAK,GAAG,CAAC,EAAE,MAAgB,EAAE,EAAY,EAAE;IACtE,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACrD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO,GAAG,CAAC;IAAC,CAAC;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAAC,OAAO,GAAG,CAAC;IAAC,CAAC;IACnF,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAA4B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,2DAA2D;AAC3D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AACpE,MAAM,UAAU,GAAG,CAAC,KAAc,EAAY,EAAE;IAC9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACnD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;SACpD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;SAChE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAW,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,oCAAoC;AACpC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,GAA0B,EAAW,EAAE,CAClF,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC;AAExE,mDAAmD;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,GAA0B,EAAW,EAAE,CAC9E,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,GAAW,EACX,GAA0B,EAC1B,cAAuB,EACyB,EAAE;IAClD,IAAI,cAAc;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,aAAa,CAAC;IAChD,IAAI,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,kBAAkB,CAAC;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,wCAAwC;AACxC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,SAAkB,EAAyB,EAAE;IACnG,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,CAAC,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACvC,sCAAsC;IACtC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAE9F,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAEjF,OAAO,CACL,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAwB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC;QACvF,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,EACzC,SAAS,CACV,CACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"danger.js","sourceRoot":"","sources":["../../daemon/danger.ts"],"names":[],"mappings":"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"}
@@ -25,30 +25,39 @@ export const setWorldFactsProvider = (fn) => { worldFacts = fn; startFactsForwar
25
25
  // 30s: 采一次要按 pane 问一遍 tmux (见 index.ts 的 WORLD_TTL 说明), 而一个开着的
26
26
  // 浏览器本来就 6s 问一次, 这个频率比它轻五倍, 却足够让远端的日程与名册是准的。
27
27
  const FACTS_PUSH_MS = 30_000;
28
+ /** 上一次没推成 (svr 正在重启 / 还没起来) 就紧着重试 —— svr 的快照只在内存里,
29
+ * 它起来后到下一次推送之间, 名册是真的缺席。 */
30
+ const FACTS_RETRY_MS = 5_000;
28
31
  let factsTimer;
29
32
  /** 快照的来源署名 —— 一个 svr 可能接着好几台 daemon, 它按这个键分开存。 */
30
33
  const factsSource = () => hostname() || "daemon";
34
+ /** 推一次, 答「推成没有」。占位快照 (absent) 不推: 那不是注册表的状态, 推过去只会覆盖掉一份好的。 */
31
35
  const pushFacts = async () => {
32
36
  if (!remoteBase || !worldFacts)
33
- return;
37
+ return false;
34
38
  const facts = await Promise.resolve(worldFacts()).catch(() => undefined);
35
- if (!facts)
36
- return;
39
+ if (!facts || facts.absent)
40
+ return false;
37
41
  const headers = { "content-type": "application/json" };
38
42
  if (remoteToken)
39
43
  headers.authorization = `Bearer ${remoteToken}`;
40
- await fetch(`${remoteBase.replace(/\/+$/, "")}/w`, {
44
+ return fetch(`${remoteBase.replace(/\/+$/, "")}/w`, {
41
45
  method: "POST",
42
46
  headers,
43
47
  body: JSON.stringify({ source: factsSource(), facts }),
44
- }).catch(() => { });
48
+ }).then((r) => r.ok, () => false); // 同 forwardToRemote: 远端挂了不该影响本机
45
49
  };
46
50
  // 两个前置条件 (配了远端、装上了 provider) 谁先到都可能 —— 两处都调一次, 起过就不再起。
47
51
  const startFactsForward = () => {
48
52
  if (factsTimer || !remoteBase || !worldFacts)
49
53
  return;
50
- void pushFacts();
51
- factsTimer = setInterval(() => { void pushFacts(); }, FACTS_PUSH_MS);
54
+ const tick = () => {
55
+ void pushFacts().then((ok) => {
56
+ factsTimer = setTimeout(tick, ok ? FACTS_PUSH_MS : FACTS_RETRY_MS);
57
+ factsTimer.unref();
58
+ });
59
+ };
60
+ factsTimer = setTimeout(tick, 0);
52
61
  factsTimer.unref();
53
62
  };
54
63
  // 转发失败静默 — 远端 svr 挂了不该拖垮本地工具调用。
@@ -114,6 +123,14 @@ export const recordMark = (rec) => {
114
123
  if (full)
115
124
  forwardToRemote(full);
116
125
  };
126
+ // notify 贴进群的那段话: rolepage 把它画成发话 wizard 在那个群里的一条出消息。
127
+ export const recordPost = (rec) => {
128
+ if (!store)
129
+ return;
130
+ const full = { kind: "post", id: `p${Date.now().toString(36)}${randomBytes(3).toString("hex")}`, createdAt: Date.now(), ...rec };
131
+ store.put(full);
132
+ forwardToRemote(full);
133
+ };
117
134
  // Brief 模式聚合详情: 一个 turn 的时间线。startTurn 建空壳,item 增量 append,close 收尾。
118
135
  // 每次变更都完整重推整条 record 给 remote svr — svr 侧存的是 last-write-wins 快照。
119
136
  export const recordTurnStart = (rec) => {
@@ -170,6 +187,10 @@ export const recordCloseOpenTurns = (scope) => {
170
187
  }
171
188
  };
172
189
  export const getDetail = (id) => store?.get(id);
190
+ /** 这次 tool_use 是否已经落过库。单卡记录会被容量回收挤掉 (一个挂了几小时的审批),
191
+ * 所以再问一遍有没有哪一轮还握着它 —— 两处都没有, 才算真丢了。 */
192
+ export const knowsToolUse = (toolUseId) => getDetail(toolUseId)?.kind === "tool" ||
193
+ (store?.list() ?? []).some((r) => r.kind === "turn" && r.items.some((it) => it.t === "tool_use" && it.toolUseId === toolUseId));
173
194
  // 一个 wizard 名字背后的 rolepage 链接需要一张票据 —— `?id=` 既是凭据, 也是页面默认
174
195
  // 落点。从没跑过一轮的会话没有自己的票据, 返回 undefined。
175
196
  export const latestTurnIdFor = (target) => latestTurnId((r) => r.target === target);
@@ -1 +1 @@
1
- {"version":3,"file":"detail.js","sourceRoot":"","sources":["../../daemon/detail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detail.js","sourceRoot":"","sources":["../../daemon/detail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ import { waitForIdle } from "./graph.js";
2
+ // ── 闸 ──────────────────────────────────────────────────────────────
3
+ // 进程级的单例: 人话的入口 (inbound) 在 mirror 块之前就装好了, 拿不到这里的实例。
4
+ const gates = new Map();
5
+ /** 这个 wizard 正在交接。 */
6
+ export const handingOff = (target) => gates.has(target);
7
+ /** 等它交接完; 没在交接就立刻返回。一次交接收尾后紧接着又开了一次, 接着等。 */
8
+ export const handedOff = async (target) => {
9
+ for (let g = gates.get(target); g; g = gates.get(target))
10
+ await g;
11
+ };
12
+ const hold = (target) => {
13
+ let open;
14
+ const g = new Promise((r) => (open = r));
15
+ gates.set(target, g);
16
+ return () => {
17
+ if (gates.get(target) === g)
18
+ gates.delete(target);
19
+ open();
20
+ };
21
+ };
22
+ const SELF_IDLE_MS = 10 * 60_000;
23
+ const briefPrompt = (focus) => [
24
+ "把你当前会话的全部工作压缩成一份**交接简报**,目标是让一个零上下文的全新会话仅凭这份简报就能无缝接手。必须自洽、具体、可执行,涵盖:",
25
+ "1. 总目标 / 用户到底想要什么",
26
+ "2. 已完成的事、关键决策与其理由",
27
+ "3. 当前状态:改到哪了、什么能跑、什么还没跑通",
28
+ "4. 下一步该做什么(有序)",
29
+ "5. 涉及的关键文件/路径/符号,以及非显而易见的坑",
30
+ focus ? `特别强调:${focus}` : "",
31
+ "只输出这份简报本身,不要寒暄、不要反问。",
32
+ ].filter(Boolean).join("\n");
33
+ const carryOf = (p) => p.mode === "self"
34
+ ? `以下是你自己上一段会话压缩出来的交接简报, 据此无缝接着干:\n\n${p.brief}`
35
+ : `以下是上一个会话交接过来的工作简报,请据此无缝接手并继续:\n\n${p.brief}`;
36
+ export const createHandoffs = (deps) => {
37
+ const save = (p) => void deps.store?.set(p.target, p);
38
+ const drop = (p) => deps.store?.drop(p.target);
39
+ const fail = (p, status, reason) => {
40
+ drop(p);
41
+ deps.log.warn({ mod: "handoff", target: p.target, stage: p.stage, reason }, "handoff: 放弃");
42
+ if (p.mode === "self")
43
+ deps.notify(p.target, `上下文交接没做成: ${reason}`);
44
+ return { ok: false, status, reason, ...(p.brief ? { brief: p.brief } : {}) };
45
+ };
46
+ const idle = (p, ms) => waitForIdle(p.target, deps.isBusy, ms, () => false);
47
+ /** 一步一步推到底; 每一步先落盘再动手, reload 后从 `stage` 接着来。 */
48
+ const step = async (p) => {
49
+ switch (p.stage) {
50
+ case "waiting": {
51
+ // 两种交接都先等它停下: 自我交接要等它把调用这一轮说完; 交接别人时, 简报的
52
+ // 请求排在它手头那一轮后面的话, 它答别人的那段与简报会挤在一起分不开。
53
+ const w = await idle(p, p.mode === "self" ? SELF_IDLE_MS : p.timeoutMs);
54
+ if (!w.idle)
55
+ return fail(p, 504, `一直没能闲下来 (${w.reason}), 上下文没动`);
56
+ if (p.mode === "self")
57
+ return step({ ...p, stage: "restarting" });
58
+ const r = await deps.inject(p.target, briefPrompt(p.focus), []);
59
+ if (!r.ok)
60
+ return fail(p, 502, `summary inject failed: ${r.reason}`);
61
+ return step(saved({ ...p, stage: "briefing" }));
62
+ }
63
+ case "briefing": {
64
+ const w = await idle(p, p.timeoutMs);
65
+ const brief = deps.lastText(p.target);
66
+ // 没等到 idle 就不能重开 —— 那会丢掉这次还在生成的交接总结。
67
+ if (!w.idle)
68
+ return fail(p, 504, `target still working: ${w.reason}; not restarting to avoid losing the turn`);
69
+ if (!brief.trim())
70
+ return fail(p, 502, "target produced no summary text");
71
+ return step({ ...p, brief, stage: "restarting" });
72
+ }
73
+ case "restarting": {
74
+ // reload 落在重开中途: sid 已经换了就是做完了, 别再杀一次新会话。
75
+ if (deps.sessionId(p.target) !== p.sid)
76
+ return step(saved({ ...p, stage: "restarted" }));
77
+ // 旧会话此刻还在: 欠着的回执就在这里清点 —— 一重开, 旧 transcript 就再也读不到了。
78
+ // 自我交接只认调用之前就收口的那些轮 (调用这一轮的收尾话不是答案); 交接别人时
79
+ // 简报那一句已把它之前的每一轮都关上了。
80
+ const until = p.mode === "self" ? p.at : Number.MAX_SAFE_INTEGER;
81
+ const carried = deps.receipts.transfer(p.target, (s) => deps.answeredBefore(p.target, s.from, s.at, until) ?? "", Date.now());
82
+ const next = saved({ ...p, stage: "restarting", owe: carried.map((s) => ({ from: s.from, channel: s.channel })) });
83
+ const r = await deps.restart(p.target);
84
+ if (!r.ok)
85
+ return fail(next, 502, `/new failed: ${r.reason ?? "unknown"}`);
86
+ return step(saved({ ...next, stage: "restarted" }));
87
+ }
88
+ case "restarted": {
89
+ const r = await deps.inject(p.target, carryOf(p), p.owe ?? []);
90
+ drop(p);
91
+ deps.log.info({ mod: "handoff", target: p.target, ok: r.ok, reason: r.reason, owe: p.owe?.length ?? 0 }, "handoff: 简报已贴回");
92
+ if (!r.ok)
93
+ return fail(p, 502, `handoff carry inject failed: ${r.reason}`);
94
+ return { ok: true, brief: p.brief ?? "" };
95
+ }
96
+ }
97
+ };
98
+ const saved = (p) => (save(p), p);
99
+ /** 闸立在整场交接上: 发起之后进来的话 (人、同伴、回执、日程) 都进新会话。 */
100
+ const run = (p) => {
101
+ const release = hold(p.target);
102
+ return step(p)
103
+ .catch((e) => fail(p, 500, e.message))
104
+ .finally(release);
105
+ };
106
+ const begin = (target, mode, extra) => handingOff(target)
107
+ ? undefined
108
+ : saved({ target, mode, at: Date.now(), sid: deps.sessionId(target), stage: "waiting", timeoutMs: SELF_IDLE_MS, ...extra });
109
+ return {
110
+ self: (target, brief) => {
111
+ const p = begin(target, "self", { brief });
112
+ if (!p)
113
+ return { ok: false, reason: "已经在交接中" };
114
+ void run(p);
115
+ return { ok: true };
116
+ },
117
+ other: async (target, focus, timeoutMs) => {
118
+ const p = begin(target, "other", { focus, timeoutMs });
119
+ if (!p)
120
+ return { ok: false, status: 409, reason: "它已经在交接中" };
121
+ return run(p);
122
+ },
123
+ resume: () => {
124
+ const open = Object.values(deps.store?.all() ?? {});
125
+ open.forEach((p) => void run(p));
126
+ if (open.length)
127
+ deps.log.info({ mod: "handoff", resumed: open.map((p) => `${p.target}@${p.stage}`) }, "handoff: reload 后续做");
128
+ return open.length;
129
+ },
130
+ };
131
+ };
132
+ //# sourceMappingURL=handoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../daemon/handoff.ts"],"names":[],"mappings":"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"}