Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 133 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -58,5 +58,10 @@ sqlite-vec = "0.1"
# Setup wizard web server (used only by src/bin/setup.rs)
axum = "0.8"

# OAuth 2.0 / PKCE helpers (used only by src/bin/setup.rs)
rand = "0.8"
sha2 = "0.10"
base64 = "0.22"

[dev-dependencies]
tempfile = "3"
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -261,11 +261,11 @@ skills/
- [x] RAG query rewriting (disambiguates follow-up questions before vector search)
- [x] Nightly conversation summarization (LLM-based cron job)
- [x] Verbose tool UI (`/verbose` command — live tool call progress in Telegram)
- [x] Google integration tools (Calendar, Email, Drive)

### Planned

- [ ] Image upload support
- [ ] Google integration tools (Calendar, Email, Drive)
- [ ] Event trigger framework (e.g., on email receive)
- [ ] WhatsApp support
- [ ] Webhook mode (in addition to polling)
Expand Down
32 changes: 32 additions & 0 deletions config.example.toml
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,30 @@ directory = "skills"
# These servers are reached over HTTPS and do not require a local command.
# Use `url` instead of `command`; optionally set `auth_token` for Bearer auth.

# Example: Notion MCP server (official HTTP MCP — no Node.js required)
# Docs: https://developers.notion.com/guides/mcp/mcp
#
# Recommended: use the setup wizard (cargo run --bin setup) to obtain an OAuth
# access token via the built-in OAuth 2.0 flow. The wizard also stores the
# refresh token and expiry so the bot can automatically renew the connection.
#
# The bot refreshes the access token automatically when it is within 5 minutes
# of expiry and writes the new credentials back to this file. Manual setup:
# 1. Create a Notion integration at https://www.notion.so/my-integrations
# and note your client_id and client_secret.
# 2. Complete the OAuth flow to obtain an access_token and refresh_token.
# 3. Fill in the fields below.
#
# [[mcp_servers]]
# name = "notion"
# url = "https://mcp.notion.com/mcp"
# auth_token = "your-notion-oauth-access-token"
# refresh_token = "your-notion-oauth-refresh-token"
# token_expires_at = 1234567890 # Unix timestamp; set by the wizard
# token_endpoint = "https://api.notion.com/v1/oauth/token"
# oauth_client_id = "your-notion-client-id"
# oauth_client_secret = "your-notion-client-secret" # omit for public clients

# Example: Exa AI web search (https://mcp.exa.ai)
# Get your API key at https://dashboard.exa.ai/api-keys
#
Expand All @@ -161,3 +185,11 @@ directory = "skills"
# [[mcp_servers]]
# name = "exa"
# url = "https://mcp.exa.ai/mcp?exaApiKey=your-exa-api-key"

# ── Self-Learning (optional; defaults apply if section omitted) ─────────────
# [learning]
# user_model_path = "memory/USER.md" # Honcho-style user model file
# skill_extraction_enabled = true # Auto-generate skills from tool-heavy tasks
# skill_extraction_threshold = 5 # Min tool calls to trigger extraction
# user_model_update_interval = 10 # Update user model every N user messages
# user_model_cron = "0 0 3 * * SUN" # Weekly user model refresh (6-field cron)
Loading