@poolzin/pool-bot 2026.3.4 → 2026.3.6

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 (57) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/assets/pool-bot-icon-dark.png +0 -0
  3. package/assets/pool-bot-logo-1.png +0 -0
  4. package/assets/pool-bot-mascot.png +0 -0
  5. package/dist/agents/pi-embedded-runner/tool-result-truncation.js +62 -7
  6. package/dist/agents/poolbot-tools.js +12 -0
  7. package/dist/agents/session-write-lock.js +93 -8
  8. package/dist/agents/tools/pdf-native-providers.js +102 -0
  9. package/dist/agents/tools/pdf-tool.helpers.js +86 -0
  10. package/dist/agents/tools/pdf-tool.js +508 -0
  11. package/dist/build-info.json +3 -3
  12. package/dist/cron/normalize.js +3 -0
  13. package/dist/cron/service/jobs.js +48 -0
  14. package/dist/gateway/protocol/schema/cron.js +3 -0
  15. package/dist/gateway/server-channels.js +99 -14
  16. package/dist/gateway/server-cron.js +89 -0
  17. package/dist/gateway/server-health-probes.js +55 -0
  18. package/dist/gateway/server-http.js +5 -0
  19. package/dist/hooks/bundled/session-memory/handler.js +8 -2
  20. package/dist/infra/abort-signal.js +12 -0
  21. package/dist/infra/boundary-file-read.js +118 -0
  22. package/dist/infra/boundary-path.js +594 -0
  23. package/dist/infra/file-identity.js +12 -0
  24. package/dist/infra/fs-safe.js +377 -12
  25. package/dist/infra/hardlink-guards.js +30 -0
  26. package/dist/infra/json-utf8-bytes.js +8 -0
  27. package/dist/infra/net/fetch-guard.js +63 -13
  28. package/dist/infra/net/proxy-env.js +17 -0
  29. package/dist/infra/net/ssrf.js +74 -272
  30. package/dist/infra/path-alias-guards.js +21 -0
  31. package/dist/infra/path-guards.js +13 -1
  32. package/dist/infra/ports-probe.js +19 -0
  33. package/dist/infra/prototype-keys.js +4 -0
  34. package/dist/infra/restart-stale-pids.js +254 -0
  35. package/dist/infra/safe-open-sync.js +71 -0
  36. package/dist/infra/secure-random.js +7 -0
  37. package/dist/media/ffmpeg-limits.js +4 -0
  38. package/dist/media/input-files.js +6 -2
  39. package/dist/media/temp-files.js +12 -0
  40. package/dist/memory/embedding-chunk-limits.js +5 -2
  41. package/dist/memory/embeddings-ollama.js +91 -138
  42. package/dist/memory/embeddings-remote-fetch.js +11 -10
  43. package/dist/memory/embeddings.js +25 -9
  44. package/dist/memory/manager-embedding-ops.js +1 -1
  45. package/dist/memory/post-json.js +23 -0
  46. package/dist/memory/qmd-manager.js +272 -77
  47. package/dist/memory/remote-http.js +33 -0
  48. package/dist/plugin-sdk/windows-spawn.js +214 -0
  49. package/dist/shared/net/ip-test-fixtures.js +1 -0
  50. package/dist/shared/net/ip.js +303 -0
  51. package/dist/shared/net/ipv4.js +8 -11
  52. package/dist/shared/pid-alive.js +59 -2
  53. package/dist/test-helpers/ssrf.js +13 -0
  54. package/dist/tui/tui.js +9 -4
  55. package/dist/utils/fetch-timeout.js +12 -1
  56. package/docs/adr/003-feature-gap-analysis.md +112 -0
  57. package/package.json +10 -4
