Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
826 changes: 826 additions & 0 deletions CONTRIBUTING.md

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion biome.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
"!components/ui",
"!components/ai-elements",
"!lib/utils.ts",
"!hooks/use-mobile.ts"
"!hooks/use-mobile.ts",
"!plugins"
]
}
}
92 changes: 0 additions & 92 deletions components/settings/resend-settings.tsx

This file was deleted.

28 changes: 14 additions & 14 deletions components/workflow/utils/code-generators.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
*/

import conditionTemplate from "@/lib/codegen-templates/condition";
import createTicketTemplate from "@/lib/codegen-templates/create-ticket";
import databaseQueryTemplate from "@/lib/codegen-templates/database-query";
import firecrawlScrapeTemplate from "@/lib/codegen-templates/firecrawl-scrape";
import firecrawlSearchTemplate from "@/lib/codegen-templates/firecrawl-search";
import generateImageTemplate from "@/lib/codegen-templates/generate-image";
import generateTextTemplate from "@/lib/codegen-templates/generate-text";
import httpRequestTemplate from "@/lib/codegen-templates/http-request";
import sendEmailTemplate from "@/lib/codegen-templates/send-email";
import sendSlackMessageTemplate from "@/lib/codegen-templates/send-slack-message";
import { generateImageCodegenTemplate } from "@/plugins/ai-gateway/codegen/generate-image";
import { generateTextCodegenTemplate } from "@/plugins/ai-gateway/codegen/generate-text";
import { scrapeCodegenTemplate } from "@/plugins/firecrawl/codegen/scrape";
import { searchCodegenTemplate } from "@/plugins/firecrawl/codegen/search";
import { createTicketCodegenTemplate } from "@/plugins/linear/codegen/create-ticket";
import { sendEmailCodegenTemplate } from "@/plugins/resend/codegen/send-email";
import { sendSlackMessageCodegenTemplate } from "@/plugins/slack/codegen/send-slack-message";

// Generate code snippet for a single node
export const generateNodeCode = (node: {
Expand Down Expand Up @@ -64,26 +64,26 @@ export async function POST(request: NextRequest) {
// Map action types to templates
switch (actionType) {
case "Send Email":
return sendEmailTemplate;
return sendEmailCodegenTemplate;
case "Send Slack Message":
return sendSlackMessageTemplate;
return sendSlackMessageCodegenTemplate;
case "Create Ticket":
case "Create Linear Issue":
return createTicketTemplate;
return createTicketCodegenTemplate;
case "Generate Text":
return generateTextTemplate;
return generateTextCodegenTemplate;
case "Generate Image":
return generateImageTemplate;
return generateImageCodegenTemplate;
case "Database Query":
return databaseQueryTemplate;
case "HTTP Request":
return httpRequestTemplate;
case "Condition":
return conditionTemplate;
case "Scrape":
return firecrawlScrapeTemplate;
return scrapeCodegenTemplate;
case "Search":
return firecrawlSearchTemplate;
return searchCodegenTemplate;
default:
return `async function actionStep(input: Record<string, unknown>) {
"use step";
Expand Down
42 changes: 0 additions & 42 deletions lib/codegen-templates/firecrawl.ts

This file was deleted.

86 changes: 0 additions & 86 deletions lib/steps/firecrawl.ts

This file was deleted.

57 changes: 29 additions & 28 deletions lib/steps/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,17 @@
* without code generation or eval()
*/

import type { generateImageStep } from "../../plugins/ai-gateway/steps/generate-image/step";
import type { generateTextStep } from "../../plugins/ai-gateway/steps/generate-text/step";
import type { firecrawlScrapeStep } from "../../plugins/firecrawl/steps/scrape/step";
import type { firecrawlSearchStep } from "../../plugins/firecrawl/steps/search/step";
import type { createTicketStep } from "../../plugins/linear/steps/create-ticket/step";
import type { sendEmailStep } from "../../plugins/resend/steps/send-email/step";
import type { sendSlackMessageStep } from "../../plugins/slack/steps/send-slack-message/step";
import type { conditionStep } from "./condition";
import type { createTicketStep } from "./create-ticket";
import type { databaseQueryStep } from "./database-query";
import type { firecrawlScrapeStep, firecrawlSearchStep } from "./firecrawl";
import type { generateImageStep } from "./generate-image";
import type { generateTextStep } from "./generate-text";
import type { httpRequestStep } from "./http-request";
import type { logNodeCompleteStep, logNodeStartStep } from "./logging";
import type { sendEmailStep } from "./send-email";
import type { sendSlackMessageStep } from "./send-slack-message";

// Step function type
export type StepFunction = (input: Record<string, unknown>) => Promise<unknown>;
Expand All @@ -33,29 +34,29 @@ export const stepRegistry: Record<string, StepFunction> = {
input as Parameters<typeof conditionStep>[0]
),
"Send Email": async (input) =>
(await import("./send-email")).sendEmailStep(
(await import("../../plugins/resend/steps/send-email/step")).sendEmailStep(
input as Parameters<typeof sendEmailStep>[0]
),
"Send Slack Message": async (input) =>
(await import("./send-slack-message")).sendSlackMessageStep(
input as Parameters<typeof sendSlackMessageStep>[0]
),
(
await import("../../plugins/slack/steps/send-slack-message/step")
).sendSlackMessageStep(input as Parameters<typeof sendSlackMessageStep>[0]),
"Create Ticket": async (input) =>
(await import("./create-ticket")).createTicketStep(
input as Parameters<typeof createTicketStep>[0]
),
(
await import("../../plugins/linear/steps/create-ticket/step")
).createTicketStep(input as Parameters<typeof createTicketStep>[0]),
"Find Issues": async (input) =>
(await import("./create-ticket")).createTicketStep(
input as Parameters<typeof createTicketStep>[0]
), // TODO: Implement separate findIssuesStep
(
await import("../../plugins/linear/steps/create-ticket/step")
).createTicketStep(input as Parameters<typeof createTicketStep>[0]), // TODO: Implement separate findIssuesStep
"Generate Text": async (input) =>
(await import("./generate-text")).generateTextStep(
input as Parameters<typeof generateTextStep>[0]
),
(
await import("../../plugins/ai-gateway/steps/generate-text/step")
).generateTextStep(input as Parameters<typeof generateTextStep>[0]),
"Generate Image": async (input) =>
(await import("./generate-image")).generateImageStep(
input as Parameters<typeof generateImageStep>[0]
),
(
await import("../../plugins/ai-gateway/steps/generate-image/step")
).generateImageStep(input as Parameters<typeof generateImageStep>[0]),
"Log Node Start": async (input) =>
(await import("./logging")).logNodeStartStep(
input as Parameters<typeof logNodeStartStep>[0]
Expand All @@ -65,13 +66,13 @@ export const stepRegistry: Record<string, StepFunction> = {
input as Parameters<typeof logNodeCompleteStep>[0]
),
Scrape: async (input) =>
(await import("./firecrawl")).firecrawlScrapeStep(
input as Parameters<typeof firecrawlScrapeStep>[0]
),
(
await import("../../plugins/firecrawl/steps/scrape/step")
).firecrawlScrapeStep(input as Parameters<typeof firecrawlScrapeStep>[0]),
Search: async (input) =>
(await import("./firecrawl")).firecrawlSearchStep(
input as Parameters<typeof firecrawlSearchStep>[0]
),
(
await import("../../plugins/firecrawl/steps/search/step")
).firecrawlSearchStep(input as Parameters<typeof firecrawlSearchStep>[0]),
};

// Helper to check if a step exists
Expand Down
Loading