Glucksberg
b56587f26e
fix: address code review findings for plugin command API
...
Blockers fixed:
- Fix documentation: requireAuth defaults to true (not false)
- Add command name validation (must start with letter, alphanumeric only)
- Add reserved commands list to prevent shadowing built-in commands
- Emit diagnostic errors for invalid/duplicate command registration
Other improvements:
- Return user-friendly message for unauthorized commands (instead of silence)
- Sanitize error messages to avoid leaking internal details
- Document acceptsArgs behavior when arguments are provided
- Add notes about reserved commands and validation rules to docs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 06:28:22 +00:00
Glucksberg
4ee808dbcb
feat: add plugin command API for LLM-free auto-reply commands
...
This adds a new `api.registerCommand()` method to the plugin API, allowing
plugins to register slash commands that execute without invoking the AI agent.
Features:
- Plugin commands are processed before built-in commands and the agent
- Commands can optionally require authorization
- Commands can accept arguments
- Async handlers are supported
Use case: plugins can implement toggle commands (like /tts_on, /tts_off)
that respond immediately without consuming LLM API calls.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 06:28:22 +00:00
André Abadesso
71f7bd1cfd
test: add tests for normalizePluginsConfig memory slot handling
2026-01-24 03:08:27 +00:00
André Abadesso
c4c01089ab
fix: respect "none" value for plugins.slots.memory
2026-01-24 03:08:27 +00:00
Peter Steinberger
d82ecaf9dc
refactor: centralize inbound session updates
2026-01-23 23:33:32 +00:00
Peter Steinberger
cb8c8fee9a
refactor: centralize ack reaction removal
2026-01-23 23:32:14 +00:00
Peter Steinberger
02bd6e4a24
refactor: centralize ack reaction gating
2026-01-23 22:24:31 +00:00
Peter Steinberger
b77e730657
fix: add per-channel markdown table conversion ( #1495 ) (thanks @odysseus0)
2026-01-23 18:39:25 +00:00
Peter Steinberger
39d8ff59aa
test: trim plugin + telegram test setup
2026-01-23 06:22:09 +00:00
Peter Steinberger
51a9053387
feat: add OpenProse plugin skills
2026-01-23 00:49:40 +00:00
Peter Steinberger
fe860de148
fix: quiet update banner and skip duplicate plugin CLI
2026-01-21 07:37:22 +00:00
Peter Steinberger
026e6c4df4
fix: restore bundled plugin discovery
2026-01-21 03:40:05 +00:00
Peter Steinberger
a5a3ab958f
fix: skip bundled plugin discovery in tests
2026-01-21 03:29:03 +00:00
Peter Steinberger
99fc0fbac1
feat: sync plugin updates with update channel
2026-01-20 16:00:42 +00:00
Peter Steinberger
fdb171cb15
refactor: centralize channel ui metadata
2026-01-20 13:11:49 +00:00
Peter Steinberger
9a2bf57e1c
refactor: extend channel plugin boundary
2026-01-20 12:07:54 +00:00
Peter Steinberger
636a8e3181
fix: merge plugin manifest types
2026-01-20 11:22:28 +00:00
Peter Steinberger
660f87278c
refactor: plugin catalog + nextcloud policy
2026-01-20 11:22:27 +00:00
Shadow
2f6d5805de
fix: enforce plugin config schemas ( #1272 ) (thanks @thewilloftheshadow)
...
Co-authored-by: thewilloftheshadow <thewilloftheshadow@users.noreply.github.com >
2026-01-20 11:03:17 +00:00
Peter Steinberger
c17c7b4e24
Merge pull request #1235 from dougvk/feat/tool-dispatch-skill-commands
...
Plugin API: tool-dispatched skill commands + tool_result_persist hook
2026-01-20 08:52:05 +00:00
Peter Steinberger
c5e732951b
fix: prefer bundled plugin schema
2026-01-20 08:47:56 +00:00
Shadow
39dfdccf6c
CLI: skip runner rebuilds when dist is fresh ( #1231 )
...
Co-authored-by: mukhtharcm <mukhtharcm@users.noreply.github.com >
2026-01-19 13:12:33 -06:00
Doug von Kohorn
c3a34408f3
feat: add tool_result_persist hook
2026-01-19 13:11:31 +01:00
Peter Steinberger
0c8ba6599b
fix: add plugin config schema helper
2026-01-19 03:39:36 +00:00
Peter Steinberger
d1e9490f95
fix: enforce strict config validation
2026-01-19 03:39:25 +00:00
Peter Steinberger
d9384785a3
fix: stabilize ci checks
2026-01-19 00:34:26 +00:00
Peter Steinberger
5a4482412d
fix(plugins): prefer dist plugin-sdk in tests
2026-01-19 00:15:45 +00:00
Peter Steinberger
e97bcf4dae
refactor(plugins): improve loader resolution
2026-01-19 00:15:44 +00:00
Peter Steinberger
50fdd514ae
refactor(logging): split config + subsystem imports
2026-01-19 00:15:44 +00:00
Peter Steinberger
ee36e12f81
fix: log plugin load errors in gateway
2026-01-19 00:15:24 +00:00
Peter Steinberger
690bb192e6
style: format code
2026-01-18 19:36:46 +00:00
Peter Steinberger
601a052216
fix: unblock bundled plugin load
2026-01-18 19:34:21 +00:00
Peter Steinberger
7c49326191
fix: satisfy oxlint spread rule
2026-01-18 18:50:52 +00:00
Peter Steinberger
744d1329cb
feat: make inbound envelopes configurable
...
Co-authored-by: Shiva Prasad <shiv19@users.noreply.github.com >
2026-01-18 18:50:37 +00:00
Peter Steinberger
ab340c82fb
fix: stabilize tests and logging
2026-01-18 18:43:31 +00:00
Peter Steinberger
57dd0505a3
Merge pull request #1181 from sebslight/plugins/exclusive-slots
...
Plugins: auto-select exclusive slots
2026-01-18 18:40:38 +00:00
Peter Steinberger
5fe3c36471
fix(build): resolve ts2367 comparisons
2026-01-18 16:35:52 +00:00
Peter Steinberger
32ae4566c6
feat(config): auto-enable configured plugins
2026-01-18 16:35:52 +00:00
Sebastian Slight
cef6b16d14
Plugins: auto-select exclusive slots
2026-01-18 11:26:50 -05:00
Peter Steinberger
ee6e534ccb
refactor: route channel runtime via plugin api
2026-01-18 11:01:16 +00:00
Peter Steinberger
b015c7e5ad
fix: sync protocol outputs
2026-01-18 08:58:41 +00:00
Peter Steinberger
c5e19f5c67
refactor: migrate messaging plugins to sdk
2026-01-18 08:54:00 +00:00
Radek Paclt
ebfeb7a6bf
feat(memory): add lifecycle hooks and vector memory plugin
...
Add plugin lifecycle hooks infrastructure:
- before_agent_start: inject context before agent loop
- agent_end: analyze conversation after completion
- 13 hook types total (message, tool, session, gateway hooks)
Memory plugin implementation:
- LanceDB vector storage with OpenAI embeddings
- kind: "memory" to integrate with upstream slot system
- Auto-recall: injects <relevant-memories> when context found
- Auto-capture: stores preferences, decisions, entities
- Rule-based capture filtering with 0.95 similarity dedup
- Tools: memory_recall, memory_store, memory_forget
- CLI: clawdbot ltm list|search|stats
Plugin infrastructure:
- api.on() method for hook registration
- Global hook runner singleton for cross-module access
- Priority ordering and error catching
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-18 06:34:43 +00:00
Peter Steinberger
15606b4d88
test: cover bundled memory plugin package metadata
2026-01-18 06:30:01 +00:00
Peter Steinberger
d4bd387e0e
chore(gate): fix lint and formatting
2026-01-18 06:01:25 +00:00
Peter Steinberger
e2c10a2b7a
feat: support plugin-managed hooks
2026-01-18 05:57:05 +00:00
Peter Steinberger
9c0ff87c86
fix: align plugin runtime and exec wiring
2026-01-18 05:44:22 +00:00
Peter Steinberger
b7575a889e
refactor: align status with plugin memory slot
2026-01-18 05:40:10 +00:00
Peter Steinberger
016693a1f5
fix: abort embedded prompts on cancel
2026-01-18 05:18:10 +00:00
Peter Steinberger
82e49af5a7
fix: resolve plugin tool meta typing
2026-01-18 04:24:16 +00:00