- Hook callbacks now get workspace from _ctx.workspaceDir (the hook
context parameter) instead of api.runtime.workspaceDir which is
undefined in gateway mode. This was the root cause of the plugin
silently doing nothing on all remote/gateway deployments.
- extractStateFromMessages now strips Telegram/Discord channel
metadata ("Conversation info (untrusted metadata)") from user
messages before saving to CURRENT_STATE.md, preventing garbage
data in the Objective field.
Tested on: macOS local (GPT-5.4), Oracle Cloud (MiniMax M2.5)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace prompt-based skill approach with OpenClaw lifecycle hooks
(before_agent_start, agent_end, before_compaction, before_reset).
State injection now happens automatically at the hook level,
making it model-agnostic and reliable across all providers.
- Add index.js with 5 lifecycle hooks
- Add openclaw.plugin.json manifest
- Rewrite post-install.sh to handle plugin installation
- Update README with plugin architecture docs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>