virtualcode 1.9.2 → 2.0.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/CHANGELOG.md ADDED
@@ -0,0 +1,106 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [2.0.0] - 2026-06-19
9
+
10
+ ### Added
11
+ - `/start` command with welcome message and quick setup guide
12
+ - Token format validation (`^\d+:[\w-]+$`) before connecting
13
+ - Auto-reconnect with exponential backoff (5s -> 10s -> 20s -> 30s cap)
14
+ - LRU-bounded session tracking (max 100 entries)
15
+ - Pending message timeout (30s) to prevent memory leaks
16
+ - Non-text message handler (replies "Only text messages are supported.")
17
+ - Prefix ambiguity detection ("Multiple sessions match. Use the full ID.")
18
+ - Graceful shutdown in `dispose()` (clears all timers, maps, and state)
19
+
20
+ ### Changed
21
+ - Removed all emoji characters from user-facing messages
22
+ - `findSessionById` now returns typed result (`found | ambiguous | not_found`)
23
+ - `lastForwardedBySession` uses LRU eviction instead of unbounded growth
24
+ - `pendingTelegram` entries auto-expire after 30s
25
+ - Error messages are shorter and more consistent
26
+
27
+ ### Fixed
28
+ - Bot never auto-reconnected after 403/block errors
29
+ - `lastForwardedBySession` grew unbounded with every new session
30
+ - `pendingTelegram` leaked entries when `prompt()` hung
31
+ - Prefix matching silently failed when multiple sessions matched
32
+ - `dispose()` didn't clean up timers or pending state
33
+
34
+ ## [1.9.2] - 2026-06-19
35
+
36
+ ### Changed
37
+ - All error messages prefixed with error indicators
38
+ - `sanitizeUI()` strips stack traces and truncates to 200 chars
39
+ - `fmtId()` truncates session IDs to 12 chars
40
+
41
+ ### Fixed
42
+ - `userError()` now extracts only the first line of error messages
43
+ - All `ctx.reply()` error paths go through `sanitizeUI()`
44
+
45
+ ## [1.9.1] - 2026-06-19
46
+
47
+ ### Added
48
+ - Prefix matching for session IDs in `/link` and `/use`
49
+ - `/ls` now shows full session IDs for easy copy-paste
50
+
51
+ ### Fixed
52
+ - `/link` used `client.session.get()` which failed for valid IDs from other directories
53
+ - Now uses `client.session.list()` + `findSessionById()` for reliable matching
54
+
55
+ ## [1.9.0] - 2026-06-19
56
+
57
+ ### Added
58
+ - `handlePluginError()` maps known errors to friendly messages
59
+ - `debugLog()` for structured debug output (enable with `DEBUG_TELEGRAM=1`)
60
+ - All bot command handlers wrapped in try/catch
61
+
62
+ ### Fixed
63
+ - Raw error objects could overflow the TUI with stack traces
64
+ - `String(err)` on SDK errors produced 500+ line dumps
65
+ - Event handler errors not sanitized
66
+
67
+ ## [1.8.1] - 2026-06-19
68
+
69
+ ### Changed
70
+ - `/ls` output shows both session title and ID
71
+
72
+ ## [1.8.0] - 2026-06-19
73
+
74
+ ### Added
75
+ - `slashName: "telegram"` on TUI palette command
76
+ - `/telegram` now appears in chat slash suggestions
77
+ - `desc` field on palette command for meaningful descriptions
78
+
79
+ ### Fixed
80
+ - Removed all 6 `console.log` startup statements
81
+ - All `bot.stop()` calls wrapped in try/catch
82
+ - All `client.session.*` SDK calls wrapped in try/catch
83
+ - Added `bot.catch()` for global Telegraf error handling
84
+
85
+ ## [1.7.0] - 2026-06-18
86
+
87
+ ### Added
88
+ - TUI plugin with `/telegram` slash command for token setup
89
+ - Dialog prompt for pasting bot token
90
+ - Toast notification on successful token save
91
+
92
+ ### Fixed
93
+ - Cleared stale OpenCode cache for plugin updates
94
+
95
+ ## [1.0.0] - 2026-06-13
96
+
97
+ ### Added
98
+ - Initial release
99
+ - Bidirectional Telegram <-> OpenCode bridge
100
+ - Session linking via `/link`
101
+ - `/ls`, `/use`, `/history`, `/help` commands
102
+ - `telegram_send` tool for LLM-initiated messages
103
+ - Persistent links across restarts
104
+ - Multi-session support
105
+ - `allowed_users` access control
106
+ - `notify_on_reconnect` option
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 virtualcode contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,51 +1,255 @@
1
- # opencode-telegram
1
+ # virtualcode
2
2
 
