db-scalability-guardian 1.0.0 → 1.0.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/analyzers/postgres/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAmFrE;AAED,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAcrE"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/analyzers/postgres/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAgOrE;AAED,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAcrE"}
@@ -78,6 +78,137 @@ function analyzeMigration(sql, file) {
78
78
  file,
79
79
  });
80
80
  }
81
+ // 7) ALTER TYPE ... ADD VALUE / DROP VALUE (high risk - breaks running apps)
82
+ if (s.match(/alter\s+type[\s\S]*(add|drop)\s+value/i)) {
83
+ findings.push({
84
+ id: "MIG_ENUM_ALTER_VALUE",
85
+ severity: "HIGH",
86
+ title: "ALTER TYPE ... ADD/DROP VALUE (can break running applications)",
87
+ evidence: "Detected ALTER TYPE with ADD VALUE or DROP VALUE.",
88
+ impact: "Adding or removing enum values can break running applications that reference the old enum values. DROP VALUE is particularly dangerous.",
89
+ mitigation: "For ADD VALUE: coordinate deployment (add value first, then deploy code). For DROP VALUE: deprecate first, remove in later release. Consider using lookup tables for frequently changing enums.",
90
+ file,
91
+ });
92
+ }
93
+ // 8) SET NOT NULL on existing column (high risk - similar to ADD COLUMN NOT NULL)
94
+ if (s.match(/alter\s+table[\s\S]*alter\s+column[\s\S]*set\s+not\s+null/)) {
95
+ findings.push({
96
+ id: "MIG_SET_NOT_NULL",
97
+ severity: "HIGH",
98
+ title: "SET NOT NULL on existing column (risk of failure on existing data)",
99
+ evidence: "Detected `ALTER TABLE ... ALTER COLUMN ... SET NOT NULL`.",
100
+ impact: "On a table with existing rows containing NULL values, this will fail or require a full table rewrite, blocking deployments.",
101
+ mitigation: "Use a safe 3-step approach: (1) backfill NULL values in batches, (2) verify all rows have values, (3) add NOT NULL constraint.",
102
+ file,
103
+ });
104
+ }
105
+ // 9) RENAME COLUMN/TABLE (high risk - breaks application code)
106
+ if (s.match(/alter\s+table[\s\S]*rename\s+(column|to)/)) {
107
+ findings.push({
108
+ id: "MIG_RENAME",
109
+ severity: "HIGH",
110
+ title: "RENAME COLUMN/TABLE (breaks application code immediately)",
111
+ evidence: "Detected ALTER TABLE ... RENAME operation.",
112
+ impact: "Renaming columns or tables breaks application code immediately. All queries referencing the old name will fail.",
113
+ mitigation: "Coordinate deployment: (1) deploy code that supports both old and new names, (2) run migration, (3) remove old name support in next release. Or use views/aliases as intermediate step.",
114
+ file,
115
+ });
116
+ }
117
+ // 10) CREATE UNIQUE INDEX without CONCURRENTLY (high risk - can fail on duplicates)
118
+ if (s.match(/create\s+unique\s+index/) && !s.match(/concurrently/)) {
119
+ findings.push({
120
+ id: "MIG_UNIQUE_INDEX_NOT_CONCURRENT",
121
+ severity: "HIGH",
122
+ title: "CREATE UNIQUE INDEX without CONCURRENTLY (can fail on duplicates, locks writes)",
123
+ evidence: "Detected CREATE UNIQUE INDEX without CONCURRENTLY.",
124
+ impact: "Unique index creation blocks writes and will fail if duplicate values exist. On large tables, this can cause extended downtime.",
125
+ mitigation: "For production: (1) verify no duplicates exist, (2) use `CREATE UNIQUE INDEX CONCURRENTLY`, (3) run outside transaction if needed. Handle potential duplicates before migration.",
126
+ file,
127
+ });
128
+ }
129
+ // 11) ADD CHECK constraint (medium risk - can fail on existing data)
130
+ if (s.match(/add\s+constraint[\s\S]*check/)) {
131
+ findings.push({
132
+ id: "MIG_ADD_CHECK",
133
+ severity: "MEDIUM",
134
+ title: "ADD CHECK constraint (can fail on existing data)",
135
+ evidence: "Detected ADD CONSTRAINT ... CHECK.",
136
+ impact: "Check constraints validate all existing rows. If any row violates the constraint, the migration will fail.",
137
+ mitigation: "Ensure all existing data satisfies the constraint before adding it. Consider adding as NOT VALID then VALIDATE in a separate step for large tables.",
138
+ file,
139
+ });
140
+ }
141
+ // 12) ADD COLUMN with DEFAULT (non-constant expression) (medium risk - slow on large tables)
142
+ if (s.match(/add\s+column[\s\S]*default[\s\S]*\(/)) {
143
+ findings.push({
144
+ id: "MIG_ADD_COLUMN_DEFAULT_EXPR",
145
+ severity: "MEDIUM",
146
+ title: "ADD COLUMN with DEFAULT expression (can be slow on large tables)",
147
+ evidence: "Detected ADD COLUMN with DEFAULT expression (function call).",
148
+ impact: "Non-constant DEFAULT values (functions, expressions) are evaluated for each existing row, which can be slow on large tables and cause table rewrites.",
149
+ mitigation: "For large tables: (1) add column without DEFAULT, (2) backfill in batches, (3) add DEFAULT for new rows only. Or use a constant DEFAULT value.",
150
+ file,
151
+ });
152
+ }
153
+ // 13) Multiple ALTER TABLE in one transaction (medium risk - extended locks)
154
+ const alterTableMatches = s.match(/alter\s+table/gi);
155
+ if (alterTableMatches && alterTableMatches.length > 1) {
156
+ findings.push({
157
+ id: "MIG_MULTIPLE_ALTER_TABLE",
158
+ severity: "MEDIUM",
159
+ title: "Multiple ALTER TABLE operations in one migration (extended locks)",
160
+ evidence: `Detected ${alterTableMatches.length} ALTER TABLE operations in a single migration.`,
161
+ impact: "Multiple ALTER TABLE operations in one transaction can cause extended table locks, blocking reads and writes for longer periods.",
162
+ mitigation: "Split into separate migrations or run outside a transaction if operations are independent. Consider batching related changes.",
163
+ file,
164
+ });
165
+ }
166
+ // 14) CREATE INDEX on expression (medium risk - harder to maintain)
167
+ if (s.match(/create\s+index[\s\S]*on[\s\S]*\([^)]+\)/)) {
168
+ // Check if it's an expression index (has function/expression in parentheses, not just column list)
169
+ const indexMatch = s.match(/create\s+index[\s\S]*?on\s+\w+\s*\(([^)]+)\)/);
170
+ if (indexMatch && indexMatch[1] && !indexMatch[1].match(/^\s*\w+\s*(,\s*\w+)*\s*$/)) {
171
+ findings.push({
172
+ id: "MIG_INDEX_EXPRESSION",
173
+ severity: "MEDIUM",
174
+ title: "CREATE INDEX on expression (harder to maintain, may need special handling)",
175
+ evidence: "Detected CREATE INDEX on expression (function or computed value).",
176
+ impact: "Expression indexes are harder to maintain and may not be used by the query planner if the expression doesn't match exactly. They also require more storage.",
177
+ mitigation: "Ensure the expression matches query patterns exactly. Consider if a generated column with regular index would be better. Document why expression index is needed.",
178
+ file,
179
+ });
180
+ }
181
+ }
182
+ // 15) CREATE TABLE without PRIMARY KEY (low risk - design issue)
183
+ if (s.match(/create\s+table/)) {
184
+ // Check if CREATE TABLE exists but no PRIMARY KEY constraint
185
+ // This is a simple check - if table is created and no primary key mentioned
186
+ if (!s.match(/primary\s+key/)) {
187
+ findings.push({
188
+ id: "MIG_TABLE_NO_PK",
189
+ severity: "LOW",
190
+ title: "CREATE TABLE without PRIMARY KEY (design issue)",
191
+ evidence: "Detected CREATE TABLE without PRIMARY KEY constraint.",
192
+ impact: "Tables without primary keys can cause replication issues, make it harder to identify rows uniquely, and may indicate design problems.",
193
+ mitigation: "Add a PRIMARY KEY constraint. Even if using a natural key, consider adding a surrogate ID column for flexibility.",
194
+ file,
195
+ });
196
+ }
197
+ }
198
+ // 16) ALTER TYPE (enum modifications beyond ADD/DROP VALUE)
199
+ // Only check if ALTER TYPE exists and it's not the ADD/DROP VALUE case (already covered above)
200
+ const alterTypeMatch = s.match(/alter\s+type\s+\w+/i);
201
+ if (alterTypeMatch && !s.match(/(add|drop)\s+value/i)) {
202
+ findings.push({
203
+ id: "MIG_ENUM_ALTER",
204
+ severity: "LOW",
205
+ title: "ALTER TYPE (enum modification - evolvability considerations)",
206
+ evidence: "Detected ALTER TYPE operation on enum.",
207
+ impact: "Enum modifications can be complex and may require careful coordination with application deployments.",
208
+ mitigation: "Ensure enum changes are backward compatible or coordinate with code deployment. Consider if lookup table would be more flexible.",
209
+ file,
210
+ });
211
+ }
81
212
  return findings;
