diff --git a/web/components/ui/Modal.tsx b/web/components/ui/Modal.tsx
new file mode 100644
index 0000000..df7e8d3
--- /dev/null
+++ b/web/components/ui/Modal.tsx
@@ -0,0 +1,45 @@
+"use client";
+
+import { useEffect } from "react";
+
+export function Modal({
+ open,
+ title,
+ onClose,
+ children,
+ wide,
+}: {
+ open: boolean;
+ title: string;
+ onClose: () => void;
+ children: React.ReactNode;
+ wide?: boolean;
+}) {
+ useEffect(() => {
+ if (!open) return;
+ const onKey = (e: KeyboardEvent) => e.key === "Escape" && onClose();
+ window.addEventListener("keydown", onKey);
+ return () => window.removeEventListener("keydown", onKey);
+ }, [open, onClose]);
+
+ if (!open) return null;
+
+ return (
+
+
+
+
+
{title}
+
+
+
{children}
+
+
+ );
+}
diff --git a/web/components/ui/index.ts b/web/components/ui/index.ts
index 7d3900e..a9ec029 100644
--- a/web/components/ui/index.ts
+++ b/web/components/ui/index.ts
@@ -2,3 +2,4 @@ export { Button } from "./Button";
export { Badge } from "./Badge";
export { Card, CardHeader, CardTitle } from "./Card";
export { Table, Thead, Tbody, Tr, Th, Td } from "./Table";
+export { Modal } from "./Modal";
diff --git a/web/lib/api.ts b/web/lib/api.ts
index e8cc3f7..6d13f38 100644
--- a/web/lib/api.ts
+++ b/web/lib/api.ts
@@ -132,6 +132,12 @@ export interface ServerWithKeys extends Server {
keys: (Assignment & { key: Key })[];
}
+export interface InputParam {
+ name: string;
+ default: string;
+ description: string;
+}
+
export interface WorkflowStep {
step_id: string;
name: string;
@@ -139,6 +145,7 @@ export interface WorkflowStep {
interpreter: "bash" | "powershell";
script: string;
declared_outputs: string[];
+ declared_inputs: InputParam[];
secret_refs: string[];
}
@@ -148,6 +155,7 @@ export interface WorkflowStepRef {
on_failure: "stop" | "continue" | "retry";
max_retries: number;
overrides?: { script?: string; secret_refs?: string[] };
+ inputs?: Record;
}
export interface Workflow {
diff --git a/web/tailwind.config.ts b/web/tailwind.config.ts
index 0ee67b8..000c73d 100644
--- a/web/tailwind.config.ts
+++ b/web/tailwind.config.ts
@@ -21,6 +21,10 @@ const config: Config = {
warning: "#f59e0b",
danger: "#ef4444",
"danger-hover": "#dc2626",
+ bash: "#3fb950",
+ pwsh: "#5b9bff",
+ signal: "#f5a524",
+ "signal-ink": "#241800",
},
},
},