@poolzin/pool-bot 2026.3.10 → 2026.3.13

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 (52) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/.buildstamp +1 -1
  3. package/dist/build-info.json +3 -3
  4. package/docs/refactor/plugin-development-guide.md +281 -0
  5. package/extensions/bluebubbles/package.json +1 -1
  6. package/extensions/copilot-proxy/package.json +1 -1
  7. package/extensions/diagnostics-otel/package.json +1 -1
  8. package/extensions/discord/package.json +1 -1
  9. package/extensions/feishu/package.json +1 -1
  10. package/extensions/google-antigravity-auth/package.json +1 -1
  11. package/extensions/google-gemini-cli-auth/package.json +1 -1
  12. package/extensions/googlechat/package.json +1 -1
  13. package/extensions/hexstrike-bridge/package.json +2 -2
  14. package/extensions/hexstrike-bridge/poolbot.plugin.json +23 -0
  15. package/extensions/imessage/package.json +1 -1
  16. package/extensions/irc/package.json +1 -1
  17. package/extensions/line/package.json +1 -1
  18. package/extensions/llm-task/package.json +1 -1
  19. package/extensions/lobster/package.json +1 -1
  20. package/extensions/matrix/CHANGELOG.md +5 -0
  21. package/extensions/matrix/package.json +1 -1
  22. package/extensions/mattermost/package.json +1 -1
  23. package/extensions/mcp-server/package.json +1 -1
  24. package/extensions/mcp-server/poolbot.plugin.json +10 -0
  25. package/extensions/memory-core/package.json +1 -1
  26. package/extensions/memory-lancedb/package.json +1 -1
  27. package/extensions/minimax-portal-auth/package.json +1 -1
  28. package/extensions/msteams/CHANGELOG.md +5 -0
  29. package/extensions/msteams/package.json +1 -1
  30. package/extensions/nextcloud-talk/package.json +1 -1
  31. package/extensions/nostr/CHANGELOG.md +5 -0
  32. package/extensions/nostr/package.json +1 -1
  33. package/extensions/open-prose/package.json +1 -1
  34. package/extensions/openai-codex-auth/package.json +1 -1
  35. package/extensions/signal/package.json +1 -1
  36. package/extensions/slack/package.json +1 -1
  37. package/extensions/telegram/package.json +1 -1
  38. package/extensions/template/README.md +101 -0
  39. package/extensions/template/index.ts +38 -0
  40. package/extensions/template/package.json +15 -0
  41. package/extensions/template/poolbot.plugin.json +10 -0
  42. package/extensions/tlon/package.json +1 -1
  43. package/extensions/twitch/CHANGELOG.md +5 -0
  44. package/extensions/twitch/package.json +1 -1
  45. package/extensions/voice-call/CHANGELOG.md +5 -0
  46. package/extensions/voice-call/package.json +1 -1
  47. package/extensions/whatsapp/package.json +1 -1
  48. package/extensions/zalo/CHANGELOG.md +5 -0
  49. package/extensions/zalo/package.json +1 -1
  50. package/extensions/zalouser/CHANGELOG.md +5 -0
  51. package/extensions/zalouser/package.json +1 -1
  52. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,48 @@
