The daemon's `manifest_missing_integrity_hooks` check (#3804) hard-fails any registry install whose plugin.toml declares hooks but lacks an [integrity] entry for each one. All 11 plugins under plugins/ had the [hooks] table but were missing [integrity], so `librefang plugin install <name>` would error after download with "missing [integrity] hashes for hook script(s): ...". Compute and pin SHA-256 over each `hooks/*.py` under every plugin dir. The mempalace-indexer entries were already present and are unchanged (reordered alphabetically by the regenerator). Verified each plugin.toml still parses (Python tomllib).
user-profile
Persistent user profiling from conversation patterns. Builds a profile of user expertise areas, communication style, and technical level, then injects it as context so agents can personalize responses.
How it works
After each turn, the plugin analyzes user messages to update the profile:
- Expertise areas -- extracts technical keywords and tracks frequency (top 20 retained)
- Communication style -- running average of message lengths (brief / moderate / detailed)
- Technical level -- scored from signals like code blocks, version numbers, tech abbreviations, and question patterns (beginner / intermediate / advanced)
- Question ratio -- fraction of user messages containing questions
On ingest, once the profile has at least 5 interactions, the plugin returns a compact profile summary as a memory fragment: expertise=python,devops; style=detailed; level=advanced.
Hooks
| Hook | Script | Description |
|---|---|---|
| ingest | hooks/ingest.py |
Returns the profile summary as a memory fragment (after 5+ interactions) |
| after_turn | hooks/after_turn.py |
Analyzes user messages to update the profile |
Storage
Profiles are stored at ~/.librefang/plugins/user-profile/{agent_id}.json.
Usage
Installed automatically when enabled in agent configuration.