@pgflow/core 0.12.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @pgflow/core
2
2
 
3
+ ## 0.13.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 199fbe1: Note: Version 0.13.0 was yanked due to broken local environment detection. This release (0.13.1) includes both the fix and the features from 0.13.0.
8
+
9
+ - Fix local environment detection to use SUPABASE_URL instead of API keys
10
+ - Add step output storage optimization for 2x faster Map chains (outputs now stored in step_states.output instead of aggregated on-demand)
11
+ - @pgflow/dsl@0.13.1
12
+
13
+ ## 0.13.0
14
+
15
+ ### Minor Changes
16
+
17
+ - 05738ed: Performance: Store step outputs atomically for 2x faster downstream task startup
18
+
19
+ Step outputs are now stored in step_states.output when steps complete, eliminating expensive aggregation queries. Benchmarks show 2.17x improvement for Map->Map chains. Includes data migration to backfill existing completed steps.
20
+
21
+ ### Patch Changes
22
+
23
+ - @pgflow/dsl@0.13.0
24
+
3
25
  ## 0.12.0
4
26
 
5
27
  ### Minor Changes
@@ -123,6 +123,7 @@ export type Database = {
123
123
  failed_at: string | null;
124
124
  flow_slug: string;
125
125
  initial_tasks: number | null;
126
+ output: Json | null;
126
127
  remaining_deps: number;
127
128
  remaining_tasks: number | null;
128
129
  run_id: string;
@@ -137,6 +138,7 @@ export type Database = {
137
138
  failed_at?: string | null;
138
139
  flow_slug: string;
139
140
  initial_tasks?: number | null;
141
+ output?: Json | null;
140
142
  remaining_deps?: number;
141
143
  remaining_tasks?: number | null;
142
144
  run_id: string;
@@ -151,6 +153,7 @@ export type Database = {
151
153
  failed_at?: string | null;
152
154
  flow_slug?: string;
153
155
  initial_tasks?: number | null;
156
+ output?: Json | null;
154
157
  remaining_deps?: number;
155
158
  remaining_tasks?: number | null;
156
159
  run_id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"database-types.d.ts","sourceRoot":"","sources":["../src/database-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database-types.d.ts","sourceRoot":"","sources":["../src/database-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GACZ,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GACnC,IAAI,EAAE,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE;QACN,MAAM,EAAE;YACN,IAAI,EAAE;gBACJ,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,CAAA;oBAClB,QAAQ,EAAE,MAAM,CAAA;oBAChB,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,QAAQ,EAAE,MAAM,CAAA;oBAChB,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;oBACjB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,SAAS,CAAC,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,8BAA8B,CAAA;wBAC9C,OAAO,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;wBAClC,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;qBAC9C;oBACD;wBACE,cAAc,EAAE,qBAAqB,CAAA;wBACrC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;wBACtB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAA;qBACjC;oBACD;wBACE,cAAc,EAAE,+BAA+B,CAAA;wBAC/C,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;wBACnC,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;qBAC9C;iBACF,CAAA;aACF,CAAA;YACD,KAAK,EAAE;gBACL,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,CAAA;oBACtB,gBAAgB,EAAE,MAAM,CAAA;oBACxB,WAAW,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,CAAC,EAAE,MAAM,CAAA;oBACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,WAAW,CAAC,EAAE,MAAM,CAAA;iBACrB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,cAAc,CAAC,EAAE,MAAM,CAAA;oBACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,WAAW,CAAC,EAAE,MAAM,CAAA;iBACrB,CAAA;gBACD,aAAa,EAAE,EAAE,CAAA;aAClB,CAAA;YACD,IAAI,EAAE;gBACJ,GAAG,EAAE;oBACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;oBACxB,SAAS,EAAE,MAAM,CAAA;oBACjB,KAAK,EAAE,IAAI,CAAA;oBACX,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;oBACnB,eAAe,EAAE,MAAM,CAAA;oBACvB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,EAAE,MAAM,CAAA;oBAClB,MAAM,EAAE,MAAM,CAAA;iBACf,CAAA;gBACD,MAAM,EAAE;oBACN,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,EAAE,MAAM,CAAA;oBACjB,KAAK,EAAE,IAAI,CAAA;oBACX,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;oBACpB,eAAe,CAAC,EAAE,MAAM,CAAA;oBACxB,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,MAAM,CAAC,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,KAAK,CAAC,EAAE,IAAI,CAAA;oBACZ,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;oBACpB,eAAe,CAAC,EAAE,MAAM,CAAA;oBACxB,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,MAAM,CAAC,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,qBAAqB,CAAA;wBACrC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;wBACtB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAA;qBACjC;iBACF,CAAA;aACF,CAAA;YACD,WAAW,EAAE;gBACX,GAAG,EAAE;oBACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,UAAU,EAAE,MAAM,CAAA;oBAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;oBACxB,SAAS,EAAE,MAAM,CAAA;oBACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;oBACnB,cAAc,EAAE,MAAM,CAAA;oBACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,MAAM,CAAA;oBACd,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,EAAE,MAAM,CAAA;oBACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;oBACpB,cAAc,CAAC,EAAE,MAAM,CAAA;oBACvB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;oBACpB,cAAc,CAAC,EAAE,MAAM,CAAA;oBACvB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,SAAS,CAAC,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,4BAA4B,CAAA;wBAC5C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;wBACtB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAA;qBACjC;oBACD;wBACE,cAAc,EAAE,sCAAsC,CAAA;wBACtD,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;wBACnC,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;qBAC9C;oBACD;wBACE,cAAc,EAAE,yBAAyB,CAAA;wBACzC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;wBACnB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,MAAM,CAAA;wBAC1B,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAA;qBAC9B;iBACF,CAAA;aACF,CAAA;YACD,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,cAAc,EAAE,MAAM,CAAA;oBACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;oBACxB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,MAAM,CAAA;oBACd,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,MAAM,EAAE;oBACN,cAAc,CAAC,EAAE,MAAM,CAAA;oBACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;oBACpB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,CAAC,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,MAAM,EAAE;oBACN,cAAc,CAAC,EAAE,MAAM,CAAA;oBACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;oBACpB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,UAAU,CAAC,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,2BAA2B,CAAA;wBAC3C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;wBACtB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAA;qBACjC;oBACD;wBACE,cAAc,EAAE,gCAAgC,CAAA;wBAChD,OAAO,EAAE,CAAC,gBAAgB,CAAC,CAAA;wBAC3B,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,SAAS,CAAA;wBAC7B,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAA;qBACjC;oBACD;wBACE,cAAc,EAAE,wBAAwB,CAAA;wBACxC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;wBACnB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,MAAM,CAAA;wBAC1B,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAA;qBAC9B;oBACD;wBACE,cAAc,EAAE,kCAAkC,CAAA;wBAClD,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;wBAChC,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,aAAa,CAAA;wBACjC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;qBAC3C;iBACF,CAAA;aACF,CAAA;YACD,KAAK,EAAE;gBACL,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,CAAA;oBAClB,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAChC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,CAAC,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAChC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,SAAS,CAAC,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,sBAAsB,CAAA;wBACtC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;wBACtB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAA;qBACjC;iBACF,CAAA;aACF,CAAA;YACD,gBAAgB,EAAE;gBAChB,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,CAAA;oBAClB,QAAQ,EAAE,OAAO,CAAA;oBACjB,OAAO,EAAE,OAAO,CAAA;oBAChB,aAAa,EAAE,MAAM,CAAA;oBACrB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;oBAClB,OAAO,CAAC,EAAE,OAAO,CAAA;oBACjB,aAAa,EAAE,MAAM,CAAA;oBACrB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;oBAClB,OAAO,CAAC,EAAE,OAAO,CAAA;oBACjB,aAAa,CAAC,EAAE,MAAM,CAAA;oBACtB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,aAAa,EAAE,EAAE,CAAA;aAClB,CAAA;YACD,OAAO,EAAE;gBACP,GAAG,EAAE;oBACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,aAAa,EAAE,MAAM,CAAA;oBACrB,iBAAiB,EAAE,MAAM,CAAA;oBACzB,UAAU,EAAE,MAAM,CAAA;oBAClB,UAAU,EAAE,MAAM,CAAA;oBAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,aAAa,EAAE,MAAM,CAAA;oBACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;oBAC1B,UAAU,EAAE,MAAM,CAAA;oBAClB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;oBACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;oBAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,aAAa,EAAE,EAAE,CAAA;aAClB,CAAA;SACF,CAAA;QACD,KAAK,EAAE;aACJ,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,SAAS,EAAE;YACT,oBAAoB,EAAE;gBACpB,IAAI,EAAE;oBAAE,IAAI,EAAE,IAAI,CAAC;oBAAC,OAAO,EAAE,IAAI,CAAA;iBAAE,CAAA;gBACnC,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,CAAA;YACD,uBAAuB,EAAE;gBACvB,IAAI,EAAE;oBAAE,WAAW,EAAE,MAAM,CAAC;oBAAC,OAAO,EAAE,IAAI,CAAA;iBAAE,CAAA;gBAC5C,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,eAAe,EAAE;gBAAE,IAAI,EAAE;oBAAE,WAAW,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,IAAI,CAAA;aAAE,CAAA;YACjE,QAAQ,EAAE;gBACR,IAAI,EAAE;oBACJ,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;oBACrB,SAAS,EAAE,MAAM,CAAA;oBACjB,YAAY,CAAC,EAAE,MAAM,CAAA;oBACrB,WAAW,CAAC,EAAE,MAAM,CAAA;oBACpB,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,OAAO,CAAC,EAAE,MAAM,CAAA;iBACjB,CAAA;gBACD,OAAO,EAAE;oBACP,UAAU,EAAE,MAAM,CAAA;oBAClB,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,OAAO,CAAA;oBACX,UAAU,EAAE,IAAI,CAAA;oBAChB,aAAa,EAAE,KAAK,CAAA;iBACrB,CAAA;aACF,CAAA;YACD,qBAAqB,EAAE;gBACrB,IAAI,EAAE;oBAAE,cAAc,EAAE,MAAM,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACpD,OAAO,EAAE,MAAM,CAAA;aAChB,CAAA;YACD,+BAA+B,EAAE;gBAC/B,IAAI,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACxB,OAAO,EAAE,MAAM,CAAA;aAChB,CAAA;YACD,2BAA2B,EAAE;gBAC3B,IAAI,EAAE;oBAAE,eAAe,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAClC,OAAO,EAAE;oBACP,YAAY,EAAE,MAAM,CAAA;iBACrB,EAAE,CAAA;aACJ,CAAA;YACD,aAAa,EAAE;gBACb,IAAI,EAAE;oBACJ,MAAM,EAAE,IAAI,CAAA;oBACZ,MAAM,EAAE,MAAM,CAAA;oBACd,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,OAAO,EAAE;oBACP,cAAc,EAAE,MAAM,CAAA;oBACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;oBACxB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,MAAM,CAAA;oBACd,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,CAAA;iBACnB,EAAE,CAAA;gBACH,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,YAAY,CAAA;oBAChB,UAAU,EAAE,KAAK,CAAA;oBACjB,aAAa,EAAE,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;YACD,WAAW,EAAE;gBACX,IAAI,EAAE;oBACJ,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,YAAY,CAAC,EAAE,MAAM,CAAA;oBACrB,OAAO,CAAC,EAAE,MAAM,CAAA;iBACjB,CAAA;gBACD,OAAO,EAAE;oBACP,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,CAAA;oBACtB,gBAAgB,EAAE,MAAM,CAAA;oBACxB,WAAW,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,OAAO,CAAA;oBACX,UAAU,EAAE,IAAI,CAAA;oBAChB,aAAa,EAAE,KAAK,CAAA;iBACrB,CAAA;aACF,CAAA;YACD,oBAAoB,EAAE;gBACpB,IAAI,EAAE;oBAAE,WAAW,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC7B,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,oBAAoB,EAAE;gBACpB,IAAI,EAAE;oBAAE,eAAe,CAAC,EAAE,OAAO,CAAC;oBAAC,SAAS,EAAE,MAAM,CAAC;oBAAC,KAAK,EAAE,IAAI,CAAA;iBAAE,CAAA;gBACnE,OAAO,EAAE,IAAI,CAAA;aACd,CAAA;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,KAAK,CAAA;gBACX,OAAO,EAAE;oBACP,aAAa,EAAE,MAAM,CAAA;oBACrB,OAAO,EAAE,OAAO,CAAA;oBAChB,UAAU,EAAE,MAAM,CAAA;iBACnB,EAAE,CAAA;aACJ,CAAA;YACD,SAAS,EAAE;gBACT,IAAI,EAAE;oBACJ,aAAa,EAAE,MAAM,CAAA;oBACrB,MAAM,EAAE,MAAM,CAAA;oBACd,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,OAAO,EAAE;oBACP,cAAc,EAAE,MAAM,CAAA;oBACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;oBACxB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,MAAM,CAAA;oBACd,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,CAAA;iBACnB,EAAE,CAAA;gBACH,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,YAAY,CAAA;oBAChB,UAAU,EAAE,KAAK,CAAA;oBACjB,aAAa,EAAE,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;YACD,mBAAmB,EAAE;gBAAE,IAAI,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,IAAI,CAAA;aAAE,CAAA;YAChE,QAAQ,EAAE;gBAAE,IAAI,EAAE,KAAK,CAAC;gBAAC,OAAO,EAAE,OAAO,CAAA;aAAE,CAAA;YAC3C,aAAa,EAAE;gBAAE,IAAI,EAAE;oBAAE,IAAI,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,OAAO,CAAA;aAAE,CAAA;YAC3D,mBAAmB,EAAE;gBAAE,IAAI,EAAE;oBAAE,SAAS,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,SAAS,CAAA;aAAE,CAAA;YACxE,kBAAkB,EAAE;gBAAE,IAAI,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,SAAS,CAAA;aAAE,CAAA;YACpE,cAAc,EAAE;gBACd,IAAI,EAAE;oBACJ,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,GAAG,EAAE,MAAM,CAAA;oBACX,UAAU,EAAE,MAAM,CAAA;oBAClB,EAAE,EAAE,MAAM,CAAA;iBACX,CAAA;gBACD,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAA;gBACnE,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,kBAAkB,CAAA;oBACtB,UAAU,EAAE,KAAK,CAAA;oBACjB,aAAa,EAAE,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE;oBAAE,OAAO,EAAE,MAAM,EAAE,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAC;oBAAC,UAAU,EAAE,MAAM,EAAE,CAAA;iBAAE,CAAA;gBACrE,OAAO,EAAE;oBACP,WAAW,EAAE,MAAM,CAAA;oBACnB,OAAO,EAAE,IAAI,CAAA;oBACb,OAAO,EAAE,IAAI,CAAA;oBACb,MAAM,EAAE,MAAM,CAAA;oBACd,OAAO,EAAE,MAAM,CAAA;oBACf,EAAE,EAAE,MAAM,CAAA;iBACX,EAAE,CAAA;aACJ,CAAA;YACD,yBAAyB,EAAE;gBACzB,IAAI,EAAE;oBAAE,aAAa,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAChC,OAAO,EAAE,MAAM,CAAA;aAChB,CAAA;YACD,UAAU,EAAE;gBACV,IAAI,EAAE;oBAAE,SAAS,EAAE,MAAM,CAAC;oBAAC,KAAK,EAAE,IAAI,CAAC;oBAAC,MAAM,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACzD,OAAO,EAAE;oBACP,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;oBACxB,SAAS,EAAE,MAAM,CAAA;oBACjB,KAAK,EAAE,IAAI,CAAA;oBACX,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;oBACnB,eAAe,EAAE,MAAM,CAAA;oBACvB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,EAAE,MAAM,CAAA;oBAClB,MAAM,EAAE,MAAM,CAAA;iBACf,EAAE,CAAA;gBACH,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,MAAM,CAAA;oBACV,UAAU,EAAE,KAAK,CAAA;oBACjB,aAAa,EAAE,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;YACD,sBAAsB,EAAE;gBACtB,IAAI,EAAE;oBAAE,SAAS,EAAE,MAAM,CAAC;oBAAC,KAAK,EAAE,IAAI,CAAC;oBAAC,MAAM,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACzD,OAAO,EAAE,IAAI,CAAA;aACd,CAAA;YACD,iBAAiB,EAAE;gBAAE,IAAI,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,SAAS,CAAA;aAAE,CAAA;YACnE,WAAW,EAAE;gBACX,IAAI,EAAE;oBAAE,SAAS,EAAE,MAAM,CAAC;oBAAC,OAAO,EAAE,MAAM,EAAE,CAAC;oBAAC,SAAS,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACjE,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAA;gBACnE,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,kBAAkB,CAAA;oBACtB,UAAU,EAAE,KAAK,CAAA;oBACjB,aAAa,EAAE,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;YACD,qBAAqB,EAAE;gBACrB,IAAI,EAAE;oBAAE,aAAa,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC/B,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;SACF,CAAA;QACD,KAAK,EAAE;aACJ,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,cAAc,EAAE;YACd,gBAAgB,EAAE;gBAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;gBACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;gBACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;gBACxB,KAAK,EAAE,IAAI,GAAG,IAAI,CAAA;gBAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;gBACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;gBACzB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAA;aACxB,CAAA;SACF,CAAA;KACF,CAAA;IACD,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,IAAI,EAAE;gBACJ,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,CAAA;oBAClB,cAAc,EAAE,OAAO,CAAA;oBACvB,WAAW,EAAE,OAAO,CAAA;oBACpB,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,cAAc,EAAE,OAAO,CAAA;oBACvB,WAAW,EAAE,OAAO,CAAA;oBACpB,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,cAAc,CAAC,EAAE,OAAO,CAAA;oBACxB,WAAW,CAAC,EAAE,OAAO,CAAA;oBACrB,UAAU,CAAC,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,aAAa,EAAE,EAAE,CAAA;aAClB,CAAA;SACF,CAAA;QACD,KAAK,EAAE;aACJ,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,SAAS,EAAE;YACT,gBAAgB,EAAE;gBAAE,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,OAAO,CAAA;aAAE,CAAA;YACpE,4BAA4B,EAAE;gBAAE,IAAI,EAAE,KAAK,CAAC;gBAAC,OAAO,EAAE,SAAS,CAAA;aAAE,CAAA;YACjE,iBAAiB,EAAE;gBAAE,IAAI,EAAE;oBAAE,cAAc,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,OAAO,CAAA;aAAE,CAAA;YACzE,kBAAkB,EAAE;gBAClB,IAAI,EAAE;oBAAE,kBAAkB,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACpC,OAAO,EAAE,MAAM,CAAA;aAChB,CAAA;YACD,6BAA6B,EAAE;gBAAE,IAAI,EAAE,KAAK,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAA;YAC/D,sBAAsB,EAAE;gBAAE,IAAI,EAAE,KAAK,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAA;YACxD,OAAO,EACH;gBAAE,IAAI,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,OAAO,CAAA;aAAE,GAClE;gBAAE,IAAI,EAAE;oBAAE,OAAO,EAAE,MAAM,EAAE,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,MAAM,EAAE,CAAA;aAAE,CAAA;YAC1E,2BAA2B,EAAE;gBAC3B,IAAI,EAAE;oBACJ,iBAAiB,CAAC,EAAE,MAAM,CAAA;oBAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;oBAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAA;oBAC3B,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,MAAM,EAAE;gBAAE,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,SAAS,CAAA;aAAE,CAAA;YAC5D,sBAAsB,EAAE;gBACtB,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,kBAAkB,EAAE;gBAClB,IAAI,EAAE;oBACJ,kBAAkB,CAAC,EAAE,MAAM,CAAA;oBAC3B,UAAU,EAAE,MAAM,CAAA;oBAClB,kBAAkB,CAAC,EAAE,MAAM,CAAA;iBAC5B,CAAA;gBACD,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,eAAe,EAAE;gBAAE,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,SAAS,CAAA;aAAE,CAAA;YACrE,MAAM,EACF;gBAAE,IAAI,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,OAAO,CAAA;aAAE,GAClE;gBAAE,IAAI,EAAE;oBAAE,OAAO,EAAE,MAAM,EAAE,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,MAAM,EAAE,CAAA;aAAE,CAAA;YAC1E,cAAc,EAAE;gBAAE,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,SAAS,CAAA;aAAE,CAAA;YACpE,UAAU,EACN;gBAAE,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,OAAO,CAAA;aAAE,GAClD;gBACE,IAAI,EAAE;oBAAE,WAAW,EAAE,OAAO,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAClD,OAAO,EAAE,OAAO,CAAA;aACjB,CAAA;YACL,iBAAiB,EAAE;gBACjB,IAAI,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5C,OAAO,EAAE,MAAM,CAAA;aAChB,CAAA;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,KAAK,CAAA;gBACX,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,cAAc,CAAC,EAAE,CAAA;gBAC7D,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,cAAc,CAAA;oBAClB,UAAU,EAAE,KAAK,CAAA;oBACjB,aAAa,EAAE,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;YACD,OAAO,EAAE;gBACP,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,CAAA;gBAC7D,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,gBAAgB,CAAA;oBACpB,UAAU,EAAE,IAAI,CAAA;oBAChB,aAAa,EAAE,KAAK,CAAA;iBACrB,CAAA;aACF,CAAA;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,KAAK,CAAA;gBACX,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;gBAC/D,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,gBAAgB,CAAA;oBACpB,UAAU,EAAE,KAAK,CAAA;oBACjB,aAAa,EAAE,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;YACD,GAAG,EAAE;gBACH,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;gBAC/D,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,gBAAgB,CAAA;oBACpB,UAAU,EAAE,KAAK,CAAA;oBACjB,aAAa,EAAE,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;YACD,WAAW,EAAE;gBAAE,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAA;YAC9D,IAAI,EAAE;gBACJ,IAAI,EAAE;oBACJ,WAAW,CAAC,EAAE,IAAI,CAAA;oBAClB,GAAG,EAAE,MAAM,CAAA;oBACX,UAAU,EAAE,MAAM,CAAA;oBAClB,EAAE,EAAE,MAAM,CAAA;iBACX,CAAA;gBACD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;gBAC/D,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,gBAAgB,CAAA;oBACpB,UAAU,EAAE,KAAK,CAAA;oBACjB,aAAa,EAAE,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;YACD,cAAc,EAAE;gBACd,IAAI,EAAE;oBACJ,WAAW,CAAC,EAAE,IAAI,CAAA;oBAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,GAAG,EAAE,MAAM,CAAA;oBACX,UAAU,EAAE,MAAM,CAAA;oBAClB,EAAE,EAAE,MAAM,CAAA;iBACX,CAAA;gBACD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;gBAC/D,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,gBAAgB,CAAA;oBACpB,UAAU,EAAE,KAAK,CAAA;oBACjB,aAAa,EAAE,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;YACD,IAAI,EACA;gBACE,IAAI,EAAE;oBACJ,KAAK,EAAE,MAAM,CAAA;oBACb,OAAO,EAAE,IAAI,CAAA;oBACb,GAAG,EAAE,IAAI,CAAA;oBACT,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,GACD;gBACE,IAAI,EAAE;oBAAE,KAAK,EAAE,MAAM,CAAC;oBAAC,GAAG,EAAE,IAAI,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACtD,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,GACD;gBAAE,IAAI,EAAE;oBAAE,GAAG,EAAE,IAAI,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,MAAM,EAAE,CAAA;aAAE,GAC9D;gBACE,IAAI,EAAE;oBAAE,KAAK,EAAE,MAAM,CAAC;oBAAC,GAAG,EAAE,IAAI,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACtD,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,GACD;gBACE,IAAI,EAAE;oBAAE,OAAO,EAAE,IAAI,CAAC;oBAAC,GAAG,EAAE,IAAI,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACtD,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,GACD;gBACE,IAAI,EAAE;oBACJ,KAAK,EAAE,MAAM,CAAA;oBACb,OAAO,EAAE,IAAI,CAAA;oBACb,GAAG,EAAE,IAAI,CAAA;oBACT,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,CAAA;YACL,UAAU,EACN;gBACE,IAAI,EAAE;oBACJ,KAAK,EAAE,MAAM,CAAA;oBACb,OAAO,EAAE,IAAI,EAAE,CAAA;oBACf,IAAI,EAAE,IAAI,EAAE,CAAA;oBACZ,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,GACD;gBACE,IAAI,EAAE;oBAAE,KAAK,EAAE,MAAM,CAAC;oBAAC,IAAI,EAAE,IAAI,EAAE,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACzD,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,GACD;gBAAE,IAAI,EAAE;oBAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,MAAM,EAAE,CAAA;aAAE,GACjE;gBACE,IAAI,EAAE;oBAAE,KAAK,EAAE,MAAM,CAAC;oBAAC,IAAI,EAAE,IAAI,EAAE,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACzD,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,GACD;gBACE,IAAI,EAAE;oBAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oBAAC,IAAI,EAAE,IAAI,EAAE,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC3D,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,GACD;gBACE,IAAI,EAAE;oBACJ,KAAK,EAAE,MAAM,CAAA;oBACb,OAAO,EAAE,IAAI,EAAE,CAAA;oBACf,IAAI,EAAE,IAAI,EAAE,CAAA;oBACZ,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,CAAA;YACL,MAAM,EAAE;gBACN,IAAI,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAC;oBAAC,UAAU,EAAE,MAAM,CAAC;oBAAC,EAAE,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACxD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;gBAC/D,YAAY,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAA;oBACT,EAAE,EAAE,gBAAgB,CAAA;oBACpB,UAAU,EAAE,KAAK,CAAA;oBACjB,aAAa,EAAE,IAAI,CAAA;iBACpB,CAAA;aACF,CAAA;YACD,mBAAmB,EAAE;gBAAE,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,OAAO,EAAE,SAAS,CAAA;aAAE,CAAA;SAC1E,CAAA;QACD,KAAK,EAAE;aACJ,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,cAAc,EAAE;YACd,cAAc,EAAE;gBACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;gBACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;gBACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;gBAC1B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;gBACjB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAA;gBACpB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAA;aACrB,CAAA;YACD,cAAc,EAAE;gBACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;gBACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;gBAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;gBACjC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;gBACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;gBAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;gBAC1B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;aACpC,CAAA;YACD,YAAY,EAAE;gBACZ,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;gBACzB,cAAc,EAAE,OAAO,GAAG,IAAI,CAAA;gBAC9B,WAAW,EAAE,OAAO,GAAG,IAAI,CAAA;gBAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;aAC1B,CAAA;SACF,CAAA;KACF,CAAA;CACF,CAAA;AAED,KAAK,wBAAwB,GAAG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAA;AAEpE,KAAK,aAAa,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAEhF,MAAM,MAAM,MAAM,CAChB,+BAA+B,SAC3B,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,GACxD;IAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;CAAE,EAC9C,SAAS,SAAS,+BAA+B,SAAS;IACxD,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,MAAM,CAAC,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAClF,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAC/E,KAAK,GAAG,KAAK,IACf,+BAA+B,SAAS;IAC1C,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,CAAC,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAC5E,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS;IACjG,GAAG,EAAE,MAAM,CAAC,CAAA;CACb,GACC,CAAC,GACD,KAAK,GACP,+BAA+B,SAAS,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,GAClE,aAAa,CAAC,OAAO,CAAC,CAAC,GACzB,CAAC,aAAa,CAAC,QAAQ,CAAC,GACtB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,SAAS;IACjE,GAAG,EAAE,MAAM,CAAC,CAAA;CACb,GACC,CAAC,GACD,KAAK,GACP,KAAK,CAAA;AAEX,MAAM,MAAM,YAAY,CACtB,+BAA+B,SAC3B,MAAM,aAAa,CAAC,QAAQ,CAAC,GAC7B;IAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;CAAE,EAC9C,SAAS,SAAS,+BAA+B,SAAS;IACxD,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,MAAM,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GACnF,KAAK,GAAG,KAAK,IACf,+BAA+B,SAAS;IAC1C,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS;IAC/F,MAAM,EAAE,MAAM,CAAC,CAAA;CAChB,GACC,CAAC,GACD,KAAK,GACP,+BAA+B,SAAS,MAAM,aAAa,CAAC,QAAQ,CAAC,GACnE,aAAa,CAAC,QAAQ,CAAC,CAAC,+BAA+B,CAAC,SAAS;IAC/D,MAAM,EAAE,MAAM,CAAC,CAAA;CAChB,GACC,CAAC,GACD,KAAK,GACP,KAAK,CAAA;AAEX,MAAM,MAAM,YAAY,CACtB,+BAA+B,SAC3B,MAAM,aAAa,CAAC,QAAQ,CAAC,GAC7B;IAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;CAAE,EAC9C,SAAS,SAAS,+BAA+B,SAAS;IACxD,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,MAAM,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GACnF,KAAK,GAAG,KAAK,IACf,+BAA+B,SAAS;IAC1C,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,wBAAwB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS;IAC/F,MAAM,EAAE,MAAM,CAAC,CAAA;CAChB,GACC,CAAC,GACD,KAAK,GACP,+BAA+B,SAAS,MAAM,aAAa,CAAC,QAAQ,CAAC,GACnE,aAAa,CAAC,QAAQ,CAAC,CAAC,+BAA+B,CAAC,SAAS;IAC/D,MAAM,EAAE,MAAM,CAAC,CAAA;CAChB,GACC,CAAC,GACD,KAAK,GACP,KAAK,CAAA;AAEX,MAAM,MAAM,KAAK,CACf,8BAA8B,SAC1B,MAAM,aAAa,CAAC,OAAO,CAAC,GAC5B;IAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;CAAE,EAC9C,QAAQ,SAAS,8BAA8B,SAAS;IACtD,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,MAAM,wBAAwB,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GACjF,KAAK,GAAG,KAAK,IACf,8BAA8B,SAAS;IACzC,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,wBAAwB,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GACrF,8BAA8B,SAAS,MAAM,aAAa,CAAC,OAAO,CAAC,GACjE,aAAa,CAAC,OAAO,CAAC,CAAC,8BAA8B,CAAC,GACtD,KAAK,CAAA;AAEX,MAAM,MAAM,cAAc,CACxB,gCAAgC,SAC5B,MAAM,aAAa,CAAC,gBAAgB,CAAC,GACrC;IAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;CAAE,EAC9C,iBAAiB,SAAS,gCAAgC,SAAS;IACjE,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,MAAM,wBAAwB,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAC5F,KAAK,GAAG,KAAK,IACf,gCAAgC,SAAS;IAC3C,MAAM,EAAE,MAAM,wBAAwB,CAAA;CACvC,GACG,wBAAwB,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,iBAAiB,CAAC,GACzG,gCAAgC,SAAS,MAAM,aAAa,CAAC,gBAAgB,CAAC,GAC5E,aAAa,CAAC,gBAAgB,CAAC,CAAC,gCAAgC,CAAC,GACjE,KAAK,CAAA;AAEX,eAAO,MAAM,SAAS;;;;;;;CAOZ,CAAA"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pgflow/core",
3
- "version": "0.12.0",
3
+ "version": "0.13.1",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,909 @@
1
+ -- Modify "step_states" table
2
+ ALTER TABLE "pgflow"."step_states" ADD CONSTRAINT "output_only_for_completed_or_null" CHECK ((output IS NULL) OR (status = 'completed'::text)), ADD COLUMN "output" jsonb NULL;
3
+
4
+ -- ==========================================
5
+ -- DATA BACKFILL: Populate output for existing completed steps
6
+ -- ==========================================
7
+ -- This backfill is safe: only touches completed rows, active workflows not affected
8
+
9
+ -- Backfill single steps (store task output directly)
10
+ UPDATE pgflow.step_states ss
11
+ SET output = (
12
+ SELECT st.output
13
+ FROM pgflow.step_tasks st
14
+ WHERE st.run_id = ss.run_id
15
+ AND st.step_slug = ss.step_slug
16
+ AND st.status = 'completed'
17
+ LIMIT 1
18
+ )
19
+ FROM pgflow.steps s
20
+ WHERE s.flow_slug = ss.flow_slug
21
+ AND s.step_slug = ss.step_slug
22
+ AND s.step_type = 'single'
23
+ AND ss.status = 'completed';
24
+
25
+ -- Backfill map steps (aggregate task outputs into array)
26
+ UPDATE pgflow.step_states ss
27
+ SET output = COALESCE(
28
+ (SELECT jsonb_agg(st.output ORDER BY st.task_index)
29
+ FROM pgflow.step_tasks st
30
+ WHERE st.run_id = ss.run_id
31
+ AND st.step_slug = ss.step_slug
32
+ AND st.status = 'completed'),
33
+ '[]'::jsonb
34
+ )
35
+ FROM pgflow.steps s
36
+ WHERE s.flow_slug = ss.flow_slug
37
+ AND s.step_slug = ss.step_slug
38
+ AND s.step_type = 'map'
39
+ AND ss.status = 'completed';
40
+
41
+ -- Modify "cascade_complete_taskless_steps" function
42
+ CREATE OR REPLACE FUNCTION "pgflow"."cascade_complete_taskless_steps" ("run_id" uuid) RETURNS integer LANGUAGE plpgsql AS $$
43
+ DECLARE
44
+ v_total_completed int := 0;
45
+ v_iteration_completed int;
46
+ v_iterations int := 0;
47
+ v_max_iterations int := 50;
48
+ BEGIN
49
+ -- ==========================================
50
+ -- ITERATIVE CASCADE COMPLETION
51
+ -- ==========================================
52
+ -- Completes taskless steps in waves until none remain
53
+ LOOP
54
+ -- ---------- Safety check ----------
55
+ v_iterations := v_iterations + 1;
56
+ IF v_iterations > v_max_iterations THEN
57
+ RAISE EXCEPTION 'Cascade loop exceeded safety limit of % iterations', v_max_iterations;
58
+ END IF;
59
+
60
+ -- ==========================================
61
+ -- COMPLETE READY TASKLESS STEPS
62
+ -- ==========================================
63
+ WITH
64
+ -- ---------- Find steps to complete in topological order ----------
65
+ steps_to_complete AS (
66
+ SELECT ss.run_id, ss.flow_slug, ss.step_slug, s.step_type
67
+ FROM pgflow.step_states ss
68
+ JOIN pgflow.steps s ON s.flow_slug = ss.flow_slug AND s.step_slug = ss.step_slug
69
+ WHERE ss.run_id = cascade_complete_taskless_steps.run_id
70
+ AND ss.status = 'created'
71
+ AND ss.remaining_deps = 0
72
+ AND ss.initial_tasks = 0
73
+ -- Process in topological order to ensure proper cascade
74
+ ORDER BY s.step_index
75
+ ),
76
+ completed AS (
77
+ -- ---------- Complete taskless steps ----------
78
+ -- Steps with initial_tasks=0 and no remaining deps
79
+ -- Store output atomically: map steps get [], single steps get NULL
80
+ UPDATE pgflow.step_states ss
81
+ SET status = 'completed',
82
+ started_at = now(),
83
+ completed_at = now(),
84
+ remaining_tasks = 0,
85
+ -- Set output based on step type
86
+ output = CASE
87
+ WHEN stc.step_type = 'map' THEN '[]'::jsonb
88
+ ELSE NULL -- Single steps get NULL (for future conditional execution)
89
+ END
90
+ FROM steps_to_complete stc
91
+ WHERE ss.run_id = stc.run_id
92
+ AND ss.step_slug = stc.step_slug
93
+ RETURNING
94
+ ss.*,
95
+ -- Broadcast step:completed event atomically with the UPDATE
96
+ -- Using RETURNING ensures this executes during row processing
97
+ -- and cannot be optimized away by the query planner
98
+ realtime.send(
99
+ jsonb_build_object(
100
+ 'event_type', 'step:completed',
101
+ 'run_id', ss.run_id,
102
+ 'step_slug', ss.step_slug,
103
+ 'status', 'completed',
104
+ 'started_at', ss.started_at,
105
+ 'completed_at', ss.completed_at,
106
+ 'remaining_tasks', 0,
107
+ 'remaining_deps', 0,
108
+ 'output', ss.output -- Use stored output instead of hardcoded []
109
+ ),
110
+ concat('step:', ss.step_slug, ':completed'),
111
+ concat('pgflow:run:', ss.run_id),
112
+ false
113
+ ) as _broadcast_result -- Prefix with _ to indicate internal use only
114
+ ),
115
+ -- ---------- Update dependent steps ----------
116
+ -- Propagate completion and empty arrays to dependents
117
+ dep_updates AS (
118
+ UPDATE pgflow.step_states ss
119
+ SET remaining_deps = ss.remaining_deps - dep_count.count,
120
+ -- If the dependent is a map step and its dependency completed with 0 tasks,
121
+ -- set its initial_tasks to 0 as well
122
+ initial_tasks = CASE
123
+ WHEN s.step_type = 'map' AND dep_count.has_zero_tasks
124
+ THEN 0 -- Empty array propagation
125
+ ELSE ss.initial_tasks -- Keep existing value (including NULL)
126
+ END
127
+ FROM (
128
+ -- Aggregate dependency updates per dependent step
129
+ SELECT
130
+ d.flow_slug,
131
+ d.step_slug as dependent_slug,
132
+ COUNT(*) as count,
133
+ BOOL_OR(c.initial_tasks = 0) as has_zero_tasks
134
+ FROM completed c
135
+ JOIN pgflow.deps d ON d.flow_slug = c.flow_slug
136
+ AND d.dep_slug = c.step_slug
137
+ GROUP BY d.flow_slug, d.step_slug
138
+ ) dep_count,
139
+ pgflow.steps s
140
+ WHERE ss.run_id = cascade_complete_taskless_steps.run_id
141
+ AND ss.flow_slug = dep_count.flow_slug
142
+ AND ss.step_slug = dep_count.dependent_slug
143
+ AND s.flow_slug = ss.flow_slug
144
+ AND s.step_slug = ss.step_slug
145
+ ),
146
+ -- ---------- Update run counters ----------
147
+ -- Only decrement remaining_steps; let maybe_complete_run handle finalization
148
+ run_updates AS (
149
+ UPDATE pgflow.runs r
150
+ SET remaining_steps = r.remaining_steps - c.completed_count
151
+ FROM (SELECT COUNT(*) AS completed_count FROM completed) c
152
+ WHERE r.run_id = cascade_complete_taskless_steps.run_id
153
+ AND c.completed_count > 0
154
+ )
155
+ -- ---------- Check iteration results ----------
156
+ SELECT COUNT(*) INTO v_iteration_completed FROM completed;
157
+
158
+ EXIT WHEN v_iteration_completed = 0; -- No more steps to complete
159
+ v_total_completed := v_total_completed + v_iteration_completed;
160
+ END LOOP;
161
+
162
+ RETURN v_total_completed;
163
+ END;
164
+ $$;
165
+ -- Modify "maybe_complete_run" function
166
+ CREATE OR REPLACE FUNCTION "pgflow"."maybe_complete_run" ("run_id" uuid) RETURNS void LANGUAGE plpgsql SET "search_path" = '' AS $$
167
+ declare
168
+ v_completed_run pgflow.runs%ROWTYPE;
169
+ begin
170
+ -- ==========================================
171
+ -- CHECK AND COMPLETE RUN IF FINISHED
172
+ -- ==========================================
173
+ -- ---------- Complete run if all steps done ----------
174
+ UPDATE pgflow.runs
175
+ SET
176
+ status = 'completed',
177
+ completed_at = now(),
178
+ -- Gather outputs from leaf steps (already stored in step_states.output by writers)
179
+ output = (
180
+ -- Leaf steps = steps with no dependents
181
+ SELECT jsonb_object_agg(
182
+ leaf_state.step_slug,
183
+ leaf_state.output -- Already aggregated by writers
184
+ )
185
+ FROM pgflow.step_states leaf_state
186
+ WHERE leaf_state.run_id = maybe_complete_run.run_id
187
+ AND leaf_state.status = 'completed'
188
+ AND NOT EXISTS (
189
+ SELECT 1
190
+ FROM pgflow.deps dep
191
+ WHERE dep.flow_slug = leaf_state.flow_slug
192
+ AND dep.dep_slug = leaf_state.step_slug
193
+ )
194
+ )
195
+ WHERE pgflow.runs.run_id = maybe_complete_run.run_id
196
+ AND pgflow.runs.remaining_steps = 0
197
+ AND pgflow.runs.status != 'completed'
198
+ RETURNING * INTO v_completed_run;
199
+
200
+ -- ==========================================
201
+ -- BROADCAST COMPLETION EVENT
202
+ -- ==========================================
203
+ IF v_completed_run.run_id IS NOT NULL THEN
204
+ PERFORM realtime.send(
205
+ jsonb_build_object(
206
+ 'event_type', 'run:completed',
207
+ 'run_id', v_completed_run.run_id,
208
+ 'flow_slug', v_completed_run.flow_slug,
209
+ 'status', 'completed',
210
+ 'output', v_completed_run.output,
211
+ 'completed_at', v_completed_run.completed_at
212
+ ),
213
+ 'run:completed',
214
+ concat('pgflow:run:', v_completed_run.run_id),
215
+ false
216
+ );
217
+ END IF;
218
+ end;
219
+ $$;
220
+ -- Modify "start_ready_steps" function
221
+ CREATE OR REPLACE FUNCTION "pgflow"."start_ready_steps" ("run_id" uuid) RETURNS void LANGUAGE plpgsql SET "search_path" = '' AS $$
222
+ begin
223
+ -- ==========================================
224
+ -- GUARD: No mutations on failed runs
225
+ -- ==========================================
226
+ IF EXISTS (SELECT 1 FROM pgflow.runs WHERE pgflow.runs.run_id = start_ready_steps.run_id AND pgflow.runs.status = 'failed') THEN
227
+ RETURN;
228
+ END IF;
229
+
230
+ -- ==========================================
231
+ -- HANDLE EMPTY ARRAY MAPS (initial_tasks = 0)
232
+ -- ==========================================
233
+ -- These complete immediately without spawning tasks
234
+ WITH empty_map_steps AS (
235
+ SELECT step_state.*
236
+ FROM pgflow.step_states AS step_state
237
+ JOIN pgflow.steps AS step
238
+ ON step.flow_slug = step_state.flow_slug
239
+ AND step.step_slug = step_state.step_slug
240
+ WHERE step_state.run_id = start_ready_steps.run_id
241
+ AND step_state.status = 'created'
242
+ AND step_state.remaining_deps = 0
243
+ AND step.step_type = 'map'
244
+ AND step_state.initial_tasks = 0
245
+ ORDER BY step_state.step_slug
246
+ FOR UPDATE OF step_state
247
+ ),
248
+ -- ---------- Complete empty map steps ----------
249
+ completed_empty_steps AS (
250
+ UPDATE pgflow.step_states
251
+ SET status = 'completed',
252
+ started_at = now(),
253
+ completed_at = now(),
254
+ remaining_tasks = 0,
255
+ output = '[]'::jsonb -- Empty map produces empty array output
256
+ FROM empty_map_steps
257
+ WHERE pgflow.step_states.run_id = start_ready_steps.run_id
258
+ AND pgflow.step_states.step_slug = empty_map_steps.step_slug
259
+ RETURNING
260
+ pgflow.step_states.*,
261
+ -- Broadcast step:completed event atomically with the UPDATE
262
+ -- Using RETURNING ensures this executes during row processing
263
+ -- and cannot be optimized away by the query planner
264
+ realtime.send(
265
+ jsonb_build_object(
266
+ 'event_type', 'step:completed',
267
+ 'run_id', pgflow.step_states.run_id,
268
+ 'step_slug', pgflow.step_states.step_slug,
269
+ 'status', 'completed',
270
+ 'started_at', pgflow.step_states.started_at,
271
+ 'completed_at', pgflow.step_states.completed_at,
272
+ 'remaining_tasks', 0,
273
+ 'remaining_deps', 0,
274
+ 'output', pgflow.step_states.output -- Use stored output instead of hardcoded []
275
+ ),
276
+ concat('step:', pgflow.step_states.step_slug, ':completed'),
277
+ concat('pgflow:run:', pgflow.step_states.run_id),
278
+ false
279
+ ) as _broadcast_completed -- Prefix with _ to indicate internal use only
280
+ ),
281
+
282
+ -- ==========================================
283
+ -- HANDLE NORMAL STEPS (initial_tasks > 0)
284
+ -- ==========================================
285
+ -- ---------- Find ready steps ----------
286
+ -- Steps with no remaining deps and known task count
287
+ ready_steps AS (
288
+ SELECT *
289
+ FROM pgflow.step_states AS step_state
290
+ WHERE step_state.run_id = start_ready_steps.run_id
291
+ AND step_state.status = 'created'
292
+ AND step_state.remaining_deps = 0
293
+ AND step_state.initial_tasks IS NOT NULL -- NEW: Cannot start with unknown count
294
+ AND step_state.initial_tasks > 0 -- Don't start taskless steps
295
+ -- Exclude empty map steps already handled
296
+ AND NOT EXISTS (
297
+ SELECT 1 FROM empty_map_steps
298
+ WHERE empty_map_steps.run_id = step_state.run_id
299
+ AND empty_map_steps.step_slug = step_state.step_slug
300
+ )
301
+ ORDER BY step_state.step_slug
302
+ FOR UPDATE
303
+ ),
304
+ -- ---------- Mark steps as started ----------
305
+ started_step_states AS (
306
+ UPDATE pgflow.step_states
307
+ SET status = 'started',
308
+ started_at = now(),
309
+ remaining_tasks = ready_steps.initial_tasks -- Copy initial_tasks to remaining_tasks when starting
310
+ FROM ready_steps
311
+ WHERE pgflow.step_states.run_id = start_ready_steps.run_id
312
+ AND pgflow.step_states.step_slug = ready_steps.step_slug
313
+ RETURNING pgflow.step_states.*,
314
+ -- Broadcast step:started event atomically with the UPDATE
315
+ -- Using RETURNING ensures this executes during row processing
316
+ -- and cannot be optimized away by the query planner
317
+ realtime.send(
318
+ jsonb_build_object(
319
+ 'event_type', 'step:started',
320
+ 'run_id', pgflow.step_states.run_id,
321
+ 'step_slug', pgflow.step_states.step_slug,
322
+ 'status', 'started',
323
+ 'started_at', pgflow.step_states.started_at,
324
+ 'remaining_tasks', pgflow.step_states.remaining_tasks,
325
+ 'remaining_deps', pgflow.step_states.remaining_deps
326
+ ),
327
+ concat('step:', pgflow.step_states.step_slug, ':started'),
328
+ concat('pgflow:run:', pgflow.step_states.run_id),
329
+ false
330
+ ) as _broadcast_result -- Prefix with _ to indicate internal use only
331
+ ),
332
+
333
+ -- ==========================================
334
+ -- TASK GENERATION AND QUEUE MESSAGES
335
+ -- ==========================================
336
+ -- ---------- Generate tasks and batch messages ----------
337
+ -- Single steps: 1 task (index 0)
338
+ -- Map steps: N tasks (indices 0..N-1)
339
+ message_batches AS (
340
+ SELECT
341
+ started_step.flow_slug,
342
+ started_step.run_id,
343
+ started_step.step_slug,
344
+ COALESCE(step.opt_start_delay, 0) as delay,
345
+ array_agg(
346
+ jsonb_build_object(
347
+ 'flow_slug', started_step.flow_slug,
348
+ 'run_id', started_step.run_id,
349
+ 'step_slug', started_step.step_slug,
350
+ 'task_index', task_idx.task_index
351
+ ) ORDER BY task_idx.task_index
352
+ ) AS messages,
353
+ array_agg(task_idx.task_index ORDER BY task_idx.task_index) AS task_indices
354
+ FROM started_step_states AS started_step
355
+ JOIN pgflow.steps AS step
356
+ ON step.flow_slug = started_step.flow_slug
357
+ AND step.step_slug = started_step.step_slug
358
+ -- Generate task indices from 0 to initial_tasks-1
359
+ CROSS JOIN LATERAL generate_series(0, started_step.initial_tasks - 1) AS task_idx(task_index)
360
+ GROUP BY started_step.flow_slug, started_step.run_id, started_step.step_slug, step.opt_start_delay
361
+ ),
362
+ -- ---------- Send messages to queue ----------
363
+ -- Uses batch sending for performance with large arrays
364
+ sent_messages AS (
365
+ SELECT
366
+ mb.flow_slug,
367
+ mb.run_id,
368
+ mb.step_slug,
369
+ task_indices.task_index,
370
+ msg_ids.msg_id
371
+ FROM message_batches mb
372
+ CROSS JOIN LATERAL unnest(mb.task_indices) WITH ORDINALITY AS task_indices(task_index, idx_ord)
373
+ CROSS JOIN LATERAL pgmq.send_batch(mb.flow_slug, mb.messages, mb.delay) WITH ORDINALITY AS msg_ids(msg_id, msg_ord)
374
+ WHERE task_indices.idx_ord = msg_ids.msg_ord
375
+ )
376
+
377
+ -- ==========================================
378
+ -- RECORD TASKS IN DATABASE
379
+ -- ==========================================
380
+ INSERT INTO pgflow.step_tasks (flow_slug, run_id, step_slug, task_index, message_id)
381
+ SELECT
382
+ sent_messages.flow_slug,
383
+ sent_messages.run_id,
384
+ sent_messages.step_slug,
385
+ sent_messages.task_index,
386
+ sent_messages.msg_id
387
+ FROM sent_messages;
388
+
389
+ -- ==========================================
390
+ -- BROADCAST REALTIME EVENTS
391
+ -- ==========================================
392
+ -- Note: Both step:completed events for empty maps and step:started events
393
+ -- are now broadcast atomically in their respective CTEs using RETURNING pattern.
394
+ -- This ensures correct ordering, prevents duplicate broadcasts, and guarantees
395
+ -- that events are sent for exactly the rows that were updated.
396
+
397
+ end;
398
+ $$;
399
+ -- Modify "complete_task" function
400
+ CREATE OR REPLACE FUNCTION "pgflow"."complete_task" ("run_id" uuid, "step_slug" text, "task_index" integer, "output" jsonb) RETURNS SETOF "pgflow"."step_tasks" LANGUAGE plpgsql SET "search_path" = '' AS $$
401
+ declare
402
+ v_step_state pgflow.step_states%ROWTYPE;
403
+ v_dependent_map_slug text;
404
+ v_run_record pgflow.runs%ROWTYPE;
405
+ v_step_record pgflow.step_states%ROWTYPE;
406
+ begin
407
+
408
+ -- ==========================================
409
+ -- GUARD: No mutations on failed runs
410
+ -- ==========================================
411
+ IF EXISTS (SELECT 1 FROM pgflow.runs WHERE pgflow.runs.run_id = complete_task.run_id AND pgflow.runs.status = 'failed') THEN
412
+ RETURN QUERY SELECT * FROM pgflow.step_tasks
413
+ WHERE pgflow.step_tasks.run_id = complete_task.run_id
414
+ AND pgflow.step_tasks.step_slug = complete_task.step_slug
415
+ AND pgflow.step_tasks.task_index = complete_task.task_index;
416
+ RETURN;
417
+ END IF;
418
+
419
+ -- ==========================================
420
+ -- LOCK ACQUISITION AND TYPE VALIDATION
421
+ -- ==========================================
422
+ -- Acquire locks first to prevent race conditions
423
+ SELECT * INTO v_run_record FROM pgflow.runs
424
+ WHERE pgflow.runs.run_id = complete_task.run_id
425
+ FOR UPDATE;
426
+
427
+ SELECT * INTO v_step_record FROM pgflow.step_states
428
+ WHERE pgflow.step_states.run_id = complete_task.run_id
429
+ AND pgflow.step_states.step_slug = complete_task.step_slug
430
+ FOR UPDATE;
431
+
432
+ -- Check for type violations AFTER acquiring locks
433
+ SELECT child_step.step_slug INTO v_dependent_map_slug
434
+ FROM pgflow.deps dependency
435
+ JOIN pgflow.steps child_step ON child_step.flow_slug = dependency.flow_slug
436
+ AND child_step.step_slug = dependency.step_slug
437
+ JOIN pgflow.steps parent_step ON parent_step.flow_slug = dependency.flow_slug
438
+ AND parent_step.step_slug = dependency.dep_slug
439
+ JOIN pgflow.step_states child_state ON child_state.flow_slug = child_step.flow_slug
440
+ AND child_state.step_slug = child_step.step_slug
441
+ WHERE dependency.dep_slug = complete_task.step_slug -- parent is the completing step
442
+ AND dependency.flow_slug = v_run_record.flow_slug
443
+ AND parent_step.step_type = 'single' -- Only validate single steps
444
+ AND child_step.step_type = 'map'
445
+ AND child_state.run_id = complete_task.run_id
446
+ AND child_state.initial_tasks IS NULL
447
+ AND (complete_task.output IS NULL OR jsonb_typeof(complete_task.output) != 'array')
448
+ LIMIT 1;
449
+
450
+ -- Handle type violation if detected
451
+ IF v_dependent_map_slug IS NOT NULL THEN
452
+ -- Mark run as failed immediately
453
+ UPDATE pgflow.runs
454
+ SET status = 'failed',
455
+ failed_at = now()
456
+ WHERE pgflow.runs.run_id = complete_task.run_id;
457
+
458
+ -- Broadcast run:failed event
459
+ -- Uses PERFORM pattern to ensure execution (proven reliable pattern in this function)
460
+ PERFORM realtime.send(
461
+ jsonb_build_object(
462
+ 'event_type', 'run:failed',
463
+ 'run_id', complete_task.run_id,
464
+ 'flow_slug', v_run_record.flow_slug,
465
+ 'status', 'failed',
466
+ 'failed_at', now()
467
+ ),
468
+ 'run:failed',
469
+ concat('pgflow:run:', complete_task.run_id),
470
+ false
471
+ );
472
+
473
+ -- Archive all active messages (both queued and started) to prevent orphaned messages
474
+ PERFORM pgmq.archive(
475
+ v_run_record.flow_slug,
476
+ array_agg(st.message_id)
477
+ )
478
+ FROM pgflow.step_tasks st
479
+ WHERE st.run_id = complete_task.run_id
480
+ AND st.status IN ('queued', 'started')
481
+ AND st.message_id IS NOT NULL
482
+ HAVING count(*) > 0; -- Only call archive if there are messages to archive
483
+
484
+ -- Mark current task as failed and store the output
485
+ UPDATE pgflow.step_tasks
486
+ SET status = 'failed',
487
+ failed_at = now(),
488
+ output = complete_task.output, -- Store the output that caused the violation
489
+ error_message = '[TYPE_VIOLATION] Produced ' ||
490
+ CASE WHEN complete_task.output IS NULL THEN 'null'
491
+ ELSE jsonb_typeof(complete_task.output) END ||
492
+ ' instead of array'
493
+ WHERE pgflow.step_tasks.run_id = complete_task.run_id
494
+ AND pgflow.step_tasks.step_slug = complete_task.step_slug
495
+ AND pgflow.step_tasks.task_index = complete_task.task_index;
496
+
497
+ -- Mark step state as failed
498
+ UPDATE pgflow.step_states
499
+ SET status = 'failed',
500
+ failed_at = now(),
501
+ error_message = '[TYPE_VIOLATION] Map step ' || v_dependent_map_slug ||
502
+ ' expects array input but dependency ' || complete_task.step_slug ||
503
+ ' produced ' || CASE WHEN complete_task.output IS NULL THEN 'null'
504
+ ELSE jsonb_typeof(complete_task.output) END
505
+ WHERE pgflow.step_states.run_id = complete_task.run_id
506
+ AND pgflow.step_states.step_slug = complete_task.step_slug;
507
+
508
+ -- Broadcast step:failed event
509
+ -- Uses PERFORM pattern to ensure execution (proven reliable pattern in this function)
510
+ PERFORM realtime.send(
511
+ jsonb_build_object(
512
+ 'event_type', 'step:failed',
513
+ 'run_id', complete_task.run_id,
514
+ 'step_slug', complete_task.step_slug,
515
+ 'status', 'failed',
516
+ 'error_message', '[TYPE_VIOLATION] Map step ' || v_dependent_map_slug ||
517
+ ' expects array input but dependency ' || complete_task.step_slug ||
518
+ ' produced ' || CASE WHEN complete_task.output IS NULL THEN 'null'
519
+ ELSE jsonb_typeof(complete_task.output) END,
520
+ 'failed_at', now()
521
+ ),
522
+ concat('step:', complete_task.step_slug, ':failed'),
523
+ concat('pgflow:run:', complete_task.run_id),
524
+ false
525
+ );
526
+
527
+ -- Archive the current task's message (it was started, now failed)
528
+ PERFORM pgmq.archive(
529
+ v_run_record.flow_slug,
530
+ st.message_id -- Single message, use scalar form
531
+ )
532
+ FROM pgflow.step_tasks st
533
+ WHERE st.run_id = complete_task.run_id
534
+ AND st.step_slug = complete_task.step_slug
535
+ AND st.task_index = complete_task.task_index
536
+ AND st.message_id IS NOT NULL;
537
+
538
+ -- Return empty result
539
+ RETURN QUERY SELECT * FROM pgflow.step_tasks WHERE false;
540
+ RETURN;
541
+ END IF;
542
+
543
+ -- ==========================================
544
+ -- MAIN CTE CHAIN: Update task and propagate changes
545
+ -- ==========================================
546
+ WITH
547
+ -- ---------- Task completion ----------
548
+ -- Update the task record with completion status and output
549
+ task AS (
550
+ UPDATE pgflow.step_tasks
551
+ SET
552
+ status = 'completed',
553
+ completed_at = now(),
554
+ output = complete_task.output
555
+ WHERE pgflow.step_tasks.run_id = complete_task.run_id
556
+ AND pgflow.step_tasks.step_slug = complete_task.step_slug
557
+ AND pgflow.step_tasks.task_index = complete_task.task_index
558
+ AND pgflow.step_tasks.status = 'started'
559
+ RETURNING *
560
+ ),
561
+ -- ---------- Get step type for output handling ----------
562
+ step_def AS (
563
+ SELECT step.step_type
564
+ FROM pgflow.steps step
565
+ JOIN pgflow.runs run ON run.flow_slug = step.flow_slug
566
+ WHERE run.run_id = complete_task.run_id
567
+ AND step.step_slug = complete_task.step_slug
568
+ ),
569
+ -- ---------- Step state update ----------
570
+ -- Decrement remaining_tasks and potentially mark step as completed
571
+ -- Also store output atomically with status transition to completed
572
+ step_state AS (
573
+ UPDATE pgflow.step_states
574
+ SET
575
+ status = CASE
576
+ WHEN pgflow.step_states.remaining_tasks = 1 THEN 'completed' -- Will be 0 after decrement
577
+ ELSE 'started'
578
+ END,
579
+ completed_at = CASE
580
+ WHEN pgflow.step_states.remaining_tasks = 1 THEN now() -- Will be 0 after decrement
581
+ ELSE NULL
582
+ END,
583
+ remaining_tasks = pgflow.step_states.remaining_tasks - 1,
584
+ -- Store output atomically with completion (only when remaining_tasks = 1, meaning step completes)
585
+ output = CASE
586
+ -- Single step: store task output directly when completing
587
+ WHEN (SELECT step_type FROM step_def) = 'single' AND pgflow.step_states.remaining_tasks = 1 THEN
588
+ complete_task.output
589
+ -- Map step: aggregate on completion (ordered by task_index)
590
+ WHEN (SELECT step_type FROM step_def) = 'map' AND pgflow.step_states.remaining_tasks = 1 THEN
591
+ (SELECT COALESCE(jsonb_agg(all_outputs.output ORDER BY all_outputs.task_index), '[]'::jsonb)
592
+ FROM (
593
+ -- All previously completed tasks
594
+ SELECT st.output, st.task_index
595
+ FROM pgflow.step_tasks st
596
+ WHERE st.run_id = complete_task.run_id
597
+ AND st.step_slug = complete_task.step_slug
598
+ AND st.status = 'completed'
599
+ UNION ALL
600
+ -- Current task being completed (not yet visible as completed in snapshot)
601
+ SELECT complete_task.output, complete_task.task_index
602
+ ) all_outputs)
603
+ ELSE pgflow.step_states.output
604
+ END
605
+ FROM task
606
+ WHERE pgflow.step_states.run_id = complete_task.run_id
607
+ AND pgflow.step_states.step_slug = complete_task.step_slug
608
+ RETURNING pgflow.step_states.*
609
+ ),
610
+ -- ---------- Dependency resolution ----------
611
+ -- Find all child steps that depend on the completed parent step (only if parent completed)
612
+ child_steps AS (
613
+ SELECT deps.step_slug AS child_step_slug
614
+ FROM pgflow.deps deps
615
+ JOIN step_state parent_state ON parent_state.status = 'completed' AND deps.flow_slug = parent_state.flow_slug
616
+ WHERE deps.dep_slug = complete_task.step_slug -- dep_slug is the parent, step_slug is the child
617
+ ORDER BY deps.step_slug -- Ensure consistent ordering
618
+ ),
619
+ -- ---------- Lock child steps ----------
620
+ -- Acquire locks on all child steps before updating them
621
+ child_steps_lock AS (
622
+ SELECT * FROM pgflow.step_states
623
+ WHERE pgflow.step_states.run_id = complete_task.run_id
624
+ AND pgflow.step_states.step_slug IN (SELECT child_step_slug FROM child_steps)
625
+ FOR UPDATE
626
+ ),
627
+ -- ---------- Update child steps ----------
628
+ -- Decrement remaining_deps and resolve NULL initial_tasks for map steps
629
+ child_steps_update AS (
630
+ UPDATE pgflow.step_states child_state
631
+ SET remaining_deps = child_state.remaining_deps - 1,
632
+ -- Resolve NULL initial_tasks for child map steps
633
+ -- This is where child maps learn their array size from the parent
634
+ -- This CTE only runs when the parent step is complete (see child_steps JOIN)
635
+ initial_tasks = CASE
636
+ WHEN child_step.step_type = 'map' AND child_state.initial_tasks IS NULL THEN
637
+ CASE
638
+ WHEN parent_step.step_type = 'map' THEN
639
+ -- Map->map: Count all completed tasks from parent map
640
+ -- We add 1 because the current task is being completed in this transaction
641
+ -- but isn't yet visible as 'completed' in the step_tasks table
642
+ -- TODO: Refactor to use future column step_states.total_tasks
643
+ -- Would eliminate the COUNT query and just use parent_state.total_tasks
644
+ (SELECT COUNT(*)::int + 1
645
+ FROM pgflow.step_tasks parent_tasks
646
+ WHERE parent_tasks.run_id = complete_task.run_id
647
+ AND parent_tasks.step_slug = complete_task.step_slug
648
+ AND parent_tasks.status = 'completed'
649
+ AND parent_tasks.task_index != complete_task.task_index)
650
+ ELSE
651
+ -- Single->map: Use output array length (single steps complete immediately)
652
+ CASE
653
+ WHEN complete_task.output IS NOT NULL
654
+ AND jsonb_typeof(complete_task.output) = 'array' THEN
655
+ jsonb_array_length(complete_task.output)
656
+ ELSE NULL -- Keep NULL if not an array
657
+ END
658
+ END
659
+ ELSE child_state.initial_tasks -- Keep existing value (including NULL)
660
+ END
661
+ FROM child_steps children
662
+ JOIN pgflow.steps child_step ON child_step.flow_slug = (SELECT r.flow_slug FROM pgflow.runs r WHERE r.run_id = complete_task.run_id)
663
+ AND child_step.step_slug = children.child_step_slug
664
+ JOIN pgflow.steps parent_step ON parent_step.flow_slug = (SELECT r.flow_slug FROM pgflow.runs r WHERE r.run_id = complete_task.run_id)
665
+ AND parent_step.step_slug = complete_task.step_slug
666
+ WHERE child_state.run_id = complete_task.run_id
667
+ AND child_state.step_slug = children.child_step_slug
668
+ )
669
+ -- ---------- Update run remaining_steps ----------
670
+ -- Decrement the run's remaining_steps counter if step completed
671
+ UPDATE pgflow.runs
672
+ SET remaining_steps = pgflow.runs.remaining_steps - 1
673
+ FROM step_state
674
+ WHERE pgflow.runs.run_id = complete_task.run_id
675
+ AND step_state.status = 'completed';
676
+
677
+ -- ==========================================
678
+ -- POST-COMPLETION ACTIONS
679
+ -- ==========================================
680
+
681
+ -- ---------- Get updated state for broadcasting ----------
682
+ SELECT * INTO v_step_state FROM pgflow.step_states
683
+ WHERE pgflow.step_states.run_id = complete_task.run_id AND pgflow.step_states.step_slug = complete_task.step_slug;
684
+
685
+ -- ---------- Handle step completion ----------
686
+ IF v_step_state.status = 'completed' THEN
687
+ -- Broadcast step:completed event FIRST (before cascade)
688
+ -- This ensures parent broadcasts before its dependent children
689
+ -- Use stored output from step_states (set atomically during status transition)
690
+ PERFORM realtime.send(
691
+ jsonb_build_object(
692
+ 'event_type', 'step:completed',
693
+ 'run_id', complete_task.run_id,
694
+ 'step_slug', complete_task.step_slug,
695
+ 'status', 'completed',
696
+ 'output', v_step_state.output, -- Use stored output instead of re-aggregating
697
+ 'completed_at', v_step_state.completed_at
698
+ ),
699
+ concat('step:', complete_task.step_slug, ':completed'),
700
+ concat('pgflow:run:', complete_task.run_id),
701
+ false
702
+ );
703
+
704
+ -- THEN cascade complete any taskless steps that are now ready
705
+ -- This ensures dependent children broadcast AFTER their parent
706
+ PERFORM pgflow.cascade_complete_taskless_steps(complete_task.run_id);
707
+ END IF;
708
+
709
+ -- ---------- Archive completed task message ----------
710
+ -- Move message from active queue to archive table
711
+ PERFORM (
712
+ WITH completed_tasks AS (
713
+ SELECT r.flow_slug, st.message_id
714
+ FROM pgflow.step_tasks st
715
+ JOIN pgflow.runs r ON st.run_id = r.run_id
716
+ WHERE st.run_id = complete_task.run_id
717
+ AND st.step_slug = complete_task.step_slug
718
+ AND st.task_index = complete_task.task_index
719
+ AND st.status = 'completed'
720
+ )
721
+ SELECT pgmq.archive(ct.flow_slug, ct.message_id)
722
+ FROM completed_tasks ct
723
+ WHERE EXISTS (SELECT 1 FROM completed_tasks)
724
+ );
725
+
726
+ -- ---------- Trigger next steps ----------
727
+ -- Start any steps that are now ready (deps satisfied)
728
+ PERFORM pgflow.start_ready_steps(complete_task.run_id);
729
+
730
+ -- Check if the entire run is complete
731
+ PERFORM pgflow.maybe_complete_run(complete_task.run_id);
732
+
733
+ -- ---------- Return completed task ----------
734
+ RETURN QUERY SELECT *
735
+ FROM pgflow.step_tasks AS step_task
736
+ WHERE step_task.run_id = complete_task.run_id
737
+ AND step_task.step_slug = complete_task.step_slug
738
+ AND step_task.task_index = complete_task.task_index;
739
+
740
+ end;
741
+ $$;
742
+ -- Modify "start_tasks" function
743
+ CREATE OR REPLACE FUNCTION "pgflow"."start_tasks" ("flow_slug" text, "msg_ids" bigint[], "worker_id" uuid) RETURNS SETOF "pgflow"."step_task_record" LANGUAGE sql SET "search_path" = '' AS $$
744
+ with tasks as (
745
+ select
746
+ task.flow_slug,
747
+ task.run_id,
748
+ task.step_slug,
749
+ task.task_index,
750
+ task.message_id
751
+ from pgflow.step_tasks as task
752
+ join pgflow.runs r on r.run_id = task.run_id
753
+ where task.flow_slug = start_tasks.flow_slug
754
+ and task.message_id = any(msg_ids)
755
+ and task.status = 'queued'
756
+ -- MVP: Don't start tasks on failed runs
757
+ and r.status != 'failed'
758
+ ),
759
+ start_tasks_update as (
760
+ update pgflow.step_tasks
761
+ set
762
+ attempts_count = attempts_count + 1,
763
+ status = 'started',
764
+ started_at = now(),
765
+ last_worker_id = worker_id
766
+ from tasks
767
+ where step_tasks.message_id = tasks.message_id
768
+ and step_tasks.flow_slug = tasks.flow_slug
769
+ and step_tasks.status = 'queued'
770
+ ),
771
+ runs as (
772
+ select
773
+ r.run_id,
774
+ r.input
775
+ from pgflow.runs r
776
+ where r.run_id in (select run_id from tasks)
777
+ ),
778
+ deps as (
779
+ select
780
+ st.run_id,
781
+ st.step_slug,
782
+ dep.dep_slug,
783
+ -- Read output directly from step_states (already aggregated by writers)
784
+ dep_state.output as dep_output
785
+ from tasks st
786
+ join pgflow.deps dep on dep.flow_slug = st.flow_slug and dep.step_slug = st.step_slug
787
+ join pgflow.step_states dep_state on
788
+ dep_state.run_id = st.run_id and
789
+ dep_state.step_slug = dep.dep_slug
790
+ ),
791
+ deps_outputs as (
792
+ select
793
+ d.run_id,
794
+ d.step_slug,
795
+ jsonb_object_agg(d.dep_slug, d.dep_output) as deps_output,
796
+ count(*) as dep_count
797
+ from deps d
798
+ group by d.run_id, d.step_slug
799
+ ),
800
+ timeouts as (
801
+ select
802
+ task.message_id,
803
+ task.flow_slug,
804
+ coalesce(step.opt_timeout, flow.opt_timeout) + 2 as vt_delay
805
+ from tasks task
806
+ join pgflow.flows flow on flow.flow_slug = task.flow_slug
807
+ join pgflow.steps step on step.flow_slug = task.flow_slug and step.step_slug = task.step_slug
808
+ ),
809
+ -- Batch update visibility timeouts for all messages
810
+ set_vt_batch as (
811
+ select pgflow.set_vt_batch(
812
+ start_tasks.flow_slug,
813
+ array_agg(t.message_id order by t.message_id),
814
+ array_agg(t.vt_delay order by t.message_id)
815
+ )
816
+ from timeouts t
817
+ )
818
+ select
819
+ st.flow_slug,
820
+ st.run_id,
821
+ st.step_slug,
822
+ -- ==========================================
823
+ -- INPUT CONSTRUCTION LOGIC
824
+ -- ==========================================
825
+ -- This nested CASE statement determines how to construct the input
826
+ -- for each task based on the step type (map vs non-map).
827
+ --
828
+ -- The fundamental difference:
829
+ -- - Map steps: Receive RAW array elements (e.g., just 42 or "hello")
830
+ -- - Non-map steps: Receive structured objects with named keys
831
+ -- (e.g., {"run": {...}, "dependency1": {...}})
832
+ -- ==========================================
833
+ CASE
834
+ -- -------------------- MAP STEPS --------------------
835
+ -- Map steps process arrays element-by-element.
836
+ -- Each task receives ONE element from the array at its task_index position.
837
+ WHEN step.step_type = 'map' THEN
838
+ -- Map steps get raw array elements without any wrapper object
839
+ CASE
840
+ -- ROOT MAP: Gets array from run input
841
+ -- Example: run input = [1, 2, 3]
842
+ -- task 0 gets: 1
843
+ -- task 1 gets: 2
844
+ -- task 2 gets: 3
845
+ WHEN step.deps_count = 0 THEN
846
+ -- Root map (deps_count = 0): no dependencies, reads from run input.
847
+ -- Extract the element at task_index from the run's input array.
848
+ -- Note: If run input is not an array, this will return NULL
849
+ -- and the flow will fail (validated in start_flow).
850
+ jsonb_array_element(r.input, st.task_index)
851
+
852
+ -- DEPENDENT MAP: Gets array from its single dependency
853
+ -- Example: dependency output = ["a", "b", "c"]
854
+ -- task 0 gets: "a"
855
+ -- task 1 gets: "b"
856
+ -- task 2 gets: "c"
857
+ ELSE
858
+ -- Has dependencies (should be exactly 1 for map steps).
859
+ -- Extract the element at task_index from the dependency's output array.
860
+ --
861
+ -- Why the subquery with jsonb_each?
862
+ -- - The dependency outputs a raw array: [1, 2, 3]
863
+ -- - deps_outputs aggregates it into: {"dep_name": [1, 2, 3]}
864
+ -- - We need to unwrap and get just the array value
865
+ -- - Map steps have exactly 1 dependency (enforced by add_step)
866
+ -- - So jsonb_each will return exactly 1 row
867
+ -- - We extract the 'value' which is the raw array [1, 2, 3]
868
+ -- - Then get the element at task_index from that array
869
+ (SELECT jsonb_array_element(value, st.task_index)
870
+ FROM jsonb_each(dep_out.deps_output)
871
+ LIMIT 1)
872
+ END
873
+
874
+ -- -------------------- NON-MAP STEPS --------------------
875
+ -- Regular (non-map) steps receive dependency outputs as a structured object.
876
+ -- Root steps (no dependencies) get empty object - they access flowInput via context.
877
+ -- Dependent steps get only their dependency outputs.
878
+ ELSE
879
+ -- Non-map steps get structured input with dependency keys only
880
+ -- Example for dependent step: {
881
+ -- "step1": {"output": "from_step1"},
882
+ -- "step2": {"output": "from_step2"}
883
+ -- }
884
+ -- Example for root step: {}
885
+ --
886
+ -- Note: flow_input is available separately in the returned record
887
+ -- for workers to access via context.flowInput
888
+ coalesce(dep_out.deps_output, '{}'::jsonb)
889
+ END as input,
890
+ st.message_id as msg_id,
891
+ st.task_index as task_index,
892
+ -- flow_input: Original run input for worker context
893
+ -- Only included for root non-map steps to avoid data duplication.
894
+ -- Root map steps: flowInput IS the array, useless to include
895
+ -- Dependent steps: lazy load via ctx.flowInput when needed
896
+ CASE
897
+ WHEN step.step_type != 'map' AND step.deps_count = 0
898
+ THEN r.input
899
+ ELSE NULL
900
+ END as flow_input
901
+ from tasks st
902
+ join runs r on st.run_id = r.run_id
903
+ join pgflow.steps step on
904
+ step.flow_slug = st.flow_slug and
905
+ step.step_slug = st.step_slug
906
+ left join deps_outputs dep_out on
907
+ dep_out.run_id = st.run_id and
908
+ dep_out.step_slug = st.step_slug
909
+ $$;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pgflow/core",
3
- "version": "0.12.0",
3
+ "version": "0.13.1",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "postgres": "^3.4.5",
31
- "@pgflow/dsl": "0.12.0"
31
+ "@pgflow/dsl": "0.13.1"
32
32
  },
33
33
  "publishConfig": {
34
34
  "access": "public"