@poolzin/pool-bot 2026.3.21 → 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.
Files changed (124) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/dist/acp/bindings-store.js +209 -0
  3. package/dist/acp/control-plane/runtime-cache.js +54 -0
  4. package/dist/acp/control-plane/runtime-options.js +215 -0
  5. package/dist/acp/control-plane/session-actor-queue.js +36 -0
  6. package/dist/acp/runtime/errors.js +47 -0
  7. package/dist/acp/runtime/registry.js +86 -0
  8. package/dist/acp/runtime/types.js +1 -0
  9. package/dist/acp/translator.js +97 -0
  10. package/dist/agents/failover-error.js +145 -47
  11. package/dist/browser/browser-profile-manager.js +319 -0
  12. package/dist/browser/cdp-proxy-bypass.js +129 -0
  13. package/dist/browser/cdp-timeouts.js +41 -0
  14. package/dist/browser/chrome-extension-validator.js +406 -0
  15. package/dist/browser/chrome-mcp-snapshot.js +222 -0
  16. package/dist/browser/chrome-mcp.js +421 -0
  17. package/dist/browser/chrome-mcp.snapshot.js +133 -0
  18. package/dist/browser/errors.js +67 -0
  19. package/dist/browser/form-fields.js +22 -0
  20. package/dist/browser/output-atomic.js +44 -0
  21. package/dist/browser/profile-capabilities.js +47 -0
  22. package/dist/browser/safe-filename.js +25 -0
  23. package/dist/browser/snapshot-roles.js +60 -0
  24. package/dist/build-info.json +3 -3
  25. package/dist/commands/security-owner-only.js +86 -0
  26. package/dist/control-ui/assets/{index-Dvkl4Xlx.js → index-D7shnQwQ.js} +404 -388
  27. package/dist/control-ui/assets/index-D7shnQwQ.js.map +1 -0
  28. package/dist/control-ui/index.html +1 -1
  29. package/dist/cron/cron-filters.js +150 -0
  30. package/dist/gateway/device-pairing-security.js +197 -0
  31. package/dist/gateway/event-deduplication.js +167 -0
  32. package/dist/gateway/run-tracker.js +253 -0
  33. package/dist/gateway/server-methods/nodes.js +14 -0
  34. package/dist/gateway/websocket-preauth-security.js +188 -0
  35. package/dist/infra/errors.js +53 -13
  36. package/dist/infra/exec-approvals-security.js +217 -0
  37. package/dist/infra/security/command-analyzer.js +257 -0
  38. package/dist/plugins/loader.js +16 -8
  39. package/dist/security/external-content.js +51 -1
  40. package/dist/sessions/session-costs.js +228 -0
  41. package/dist/shared/param-key.js +16 -0
  42. package/dist/shared/poll-params.js +58 -0
  43. package/dist/shared/polls.js +55 -0
  44. package/docs/DASHBOARD-GAP-ANALYSIS-AND-PLAN.md +430 -0
  45. package/docs/FEATURES.md +523 -0
  46. package/docs/FINAL-IMPLEMENTATION-REVIEW.md +274 -0
  47. package/docs/FINAL-IMPLEMENTATION-SUMMARY.md +356 -0
  48. package/docs/FINAL-PROFESSIONAL-EVALUATION.md +312 -0
  49. package/docs/IMPLEMENTATION-PRIORITY-EVALUATION.md +298 -0
  50. package/docs/IMPLEMENTATION-PROGRESS.md +237 -0
  51. package/docs/IMPLEMENTATION-REVIEW-PHASE1-2.md +381 -0
  52. package/docs/IMPLEMENTATION-REVIEW-PHASE4.md +389 -0
  53. package/docs/IMPLEMENTATION-REVIEW-PHASE5.md +420 -0
  54. package/docs/IMPLEMENTATION-REVIEW-PHASE6.md +422 -0
  55. package/docs/IMPLEMENTATION-REVIEW-PHASE7-FINAL.md +184 -0
  56. package/docs/MIKRODASH-ANALYSIS.md +412 -0
  57. package/docs/OPENCLAW-GAP-ANALYSIS-FINAL.md +431 -0
  58. package/docs/OPENCLAW-VS-POOLBOT-ANALYSIS.md +351 -0
  59. package/docs/PHASE-7-SUMMARY.md +144 -0
  60. package/docs/POOLBOT-OFFICE-PLAN.md +697 -0
  61. package/docs/PROJECT-FINAL-STATUS.md +237 -0
  62. package/docs/README.md +116 -0
  63. package/docs/REAL-IMPROVEMENTS-EVALUATION.md +477 -0
  64. package/docs/SECURITY-HARDENING-IMPLEMENTATION.md +161 -0
  65. package/docs/channels/googlechat.md +235 -206
  66. package/docs/channels/irc.md +332 -0
  67. package/docs/channels/nostr.md +255 -168
  68. package/docs/components/command-palette.md +166 -0
  69. package/docs/components/login-gate.md +219 -0
  70. package/docs/getting-started/installation.md +191 -0
  71. package/docs/getting-started/introduction.md +120 -0
  72. package/docs/improvements/USAGE-GUIDE.md +359 -0
  73. package/docs/plans/2026-03-15-openclaw-features-implementation.md +1632 -0
  74. package/docs/reference/deadcode-detection.md +72 -0
  75. package/extensions/acpx/node_modules/.bin/acpx +21 -0
  76. package/extensions/agency-agents/node_modules/.bin/vite +4 -4
  77. package/extensions/agency-agents/node_modules/.bin/vitest +2 -2
  78. package/extensions/googlechat/node_modules/.bin/tsc +21 -0
  79. package/extensions/googlechat/node_modules/.bin/tsserver +21 -0
  80. package/extensions/googlechat/node_modules/.bin/vitest +21 -0
  81. package/extensions/googlechat/package.json +11 -28
  82. package/extensions/googlechat/src/googlechat-channel.test.ts +60 -0
  83. package/extensions/googlechat/src/googlechat-channel.ts +120 -0
  84. package/extensions/googlechat/src/index.ts +14 -0
  85. package/extensions/irc/node_modules/.bin/tsc +21 -0
  86. package/extensions/irc/node_modules/.bin/tsserver +21 -0
  87. package/extensions/irc/node_modules/.bin/vitest +21 -0
  88. package/extensions/irc/package.json +16 -8
  89. package/extensions/irc/src/index.ts +14 -0
  90. package/extensions/irc/src/irc-channel.test.ts +43 -0
  91. package/extensions/irc/src/irc-channel.ts +191 -0
  92. package/extensions/keyed-async-queue/node_modules/.bin/tsc +21 -0
  93. package/extensions/keyed-async-queue/node_modules/.bin/tsserver +21 -0
  94. package/extensions/keyed-async-queue/node_modules/.bin/vitest +21 -0
  95. package/extensions/keyed-async-queue/package.json +20 -0
  96. package/extensions/keyed-async-queue/src/index.ts +14 -0
  97. package/extensions/keyed-async-queue/src/queue.test.ts +135 -0
  98. package/extensions/keyed-async-queue/src/queue.ts +200 -0
  99. package/extensions/memory-core/node_modules/.bin/tsc +21 -0
  100. package/extensions/memory-core/node_modules/.bin/tsserver +21 -0
  101. package/extensions/memory-core/node_modules/.bin/vitest +21 -0
  102. package/extensions/memory-core/package.json +11 -8
  103. package/extensions/memory-core/src/index.ts +14 -0
  104. package/extensions/memory-core/src/memory-manager.test.ts +124 -0
  105. package/extensions/memory-core/src/memory-manager.ts +186 -0
  106. package/extensions/nostr/node_modules/.bin/tsc +2 -2
  107. package/extensions/nostr/node_modules/.bin/tsserver +2 -2
  108. package/extensions/nostr/node_modules/.bin/vitest +21 -0
  109. package/extensions/nostr/package.json +15 -24
  110. package/extensions/nostr/src/index.ts +14 -0
  111. package/extensions/nostr/src/nostr-channel.test.ts +55 -0
  112. package/extensions/nostr/src/nostr-channel.ts +228 -0
  113. package/extensions/page-agent/node_modules/.bin/vitest +2 -2
  114. package/extensions/test-utils/node_modules/.bin/jiti +21 -0
  115. package/extensions/test-utils/node_modules/.bin/playwright +21 -0
  116. package/extensions/test-utils/node_modules/.bin/tsx +21 -0
  117. package/extensions/test-utils/node_modules/.bin/vite +21 -0
  118. package/extensions/test-utils/node_modules/.bin/vitest +21 -0
  119. package/extensions/test-utils/node_modules/.bin/yaml +21 -0
  120. package/extensions/xyops/node_modules/.bin/vitest +2 -2
  121. package/package.json +2 -1
  122. package/dist/control-ui/assets/index-Dvkl4Xlx.js.map +0 -1
  123. package/extensions/googlechat/node_modules/.bin/poolbot +0 -21
  124. package/extensions/memory-core/node_modules/.bin/poolbot +0 -21
@@ -0,0 +1,359 @@
1
+ # Pool Bot Improvements - Usage Guide
2
+
3
+ ## Overview
4
+
5
+ This guide documents the professional improvements implemented in Pool Bot, providing usage examples and integration points.
6
+
7
+ ---
8
+
9
+ ## Table of Contents
10
+
11
+ 1. [Event Deduplication](#1-event-deduplication)
12
+ 2. [Run Tracker](#2-run-tracker)
13
+ 3. [Command Analyzer](#3-command-analyzer)
14
+ 4. [Browser Profile Manager](#4-browser-profile-manager)
15
+
16
+ ---
17
+
18
+ ## 1. Event Deduplication
19
+
20
+ **Location:** `src/gateway/event-deduplication.ts`
21
+
22
+ **Purpose:** Prevent duplicate event processing within a configurable time window.
23
+
24
+ ### Basic Usage
25
+
26
+ ```typescript
27
+ import { EventDeduplicator, generateEventId } from './gateway/event-deduplication';
28
+
29
+ // Create deduplicator with 5 second TTL
30
+ const dedup = new EventDeduplicator({ ttlMs: 5000 });
31
+
32
+ // In event handler
33
+ function handleEvent(event: Event) {
34
+ const eventId = generateEventId({
35
+ type: event.type,
36
+ sessionId: event.sessionId,
37
+ payload: event.payload
38
+ });
39
+
40
+ if (dedup.isDuplicate(eventId)) {
41
+ console.log(`Skipping duplicate event ${eventId}`);
42
+ return;
43
+ }
44
+
45
+ // Process event
46
+ processEvent(event);
47
+ }
48
+ ```
49
+
50
+ ### Advanced Configuration
51
+
52
+ ```typescript
53
+ const dedup = new EventDeduplicator({
54
+ ttlMs: 10000, // 10 second TTL
55
+ maxSize: 5000, // Max 5000 events in memory
56
+ autoCleanup: true // Auto cleanup expired events
57
+ });
58
+
59
+ // Get statistics
60
+ const stats = dedup.getStats();
61
+ console.log(`Total events: ${stats.totalEvents}`);
62
+ console.log(`Duplicates: ${stats.duplicates}`);
63
+
64
+ // Manual cleanup
65
+ const removed = dedup.cleanup();
66
+ console.log(`Removed ${removed} expired events`);
67
+ ```
68
+
69
+ ### Use Cases
70
+
71
+ - **Gateway event processing:** Prevent duplicate WebSocket events
72
+ - **Retry handling:** Avoid processing retried events multiple times
73
+ - **Race condition prevention:** Handle concurrent event submissions
74
+
75
+ ---
76
+
77
+ ## 2. Run Tracker
78
+
79
+ **Location:** `src/gateway/run-tracker.ts`
80
+
81
+ **Purpose:** Track active agent runs with AbortController support for cancellation.
82
+
83
+ ### Basic Usage
84
+
85
+ ```typescript
86
+ import { RunTracker, generateRunId } from './gateway/run-tracker';
87
+
88
+ const tracker = new RunTracker();
89
+
90
+ // Start a new run
91
+ const run = tracker.startRun(generateRunId(), {
92
+ sessionKey: 'session-123',
93
+ model: 'gpt-4'
94
+ });
95
+
96
+ // Stream data
97
+ await tracker.writeToRun(run.runId, {
98
+ type: 'chunk',
99
+ data: 'response chunk'
100
+ });
101
+
102
+ // Complete on success
103
+ await tracker.completeRun(run.runId, {
104
+ outputTokens: 150,
105
+ inputTokens: 50
106
+ });
107
+
108
+ // Or abort on cancel
109
+ await tracker.abortRun(run.runId, 'User cancelled');
110
+ ```
111
+
112
+ ### Error Handling
113
+
114
+ ```typescript
115
+ try {
116
+ const run = tracker.startRun(runId, { sessionKey, model });
117
+
118
+ // Process...
119
+ await tracker.writeToRun(runId, chunk);
120
+
121
+ await tracker.completeRun(runId);
122
+ } catch (error) {
123
+ await tracker.failRun(runId, error);
124
+ }
125
+ ```
126
+
127
+ ### Session Grouping
128
+
129
+ ```typescript
130
+ // Get all runs for a session
131
+ const sessionRuns = tracker.getRunsBySession('session-123');
132
+
133
+ // Get statistics
134
+ const stats = tracker.getStats();
135
+ console.log(`Active runs: ${stats.activeRuns}`);
136
+ console.log(`Completed: ${stats.completedRuns}`);
137
+ console.log(`Average duration: ${stats.averageDuration}ms`);
138
+ ```
139
+
140
+ ### Use Cases
141
+
142
+ - **Agent loop tracking:** Monitor active LLM runs
143
+ - **Resource cleanup:** Prevent memory leaks from abandoned runs
144
+ - **User cancellation:** Support clean abort of long operations
145
+ - **Observability:** Track run duration and success rates
146
+
147
+ ---
148
+
149
+ ## 3. Command Analyzer
150
+
151
+ **Location:** `src/infra/security/command-analyzer.ts`
152
+
153
+ **Purpose:** Analyze commands for security risks before execution.
154
+
155
+ ### Basic Usage
156
+
157
+ ```typescript
158
+ import { CommandAnalyzer } from './infra/security/command-analyzer';
159
+
160
+ const analyzer = new CommandAnalyzer();
161
+
162
+ // Analyze command
163
+ const analysis = analyzer.analyze(command, args);
164
+
165
+ if (analysis.blockedReason) {
166
+ throw new SecurityError(analysis.blockedReason);
167
+ }
168
+
169
+ if (analysis.requiresApproval) {
170
+ const approved = await requestApproval(analysis);
171
+ if (!approved) {
172
+ throw new Error('Command not approved');
173
+ }
174
+ }
175
+
176
+ // Execute command
177
+ await execute(command, args);
178
+ ```
179
+
180
+ ### Risk Levels
181
+
182
+ ```typescript
183
+ // Low risk - safe to execute
184
+ const safe = analyzer.analyze('ls', ['-la']);
185
+ // riskLevel: 'low', requiresApproval: false
186
+
187
+ // Medium risk - requires approval
188
+ const medium = analyzer.analyze('kill', ['-9', '1234']);
189
+ // riskLevel: 'medium', requiresApproval: true
190
+
191
+ // High risk - shell wrapper detected
192
+ const high = analyzer.analyze('bash', ['-c', 'rm -rf /']);
193
+ // riskLevel: 'high', requiresApproval: true
194
+
195
+ // Critical - blocked
196
+ const critical = analyzer.analyze('rm', ['-rf', '/']);
197
+ // riskLevel: 'critical', blockedReason: 'Recursive/force delete'
198
+ ```
199
+
200
+ ### Path Sanitization
201
+
202
+ ```typescript
203
+ import { PathSanitizer } from './infra/security/command-analyzer';
204
+
205
+ const sanitizer = new PathSanitizer('/workspace');
206
+
207
+ // Sanitize path
208
+ const safePath = sanitizer.sanitize('./file.txt');
209
+ // Returns: '/workspace/file.txt'
210
+
211
+ // Block traversal
212
+ try {
213
+ sanitizer.sanitize('../etc/passwd');
214
+ } catch (error) {
215
+ console.error('Path traversal blocked');
216
+ }
217
+
218
+ // Sanitize arguments
219
+ const safeArgs = sanitizer.sanitizeArguments(['./file.txt', 'arg2']);
220
+ ```
221
+
222
+ ### Integration with Node Invoke
223
+
224
+ The Command Analyzer is already integrated in `src/gateway/server-methods/nodes.ts`:
225
+
226
+ ```typescript
227
+ // In node.invoke handler
228
+ const analysis = commandAnalyzer.analyze(command, []);
229
+
230
+ if (analysis.blockedReason) {
231
+ context.logGateway.warn(
232
+ `node.invoke blocked command=${command} reason=${analysis.blockedReason}`
233
+ );
234
+ respond(false, undefined, errorShape(...));
235
+ return;
236
+ }
237
+ ```
238
+
239
+ ### Use Cases
240
+
241
+ - **Node command execution:** Security check before running commands on devices
242
+ - **Shell command validation:** Prevent dangerous command execution
243
+ - **Injection prevention:** Detect command injection attempts
244
+ - **Audit logging:** Log risky command attempts
245
+
246
+ ---
247
+
248
+ ## 4. Browser Profile Manager
249
+
250
+ **Location:** `src/browser/chrome-mcp.ts` (integrated)
251
+
252
+ **Purpose:** Manage multiple Chrome profiles with isolated user data.
253
+
254
+ ### Basic Usage
255
+
256
+ ```typescript
257
+ import { registerBrowserProfile, getBrowserProfile } from './browser/chrome-mcp';
258
+
259
+ // Register a profile
260
+ registerBrowserProfile({
261
+ name: 'profile-1',
262
+ userDataDir: '/tmp/chrome-profile-1',
263
+ preferences: {
264
+ 'download.default_directory': '/tmp/downloads'
265
+ }
266
+ });
267
+
268
+ // Get profile
269
+ const profile = getBrowserProfile('profile-1');
270
+
271
+ // List all profiles
272
+ const profiles = listBrowserProfiles();
273
+ ```
274
+
275
+ ### Multiple Profiles
276
+
277
+ ```typescript
278
+ // Register multiple isolated profiles
279
+ registerBrowserProfile({
280
+ name: 'work',
281
+ userDataDir: '/tmp/chrome-work',
282
+ proxy: {
283
+ host: 'proxy.example.com',
284
+ port: 8080
285
+ }
286
+ });
287
+
288
+ registerBrowserProfile({
289
+ name: 'personal',
290
+ userDataDir: '/tmp/chrome-personal'
291
+ });
292
+
293
+ // Each profile has isolated:
294
+ // - Cookies
295
+ // - LocalStorage
296
+ // - Extensions
297
+ // - Preferences
298
+ ```
299
+
300
+ ### Use Cases
301
+
302
+ - **Multi-account automation:** Separate browser sessions for different accounts
303
+ - **Testing:** Isolated browser environments for testing
304
+ - **Privacy:** Separate work/personal browsing contexts
305
+ - **Proxy per profile:** Different network contexts per profile
306
+
307
+ ---
308
+
309
+ ## Testing
310
+
311
+ All components include comprehensive test suites:
312
+
313
+ ```bash
314
+ # Run tests
315
+ pnpm test src/gateway/event-deduplication.test.ts
316
+ pnpm test src/gateway/run-tracker.test.ts
317
+ pnpm test src/infra/security/command-analyzer.test.ts
318
+ ```
319
+
320
+ ### Test Coverage
321
+
322
+ - **Event Deduplication:** 15+ tests
323
+ - **Run Tracker:** 20+ tests
324
+ - **Command Analyzer:** 30+ tests
325
+
326
+ ---
327
+
328
+ ## Performance
329
+
330
+ | Component | Memory | CPU | Latency |
331
+ |-----------|--------|-----|---------|
332
+ | Event Dedup | ~100KB | <1ms | <1ms |
333
+ | Run Tracker | ~50KB/run | <1ms | <1ms |
334
+ | Command Analyzer | ~50KB | <1ms | <1ms |
335
+ | Browser Profiles | ~1MB/profile | <5ms | <10ms |
336
+
337
+ ---
338
+
339
+ ## Best Practices
340
+
341
+ 1. **Always check OpenClaw first** - Don't duplicate existing functionality
342
+ 2. **Integrate, don't duplicate** - New code should be used, not isolated
343
+ 3. **Test thoroughly** - Target 70%+ coverage
344
+ 4. **Document usage** - Provide clear examples
345
+ 5. **Monitor performance** - Track memory and latency impact
346
+
347
+ ---
348
+
349
+ ## Support
350
+
351
+ For issues or questions:
352
+ - Check existing documentation in `docs/`
353
+ - Review test files for usage examples
354
+ - Open GitHub issue with reproduction steps
355
+
356
+ ---
357
+
358
+ **Last Updated:** March 2026
359
+ **Version:** 1.0