+
+ {label}
+
+ {revision
+ ? `Revision ${revision.revision} · ${revision.content_hash.slice(0, 12)}`
+ : "Loading..."}
+
+
+ {revision ? JSON.stringify(revision.graph, null, 2) : ""}
+
+ );
+}
+
function WorkflowDefinitionSettingsDialog({
open,
settings,
diff --git a/webui/src/features/workflow/model.ts b/webui/src/features/workflow/model.ts
index 2035030..69de2b4 100644
--- a/webui/src/features/workflow/model.ts
+++ b/webui/src/features/workflow/model.ts
@@ -9,6 +9,7 @@ import type {
WorkflowGraphNode,
WorkflowExecutionMode,
WorkflowNodeType,
+ WorkflowStandardProvenance,
WorkflowStatus
} from "../../api/workflow";
@@ -32,6 +33,7 @@ export type WorkflowDraft = {
viewId: string;
viewRevisionId: string;
governance: WorkflowGovernance | null;
+ standard: WorkflowStandardProvenance | null;
};
const inputPort = [{
@@ -133,6 +135,7 @@ export function sampleWorkflowDraft(): WorkflowDraft {
viewId: "",
viewRevisionId: "",
governance: null,
+ standard: null,
graph: {
schema_version: 1,
nodes: [
@@ -247,7 +250,8 @@ export function draftFromDefinition(
executionMode: definition.revision.execution_mode,
viewId: definition.revision.view_id ?? "",
viewRevisionId: definition.revision.view_revision_id ?? "",
- governance: definition.governance
+ governance: definition.governance,
+ standard: definition.standard ?? null
};
}
diff --git a/webui/src/styles/workflow.css b/webui/src/styles/workflow.css
index 491d6d3..dacb806 100644
--- a/webui/src/styles/workflow.css
+++ b/webui/src/styles/workflow.css
@@ -13,6 +13,64 @@
width: min(620px, calc(100vw - 32px));
}
+.workflow-standard-comparison-dialog {
+ width: min(1180px, calc(100vw - 32px));
+ height: min(760px, calc(100vh - 32px));
+}
+
+.workflow-standard-comparison {
+ display: grid;
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ height: 100%;
+ min-height: 0;
+ gap: 10px;
+ overflow: hidden;
+}
+
+.workflow-standard-revision {
+ display: flex;
+ min-width: 0;
+ min-height: 0;
+ flex-direction: column;
+ border: var(--border-line);
+ border-radius: var(--radius-sm);
+ background: var(--panel-soft);
+ overflow: hidden;
+}
+
+.workflow-standard-revision header {
+ display: grid;
+ gap: 3px;
+ padding: 10px;
+ border-bottom: var(--border-line);
+}
+
+.workflow-standard-revision small {
+ color: var(--muted);
+ font-size: 11px;
+}
+
+.workflow-standard-revision pre {
+ min-height: 0;
+ flex: 1 1 auto;
+ margin: 0;
+ padding: 10px;
+ overflow: auto;
+ font-size: 11px;
+ white-space: pre;
+}
+
+@media (max-width: 900px) {
+ .workflow-standard-comparison {
+ grid-template-columns: 1fr;
+ overflow: auto;
+ }
+
+ .workflow-standard-revision {
+ min-height: 260px;
+ }
+}
+
.workflow-definition-fields {
display: grid;
gap: 12px;