82
213
  }
83
214
  function analyzeMigrations(migrationFiles) {
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/analyzers/postgres/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/analyzers/postgres/migrations.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -15,6 +15,18 @@ const json_js_1 = require("../reporters/json.js");
15
15
  const gate_js_1 = require("../gate/gate.js");
16
16
  const prompts_js_1 = require("../llm/prompts.js");
17
17
  const mistral_js_1 = require("../llm/mistral.js");
18
+ /**
19
+ * Strips markdown code fences from LLM output if present.
20
+ * Removes ```markdown, ```md, or ``` at the beginning and end.
21
+ */
22
+ function stripMarkdownFences(content) {
23
+ let cleaned = content.trim();
24
+ // Remove opening fence (```markdown, ```md, or ```)
25
+ cleaned = cleaned.replace(/^```(?:markdown|md)?\s*\n?/i, '');
26
+ // Remove closing fence (```)
27
+ cleaned = cleaned.replace(/\n?```\s*$/i, '');
28
+ return cleaned.trim();
29
+ }
18
30
  async function main() {
19
31
  const cwd = process.cwd();
20
32
  const config = (0, loader_js_1.loadConfig)(cwd);
@@ -91,7 +103,8 @@ async function main() {
91
103
  apiKey: config.llm.apiKey,
92
104
  model: config.llm.model,
93
105
  }, prompts.system, prompts.user);
94
- fs_1.default.writeFileSync(path_1.default.join(reportDir, "guardian-llm-analysis.md"), llmOutput);
106
+ const cleanedOutput = stripMarkdownFences(llmOutput);
107
+ fs_1.default.writeFileSync(path_1.default.join(reportDir, "guardian-llm-analysis.md"), cleanedOutput);
95
108
  console.log(` ✓ guardian-llm-analysis.md`);
96
109
  }
97
110
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "db-scalability-guardian",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "A CLI tool for analyzing database migrations and schema changes for scalability and evolvability risks",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "bin": {
8
- "db-scalability-guardian": "./dist/cli/index.js"
8
+ "db-scalability-guardian": "dist/cli/index.js"
9
9
  },
10
10
  "scripts": {
11
11
  "build": "tsc",