mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
* fix: CLI commands ignore runtime DATABASE_BACKEND when both features compiled
`tool auth` and `mcp` CLI subcommands used compile-time `#[cfg]` gates
to select the database backend for secrets storage. When the binary is
compiled with both `postgres` and `libsql` features, the `#[cfg(feature
= "postgres")]` block always wins regardless of the runtime
`DATABASE_BACKEND` setting. This causes `tool auth` and `mcp auth` to
fail with a connection error for users running the libsql backend.
Switch both functions to `match config.database.backend { ... }` with
inner `#[cfg]` guards on each arm, matching the pattern already used in
`main.rs` and `app.rs`.
Also adds a top-level `auth` section to the Telegram channel
capabilities file so `ironclaw tool auth telegram` works for channels
(previously only tools had this section).
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* fix: extract create_secrets_store factory into src/db, bump telegram version
- Move duplicated DB backend selection logic from cli/tool.rs and
cli/mcp.rs into a shared db::create_secrets_store() factory, following
the existing db::connect_from_config() pattern.
- Bump telegram channel version 0.2.0 → 0.2.1 to fix CI Version Bump Check.
- Add regression test for create_secrets_store with libsql backend.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* fix: address review feedback — wizard.rs pattern, formatting, version bump
- Convert setup/wizard.rs secrets store creation from tri-branch #[cfg]
to runtime match on selected_backend (same pattern as CLI fix).
- Fix formatting (assert! line wrapping caught by CI).
- Bump telegram version to 0.2.2 (main already has 0.2.1).
- Merge latest main.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* chore: fix regression test doc comment formatting
Co-Authored-By: Claude Opus 4.6 <[email protected]>
[skip-regression-check]
* fix: address Copilot review — wizard default backend, error chain preservation
- Fix wizard.rs: default selected_backend to "libsql" in libsql-only
builds so create_libsql_secrets_store is not skipped.
- Preserve error chain: replace .map_err(|e| anyhow!("{}", e)) with ?
in cli/tool.rs and cli/mcp.rs since DatabaseError implements
std::error::Error.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
---------
Co-authored-by: Tiny Tim <[email protected]>
Co-authored-by: Claude Opus 4.6 <[email protected]>
Co-authored-by: firat.sertgoz <[email protected]>
72 lines
2.0 KiB
JSON
72 lines
2.0 KiB
JSON
{
|
|
"version": "0.2.2",
|
|
"wit_version": "0.3.0",
|
|
"type": "channel",
|
|
"name": "telegram",
|
|
"description": "Telegram Bot API channel for receiving and responding to Telegram messages",
|
|
"auth": {
|
|
"secret_name": "telegram_bot_token",
|
|
"display_name": "Telegram",
|
|
"instructions": "Get your bot token from @BotFather on Telegram (https://t.me/BotFather). Send /newbot or /token to get it.",
|
|
"setup_url": "https://t.me/BotFather",
|
|
"token_hint": "Looks like 123456789:AABBccDDeeFFgg...",
|
|
"env_var": "TELEGRAM_BOT_TOKEN"
|
|
},
|
|
"setup": {
|
|
"required_secrets": [
|
|
{
|
|
"name": "telegram_bot_token",
|
|
"prompt": "Enter your Telegram Bot API token (from @BotFather)",
|
|
"optional": false
|
|
}
|
|
],
|
|
"setup_url": "https://t.me/BotFather"
|
|
},
|
|
"capabilities": {
|
|
"http": {
|
|
"allowlist": [
|
|
{ "host": "api.telegram.org", "path_prefix": "/bot" },
|
|
{ "host": "api.telegram.org", "path_prefix": "/file/bot" }
|
|
],
|
|
"credentials": {
|
|
"telegram_bot": {
|
|
"secret_name": "telegram_bot_token",
|
|
"location": { "type": "url_path", "placeholder": "{TELEGRAM_BOT_TOKEN}" },
|
|
"host_patterns": ["api.telegram.org"]
|
|
}
|
|
},
|
|
"max_response_bytes": 52428800,
|
|
"rate_limit": {
|
|
"requests_per_minute": 30,
|
|
"requests_per_hour": 1000
|
|
}
|
|
},
|
|
"secrets": {
|
|
"allowed_names": ["telegram_*"]
|
|
},
|
|
"channel": {
|
|
"allowed_paths": ["/webhook/telegram"],
|
|
"allow_polling": true,
|
|
"min_poll_interval_ms": 30000,
|
|
"workspace_prefix": "channels/telegram/",
|
|
"emit_rate_limit": {
|
|
"messages_per_minute": 100,
|
|
"messages_per_hour": 5000
|
|
},
|
|
"webhook": {
|
|
"secret_header": "X-Telegram-Bot-Api-Secret-Token",
|
|
"secret_name": "telegram_webhook_secret"
|
|
}
|
|
}
|
|
},
|
|
"config": {
|
|
"bot_username": null,
|
|
"owner_id": null,
|
|
"respond_to_all_group_messages": false,
|
|
"polling_enabled": false,
|
|
"poll_interval_ms": 30000,
|
|
"dm_policy": "pairing",
|
|
"allow_from": []
|
|
}
|
|
}
|