claude-cac 1.5.0 → 1.5.1-beta.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.
- package/README.md +4 -4
- package/cac +51 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -110,10 +110,10 @@ cac ls # = cac env ls
|
|
|
110
110
|
| `cac claude ls` | 列出已安装版本 |
|
|
111
111
|
| `cac claude pin <ver>` | 当前环境绑定版本 |
|
|
112
112
|
| **环境管理** | |
|
|
113
|
-
| `cac env create <name> [-p proxy] [-c ver] [--clone]` | 创建环境(自动激活,`--
|
|
113
|
+
| `cac env create <name> [-p proxy] [-c ver] [--clone] [--telemetry mode] [--persona preset]` | 创建环境(自动激活,`--telemetry transparent/stealth/paranoid` 控制遥测,`--persona macos-vscode/...` 用于容器) |
|
|
114
114
|
| `cac env ls` | 列出环境 |
|
|
115
115
|
| `cac env rm <name>` | 删除环境 |
|
|
116
|
-
| `cac env set [name] <key> <value>` | 修改环境(proxy / version) |
|
|
116
|
+
| `cac env set [name] <key> <value>` | 修改环境(proxy / version / telemetry / persona) |
|
|
117
117
|
| `cac env check [-d]` | 验证当前环境(`-d` 显示详情) |
|
|
118
118
|
| `cac <name>` | 激活环境 |
|
|
119
119
|
| **自管理** | |
|
|
@@ -293,10 +293,10 @@ Each environment is fully isolated:
|
|
|
293
293
|
| `cac claude ls` | List installed versions |
|
|
294
294
|
| `cac claude pin <ver>` | Pin current env to version |
|
|
295
295
|
| **Environment management** | |
|
|
296
|
-
| `cac env create <name> [-p proxy] [-c ver] [--clone]` | Create environment (auto-activates, `--
|
|
296
|
+
| `cac env create <name> [-p proxy] [-c ver] [--clone] [--telemetry mode] [--persona preset]` | Create environment (auto-activates, `--telemetry transparent/stealth/paranoid` for telemetry control, `--persona macos-vscode/...` for containers) |
|
|
297
297
|
| `cac env ls` | List environments |
|
|
298
298
|
| `cac env rm <name>` | Remove environment |
|
|
299
|
-
| `cac env set [name] <key> <value>` | Modify environment (proxy / version) |
|
|
299
|
+
| `cac env set [name] <key> <value>` | Modify environment (proxy / version / telemetry / persona) |
|
|
300
300
|
| `cac env check [-d]` | Verify current environment (`-d` for details) |
|
|
301
301
|
| `cac <name>` | Activate environment |
|
|
302
302
|
| **Self-management** | |
|
package/cac
CHANGED
|
@@ -11,7 +11,7 @@ VERSIONS_DIR="$CAC_DIR/versions"
|
|
|
11
11
|
# ── utils: colors, read/write, UUID, proxy parsing ───────────────────────
|
|
12
12
|
|
|
13
13
|
# shellcheck disable=SC2034 # used in build-concatenated cac script
|
|
14
|
-
CAC_VERSION="1.5.
|
|
14
|
+
CAC_VERSION="1.5.1-beta.1"
|
|
15
15
|
|
|
16
16
|
_read() { [[ -f "$1" ]] && tr -d '[:space:]' < "$1" || echo "${2:-}"; }
|
|
17
17
|
_die() { printf '%b\n' "$(_red "error:") $*" >&2; exit 1; }
|
|
@@ -1389,6 +1389,40 @@ if [[ -n "$PROXY" ]] && [[ -f "$CAC_DIR/relay.js" ]]; then
|
|
|
1389
1389
|
echo "$_rport" > "$_relay_port_file"
|
|
1390
1390
|
fi
|
|
1391
1391
|
|
|
1392
|
+
# env-level watchdog singleton: auto-restarts relay if it crashes
|
|
1393
|
+
# - one watchdog per environment, shared across all sessions
|
|
1394
|
+
# - exits automatically when relay is intentionally stopped (relay.proxy removed)
|
|
1395
|
+
_relay_watchdog_file="$CAC_DIR/relay.watchdog.pid"
|
|
1396
|
+
_wd_running=false
|
|
1397
|
+
if [[ -f "$_relay_watchdog_file" ]]; then
|
|
1398
|
+
_wpid=$(tr -d '[:space:]' < "$_relay_watchdog_file")
|
|
1399
|
+
[[ -n "$_wpid" ]] && kill -0 "$_wpid" 2>/dev/null && _wd_running=true
|
|
1400
|
+
fi
|
|
1401
|
+
if [[ "$_wd_running" != "true" ]]; then
|
|
1402
|
+
(
|
|
1403
|
+
trap 'rm -f "$CAC_DIR/relay.watchdog.pid"' EXIT
|
|
1404
|
+
set +e
|
|
1405
|
+
while true; do
|
|
1406
|
+
sleep 5
|
|
1407
|
+
# relay.proxy removed by _relay_stop — intentional stop, exit watchdog
|
|
1408
|
+
[[ -f "$CAC_DIR/relay.proxy" ]] || exit 0
|
|
1409
|
+
# relay alive — nothing to do
|
|
1410
|
+
if [[ -f "$CAC_DIR/relay.pid" ]]; then
|
|
1411
|
+
_rpid=$(tr -d '[:space:]' < "$CAC_DIR/relay.pid")
|
|
1412
|
+
kill -0 "$_rpid" 2>/dev/null && continue
|
|
1413
|
+
fi
|
|
1414
|
+
# relay dead — restart on same port with same proxy
|
|
1415
|
+
_rport=$(tr -d '[:space:]' < "$CAC_DIR/relay.port" 2>/dev/null || true)
|
|
1416
|
+
_rproxy=$(tr -d '[:space:]' < "$CAC_DIR/relay.proxy" 2>/dev/null || true)
|
|
1417
|
+
[[ -n "$_rport" ]] && [[ -n "$_rproxy" ]] || exit 0
|
|
1418
|
+
node "$CAC_DIR/relay.js" "$_rport" "$_rproxy" "$CAC_DIR/relay.pid" </dev/null >>"$CAC_DIR/relay.log" 2>&1 &
|
|
1419
|
+
done
|
|
1420
|
+
) &
|
|
1421
|
+
_new_wpid=$!
|
|
1422
|
+
echo "$_new_wpid" > "$_relay_watchdog_file"
|
|
1423
|
+
disown "$_new_wpid"
|
|
1424
|
+
fi
|
|
1425
|
+
|
|
1392
1426
|
# override proxy to point to local relay
|
|
1393
1427
|
if [[ -f "$_relay_port_file" ]]; then
|
|
1394
1428
|
_rport=$(tr -d '[:space:]' < "$_relay_port_file")
|
|
@@ -1628,7 +1662,7 @@ _env_cmd_create() {
|
|
|
1628
1662
|
esac
|
|
1629
1663
|
done
|
|
1630
1664
|
|
|
1631
|
-
[[ -n "$name" ]] || _die "usage: cac env create <name> [-p <proxy>] [-c <version>]"
|
|
1665
|
+
[[ -n "$name" ]] || _die "usage: cac env create <name> [-p <proxy>] [-c <version>] [--telemetry <mode>] [--persona <preset>]"
|
|
1632
1666
|
[[ "$name" =~ ^[a-zA-Z0-9_-]+$ ]] || _die "invalid name '$name' (use alphanumeric, dash, underscore)"
|
|
1633
1667
|
|
|
1634
1668
|
local env_dir="$ENVS_DIR/$name"
|
|
@@ -1920,7 +1954,9 @@ _env_cmd_set() {
|
|
|
1920
1954
|
echo " $(_green "set") [name] proxy --remove Remove proxy"
|
|
1921
1955
|
echo " $(_green "set") [name] version <ver|latest> Change Claude version"
|
|
1922
1956
|
echo " $(_green "set") [name] telemetry <stealth|paranoid|transparent>"
|
|
1957
|
+
echo " Telemetry blocking: stealth (1p_events only), paranoid (max), transparent (none)"
|
|
1923
1958
|
echo " $(_green "set") [name] persona <macos-vscode|macos-cursor|macos-iterm|linux-desktop|--remove>"
|
|
1959
|
+
echo " Terminal preset: inject desktop env vars, hide Docker signals (for containers)"
|
|
1924
1960
|
echo
|
|
1925
1961
|
echo " $(_dim "If name is omitted, uses the current active environment.")"
|
|
1926
1962
|
echo
|
|
@@ -2021,10 +2057,10 @@ cmd_env() {
|
|
|
2021
2057
|
echo
|
|
2022
2058
|
echo " $(_bold "cac env") — environment management"
|
|
2023
2059
|
echo
|
|
2024
|
-
echo " $(_green "create") <name> [-p proxy] [-c ver] [--
|
|
2025
|
-
echo "
|
|
2026
|
-
echo " $(_green "set") [name]
|
|
2027
|
-
echo "
|
|
2060
|
+
echo " $(_green "create") <name> [-p proxy] [-c ver] [--telemetry mode] [--persona preset]"
|
|
2061
|
+
echo " Create isolated environment (auto-activates)"
|
|
2062
|
+
echo " $(_green "set") [name] <key> <value> Modify environment"
|
|
2063
|
+
echo " proxy, version, telemetry, or persona"
|
|
2028
2064
|
echo " $(_green "ls") List all environments"
|
|
2029
2065
|
echo " $(_green "rm") <name> Remove an environment"
|
|
2030
2066
|
echo " $(_green "check") Verify current environment"
|
|
@@ -2102,6 +2138,15 @@ _relay_stop() {
|
|
|
2102
2138
|
fi
|
|
2103
2139
|
rm -f "$CAC_DIR/relay.port" "$CAC_DIR/relay.proxy"
|
|
2104
2140
|
|
|
2141
|
+
# stop watchdog (relay.proxy already removed above, watchdog will self-exit within 5s;
|
|
2142
|
+
# kill it immediately for clean teardown)
|
|
2143
|
+
local wd_file="$CAC_DIR/relay.watchdog.pid"
|
|
2144
|
+
if [[ -f "$wd_file" ]]; then
|
|
2145
|
+
local wd_pid; wd_pid=$(tr -d '[:space:]' < "$wd_file")
|
|
2146
|
+
[[ -n "$wd_pid" ]] && kill "$wd_pid" 2>/dev/null || true
|
|
2147
|
+
rm -f "$wd_file"
|
|
2148
|
+
fi
|
|
2149
|
+
|
|
2105
2150
|
# cleanup route
|
|
2106
2151
|
_relay_remove_route 2>/dev/null || true
|
|
2107
2152
|
}
|