wezard 0.3.3 → 1.1.0

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 (69) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +3 -3
  3. package/CLAUDE.md +14 -14
  4. package/LICENSE +1 -1
  5. package/README.md +38 -38
  6. package/cli/{weclaude.sh → wezard.sh} +40 -35
  7. package/commands/audit.md +2 -2
  8. package/commands/wrc.md +2 -2
  9. package/config.example.jsonc +24 -11
  10. package/dist/cli/audit.js +2 -2
  11. package/dist/cli/audit.js.map +1 -1
  12. package/dist/cli/init.js +97 -24
  13. package/dist/cli/init.js.map +1 -1
  14. package/dist/cli/migrate.js +213 -0
  15. package/dist/cli/migrate.js.map +1 -0
  16. package/dist/cli/sync.js +34 -26
  17. package/dist/cli/sync.js.map +1 -1
  18. package/dist/daemon/approval.js +45 -21
  19. package/dist/daemon/approval.js.map +1 -1
  20. package/dist/daemon/audit.js +1 -1
  21. package/dist/daemon/audit.js.map +1 -1
  22. package/dist/daemon/cc-bridge.js +1 -1
  23. package/dist/daemon/cc-bridge.js.map +1 -1
  24. package/dist/daemon/cfg-sync.js +4 -4
  25. package/dist/daemon/cfg-sync.js.map +1 -1
  26. package/dist/daemon/claim.js +2 -2
  27. package/dist/daemon/claim.js.map +1 -1
  28. package/dist/daemon/danger.js +102 -0
  29. package/dist/daemon/danger.js.map +1 -0
  30. package/dist/daemon/inbound.js +42 -40
  31. package/dist/daemon/inbound.js.map +1 -1
  32. package/dist/daemon/index.js +7 -7
  33. package/dist/daemon/index.js.map +1 -1
  34. package/dist/daemon/mirror-bridge.js +40 -15
  35. package/dist/daemon/mirror-bridge.js.map +1 -1
  36. package/dist/daemon/pending.js +4 -0
  37. package/dist/daemon/pending.js.map +1 -1
  38. package/dist/daemon/quota.js +1 -1
  39. package/dist/daemon/quota.js.map +1 -1
  40. package/dist/daemon/session-scan.js +88 -26
  41. package/dist/daemon/session-scan.js.map +1 -1
  42. package/dist/daemon/spawn-tmux.js +5 -5
  43. package/dist/daemon/spawn-tmux.js.map +1 -1
  44. package/dist/daemon/usage.js +1 -1
  45. package/dist/daemon/usage.js.map +1 -1
  46. package/dist/daemon/wedoc.js +2 -2
  47. package/dist/daemon/wedoc.js.map +1 -1
  48. package/dist/mcp/server.js +4 -4
  49. package/dist/mcp/server.js.map +1 -1
  50. package/dist/shared/config-writer.js +1 -1
  51. package/dist/shared/config-writer.js.map +1 -1
  52. package/dist/shared/config.js +32 -19
  53. package/dist/shared/config.js.map +1 -1
  54. package/dist/shared/detail-render.js +21 -1
  55. package/dist/shared/detail-render.js.map +1 -1
  56. package/dist/shared/detail-store.js +6 -0
  57. package/dist/shared/detail-store.js.map +1 -1
  58. package/dist/shared/svr-token.js +22 -0
  59. package/dist/shared/svr-token.js.map +1 -0
  60. package/dist/svr/index.js +16 -31
  61. package/dist/svr/index.js.map +1 -1
  62. package/hooks/pre-tool-use.sh +24 -24
  63. package/launchd/{com.weclaude.daemon.plist.template → com.wezard.daemon.plist.template} +3 -3
  64. package/package.json +17 -14
  65. package/scripts/install.sh +15 -8
  66. package/scripts/postinstall.sh +2 -2
  67. package/scripts/uninstall.sh +35 -27
  68. package/systemd/{weclaude.service.template → wezard.service.template} +3 -3
  69. package/web/chat.css +19 -5
package/dist/cli/init.js CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
- // `weclaude init` — interactive onboarding for new users.
2
+ // `wezard init` — interactive onboarding for new users.
3
3
  // Flow:
4
4
  // 1. Prompt creds + agent kind + hook toggle.
5
- // 2. Write ~/.weclaude/config.jsonc + secrets.json (split secrets).
6
- // 3. Build (if needed), run `weclaude sync` against chosen agent settings.json,
5
+ // 2. Write ~/.wezard/config.jsonc + secrets.json (split secrets).
6
+ // 3. Build (if needed), run `wezard sync` against chosen agent settings.json,
7
7
  // install resident daemon.
8
8
  // 4. Arm bootstrap claim. Wait for the user to send a magic phrase in IM.
9
9
  // That message bypasses allowFrom, sets defaultChat, and adds the sender.
