@codemarc/blt 1.8.8 → 1.10.0

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.
Files changed (64) hide show
  1. package/README.md +67 -75
  2. package/dist/commands/app/data.d.ts +2 -0
  3. package/dist/commands/app/data.d.ts.map +1 -1
  4. package/dist/commands/app/data.js +2 -2
  5. package/dist/commands/app/data.js.map +1 -1
  6. package/dist/commands/app/env-check.d.ts +3 -2
  7. package/dist/commands/app/env-check.d.ts.map +1 -1
  8. package/dist/commands/app/env-check.js +5 -4
  9. package/dist/commands/app/env-check.js.map +1 -1
  10. package/dist/commands/app/env-decrypt.d.ts +2 -0
  11. package/dist/commands/app/env-decrypt.d.ts.map +1 -1
  12. package/dist/commands/app/env-decrypt.js +1 -1
  13. package/dist/commands/app/env-decrypt.js.map +1 -1
  14. package/dist/commands/app/site-env.d.ts +3 -0
  15. package/dist/commands/app/site-env.d.ts.map +1 -1
  16. package/dist/commands/app/site-env.js +14 -4
  17. package/dist/commands/app/site-env.js.map +1 -1
  18. package/dist/commands/app.d.ts.map +1 -1
  19. package/dist/commands/app.js +8 -4
  20. package/dist/commands/app.js.map +1 -1
  21. package/dist/commands/data/apply.d.ts +1 -0
  22. package/dist/commands/data/apply.d.ts.map +1 -1
  23. package/dist/commands/data/apply.js +4 -1
  24. package/dist/commands/data/apply.js.map +1 -1
  25. package/dist/commands/data.d.ts.map +1 -1
  26. package/dist/commands/data.js +3 -2
  27. package/dist/commands/data.js.map +1 -1
  28. package/dist/commands/deploy/data.d.ts +2 -1
  29. package/dist/commands/deploy/data.d.ts.map +1 -1
  30. package/dist/commands/deploy/data.js +2 -2
  31. package/dist/commands/deploy/data.js.map +1 -1
  32. package/dist/commands/deploy/schema.d.ts +2 -1
  33. package/dist/commands/deploy/schema.d.ts.map +1 -1
  34. package/dist/commands/deploy/schema.js +2 -2
  35. package/dist/commands/deploy/schema.js.map +1 -1
  36. package/dist/commands/deploy.d.ts.map +1 -1
  37. package/dist/commands/deploy.js +9 -6
  38. package/dist/commands/deploy.js.map +1 -1
  39. package/dist/commands/env/get.d.ts.map +1 -1
  40. package/dist/commands/env/get.js +5 -2
  41. package/dist/commands/env/get.js.map +1 -1
  42. package/dist/commands/env.js +1 -1
  43. package/dist/commands/notify/google-chat.js +1 -1
  44. package/dist/commands/notify/google-chat.js.map +1 -1
  45. package/dist/commands/notify/keys.d.ts +10 -0
  46. package/dist/commands/notify/keys.d.ts.map +1 -1
  47. package/dist/commands/notify/keys.js +29 -15
  48. package/dist/commands/notify/keys.js.map +1 -1
  49. package/dist/commands/wai/multi-agent.d.ts +22 -0
  50. package/dist/commands/wai/multi-agent.d.ts.map +1 -0
  51. package/dist/commands/wai/multi-agent.js +209 -0
  52. package/dist/commands/wai/multi-agent.js.map +1 -0
  53. package/dist/commands/wai.d.ts.map +1 -1
  54. package/dist/commands/wai.js +60 -2
  55. package/dist/commands/wai.js.map +1 -1
  56. package/dist/lib/database-runner.d.ts +6 -2
  57. package/dist/lib/database-runner.d.ts.map +1 -1
  58. package/dist/lib/database-runner.js +82 -45
  59. package/dist/lib/database-runner.js.map +1 -1
  60. package/dist/lib/split-sql-statements.d.ts +8 -0
  61. package/dist/lib/split-sql-statements.d.ts.map +1 -0
  62. package/dist/lib/split-sql-statements.js +120 -0
  63. package/dist/lib/split-sql-statements.js.map +1 -0
  64. package/package.json +2 -2