1
+ ## v2026.3.13 (2026-03-13)
2
+
3
+ ### Features
4
+ - **Plugin Development Guide:** comprehensive documentation at `docs/refactor/plugin-development-guide.md`
5
+ - Quick start tutorial from template
6
+ - Extension types (tools, providers, channels, hooks)
7
+ - Configuration schema examples
8
+ - Troubleshooting common errors
9
+
10
+ ### Fixes
11
+ - **Plugin Template:** renamed `mavalie` → `template` with proper structure
12
+ - Fixed entry point path (`./index.ts` instead of `./src/index.ts`)
13
+ - Added required `poolbot.plugin.json` manifest
14
+ - Updated all metadata (id, name, description)
15
+ - Added `label` property to tool examples (required field)
16
+ - **Missing Manifests:** added `poolbot.plugin.json` to `mcp-server` and `hexstrike-bridge`
17
+ - Fixes "plugin manifest not found" doctor errors
18
+ - Fixes "extension entry escapes package directory" errors
19
+
20
+ ---
21
+
22
+ ## v2026.3.12 (2026-03-12)
23
+
24
+ ### Fixes
25
+ - **Plugin Template:** renamed `mavalie` → `template` with proper structure
26
+ - Fixed entry point path (`./index.ts` instead of `./src/index.ts`)
27
+ - Added required `poolbot.plugin.json` manifest
28
+ - Updated all metadata (id, name, description)
29
+ - **Missing Manifests:** added `poolbot.plugin.json` to `mcp-server` and `hexstrike-bridge`
30
+ - Fixes "plugin manifest not found" doctor errors
31
+ - Fixes "extension entry escapes package directory" errors
32
+
33
+ ---
34
+
35
+ ## v2026.3.11 (2026-03-11)
36
+
37
+ ### Features
38
+ - **Mavalie Plugin Template:** new example plugin `extensions/mavalie/` demonstrating proper PoolBot plugin structure
39
+ - Minimal valid plugin using `poolbot/plugin-sdk` with `emptyPluginConfigSchema()`
40
+ - TypeScript entry point with jiti transpilation support
41
+ - Provider registration example with API key authentication pattern
42
+ - Comprehensive README with plugin development guidelines
43
+
44
+ ---
45
+
1
46
  ## v2026.3.10 (2026-03-10)
2
47
 
3
48
  ### Features
package/dist/.buildstamp CHANGED
@@ -1 +1 @@
1
- 1773140740628
1
+ 1773200810931
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.3.10",
3
- "commit": "2ec0a7b00dbe2a248658209e1a66d72b4a17ff41",
4
- "builtAt": "2026-03-10T19:42:26.277Z"
2
+ "version": "2026.3.13",
3
+ "commit": "772f27d4ab21d89af08b22c846efea9a20f86f83",
4
+ "builtAt": "2026-03-11T03:51:28.829Z"
5
5
  }
