Commit Graph

7 Commits

Author SHA1 Message Date
argenis de la rosa
0ccff1cd12 fix(plugins): preserve tool errors and support config-aware reinit 2026-02-28 19:51:37 -05:00
argenis de la rosa
f677367e4b style: apply rustfmt to agent-authored changes 2026-02-28 19:51:37 -05:00
argenis de la rosa
467fea87c6 refactor(hooks): extract HookRunner factory and make plugin registry init idempotent
- Add HookRunner::from_config() factory that encapsulates hook construction
  from HooksConfig, replacing 3 duplicated blocks in agent/loop_, gateway,
  and channels modules.
- Make plugin registry initialize_from_config() idempotent: skip re-init
  if already initialized, log debug message instead of silently overwriting.
- Add capability gating for tool_result_persist hook modifications.
2026-02-28 19:51:37 -05:00
argenis de la rosa
ade0e91898 feat(plugins): route declared tools/providers through plugin registry 2026-02-28 19:51:37 -05:00
argenis de la rosa
1d6afe792b feat(plugins): scaffold wasm runtime and wire core hook lifecycle 2026-02-28 19:51:37 -05:00
VirtualHotBar
0a42329ca5 fix: session leftovers after db47f56
- Demote session normal flow logs to debug\n- Skip session operations when CHANNEL_SESSION_CONFIG is uninitialized\n- Add spawn_blocking panic context for SQLite session manager\n- Fix fmt/clippy regressions (Box::pin large futures, cfg features, misc lints)
2026-02-28 15:23:42 +08:00
argenis de la rosa
b5292f54aa feat: plugin system
Implements a plugin system for ZeroClaw modeled after OpenClaw's architecture.

Key components:
- Plugin trait and PluginApi for registering tools/hooks
- Plugin manifest (zeroclaw.plugin.toml) for metadata
- Plugin discovery from bundled, global, and workspace directories
- PluginRegistry managing loaded plugins, tools, and hooks
- Error isolation via panic catching in register()
- Config integration via [plugins] section

Example plugin included in extensions/hello-world/.

Closes #1414

# Conflicts:
#	src/config/mod.rs
#	src/config/schema.rs
2026-02-26 21:49:10 -05:00