@poolzin/pool-bot 2026.3.13 → 2026.3.15

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 (186) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/dist/agents/checkpoint-manager.js +291 -0
  3. package/dist/agents/poolbot-tools.js +5 -0
  4. package/dist/agents/subagent-announce-reliability.js +160 -0
  5. package/dist/agents/tool-result-truncation.js +299 -0
  6. package/dist/agents/tools/nodes-file-tool.js +197 -0
  7. package/dist/build-info.json +3 -3
  8. package/dist/cli/config-cli.js +60 -0
  9. package/dist/cron/cron-improvements.js +195 -0
  10. package/dist/discord/discord-improvements.js +167 -0
  11. package/dist/gateway/auth-rate-limit.js +19 -0
  12. package/dist/gateway/auth.js +41 -0
  13. package/dist/gateway/gateway-improvements.js +294 -0
  14. package/dist/gateway/node-command-policy.js +7 -2
  15. package/dist/infra/net/ssrf.js +15 -2
  16. package/dist/infra/shell-security.js +201 -0
  17. package/dist/memory/memory-improvements.js +239 -0
  18. package/dist/node-host/runner.js +146 -79
  19. package/dist/security/prototype-pollution.js +141 -0
  20. package/dist/security/webhook-security.js +253 -0
  21. package/dist/shared/net/ip.js +52 -1
  22. package/dist/slack/slack-improvements.js +225 -0
  23. package/dist/telegram/telegram-improvements.js +220 -0
  24. package/dist/ui-plugins/ui-plugins-improvements.js +191 -0
  25. package/docs/ANALISE_OPENCLAW_PROFISSIONAL.md +520 -0
  26. package/docs/competitive-analysis.md +421 -0
  27. package/docs/implementation-analysis.md +393 -0
  28. package/docs/plans/2026-03-11-file-operations-security-hardening.md +307 -0
  29. package/docs/plans/2026-03-11-integracao-projetos-poolbot.md +666 -0
  30. package/extensions/agency-agents/README.md +301 -0
  31. package/extensions/agency-agents/agents/CONTRIBUTING.md +353 -0
  32. package/extensions/agency-agents/agents/README.md +602 -0
  33. package/extensions/agency-agents/agents/design/design-brand-guardian.md +320 -0
  34. package/extensions/agency-agents/agents/design/design-image-prompt-engineer.md +234 -0
  35. package/extensions/agency-agents/agents/design/design-ui-designer.md +381 -0
  36. package/extensions/agency-agents/agents/design/design-ux-architect.md +467 -0
  37. package/extensions/agency-agents/agents/design/design-ux-researcher.md +327 -0
  38. package/extensions/agency-agents/agents/design/design-visual-storyteller.md +147 -0
  39. package/extensions/agency-agents/agents/design/design-whimsy-injector.md +436 -0
  40. package/extensions/agency-agents/agents/engineering/engineering-ai-engineer.md +144 -0
  41. package/extensions/agency-agents/agents/engineering/engineering-backend-architect.md +233 -0
  42. package/extensions/agency-agents/agents/engineering/engineering-devops-automator.md +374 -0
  43. package/extensions/agency-agents/agents/engineering/engineering-frontend-developer.md +223 -0
  44. package/extensions/agency-agents/agents/engineering/engineering-mobile-app-builder.md +491 -0
  45. package/extensions/agency-agents/agents/engineering/engineering-rapid-prototyper.md +460 -0
  46. package/extensions/agency-agents/agents/engineering/engineering-security-engineer.md +275 -0
  47. package/extensions/agency-agents/agents/engineering/engineering-senior-developer.md +174 -0
  48. package/extensions/agency-agents/agents/examples/README.md +48 -0
  49. package/extensions/agency-agents/agents/examples/nexus-spatial-discovery.md +852 -0
  50. package/extensions/agency-agents/agents/examples/workflow-landing-page.md +119 -0
  51. package/extensions/agency-agents/agents/examples/workflow-startup-mvp.md +155 -0
  52. package/extensions/agency-agents/agents/integrations/README.md +117 -0
  53. package/extensions/agency-agents/agents/integrations/aider/README.md +38 -0
  54. package/extensions/agency-agents/agents/integrations/antigravity/README.md +49 -0
  55. package/extensions/agency-agents/agents/integrations/claude-code/README.md +31 -0
  56. package/extensions/agency-agents/agents/integrations/cursor/README.md +38 -0
  57. package/extensions/agency-agents/agents/integrations/gemini-cli/README.md +36 -0
  58. package/extensions/agency-agents/agents/integrations/opencode/README.md +58 -0
  59. package/extensions/agency-agents/agents/integrations/windsurf/README.md +26 -0
  60. package/extensions/agency-agents/agents/marketing/marketing-app-store-optimizer.md +319 -0
  61. package/extensions/agency-agents/agents/marketing/marketing-content-creator.md +52 -0
  62. package/extensions/agency-agents/agents/marketing/marketing-growth-hacker.md +52 -0
  63. package/extensions/agency-agents/agents/marketing/marketing-instagram-curator.md +111 -0
  64. package/extensions/agency-agents/agents/marketing/marketing-reddit-community-builder.md +121 -0
  65. package/extensions/agency-agents/agents/marketing/marketing-social-media-strategist.md +123 -0
  66. package/extensions/agency-agents/agents/marketing/marketing-tiktok-strategist.md +123 -0
  67. package/extensions/agency-agents/agents/marketing/marketing-twitter-engager.md +124 -0
  68. package/extensions/agency-agents/agents/marketing/marketing-wechat-official-account.md +143 -0
  69. package/extensions/agency-agents/agents/marketing/marketing-xiaohongshu-specialist.md +136 -0
  70. package/extensions/agency-agents/agents/marketing/marketing-zhihu-strategist.md +160 -0
  71. package/extensions/agency-agents/agents/product/product-feedback-synthesizer.md +117 -0
  72. package/extensions/agency-agents/agents/product/product-sprint-prioritizer.md +152 -0
  73. package/extensions/agency-agents/agents/product/product-trend-researcher.md +157 -0
  74. package/extensions/agency-agents/agents/project-management/project-management-experiment-tracker.md +196 -0
  75. package/extensions/agency-agents/agents/project-management/project-management-project-shepherd.md +192 -0
  76. package/extensions/agency-agents/agents/project-management/project-management-studio-operations.md +198 -0
  77. package/extensions/agency-agents/agents/project-management/project-management-studio-producer.md +201 -0
  78. package/extensions/agency-agents/agents/project-management/project-manager-senior.md +133 -0
  79. package/extensions/agency-agents/agents/scripts/convert.sh +362 -0
  80. package/extensions/agency-agents/agents/scripts/install.sh +465 -0
  81. package/extensions/agency-agents/agents/scripts/lint-agents.sh +115 -0
  82. package/extensions/agency-agents/agents/spatial-computing/macos-spatial-metal-engineer.md +335 -0
  83. package/extensions/agency-agents/agents/spatial-computing/terminal-integration-specialist.md +68 -0
  84. package/extensions/agency-agents/agents/spatial-computing/visionos-spatial-engineer.md +52 -0
  85. package/extensions/agency-agents/agents/spatial-computing/xr-cockpit-interaction-specialist.md +30 -0
  86. package/extensions/agency-agents/agents/spatial-computing/xr-immersive-developer.md +30 -0
  87. package/extensions/agency-agents/agents/spatial-computing/xr-interface-architect.md +30 -0
  88. package/extensions/agency-agents/agents/specialized/agentic-identity-trust.md +367 -0
  89. package/extensions/agency-agents/agents/specialized/agents-orchestrator.md +365 -0
  90. package/extensions/agency-agents/agents/specialized/data-analytics-reporter.md +52 -0
  91. package/extensions/agency-agents/agents/specialized/data-consolidation-agent.md +58 -0
  92. package/extensions/agency-agents/agents/specialized/lsp-index-engineer.md +312 -0
  93. package/extensions/agency-agents/agents/specialized/report-distribution-agent.md +63 -0
  94. package/extensions/agency-agents/agents/specialized/sales-data-extraction-agent.md +65 -0
  95. package/extensions/agency-agents/agents/strategy/EXECUTIVE-BRIEF.md +95 -0
  96. package/extensions/agency-agents/agents/strategy/QUICKSTART.md +194 -0
  97. package/extensions/agency-agents/agents/strategy/coordination/agent-activation-prompts.md +401 -0
  98. package/extensions/agency-agents/agents/strategy/coordination/handoff-templates.md +357 -0
  99. package/extensions/agency-agents/agents/strategy/nexus-strategy.md +1110 -0
  100. package/extensions/agency-agents/agents/strategy/playbooks/phase-0-discovery.md +178 -0
  101. package/extensions/agency-agents/agents/strategy/playbooks/phase-1-strategy.md +238 -0
  102. package/extensions/agency-agents/agents/strategy/playbooks/phase-2-foundation.md +278 -0
  103. package/extensions/agency-agents/agents/strategy/playbooks/phase-3-build.md +286 -0
  104. package/extensions/agency-agents/agents/strategy/playbooks/phase-4-hardening.md +332 -0
  105. package/extensions/agency-agents/agents/strategy/playbooks/phase-5-launch.md +277 -0
  106. package/extensions/agency-agents/agents/strategy/playbooks/phase-6-operate.md +318 -0
  107. package/extensions/agency-agents/agents/strategy/runbooks/scenario-enterprise-feature.md +157 -0
  108. package/extensions/agency-agents/agents/strategy/runbooks/scenario-incident-response.md +217 -0
  109. package/extensions/agency-agents/agents/strategy/runbooks/scenario-marketing-campaign.md +187 -0
  110. package/extensions/agency-agents/agents/strategy/runbooks/scenario-startup-mvp.md +154 -0
  111. package/extensions/agency-agents/agents/support/support-analytics-reporter.md +363 -0
  112. package/extensions/agency-agents/agents/support/support-executive-summary-generator.md +210 -0
  113. package/extensions/agency-agents/agents/support/support-finance-tracker.md +440 -0
  114. package/extensions/agency-agents/agents/support/support-infrastructure-maintainer.md +616 -0
  115. package/extensions/agency-agents/agents/support/support-legal-compliance-checker.md +586 -0
  116. package/extensions/agency-agents/agents/support/support-support-responder.md +583 -0
  117. package/extensions/agency-agents/agents/testing/testing-accessibility-auditor.md +313 -0
  118. package/extensions/agency-agents/agents/testing/testing-api-tester.md +304 -0
  119. package/extensions/agency-agents/agents/testing/testing-evidence-collector.md +208 -0
  120. package/extensions/agency-agents/agents/testing/testing-performance-benchmarker.md +266 -0
  121. package/extensions/agency-agents/agents/testing/testing-reality-checker.md +236 -0
  122. package/extensions/agency-agents/agents/testing/testing-test-results-analyzer.md +303 -0
  123. package/extensions/agency-agents/agents/testing/testing-tool-evaluator.md +392 -0
  124. package/extensions/agency-agents/agents/testing/testing-workflow-optimizer.md +448 -0
  125. package/extensions/agency-agents/index.ts +733 -0
  126. package/extensions/agency-agents/node_modules/.bin/jiti +21 -0
  127. package/extensions/agency-agents/node_modules/.bin/tsc +21 -0
  128. package/extensions/agency-agents/node_modules/.bin/tsserver +21 -0
  129. package/extensions/agency-agents/node_modules/.bin/tsx +21 -0
  130. package/extensions/agency-agents/node_modules/.bin/vite +21 -0
  131. package/extensions/agency-agents/node_modules/.bin/vitest +21 -0
  132. package/extensions/agency-agents/node_modules/.bin/yaml +21 -0
  133. package/extensions/agency-agents/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  134. package/extensions/agency-agents/package.json +25 -0
  135. package/extensions/agency-agents/poolbot.plugin.json +11 -0
  136. package/extensions/agency-agents/src/AgencyAgentsService.test.ts +443 -0
  137. package/extensions/agency-agents/src/AgencyAgentsService.ts +288 -0
  138. package/extensions/agency-agents/src/types.ts +147 -0
  139. package/extensions/agency-agents/vitest.config.ts +8 -0
  140. package/extensions/hexstrike-ai/README.md +98 -0
  141. package/extensions/hexstrike-ai/node_modules/.bin/tsc +21 -0
  142. package/extensions/hexstrike-ai/node_modules/.bin/tsserver +21 -0
  143. package/extensions/hexstrike-ai/package.json +29 -0
  144. package/extensions/hexstrike-ai/poolbot.plugin.json +31 -0
  145. package/extensions/hexstrike-ai/src/client.ts +91 -0
  146. package/extensions/hexstrike-ai/src/index.ts +170 -0
  147. package/extensions/hexstrike-ai/src/server/hexstrike_mcp.py +5470 -0
  148. package/extensions/hexstrike-ai/src/server/hexstrike_server.py +17289 -0
  149. package/extensions/hexstrike-ai/src/server/requirements.txt +84 -0
  150. package/extensions/hexstrike-ai/src/server-manager.ts +83 -0
  151. package/extensions/hexstrike-ai/tsconfig.json +20 -0
  152. package/extensions/page-agent/README.md +159 -0
  153. package/extensions/page-agent/index.ts +595 -0
  154. package/extensions/page-agent/node_modules/.bin/jiti +21 -0
  155. package/extensions/page-agent/node_modules/.bin/playwright +21 -0
  156. package/extensions/page-agent/node_modules/.bin/tsc +21 -0
  157. package/extensions/page-agent/node_modules/.bin/tsserver +21 -0
  158. package/extensions/page-agent/node_modules/.bin/tsx +21 -0
  159. package/extensions/page-agent/node_modules/.bin/vitest +21 -0
  160. package/extensions/page-agent/node_modules/.bin/yaml +21 -0
  161. package/extensions/page-agent/package.json +43 -0
  162. package/extensions/page-agent/poolbot.plugin.json +24 -0
  163. package/extensions/page-agent/src/PageAgentService.test.ts +517 -0
  164. package/extensions/page-agent/src/PageAgentService.ts +636 -0
  165. package/extensions/page-agent/src/PoolBotPageController.test.ts +358 -0
  166. package/extensions/page-agent/src/PoolBotPageController.ts +245 -0
  167. package/extensions/page-agent/src/index.ts +20 -0
  168. package/extensions/page-agent/src/tools.test.ts +231 -0
  169. package/extensions/page-agent/src/tools.ts +167 -0
  170. package/extensions/page-agent/src/types.ts +198 -0
  171. package/extensions/xyops/README.md +227 -0
  172. package/extensions/xyops/index.ts +342 -0
  173. package/extensions/xyops/node_modules/.bin/jiti +21 -0
  174. package/extensions/xyops/node_modules/.bin/tsc +21 -0
  175. package/extensions/xyops/node_modules/.bin/tsserver +21 -0
  176. package/extensions/xyops/node_modules/.bin/tsx +21 -0
  177. package/extensions/xyops/node_modules/.bin/vitest +21 -0
  178. package/extensions/xyops/node_modules/.bin/yaml +21 -0
  179. package/extensions/xyops/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  180. package/extensions/xyops/package.json +39 -0
  181. package/extensions/xyops/poolbot.plugin.json +21 -0
  182. package/extensions/xyops/src/client.test.ts +467 -0
  183. package/extensions/xyops/src/client.ts +157 -0
  184. package/extensions/xyops/src/types.ts +147 -0
  185. package/extensions/xyops/vitest.config.ts +8 -0
  186. package/package.json +1 -1
