@runa-ai/runa-cli 0.5.62 → 0.5.63

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.
@@ -16,7 +16,7 @@
16
16
  *
17
17
  * Statistics collected per schema:
18
18
  * - Tables (T): Table count
19
- * - Functions (F): Function count (excluding pg_ internal and Supabase extensions)
19
+ * - Functions (F): Function count (excluding extension-owned and platform functions)
20
20
  * - Policies (P): RLS policy count
21
21
  * - Indexes (I): Index count (excluding auto-generated constraint indexes)
22
22
  * - Triggers (Tr): Trigger count
@@ -25,15 +25,12 @@
25
25
  * - All indexes backing constraints (detected via pg_constraint join)
26
26
  * - This includes PRIMARY KEY, UNIQUE (single and multi-column), etc.
27
27
  *
28
- * Excluded from function count (Supabase-managed):
29
- * - pg_* (PostgreSQL internal)
30
- * - plpgsql_check*, plpgsql_coverage*, plpgsql_profiler*, plpgsql_show* (plpgsql_check extension)
31
- * - __plpgsql* (plpgsql_check internal)
32
- * - supabase_* (Supabase internal functions)
33
- * - postgrest_* (PostgREST internal functions)
34
- * - graphql_* (pg_graphql extension functions)
35
- * - pgrst_* (PostgREST internal)
36
- * - _pgrst_* (PostgREST internal)
28
+ * Excluded from function count:
29
+ * - Extension-owned functions (detected via pg_depend with deptype='e')
30
+ * This covers hstore, pg_trgm, plpgsql_check, pg_graphql, etc.
31
+ * regardless of which schema they are installed in.
32
+ * - Supabase platform functions: supabase_* (not extension-owned)
33
+ * - PostgREST platform functions: postgrest_*, pgrst_*, _pgrst_* (not extension-owned)
37
34
  */
38
35
  /**
39
36
  * Statistics for a single schema.
@@ -149,6 +146,36 @@ export declare function getStatsDiffDirection(stats: SchemaStats, reference: Sch
149
146
  * Get the list of schema names that have objects.
150
147
  */
151
148
  export declare function getActiveSchemas(stats: EnvironmentSchemaStats): string[];
149
+ /**
150
+ * Expected drift entry from runa.config.ts.
151
+ * When a stat field difference matches an entry, the diff is annotated
152
+ * as "known" instead of flagged as a warning.
153
+ */
154
+ export interface ExpectedDriftEntry {
155
+ /** Which stat field has expected drift */
156
+ field: 'tables' | 'functions' | 'policies' | 'indexes' | 'triggers';
157
+ /** Schemas where drift is expected (undefined = all schemas) */
158
+ schemas?: string[];
159
+ /** Human-readable reason for the expected drift */
160
+ reason: string;
161
+ }
162
+ /**
163
+ * Check if a specific field diff for a schema is expected (known) drift.
164
+ *
165
+ * @param schemaName - Schema where the diff was detected
166
+ * @param fieldAbbrev - Field abbreviation ('T', 'F', 'P', 'I')
167
+ * @param expectedDrift - Expected drift entries from config
168
+ * @returns The matching entry with reason, or null if unexpected
169
+ */
170
+ export declare function findExpectedDrift(schemaName: string, fieldAbbrev: string, expectedDrift: ExpectedDriftEntry[]): ExpectedDriftEntry | null;
171
+ /**
172
+ * Check if ALL field diffs for a schema are covered by expected drift.
173
+ */
174
+ export declare function isAllDriftExpected(schemaName: string, fieldDiffs: FieldDiff[], expectedDrift: ExpectedDriftEntry[]): boolean;
175
+ /**
176
+ * Collect unique reasons from expected drift entries that match field diffs.
177
+ */
178
+ export declare function collectExpectedDriftReasons(schemaName: string, fieldDiffs: FieldDiff[], expectedDrift: ExpectedDriftEntry[]): string[];
152
179
  /**
153
180
  * Result of comparing index lists between two environments.
154
181
  */
@@ -1 +1 @@
1
- {"version":3,"file":"schema-stats.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/ci/machine/actors/db/schema-stats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-stats.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/ci/machine/actors/db/schema-stats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAQH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,SAAS,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,+BAA+B;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,mFAAmF;IACnF,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,KAAK,EAAE,sBAAsB,CAAC;IAC9B,2DAA2D;IAC3D,EAAE,EAAE,sBAAsB,CAAC;IAC3B,wDAAwD;IACxD,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC3C;AAqND;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAgD3F;AAMD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,UAAQ,GAAG,MAAM,CAS3F;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,GAAG,MAAM,CAsB5F;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAUlE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAQpE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAO7E;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,GAAG,SAAS,EAAE,CAqCrF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,WAAW,GACrB,MAAM,GAAG,MAAM,GAAG,MAAM,CAU1B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,EAAE,CAKxE;AAMD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IACpE,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,kBAAkB,EAAE,GAClC,kBAAkB,GAAG,IAAI,CAW3B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,EAAE,EACvB,aAAa,EAAE,kBAAkB,EAAE,GAClC,OAAO,CAIT;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,EAAE,EACvB,aAAa,EAAE,kBAAkB,EAAE,GAClC,MAAM,EAAE,CASV;AAMD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,yDAAyD;IACzD,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,qDAAqD;IACrD,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,sBAAsB,EACjC,MAAM,EAAE,sBAAsB,GAC7B,SAAS,CAeX;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CASxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAErD"}
@@ -14,6 +14,7 @@
14
14
  * - resolvePolicy: Resolve CI policy from config or defaults
