feat(plugins): plugin pages, per-user config, capabilities gate, mobile/telegram refactors

- Plugin HTTP routes + web pages (plugin-page-host, plugin-catalog, plugin-detail)
- Plugin access grants + per-user config (DB tables + API + frontend forms)
- Capabilities-based guard (caps.rs) replacing role-id checks
- Mobile connector: message routing, payload types, router refactor
- Telegram bot: auth flow, event handling improvements
- Honcho plugin: substantial rework
- Sidebar: plugin pages integration, role-driven visibility
- i18n: new strings for plugins, connectors, capabilities
- Remove unused mascot asset
This commit is contained in:
2026-07-19 20:47:09 +01:00
parent f85876350e
commit ba911ae8cb
50 changed files with 3186 additions and 305 deletions
+3 -1
View File
@@ -547,7 +547,7 @@ impl ChatSessionHandler {
// providers with prefix caching (e.g. Alibaba/DeepSeek via OpenRouter)
// to cache the stable system prompt across turns even though Honcho
// memories change on every call.
let honcho_dynamic = match self.memory_manager.query_context(self.session_id, content).await {
let honcho_dynamic = match self.memory_manager.query_context(&self.user_id, self.session_id, content).await {
Some(mem_ctx) => {
trace!(
session_id = self.session_id,
@@ -659,6 +659,7 @@ impl ChatSessionHandler {
self.event_bus.user_message(ChatEvent {
session_id: self.session_id,
stack_id: stack.id,
user_id: self.user_id.clone(),
message_id: user_message_id,
role: ChatEventRole::User,
content: user_content,
@@ -671,6 +672,7 @@ impl ChatSessionHandler {
self.event_bus.assistant_response(ChatEvent {
session_id: self.session_id,
stack_id: stack.id,
user_id: self.user_id.clone(),
message_id,
role: ChatEventRole::Assistant,
content,