@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.
- package/README.md +67 -75
- package/dist/commands/app/data.d.ts +2 -0
- package/dist/commands/app/data.d.ts.map +1 -1
- package/dist/commands/app/data.js +2 -2
- package/dist/commands/app/data.js.map +1 -1
- package/dist/commands/app/env-check.d.ts +3 -2
- package/dist/commands/app/env-check.d.ts.map +1 -1
- package/dist/commands/app/env-check.js +5 -4
- package/dist/commands/app/env-check.js.map +1 -1
- package/dist/commands/app/env-decrypt.d.ts +2 -0
- package/dist/commands/app/env-decrypt.d.ts.map +1 -1
- package/dist/commands/app/env-decrypt.js +1 -1
- package/dist/commands/app/env-decrypt.js.map +1 -1
- package/dist/commands/app/site-env.d.ts +3 -0
- package/dist/commands/app/site-env.d.ts.map +1 -1
- package/dist/commands/app/site-env.js +14 -4
- package/dist/commands/app/site-env.js.map +1 -1
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +8 -4
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/data/apply.d.ts +1 -0
- package/dist/commands/data/apply.d.ts.map +1 -1
- package/dist/commands/data/apply.js +4 -1
- package/dist/commands/data/apply.js.map +1 -1
- package/dist/commands/data.d.ts.map +1 -1
- package/dist/commands/data.js +3 -2
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/deploy/data.d.ts +2 -1
- package/dist/commands/deploy/data.d.ts.map +1 -1
- package/dist/commands/deploy/data.js +2 -2
- package/dist/commands/deploy/data.js.map +1 -1
- package/dist/commands/deploy/schema.d.ts +2 -1
- package/dist/commands/deploy/schema.d.ts.map +1 -1
- package/dist/commands/deploy/schema.js +2 -2
- package/dist/commands/deploy/schema.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +9 -6
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/env/get.d.ts.map +1 -1
- package/dist/commands/env/get.js +5 -2
- package/dist/commands/env/get.js.map +1 -1
- package/dist/commands/env.js +1 -1
- package/dist/commands/notify/google-chat.js +1 -1
- package/dist/commands/notify/google-chat.js.map +1 -1
- package/dist/commands/notify/keys.d.ts +10 -0
- package/dist/commands/notify/keys.d.ts.map +1 -1
- package/dist/commands/notify/keys.js +29 -15
- package/dist/commands/notify/keys.js.map +1 -1
- package/dist/commands/wai/multi-agent.d.ts +22 -0
- package/dist/commands/wai/multi-agent.d.ts.map +1 -0
- package/dist/commands/wai/multi-agent.js +209 -0
- package/dist/commands/wai/multi-agent.js.map +1 -0
- package/dist/commands/wai.d.ts.map +1 -1
- package/dist/commands/wai.js +60 -2
- package/dist/commands/wai.js.map +1 -1
- package/dist/lib/database-runner.d.ts +6 -2
- package/dist/lib/database-runner.d.ts.map +1 -1
- package/dist/lib/database-runner.js +82 -45
- package/dist/lib/database-runner.js.map +1 -1
- package/dist/lib/split-sql-statements.d.ts +8 -0
- package/dist/lib/split-sql-statements.d.ts.map +1 -0
- package/dist/lib/split-sql-statements.js +120 -0
- package/dist/lib/split-sql-statements.js.map +1 -0
- 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;
|
|
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"}
|
package/dist/commands/wai.js
CHANGED
|
@@ -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 <
|
|
15
|
+
blt wai <operation>
|
|
15
16
|
|
|
16
|
-
|
|
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()
|
package/dist/commands/wai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wai.js","sourceRoot":"","sources":["../../src/commands/wai.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
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;
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA,+BAA+B;AAE/B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAgB,MAAM,aAAa,CAAC;
|
|
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"}
|