15
15
  * - detectApp: Detect app configuration for E2E tests
16
16
  */
17
+ import type { ExpectedDriftEntry } from '../../actors/db/schema-stats.js';
17
18
  import type { CiPrPolicy, DetectedApp, PrContext, RepoKind } from '../../types.js';
18
19
  /**
19
20
  * Input for resolving PR context (captured at entry point).
@@ -115,6 +116,7 @@ export interface PrSetupBaseOutput {
115
116
  supabaseUrl: string;
116
117
  anonKey: string;
117
118
  layers: number[];
119
+ expectedDrift: ExpectedDriftEntry[];
118
120
  error?: string;
119
121
  }
120
122
  /**
@@ -141,5 +143,6 @@ export declare function executePrSetupBase(input: PrSetupBaseInput, ensureTmpDir
141
143
  policy: CiPrPolicy;
142
144
  app: DetectedApp | null;
143
145
  layers: number[];
146
+ expectedDrift: ExpectedDriftEntry[];
144
147
  }>;
145
148
  //# sourceMappingURL=pr-common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pr-common.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/ci/machine/actors/setup/pr-common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pr-common.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/ci/machine/actors/setup/pr-common.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * Purpose: Shared types for GitHub PR comment generation
5
5
  * Extracted from: github-comment.ts for better code organization
6
6
  */
7
+ import type { ExpectedDriftEntry } from '../actors/db/schema-stats.js';
7
8
  import type { LayerResult, PrContext, ProductionPreview, SchemaDriftSnapshot, SchemaStatsSnapshot, SupabaseConnection } from '../types.js';
8
9
  /**
9
10
  * CI step definition for progress tracking.
@@ -42,6 +43,8 @@ export interface CommentInput {
42
43
  layerSkipReasons?: Record<number, string>;
43
44
  /** Originally selected layers (before filtering by content) */
44
45
  originalSelectedLayers?: number[];
46
+ /** Expected drift entries from runa.config.ts for annotating known diffs */
47
+ expectedDrift?: ExpectedDriftEntry[];
45
48
  }
46
49
  /**
47
50
  * Input for progress comment generation.
@@ -1 +1 @@
1
- {"version":3,"file":"github-comment-types.d.ts","sourceRoot":"","sources":["../../../../../src/commands/ci/machine/formatters/github-comment-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,MAAM,MAAM,MAAM,GACd,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,cAAc,GACd,OAAO,GACP,UAAU,GACV,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAM1D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1C,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,sFAAsF;IACtF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gDAAgD;IAChD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,+DAA+D;IAC/D,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1C,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,kDAAkD;IAClD,YAAY,CAAC,EAAE;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAQ5E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,UAAe,CAAC"}
1
+ {"version":3,"file":"github-comment-types.d.ts","sourceRoot":"","sources":["../../../../../src/commands/ci/machine/formatters/github-comment-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"github-comment.d.ts","sourceRoot":"","sources":["../../../../../src/commands/ci/machine/formatters/github-comment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EACV,MAAM,EACN,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,WAAW,GACZ,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,YAAY,GACb,MAAM,qBAAqB,CAAC;AAM7B;;GAEG;AACH,UAAU,0BAA0B;IAClC,sFAAsF;IACtF,cAAc,EAAE,IAAI,CAAC;IACrB,gDAAgD;IAChD,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,0BAA0B,GACnC,YAAY,CAqBd;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,EAClB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EAAE,EACxB,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,WAAW,CAAC,EAAE,WAAW,GACxB,oBAAoB,CActB"}
1
+ {"version":3,"file":"github-comment.d.ts","sourceRoot":"","sources":["../../../../../src/commands/ci/machine/formatters/github-comment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EACV,MAAM,EACN,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,WAAW,GACZ,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,YAAY,GACb,MAAM,qBAAqB,CAAC;AAM7B;;GAEG;AACH,UAAU,0BAA0B;IAClC,sFAAsF;IACtF,cAAc,EAAE,IAAI,CAAC;IACrB,gDAAgD;IAChD,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,0BAA0B,GACnC,YAAY,CAsBd;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,EAClB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EAAE,EACxB,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,WAAW,CAAC,EAAE,WAAW,GACxB,oBAAoB,CActB"}
@@ -1 +1 @@
1
- {"version":3,"file":"final-comment.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/ci/machine/formatters/sections/final-comment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAgS1E;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAMxC;AAkDD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CA2C/D"}
1
+ {"version":3,"file":"final-comment.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/ci/machine/formatters/sections/final-comment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAgS1E;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAMxC;AAkDD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CA+C/D"}
@@ -10,17 +10,20 @@
10
10
  * | accounts | 5T 3F 12P 3I | 5T 3F 12P 3I | 📝 5T 3F 12P **2I** |
11
11
  *
12
12
  * Diff highlighting:
13
- * - ⚠️ = CI differs from Local (SSOT)
13
+ * - ⚠️ = CI differs from Local (SSOT) - unexpected
14
14
  * - 📝 = Prod differs from Local (schema changes pending)
15
+ * - 📋 = Known drift (matches expectedDrift config)
15
16
  * - **bold** = specific field that differs
16
17
  */
18
+ import { type ExpectedDriftEntry } from '../../actors/db/schema-stats.js';
17
19
  import type { SchemaGitDiff, SchemaStatsSnapshot } from '../../types.js';
18
20
  /**
19
21
  * Format schema statistics as a hybrid matrix table.
20
22
  *
21
- * Main table: Schema × Environment with T (Tables), F (Functions), P (Policies)
23
+ * Main table: Schema x Environment with T (Tables), F (Functions), P (Policies)
22
24
  * Summary line: All types including I (Indexes), Tr (Triggers)
23
25
  * Index diff: Shows which specific indexes are missing/extra in Production
26
+ * Expected drift: Annotates known diffs with 📋 instead of 📝
24
27
  */
25
- export declare function formatSchemaMatrix(schemaStats: SchemaStatsSnapshot | null, gitDiff: SchemaGitDiff | null): string[];
28
+ export declare function formatSchemaMatrix(schemaStats: SchemaStatsSnapshot | null, gitDiff: SchemaGitDiff | null, expectedDrift?: ExpectedDriftEntry[]): string[];
26
29
  //# sourceMappingURL=schema-matrix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-matrix.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/ci/machine/formatters/sections/schema-matrix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAaH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAoLzE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,mBAAmB,GAAG,IAAI,EACvC,OAAO,EAAE,aAAa,GAAG,IAAI,GAC5B,MAAM,EAAE,CAkDV"}
1
+ {"version":3,"file":"schema-matrix.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/ci/machine/formatters/sections/schema-matrix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAYL,KAAK,kBAAkB,EAExB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AA2OzE;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,mBAAmB,GAAG,IAAI,EACvC,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,aAAa,GAAE,kBAAkB,EAAO,GACvC,MAAM,EAAE,CA0DV"}
@@ -1 +1 @@
1
- {"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../../../src/commands/ci/machine/machine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,EAAU,KAAK,YAAY,EAAS,MAAM,QAAQ,CAAC;AAkD1D,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAqB,MAAM,YAAY,CAAC;AAexE,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAslCpB,CAAC;AAMH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC;AACzC,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;AAMxD;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAE5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAE3D"}
1
+ {"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../../../src/commands/ci/machine/machine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,EAAU,KAAK,YAAY,EAAS,MAAM,QAAQ,CAAC;AAkD1D,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAqB,MAAM,YAAY,CAAC;AAexE,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAulCpB,CAAC;AAMH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC;AACzC,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;AAMxD;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAE5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAE3D"}
@@ -13,7 +13,7 @@
13
13
  * - types.ts: Re-exports + machine-specific types (CiContext, CiEvent)
14
14
  */
15
15
  import type { CiSummary } from '../utils/ci-summary.js';
16
- import type { SchemaStatsSnapshot } from './actors/db/schema-stats.js';
16
+ import type { ExpectedDriftEntry, SchemaStatsSnapshot } from './actors/db/schema-stats.js';
17
17
  import type { CiDbMode as _CiDbMode, CiExecutionEnv as _CiExecutionEnv, CiInput as _CiInput, CiMode as _CiMode, CiOutput as _CiOutput, CiPhase as _CiPhase, CiPrPolicy as _CiPrPolicy, DetectedApp as _DetectedApp, LayerSummary as _LayerResult, LayerStatus as _LayerStatus, PrContext as _PrContext, RepoKind as _RepoKind, StepSummary as _StepResult, StepStatus as _StepStatus, SupabaseConnection as _SupabaseConnection } from './contract.js';
18
18
  export type CiMode = _CiMode;
19
19
  export type CiExecutionEnv = _CiExecutionEnv;
@@ -30,7 +30,7 @@ export type CiPrPolicy = _CiPrPolicy;
30
30
  export type SupabaseConnection = _SupabaseConnection;
31
31
  export type StepResult = _StepResult;
32
32
  export type LayerResult = _LayerResult;
33
- export type { SchemaStatsSnapshot } from './actors/db/schema-stats.js';
33
+ export type { ExpectedDriftEntry, SchemaStatsSnapshot } from './actors/db/schema-stats.js';
34
34
  /**
35
35
  * Schema change statistics extracted from SQL diff.
36
36
  */
