Adds composio-sdk/ with SKILL.md, AGENTS.md, and 18 rule files covering Tool Router, direct execution, triggers, and auth patterns. Source: composiohq/skills Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
167 lines
5 KiB
Markdown
167 lines
5 KiB
Markdown
---
|
|
title: Configure Connection Management Properly
|
|
impact: CRITICAL
|
|
description: Understand manageConnections settings to control authentication behavior in Tool Router
|
|
tags: [authentication, tool-router, connections, configuration]
|
|
---
|
|
|
|
# Configure Connection Management Properly
|
|
|
|
The `manageConnections` setting determines how Tool Router handles missing toolkit connections. Configure it correctly based on your application type.
|
|
|
|
## ❌ Incorrect
|
|
|
|
```typescript
|
|
// DON'T: Disable connections in interactive applications
|
|
const session = await composio.create('user_123', {
|
|
toolkits: ['gmail'],
|
|
manageConnections: false // Tools will FAIL if user not connected!
|
|
});
|
|
|
|
// When agent tries to use Gmail:
|
|
// ❌ Error: No connected account found for gmail
|
|
// User has no way to authenticate
|
|
```
|
|
|
|
```python
|
|
# DON'T: Disable connections in interactive applications
|
|
session = composio.tool_router.create(
|
|
user_id="user_123",
|
|
toolkits=["gmail"],
|
|
manage_connections=False # Tools will FAIL if user not connected!
|
|
)
|
|
|
|
# When agent tries to use Gmail:
|
|
# ❌ Error: No connected account found for gmail
|
|
# User has no way to authenticate
|
|
```
|
|
|
|
## ✅ Correct - Enable Auto Authentication (Default)
|
|
|
|
```typescript
|
|
// DO: Enable connection management for interactive apps
|
|
import { Composio } from '@composio/core';
|
|
|
|
const composio = new Composio();
|
|
|
|
// Option 1: Use default (manageConnections: true)
|
|
const session1 = await composio.create('user_123', {
|
|
toolkits: ['gmail', 'slack']
|
|
// manageConnections defaults to true
|
|
});
|
|
|
|
// Option 2: Explicitly enable with boolean
|
|
const session2 = await composio.create('user_123', {
|
|
toolkits: ['gmail'],
|
|
manageConnections: true // Agent can prompt for auth
|
|
});
|
|
|
|
// How it works:
|
|
// 1. Agent tries to use Gmail tool
|
|
// 2. No connection exists
|
|
// 3. Agent calls COMPOSIO_MANAGE_CONNECTIONS meta tool
|
|
// 4. User receives auth link in chat
|
|
// 5. User authenticates
|
|
// 6. Agent continues with Gmail access
|
|
```
|
|
|
|
```python
|
|
# DO: Enable connection management for interactive apps
|
|
from composio import Composio
|
|
|
|
composio = Composio()
|
|
|
|
# Option 1: Use default (manage_connections: True)
|
|
session1 = composio.tool_router.create(
|
|
user_id="user_123",
|
|
toolkits=["gmail", "slack"]
|
|
# manage_connections defaults to True
|
|
)
|
|
|
|
# Option 2: Explicitly enable with boolean
|
|
session2 = composio.tool_router.create(
|
|
user_id="user_123",
|
|
toolkits=["gmail"],
|
|
manage_connections=True # Agent can prompt for auth
|
|
)
|
|
|
|
# How it works:
|
|
# 1. Agent tries to use Gmail tool
|
|
# 2. No connection exists
|
|
# 3. Agent calls COMPOSIO_MANAGE_CONNECTIONS meta tool
|
|
# 4. User receives auth link in chat
|
|
# 5. User authenticates
|
|
# 6. Agent continues with Gmail access
|
|
```
|
|
|
|
## ✅ Correct - Advanced Configuration
|
|
|
|
```typescript
|
|
// DO: Configure with object for fine-grained control
|
|
const session = await composio.create('user_123', {
|
|
toolkits: ['gmail', 'slack'],
|
|
manageConnections: {
|
|
enable: true, // Allow in-chat authentication
|
|
callbackUrl: 'https://your-app.com/auth/callback', // Custom OAuth callback
|
|
waitForConnections: true // Wait for user to complete auth before proceeding
|
|
}
|
|
});
|
|
|
|
// With waitForConnections: true
|
|
// Session creation waits until user completes authentication
|
|
// Perfect for workflows where connections are required upfront
|
|
```
|
|
|
|
```python
|
|
# DO: Configure with object for fine-grained control
|
|
session = composio.tool_router.create(
|
|
user_id="user_123",
|
|
toolkits=["gmail", "slack"],
|
|
manage_connections={
|
|
"enable": True, # Allow in-chat authentication
|
|
"callback_url": "https://your-app.com/auth/callback", # Custom OAuth callback
|
|
"wait_for_connections": True # Wait for user to complete auth before proceeding
|
|
}
|
|
)
|
|
|
|
# With wait_for_connections: True
|
|
# Session creation waits until user completes authentication
|
|
# Perfect for workflows where connections are required upfront
|
|
```
|
|
|
|
## Configuration Options
|
|
|
|
```typescript
|
|
manageConnections: boolean | {
|
|
enable?: boolean; // Enable/disable connection management (default: true)
|
|
callbackUrl?: string; // Custom OAuth callback URL
|
|
waitForConnections?: boolean; // Block until connections complete (default: false)
|
|
}
|
|
```
|
|
|
|
## When to Use Each Setting
|
|
|
|
**`manageConnections: true` (Default)**
|
|
- Interactive chat applications
|
|
- User can authenticate on-demand
|
|
- Flexible, user-friendly experience
|
|
|
|
**`manageConnections: { waitForConnections: true }`**
|
|
- Workflows requiring connections upfront
|
|
- Onboarding flows
|
|
- Critical operations needing guaranteed access
|
|
|
|
**`manageConnections: false`**
|
|
- Backend automation (no user interaction)
|
|
- Pre-connected accounts only
|
|
- System-to-system integrations
|
|
- ⚠️ Tools WILL FAIL if connections are missing
|
|
|
|
## Key Insight
|
|
|
|
With `manageConnections: true`, **you never need to check connections before agent execution**. The agent intelligently prompts users for authentication only when needed. This creates the smoothest user experience.
|
|
|
|
## Reference
|
|
|
|
- [Connection Management](https://docs.composio.dev/sdk/typescript/api/tool-router#manageconnections)
|
|
- [Wait for Connections](https://docs.composio.dev/sdk/typescript/api/tool-router#wait-for-connections)
|