3
- A [OpenCode](https://opencode.ai) plugin that bridges your terminal sessions with Telegram.
3
+ ```
4
+ __ ___ _
5
+ \ \ / (_)_ __ ___ ___ _ __ ___ | |_
6
+ \ \ / /| | '_ \ / _ \/ _ \| '_ \ / _ \ | __|
7
+ \ V / | | | | | __/ (_) | | | | (_) || |_
8
+ \_/ |_|_| |_|\___|\___/|_| |_|\___/ \__|
9
+
10
+ Talk to your terminal from your phone.
11
+ ```
4
12
 
5
- Send prompts from your phone via Telegram and receive LLM responses in real time. Also lets the LLM send messages back to you via a `telegram_send` tool.
13
+ An [OpenCode](https://opencode.ai) plugin that bridges your terminal sessions with Telegram.
14
+ Send prompts from your phone, receive LLM responses in real time. The LLM can also message
15
+ you back via a built-in tool.
6
16
 
7
- ## Features
17
+ ```
18
+ ┌─────────────────────────────────────────────────────────────────┐
19
+ │ │
20
+ │ YOUR PHONE YOUR TERMINAL │
21
+ │ ┌───────────────────┐ ┌───────────────────┐ │
22
+ │ │ Telegram │ │ $ opencode │ │
23
+ │ │ │ │ │ │
24
+ │ │ > fix the bug │ ─────────────>│ [AI] analyzing... │ │
25
+ │ │ │ │ │ │
26
+ │ │ [AI] Fixed. The │ <─────────────│ [AI] Fixed. The │ │
27
+ │ │ issue was in... │ │ issue was in... │ │
28
+ │ │ │ │ │ │
29
+ │ └───────────────────┘ └───────────────────┘ │
30
+ │ │
31
+ └─────────────────────────────────────────────────────────────────┘
32
+ ```
8
33
 
9
- - **Bidirectional**: Send prompts from Telegram, get responses back
10
- - **`/link` sessions**: Bind a Telegram chat to an OpenCode session
11
- - **`telegram_send` tool**: LLM can proactively message you on Telegram
12
- - **Multi-session**: One chat linked to one session; multiple chats can link to the same session
13
- - **Persistent links**: Session-chat bindings survive restarts
34
+ ---
14
35
 
15
36
  ## Installation
16
37
 
17
38
  ```bash
18
- npm install @opencode-ai/plugin-telegram
39
+ npm install -g virtualcode
40
+ ```
41
+
42
+ Then add the plugin to your OpenCode config:
43
+
44
+ ```json
45
+ {
46
+ "plugin": ["virtualcode"]
47
+ }
19
48
  ```
20
49
 
21
- Then add it to your `.opencode/opencode.json`:
50
+ And to your TUI config (`~/.config/opencode/tui.json`):
22
51
 
23
52
  ```json
24
53
  {
25
- "plugins": [
26
- ["@opencode-ai/plugin-telegram", {
54
+ "plugin": ["virtualcode"]
55
+ }
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Setup
61
+
62
+ ### 1. Create a Telegram Bot
63
+
64
+ ```
65
+ 1. Open Telegram and search for @BotFather
66
+ 2. Send /newbot
67
+ 3. Choose a name and username for your bot
68
+ 4. Copy the token (format: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
69
+ ```
70
+
71
+ ### 2. Connect the Bot
72
+
73
+ In your OpenCode terminal, type `/telegram` and paste your bot token.
74
+
75
+ Or configure it directly in `opencode.jsonc`:
76
+
77
+ ```json
78
+ {
79
+ "plugin": [
80
+ ["virtualcode", {
27
81
  "token": "YOUR_BOT_TOKEN",
28
- "allowed_users": [YOUR_TELEGRAM_ID]
82
+ "allowed_users": [YOUR_TELEGRAM_USER_ID]
29
83
  }]
30
84
  ]
31
85
  }
32
86
  ```
33
87
 
88
+ ### 3. Link a Session
89
+
90
+ In your Telegram chat with the bot:
91
+
92
+ ```
93
+ /ls -- list your OpenCode sessions
94
+ /link <ID> -- bind this chat to a session
95
+ ```
96
+
97
+ Now any message you send goes to that session. Responses come back automatically.
98
+
99
+ ---
100
+
101
+ ## Commands
102
+
103
+ ### Telegram Bot Commands
104
+
105
+ | Command | Description |
106
+ |---------|-------------|
107
+ | `/start` | Welcome message and quick setup guide |
108
+ | `/link <ID>` | Bind this chat to an OpenCode session |
109
+ | `/unlink` | Remove the session binding |
110
+ | `/status` | Show connection state and linked session |
111
+ | `/ls` | List recent sessions (number, title, ID) |
112
+ | `/use <N\|ID>` | Switch to a session by number or ID |
113
+ | `/history [N]` | View last N messages in the linked session |
114
+ | `/help` | Show command reference |
115
+
116
+ Any other message is forwarded to the linked session as a prompt.
117
+
118
+ ### OpenCode Terminal Commands
119
+
120
+ | Command | Description |
121
+ |---------|-------------|
122
+ | `/telegram` | Open token setup dialog |
123
+ | `/telegram <token>` | Connect with a bot token |
124
+ | `/telegram status` | Show bot connection state |
125
+ | `/telegram disconnect` | Stop bot and remove saved token |
126
+
127
+ ---
128
+
34
129
  ## Configuration
35
130
 
36
131
  | Option | Type | Default | Description |
37
132
  |--------|------|---------|-------------|
38
- | `token` | `string` | `env.TELEGRAM_BOT_TOKEN` | Telegram bot token |
39
- | `allowed_users` | `number[]` | `null` (all) | Restrict to specific Telegram user IDs |
40
- | `notify_on_reconnect` | `boolean` | `false` | Send reconnection notice to linked chats |
133
+ | `token` | `string` | `env.TELEGRAM_BOT_TOKEN` | Telegram bot token from @BotFather |
134
+ | `allowed_users` | `number[]` | `null` (all) | Restrict access to specific Telegram user IDs |
135
+ | `notify_on_reconnect` | `boolean` | `false` | Send a message to linked chats when the bot reconnects |
41
136
 
42
- ## Commands
137
+ ### Environment Variables
138
+
139
+ | Variable | Description |
140
+ |----------|-------------|
141
+ | `TELEGRAM_BOT_TOKEN` | Bot token (alternative to config) |
142
+ | `DEBUG_TELEGRAM` | Set to `1` to enable verbose debug logging |
143
+
144
+ ---
145
+
146
+ ## How It Works
147
+
148
+ ```
149
+ ┌──────────────────────────────────────────────────────────────────────┐
150
+ │ │
151
+ │ Telegram Bot OpenCode Plugin │
152
+ │ ┌──────────────┐ ┌──────────────────────────────┐ │
153
+ │ │ │ send prompt │ │ │
154
+ │ │ User sends │ ─────────────> │ session.prompt() │ │
155
+ │ │ a message │ │ │ │
156
+ │ │ │ │ │ │
157
+ │ │ │ response │ session.status -> idle │ │
158
+ │ │ User sees │ <───────────── │ -> fetch last message │ │
159
+ │ │ AI reply │ │ -> sendMessage() │ │
160
+ │ │ │ │ │ │
161
+ │ └──────────────┘ └──────────────────────────────┘ │
162
+ │ │
163
+ │ Persistence: │
164
+ │ ~/.config/opencode/telegram-token.json (bot token) │
165
+ │ ~/.config/opencode/telegram-links.json (chat <-> session map) │
166
+ │ │
167
+ └──────────────────────────────────────────────────────────────────────┘
168
+ ```
169
+
170
+ ---
171
+
172
+ ## Troubleshooting
173
+
174
+ **Bot doesn't respond to messages**
175
+
176
+ ```
177
+ 1. Check /status -- is the chat linked to a session?
178
+ 2. If not linked, use /ls then /link <ID>
179
+ 3. If linked, check OpenCode logs for errors
180
+ ```
181
+
182
+ **"Invalid token" error**
183
+
184
+ ```
185
+ 1. Make sure you copied the full token from @BotFather
186
+ 2. Token format: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz
187
+ 3. Try /telegram disconnect then reconnect with the correct token
188
+ ```
189
+
190
+ **"Another bot instance running" error**
191
+
192
+ ```
193
+ Only one bot can use a token at a time. Check if:
194
+ - Another OpenCode instance is running
195
+ - Another app is using the same bot token
196
+ - A previous instance didn't shut down cleanly (wait 30s)
197
+ ```
198
+
199
+ **Messages not coming back from OpenCode**
200
+
201
+ ```
202
+ 1. Check that the session is still active in OpenCode
203
+ 2. The bot auto-reconnects after failures (5s -> 10s -> 20s -> 30s)
204
+ 3. Set DEBUG_TELEGRAM=1 to see detailed logs
205
+ ```
206
+
207
+ **Session ID not found**
208
+
209
+ ```
210
+ 1. Use /ls to list sessions
211
+ 2. Copy the full ID (starts with "ses_")
212
+ 3. You can also use the number: /use 1
213
+ 4. Prefix matching works: /link ses_123 (if unique)
214
+ ```
215
+
216
+ ---
217
+
218
+ ## Architecture
219
+
220
+ ```
221
+ virtualcode
222
+ ├── src/
223
+ │ ├── index.ts Server plugin (bot logic, session bridge, event handling)
224
+ │ └── tui.ts TUI plugin (slash command, token dialog)
225
+ ├── install.js Postinstall script (auto-configures opencode.jsonc + tui.json)
226
+ ├── package.json npm: virtualcode
227
+ └── dist/ Compiled output
228
+ ```
229
+
230
+ **Key design decisions:**
231
+
232
+ - Atomic file writes (write to .tmp, then rename) prevent corruption
233
+ - All errors are sanitized before reaching the UI (no stack traces)
234
+ - Exponential backoff auto-reconnect (5s -> 10s -> 20s -> 30s cap)
235
+ - LRU-bounded session tracking (max 100 entries)
236
+ - Pending message timeout (30s) prevents memory leaks
237
+ - Prefix matching for session IDs with ambiguity detection
238
+
239
+ ---
240
+
241
+ ## Contributing
242
+
243
+ Issues and PRs welcome.
244
+
245
+ ```bash
246
+ git clone https://github.com/anomalyco/opencode-telegram.git
247
+ cd opencode-telegram
248
+ npm install
249
+ npm run build
250
+ ```
43
251
 
44
- - `/link <sessionId>` — Bind this chat to a session
45
- - `/unlink` — Remove binding
46
- - `/status` — Show connection state
47
- - `/sessions` — List recent sessions
48
- - `/help` — Show this help
252
+ ---
49
253
 
50
254
  ## License
51
255
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;;;;;AAmkBjD,wBAGC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;;;;;AAmrBjD,wBAGC"}
package/dist/index.js CHANGED
@@ -8,6 +8,10 @@ const LINK_TMP = LINK_FILE + ".tmp";
8
8
  const TOKEN_FILE = join(homedir(), ".config", "opencode", "telegram-token.json");
9
9
  const TOKEN_TMP = TOKEN_FILE + ".tmp";
10
10
  const CONFIG_DIR = join(homedir(), ".config", "opencode");
11
+ const TOKEN_REGEX = /^\d+:[\w-]+$/;
12
+ const MAX_LRU_SIZE = 100;
13
+ const PENDING_TIMEOUT_MS = 30_000;
14
+ const RECONNECT_DELAYS = [5_000, 10_000, 20_000, 30_000];
11
15
  function loadLinks() {
12
16
  try {
13
17
  if (existsSync(LINK_FILE)) {
@@ -48,11 +52,13 @@ function saveToken(token) {
48
52
  writeFileSync(TOKEN_FILE, JSON.stringify({ token }, null, 2));
49
53
  }
50
54
  }
55
+ function isValidToken(token) {
56
+ return TOKEN_REGEX.test(token);
57
+ }
51
58
  function userError(err) {
52
59
  if (!err)
53
60
  return "Unknown error";
54
61
  if (err instanceof Error) {
55
- // Only first line — never include stack traces
56
62
  const first = err.message.split("\n")[0].trim();
57
63
  return first || "Unknown error";
58
64
  }
@@ -72,27 +78,24 @@ function debugLog(...args) {
72
78
  function sanitizeUI(text, maxLen = 200) {
73
79
  if (!text)
74
80
  return "";
75
- // Remove stack trace lines (" at ...")
76
81
  let cleaned = text
77
82
  .split("\n")
78
83
  .filter((line) => !/^\s*at\s/.test(line))
79
84
  .join(" ")
80
85
  .trim();
81
- // Collapse whitespace
82
86
  cleaned = cleaned.replace(/\s+/g, " ");
83
- // Truncate
84
87
  if (cleaned.length > maxLen) {
85
88
  cleaned = cleaned.slice(0, maxLen - 3).trim() + "...";
86
89
  }
87
90
  return cleaned;
88
91
  }
89
92
  const KNOWN_ERRORS = [
90
- [/Expected a string starting with "ses"/, "Invalid session ID."],
91
- [/ECONNRESET/, "Connection lost."],
92
- [/(409|Conflict)/, "Another bot instance running."],
93
- [/(401|Unauthorized|invalid.*token)/i, "Invalid token."],
94
- [/(403|Forbidden)/, "Bot blocked."],
95
- [/(socket|timeout)/i, "Connection timed out."],
93
+ [/Expected a string starting with "ses"/, "Invalid session ID."],
94
+ [/ECONNRESET/, "Connection lost."],
95
+ [/(409|Conflict)/, "Another bot instance running."],
96
+ [/(401|Unauthorized|invalid.*token)/i, "Invalid token."],
97
+ [/(403|Forbidden)/, "Bot blocked."],
98
+ [/(socket|timeout)/i, "Connection timed out."],
96
99
  ];
97
100
  function handlePluginError(err, context) {
98
101
  const msg = userError(err);
@@ -101,7 +104,7 @@ function handlePluginError(err, context) {
101
104
  if (pattern.test(msg))
102
105
  return friendly;
103
106
  }
104
- return "Something went wrong.";
107
+ return "Something went wrong.";
105
108
  }
106
109
  function chunkText(text, maxLen = 4000) {
107
110
  if (text.length <= maxLen)
@@ -115,6 +118,17 @@ function chunkText(text, maxLen = 4000) {
115
118
  function fmtId(id) {
116
119
  return id.length > 12 ? id.slice(0, 12) + "..." : id;
117
120
  }
121
+ function findSessionById(id, list) {
122
+ const exact = list.find((s) => s.id === id);
123
+ if (exact)
124
+ return { status: "found", session: exact };
125
+ const prefix = list.filter((s) => s.id.startsWith(id));
126
+ if (prefix.length === 1)
127
+ return { status: "found", session: prefix[0] };
128
+ if (prefix.length > 1)
129
+ return { status: "ambiguous" };
130
+ return { status: "not_found" };
131
+ }
118
132
  const TelegramPlugin = async ({ client, directory }, options) => {
119
133
  const config = options;
120
134
  const allowedSet = config?.allowed_users?.length ? new Set(config.allowed_users) : null;
@@ -122,6 +136,10 @@ const TelegramPlugin = async ({ client, directory }, options) => {
122
136
  let bot = null;
123
137
  let botReady = false;
124
138
  let botStarting = false;
139
+ let userStopped = false;
140
+ let savedToken = null;
141
+ let reconnectTimer = null;
142
+ let reconnectAttempts = 0;
125
143
  const lastForwardedBySession = new Map();
126
144
  const pendingTelegram = new Map();
127
145
  const links = loadLinks();
@@ -167,6 +185,48 @@ const TelegramPlugin = async ({ client, directory }, options) => {
167
185
  }
168
186
  persistLinks(links);
169
187
  }
188
+ function lruSet(map, key, value) {
189
+ if (map.has(key)) {
190
+ map.delete(key);
191
+ }
192
+ else if (map.size >= MAX_LRU_SIZE) {
193
+ const oldest = map.keys().next().value;
194
+ if (oldest !== undefined)
195
+ map.delete(oldest);
196
+ }
197
+ map.set(key, value);
198
+ }
199
+ function setPending(sessionId, chatId) {
200
+ const existing = pendingTelegram.get(sessionId);
201
+ if (existing)
202
+ clearTimeout(existing.timer);
203
+ const timer = setTimeout(() => {
204
+ pendingTelegram.delete(sessionId);
205
+ }, PENDING_TIMEOUT_MS);
206
+ pendingTelegram.set(sessionId, { chatId, timer });
207
+ }
208
+ function clearPending(sessionId) {
209
+ const entry = pendingTelegram.get(sessionId);
210
+ if (entry) {
211
+ clearTimeout(entry.timer);
212
+ pendingTelegram.delete(sessionId);
213
+ }
214
+ }
215
+ function scheduleReconnect() {
216
+ if (userStopped || !savedToken)
217
+ return;
218
+ if (reconnectTimer)
219
+ return;
220
+ const delay = RECONNECT_DELAYS[Math.min(reconnectAttempts, RECONNECT_DELAYS.length - 1)];
221
+ reconnectAttempts++;
222
+ debugLog("scheduling reconnect in", delay, "ms (attempt", reconnectAttempts + ")");
223
+ reconnectTimer = setTimeout(async () => {
224
+ reconnectTimer = null;
225
+ if (savedToken && !userStopped) {
226
+ await startBot(savedToken);
227
+ }
228
+ }, delay);
229
+ }
170
230
  async function sendToChats(chats, text) {
171
231
  if (!botReady)
172
232
  return;
@@ -178,8 +238,9 @@ const TelegramPlugin = async ({ client, directory }, options) => {
178
238
  }
179
239
  catch (err) {
180
240
  const msg = handlePluginError(err, "sendMessage");
181
- if (msg.includes("blocked") || msg.includes("invalid")) {
241
+ if (msg.includes("blocked") || msg.includes("Invalid token")) {
182
242
  botReady = false;
243
+ scheduleReconnect();
183
244
  }
184
245
  }
185
246
  }
@@ -191,20 +252,18 @@ const TelegramPlugin = async ({ client, directory }, options) => {
191
252
  return;
192
253
  await sendToChats(chats, text);
193
254
  }
194
- async function findSessionById(id, list) {
195
- const exact = list.find((s) => s.id === id);
196
- if (exact)
197
- return exact;
198
- const prefix = list.filter((s) => s.id.startsWith(id));
199
- if (prefix.length === 1)
200
- return prefix[0];
201
- return null;
202
- }
203
255
  async function startBot(token) {
204
256
  if (botStarting)
205
257
  return;
258
+ if (!isValidToken(token)) {
259
+ debugLog("startBot: invalid token format");
260
+ return;
261
+ }
206
262
  botStarting = true;
207
263
  botReady = false;
264
+ userStopped = false;
265
+ savedToken = token;
266
+ reconnectAttempts = 0;
208
267
  try {
209
268
  try {
210
269
  bot?.stop();
@@ -214,6 +273,16 @@ const TelegramPlugin = async ({ client, directory }, options) => {
214
273
  bot.catch((err) => {
215
274
  handlePluginError(err, "bot.catch");
216
275
  });
276
+ bot.command("start", async (ctx) => {
277
+ if (allowedSet && !allowedSet.has(ctx.from.id))
278
+ return;
279
+ await ctx.reply("virtualcode - OpenCode Telegram bridge\n\n" +
280
+ "Quick setup:\n" +
281
+ "1. /ls - list your sessions\n" +
282
+ "2. /link <ID> - bind this chat\n" +
283
+ "3. Send any message to talk to OpenCode\n\n" +
284
+ "Type /help for all commands.");
285
+ });
217
286
  bot.command("link", async (ctx) => {
218
287
  if (allowedSet && !allowedSet.has(ctx.from.id))
219
288
  return;
@@ -225,21 +294,25 @@ const TelegramPlugin = async ({ client, directory }, options) => {
225
294
  try {
226
295
  const list = await client.session.list();
227
296
  if (list.error || !list.data) {
228
- await ctx.reply("Could not load sessions.");
297
+ await ctx.reply("Could not load sessions.");
298
+ return;
299
+ }
300
+ const result = findSessionById(arg, list.data);
301
+ if (result.status === "not_found") {
302
+ await ctx.reply("Session not found.");
229
303
  return;
230
304
  }
231
- const found = await findSessionById(arg, list.data);
232
- if (!found) {
233
- await ctx.reply("❌ Session not found.");
305
+ if (result.status === "ambiguous") {
306
+ await ctx.reply("Multiple sessions match. Use the full ID from /ls.");
234
307
  return;
235
308
  }
236
309
  const old = links[ctx.chat.id];
237
- addLink(ctx.chat.id, found.id);
310
+ addLink(ctx.chat.id, result.session.id);
238
311
  if (old) {
239
- await ctx.reply("Switched to " + fmtId(found.id) + " (from " + fmtId(old) + ")");
312
+ await ctx.reply("Switched to " + fmtId(result.session.id) + " (from " + fmtId(old) + ")");
240
313
  }
241
314
  else {
242
- await ctx.reply("Linked to " + (found.title || fmtId(found.id)));
315
+ await ctx.reply("Linked to " + (result.session.title || fmtId(result.session.id)));
243
316
  }
244
317
  }
245
318
  catch (err) {
@@ -273,15 +346,15 @@ const TelegramPlugin = async ({ client, directory }, options) => {
273
346
  try {
274
347
  const res = await client.session.list();
275
348
  if (res.error || !res.data) {
276
- await ctx.reply("Could not load sessions.");
349
+ await ctx.reply("Could not load sessions.");
277
350
  return;
278
351
  }
279
352
  const current = links[ctx.chat.id];
280
353
  const lines = res.data.slice(-20).map((s, i, arr) => {
281
354
  const num = arr.length - i;
282
- const marker = s.id === current ? " \u2705" : "";
355
+ const marker = s.id === current ? " *" : "";
283
356
  const label = s.title || s.id.slice(0, 16);
284
- return `${num}. ${label} ${s.id}${marker}`;
357
+ return num + ". " + label + " -- " + s.id + marker;
285
358
  });
286
359
  await ctx.reply("Sessions:\n" + (lines.length ? lines.join("\n") : "None"));
287
360
  }
@@ -301,13 +374,13 @@ const TelegramPlugin = async ({ client, directory }, options) => {
301
374
  try {
302
375
  const res = await client.session.list();
303
376
  if (res.error || !res.data) {
304
- await ctx.reply("Could not load sessions.");
377
+ await ctx.reply("Could not load sessions.");
305
378
  return;
306
379
  }
307
380
  const num = parseInt(arg);
308
381
  if (!isNaN(num) && num > 0) {
309
382
  if (num > res.data.length) {
310
- await ctx.reply("Only " + res.data.length + " sessions available.");
383
+ await ctx.reply("Only " + res.data.length + " sessions available.");
311
384
  return;
312
385
  }
313
386
  const s = res.data[res.data.length - num];
@@ -317,13 +390,17 @@ const TelegramPlugin = async ({ client, directory }, options) => {
317
390
  await ctx.reply("Switched to " + (s.title || fmtId(s.id)));
318
391
  return;
319
392
  }
320
- const found = await findSessionById(arg, res.data);
321
- if (!found) {
322
- await ctx.reply("Session not found.");
393
+ const result = findSessionById(arg, res.data);
394
+ if (result.status === "not_found") {
395
+ await ctx.reply("Session not found.");
396
+ return;
397
+ }
398
+ if (result.status === "ambiguous") {
399
+ await ctx.reply("Multiple sessions match. Use the full ID from /ls.");
323
400
  return;
324
401
  }
325
- addLink(ctx.chat.id, found.id);
326
- await ctx.reply("Switched to " + (found.title || fmtId(found.id)));
402
+ addLink(ctx.chat.id, result.session.id);
403
+ await ctx.reply("Switched to " + (result.session.title || fmtId(result.session.id)));
327
404
  }
328
405
  catch (err) {
329
406
  const msg = handlePluginError(err, "/use");
@@ -348,7 +425,7 @@ const TelegramPlugin = async ({ client, directory }, options) => {
348
425
  }
349
426
  const lines = [];
350
427
  for (const msg of res.data) {
351
- const role = msg.info.role === "user" ? "\uD83D\uDC64" : "\uD83E\uDD16";
428
+ const role = msg.info.role === "user" ? "[User]" : "[AI]";
352
429
  const text = msg.parts
353
430
  .filter((p) => p.type === "text" && !p.synthetic)
354
431
  .map((p) => p.text)
@@ -376,15 +453,20 @@ const TelegramPlugin = async ({ client, directory }, options) => {
376
453
  bot.command("help", async (ctx) => {
377
454
  if (allowedSet && !allowedSet.has(ctx.from.id))
378
455
  return;
379
- await ctx.reply("/link <sessionId> - Bind this chat to a session (use ID from /ls)\n" +
456
+ await ctx.reply("/link <sessionId> - Bind this chat to a session\n" +
380
457
  "/unlink - Remove binding\n" +
381
458
  "/status - Show connection state\n" +
382
- "/ls - List recent sessions (shows number + title + ID)\n" +
383
- "/use <number|sessionId> - Switch active session (number from /ls)\n" +
459
+ "/ls - List recent sessions\n" +
460
+ "/use <number|ID> - Switch active session\n" +
384
461
  "/history [N] - View last N messages\n" +
385
462
  "/help - Show this help\n\n" +
386
463
  "Any other message will be sent to the linked session.");
387
464
  });
465
+ bot.on(["photo", "sticker", "document", "video", "audio", "voice"], async (ctx) => {
466
+ if (allowedSet && !allowedSet.has(ctx.from.id))
467
+ return;
468
+ await ctx.reply("Only text messages are supported.");
469
+ });
388
470
  bot.on("text", async (ctx) => {
389
471
  if (allowedSet && !allowedSet.has(ctx.from.id))
390
472
  return;
@@ -393,8 +475,8 @@ const TelegramPlugin = async ({ client, directory }, options) => {
393
475
  await ctx.reply("Not linked. Use /link <ID>");
394
476
  return;
395
477
  }
396
- const working = await ctx.reply("\u23F3 ...");
397
- pendingTelegram.set(sessionId, ctx.chat.id);
478
+ const working = await ctx.reply("...");
479
+ setPending(sessionId, ctx.chat.id);
398
480
  try {
399
481
  const res = await client.session.prompt({
400
482
  path: { id: sessionId },
@@ -412,7 +494,7 @@ const TelegramPlugin = async ({ client, directory }, options) => {
412
494
  const msg = handlePluginError(err, "prompt");
413
495
  await ctx.reply(sanitizeUI(msg));
414
496
  }
415
- pendingTelegram.delete(sessionId);
497
+ clearPending(sessionId);
416
498
  try {
417
499
  await ctx.deleteMessage(working.message_id);
418
500
  }
@@ -420,7 +502,7 @@ const TelegramPlugin = async ({ client, directory }, options) => {
420
502
  });
421
503
  if (notifyOnReconnect) {
422
504
  for (const chatId of Object.keys(links)) {
423
- bot.telegram.sendMessage(Number(chatId), "OpenCode Telegram bridge reconnected.").catch(() => { });
505
+ bot.telegram.sendMessage(Number(chatId), "Telegram bridge reconnected.").catch(() => { });
424
506
  }
425
507
  }
426
508
  try {
@@ -431,6 +513,7 @@ const TelegramPlugin = async ({ client, directory }, options) => {
431
513
  debugLog("startBot failed:", msg);
432
514
  botStarting = false;
433
515
  botReady = false;
516
+ scheduleReconnect();
434
517
  return;
435
518
  }
436
519
  botReady = true;
@@ -438,12 +521,14 @@ const TelegramPlugin = async ({ client, directory }, options) => {
438
521
  bot.launch().catch((err) => {
439
522
  handlePluginError(err, "bot.launch");
440
523
  botReady = false;
524
+ scheduleReconnect();
441
525
  });
442
526
  }
443
527
  catch (err) {
444
528
  handlePluginError(err, "startBot");
445
529
  botStarting = false;
446
530
  botReady = false;
531
+ scheduleReconnect();
447
532
  }
448
533
  }
449
534
  const configToken = config?.token;
@@ -470,7 +555,7 @@ const TelegramPlugin = async ({ client, directory }, options) => {
470
555
  if (event.type === "session.status" && event.properties.status.type === "idle") {
471
556
  const sid = event.properties.sessionID;
472
557
  const pending = pendingTelegram.get(sid);
473
- const chats = pending ? new Set([pending]) : sessionToChats.get(sid);
558
+ const chats = pending ? new Set([pending.chatId]) : sessionToChats.get(sid);
474
559
  if (!chats || chats.size === 0)
475
560
  return;
476
561
  let msgs;
@@ -485,7 +570,7 @@ const TelegramPlugin = async ({ client, directory }, options) => {
485
570
  const last = [...msgs.data].reverse().find((m) => m.info.role === "assistant");
486
571
  if (!last || lastForwardedBySession.get(sid) === last.info.id)
487
572
  return;
488
- lastForwardedBySession.set(sid, last.info.id);
573
+ lruSet(lastForwardedBySession, sid, last.info.id);
489
574
  const text = last.parts
490
575
  .filter((p) => p.type === "text" && !p.synthetic)
491
576
  .map((p) => p.text)
@@ -516,6 +601,11 @@ const TelegramPlugin = async ({ client, directory }, options) => {
516
601
  if (text.startsWith("/telegram")) {
517
602
  const args = text.slice("/telegram".length).trim().toLowerCase();
518
603
  if (args === "disconnect" || args === "stop") {
604
+ userStopped = true;
605
+ if (reconnectTimer) {
606
+ clearTimeout(reconnectTimer);
607
+ reconnectTimer = null;
608
+ }
519
609
  try {
520
610
  bot?.stop();
521
611
  }
@@ -523,6 +613,7 @@ const TelegramPlugin = async ({ client, directory }, options) => {
523
613
  botReady = false;
524
614
  bot = null;
525
615
  botStarting = false;
616
+ savedToken = null;
526
617
  if (loadSavedToken())
527
618
  saveToken("");
528
619
  part.text = "Telegram bot disconnected and token removed.";
@@ -532,24 +623,26 @@ const TelegramPlugin = async ({ client, directory }, options) => {
532
623
  if (botReady) {
533
624
  part.text =
534
625
  "Telegram bot is connected.\n" +
535
- " /telegram <new_token> Change bot token\n" +
536
- " /telegram disconnect Stop bot and remove token\n" +
537
- " /telegram Open setup dialog (type /telegram in command palette)";
626
+ "- /telegram <new_token> - Change bot token\n" +
627
+ "- /telegram disconnect - Stop bot and remove token\n" +
628
+ "- /telegram - Open setup dialog (type /telegram in command palette)";
538
629
  }
539
630
  else {
540
631
  part.text =
541
632
  "Telegram bot is not connected.\n" +
542
- " /telegram <your_bot_token> Connect with a token\n" +
543
- " /telegram Open setup dialog (type /telegram in command palette)";
633
+ "- /telegram <your_bot_token> - Connect with a token\n" +
634
+ "- /telegram - Open setup dialog (type /telegram in command palette)";
544
635
  }
545
636
  return;
546
637
  }
547
638
  const token = args;
639
+ if (!isValidToken(token)) {
640
+ part.text = "Invalid token.";
641
+ return;
642
+ }
548
643
  saveToken(token);
549
644
  await startBot(token);
550
- part.text = botReady
551
- ? "\u2705 Connected."
552
- : "\u274c Invalid token.";
645
+ part.text = botReady ? "Connected." : "Invalid token.";
553
646
  return;
554
647
  }
555
648
  }
@@ -573,6 +666,16 @@ const TelegramPlugin = async ({ client, directory }, options) => {
573
666
  }),
574
667
  },
575
668
  async dispose() {
669
+ userStopped = true;
670
+ if (reconnectTimer) {
671
+ clearTimeout(reconnectTimer);
672
+ reconnectTimer = null;
673
+ }
674
+ for (const [, entry] of pendingTelegram) {
675
+ clearTimeout(entry.timer);
676
+ }
677
+ pendingTelegram.clear();
678
+ lastForwardedBySession.clear();
576
679
  try {
577
680
  bot?.stop();
578
681
  }
@@ -580,6 +683,7 @@ const TelegramPlugin = async ({ client, directory }, options) => {
580
683
  botReady = false;
581
684
  botStarting = false;
582
685
  bot = null;
686
+ savedToken = null;
583
687
  },
584
688
  };
585
689
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "virtualcode",
3
- "version": "1.9.2",
3
+ "version": "2.0.0",
4
4
  "description": "OpenCode plugin that bridges your terminal sessions with Telegram",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -18,7 +18,10 @@
18
18
  },
19
19
  "files": [
20
20
  "dist",
21
- "install.js"
21
+ "install.js",
22
+ "README.md",
23
+ "LICENSE",
24
+ "CHANGELOG.md"
22
25
  ],
23
26
  "scripts": {
24
27
  "build": "tsc",
@@ -30,11 +33,19 @@
30
33
  "type": "git",
31
34
  "url": "git+https://github.com/anomalyco/opencode-telegram.git"
32
35
  },
36
+ "bugs": {
37
+ "url": "https://github.com/anomalyco/opencode-telegram/issues"
38
+ },
39
+ "homepage": "https://github.com/anomalyco/opencode-telegram#readme",
33
40
  "keywords": [
34
41
  "opencode",
35
42
  "telegram",
36
43
  "plugin",
37
- "ai"
44
+ "ai",
45
+ "llm",
46
+ "bridge",
47
+ "remote",
48
+ "mobile"
38
49
  ],
39
50
  "dependencies": {
40
51
  "@opencode-ai/plugin": "^1.17.8",