Files
optimclaw/tools-src/gmail/gmail-tool.capabilities.json
T
afb49597ac feat(extensions): add OAuth setup UI for WASM tools + display name labels (#437)
Add setup.required_secrets to tool capabilities.json files so users can
configure OAuth client credentials (Google, Slack, Okta, Telegram) through
the Extensions UI Setup modal instead of environment variables.

- Add ToolSetupSchema/ToolSecretSetupSchema types to capabilities_schema.rs
- Extend get_setup_schema(), save_setup_secrets(), list() to handle WasmTool
- Extract load_tool_capabilities() helper to reduce duplication
- Auto-activate tools after saving setup secrets
- Show display_name labels (Channel/Tool/MCP) in extension cards
- Update button labels: "Setup" when unconfigured, "Reconfigure" when set
- Replace "Set" badge with checkmark in configure modal
- Fix innerHTML XSS pattern in slash autocomplete (use textContent)
- Add tests for ToolSetupSchema parsing and resolve_nested promotion
- Update registry display names (e.g. "Telegram Channel" vs "Telegram Tool")

Co-authored-by: Claude Sonnet 4.6 <[email protected]>
2026-02-28 19:57:55 -08:00

59 lines
1.5 KiB
JSON

{
"http": {
"allowlist": [
{
"host": "gmail.googleapis.com",
"path_prefix": "/gmail/v1/",
"methods": ["GET", "POST", "DELETE"]
}
],
"credentials": {
"google_oauth_token": {
"secret_name": "google_oauth_token",
"location": { "type": "bearer" },
"host_patterns": ["gmail.googleapis.com"]
}
},
"rate_limit": {
"requests_per_minute": 60,
"requests_per_hour": 500
},
"timeout_secs": 30
},
"secrets": {
"allowed_names": ["google_oauth_token"]
},
"auth": {
"secret_name": "google_oauth_token",
"display_name": "Google",
"oauth": {
"authorization_url": "https://accounts.google.com/o/oauth2/v2/auth",
"token_url": "https://oauth2.googleapis.com/token",
"client_id_env": "GOOGLE_OAUTH_CLIENT_ID",
"client_secret_env": "GOOGLE_OAUTH_CLIENT_SECRET",
"scopes": [
"https://www.googleapis.com/auth/gmail.modify",
"https://www.googleapis.com/auth/gmail.compose"
],
"use_pkce": false,
"extra_params": {
"access_type": "offline",
"prompt": "consent"
}
},
"env_var": "GOOGLE_OAUTH_TOKEN"
},
"setup": {
"required_secrets": [
{
"name": "google_oauth_client_id",
"prompt": "Google OAuth Client ID (from console.cloud.google.com/apis/credentials)"
},
{
"name": "google_oauth_client_secret",
"prompt": "Google OAuth Client Secret"
}
]
}
}