@@ -16,11 +16,17 @@ import { input, password, select, confirm, checkbox } from "@inquirer/prompts";
16
16
  import { parse as parseJsonc } from "jsonc-parser";
17
17
  import { patchJsonc } from "../shared/config-writer.js";
18
18
  import { expandHome } from "../shared/paths.js";
19
+ import { resolvePublicHost } from "../shared/lan-ip.js";
20
+ import { loadOrCreateSvrToken } from "../shared/svr-token.js";
19
21
  const here = dirname(fileURLToPath(import.meta.url));
20
22
  const REPO = pathResolve(here, "..", "..");
21
- const CONFIG = "~/.weclaude/config.jsonc";
22
- const SECRETS = "~/.weclaude/secrets.json";
23
+ const CONFIG = "~/.wezard/config.jsonc";
24
+ const SECRETS = "~/.wezard/secrets.json";
23
25
  const CLAIM_PHRASE = "将本对话设置为默认会话";
26
+ const SVR_HOST = "0.0.0.0";
27
+ const SVR_PORT = 17891;
28
+ const SVR_STATE = "~/.wezard/svr";
29
+ const SVR_TOKEN_FILE = "~/.wezard/svr-token";
24
30
  // ── Pretty output (no ink — keep deps light) ─────────────────────────
25
31
  const c = {
26
32
  dim: (s) => `\x1b[2m${s}\x1b[0m`,
@@ -97,12 +103,57 @@ const runSync = () => {
97
103
  };
98
104
  const installDaemon = () => {
99
105
  log(c.dim(" installing resident daemon..."));
100
- const r = spawnSync("bash", [`${REPO}/scripts/install.sh`], { stdio: "inherit" });
106
+ const r = spawnSync("bash", [`${REPO}/scripts/install.sh`, "daemon"], { stdio: "inherit" });
101
107
  if (r.status !== 0)
102
108
  throw new Error("install.sh failed");
103
109
  };
110
+ // ── Detail relay (svr) ───────────────────────────────────────────────
111
+ // 卡片里的 chat/detail 链接根不能是回环 —— 用户点开是在手机/企微内置浏览器里,
112
+ // 回环指向的是他自己的设备。所以链接用本机 LAN IP,同网段即可直连。
113
+ // svr 与 daemon 同机也值得独立跑: 记录经 POST /d 转发, 日后把 svr 挪到公网机器
114
+ // 只需改 daemon.detailRemoteBase, daemon 侧零改动。
115
+ const installSvr = () => {
116
+ log(c.dim(" installing detail relay (svr)..."));
117
+ const r = spawnSync("bash", [`${REPO}/scripts/install.sh`, "svr"], { stdio: "inherit" });
118
+ if (r.status !== 0)
119
+ throw new Error("install.sh svr failed");
120
+ };
121
+ // 探活走回环 —— svr 绑 0.0.0.0, 本机 curl 得到的是同一个监听。LAN IP 只用于链接文案。
122
+ const waitSvrReady = async (port, timeoutMs) => {
123
+ const deadline = Date.now() + timeoutMs;
124
+ while (Date.now() < deadline) {
125
+ const ok = await fetch(`http://127.0.0.1:${port}/healthz`)
126
+ .then((r) => r.ok)
127
+ .catch(() => false);
128
+ if (ok)
129
+ return;
130
+ await sleep(500);
131
+ }
132
+ throw new Error(`svr did not answer /healthz on :${port} — 查看 ~/.wezard/svr.stderr.log (端口占用?)`);
133
+ };
134
+ // 回环通 ≠ 链接可用: macOS 应用防火墙的 block-all 模式放行 loopback, 却把 LAN
135
+ // 入连接建连后直接掐断 (curl 表现为 "Empty reply from server")。等用户点开卡片
136
+ // 链接才发现是死链就太晚了 —— init 阶段按最终链接根实测一次。
137
+ const warnIfLanBlocked = async (base, ip) => {
138
+ if (ip === "127.0.0.1")
139
+ return;
140
+ const ok = await fetch(`${base}/healthz`, { signal: AbortSignal.timeout(3000) })
141
+ .then((r) => r.ok)
142
+ .catch(() => false);
143
+ if (ok)
144
+ return;
145
+ log(c.yellow(` ⚠ ${base} 回环可达但内网不可达 — 手机/企微里点开链接会打不开。`));
146
+ if (process.platform === "darwin") {
147
+ log(c.yellow(" macOS 应用防火墙拦了 node 的入连接,放行后即可:"));
148
+ log(c.dim(" sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setblockall off"));
149
+ log(c.dim(` sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp "$(command -v node)"`));
150
+ }
151
+ else {
152
+ log(c.yellow(` 检查防火墙是否放行 ${SVR_PORT}/tcp。`));
153
+ }
154
+ };
104
155
  // Register the local repo as a Claude Code marketplace and install the
105
- // `weclaude` plugin from it. This is what wires up `hooks/hooks.json` (so
156
+ // `wezard` plugin from it. This is what wires up `hooks/hooks.json` (so
106
157
  // `${CLAUDE_PLUGIN_ROOT}` resolves) + `commands/wrc.md` + the MCP server
107
158
  // declared in `.claude-plugin/plugin.json`. Idempotent: marketplace add
108
159
  // re-uses the existing entry, install upgrades in place.
@@ -123,11 +174,11 @@ const installPlugin = (claudeBin) => {
123
174
  ` 若提示无法启动: ${claudeBin} 不在 PATH 或是 shell alias/函数, 请用绝对路径重试。\n` +
124
175
  ` 手动: ${claudeBin} plugin marketplace add ${REPO}`);
125
176
  }
