@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 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-DOYdmiAx.js");
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-DOYdmiAx.js");
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-DOYdmiAx.js");
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-DOYdmiAx.js");
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-DOYdmiAx.js");
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-DOYdmiAx.js");
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-DOYdmiAx.js");
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-DOYdmiAx.js");
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.6",
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.0",
28
- "@happyvertical/files": "^0.80.0",
29
- "@happyvertical/logger": "^0.80.0",
30
- "@happyvertical/sql": "^0.80.0",
31
- "@happyvertical/utils": "^0.80.0",
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.6",
36
- "@happyvertical/smrt-config": "0.40.6",
37
- "@happyvertical/smrt-dev-mcp": "0.40.6",
38
- "@happyvertical/smrt-core": "0.40.6",
39
- "@happyvertical/smrt-types": "0.40.6",
40
- "@happyvertical/smrt-playground": "0.40.6"
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",