From 5675cda52b352fa850e2d7c661756b29fe4de3b7 Mon Sep 17 00:00:00 2001 From: Ramnique Singh <30795890+ramnique@users.noreply.github.com> Date: Mon, 18 Aug 2025 06:53:54 +0530 Subject: [PATCH] move composio lib location --- apps/rowboat/app/actions/composio.actions.ts | 8 +- apps/rowboat/app/lib/agent-tools.ts | 2 +- apps/rowboat/app/lib/copilot/copilot.ts | 2 +- .../tools/components/ComposioToolsPanel.tsx | 3 +- .../components/SelectComposioToolkit.tsx | 4 +- .../tools/components/ToolkitAuthModal.tsx | 5 +- .../tools/components/ToolkitCard.tsx | 2 +- .../tools/components/ToolsConfig.tsx | 2 +- .../components/ComposioTriggerTypesPanel.tsx | 2 +- .../workflow/components/TriggerConfigForm.tsx | 2 +- .../workflow/components/TriggersModal.tsx | 2 +- .../application}/lib/composio/composio.ts | 245 +----------------- .../src/application/lib/composio/types.ts | 243 +++++++++++++++++ ...te-composio-trigger-deployment.use-case.ts | 2 +- ...te-composio-trigger-deployment.use-case.ts | 2 +- .../list-composio-trigger-types.use-case.ts | 2 +- ...osio-managed-connected-account.use-case.ts | 5 +- ...reate-custom-connected-account.use-case.ts | 7 +- ...ete-composio-connected-account.use-case.ts | 6 +- .../projects/get-composio-toolkit.use-case.ts | 3 +- .../list-composio-toolkits.use-case.ts | 4 +- .../projects/list-composio-tools.use-case.ts | 4 +- .../sync-connected-account.use-case.ts | 3 +- ...io-managed-connected-account.controller.ts | 2 +- ...ate-custom-connected-account.controller.ts | 4 +- .../get-composio-toolkit.controller.ts | 2 +- .../list-composio-toolkits.controller.ts | 3 +- .../list-composio-tools.controller.ts | 3 +- 28 files changed, 303 insertions(+), 271 deletions(-) rename apps/rowboat/{app => src/application}/lib/composio/composio.ts (55%) create mode 100644 apps/rowboat/src/application/lib/composio/types.ts diff --git a/apps/rowboat/app/actions/composio.actions.ts b/apps/rowboat/app/actions/composio.actions.ts index e1359703..15411014 100644 --- a/apps/rowboat/app/actions/composio.actions.ts +++ b/apps/rowboat/app/actions/composio.actions.ts @@ -1,6 +1,12 @@ "use server"; import { z } from "zod"; -import { ZToolkit, ZGetToolkitResponse, ZTool, ZListResponse, ZCreateConnectedAccountResponse, ZAuthScheme, ZCredentials } from "@/app/lib/composio/composio"; +import { ZListResponse } from "@/src/application/lib/composio/types"; +import { ZCreateConnectedAccountResponse } from "@/src/application/lib/composio/types"; +import { ZCredentials } from "@/src/application/lib/composio/types"; +import { ZTool } from "@/src/application/lib/composio/types"; +import { ZGetToolkitResponse } from "@/src/application/lib/composio/types"; +import { ZToolkit } from "@/src/application/lib/composio/types"; +import { ZAuthScheme } from "@/src/application/lib/composio/types"; import { ComposioConnectedAccount } from "@/src/entities/models/project"; import { container } from "@/di/container"; import { ICreateComposioTriggerDeploymentController } from "@/src/interface-adapters/controllers/composio-trigger-deployments/create-composio-trigger-deployment.controller"; diff --git a/apps/rowboat/app/lib/agent-tools.ts b/apps/rowboat/app/lib/agent-tools.ts index d346b1cd..81eecf21 100644 --- a/apps/rowboat/app/lib/agent-tools.ts +++ b/apps/rowboat/app/lib/agent-tools.ts @@ -3,7 +3,7 @@ import { tool, Tool } from "@openai/agents"; import { createOpenAI } from "@ai-sdk/openai"; import { embed, generateText } from "ai"; import { z } from "zod"; -import { composio } from "./composio/composio"; +import { composio } from "../../src/application/lib/composio/composio"; import { SignJWT } from "jose"; import crypto from "crypto"; diff --git a/apps/rowboat/app/lib/copilot/copilot.ts b/apps/rowboat/app/lib/copilot/copilot.ts index 7eec120d..decfde1d 100644 --- a/apps/rowboat/app/lib/copilot/copilot.ts +++ b/apps/rowboat/app/lib/copilot/copilot.ts @@ -10,7 +10,7 @@ import { COPILOT_INSTRUCTIONS_MULTI_AGENT } from "./copilot_multi_agent"; import { COPILOT_MULTI_AGENT_EXAMPLE_1 } from "./example_multi_agent_1"; import { CURRENT_WORKFLOW_PROMPT } from "./current_workflow"; import { USE_COMPOSIO_TOOLS } from "../feature_flags"; -import { composio, getTool } from "../composio/composio"; +import { composio, getTool } from "../../../src/application/lib/composio/composio"; import { UsageTracker } from "../billing"; const PROVIDER_API_KEY = process.env.PROVIDER_API_KEY || process.env.OPENAI_API_KEY || ''; diff --git a/apps/rowboat/app/projects/[projectId]/tools/components/ComposioToolsPanel.tsx b/apps/rowboat/app/projects/[projectId]/tools/components/ComposioToolsPanel.tsx index 56c6eb61..ff5b8365 100644 --- a/apps/rowboat/app/projects/[projectId]/tools/components/ComposioToolsPanel.tsx +++ b/apps/rowboat/app/projects/[projectId]/tools/components/ComposioToolsPanel.tsx @@ -8,7 +8,8 @@ import { ChevronLeft, ChevronRight, Search, X } from 'lucide-react'; import { Workflow, WorkflowTool } from '@/app/lib/types/workflow_types'; import { listTools } from '@/app/actions/composio.actions'; import { z } from 'zod'; -import { ZTool, ZListResponse } from '@/app/lib/composio/composio'; +import { ZListResponse } from "@/src/application/lib/composio/types"; +import { ZTool } from "@/src/application/lib/composio/types"; import { SlidePanel } from '@/components/ui/slide-panel'; type ToolType = z.infer; diff --git a/apps/rowboat/app/projects/[projectId]/tools/components/SelectComposioToolkit.tsx b/apps/rowboat/app/projects/[projectId]/tools/components/SelectComposioToolkit.tsx index 97e9abcb..fa4fc41e 100644 --- a/apps/rowboat/app/projects/[projectId]/tools/components/SelectComposioToolkit.tsx +++ b/apps/rowboat/app/projects/[projectId]/tools/components/SelectComposioToolkit.tsx @@ -8,7 +8,9 @@ import clsx from 'clsx'; import { listToolkits } from '@/app/actions/composio.actions'; import { fetchProject } from '@/app/actions/project.actions'; import { z } from 'zod'; -import { ZToolkit, ZListResponse, ZTool } from '@/app/lib/composio/composio'; +import { ZListResponse } from "@/src/application/lib/composio/types"; +import { ZTool } from "@/src/application/lib/composio/types"; +import { ZToolkit } from "@/src/application/lib/composio/types"; import { Project } from "@/src/entities/models/project"; import { ToolkitCard } from './ToolkitCard'; import { Workflow } from '@/app/lib/types/workflow_types'; diff --git a/apps/rowboat/app/projects/[projectId]/tools/components/ToolkitAuthModal.tsx b/apps/rowboat/app/projects/[projectId]/tools/components/ToolkitAuthModal.tsx index 68f4bf79..d46bc58a 100644 --- a/apps/rowboat/app/projects/[projectId]/tools/components/ToolkitAuthModal.tsx +++ b/apps/rowboat/app/projects/[projectId]/tools/components/ToolkitAuthModal.tsx @@ -6,7 +6,10 @@ import { PictureImg } from '@/components/ui/picture-img'; import { Wrench, Shield, Key, Globe, ArrowLeft } from "lucide-react"; import { getToolkit, createComposioManagedOauth2ConnectedAccount, syncConnectedAccount, listToolkits, createCustomConnectedAccount } from '@/app/actions/composio.actions'; import { z } from 'zod'; -import { ZGetToolkitResponse, ZToolkit, ZComposioField, ZAuthScheme } from '@/app/lib/composio/composio'; +import { ZGetToolkitResponse } from "@/src/application/lib/composio/types"; +import { ZComposioField } from "@/src/application/lib/composio/types"; +import { ZToolkit } from "@/src/application/lib/composio/types"; +import { ZAuthScheme } from "@/src/application/lib/composio/types"; interface ToolkitAuthModalProps { isOpen: boolean; diff --git a/apps/rowboat/app/projects/[projectId]/tools/components/ToolkitCard.tsx b/apps/rowboat/app/projects/[projectId]/tools/components/ToolkitCard.tsx index 9b2b2a13..54c5adce 100644 --- a/apps/rowboat/app/projects/[projectId]/tools/components/ToolkitCard.tsx +++ b/apps/rowboat/app/projects/[projectId]/tools/components/ToolkitCard.tsx @@ -4,7 +4,7 @@ import { useCallback } from 'react'; import { PictureImg } from '@/components/ui/picture-img'; import clsx from 'clsx'; import { z } from 'zod'; -import { ZToolkit } from '@/app/lib/composio/composio'; +import { ZToolkit } from "@/src/application/lib/composio/types"; import { Chip } from '@heroui/react'; import { LinkIcon } from 'lucide-react'; import { Workflow } from '@/app/lib/types/workflow_types'; diff --git a/apps/rowboat/app/projects/[projectId]/tools/components/ToolsConfig.tsx b/apps/rowboat/app/projects/[projectId]/tools/components/ToolsConfig.tsx index ed8b141b..7e9d5c62 100644 --- a/apps/rowboat/app/projects/[projectId]/tools/components/ToolsConfig.tsx +++ b/apps/rowboat/app/projects/[projectId]/tools/components/ToolsConfig.tsx @@ -8,7 +8,7 @@ import { ComposioToolsPanel } from './ComposioToolsPanel'; import { AddWebhookTool } from './AddWebhookTool'; import type { Key } from 'react'; import { Workflow, WorkflowTool } from '@/app/lib/types/workflow_types'; -import { ZToolkit } from '@/app/lib/composio/composio'; +import { ZToolkit } from "@/src/application/lib/composio/types"; import { z } from 'zod'; interface ToolsConfigProps { diff --git a/apps/rowboat/app/projects/[projectId]/workflow/components/ComposioTriggerTypesPanel.tsx b/apps/rowboat/app/projects/[projectId]/workflow/components/ComposioTriggerTypesPanel.tsx index 3cd24787..3e906be7 100644 --- a/apps/rowboat/app/projects/[projectId]/workflow/components/ComposioTriggerTypesPanel.tsx +++ b/apps/rowboat/app/projects/[projectId]/workflow/components/ComposioTriggerTypesPanel.tsx @@ -6,7 +6,7 @@ import { ChevronLeft, ChevronRight, ZapIcon, ArrowLeft } from 'lucide-react'; import { z } from 'zod'; import { ComposioTriggerType } from '@/src/entities/models/composio-trigger-type'; import { listComposioTriggerTypes } from '@/app/actions/composio.actions'; -import { ZToolkit } from '@/app/lib/composio/composio'; +import { ZToolkit } from "@/src/application/lib/composio/types"; interface ComposioTriggerTypesPanelProps { toolkit: z.infer; diff --git a/apps/rowboat/app/projects/[projectId]/workflow/components/TriggerConfigForm.tsx b/apps/rowboat/app/projects/[projectId]/workflow/components/TriggerConfigForm.tsx index f261a9c3..22f7dba6 100644 --- a/apps/rowboat/app/projects/[projectId]/workflow/components/TriggerConfigForm.tsx +++ b/apps/rowboat/app/projects/[projectId]/workflow/components/TriggerConfigForm.tsx @@ -4,7 +4,7 @@ import React, { useState, useCallback } from 'react'; import { Button, Input, Card, CardBody, CardHeader } from '@heroui/react'; import { ArrowLeft, ZapIcon, CheckCircleIcon } from 'lucide-react'; import { z } from 'zod'; -import { ZToolkit } from '@/app/lib/composio/composio'; +import { ZToolkit } from "@/src/application/lib/composio/types"; import { ComposioTriggerType } from '@/src/entities/models/composio-trigger-type'; interface TriggerConfigFormProps { diff --git a/apps/rowboat/app/projects/[projectId]/workflow/components/TriggersModal.tsx b/apps/rowboat/app/projects/[projectId]/workflow/components/TriggersModal.tsx index 4e74b543..3ec1a906 100644 --- a/apps/rowboat/app/projects/[projectId]/workflow/components/TriggersModal.tsx +++ b/apps/rowboat/app/projects/[projectId]/workflow/components/TriggersModal.tsx @@ -11,7 +11,7 @@ import { SelectComposioToolkit } from '../../tools/components/SelectComposioTool import { ComposioTriggerTypesPanel } from './ComposioTriggerTypesPanel'; import { TriggerConfigForm } from './TriggerConfigForm'; import { ToolkitAuthModal } from '../../tools/components/ToolkitAuthModal'; -import { ZToolkit } from '@/app/lib/composio/composio'; +import { ZToolkit } from "@/src/application/lib/composio/types"; import { Project } from "@/src/entities/models/project"; interface TriggersModalProps { diff --git a/apps/rowboat/app/lib/composio/composio.ts b/apps/rowboat/src/application/lib/composio/composio.ts similarity index 55% rename from apps/rowboat/app/lib/composio/composio.ts rename to apps/rowboat/src/application/lib/composio/composio.ts index b3accc19..995100eb 100644 --- a/apps/rowboat/app/lib/composio/composio.ts +++ b/apps/rowboat/src/application/lib/composio/composio.ts @@ -1,6 +1,7 @@ import { z } from "zod"; -import { PrefixLogger } from "../utils"; +import { PrefixLogger } from "../../../../app/lib/utils"; import { Composio } from "@composio/core"; +import { ZAuthConfig, ZConnectedAccount, ZCreateAuthConfigRequest, ZCreateAuthConfigResponse, ZCreateConnectedAccountRequest, ZCreateConnectedAccountResponse, ZDeleteOperationResponse, ZErrorResponse, ZGetToolkitResponse, ZListResponse, ZTool, ZToolkit, ZTriggerType } from "./types"; const BASE_URL = 'https://backend.composio.dev/api/v3'; const COMPOSIO_API_KEY = process.env.COMPOSIO_API_KEY || "test"; @@ -8,248 +9,6 @@ export const composio = new Composio({ apiKey: COMPOSIO_API_KEY, }); -export const ZAuthScheme = z.enum([ - 'API_KEY', - 'BASIC', - 'BASIC_WITH_JWT', - 'BEARER_TOKEN', - 'BILLCOM_AUTH', - 'CALCOM_AUTH', - 'COMPOSIO_LINK', - 'GOOGLE_SERVICE_ACCOUNT', - 'NO_AUTH', - 'OAUTH1', - 'OAUTH2', -]); - -export const ZConnectedAccountStatus = z.enum([ - 'INITIALIZING', - 'INITIATED', - 'ACTIVE', - 'FAILED', - 'EXPIRED', - 'INACTIVE', -]); - -const ZToolkitMeta = z.object({ - description: z.string(), - logo: z.string(), - tools_count: z.number(), - triggers_count: z.number(), -}); - -export const ZToolkit = z.object({ - slug: z.string(), - name: z.string(), - meta: ZToolkitMeta, - no_auth: z.boolean(), - auth_schemes: z.array(ZAuthScheme), - composio_managed_auth_schemes: z.array(ZAuthScheme), -}); - -export const ZComposioField = z.object({ - name: z.string(), - displayName: z.string(), - type: z.string(), - description: z.string(), - required: z.boolean(), - default: z.string().nullable().optional(), -}); - -export const ZGetToolkitResponse = z.object({ - slug: z.string(), - name: z.string(), - composio_managed_auth_schemes: z.array(ZAuthScheme), - meta: ZToolkitMeta, - auth_config_details: z.array(z.object({ - name: z.string(), - mode: ZAuthScheme, - fields: z.object({ - auth_config_creation: z.object({ - required: z.array(ZComposioField), - optional: z.array(ZComposioField), - }), - connected_account_initiation: z.object({ - required: z.array(ZComposioField), - optional: z.array(ZComposioField), - }), - }) - })).nullable(), -}); - -export const ZTool = z.object({ - slug: z.string(), - name: z.string(), - description: z.string(), - toolkit: z.object({ - slug: z.string(), - name: z.string(), - logo: z.string(), - }), - input_parameters: z.object({ - type: z.literal('object'), - properties: z.record(z.string(), z.any()), - required: z.array(z.string()).optional(), - additionalProperties: z.boolean().optional(), - }), - no_auth: z.boolean(), -}); - -export const ZAuthConfig = z.object({ - id: z.string(), - is_composio_managed: z.boolean(), - auth_scheme: ZAuthScheme, -}); - -export const ZCredentials = z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])); - -export const ZCreateAuthConfigRequest = z.object({ - toolkit: z.object({ - slug: z.string(), - }), - auth_config: z.discriminatedUnion('type', [ - z.object({ - type: z.literal('use_composio_managed_auth'), - name: z.string().optional(), - credentials: ZCredentials.optional(), - restrict_to_following_tools: z.array(z.string()).optional(), - }), - z.object({ - type: z.literal('use_custom_auth'), - authScheme: ZAuthScheme, - credentials: ZCredentials, - name: z.string().optional(), - proxy_config: z.object({ - proxy_url: z.string(), - proxy_auth_key: z.string().optional(), - }).optional(), - restrict_to_following_tools: z.array(z.string()).optional(), - }), - ]).optional(), -}); - -/* -{ - "toolkit": { - "slug": "github" - }, - "auth_config": { - "id": "ac_ZiLwFAWuGA7G", - "auth_scheme": "OAUTH2", - "is_composio_managed": false, - "restrict_to_following_tools": [] - } -} -*/ -export const ZCreateAuthConfigResponse = z.object({ - toolkit: z.object({ - slug: z.string(), - }), - auth_config: ZAuthConfig, -}); - -const ZConnectionData = z.object({ - authScheme: ZAuthScheme, - val: z.record(z.string(), z.unknown()) - .and(z.object({ - status: ZConnectedAccountStatus, - })), -}); - -export const ZCreateConnectedAccountRequest = z.object({ - auth_config: z.object({ - id: z.string(), - }), - connection: z.object({ - state: ZConnectionData.optional(), - user_id: z.string().optional(), - callback_url: z.string().optional(), - }), -}); - -/* -{ - "id": "ca_vTkCeLZSGab-", - "connectionData": { - "authScheme": "OAUTH2", - "val": { - "status": "INITIATED", - "code_verifier": "cd0103c5d8836a387adab1635b65ff0d2f51f77a1a79b7ff", - "redirectUrl": "https://backend.composio.dev/api/v3/s/DbTOWAyR", - "callback_url": "https://backend.composio.dev/api/v1/auth-apps/add" - } - }, - "status": "INITIATED", - "redirect_url": "https://backend.composio.dev/api/v3/s/DbTOWAyR", - "redirect_uri": "https://backend.composio.dev/api/v3/s/DbTOWAyR", - "deprecated": { - "uuid": "fe66d24b-59d8-4abf-adb2-d8f74353da9e", - "authConfigUuid": "8c4d4c84-56e2-4a80-aa59-9e84503381d8" - } -} -*/ -export const ZCreateConnectedAccountResponse = z.object({ - id: z.string(), - connectionData: ZConnectionData, -}); - -export const ZConnectedAccount = z.object({ - id: z.string(), - toolkit: z.object({ - slug: z.string(), - }), - auth_config: z.object({ - id: z.string(), - is_composio_managed: z.boolean(), - is_disabled: z.boolean(), - }), - status: ZConnectedAccountStatus, -}); - -const ZErrorResponse = z.object({ - error: z.object({ - message: z.string(), - error_code: z.number(), - suggested_fix: z.string().nullable(), - errors: z.array(z.string()).nullable(), - }), -}); - -export const ZError = z.object({ - error: z.enum([ - 'CUSTOM_OAUTH2_CONFIG_REQUIRED', - ]), -}); - -export const ZDeleteOperationResponse = z.object({ - success: z.boolean(), -}); - -export const ZTriggerType = z.object({ - slug: z.string(), - name: z.string(), - description: z.string(), - toolkit: z.object({ - slug: z.string(), - name: z.string(), - logo: z.string(), - }), - config: z.object({ - type: z.literal('object'), - properties: z.record(z.string(), z.any()), - required: z.array(z.string()).optional(), - title: z.string().optional(), - }), -}); - -export const ZListResponse = (schema: T) => z.object({ - items: z.array(schema), - next_cursor: z.string().nullable(), - total_pages: z.number(), - current_page: z.number(), - total_items: z.number(), -}); - export async function composioApiCall( schema: T, url: string, diff --git a/apps/rowboat/src/application/lib/composio/types.ts b/apps/rowboat/src/application/lib/composio/types.ts new file mode 100644 index 00000000..e7c12279 --- /dev/null +++ b/apps/rowboat/src/application/lib/composio/types.ts @@ -0,0 +1,243 @@ +import { z } from "zod"; + +export const ZAuthScheme = z.enum([ + 'API_KEY', + 'BASIC', + 'BASIC_WITH_JWT', + 'BEARER_TOKEN', + 'BILLCOM_AUTH', + 'CALCOM_AUTH', + 'COMPOSIO_LINK', + 'GOOGLE_SERVICE_ACCOUNT', + 'NO_AUTH', + 'OAUTH1', + 'OAUTH2', +]); + +export const ZConnectedAccountStatus = z.enum([ + 'INITIALIZING', + 'INITIATED', + 'ACTIVE', + 'FAILED', + 'EXPIRED', + 'INACTIVE', +]); + +export const ZToolkitMeta = z.object({ + description: z.string(), + logo: z.string(), + tools_count: z.number(), + triggers_count: z.number(), +}); + +export const ZToolkit = z.object({ + slug: z.string(), + name: z.string(), + meta: ZToolkitMeta, + no_auth: z.boolean(), + auth_schemes: z.array(ZAuthScheme), + composio_managed_auth_schemes: z.array(ZAuthScheme), +}); + +export const ZComposioField = z.object({ + name: z.string(), + displayName: z.string(), + type: z.string(), + description: z.string(), + required: z.boolean(), + default: z.string().nullable().optional(), +}); + +export const ZGetToolkitResponse = z.object({ + slug: z.string(), + name: z.string(), + composio_managed_auth_schemes: z.array(ZAuthScheme), + meta: ZToolkitMeta, + auth_config_details: z.array(z.object({ + name: z.string(), + mode: ZAuthScheme, + fields: z.object({ + auth_config_creation: z.object({ + required: z.array(ZComposioField), + optional: z.array(ZComposioField), + }), + connected_account_initiation: z.object({ + required: z.array(ZComposioField), + optional: z.array(ZComposioField), + }), + }) + })).nullable(), +}); + +export const ZTool = z.object({ + slug: z.string(), + name: z.string(), + description: z.string(), + toolkit: z.object({ + slug: z.string(), + name: z.string(), + logo: z.string(), + }), + input_parameters: z.object({ + type: z.literal('object'), + properties: z.record(z.string(), z.any()), + required: z.array(z.string()).optional(), + additionalProperties: z.boolean().optional(), + }), + no_auth: z.boolean(), +}); + +export const ZAuthConfig = z.object({ + id: z.string(), + is_composio_managed: z.boolean(), + auth_scheme: ZAuthScheme, +}); + +export const ZCredentials = z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])); + +export const ZCreateAuthConfigRequest = z.object({ + toolkit: z.object({ + slug: z.string(), + }), + auth_config: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('use_composio_managed_auth'), + name: z.string().optional(), + credentials: ZCredentials.optional(), + restrict_to_following_tools: z.array(z.string()).optional(), + }), + z.object({ + type: z.literal('use_custom_auth'), + authScheme: ZAuthScheme, + credentials: ZCredentials, + name: z.string().optional(), + proxy_config: z.object({ + proxy_url: z.string(), + proxy_auth_key: z.string().optional(), + }).optional(), + restrict_to_following_tools: z.array(z.string()).optional(), + }), + ]).optional(), +}); + +/* +{ + "toolkit": { + "slug": "github" + }, + "auth_config": { + "id": "ac_ZiLwFAWuGA7G", + "auth_scheme": "OAUTH2", + "is_composio_managed": false, + "restrict_to_following_tools": [] + } +} +*/ +export const ZCreateAuthConfigResponse = z.object({ + toolkit: z.object({ + slug: z.string(), + }), + auth_config: ZAuthConfig, +}); + +export const ZConnectionData = z.object({ + authScheme: ZAuthScheme, + val: z.record(z.string(), z.unknown()) + .and(z.object({ + status: ZConnectedAccountStatus, + })), +}); + +export const ZCreateConnectedAccountRequest = z.object({ + auth_config: z.object({ + id: z.string(), + }), + connection: z.object({ + state: ZConnectionData.optional(), + user_id: z.string().optional(), + callback_url: z.string().optional(), + }), +}); + +/* +{ + "id": "ca_vTkCeLZSGab-", + "connectionData": { + "authScheme": "OAUTH2", + "val": { + "status": "INITIATED", + "code_verifier": "cd0103c5d8836a387adab1635b65ff0d2f51f77a1a79b7ff", + "redirectUrl": "https://backend.composio.dev/api/v3/s/DbTOWAyR", + "callback_url": "https://backend.composio.dev/api/v1/auth-apps/add" + } + }, + "status": "INITIATED", + "redirect_url": "https://backend.composio.dev/api/v3/s/DbTOWAyR", + "redirect_uri": "https://backend.composio.dev/api/v3/s/DbTOWAyR", + "deprecated": { + "uuid": "fe66d24b-59d8-4abf-adb2-d8f74353da9e", + "authConfigUuid": "8c4d4c84-56e2-4a80-aa59-9e84503381d8" + } +} +*/ +export const ZCreateConnectedAccountResponse = z.object({ + id: z.string(), + connectionData: ZConnectionData, +}); + +export const ZConnectedAccount = z.object({ + id: z.string(), + toolkit: z.object({ + slug: z.string(), + }), + auth_config: z.object({ + id: z.string(), + is_composio_managed: z.boolean(), + is_disabled: z.boolean(), + }), + status: ZConnectedAccountStatus, +}); + +export const ZErrorResponse = z.object({ + error: z.object({ + message: z.string(), + error_code: z.number(), + suggested_fix: z.string().nullable(), + errors: z.array(z.string()).nullable(), + }), +}); + +export const ZError = z.object({ + error: z.enum([ + 'CUSTOM_OAUTH2_CONFIG_REQUIRED', + ]), +}); + +export const ZDeleteOperationResponse = z.object({ + success: z.boolean(), +}); + +export const ZTriggerType = z.object({ + slug: z.string(), + name: z.string(), + description: z.string(), + toolkit: z.object({ + slug: z.string(), + name: z.string(), + logo: z.string(), + }), + config: z.object({ + type: z.literal('object'), + properties: z.record(z.string(), z.any()), + required: z.array(z.string()).optional(), + title: z.string().optional(), + }), +}); + +export const ZListResponse = (schema: T) => z.object({ + items: z.array(schema), + next_cursor: z.string().nullable(), + total_pages: z.number(), + current_page: z.number(), + total_items: z.number(), +}); \ No newline at end of file diff --git a/apps/rowboat/src/application/use-cases/composio-trigger-deployments/create-composio-trigger-deployment.use-case.ts b/apps/rowboat/src/application/use-cases/composio-trigger-deployments/create-composio-trigger-deployment.use-case.ts index 4088fd9b..57c804ee 100644 --- a/apps/rowboat/src/application/use-cases/composio-trigger-deployments/create-composio-trigger-deployment.use-case.ts +++ b/apps/rowboat/src/application/use-cases/composio-trigger-deployments/create-composio-trigger-deployment.use-case.ts @@ -4,7 +4,7 @@ import { IUsageQuotaPolicy } from '../../policies/usage-quota.policy.interface'; import { IProjectActionAuthorizationPolicy } from '../../policies/project-action-authorization.policy'; import { CreateDeploymentSchema, IComposioTriggerDeploymentsRepository } from '../../repositories/composio-trigger-deployments.repository.interface'; import { IProjectsRepository } from '../../repositories/projects.repository.interface'; -import { composio, getToolkit } from '../../../../app/lib/composio/composio'; +import { composio, getToolkit } from '../../lib/composio/composio'; import { ComposioTriggerDeployment } from '@/src/entities/models/composio-trigger-deployment'; const inputSchema = z.object({ diff --git a/apps/rowboat/src/application/use-cases/composio-trigger-deployments/delete-composio-trigger-deployment.use-case.ts b/apps/rowboat/src/application/use-cases/composio-trigger-deployments/delete-composio-trigger-deployment.use-case.ts index c854d60b..f3d998f2 100644 --- a/apps/rowboat/src/application/use-cases/composio-trigger-deployments/delete-composio-trigger-deployment.use-case.ts +++ b/apps/rowboat/src/application/use-cases/composio-trigger-deployments/delete-composio-trigger-deployment.use-case.ts @@ -4,7 +4,7 @@ import { IUsageQuotaPolicy } from '../../policies/usage-quota.policy.interface'; import { IProjectActionAuthorizationPolicy } from '../../policies/project-action-authorization.policy'; import { IComposioTriggerDeploymentsRepository } from '../../repositories/composio-trigger-deployments.repository.interface'; import { IProjectsRepository } from '../../repositories/projects.repository.interface'; -import { composio } from '../../../../app/lib/composio/composio'; +import { composio } from '../../lib/composio/composio'; const inputSchema = z.object({ caller: z.enum(["user", "api"]), diff --git a/apps/rowboat/src/application/use-cases/composio-trigger-deployments/list-composio-trigger-types.use-case.ts b/apps/rowboat/src/application/use-cases/composio-trigger-deployments/list-composio-trigger-types.use-case.ts index f80a9f6d..cbad00aa 100644 --- a/apps/rowboat/src/application/use-cases/composio-trigger-deployments/list-composio-trigger-types.use-case.ts +++ b/apps/rowboat/src/application/use-cases/composio-trigger-deployments/list-composio-trigger-types.use-case.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { listTriggersTypes } from '../../../../app/lib/composio/composio'; +import { listTriggersTypes } from '../../lib/composio/composio'; import { PaginatedList } from '@/src/entities/common/paginated-list'; import { ComposioTriggerType } from '@/src/entities/models/composio-trigger-type'; diff --git a/apps/rowboat/src/application/use-cases/projects/create-composio-managed-connected-account.use-case.ts b/apps/rowboat/src/application/use-cases/projects/create-composio-managed-connected-account.use-case.ts index 77ad1201..4536c8fd 100644 --- a/apps/rowboat/src/application/use-cases/projects/create-composio-managed-connected-account.use-case.ts +++ b/apps/rowboat/src/application/use-cases/projects/create-composio-managed-connected-account.use-case.ts @@ -3,7 +3,10 @@ import { IProjectsRepository } from "../../repositories/projects.repository.inte import { IProjectActionAuthorizationPolicy } from "../../policies/project-action-authorization.policy"; import { IUsageQuotaPolicy } from "../../policies/usage-quota.policy.interface"; import { ComposioConnectedAccount } from "@/src/entities/models/project"; -import { ZAuthScheme, ZCreateAuthConfigResponse, ZCreateConnectedAccountResponse, listAuthConfigs, createAuthConfig, createConnectedAccount } from "@/app/lib/composio/composio"; +import { listAuthConfigs, createAuthConfig, createConnectedAccount } from "@/src/application/lib/composio/composio"; +import { ZCreateConnectedAccountResponse } from "../../lib/composio/types"; +import { ZCreateAuthConfigResponse } from "../../lib/composio/types"; +import { ZAuthScheme } from "../../lib/composio/types"; export const InputSchema = z.object({ caller: z.enum(["user", "api"]), diff --git a/apps/rowboat/src/application/use-cases/projects/create-custom-connected-account.use-case.ts b/apps/rowboat/src/application/use-cases/projects/create-custom-connected-account.use-case.ts index bdd9e043..da3110fa 100644 --- a/apps/rowboat/src/application/use-cases/projects/create-custom-connected-account.use-case.ts +++ b/apps/rowboat/src/application/use-cases/projects/create-custom-connected-account.use-case.ts @@ -3,7 +3,12 @@ import { IProjectsRepository } from "../../repositories/projects.repository.inte import { IProjectActionAuthorizationPolicy } from "../../policies/project-action-authorization.policy"; import { IUsageQuotaPolicy } from "../../policies/usage-quota.policy.interface"; import { ComposioConnectedAccount } from "@/src/entities/models/project"; -import { ZAuthScheme, ZCredentials, ZCreateAuthConfigResponse, ZCreateConnectedAccountResponse, ZCreateConnectedAccountRequest, createAuthConfig, createConnectedAccount } from "@/app/lib/composio/composio"; +import { createAuthConfig, createConnectedAccount } from "@/src/application/lib/composio/composio"; +import { ZCreateConnectedAccountResponse } from "../../lib/composio/types"; +import { ZCreateConnectedAccountRequest } from "../../lib/composio/types"; +import { ZCreateAuthConfigResponse } from "../../lib/composio/types"; +import { ZCredentials } from "../../lib/composio/types"; +import { ZAuthScheme } from "../../lib/composio/types"; export const InputSchema = z.object({ caller: z.enum(["user", "api"]), diff --git a/apps/rowboat/src/application/use-cases/projects/delete-composio-connected-account.use-case.ts b/apps/rowboat/src/application/use-cases/projects/delete-composio-connected-account.use-case.ts index 7b6608c5..cdc36f22 100644 --- a/apps/rowboat/src/application/use-cases/projects/delete-composio-connected-account.use-case.ts +++ b/apps/rowboat/src/application/use-cases/projects/delete-composio-connected-account.use-case.ts @@ -4,9 +4,9 @@ import { IProjectActionAuthorizationPolicy } from "../../policies/project-action import { IUsageQuotaPolicy } from "../../policies/usage-quota.policy.interface"; import { IComposioTriggerDeploymentsRepository } from "../../repositories/composio-trigger-deployments.repository.interface"; import { BadRequestError, NotFoundError } from "@/src/entities/errors/common"; -import { deleteConnectedAccount } from "../../../../app/lib/composio/composio"; -import { getAuthConfig } from "../../../../app/lib/composio/composio"; -import { deleteAuthConfig } from "../../../../app/lib/composio/composio"; +import { deleteConnectedAccount } from "../../lib/composio/composio"; +import { getAuthConfig } from "../../lib/composio/composio"; +import { deleteAuthConfig } from "../../lib/composio/composio"; const inputSchema = z.object({ caller: z.enum(["user", "api"]), diff --git a/apps/rowboat/src/application/use-cases/projects/get-composio-toolkit.use-case.ts b/apps/rowboat/src/application/use-cases/projects/get-composio-toolkit.use-case.ts index 100d8128..b7611069 100644 --- a/apps/rowboat/src/application/use-cases/projects/get-composio-toolkit.use-case.ts +++ b/apps/rowboat/src/application/use-cases/projects/get-composio-toolkit.use-case.ts @@ -1,7 +1,8 @@ import { z } from "zod"; import { IProjectActionAuthorizationPolicy } from "../../policies/project-action-authorization.policy"; import { IUsageQuotaPolicy } from "../../policies/usage-quota.policy.interface"; -import { ZGetToolkitResponse, getToolkit } from "@/app/lib/composio/composio"; +import { getToolkit } from "@/src/application/lib/composio/composio"; +import { ZGetToolkitResponse } from "../../lib/composio/types"; export const InputSchema = z.object({ caller: z.enum(["user", "api"]), diff --git a/apps/rowboat/src/application/use-cases/projects/list-composio-toolkits.use-case.ts b/apps/rowboat/src/application/use-cases/projects/list-composio-toolkits.use-case.ts index 7d847f11..becf43d7 100644 --- a/apps/rowboat/src/application/use-cases/projects/list-composio-toolkits.use-case.ts +++ b/apps/rowboat/src/application/use-cases/projects/list-composio-toolkits.use-case.ts @@ -1,7 +1,9 @@ import { z } from "zod"; import { IProjectActionAuthorizationPolicy } from "../../policies/project-action-authorization.policy"; import { IUsageQuotaPolicy } from "../../policies/usage-quota.policy.interface"; -import { ZToolkit, ZListResponse, listToolkits } from "@/app/lib/composio/composio"; +import { listToolkits } from "@/src/application/lib/composio/composio"; +import { ZListResponse } from "../../lib/composio/types"; +import { ZToolkit } from "../../lib/composio/types"; export const InputSchema = z.object({ caller: z.enum(["user", "api"]), diff --git a/apps/rowboat/src/application/use-cases/projects/list-composio-tools.use-case.ts b/apps/rowboat/src/application/use-cases/projects/list-composio-tools.use-case.ts index 0a076257..3a53992c 100644 --- a/apps/rowboat/src/application/use-cases/projects/list-composio-tools.use-case.ts +++ b/apps/rowboat/src/application/use-cases/projects/list-composio-tools.use-case.ts @@ -1,7 +1,9 @@ import { z } from "zod"; import { IProjectActionAuthorizationPolicy } from "../../policies/project-action-authorization.policy"; import { IUsageQuotaPolicy } from "../../policies/usage-quota.policy.interface"; -import { ZTool, ZListResponse, listTools } from "@/app/lib/composio/composio"; +import { listTools } from "@/src/application/lib/composio/composio"; +import { ZListResponse } from "../../lib/composio/types"; +import { ZTool } from "../../lib/composio/types"; export const InputSchema = z.object({ caller: z.enum(["user", "api"]), diff --git a/apps/rowboat/src/application/use-cases/projects/sync-connected-account.use-case.ts b/apps/rowboat/src/application/use-cases/projects/sync-connected-account.use-case.ts index 591ecb1a..c3d908fc 100644 --- a/apps/rowboat/src/application/use-cases/projects/sync-connected-account.use-case.ts +++ b/apps/rowboat/src/application/use-cases/projects/sync-connected-account.use-case.ts @@ -3,7 +3,8 @@ import { IProjectsRepository } from "../../repositories/projects.repository.inte import { IProjectActionAuthorizationPolicy } from "../../policies/project-action-authorization.policy"; import { IUsageQuotaPolicy } from "../../policies/usage-quota.policy.interface"; import { ComposioConnectedAccount } from "@/src/entities/models/project"; -import { ZConnectedAccount, getConnectedAccount } from "@/app/lib/composio/composio"; +import { getConnectedAccount } from "@/src/application/lib/composio/composio"; +import { ZConnectedAccount } from "../../lib/composio/types"; export const InputSchema = z.object({ caller: z.enum(["user", "api"]), diff --git a/apps/rowboat/src/interface-adapters/controllers/projects/create-composio-managed-connected-account.controller.ts b/apps/rowboat/src/interface-adapters/controllers/projects/create-composio-managed-connected-account.controller.ts index e01ecbce..4fe58833 100644 --- a/apps/rowboat/src/interface-adapters/controllers/projects/create-composio-managed-connected-account.controller.ts +++ b/apps/rowboat/src/interface-adapters/controllers/projects/create-composio-managed-connected-account.controller.ts @@ -1,7 +1,7 @@ import { BadRequestError } from "@/src/entities/errors/common"; import z from "zod"; import { ICreateComposioManagedConnectedAccountUseCase } from "@/src/application/use-cases/projects/create-composio-managed-connected-account.use-case"; -import { ZCreateConnectedAccountResponse } from "@/app/lib/composio/composio"; +import { ZCreateConnectedAccountResponse } from "@/src/application/lib/composio/types"; const inputSchema = z.object({ caller: z.enum(["user", "api"]), diff --git a/apps/rowboat/src/interface-adapters/controllers/projects/create-custom-connected-account.controller.ts b/apps/rowboat/src/interface-adapters/controllers/projects/create-custom-connected-account.controller.ts index 43f76805..3bf9003c 100644 --- a/apps/rowboat/src/interface-adapters/controllers/projects/create-custom-connected-account.controller.ts +++ b/apps/rowboat/src/interface-adapters/controllers/projects/create-custom-connected-account.controller.ts @@ -1,7 +1,9 @@ import { BadRequestError } from "@/src/entities/errors/common"; import z from "zod"; import { ICreateCustomConnectedAccountUseCase } from "@/src/application/use-cases/projects/create-custom-connected-account.use-case"; -import { ZAuthScheme, ZCredentials, ZCreateConnectedAccountResponse } from "@/app/lib/composio/composio"; +import { ZCreateConnectedAccountResponse } from "@/src/application/lib/composio/types"; +import { ZCredentials } from "@/src/application/lib/composio/types"; +import { ZAuthScheme } from "@/src/application/lib/composio/types"; const inputSchema = z.object({ caller: z.enum(["user", "api"]), diff --git a/apps/rowboat/src/interface-adapters/controllers/projects/get-composio-toolkit.controller.ts b/apps/rowboat/src/interface-adapters/controllers/projects/get-composio-toolkit.controller.ts index 46232431..9b5b0001 100644 --- a/apps/rowboat/src/interface-adapters/controllers/projects/get-composio-toolkit.controller.ts +++ b/apps/rowboat/src/interface-adapters/controllers/projects/get-composio-toolkit.controller.ts @@ -1,7 +1,7 @@ import { BadRequestError } from "@/src/entities/errors/common"; import z from "zod"; import { IGetComposioToolkitUseCase } from "@/src/application/use-cases/projects/get-composio-toolkit.use-case"; -import { ZGetToolkitResponse } from "@/app/lib/composio/composio"; +import { ZGetToolkitResponse } from "@/src/application/lib/composio/types"; const inputSchema = z.object({ caller: z.enum(["user", "api"]), diff --git a/apps/rowboat/src/interface-adapters/controllers/projects/list-composio-toolkits.controller.ts b/apps/rowboat/src/interface-adapters/controllers/projects/list-composio-toolkits.controller.ts index 89d6dee1..a4664d79 100644 --- a/apps/rowboat/src/interface-adapters/controllers/projects/list-composio-toolkits.controller.ts +++ b/apps/rowboat/src/interface-adapters/controllers/projects/list-composio-toolkits.controller.ts @@ -1,7 +1,8 @@ import { BadRequestError } from "@/src/entities/errors/common"; import z from "zod"; import { IListComposioToolkitsUseCase } from "@/src/application/use-cases/projects/list-composio-toolkits.use-case"; -import { ZToolkit, ZListResponse } from "@/app/lib/composio/composio"; +import { ZListResponse } from "@/src/application/lib/composio/types"; +import { ZToolkit } from "@/src/application/lib/composio/types"; const inputSchema = z.object({ caller: z.enum(["user", "api"]), diff --git a/apps/rowboat/src/interface-adapters/controllers/projects/list-composio-tools.controller.ts b/apps/rowboat/src/interface-adapters/controllers/projects/list-composio-tools.controller.ts index 286e7ccf..046117d3 100644 --- a/apps/rowboat/src/interface-adapters/controllers/projects/list-composio-tools.controller.ts +++ b/apps/rowboat/src/interface-adapters/controllers/projects/list-composio-tools.controller.ts @@ -1,7 +1,8 @@ import { BadRequestError } from "@/src/entities/errors/common"; import z from "zod"; import { IListComposioToolsUseCase } from "@/src/application/use-cases/projects/list-composio-tools.use-case"; -import { ZTool, ZListResponse } from "@/app/lib/composio/composio"; +import { ZListResponse } from "@/src/application/lib/composio/types"; +import { ZTool } from "@/src/application/lib/composio/types"; const inputSchema = z.object({ caller: z.enum(["user", "api"]),