Peter Steinberger
d905ca0e02
fix: enforce explicit mention gating across channels
2026-01-24 11:09:33 +00:00
Peter Steinberger
6765fd15eb
feat: default TTS model overrides on ( #1559 ) (thanks @Glucksberg)
...
Co-authored-by: Glucksberg <80581902+Glucksberg@users.noreply.github.com >
2026-01-24 09:42:32 +00:00
Peter Steinberger
6a60d47c53
fix: cover slack open policy gating ( #1563 ) (thanks @itsjaydesu)
2026-01-24 07:09:26 +00:00
Glucksberg
6bd6ae41b1
fix: address code review findings for plugin commands
...
- Add registry lock during command execution to prevent race conditions
- Add input sanitization for command arguments (defense in depth)
- Validate handler is a function during registration
- Remove redundant case-insensitive regex flag
- Add success logging for command execution
- Simplify handler return type (always returns result now)
- Remove dead code branch in commands-plugin.ts
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 06:28:22 +00:00
Glucksberg
f648aae440
fix: clear plugin commands on reload to prevent duplicates
...
Add clearPluginCommands() call in loadClawdbotPlugins() to ensure
previously registered commands are cleaned up before reloading plugins.
This prevents command conflicts during hot-reload scenarios.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 06:28:22 +00:00
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