wezard 1.3.3 → 1.3.7
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/CLAUDE.md +3 -2
- package/README.md +30 -23
- package/cli/wezard.sh +101 -4
- package/commands/update.md +6 -0
- package/commands/wrc.md +1 -1
- package/dist/cli/init.js +1 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/daemon/approval.js +35 -3
- package/dist/daemon/approval.js.map +1 -1
- package/dist/daemon/inbound.js +14 -8
- package/dist/daemon/inbound.js.map +1 -1
- package/dist/daemon/index.js +25 -12
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/last-response.js +33 -5
- package/dist/daemon/last-response.js.map +1 -1
- package/dist/daemon/mirror-bridge.js +395 -70
- package/dist/daemon/mirror-bridge.js.map +1 -1
- package/dist/daemon/peers.js +68 -0
- package/dist/daemon/peers.js.map +1 -1
- package/dist/daemon/subagent-tail.js +295 -0
- package/dist/daemon/subagent-tail.js.map +1 -0
- package/dist/daemon/tips.js +1 -1
- package/dist/daemon/tips.js.map +1 -1
- package/dist/mcp/server.js +23 -32
- package/dist/mcp/server.js.map +1 -1
- package/dist/shared/config.js +17 -2
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/detail-render.js +23 -3
- package/dist/shared/detail-render.js.map +1 -1
- package/dist/shared/detail-store.js.map +1 -1
- package/hooks/pre-tool-use.sh +11 -1
- package/launchd/com.wezard.daemon.plist.template +12 -0
- package/package.json +2 -1
package/dist/daemon/peers.js
CHANGED
|
@@ -350,6 +350,74 @@ export const transcriptStalled = (jsonlPath) => {
|
|
|
350
350
|
}
|
|
351
351
|
return false;
|
|
352
352
|
};
|
|
353
|
+
// ── Rate-limit park detection ─────────────────────────────────────────
|
|
354
|
+
// When a turn dies on quota, CC writes a synthetic assistant line carrying the
|
|
355
|
+
// authoritative reset moment: `quotaLimits.resetsAt` (epoch sec). Injecting
|
|
356
|
+
// anything before that moment only buys another 429 line, so auto-resume keys
|
|
357
|
+
// off this timestamp instead of blind retries. "Parked" means the limit line is
|
|
358
|
+
// the transcript's LAST message turn — any later user/assistant turn (a human
|
|
359
|
+
// retry, an approval resume, our own inject) clears the state with zero
|
|
360
|
+
// bookkeeping, which is what lets the whole feature stay poll-derived.
|
|
361
|
+
const LIMIT_TEXT_RE = /hit your (session|usage|weekly)?\s*limit|usage limit reached/i;
|
|
362
|
+
// Older CC renders only prose ("resets 2:30am (Asia/Shanghai)") — recover the
|
|
363
|
+
// next local-clock occurrence. The TUI prints in the machine's own timezone,
|
|
364
|
+
// so local Date math is the right interpretation.
|
|
365
|
+
const parseResetClock = (text, now) => {
|
|
366
|
+
const m = /resets\s+(\d{1,2})(?::(\d{2}))?\s*(am|pm)/i.exec(text);
|
|
367
|
+
if (!m)
|
|
368
|
+
return undefined;
|
|
369
|
+
let h = Number(m[1]) % 12;
|
|
370
|
+
if ((m[3] ?? "").toLowerCase() === "pm")
|
|
371
|
+
h += 12;
|
|
372
|
+
const d = new Date(now);
|
|
373
|
+
d.setHours(h, Number(m[2] ?? 0), 0, 0);
|
|
374
|
+
return d.getTime() <= now ? d.getTime() + 86_400_000 : d.getTime();
|
|
375
|
+
};
|
|
376
|
+
/** Epoch ms when a limit-parked session becomes retryable, or undefined when
|
|
377
|
+
* the transcript is not currently parked on a rate-limit line (or the line
|
|
378
|
+
* carries no recoverable reset time). Gated on `isApiErrorMessage` — only CC
|
|
379
|
+
* synthetic error lines qualify, prose merely *discussing* limits cannot. */
|
|
380
|
+
export const limitResetAt = (jsonlPath, now = Date.now()) => {
|
|
381
|
+
const raw = readTail(jsonlPath);
|
|
382
|
+
if (!raw)
|
|
383
|
+
return undefined;
|
|
384
|
+
const normalize = backendForPath(jsonlPath).normalizeTranscriptLine;
|
|
385
|
+
let last; // reset ms of the newest turn IF it's a limit line
|
|
386
|
+
for (const line of raw.split("\n")) {
|
|
387
|
+
if (!line.trim())
|
|
388
|
+
continue;
|
|
389
|
+
let parsed;
|
|
390
|
+
try {
|
|
391
|
+
parsed = JSON.parse(line);
|
|
392
|
+
}
|
|
393
|
+
catch {
|
|
394
|
+
continue;
|
|
395
|
+
}
|
|
396
|
+
let row;
|
|
397
|
+
try {
|
|
398
|
+
row = normalize(parsed);
|
|
399
|
+
}
|
|
400
|
+
catch {
|
|
401
|
+
continue;
|
|
402
|
+
}
|
|
403
|
+
if (!row || row.isMeta || row.isSidechain)
|
|
404
|
+
continue;
|
|
405
|
+
const role = row.message?.role;
|
|
406
|
+
if (role !== "user" && role !== "assistant")
|
|
407
|
+
continue;
|
|
408
|
+
const p = parsed;
|
|
409
|
+
const text = blockText(row.message?.content);
|
|
410
|
+
const isLimit = role === "assistant" && p.isApiErrorMessage === true &&
|
|
411
|
+
(p.error === "rate_limit" || typeof p.quotaLimits?.resetsAt === "number" || LIMIT_TEXT_RE.test(text));
|
|
412
|
+
if (!isLimit) {
|
|
413
|
+
last = undefined;
|
|
414
|
+
continue;
|
|
415
|
+
}
|
|
416
|
+
const sec = p.quotaLimits?.resetsAt;
|
|
417
|
+
last = typeof sec === "number" ? (sec > 1e12 ? sec : sec * 1000) : parseResetClock(text, now);
|
|
418
|
+
}
|
|
419
|
+
return last;
|
|
420
|
+
};
|
|
353
421
|
/** Trim a captured pane to its last `rows` non-blank lines — the TUI pads the
|
|
354
422
|
* viewport with empties that would otherwise dominate a WeCom bubble. */
|
|
355
423
|
export const compactPane = (paneText, rows = 24) => stripAnsi(paneText)
|
package/dist/daemon/peers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peers.js","sourceRoot":"","sources":["../../daemon/peers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"peers.js","sourceRoot":"","sources":["../../daemon/peers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
// Subagent transcript watcher.
|
|
2
|
+
//
|
|
3
|
+
// Claude Code and CodeBuddy both park spawned subagent (Task / Agent tool)
|
|
4
|
+
// transcripts at `<projectDir>/<parentSid>/subagents/agent-<id>.jsonl` — same
|
|
5
|
+
// per-backend schema as the main session transcript (verified on disk for both
|
|
6
|
+
// backends). The main tail (`startMirrorTail`) deliberately ignores that
|
|
7
|
+
// directory; this watcher is the dedicated reader:
|
|
8
|
+
// • polls the subagents/ dir (fs.watch + 1s poll floor, mirroring the main
|
|
9
|
+
// tail's discipline), starting a per-agent incremental tail per file;
|
|
10
|
+
// • files present when the watch starts are tailed from EOF (don't replay
|
|
11
|
+
// history); files appearing later start at 0 — an agent file is created at
|
|
12
|
+
// spawn, so we see its task prompt as the first line;
|
|
13
|
+
// • the dir follows the parent transcript's live path (worktree relocations
|
|
14
|
+
// rename the whole project dir; per-agent offsets survive the move since a
|
|
15
|
+
// rename preserves the byte prefix);
|
|
16
|
+
// • line classification reuses the backend normalizer (claude identity,
|
|
17
|
+
// codebuddy schema adapter), then emits a lean item stream — no keepalive
|
|
18
|
+
// / goal / inject-echo logic, those are main-transcript concerns.
|
|
19
|
+
//
|
|
20
|
+
// Claude subagent lines carry `isSidechain:true` — the main renderLine drops
|
|
21
|
+
// those; here they are the content, so the gate is intentionally absent.
|
|
22
|
+
import { readdirSync, readFileSync, statSync, watch, openSync, readSync, closeSync } from "node:fs";
|
|
23
|
+
import { dirname, join } from "node:path";
|
|
24
|
+
// detail 页的存储上限, 与 mirror-bridge 的 DETAIL_RESULT_MAX 对齐。
|
|
25
|
+
const RESULT_MAX = 64 * 1024;
|
|
26
|
+
const POLL_MS = 1000;
|
|
27
|
+
const MAX_AGENTS = 128;
|
|
28
|
+
const truncate = (s, max) => s.length <= max ? s : `${s.slice(0, max)}…(+${s.length - max})`;
|
|
29
|
+
const resultText = (c) => {
|
|
30
|
+
const v = c.content;
|
|
31
|
+
if (typeof v === "string")
|
|
32
|
+
return v;
|
|
33
|
+
if (!Array.isArray(v))
|
|
34
|
+
return "";
|
|
35
|
+
return v.map((b) => (typeof b?.text === "string" ? b.text : "")).filter(Boolean).join("\n");
|
|
36
|
+
};
|
|
37
|
+
// 单条归一化行 → items。与 mirror-bridge 的 renderLine 同源逻辑的精简版:
|
|
38
|
+
// 去掉 keepalive / goal / inject-echo / skill_output (主会话专属), 保留
|
|
39
|
+
// text(three-state final) / tool_use 分组 / tool_result / usage / 终态判定。
|
|
40
|
+
const classifyLine = (line) => {
|
|
41
|
+
const out = [];
|
|
42
|
+
if (line.type === "user") {
|
|
43
|
+
const c = line.message?.content;
|
|
44
|
+
if (typeof c === "string") {
|
|
45
|
+
// subagent 只有一条真实 user 行 (任务派发); 后续 string 行只可能是元数据。
|
|
46
|
+
return [{ kind: "task", body: c, meta: {} }];
|
|
47
|
+
}
|
|
48
|
+
if (Array.isArray(c)) {
|
|
49
|
+
for (const b of c) {
|
|
50
|
+
if (b?.type !== "tool_result")
|
|
51
|
+
continue;
|
|
52
|
+
const full = truncate(resultText(b), RESULT_MAX);
|
|
53
|
+
if (full)
|
|
54
|
+
out.push({ kind: "tool_result", toolUseId: b.tool_use_id ?? "", full });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return out;
|
|
58
|
+
}
|
|
59
|
+
if (line.type === "assistant") {
|
|
60
|
+
const blocks = line.message?.content;
|
|
61
|
+
if (!Array.isArray(blocks))
|
|
62
|
+
return [];
|
|
63
|
+
const sr = line.message?.stop_reason;
|
|
64
|
+
const isFinal = sr === "end_turn";
|
|
65
|
+
const textFinal = isFinal ? true : line.softTurnEnd ? undefined : false;
|
|
66
|
+
let pending = [];
|
|
67
|
+
const flushPending = () => {
|
|
68
|
+
if (pending.length === 0)
|
|
69
|
+
return;
|
|
70
|
+
out.push({ kind: "tool_use", calls: pending });
|
|
71
|
+
pending = [];
|
|
72
|
+
};
|
|
73
|
+
for (const b of blocks) {
|
|
74
|
+
if (b?.type === "text" && typeof b.text === "string") {
|
|
75
|
+
flushPending();
|
|
76
|
+
const t = b.text.trim();
|
|
77
|
+
if (t)
|
|
78
|
+
out.push({ kind: "text", body: t, final: textFinal });
|
|
79
|
+
}
|
|
80
|
+
else if (b?.type === "tool_use") {
|
|
81
|
+
const name = b.name ?? "tool";
|
|
82
|
+
if (pending.length > 0 && pending[0].name !== name)
|
|
83
|
+
flushPending();
|
|
84
|
+
pending.push({ toolUseId: b.id ?? "", name, input: b.input });
|
|
85
|
+
}
|
|
86
|
+
else if (b?.type === "thinking" && typeof b.thinking === "string") {
|
|
87
|
+
const thought = b.thinking.trim();
|
|
88
|
+
if (thought)
|
|
89
|
+
out.push({ kind: "thinking", body: thought });
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
flushPending();
|
|
93
|
+
const u = line.message?.usage;
|
|
94
|
+
if (u) {
|
|
95
|
+
const rawIn = u.input_tokens ?? 0;
|
|
96
|
+
const cr = u.cache_read_input_tokens ?? 0;
|
|
97
|
+
const cw = u.cache_creation_input_tokens ?? 0;
|
|
98
|
+
// 网关口径修正 — 与 renderLine 的 turn_usage 同一判据 (见 mirror-bridge 注释)。
|
|
99
|
+
const isTotalized = rawIn >= cr + cw;
|
|
100
|
+
out.push({
|
|
101
|
+
kind: "usage",
|
|
102
|
+
model: typeof line.message?.model === "string" ? line.message.model : undefined,
|
|
103
|
+
messageId: typeof line.message?.id === "string" ? line.message.id : undefined,
|
|
104
|
+
usage: {
|
|
105
|
+
input: isTotalized ? rawIn - cr - cw : rawIn,
|
|
106
|
+
output: u.output_tokens ?? 0,
|
|
107
|
+
cacheRead: cr,
|
|
108
|
+
cacheWrite: cw,
|
|
109
|
+
serviceTier: u.service_tier,
|
|
110
|
+
calls: 1,
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
// 终态判定与 renderLine 相同: 终态消息必含 text 块, 且从不拆出第二个 text 行。
|
|
115
|
+
if (isFinal && blocks.some((b) => b?.type === "text"))
|
|
116
|
+
out.push({ kind: "end" });
|
|
117
|
+
return out;
|
|
118
|
+
}
|
|
119
|
+
if (line.type === "system" && line.subtype === "turn_duration")
|
|
120
|
+
return [{ kind: "end" }];
|
|
121
|
+
return out;
|
|
122
|
+
};
|
|
123
|
+
export const startSubagentWatch = (deps) => {
|
|
124
|
+
const { log } = deps;
|
|
125
|
+
const agents = new Map();
|
|
126
|
+
let stopped = false;
|
|
127
|
+
let watcher;
|
|
128
|
+
let watchedDir = "";
|
|
129
|
+
// 目录已成功读过一次 = watch 建立时刻已过; 之后再出现的 agent 文件必是新 spawn。
|
|
130
|
+
let dirSeen = false;
|
|
131
|
+
const watchStart = Date.now();
|
|
132
|
+
// subagents 目录 = <dirname(live jsonl)>/<sessionId>/subagents。sessionId 在
|
|
133
|
+
// watch 创建时固定 — 会话轮换由 mirror-bridge 重建整个 watch。
|
|
134
|
+
const dirOf = () => {
|
|
135
|
+
const live = deps.liveJsonlPath();
|
|
136
|
+
return live ? join(dirname(live), deps.sessionId, "subagents") : undefined;
|
|
137
|
+
};
|
|
138
|
+
// Claude 在 agent 文件旁写 agent-<id>.meta.json {agentType, description};
|
|
139
|
+
// codebuddy 没有 — type 由 mirror-bridge 用父 Task input 对 prompt 匹配补上。
|
|
140
|
+
const readMeta = (dir, file) => {
|
|
141
|
+
try {
|
|
142
|
+
const j = JSON.parse(readFileSync(join(dir, `${file.replace(/\.jsonl$/, "")}.meta.json`), "utf8"));
|
|
143
|
+
return {
|
|
144
|
+
type: typeof j.agentType === "string" && j.agentType ? j.agentType : undefined,
|
|
145
|
+
description: typeof j.description === "string" && j.description ? j.description : undefined,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return {};
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
// end item → 标记 done (state 留在 map 里, 防止重扫时当新 agent 重建)。
|
|
153
|
+
// 包装一层而不是让 classify 回写 state —— classify 保持纯函数。
|
|
154
|
+
const onItem = (agentId, item) => {
|
|
155
|
+
deps.onAgentItem(agentId, item);
|
|
156
|
+
if (item.kind === "end") {
|
|
157
|
+
const st = agents.get(agentId);
|
|
158
|
+
if (st)
|
|
159
|
+
st.done = true;
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
const emit = (agentId, raw, meta) => {
|
|
163
|
+
let line;
|
|
164
|
+
try {
|
|
165
|
+
line = JSON.parse(raw);
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const normalized = deps.normalizeLine(line);
|
|
171
|
+
if (!normalized)
|
|
172
|
+
return;
|
|
173
|
+
for (const item of classifyLine(normalized)) {
|
|
174
|
+
onItem(agentId, item.kind === "task" ? { ...item, meta } : item);
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
const drainAgent = (dir, agentId, file) => {
|
|
178
|
+
const st = agents.get(agentId);
|
|
179
|
+
if (!st || st.done)
|
|
180
|
+
return;
|
|
181
|
+
const path = join(dir, file);
|
|
182
|
+
let size;
|
|
183
|
+
try {
|
|
184
|
+
size = statSync(path).size;
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return; // 目录刚迁移 / 文件暂不可见 — 下一轮 poll 再找
|
|
188
|
+
}
|
|
189
|
+
if (size < st.offset) {
|
|
190
|
+
// truncated/rotated — 对齐主 tail 的语义, 重置到新 EOF
|
|
191
|
+
st.offset = size;
|
|
192
|
+
st.buffer = "";
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (size > st.offset) {
|
|
196
|
+
const fd = openSync(path, "r");
|
|
197
|
+
try {
|
|
198
|
+
const len = size - st.offset;
|
|
199
|
+
const buf = Buffer.alloc(len);
|
|
200
|
+
readSync(fd, buf, 0, len, st.offset);
|
|
201
|
+
st.offset = size;
|
|
202
|
+
st.buffer += buf.toString("utf8");
|
|
203
|
+
}
|
|
204
|
+
finally {
|
|
205
|
+
closeSync(fd);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
let nl;
|
|
209
|
+
while ((nl = st.buffer.indexOf("\n")) !== -1) {
|
|
210
|
+
const line = st.buffer.slice(0, nl);
|
|
211
|
+
st.buffer = st.buffer.slice(nl + 1);
|
|
212
|
+
if (!line.trim())
|
|
213
|
+
continue;
|
|
214
|
+
const meta = st.sawUser ? {} : readMeta(dir, file); // 首行前读一次 meta
|
|
215
|
+
if (!st.sawUser)
|
|
216
|
+
st.sawUser = true;
|
|
217
|
+
emit(agentId, line, meta);
|
|
218
|
+
const after = agents.get(agentId);
|
|
219
|
+
if (after?.done)
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
const scan = () => {
|
|
224
|
+
if (stopped)
|
|
225
|
+
return;
|
|
226
|
+
const dir = dirOf();
|
|
227
|
+
if (!dir)
|
|
228
|
+
return;
|
|
229
|
+
let files;
|
|
230
|
+
try {
|
|
231
|
+
files = readdirSync(dir).filter((f) => f.startsWith("agent-") && f.endsWith(".jsonl"));
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
if (watchedDir !== dir) {
|
|
235
|
+
watcher?.close();
|
|
236
|
+
watcher = undefined;
|
|
237
|
+
watchedDir = "";
|
|
238
|
+
}
|
|
239
|
+
return; // 目录还不存在 — attach 早期 / 尚无 subagent
|
|
240
|
+
}
|
|
241
|
+
if (watchedDir !== dir) {
|
|
242
|
+
watcher?.close();
|
|
243
|
+
watchedDir = dir;
|
|
244
|
+
try {
|
|
245
|
+
watcher = watch(dir, { persistent: false }, () => scan());
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
watcher = undefined;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
for (const f of files) {
|
|
252
|
+
const id = f.replace(/^agent-/, "").replace(/\.jsonl$/, "");
|
|
253
|
+
if (agents.has(id))
|
|
254
|
+
continue;
|
|
255
|
+
if (agents.size >= MAX_AGENTS) {
|
|
256
|
+
log.warn({ agentCount: agents.size }, "subagent watch: cap reached, ignoring new agent");
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
// 与主 tail 同语义: watch 建立时已在盘上的 agent = 历史, 从 EOF 起不重放;
|
|
260
|
+
// watch 建立后才出现 = 本轮新 spawn, 从 0 起完整拿到 task 行。首扫目录时用
|
|
261
|
+
// mtime 区分「attach 前就有的老文件」(历史) 与「恰在 watch 前后 spawn 的」
|
|
262
|
+
// (新文件, mtime ≥ watchStart) —— 否则首扫恰逢首个 agent 建文件时, 会把新
|
|
263
|
+
// spawn 误判成历史、丢它的开头。dirSeen 之后再出现的文件一律是新 spawn。
|
|
264
|
+
let offset = 0;
|
|
265
|
+
if (!dirSeen) {
|
|
266
|
+
try {
|
|
267
|
+
const st = statSync(join(dir, f));
|
|
268
|
+
if (st.mtimeMs < watchStart)
|
|
269
|
+
offset = st.size;
|
|
270
|
+
}
|
|
271
|
+
catch {
|
|
272
|
+
offset = 0;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
agents.set(id, { offset, buffer: "", done: false, sawUser: false });
|
|
276
|
+
if (offset === 0)
|
|
277
|
+
log.info({ agentId: id }, "subagent watch: agent file appeared");
|
|
278
|
+
}
|
|
279
|
+
dirSeen = true;
|
|
280
|
+
for (const f of files) {
|
|
281
|
+
drainAgent(dir, f.replace(/^agent-/, "").replace(/\.jsonl$/, ""), f);
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
const poll = setInterval(scan, POLL_MS);
|
|
285
|
+
scan();
|
|
286
|
+
log.info("subagent watch started");
|
|
287
|
+
return {
|
|
288
|
+
stop: () => {
|
|
289
|
+
stopped = true;
|
|
290
|
+
watcher?.close();
|
|
291
|
+
clearInterval(poll);
|
|
292
|
+
},
|
|
293
|
+
};
|
|
294
|
+
};
|
|
295
|
+
//# sourceMappingURL=subagent-tail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-tail.js","sourceRoot":"","sources":["../../daemon/subagent-tail.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/tips.js
CHANGED
|
@@ -14,7 +14,7 @@ const TIPS = [
|
|
|
14
14
|
"`/stop` 打断当前生成,`/n` 补一个回车",
|
|
15
15
|
"`/usage` 看真实订阅额度 %,`/cost` 看 token 成本估算",
|
|
16
16
|
"`/audit` 看本会话(含 subagent)的 token / 成本明细",
|
|
17
|
-
"
|
|
17
|
+
"换项目:对 AI 说「切到 /path/to/proj」,`set_workspace` 一步换目录重开会话",
|
|
18
18
|
"直接发图片即可,会自动粘进 CLI 输入框",
|
|
19
19
|
"引用自己发过的命令再发一次,可以绕开微信的相同文本去重",
|
|
20
20
|
"对 AI 说「订阅 xxx」「每天8点广播 xxx: …」即可做事件订阅 / 定时播报(走 MCP 工具)",
|
package/dist/daemon/tips.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tips.js","sourceRoot":"","sources":["../../daemon/tips.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,6EAA6E;AAC7E,6BAA6B;AAE7B,MAAM,IAAI,GAAsB;IAC9B,gBAAgB;IAChB,6CAA6C;IAC7C,6CAA6C;IAC7C,qEAAqE;IACrE,2BAA2B;IAC3B,yCAAyC;IACzC,yCAAyC;IACzC,
|
|
1
|
+
{"version":3,"file":"tips.js","sourceRoot":"","sources":["../../daemon/tips.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,6EAA6E;AAC7E,6BAA6B;AAE7B,MAAM,IAAI,GAAsB;IAC9B,gBAAgB;IAChB,6CAA6C;IAC7C,6CAA6C;IAC7C,qEAAqE;IACrE,2BAA2B;IAC3B,yCAAyC;IACzC,yCAAyC;IACzC,wDAAwD;IACxD,uBAAuB;IACvB,6BAA6B;IAC7B,uDAAuD;IACvD,kCAAkC;CACnC,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAE,EAAE,CAAC"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -98,7 +98,7 @@ const normalizeTarget = (raw) => {
|
|
|
98
98
|
};
|
|
99
99
|
server.registerTool("wrc", {
|
|
100
100
|
title: "WeCom remote control",
|
|
101
|
-
description: "wecom remote control — attach current
|
|
101
|
+
description: "wecom remote control — attach the current agent session to a WeCom chat for live mirror push",
|
|
102
102
|
inputSchema: {
|
|
103
103
|
target: z
|
|
104
104
|
.string()
|
|
@@ -134,32 +134,28 @@ server.registerTool("wrc", {
|
|
|
134
134
|
? ok({ ok: true, sessionId: r.sessionId, target: j.target })
|
|
135
135
|
: fail(`attach failed: ${j.reason ?? "unknown"}`);
|
|
136
136
|
});
|
|
137
|
-
//
|
|
138
|
-
//
|
|
139
|
-
//
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
//
|
|
145
|
-
server.registerTool("
|
|
146
|
-
title: "
|
|
147
|
-
description: "
|
|
137
|
+
// set_workspace — one-shot project switch: the daemon applies the switch
|
|
138
|
+
// itself by walking the exact /new path — setPendingCwd → kill pane →
|
|
139
|
+
// respawn in the new cwd → attach → "📂 当前项目" push. NOTE: when the
|
|
140
|
+
// caller IS the chat's session being replaced (the common case), its own
|
|
141
|
+
// pane is killed mid-tool-call — the tool result never returns, and the
|
|
142
|
+
// project-info bubble in the chat is the receipt. On spawn failure the
|
|
143
|
+
// pendingCwd stays queued, so a manual /new from WeCom still completes
|
|
144
|
+
// the switch.
|
|
145
|
+
server.registerTool("set_workspace", {
|
|
146
|
+
title: "Switch workspace directory",
|
|
147
|
+
description: "Switch this chat's agent session to a different project directory in ONE shot: kill the current pane and spawn a FRESH session rooted at the given cwd — equivalent to a /new into that directory. The chat receives the new session's 📂 project-info bubble as the receipt; conversation context is NOT carried over (fresh session, same as /new). If the caller is the session being replaced it is terminated mid-call — expected, the bubble is the receipt. Use absolute paths (or paths starting with ~).",
|
|
148
148
|
inputSchema: {
|
|
149
149
|
cwd: z.string().describe("Absolute project path, e.g. /Users/foo/projects/bar. ~ is expanded."),
|
|
150
150
|
target: z
|
|
151
151
|
.string()
|
|
152
152
|
.optional()
|
|
153
|
-
.describe('Optional target override. "vid:<userid>" / "chatid:<chatid>" / raw "user:<id>"/"chat:<id>". Empty → derive from
|
|
153
|
+
.describe('Optional target override. "vid:<userid>" / "chatid:<chatid>" / raw "user:<id>"/"chat:<id>". Empty → derive from the calling session.'),
|
|
154
154
|
},
|
|
155
155
|
}, async ({ cwd, target }) => {
|
|
156
|
-
const sessionId
|
|
157
|
-
// sessionId in our env is frozen at MCP spawn; a `/clear` rotates the live
|
|
158
|
-
// session, stranding pendingCwd on defaultChat. TMUX_PANE is stable across
|
|
159
|
-
// clears, so send it as the reliable fallback key.
|
|
160
|
-
const tmuxPane = process.env.TMUX_PANE?.trim();
|
|
156
|
+
const { sessionId, tmuxPane } = selfRef();
|
|
161
157
|
const normalizedTarget = normalizeTarget(target);
|
|
162
|
-
const resp = await fetch(`${DAEMON_BASE}/mirror/
|
|
158
|
+
const resp = await fetch(`${DAEMON_BASE}/mirror/workspace`, {
|
|
163
159
|
method: "POST",
|
|
164
160
|
headers: { "content-type": "application/json" },
|
|
165
161
|
body: JSON.stringify({
|
|
@@ -170,15 +166,10 @@ server.registerTool("enter", {
|
|
|
170
166
|
}),
|
|
171
167
|
});
|
|
172
168
|
const j = (await resp.json().catch(() => ({})));
|
|
173
|
-
if (!j.ok)
|
|
174
|
-
return fail(`
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
target: j.target,
|
|
178
|
-
runningCwd: j.runningCwd,
|
|
179
|
-
pendingCwd: j.pendingCwd,
|
|
180
|
-
hint: "Send `/clear` or `/new` FROM THE WECOM SIDE to apply. Local-REPL `/clear` will NOT switch cwd — only WeCom-originated commands flow through the daemon's kill-pane + respawn-in-pendingCwd path.",
|
|
181
|
-
});
|
|
169
|
+
if (!j.ok) {
|
|
170
|
+
return fail(`set_workspace failed: ${j.reason ?? "unknown"}${j.pendingCwd ? ` (switch queued for ${j.pendingCwd} — send /new from WeCom to apply)` : ""}`);
|
|
171
|
+
}
|
|
172
|
+
return ok({ ok: true, target: j.target, sessionId: j.sessionId, cwd: j.cwd });
|
|
182
173
|
});
|
|
183
174
|
// 企业微信 doc / smartsheet / contact MCP 桥接。把 daemon 远端的 MCP 转发
|
|
184
175
|
// 给本地 Claude: list_tools 列工具, call_tool 调用 (创建文档 / 写表格 / 读
|
|
@@ -237,8 +228,8 @@ server.registerTool("wecom_doc_call", {
|
|
|
237
228
|
// 那个" / "在 /path 下新建一个 session" in natural language. The daemon does the
|
|
238
229
|
// host-wide /proc + tmux scan (an MCP tool can only see its OWN session).
|
|
239
230
|
server.registerTool("list_claude_sessions", {
|
|
240
|
-
title: "List running
|
|
241
|
-
description: "List all
|
|
231
|
+
title: "List running agent sessions",
|
|
232
|
+
description: "List all agent sessions currently running in tmux on this host (claude / claude-internal / codebuddy backends alike), each with a stable animal-emoji label, its working directory, tmux location, and a short summary of what it's recently been doing. Call this whenever the user asks to see / list / switch between sessions (e.g. '列出所有 claude session', '有哪些会话在跑', '我想切换 session'). Present the result to the user as a readable numbered list (emoji + dir + summary), and note which one is the current mirror target (`current: true`).",
|
|
242
233
|
inputSchema: {},
|
|
243
234
|
}, async () => {
|
|
244
235
|
const resp = await fetch(`${DAEMON_BASE}/sessions/list`, { method: "GET" });
|
|
@@ -246,8 +237,8 @@ server.registerTool("list_claude_sessions", {
|
|
|
246
237
|
return j.ok ? ok(j) : fail(`list_claude_sessions failed: ${j.reason ?? `http ${resp.status}`}`);
|
|
247
238
|
});
|
|
248
239
|
server.registerTool("switch_claude_session", {
|
|
249
|
-
title: "Switch WeCom mirror to another
|
|
250
|
-
description: "Re-point the WeCom mirror at a different already-running
|
|
240
|
+
title: "Switch WeCom mirror to another agent session",
|
|
241
|
+
description: "Re-point the WeCom mirror at a different already-running agent session, so the user's IM chat starts mirroring (and injecting into) that session instead. Call this when the user picks a session to switch to — e.g. '切到 wezard 那个', '镜像第2个', '换到 🦊 那个会话'. First call list_claude_sessions to resolve the user's natural-language reference (emoji / directory / topic) to a concrete sessionId, then pass that sessionId here.",
|
|
251
242
|
inputSchema: {
|
|
252
243
|
sessionId: z.string().describe("The target session's sessionId (a UUID), as returned by list_claude_sessions."),
|
|
253
244
|
},
|