@poolzin/pool-bot 2026.3.11 → 2026.3.14
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 +121 -0
- package/dist/.buildstamp +1 -1
- package/dist/agents/checkpoint-manager.js +291 -0
- package/dist/agents/poolbot-tools.js +5 -0
- package/dist/agents/subagent-announce-reliability.js +160 -0
- package/dist/agents/tool-result-truncation.js +299 -0
- package/dist/agents/tools/nodes-file-tool.js +197 -0
- package/dist/build-info.json +3 -3
- package/dist/cli/config-cli.js +60 -0
- package/dist/cron/cron-improvements.js +195 -0
- package/dist/discord/discord-improvements.js +167 -0
- package/dist/gateway/auth-rate-limit.js +19 -0
- package/dist/gateway/auth.js +41 -0
- package/dist/gateway/gateway-improvements.js +294 -0
- package/dist/gateway/node-command-policy.js +7 -2
- package/dist/infra/net/ssrf.js +15 -2
- package/dist/infra/shell-security.js +201 -0
- package/dist/memory/memory-improvements.js +239 -0
- package/dist/node-host/runner.js +146 -79
- package/dist/security/prototype-pollution.js +141 -0
- package/dist/security/webhook-security.js +253 -0
- package/dist/shared/net/ip.js +52 -1
- package/dist/slack/slack-improvements.js +225 -0
- package/dist/telegram/telegram-improvements.js +220 -0
- package/dist/ui-plugins/ui-plugins-improvements.js +191 -0
- package/docs/ANALISE_OPENCLAW_PROFISSIONAL.md +520 -0
- package/docs/competitive-analysis.md +421 -0
- package/docs/implementation-analysis.md +393 -0
- package/docs/plans/2026-03-11-file-operations-security-hardening.md +307 -0
- package/docs/plans/2026-03-11-integracao-projetos-poolbot.md +666 -0
- package/docs/refactor/plugin-development-guide.md +281 -0
- package/extensions/agency-agents/README.md +301 -0
- package/extensions/agency-agents/agents/CONTRIBUTING.md +353 -0
- package/extensions/agency-agents/agents/README.md +602 -0
- package/extensions/agency-agents/agents/design/design-brand-guardian.md +320 -0
- package/extensions/agency-agents/agents/design/design-image-prompt-engineer.md +234 -0
- package/extensions/agency-agents/agents/design/design-ui-designer.md +381 -0
- package/extensions/agency-agents/agents/design/design-ux-architect.md +467 -0
- package/extensions/agency-agents/agents/design/design-ux-researcher.md +327 -0
- package/extensions/agency-agents/agents/design/design-visual-storyteller.md +147 -0
- package/extensions/agency-agents/agents/design/design-whimsy-injector.md +436 -0
- package/extensions/agency-agents/agents/engineering/engineering-ai-engineer.md +144 -0
- package/extensions/agency-agents/agents/engineering/engineering-backend-architect.md +233 -0
- package/extensions/agency-agents/agents/engineering/engineering-devops-automator.md +374 -0
- package/extensions/agency-agents/agents/engineering/engineering-frontend-developer.md +223 -0
- package/extensions/agency-agents/agents/engineering/engineering-mobile-app-builder.md +491 -0
- package/extensions/agency-agents/agents/engineering/engineering-rapid-prototyper.md +460 -0
- package/extensions/agency-agents/agents/engineering/engineering-security-engineer.md +275 -0
- package/extensions/agency-agents/agents/engineering/engineering-senior-developer.md +174 -0
- package/extensions/agency-agents/agents/examples/README.md +48 -0
- package/extensions/agency-agents/agents/examples/nexus-spatial-discovery.md +852 -0
- package/extensions/agency-agents/agents/examples/workflow-landing-page.md +119 -0
- package/extensions/agency-agents/agents/examples/workflow-startup-mvp.md +155 -0
- package/extensions/agency-agents/agents/integrations/README.md +117 -0
- package/extensions/agency-agents/agents/integrations/aider/README.md +38 -0
- package/extensions/agency-agents/agents/integrations/antigravity/README.md +49 -0
- package/extensions/agency-agents/agents/integrations/claude-code/README.md +31 -0
- package/extensions/agency-agents/agents/integrations/cursor/README.md +38 -0
- package/extensions/agency-agents/agents/integrations/gemini-cli/README.md +36 -0
- package/extensions/agency-agents/agents/integrations/opencode/README.md +58 -0
- package/extensions/agency-agents/agents/integrations/windsurf/README.md +26 -0
- package/extensions/agency-agents/agents/marketing/marketing-app-store-optimizer.md +319 -0
- package/extensions/agency-agents/agents/marketing/marketing-content-creator.md +52 -0
- package/extensions/agency-agents/agents/marketing/marketing-growth-hacker.md +52 -0
- package/extensions/agency-agents/agents/marketing/marketing-instagram-curator.md +111 -0
- package/extensions/agency-agents/agents/marketing/marketing-reddit-community-builder.md +121 -0
- package/extensions/agency-agents/agents/marketing/marketing-social-media-strategist.md +123 -0
- package/extensions/agency-agents/agents/marketing/marketing-tiktok-strategist.md +123 -0
- package/extensions/agency-agents/agents/marketing/marketing-twitter-engager.md +124 -0
- package/extensions/agency-agents/agents/marketing/marketing-wechat-official-account.md +143 -0
- package/extensions/agency-agents/agents/marketing/marketing-xiaohongshu-specialist.md +136 -0
- package/extensions/agency-agents/agents/marketing/marketing-zhihu-strategist.md +160 -0
- package/extensions/agency-agents/agents/product/product-feedback-synthesizer.md +117 -0
- package/extensions/agency-agents/agents/product/product-sprint-prioritizer.md +152 -0
- package/extensions/agency-agents/agents/product/product-trend-researcher.md +157 -0
- package/extensions/agency-agents/agents/project-management/project-management-experiment-tracker.md +196 -0
- package/extensions/agency-agents/agents/project-management/project-management-project-shepherd.md +192 -0
- package/extensions/agency-agents/agents/project-management/project-management-studio-operations.md +198 -0
- package/extensions/agency-agents/agents/project-management/project-management-studio-producer.md +201 -0
- package/extensions/agency-agents/agents/project-management/project-manager-senior.md +133 -0
- package/extensions/agency-agents/agents/scripts/convert.sh +362 -0
- package/extensions/agency-agents/agents/scripts/install.sh +465 -0
- package/extensions/agency-agents/agents/scripts/lint-agents.sh +115 -0
- package/extensions/agency-agents/agents/spatial-computing/macos-spatial-metal-engineer.md +335 -0
- package/extensions/agency-agents/agents/spatial-computing/terminal-integration-specialist.md +68 -0
- package/extensions/agency-agents/agents/spatial-computing/visionos-spatial-engineer.md +52 -0
- package/extensions/agency-agents/agents/spatial-computing/xr-cockpit-interaction-specialist.md +30 -0
- package/extensions/agency-agents/agents/spatial-computing/xr-immersive-developer.md +30 -0
- package/extensions/agency-agents/agents/spatial-computing/xr-interface-architect.md +30 -0
- package/extensions/agency-agents/agents/specialized/agentic-identity-trust.md +367 -0
- package/extensions/agency-agents/agents/specialized/agents-orchestrator.md +365 -0
- package/extensions/agency-agents/agents/specialized/data-analytics-reporter.md +52 -0
- package/extensions/agency-agents/agents/specialized/data-consolidation-agent.md +58 -0
- package/extensions/agency-agents/agents/specialized/lsp-index-engineer.md +312 -0
- package/extensions/agency-agents/agents/specialized/report-distribution-agent.md +63 -0
- package/extensions/agency-agents/agents/specialized/sales-data-extraction-agent.md +65 -0
- package/extensions/agency-agents/agents/strategy/EXECUTIVE-BRIEF.md +95 -0
- package/extensions/agency-agents/agents/strategy/QUICKSTART.md +194 -0
- package/extensions/agency-agents/agents/strategy/coordination/agent-activation-prompts.md +401 -0
- package/extensions/agency-agents/agents/strategy/coordination/handoff-templates.md +357 -0
- package/extensions/agency-agents/agents/strategy/nexus-strategy.md +1110 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-0-discovery.md +178 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-1-strategy.md +238 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-2-foundation.md +278 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-3-build.md +286 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-4-hardening.md +332 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-5-launch.md +277 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-6-operate.md +318 -0
- package/extensions/agency-agents/agents/strategy/runbooks/scenario-enterprise-feature.md +157 -0
- package/extensions/agency-agents/agents/strategy/runbooks/scenario-incident-response.md +217 -0
- package/extensions/agency-agents/agents/strategy/runbooks/scenario-marketing-campaign.md +187 -0
- package/extensions/agency-agents/agents/strategy/runbooks/scenario-startup-mvp.md +154 -0
- package/extensions/agency-agents/agents/support/support-analytics-reporter.md +363 -0
- package/extensions/agency-agents/agents/support/support-executive-summary-generator.md +210 -0
- package/extensions/agency-agents/agents/support/support-finance-tracker.md +440 -0
- package/extensions/agency-agents/agents/support/support-infrastructure-maintainer.md +616 -0
- package/extensions/agency-agents/agents/support/support-legal-compliance-checker.md +586 -0
- package/extensions/agency-agents/agents/support/support-support-responder.md +583 -0
- package/extensions/agency-agents/agents/testing/testing-accessibility-auditor.md +313 -0
- package/extensions/agency-agents/agents/testing/testing-api-tester.md +304 -0
- package/extensions/agency-agents/agents/testing/testing-evidence-collector.md +208 -0
- package/extensions/agency-agents/agents/testing/testing-performance-benchmarker.md +266 -0
- package/extensions/agency-agents/agents/testing/testing-reality-checker.md +236 -0
- package/extensions/agency-agents/agents/testing/testing-test-results-analyzer.md +303 -0
- package/extensions/agency-agents/agents/testing/testing-tool-evaluator.md +392 -0
- package/extensions/agency-agents/agents/testing/testing-workflow-optimizer.md +448 -0
- package/extensions/agency-agents/index.ts +733 -0
- package/extensions/agency-agents/node_modules/.bin/jiti +21 -0
- package/extensions/agency-agents/node_modules/.bin/tsc +21 -0
- package/extensions/agency-agents/node_modules/.bin/tsserver +21 -0
- package/extensions/agency-agents/node_modules/.bin/tsx +21 -0
- package/extensions/agency-agents/node_modules/.bin/vite +21 -0
- package/extensions/agency-agents/node_modules/.bin/vitest +21 -0
- package/extensions/agency-agents/node_modules/.bin/yaml +21 -0
- package/extensions/agency-agents/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/extensions/agency-agents/package.json +25 -0
- package/extensions/agency-agents/src/AgencyAgentsService.test.ts +443 -0
- package/extensions/agency-agents/src/AgencyAgentsService.ts +288 -0
- package/extensions/agency-agents/src/types.ts +147 -0
- package/extensions/agency-agents/vitest.config.ts +8 -0
- package/extensions/hexstrike-ai/README.md +98 -0
- package/extensions/hexstrike-ai/node_modules/.bin/tsc +21 -0
- package/extensions/hexstrike-ai/node_modules/.bin/tsserver +21 -0
- package/extensions/hexstrike-ai/package.json +29 -0
- package/extensions/hexstrike-ai/poolbot.plugin.json +31 -0
- package/extensions/hexstrike-ai/src/client.ts +91 -0
- package/extensions/hexstrike-ai/src/index.ts +170 -0
- package/extensions/hexstrike-ai/src/server/hexstrike_mcp.py +5470 -0
- package/extensions/hexstrike-ai/src/server/hexstrike_server.py +17289 -0
- package/extensions/hexstrike-ai/src/server/requirements.txt +84 -0
- package/extensions/hexstrike-ai/src/server-manager.ts +83 -0
- package/extensions/hexstrike-ai/tsconfig.json +20 -0
- package/extensions/hexstrike-bridge/package.json +1 -1
- package/extensions/hexstrike-bridge/poolbot.plugin.json +23 -0
- package/extensions/mcp-server/poolbot.plugin.json +10 -0
- package/extensions/page-agent/README.md +159 -0
- package/extensions/page-agent/index.ts +595 -0
- package/extensions/page-agent/node_modules/.bin/jiti +21 -0
- package/extensions/page-agent/node_modules/.bin/playwright +21 -0
- package/extensions/page-agent/node_modules/.bin/tsc +21 -0
- package/extensions/page-agent/node_modules/.bin/tsserver +21 -0
- package/extensions/page-agent/node_modules/.bin/tsx +21 -0
- package/extensions/page-agent/node_modules/.bin/vitest +21 -0
- package/extensions/page-agent/node_modules/.bin/yaml +21 -0
- package/extensions/page-agent/package.json +43 -0
- package/extensions/page-agent/src/PageAgentService.test.ts +517 -0
- package/extensions/page-agent/src/PageAgentService.ts +636 -0
- package/extensions/page-agent/src/PoolBotPageController.test.ts +358 -0
- package/extensions/page-agent/src/PoolBotPageController.ts +245 -0
- package/extensions/page-agent/src/index.ts +20 -0
- package/extensions/page-agent/src/tools.test.ts +231 -0
- package/extensions/page-agent/src/tools.ts +167 -0
- package/extensions/page-agent/src/types.ts +198 -0
- package/extensions/template/README.md +101 -0
- package/extensions/template/index.ts +38 -0
- package/extensions/template/package.json +15 -0
- package/extensions/template/poolbot.plugin.json +10 -0
- package/extensions/xyops/README.md +227 -0
- package/extensions/xyops/index.ts +342 -0
- package/extensions/xyops/node_modules/.bin/jiti +21 -0
- package/extensions/xyops/node_modules/.bin/tsc +21 -0
- package/extensions/xyops/node_modules/.bin/tsserver +21 -0
- package/extensions/xyops/node_modules/.bin/tsx +21 -0
- package/extensions/xyops/node_modules/.bin/vitest +21 -0
- package/extensions/xyops/node_modules/.bin/yaml +21 -0
- package/extensions/xyops/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/extensions/xyops/package.json +39 -0
- package/extensions/xyops/src/client.test.ts +467 -0
- package/extensions/xyops/src/client.ts +157 -0
- package/extensions/xyops/src/types.ts +147 -0
- package/extensions/xyops/vitest.config.ts +8 -0
- package/package.json +1 -1
- package/extensions/mavalie/README.md +0 -97
- package/extensions/mavalie/package.json +0 -15
- package/extensions/mavalie/src/index.ts +0 -62
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# Plugin Development Guide
|
|
2
|
+
|
|
3
|
+
Complete guide for creating PoolBot plugins using the template scaffold.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
### 1. Create from Template
|
|
8
|
+
|
|
9
|
+
Copy the template to a new plugin directory:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
cp -r extensions/template extensions/my-plugin
|
|
13
|
+
cd extensions/my-plugin
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### 2. Update Package Info
|
|
17
|
+
|
|
18
|
+
Edit `package.json`:
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"name": "@poolzin/my-plugin",
|
|
23
|
+
"version": "2026.3.12",
|
|
24
|
+
"description": "My custom PoolBot plugin"
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 3. Update Plugin Manifest
|
|
29
|
+
|
|
30
|
+
Edit `poolbot.plugin.json`:
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"id": "my-plugin",
|
|
35
|
+
"name": "My Plugin",
|
|
36
|
+
"description": "What my plugin does.",
|
|
37
|
+
"configSchema": {
|
|
38
|
+
"type": "object",
|
|
39
|
+
"properties": {
|
|
40
|
+
"apiKey": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"description": "API key for external service"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 4. Implement Plugin
|
|
50
|
+
|
|
51
|
+
Edit `index.ts`:
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
import type { PoolBotPluginApi } from "../../src/plugins/types.js";
|
|
55
|
+
import type { AgentToolResult } from "@mariozechner/pi-agent-core";
|
|
56
|
+
|
|
57
|
+
export default function register(api: PoolBotPluginApi) {
|
|
58
|
+
// Register tools, providers, channels, or hooks
|
|
59
|
+
api.registerTool({
|
|
60
|
+
label: "My Tool",
|
|
61
|
+
name: "my_tool",
|
|
62
|
+
description: "Does something useful",
|
|
63
|
+
parameters: {
|
|
64
|
+
type: "object",
|
|
65
|
+
properties: {
|
|
66
|
+
input: { type: "string" }
|
|
67
|
+
},
|
|
68
|
+
required: ["input"]
|
|
69
|
+
},
|
|
70
|
+
async execute(_toolCallId, params): Promise<AgentToolResult<unknown>> {
|
|
71
|
+
const { input } = params as { input: string };
|
|
72
|
+
return {
|
|
73
|
+
content: [{ type: "text", text: `Processed: ${input}` }],
|
|
74
|
+
details: { input }
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 5. Test Locally
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Build
|
|
85
|
+
pnpm build
|
|
86
|
+
|
|
87
|
+
# Lint
|
|
88
|
+
pnpm lint
|
|
89
|
+
|
|
90
|
+
# Run PoolBot with plugin
|
|
91
|
+
pnpm dev
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 6. Publish (Optional)
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
cd extensions/my-plugin
|
|
98
|
+
npm publish --access public
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Plugin Structure
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
extensions/my-plugin/
|
|
105
|
+
├── package.json # npm manifest
|
|
106
|
+
├── poolbot.plugin.json # Plugin manifest (required)
|
|
107
|
+
├── index.ts # Entry point (root level)
|
|
108
|
+
└── README.md # Documentation
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Extension Types
|
|
112
|
+
|
|
113
|
+
### Tools
|
|
114
|
+
|
|
115
|
+
Add capabilities that agents can use:
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
api.registerTool({
|
|
119
|
+
label: "Weather",
|
|
120
|
+
name: "weather_lookup",
|
|
121
|
+
description: "Get current weather for a location",
|
|
122
|
+
parameters: {
|
|
123
|
+
type: "object",
|
|
124
|
+
properties: {
|
|
125
|
+
city: { type: "string" }
|
|
126
|
+
},
|
|
127
|
+
required: ["city"]
|
|
128
|
+
},
|
|
129
|
+
async execute(_toolCallId, params): Promise<AgentToolResult<unknown>> {
|
|
130
|
+
const { city } = params as { city: string };
|
|
131
|
+
// Call weather API
|
|
132
|
+
return {
|
|
133
|
+
content: [{ type: "text", text: `Weather in ${city}: ...` }],
|
|
134
|
+
details: { city, temperature: 72 }
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Providers
|
|
141
|
+
|
|
142
|
+
Add custom LLM model providers:
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
api.registerProvider({
|
|
146
|
+
id: "my-provider",
|
|
147
|
+
name: "My Provider",
|
|
148
|
+
// ... provider config
|
|
149
|
+
});
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Channels
|
|
153
|
+
|
|
154
|
+
Add messaging channel integrations:
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
api.registerChannel({
|
|
158
|
+
id: "my-channel",
|
|
159
|
+
name: "My Channel",
|
|
160
|
+
// ... channel implementation
|
|
161
|
+
});
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Hooks
|
|
165
|
+
|
|
166
|
+
Intercept lifecycle events:
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
api.on("before_model_resolve", async (ctx) => {
|
|
170
|
+
// Modify context before model selection
|
|
171
|
+
});
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Configuration Schema
|
|
175
|
+
|
|
176
|
+
The `configSchema` in `poolbot.plugin.json` defines user-configurable settings:
|
|
177
|
+
|
|
178
|
+
```json
|
|
179
|
+
{
|
|
180
|
+
"configSchema": {
|
|
181
|
+
"type": "object",
|
|
182
|
+
"properties": {
|
|
183
|
+
"apiKey": {
|
|
184
|
+
"type": "string",
|
|
185
|
+
"description": "API authentication key"
|
|
186
|
+
},
|
|
187
|
+
"endpoint": {
|
|
188
|
+
"type": "string",
|
|
189
|
+
"default": "https://api.example.com",
|
|
190
|
+
"description": "API endpoint URL"
|
|
191
|
+
},
|
|
192
|
+
"timeout": {
|
|
193
|
+
"type": "number",
|
|
194
|
+
"default": 5000,
|
|
195
|
+
"description": "Request timeout in milliseconds"
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
"required": ["apiKey"]
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Access config in your plugin:
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
export default function register(api: PoolBotPluginApi) {
|
|
207
|
+
const config = api.pluginConfig as { apiKey: string; endpoint?: string };
|
|
208
|
+
const endpoint = config.endpoint ?? "https://api.example.com";
|
|
209
|
+
// Use config.apiKey...
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Testing Your Plugin
|
|
214
|
+
|
|
215
|
+
### Local Testing
|
|
216
|
+
|
|
217
|
+
1. Place plugin in `extensions/my-plugin/`
|
|
218
|
+
2. Ensure `poolbot.extensions` in root `package.json` includes the path
|
|
219
|
+
3. Run `pnpm build` and `pnpm dev`
|
|
220
|
+
4. Test with `poolbot doctor` to verify loading
|
|
221
|
+
|
|
222
|
+
### Test Plugin Available
|
|
223
|
+
|
|
224
|
+
Use the published test plugin as a reference:
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
npm install @poolzin/test-plugin
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
This plugin provides:
|
|
231
|
+
- `test_echo` - Echo tool for validation
|
|
232
|
+
- `test_validate` - Plugin status checker
|
|
233
|
+
|
|
234
|
+
## Troubleshooting
|
|
235
|
+
|
|
236
|
+
### "plugin manifest not found"
|
|
237
|
+
|
|
238
|
+
- Check if `poolbot.plugin.json` exists in plugin root
|
|
239
|
+
- Verify JSON is valid
|
|
240
|
+
|
|
241
|
+
### "extension entry escapes package directory"
|
|
242
|
+
|
|
243
|
+
- Entry point in `package.json` must use relative path: `"./index.ts"`
|
|
244
|
+
- File must be inside plugin directory
|
|
245
|
+
|
|
246
|
+
### TypeScript Errors
|
|
247
|
+
|
|
248
|
+
- Use `import type { PoolBotPluginApi } from "../../src/plugins/types.js"`
|
|
249
|
+
- Note the capital `B` in `PoolBotPluginApi`
|
|
250
|
+
- Tool `label` property is required
|
|
251
|
+
- Tool `execute` must return `Promise<AgentToolResult<unknown>>`
|
|
252
|
+
|
|
253
|
+
### Tool Not Appearing
|
|
254
|
+
|
|
255
|
+
- Verify tool has `label`, `name`, `description`, `parameters`, and `execute`
|
|
256
|
+
- Check that `parameters` follows JSON Schema format
|
|
257
|
+
- Ensure `execute` returns correct `AgentToolResult` structure
|
|
258
|
+
|
|
259
|
+
## Best Practices
|
|
260
|
+
|
|
261
|
+
1. **Use TypeScript** - Full type safety for better DX
|
|
262
|
+
2. **Add Labels** - Every tool needs a `label` for display
|
|
263
|
+
3. **Validate Input** - Check parameters before processing
|
|
264
|
+
4. **Return Proper Results** - Use `AgentToolResult` structure
|
|
265
|
+
5. **Document Config** - Describe all config options in schema
|
|
266
|
+
6. **Handle Errors** - Throw descriptive errors for invalid input
|
|
267
|
+
7. **Test Thoroughly** - Test with `poolbot doctor` before publishing
|
|
268
|
+
|
|
269
|
+
## Examples
|
|
270
|
+
|
|
271
|
+
See working examples in the repository:
|
|
272
|
+
|
|
273
|
+
- `extensions/template/` - Minimal starter template
|
|
274
|
+
- `extensions/test-plugin/` - Working example with tools
|
|
275
|
+
- `extensions/lobster/` - Complex plugin with multiple features
|
|
276
|
+
- `extensions/llm-task/` - Provider plugin example
|
|
277
|
+
|
|
278
|
+
## References
|
|
279
|
+
|
|
280
|
+
- [Plugin SDK Documentation](plugin-sdk.md)
|
|
281
|
+
- [Test Plugin on npm](https://www.npmjs.com/package/@poolzin/test-plugin)
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
# Agency Agents Extension for PoolBot
|
|
2
|
+
|
|
3
|
+
AI specialist agents for software engineering tasks. Register domain-specific agents (Frontend, Backend, DevOps, etc.) and orchestrate complex multi-agent workflows with collaboration, messaging, and review capabilities.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Specialist Agents**: Pre-configured agents for different engineering domains
|
|
8
|
+
- **Task Management**: Create, assign, and track tasks with dependencies
|
|
9
|
+
- **Multi-Agent Collaboration**: Form teams with lead agents and participants
|
|
10
|
+
- **Workflow Orchestration**: Define step-by-step workflows with dependencies
|
|
11
|
+
- **Agent Messaging**: Inter-agent communication for coordination
|
|
12
|
+
- **Code Review**: Structured review process with approval workflows
|
|
13
|
+
- **System Prompts**: Auto-generated prompts for LLM integration
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Install as PoolBot extension
|
|
19
|
+
poolbot extension install @poolbot/agency-agents
|
|
20
|
+
|
|
21
|
+
# Or manual installation
|
|
22
|
+
cd extensions/agency-agents
|
|
23
|
+
pnpm install
|
|
24
|
+
pnpm build
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Configuration
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"agencyAgents": {
|
|
32
|
+
"agents": [
|
|
33
|
+
{
|
|
34
|
+
"name": "FrontendDev",
|
|
35
|
+
"description": "Frontend development specialist",
|
|
36
|
+
"category": "engineering",
|
|
37
|
+
"color": "#3b82f6",
|
|
38
|
+
"content": "Expert in React, Vue, and modern CSS...",
|
|
39
|
+
"capabilities": ["react", "vue", "css", "typescript"],
|
|
40
|
+
"tools": ["code_editor", "browser", "git"]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"name": "BackendDev",
|
|
44
|
+
"description": "Backend development specialist",
|
|
45
|
+
"category": "engineering",
|
|
46
|
+
"color": "#10b981",
|
|
47
|
+
"content": "Expert in Node.js, Python, and databases...",
|
|
48
|
+
"capabilities": ["nodejs", "python", "postgresql", "redis"],
|
|
49
|
+
"tools": ["code_editor", "database", "api_tester"]
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Usage
|
|
57
|
+
|
|
58
|
+
### Initialize Service
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
import { AgencyAgentsService } from '@poolbot/agency-agents'
|
|
62
|
+
|
|
63
|
+
const service = new AgencyAgentsService(config)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Register Agents
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
service.registerAgent({
|
|
70
|
+
name: 'DevOpsEngineer',
|
|
71
|
+
description: 'DevOps and infrastructure specialist',
|
|
72
|
+
category: 'engineering',
|
|
73
|
+
color: '#f59e0b',
|
|
74
|
+
content: 'Expert in Docker, Kubernetes, and CI/CD...',
|
|
75
|
+
capabilities: ['docker', 'kubernetes', 'terraform', 'aws'],
|
|
76
|
+
tools: ['terminal', 'docker', 'kubectl']
|
|
77
|
+
})
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Task Management
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
// Create a task
|
|
84
|
+
const task = service.createTask(
|
|
85
|
+
'FrontendDev',
|
|
86
|
+
'Build login page component',
|
|
87
|
+
'Create a responsive login form with email and password fields'
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
// Update task status
|
|
91
|
+
service.updateTaskStatus(task.id, 'in_progress')
|
|
92
|
+
service.updateTaskStatus(task.id, 'completed', 'Login component built successfully')
|
|
93
|
+
|
|
94
|
+
// Get task details
|
|
95
|
+
const taskDetails = service.getTask(task.id)
|
|
96
|
+
|
|
97
|
+
// List all tasks
|
|
98
|
+
const allTasks = service.listTasks()
|
|
99
|
+
|
|
100
|
+
// Filter by agent or status
|
|
101
|
+
const frontendTasks = service.listTasks('FrontendDev')
|
|
102
|
+
const pendingTasks = service.listTasks(undefined, 'pending')
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Agent Collaboration
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
// Create a collaboration
|
|
109
|
+
const collab = service.createCollaboration(
|
|
110
|
+
'E-commerce Feature',
|
|
111
|
+
'Build shopping cart functionality',
|
|
112
|
+
'FrontendDev',
|
|
113
|
+
['BackendDev', 'UXDesigner']
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
// Add tasks to collaboration
|
|
117
|
+
const task1 = service.createTask('FrontendDev', 'Build cart UI', undefined, collab.id)
|
|
118
|
+
const task2 = service.createTask('BackendDev', 'Build cart API', undefined, collab.id)
|
|
119
|
+
|
|
120
|
+
// Update collaboration status
|
|
121
|
+
service.updateCollaborationStatus(collab.id, 'active')
|
|
122
|
+
|
|
123
|
+
// List collaborations
|
|
124
|
+
const activeCollabs = service.listCollaborations('active')
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Agent Messaging
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
// Send message between agents
|
|
131
|
+
service.sendMessage(
|
|
132
|
+
'FrontendDev',
|
|
133
|
+
'BackendDev',
|
|
134
|
+
collab.id,
|
|
135
|
+
'What is the API endpoint for adding items to cart?',
|
|
136
|
+
'request'
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
// Get messages for collaboration
|
|
140
|
+
const messages = service.getMessagesForCollaboration(collab.id)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Code Review
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
// Create a review
|
|
147
|
+
service.createReview(
|
|
148
|
+
task.id,
|
|
149
|
+
'SeniorDev',
|
|
150
|
+
'FrontendDev',
|
|
151
|
+
'Code looks good but needs error handling',
|
|
152
|
+
'changes_requested',
|
|
153
|
+
['Add try-catch block', 'Validate input parameters']
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
// Approve review
|
|
157
|
+
service.approveReview(review.id)
|
|
158
|
+
|
|
159
|
+
// Get reviews for task
|
|
160
|
+
const reviews = service.getReviewsForTask(task.id)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Workflow Orchestration
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
// Create a workflow
|
|
167
|
+
const workflow = service.createWorkflow(
|
|
168
|
+
'Feature Development',
|
|
169
|
+
'Complete feature development workflow',
|
|
170
|
+
'engineering'
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
// Add steps
|
|
174
|
+
const step1 = service.addWorkflowStep(
|
|
175
|
+
workflow.id,
|
|
176
|
+
'Design API',
|
|
177
|
+
'Design the API endpoints',
|
|
178
|
+
'BackendDev',
|
|
179
|
+
'Create OpenAPI spec',
|
|
180
|
+
[]
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
const step2 = service.addWorkflowStep(
|
|
184
|
+
workflow.id,
|
|
185
|
+
'Implement API',
|
|
186
|
+
'Build the backend API',
|
|
187
|
+
'BackendDev',
|
|
188
|
+
'Implement endpoints',
|
|
189
|
+
[step1.id]
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
// Execute workflow
|
|
193
|
+
await service.executeWorkflow(workflow.id)
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### System Prompt Generation
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
// Generate system prompt for agent
|
|
200
|
+
const prompt = service.generateSystemPrompt('FrontendDev')
|
|
201
|
+
console.log(prompt)
|
|
202
|
+
// Output: "You are FrontendDev, a Frontend development specialist..."
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Data Types
|
|
206
|
+
|
|
207
|
+
### AgencyAgent
|
|
208
|
+
|
|
209
|
+
```typescript
|
|
210
|
+
interface AgencyAgent {
|
|
211
|
+
name: string
|
|
212
|
+
description: string
|
|
213
|
+
color?: string
|
|
214
|
+
category: string
|
|
215
|
+
content: string
|
|
216
|
+
capabilities: string[]
|
|
217
|
+
tools?: string[]
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### AgentTask
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
interface AgentTask {
|
|
225
|
+
id: string
|
|
226
|
+
agentName: string
|
|
227
|
+
task: string
|
|
228
|
+
context?: string
|
|
229
|
+
status: 'pending' | 'in_progress' | 'completed' | 'failed' | 'reviewing'
|
|
230
|
+
output?: string
|
|
231
|
+
createdAt: Date
|
|
232
|
+
updatedAt: Date
|
|
233
|
+
parentTaskId?: string
|
|
234
|
+
subtasks?: string[]
|
|
235
|
+
dependencies?: string[]
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### AgentCollaboration
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
interface AgentCollaboration {
|
|
243
|
+
id: string
|
|
244
|
+
name: string
|
|
245
|
+
description: string
|
|
246
|
+
leadAgent: string
|
|
247
|
+
participatingAgents: string[]
|
|
248
|
+
tasks: AgentTask[]
|
|
249
|
+
status: 'planning' | 'active' | 'completed' | 'paused'
|
|
250
|
+
createdAt: Date
|
|
251
|
+
updatedAt: Date
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Testing
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# Run all tests
|
|
259
|
+
pnpm test
|
|
260
|
+
|
|
261
|
+
# Watch mode
|
|
262
|
+
pnpm test:watch
|
|
263
|
+
|
|
264
|
+
# Coverage
|
|
265
|
+
pnpm test:coverage
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
## API Reference
|
|
269
|
+
|
|
270
|
+
### AgencyAgentsService
|
|
271
|
+
|
|
272
|
+
| Method | Description |
|
|
273
|
+
|--------|-------------|
|
|
274
|
+
| `registerAgent(agent)` | Register a new agent |
|
|
275
|
+
| `unregisterAgent(name)` | Remove an agent |
|
|
276
|
+
| `getAgent(name)` | Get agent by name |
|
|
277
|
+
| `listAgents()` | List all registered agents |
|
|
278
|
+
| `findAgentsByCapability(cap)` | Find agents by capability |
|
|
279
|
+
| `matchAgentToTask(task)` | Find best agent for task |
|
|
280
|
+
| `createTask(agent, task, context, parentId)` | Create a task |
|
|
281
|
+
| `getTask(id)` | Get task by ID |
|
|
282
|
+
| `updateTaskStatus(id, status, output)` | Update task status |
|
|
283
|
+
| `listTasks(agent?, status?)` | List tasks with filters |
|
|
284
|
+
| `createCollaboration(name, desc, lead, participants)` | Create collaboration |
|
|
285
|
+
| `getCollaboration(id)` | Get collaboration by ID |
|
|
286
|
+
| `updateCollaborationStatus(id, status)` | Update collaboration status |
|
|
287
|
+
| `listCollaborations(status?)` | List collaborations |
|
|
288
|
+
| `sendMessage(from, to, collabId, content, type)` | Send agent message |
|
|
289
|
+
| `getMessagesForCollaboration(id)` | Get collaboration messages |
|
|
290
|
+
| `createReview(taskId, reviewer, reviewee, feedback, status, suggestions?)` | Create review |
|
|
291
|
+
| `approveReview(id)` | Approve a review |
|
|
292
|
+
| `getReviewsForTask(id)` | Get reviews for task |
|
|
293
|
+
| `createWorkflow(name, desc, category)` | Create workflow |
|
|
294
|
+
| `addWorkflowStep(flowId, name, desc, agent, task, deps)` | Add workflow step |
|
|
295
|
+
| `executeWorkflow(id)` | Execute workflow |
|
|
296
|
+
| `generateSystemPrompt(agentName)` | Generate system prompt |
|
|
297
|
+
| `getStatistics()` | Get service statistics |
|
|
298
|
+
|
|
299
|
+
## License
|
|
300
|
+
|
|
301
|
+
MIT
|