@@ -193,6 +193,8 @@ export interface CiContext {
193
193
  productionPreview: ProductionPreview | null;
194
194
  /** Schema statistics snapshot (Local/CI/Prod comparison) */
195
195
  schemaStats: SchemaStatsSnapshot | null;
196
+ /** Expected drift entries from runa.config.ts */
197
+ expectedDrift: ExpectedDriftEntry[];
196
198
  /** Start time */
197
199
  startTime: number;
198
200
  /** Duration in milliseconds */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/commands/ci/machine/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/commands/ci/machine/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"actors.d.ts","sourceRoot":"","sources":["../../../../src/commands/db/apply/actors.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAgFlD,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA2yBD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB;WAExB,YAAY;eAAa,MAAM;UAAQ,KAAK,GAAG,MAAM;gCA+C9D,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB;WAEnB,YAAY;eAAa,MAAM;gCAmHxC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;cACjB,MAAM,EAAE;;WACX,YAAY;eAAa,MAAM;gCAwBxC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU;aACV,OAAO;;WACT,YAAY;eAAa,MAAM;gCAqDxC,CAAC"}
1
+ {"version":3,"file":"actors.d.ts","sourceRoot":"","sources":["../../../../src/commands/db/apply/actors.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAgFlD,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA2yBD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB;WAExB,YAAY;eAAa,MAAM;UAAQ,KAAK,GAAG,MAAM;gCA+C9D,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB;WAEnB,YAAY;eAAa,MAAM;gCAmHxC,CAAC;AAkCH;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;cACjB,MAAM,EAAE;;WACX,YAAY;eAAa,MAAM;gCAwBxC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU;aACV,OAAO;;WACT,YAAY;eAAa,MAAM;gCAmExC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"db-apply.d.ts","sourceRoot":"","sources":["../../../../src/commands/db/commands/db-apply.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgLpC;;GAEG;AACH,eAAO,MAAM,YAAY,SAmDrB,CAAC"}
1
+ {"version":3,"file":"db-apply.d.ts","sourceRoot":"","sources":["../../../../src/commands/db/commands/db-apply.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2NpC;;GAEG;AACH,eAAO,MAAM,YAAY,SAsDrB,CAAC"}
package/dist/index.js CHANGED
@@ -1161,7 +1161,7 @@ var CLI_VERSION, HAS_ADMIN_COMMAND;
1161
1161
  var init_version = __esm({
1162
1162
  "src/version.ts"() {
1163
1163
  init_esm_shims();
1164
- CLI_VERSION = "0.5.62";
1164
+ CLI_VERSION = "0.5.63";
1165
1165
  HAS_ADMIN_COMMAND = false;
1166
1166
  }
1167
1167
  });
@@ -8069,6 +8069,7 @@ function createErrorOutput(repoRoot, error, extraFields) {
8069
8069
  supabaseUrl: "",
8070
8070
  anonKey: "",
8071
8071
  layers: [],
8072
+ expectedDrift: [],
8072
8073
  error: error instanceof Error ? error.message : String(error)
8073
8074
  };
8074
8075
  return { ...baseError, ...extraFields };
@@ -8092,7 +8093,9 @@ async function executePrSetupBase(input3, ensureTmpDir) {
8092
8093
  } : void 0;
8093
8094
  const app = detectApp(repoRoot, appConfigOverride);
8094
8095
  const layers = input3.layers || [1, 2, 3, 4];
8095
- return { repoRoot, tmpDir, repoKind, prContext, policy, app, layers };
8096
+ const rawDrift = configResult?.config?.database?.pgSchemaDiff?.expectedDrift;
8097
+ const expectedDrift = rawDrift ? rawDrift : [];
8098
+ return { repoRoot, tmpDir, repoKind, prContext, policy, app, layers, expectedDrift };
8096
8099
  }
8097
8100
 
8098
8101
  // src/commands/ci/utils/app-runtime.ts
@@ -12208,23 +12211,19 @@ async function executeSchemaQueries(sql, schemaList, schemas, total) {
12208
12211
  FROM pg_proc p
12209
12212
  JOIN pg_namespace n ON p.pronamespace = n.oid
12210
12213
  WHERE n.nspname IN (${sql.unsafe(schemaList)})
12211
- -- PostgreSQL internal
12212
- AND p.proname NOT LIKE 'pg_%'
12213
- -- plpgsql_check extension (~24 functions in production)
12214
- AND p.proname NOT LIKE 'plpgsql_check%'
12215
- AND p.proname NOT LIKE 'plpgsql_coverage%'
12216
- AND p.proname NOT LIKE 'plpgsql_profiler%'
12217
- AND p.proname NOT LIKE 'plpgsql_show%'
12218
- AND p.proname NOT LIKE '__plpgsql%'
12219
- -- Supabase internal functions
12214
+ AND p.prokind = 'f'
12215
+ -- Exclude extension-owned functions via pg_depend (covers all extensions)
12216
+ AND NOT EXISTS (
12217
+ SELECT 1 FROM pg_depend d
12218
+ WHERE d.objid = p.oid
12219
+ AND d.deptype = 'e'
12220
+ )
12221
+ -- Supabase platform functions (not extension-owned, created by platform migrations)
12220
12222
  AND p.proname NOT LIKE 'supabase_%'
12221
- -- PostgREST internal functions
12223
+ -- PostgREST platform functions (not extension-owned)
12222
12224
  AND p.proname NOT LIKE 'postgrest_%'
12223
12225
  AND p.proname NOT LIKE 'pgrst_%'
12224
12226
  AND p.proname NOT LIKE '_pgrst_%'
12225
- -- pg_graphql extension functions (if installed in target schema)
12226
- AND p.proname NOT LIKE 'graphql_%'
12227
- AND p.prokind = 'f'
12228
12227
  GROUP BY n.nspname
12229
12228
  `;
12230
12229
  processQueryResult(functionsResult, schemas, total, "functions");
@@ -12376,9 +12375,73 @@ function formatTotalStatsCompact(stats) {
12376
12375
  function hasDisplayedStatsDiff(a, b) {
12377
12376
  return a.tables !== b.tables || a.functions !== b.functions || a.policies !== b.policies || a.indexes !== b.indexes;
12378
12377
  }
12378
+ function getFieldDiffs(stats, reference) {
12379
+ const diffs = [];
12380
+ if (stats.tables !== reference.tables) {
12381
+ diffs.push({
12382
+ field: "T",
12383
+ value: stats.tables,
12384
+ reference: reference.tables,
12385
+ delta: stats.tables - reference.tables
12386
+ });
12387
+ }
12388
+ if (stats.functions !== reference.functions) {
12389
+ diffs.push({
12390
+ field: "F",
12391
+ value: stats.functions,
12392
+ reference: reference.functions,
12393
+ delta: stats.functions - reference.functions
12394
+ });
12395
+ }
12396
+ if (stats.policies !== reference.policies) {
12397
+ diffs.push({
12398
+ field: "P",
12399
+ value: stats.policies,
12400
+ reference: reference.policies,
12401
+ delta: stats.policies - reference.policies
12402
+ });
12403
+ }
12404
+ if (stats.indexes !== reference.indexes) {
12405
+ diffs.push({
12406
+ field: "I",
12407
+ value: stats.indexes,
12408
+ reference: reference.indexes,
12409
+ delta: stats.indexes - reference.indexes
12410
+ });
12411
+ }
12412
+ return diffs;
12413
+ }
12379
12414
  function getActiveSchemas(stats) {
12380
12415
  return Object.entries(stats.schemas).filter(([_, s]) => s.tables > 0 || s.functions > 0 || s.policies > 0).map(([name]) => name).sort();
12381
12416
  }
12417
+ var FIELD_ABBREV_TO_NAME = {
12418
+ T: "tables",
12419
+ F: "functions",
12420
+ P: "policies",
12421
+ I: "indexes"
12422
+ };
12423
+ function findExpectedDrift(schemaName, fieldAbbrev, expectedDrift) {
12424
+ const fieldName = FIELD_ABBREV_TO_NAME[fieldAbbrev];
12425
+ if (!fieldName) return null;
12426
+ return expectedDrift.find(
12427
+ (entry) => entry.field === fieldName && (entry.schemas === void 0 || entry.schemas.includes(schemaName))
12428
+ ) ?? null;
12429
+ }
12430
+ function isAllDriftExpected(schemaName, fieldDiffs, expectedDrift) {
12431
+ return fieldDiffs.every(
12432
+ (diff) => findExpectedDrift(schemaName, diff.field, expectedDrift) !== null
12433
+ );
12434
+ }
12435
+ function collectExpectedDriftReasons(schemaName, fieldDiffs, expectedDrift) {
12436
+ const reasons = /* @__PURE__ */ new Set();
12437
+ for (const diff of fieldDiffs) {
12438
+ const entry = findExpectedDrift(schemaName, diff.field, expectedDrift);
12439
+ if (entry) {
12440
+ reasons.add(entry.reason);
12441
+ }
12442
+ }
12443
+ return Array.from(reasons);
12444
+ }
12382
12445
  function compareIndexLists(reference, target) {
12383
12446
  const refIndexes = reference.indexList || [];
12384
12447
  const targetIndexes = target.indexList || [];
@@ -14625,11 +14688,14 @@ function formatCiCellWithDiff(stats, reference) {
14625
14688
  }
14626
14689
  return formatSchemaStatsCompact(stats, true);
14627
14690
  }
14628
- function formatProdCellWithDiff(stats, reference) {
14629
- if (hasDisplayedStatsDiff(stats, reference)) {
14630
- return `\u{1F4DD} ${formatSchemaStatsWithDiff(stats, reference)}`;
14691
+ function formatProdCellWithDiff(stats, reference, schemaName, expectedDrift) {
14692
+ if (!hasDisplayedStatsDiff(stats, reference)) {
14693
+ return formatSchemaStatsCompact(stats, true);
14631
14694
  }
14632
- return formatSchemaStatsCompact(stats, true);
14695
+ const fieldDiffs = getFieldDiffs(stats, reference);
14696
+ const allExpected = expectedDrift.length > 0 && isAllDriftExpected(schemaName, fieldDiffs, expectedDrift);
14697
+ const marker = allExpected ? "\u{1F4CB}" : "\u{1F4DD}";
14698
+ return `${marker} ${formatSchemaStatsWithDiff(stats, reference)}`;
14633
14699
  }
14634
14700
  function formatCiTotalCellWithDiff(stats, reference) {
14635
14701
  const formatted = formatSchemaStatsCompact(stats, true);
@@ -14657,7 +14723,7 @@ function getSortedActiveSchemas(schemaStats) {
14657
14723
  return a.localeCompare(b);
14658
14724
  });
14659
14725
  }
14660
- function generateSchemaTableRows(schemaStats, sortedSchemas, hasProduction) {
14726
+ function generateSchemaTableRows(schemaStats, sortedSchemas, hasProduction, expectedDrift) {
14661
14727
  const lines = [];
14662
14728
  for (const schemaName of sortedSchemas) {
14663
14729
  const localStats = schemaStats.local.schemas[schemaName] ?? emptyStats2();
@@ -14665,7 +14731,7 @@ function generateSchemaTableRows(schemaStats, sortedSchemas, hasProduction) {
14665
14731
  const prodStats = schemaStats.production?.schemas[schemaName] ?? null;
14666
14732
  const localCell = formatLocalCell(localStats);
14667
14733
  const ciCell = formatCiCellWithDiff(ciStats, localStats);
14668
- const prodCell = prodStats !== null ? formatProdCellWithDiff(prodStats, localStats) : null;
14734
+ const prodCell = prodStats !== null ? formatProdCellWithDiff(prodStats, localStats, schemaName, expectedDrift) : null;
14669
14735
  lines.push(
14670
14736
  hasProduction ? `| ${schemaName} | ${localCell} | ${ciCell} | ${prodCell ?? "n/a"} |` : `| ${schemaName} | ${localCell} | ${ciCell} |`
14671
14737
  );
@@ -14707,7 +14773,28 @@ function generateIndexDiffSection(schemaStats) {
14707
14773
  }
14708
14774
  return lines;
14709
14775
  }
14710
- function formatSchemaMatrix(schemaStats, gitDiff) {
14776
+ function generateExpectedDriftFootnotes(schemaStats, sortedSchemas, expectedDrift) {
14777
+ if (expectedDrift.length === 0 || !schemaStats.production) return [];
14778
+ const allReasons = /* @__PURE__ */ new Set();
14779
+ for (const schemaName of sortedSchemas) {
14780
+ const localStats = schemaStats.local.schemas[schemaName] ?? emptyStats2();
14781
+ const prodStats = schemaStats.production.schemas[schemaName];
14782
+ if (!prodStats || !hasDisplayedStatsDiff(prodStats, localStats)) continue;
14783
+ const fieldDiffs = getFieldDiffs(prodStats, localStats);
14784
+ const reasons = collectExpectedDriftReasons(schemaName, fieldDiffs, expectedDrift);
14785
+ for (const reason of reasons) {
14786
+ allReasons.add(reason);
14787
+ }
14788
+ }
14789
+ if (allReasons.size === 0) return [];
14790
+ const lines = [""];
14791
+ lines.push("> \u{1F4CB} **\u65E2\u77E5\u306E\u5DEE\u5206:**");
14792
+ for (const reason of allReasons) {
14793
+ lines.push(`> - ${reason}`);
14794
+ }
14795
+ return lines;
14796
+ }
14797
+ function formatSchemaMatrix(schemaStats, gitDiff, expectedDrift = []) {
14711
14798
  if (!schemaStats) {
14712
14799
  return ["### \u30B9\u30AD\u30FC\u30DE\u72B6\u6CC1", "", "_\u30B9\u30AD\u30FC\u30DE\u7D71\u8A08\u60C5\u5831\u304C\u5229\u7528\u3067\u304D\u307E\u305B\u3093_", ""];
14713
14800
  }
@@ -14719,7 +14806,7 @@ function formatSchemaMatrix(schemaStats, gitDiff) {
14719
14806
  }
14720
14807
  const hasProduction = schemaStats.production !== null;
14721
14808
  const tableHeader = hasProduction ? ["| Schema | \u{1F4C4} Local | \u{1F52C} CI | \u{1F3ED} Prod |", "|--------|:--------:|:-----:|:-------:|"] : ["| Schema | \u{1F4C4} Local | \u{1F52C} CI |", "|--------|:--------:|:-----:|"];
14722
- const rows = generateSchemaTableRows(schemaStats, sortedSchemas, hasProduction);
14809
+ const rows = generateSchemaTableRows(schemaStats, sortedSchemas, hasProduction, expectedDrift);
14723
14810
  const { local, ci, production } = schemaStats;
14724
14811
  const localTotalCell = `**${formatSchemaStatsCompact(local.total, true)}**`;
14725
14812
  const ciTotalCell = formatCiTotalCellWithDiff(ci.total, local.total);
@@ -14727,6 +14814,11 @@ function formatSchemaMatrix(schemaStats, gitDiff) {
14727
14814
  const totalRow = hasProduction ? `| **Total** | ${localTotalCell} | ${ciTotalCell} | ${prodTotalCell ?? "n/a"} |` : `| **Total** | ${localTotalCell} | ${ciTotalCell} |`;
14728
14815
  const summary = generateSchemaMatrixSummary(local.total, ci.total, production?.total ?? null);
14729
14816
  const indexDiffSection = generateIndexDiffSection(schemaStats);
14817
+ const expectedDriftNotes = generateExpectedDriftFootnotes(
14818
+ schemaStats,
14819
+ sortedSchemas,
14820
+ expectedDrift
14821
+ );
14730
14822
  return [
14731
14823
  header,
14732
14824
  "",
@@ -14736,6 +14828,7 @@ function formatSchemaMatrix(schemaStats, gitDiff) {
14736
14828
  "",
14737
14829
  summary,
14738
14830
  ...indexDiffSection,
14831
+ ...expectedDriftNotes,
14739
14832
  "",
14740
14833
  "<sub>T=\u30C6\u30FC\u30D6\u30EB F=\u95A2\u6570 P=\u30DD\u30EA\u30B7\u30FC I=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 Tr=\u30C8\u30EA\u30AC\u30FC</sub>",
14741
14834
  ""
@@ -14958,7 +15051,11 @@ function generateCommentBody(input3) {
14958
15051
  ...generateFinalHeader(exitCode, effectiveBranchName, supabaseUrl, schemaDrift, runUrl),
14959
15052
  ...layerLines.length > 0 ? ["### \u30C6\u30B9\u30C8\u7D50\u679C", ...layerLines, ""] : [],
14960
15053
  ...skippedLayersLines,
14961
- ...formatSchemaMatrix(input3.schemaStats, schemaDrift?.gitDiff ?? null),
15054
+ ...formatSchemaMatrix(
15055
+ input3.schemaStats,
15056
+ schemaDrift?.gitDiff ?? null,
15057
+ input3.expectedDrift ?? []
15058
+ ),
14962
15059
  ...generateSchemaDetailsSection(schemaDrift),
14963
15060
  ...generateDeploySection(
14964
15061
  exitCode,
@@ -15334,6 +15431,7 @@ function createCommentInput(context, options) {
15334
15431
  layerResults: context.layerResults,
15335
15432
  productionPreview: context.productionPreview,
15336
15433
  schemaStats: context.schemaStats,
15434
+ expectedDrift: context.expectedDrift,
15337
15435
  isIntermediate: options?.isIntermediate,
15338
15436
  intermediateMessage: options?.intermediateMessage,
15339
15437
  layerSkipReasons: context.layerSkipReasons,
@@ -15566,6 +15664,7 @@ function createInitialContext(input3) {
15566
15664
  schemaDrift: null,
15567
15665
  productionPreview: null,
15568
15666
  schemaStats: null,
15667
+ expectedDrift: [],
15569
15668
  startTime: Date.now(),
15570
15669
  durationMs: 0,
15571
15670
  error: null,
@@ -15772,6 +15871,7 @@ var ciMachine = setup({
15772
15871
  appDatabaseUrl: void 0
15773
15872
  }),
15774
15873
  selectedLayers: ({ event }) => event.output.layers,
15874
+ expectedDrift: ({ event }) => event.output.expectedDrift ?? [],
15775
15875
  error: ({ event }) => event.output.error ?? null
15776
15876
  })
15777
15877
  },
@@ -20806,6 +20906,23 @@ ${content}`;
20806
20906
  }
20807
20907
  }
20808
20908
  });
