ts/docs/internal/triggers.md
This document explains the internal implementation of the trigger system in the Composio SDK.
The trigger system is built on top of Pusher for real-time communication. The implementation consists of two main components:
packages/core/src/models/Triggers.ts)packages/core/src/services/pusher/Pusher.ts)The SDK uses Pusher as the underlying real-time communication infrastructure. When a client subscribes to triggers, the following process occurs:
sequenceDiagram
participant Client
participant SDK
participant Pusher
participant ComposioAPI
Client->>SDK: subscribe(callback, filters)
SDK->>ComposioAPI: Authenticate Pusher connection
ComposioAPI-->>SDK: Connection credentials
SDK->>Pusher: Connect & Subscribe to channel
Pusher-->>SDK: Connection established
loop Real-time Events
Pusher->>SDK: Trigger event
SDK->>SDK: Apply filters
SDK->>Client: Filtered event callback
end
The SDK interacts with the following Composio API endpoints for trigger management:
GET /api/v3/trigger_instances/active - List active triggersPOST /api/v3/trigger_instances/{slug} - Create/update trigger instance
toolkit_versions parameter to specify the toolkit version for the trigger instance (defaults to global configuration)PATCH /api/v3/trigger_instances/manage/{id} - Update trigger instanceDELETE /api/v3/trigger_instances/manage/{id} - Delete trigger instanceGET /api/v3/triggers/types - List trigger typesGET /api/v3/triggers/types/{slug} - Get trigger type detailsGET /api/v3/triggers/types/enum - Get trigger type enumsPOST /api/v3/internal/sdk/realtime/auth - Authenticate Pusher connectionGET /api/v3/internal/sdk/realtime/credentials - Necessary credentials to create pusher clientWhen a trigger event is received through Pusher, the SDK:
IncomingTriggerPayloadSchemaThe SDK supports filtering triggers based on:
Filters are applied in a compound manner - all specified filters must match for an event to be delivered.
The SDK implements robust error handling: