mirror of
https://github.com/rowboatlabs/rowboat.git
synced 2026-05-09 07:12:39 +02:00
store friendly name in composio trigger deploys
This commit is contained in:
parent
eab27b1206
commit
63564810e8
7 changed files with 32 additions and 20 deletions
|
|
@ -135,7 +135,6 @@ export async function listComposioTriggerTypes(toolkitSlug: string, cursor?: str
|
|||
|
||||
export async function createComposioTriggerDeployment(request: {
|
||||
projectId: string,
|
||||
toolkitSlug: string,
|
||||
triggerTypeSlug: string,
|
||||
connectedAccountId: string,
|
||||
triggerConfig?: Record<string, unknown>,
|
||||
|
|
@ -146,9 +145,8 @@ export async function createComposioTriggerDeployment(request: {
|
|||
return await createComposioTriggerDeploymentController.execute({
|
||||
caller: 'user',
|
||||
userId: user._id,
|
||||
projectId: request.projectId,
|
||||
data: {
|
||||
projectId: request.projectId,
|
||||
toolkitSlug: request.toolkitSlug,
|
||||
triggerTypeSlug: request.triggerTypeSlug,
|
||||
connectedAccountId: request.connectedAccountId,
|
||||
triggerConfig: request.triggerConfig ?? {},
|
||||
|
|
|
|||
|
|
@ -199,7 +199,6 @@ export function TriggersTab({ projectId }: { projectId: string }) {
|
|||
// Create the trigger deployment
|
||||
await createComposioTriggerDeployment({
|
||||
projectId,
|
||||
toolkitSlug: selectedToolkit.slug,
|
||||
triggerTypeSlug: selectedTriggerType.slug,
|
||||
connectedAccountId,
|
||||
triggerConfig,
|
||||
|
|
|
|||
|
|
@ -212,4 +212,9 @@ export async function listTriggersTypes(toolkitSlug: string, cursor?: string): P
|
|||
|
||||
// fetch
|
||||
return composioApiCall(ZListResponse(ZTriggerType), url.toString());
|
||||
}
|
||||
|
||||
export async function getTriggersType(triggerTypeSlug: string): Promise<z.infer<typeof ZTriggerType>> {
|
||||
const url = new URL(`${BASE_URL}/triggers_types/${triggerTypeSlug}`);
|
||||
return composioApiCall(ZTriggerType, url.toString());
|
||||
}
|
||||
|
|
@ -14,6 +14,7 @@ export const CreateDeploymentSchema = ComposioTriggerDeployment
|
|||
toolkitSlug: true,
|
||||
logo: true,
|
||||
triggerTypeSlug: true,
|
||||
triggerTypeName: true,
|
||||
triggerConfig: true,
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -2,18 +2,20 @@ import { BadRequestError, NotFoundError } from '@/src/entities/errors/common';
|
|||
import { z } from "zod";
|
||||
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 { IComposioTriggerDeploymentsRepository } from '../../repositories/composio-trigger-deployments.repository.interface';
|
||||
import { IProjectsRepository } from '../../repositories/projects.repository.interface';
|
||||
import { composio, getToolkit } from '../../lib/composio/composio';
|
||||
import { composio, getTriggersType } from '../../lib/composio/composio';
|
||||
import { ComposioTriggerDeployment } from '@/src/entities/models/composio-trigger-deployment';
|
||||
|
||||
const inputSchema = z.object({
|
||||
caller: z.enum(["user", "api"]),
|
||||
userId: z.string().optional(),
|
||||
apiKey: z.string().optional(),
|
||||
data: CreateDeploymentSchema.omit({
|
||||
triggerId: true,
|
||||
logo: true,
|
||||
projectId: z.string(),
|
||||
data: ComposioTriggerDeployment.pick({
|
||||
triggerTypeSlug: true,
|
||||
connectedAccountId: true,
|
||||
triggerConfig: true,
|
||||
}),
|
||||
});
|
||||
|
||||
|
|
@ -46,7 +48,7 @@ export class CreateComposioTriggerDeploymentUseCase implements ICreateComposioTr
|
|||
|
||||
async execute(request: z.infer<typeof inputSchema>): Promise<z.infer<typeof ComposioTriggerDeployment>> {
|
||||
// extract projectid from conversation
|
||||
const { projectId } = request.data;
|
||||
const { projectId } = request;
|
||||
|
||||
// authz check
|
||||
await this.projectActionAuthorizationPolicy.authorize({
|
||||
|
|
@ -59,8 +61,11 @@ export class CreateComposioTriggerDeploymentUseCase implements ICreateComposioTr
|
|||
// assert and consume quota
|
||||
await this.usageQuotaPolicy.assertAndConsume(projectId);
|
||||
|
||||
// get trigger type info
|
||||
const triggerType = await getTriggersType(request.data.triggerTypeSlug);
|
||||
|
||||
// get toolkit info
|
||||
const toolkit = await getToolkit(request.data.toolkitSlug);
|
||||
const toolkit = triggerType.toolkit;
|
||||
|
||||
// ensure that connected account exists on project
|
||||
const project = await this.projectsRepository.fetch(projectId);
|
||||
|
|
@ -69,7 +74,7 @@ export class CreateComposioTriggerDeploymentUseCase implements ICreateComposioTr
|
|||
}
|
||||
|
||||
// ensure connected account exists
|
||||
const account = project.composioConnectedAccounts?.[request.data.toolkitSlug];
|
||||
const account = project.composioConnectedAccounts?.[toolkit.slug];
|
||||
if (!account || account.id !== request.data.connectedAccountId) {
|
||||
throw new BadRequestError('Invalid connected account');
|
||||
}
|
||||
|
|
@ -81,7 +86,7 @@ export class CreateComposioTriggerDeploymentUseCase implements ICreateComposioTr
|
|||
}
|
||||
|
||||
// create trigger on composio
|
||||
const result = await composio.triggers.create(request.data.projectId, request.data.triggerTypeSlug, {
|
||||
const result = await composio.triggers.create(projectId, request.data.triggerTypeSlug, {
|
||||
connectedAccountId: request.data.connectedAccountId,
|
||||
triggerConfig: request.data.triggerConfig,
|
||||
});
|
||||
|
|
@ -89,11 +94,12 @@ export class CreateComposioTriggerDeploymentUseCase implements ICreateComposioTr
|
|||
// create trigger deployment in db
|
||||
return await this.composioTriggerDeploymentsRepository.create({
|
||||
projectId,
|
||||
toolkitSlug: request.data.toolkitSlug,
|
||||
logo: toolkit.meta.logo,
|
||||
toolkitSlug: toolkit.slug,
|
||||
logo: toolkit.logo,
|
||||
triggerId: result.triggerId,
|
||||
connectedAccountId: request.data.connectedAccountId,
|
||||
triggerTypeSlug: request.data.triggerTypeSlug,
|
||||
triggerTypeName: triggerType.name,
|
||||
triggerConfig: request.data.triggerConfig,
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ export const ComposioTriggerDeployment = z.object({
|
|||
triggerId: z.string(),
|
||||
toolkitSlug: z.string(),
|
||||
triggerTypeSlug: z.string(),
|
||||
triggerTypeName: z.string(),
|
||||
connectedAccountId: z.string(),
|
||||
triggerConfig: z.record(z.string(), z.unknown()),
|
||||
logo: z.string(),
|
||||
|
|
|
|||
|
|
@ -2,15 +2,16 @@ import { BadRequestError } from "@/src/entities/errors/common";
|
|||
import z from "zod";
|
||||
import { ICreateComposioTriggerDeploymentUseCase } from "@/src/application/use-cases/composio-trigger-deployments/create-composio-trigger-deployment.use-case";
|
||||
import { ComposioTriggerDeployment } from "@/src/entities/models/composio-trigger-deployment";
|
||||
import { CreateDeploymentSchema } from "@/src/application/repositories/composio-trigger-deployments.repository.interface";
|
||||
|
||||
const inputSchema = z.object({
|
||||
caller: z.enum(["user", "api"]),
|
||||
userId: z.string().optional(),
|
||||
apiKey: z.string().optional(),
|
||||
data: CreateDeploymentSchema.omit({
|
||||
triggerId: true,
|
||||
logo: true,
|
||||
projectId: z.string(),
|
||||
data: ComposioTriggerDeployment.pick({
|
||||
triggerTypeSlug: true,
|
||||
connectedAccountId: true,
|
||||
triggerConfig: true,
|
||||
}),
|
||||
});
|
||||
|
||||
|
|
@ -35,13 +36,14 @@ export class CreateComposioTriggerDeploymentController implements ICreateComposi
|
|||
if (!result.success) {
|
||||
throw new BadRequestError(`Invalid request: ${JSON.stringify(result.error)}`);
|
||||
}
|
||||
const { caller, userId, apiKey, data } = result.data;
|
||||
const { caller, userId, apiKey, projectId, data } = result.data;
|
||||
|
||||
// execute use case
|
||||
return await this.createComposioTriggerDeploymentUseCase.execute({
|
||||
caller,
|
||||
userId,
|
||||
apiKey,
|
||||
projectId,
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue