@happyvertical/smrt-cli 0.38.11 → 0.38.13

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.
@@ -6022,13 +6022,18 @@ async function loadDependencyManifests(rootManifest, projectRoot, findings) {
6022
6022
  if (!next?.dependency || loaded.has(next.dependency)) continue;
6023
6023
  const loadedDependency = await loadDependencyManifest(next.dependency, next.issuerResolverPath);
6024
6024
  if (!loadedDependency) {
6025
+ if (next.parentDependency) {
6026
+ addFinding(findings, "warning", "missing-nested-dependency-manifest", `Nested SMRT dependency "${next.dependency}" declared by "${next.parentDependency}" does not expose a runtime manifest; skipping it.`);
6027
+ continue;
6028
+ }
6025
6029
  addFinding(findings, "error", "missing-dependency-manifest", `Declared SMRT dependency "${next.dependency}" does not expose a runtime manifest.`);
6026
6030
  continue;
6027
6031
  }
6028
6032
  loaded.set(next.dependency, loadedDependency);
6029
6033
  for (const nestedDependency of loadedDependency.manifest.smrtDependencies || []) if (!loaded.has(nestedDependency)) queue.push({
6030
6034
  dependency: nestedDependency,
6031
- issuerResolverPath: loadedDependency.resolverPath
6035
+ issuerResolverPath: loadedDependency.resolverPath,
6036
+ parentDependency: next.dependency
6032
6037
  });
6033
6038
  }
6034
6039
  return Array.from(loaded.values(), (entry) => entry.manifest);
@@ -6045,8 +6050,28 @@ function resolvePackageJsonPath(packageName, issuerResolverPath) {
6045
6050
  ];
6046
6051
  for (const candidate of resolutionCandidates) try {
6047
6052
  const packageJsonPath = findPackageJsonForResolvedEntry(requireFromIssuer.resolve(candidate), packageName);
6048
- if (packageJsonPath) return packageJsonPath;
6053
+ if (packageJsonPath) return realpathSync(packageJsonPath);
6054
+ } catch {}
6055
+ return findPackageJsonFromNodeModules(packageName, issuerResolverPath);
6056
+ }
6057
+ function findPackageJsonFromNodeModules(packageName, issuerResolverPath) {
6058
+ const packageParts = packageName.split("/");
6059
+ const startDirs = /* @__PURE__ */ new Set([dirname(issuerResolverPath)]);
6060
+ try {
6061
+ startDirs.add(dirname(realpathSync(issuerResolverPath)));
6049
6062
  } catch {}
6063
+ for (const startDir of startDirs) {
6064
+ let currentDir = startDir;
6065
+ for (let index = 0; index < MAX_PACKAGE_JSON_ASCENTS; index += 1) {
6066
+ const packageJsonPath = join(currentDir, "node_modules", ...packageParts, "package.json");
6067
+ if (existsSync(packageJsonPath)) try {
6068
+ if (JSON.parse(readFileSync(packageJsonPath, "utf-8"))?.name === packageName) return realpathSync(packageJsonPath);
6069
+ } catch {}
6070
+ const parentDir = dirname(currentDir);
6071
+ if (parentDir === currentDir) break;
6072
+ currentDir = parentDir;
6073
+ }
6074
+ }
6050
6075
  return null;
6051
6076
  }
6052
6077
  function findPackageJsonForResolvedEntry(resolvedPath, packageName) {
package/dist/index.js CHANGED
@@ -36,56 +36,56 @@ var _docsCommands = null;
36
36
  var _playgroundCommands = null;
37
37
  async function getGnodeCommands() {
38
38
  if (!_gnodeCommands) {
39
- const { gnodeCommands } = await import("./commands-BS3AEVpd.js");
39
+ const { gnodeCommands } = await import("./commands-8PgLy-Xb.js");
40
40
  _gnodeCommands = gnodeCommands;
41
41
  }
42
42
  return _gnodeCommands;
43
43
  }
44
44
  async function getGitCommands() {
45
45
  if (!_gitCommands) {
46
- const { gitCommands } = await import("./commands-BS3AEVpd.js");
46
+ const { gitCommands } = await import("./commands-8PgLy-Xb.js");
47
47
  _gitCommands = gitCommands;
48
48
  }
49
49
  return _gitCommands;
50
50
  }
51
51
  async function getGenerateCommands() {
52
52
  if (!_generateCommands) {
53
- const { generateCommands } = await import("./commands-BS3AEVpd.js");
53
+ const { generateCommands } = await import("./commands-8PgLy-Xb.js");
54
54
  _generateCommands = generateCommands;
55
55
  }
56
56
  return _generateCommands;
57
57
  }
58
58
  async function getInitCommands() {
59
59
  if (!_initCommands) {
60
- const { initCommands } = await import("./commands-BS3AEVpd.js");
60
+ const { initCommands } = await import("./commands-8PgLy-Xb.js");
61
61
  _initCommands = initCommands;
62
62
  }
63
63
  return _initCommands;
64
64
  }
65
65
  async function getUtilityCommands() {
66
66
  if (!_utilityCommands) {
67
- const { utilityCommands } = await import("./commands-BS3AEVpd.js");
67
+ const { utilityCommands } = await import("./commands-8PgLy-Xb.js");
68
68
  _utilityCommands = utilityCommands;
69
69
  }
70
70
  return _utilityCommands;
71
71
  }
72
72
  async function getDispatchCommands() {
73
73
  if (!_dispatchCommands) {
74
- const { dispatchCommands } = await import("./commands-BS3AEVpd.js");
74
+ const { dispatchCommands } = await import("./commands-8PgLy-Xb.js");
75
75
  _dispatchCommands = dispatchCommands;
76
76
  }
77
77
  return _dispatchCommands;
78
78
  }
79
79
  async function getDocsCommands() {
80
80
  if (!_docsCommands) {
81
- const { docsCommands } = await import("./commands-BS3AEVpd.js");
81
+ const { docsCommands } = await import("./commands-8PgLy-Xb.js");
82
82
  _docsCommands = docsCommands;
83
83
  }
84
84
  return _docsCommands;
85
85
  }
86
86
  async function getPlaygroundCommands() {
87
87
  if (!_playgroundCommands) {
88
- const { playgroundCommands } = await import("./commands-BS3AEVpd.js");
88
+ const { playgroundCommands } = await import("./commands-8PgLy-Xb.js");
89
89
  _playgroundCommands = playgroundCommands;
90
90
  }
91
91
  return _playgroundCommands;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-cli",
3
- "version": "0.38.11",
3
+ "version": "0.38.13",
4
4
  "description": "Developer CLI for SMRT framework - introspection, testing, and project management",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -32,12 +32,12 @@
32
32
  "acorn": "^8.17.0",
33
33
  "fast-glob": "3.3.3",
34
34
  "tar": "^7.5.19",
35
- "@happyvertical/smrt-agents": "0.38.11",
36
- "@happyvertical/smrt-config": "0.38.11",
37
- "@happyvertical/smrt-core": "0.38.11",
38
- "@happyvertical/smrt-playground": "0.38.11",
39
- "@happyvertical/smrt-dev-mcp": "0.38.11",
40
- "@happyvertical/smrt-types": "0.38.11"
35
+ "@happyvertical/smrt-agents": "0.38.13",
36
+ "@happyvertical/smrt-config": "0.38.13",
37
+ "@happyvertical/smrt-core": "0.38.13",
38
+ "@happyvertical/smrt-dev-mcp": "0.38.13",
39
+ "@happyvertical/smrt-playground": "0.38.13",
40
+ "@happyvertical/smrt-types": "0.38.13"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "24.13.2",