20909
+ var DESTRUCTIVE_SEED_PATTERNS = [
20910
+ { pattern: /\bDELETE\s+FROM\b/i, description: "DELETE FROM" },
20911
+ { pattern: /\bTRUNCATE\b/i, description: "TRUNCATE" },
20912
+ { pattern: /\bDROP\s+TABLE\b/i, description: "DROP TABLE" },
20913
+ { pattern: /\bDROP\s+SCHEMA\b/i, description: "DROP SCHEMA" }
20914
+ ];
20915
+ function detectDestructiveSeedPatterns(seedFilePath) {
20916
+ const content = readFileSync(seedFilePath, "utf-8");
20917
+ const detected = [];
20918
+ for (const { pattern, description } of DESTRUCTIVE_SEED_PATTERNS) {
20919
+ pattern.lastIndex = 0;
20920
+ if (pattern.test(content)) {
20921
+ detected.push(description);
20922
+ }
20923
+ }
20924
+ return detected;
20925
+ }
20809
20926
  var validatePartitions = fromPromise(async ({ input: { input: input3, targetDir } }) => {
20810
20927
  if (input3.check) return { warnings: [] };
20811
20928
  const idempotentDir = join(targetDir, "supabase/schemas/idempotent");
@@ -20830,6 +20947,18 @@ var applySeeds = fromPromise(async ({ input: { input: input3, targetDir } }) =>
20830
20947
  if (!input3.noSeed) {
20831
20948
  const seedFile = join(targetDir, "supabase/seeds/ci.sql");
20832
20949
  if (existsSync(seedFile)) {
20950
+ if (input3.env === "production") {
20951
+ const destructivePatterns = detectDestructiveSeedPatterns(seedFile);
20952
+ if (destructivePatterns.length > 0) {
20953
+ logger6.warn("");
20954
+ logger6.warn("\u26A0\uFE0F DANGER: Seed file contains destructive SQL for PRODUCTION");
20955
+ logger6.warn(` Detected: ${destructivePatterns.join(", ")}`);
20956
+ logger6.warn(" This WILL delete real user data. Aborting seed application.");
20957
+ logger6.warn(" If this is intentional, review and apply seeds manually.");
20958
+ logger6.warn("");
20959
+ return { applied: false };
20960
+ }
20961
+ }
20833
20962
  logger6.step("Applying seeds...");
20834
20963
  const result = psqlSyncFile({
20835
20964
  databaseUrl: dbUrl,
@@ -21273,6 +21402,11 @@ function isDbApplyComplete(snapshot2) {
21273
21402
  }
21274
21403
 
21275
21404
  // src/commands/db/commands/db-apply.ts
21405
+ function resolveNoSeed(env2, seedFlag) {
21406
+ if (seedFlag === true) return false;
21407
+ if (seedFlag === false) return true;
21408
+ return env2 === "production";
21409
+ }
21276
21410
  function logStateChange(logger16, snapshot2) {
21277
21411
  const state2 = getDbApplyStateName(snapshot2);
21278
21412
  switch (state2) {
@@ -21290,12 +21424,30 @@ function logStateChange(logger16, snapshot2) {
21290
21424
  break;
21291
21425
  }
21292
21426
  }
21427
+ function describeSeedStatus(env2, noSeed, seedFlag) {
21428
+ if (env2 === "production") {
21429
+ if (seedFlag === true) return "enabled (--seed)";
21430
+ if (seedFlag === false) return "disabled (--no-seed)";
21431
+ return "disabled (production default)";
21432
+ }
21433
+ if (seedFlag === false) return "disabled (--no-seed)";
21434
+ return "enabled";
21435
+ }
21293
21436
  async function runDbApply(env2, options) {
21294
21437
  const logger16 = createCLILogger("db:apply");
21438
+ const resolvedEnv = env2 === "preview" ? "preview" : env2 === "production" ? "production" : "local";
21439
+ const noSeed = resolveNoSeed(resolvedEnv, options.seed);
21440
+ if (resolvedEnv === "production" && !noSeed) {
21441
+ logger16.warn("");
21442
+ logger16.warn("\u26A0\uFE0F WARNING: Seeds will be applied to PRODUCTION database");
21443
+ logger16.warn(" Seeds may contain DELETE/TRUNCATE statements that destroy real data.");
21444
+ logger16.warn(" Only use --seed with production if you are absolutely certain.");
21445
+ logger16.warn("");
21446
+ }
21295
21447
  const input3 = {
21296
- env: env2 === "preview" ? "preview" : env2 === "production" ? "production" : "local",
21448
+ env: resolvedEnv,
21297
21449
  verbose: options.verbose ?? false,
21298
- noSeed: options.noSeed ?? false,
21450
+ noSeed,
21299
21451
  autoApprove: options.autoApprove ?? false,
21300
21452
  allowDataLoss: options.allowDataLoss ?? false,
21301
21453
  confirmAuthzUpdate: options.confirmAuthzUpdate ?? false,
@@ -21377,19 +21529,20 @@ function printSummary5(logger16, result) {
21377
21529
  printApplySummary(logger16, result);
21378
21530
  }
21379
21531
  }
21380
- var applyCommand = new Command("apply").description("Apply schema changes to any DB using pg-schema-diff (SQL-First Architecture)").argument("[env]", "Environment: local, preview, or production", "preview").option("--verbose", "Show detailed output").option("--no-seed", "Skip seed application").option("--auto-approve", "Auto-approve hazards (CI mode)").option("--allow-data-loss", "Allow DELETES_DATA hazard in production (DANGEROUS)").option("--confirm-authz-update", "Confirm RLS policy changes in production").option("--check", "Check mode: show what would be applied without making changes (dry-run)").option("--database-url <url>", "Override DATABASE_URL").option(
21532
+ var applyCommand = new Command("apply").description("Apply schema changes to any DB using pg-schema-diff (SQL-First Architecture)").argument("[env]", "Environment: local, preview, or production", "preview").option("--verbose", "Show detailed output").option("--seed", "Explicitly enable seed application (required for production)").option("--no-seed", "Skip seed application").option("--auto-approve", "Auto-approve hazards (CI mode)").option("--allow-data-loss", "Allow DELETES_DATA hazard in production (DANGEROUS)").option("--confirm-authz-update", "Confirm RLS policy changes in production").option("--check", "Check mode: show what would be applied without making changes (dry-run)").option("--database-url <url>", "Override DATABASE_URL").option(
21381
21533
  "--max-lock-wait-ms <ms>",
21382
21534
  "Maximum time to wait for lock acquisition (default: 30000)",
21383
21535
  (value) => Number.parseInt(value, 10)
21384
21536
  ).option("--fresh-db-check-sql <sql>", "Custom SQL to check if DB is fresh").action(async (env2, options) => {
21385
21537
  const logger16 = createCLILogger("db:apply");
21386
21538
  try {
21539
+ const noSeed = resolveNoSeed(env2, options.seed);
21387
21540
  logger16.section(
21388
21541
  options.check ? "Database Apply Check (Dry-Run)" : "Database Apply (SQL-First Architecture)"
21389
21542
  );
21390
21543
  logger16.info(`Environment: ${env2}`);
21391
21544
  logger16.info(`Mode: ${options.check ? "check (dry-run)" : "apply"}`);
21392
- logger16.info(`Seeds: ${options.noSeed ? "disabled" : "enabled"}`);
21545
+ logger16.info(`Seeds: ${describeSeedStatus(env2, noSeed, options.seed)}`);
21393
21546
  logger16.info(`Auto-approve: ${options.autoApprove ? "enabled" : "disabled"}`);
21394
21547
  const result = await runDbApply(env2, options);
21395
21548
  printSummary5(logger16, result);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runa-ai/runa-cli",
3
- "version": "0.5.62",
3
+ "version": "0.5.63",
4
4
  "private": false,
5
5
  "description": "AI-powered DevOps CLI",
6
6
  "type": "module",
@@ -53,7 +53,7 @@
53
53
  "typescript": "5.9.3",
54
54
  "xstate": "5.28.0",
55
55
  "zod": "4.3.6",
56
- "@runa-ai/runa": "0.5.61",
56
+ "@runa-ai/runa": "0.5.63",
57
57
  "@runa-ai/runa-xstate-test-plugin": "0.5.58"
58
58
  },
59
59
  "engines": {