@@ -0,0 +1,209 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ export const WAI_SOURCE_FILE = "SKILL.md";
4
+ const GENERATED_NOTE = "Generated by blt wai sync. Edit SKILL.md to update.";
5
+ export const WAI_AGENT_TARGETS = [
6
+ {
7
+ agent: "Claude Code",
8
+ path: "CLAUDE.md",
9
+ render: (source) => markdownTarget("Claude Code Instructions", source),
10
+ },
11
+ {
12
+ agent: "Codex",
13
+ path: "AGENTS.md",
14
+ render: (source) => markdownTarget("AGENTS.md", source),
15
+ },
16
+ {
17
+ agent: "Cursor",
18
+ path: ".cursor/rules/blt.mdc",
19
+ render: (source) => [
20
+ "---",
21
+ "description: BLT WAI generated project rules",
22
+ 'globs: "**/*"',
23
+ "alwaysApply: true",
24
+ "---",
25
+ "",
26
+ "# Cursor Project Rules",
27
+ "",
28
+ generatedBlockQuote(),
29
+ "",
30
+ sourceBody(source),
31
+ ].join("\n"),
32
+ },
33
+ {
34
+ agent: "Aider",
35
+ path: "CONVENTIONS.md",
36
+ render: (source) => markdownTarget("Aider Conventions", source),
37
+ },
38
+ {
39
+ agent: "Aider config",
40
+ path: ".aider.conf.yml",
41
+ render: () => [
42
+ "# Generated by blt wai sync. Edit SKILL.md to update.",
43
+ "read:",
44
+ " - CONVENTIONS.md",
45
+ "",
46
+ ].join("\n"),
47
+ },
48
+ {
49
+ agent: "Gemini CLI",
50
+ path: "GEMINI.md",
51
+ render: (source) => markdownTarget("GEMINI.md", source),
52
+ },
53
+ {
54
+ agent: "Goose",
55
+ path: ".agents/skills/blt/SKILL.md",
56
+ render: (source) => [
57
+ "---",
58
+ "name: blt",
59
+ "description: Shared project rules generated by blt wai",
60
+ "---",
61
+ "",
62
+ "# BLT Project Skill",
63
+ "",
64
+ generatedBlockQuote(),
65
+ "",
66
+ sourceBody(source),
67
+ ].join("\n"),
68
+ },
69
+ {
70
+ agent: "Cline",
71
+ path: ".clinerules",
72
+ render: (source) => markdownTarget("Cline Project Rules", source),
73
+ },
74
+ ];
75
+ const GENERATED_GITIGNORE_ENTRIES = [
76
+ "CLAUDE.md",
77
+ "AGENTS.md",
78
+ "CONVENTIONS.md",
79
+ "GEMINI.md",
80
+ ".clinerules",
81
+ ".aider.conf.yml",
82
+ ".cursor/rules/",
83
+ ".agents/",
84
+ ];
85
+ export async function runWaiInit(options, logger) {
86
+ const cwd = options.cwd ?? process.cwd();
87
+ const sourcePath = join(cwd, WAI_SOURCE_FILE);
88
+ if (existsSync(sourcePath) && !options.overwrite) {
89
+ logger.warn(`${WAI_SOURCE_FILE} already exists; use --overwrite to replace it.`);
90
+ return;
91
+ }
92
+ writeFileSync(sourcePath, defaultSkillSource(), "utf8");
93
+ logger.info(`Created: ${sourcePath}`);
94
+ }
95
+ export async function runWaiSync(options, logger) {
96
+ const cwd = options.cwd ?? process.cwd();
97
+ const source = readSource(cwd);
98
+ for (const target of WAI_AGENT_TARGETS) {
99
+ const targetPath = join(cwd, target.path);
100
+ mkdirSync(dirname(targetPath), { recursive: true });
101
+ writeFileSync(targetPath, ensureTrailingNewline(target.render(source)), "utf8");
102
+ logger.info(`Synced ${target.agent}: ${targetPath}`);
103
+ }
104
+ updateGitignore(cwd);
105
+ logger.info(`Updated: ${join(cwd, ".gitignore")}`);
106
+ }
107
+ export async function runWaiDoctor(options, logger) {
108
+ const cwd = options.cwd ?? process.cwd();
109
+ const source = readSource(cwd);
110
+ const missing = [];
111
+ const stale = [];
112
+ for (const target of WAI_AGENT_TARGETS) {
113
+ const targetPath = join(cwd, target.path);
114
+ if (!existsSync(targetPath)) {
115
+ missing.push(target.path);
116
+ continue;
117
+ }
118
+ const actual = readFileSync(targetPath, "utf8");
119
+ const expected = ensureTrailingNewline(target.render(source));
120
+ if (actual !== expected) {
121
+ stale.push(target.path);
122
+ }
123
+ }
124
+ const ok = missing.length === 0 && stale.length === 0;
125
+ if (ok) {
126
+ logger.info("All blt wai generated files are synchronized.");
127
+ }
128
+ else {
129
+ for (const path of missing)
130
+ logger.warn(`Missing generated file: ${path}`);
131
+ for (const path of stale)
132
+ logger.warn(`Stale generated file: ${path}`);
133
+ }
134
+ return { ok, missing, stale };
135
+ }
136
+ function readSource(cwd) {
137
+ const sourcePath = join(cwd, WAI_SOURCE_FILE);
138
+ if (!existsSync(sourcePath)) {
139
+ throw new Error(`Missing ${WAI_SOURCE_FILE}. Run 'blt wai init' first.`);
140
+ }
141
+ return readFileSync(sourcePath, "utf8");
142
+ }
143
+ function defaultSkillSource() {
144
+ return [
145
+ "---",
146
+ "name: blt-project",
147
+ "description: Shared project rules for AI assistants",
148
+ "---",
149
+ "",
150
+ "# Project Rules",
151
+ "",
152
+ "## Context",
153
+ "",
154
+ "Describe the project, runtime, and important domain constraints.",
155
+ "",
156
+ "## Commands",
157
+ "",
158
+ "- Install dependencies with Bun.",
159
+ "- Run tests before claiming code changes are complete.",
160
+ "",
161
+ "## Conventions",
162
+ "",
163
+ "- Keep changes small and focused.",
164
+ "- Do not commit secrets or local-only credentials.",
165
+ "",
166
+ ].join("\n");
167
+ }
168
+ function markdownTarget(title, source) {
169
+ return [
170
+ `# ${title}`,
171
+ "",
172
+ generatedBlockQuote(),
173
+ "",
174
+ sourceBody(source),
175
+ ].join("\n");
176
+ }
177
+ function generatedBlockQuote() {
178
+ return `> ${GENERATED_NOTE}`;
179
+ }
180
+ function sourceBody(source) {
181
+ const normalized = source.replace(/\r\n/g, "\n").trim();
182
+ const frontmatter = normalized.match(/^---\n[\s\S]*?\n---\n?/);
183
+ return (frontmatter ? normalized.slice(frontmatter[0].length) : normalized).trim();
184
+ }
185
+ function ensureTrailingNewline(content) {
186
+ return `${content.replace(/\s+$/g, "")}\n`;
187
+ }
188
+ function updateGitignore(cwd) {
189
+ const gitignorePath = join(cwd, ".gitignore");
190
+ const existing = existsSync(gitignorePath) ? readFileSync(gitignorePath, "utf8") : "";
191
+ const lines = existing.split(/\r?\n/).filter((line) => line.length > 0);
192
+ const present = new Set(lines);
193
+ const additions = GENERATED_GITIGNORE_ENTRIES.filter((entry) => !present.has(entry));
194
+ if (additions.length === 0) {
195
+ writeFileSync(gitignorePath, ensureTrailingNewline(existing), "utf8");
196
+ return;
197
+ }
198
+ const next = [
199
+ existing.trimEnd(),
200
+ existing.trimEnd().length > 0 ? "" : undefined,
201
+ "# blt wai generated files",
202
+ ...additions,
203
+ "",
204
+ ]
205
+ .filter((line) => line !== undefined)
206
+ .join("\n");
207
+ writeFileSync(gitignorePath, next, "utf8");
208
+ }
209
+ //# sourceMappingURL=multi-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-agent.js","sourceRoot":"","sources":["../../../src/commands/wai/multi-agent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wai.d.ts","sourceRoot":"","sources":["../../src/commands/wai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAyB,MAAM,eAAe,CAAC;AAGpE;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,OAAO,EAAE,OAAO,QA+PlD"}
1
+ {"version":3,"file":"wai.d.ts","sourceRoot":"","sources":["../../src/commands/wai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAyB,MAAM,eAAe,CAAC;AAIpE;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,OAAO,EAAE,OAAO,QA6TlD"}
@@ -1,4 +1,5 @@
1
1
  import { runWaiConfig } from "./wai/config";
2
+ import { runWaiDoctor, runWaiInit, runWaiSync } from "./wai/multi-agent";
2
3
  /**
3
4
  * Register wai command with the CLI program.
4
5
  * WAI = BLT WAI (bltwai.com) — AI/agent config templates.
@@ -11,9 +12,14 @@ Beyond Limited Thinking with Artificial Intelligence
11
12
  blt wai — AI and agent configuration templates
12
13
 
13
14
  Usage:
14
- blt wai <type> [name] [options]
15
+ blt wai <operation>
15
16
 
16
- Types:
17
+ Operations:
18
+ init Create SKILL.md — shared source of truth for all agents
19
+ sync Generate Claude, Codex, Cursor, Aider, Gemini, Goose, and Cline files
20
+ doctor Check generated agent files against SKILL.md
21
+
22
+ Compatibility template operations:
17
23
  claude CLAUDE.md — primary project memory (loaded every session)
18
24
  agents AGENTS.md — open standard for AI agent config
19
25
  claude-local CLAUDE.local.md — local-only (add to .gitignore)
@@ -29,6 +35,9 @@ Types:
29
35
  codex CODEX.md — Legacy Codex instructions
30
36
 
31
37
  Examples:
38
+ blt wai init
39
+ blt wai sync
40
+ blt wai doctor
32
41
  blt wai claude
33
42
  blt wai agents
34
43
  blt wai claude-local
@@ -42,6 +51,7 @@ Examples:
42
51
  blt wai implement
43
52
 
44
53
  Templates are fetched from the tools repo. Uses built-in fallback when offline.
54
+ Run 'blt wai <operation> --help' for more information on a specific command.
45
55
  `;
46
56
  program
47
57
  .command("wai", "ai and agent configuration")
@@ -49,6 +59,54 @@ Templates are fetched from the tools repo. Uses built-in fallback when offline.
49
59
  .action(() => {
50
60
  console.log(waiHelpText);
51
61
  });
62
+ program
63
+ .command("wai init", "Create SKILL.md — shared source of truth")
64
+ .hide()
65
+ .help("Create SKILL.md — the source file used by blt wai sync.\n\n" +
66
+ "Edit SKILL.md to maintain shared project instructions, then run blt wai sync\n" +
67
+ "to generate agent-specific files for Claude Code, Codex, Cursor, Aider,\n" +
68
+ "Gemini CLI, Goose, and Cline.")
69
+ .option("--overwrite", "Replace existing SKILL.md", { default: false })
70
+ .action(async ({ options, logger }) => {
71
+ try {
72
+ await runWaiInit({ overwrite: options.overwrite }, logger);
73
+ }
74
+ catch (error) {
75
+ logger.error(`wai init failed: ${error instanceof Error ? error.message : String(error)}`);
76
+ process.exit(1);
77
+ }
78
+ });
79
+ program
80
+ .command("wai sync", "Generate multi-agent config files from SKILL.md")
81
+ .hide()
82
+ .help("Generate agent-specific config files from SKILL.md.\n\n" +
83
+ "Outputs CLAUDE.md, AGENTS.md, .cursor/rules/blt.mdc, CONVENTIONS.md,\n" +
84
+ ".aider.conf.yml, GEMINI.md, .agents/skills/blt/SKILL.md, and .clinerules.")
85
+ .action(async ({ logger }) => {
86
+ try {
87
+ await runWaiSync({}, logger);
88
+ }
89
+ catch (error) {
90
+ logger.error(`wai sync failed: ${error instanceof Error ? error.message : String(error)}`);
91
+ process.exit(1);
92
+ }
93
+ });
94
+ program
95
+ .command("wai doctor", "Check generated multi-agent config files")
96
+ .hide()
97
+ .help("Check whether generated agent-specific files are synchronized with SKILL.md.\n\n" +
98
+ "Reports missing or stale generated files. Exits non-zero when files need sync.")
99
+ .action(async ({ logger }) => {
100
+ try {
101
+ const result = await runWaiDoctor({}, logger);
102
+ if (!result.ok)
103
+ process.exit(1);
104
+ }
105
+ catch (error) {
106
+ logger.error(`wai doctor failed: ${error instanceof Error ? error.message : String(error)}`);
107
+ process.exit(1);
108
+ }
109
+ });
52
110
  program
53
111
  .command("wai claude", "Create CLAUDE.md — project memory")
54
112
  .hide()
@@ -1 +1 @@
1
- {"version":3,"file":"wai.js","sourceRoot":"","sources":["../../src/commands/wai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wai.js","sourceRoot":"","sources":["../../src/commands/wai.ts"],"names":[],"mappings":"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"}
@@ -9,15 +9,19 @@ export interface RunSqlMeta {
9
9
  readonly path: string;
10
10
  readonly version: string;
11
11
  }
12
+ export type RunSqlOptions = {
13
+ /** Log and run each statement separately (progress + clearer failure location). */
14
+ verbose?: boolean;
15
+ };
12
16
  /**
13
17
  * Execute ad-hoc SQL (e.g. snapshot apply bundle).
14
18
  */