@@ -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)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/bluebubbles",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot BlueBubbles channel plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/copilot-proxy",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Copilot Proxy provider plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/diagnostics-otel",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot diagnostics OpenTelemetry exporter",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/discord",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Discord channel plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolzin/feishu",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "description": "Pool Bot Feishu/Lark channel plugin (community maintained by @m1heng)",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/google-antigravity-auth",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Google Antigravity OAuth provider plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/google-gemini-cli-auth",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Gemini CLI OAuth provider plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/googlechat",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Google Chat channel plugin",
6
6
  "poolbot": {
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@poolbot/hexstrike-bridge",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "HexStrike AI security tools bridge for PoolBot - integrates 150+ security scanners",
6
6
  "poolbot": {
7
7
  "extensions": [
8
- "./src/index.ts"
8
+ "./index.ts"
9
9
  ]
10
10
  },
11
11
  "dependencies": {
@@ -0,0 +1,23 @@
1
+ {
2
+ "id": "hexstrike-bridge",
3
+ "name": "HexStrike Security Bridge",
4
+ "description": "Integrates HexStrike AI security tools (150+ scanners).",
5
+ "configSchema": {
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "baseUrl": {
10
+ "type": "string",
11
+ "default": "http://localhost:8888"
12
+ },
13
+ "timeoutMs": {
14
+ "type": "number",
15
+ "default": 300000
16
+ },
17
+ "maxConcurrentScans": {
18
+ "type": "number",
19
+ "default": 3
20
+ }
21
+ }
22
+ }
23
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/imessage",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot iMessage channel plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolzin/irc",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "description": "Pool Bot IRC channel plugin",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/line",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot LINE channel plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/llm-task",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot JSON-only LLM task plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/lobster",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Lobster workflow tool plugin (typed pipelines + resumable approvals)",
6
6
  "poolbot": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.11
4
+
5
+ ### Changes
6
+ - Version alignment with core Poolbot release numbers.
7
+
3
8
  ## 2026.3.10
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/matrix",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Matrix channel plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/mattermost",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Mattermost channel plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/mcp-server",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "MCP (Model Context Protocol) server plugin for PoolBot - exposes tools via MCP protocol",
6
6
  "poolbot": {
@@ -0,0 +1,10 @@
1
+ {
2
+ "id": "mcp-server",
3
+ "name": "MCP Server",
4
+ "description": "MCP (Model Context Protocol) server - exposes PoolBot tools via MCP protocol.",
5
+ "configSchema": {
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "properties": {}
9
+ }
10
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/memory-core",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot core memory search plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/memory-lancedb",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot LanceDB-backed long-term memory plugin with auto-recall/capture",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolzin/minimax-portal-auth",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "private": true,
5
5
  "description": "Pool Bot MiniMax Portal OAuth provider plugin",
6
6
  "type": "module",
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.11
4
+
5
+ ### Changes
6
+ - Version alignment with core Poolbot release numbers.
7
+
3
8
  ## 2026.3.10
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/msteams",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Microsoft Teams channel plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/nextcloud-talk",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Nextcloud Talk channel plugin",
6
6
  "poolbot": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.11
4
+
5
+ ### Changes
6
+ - Version alignment with core Poolbot release numbers.
7
+
3
8
  ## 2026.3.10
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/nostr",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Nostr channel plugin for NIP-04 encrypted DMs",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/open-prose",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "OpenProse VM skill pack plugin (slash command + telemetry).",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolzin/openai-codex-auth",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "private": true,
5
5
  "description": "OpenAI Codex CLI auth provider plugin - use ChatGPT Plus/Pro subscription for OpenAI models",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/signal",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Signal channel plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/slack",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Slack channel plugin",
6
6
  "poolbot": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/telegram",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Telegram channel plugin",
6
6
  "poolbot": {
@@ -0,0 +1,101 @@
1
+ # Template Plugin for PoolBot
2
+
3
+ Starter template for creating custom PoolBot plugins.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ extensions/template/
9
+ ├── package.json # npm manifest
10
+ ├── poolbot.plugin.json # Plugin manifest (required)
11
+ ├── index.ts # Entry point (root level)
12
+ └── README.md # Documentation
13
+ ```
14
+
15
+ ## Installation
16
+
17
+ The plugin loads automatically when:
18
+ - Directory is in `extensions/template/`
19
+ - `package.json` has `poolbot.extensions` configured
20
+ - `poolbot.plugin.json` exists in plugin root
21
+
22
+ ## Configuration
23
+
24
+ The plugin uses an empty schema (`configSchema` with `additionalProperties: false`), meaning no initial configuration is required.
25
+
26
+ To add settings, update `poolbot.plugin.json`:
27
+
28
+ ```json
29
+ {
30
+ "id": "template",
31
+ "name": "Template",
32
+ "description": "My custom PoolBot plugin.",
33
+ "configSchema": {
34
+ "type": "object",
35
+ "properties": {
36
+ "apiKey": { "type": "string" },
37
+ "endpoint": { "type": "string", "default": "https://api.example.com" }
38
+ }
39
+ }
40
+ }
41
+ ```
42
+
43
+ ## Development
44
+
45
+ ### Extension Types
46
+
47
+ PoolBot supports 4 extension types via `PoolBotPluginApi`:
48
+
49
+ 1. **Tool** - Add agent tools (`api.registerTool()`)
50
+ 2. **Provider** - Add custom LLM models (`api.registerProvider()`)
51
+ 3. **Channel** - Add messaging channels (`api.registerChannel()`)
52
+ 4. **Hook** - Intercept lifecycle events (`api.registerHook()`)
53
+
54
+ ### Example: Registering a Tool
55
+
56
+ ```typescript
57
+ import type { PoolBotPluginApi } from "../../src/plugins/types.js";
58
+ import type { AgentToolResult } from "@mariozechner/pi-agent-core";
59
+
60
+ export default function register(api: PoolBotPluginApi) {
61
+ api.registerTool({
62
+ label: "My Search", // Display name for the tool
63
+ name: "my_search", // Tool identifier (snake_case)
64
+ description: "Search using custom API",
65
+ parameters: {
66
+ type: "object",
67
+ properties: {
68
+ query: { type: "string" }
69
+ },
70
+ required: ["query"]
71
+ },
72
+ async execute(_toolCallId, params): Promise<AgentToolResult<unknown>> {
73
+ const { query } = params as { query: string };
74
+ // Implementation here
75
+ return {
76
+ content: [{ type: "text", text: JSON.stringify({ results: [] }) }],
77
+ details: { query }
78
+ };
79
+ }
80
+ });
81
+ }
82
+ ```
83
+
84
+ ## Troubleshooting
85
+
86
+ ### "plugin manifest not found"
87
+ - Check if `poolbot.plugin.json` exists in plugin root
88
+ - Verify JSON is valid
89
+
90
+ ### "extension entry escapes package directory"
91
+ - Entry point in `package.json` must use relative path: `"./index.ts"`
92
+ - File must be inside plugin directory
93
+
94
+ ### TypeScript Errors
95
+ - Use `import type { PoolBotPluginApi } from "../../src/plugins/types.js"`
96
+ - Note the capital `B` in `PoolBotPluginApi`
97
+
98
+ ## References
99
+
100
+ - [Plugin SDK Documentation](../../docs/refactor/plugin-sdk.md)
101
+ - [Example Plugins](../lobster/, ../llm-task/, etc.)
@@ -0,0 +1,38 @@
1
+ import type { PoolBotPluginApi } from "../../src/plugins/types.js";
2
+
3
+ /**
4
+ * Template Plugin for PoolBot
5
+ *
6
+ * Starter template for creating custom PoolBot plugins.
7
+ * This plugin can be expanded with custom tools, providers, channels, or hooks.
8
+ */
9
+
10
+ export default function register(_api: PoolBotPluginApi) {
11
+ // Plugin registered successfully
12
+ // TODO: Add here:
13
+ // - Tools (agent tools)
14
+ // - Providers (custom LLM models)
15
+ // - Channels (messaging integrations)
16
+ // - Hooks (lifecycle events)
17
+
18
+ // Example: Register a simple tool
19
+ // api.registerTool({
20
+ // label: "My Tool", // Display name
21
+ // name: "my_tool", // Tool identifier (snake_case)
22
+ // description: "Does something",
23
+ // parameters: {
24
+ // type: "object",
25
+ // properties: {
26
+ // input: { type: "string" }
27
+ // },
28
+ // required: ["input"]
29
+ // },
30
+ // async execute(_toolCallId, params): Promise<AgentToolResult<unknown>> {
31
+ // const { input } = params as { input: string };
32
+ // return {
33
+ // content: [{ type: "text", text: `Result: ${input}` }],
34
+ // details: { input }
35
+ // };
36
+ // }
37
+ // });
38
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@poolbot/template",
3
+ "version": "2026.3.12",
4
+ "type": "module",
5
+ "description": "Template plugin for PoolBot - starter template for custom integrations",
6
+ "poolbot": {
7
+ "extensions": [
8
+ "./index.ts"
9
+ ]
10
+ },
11
+ "dependencies": {},
12
+ "devDependencies": {
13
+ "poolbot": "workspace:*"
14
+ }
15
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "id": "template",
3
+ "name": "Template",
4
+ "description": "Starter template plugin for PoolBot custom integrations.",
5
+ "configSchema": {
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "properties": {}
9
+ }
10
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/tlon",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Tlon/Urbit channel plugin",
6
6
  "poolbot": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.11
4
+
5
+ ### Changes
6
+ - Version alignment with core Poolbot release numbers.
7
+
3
8
  ## 2026.3.10
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/twitch",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "description": "Poolbot Twitch channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.11
4
+
5
+ ### Changes
6
+ - Version alignment with core Poolbot release numbers.
7
+
3
8
  ## 2026.3.10
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/voice-call",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot voice-call plugin",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/whatsapp",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot WhatsApp channel plugin",
6
6
  "poolbot": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.11
4
+
5
+ ### Changes
6
+ - Version alignment with core Poolbot release numbers.
7
+
3
8
  ## 2026.3.10
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/zalo",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Zalo channel plugin",
6
6
  "poolbot": {
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.3.11
4
+
5
+ ### Changes
6
+ - Version alignment with core Poolbot release numbers.
7
+
3
8
  ## 2026.3.10
4
9
 
5
10
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolbot/zalouser",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.11",
4
4
  "type": "module",
5
5
  "description": "Poolbot Zalo Personal Account plugin via zca-cli",
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poolzin/pool-bot",
3
- "version": "2026.3.10",
3
+ "version": "2026.3.13",
4
4
  "description": "🎱 Pool Bot - AI assistant with PLCODE integrations",
5
5
  "keywords": [],
6
6
  "license": "MIT",