diff --git a/web/src/app/workflows/[workflow_id]/page.tsx b/web/src/app/workflows/[workflow_id]/page.tsx
index 804b1e5..7ee0410 100644
--- a/web/src/app/workflows/[workflow_id]/page.tsx
+++ b/web/src/app/workflows/[workflow_id]/page.tsx
@@ -2,6 +2,7 @@ import { DeploymentsTable, RunsTable } from "../../../components/RunsTable";
import { findFirstTableWithVersion } from "../../../server/findFirstTableWithVersion";
import { MachinesWSMain } from "@/components/MachinesWS";
import {
+ CopyWorkflowVersion,
CreateDeploymentButton,
MachineSelect,
RunWorkflowButton,
@@ -45,6 +46,7 @@ export default async function Page({
+
diff --git a/web/src/components/CopyButton.tsx b/web/src/components/CopyButton.tsx
index a720583..ca0ea8c 100644
--- a/web/src/components/CopyButton.tsx
+++ b/web/src/components/CopyButton.tsx
@@ -21,4 +21,4 @@ export function CopyButton({
);
-}
\ No newline at end of file
+}
diff --git a/web/src/components/VersionSelect.tsx b/web/src/components/VersionSelect.tsx
index 6ee6093..2194c83 100644
--- a/web/src/components/VersionSelect.tsx
+++ b/web/src/components/VersionSelect.tsx
@@ -30,9 +30,10 @@ import { createRun } from "@/server/createRun";
import { createDeployments } from "@/server/curdDeploments";
import type { getMachines } from "@/server/curdMachine";
import type { findFirstTableWithVersion } from "@/server/findFirstTableWithVersion";
-import { MoreVertical, Play } from "lucide-react";
+import { Copy, MoreVertical, Play } from "lucide-react";
import { parseAsInteger, useQueryState } from "next-usequerystate";
import { useState } from "react";
+import { toast } from "sonner";
export function VersionSelect({
workflow,
@@ -208,6 +209,51 @@ export function CreateDeploymentButton({
);
}
+export function CopyWorkflowVersion({
+ workflow,
+}: {
+ workflow: Awaited>;
+}) {
+ const [version] = useQueryState("version", {
+ defaultValue: workflow?.versions[0].version ?? 1,
+ ...parseAsInteger,
+ });
+ const workflow_version = workflow?.versions.find(
+ (x) => x.version === version
+ );
+ return (
+
+
+
+
+
+ {
+ navigator.clipboard.writeText(
+ JSON.stringify(workflow_version?.workflow)
+ );
+ toast("Copied to clipboard");
+ }}
+ >
+ Copy (JSON)
+
+ {
+ navigator.clipboard.writeText(
+ JSON.stringify(workflow_version?.workflow_api)
+ );
+ toast("Copied to clipboard");
+ }}
+ >
+ Copy API (JSON)
+
+
+
+ );
+}
+
export function getWorkflowVersionFromVersionIndex(
workflow: Awaited>,
version: number