15
- export declare function runSqlContent(sqlContent: string, meta: RunSqlMeta, connectionOverride?: string): Promise<void>;
19
+ export declare function runSqlContent(sqlContent: string, meta: RunSqlMeta, connectionOverride?: string, options?: RunSqlOptions): Promise<void>;
16
20
  /**
17
21
  * Execute a SQL file against the database.
18
22
  * Uses BLT_DATA_LOAD_URL when set (dev snapshot apply), otherwise SUPABASE_CONNECTION_STRING.
19
23
  */
20
- export declare function runSqlFile(filePath?: string, connectionOverride?: string): Promise<void>;
24
+ export declare function runSqlFile(filePath?: string, connectionOverride?: string, options?: RunSqlOptions): Promise<void>;
21
25
  export declare function requireConnectionString(envHint: string): string;
22
26
  /**
23
27
  * Postgres URL used for snapshot pulls (`blt data pull`).
@@ -1 +1 @@
1
- {"version":3,"file":"database-runner.d.ts","sourceRoot":"","sources":["../../src/lib/database-runner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAsB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAE/D;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAqC1C;AAiBD,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,EAChB,kBAAkB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC,CA4Ef;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC/B,QAAQ,CAAC,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAWD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAU/D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAWhD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAWhD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACzC,gBAAgB,EAAE,MAAM,EACxB,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,CAAC,CAAC,CAkBZ;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAqBvE"}
1
+ {"version":3,"file":"database-runner.d.ts","sourceRoot":"","sources":["../../src/lib/database-runner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAsB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAG/D;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAqC1C;AAiBD,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,aAAa,GAAG;IAC3B,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAwGF;;GAEG;AACH,wBAAsB,aAAa,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,EAChB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,OAAO,GAAE,aAAkB,GACzB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC/B,QAAQ,CAAC,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,OAAO,GAAE,aAAkB,GACzB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAWD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAU/D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAWhD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAWhD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACzC,gBAAgB,EAAE,MAAM,EACxB,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,CAAC,CAAC,CAkBZ;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAqBvE"}
@@ -3,6 +3,7 @@ import { readdirSync, readFileSync, existsSync } from "node:fs";
3
3
  import { join } from "node:path";
4
4
  import pg from "pg";
5
5
  import { PATTERNS, getPaths } from "./constants";
6
+ import { describeSqlStatement, splitSqlStatements } from "./split-sql-statements";
6
7
  /**
7
8
  * Get the latest SQL file from the dist directory
8
9
  */
@@ -53,10 +54,86 @@ function resolveExecConnection(connectionOverride) {
53
54
  }
54
55
  return connectionString;
55
56
  }
57
+ function printSqlExecutionError(error, sqlContent, meta, context) {
58
+ console.error("\nāŒ Error executing SQL:");
59
+ console.error("━".repeat(60));
60
+ console.error(`\n${error.message}`);
61
+ if (context?.statementIndex !== undefined) {
62
+ console.error(`\nšŸ“ Failed at statement ${context.statementIndex + 1}${context.statementLabel ? `: ${context.statementLabel}` : ""}`);
63
+ }
64
+ if (error.position) {
65
+ const lines = sqlContent.substring(0, error.position).split("\n");
66
+ const lineNumber = lines.length;
67
+ const columnNumber = lines[lines.length - 1].length + 1;
68
+ console.error(`\nšŸ“ Location: Line ${lineNumber}, Column ${columnNumber}`);
69
+ if (context?.statementIndex === undefined) {
70
+ console.error(` Position: ${error.position} characters into file`);
71
+ }
72
+ const allLines = sqlContent.split("\n");
73
+ const startLine = Math.max(0, lineNumber - 4);
74
+ const endLine = Math.min(allLines.length, lineNumber + 2);
75
+ console.error("\nšŸ“„ Context:");
76
+ console.error("━".repeat(60));
77
+ for (let i = startLine; i < endLine; i++) {
78
+ const marker = i + 1 === lineNumber ? "āž¤" : " ";
79
+ const lineNum = String(i + 1).padStart(5, " ");
80
+ console.error(`${marker} ${lineNum} | ${allLines[i]}`);
81
+ }
82
+ console.error("━".repeat(60));
83
+ }
84
+ if (error.detail) {
85
+ console.error(`\nšŸ“ Detail: ${error.detail}`);
86
+ }
87
+ if (error.hint) {
88
+ console.error(`\nšŸ’” Hint: ${error.hint}`);
89
+ }
90
+ if (error.where) {
91
+ console.error(`\nšŸ” Where: ${error.where}`);
92
+ }
93
+ if (error.code) {
94
+ console.error(`\nšŸ·ļø SQL Error Code: ${error.code}`);
95
+ }
96
+ console.error(`\nšŸ“‚ Source: ${meta.path}`);
97
+ if (meta.version !== "unknown") {
98
+ console.error(` Version: ${meta.version}`);
99
+ }
100
+ console.error("\n" + "━".repeat(60));
101
+ process.exit(1);
102
+ }
103
+ async function executeSqlScript(client, sqlContent, meta, options) {
104
+ if (!options.verbose) {
105
+ console.log("\nā³ Executing SQL script...");
106
+ console.log(" This may take a few moments...\n");
107
+ await client.query(sqlContent);
108
+ return;
109
+ }
110
+ const statements = splitSqlStatements(sqlContent);
111
+ if (statements.length === 0) {
112
+ console.log("\nāš ļø No SQL statements found in script.");
113
+ return;
114
+ }
115
+ console.log(`\nā³ Executing ${statements.length} statement(s)…\n`);
116
+ for (let i = 0; i < statements.length; i++) {
117
+ const stmt = statements[i];
118
+ if (!stmt)
119
+ continue;
120
+ const label = describeSqlStatement(stmt, i);
121
+ console.log(` [${i + 1}/${statements.length}] ${label}`);
122
+ try {
123
+ await client.query(stmt);
124
+ }
125
+ catch (error) {
126
+ printSqlExecutionError(error, stmt, meta, {
127
+ statementIndex: i,
128
+ statementLabel: label,
129
+ });
130
+ }
131
+ }
132
+ }
56
133
  /**
57
134
  * Execute ad-hoc SQL (e.g. snapshot apply bundle).
58
135
  */