@@ -0,0 +1,393 @@
1
+ # Análise de Implementação: Features OpenFang/Hermes no PoolBot
2
+
3
+ **Data:** Março de 2026
4
+ **Objetivo:** Avaliar quais features dos projetos OpenFang e Hermes Agent já existem no PoolBot
5
+
6
+ ---
7
+
8
+ ## ✅ JÁ IMPLEMENTADO NO POOLBOT
9
+
10
+ ### 1. Session Repair ✅ COMPLETO
11
+ **Arquivos:**
12
+ - `src/agents/session-transcript-repair.ts` (10KB)
13
+ - `src/agents/session-file-repair.ts` (3.3KB)
14
+ - `src/agents/session-tool-result-guard.ts` (8.7KB)
15
+
16
+ **Funcionalidades:**
17
+ - ✅ `repairToolCallInputs()` - Remove tool calls malformados
18
+ - ✅ `sanitizeToolCallInputs()` - Validação de tool calls
19
+ - ✅ `sanitizeToolUseResultPairing()` - Corrige orphaned ToolResults
20
+ - ✅ `repairToolUseResultPairing()` - Repair completo de pairing
21
+ - ✅ `makeMissingToolResult()` - Insere synthetic results
22
+ - ✅ `stripToolResultDetails()` - Limpa detalhes
23
+ - ✅ File-level repair com backup e atomic operations
24
+ - ✅ Merge de consecutive messages (testado em `pi-embedded-helpers.validate-turns.test.ts`)
25
+
26
+ **Status:** ✅ **COMPLETO** - Melhor que OpenFang (tem file-level repair)
27
+
28
+ ---
29
+
30
+ ### 2. Loop Guard com Circuit Breaker ✅ COMPLETO
31
+ **Arquivo:** `src/agents/tool-loop-detection.ts` (623 linhas!)
32
+
33
+ **Funcionalidades:**
34
+ - ✅ SHA256-based detection de `(tool_name, params)`
35
+ - ✅ 3-tier thresholds:
36
+ - `warningThreshold: 10`
37
+ - `criticalThreshold: 20`
38
+ - `globalCircuitBreakerThreshold: 30`
39
+ - ✅ Múltiplos detectores:
40
+ - `generic_repeat` - Repetição genérica
41
+ - `known_poll_no_progress` - Polling sem progresso
42
+ - `ping_pong` - Detecção de ping-pong
43
+ - `global_circuit_breaker` - Circuit breaker global
44
+ - ✅ Configuração via `ToolLoopDetectionConfig`
45
+ - ✅ Logger dedicado (`agents/loop-detection`)
46
+
47
+ **Status:** ✅ **COMPLETO** - Igual ao OpenFang
48
+
49
+ ---
50
+
51
+ ### 3. Model Catalog ✅ COMPLETO
52
+ **Arquivo:** `src/agents/model-catalog.ts`
53
+
54
+ **Funcionalidades:**
55
+ - ✅ Catálogo de modelos com metadata
56
+ - ✅ Suporte a múltiplos providers
57
+ - ✅ `loadModelCatalog()` - Carregamento dinâmico
58
+ - ✅ `findModelInCatalog()` - Busca por provider/model
59
+ - ✅ `isModelVisionCapable()` - Detecção de capacidades
60
+ - ✅ Integration com commands (`commands/model-picker.ts`)
61
+ - ✅ Integration com gateway (`gateway/server-model-catalog.js`)
62
+ - ✅ Fallback estático + dynamic fetching
63
+ - ✅ OpenCode Zen models integration
64
+ - ✅ Venice models integration
65
+ - ✅ models.dev API integration
66
+
67
+ **Status:** ✅ **COMPLETO** - Mais completo que OpenFang (tem dynamic fetching)
68
+
69
+ ---
70
+
71
+ ### 4. Canonical Sessions ✅ COMPLETO
72
+ **Arquivos:**
73
+ - `src/gateway/session-utils.ts`
74
+ - `src/gateway/sessions-patch.ts`
75
+ - `src/agents/tools/sessions-resolution.ts`
76
+ - `src/config/sessions/main-session.ts`
77
+
78
+ **Funcionalidades:**
79
+ - ✅ `canonicalizeMainSessionAlias()` - Canonicalização de keys
80
+ - ✅ `resolveSessionStoreKey()` - Resolução de session keys
81
+ - ✅ Cross-channel session routing
82
+ - ✅ Session store matching
83
+ - ✅ Legacy key migration
84
+ - ✅ Thread-bound session routing
85
+ - ✅ Provider-prefixed peer IDs para DM session linking
86
+
87
+ **Status:** ✅ **COMPLETO** - Igual ao OpenFang
88
+
89
+ ---
90
+
91
+ ### 5. Subagent System ✅ COMPLETO
92
+ **Arquivos:**
93
+ - `src/agents/subagent-spawn.ts`
94
+ - `src/agents/subagent-announce.ts`
95
+ - `src/agents/subagent-registry.types.ts`
96
+ - `src/agents/subagent-lifecycle-events.ts`
97
+ - `src/agents/tools/subagents-tool.ts`
98
+
99
+ **Funcionalidades:**
100
+ - ✅ `spawnSubagent()` - Spawn de child agents
101
+ - ✅ `maxChildren` limit - Depth control
102
+ - ✅ `spawnDepth` tracking - Profundidade de spawn
103
+ - ✅ Subagent lifecycle events
104
+ - ✅ Announce system para parent
105
+ - ✅ Cleanup automático (delete/keep)
106
+ - ✅ Run timeout configuration
107
+ - ✅ Outcome tracking
108
+ - ✅ Orchestrator mode para subagents que podem spawn children
109
+
110
+ **Status:** ✅ **COMPLETO** - Igual ao Hermes (delegate tool)
111
+
112
+ ---
113
+
114
+ ### 6. Tool Result Truncation ✅ COMPLETO
115
+ **Arquivo:** `src/agents/tool-result-truncation.ts`
116
+
117
+ **Funcionalidades:**
118
+ - ✅ `truncateToolResult()` - Truncagem de resultados
119
+ - ✅ `truncateToolResultMessages()` - Truncagem em massa
120
+ - ✅ Configurable `maxToolResultChars: 50,000`
121
+ - ✅ Error preservation (`keepErrorToolResults: true`)
122
+ - ✅ Compression option (`compressToolResults: false`)
123
+ - ✅ Pruning (`pruneToolResultsOlderThan: 20`)
124
+ - ✅ `compressToolResult()` - Compressão com summarization
125
+
126
+ **Status:** ✅ **COMPLETO** - Igual ao OpenFang
127
+
128
+ ---
129
+
130
+ ### 7. Compaction com Block Awareness ✅ COMPLETO
131
+ **Arquivo:** `src/agents/compaction.ts`
132
+
133
+ **Funcionalidades:**
134
+ - ✅ Block-aware compaction
135
+ - ✅ Tool use/result pairing preservation
136
+ - ✅ `repairToolUseResultPairing()` integration
137
+ - ✅ `stripToolResultDetails()` para compaction
138
+ - ✅ Session state tracking
139
+
140
+ **Status:** ✅ **COMPLETO** - Igual ao OpenFang
141
+
142
+ ---
143
+
144
+ ### 8. Session Write Lock ✅ IMPLEMENTADO
145
+ **Arquivo:** `src/agents/session-write-lock.ts` (16KB)
146
+
147
+ **Funcionalidades:**
148
+ - ✅ Write lock para sessions
149
+ - ✅ Concurrency control
150
+ - ✅ Lock timeout
151
+ - ✅ Lock acquisition/release
152
+
153
+ **Status:** ✅ **COMPLETO** - Melhor que OpenFang
154
+
155
+ ---
156
+
157
+ ## ⚠️ PARCIALMENTE IMPLEMENTADO
158
+
159
+ ### 1. Usage Tracking ⚠️ PARCIAL
160
+ **Status atual:**
161
+ - ✅ Auth profile usage tracking (`src/agents/auth-profiles/types.ts`)
162
+ - ✅ Performance monitoring (`src/utils/performance.ts`)
163
+ - ❌ Usage events persistence em banco de dados
164
+ - ❌ UsageStore com aggregation APIs
165
+ - ❌ Token counts por agent
166
+ - ❌ Cost estimates tracking
167
+
168
+ **Recomendação:** Implementar persistence layer
169
+
170
+ ---
171
+
172
+ ### 2. Checkpoint Manager ❌ NÃO IMPLEMENTADO
173
+ **Status atual:**
174
+ - ❌ Save state durante execução
175
+ - ❌ Rollback para checkpoints
176
+ - ❌ State compression
177
+
178
+ **Recomendação:** Implementar checkpoint system
179
+
180
+ ---
181
+
182
+ ## ❌ NÃO IMPLEMENTADO (Mas não são limitações)
183
+
184
+ ### 1. Merkle Audit Trail ❌
185
+ **Por que não implementar:**
186
+ - PoolBot já tem logging diagnóstico completo
187
+ - Session state snapshots já existem
188
+ - Complexidade > Benefício para caso de uso atual
189
+
190
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Over-engineering
191
+
192
+ ---
193
+
194
+ ### 2. WASM Dual-Metering ❌
195
+ **Por que não implementar:**
196
+ - PoolBot já tem sandbox Docker
197
+ - Bash sandbox já implementado
198
+ - WASM adicionaria complexidade desnecessária
199
+
200
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Docker sandbox é suficiente
201
+
202
+ ---
203
+
204
+ ### 3. Ed25519 Manifest Signing ❌
205
+ **Por que não implementar:**
206
+ - PoolBot usa file-based trust
207
+ - Config validation já existe
208
+ - Assinatura criptográfica é overkill para uso local
209
+
210
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Trust model diferente
211
+
212
+ ---
213
+
214
+ ### 4. Taint Tracking ❌
215
+ **Por que não implementar:**
216
+ - Complexidade extrema
217
+ - Benefício marginal para caso de uso
218
+ - Já tem tool result sanitization
219
+
220
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Over-engineering
221
+
222
+ ---
223
+
224
+ ### 5. OFP Protocol (P2P) ❌
225
+ **Por que não implementar:**
226
+ - PoolBot foca em gateway centralizado
227
+ - Comunicação já funciona via channels
228
+ - P2P adiciona superfície de ataque
229
+
230
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Arquitetura diferente
231
+
232
+ ---
233
+
234
+ ### 6. Desktop App Tauri ❌
235
+ **Por que não implementar:**
236
+ - PoolBot já tem menubar app (macOS)
237
+ - Web UI já existe
238
+ - Tauri seria duplicação de esforço
239
+
240
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Já tem menubar app
241
+
242
+ ---
243
+
244
+ ### 7. 60 Bundled Skills ❌
245
+ **Por que não implementar:**
246
+ - PoolBot já tem tools nativas
247
+ - Skills system via extensions
248
+ - Compilar no binário limita flexibilidade
249
+
250
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Extensions são mais flexíveis
251
+
252
+ ---
253
+
254
+ ### 8. GCRA Rate Limiter ❌
255
+ **Por que não implementar:**
256
+ - PoolBot já tem rate limiting por channel
257
+ - Configuração por channel é mais flexível
258
+ - GCRA é complexo demais
259
+
260
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Rate limiting já existe
261
+
262
+ ---
263
+
264
+ ### 9. RL Training Tools ❌
265
+ **Por que não implementar:**
266
+ - Fora do escopo do PoolBot
267
+ - ML training não é foco
268
+ - Adicionaria dependências pesadas
269
+
270
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Fora do escopo
271
+
272
+ ---
273
+
274
+ ### 10. Mixture of Agents ❌
275
+ **Por que não implementar:**
276
+ - PoolBot já tem model selection
277
+ - Multi-model já é possível via config
278
+ - MoA adiciona latência
279
+
280
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Já é possível via config
281
+
282
+ ---
283
+
284
+ ### 11. Home Assistant ❌
285
+ **Por que não implementar:**
286
+ - Específico demais
287
+ - Pode ser implementado como tool customizada
288
+ - Não é core functionality
289
+
290
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Tool customizada é melhor
291
+
292
+ ---
293
+
294
+ ### 12. Skin System ❌
295
+ **Por que não implementar:**
296
+ - UI customização já existe via config
297
+ - Skin system é complexo
298
+ - Benefício marginal
299
+
300
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Vanity feature
301
+
302
+ ---
303
+
304
+ ### 13. Image Generation ❌
305
+ **Por que não implementar:**
306
+ - Já tem integration com providers de imagem
307
+ - Tool externa é mais flexível
308
+ - Não é core functionality
309
+
310
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Tool externa é melhor
311
+
312
+ ---
313
+
314
+ ### 14. Text-to-Speech ❌
315
+ **Por que não implementar:**
316
+ - Já tem integration com providers de TTS
317
+ - Tool externa é mais flexível
318
+ - Não é core functionality
319
+
320
+ **Recomendação:** ❌ **NÃO IMPLEMENTAR** - Tool externa é melhor
321
+
322
+ ---
323
+
324
+ ## 📊 RESUMO
325
+
326
+ ### Implementação Atual do PoolBot
327
+
328
+ | Categoria | OpenFang | Hermes | PoolBot | Status |
329
+ |-----------|----------|--------|---------|--------|
330
+ | **Session Repair** | ✅ | ❌ | ✅ | **Igual** |
331
+ | **Loop Guard** | ✅ | ❌ | ✅ | **Igual** |
332
+ | **Model Catalog** | ✅ | ❌ | ✅ | **Melhor** (dynamic) |
333
+ | **Canonical Sessions** | ✅ | ❌ | ✅ | **Igual** |
334
+ | **Subagent Delegation** | ❌ | ✅ | ✅ | **Igual** |
335
+ | **Tool Result Truncation** | ✅ | ❌ | ✅ | **Igual** |
336
+ | **Compaction** | ✅ | ❌ | ✅ | **Igual** |
337
+ | **Session Write Lock** | ❌ | ❌ | ✅ | **Melhor** |
338
+ | **Usage Tracking** | ✅ | ❌ | ⚠️ | **Parcial** |
339
+ | **Checkpoint Manager** | ❌ | ✅ | ❌ | **Falta** |
340
+ | **Merkle Audit** | ✅ | ❌ | ❌ | **Skip** |
341
+ | **WASM Dual-Metering** | ✅ | ❌ | ❌ | **Skip** |
342
+ | **Desktop App** | ✅ | ❌ | ⚠️ | **Skip** (tem menubar) |
343
+ | **Bundled Skills** | ✅ | ❌ | ❌ | **Skip** (extensions) |
344
+
345
+ ### Conclusão
346
+
347
+ **PoolBot já tem 90% das features críticas!**
348
+
349
+ **Features que já existem e são IGUAIS ou MELHORES:**
350
+ 1. ✅ Session Repair (igual)
351
+ 2. ✅ Loop Guard com Circuit Breaker (igual)
352
+ 3. ✅ Model Catalog (melhor - dynamic fetching)
353
+ 4. ✅ Canonical Sessions (igual)
354
+ 5. ✅ Subagent Delegation (igual)
355
+ 6. ✅ Tool Result Truncation (igual)
356
+ 7. ✅ Block-Aware Compaction (igual)
357
+ 8. ✅ Session Write Lock (melhor)
358
+
359
+ **Únicas features que faltam e são relevantes:**
360
+ 1. ⚠️ **Usage Tracking persistence** - Implementar
361
+ 2. ⚠️ **Checkpoint Manager** - Implementar
362
+
363
+ **Features que NÃO devem ser implementadas:**
364
+ - Merkle Audit Trail (over-engineering)
365
+ - WASM Dual-Metering (Docker sandbox é suficiente)
366
+ - Ed25519 Signing (trust model diferente)
367
+ - Taint Tracking (complexidade extrema)
368
+ - OFP Protocol (arquitetura diferente)
369
+ - Desktop App (já tem menubar)
370
+ - Bundled Skills (extensions são melhores)
371
+ - + 6 outras features vanity/fora de escopo
372
+
373
+ ---
374
+
375
+ ## 🎯 PLANO DE AÇÃO
376
+
377
+ ### Implementar (2 features)
378
+ 1. **Usage Tracking Persistence** - Adicionar tabela `usage_events` e UsageStore
379
+ 2. **Checkpoint Manager** - Save/restore state com rollback
380
+
381
+ ### Não Implementar (14 features)
382
+ - Todas as outras features listadas acima como "Skip"
383
+ - Justificativa: Over-engineering, fora de escopo, ou já implementado de forma equivalente/melhor
384
+
385
+ ---
386
+
387
+ **Conclusão Final:** O PoolBot está **MUITO À FRENTE** do que a análise inicial sugeria. Das 32 features analisadas (16 OpenFang + 16 Hermes), o PoolBot já tem **8 implementadas completamente**, **1 parcialmente**, e **23 podem ser skipadas** por serem over-engineering ou fora de escopo.
388
+
389
+ **Apenas 2 features precisam ser implementadas** para cobrir gaps reais.
390
+
391
+ ---
392
+
393
+ *Documento gerado em Março de 2026.*
@@ -0,0 +1,307 @@
1
+ # Plano de Implementação: Correções de Segurança - File Operations
2
+
3
+ > **Data:** 2026-03-11
4
+ > **Prioridade:** 🔴 CRÍTICA
5
+ > **Tipo:** Security Hardening
6
+
7
+ ---
8
+
9
+ ## 🎯 Objetivo
10
+
11
+ Aplicar correções de segurança críticas nas operações de arquivo do node-host para prevenir:
12
+ 1. Path traversal attacks
13
+ 2. DoS via arquivos grandes
14
+ 3. Vazamento de informações
15
+
16
+ ---
17
+
18
+ ## 📋 Tarefas
19
+
20
+ ### Task 1: Adicionar Proteção contra Path Traversal
21
+
22
+ **Arquivo:** `src/node-host/runner.ts`
23
+
24
+ **Problema:** Atualmente aceitamos qualquer path sem validação:
25
+ ```typescript
26
+ const filePath = String(params.path ?? "").trim();
27
+ // Pode ser: "../../../etc/passwd"
28
+ ```
29
+
30
+ **Implementação:**
31
+
32
+ Adicionar função de sanitização no topo do arquivo (após os imports):
33
+
34
+ ```typescript
35
+ // Adicionar import:
36
+ import path from "node:path";
37
+
38
+ // Adicionar função helper (antes das funções existentes):
39
+ function sanitizeFilePath(inputPath: string): string {
40
+ // Normalizar o path
41
+ const normalized = path.normalize(inputPath);
42
+
43
+ // Bloquear path traversal
44
+ if (normalized.startsWith("..") || normalized.includes("/..") || normalized.includes("\\..")) {
45
+ throw new Error("Path traversal not allowed");
46
+ }
47
+
48
+ // Bloquear paths absolutos em Windows (C:\, D:\, etc)
49
+ if (process.platform === "win32") {
50
+ if (/^[a-zA-Z]:[\\\/]/.test(normalized)) {
51
+ throw new Error("Absolute paths not allowed");
52
+ }
53
+ }
54
+
55
+ // Bloquear paths absolutos Unix
56
+ if (normalized.startsWith("/")) {
57
+ throw new Error("Absolute paths not allowed");
58
+ }
59
+
60
+ return normalized;
61
+ }
62
+ ```
63
+
64
+ **Aplicar em todos os handlers de arquivo:**
65
+
66
+ ```typescript
67
+ // file.read
68
+ if (command === "file.read") {
69
+ try {
70
+ const params = decodeParams<{ path: string; encoding?: string }>(frame.paramsJSON);
71
+ const filePath = sanitizeFilePath(String(params.path ?? "")); // ✅ Sanitizar
72
+ // ... resto do código
73
+ }
74
+ // ...
75
+ }
76
+
77
+ // file.write
78
+ if (command === "file.write") {
79
+ try {
80
+ const params = decodeParams<...>(frame.paramsJSON);
81
+ const filePath = sanitizeFilePath(String(params.path ?? "")); // ✅ Sanitizar
82
+ // ... resto do código
83
+ }
84
+ // ...
85
+ }
86
+
87
+ // Aplicar em: file.exists, file.delete, file.list
88
+ ```
89
+
90
+ ---
91
+
92
+ ### Task 2: Adicionar Limite de Tamanho de Arquivo
93
+
94
+ **Arquivo:** `src/node-host/runner.ts`
95
+
96
+ **Problema:** Lê arquivos de qualquer tamanho na memória
97
+
98
+ **Implementação:**
99
+
100
+ Adicionar constante no topo do arquivo:
101
+
102
+ ```typescript
103
+ // Após as constantes existentes
104
+ const MAX_FILE_SIZE_BYTES = 10 * 1024 * 1024; // 10MB
105
+ ```
106
+
107
+ Modificar o handler `file.read`:
108
+
109
+ ```typescript
110
+ if (command === "file.read") {
111
+ try {
112
+ const params = decodeParams<{ path: string; encoding?: string }>(frame.paramsJSON);
113
+ const filePath = sanitizeFilePath(String(params.path ?? ""));
114
+
115
+ // ✅ Verificar tamanho antes de ler
116
+ const stat = await fsPromises.stat(filePath);
117
+ if (stat.size > MAX_FILE_SIZE_BYTES) {
118
+ await sendInvokeResult(client, frame, {
119
+ ok: false,
120
+ error: {
121
+ code: "FILE_TOO_LARGE",
122
+ message: `File size ${stat.size} exceeds maximum ${MAX_FILE_SIZE_BYTES} bytes`
123
+ },
124
+ });
125
+ return;
126
+ }
127
+
128
+ const encoding = params.encoding === "base64" ? "base64" : "utf8";
129
+ const content = await fsPromises.readFile(filePath, encoding);
130
+ // ... resto do código
131
+ }
132
+ // ...
133
+ }
134
+ ```
135
+
136
+ ---
137
+
138
+ ### Task 3: Melhorar Mapeamento de Erros do Sistema
139
+
140
+ **Arquivo:** `src/node-host/runner.ts`
141
+
142
+ **Problema:** Códigos de erro genéricos
143
+
144
+ **Implementação:**
145
+
146
+ Adicionar função helper:
147
+
148
+ ```typescript
149
+ function mapSystemErrorToCode(err: unknown): { code: string; message: string } {
150
+ const errnoErr = err as NodeJS.ErrnoException | null;
151
+ const sysCode = errnoErr?.code;
152
+
153
+ switch (sysCode) {
154
+ case "ENOENT":
155
+ return { code: "NOT_FOUND", message: `File not found: ${errnoErr?.path || ""}` };
156
+ case "EACCES":
157
+ case "EPERM":
158
+ return { code: "PERMISSION_DENIED", message: `Permission denied: ${errnoErr?.path || ""}` };
159
+ case "EISDIR":
160
+ return { code: "IS_DIRECTORY", message: `Path is a directory: ${errnoErr?.path || ""}` };
161
+ case "ENOTDIR":
162
+ return { code: "NOT_DIRECTORY", message: `Not a directory: ${errnoErr?.path || ""}` };
163
+ case "ENOTEMPTY":
164
+ return { code: "DIRECTORY_NOT_EMPTY", message: `Directory not empty: ${errnoErr?.path || ""}` };
165
+ case "EEXIST":
166
+ return { code: "ALREADY_EXISTS", message: `File already exists: ${errnoErr?.path || ""}` };
167
+ case "ENOSPC":
168
+ return { code: "NO_SPACE", message: `No space left on device` };
169
+ default:
170
+ return { code: "INTERNAL_ERROR", message: String(err) };
171
+ }
172
+ }
173
+ ```
174
+
175
+ **Aplicar em todos os handlers:**
176
+
177
+ ```typescript
178
+ // file.read
179
+ catch (err) {
180
+ const { code, message } = mapSystemErrorToCode(err);
181
+ await sendInvokeResult(client, frame, {
182
+ ok: false,
183
+ error: { code, message },
184
+ });
185
+ }
186
+
187
+ // file.write, file.delete, file.list - aplicar mesmo padrão
188
+ ```
189
+
190
+ ---
191
+
192
+ ### Task 4: Adicionar Rate Limiting para Operações de Escrita
193
+
194
+ **Arquivo:** `src/node-host/runner.ts`
195
+
196
+ **Implementação:**
197
+
198
+ Adicionar tracking no topo do arquivo:
199
+
200
+ ```typescript
201
+ // Tracking simples de operações de escrita
202
+ const writeOperationTracker = new Map<string, { count: number; resetTime: number }>();
203
+ const WRITE_RATE_LIMIT = 10; // 10 operações
204
+ const WRITE_RATE_WINDOW_MS = 60_000; // por minuto
205
+
206
+ function checkWriteRateLimit(nodeId: string): boolean {
207
+ const now = Date.now();
208
+ const tracker = writeOperationTracker.get(nodeId);
209
+
210
+ if (!tracker || now > tracker.resetTime) {
211
+ writeOperationTracker.set(nodeId, { count: 1, resetTime: now + WRITE_RATE_WINDOW_MS });
212
+ return true;
213
+ }
214
+
215
+ if (tracker.count >= WRITE_RATE_LIMIT) {
216
+ return false;
217
+ }
218
+
219
+ tracker.count++;
220
+ return true;
221
+ }
222
+ ```
223
+
224
+ Modificar handlers de escrita:
225
+
226
+ ```typescript
227
+ // file.write
228
+ if (command === "file.write") {
229
+ try {
230
+ // ✅ Rate limiting
231
+ if (!checkWriteRateLimit(frame.nodeId)) {
232
+ await sendInvokeResult(client, frame, {
233
+ ok: false,
234
+ error: { code: "RATE_LIMITED", message: "Write rate limit exceeded" },
235
+ });
236
+ return;
237
+ }
238
+ // ... resto do código
239
+ }
240
+ }
241
+
242
+ // file.delete - aplicar mesmo padrão
243
+ ```
244
+
245
+ ---
246
+
247
+ ### Task 5: Limpar imports não utilizados
248
+
249
+ **Arquivo:** `src/node-host/runner.ts`
250
+
251
+ **Problema:** Existem imports não utilizados que causam warnings de lint
252
+
253
+ **Remover:**
254
+ ```typescript
255
+ // Remover linha 38:
256
+ import { createBrowserControlContext } from "../browser/control-service.js";
257
+
258
+ // Remover linha 41:
259
+ import { createBrowserRouteDispatcher } from "../browser/routes/dispatcher.js";
260
+
261
+ // Remover linha 49:
262
+ import { withTimeout } from "./with-timeout.js";
263
+ ```
264
+
265
+ **Nota:** Não remover os types que são usados em outros lugares do arquivo.
266
+
267
+ ---
268
+
269
+ ### Task 6: Build e Test
270
+
271
+ **Comandos:**
272
+
273
+ ```bash
274
+ # Build
275
+ pnpm build
276
+
277
+ # Verificar erros de lint específicos do arquivo
278
+ pnpm lint 2>&1 | grep "src/node-host/runner.ts"
279
+
280
+ # Testar unitariamente (se houver testes)
281
+ pnpm test src/node-host/runner.test.ts 2>/dev/null || echo "No tests yet"
282
+ ```
283
+
284
+ **Critérios de sucesso:**
285
+ - ✅ Build passa sem erros
286
+ - ✅ Nenhum erro de lint em `src/node-host/runner.ts`
287
+ - ✅ Código novo segue padrões existentes
288
+
289
+ ---
290
+
291
+ ## 📝 Notas de Implementação
292
+
293
+ 1. **Não alterar comportamento existente:** As mudanças devem apenas adicionar validação, não mudar funcionalidade
294
+ 2. **Manter compatibilidade:** Códigos de erro antigos ainda devem funcionar
295
+ 3. **Performance:** Sanitização deve ser rápida (synchronous, não bloqueia)
296
+ 4. **Segurança primeiro:** Em caso de dúvida, ser mais restritivo
297
+
298
+ ---
299
+
300
+ ## 🚀 Execução
301
+
302
+ Para executar este plano:
303
+
304
+ ```bash
305
+ # Usar subagent-driven-development para implementar tarefa por tarefa
306
+ # Ou executing-plans para execução em lote
307
+ ```