weclaude 0.0.4 → 0.1.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 (48) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +105 -28
  3. package/cli/{wrc.sh → weclaude.sh} +34 -18
  4. package/commands/wrc.md +4 -4
  5. package/config.example.jsonc +6 -6
  6. package/dist/cli/init.js +10 -10
  7. package/dist/cli/init.js.map +1 -1
  8. package/dist/cli/sync.js +35 -18
  9. package/dist/cli/sync.js.map +1 -1
  10. package/dist/daemon/approval.js +487 -37
  11. package/dist/daemon/approval.js.map +1 -1
  12. package/dist/daemon/cc-bridge.js +37 -20
  13. package/dist/daemon/cc-bridge.js.map +1 -1
  14. package/dist/daemon/claim.js +20 -1
  15. package/dist/daemon/claim.js.map +1 -1
  16. package/dist/daemon/detail.js +500 -0
  17. package/dist/daemon/detail.js.map +1 -0
  18. package/dist/daemon/http.js +2 -1
  19. package/dist/daemon/http.js.map +1 -1
  20. package/dist/daemon/inbound.js +115 -21
  21. package/dist/daemon/inbound.js.map +1 -1
  22. package/dist/daemon/index.js +30 -8
  23. package/dist/daemon/index.js.map +1 -1
  24. package/dist/daemon/mirror-bridge.js +1010 -153
  25. package/dist/daemon/mirror-bridge.js.map +1 -1
  26. package/dist/daemon/mirror-store.js +39 -0
  27. package/dist/daemon/mirror-store.js.map +1 -0
  28. package/dist/daemon/pending.js +46 -0
  29. package/dist/daemon/pending.js.map +1 -1
  30. package/dist/daemon/session-cache.js +71 -3
  31. package/dist/daemon/session-cache.js.map +1 -1
  32. package/dist/daemon/spawn-tmux.js +132 -0
  33. package/dist/daemon/spawn-tmux.js.map +1 -0
  34. package/dist/mcp/server.js +104 -65
  35. package/dist/mcp/server.js.map +1 -1
  36. package/dist/shared/config-writer.js +1 -1
  37. package/dist/shared/config.js +34 -20
  38. package/dist/shared/config.js.map +1 -1
  39. package/dist/shared/paths.js +6 -0
  40. package/dist/shared/paths.js.map +1 -1
  41. package/docs/DESIGN-INIT.md +6 -6
  42. package/docs/ONBOARDING.md +25 -25
  43. package/hooks/pre-tool-use.sh +42 -7
  44. package/launchd/{com.cc-wecom.daemon.plist.template → com.weclaude.daemon.plist.template} +3 -3
  45. package/package.json +10 -11
  46. package/scripts/install.sh +6 -6
  47. package/scripts/uninstall.sh +3 -3
  48. package/systemd/{cc-wecom.service.template → weclaude.service.template} +3 -3
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 cc-wecom contributors
3
+ Copyright (c) 2026 weclaude contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,60 +1,137 @@
1
- # cc-wecom
1
+ # weclaude
2
2
 
3
- WeCom (企业微信) 远程控制 Claude Code:把 PreToolUse 授权卡片推到 IM,点按钮放行;远程下发 `/wrc` 指令驱动 Claude 干活。
3
+ **把 Claude Code 装进企业微信。** 在地铁上、被窝里、开会摸鱼时,照样能跟你电脑上的 Claude 干活。
4
4
 
5
- ## 能做什么
5
+ - 🛎 **远程审批** — Claude 要跑 `Bash` / `Edit`?审批卡片直推 IM,点 ✅/❌/⏱(放行 N 分钟)。
6
+ - 🪞 **会话镜像** — 你电脑上跑的 Claude 流式打字、tool_use、思考过程,实时同步到企业微信;IM 里发消息原样落进 CLI 输入框。
7
+ - 🖼 **图片直贴** — 企业微信发图,自动走 macOS 剪贴板 + tmux 粘贴,Claude 当贴图处理(不走 Read,不耗 token)。
8
+ - 🔍 **细节页** — 工具调用 / 审批请求都生成本地 HTML 详情页,IM 里点链接看完整 input / result / git diff。
9
+ - 📡 **MCP 主动推送** — Claude 通过 `wecom__send_markdown` / `wecom__send_card` / `wecom__ask_user` 主动汇报或问询。
6
10
 
