claude-telegram-mirror 0.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.
- package/README.md +331 -0
- package/dist/bot/commands.d.ts +41 -0
- package/dist/bot/commands.d.ts.map +1 -0
- package/dist/bot/commands.js +231 -0
- package/dist/bot/commands.js.map +1 -0
- package/dist/bot/formatting.d.ts +62 -0
- package/dist/bot/formatting.d.ts.map +1 -0
- package/dist/bot/formatting.js +295 -0
- package/dist/bot/formatting.js.map +1 -0
- package/dist/bot/telegram.d.ts +93 -0
- package/dist/bot/telegram.d.ts.map +1 -0
- package/dist/bot/telegram.js +378 -0
- package/dist/bot/telegram.js.map +1 -0
- package/dist/bot/types.d.ts +28 -0
- package/dist/bot/types.d.ts.map +1 -0
- package/dist/bot/types.js +5 -0
- package/dist/bot/types.js.map +1 -0
- package/dist/bridge/daemon.d.ts +93 -0
- package/dist/bridge/daemon.d.ts.map +1 -0
- package/dist/bridge/daemon.js +626 -0
- package/dist/bridge/daemon.js.map +1 -0
- package/dist/bridge/index.d.ts +10 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +9 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/bridge/injector.d.ts +97 -0
- package/dist/bridge/injector.d.ts.map +1 -0
- package/dist/bridge/injector.js +289 -0
- package/dist/bridge/injector.js.map +1 -0
- package/dist/bridge/session.d.ts +108 -0
- package/dist/bridge/session.d.ts.map +1 -0
- package/dist/bridge/session.js +381 -0
- package/dist/bridge/session.js.map +1 -0
- package/dist/bridge/socket.d.ts +97 -0
- package/dist/bridge/socket.d.ts.map +1 -0
- package/dist/bridge/socket.js +436 -0
- package/dist/bridge/socket.js.map +1 -0
- package/dist/bridge/types.d.ts +38 -0
- package/dist/bridge/types.d.ts.map +1 -0
- package/dist/bridge/types.js +5 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +332 -0
- package/dist/cli.js.map +1 -0
- package/dist/hooks/handler.d.ts +94 -0
- package/dist/hooks/handler.d.ts.map +1 -0
- package/dist/hooks/handler.js +431 -0
- package/dist/hooks/handler.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/installer.d.ts +46 -0
- package/dist/hooks/installer.d.ts.map +1 -0
- package/dist/hooks/installer.js +317 -0
- package/dist/hooks/installer.js.map +1 -0
- package/dist/hooks/types.d.ts +88 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +6 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/service/doctor.d.ts +10 -0
- package/dist/service/doctor.d.ts.map +1 -0
- package/dist/service/doctor.js +424 -0
- package/dist/service/doctor.js.map +1 -0
- package/dist/service/manager.d.ts +48 -0
- package/dist/service/manager.d.ts.map +1 -0
- package/dist/service/manager.js +584 -0
- package/dist/service/manager.js.map +1 -0
- package/dist/service/setup.d.ts +10 -0
- package/dist/service/setup.d.ts.map +1 -0
- package/dist/service/setup.js +266 -0
- package/dist/service/setup.js.map +1 -0
- package/dist/utils/chunker.d.ts +24 -0
- package/dist/utils/chunker.d.ts.map +1 -0
- package/dist/utils/chunker.js +123 -0
- package/dist/utils/chunker.js.map +1 -0
- package/dist/utils/config.d.ts +48 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +154 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +28 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +88 -0
- package/postinstall.cjs +76 -0
- package/scripts/claude-wrapper.sh +122 -0
- package/scripts/doctor.sh +433 -0
- package/scripts/get-chat-id.sh +64 -0
- package/scripts/global-hooks.sh +39 -0
- package/scripts/install.sh +831 -0
- package/scripts/start-daemon.sh +49 -0
- package/scripts/telegram-hook.sh +449 -0
- package/scripts/uninstall.sh +261 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Claude Telegram Mirror - Uninstaller
|
|
4
|
+
#
|
|
5
|
+
# Usage:
|
|
6
|
+
# ./scripts/uninstall.sh
|
|
7
|
+
# ctm uninstall (if installed)
|
|
8
|
+
#
|
|
9
|
+
# Removes all installed components cleanly.
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
# Colors (respect NO_COLOR)
|
|
13
|
+
if [[ -z "$NO_COLOR" ]]; then
|
|
14
|
+
RED='\033[0;31m'
|
|
15
|
+
GREEN='\033[0;32m'
|
|
16
|
+
YELLOW='\033[1;33m'
|
|
17
|
+
BLUE='\033[0;34m'
|
|
18
|
+
BOLD='\033[1m'
|
|
19
|
+
NC='\033[0m'
|
|
20
|
+
else
|
|
21
|
+
RED=''
|
|
22
|
+
GREEN=''
|
|
23
|
+
YELLOW=''
|
|
24
|
+
BLUE=''
|
|
25
|
+
BOLD=''
|
|
26
|
+
NC=''
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# Output helpers
|
|
30
|
+
info() { echo -e "${BLUE}ℹ${NC} $1"; }
|
|
31
|
+
success() { echo -e "${GREEN}✓${NC} $1"; }
|
|
32
|
+
warn() { echo -e "${YELLOW}⚠${NC} $1"; }
|
|
33
|
+
error() { echo -e "${RED}✗${NC} $1"; }
|
|
34
|
+
|
|
35
|
+
# Configuration paths
|
|
36
|
+
INSTALL_DIR="${TELEGRAM_MIRROR_INSTALL_DIR:-$HOME/.local/share/claude-telegram-mirror}"
|
|
37
|
+
CONFIG_DIR="$HOME/.config/claude-telegram-mirror"
|
|
38
|
+
ENV_FILE="$HOME/.telegram-env"
|
|
39
|
+
CTM_SYMLINK="$HOME/.local/bin/ctm"
|
|
40
|
+
|
|
41
|
+
# Check for alternate install locations
|
|
42
|
+
find_install_dir() {
|
|
43
|
+
for check_dir in "$INSTALL_DIR" "/opt/claude-mobile/packages/claude-telegram-mirror" "$HOME/.local/share/claude-telegram-mirror"; do
|
|
44
|
+
if [[ -d "$check_dir" && -f "$check_dir/package.json" ]]; then
|
|
45
|
+
echo "$check_dir"
|
|
46
|
+
return 0
|
|
47
|
+
fi
|
|
48
|
+
done
|
|
49
|
+
echo "$INSTALL_DIR"
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
INSTALL_DIR=$(find_install_dir)
|
|
53
|
+
|
|
54
|
+
# ============================================
|
|
55
|
+
# CONFIRMATION
|
|
56
|
+
# ============================================
|
|
57
|
+
|
|
58
|
+
echo ""
|
|
59
|
+
echo -e "${BOLD}Claude Telegram Mirror Uninstaller${NC}"
|
|
60
|
+
echo "==================================="
|
|
61
|
+
echo ""
|
|
62
|
+
echo "This will remove:"
|
|
63
|
+
echo " • System service (systemd/launchd)"
|
|
64
|
+
echo " • Claude Code hooks"
|
|
65
|
+
echo " • Installed files ($INSTALL_DIR)"
|
|
66
|
+
echo " • Runtime data ($CONFIG_DIR)"
|
|
67
|
+
echo " • CLI symlink ($CTM_SYMLINK)"
|
|
68
|
+
echo ""
|
|
69
|
+
echo "Configuration (~/.telegram-env) will be preserved unless you choose to remove it."
|
|
70
|
+
echo ""
|
|
71
|
+
|
|
72
|
+
read -p "Continue with uninstallation? [y/N]: " CONFIRM
|
|
73
|
+
if [[ ! "$CONFIRM" =~ ^[Yy] ]]; then
|
|
74
|
+
echo "Cancelled."
|
|
75
|
+
exit 0
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
echo ""
|
|
79
|
+
|
|
80
|
+
# ============================================
|
|
81
|
+
# 1. STOP & REMOVE SERVICE
|
|
82
|
+
# ============================================
|
|
83
|
+
|
|
84
|
+
info "Stopping service..."
|
|
85
|
+
|
|
86
|
+
if [[ -f "$INSTALL_DIR/dist/cli.js" ]]; then
|
|
87
|
+
# Use CLI for clean uninstall
|
|
88
|
+
node "$INSTALL_DIR/dist/cli.js" service stop 2>/dev/null || true
|
|
89
|
+
node "$INSTALL_DIR/dist/cli.js" service uninstall 2>/dev/null || true
|
|
90
|
+
success "Service stopped via CLI"
|
|
91
|
+
else
|
|
92
|
+
# Manual cleanup if CLI not available
|
|
93
|
+
if [[ "$(uname -s)" == "Linux" ]]; then
|
|
94
|
+
systemctl --user stop claude-telegram-mirror 2>/dev/null || true
|
|
95
|
+
systemctl --user disable claude-telegram-mirror 2>/dev/null || true
|
|
96
|
+
rm -f "$HOME/.config/systemd/user/claude-telegram-mirror.service"
|
|
97
|
+
systemctl --user daemon-reload 2>/dev/null || true
|
|
98
|
+
success "systemd service removed"
|
|
99
|
+
elif [[ "$(uname -s)" == "Darwin" ]]; then
|
|
100
|
+
launchctl unload "$HOME/Library/LaunchAgents/com.claude.claude-telegram-mirror.plist" 2>/dev/null || true
|
|
101
|
+
rm -f "$HOME/Library/LaunchAgents/com.claude.claude-telegram-mirror.plist"
|
|
102
|
+
success "launchd agent removed"
|
|
103
|
+
fi
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
# Kill any running daemon processes
|
|
107
|
+
if [[ -f "$CONFIG_DIR/daemon.pid" ]]; then
|
|
108
|
+
daemon_pid=$(cat "$CONFIG_DIR/daemon.pid")
|
|
109
|
+
if kill -0 "$daemon_pid" 2>/dev/null; then
|
|
110
|
+
info "Killing daemon process ($daemon_pid)..."
|
|
111
|
+
kill "$daemon_pid" 2>/dev/null || true
|
|
112
|
+
sleep 1
|
|
113
|
+
fi
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
# ============================================
|
|
117
|
+
# 2. REMOVE HOOKS
|
|
118
|
+
# ============================================
|
|
119
|
+
|
|
120
|
+
info "Removing hooks..."
|
|
121
|
+
|
|
122
|
+
if [[ -f "$INSTALL_DIR/dist/cli.js" ]]; then
|
|
123
|
+
node "$INSTALL_DIR/dist/cli.js" uninstall-hooks 2>/dev/null || true
|
|
124
|
+
success "Hooks removed via CLI"
|
|
125
|
+
else
|
|
126
|
+
# Manual hook removal
|
|
127
|
+
SETTINGS="$HOME/.claude/settings.json"
|
|
128
|
+
if [[ -f "$SETTINGS" ]] && command -v jq &>/dev/null; then
|
|
129
|
+
# Create backup
|
|
130
|
+
cp "$SETTINGS" "$SETTINGS.backup.$(date +%s)"
|
|
131
|
+
|
|
132
|
+
# Remove telegram-hook entries from all hook types
|
|
133
|
+
jq 'if .hooks then .hooks |= with_entries(
|
|
134
|
+
.value |= map(select(
|
|
135
|
+
if .hooks then (.hooks | all(.command | contains("telegram-hook") | not))
|
|
136
|
+
elif .command then (.command | contains("telegram-hook") | not)
|
|
137
|
+
else true end
|
|
138
|
+
)) | select(length > 0)
|
|
139
|
+
) | if .hooks == {} then del(.hooks) else . end else . end' "$SETTINGS" > "$SETTINGS.tmp" && mv "$SETTINGS.tmp" "$SETTINGS"
|
|
140
|
+
success "Hooks removed from settings.json"
|
|
141
|
+
elif [[ -f "$SETTINGS" ]]; then
|
|
142
|
+
warn "jq not available - edit ~/.claude/settings.json manually to remove telegram-hook entries"
|
|
143
|
+
fi
|
|
144
|
+
fi
|
|
145
|
+
|
|
146
|
+
# ============================================
|
|
147
|
+
# 3. REMOVE FILES
|
|
148
|
+
# ============================================
|
|
149
|
+
|
|
150
|
+
info "Removing files..."
|
|
151
|
+
|
|
152
|
+
# Remove installation directory
|
|
153
|
+
if [[ -d "$INSTALL_DIR" ]]; then
|
|
154
|
+
rm -rf "$INSTALL_DIR"
|
|
155
|
+
success "Removed $INSTALL_DIR"
|
|
156
|
+
else
|
|
157
|
+
info "Install dir not found: $INSTALL_DIR"
|
|
158
|
+
fi
|
|
159
|
+
|
|
160
|
+
# Remove config directory (socket, db, logs)
|
|
161
|
+
if [[ -d "$CONFIG_DIR" ]]; then
|
|
162
|
+
rm -rf "$CONFIG_DIR"
|
|
163
|
+
success "Removed $CONFIG_DIR"
|
|
164
|
+
else
|
|
165
|
+
info "Config dir not found: $CONFIG_DIR"
|
|
166
|
+
fi
|
|
167
|
+
|
|
168
|
+
# Remove CLI symlink
|
|
169
|
+
if [[ -L "$CTM_SYMLINK" ]]; then
|
|
170
|
+
rm -f "$CTM_SYMLINK"
|
|
171
|
+
success "Removed ctm symlink"
|
|
172
|
+
elif [[ -f "$CTM_SYMLINK" ]]; then
|
|
173
|
+
rm -f "$CTM_SYMLINK"
|
|
174
|
+
success "Removed ctm script"
|
|
175
|
+
fi
|
|
176
|
+
|
|
177
|
+
# Remove macOS logs
|
|
178
|
+
if [[ "$(uname -s)" == "Darwin" ]]; then
|
|
179
|
+
rm -f "$HOME/Library/Logs/claude-telegram-mirror."* 2>/dev/null && success "Removed macOS logs"
|
|
180
|
+
fi
|
|
181
|
+
|
|
182
|
+
# ============================================
|
|
183
|
+
# 4. OPTIONAL: REMOVE CONFIGURATION
|
|
184
|
+
# ============================================
|
|
185
|
+
|
|
186
|
+
echo ""
|
|
187
|
+
read -p "Also remove ~/.telegram-env configuration? [y/N]: " REMOVE_ENV
|
|
188
|
+
|
|
189
|
+
if [[ "$REMOVE_ENV" =~ ^[Yy] ]]; then
|
|
190
|
+
if [[ -f "$ENV_FILE" ]]; then
|
|
191
|
+
rm -f "$ENV_FILE"
|
|
192
|
+
success "Removed ~/.telegram-env"
|
|
193
|
+
fi
|
|
194
|
+
|
|
195
|
+
# Clean shell profile
|
|
196
|
+
info "Cleaning shell profile..."
|
|
197
|
+
for RC in "$HOME/.bashrc" "$HOME/.bash_profile" "$HOME/.zshrc" "$HOME/.profile"; do
|
|
198
|
+
if [[ -f "$RC" ]] && grep -q "telegram-env" "$RC"; then
|
|
199
|
+
# macOS sed requires backup extension (-i '')
|
|
200
|
+
if [[ "$(uname -s)" == "Darwin" ]]; then
|
|
201
|
+
sed -i '' '/# Claude Telegram Mirror/d' "$RC" 2>/dev/null
|
|
202
|
+
sed -i '' '/telegram-env/d' "$RC" 2>/dev/null
|
|
203
|
+
else
|
|
204
|
+
sed -i '/# Claude Telegram Mirror/d' "$RC" 2>/dev/null
|
|
205
|
+
sed -i '/telegram-env/d' "$RC" 2>/dev/null
|
|
206
|
+
fi
|
|
207
|
+
success "Cleaned $RC"
|
|
208
|
+
fi
|
|
209
|
+
done
|
|
210
|
+
else
|
|
211
|
+
info "Kept ~/.telegram-env (you can remove it manually later)"
|
|
212
|
+
fi
|
|
213
|
+
|
|
214
|
+
# ============================================
|
|
215
|
+
# 5. CLEAN UP PROJECT-LEVEL HOOKS
|
|
216
|
+
# ============================================
|
|
217
|
+
|
|
218
|
+
echo ""
|
|
219
|
+
read -p "Check for project-level hooks to remove? [y/N]: " REMOVE_PROJECT_HOOKS
|
|
220
|
+
|
|
221
|
+
if [[ "$REMOVE_PROJECT_HOOKS" =~ ^[Yy] ]]; then
|
|
222
|
+
info "Searching for project-level hooks..."
|
|
223
|
+
|
|
224
|
+
# Find .claude/settings.json files with telegram-hook
|
|
225
|
+
while IFS= read -r settings_file; do
|
|
226
|
+
if [[ -f "$settings_file" ]] && grep -q "telegram-hook" "$settings_file" 2>/dev/null; then
|
|
227
|
+
project_dir=$(dirname "$(dirname "$settings_file")")
|
|
228
|
+
echo ""
|
|
229
|
+
warn "Found hooks in: $project_dir"
|
|
230
|
+
read -p " Remove hooks from this project? [y/N]: " remove_this
|
|
231
|
+
|
|
232
|
+
if [[ "$remove_this" =~ ^[Yy] ]]; then
|
|
233
|
+
if command -v jq &>/dev/null; then
|
|
234
|
+
cp "$settings_file" "$settings_file.backup.$(date +%s)"
|
|
235
|
+
jq 'if .hooks then .hooks |= with_entries(
|
|
236
|
+
.value |= map(select(
|
|
237
|
+
if .hooks then (.hooks | all(.command | contains("telegram-hook") | not))
|
|
238
|
+
elif .command then (.command | contains("telegram-hook") | not)
|
|
239
|
+
else true end
|
|
240
|
+
)) | select(length > 0)
|
|
241
|
+
) | if .hooks == {} then del(.hooks) else . end else . end' "$settings_file" > "$settings_file.tmp" && mv "$settings_file.tmp" "$settings_file"
|
|
242
|
+
success "Removed hooks from $project_dir"
|
|
243
|
+
else
|
|
244
|
+
warn "jq not available - edit $settings_file manually"
|
|
245
|
+
fi
|
|
246
|
+
fi
|
|
247
|
+
fi
|
|
248
|
+
done < <(find "$HOME" -maxdepth 5 -path "*/.claude/settings.json" -type f 2>/dev/null)
|
|
249
|
+
fi
|
|
250
|
+
|
|
251
|
+
# ============================================
|
|
252
|
+
# 6. COMPLETION
|
|
253
|
+
# ============================================
|
|
254
|
+
|
|
255
|
+
echo ""
|
|
256
|
+
echo "==================================="
|
|
257
|
+
success "Uninstallation complete!"
|
|
258
|
+
echo ""
|
|
259
|
+
echo "If you want to reinstall later:"
|
|
260
|
+
echo " curl -fsSL https://raw.githubusercontent.com/robertelee78/claude-telegram-mirror/master/scripts/install.sh | bash"
|
|
261
|
+
echo ""
|