+
+
+
+
+ {step.action === "send_sms" && (
+
+ onChange({ ...step, to: e.target.value })}
+ placeholder="Recipient (or {{contact.phone}})"
+ />
+
+ )}
+ {step.action === "send_email" && (
+
+ onChange({ ...step, to: e.target.value })}
+ placeholder="Recipient (or {{contact.email}})"
+ />
+ onChange({ ...step, subject: e.target.value })}
+ placeholder="Subject"
+ />
+
+ )}
+ {step.action === "add_tag" && (
+
onChange({ ...step, tag: e.target.value })}
+ placeholder="tag-name"
+ />
+ )}
+ {step.action === "wait" && (
+
+
+ onChange({ ...step, minutes: Number(e.target.value) })
+ }
+ className="w-24"
+ />
+ minutes
+
+ )}
+ {step.action === "agent_task" && (
+
+ );
+}
diff --git a/apps/app/app/(app)/[slug]/workflows/page.tsx b/apps/app/app/(app)/[slug]/workflows/page.tsx
new file mode 100644
index 000000000..b560b6b6c
--- /dev/null
+++ b/apps/app/app/(app)/[slug]/workflows/page.tsx
@@ -0,0 +1,65 @@
+import type { Metadata } from "next";
+import { Suspense } from "react";
+import {
+ PageShell,
+ PageShellActions,
+ PageShellContent,
+ PageShellDescription,
+ PageShellHeader,
+ PageShellHeading,
+ PageShellLoading,
+ PageShellTitle,
+} from "@/components/page-shell";
+import { requireSession } from "@/lib/session";
+import { HydrateClient } from "@/lib/trpc/hydrate";
+import { getServerQueryClient, getServerTrpc } from "@/lib/trpc/server";
+import { CreateWorkflowSheet } from "./create-workflow-sheet";
+import { WorkflowsList } from "./workflows-list";
+
+export const metadata: Metadata = { title: "Workflows" };
+
+export default function WorkflowsPage() {
+ return (
+