7
- - **IM 侧授权转发** — Claude 触发的 Bash / Edit 等敏感工具,会以按钮卡片推到企业微信,点 ✅/❌ 直接放行或拒绝;卡片就地刷新成决策结果。
8
- - **远程 `/wrc`** — 在 IM 里给机器人发指令,daemon 通过 WebSocket 转给本机 Claude 执行,结果回推。
9
- - **结构化消息** — 基于 `@wecom/aibot-node-sdk` 的按钮 / markdown 卡片,非纯文本。
10
- - **MCP 主动推送** — Claude 通过 `wecom__send_markdown` 工具主动汇报。
11
+ ---
11
12
 
12
- ## 上手 (3 步)
13
+ ## 快速开始
13
14
 
14
- 前置:Node ≥ 20、已装 `claude` 或 `claude-internal`、企业微信「智能机器人」的 `botId` + `secret`。
15
+ **前置**:macOS / Linux、Node ≥ 20、PATH 里能找到 `claude` 或 `claude-internal`、企业微信「智能机器人」的 `botId` + `secret`。镜像模式额外需要 `tmux`。
15
16
 
16
17
  ```bash
17
- npm install -g cc-wecom
18
- wrc init
18
+ npm install -g weclaude
19
+ weclaude init
19
20
  ```
20
21
 
21
- `wrc init` 会交互式问 4 个值并落盘到 `~/.cc-wecom/`:
22
+ `init` 会交互式问你 4 个问题,把配置落到 `~/.weclaude/`:
22
23
 
23
- | 字段 | 落点 |
24
+ | 问什么 | 落到哪 |
24
25
  | --- | --- |
25
- | botId / secret | `~/.cc-wecom/secrets.json` |
26
- | Claude agent (`claude` / `claude-internal` / 自定义路径) | `~/.cc-wecom/config.jsonc` |
27
- | 启用 PreToolUse hook | `~/.cc-wecom/config.jsonc` |
26
+ | botId / secret | `~/.weclaude/secrets.json` |
27
+ | 用哪个 Claude(`claude` / `claude-internal` / 自定义路径) | `~/.weclaude/config.jsonc` |
28
+ | 用哪种模式(`headless` / `mirror`,见下文) | `~/.weclaude/config.jsonc` |
29
+ | 是否开启 PreToolUse 远程审批 | `~/.weclaude/config.jsonc` |
28
30
 
29
- 随后自动:编译 dist `wrc sync` 注入 hook/MCP → daemon (launchd/systemd --user) WS 鉴权。
31
+ 然后自动:编译 → 注入 hook/MCP → 装常驻 daemon(macOS launchd / Linux systemd --user)→WebSocket 鉴权。
30
32
 
31
- **绑定默认会话**:CLI 提示后,在企业微信里给机器人发:
33
+ **最后一步:绑定默认会话。** CLI 提示后,**在企业微信里**给机器人发:
32
34
 
33
35
  ```
34
36
  将本对话设置为默认会话
35
37
  ```
36
38
 
37
- 10 分钟 claim 窗口内的这条精确匹配消息会被吃掉,把发送方 principal 写进 `defaultChat` + `allowFrom`。这是**唯一**绕过 `allowFrom` 的入口,消费完立刻关闭。
39
+ 这是**唯一**绕过白名单的入口,10 分钟窗口,消费完立刻关。后续所有消息都按白名单鉴权。
38
40
 
39
- **演示**:CLI 自动跑一条三步指令 (`echo` → `sleep` → MCP 推送),IM 应收到两张授权卡片和一条 markdown 总结。
41
+ ---
42
+
43
+ ## 两种模式怎么选
44
+
45
+ | | `headless` | `mirror` 🌟 |
46
+ | --- | --- | --- |
47
+ | **怎么跑** | IM 来消息 → 后台 `claude -p` 跑一轮 | IM 来消息 → tmux 粘进活的 TUI |
48
+ | **CLI 看得见吗** | 看不见(headless 子进程) | 看得见(IM 消息像你自己敲进去的) |
49
+ | **状态续接** | 靠 `--resume <sid>` 续 session | 一对一绑定 IM 聊天 ↔ tmux 窗口,原地累计 |
50
+ | **流式输出** | 转发 assistant 文本块 | 完整流式:打字机、tool_use、思考过程都看得到 |
51
+ | **适合谁** | 简单单轮问答 / CI 类自动化 | 真·远程结对编程 |
52
+
53
+ 镜像模式下,IM 里发 `/new` 直接开新 tmux 窗口 + 新 Claude 会话;`/clear` 清当前上下文;带图消息自动注入剪贴板。所有 IM 聊天共享一个 tmux session(默认名 `weclaude`),每个聊天一个独立 window,重启 daemon、关 tmux 都能自愈。
54
+
55
+ ---
56
+
57
+ ## 体验是什么样
58
+
59
+ **审批场景**:
60
+
61
+ > 你正在地铁上,电脑上的 Claude 想 `rm -rf node_modules` 重装。企业微信叮一声弹卡片:
62
+ >
63
+ > > 🛎 授权请求: Bash
64
+ > > `rm -rf node_modules`
65
+ > > [✅ 允许] [❌ 拒绝] [⏱ 5 分钟内自动允许]
66
+ >
67
+ > 你点 ✅,卡片立刻刷新成 `✅ Bash · 已允许`,电脑上的 Claude 解除阻塞继续跑。
68
+
69
+ **镜像场景**:
70
+
71
+ > 你 tmux 里开着 Claude 在写代码。出门后给机器人发:
72
+ >
73
+ > > 把刚才那个函数改成异步的
74
+ >
75
+ > 这条消息自动粘进 CLI 输入框 + 回车提交。Claude 的回应、调用了哪些工具、改了哪些文件,逐字流式推回你 IM。回家打开终端,对话一字不少都在那里。
76
+
77
+ ---
40
78
 
41
79
  ## 常用命令
42
80
 
43
81
  ```bash
44
- wrc status # daemon + WS 健康
45
- wrc logs -f # 实时日志
46
- wrc send <chat> <text> # 主动推消息
47
- wrc reload # 重启 daemon
48
- wrc unsync # 卸载 hook/MCP (保留 daemon)
49
- wrc uninstall # 完整卸载 (先于 npm uninstall -g)
82
+ weclaude status # daemon + WS 健康
83
+ weclaude logs -f # 实时日志
84
+ weclaude send <chat> <text> # 主动推消息
85
+ weclaude reload # 重启 daemon(改了配置后用)
86
+ weclaude unsync # 卸载 hook/MCP(保留 daemon
87
+ weclaude uninstall # 完整卸载(先于 npm uninstall
88
+ ```
89
+
90
+ > ⚠️ **卸载顺序**:先 `weclaude uninstall` 再 `npm uninstall -g weclaude`。否则 launchd/systemd 会一直尝试拉起已删除的二进制。`~/.weclaude/` 下的 config/secrets 不会被清,二次安装可无缝复用。
91
+
92
+ ---
93
+
94
+ ## 常见问题
95
+
96
+ **Q: hook 不触发?**
97
+ `cat ~/.claude/settings.json | jq .hooks.PreToolUse`,没东西就跑 `weclaude sync` 重写。
98
+
99
+ **Q: 卡片点了没反应?**
100
+ 企业微信卡片就地刷新只有 5 秒窗口,超时不刷新是正常的,决策本身仍然生效。
101
+
102
+ **Q: daemon 起不来?**
103
+ `weclaude logs -f` 看;常见是 `botId` / `secret` 写错卡在 WebSocket 鉴权。
104
+
105
+ **Q: 多机部署?**
106
+ `config.jsonc` 可以纳入 dotfiles;`secrets.json` 每台机器独立填。第二台机器跑 `weclaude init` 会跳过覆盖提示,但仍要重新走 claim 步骤拿本机 IM principal。
107
+
108
+ 更多排错见 [docs/ONBOARDING.md](docs/ONBOARDING.md)。
109
+
110
+ ---
111
+
112
+ ## 架构一瞥
113
+
114
+ 三个进程走 `127.0.0.1:17890` + `~/.weclaude/`:
115
+
50
116
  ```
117
+ WeCom ── WebSocket ──► daemon (常驻, launchd/systemd)
118
+
119
+ ├── HTTP :17890 ◄── hook (pre-tool-use.sh, 长轮询)
120
+ ├── HTTP :17890 ◄── MCP server (claude 的 stdio 子进程)
121
+ └── spawn `claude -p` (headless) 或 tail jsonl + tmux paste (mirror)
122
+ ```
123
+
124
+ daemon 是**唯一**持有 WeCom WS 连接的进程,hook 和 MCP 都是它的薄 HTTP 客户端。
125
+
126
+ 详情看 [CLAUDE.md](CLAUDE.md)。
51
127
 
