From b96d68f0ebfc381020c3f4b1ddb0c8a5c76e371a Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 27 May 2026 20:25:17 +0000 Subject: [PATCH] progress --- backend/add-pipeline-menu.png | Bin 0 -> 78336 bytes backend/after-create.png | Bin 0 -> 92988 bytes backend/downstream-menu.png | Bin 0 -> 113817 bytes .../windmill-parser/src/asset_parser.rs | 64 +- backend/pipeline-test.png | Bin 0 -> 33142 bytes backend/windmill-api-assets/src/lib.rs | 121 +++- backend/windmill-api-scripts/src/scripts.rs | 29 +- backend/windmill-common/src/assets.rs | 90 +-- docs/pipelines-vs-dbt.md | 374 ++++++++++++ frontend/src/lib/components/MoveDrawer.svelte | 73 +++ .../assets/AssetGraph/AddNode.svelte | 40 +- .../assets/AssetGraph/AssetGraphCanvas.svelte | 126 ++-- .../AssetGraph/AssetGraphDetailsPane.svelte | 21 +- .../AssetGraph/PipelineInsertMenu.svelte | 82 +-- .../assets/AssetGraph/TriggerNode.svelte | 148 ++++- .../AssetGraph/activeRunnables.svelte.ts | 31 +- .../parsePipelineAnnotations.test.ts | 6 +- .../AssetGraph/parsePipelineAnnotations.ts | 27 +- .../assets/AssetGraph/pipelineTemplates.ts | 21 +- .../assets/AssetGraph/resolveGraph.test.ts | 16 +- .../assets/AssetGraph/resolveGraph.ts | 82 ++- .../lib/components/assets/AssetGraph/types.ts | 16 +- .../PipelineLockedRunnableInfo.svelte | 26 + .../triggers/email/EmailTriggerEditor.svelte | 4 +- .../email/EmailTriggerEditorInner.svelte | 61 +- .../triggers/gcp/GcpTriggerEditor.svelte | 4 +- .../triggers/gcp/GcpTriggerEditorInner.svelte | 59 +- .../triggers/kafka/KafkaTriggerEditor.svelte | 4 +- .../kafka/KafkaTriggerEditorInner.svelte | 59 +- .../triggers/mqtt/MqttTriggerEditor.svelte | 4 +- .../mqtt/MqttTriggerEditorInner.svelte | 63 +- .../triggers/nats/NatsTriggerEditor.svelte | 4 +- .../nats/NatsTriggerEditorInner.svelte | 63 +- .../postgres/PostgresTriggerEditor.svelte | 4 +- .../PostgresTriggerEditorInner.svelte | 81 +-- .../triggers/schedules/ScheduleEditor.svelte | 9 +- .../schedules/ScheduleEditorInner.svelte | 21 +- .../triggers/sqs/SqsTriggerEditor.svelte | 4 +- .../triggers/sqs/SqsTriggerEditorInner.svelte | 63 +- .../(logged)/pipeline/[folder]/+page.svelte | 572 ++++++++++++++---- 40 files changed, 1744 insertions(+), 728 deletions(-) create mode 100644 backend/add-pipeline-menu.png create mode 100644 backend/after-create.png create mode 100644 backend/downstream-menu.png create mode 100644 backend/pipeline-test.png create mode 100644 docs/pipelines-vs-dbt.md create mode 100644 frontend/src/lib/components/triggers/PipelineLockedRunnableInfo.svelte diff --git a/backend/add-pipeline-menu.png b/backend/add-pipeline-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..706fed1ce219329de9b994cfc27d810d30b1aff5 GIT binary patch literal 78336 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 bnj9I)N*?ahTd2|O(eV@&ROO3hO<(^9KN)M~ literal 0 HcmV?d00001 diff --git a/backend/after-create.png b/backend/after-create.png new file mode 100644 index 0000000000000000000000000000000000000000..082c8634b858f6bb0918986f1a60472d4c510a53 GIT binary patch literal 92988 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�U%zlNzpO=?bWjBJq1Y97`%L9^; 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

    C#9mQ-3naC?GS=g>FH9_`w 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 z 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 literal 0 HcmV?d00001 diff --git a/backend/parsers/windmill-parser/src/asset_parser.rs b/backend/parsers/windmill-parser/src/asset_parser.rs index 39dbfad1cf..43a43d343e 100644 --- a/backend/parsers/windmill-parser/src/asset_parser.rs +++ b/backend/parsers/windmill-parser/src/asset_parser.rs @@ -123,17 +123,14 @@ pub enum TriggerSpec { #[serde(skip_serializing_if = "Option::is_none", default)] debounce: Option, }, - // Refresh on cron. The raw expression is passed through as-is so the - // existing schedule subsystem can validate it. - Schedule { - cron: String, - }, // `// on ` — marker-only declaration that this script wants to be // triggered by a native trigger of the given kind. No path: the binding // is the trigger row's own `script_path` field (set when the user creates - // the kafka/mqtt/… trigger in its dedicated UI). The graph endpoint - // discovers attached triggers by `WHERE script_path = ` and - // surfaces a "missing" placeholder when an annotation has no matching row. + // the kafka/mqtt/schedule/… trigger in its dedicated UI). The graph + // endpoint discovers attached triggers by `WHERE script_path = ` and surfaces a "missing" placeholder when an annotation has no + // matching row. + Schedule, Webhook, Email, Kafka, @@ -509,22 +506,6 @@ pub fn parse_pipeline_annotations(code: &str) -> PipelineAnnotations { continue; } - if let Some(after_kw) = rest.strip_prefix("schedule") { - if !after_kw.starts_with(|c: char| c.is_whitespace()) { - continue; - } - let after = after_kw.trim(); - if let Some(cron) = unquote(after) { - if !cron.trim().is_empty() { - let trig = TriggerSpec::Schedule { cron: cron.to_string() }; - if !out.triggers.contains(&trig) { - out.triggers.push(trig); - } - } - } - continue; - } - if let Some(after_kw) = rest.strip_prefix("partitioned") { if !after_kw.starts_with(|c: char| c.is_whitespace()) { continue; @@ -683,14 +664,13 @@ fn parse_partitioned_spec(s: &str) -> Option { // Native trigger keywords are *marker-only* — no trailing path. The actual // binding lives on the native trigger row (`script_path` column). Anything // trailing the keyword is rejected so the form stays unambiguous. -// -// Note: `on schedule "..."` is no longer accepted — schedule moved to a -// top-level `// schedule "..."` annotation. The `Schedule` TriggerSpec -// variant is still produced, just from a different keyword. fn parse_trigger_spec(s: &str) -> Option { // Marker-only native trigger keywords. The match table keeps the - // annotation set in lockstep with `TriggerSpec`. + // annotation set in lockstep with `TriggerSpec`. `schedule` is in here + // too — the cron lives on the schedule row the user creates separately; + // the annotation is just the binding declaration. const NATIVE_KINDS: &[(&str, TriggerSpec)] = &[ + ("schedule", TriggerSpec::Schedule), ("webhook", TriggerSpec::Webhook), ("email", TriggerSpec::Email), ("kafka", TriggerSpec::Kafka), @@ -751,28 +731,22 @@ mod pipeline_annotation_tests { } #[test] - fn top_level_schedule() { - let out = parse_pipeline_annotations("// schedule \"0 */6 * * *\""); + fn on_schedule_marker() { + // `// on schedule` is marker-only — the binding is the schedule row's + // own `script_path` field, just like kafka/mqtt/etc. + let out = parse_pipeline_annotations("// on schedule"); assert_eq!(out.triggers.len(), 1); - assert_eq!( - out.triggers[0], - TriggerSpec::Schedule { cron: "0 */6 * * *".to_string() } - ); + assert_eq!(out.triggers[0], TriggerSpec::Schedule); } #[test] - fn top_level_schedule_single_quotes_and_other_prefixes() { - let out = parse_pipeline_annotations("# schedule '0 0 * * *'\n-- schedule \"@daily\""); - assert_eq!(out.triggers.len(), 2); - } - - #[test] - fn rejects_on_schedule_form() { - // The old `on schedule "..."` form is no longer recognized — the - // `on` branch tries `schedule` as a native trigger kind and falls - // through. + fn rejects_schedule_with_trailing_content() { + // Marker-only — the old `// schedule ""` form is gone, and a + // trailing path/cron on the `on schedule` form is malformed. let out = parse_pipeline_annotations("// on schedule \"0 0 * * *\""); assert!(out.triggers.is_empty()); + let out = parse_pipeline_annotations("// schedule \"0 0 * * *\""); + assert!(out.triggers.is_empty()); } #[test] diff --git a/backend/pipeline-test.png b/backend/pipeline-test.png new file mode 100644 index 0000000000000000000000000000000000000000..49f36f79460c0e7cba12e432f02c3aa0f6d84343 GIT binary patch literal 33142 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

    0(#-j&l z)qNbT?n!KZB^Iijl<=l1H2d~4q_?O%i9u(HSVfce!t&4IM(CQpi0{i;3pTyI%GFLw zZ&312F6juwDRCmV_O$O2m% zS>w6xN-|a-&G0B4bT8)C6Pr~?asj$~Ya?HaLSxOlzN>!V#*Z-~!a5Ba^IOhqhaNup zOvlH^55`hyKcSgpW4`&us@Waz&A#K2q+1A8@*~mdsZx&^Zef=C!CG7YVZtF z!KyLZlT*4**jl4FS(BL;hMg{DMmm8-6Z~?l`HE*U>o4z(alp%blMub9c-W*kAxK%# z1+?D%J972hp$*yIJpvXRJKK3_2`S!?@00VlYWpe^GPdrEK@>wjjAmhYop4p;Vu%mB zB7T!FO>%+W&v)Nc{K@r14I=N*FL!$lW-EjP6xd?mQoe|3s2R-)A5fJR{1-{1O*(XB$$2vk# Xz2uPODLBP|{{<3avZ7h{bzl82Mb5X< literal 0 HcmV?d00001 diff --git a/backend/windmill-api-assets/src/lib.rs b/backend/windmill-api-assets/src/lib.rs index 417ef4a969..be685b2fe6 100644 --- a/backend/windmill-api-assets/src/lib.rs +++ b/backend/windmill-api-assets/src/lib.rs @@ -407,10 +407,10 @@ struct GraphEdge { } // Declared `// on ` trigger edge — the actual execution DAG. -// Asset / Schedule come from `script_trigger`; the seven native variants -// (Email/Kafka/…/Gcp) come from the per-kind trigger tables joined on -// `script_path`. Each native variant carries just the trigger row's path; -// the config (broker, topic, auth, …) lives in its own UI. +// Asset edges come from `script_trigger`; the eight native variants +// (Schedule/Email/Kafka/…/Gcp) come from the per-kind trigger tables joined +// on `script_path`. Each native variant carries just the trigger row's path; +// the config (cron, broker, topic, auth, …) lives in its own UI. // // `webhook` is parsed as an annotation marker but has no dedicated trigger // table — every script gets an implicit webhook endpoint — so no variant @@ -425,7 +425,7 @@ enum TriggerEdge { runnable_path: String, }, Schedule { - cron: String, + path: String, runnable_kind: AssetUsageKind, runnable_path: String, }, @@ -518,10 +518,10 @@ async fn asset_graph( .fetch_all(&mut *tx) .await?; - // Pipeline asset / schedule trigger edges, fetched separately so we can - // widen the runnable_set for trigger-only endpoints (e.g. an asset - // trigger whose asset has no usage in the pipeline yet). Native trigger - // kinds (kafka, mqtt, …) are *not* in `script_trigger` anymore — they're + // Pipeline asset trigger edges, fetched separately so we can widen the + // runnable_set for trigger-only endpoints (e.g. an asset trigger whose + // asset has no usage in the pipeline yet). Native trigger kinds + // (schedule, kafka, mqtt, …) are *not* in `script_trigger` — they're // discovered below by querying each native trigger table directly. let trigger_rows = sqlx::query!( r#" @@ -532,7 +532,7 @@ async fn asset_graph( trigger_ref AS "trigger_ref!" FROM script_trigger WHERE workspace_id = $1 - AND trigger_kind IN ('asset', 'schedule') + AND trigger_kind = 'asset' AND ($2::text IS NULL OR runnable_path LIKE $2) "#, &w_id, @@ -545,11 +545,17 @@ async fn asset_graph( // single-destination `script_path` directly, so we resolve attachment by // joining on that field rather than via `script_trigger`. UNION ALL keeps // it a single round trip; the `kind` column drives the TriggerEdge ctor - // below. + // below. `schedule` lives in the `schedule` table, which has its own + // shape (no workspace_id-only filter — it shares `is_flow` like the + // others), but the columns we need line up. let native_trigger_rows = sqlx::query!( r#" SELECT kind, path, script_path, is_flow FROM ( - SELECT 'email' AS kind, path, script_path, is_flow FROM email_trigger + SELECT 'schedule' AS kind, path, script_path, is_flow FROM schedule + WHERE workspace_id = $1 + AND script_path IS NOT NULL + UNION ALL + SELECT 'email', path, script_path, is_flow FROM email_trigger WHERE workspace_id = $1 UNION ALL SELECT 'kafka', path, script_path, is_flow FROM kafka_trigger @@ -595,10 +601,43 @@ async fn asset_graph( .fetch_all(&mut *tx) .await?; + // Existing scripts / flows in the workspace. Used to filter out + // orphan trigger rows whose `script_path` no longer resolves — those + // would otherwise be added to `runnable_set` below and surface as + // phantom "deployed" runnables on the canvas (matching what the user + // can deploy a new trigger against: nothing). + let existing_script_paths = sqlx::query_scalar!( + r#"SELECT path AS "path!" FROM script + WHERE workspace_id = $1 + AND archived = false + AND deleted = false"#, + &w_id, + ) + .fetch_all(&mut *tx) + .await?; + let existing_flow_paths = sqlx::query_scalar!( + r#"SELECT path AS "path!" FROM flow WHERE workspace_id = $1 AND archived = false"#, + &w_id, + ) + .fetch_all(&mut *tx) + .await?; + tx.commit().await?; let pipeline_member_script_paths: std::collections::HashSet = pipeline_member_paths.into_iter().map(|r| r.path).collect(); + let existing_script_paths: std::collections::HashSet = + existing_script_paths.into_iter().collect(); + let existing_flow_paths: std::collections::HashSet = + existing_flow_paths.into_iter().collect(); + let runnable_exists = |kind: AssetUsageKind, path: &str| match kind { + AssetUsageKind::Script => existing_script_paths.contains(path), + AssetUsageKind::Flow => existing_flow_paths.contains(path), + // `Job` is a runtime-detected ephemeral runnable (asset usage rows + // only), never a target of a stored trigger row. Treat as existing + // so we don't accidentally drop ephemeral lineage edges. + AssetUsageKind::Job => true, + }; let mut edges = Vec::with_capacity(rows.len()); let mut asset_set: std::collections::HashSet<(AssetKind, String)> = Default::default(); @@ -613,6 +652,14 @@ async fn asset_graph( } for r in rows { + // Drop asset usage rows whose runnable target was archived/deleted + // but whose row in `asset` is still around — those would otherwise + // surface as a phantom "deployed" runnable on the canvas with no + // way to interact with it, since the underlying script/flow no + // longer exists. + if !runnable_exists(r.usage_kind, &r.usage_path) { + continue; + } asset_set.insert((r.asset_kind, r.asset_path.clone())); runnable_set.insert((r.usage_kind, r.usage_path.clone())); edges.push(GraphEdge { @@ -627,37 +674,38 @@ async fn asset_graph( let mut triggers: Vec = Vec::with_capacity(trigger_rows.len() + native_trigger_rows.len()); for t in trigger_rows { + // Drop orphan asset-trigger rows — their target runnable no longer + // exists (script/flow archived or deleted, or was never deployed). + // Without this, an orphan row would surface as a phantom "deployed" + // runnable on the canvas (no `unsaved` flag, can't actually be + // run / re-targeted by a new trigger). + if !runnable_exists(t.runnable_kind, &t.runnable_path) { + continue; + } runnable_set.insert((t.runnable_kind, t.runnable_path.clone())); - match t.trigger_kind.as_str() { - "asset" => { - // trigger_ref is `` — parse back out so both - // endpoints match what the frontend uses for node ids. - if let Some((asset_kind, asset_path)) = parse_asset_trigger_ref(&t.trigger_ref) { - // Make sure the source asset has a node even if nothing - // reads/writes it in this folder. - asset_set.insert((asset_kind, asset_path.clone())); - triggers.push(TriggerEdge::Asset { - asset_kind, - asset_path, - runnable_kind: t.runnable_kind, - runnable_path: t.runnable_path, - }); - } - } - "schedule" => { - triggers.push(TriggerEdge::Schedule { - cron: t.trigger_ref, + if t.trigger_kind.as_str() == "asset" { + // trigger_ref is `` — parse back out so both + // endpoints match what the frontend uses for node ids. + if let Some((asset_kind, asset_path)) = parse_asset_trigger_ref(&t.trigger_ref) { + // Make sure the source asset has a node even if nothing + // reads/writes it in this folder. + asset_set.insert((asset_kind, asset_path.clone())); + triggers.push(TriggerEdge::Asset { + asset_kind, + asset_path, runnable_kind: t.runnable_kind, runnable_path: t.runnable_path, }); } - _ => {} // Native kinds come from per-kind trigger tables below. } + // Native kinds (schedule, kafka, mqtt, …) come from per-kind trigger + // tables below. } // Native trigger attachments — one TriggerEdge per row, the kind chosen // from the discriminator. Add the runnable to the set so a script with - // no asset edges but a kafka attachment still renders on the canvas. + // no asset edges but a kafka/schedule attachment still renders on the + // canvas. for t in native_trigger_rows { let kind = t.kind.unwrap_or_default(); let path = t.path.unwrap_or_default(); @@ -667,8 +715,15 @@ async fn asset_graph( } else { AssetUsageKind::Script }; + // Same orphan filter as the asset-trigger loop above — drop trigger + // rows whose target script/flow no longer exists so the graph + // doesn't synthesize a phantom deployed runnable. + if !runnable_exists(runnable_kind, &script_path) { + continue; + } runnable_set.insert((runnable_kind, script_path.clone())); let edge = match kind.as_str() { + "schedule" => TriggerEdge::Schedule { path, runnable_kind, runnable_path: script_path }, "email" => TriggerEdge::Email { path, runnable_kind, runnable_path: script_path }, "kafka" => TriggerEdge::Kafka { path, runnable_kind, runnable_path: script_path }, "mqtt" => TriggerEdge::Mqtt { path, runnable_kind, runnable_path: script_path }, diff --git a/backend/windmill-api-scripts/src/scripts.rs b/backend/windmill-api-scripts/src/scripts.rs index bd74e49b25..77f70d4762 100644 --- a/backend/windmill-api-scripts/src/scripts.rs +++ b/backend/windmill-api-scripts/src/scripts.rs @@ -45,7 +45,7 @@ use windmill_common::{ assets::{ clear_script_triggers, clear_static_asset_usage, clear_static_asset_usage_by_script_hash, delete_managed_pipeline_schedule, insert_script_trigger, insert_static_asset_usage, - parse_duration_secs, parse_pipeline_annotations, reconcile_pipeline_schedule, + parse_duration_secs, parse_pipeline_annotations, trigger_spec_to_row, AssetUsageKind, AssetWithAltAccessType, TriggerSpec, }, error::{self, to_anyhow}, @@ -1622,28 +1622,11 @@ async fn create_script_internal<'c>( .await?; } - // Phase 4 reconciliation: a `// schedule ""` annotation creates or - // updates a managed schedule row that fires this script on the given - // cron. Removing the annotation deletes the managed row. Manual - // schedules at the same path are untouched (see - // `reconcile_pipeline_schedule` for the conflict policy). First-write - // wins if multiple `// schedule` lines are declared. - let pipeline_cron: Option<&str> = pipeline_triggers.iter().find_map(|t| match t { - TriggerSpec::Schedule { cron } => Some(cron.as_str()), - _ => None, - }); - let permissioned_as_for_schedule = username_to_permissioned_as(&authed.username); - reconcile_pipeline_schedule( - &mut *tx, - &w_id, - &ns.path, - false, // is_flow — scripts only for now - &authed.email, - &authed.username, - &permissioned_as_for_schedule, - pipeline_cron, - ) - .await?; + // Schedule annotations (`// on schedule`) are marker-only — the binding + // lives on the schedule row's own `script_path` field, which the user + // creates separately via the schedule editor. No script-create-time + // reconciliation is needed (and there are no "managed" schedules to + // upsert/delete anymore). let permissioned_as = username_to_permissioned_as(&authed.username); if let Some(parent_hash) = ns.parent_hash { diff --git a/backend/windmill-common/src/assets.rs b/backend/windmill-common/src/assets.rs index e512776e03..8484c3226d 100644 --- a/backend/windmill-common/src/assets.rs +++ b/backend/windmill-common/src/assets.rs @@ -103,82 +103,13 @@ pub async fn clear_script_triggers<'e>( Ok(()) } -// Reconcile a managed schedule for a pipeline script based on its parsed -// `// schedule ""` annotation. Idempotent: each call brings the -// `schedule` row in line with the annotation as of *this* deploy. -// -// The schedule lives at the same path as the runnable. The `managed` flag -// disambiguates auto-created rows from user-managed ones — only managed -// rows are updated or removed by reconciliation; manually-created schedules -// at the same path are left alone (the annotation is silently ignored). -// -// Pass `cron = None` when the annotation has been removed → drops the -// managed row. Pass `cron = Some(...)` to upsert. -pub async fn reconcile_pipeline_schedule<'e>( - executor: impl PgExecutor<'e>, - workspace_id: &str, - runnable_path: &str, - is_flow: bool, - email: &str, - edited_by: &str, - permissioned_as: &str, - cron: Option<&str>, -) -> error::Result<()> { - match cron { - Some(cron) => { - // Upsert. ON CONFLICT only updates rows that are already managed - // (the WHERE clause guards against trampling user-created - // schedules that happen to live at the runnable's path). - sqlx::query!( - r#" - INSERT INTO schedule ( - workspace_id, path, schedule, timezone, edited_by, script_path, - is_flow, enabled, email, permissioned_as, - ws_error_handler_muted, no_flow_overlap, cron_version, - managed - ) - VALUES ($1, $2, $3, 'UTC', $4, $2, $5, true, $6, $7, false, false, 'v2', true) - ON CONFLICT (workspace_id, path) DO UPDATE - SET schedule = EXCLUDED.schedule, - edited_at = now(), - edited_by = EXCLUDED.edited_by, - managed = true - WHERE schedule.managed - OR schedule.script_path = EXCLUDED.script_path - "#, - workspace_id, - runnable_path, - cron, - edited_by, - is_flow, - email, - permissioned_as, - ) - .execute(executor) - .await?; - } - None => { - // Drop any prior managed schedule for this runnable. Manual - // schedules at the same path keep `managed = false` and are - // unaffected. - sqlx::query!( - r#"DELETE FROM schedule - WHERE workspace_id = $1 - AND script_path = $2 - AND managed"#, - workspace_id, - runnable_path, - ) - .execute(executor) - .await?; - } - } - Ok(()) -} - -// Drop the managed schedule (if any) for a runnable that's been deleted. -// Equivalent to `reconcile_pipeline_schedule(..., None)` but exposed -// separately so script-delete sites can call it without parsing annotations. +// Drop any managed schedule rows left over from an earlier release of the +// pipeline editor (when `// schedule ""` annotations auto-created a +// `managed = true` row on every deploy). Schedule annotations are now +// marker-only — the binding lives on the schedule row's own `script_path` +// field, same as kafka/mqtt/etc. — but this cleanup hook stays in place so +// script archive/delete still nukes the orphaned managed rows. Manual +// schedules at the same path keep `managed = false` and are untouched. pub async fn delete_managed_pipeline_schedule<'e>( executor: impl PgExecutor<'e>, workspace_id: &str, @@ -314,8 +245,11 @@ pub fn trigger_spec_to_row(spec: &TriggerSpec) -> Option<(ScriptTriggerKind, Str }; Some((ScriptTriggerKind::Asset, format!("{}{}", prefix, path))) } - TriggerSpec::Schedule { cron } => Some((ScriptTriggerKind::Schedule, cron.clone())), - TriggerSpec::Webhook + // Schedule joins the native-trigger family — no script_trigger row + // is inserted for the annotation. The binding lives on the schedule + // row's own `script_path` field, same as kafka/mqtt/etc. + TriggerSpec::Schedule + | TriggerSpec::Webhook | TriggerSpec::Email | TriggerSpec::Kafka | TriggerSpec::Mqtt diff --git a/docs/pipelines-vs-dbt.md b/docs/pipelines-vs-dbt.md new file mode 100644 index 0000000000..9ec6dd11d3 --- /dev/null +++ b/docs/pipelines-vs-dbt.md @@ -0,0 +1,374 @@ +# Pipelines vs. dbt + +Positioning analysis and architectural notes for the data-pipeline abstraction +currently landing on `feat/asset-graph-view`. Covers what we're building, how +it differs from dbt, which dbt features are real gaps vs. TODO, and a focused +deep-dive on incremental materialization — including a recommendation to +collapse it into partitioning rather than ship it as a separate concept. + +## What we're building + +Asset-centric, polyglot, annotation-driven, event-aware: + +- Assets (`datatable`, `ducklake`, `s3object`, `volume`) are graph nodes; + scripts are edges that produce/consume them. See + `backend/parsers/windmill-parser/src/asset_parser.rs:25`. +- Lineage comes from two sources: parsed annotations (`// pipeline`, + `// on datatable://...`, `// partitioned daily`, `// freshness 1h`, + `// trigger any`, `// debounce`, `// tag`, `// retry`) and body-inferred + reads/writes via the asset parser. +- Triggers are first-class: schedule, webhook, email, kafka, mqtt, nats, + postgres, sqs, gcp — all wired into the same DAG view + (`frontend/src/lib/components/assets/AssetGraph/types.ts:56`). +- Per-language scaffolds (DuckDB ATTACH, Postgres, Python, TS, Bash) generate + starter code per `PipelineOutputKind` (`datatable | ducklake | s3_parquet | + s3_object | none`). See + `frontend/src/lib/components/assets/AssetGraph/pipelineTemplates.ts:11`. + +## Differentiators vs. dbt + +1. **Event-driven + batch in one DAG.** dbt is batch-on-warehouse. Kafka → + Python normalize → DuckDB aggregate → Postgres view → Slack notify is + native here; in dbt land it's "use Airflow/Prefect for the non-SQL parts." +2. **Polyglot, not SQL+Jinja.** Python/TS/Bash/Duck/PG transformations live + in the same graph. No Jinja templating language; annotations are real + comments parsed strictly. +3. **Multi-substrate by design.** `datatable` (Postgres), `ducklake` + (lakehouse), `s3_parquet`, `s3_object` are peers. dbt's universe is + "tables in your warehouse." +4. **One platform.** Same runtime as workflows, internal apps, background + jobs, RBAC, secrets, schedules. dbt is single-purpose. +5. **Inferred lineage from code.** Body parser picks up `CREATE TABLE` / S3 + writes — annotations are not strictly required to get edges. dbt requires + explicit `{{ ref() }}` everywhere. + +## Where dbt wins today + +| Gap | Architectural blocker? | Verdict | +|---|---|---| +| Data tests | No | Pure TODO | +| Incremental materializations | No, but pick a philosophy | TODO with design decision | +| Column lineage + docs site | No | Pure TODO | +| Snapshots / SCD2 | No | New output kind | +| Selective execution grammar | No | UI/CLI surface | +| Schema contracts | No, but design metadata model | TODO with design work | +| Packages / community | Closed annotation parser starts to bind | Decide extensibility model | +| Semantic layer / metrics | No | Large additive scope | + +The three items where the current abstraction needs deliberate decisions +before more weight lands on it: **incremental philosophy, schema metadata, +and annotation extensibility**. The rest is execution. + +### 1. Data tests + +dbt: `unique`, `not_null`, `accepted_values`, custom generic tests, plus +singular tests. Run as `SELECT` statements that pass when they return 0 rows. + +Today: nothing. Annotation parser is the natural hook — +`// test unique col_name`, `// test not_null col_name`, +`// test ` for custom. Pipeline runtime already handles +failure propagation. Lowest-risk, highest-payoff item. + +### 2. Incremental materializations + +See [Incremental deep-dive](#incremental-deep-dive) below. + +### 3. Column lineage + docs + +dbt: SQL-AST parsing for column-level deps; `dbt docs serve` produces a +static lineage site with descriptions. + +Today: graph is asset-level. `SqlQueryDetails` in the parser +(`backend/parsers/windmill-parser/src/asset_parser.rs:44`) already has a +column map — the scaffolding exists. No `// column` annotation, no docs +surface. Pure TODO; no abstraction stands in the way. + +### 4. Snapshots / SCD2 + +dbt: `{% snapshot %}` blocks with `strategy='timestamp'` or `'check'`. +Today: nothing. Add as a new `PipelineOutputKind` + `// snapshot strategy= +timestamp updated_at=updated_at unique_key=id` annotation. Same shape as +other output kinds. + +### 5. Selective execution grammar + +dbt: `--select tag:nightly+ state:modified+ +my_model+`. +Today: `requestRunCascadeSignal` in the canvas, `// tag` annotation parsed. +Graph + tags + last-run state has all the inputs. UI/CLI surface, not +abstraction work. + +### 6. Schema contracts + +dbt: `contract: enforced` + `columns: [{name, data_type}]`. Compile-time +check that model output matches the declaration. + +Today: `// on datatable://users/active` is a string. Rename a column +upstream → downstream breaks at runtime, silently. + +This is the item where the current asset abstraction is thinnest. +To do contracts well: capture output schemas after a run (substrate-specific +DESCRIBE), persist them as asset metadata, validate consumer references at +save time. The asset-as-typed-node model accommodates it — but **where** +schemas live (asset row, sidecar?), **when** they're captured (post-run? +edit-time?), and **how** versioning works are non-trivial design choices. +Worth doing intentionally now while the asset surface is still young. + +### 7. Packages / community + +dbt: `dbt deps`, `dbt-utils`, `dbt-expectations`. Whole ecosystem on Jinja +macros. + +Today: closed-vocabulary annotation parser — `parsePipelineAnnotations` +hardcodes `pipeline`, `partitioned`, `freshness`, `trigger`, `debounce`, +`tag`, `retry`, `on`. No way for a package to register +`// test rows_between 100 1000000` or `// hook on_failure my_alert`. + +This is the one place the current abstraction starts to bind. Macros are +also dbt's biggest pain source — we don't have to replicate them. Possible +shapes: + +- **Hooks-as-scripts**: `// on_failure f/lib/alert`, `// pre_run f/lib/setup`. + Value is a script path. Stays inside the closed annotation set; new + hook *types* still require parser changes but third-party *behavior* + ships as scripts. +- **Test types as scripts**: a test is a script that returns 0/1, packaged + via the hub like anything else. +- **Materialization plugins**: harder; template-generator would need to be + extensible. + +Doing this *after* you've shipped 30 hardcoded annotations is much harder +than doing it now. + +### 8. Semantic layer / metrics + +dbt: `metrics:` blocks, MetricFlow, BI-tool query API. Large scope, +additive. Lowest priority of the eight. + +## Incremental deep-dive + +### How dbt incremental works + +```sql +-- models/marts/orders_daily.sql +{{ config( + materialized='incremental', + unique_key='order_id', + incremental_strategy='merge', + on_schema_change='append_new_columns' +) }} + +SELECT order_id, user_id, amount, created_at +FROM {{ ref('orders_raw') }} +{% if is_incremental() %} +WHERE created_at > (SELECT MAX(created_at) FROM {{ this }}) +{% endif %} +``` + +- **First run** (target doesn't exist): `CREATE TABLE orders_daily AS + SELECT ...` — full build, no WHERE. +- **Subsequent runs**: stage to temp table, then MERGE on `unique_key`. + +Knobs: `incremental_strategy` ∈ {`merge`, `append`, `delete+insert`, +`insert_overwrite`, `microbatch`}. `on_schema_change` ∈ {`fail`, `ignore`, +`append_new_columns`, `sync_all_columns`}. `--full-refresh` forces rebuild. + +Pain points: watermark + unique_key interaction is subtle (late-arriving +rows past the watermark are silently dropped); `on_schema_change` defaults +to `ignore` (silent column drop); Jinja `is_incremental()` runs at compile, +not runtime — debugging requires `dbt compile`; cross-warehouse MERGE +dialect is dbt's biggest internal complexity. + +### Where Windmill stands today + +- `// partitioned daily|hourly|weekly|monthly|dynamic key=...` parsed into + `PartitionSpec` at + `backend/parsers/windmill-parser/src/asset_parser.rs:172`. +- `// freshness 1h` parsed. +- Templates emit `CREATE TABLE IF NOT EXISTS ... AS SELECT *` — full + refresh, every run, no partition substitution. +- No `WM_PARTITION_*` context flowing into scripts. +- No materialized-partition state per asset. + +Annotations are present but metadata-only. Nothing actually executes +incrementally yet. + +### Path A — Literal templates ("script is the truth") + +Philosophy: WYSIWYG. Windmill never wraps. Templates scaffold boilerplate, +partition context is injected as bind / env vars, the user owns the SQL. + +```sql +-- pipeline +-- on datatable://prod/orders_raw +-- partitioned daily +-- unique_key order_id + +ATTACH 'datatable://prod' AS pg; + +CREATE TABLE IF NOT EXISTS pg.orders_daily ( + order_id BIGINT PRIMARY KEY, + user_id BIGINT, + amount NUMERIC, + created_at TIMESTAMPTZ +); + +CREATE OR REPLACE TEMP TABLE _stage AS +SELECT order_id, user_id, amount, created_at +FROM pg.orders_raw +WHERE created_at >= $WM_PARTITION_START + AND created_at < $WM_PARTITION_END; + +BEGIN; +DELETE FROM pg.orders_daily + WHERE created_at >= $WM_PARTITION_START + AND created_at < $WM_PARTITION_END; +INSERT INTO pg.orders_daily SELECT * FROM _stage; +COMMIT; +``` + +Runtime: resolve `(value, start, end)` from scheduler tick / trigger event +/ backfill range → bind as SQL params → execute script as-is → record +`(asset_path, partition_value)` on success. + +**Pros**: no compile step; backfill is trivial (idempotent DELETE+INSERT); +late-arriving data → just re-run the affected partition; no dialect +rewriting in core; Python/TS/Bash/SQL all fit the same model. + +**Cons**: boilerplate per script; materialization changes require script +edits; user owns dialect specifics. + +### Path B — dbt-style wrapping + +Philosophy: separate intent (SELECT) from execution (DDL). User declares +what; Windmill compiles to per-substrate DDL. + +User writes: + +```sql +SELECT order_id, user_id, amount, created_at +FROM pg.orders_raw +WHERE created_at >= $WM_PARTITION_START + AND created_at < $WM_PARTITION_END +``` + +Runtime parses, looks up target schema, wraps per output kind + +strategy + first-run/subsequent-run state. + +**Pros**: concise; materialization is a config flip; automatic schema-drift +handling; cross-substrate consistency. + +**Cons**: two-layer execution ("what ran?" needs a compile-output view); +SELECT-only restricts pre/post-statement work (dbt's answer: `pre_hook` / +`post_hook` — more surface); doesn't generalize to Python/TS (you end up +with two execution models); cross-substrate MERGE dialect is where dbt has +burned the most engineering — we'd inherit that tax forever; schema +introspection per substrate is its own project. + +### Path C — Hybrid (recommended) + +- **Literal-by-default**: scaffolds emit full DDL with `WM_PARTITION_*` + substitution. WYSIWYG for all languages. +- **Helper library** (e.g. `wmll.partition`, `wmll.datatable.upsert_partition`): + lifts boilerplate into library calls without hiding semantics — readable + source. +- **Opt-in wrapping** for single-SELECT SQL scripts via + `// materialized incremental wrap=true`. Limit to DuckDB first; add + others as needed. Always log the compiled SQL. +- **State + backfill UI**: persist materialized partitions per asset; UI + to backfill a range with concurrency cap. + +Ships A's 80% case first without committing to B's dialect-rewriting tax. +Wrapping becomes opt-in convenience for users who want dbt-style ergonomics. + +### Decisions either path forces + +1. **Partition window provenance.** Scheduler tick? Trigger event time + (Kafka `event_time` header)? Explicit backfill? Default = "now's bucket"? +2. **Surface.** Bind params (`$WM_PARTITION_START`), env vars + (`WM_PARTITION_START`), helper library — probably all three for + different languages, but pick canonical names. +3. **First-run bootstrap.** Template scaffolds `CREATE TABLE IF NOT + EXISTS` (A), or runtime detects "table missing → full refresh" (B). +4. **State tracking.** `materialized_partitions` keyed by `(workspace, + asset_kind, asset_path)`. Drives "run stale," backfill gap detection, + downstream waiting. +5. **Backfill execution.** N partitions → serial? Parallel with + concurrency cap per asset? +6. **Idempotency contract.** `// partitioned` should imply "re-running the + same partition is safe." Templates and helpers must enforce. + +## Partitioning vs. incremental: the reframing + +Partitioning covers ~80% of what dbt's incremental does. What it gives +for free: + +- Unit of work (one partition per run) +- Idempotency (DELETE-by-partition + INSERT is safe to rerun) +- State (track which partitions are materialized) +- Backfill (re-run a range) +- First-run vs. subsequent-run (every run is "process partition P" — no + special case) +- "Process only new data" (the partition window IS the filter) + +dbt itself has been migrating toward partition-first thinking via +`microbatch` strategy — essentially `incremental` with mandatory partition +key. + +### What partitioning alone doesn't address + +**Dedup within a partition by a separate key.** Example: partition by +`created_at` daily, but `orders_raw` is mutable — the same `order_id` can +appear multiple times in one partition (initial create, then amendments). +You want `orders_daily` to hold the latest version per `order_id`. + +DELETE-by-partition + INSERT works only if you reprocess from a +source-of-truth source. If you're consuming amendments and need dedup +*within* the slice, you need MERGE on `order_id`, not DELETE on partition. + +This is what dbt's `unique_key` does. Orthogonal to partitioning: +`partitioned` answers "which slice?"; `unique_key` answers "how do I dedup +inside the slice?" + +**Pure watermark-based incremental.** Mostly subsumed by +`// partitioned dynamic key=updated_at` — a partition becomes "everything +since the last seen value of `key`." + +### Recommended annotation shape + +Don't build "incremental" as a concept. Build: + +- `// partitioned ` — unit of work + state + backfill (already exists). +- `// unique_key ` — opt-in dedup-within-partition. Drives MERGE + template vs. DELETE+INSERT template. +- `// append` — opt-out of dedup entirely (INSERT-only, no DELETE). + +This collapses dbt's `materialized=incremental` + `incremental_strategy` + +`unique_key` into orthogonal annotations that compose. Partition-first is +the better mental model. + +Schema drift handling (`on_schema_change`) is genuinely separate — applies +to full-refresh too — and belongs with the schema-contracts work (gap #6). + +## First implementation slice + +Sequencing if we go with the hybrid + partition-first reframing: + +1. **Partition runtime context** — resolve `(value, start, end)` from + scheduler / trigger / backfill, surface as bind vars + env vars. No + materialization change yet. +2. **Helper library** — `wmll.partition.window()`, + `wmll.datatable.upsert_partition()` for Python/TS, SQL macros for + DuckDB/PG. +3. **Template updates** — when `// partitioned X` is present, scaffold + DELETE+INSERT (or MERGE when `// unique_key` also present, or INSERT + when `// append`). +4. **Materialized-partition state** — new table keyed by + `(workspace, asset_kind, asset_path, partition_value)`. Asset metadata + read API exposes it. +5. **Backfill UI** — date range picker on the pipeline folder page; fans + out runs with concurrency cap. +6. *Later, behind a flag:* opt-in wrap mode for single-SELECT DuckDB. + +Delivers dbt's pragmatic value (incremental, backfill, idempotent reruns) +without buying the compile-layer maintenance, and keeps Windmill +recognizably Windmill-shaped. diff --git a/frontend/src/lib/components/MoveDrawer.svelte b/frontend/src/lib/components/MoveDrawer.svelte index f661ae4817..212e45d58d 100644 --- a/frontend/src/lib/components/MoveDrawer.svelte +++ b/frontend/src/lib/components/MoveDrawer.svelte @@ -8,6 +8,7 @@ import { updateItemPathAndSummary, checkFlowOnBehalfOf } from './moveRenameManager' import Label from './Label.svelte' import TextInput from './text_input/TextInput.svelte' + import { FlowService, ScriptService, type TriggersCount } from '$lib/gen' const dispatch = createEventDispatcher() @@ -24,8 +25,46 @@ let own = $state(false) let onBehalfOfEmail = $state(undefined) + // Counts of triggers/schedules/etc. that reference this script or flow. + // The backend cascades `script_path` on rename across all trigger tables + // (see `windmill_common::triggers::update_triggers_script_path` invoked + // from script/flow create), so the user just needs to know what will be + // moved along — not opt in per-row. + let attachedTriggers = $state(undefined) let hasChanges = $derived((summary ?? '') !== initialSummary || dirtyPath) + // Flatten the count buckets into a uniform list for rendering. Order + // reflects user-facing prominence: schedules first (most common), then + // the seven native trigger kinds, then HTTP / webhook / websocket / + // email-default / cloud-service installations. Buckets with count 0 + // are dropped so the panel only mentions triggers that actually exist. + let attachedSummary = $derived.by>(() => { + const c = attachedTriggers + if (!c) return [] + const out: Array<{ label: string; count: number }> = [] + const push = (label: string, n: number | undefined) => { + if (typeof n === 'number' && n > 0) out.push({ label, count: n }) + } + push('schedule', c.schedule_count) + push('kafka', c.kafka_count) + push('mqtt', c.mqtt_count) + push('nats', c.nats_count) + push('postgres', c.postgres_count) + push('sqs', c.sqs_count) + push('gcp', c.gcp_count) + push('email', c.email_count) + push('http route', c.http_routes_count) + push('websocket', c.websocket_count) + push('webhook token', c.webhook_count) + push('default-email token', c.default_email_count) + push('nextcloud', c.nextcloud_count) + push('google', c.google_count) + push('github', c.github_count) + push('azure', c.azure_count) + return out + }) + let attachedTotal = $derived(attachedSummary.reduce((s, { count }) => s + count, 0)) + export async function openDrawer( initialPath_l: string, summary_l: string | undefined, @@ -35,6 +74,7 @@ path = undefined dirtyPath = false onBehalfOfEmail = undefined + attachedTriggers = undefined initialPath = initialPath_l initialSummary = summary_l ?? '' summary = summary_l @@ -43,6 +83,22 @@ if (kind === 'flow') { onBehalfOfEmail = await checkFlowOnBehalfOf($workspaceStore!, initialPath_l) } + if (kind === 'script' || kind === 'flow') { + void loadAttachedTriggers() + } + } + + async function loadAttachedTriggers() { + try { + const workspace = $workspaceStore! + attachedTriggers = + kind === 'flow' + ? await FlowService.getTriggersCountOfFlow({ workspace, path: initialPath }) + : await ScriptService.getTriggersCountOfScript({ workspace, path: initialPath }) + } catch { + // Non-fatal: the rename still works without the summary panel. + attachedTriggers = undefined + } } function loadOwner() { @@ -76,6 +132,23 @@ This flow will be redeployed on behalf of you ({$userStore?.email}) instead of {onBehalfOfEmail} {/if} + {#if (kind === 'script' || kind === 'flow') && attachedTotal > 0} + +

    + + {/if} {#if !hideTarget}
    -

    - Pick a script or flow to be triggered -

    -
    - + {#if fixedScriptPath != ''} + + {:else} +

    + Pick a script or flow to be triggered +

    +
    + - {#if emptyString(script_path) && is_flow === false} -
    - -
    - {/if} -
    + {#if emptyString(script_path) && is_flow === false} +
    + +
    + {/if} +
    + {/if}
    {/if} diff --git a/frontend/src/lib/components/triggers/schedules/ScheduleEditor.svelte b/frontend/src/lib/components/triggers/schedules/ScheduleEditor.svelte index c75e215e79..a0010829a5 100644 --- a/frontend/src/lib/components/triggers/schedules/ScheduleEditor.svelte +++ b/frontend/src/lib/components/triggers/schedules/ScheduleEditor.svelte @@ -5,20 +5,21 @@ let { onUpdate }: { onUpdate?: (path?: string) => void } = $props() let open = $state(false) - export async function openEdit(ePath: string, isFlow: boolean) { + export async function openEdit(ePath: string, isFlow: boolean, fixedScriptPath?: string) { open = true await tick() - drawer?.openEdit(ePath, isFlow) + drawer?.openEdit(ePath, isFlow, undefined, fixedScriptPath) } export async function openNew( is_flow: boolean, initial_script_path?: string, - schedule_path?: string + schedule_path?: string, + fixedScriptPath?: string ) { open = true await tick() - drawer?.openNew(is_flow, initial_script_path, undefined, schedule_path) + drawer?.openNew(is_flow, initial_script_path, undefined, schedule_path, fixedScriptPath) } let drawer: ScheduleEditorInner | undefined = $state() diff --git a/frontend/src/lib/components/triggers/schedules/ScheduleEditorInner.svelte b/frontend/src/lib/components/triggers/schedules/ScheduleEditorInner.svelte index b7652da98f..657f2147c8 100644 --- a/frontend/src/lib/components/triggers/schedules/ScheduleEditorInner.svelte +++ b/frontend/src/lib/components/triggers/schedules/ScheduleEditorInner.svelte @@ -8,6 +8,7 @@ import LabelsInput from '$lib/components/LabelsInput.svelte' import Required from '$lib/components/Required.svelte' import ScriptPicker from '$lib/components/ScriptPicker.svelte' + import PipelineLockedRunnableInfo from '$lib/components/triggers/PipelineLockedRunnableInfo.svelte' import ErrorOrRecoveryHandler from '$lib/components/ErrorOrRecoveryHandler.svelte' import Toggle from '$lib/components/Toggle.svelte' import Tooltip from '$lib/components/Tooltip.svelte' @@ -95,6 +96,10 @@ let dynamicSkipPath: string | undefined = $state(undefined) let script_path = $state('') let initialScriptPath = $state('') + // When non-empty, the drawer was opened from the pipeline editor for an + // already-bound script. We swap the runnable ScriptPicker for a read-only + // viewer so the trigger can't be silently reassigned off the pipeline. + let fixedScriptPath = $state('') let runnable: Script | Flow | undefined = $state() let args: Record = $state({}) let loading = $state(false) @@ -141,7 +146,12 @@ deployed: () => initialConfig }) - export async function openEdit(ePath: string, isFlow: boolean, defaultCfg?: Record) { + export async function openEdit( + ePath: string, + isFlow: boolean, + defaultCfg?: Record, + fixedScriptPath_?: string + ) { let loadingTimeout = setTimeout(() => { showLoading = true }, 100) // Do not show loading spinner for the first 100ms @@ -151,6 +161,7 @@ initialPath = ePath itemKind = isFlow ? 'flow' : 'script' path = defaultCfg?.path ?? ePath + fixedScriptPath = fixedScriptPath_ ?? '' await loadSchedule(defaultCfg) edit = true if (!defaultCfg) { @@ -276,7 +287,8 @@ nis_flow: boolean, initial_script_path?: string, defaultValues?: Schedule, - schedule_path?: string + schedule_path?: string, + fixedScriptPath_?: string ) { let loadingTimeout = setTimeout(() => { showLoading = true @@ -298,6 +310,7 @@ edit = false itemKind = (s?.is_flow ?? nis_flow) ? 'flow' : 'script' initialScriptPath = initial_script_path ?? '' + fixedScriptPath = fixedScriptPath_ ?? '' path = initNewPath ? '' : (defaultValues?.path ?? (trigger?.isPrimary ? initialScriptPath : '')) @@ -874,7 +887,9 @@
    {#if !hideTarget} - {#if !edit} + {#if fixedScriptPath != ''} + + {:else if !edit}

    Pick a script or flow to be triggered by the schedule

    diff --git a/frontend/src/lib/components/triggers/sqs/SqsTriggerEditor.svelte b/frontend/src/lib/components/triggers/sqs/SqsTriggerEditor.svelte index f60dfc83a5..e27f78e792 100644 --- a/frontend/src/lib/components/triggers/sqs/SqsTriggerEditor.svelte +++ b/frontend/src/lib/components/triggers/sqs/SqsTriggerEditor.svelte @@ -5,10 +5,10 @@ let { onUpdate }: { onUpdate?: (path?: string) => void } = $props() let open = $state(false) - export async function openEdit(ePath: string, isFlow: boolean) { + export async function openEdit(ePath: string, isFlow: boolean, fixedScriptPath?: string) { open = true await tick() - drawer?.openEdit(ePath, isFlow) + drawer?.openEdit(ePath, isFlow, undefined, fixedScriptPath) } export async function openNew( diff --git a/frontend/src/lib/components/triggers/sqs/SqsTriggerEditorInner.svelte b/frontend/src/lib/components/triggers/sqs/SqsTriggerEditorInner.svelte index 205db6f925..76f61f0429 100644 --- a/frontend/src/lib/components/triggers/sqs/SqsTriggerEditorInner.svelte +++ b/frontend/src/lib/components/triggers/sqs/SqsTriggerEditorInner.svelte @@ -18,6 +18,7 @@ import SqsTriggerEditorConfigSection from './SqsTriggerEditorConfigSection.svelte' import Section from '$lib/components/Section.svelte' import ScriptPicker from '$lib/components/ScriptPicker.svelte' + import PipelineLockedRunnableInfo from '$lib/components/triggers/PipelineLockedRunnableInfo.svelte' import Required from '$lib/components/Required.svelte' import { untrack, type Snippet } from 'svelte' import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte' @@ -125,7 +126,8 @@ export async function openEdit( ePath: string, isFlow: boolean, - defaultConfig?: Record + defaultConfig?: Record, + fixedScriptPath_?: string ) { let loadingTimeout = setTimeout(() => { showLoading = true @@ -137,6 +139,7 @@ itemKind = isFlow ? 'flow' : 'script' edit = true dirtyPath = false + fixedScriptPath = fixedScriptPath_ ?? '' await loadTrigger(defaultConfig) // Snapshot the *backend* config as the baseline before overlaying // any local autosave, so hasChanged / onConfigChange correctly @@ -449,34 +452,38 @@ {#if !hideTarget}
    -

    - Pick a script or flow to be triggered -

    -
    - - {#if emptyString(script_path)} - - {/if} -
    + initialPath={initialScriptPath} + kinds={['script']} + allowFlow={true} + bind:itemKind + bind:scriptPath={script_path} + allowRefresh={can_write} + allowEdit={!$userStore?.operator} + clearable + /> + {#if emptyString(script_path)} + + {/if} + + {/if}
    {/if} diff --git a/frontend/src/routes/(root)/(logged)/pipeline/[folder]/+page.svelte b/frontend/src/routes/(root)/(logged)/pipeline/[folder]/+page.svelte index 513234bf7a..d3de4e09fd 100644 --- a/frontend/src/routes/(root)/(logged)/pipeline/[folder]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/pipeline/[folder]/+page.svelte @@ -9,6 +9,7 @@ import PipelineEventLog from '$lib/components/assets/AssetGraph/PipelineEventLog.svelte' import AssetGraphDetailsPane from '$lib/components/assets/AssetGraph/AssetGraphDetailsPane.svelte' import PipelinePickerModal from '$lib/components/assets/AssetGraph/PipelinePickerModal.svelte' + import ConfirmationModal from '$lib/components/common/confirmationModal/ConfirmationModal.svelte' import { extractWrites, extractReads, @@ -45,9 +46,17 @@ Save } from 'lucide-svelte' import { + EmailTriggerService, + GcpTriggerService, JobService, + KafkaTriggerService, + MqttTriggerService, + NatsTriggerService, OpenAPI, + PostgresTriggerService, + ScheduleService, ScriptService, + SqsTriggerService, type AssetKind, type Script, type ScriptLang @@ -67,6 +76,7 @@ import SqsTriggerEditor from '$lib/components/triggers/sqs/SqsTriggerEditor.svelte' import GcpTriggerEditor from '$lib/components/triggers/gcp/GcpTriggerEditor.svelte' import EmailTriggerEditor from '$lib/components/triggers/email/EmailTriggerEditor.svelte' + import ScheduleEditor from '$lib/components/triggers/schedules/ScheduleEditor.svelte' // Variables and resources are declarative config, not pipeline assets — // they're hub-shaped (referenced by most runnables) and would swamp the @@ -91,19 +101,27 @@ // with a placeholder name. let pathPrefix = $derived(`f/${folder}/`) const DEFAULT_PATH_SUFFIX = 'new_pipeline_script' - // Default cron for top + pipeline scripts (pipeline roots). Every hour is - // a sane middle ground between batch and real-time; users edit the - // `// schedule "..."` line in the editor before saving if they want - // something different. Asset-triggered scripts don't get a schedule by - // default — they inherit their trigger from the upstream asset. - const DEFAULT_SCHEDULE_CRON = '0 * * * *' - // In-flight drafts keyed by script path. Multiple can coexist — clicking // + repeatedly creates additional drafts, each with its own random // output asset, and they all render on the graph simultaneously. // Saving removes a draft from the map; closing the pane keeps it so the // user can come back to it. + // Counter-based id source — sufficient for "stable across renames in + // this session"; doesn't need to survive a reload. (We have crypto. + // randomUUID() too but a short numeric id keeps localStorage tidy.) + let nextDraftLocalIdCounter = 0 + function newDraftLocalId(): string { + nextDraftLocalIdCounter += 1 + return `d${nextDraftLocalIdCounter}-${Date.now()}` + } + type Draft = { + // Stable per-draft identifier, generated on first create and + // preserved across renames. Used to track concurrent deploys (a + // fast double-rename otherwise fires two saves that each leave a + // persisted script behind — the latest deploy archives the prior + // one keyed on this id). + localId: string script: Script // Undefined when the user picked `outputKind === 'none'` — the draft // has no auto-generated output asset, so the graph overlay skips @@ -180,7 +198,12 @@ const loaded = new Map() for (const entry of state.drafts) { if (entry && typeof entry[0] === 'string' && entry[1]?.script) { - loaded.set(entry[0], entry[1] as Draft) + const d = entry[1] as Draft + // Backfill localId for state persisted by older builds. + if (typeof d.localId !== 'string' || d.localId === '') { + d.localId = newDraftLocalId() + } + loaded.set(entry[0], d) } } if (loaded.size > 0) drafts = loaded @@ -253,7 +276,6 @@ annotations: { inPipeline: false, triggerAssets: [], - schedules: [], nativeTriggers: [] } }) @@ -269,27 +291,79 @@ assets: AssetWithAltAccessType[] }>({ scriptPath: undefined, assets: [] }) - // Sticky cache of inferred body assets per script path — accumulates as - // the user opens scripts in this session, so once we've seen a write - // for `f/foo/bar`, the edge stays on the canvas even after the user - // selects a different node. Without this, switching selection would - // drop the previous script's edges back to whatever's in `base.edges` - // (often nothing for scripts whose deploy didn't extract body assets, - // e.g. when an older WASM was used at save time). - let inferredWritesByPath = $state>>( - new Map() - ) - // Same sticky cache for read usages (e.g. duckdb `read_parquet('s3://…')`, - // loadS3File). Keeps the asset → reader lineage edge live as the body is - // edited / across selection, instead of only after Save re-derives the - // persisted asset rows. - let inferredReadsByPath = $state>>(new Map()) + // Only-add cache of (script_path → body content) populated lazily by + // `bodyFetchEffect` for every script in the current folder. We never + // remove entries: stale keys (renamed-away, deleted) are simply ignored + // at read time because the derived maps below only iterate paths that + // appear in the current `g.runnables`. That self-cleaning property is + // the whole reason for the refactor — no rename/delete cleanup needed. + let bodiesByPath = $state>(new Map()) + // Sibling cache: the parsed asset usages from `inferAssets` (wasm), one + // pass per body. Same only-add semantics as `bodiesByPath`. + let inferredAssetsByPath = $state>(new Map()) + // Bumped on folder change so an in-flight prefetch sweep stops before + // writing into the new folder's state. + let bodyFetchGen = 0 - // Sticky cache of native trigger kinds declared via `// on kafka` etc. - // in each deployed script's source. Filled by the prefetch sweep below. - // resolveGraph uses this to flag scripts whose annotation has no - // matching trigger row — red placeholder on the canvas. - let annotatedNativeKindsByPath = $state>>(new Map()) + // Inferred write/read edges per script-in-graph. Derived from + // (a) the open pane's live overlay (`liveBodyAssets`) — current + // keystrokes for the script the user is editing right now, and + // (b) the prefetched assets cache for everyone else. + // Iteration is gated on `graphRes.current.runnables`, so a path that + // gets renamed / deleted disappears from the derived map as soon as + // the refetch lands — no manual rekey, no phantom edges. + let inferredWritesByPath = $derived.by(() => { + const out = new Map>() + const g = graphRes.current + if (!g) return out + const liveAssetsForPath = (path: string) => + liveBodyAssets.scriptPath === path ? liveBodyAssets.assets : inferredAssetsByPath.get(path) + for (const r of g.runnables) { + if (r.usage_kind !== 'script') continue + const assets = liveAssetsForPath(r.path) + if (!assets) continue + const w = extractWrites(assets) + if (w.length > 0) out.set(r.path, w) + } + return out + }) + let inferredReadsByPath = $derived.by(() => { + const out = new Map>() + const g = graphRes.current + if (!g) return out + const liveAssetsForPath = (path: string) => + liveBodyAssets.scriptPath === path ? liveBodyAssets.assets : inferredAssetsByPath.get(path) + for (const r of g.runnables) { + if (r.usage_kind !== 'script') continue + const assets = liveAssetsForPath(r.path) + if (!assets) continue + const reads = extractReads(assets) + if (reads.length > 0) out.set(r.path, reads) + } + return out + }) + // Same derived shape for `// on kafka` etc. annotations. Live buffer + // wins for the open script; everyone else is parsed from the + // prefetched body content. + let annotatedNativeKindsByPath = $derived.by(() => { + const out = new Map>() + const g = graphRes.current + if (!g) return out + const livePath = liveAnnotations.scriptPath + for (const r of g.runnables) { + if (r.usage_kind !== 'script') continue + let kinds: Set + if (r.path === livePath) { + kinds = new Set(liveAnnotations.annotations.nativeTriggers.map((n) => n.kind)) + } else { + const body = bodiesByPath.get(r.path) + if (!body) continue + kinds = new Set(parsePipelineAnnotations(body).nativeTriggers.map((n) => n.kind)) + } + if (kinds.size > 0) out.set(r.path, kinds) + } + return out + }) // Build a runnable Script from picked language / triggers / output. // Delegates to the shared template generator (pipelineTemplates.ts) so @@ -346,7 +420,7 @@ // the user picked `none`, `outputAsset` is undefined and the graph // overlay skips synthesizing a write edge. const next = new Map(drafts) - next.set(scriptPath, { script, outputAsset: out }) + next.set(scriptPath, { localId: newDraftLocalId(), script, outputAsset: out }) drafts = next activeDraftPath = scriptPath selection = undefined @@ -542,7 +616,17 @@ if (!savedPaths.includes(k)) next.set(k, v) } drafts = next + // If the open draft just got deployed, transfer the focus to + // its now-persisted runnable so the pane stays on the same + // script the user was editing — otherwise the pane closes, + // the canvas re-fits, and the user has to re-find their + // script after every save. if (activeDraftPath && savedPaths.includes(activeDraftPath)) { + selection = { + kind: 'runnable', + runnable_kind: 'script', + path: activeDraftPath + } activeDraftPath = undefined } await graphRes.refetch() @@ -563,8 +647,7 @@ const next = new Map(drafts) next.delete(path) drafts = next - if (activeDraftPath === path) activeDraftPath = undefined - clearSaveError(path) + forgetPath(path) } function clearSaveError(path: string) { @@ -574,6 +657,30 @@ saveErrors = next } + // "This path is gone" cleanup. The three big inferred-* / annotated-* + // maps used to live here too, but they're now derived from + // `bodiesByPath` × `g.runnables` — entries for missing paths drop out + // implicitly when `g.runnables` no longer mentions them, so the only + // things left to flush are the live overlays for the open pane + the + // selection + per-path save errors. `bodiesByPath` keeps its entry + // (only-add cache, harmless if stale). + function forgetPath(path: string) { + if (activeDraftPath === path) activeDraftPath = undefined + if (selection?.kind === 'runnable' && selection.path === path) { + selection = undefined + } + if (liveAnnotations.scriptPath === path) { + liveAnnotations = { + scriptPath: undefined, + annotations: { inPipeline: false, triggerAssets: [], nativeTriggers: [] } + } + } + if (liveBodyAssets.scriptPath === path) { + liveBodyAssets = { scriptPath: undefined, assets: [] } + } + clearSaveError(path) + } + // Rename a draft in place — re-key its entry in the drafts map and // repoint activeDraftPath. Returns false (or an error string) if the // new path collides with another draft so the dialog can keep itself @@ -596,6 +703,25 @@ } drafts = next if (activeDraftPath === oldPath) activeDraftPath = newPath + // Path-keyed live overlays: re-key for the renamed draft so the + // graph stays consistent between the moment we mutate `drafts` + // here and the next editor event that re-emits annotations / + // asset usages with the new path. Without this re-key, + // `resolveGraph` strips seeded triggers for the OLD path while + // re-applying live overlays against the same OLD path — leaving + // phantom edges that displace the + node off the top of the + // graph and shuffle the layout. + if (liveAnnotations.scriptPath === oldPath) { + liveAnnotations = { ...liveAnnotations, scriptPath: newPath } + } + if (liveBodyAssets.scriptPath === oldPath) { + liveBodyAssets = { ...liveBodyAssets, scriptPath: newPath } + } + // `inferredWritesByPath` / `inferredReadsByPath` / + // `annotatedNativeKindsByPath` are derived from `g.runnables` × + // the body caches, so a rename naturally re-derives them when the + // drafts loop in `resolveGraph` swaps to the new path — no + // per-mutation rekey needed. // Errors are keyed by path — re-key the entry so a previously // failed draft keeps its error visible against the new path // after rename. @@ -606,9 +732,122 @@ nextErrors.set(newPath, msg) saveErrors = nextErrors } + // Auto-deploy the rename. Without this, native triggers can't be + // attached to the renamed script (the trigger row's script_path + // needs to point at a real script) and the user has to remember + // a separate "save" step. Backend `update_triggers_script_path` + // already cascades the path change across every trigger table on + // script create, so any triggers previously attached to the old + // path follow the rename automatically. + void deployRenamedDraft(newPath) return true } + // Per-draft deploy queue. Each draft (keyed by stable `localId`) has at + // most one deploy in flight; concurrent renames append to a single + // `queuedPath` slot so we only ever fire one extra deploy at the + // latest target. `lastDeployedPath` lets the runner archive any + // intermediate path it deployed before the user's final rename + // settled — otherwise a double-rename leaves a phantom script at the + // intermediate path. + const deployQueue = new Map< + string, + { inflight: boolean; queuedPath: string | undefined; lastDeployedPath: string | undefined } + >() + + function deployRenamedDraft(path: string) { + const draft = drafts.get(path) + if (!draft) return + const localId = draft.localId + let state = deployQueue.get(localId) + if (state?.inflight) { + // Coalesce: only the latest target matters. The runner picks + // it up when the current deploy completes. + state.queuedPath = path + return + } + state = state ?? { inflight: false, queuedPath: undefined, lastDeployedPath: undefined } + state.inflight = true + state.queuedPath = undefined + deployQueue.set(localId, state) + void runDeployQueue(localId, path) + } + + async function runDeployQueue(localId: string, initialPath: string) { + let path = initialPath + const state = deployQueue.get(localId)! + try { + while (true) { + if (!$workspaceStore) break + const draft = drafts.get(path) + if (!draft) break + try { + await saveDraft(path, draft, $workspaceStore) + // Archive the previously-deployed intermediate path (if + // any) — a double-rename otherwise leaves it as an + // orphan script visible on the canvas as a "deployed" + // runnable that the user never intended to keep. + const prev = state.lastDeployedPath + if (prev && prev !== path) { + try { + await ScriptService.archiveScriptByPath({ + workspace: $workspaceStore, + path: prev + }) + } catch (archiveErr) { + // Non-fatal: surface a warning so the user + // knows to clean up manually. The fresh deploy + // at the new path still landed. + const msg = (archiveErr as any)?.body ?? (archiveErr as any)?.message ?? String(archiveErr) + sendUserToast( + `Renamed to "${path}" but couldn't archive the old "${prev}": ${msg}`, + true + ) + } + } + state.lastDeployedPath = path + // Drop the now-deployed draft from the local map only + // if no newer rename was queued during the save; if a + // queued path is waiting, the next loop iteration will + // pick it up and we keep the draft live. + if (!state.queuedPath) { + const nextDrafts = new Map(drafts) + nextDrafts.delete(path) + drafts = nextDrafts + if (activeDraftPath === path) { + selection = { kind: 'runnable', runnable_kind: 'script', path } + activeDraftPath = undefined + } + if (saveErrors.has(path)) { + const nextErrors = new Map(saveErrors) + nextErrors.delete(path) + saveErrors = nextErrors + } + await graphRes.refetch() + } + } catch (e: any) { + const msg = e?.body ?? e?.message ?? String(e) + sendUserToast(`Could not deploy rename to "${path}": ${msg}`, true) + const nextErrors = new Map(saveErrors) + nextErrors.set(path, msg) + saveErrors = nextErrors + } + // Pick up the next queued rename, if any. + const next = state.queuedPath + if (!next || next === path) break + path = next + state.queuedPath = undefined + } + } finally { + state.inflight = false + // On the rare path where the draft is also gone (deployed + + // no queued path), drop the slot to keep the map bounded. + if (!drafts.has(path) && !state.queuedPath) { + deployQueue.delete(localId) + } + } + } + // Currently-open draft shape (if any) — fed into the details pane. let activeDraft = $derived(activeDraftPath ? drafts.get(activeDraftPath) : undefined) @@ -626,31 +865,13 @@ liveAnnotations = { scriptPath, annotations } } function handleAssetsChange(scriptPath: string | undefined, assets: AssetWithAltAccessType[]) { + // Single update site for the live overlay. `inferredWritesByPath` + // / `inferredReadsByPath` are now derived from `liveBodyAssets` + // (for the open script) + `inferredAssetsByPath` (prefetched + // snapshot for every other script), so we don't have to write + // into those caches here — the derive picks up our update on the + // next reactive tick. liveBodyAssets = { scriptPath, assets } - // Seed the sticky cache so the script's writes survive selection - // changes. Only the active script's entry is updated (the - // scriptPath the WASM just parsed); other entries are untouched - // so previously-seen scripts retain their last-known writes. - // `untrack` around the read+write of `inferredWritesByPath` is - // crucial: this fn is called from AssetGraphDetailsPane's $effect - // for onAssetsChange, and Svelte tracks every state read inside - // that effect's closure. Without `untrack`, cloning the Map - // registers it as a dep, and writing the new Map immediately - // re-fires the effect → infinite loop. - if (scriptPath) { - const writes = extractWrites(assets) - const reads = extractReads(assets) - untrack(() => { - const nextW = new Map(inferredWritesByPath) - if (writes.length > 0) nextW.set(scriptPath, writes) - else nextW.delete(scriptPath) - inferredWritesByPath = nextW - const nextR = new Map(inferredReadsByPath) - if (reads.length > 0) nextR.set(scriptPath, reads) - else nextR.delete(scriptPath) - inferredReadsByPath = nextR - }) - } } function handleDraftPersist( p: string, @@ -829,9 +1050,24 @@ let sqsEditor: SqsTriggerEditor | undefined = $state() let gcpEditor: GcpTriggerEditor | undefined = $state() let emailEditor: EmailTriggerEditor | undefined = $state() + let scheduleEditor: ScheduleEditor | undefined = $state() function openMissingTriggerDrawer(kind: NativeTriggerKind, scriptPath: string) { + // A native trigger row stores `script_path` as a hard reference — + // pointing it at a never-saved draft would either fail at create + // time or silently bind to nothing. Surface that as a toast and + // keep the drawer closed; the user needs to save the script first + // (which also creates it under the new path if they renamed it). + if (drafts.has(scriptPath)) { + sendUserToast( + `Save the script "${scriptPath}" first — triggers can only be attached to deployed scripts.`, + true + ) + return + } switch (kind) { + case 'schedule': + return scheduleEditor?.openNew(false, scriptPath, undefined, scriptPath) case 'kafka': return kafkaEditor?.openNew(false, scriptPath) case 'mqtt': @@ -846,7 +1082,98 @@ return gcpEditor?.openNew(false, scriptPath) case 'email': return emailEditor?.openNew(false, scriptPath) - // webhook has no dedicated editor; schedule is inline-managed. + // webhook has no dedicated editor. + default: + return + } + } + + // Lock the script-picker to the related script so the user can't + // reassign the trigger off this pipeline from the canvas. The trigger + // can still be edited everywhere else (TriggersPanel, etc.) where the + // picker stays editable. + // Delete-trigger confirmation state. Kebab → Delete opens the standard + // ConfirmationModal; the actual delete is dispatched from onConfirmed + // so the dialog stays consistent with the rest of the app. + let triggerDeleteTarget = $state< + { kind: NativeTriggerKind; path: string } | undefined + >(undefined) + let triggerDeleteLoading = $state(false) + let triggerDeleteOpen = $derived(triggerDeleteTarget != undefined) + + function deleteAttachedTrigger(kind: NativeTriggerKind, triggerPath: string) { + triggerDeleteTarget = { kind, path: triggerPath } + } + + async function confirmDeleteAttachedTrigger() { + if (!triggerDeleteTarget || !$workspaceStore) return + const { kind, path: triggerPath } = triggerDeleteTarget + const workspace = $workspaceStore + triggerDeleteLoading = true + try { + switch (kind) { + case 'schedule': + await ScheduleService.deleteSchedule({ workspace, path: triggerPath }) + break + case 'kafka': + await KafkaTriggerService.deleteKafkaTrigger({ workspace, path: triggerPath }) + break + case 'mqtt': + await MqttTriggerService.deleteMqttTrigger({ workspace, path: triggerPath }) + break + case 'nats': + await NatsTriggerService.deleteNatsTrigger({ workspace, path: triggerPath }) + break + case 'postgres': + await PostgresTriggerService.deletePostgresTrigger({ workspace, path: triggerPath }) + break + case 'sqs': + await SqsTriggerService.deleteSqsTrigger({ workspace, path: triggerPath }) + break + case 'gcp': + await GcpTriggerService.deleteGcpTrigger({ workspace, path: triggerPath }) + break + case 'email': + await EmailTriggerService.deleteEmailTrigger({ workspace, path: triggerPath }) + break + default: + return + } + sendUserToast(`Deleted ${kind} trigger "${triggerPath}"`) + triggerDeleteTarget = undefined + await graphRes.refetch() + } catch (e: any) { + sendUserToast( + `Could not delete ${kind} trigger "${triggerPath}": ${e?.body ?? e?.message ?? String(e)}`, + true + ) + } finally { + triggerDeleteLoading = false + } + } + + function openEditTriggerDrawer( + kind: NativeTriggerKind, + triggerPath: string, + scriptPath: string + ) { + switch (kind) { + case 'schedule': + return scheduleEditor?.openEdit(triggerPath, false, scriptPath) + case 'kafka': + return kafkaEditor?.openEdit(triggerPath, false, scriptPath) + case 'mqtt': + return mqttEditor?.openEdit(triggerPath, false, scriptPath) + case 'nats': + return natsEditor?.openEdit(triggerPath, false, scriptPath) + case 'postgres': + return postgresEditor?.openEdit(triggerPath, false, scriptPath) + case 'sqs': + return sqsEditor?.openEdit(triggerPath, false, scriptPath) + case 'gcp': + return gcpEditor?.openEdit(triggerPath, false, scriptPath) + case 'email': + return emailEditor?.openEdit(triggerPath, false, scriptPath) default: return } @@ -920,74 +1247,52 @@ } ) - // Eagerly infer every folder script's writes on load and seed the same - // `inferredWritesByPath` overlay the open-script path uses — otherwise a - // script whose persisted asset rows are missing only gets edges when - // clicked, which re-layouts the graph. WHY untrack: deps must stay - // (workspace, base-graph) only so a keystroke/new draft doesn't re-sweep; - // the generation token cancels an in-flight sweep on folder change. - let assetPrefetchGen = 0 - // True while the load-time sweep above is still parsing scripts — drives - // a small "parsing assets…" hint so the user knows the graph is still - // settling (edges may still appear) rather than already complete. + // Body / inferred-assets prefetch sweep. Watches `g.runnables`; for any + // non-draft path we haven't fetched yet, fetches `getScriptByPath` and + // `inferAssets`, and stores both in their respective only-add caches. + // All three previously-sticky maps (`inferredWritesByPath`, + // `inferredReadsByPath`, `annotatedNativeKindsByPath`) are now derived + // from these caches × the current graph, so rename / delete cleanup + // happens implicitly when `g.runnables` changes — no per-mutation + // cache surgery needed. A generation counter cancels in-flight work on + // folder change so the previous folder's results never leak into the + // new one. let prefetchingAssets = $state(false) $effect(() => { const ws = $workspaceStore const g = graphRes.current if (!ws || !g) return - const gen = ++assetPrefetchGen + const gen = ++bodyFetchGen const targets = untrack(() => g.runnables .filter((r) => r.usage_kind === 'script') .map((r) => r.path) - .filter( - (p) => - !drafts.has(p) && - !inferredWritesByPath.has(p) && - !inferredReadsByPath.has(p) && - !annotatedNativeKindsByPath.has(p) - ) + .filter((p) => !drafts.has(p) && !bodiesByPath.has(p)) ) if (targets.length === 0) return let i = 0 const POOL = 6 const worker = async () => { - while (i < targets.length && gen === assetPrefetchGen) { + while (i < targets.length && gen === bodyFetchGen) { const path = targets[i++] try { const s = await ScriptService.getScriptByPath({ workspace: ws, path }) - if (gen !== assetPrefetchGen) return + if (gen !== bodyFetchGen) return const content = s.content ?? '' const res = await inferAssets(s.language, content) - if (gen !== assetPrefetchGen) return + if (gen !== bodyFetchGen) return const inferred = (res?.assets ?? []) as AssetWithAltAccessType[] - const writes = extractWrites(inferred) - const reads = extractReads(inferred) - // Parse `// on kafka` markers in parallel with the asset - // inference. Cheap pure-TS pass — runs on the same content - // we already loaded for inferAssets. - const annotated = new Set( - parsePipelineAnnotations(content).nativeTriggers.map((n) => n.kind) - ) untrack(() => { - // A live edit / prior sweep may have filled either meanwhile. - if (writes.length > 0 && !inferredWritesByPath.has(path)) { - const next = new Map(inferredWritesByPath) - next.set(path, writes) - inferredWritesByPath = next + if (!bodiesByPath.has(path)) { + const nextBodies = new Map(bodiesByPath) + nextBodies.set(path, content) + bodiesByPath = nextBodies } - if (reads.length > 0 && !inferredReadsByPath.has(path)) { - const next = new Map(inferredReadsByPath) - next.set(path, reads) - inferredReadsByPath = next + if (!inferredAssetsByPath.has(path)) { + const nextAssets = new Map(inferredAssetsByPath) + nextAssets.set(path, inferred) + inferredAssetsByPath = nextAssets } - // Always seed the annotation map (even if empty) so a - // later removal of all `// on kafka` lines retires the - // placeholder on the next deploy + refetch. - const nextAnnot = new Map(annotatedNativeKindsByPath) - if (annotated.size > 0) nextAnnot.set(path, annotated) - else nextAnnot.delete(path) - annotatedNativeKindsByPath = nextAnnot }) } catch { // Skip — that node just falls back to base-graph edges. @@ -997,9 +1302,7 @@ prefetchingAssets = true const pool = Array.from({ length: Math.min(POOL, targets.length) }, () => worker()) void Promise.all(pool).then(() => { - // Only clear for the sweep still current — a folder change starts - // a new gen (and its own true) that this stale resolve mustn't undo. - if (gen === assetPrefetchGen) prefetchingAssets = false + if (gen === bodyFetchGen) prefetchingAssets = false }) }) @@ -1155,8 +1458,9 @@ runStates={activeRunnables.states} {pathPrefix} defaultPathSuffix={DEFAULT_PATH_SUFFIX} - defaultScheduleCron={DEFAULT_SCHEDULE_CRON} onCreateMissingTrigger={openMissingTriggerDrawer} + onEditTrigger={openEditTriggerDrawer} + onDeleteTrigger={deleteAttachedTrigger} onselect={(s) => { // Clicking a draft runnable node re-opens it in the pane; // clicking anything else selects it normally and detaches @@ -1365,7 +1669,6 @@ annotations: { inPipeline: false, triggerAssets: [], - schedules: [], nativeTriggers: [] } } @@ -1375,7 +1678,24 @@ if (activeDraftPath) discardDraft(activeDraftPath) }} onDraftSaved={async (savedPath) => { - discardDraft(savedPath) + // Drop the now-deployed draft and hand focus to its + // persisted runnable so the pane stays open on the + // same script. `discardDraft` would clear + // activeDraftPath without setting selection — the + // canvas would deselect and the view reset on the + // next refetch. + const nextDrafts = new Map(drafts) + nextDrafts.delete(savedPath) + drafts = nextDrafts + if (activeDraftPath === savedPath) { + selection = { + kind: 'runnable', + runnable_kind: 'script', + path: savedPath + } + activeDraftPath = undefined + } + clearSaveError(savedPath) await graphRes.refetch() }} onPersistedSaved={async () => { @@ -1400,12 +1720,15 @@ await graphRes.refetch() }} onScriptRemoved={async (removedPath) => { - // Drop the selection (the script is gone) and - // refetch so the runnable node disappears from - // the canvas. - if (selection?.kind === 'runnable' && selection.path === removedPath) { - selection = undefined - } + // Drop every path-keyed overlay / cache entry + // pointing at the now-archived runnable so + // resolveGraph doesn't keep emitting lineage + // edges or missing-trigger placeholders against + // a script that no longer exists. Without this + // the inferred writes / annotation maps would + // keep dragging phantom nodes onto the canvas + // until the next folder change. + forgetPath(removedPath) await graphRes.refetch() }} /> @@ -1418,6 +1741,26 @@ + { + if (!triggerDeleteLoading) triggerDeleteTarget = undefined + }} + > + {#if triggerDeleteTarget} +

    + Delete {triggerDeleteTarget.path}? The + // on {triggerDeleteTarget.kind} annotation on the script + stays — the trigger will read as missing on the canvas until you recreate it or remove + the annotation. +

    + {/if} +
    +