Integrate Composio for external tool access

Agents can now call external tools (GitHub, Slack, Gmail, etc.) via
Composio's managed API. A thin HTTP client calls the Composio REST API
directly — no heavy SDK dependency. External tools are loaded per-org
from composio_settings and merged with internal tools at run time. The
agent run loop routes composio_* tool calls to the Composio execution
endpoint while internal tools dispatch as before.

Includes: migration 043 for composio_settings table, IPC handler for
saving Composio API key and toolkit configuration, and the composio
client/bridge modules.
This commit is contained in:
ZacharyZhang-NY committed 2026-06-30 21:31:04 -04:00
1 parent 65c5bec9a3
commit 77f191fa25
12 files changed
+263 -10

No files matched your search

@@ -0,0 +1,5 @@
export interface SaveComposioSettingsInput {
orgId: string;
apiKey: string;
toolkits: string[];
}
@@ -7,3 +7,4 @@ export * from "./files";
export * from "./governance";
export * from "./collaboration";
export * from "./onboarding";
export * from "./composio";
@@ -63,6 +63,7 @@ import type {
RunTaskInput,
RevokeProviderCredentialInput,
SaveProviderCredentialInput,
SaveComposioSettingsInput,
SearchInput,
SendMessageInput,
SetActiveOrganizationInput,
@@ -172,6 +173,7 @@ export interface DesktopApi {
setLegalHoldState(input: SetLegalHoldStateInput): Promise<DesktopResult<AppSnapshot>>;
createRetentionFreeze(input: CreateRetentionFreezeInput): Promise<DesktopResult<AppSnapshot>>;
setRetentionFreezeState(input: SetRetentionFreezeStateInput): Promise<DesktopResult<AppSnapshot>>;
saveComposioSettings(input: SaveComposioSettingsInput): Promise<DesktopResult<AppSnapshot>>;
search(input: SearchInput): Promise<DesktopResult<SearchResultRecord[]>>;
subscribe(callback: (event: RendererEvent) => void): () => void;
platform: "win32" | "darwin" | "linux";
+1
View File
@@ -74,6 +74,7 @@ export const IPC_CHANNELS = {
deleteMeeting: "agentcompany:delete-meeting",
createSprint: "agentcompany:create-sprint",
deleteSprint: "agentcompany:delete-sprint",
saveComposioSettings: "agentcompany:save-composio-settings",
search: "agentcompany:search",
rendererEvent: "agentcompany:renderer-event",
windowMinimize: "agentcompany:window-minimize",