@vibgrate/cli 2026.819.2 → 2026.824.3

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 (110) hide show
  1. package/dist/{agent-ZJRWCMR6.js → agent-6SJVWFPV.js} +12 -12
  2. package/dist/{agent-ZJRWCMR6.js.map → agent-6SJVWFPV.js.map} +1 -1
  3. package/dist/{approvals-YTUXBZWQ.js → approvals-5UBLBNJF.js} +5 -5
  4. package/dist/{approvals-YTUXBZWQ.js.map → approvals-5UBLBNJF.js.map} +1 -1
  5. package/dist/{attach-WOA25VNH.js → attach-PSGCCJMA.js} +3 -3
  6. package/dist/{attach-WOA25VNH.js.map → attach-PSGCCJMA.js.map} +1 -1
  7. package/dist/baseline-HPXACNFU.js +9 -0
  8. package/dist/{baseline-TVRRUZGA.js.map → baseline-HPXACNFU.js.map} +1 -1
  9. package/dist/{chunk-24HKTTFV.js → chunk-2IY24TTR.js} +3 -3
  10. package/dist/{chunk-24HKTTFV.js.map → chunk-2IY24TTR.js.map} +1 -1
  11. package/dist/{chunk-7BSUPHX6.js → chunk-3PNAQUZM.js} +3 -3
  12. package/dist/{chunk-7BSUPHX6.js.map → chunk-3PNAQUZM.js.map} +1 -1
  13. package/dist/{chunk-W6ASIMG5.js → chunk-4PDWV4AE.js} +10 -12
  14. package/dist/chunk-4PDWV4AE.js.map +1 -0
  15. package/dist/{chunk-2ZBLZ2S3.js → chunk-5QO2GFAE.js} +27 -23
  16. package/dist/chunk-5QO2GFAE.js.map +1 -0
  17. package/dist/{chunk-GBXOAO5V.js → chunk-5UG4UHKU.js} +40 -10
  18. package/dist/chunk-5UG4UHKU.js.map +1 -0
  19. package/dist/chunk-AGOKTI77.js +6 -0
  20. package/dist/{chunk-ZUZHYAJK.js.map → chunk-AGOKTI77.js.map} +1 -1
  21. package/dist/{chunk-C2EZIAA3.js → chunk-B5GOCQFB.js} +9 -9
  22. package/dist/{chunk-C2EZIAA3.js.map → chunk-B5GOCQFB.js.map} +1 -1
  23. package/dist/{chunk-MMJFHEZ4.js → chunk-CJ2R3LVX.js} +4 -4
  24. package/dist/{chunk-MMJFHEZ4.js.map → chunk-CJ2R3LVX.js.map} +1 -1
  25. package/dist/{chunk-2C4QT5D7.js → chunk-III7S75O.js} +53 -463
  26. package/dist/chunk-III7S75O.js.map +1 -0
  27. package/dist/{chunk-IMI2VHHZ.js → chunk-IKB5U3AH.js} +3 -3
  28. package/dist/{chunk-IMI2VHHZ.js.map → chunk-IKB5U3AH.js.map} +1 -1
  29. package/dist/{chunk-AP3JN33O.js → chunk-JL66EPZ4.js} +221 -10
  30. package/dist/chunk-JL66EPZ4.js.map +1 -0
  31. package/dist/{chunk-QE6F62FR.js → chunk-KBLKNR3V.js} +3 -3
  32. package/dist/{chunk-QE6F62FR.js.map → chunk-KBLKNR3V.js.map} +1 -1
  33. package/dist/{chunk-JPOYXG7Z.js → chunk-KRE7SXSA.js} +12 -13
  34. package/dist/chunk-KRE7SXSA.js.map +1 -0
  35. package/dist/{chunk-XW2XQM3C.js → chunk-LA4CETXN.js} +3 -3
  36. package/dist/{chunk-XW2XQM3C.js.map → chunk-LA4CETXN.js.map} +1 -1
  37. package/dist/{chunk-OGFOJG4H.js → chunk-LMHKIQA5.js} +3 -3
  38. package/dist/{chunk-OGFOJG4H.js.map → chunk-LMHKIQA5.js.map} +1 -1
  39. package/dist/{chunk-FCMWHSQ6.js → chunk-M5QSBXA6.js} +17 -4
  40. package/dist/chunk-M5QSBXA6.js.map +1 -0
  41. package/dist/{chunk-R5TQBIR6.js → chunk-QLNJ3VWO.js} +3 -3
  42. package/dist/{chunk-R5TQBIR6.js.map → chunk-QLNJ3VWO.js.map} +1 -1
  43. package/dist/{chunk-XLQ4YHS3.js → chunk-QP3P4V4I.js} +10 -8
  44. package/dist/chunk-QP3P4V4I.js.map +1 -0
  45. package/dist/{chunk-BQ6NTRRK.js → chunk-RAEHWCN6.js} +6 -6
  46. package/dist/{chunk-BQ6NTRRK.js.map → chunk-RAEHWCN6.js.map} +1 -1
  47. package/dist/{chunk-USPMMVNH.js → chunk-SGIFJIII.js} +3 -3
  48. package/dist/{chunk-USPMMVNH.js.map → chunk-SGIFJIII.js.map} +1 -1
  49. package/dist/{chunk-CBL3VY7J.js → chunk-TWWVTKA7.js} +35 -14
  50. package/dist/chunk-TWWVTKA7.js.map +1 -0
  51. package/dist/chunk-USW5WHUG.js +605 -0
  52. package/dist/chunk-USW5WHUG.js.map +1 -0
  53. package/dist/{chunk-NKKOGJ63.js → chunk-UUNEUEPQ.js} +71 -9
  54. package/dist/chunk-UUNEUEPQ.js.map +1 -0
  55. package/dist/{chunk-WPLOEFZU.js → chunk-WATYIYWP.js} +3 -3
  56. package/dist/{chunk-WPLOEFZU.js.map → chunk-WATYIYWP.js.map} +1 -1
  57. package/dist/{chunk-PJRPSYFQ.js → chunk-XHIWQGRE.js} +5 -5
  58. package/dist/{chunk-PJRPSYFQ.js.map → chunk-XHIWQGRE.js.map} +1 -1
  59. package/dist/{chunk-AQZYDFEK.js → chunk-YJ23GGAJ.js} +3 -3
  60. package/dist/{chunk-AQZYDFEK.js.map → chunk-YJ23GGAJ.js.map} +1 -1
  61. package/dist/cli.js +379 -544
  62. package/dist/cli.js.map +1 -1
  63. package/dist/{daemon-YKOEP3XA.js → daemon-AEL5N4SJ.js} +9 -9
  64. package/dist/{daemon-YKOEP3XA.js.map → daemon-AEL5N4SJ.js.map} +1 -1
  65. package/dist/embed-worker-main.js +3 -3
  66. package/dist/{ensure-map-BLRJDO2Y.js → ensure-map-YL5NR6UH.js} +15 -15
  67. package/dist/{ensure-map-BLRJDO2Y.js.map → ensure-map-YL5NR6UH.js.map} +1 -1
  68. package/dist/{graph-backend-NTYONTWW.js → graph-backend-LEPXFPXQ.js} +7 -7
  69. package/dist/{graph-backend-NTYONTWW.js.map → graph-backend-LEPXFPXQ.js.map} +1 -1
  70. package/dist/index.d.ts +72 -130
  71. package/dist/index.js +15 -15
  72. package/dist/{interactive-B3WTC7LB.js → interactive-YJ37ZWTA.js} +27 -26
  73. package/dist/interactive-YJ37ZWTA.js.map +1 -0
  74. package/dist/load-LT6R73IZ.js +11 -0
  75. package/dist/{load-AJROS77R.js.map → load-LT6R73IZ.js.map} +1 -1
  76. package/dist/parse-worker.js +3 -2
  77. package/dist/parse-worker.js.map +1 -1
  78. package/dist/{run-outcome-SBBSTSH3.js → run-outcome-YQBPYNEY.js} +5 -5
  79. package/dist/{run-outcome-SBBSTSH3.js.map → run-outcome-YQBPYNEY.js.map} +1 -1
  80. package/dist/{runtime-session-JYYKQVDX.js → runtime-session-JSH5UL7Z.js} +9 -9
  81. package/dist/{runtime-session-JYYKQVDX.js.map → runtime-session-JSH5UL7Z.js.map} +1 -1
  82. package/dist/{session-2ZMHZ2O6.js → session-3FLVZRMM.js} +8 -8
  83. package/dist/{session-2ZMHZ2O6.js.map → session-3FLVZRMM.js.map} +1 -1
  84. package/dist/{stream-json-ZWGB4C47.js → stream-json-VJ2O52CR.js} +12 -12
  85. package/dist/{stream-json-ZWGB4C47.js.map → stream-json-VJ2O52CR.js.map} +1 -1
  86. package/dist/version-VUTM46C5.js +4 -0
  87. package/dist/{version-5QIEUXU6.js.map → version-VUTM46C5.js.map} +1 -1
  88. package/dist/{vg-mcp-bridge-4FETMJ6M.js → vg-mcp-bridge-UUMEOJSO.js} +9 -9
  89. package/dist/{vg-mcp-bridge-4FETMJ6M.js.map → vg-mcp-bridge-UUMEOJSO.js.map} +1 -1
  90. package/dist/{vgd-R524P5BJ.js → vgd-XFT574U6.js} +8 -8
  91. package/dist/vgd-XFT574U6.js.map +1 -0
  92. package/package.json +2 -1
  93. package/dist/baseline-TVRRUZGA.js +0 -9
  94. package/dist/chunk-2C4QT5D7.js.map +0 -1
  95. package/dist/chunk-2ZBLZ2S3.js.map +0 -1
  96. package/dist/chunk-AP3JN33O.js.map +0 -1
  97. package/dist/chunk-CA4YQBA7.js +0 -699
  98. package/dist/chunk-CA4YQBA7.js.map +0 -1
  99. package/dist/chunk-CBL3VY7J.js.map +0 -1
  100. package/dist/chunk-FCMWHSQ6.js.map +0 -1
  101. package/dist/chunk-GBXOAO5V.js.map +0 -1
  102. package/dist/chunk-JPOYXG7Z.js.map +0 -1
  103. package/dist/chunk-NKKOGJ63.js.map +0 -1
  104. package/dist/chunk-W6ASIMG5.js.map +0 -1
  105. package/dist/chunk-XLQ4YHS3.js.map +0 -1
  106. package/dist/chunk-ZUZHYAJK.js +0 -6
  107. package/dist/interactive-B3WTC7LB.js.map +0 -1
  108. package/dist/load-AJROS77R.js +0 -11
  109. package/dist/version-5QIEUXU6.js +0 -4
  110. package/dist/vgd-R524P5BJ.js.map +0 -1
@@ -12474,7 +12474,10 @@ function isToolingConfigFile(filePath) {
12474
12474
  }
12475
12475
  function isTestFilePath(filePath) {
12476
12476
  const n = `/${normalizeRelPath(filePath).toLowerCase()}`;
12477
- return /\/(__tests__|__mocks__|tests?|spec|fixtures)\//.test(n) || /\.(tests?|spec)\.[^./]+$/.test(n) || /_(test|spec)\.[^./]+$/.test(n) || /\/(conftest|test_[^/]*)\.py$/.test(n);
12477
+ return /\/(__tests__|__mocks__|tests?|spec|fixtures)\//.test(n) || /\.(tests?|spec)\.[^./]+$/.test(n) || /_(test|spec)\.[^./]+$/.test(n) || /\/(conftest|test_[^/]*)\.py$/.test(n) || isTestProjectDir(n);
12478
+ }
12479
+ function isTestProjectDir(loweredPath) {
12480
+ return /\/[^/]*\.tests?\//.test(loweredPath) || /\/[^/]*(?:e2e|unit|integration|functional|acceptance|smoke|component)tests?\//.test(loweredPath);
12478
12481
  }
12479
12482
  function folderLooksLikeTests(dir) {
12480
12483
  const n = `/${normalizeRelPath(dir).toLowerCase()}/`;
@@ -12962,6 +12965,9 @@ var PATH_RULES = [
12962
12965
  // Directory rules above already cover Controllers/, Services/, Models/,
12963
12966
  // Views/, Migrations/, Middleware/ … because matching is case-insensitive.
12964
12967
  { pattern: /\.tests?\//, layer: "testing", confidence: 0.9, signal: "*.Tests project directory" },
12968
+ // Compound test-project names without the dot: `FooE2ETests/`, `unittests/`.
12969
+ // Closed keyword list so `latest/` / `contest/` never match.
12970
+ { pattern: /\/[^/]*(?:e2e|unit|integration|functional|acceptance|smoke|component)tests?\//, layer: "testing", confidence: 0.9, signal: "test project directory" },
12965
12971
  // Layer-named project directories (`Company.Product.Domain/`,
12966
12972
  // `Company.Product.Database/`) — the dotted segment carries the layer.
12967
12973
  { pattern: /\.domain\//, layer: "domain", confidence: 0.85, signal: "*.Domain project" },
@@ -13078,14 +13084,17 @@ var PASCAL_SUFFIX_RULES = [
13078
13084
  { suffix: "Configuration", layer: "config", confidence: 0.85, signal: "Configuration class" },
13079
13085
  { suffix: "Config", layer: "config", confidence: 0.8, signal: "Config class" },
13080
13086
  { suffix: "Interceptor", layer: "middleware", confidence: 0.85, signal: "Interceptor class" },
13081
- { suffix: "Activity", layer: "presentation", confidence: 0.85, signal: "Android Activity" },
13082
- { suffix: "Fragment", layer: "presentation", confidence: 0.85, signal: "Android Fragment" },
13087
+ // Mobile suffixes are platform conventions, not universal scoped to their
13088
+ // languages so a .NET `ProjectApproverSqlFragment.cs` never lands in
13089
+ // presentation on the strength of an Android naming rule.
13090
+ { suffix: "Activity", layer: "presentation", confidence: 0.85, signal: "Android Activity", extensions: [".java", ".kt", ".kts"] },
13091
+ { suffix: "Fragment", layer: "presentation", confidence: 0.85, signal: "Android Fragment", extensions: [".java", ".kt", ".kts"] },
13083
13092
  // Swift / iOS — higher confidence than the generic Controller→routing rule
13084
13093
  // so FooViewController lands in presentation, not routing.
13085
- { suffix: "ViewController", layer: "presentation", confidence: 0.95, signal: "UIKit ViewController" },
13094
+ { suffix: "ViewController", layer: "presentation", confidence: 0.95, signal: "UIKit ViewController", extensions: [".swift", ".m", ".mm", ".h"] },
13086
13095
  // Flutter
13087
- { suffix: "Screen", layer: "presentation", confidence: 0.85, signal: "Screen widget" },
13088
- { suffix: "Widget", layer: "presentation", confidence: 0.75, signal: "Widget class" }
13096
+ { suffix: "Screen", layer: "presentation", confidence: 0.85, signal: "Screen widget", extensions: [".dart"] },
13097
+ { suffix: "Widget", layer: "presentation", confidence: 0.75, signal: "Widget class", extensions: [".dart"] }
13089
13098
  ];
13090
13099
  var UI_SOURCE_EXTENSIONS = /* @__PURE__ */ new Set([".tsx", ".jsx", ".vue", ".svelte"]);
13091
13100
  var META_WEBAPP_ARCHETYPES = /* @__PURE__ */ new Set([
@@ -13162,8 +13171,10 @@ function classifyOne(filePath, archetype, opts) {
13162
13171
  bestMatch = considerRule(bestMatch, rule.layer, rule.confidence, rule.signal);
13163
13172
  }
13164
13173
  }
13174
+ const fileExt = path31.extname(filePath).toLowerCase();
13165
13175
  for (const rule of PASCAL_SUFFIX_RULES) {
13166
13176
  if (spa && SPA_SKIP_PASCAL.has(rule.suffix)) continue;
13177
+ if (rule.extensions && !rule.extensions.includes(fileExt)) continue;
13167
13178
  if (cleanBase.endsWith(rule.suffix)) {
13168
13179
  bestMatch = considerRule(bestMatch, rule.layer, rule.confidence, rule.signal);
13169
13180
  }
@@ -13193,13 +13204,31 @@ function classifyOne(filePath, archetype, opts) {
13193
13204
  }
13194
13205
  var LAYER_HINT_SEGMENT = /(?:^|\/)(application|domain|infrastructure|persistence|entities)(?:\/|$)/i;
13195
13206
  function prefixHasLayerHint(repoRelative, localPath) {
13207
+ const prefix = strippedPrefix(repoRelative, localPath);
13208
+ return prefix !== null && LAYER_HINT_SEGMENT.test(`/${prefix}/`);
13209
+ }
13210
+ function strippedPrefix(repoRelative, localPath) {
13196
13211
  const repo = repoRelative.replace(/\\/g, "/").replace(/^\/+/, "");
13197
13212
  const local = localPath.replace(/\\/g, "/").replace(/^\/+/, "");
13198
- if (!repo.endsWith(local)) return false;
13213
+ if (!repo.endsWith(local)) return null;
13199
13214
  const prefix = repo.slice(0, repo.length - local.length).replace(/\/+$/, "");
13200
- return prefix.length > 0 && LAYER_HINT_SEGMENT.test(`/${prefix}/`);
13215
+ return prefix.length > 0 ? prefix : null;
13216
+ }
13217
+ var TEST_PREFIX_SEGMENT = /\/(__tests__|__mocks__|tests?|spec|testing|e2e)\/|\/[^/]*\.tests?\/|\/[^/]*(?:e2e|unit|integration|functional|acceptance|smoke|component)tests?\//;
13218
+ function prefixLooksLikeTests(repoRelative, localPath) {
13219
+ const prefix = strippedPrefix(repoRelative, localPath);
13220
+ return prefix !== null && TEST_PREFIX_SEGMENT.test(`/${prefix.toLowerCase()}/`);
13201
13221
  }
13202
13222
  function classifyFile(filePath, archetype, opts) {
13223
+ const repoPathForTests = opts?.repoRelative?.replace(/\\/g, "/");
13224
+ if (repoPathForTests && repoPathForTests !== filePath.replace(/\\/g, "/") && prefixLooksLikeTests(repoPathForTests, filePath)) {
13225
+ return {
13226
+ filePath,
13227
+ layer: "testing",
13228
+ confidence: 0.9,
13229
+ signals: ["test project prefix"]
13230
+ };
13231
+ }
13203
13232
  const local = classifyOne(filePath, archetype, opts);
13204
13233
  const repoPath = opts?.repoRelative?.replace(/\\/g, "/");
13205
13234
  const repo = repoPath && repoPath !== filePath.replace(/\\/g, "/") && prefixHasLayerHint(repoPath, filePath) ? classifyOne(repoPath, archetype, opts) : null;
@@ -13693,6 +13722,7 @@ function collectBoundaryViolations(result, graph, profile, projectPath, projects
13693
13722
  if (!fromFile || !toFile || fromFile === toFile) continue;
13694
13723
  if (!fileInScope(fromFile, projectPath) || !fileInScope(toFile, projectPath)) continue;
13695
13724
  if (!sameOwningProject(fromFile, toFile, projectPath, projects)) continue;
13725
+ if (isTestFilePath(fromFile) || isTestFilePath(toFile)) continue;
13696
13726
  const fromState = states.get(fromFile);
13697
13727
  const toState = states.get(toFile);
13698
13728
  if (!fromState?.layer || !toState?.layer) continue;
@@ -15924,5 +15954,5 @@ async function computeTreeMetadataHash(rootDir, options) {
15924
15954
  }
15925
15955
 
15926
15956
  export { PROJECT_TYPE_TO_OSV_ECOSYSTEM, aggregateSolutionArchitecture, boundaryProfileRules, brandProgressBar, buildVersionTimelines, compactUiPurpose, computeDriftScore, computeRepoFingerprint, computeUpgradeImpact, detectVcs, driftBar, fetchRiskySymbols, fetchScanPreflight, findPackageAnyEcosystem, findPackageTimeline, findVersionCrossings, getChangelogSignals, gitHistoryAvailable, loadConfig, mermaidFromArchitecture, normalizeConstraint, parseDsn, perDependencyDrift, prepareCompressedUpload, projectTypeToVulnEcosystem, refineArchitectureWithAstRoles, refineArchitectureWithGraph, resolveHead, resolveRepositoryName, runCoreScan, scanArchitectureBundle, severityRank, titleBox, versionSatisfies, workingTreeDirty, writeDefaultConfig };
15927
- //# sourceMappingURL=chunk-GBXOAO5V.js.map
15928
- //# sourceMappingURL=chunk-GBXOAO5V.js.map
15957
+ //# sourceMappingURL=chunk-5UG4UHKU.js.map
15958
+ //# sourceMappingURL=chunk-5UG4UHKU.js.map