From dedffeb04647ce4eb4ad11e71bcf7d04d0bda7cf Mon Sep 17 00:00:00 2001 From: Diego Imbert Date: Wed, 30 Sep 2026 20:39:57 +0200 Subject: [PATCH] feat: deploy and discard a session's pipeline edits as one changes-list row Co-Authored-By: Claude Opus 5.5 (1M context) --- .../AssetGraph/PipelineDeployErrors.svelte | 49 ++++ .../PipelineDeployTriggersModal.svelte | 47 ++++ .../AssetGraph/PipelineGraphEditor.svelte | 8 +- .../AssetGraph/pipelineDeploy.svelte.ts | 205 ++++++++++++++ .../copilot/chat/pipeline/core.test.ts | 8 +- .../components/copilot/chat/pipeline/core.ts | 12 +- .../sessions/PipelineEditorView.svelte | 129 ++++++++- .../sessions/SessionChangesBar.svelte | 9 +- .../sessions/SessionDiffDrawer.svelte | 9 +- .../sessions/modifiedItemsMask.test.ts | 7 + .../components/sessions/modifiedItemsMask.ts | 10 + .../sessions/sessionDeployModel.svelte.ts | 35 ++- .../sessions/sessionRuntime.svelte.ts | 74 +++++ frontend/src/lib/pipelinePaths.ts | 5 + frontend/src/lib/utils_workspace_deploy.ts | 3 +- .../(logged)/pipeline/[folder]/+page.svelte | 259 ++---------------- 16 files changed, 616 insertions(+), 253 deletions(-) create mode 100644 frontend/src/lib/components/assets/AssetGraph/PipelineDeployErrors.svelte create mode 100644 frontend/src/lib/components/assets/AssetGraph/PipelineDeployTriggersModal.svelte create mode 100644 frontend/src/lib/components/assets/AssetGraph/pipelineDeploy.svelte.ts diff --git a/frontend/src/lib/components/assets/AssetGraph/PipelineDeployErrors.svelte b/frontend/src/lib/components/assets/AssetGraph/PipelineDeployErrors.svelte new file mode 100644 index 0000000000..6206ebdf33 --- /dev/null +++ b/frontend/src/lib/components/assets/AssetGraph/PipelineDeployErrors.svelte @@ -0,0 +1,49 @@ + + + + {#snippet trigger()} + + {/snippet} + {#snippet content()} +
+ Save errors +
+ {#each [...errors.entries()] as [path, message] (path)} +
+ {path} + + {message} + +
+ {/each} +
+
+ {/snippet} +
diff --git a/frontend/src/lib/components/assets/AssetGraph/PipelineDeployTriggersModal.svelte b/frontend/src/lib/components/assets/AssetGraph/PipelineDeployTriggersModal.svelte new file mode 100644 index 0000000000..d96b758625 --- /dev/null +++ b/frontend/src/lib/components/assets/AssetGraph/PipelineDeployTriggersModal.svelte @@ -0,0 +1,47 @@ + + + +
+

+ {triggerDrafts.size === 1 + ? 'Saving the pipeline also creates this trigger. It starts running its script once deployed.' + : `Saving the pipeline also creates these ${triggerDrafts.size} triggers. They start running their scripts once deployed.`} +

+
    + {#each [...triggerDrafts] as [key, d] (key)} +
  • + {d.config.path} + + {d.kind}{#if d.kind === 'schedule'} + · {d.config.schedule} ({d.config.timezone}){/if} + → {d.config.script_path} + +
  • + {/each} +
+
+
diff --git a/frontend/src/lib/components/assets/AssetGraph/PipelineGraphEditor.svelte b/frontend/src/lib/components/assets/AssetGraph/PipelineGraphEditor.svelte index 83b098a6f7..8072e25ec1 100644 --- a/frontend/src/lib/components/assets/AssetGraph/PipelineGraphEditor.svelte +++ b/frontend/src/lib/components/assets/AssetGraph/PipelineGraphEditor.svelte @@ -1,6 +1,10 @@
@@ -272,6 +367,31 @@ f/{path} · data pipeline + {#if workspaceId} + + {/if} +
+ {#if deployErrors.size > 0} + + {/if} + {#if pendingCount > 0} + + {/if}
- - {#snippet trigger()} - - {/snippet} - {#snippet content()} -
- Save errors -
- {#each [...saveErrors.entries()] as [path, message]} -
- {path} - - {message} - -
- {/each} -
-
- {/snippet} -
+ {/if} {#if mode === 'edit' && pendingCount > 0}