59
- export async function runSqlContent(sqlContent, meta, connectionOverride) {
136
+ export async function runSqlContent(sqlContent, meta, connectionOverride, options = {}) {
60
137
  const connectionString = resolveExecConnection(connectionOverride);
61
138
  const client = new pg.Client({ connectionString });
62
139
  try {
@@ -64,54 +141,14 @@ export async function runSqlContent(sqlContent, meta, connectionOverride) {
64
141
  console.log("šŸ“” Connecting to database...");
65
142
  await client.connect();
66
143
  console.log("āœ… Connected successfully");
67
- console.log("\nā³ Executing SQL script...");
68
- console.log(" This may take a few moments...\n");
69
- await client.query(sqlContent);
144
+ await executeSqlScript(client, sqlContent, meta, options);
70
145
  console.log("āœ… SQL script executed successfully!");
71
146
  if (meta.version !== "unknown") {
72
147
  console.log(`\nšŸ“Š Database updated with schema v${meta.version}`);
73
148
  }
74
149
  }
75
150
  catch (error) {
76
- console.error("\nāŒ Error executing SQL:");
77
- console.error("━".repeat(60));
78
- console.error(`\n${error.message}`);
79
- if (error.position) {
80
- const lines = sqlContent.substring(0, error.position).split("\n");
81
- const lineNumber = lines.length;
82
- const columnNumber = lines[lines.length - 1].length + 1;
83
- console.error(`\nšŸ“ Location: Line ${lineNumber}, Column ${columnNumber}`);
84
- console.error(` Position: ${error.position} characters into file`);
85
- const allLines = sqlContent.split("\n");
86
- const startLine = Math.max(0, lineNumber - 4);
87
- const endLine = Math.min(allLines.length, lineNumber + 2);
88
- console.error("\nšŸ“„ Context:");
89
- console.error("━".repeat(60));
90
- for (let i = startLine; i < endLine; i++) {
91
- const marker = i + 1 === lineNumber ? "āž¤" : " ";
92
- const lineNum = String(i + 1).padStart(5, " ");
93
- console.error(`${marker} ${lineNum} | ${allLines[i]}`);
94
- }
95
- console.error("━".repeat(60));
96
- }
97
- if (error.detail) {
98
- console.error(`\nšŸ“ Detail: ${error.detail}`);
99
- }
100
- if (error.hint) {
101
- console.error(`\nšŸ’” Hint: ${error.hint}`);
102
- }
103
- if (error.where) {
104
- console.error(`\nšŸ” Where: ${error.where}`);
105
- }
106
- if (error.code) {
107
- console.error(`\nšŸ·ļø SQL Error Code: ${error.code}`);
108
- }
109
- console.error(`\nšŸ“‚ Source: ${meta.path}`);
110
- if (meta.version !== "unknown") {
111
- console.error(` Version: ${meta.version}`);
112
- }
113
- console.error("\n" + "━".repeat(60));
114
- process.exit(1);
151
+ printSqlExecutionError(error, sqlContent, meta);
115
152
  }
116
153
  finally {
117
154
  await client.end();
@@ -122,7 +159,7 @@ export async function runSqlContent(sqlContent, meta, connectionOverride) {
122
159
  * Execute a SQL file against the database.
123
160
  * Uses BLT_DATA_LOAD_URL when set (dev snapshot apply), otherwise SUPABASE_CONNECTION_STRING.
124
161
  */
125
- export async function runSqlFile(filePath, connectionOverride) {
162
+ export async function runSqlFile(filePath, connectionOverride, options = {}) {
126
163
  let targetFile;
127
164
  let sqlContent;
128
165
  if (filePath) {
@@ -142,7 +179,7 @@ export async function runSqlFile(filePath, connectionOverride) {
142
179
  name: targetFile.name,
143
180
  path: targetFile.path,
144
181
  version: targetFile.version,
145
- }, connectionOverride);
182
+ }, connectionOverride, options);
146
183
  }
147
184
  const MISSING_SUPABASE_CONN = "Please set SUPABASE_CONNECTION_STRING environment variable.";
148
185
  /** Connection string used by `blt data pull` (read-only replica or safe read URL). */
@@ -1 +1 @@
1
- {"version":3,"file":"database-runner.js","sourceRoot":"","sources":["../../src/lib/database-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database-runner.js","sourceRoot":"","sources":["../../src/lib/database-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Split a PostgreSQL script into individual statements (semicolon-delimited),
3
+ * respecting dollar-quoted strings, single-quoted literals, and comments.
4
+ */
5
+ export declare function splitSqlStatements(sql: string): string[];
6
+ /** One-line summary for verbose progress logging. */
7
+ export declare function describeSqlStatement(stmt: string, index: number): string;
8
+ //# sourceMappingURL=split-sql-statements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-sql-statements.d.ts","sourceRoot":"","sources":["../../src/lib/split-sql-statements.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA0GxD;AAED,qDAAqD;AACrD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAaxE"}