52
- > ⚠️ 卸载顺序:**先** `wrc uninstall` **再** `npm uninstall -g cc-wecom`,否则 launchd/systemd 会反复拉起已删除的二进制。`~/.cc-wecom/` 下的配置/secrets 不会被清,二次安装可复用。
128
+ ---
53
129
 
54
- ## 详细文档
130
+ ## 文档
55
131
 
56
132
  - [docs/ONBOARDING.md](docs/ONBOARDING.md) — 上手细节、排错、多机部署
57
133
  - [docs/DESIGN-INIT.md](docs/DESIGN-INIT.md) — `init` 流程的设计取舍
134
+ - [CLAUDE.md](CLAUDE.md) — 给 Claude Code 看的项目地图
58
135
 
59
136
  ## License
60
137
 
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env bash
2
- # /wrc CLI — talks to local cc-wecom daemon over HTTP and toggles launchd/systemd.
2
+ # weclaude CLI — talks to local weclaude daemon over HTTP and toggles launchd/systemd.
3
3
  set -uo pipefail
4
4
 
5
- DAEMON_BASE="${CC_WECOM_DAEMON_BASE:-http://127.0.0.1:17890}"
6
- LABEL="com.cc-wecom.daemon"
5
+ DAEMON_BASE="${WECLAUDE_DAEMON_BASE:-http://127.0.0.1:17890}"
6
+ LABEL="com.weclaude.daemon"
7
7
  HOME_DIR="$HOME"
8
8
  OS="$(uname -s)"
9
9
 
@@ -12,7 +12,7 @@ shift || true
12
12
 
13
13
  usage() {
14
14
  cat <<'EOF'
15
- wrc <subcommand>
15
+ weclaude <subcommand>
16
16
  init interactive onboarding (write config, install daemon, claim default chat, run demo)
17
17
  status daemon health + connection state
18
18
  start load resident daemon (launchd/systemd)
@@ -38,13 +38,13 @@ http_post() { curl -sS --max-time 5 -X POST -H 'content-type: application/json'
38
38
  svc_load() {
39
39
  case "$OS" in
40
40
  Darwin) launchctl load -w "$HOME_DIR/Library/LaunchAgents/${LABEL}.plist" ;;
41
- Linux) systemctl --user start cc-wecom.service ;;
41
+ Linux) systemctl --user start weclaude.service ;;
42
42
  esac
43
43
  }
44
44
  svc_unload() {
45
45
  case "$OS" in
46
46
  Darwin) launchctl unload "$HOME_DIR/Library/LaunchAgents/${LABEL}.plist" ;;
47
- Linux) systemctl --user stop cc-wecom.service ;;
47
+ Linux) systemctl --user stop weclaude.service ;;
48
48
  esac
49
49
  }
50
50
 
@@ -62,7 +62,7 @@ require_claude_internal() {
62
62
  [[ -z "$pid" ]] && break
63
63
  (( i++ ))
64
64
  done
65
- echo "wrc $cmd: only available inside claude-internal" >&2
65
+ echo "weclaude $cmd: only available inside claude-internal" >&2
66
66
  exit 1
67
67
  }
68
68
 
@@ -72,7 +72,7 @@ case "$cmd" in
72
72
  REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
73
73
  SCRIPT="$REPO_ROOT/dist/cli/init.js"
74
74
  if [[ ! -f "$SCRIPT" ]]; then
75
- echo "[wrc init] building..."
75
+ echo "[weclaude init] building..."
76
76
  (cd "$REPO_ROOT" && npm install --silent && npx tsc -p tsconfig.json) || { echo "build failed"; exit 1; }
77
77
  fi
78
78
  exec "$NODE_BIN" "$SCRIPT" "$@"
@@ -92,14 +92,14 @@ case "$cmd" in
92
92
  http_post /shutdown >/dev/null 2>&1 || true
93
93
  case "$OS" in
94
94
  Darwin) launchctl kickstart -k "gui/$(id -u)/${LABEL}" >/dev/null && echo "daemon: reloaded" ;;
95
- Linux) systemctl --user restart cc-wecom.service && echo "daemon: reloaded" ;;
95
+ Linux) systemctl --user restart weclaude.service && echo "daemon: reloaded" ;;
96
96
  esac
97
97
  ;;
98
98
  send)
99
99
  chat="${1:-}"; shift || true
100
100
  text="${*:-}"
101
101
  if [[ -z "$chat" || -z "$text" ]]; then
