@happyvertical/smrt-cli 0.40.6 → 0.40.7
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/AGENTS.md +1 -0
- package/README.md +8 -0
- package/dist/{commands-DOYdmiAx.js → commands-CFm89PR4.js} +5 -0
- package/dist/index.js +8 -8
- package/package.json +12 -12
package/AGENTS.md
CHANGED
|
@@ -8,6 +8,7 @@ Developer CLI with lazy-loaded commands, manifest discovery, and class introspec
|
|
|
8
8
|
smrt introspect # Discover SMRT objects in project
|
|
9
9
|
smrt db:status # Pending schema changes + failed migration classification
|
|
10
10
|
smrt db:migrate # Apply migrations
|
|
11
|
+
smrt db:migrate --force-migration <exact-id> # Force one generated migration only
|
|
11
12
|
smrt db:migrate-uuid # Convert schema-declared UUID text columns after data remap
|
|
12
13
|
smrt db:diff # Show schema differences without generating migration files
|
|
13
14
|
smrt db:rollback # Rollback migrations
|
package/README.md
CHANGED
|
@@ -26,6 +26,7 @@ pnpm add -D @happyvertical/smrt-cli
|
|
|
26
26
|
|---------|------------|
|
|
27
27
|
| `smrt db:status` | Show pending schema changes and classify failed migration history |
|
|
28
28
|
| `smrt db:migrate` | Apply pending migrations |
|
|
29
|
+
| `smrt db:migrate --force-migration <exact-id>` | Force one generated migration while preserving guards for every other migration in the batch |
|
|
29
30
|
| `smrt db:migrate-uuid` | Convert schema-declared UUID text columns to native PostgreSQL uuid after data has been remapped |
|
|
30
31
|
| `smrt db:diff` | Show schema differences without generating migration files |
|
|
31
32
|
| `smrt db:rollback` | Rollback last migration |
|
|
@@ -35,6 +36,13 @@ File-backed SQL/TypeScript migration generation is not supported. SMRT schema
|
|
|
35
36
|
migrations are manifest-driven; model schema with SMRT objects and apply changes
|
|
36
37
|
with `smrt db:migrate`.
|
|
37
38
|
|
|
39
|
+
Use `--force-migration <exact-id>` for a known checksum, failed, or interrupted
|
|
40
|
+
migration that is safe to retry. The selector is an exact generated migration
|
|
41
|
+
ID, and unrelated checksum, failed, and running records remain fail-closed even
|
|
42
|
+
when the atomic batch reconciles live schema drift. Global `--force` remains
|
|
43
|
+
available for backward compatibility but intentionally overrides guards for the
|
|
44
|
+
whole pending batch.
|
|
45
|
+
|
|
38
46
|
### Code Generation
|
|
39
47
|
|
|
40
48
|
| Command | Description |
|
|
@@ -7042,6 +7042,10 @@ export default testManifest;
|
|
|
7042
7042
|
description: "Force re-apply even if already applied (skip checksum validation)",
|
|
7043
7043
|
default: false
|
|
7044
7044
|
},
|
|
7045
|
+
"force-migration": {
|
|
7046
|
+
type: "string",
|
|
7047
|
+
description: "Force only the generated migration with this exact ID; all other migration guards remain enabled"
|
|
7048
|
+
},
|
|
7045
7049
|
"repair-data": {
|
|
7046
7050
|
type: "boolean",
|
|
7047
7051
|
description: "Apply safe data repairs after schema migrations (currently legacy STI discriminator rows)",
|
|
@@ -7306,6 +7310,7 @@ export default testManifest;
|
|
|
7306
7310
|
atomic: true,
|
|
7307
7311
|
postgresSafe: false,
|
|
7308
7312
|
force: options.force ?? false,
|
|
7313
|
+
forceMigrations: options["force-migration"] ? [options["force-migration"]] : void 0,
|
|
7309
7314
|
reconcile: true,
|
|
7310
7315
|
onProgress: (result) => {
|
|
7311
7316
|
if (!result.success) return;
|
package/dist/index.js
CHANGED
|
@@ -48,56 +48,56 @@ var _docsCommands = null;
|
|
|
48
48
|
var _playgroundCommands = null;
|
|
49
49
|
async function getGnodeCommands() {
|
|
50
50
|
if (!_gnodeCommands) {
|
|
51
|
-
const { gnodeCommands } = await import("./commands-
|
|
51
|
+
const { gnodeCommands } = await import("./commands-CFm89PR4.js");
|
|
52
52
|
_gnodeCommands = gnodeCommands;
|
|
53
53
|
}
|
|
54
54
|
return _gnodeCommands;
|
|
55
55
|
}
|
|
56
56
|
async function getGitCommands() {
|
|
57
57
|
if (!_gitCommands) {
|
|
58
|
-
const { gitCommands } = await import("./commands-
|
|
58
|
+
const { gitCommands } = await import("./commands-CFm89PR4.js");
|
|
59
59
|
_gitCommands = gitCommands;
|
|
60
60
|
}
|
|
61
61
|
return _gitCommands;
|
|
62
62
|
}
|
|
63
63
|
async function getGenerateCommands() {
|
|
64
64
|
if (!_generateCommands) {
|
|
65
|
-
const { generateCommands } = await import("./commands-
|
|
65
|
+
const { generateCommands } = await import("./commands-CFm89PR4.js");
|
|
66
66
|
_generateCommands = generateCommands;
|
|
67
67
|
}
|
|
68
68
|
return _generateCommands;
|
|
69
69
|
}
|
|
70
70
|
async function getInitCommands() {
|
|
71
71
|
if (!_initCommands) {
|
|
72
|
-
const { initCommands } = await import("./commands-
|
|
72
|
+
const { initCommands } = await import("./commands-CFm89PR4.js");
|
|
73
73
|
_initCommands = initCommands;
|
|
74
74
|
}
|
|
75
75
|
return _initCommands;
|
|
76
76
|
}
|
|
77
77
|
async function getUtilityCommands() {
|
|
78
78
|
if (!_utilityCommands) {
|
|
79
|
-
const { utilityCommands } = await import("./commands-
|
|
79
|
+
const { utilityCommands } = await import("./commands-CFm89PR4.js");
|
|
80
80
|
_utilityCommands = utilityCommands;
|
|
81
81
|
}
|
|
82
82
|
return _utilityCommands;
|
|
83
83
|
}
|
|
84
84
|
async function getDispatchCommands() {
|
|
85
85
|
if (!_dispatchCommands) {
|
|
86
|
-
const { dispatchCommands } = await import("./commands-
|
|
86
|
+
const { dispatchCommands } = await import("./commands-CFm89PR4.js");
|
|
87
87
|
_dispatchCommands = dispatchCommands;
|
|
88
88
|
}
|
|
89
89
|
return _dispatchCommands;
|
|
90
90
|
}
|
|
91
91
|
async function getDocsCommands() {
|
|
92
92
|
if (!_docsCommands) {
|
|
93
|
-
const { docsCommands } = await import("./commands-
|
|
93
|
+
const { docsCommands } = await import("./commands-CFm89PR4.js");
|
|
94
94
|
_docsCommands = docsCommands;
|
|
95
95
|
}
|
|
96
96
|
return _docsCommands;
|
|
97
97
|
}
|
|
98
98
|
async function getPlaygroundCommands() {
|
|
99
99
|
if (!_playgroundCommands) {
|
|
100
|
-
const { playgroundCommands } = await import("./commands-
|
|
100
|
+
const { playgroundCommands } = await import("./commands-CFm89PR4.js");
|
|
101
101
|
_playgroundCommands = playgroundCommands;
|
|
102
102
|
}
|
|
103
103
|
return _playgroundCommands;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-cli",
|
|
3
|
-
"version": "0.40.
|
|
3
|
+
"version": "0.40.7",
|
|
4
4
|
"description": "Developer CLI for SMRT framework - introspection, testing, and project management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -24,20 +24,20 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@happyvertical/ai": "^0.80.
|
|
28
|
-
"@happyvertical/files": "^0.80.
|
|
29
|
-
"@happyvertical/logger": "^0.80.
|
|
30
|
-
"@happyvertical/sql": "^0.80.
|
|
31
|
-
"@happyvertical/utils": "^0.80.
|
|
27
|
+
"@happyvertical/ai": "^0.80.2",
|
|
28
|
+
"@happyvertical/files": "^0.80.2",
|
|
29
|
+
"@happyvertical/logger": "^0.80.2",
|
|
30
|
+
"@happyvertical/sql": "^0.80.2",
|
|
31
|
+
"@happyvertical/utils": "^0.80.2",
|
|
32
32
|
"acorn": "^8.17.0",
|
|
33
33
|
"fast-glob": "3.3.3",
|
|
34
34
|
"tar": "^7.5.19",
|
|
35
|
-
"@happyvertical/smrt-agents": "0.40.
|
|
36
|
-
"@happyvertical/smrt-config": "0.40.
|
|
37
|
-
"@happyvertical/smrt-dev-mcp": "0.40.
|
|
38
|
-
"@happyvertical/smrt-core": "0.40.
|
|
39
|
-
"@happyvertical/smrt-
|
|
40
|
-
"@happyvertical/smrt-
|
|
35
|
+
"@happyvertical/smrt-agents": "0.40.7",
|
|
36
|
+
"@happyvertical/smrt-config": "0.40.7",
|
|
37
|
+
"@happyvertical/smrt-dev-mcp": "0.40.7",
|
|
38
|
+
"@happyvertical/smrt-core": "0.40.7",
|
|
39
|
+
"@happyvertical/smrt-playground": "0.40.7",
|
|
40
|
+
"@happyvertical/smrt-types": "0.40.7"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "24.13.2",
|