@poolzin/pool-bot 2026.3.22 → 2026.3.23
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 +54 -0
- package/dist/acp/bindings-store.js +209 -0
- package/dist/acp/control-plane/runtime-cache.js +54 -0
- package/dist/acp/control-plane/runtime-options.js +215 -0
- package/dist/acp/control-plane/session-actor-queue.js +36 -0
- package/dist/acp/runtime/errors.js +47 -0
- package/dist/acp/runtime/registry.js +86 -0
- package/dist/acp/runtime/types.js +1 -0
- package/dist/acp/translator.js +97 -0
- package/dist/agents/failover-error.js +145 -47
- package/dist/browser/browser-profile-manager.js +319 -0
- package/dist/browser/cdp-proxy-bypass.js +129 -0
- package/dist/browser/cdp-timeouts.js +41 -0
- package/dist/browser/chrome-extension-validator.js +406 -0
- package/dist/browser/chrome-mcp-snapshot.js +222 -0
- package/dist/browser/chrome-mcp.js +421 -0
- package/dist/browser/chrome-mcp.snapshot.js +133 -0
- package/dist/browser/errors.js +67 -0
- package/dist/browser/form-fields.js +22 -0
- package/dist/browser/output-atomic.js +44 -0
- package/dist/browser/profile-capabilities.js +47 -0
- package/dist/browser/safe-filename.js +25 -0
- package/dist/browser/snapshot-roles.js +60 -0
- package/dist/build-info.json +3 -3
- package/dist/commands/security-owner-only.js +86 -0
- package/dist/control-ui/assets/{index-Dvkl4Xlx.js → index-D7shnQwQ.js} +404 -388
- package/dist/control-ui/assets/index-D7shnQwQ.js.map +1 -0
- package/dist/control-ui/index.html +1 -1
- package/dist/cron/cron-filters.js +150 -0
- package/dist/gateway/device-pairing-security.js +197 -0
- package/dist/gateway/event-deduplication.js +167 -0
- package/dist/gateway/run-tracker.js +253 -0
- package/dist/gateway/server-methods/nodes.js +14 -0
- package/dist/gateway/websocket-preauth-security.js +188 -0
- package/dist/infra/errors.js +53 -13
- package/dist/infra/exec-approvals-security.js +217 -0
- package/dist/infra/security/command-analyzer.js +257 -0
- package/dist/plugins/loader.js +16 -8
- package/dist/security/external-content.js +51 -1
- package/dist/sessions/session-costs.js +228 -0
- package/dist/shared/param-key.js +16 -0
- package/dist/shared/poll-params.js +58 -0
- package/dist/shared/polls.js +55 -0
- package/docs/DASHBOARD-GAP-ANALYSIS-AND-PLAN.md +430 -0
- package/docs/FEATURES.md +523 -0
- package/docs/FINAL-IMPLEMENTATION-REVIEW.md +274 -0
- package/docs/FINAL-IMPLEMENTATION-SUMMARY.md +356 -0
- package/docs/FINAL-PROFESSIONAL-EVALUATION.md +312 -0
- package/docs/IMPLEMENTATION-PRIORITY-EVALUATION.md +298 -0
- package/docs/IMPLEMENTATION-PROGRESS.md +237 -0
- package/docs/IMPLEMENTATION-REVIEW-PHASE1-2.md +381 -0
- package/docs/IMPLEMENTATION-REVIEW-PHASE4.md +389 -0
- package/docs/IMPLEMENTATION-REVIEW-PHASE5.md +420 -0
- package/docs/IMPLEMENTATION-REVIEW-PHASE6.md +422 -0
- package/docs/IMPLEMENTATION-REVIEW-PHASE7-FINAL.md +184 -0
- package/docs/MIKRODASH-ANALYSIS.md +412 -0
- package/docs/OPENCLAW-GAP-ANALYSIS-FINAL.md +431 -0
- package/docs/OPENCLAW-VS-POOLBOT-ANALYSIS.md +351 -0
- package/docs/PHASE-7-SUMMARY.md +144 -0
- package/docs/POOLBOT-OFFICE-PLAN.md +697 -0
- package/docs/PROJECT-FINAL-STATUS.md +237 -0
- package/docs/README.md +116 -0
- package/docs/REAL-IMPROVEMENTS-EVALUATION.md +477 -0
- package/docs/SECURITY-HARDENING-IMPLEMENTATION.md +161 -0
- package/docs/channels/googlechat.md +235 -206
- package/docs/channels/irc.md +332 -0
- package/docs/channels/nostr.md +255 -168
- package/docs/components/command-palette.md +166 -0
- package/docs/components/login-gate.md +219 -0
- package/docs/getting-started/installation.md +191 -0
- package/docs/getting-started/introduction.md +120 -0
- package/docs/improvements/USAGE-GUIDE.md +359 -0
- package/docs/plans/2026-03-15-openclaw-features-implementation.md +1632 -0
- package/docs/reference/deadcode-detection.md +72 -0
- package/extensions/acpx/node_modules/.bin/acpx +21 -0
- package/extensions/agency-agents/node_modules/.bin/vite +4 -4
- package/extensions/agency-agents/node_modules/.bin/vitest +2 -2
- package/extensions/googlechat/node_modules/.bin/tsc +21 -0
- package/extensions/googlechat/node_modules/.bin/tsserver +21 -0
- package/extensions/googlechat/node_modules/.bin/vitest +21 -0
- package/extensions/googlechat/package.json +11 -28
- package/extensions/googlechat/src/googlechat-channel.test.ts +60 -0
- package/extensions/googlechat/src/googlechat-channel.ts +120 -0
- package/extensions/googlechat/src/index.ts +14 -0
- package/extensions/irc/node_modules/.bin/tsc +21 -0
- package/extensions/irc/node_modules/.bin/tsserver +21 -0
- package/extensions/irc/node_modules/.bin/vitest +21 -0
- package/extensions/irc/package.json +16 -8
- package/extensions/irc/src/index.ts +14 -0
- package/extensions/irc/src/irc-channel.test.ts +43 -0
- package/extensions/irc/src/irc-channel.ts +191 -0
- package/extensions/keyed-async-queue/node_modules/.bin/tsc +21 -0
- package/extensions/keyed-async-queue/node_modules/.bin/tsserver +21 -0
- package/extensions/keyed-async-queue/node_modules/.bin/vitest +21 -0
- package/extensions/keyed-async-queue/package.json +20 -0
- package/extensions/keyed-async-queue/src/index.ts +14 -0
- package/extensions/keyed-async-queue/src/queue.test.ts +135 -0
- package/extensions/keyed-async-queue/src/queue.ts +200 -0
- package/extensions/memory-core/node_modules/.bin/tsc +21 -0
- package/extensions/memory-core/node_modules/.bin/tsserver +21 -0
- package/extensions/memory-core/node_modules/.bin/vitest +21 -0
- package/extensions/memory-core/package.json +11 -8
- package/extensions/memory-core/src/index.ts +14 -0
- package/extensions/memory-core/src/memory-manager.test.ts +124 -0
- package/extensions/memory-core/src/memory-manager.ts +186 -0
- package/extensions/nostr/node_modules/.bin/tsc +2 -2
- package/extensions/nostr/node_modules/.bin/tsserver +2 -2
- package/extensions/nostr/node_modules/.bin/vitest +21 -0
- package/extensions/nostr/package.json +15 -24
- package/extensions/nostr/src/index.ts +14 -0
- package/extensions/nostr/src/nostr-channel.test.ts +55 -0
- package/extensions/nostr/src/nostr-channel.ts +228 -0
- package/extensions/page-agent/node_modules/.bin/vitest +2 -2
- package/extensions/test-utils/node_modules/.bin/jiti +21 -0
- package/extensions/test-utils/node_modules/.bin/playwright +21 -0
- package/extensions/test-utils/node_modules/.bin/tsx +21 -0
- package/extensions/test-utils/node_modules/.bin/vite +21 -0
- package/extensions/test-utils/node_modules/.bin/vitest +21 -0
- package/extensions/test-utils/node_modules/.bin/yaml +21 -0
- package/extensions/xyops/node_modules/.bin/vitest +2 -2
- package/package.json +2 -1
- package/dist/control-ui/assets/index-Dvkl4Xlx.js.map +0 -1
- package/extensions/googlechat/node_modules/.bin/poolbot +0 -21
- package/extensions/memory-core/node_modules/.bin/poolbot +0 -21
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
# IRC Channel
|
|
2
|
+
|
|
3
|
+
Integração com servidores IRC para comunicação em tempo real via protocolo IRC tradicional.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🖥️ **Multi-Server** - Conecte a múltiplos servidores IRC
|
|
8
|
+
- 🔐 **SASL Auth** - Autenticação SASL PLAIN
|
|
9
|
+
- 🔁 **Auto-Reconnect** - Reconexão automática
|
|
10
|
+
- 📝 **Multi-Channel** - Entre em múltiplos canais
|
|
11
|
+
- 👥 **User Tracking** - Tracking de usuários
|
|
12
|
+
- 🔒 **TLS/SSL** - Conexões seguras
|
|
13
|
+
|
|
14
|
+
## Configuração
|
|
15
|
+
|
|
16
|
+
### 1. Configurar Conexão
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Configurar servidor
|
|
20
|
+
poolbot config set channels.irc.host irc.libera.chat
|
|
21
|
+
poolbot config set channels.irc.port 6697
|
|
22
|
+
poolbot config set channels.irc.tls true
|
|
23
|
+
|
|
24
|
+
# Nickname do bot
|
|
25
|
+
poolbot config set channels.irc.nick poolbot
|
|
26
|
+
|
|
27
|
+
# Canais para entrar
|
|
28
|
+
poolbot config set channels.irc.channels '["#poolbot","#test"]'
|
|
29
|
+
|
|
30
|
+
# Habilitar canal
|
|
31
|
+
poolbot config set channels.irc.enabled true
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 2. Configurar SASL (Opcional)
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# NickServ credentials
|
|
38
|
+
poolbot config set channels.irc.sasl.account your-nick
|
|
39
|
+
poolbot config set channels.irc.sasl.password your-password
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 3. Configurar Senha do Server (Opcional)
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
poolbot config set channels.irc.password serverpass
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Uso
|
|
49
|
+
|
|
50
|
+
### Conectar
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
import { createIRCChannel } from '@poolbot/irc'
|
|
54
|
+
|
|
55
|
+
const channel = createIRCChannel({
|
|
56
|
+
host: 'irc.libera.chat',
|
|
57
|
+
port: 6697,
|
|
58
|
+
nick: 'poolbot',
|
|
59
|
+
channels: ['#poolbot', '#test'],
|
|
60
|
+
tls: true,
|
|
61
|
+
sasl: {
|
|
62
|
+
account: 'poolbot',
|
|
63
|
+
password: 'secret',
|
|
64
|
+
},
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
await channel.connect()
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Enviar Mensagem
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
// Enviar para canal
|
|
74
|
+
await channel.sendMessage({
|
|
75
|
+
text: 'Hello IRC!',
|
|
76
|
+
to: '#poolbot',
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
// Enviar para usuário
|
|
80
|
+
await channel.sendMessage({
|
|
81
|
+
text: 'Hello!',
|
|
82
|
+
to: 'username',
|
|
83
|
+
})
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Receber Mensagens
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
await channel.receiveMessages((msg) => {
|
|
90
|
+
console.log(`[${msg.to}] ${msg.from}: ${msg.text}`)
|
|
91
|
+
})
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Entrar/Sair de Canais
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
// Entrar em canal
|
|
98
|
+
await channel.joinChannel('#newchannel')
|
|
99
|
+
|
|
100
|
+
// Sair de canal
|
|
101
|
+
await channel.leaveChannel('#oldchannel')
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Obter Usuários
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
const presences = await channel.getPresences()
|
|
108
|
+
console.log(presences)
|
|
109
|
+
// [{ channelId: '#poolbot', userId: 'user1', status: 'online' }, ...]
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Config Options
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
type IRCConfig = {
|
|
116
|
+
host: string // Servidor IRC
|
|
117
|
+
port: number // Porta (6667 ou 6697 para TLS)
|
|
118
|
+
nick: string // Nickname do bot
|
|
119
|
+
channels: string[] // Canais para entrar
|
|
120
|
+
password?: string // Senha do servidor
|
|
121
|
+
sasl?: {
|
|
122
|
+
account: string // NickServ account
|
|
123
|
+
password: string // NickServ password
|
|
124
|
+
}
|
|
125
|
+
tls?: boolean // Usar TLS/SSL
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Auto-Reconnect
|
|
130
|
+
|
|
131
|
+
O canal IRC reconecta automaticamente:
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
{
|
|
135
|
+
auto_reconnect: true,
|
|
136
|
+
auto_reconnect_wait: 10, // Segundos
|
|
137
|
+
max_reconnect_attempts: 5, // Tentativas máximas
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Comandos IRC
|
|
142
|
+
|
|
143
|
+
### Comandos do Bot
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
!join #channel - Entrar em canal
|
|
147
|
+
!part #channel - Sair de canal
|
|
148
|
+
!nick newnick - Mudar nickname
|
|
149
|
+
!whois user - Whois de usuário
|
|
150
|
+
!channels - Listar canais
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Comandos IRC Padrão
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
/join #channel - Entrar em canal
|
|
157
|
+
/part #channel - Sair de canal
|
|
158
|
+
/nick newnick - Mudar nick
|
|
159
|
+
/whois user - Whois
|
|
160
|
+
/msg user text - Mensagem privada
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Exemplos
|
|
164
|
+
|
|
165
|
+
### Bot de Boas-Vindas
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
await channel.receiveMessages((msg) => {
|
|
169
|
+
if (msg.text.includes('join')) {
|
|
170
|
+
channel.sendMessage({
|
|
171
|
+
to: msg.from,
|
|
172
|
+
text: `Bem-vindo ${msg.from}!`,
|
|
173
|
+
})
|
|
174
|
+
}
|
|
175
|
+
})
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Resposta a Comandos
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
await channel.receiveMessages((msg) => {
|
|
182
|
+
if (msg.text.startsWith('!hora')) {
|
|
183
|
+
const hora = new Date().toLocaleTimeString()
|
|
184
|
+
channel.sendMessage({
|
|
185
|
+
to: msg.to,
|
|
186
|
+
text: `São ${hora}`,
|
|
187
|
+
})
|
|
188
|
+
}
|
|
189
|
+
})
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Bridge com Outros Canais
|
|
193
|
+
|
|
194
|
+
```typescript
|
|
195
|
+
// Bridge IRC <-> Telegram
|
|
196
|
+
await channel.receiveMessages((msg) => {
|
|
197
|
+
if (msg.to === '#bridge') {
|
|
198
|
+
telegramChannel.sendMessage({
|
|
199
|
+
text: `[IRC] ${msg.from}: ${msg.text}`,
|
|
200
|
+
})
|
|
201
|
+
}
|
|
202
|
+
})
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Troubleshooting
|
|
206
|
+
|
|
207
|
+
### Conexão Recusada
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
Error: Connection refused
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**Solução:**
|
|
214
|
+
- Verificar host/porta
|
|
215
|
+
- Testar com telnet: `telnet irc.server.com 6667`
|
|
216
|
+
- Verificar firewall
|
|
217
|
+
|
|
218
|
+
### Nickname já em uso
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
Erroneous nickname
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Solução:**
|
|
225
|
+
- Mudar nickname: `poolbot config set channels.irc.nick poolbot_`
|
|
226
|
+
- Registrar nick no NickServ
|
|
227
|
+
|
|
228
|
+
### Não consegue entrar em canais
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
Cannot join channel
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**Solução:**
|
|
235
|
+
- Verificar se canal existe
|
|
236
|
+
- Verificar permissões (canais +i, +k)
|
|
237
|
+
- Identificar-se antes: `/msg NickServ IDENTIFY password`
|
|
238
|
+
|
|
239
|
+
### TLS/SSL Errors
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
SSL/TLS handshake failed
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
**Solução:**
|
|
246
|
+
- Usar porta correta (6697 para TLS)
|
|
247
|
+
- Verificar certificados
|
|
248
|
+
- Desabilitar TLS para teste: `tls: false`
|
|
249
|
+
|
|
250
|
+
## Servidores Recomendados
|
|
251
|
+
|
|
252
|
+
### Libera Chat (Open Source)
|
|
253
|
+
```
|
|
254
|
+
host: irc.libera.chat
|
|
255
|
+
port: 6697 (TLS) / 6667 (plain)
|
|
256
|
+
tls: true
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Freenode (Legacy)
|
|
260
|
+
```
|
|
261
|
+
host: irc.freenode.net
|
|
262
|
+
port: 6697 (TLS)
|
|
263
|
+
tls: true
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### OFTC
|
|
267
|
+
```
|
|
268
|
+
host: irc.oftc.net
|
|
269
|
+
port: 6697 (TLS)
|
|
270
|
+
tls: true
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## Security
|
|
274
|
+
|
|
275
|
+
### Best Practices
|
|
276
|
+
|
|
277
|
+
1. **Sempre use TLS** quando disponível
|
|
278
|
+
2. **Registre seu nick** no NickServ
|
|
279
|
+
3. **Use SASL** em vez de enviar senha no comando
|
|
280
|
+
4. **Não envie senhas** em canais públicos
|
|
281
|
+
5. **Limite rate** de mensagens
|
|
282
|
+
|
|
283
|
+
### Configuração Segura
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
{
|
|
287
|
+
host: 'irc.libera.chat',
|
|
288
|
+
port: 6697, // TLS port
|
|
289
|
+
tls: true, // Always use TLS
|
|
290
|
+
sasl: { // SASL auth
|
|
291
|
+
account: 'poolbot',
|
|
292
|
+
password: 'secret',
|
|
293
|
+
},
|
|
294
|
+
nick: 'poolbot',
|
|
295
|
+
channels: ['#poolbot'],
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## API Reference
|
|
300
|
+
|
|
301
|
+
### Methods
|
|
302
|
+
|
|
303
|
+
- `connect()` - Conectar ao servidor
|
|
304
|
+
- `disconnect()` - Desconectar (QUIT)
|
|
305
|
+
- `sendMessage(message)` - Enviar mensagem
|
|
306
|
+
- `receiveMessages(callback)` - Configurar receiver
|
|
307
|
+
- `getPresences()` - Obter usuários dos canais
|
|
308
|
+
- `joinChannel(channel)` - Entrar em canal
|
|
309
|
+
- `leaveChannel(channel)` - Sair de canal
|
|
310
|
+
- `getStatus()` - Status da conexão
|
|
311
|
+
|
|
312
|
+
### Events
|
|
313
|
+
|
|
314
|
+
- `connect` - Conectado ao servidor
|
|
315
|
+
- `disconnect` - Desconectado
|
|
316
|
+
- `message` - Nova mensagem
|
|
317
|
+
- `notice` - Notice recebido
|
|
318
|
+
- `error` - Erro
|
|
319
|
+
- `join` - Usuário entrou no canal
|
|
320
|
+
- `part` - Usuário saiu do canal
|
|
321
|
+
|
|
322
|
+
## Arquivos Relacionados
|
|
323
|
+
|
|
324
|
+
- `extensions/irc/src/irc-channel.ts` - Implementação
|
|
325
|
+
- `extensions/irc/src/index.ts` - Entry point
|
|
326
|
+
- `extensions/irc/package.json` - Dependências (irc-framework)
|
|
327
|
+
|
|
328
|
+
## Links Relacionados
|
|
329
|
+
|
|
330
|
+
- [IRC Protocol](https://www.irc.org/tech_docs/protocol.html)
|
|
331
|
+
- [IRCv3 Extensions](https://ircv3.net/)
|
|
332
|
+
- [irc-framework Docs](https://github.com/kiwiirc/irc-framework)
|