102
- echo "usage: wrc send <chat> <text>"; exit 1
102
+ echo "usage: weclaude send <chat> <text>"; exit 1
103
103
  fi
104
104
  body=$(jq -nc --arg c "$chat" --arg t "$text" '{chat:$c,text:$t}')
105
105
  http_post /message "$body"
@@ -107,7 +107,7 @@ case "$cmd" in
107
107
  pending) http_get /pending | jq . 2>/dev/null || http_get /pending ;;
108
108
  logs)
109
109
  log_path=$(http_get /status 2>/dev/null | jq -r '.logFile // empty' 2>/dev/null || true)
110
- log_path="${log_path:-$HOME_DIR/.cc-wecom/daemon.log}"
110
+ log_path="${log_path:-$HOME_DIR/.weclaude/daemon.log}"
111
111
  if [[ "${1:-}" == "-f" ]]; then tail -f "$log_path"; else tail -n 100 "$log_path"; fi
112
112
  ;;
113
113
  config-path) http_get /status | jq -r '.sourcePath // empty' ;;
@@ -117,12 +117,10 @@ case "$cmd" in
117
117
  SYNC_SCRIPT="$REPO_ROOT/dist/cli/sync.js"
118
118
  [[ -f "$SYNC_SCRIPT" ]] && "$NODE_BIN" "$SYNC_SCRIPT" --remove || true
119
119
  bash "$REPO_ROOT/scripts/uninstall.sh"
120
- echo "[wrc] cleaned. safe to 'npm uninstall -g cc-wecom' (state at ~/.cc-wecom kept)"
120
+ echo "[weclaude] cleaned. safe to 'npm uninstall -g weclaude' (state at ~/.weclaude kept)"
121
121
  ;;
122
122
  mirror)
123
123
  require_claude_internal
124
- # Pick the most-recently-written jsonl in this cwd's claude project dir.
125
- # That's the live session writing this very turn.
126
124
  cwd="${CLAUDE_PROJECT_DIR:-$(pwd)}"
127
125
  enc="$(printf %s "$cwd" | sed 's|/|-|g')"
128
126
  # claude-internal stores under ~/.claude-internal/projects/, official claude
@@ -137,14 +135,32 @@ case "$cmd" in
137
135
  echo "looked in: $HOME/.claude-internal/projects/$enc and $HOME/.claude/projects/$enc"
138
136
  exit 1
139
137
  fi
