feat: per-user channel config for Google Chat and Nextcloud Talk
- New endpoints: POST /channels/google-chat/{username} and /webhook/nextcloud/{username}
- Channel secrets/config live in home/{username}/channels.json (gitignored)
- auth_utils: get_user_channels() helper reads channels.json
- Both routers load persona, audience/secret, backend, timeout per user;
set_context() wires the correct persona before building the system prompt
- Removed server-level channel settings from config.py and .env —
no user gets a channel until they create their own channels.json
- .gitignore: home/**/channels.json added
To migrate: update Google Chat Add-on webhook URL to /channels/google-chat/{username}
and re-register NC Talk bot at /webhook/nextcloud/{username}
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -45,21 +45,6 @@ class Settings(BaseSettings):
|
||||
timeout_gemini: int = 120 # frequently slow under load
|
||||
timeout_local: int = 300 # local models may need to load first
|
||||
|
||||
# Google Chat
|
||||
# JWT audience (aud) claim to verify on inbound webhook requests.
|
||||
# Google Chat sets aud = the Google Cloud project number (e.g. "741112865538").
|
||||
# Set to "" to disable verification (dev/testing only).
|
||||
google_chat_audience: str = ""
|
||||
# Google Chat must receive a response within 30s or shows an error to the user
|
||||
google_chat_timeout: int = 25
|
||||
# Backend forced for Google Chat — Claude is more reliable within the 25s deadline
|
||||
google_chat_backend: str = "claude"
|
||||
|
||||
# Nextcloud Talk bot
|
||||
nextcloud_url: str = "https://cloud.dgrzone.com"
|
||||
nextcloud_talk_bot_secret: str = "" # set in .env
|
||||
nextcloud_talk_timeout: int = 55
|
||||
|
||||
# Auto-distillation schedule — override in .env
|
||||
# AUTO_DISTILL=false disables entirely
|
||||
scheduler_timezone: str = "America/New_York" # IANA tz — override in .env if needed
|
||||
|
||||
Reference in New Issue
Block a user