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 +106 -0
- package/LICENSE +21 -0
- package/README.md +227 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +160 -56
- package/dist/index.js.map +1 -1
- package/package.json +14 -3
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
|
-
#
|
|
1
|
+
# virtualcode
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
```
|
|
4
|
+
__ ___ _
|
|
5
|
+
\ \ / (_)_ __ ___ ___ _ __ ___ | |_
|
|
6
|
+
\ \ / /| | '_ \ / _ \/ _ \| '_ \ / _ \ | __|
|
|
7
|
+
\ V / | | | | | __/ (_) | | | | (_) || |_
|
|
8
|
+
\_/ |_|_| |_|\___|\___/|_| |_|\___/ \__|
|
|
9
|
+
|
|
10
|
+
Talk to your terminal from your phone.
|
|
11
|
+
```
|
|
4
12
|
|
|
5
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
50
|
+
And to your TUI config (`~/.config/opencode/tui.json`):
|
|
22
51
|
|
|
23
52
|
```json
|
|
24
53
|
{
|
|
25
|
-
"
|
|
26
|
-
|
|
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": [
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;;;;;
|
|
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"/, "
|
|
91
|
-
[/ECONNRESET/, "
|
|
92
|
-
[/(409|Conflict)/, "
|
|
93
|
-
[/(401|Unauthorized|invalid.*token)/i, "
|
|
94
|
-
[/(403|Forbidden)/, "
|
|
95
|
-
[/(socket|timeout)/i, "
|
|
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 "
|
|
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("
|
|
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("
|
|
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
|
-
|
|
232
|
-
|
|
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,
|
|
310
|
+
addLink(ctx.chat.id, result.session.id);
|
|
238
311
|
if (old) {
|
|
239
|
-
await ctx.reply("Switched to " + fmtId(
|
|
312
|
+
await ctx.reply("Switched to " + fmtId(result.session.id) + " (from " + fmtId(old) + ")");
|
|
240
313
|
}
|
|
241
314
|
else {
|
|
242
|
-
await ctx.reply("Linked to " + (
|
|
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("
|
|
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 ? "
|
|
355
|
+
const marker = s.id === current ? " *" : "";
|
|
283
356
|
const label = s.title || s.id.slice(0, 16);
|
|
284
|
-
return
|
|
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("
|
|
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("
|
|
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
|
|
321
|
-
if (
|
|
322
|
-
await ctx.reply("
|
|
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,
|
|
326
|
-
await ctx.reply("Switched to " + (
|
|
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" ? "
|
|
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
|
|
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
|
|
383
|
-
"/use <number|
|
|
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("
|
|
397
|
-
|
|
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
|
-
|
|
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), "
|
|
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
|
|
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
|
-
"
|
|
536
|
-
"
|
|
537
|
-
"
|
|
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
|
-
"
|
|
543
|
-
"
|
|
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": "
|
|
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",
|