140
- latest=$(ls -t "$proj"/*.jsonl 2>/dev/null | head -1)
138
+ # Resolve the *calling* session via env var Claude Code injects into every
139
+ # child process. lsof can't help — claude doesn't keep the jsonl fd open
140
+ # across writes, so the file appears unbound between turns.
141
+ sid="${CLAUDE_CODE_SESSION_ID:-${CLAUDE_SESSION_ID:-}}"
142
+ latest=""
143
+ if [[ -n "$sid" && -f "$proj/$sid.jsonl" ]]; then
144
+ latest="$proj/$sid.jsonl"
145
+ fi
146
+ # Fallback for setups that don't propagate the env var: most-recent mtime.
147
+ [[ -z "$latest" ]] && latest=$(ls -t "$proj"/*.jsonl 2>/dev/null | head -1)
141
148
  if [[ -z "$latest" ]]; then
142
149
  echo "no .jsonl under $proj"; exit 1
143
150
  fi
144
151
  sid="$(basename "$latest" .jsonl)"
145
- target="${1:-}"
146
- body=$(jq -nc --arg s "$sid" --arg p "$latest" --arg t "$target" \
147
- '{sessionId:$s, jsonlPath:$p} + (if $t == "" then {} else {target:$t} end)')
152
+ # Accept user-friendly prefixes: vid:<id> → user:<id>, chatid:<id> → chat:<id>.
153
+ # Pass anything else through (already in user:/chat:/group: form, or empty).
154
+ raw="${1:-}"
155
+ case "$raw" in
156
+ vid:*) target="user:${raw#vid:}" ;;
157
+ chatid:*) target="chat:${raw#chatid:}" ;;
158
+ *) target="$raw" ;;
159
+ esac
160
+ body=$(jq -nc --arg s "$sid" --arg p "$latest" --arg t "$target" --arg tp "${TMUX_PANE:-}" \
161
+ '{sessionId:$s, jsonlPath:$p}
162
+ + (if $t == "" then {} else {target:$t} end)
163
+ + (if $tp == "" then {} else {tmuxPane:$tp} end)')
148
164
  http_post /mirror/attach "$body" | jq . 2>/dev/null || true
149
165
  ;;
150
166
  mirror-status)
package/commands/wrc.md CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- description: WeCom remote control — daemon status / start / stop / send
3
- allowed-tools: Bash(${CLAUDE_PLUGIN_ROOT}/cli/wrc.sh:*)
4
- argument-hint: status|start|stop|restart|reload|mirror [chat]|mirror-status|send <chat> <text>|pending|logs|config-path|help
2
+ description: WeCom remote control — mirror current Claude session to WeCom
3
+ allowed-tools: Bash(${CLAUDE_PLUGIN_ROOT}/cli/weclaude.sh:*)
4
+ argument-hint: [user:<userid>|chat:<chatid>]
5
5
  ---
6
6
 
7
- !`${CLAUDE_PLUGIN_ROOT}/cli/wrc.sh $ARGUMENTS`
7
+ !`${CLAUDE_PLUGIN_ROOT}/cli/weclaude.sh mirror $ARGUMENTS`
@@ -1,5 +1,5 @@
1
- // Declarative config for cc-wecom. Copy to ~/.cc-wecom/config.jsonc and edit.
2
- // All paths support `~`. Secrets (botId/secret) can also live in ~/.cc-wecom/secrets.json
1
+ // Declarative config for weclaude. Copy to ~/.weclaude/config.jsonc and edit.
2
+ // All paths support `~`. Secrets (botId/secret) can also live in ~/.weclaude/secrets.json
3
3
  // (same shape, deep-merged on top — keep secrets out of dotfile repos).
4
4
  {
5
5
  "$schema": "./schema.json",
@@ -19,8 +19,8 @@
19
19
  "daemon": {
20
20
  "host": "127.0.0.1",
21
21
  "port": 17890,
22
- "stateDir": "~/.cc-wecom/state",
23
- "logFile": "~/.cc-wecom/daemon.log",
22
+ "stateDir": "~/.weclaude/state",
23
+ "logFile": "~/.weclaude/daemon.log",
24
24
  "logLevel": "info" // trace|debug|info|warn|error
25
25
  },
26
26
 
@@ -35,7 +35,7 @@
35
35
  "mode": "headless",
36
36
  "claudeBin": "claude",
37
37
  "cwd": "~", // workdir (mirror: must match the running claude's cwd)
38
- "sessionMapFile": "~/.cc-wecom/sessions.json",
38
+ "sessionMapFile": "~/.weclaude/sessions.json",
39
39
  "extraArgs": [], // appended to `claude -p`
40
40
  "mirror": {
41
41
  // Pin a session id; empty → auto-pick latest .jsonl mtime under
@@ -62,7 +62,7 @@
62
62
  },
63
63
 
64
64
  // ── claude-internal wrapper sync ──────────────────────────────────
65
- // `wrc sync` writes hooks/MCP/permissions into target settings.json.
65
+ // `weclaude sync` writes hooks/MCP/permissions into target settings.json.
66
66
  "sync": {
67
67
  "targets": [
68
68
  {
package/dist/cli/init.js CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
- // `wrc init` — interactive onboarding for new users.
2
+ // `weclaude init` — interactive onboarding for new users.
3
3
  // Flow:
4
4
  // 1. Prompt creds + agent kind + hook toggle.
5
- // 2. Write ~/.cc-wecom/config.jsonc + secrets.json (split secrets).
6
- // 3. Build (if needed), run `wrc sync` against chosen agent settings.json,
5
+ // 2. Write ~/.weclaude/config.jsonc + secrets.json (split secrets).
6
+ // 3. Build (if needed), run `weclaude 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.
@@ -19,8 +19,8 @@ import { patchJsonc } from "../shared/config-writer.js";
19
19
  import { expandHome } from "../shared/paths.js";
20
20
  const here = dirname(fileURLToPath(import.meta.url));
21
21
  const REPO = pathResolve(here, "..", "..");
22
- const CONFIG = "~/.cc-wecom/config.jsonc";
23
- const SECRETS = "~/.cc-wecom/secrets.json";
22
+ const CONFIG = "~/.weclaude/config.jsonc";
23
+ const SECRETS = "~/.weclaude/secrets.json";
24
24
  const CLAIM_PHRASE = "将本对话设置为默认会话";
25
25
  // ── Pretty output (no ink — keep deps light) ─────────────────────────
26
26
  const c = {
@@ -94,7 +94,7 @@ const waitDaemonReady = async (timeoutMs) => {
94
94
  };
95
95
  // ── Main flow ────────────────────────────────────────────────────────
96
96
  const main = async () => {
97
- log(c.bold("\ncc-wecom · 新用户引导\n"));
97
+ log(c.bold("\nweclaude · 新用户引导\n"));
98
98
  log(c.dim(" 目标:3 步内完成 → IM 授权转发 + 远程 CC 控制可用。\n"));
99
99
  if (existsSync(expandHome(CONFIG))) {
100
100
  const ok = await confirm({
@@ -175,7 +175,7 @@ const main = async () => {
175
175
  log(c.dim(" 即将启动 claude,触发一次 Bash 授权 → 你会在 WeCom 收到按钮卡片。"));
176
176
  log(c.dim(" 点击「✅」放行即可观察后续 markdown 推送。\n"));
177
177
  await runDemo(claimed, claudeBin);
178
- log(c.green("\n✅ 引导完成。后续可用 `wrc status` / `wrc logs -f` 观察。"));
178
+ log(c.green("\n✅ 引导完成。后续可用 `weclaude status` / `weclaude logs -f` 观察。"));
179
179
  };
180
180
  const pollClaim = async (timeoutMs) => {
181
181
  const deadline = Date.now() + timeoutMs;
@@ -191,9 +191,9 @@ const pollClaim = async (timeoutMs) => {
191
191
  };
192
192
  const DEMO_PROMPT = (chat) => [
193
193
  "请按顺序执行,不要输出多余解释:",
194
- "1. 用 Bash 运行 `echo hello world from cc-wecom`。",
194
+ "1. 用 Bash 运行 `echo hello world from weclaude`。",
195
195
  "2. 用 Bash 运行 `sleep 3`。",
196
- `3. 用 mcp 工具 \`wecom__send_markdown\` 向 chat="${chat}" 发送 content="✅ cc-wecom 演示完成:hello world"。`,
196
+ `3. 用 mcp 工具 \`wecom__send_markdown\` 向 chat="${chat}" 发送 content="✅ weclaude 演示完成:hello world"。`,
197
197
  ].join("\n");
198
198
  const runDemo = (chat, claudeBin) => new Promise((resolve) => {
199
199
  const proc = spawn(claudeBin, ["-p", DEMO_PROMPT(chat)], {
@@ -208,7 +208,7 @@ const runDemo = (chat, claudeBin) => new Promise((resolve) => {
208
208
  });
209
209
  main().catch((e) => {
210
210
  // eslint-disable-next-line no-console
211
- console.error(c.red(`\n[wrc-init] ${e.message}`));
211
+ console.error(c.red(`\n[weclaude-init] ${e.message}`));
212
212
  process.exit(1);
213
213
  });
214
214
  // 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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"}
package/dist/cli/sync.js CHANGED
@@ -1,6 +1,6 @@
1
- // `wrc sync` — write cc-wecom's hooks / MCP / env into target settings.json files
1
+ // `weclaude sync` — write weclaude'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 ~/.cc-wecom/sync.lock.json.
3
+ // Idempotent + reversible via per-target lock manifest in ~/.weclaude/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";
@@ -12,8 +12,8 @@ import { expandHome } from "../shared/paths.js";
12
12
  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
- const LOCK_FILE = expandHome("~/.cc-wecom/sync.lock.json");
16
- const MARKER = "cc-wecom";
15
+ const LOCK_FILE = expandHome("~/.weclaude/sync.lock.json");
16
+ const MARKER = "weclaude";
17
17
  const readLock = () => {
18
18
  if (!existsSync(LOCK_FILE))
19
19
  return { targets: {} };
@@ -50,7 +50,11 @@ const stripHooks = (settings) => {
50
50
  // ── MCP upsert ────────────────────────────────────────────────────────
51
51
  const upsertMcp = (settings) => {
52
52
  const m = (settings.mcpServers ??= {});
53
- m.wecom = {
53
+ // strip legacy `wecom` entry from earlier installs (renamed to weclaude).
54
+ const legacy = m.wecom;
55
+ if (legacy?._managedBy === MARKER)
56
+ delete m.wecom;
57
+ m.weclaude = {
54
58
  command: "node",
55
59
  args: [MCP_ENTRY],
56
60
  _managedBy: MARKER,
@@ -60,16 +64,25 @@ const stripMcp = (settings) => {
60
64
  const m = settings.mcpServers;
61
65
  if (!m)
62
66
  return;
63
- const cur = m.wecom;
64
- if (cur?._managedBy === MARKER)
65
- delete m.wecom;
67
+ for (const k of ["weclaude", "wecom"]) {
68
+ const cur = m[k];
69
+ if (cur?._managedBy === MARKER)
70
+ delete m[k];
71
+ }
66
72
  };
67
73
  // ── Env upsert ────────────────────────────────────────────────────────
68
- const ENV_KEYS = ["CC_WECOM_DAEMON_BASE", "CC_WECOM_DAEMON_URL"];
69
- const upsertEnv = (settings, base) => {
74
+ const ENV_KEYS = [
75
+ "WECLAUDE_DAEMON_BASE",
76
+ "WECLAUDE_DAEMON_URL",
77
+ "WECLAUDE_STATE_DIR",
78
+ "WECLAUDE_HOOK_FALLBACK",
79
+ ];
80
+ const upsertEnv = (settings, v) => {
70
81
  const env = (settings.env ??= {});
71
- env.CC_WECOM_DAEMON_BASE = base;
72
- env.CC_WECOM_DAEMON_URL = `${base}/approve`;
82
+ env.WECLAUDE_DAEMON_BASE = v.base;
83
+ env.WECLAUDE_DAEMON_URL = `${v.base}/approve`;
84
+ env.WECLAUDE_STATE_DIR = expandHome(v.stateDir);
85
+ env.WECLAUDE_HOOK_FALLBACK = v.hookFallback;
73
86
  return ENV_KEYS;
74
87
  };
75
88
  const stripEnv = (settings) => {
@@ -81,7 +94,7 @@ const stripEnv = (settings) => {
81
94
  };
82
95
  // ── Drivers ───────────────────────────────────────────────────────────
83
96
  const targetKey = (path) => expandHome(path);
84
- const syncOne = (settingsPath, opts, lock, daemonBase) => {
97
+ const syncOne = (settingsPath, opts, lock, env) => {
85
98
  const abs = expandHome(settingsPath);
86
99
  const settings = readJson(abs);
87
100
  // Always strip legacy hook entries — the plugin's hooks/hooks.json owns
@@ -95,7 +108,7 @@ const syncOne = (settingsPath, opts, lock, daemonBase) => {
95
108
  }
96
109
  else {
97
110
  upsertMcp(settings);
98
- const wroteEnv = upsertEnv(settings, daemonBase);
111
+ const wroteEnv = upsertEnv(settings, env);
99
112
  lock.targets[targetKey(settingsPath)] = { wroteHooks: false, wroteMcp: true, wroteEnv };
100
113
  }
101
114
  writeJson(abs, settings);
@@ -111,20 +124,24 @@ const main = () => {
111
124
  console.error("no sync.targets in config — nothing to do.");
112
125
  process.exit(0);
113
126
  }
114
- const daemonBase = `http://${cfg.daemon.host}:${cfg.daemon.port}`;
127
+ const envVals = {
128
+ base: `http://${cfg.daemon.host}:${cfg.daemon.port}`,
129
+ stateDir: cfg.daemon.stateDir,
130
+ hookFallback: cfg.approval.fallbackOnError,
131
+ };
115
132
  const lock = readLock();
116
133
  for (const t of targets) {
117
134
  const action = remove ? "remove" : "upsert";
118
135
  // eslint-disable-next-line no-console
119
- console.log(`[wrc-sync] ${action} ${t.kind} → ${t.settingsPath}`);
136
+ console.log(`[weclaude-sync] ${action} ${t.kind} → ${t.settingsPath}`);
120
137
  if (dryRun)
121
138
  continue;
122
- syncOne(t.settingsPath, { remove }, lock, daemonBase);
139
+ syncOne(t.settingsPath, { remove }, lock, envVals);
123
140
  }
124
141
  if (!dryRun)
125
142
  writeLock(lock);
126
143
  // eslint-disable-next-line no-console
127
- console.log(remove ? "[wrc-sync] removed." : "[wrc-sync] synced.");
144
+ console.log(remove ? "[weclaude-sync] removed." : "[weclaude-sync] synced.");
128
145
  };
129
146
  main();
130
147
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../cli/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../cli/sync.ts"],"names":[],"mappings":"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"}