feat(server): enhance script execution and workflow management

- Introduced compileWorkflowScripts function to parse and validate workflow scripts, supporting both linear and DAG execution modes.
- Added runLinearSteps and runDagSteps functions for executing compiled workflows based on their structure.
- Updated createRegistry function to utilize the new workflow compilation and execution logic.
- Enhanced script sandbox with meta extraction and instantiation capabilities for better script management.
- Improved API endpoints to return script metadata and handle errors more effectively.
- Removed deprecated scripts and updated workflows to reflect new structure and functionality.
This commit is contained in:
2026-08-14 19:14:44 +07:00
parent ddff33cf49
commit 049f5c56e3
21 changed files with 809 additions and 87 deletions
+21 -8
View File
@@ -34,30 +34,42 @@ export function ScriptsPage() {
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th className="w-28" />
</tr>
</thead>
<tbody>
{scripts.map((s) => (
<tr key={s} className="hover">
{scripts.map((s) => {
const name = typeof s === "string" ? s : s.name;
const description = typeof s === "string" ? "" : s.meta?.description;
const metaError = typeof s === "string" ? null : s.metaError;
return (
<tr key={name} className="hover">
<td className="font-mono">
<Link className="link" to={`/scripts/${encodeURIComponent(s)}/edit`}>
{s}
<Link className="link" to={`/scripts/${encodeURIComponent(name)}/edit`}>
{name}
</Link>
</td>
<td className="max-w-xl truncate text-sm opacity-80">
{metaError ? (
<span className="text-error">{metaError}</span>
) : (
description || "—"
)}
</td>
<td className="text-right whitespace-nowrap">
<button
type="button"
className="btn btn-ghost btn-xs"
title="Dry run"
onClick={() =>
navigate(`/scripts/${encodeURIComponent(s)}/dry-run`)
navigate(`/scripts/${encodeURIComponent(name)}/dry-run`)
}
>
<LuPlay className="size-4" />
</button>
<Link
to={`/scripts/${encodeURIComponent(s)}/edit`}
to={`/scripts/${encodeURIComponent(name)}/edit`}
className="btn btn-ghost btn-xs"
title="Edit"
>
@@ -67,13 +79,14 @@ export function ScriptsPage() {
type="button"
className="btn btn-ghost btn-xs text-error"
title="Delete"
onClick={() => setConfirmDelete(s)}
onClick={() => setConfirmDelete(name)}
>
<LuTrash2 className="size-4" />
</button>
</td>
</tr>
))}
);
})}
</tbody>
</table>
</div>