126
- const i = spawnSync(claudeBin, ["plugin", "install", "weclaude@weclaude-local", "--scope", "user"], { stdio: "inherit" });
177
+ const i = spawnSync(claudeBin, ["plugin", "install", "wezard@wezard-local", "--scope", "user"], { stdio: "inherit" });
127
178
  if (i.status !== 0) {
128
179
  throw new Error(`plugin install 失败 (${describeSpawn(i)}) — hook 无法注册。\n` +
129
180
  ` 常见原因: ${claudeBin} 版本过旧,不支持当前插件源类型 — 请先升级 ${claudeBin} 后重试 init。\n` +
130
- ` 手动: ${claudeBin} plugin install weclaude@weclaude-local --scope user`);
181
+ ` 手动: ${claudeBin} plugin install wezard@wezard-local --scope user`);
131
182
  }
132
183
  };
133
184
  const waitDaemonReady = async (timeoutMs) => {
@@ -147,7 +198,7 @@ const waitDaemonReady = async (timeoutMs) => {
147
198
  };
148
199
  // ── Main flow ────────────────────────────────────────────────────────
149
200
  const main = async () => {
150
- log(c.bold("\nweclaude · 新用户引导\n"));
201
+ log(c.bold("\nwezard · 新用户引导\n"));
151
202
  log(c.dim(" 目标:3 步内完成 → IM 授权转发 + 远程 CC 控制可用。\n"));
152
203
  if (existsSync(expandHome(CONFIG))) {
153
204
  const ok = await confirm({
@@ -218,6 +269,14 @@ const main = async () => {
218
269
  }
219
270
  const claudeBin = claudeBinFor(primary);
220
271
  // ── Step 1b: write configs ─────────────────────────────────────
272
+ // svr 的 base/token 必须在 daemon 起来之前落盘 —— daemon 只在 boot 时读一次
273
+ // detailRemoteBase/Token, 晚写等于第一轮链接全指向回环。
274
+ const svrIP = resolvePublicHost(SVR_HOST);
275
+ const svrBase = `http://${svrIP}:${SVR_PORT}`;
276
+ const svrToken = loadOrCreateSvrToken(SVR_TOKEN_FILE);
277
+ if (svrIP === "127.0.0.1") {
278
+ log(c.yellow(" ⚠ 未探测到内网 IP,详情链接将只在本机可打开 (可稍后改 daemon.detailPublicBase)"));
279
+ }
221
280
  log(c.dim(` 写入 ${CONFIG} ...`));
222
281
  patchJsonc(CONFIG, [
223
282
  { path: ["bot", "websocketUrl"], value: "wss://openws.work.weixin.qq.com" },
@@ -225,22 +284,32 @@ const main = async () => {
225
284
  { path: ["wrc", "mode"], value: wrcMode },
226
285
  { path: ["wrc", "claudeBin"], value: claudeBin },
227
286
  { path: ["wrc", "defaultCli"], value: backendNameFor(primary) },
228
- { path: ["wrc", "cwd"], value: "~/.weclaude/workspace" },
287
+ { path: ["wrc", "cwd"], value: "~/.wezard/workspace" },
229
288
  { path: ["wrc", "allowFrom"], value: [] },
230
289
  { path: ["approval", "enabled"], value: enableHook },
231
290
  { path: ["approval", "matcher"], value: ".*" },
232
291
  { path: ["sync", "targets"], value: targets },
292
+ { path: ["svr", "host"], value: SVR_HOST },
293
+ { path: ["svr", "port"], value: SVR_PORT },
294
+ { path: ["svr", "stateDir"], value: SVR_STATE },
295
+ { path: ["svr", "tokenFile"], value: SVR_TOKEN_FILE },
296
+ { path: ["daemon", "detailRemoteBase"], value: svrBase },
233
297
  ]);
234
- if (botId === existing.botId && secret === existing.secret) {
298
+ // token secrets.json 而不是 config.jsonc —— 后者常被丢进 dotfile 仓库。
299
+ const credsChanged = botId !== existing.botId || secret !== existing.secret;
300
+ if (!credsChanged)
235
301
  log(c.dim(` 复用 ${SECRETS} 中的凭证 (未改写)`));
236
- }
237
- else {
302
+ else
238
303
  log(c.dim(` 写入 ${SECRETS} ...`));
239
- patchJsonc(SECRETS, [
240
- { path: ["bot", "botId"], value: botId },
241
- { path: ["bot", "secret"], value: secret },
242
- ]);
243
- }
304
+ patchJsonc(SECRETS, [
305
+ ...(credsChanged
306
+ ? [
307
+ { path: ["bot", "botId"], value: botId },
308
+ { path: ["bot", "secret"], value: secret },
309
+ ]
310
+ : []),
311
+ { path: ["daemon", "detailRemoteToken"], value: svrToken },
312
+ ]);
244
313
  ensureBuild();
245
314
  if (enableHook)
246
315
  runSync();
@@ -251,6 +320,10 @@ const main = async () => {
251
320
  for (const bin of pluginBins)
252
321
  installPlugin(bin);
253
322
  }
323
+ installSvr();
324
+ await waitSvrReady(SVR_PORT, 20_000);
325
+ log(c.green(` ✓ svr ready — 详情/会话链接根: ${c.bold(svrBase)}`));
326
+ await warnIfLanBlocked(svrBase, svrIP);
254
327
  installDaemon();
255
328
  log(c.dim(" 等待 daemon 上线..."));
256
329
  await waitDaemonReady(20_000);
@@ -270,7 +343,7 @@ const main = async () => {
270
343
  // ── Step 3: spin up mirror pane ────────────────────────────────
271
344
  step(3, "拉起 mirror 会话");
272
345
  if (!enableHook || wrcMode !== "mirror") {
273
- log(c.green("\n✅ 引导完成。后续可用 `weclaude status` / `weclaude logs -f` 观察。"));
346
+ log(c.green("\n✅ 引导完成。后续可用 `wezard status` / `wezard logs -f` 观察。"));
274
347
  return;
275
348
  }
276
349
  // Mirror 路径:拉起 tmux+claude pane,然后让用户在 WeCom 发首条消息。
@@ -280,14 +353,14 @@ const main = async () => {
280
353
  const r = (await post("/mirror/spawn", { target: claimed }));
281
354
  if (!r.ok) {
282
355
  log(c.red(` ✗ /mirror/spawn 失败: ${r.reason ?? "unknown"}`));
283
- log(c.yellow(" 可手动: tmux new-session -s weclaude 后跑 claude;或在 WeCom 发任意消息触发 auto-spawn。"));
356
+ log(c.yellow(" 可手动: tmux new-session -s wezard 后跑 claude;或在 WeCom 发任意消息触发 auto-spawn。"));
284
357
  return;
285
358
  }
286
359
  log(c.green(` ✓ tmux session=${c.bold(r.tmuxSession ?? "")} pane=${r.tmuxPane ?? ""} sid=${r.sessionId ?? ""}`));
287
- log(c.dim(` 附加: tmux attach -t ${r.tmuxSession ?? "weclaude"}`));
360
+ log(c.dim(` 附加: tmux attach -t ${r.tmuxSession ?? "wezard"}`));
288
361
  log(`\n ${c.bold("→ 现在去 WeCom 给机器人发一条消息(比如 \"hi\"):")}`);
289
362
  log(c.dim(" inbound → openStream → 注入 tmux pane → 输出回流为打字机气泡"));
290
- log(c.green("\n✅ 引导完成。后续可用 `weclaude status` / `weclaude logs -f` 观察。"));
363
+ log(c.green("\n✅ 引导完成。后续可用 `wezard status` / `wezard logs -f` 观察。"));
291
364
  };
292
365
  const pollClaim = async (timeoutMs) => {
293
366
  const deadline = Date.now() + timeoutMs;
@@ -303,7 +376,7 @@ const pollClaim = async (timeoutMs) => {
303
376
  };
304
377
  main().catch((e) => {
305
378
  // eslint-disable-next-line no-console
306
- console.error(c.red(`\n[weclaude-init] ${e.message}`));
379
+ console.error(c.red(`\n[wezard-init] ${e.message}`));
307
380
  process.exit(1);
308
381
  });
309
382
  // keep loadConfig reference reachable for tree-shaking sanity (used by sub-binaries)
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../cli/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../cli/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ #!/usr/bin/env node
2
+ // `wezard migrate` — one-shot upgrade from a pre-rename `weclaude` install.
3
+ //
4
+ // The two names collide on everything that matters (port 17890, the plugin id,
5
+ // the hook/MCP/env blocks inside each agent's settings.json), so they can never
6
+ // run side by side. Order below is load-bearing:
7
+ // 1. stop + deregister the old daemon — frees :17890 before step 5
8
+ // 2. drop the old plugin + marketplace — else the hook fires twice
9
+ // 3. copy ~/.weclaude → ~/.wezard, rewriting only *path-anchored* mentions
10
+ // 4. re-sync settings.json — sync.ts strips the WECLAUDE_* block
11
+ // 5. install + start the daemon under the new label
12
+ //
13
+ // Non-destructive by default: the old state dir is left untouched (`--purge`
14
+ // removes it) so a failed migration is a `rm -rf ~/.wezard` away from a retry.
15
+ import { cpSync, existsSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
16
+ import { homedir } from "node:os";
17
+ import { dirname, join, resolve as pathResolve } from "node:path";
18
+ import { fileURLToPath } from "node:url";
19
+ import { spawnSync } from "node:child_process";
20
+ import { confirm } from "@inquirer/prompts";
21
+ import { loadConfig } from "../shared/config.js";
22
+ import { expandHome } from "../shared/paths.js";
23
+ const here = dirname(fileURLToPath(import.meta.url));
24
+ const REPO = pathResolve(here, "..", "..");
25
+ // Everything the old install owned, by name.
26
+ const OLD = {
27
+ tilde: "~/.weclaude",
28
+ label: "com.weclaude.daemon",
29
+ unit: "weclaude.service",
30
+ plugin: "weclaude@weclaude-local",
31
+ marketplace: "weclaude-local",
32
+ };
33
+ const NEW_TILDE = "~/.wezard";
34
+ const c = {
35
+ dim: (s) => `\x1b[2m${s}\x1b[0m`,
36
+ bold: (s) => `\x1b[1m${s}\x1b[0m`,
37
+ green: (s) => `\x1b[32m${s}\x1b[0m`,
38
+ cyan: (s) => `\x1b[36m${s}\x1b[0m`,
39
+ yellow: (s) => `\x1b[33m${s}\x1b[0m`,
40
+ red: (s) => `\x1b[31m${s}\x1b[0m`,
41
+ };
42
+ const log = (s) => console.log(s);
43
+ const parseArgs = (argv) => ({
44
+ dryRun: argv.includes("--dry-run"),
45
+ force: argv.includes("--force"),
46
+ purge: argv.includes("--purge"),
47
+ yes: argv.includes("--yes") || argv.includes("-y"),
48
+ });
49
+ // ── Shell helpers ────────────────────────────────────────────────────
50
+ // Every teardown step is best-effort: a half-uninstalled old release (plist
51
+ // gone but plugin still registered, or vice versa) must not abort the swap.
52
+ const quiet = (cmd, args) => spawnSync(cmd, args, { stdio: "ignore" }).status === 0;
53
+ const loud = (cmd, args, cwd) => {
54
+ const r = spawnSync(cmd, args, { stdio: "inherit", cwd });
55
+ if (r.status !== 0)
56
+ throw new Error(`${cmd} ${args.join(" ")} failed (${r.status ?? r.signal})`);
57
+ };
58
+ const has = (bin) => quiet("which", [bin]);
59
+ // ── 1. Stop + deregister the old daemon ──────────────────────────────
60
+ const stopOldDaemon = async (dry) => {
61
+ log(c.dim(" [1/5] 停止旧 daemon ..."));
62
+ if (dry)
63
+ return;
64
+ // HTTP shutdown first: lets the daemon flush state before launchd kills it.
65
+ await fetch("http://127.0.0.1:17890/shutdown", { method: "POST" }).catch(() => undefined);
66
+ if (process.platform === "darwin") {
67
+ const plist = join(homedir(), "Library/LaunchAgents", `${OLD.label}.plist`);
68
+ quiet("launchctl", ["bootout", `gui/${process.getuid?.() ?? 0}/${OLD.label}`]);
69
+ quiet("launchctl", ["unload", plist]);
70
+ if (existsSync(plist)) {
71
+ rmSync(plist);
72
+ log(c.dim(` removed ${plist}`));
73
+ }
74
+ }
75
+ else {
76
+ const unit = join(homedir(), ".config/systemd/user", OLD.unit);
77
+ quiet("systemctl", ["--user", "disable", "--now", OLD.unit]);
78
+ if (existsSync(unit)) {
79
+ rmSync(unit);
80
+ log(c.dim(` removed ${unit}`));
81
+ }
82
+ quiet("systemctl", ["--user", "daemon-reload"]);
83
+ }
84
+ quiet("pkill", ["-f", "weclaude/dist/daemon/index.js"]);
85
+ };
86
+ // ── 2. Drop the old Claude Code plugin ───────────────────────────────
87
+ // Both bins are tried because either could have run the original `init`.
88
+ const dropOldPlugin = (dry) => {
89
+ log(c.dim(" [2/5] 卸载旧插件 + marketplace ..."));
90
+ if (dry)
91
+ return;
92
+ for (const bin of ["claude", "claude-internal", "codebuddy"]) {
93
+ if (!has(bin))
94
+ continue;
95
+ if (quiet(bin, ["plugin", "uninstall", OLD.plugin]))
96
+ log(c.dim(` ${bin}: plugin uninstalled`));
97
+ if (quiet(bin, ["plugin", "marketplace", "remove", OLD.marketplace]))
98
+ log(c.dim(` ${bin}: marketplace removed`));
99
+ }
100
+ };
101
+ // ── 3. Copy state, rewriting path-anchored mentions ──────────────────
102
+ // Only `~/.weclaude` and `$HOME/.weclaude` are rewritten — a blanket
103
+ // s/weclaude/wezard/ would corrupt every recorded cwd, transcript path and
104
+ // session key belonging to a project that merely *happens* to be named
105
+ // weclaude (this repo, for one).
106
+ const REWRITABLE = /\.(jsonc?|txt|ya?ml|sh)$/;
107
+ const MAX_REWRITE_BYTES = 8 * 1024 * 1024;
108
+ const retarget = (txt) => txt
109
+ .replaceAll(`${homedir()}/.weclaude`, `${homedir()}/.wezard`)
110
+ .replaceAll("~/.weclaude", NEW_TILDE);
111
+ const rewriteTree = (dir) => readdirSync(dir, { withFileTypes: true }).reduce((n, e) => {
112
+ const abs = join(dir, e.name);
113
+ if (e.isDirectory())
114
+ return n + rewriteTree(abs);
115
+ if (!e.isFile() || !REWRITABLE.test(e.name))
116
+ return n;
117
+ if (statSync(abs).size > MAX_REWRITE_BYTES)
118
+ return n;
119
+ const txt = readFileSync(abs, "utf8");
120
+ const next = retarget(txt);
121
+ if (next === txt)
122
+ return n;
123
+ writeFileSync(abs, next, "utf8");
124
+ return n + 1;
125
+ }, 0);
126
+ const copyState = (oldDir, newDir, o) => {
127
+ log(c.dim(` [3/5] 迁移状态 ${OLD.tilde} → ${NEW_TILDE} ...`));
128
+ if (existsSync(newDir) && !o.force) {
129
+ throw new Error(`${NEW_TILDE} 已存在 — 用 --force 覆盖, 或先 rm -rf ${NEW_TILDE}`);
130
+ }
131
+ if (o.dryRun)
132
+ return;
133
+ cpSync(oldDir, newDir, { recursive: true, force: true });
134
+ const touched = rewriteTree(newDir);
135
+ log(c.dim(` copied, ${touched} 个文件里的路径已改写`));
136
+ };
137
+ // ── 4/5. Re-register under the new name ──────────────────────────────
138
+ const ensureBuild = () => {
139
+ if (existsSync(`${REPO}/dist/daemon/index.js`))
140
+ return;
141
+ log(c.dim(" building..."));
142
+ loud("npx", ["tsc", "-p", "tsconfig.json"], REPO);
143
+ };
144
+ // sync.targets is the authoritative list of agents this install feeds; the
145
+ // plugin only exists for the claude family (codebuddy is settings.json-only).
146
+ const pluginBinsFor = (targets) => [
147
+ ...new Set(targets
148
+ .filter((t) => t.kind !== "codebuddy")
149
+ .map((t) => (t.settingsPath.includes(".claude-internal") ? "claude-internal" : "claude"))),
150
+ ];
151
+ const installPlugin = (bin) => {
152
+ if (!has(bin)) {
153
+ log(c.yellow(` ${bin} 不在 PATH — 跳过插件注册, 之后手动跑 wezard init`));
154
+ return;
155
+ }
156
+ loud(bin, ["plugin", "marketplace", "add", REPO]);
157
+ loud(bin, ["plugin", "install", "wezard@wezard-local", "--scope", "user"]);
158
+ log(c.dim(` ${bin}: plugin installed`));
159
+ };
160
+ const reinstall = (o) => {
161
+ log(c.dim(" [4/5] 重写 settings.json (hooks / MCP / env) ..."));
162
+ if (!o.dryRun) {
163
+ ensureBuild();
164
+ loud(process.execPath, [`${REPO}/dist/cli/sync.js`]);
165
+ const { config } = loadConfig();
166
+ for (const bin of pluginBinsFor(config.sync.targets))
167
+ installPlugin(bin);
168
+ }
169
+ log(c.dim(" [5/5] 安装 resident daemon (com.wezard.daemon) ..."));
170
+ if (!o.dryRun)
171
+ loud("bash", [`${REPO}/scripts/install.sh`]);
172
+ };
173
+ // ── Main ─────────────────────────────────────────────────────────────
174
+ const main = async () => {
175
+ const o = parseArgs(process.argv.slice(2));
176
+ const oldDir = expandHome(OLD.tilde);
177
+ const newDir = expandHome(NEW_TILDE);
178
+ log(c.bold("\nwezard migrate · 从 weclaude 迁移\n"));
179
+ if (!existsSync(oldDir)) {
180
+ log(c.yellow(`未发现 ${OLD.tilde} — 没有可迁移的旧安装。`));
181
+ log(c.dim(" 全新安装请直接跑 `wezard init`。"));
182
+ return;
183
+ }
184
+ log(` ${OLD.tilde} → ${NEW_TILDE} ${c.dim(o.dryRun ? "(dry-run)" : "")}`);
185
+ log(c.dim(" 会停掉旧 daemon、卸载旧插件、复制状态、重新注册 hooks/MCP/daemon。\n"));
186
+ if (!o.yes && !o.dryRun) {
187
+ const ok = await confirm({ message: "继续?", default: true });
188
+ if (!ok) {
189
+ log(c.yellow("已取消。"));
190
+ return;
191
+ }
192
+ }
193
+ await stopOldDaemon(o.dryRun);
194
+ dropOldPlugin(o.dryRun);
195
+ copyState(oldDir, newDir, o);
196
+ reinstall(o);
197
+ if (o.purge && !o.dryRun) {
198
+ rmSync(oldDir, { recursive: true, force: true });
199
+ log(c.dim(` 已删除 ${OLD.tilde}`));
200
+ }
201
+ log(c.green("\n✅ 迁移完成。"));
202
+ log(c.dim(` 检查: wezard status / wezard logs -f`));
203
+ // The old npm package still owns a `weclaude` bin on $PATH; its launchd job
204
+ // is gone, so it's inert — but leaving it invites running the wrong CLI.
205
+ log(c.dim(" 收尾: npm uninstall -g weclaude" + (o.purge ? "" : ` && rm -rf ${OLD.tilde}`)));
206
+ log(c.dim(" 注意: tmuxPrefix 默认由 `weclaude` 变为 `wezard` — 已绑定的旧 pane 仍按存量 id 工作,"));
207
+ log(c.dim(" 新会话会开在 `wezard` tmux session 里 (显式配过 wrc.tmuxPrefix 的不受影响)。"));
208
+ };
209
+ main().catch((e) => {
210
+ console.error(c.red(`\n[wezard-migrate] ${e.message}`));
211
+ process.exit(1);
212
+ });
213
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../cli/migrate.ts"],"names":[],"mappings":"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"}
package/dist/cli/sync.js CHANGED
@@ -1,6 +1,6 @@
1
- // `weclaude sync` — write weclaude's hooks / MCP / env into target settings.json files
1
+ // `wezard sync` — write wezard's hooks / MCP / env into target settings.json files
2
2
  // (e.g. ~/.claude/settings.json so claude-internal wrappers pick them up).
3
- // Idempotent + reversible via per-target lock manifest in ~/.weclaude/sync.lock.json.
3
+ // Idempotent + reversible via per-target lock manifest in ~/.wezard/sync.lock.json.
4
4
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
5
5
  import { dirname, resolve as pathResolve } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
@@ -13,8 +13,13 @@ const here = dirname(fileURLToPath(import.meta.url));
13
13
  const PLUGIN_ROOT = pathResolve(here, "..", "..");
14
14
  const MCP_ENTRY = `${PLUGIN_ROOT}/dist/mcp/server.js`;
15
15
  const HOOK_SCRIPT = `${PLUGIN_ROOT}/hooks/pre-tool-use.sh`;
16
- const LOCK_FILE = expandHome("~/.weclaude/sync.lock.json");
17
- const MARKER = "weclaude";
16
+ const LOCK_FILE = expandHome("~/.wezard/sync.lock.json");
17
+ const MARKER = "wezard";
18
+ // Pre-rename installs stamped `_managedBy: "weclaude"` (and, further back,
19
+ // "wecom"). Strip on any of them so a `wezard migrate` / re-sync cleans the
20
+ // old block instead of leaving a second hook + MCP entry behind.
21
+ const MANAGED_BY = new Set([MARKER, "weclaude"]);
22
+ const isOurs = (v) => typeof v === "string" && MANAGED_BY.has(v);
18
23
  const readLock = () => {
19
24
  if (!existsSync(LOCK_FILE))
20
25
  return { targets: {} };
@@ -44,11 +49,11 @@ const stripHooks = (settings) => {
44
49
  if (!hooks)
45
50
  return;
46
51
  const list = hooks.PreToolUse ?? [];
47
- hooks.PreToolUse = list.filter((e) => e._managedBy !== MARKER);
52
+ hooks.PreToolUse = list.filter((e) => !isOurs(e._managedBy));
48
53
  if (hooks.PreToolUse.length === 0)
49
54
  delete hooks.PreToolUse;
50
55
  };
51
- // CodeBuddy 不走 Claude Code 的 plugin marketplace (weclaude 插件不会装上),
56
+ // CodeBuddy 不走 Claude Code 的 plugin marketplace (wezard 插件不会装上),
52
57
  // settings.json 是唯一注册点; Claude 家族由 plugin 的 hooks/hooks.json 提供,
53
58
  // 不在此写入 (否则双重触发 → 重复卡片)。
54
59
  const upsertHook = (settings, timeoutSec) => {
@@ -69,11 +74,9 @@ const upsertHook = (settings, timeoutSec) => {
69
74
  // ── MCP upsert ────────────────────────────────────────────────────────
70
75
  const upsertMcp = (settings) => {
71
76
  const m = (settings.mcpServers ??= {});
72
- // strip legacy `wecom` entry from earlier installs (renamed to weclaude).
73
- const legacy = m.wecom;
74
- if (legacy?._managedBy === MARKER)
75
- delete m.wecom;
76
- m.weclaude = {
77
+ // drop entries from earlier install generations (`wecom` `weclaude` → `wezard`).
78
+ stripMcp(settings);
79
+ m.wezard = {
77
80
  command: "node",
78
81
  args: [MCP_ENTRY],
79
82
  _managedBy: MARKER,
@@ -83,35 +86,40 @@ const stripMcp = (settings) => {
83
86
  const m = settings.mcpServers;
84
87
  if (!m)
85
88
  return;
86
- for (const k of ["weclaude", "wecom"]) {
89
+ for (const k of ["wezard", "weclaude", "wecom"]) {
87
90
  const cur = m[k];
88
- if (cur?._managedBy === MARKER)
91
+ if (isOurs(cur?._managedBy))
89
92
  delete m[k];
90
93
  }
91
94
  };
92
95
  // ── Env upsert ────────────────────────────────────────────────────────
93
96
  const ENV_KEYS = [
94
- "WECLAUDE_DAEMON_BASE",
95
- "WECLAUDE_DAEMON_URL",
96
- "WECLAUDE_STATE_DIR",
97
- "WECLAUDE_HOOK_FALLBACK",
98
- "WECLAUDE_HOOK_TIMEOUT",
97
+ "WEZARD_DAEMON_BASE",
98
+ "WEZARD_DAEMON_URL",
99
+ "WEZARD_STATE_DIR",
100
+ "WEZARD_HOOK_FALLBACK",
101
+ "WEZARD_HOOK_TIMEOUT",
99
102
  ];
103
+ // Same keys under the pre-rename prefix — stripped on every sync so a migrated
104
+ // settings.json doesn't keep pointing the old hook at the old state dir.
105
+ const LEGACY_ENV_KEYS = ENV_KEYS.map((k) => k.replace(/^WEZARD_/, "WECLAUDE_"));
100
106
  const upsertEnv = (settings, v) => {
101
107
  const env = (settings.env ??= {});
102
- env.WECLAUDE_DAEMON_BASE = v.base;
103
- env.WECLAUDE_DAEMON_URL = `${v.base}/approve`;
104
- env.WECLAUDE_STATE_DIR = expandHome(v.stateDir);
105
- env.WECLAUDE_HOOK_FALLBACK = v.hookFallback;
108
+ for (const k of LEGACY_ENV_KEYS)
109
+ delete env[k];
110
+ env.WEZARD_DAEMON_BASE = v.base;
111
+ env.WEZARD_DAEMON_URL = `${v.base}/approve`;
112
+ env.WEZARD_STATE_DIR = expandHome(v.stateDir);
113
+ env.WEZARD_HOOK_FALLBACK = v.hookFallback;
106
114
  // curl --max-time: 严格大于 longPollSec, 否则长挂的卡在用户点击前就断线。
107
- env.WECLAUDE_HOOK_TIMEOUT = String(v.hookTimeoutSec);
115
+ env.WEZARD_HOOK_TIMEOUT = String(v.hookTimeoutSec);
108
116
  return ENV_KEYS;
109
117
  };
110
118
  const stripEnv = (settings) => {
111
119
  const env = settings.env;
112
120
  if (!env)
113
121
  return;
114
- for (const k of ENV_KEYS)
122
+ for (const k of [...ENV_KEYS, ...LEGACY_ENV_KEYS])
115
123
  delete env[k];
116
124
  };
117
125
  // ── Drivers ───────────────────────────────────────────────────────────
@@ -161,7 +169,7 @@ const main = () => {
161
169
  for (const t of targets) {
162
170
  const action = remove ? "remove" : "upsert";
163
171
  // eslint-disable-next-line no-console
164
- console.log(`[weclaude-sync] ${action} ${t.kind} → ${t.settingsPath}`);
172
+ console.log(`[wezard-sync] ${action} ${t.kind} → ${t.settingsPath}`);
165
173
  if (dryRun)
166
174
  continue;
167
175
  syncOne(t.settingsPath, t.kind, { remove }, lock, envVals);
@@ -169,7 +177,7 @@ const main = () => {
169
177
  if (!dryRun)
170
178
  writeLock(lock);
171
179
  // eslint-disable-next-line no-console
172
- console.log(remove ? "[weclaude-sync] removed." : "[weclaude-sync] synced.");
180
+ console.log(remove ? "[wezard-sync] removed." : "[wezard-sync] synced.");
173
181
  };
174
182
  main();
175
183
  //# sourceMappingURL=sync.js.map