@@ -0,0 +1,112 @@
1
+ # ADR 003: Feature Gap Analysis — Pool Bot vs OpenClaw
2
+
3
+ **Status:** Accepted
4
+ **Date:** 2026-03-04
5
+ **Author:** PLCode analysis agent
6
+
7
+ ## Context
8
+
9
+ Pool Bot (v2026.3.4) was forked from OpenClaw. OpenClaw has continued shipping features through versions 2026.2.12 to 2026.3.3 that Pool Bot has not yet adopted. This document identifies the highest-value gaps and prioritizes implementation.
10
+
11
+ ## Analysis Method
12
+
13
+ - Full diff of both CHANGELOGs (2000+ OpenClaw lines vs 297 Pool Bot lines)
14
+ - Deep source-tree exploration of `src/`, `extensions/`, `docs/`, and config schemas
15
+ - Cross-reference of every OpenClaw feature against Pool Bot codebase using grep/AST search
16
+
17
+ ## Confirmed Present (No Gap)
18
+
19
+ These OpenClaw features already exist in Pool Bot:
20
+
21
+ | Feature | Evidence |
22
+ |---------|----------|
23
+ | SSRF protection | 91+ references across `src/infra/net/ssrf.ts` and callers |
24
+ | Draft streaming (Telegram/Discord/Slack) | Full implementation in channel modules |
25
+ | Config validation | 100+ Zod schema matches |
26
+ | Session compaction | Plugin hooks, auto-compaction, diagnostics |
27
+ | Feishu/LINE/Mattermost/IRC/MS Teams/Nextcloud Talk/Tlon | Extensions present |
28
+ | Ollama memory embeddings | v2026.3.4 |
29
+ | Channel auto-restart with exponential backoff | Cherry-picked from OpenClaw |
30
+ | Boundary file read / safe-open-sync | Cherry-picked from OpenClaw |
31
+ | Hardened fs-safe with atomic writes | Cherry-picked from OpenClaw |
32
+
33
+ ## Confirmed Missing — Critical & High Priority
34
+
35
+ ### 1. HTTP Container Health Probes
36
+
37
+ **Priority:** Critical | **Effort:** S (small)
38
+
39
+ OpenClaw 2026.3.1 added built-in HTTP liveness/readiness endpoints (`/health`, `/healthz`, `/ready`, `/readyz`) for Docker/Kubernetes orchestrators. Pool Bot's gateway has WS-based health only — no HTTP endpoint paths for container probes.
40
+
41
+ **Impact:** Blocks production Kubernetes/Docker deployments from proper health checking.
42
+
43
+ ### 2. First-class PDF Tool
44
+
45
+ **Priority:** High | **Effort:** M (medium)
46
+
47
+ OpenClaw 2026.3.2 added a native PDF document extraction tool using provider-native document understanding (Anthropic/Google). Pool Bot's browser-tool has a "pdf" action that renders pages to PDF via browser, but no dedicated extraction tool.
48
+
49
+ **Impact:** Users cannot extract text/data from PDF documents using provider-native capabilities.
50
+
51
+ ### 3. Cron Failure Alerts
52
+
53
+ **Priority:** High | **Effort:** L (large)
54
+
55
+ OpenClaw 2026.3.1 added `failureAlert.mode` (announce | webhook) with `failureAlert.accountId`, per-job `delivery.failureDestination`. OpenClaw 2026.3.3 extended this with repeated-failure alerting, per-job overrides, and Web UI editor support. Pool Bot's cron logs failures but has no notification mechanism.
56
+
57
+ **Impact:** Operators have no way to be notified when scheduled tasks fail.
58
+
59
+ ### 4. Tools/Diffs Plugin
60
+
61
+ **Priority:** High | **Effort:** M (medium)
62
+
63
+ OpenClaw 2026.3.1 added a `diffs` plugin tool for read-only diff rendering from before/after text or unified patches, with gateway viewer URLs. OpenClaw 2026.3.2 added PDF output support.
64
+
65
+ **Impact:** Agents cannot present structured diffs to users in a readable format.
66
+
67
+ ### 5. Head+Tail Truncation Strategy
68
+
69
+ **Priority:** Medium | **Effort:** S (small)
70
+
71
+ OpenClaw added head+tail truncation for long messages — keeping the beginning and end of messages while eliding the middle. Pool Bot only has simple character-limit truncation.
72
+
73
+ **Impact:** Long responses lose valuable ending content when truncated.
74
+
75
+ ## Confirmed Missing — Medium Priority
76
+
77
+ | Feature | OpenClaw Version | Effort |
78
+ |---------|-----------------|--------|
79
+ | Perplexity Search API integration | 2026.2.14 | M |
80
+ | Telegram per-topic agentId | 2026.2.25 | S |
81
+ | Slack DM typing indicators | 2026.2.28 | S |
82
+ | Discord `allowBots` flag | 2026.2.28 | S |
83
+ | `config validate` CLI command | 2026.3.1 | S |
84
+ | OpenAI Responses WS transport | 2026.3.1 | L |
85
+ | Discord thread binding lifecycle | 2026.3.1 | M |
86
+ | Telegram DM topics | 2026.3.1 | S |
87
+ | Plugin runtime API enhancements | 2026.3.2 | M |
88
+ | Adaptive thinking budget | 2026.3.2 | M |
89
+ | Gateway Permissions-Policy header | 2026.3.2 | S |
90
+ | Config heartbeat auto-migration | 2026.3.3 | S |
91
+
92
+ ## Confirmed Missing — Low Priority
93
+
94
+ | Feature | OpenClaw Version | Effort |
95
+ |---------|-----------------|--------|
96
+ | CLI banner tagline randomizer | 2026.2.14 | S |
97
+ | `config file` command | 2026.3.1 | S |
98
+ | Web UI locale additions | 2026.3.2 | S |
99
+ | SecretRef/Secrets management | 2026.3.1-3.3 | XL |
100
+
101
+ ## Recommended Implementation Order
102
+
103
+ 1. **HTTP Health Probes** — smallest effort, unblocks container orchestration
104
+ 2. **Head+tail truncation** — small effort, immediate UX improvement
105
+ 3. **Cron failure alerts** — high operator value, moderate effort
106
+ 4. **First-class PDF tool** — high user value, leverages existing patterns
107
+ 5. **Diffs plugin tool** — complements agent capabilities
108
+ 6. **SecretRef system** — XL effort, defer to dedicated sprint
109
+
110
+ ## Decision
111
+
112
+ Implement items 1-5 in a single feature batch. Defer SecretRef and medium/low items to subsequent releases.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolzin/pool-bot",
3
- "version": "2026.3.4",
3
+ "version": "2026.3.6",
4
4
  "description": "🎱 Pool Bot - AI assistant with PLCODE integrations",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -130,6 +130,7 @@
130
130
  "express": "^5.2.1",
131
131
  "file-type": "^21.3.0",
132
132
  "grammy": "^1.40.0",
133
+ "ipaddr.js": "^2.3.0",
133
134
  "jiti": "^2.6.1",
134
135
  "json5": "^2.2.3",
135
136
  "jszip": "^3.10.1",
@@ -186,11 +187,16 @@
186
187
  "pnpm": {
187
188
  "minimumReleaseAge": 2880,
188
189
  "overrides": {
189
- "fast-xml-parser": "5.3.4",
190
+ "hono": "4.11.10",
191
+ "fast-xml-parser": "5.3.8",
192
+ "request": "npm:@cypress/request@3.0.10",
193
+ "request-promise": "npm:@cypress/request-promise@5.0.0",
190
194
  "form-data": "2.5.4",
191
- "qs": "6.14.1",
195
+ "minimatch": "10.2.4",
196
+ "qs": "6.14.2",
197
+ "node-domexception": "npm:@nolyfill/domexception@^1.0.28",
192
198
  "@sinclair/typebox": "0.34.48",
193
- "tar": "7.5.7",
199
+ "tar": "7.5.9",
194
200
  "tough-cookie": "4.1.3"
195
201
  },
196
202
  "onlyBuiltDependencies": [