@vibgrate/cli 2026.806.2 → 2026.813.1

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 (96) hide show
  1. package/dist/{agent-DSC3EQLT.js → agent-N3CP3SPI.js} +11 -11
  2. package/dist/{agent-DSC3EQLT.js.map → agent-N3CP3SPI.js.map} +1 -1
  3. package/dist/baseline-ZMRZRGFI.js +9 -0
  4. package/dist/{baseline-KVCXVZFQ.js.map → baseline-ZMRZRGFI.js.map} +1 -1
  5. package/dist/{chunk-QDKFGLI3.js → chunk-3WUTQYRY.js} +7 -7
  6. package/dist/{chunk-QDKFGLI3.js.map → chunk-3WUTQYRY.js.map} +1 -1
  7. package/dist/{chunk-D2VEJHPC.js → chunk-5JJBGBP2.js} +8 -8
  8. package/dist/{chunk-D2VEJHPC.js.map → chunk-5JJBGBP2.js.map} +1 -1
  9. package/dist/{chunk-Y4JO6LYP.js → chunk-5ROZODMW.js} +302 -11
  10. package/dist/chunk-5ROZODMW.js.map +1 -0
  11. package/dist/{chunk-ZPPDKHGL.js → chunk-6423BHLN.js} +7 -7
  12. package/dist/{chunk-ZPPDKHGL.js.map → chunk-6423BHLN.js.map} +1 -1
  13. package/dist/{chunk-455ZJQQ4.js → chunk-6GQLEDVK.js} +5 -5
  14. package/dist/{chunk-455ZJQQ4.js.map → chunk-6GQLEDVK.js.map} +1 -1
  15. package/dist/{chunk-SBVZGEOB.js → chunk-7ZHSSGUF.js} +3 -3
  16. package/dist/{chunk-SBVZGEOB.js.map → chunk-7ZHSSGUF.js.map} +1 -1
  17. package/dist/{chunk-SI4D7DYF.js → chunk-ADP6ITGF.js} +44 -8
  18. package/dist/chunk-ADP6ITGF.js.map +1 -0
  19. package/dist/{chunk-7C5UKIXD.js → chunk-CJNWHXQD.js} +12 -10
  20. package/dist/chunk-CJNWHXQD.js.map +1 -0
  21. package/dist/{chunk-ZMSTSEGR.js → chunk-EWZKOU66.js} +3 -3
  22. package/dist/{chunk-ZMSTSEGR.js.map → chunk-EWZKOU66.js.map} +1 -1
  23. package/dist/{chunk-TOVVTZTM.js → chunk-FBVKQXBH.js} +3 -3
  24. package/dist/{chunk-TOVVTZTM.js.map → chunk-FBVKQXBH.js.map} +1 -1
  25. package/dist/{chunk-HV4CKBXT.js → chunk-GOPANQZT.js} +3 -3
  26. package/dist/{chunk-HV4CKBXT.js.map → chunk-GOPANQZT.js.map} +1 -1
  27. package/dist/{chunk-6L6V77HW.js → chunk-IJQOZ6ZD.js} +8 -8
  28. package/dist/{chunk-6L6V77HW.js.map → chunk-IJQOZ6ZD.js.map} +1 -1
  29. package/dist/{chunk-VTJAPNJO.js → chunk-JYM4QT6F.js} +4 -4
  30. package/dist/{chunk-VTJAPNJO.js.map → chunk-JYM4QT6F.js.map} +1 -1
  31. package/dist/{chunk-KYRH3567.js → chunk-KBP7GJV6.js} +3 -3
  32. package/dist/{chunk-KYRH3567.js.map → chunk-KBP7GJV6.js.map} +1 -1
  33. package/dist/{chunk-6XKDAYYR.js → chunk-KF2QT6RY.js} +4 -4
  34. package/dist/{chunk-6XKDAYYR.js.map → chunk-KF2QT6RY.js.map} +1 -1
  35. package/dist/{chunk-INIULQEP.js → chunk-N6ZMZ5AI.js} +11 -2
  36. package/dist/chunk-N6ZMZ5AI.js.map +1 -0
  37. package/dist/{chunk-IQJUFRZZ.js → chunk-OYHAF2J2.js} +5 -5
  38. package/dist/{chunk-IQJUFRZZ.js.map → chunk-OYHAF2J2.js.map} +1 -1
  39. package/dist/{chunk-I2JNLAKW.js → chunk-RHKJPTON.js} +47 -15
  40. package/dist/chunk-RHKJPTON.js.map +1 -0
  41. package/dist/chunk-RT7P5AYU.js +6 -0
  42. package/dist/{chunk-K6MLOGU4.js.map → chunk-RT7P5AYU.js.map} +1 -1
  43. package/dist/{chunk-CBPDYYIH.js → chunk-UZP623Y4.js} +4 -4
  44. package/dist/{chunk-CBPDYYIH.js.map → chunk-UZP623Y4.js.map} +1 -1
  45. package/dist/{chunk-EW2ZMFUC.js → chunk-YJU7S7N6.js} +24 -6
  46. package/dist/chunk-YJU7S7N6.js.map +1 -0
  47. package/dist/{chunk-KAOSPAFK.js → chunk-Z3AYOZ3C.js} +7 -6
  48. package/dist/chunk-Z3AYOZ3C.js.map +1 -0
  49. package/dist/{chunk-RL6MHAOK.js → chunk-Z3MUWXP3.js} +4 -4
  50. package/dist/{chunk-RL6MHAOK.js.map → chunk-Z3MUWXP3.js.map} +1 -1
  51. package/dist/{chunk-KUZLILN3.js → chunk-Z7FM3ETS.js} +18 -4
  52. package/dist/chunk-Z7FM3ETS.js.map +1 -0
  53. package/dist/cli.js +96 -69
  54. package/dist/cli.js.map +1 -1
  55. package/dist/embed-worker-main.js +3 -3
  56. package/dist/{ensure-map-5E5TFPXJ.js → ensure-map-PHAJACFF.js} +13 -13
  57. package/dist/{ensure-map-5E5TFPXJ.js.map → ensure-map-PHAJACFF.js.map} +1 -1
  58. package/dist/graph-backend-4B3MTVIW.js +13 -0
  59. package/dist/{graph-backend-GQZXMNRI.js.map → graph-backend-4B3MTVIW.js.map} +1 -1
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.js +12 -12
  62. package/dist/{interactive-7EZHEBHQ.js → interactive-WUXMXFNM.js} +24 -24
  63. package/dist/{interactive-7EZHEBHQ.js.map → interactive-WUXMXFNM.js.map} +1 -1
  64. package/dist/load-EUZSV73H.js +9 -0
  65. package/dist/{load-QBVKCWZT.js.map → load-EUZSV73H.js.map} +1 -1
  66. package/dist/{run-outcome-NQAU6DOA.js → run-outcome-O5PR7ZCK.js} +5 -5
  67. package/dist/{run-outcome-NQAU6DOA.js.map → run-outcome-O5PR7ZCK.js.map} +1 -1
  68. package/dist/runtime-session-PPQDTFIK.js +20 -0
  69. package/dist/{runtime-session-ZPGU4PGW.js.map → runtime-session-PPQDTFIK.js.map} +1 -1
  70. package/dist/session-WS7SOVJE.js +15 -0
  71. package/dist/{session-QNSYTLLJ.js.map → session-WS7SOVJE.js.map} +1 -1
  72. package/dist/session-store-KGONLWHN.js +4 -0
  73. package/dist/{session-store-F7NX7SZN.js.map → session-store-KGONLWHN.js.map} +1 -1
  74. package/dist/{stream-json-5WFD6HRO.js → stream-json-7MK3QQYG.js} +11 -11
  75. package/dist/{stream-json-5WFD6HRO.js.map → stream-json-7MK3QQYG.js.map} +1 -1
  76. package/dist/{vg-mcp-bridge-VTGXA6CO.js → vg-mcp-bridge-DQLCHBI6.js} +9 -9
  77. package/dist/{vg-mcp-bridge-VTGXA6CO.js.map → vg-mcp-bridge-DQLCHBI6.js.map} +1 -1
  78. package/dist/{vgd-54GEZWBI.js → vgd-Y25XSQGZ.js} +8 -8
  79. package/dist/vgd-Y25XSQGZ.js.map +1 -0
  80. package/package.json +6 -6
  81. package/dist/baseline-KVCXVZFQ.js +0 -9
  82. package/dist/chunk-7C5UKIXD.js.map +0 -1
  83. package/dist/chunk-EW2ZMFUC.js.map +0 -1
  84. package/dist/chunk-I2JNLAKW.js.map +0 -1
  85. package/dist/chunk-INIULQEP.js.map +0 -1
  86. package/dist/chunk-K6MLOGU4.js +0 -6
  87. package/dist/chunk-KAOSPAFK.js.map +0 -1
  88. package/dist/chunk-KUZLILN3.js.map +0 -1
  89. package/dist/chunk-SI4D7DYF.js.map +0 -1
  90. package/dist/chunk-Y4JO6LYP.js.map +0 -1
  91. package/dist/graph-backend-GQZXMNRI.js +0 -13
  92. package/dist/load-QBVKCWZT.js +0 -9
  93. package/dist/runtime-session-ZPGU4PGW.js +0 -20
  94. package/dist/session-QNSYTLLJ.js +0 -15
  95. package/dist/session-store-F7NX7SZN.js +0 -4
  96. package/dist/vgd-54GEZWBI.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { runCoreScan, compactUiPurpose } from './chunk-INIULQEP.js';
2
- import { findPackageJsonFiles, readJsonFile, findFiles, readTextFile, pathExists } from './chunk-DT4KIVRI.js';
1
+ import { runCoreScan, compactUiPurpose } from './chunk-N6ZMZ5AI.js';
2
+ import { findPackageJsonFiles, readJsonFile, findFiles, readTextFile, pathExists, isSkippedDirName } from './chunk-DT4KIVRI.js';
3
3
  import { writeJsonFile } from './chunk-CRAMOEBE.js';
4
4
  import * as path3 from 'path';
5
5
  import { Command } from 'commander';
@@ -2130,7 +2130,61 @@ var PATH_RULES = [
2130
2130
  // ── Serverless-specific ──
2131
2131
  { pattern: /\/functions\//, layer: "routing", confidence: 0.8, signal: "functions/ directory", archetypes: ["serverless"] },
2132
2132
  { pattern: /\/lambdas\//, layer: "routing", confidence: 0.85, signal: "lambdas/ directory", archetypes: ["serverless"] },
2133
- { pattern: /\/layers\//, layer: "shared", confidence: 0.7, signal: "Lambda layers/ directory", archetypes: ["serverless"] }
2133
+ { pattern: /\/layers\//, layer: "shared", confidence: 0.7, signal: "Lambda layers/ directory", archetypes: ["serverless"] },
2134
+ // ── .NET conventions ──
2135
+ // Directory rules above already cover Controllers/, Services/, Models/,
2136
+ // Views/, Migrations/, Middleware/ … because matching is case-insensitive.
2137
+ { pattern: /\.tests?\//, layer: "testing", confidence: 0.9, signal: "*.Tests project directory" },
2138
+ // Layer-named project directories (`Company.Product.Domain/`,
2139
+ // `Company.Product.Database/`) — the dotted segment carries the layer.
2140
+ { pattern: /\.domain\//, layer: "domain", confidence: 0.85, signal: "*.Domain project" },
2141
+ { pattern: /\.(database|data|persistence)\//, layer: "data-access", confidence: 0.85, signal: "*.Database project" },
2142
+ { pattern: /\.(infrastructure|infra)\//, layer: "infrastructure", confidence: 0.85, signal: "*.Infrastructure project" },
2143
+ { pattern: /\.worker\//, layer: "infrastructure", confidence: 0.8, signal: "*.Worker project" },
2144
+ { pattern: /\.(webapi|api)\//, layer: "routing", confidence: 0.8, signal: "*.WebApi project" },
2145
+ { pattern: /\.(webapp|web|ui)\//, layer: "presentation", confidence: 0.75, signal: "*.WebApp project" },
2146
+ { pattern: /\.(services?|application)\//, layer: "services", confidence: 0.8, signal: "*.Services project" },
2147
+ { pattern: /\/wwwroot\//, layer: "presentation", confidence: 0.85, signal: "wwwroot/ static assets" },
2148
+ { pattern: /\/properties\//, layer: "config", confidence: 0.85, signal: "Properties/ directory" },
2149
+ { pattern: /\/program\.cs$/, layer: "config", confidence: 0.9, signal: "Program.cs entry point" },
2150
+ { pattern: /\/startup\.cs$/, layer: "config", confidence: 0.9, signal: "Startup.cs" },
2151
+ { pattern: /\.(cshtml|razor)$/, layer: "presentation", confidence: 0.9, signal: "Razor view" },
2152
+ // ── JVM (Maven/Gradle standard layout + Spring package conventions) ──
2153
+ { pattern: /\/src\/(test|androidtest|integrationtest)\//, layer: "testing", confidence: 0.95, signal: "src/test source set" },
2154
+ { pattern: /\/controller\//, layer: "routing", confidence: 0.8, signal: "controller/ package" },
2155
+ { pattern: /\/resource\//, layer: "routing", confidence: 0.7, signal: "resource/ package (JAX-RS)" },
2156
+ { pattern: /\/model\//, layer: "domain", confidence: 0.75, signal: "model/ package" },
2157
+ { pattern: /\/entity\//, layer: "domain", confidence: 0.85, signal: "entity/ package" },
2158
+ { pattern: /\/dto\//, layer: "domain", confidence: 0.85, signal: "dto/ package" },
2159
+ { pattern: /\/mappers?\//, layer: "data-access", confidence: 0.75, signal: "mapper/ package" },
2160
+ // ── Python (Django/Flask/FastAPI module conventions) ──
2161
+ { pattern: /\/(test_[^/]*|conftest)\.py$/, layer: "testing", confidence: 0.95, signal: "pytest test module" },
2162
+ { pattern: /\/urls\.py$/, layer: "routing", confidence: 0.95, signal: "Django urls.py" },
2163
+ { pattern: /\/views\.py$/, layer: "routing", confidence: 0.9, signal: "Django views.py (request handlers)" },
2164
+ { pattern: /\/models\.py$/, layer: "domain", confidence: 0.9, signal: "Django models.py" },
2165
+ { pattern: /\/serializers\.py$/, layer: "domain", confidence: 0.85, signal: "DRF serializers.py" },
2166
+ { pattern: /\/forms\.py$/, layer: "presentation", confidence: 0.8, signal: "Django forms.py" },
2167
+ { pattern: /\/(settings|admin)\.py$/, layer: "config", confidence: 0.85, signal: "Django settings/admin module" },
2168
+ { pattern: /\/middleware\.py$/, layer: "middleware", confidence: 0.9, signal: "middleware.py" },
2169
+ { pattern: /\/(tasks|celery)\.py$/, layer: "services", confidence: 0.8, signal: "task queue module" },
2170
+ // ── Go / Rust / Dart / Ruby / Elixir test conventions ──
2171
+ { pattern: /_(test|spec)\.[a-z]+$/, layer: "testing", confidence: 0.95, signal: "_test/_spec file" },
2172
+ { pattern: /\/spec\//, layer: "testing", confidence: 0.85, signal: "spec/ directory (RSpec)" },
2173
+ { pattern: /\/cmd\//, layer: "routing", confidence: 0.7, signal: "cmd/ entry points (Go)" },
2174
+ // ── Ruby on Rails ──
2175
+ { pattern: /\/migrate\//, layer: "data-access", confidence: 0.9, signal: "db/migrate/ directory" },
2176
+ { pattern: /\/mailers\//, layer: "infrastructure", confidence: 0.8, signal: "mailers/ directory" },
2177
+ { pattern: /\.erb$/, layer: "presentation", confidence: 0.85, signal: "ERB view template" },
2178
+ // ── PHP (Laravel/Symfony) ──
2179
+ { pattern: /\.blade\.php$/, layer: "presentation", confidence: 0.9, signal: "Blade view template" },
2180
+ // ── Elixir (Phoenix) ──
2181
+ { pattern: /\/channels\//, layer: "routing", confidence: 0.7, signal: "channels/ directory" },
2182
+ { pattern: /_controller\.exs?$/, layer: "routing", confidence: 0.9, signal: "Phoenix controller" },
2183
+ { pattern: /_(view|live|html|component)\.exs?$/, layer: "presentation", confidence: 0.85, signal: "Phoenix view module" },
2184
+ { pattern: /\/repo\.exs?$/, layer: "data-access", confidence: 0.9, signal: "Ecto repo" },
2185
+ { pattern: /\.(eex|heex)$/, layer: "presentation", confidence: 0.85, signal: "EEx/HEEx template" },
2186
+ // ── Flutter / mobile ──
2187
+ { pattern: /\/screens\//, layer: "presentation", confidence: 0.85, signal: "screens/ directory" }
2134
2188
  ];
2135
2189
  var SUFFIX_RULES = [
2136
2190
  { suffix: ".controller", layer: "routing", confidence: 0.85, signal: "controller suffix" },
@@ -2163,6 +2217,41 @@ var SUFFIX_RULES = [
2163
2217
  { suffix: ".helper", layer: "shared", confidence: 0.7, signal: "helper suffix" },
2164
2218
  { suffix: ".constant", layer: "shared", confidence: 0.7, signal: "constant suffix" }
2165
2219
  ];
2220
+ var PASCAL_SUFFIX_RULES = [
2221
+ { suffix: "Controller", layer: "routing", confidence: 0.9, signal: "Controller class" },
2222
+ { suffix: "Endpoint", layer: "routing", confidence: 0.85, signal: "Endpoint class" },
2223
+ { suffix: "Middleware", layer: "middleware", confidence: 0.9, signal: "Middleware class" },
2224
+ { suffix: "Filter", layer: "middleware", confidence: 0.75, signal: "Filter class" },
2225
+ { suffix: "Service", layer: "services", confidence: 0.85, signal: "Service class" },
2226
+ { suffix: "Handler", layer: "services", confidence: 0.75, signal: "Handler class" },
2227
+ { suffix: "UseCase", layer: "services", confidence: 0.85, signal: "UseCase class" },
2228
+ { suffix: "Entity", layer: "domain", confidence: 0.85, signal: "Entity class" },
2229
+ { suffix: "Dto", layer: "domain", confidence: 0.8, signal: "DTO class" },
2230
+ { suffix: "Validator", layer: "domain", confidence: 0.75, signal: "Validator class" },
2231
+ { suffix: "ViewModel", layer: "presentation", confidence: 0.85, signal: "ViewModel class" },
2232
+ { suffix: "Repository", layer: "data-access", confidence: 0.9, signal: "Repository class" },
2233
+ { suffix: "DbContext", layer: "data-access", confidence: 0.95, signal: "EF Core DbContext" },
2234
+ { suffix: "Migration", layer: "data-access", confidence: 0.85, signal: "Migration class" },
2235
+ { suffix: "Client", layer: "infrastructure", confidence: 0.7, signal: "Client class" },
2236
+ { suffix: "Tests", layer: "testing", confidence: 0.95, signal: "Tests class" },
2237
+ { suffix: "Test", layer: "testing", confidence: 0.9, signal: "Test class" },
2238
+ // JVM (Spring/JEE/Android)
2239
+ { suffix: "ServiceImpl", layer: "services", confidence: 0.9, signal: "ServiceImpl class" },
2240
+ { suffix: "Dao", layer: "data-access", confidence: 0.9, signal: "DAO class" },
2241
+ { suffix: "Mapper", layer: "data-access", confidence: 0.75, signal: "Mapper class" },
2242
+ { suffix: "Resource", layer: "routing", confidence: 0.75, signal: "JAX-RS resource class" },
2243
+ { suffix: "Configuration", layer: "config", confidence: 0.85, signal: "Configuration class" },
2244
+ { suffix: "Config", layer: "config", confidence: 0.8, signal: "Config class" },
2245
+ { suffix: "Interceptor", layer: "middleware", confidence: 0.85, signal: "Interceptor class" },
2246
+ { suffix: "Activity", layer: "presentation", confidence: 0.85, signal: "Android Activity" },
2247
+ { suffix: "Fragment", layer: "presentation", confidence: 0.85, signal: "Android Fragment" },
2248
+ // Swift / iOS — higher confidence than the generic Controller→routing rule
2249
+ // so FooViewController lands in presentation, not routing.
2250
+ { suffix: "ViewController", layer: "presentation", confidence: 0.95, signal: "UIKit ViewController" },
2251
+ // Flutter
2252
+ { suffix: "Screen", layer: "presentation", confidence: 0.85, signal: "Screen widget" },
2253
+ { suffix: "Widget", layer: "presentation", confidence: 0.75, signal: "Widget class" }
2254
+ ];
2166
2255
  var PACKAGE_LAYER_MAP = {
2167
2256
  // Routing/controllers
2168
2257
  "express": "routing",
@@ -2251,10 +2340,204 @@ var PACKAGE_LAYER_MAP = {
2251
2340
  "@opentelemetry/api": "infrastructure",
2252
2341
  "pino": "infrastructure",
2253
2342
  "winston": "infrastructure",
2254
- "dd-trace": "infrastructure"
2343
+ "dd-trace": "infrastructure",
2344
+ // ── .NET (NuGet package ids) ──
2345
+ "Microsoft.EntityFrameworkCore": "data-access",
2346
+ "Dapper": "data-access",
2347
+ "Npgsql": "data-access",
2348
+ "Microsoft.Data.SqlClient": "data-access",
2349
+ "System.Data.SqlClient": "data-access",
2350
+ "MongoDB.Driver": "data-access",
2351
+ "StackExchange.Redis": "data-access",
2352
+ "MediatR": "services",
2353
+ "Hangfire": "services",
2354
+ "Quartz": "services",
2355
+ "FluentValidation": "domain",
2356
+ "AutoMapper": "domain",
2357
+ "Microsoft.AspNetCore.Authentication.JwtBearer": "middleware",
2358
+ "Swashbuckle.AspNetCore": "routing",
2359
+ "Serilog": "infrastructure",
2360
+ "NLog": "infrastructure",
2361
+ "Polly": "infrastructure",
2362
+ "RabbitMQ.Client": "infrastructure",
2363
+ "MassTransit": "infrastructure",
2364
+ "Confluent.Kafka": "infrastructure",
2365
+ "Azure.Storage.Blobs": "infrastructure",
2366
+ "AWSSDK.S3": "infrastructure",
2367
+ "Newtonsoft.Json": "shared",
2368
+ "xunit": "testing",
2369
+ "NUnit": "testing",
2370
+ "MSTest.TestFramework": "testing",
2371
+ "Moq": "testing",
2372
+ "NSubstitute": "testing",
2373
+ "FluentAssertions": "testing",
2374
+ // ── Python (PyPI) ──
2375
+ "django": "routing",
2376
+ "flask": "routing",
2377
+ "fastapi": "routing",
2378
+ "starlette": "routing",
2379
+ "sqlalchemy": "data-access",
2380
+ "alembic": "data-access",
2381
+ "psycopg2": "data-access",
2382
+ "psycopg2-binary": "data-access",
2383
+ "pymongo": "data-access",
2384
+ "pydantic": "domain",
2385
+ "marshmallow": "domain",
2386
+ "celery": "services",
2387
+ "pytest": "testing",
2388
+ "boto3": "infrastructure",
2389
+ "httpx": "infrastructure",
2390
+ "requests": "infrastructure",
2391
+ "gunicorn": "infrastructure",
2392
+ "uvicorn": "infrastructure",
2393
+ "structlog": "infrastructure",
2394
+ // ── JVM (Maven groupId:artifactId, as the Java scanner keys them) ──
2395
+ "org.springframework.boot:spring-boot-starter-web": "routing",
2396
+ "org.springframework:spring-webmvc": "routing",
2397
+ "io.ktor:ktor-server-core": "routing",
2398
+ "io.quarkus:quarkus-resteasy": "routing",
2399
+ "org.springframework.boot:spring-boot-starter-data-jpa": "data-access",
2400
+ "org.hibernate:hibernate-core": "data-access",
2401
+ "org.hibernate.orm:hibernate-core": "data-access",
2402
+ "org.mybatis:mybatis": "data-access",
2403
+ "com.zaxxer:HikariCP": "data-access",
2404
+ "org.jetbrains.exposed:exposed-core": "data-access",
2405
+ "org.springframework.boot:spring-boot-starter-security": "middleware",
2406
+ "jakarta.validation:jakarta.validation-api": "domain",
2407
+ "com.fasterxml.jackson.core:jackson-databind": "shared",
2408
+ "org.projectlombok:lombok": "shared",
2409
+ "junit:junit": "testing",
2410
+ "org.junit.jupiter:junit-jupiter": "testing",
2411
+ "org.mockito:mockito-core": "testing",
2412
+ "org.testng:testng": "testing",
2413
+ "ch.qos.logback:logback-classic": "infrastructure",
2414
+ "org.slf4j:slf4j-api": "infrastructure",
2415
+ "org.apache.kafka:kafka-clients": "infrastructure",
2416
+ "com.squareup.okhttp3:okhttp": "infrastructure",
2417
+ // ── Go (module paths) ──
2418
+ "github.com/gin-gonic/gin": "routing",
2419
+ "github.com/labstack/echo/v4": "routing",
2420
+ "github.com/gorilla/mux": "routing",
2421
+ "github.com/go-chi/chi/v5": "routing",
2422
+ "github.com/gofiber/fiber/v2": "routing",
2423
+ "github.com/spf13/cobra": "routing",
2424
+ "gorm.io/gorm": "data-access",
2425
+ "github.com/jmoiron/sqlx": "data-access",
2426
+ "github.com/jackc/pgx/v5": "data-access",
2427
+ "go.mongodb.org/mongo-driver": "data-access",
2428
+ "github.com/redis/go-redis/v9": "data-access",
2429
+ "github.com/spf13/viper": "config",
2430
+ "github.com/stretchr/testify": "testing",
2431
+ "go.uber.org/zap": "infrastructure",
2432
+ "github.com/sirupsen/logrus": "infrastructure",
2433
+ "google.golang.org/grpc": "infrastructure",
2434
+ // ── Rust (crates) ──
2435
+ "actix-web": "routing",
2436
+ "axum": "routing",
2437
+ "rocket": "routing",
2438
+ "warp": "routing",
2439
+ "clap": "routing",
2440
+ "diesel": "data-access",
2441
+ "sqlx": "data-access",
2442
+ "sea-orm": "data-access",
2443
+ "serde": "domain",
2444
+ "tokio": "infrastructure",
2445
+ "reqwest": "infrastructure",
2446
+ "tracing": "infrastructure",
2447
+ // ── Ruby (gems) ──
2448
+ "rails": "routing",
2449
+ "sinatra": "routing",
2450
+ "activerecord": "data-access",
2451
+ "sequel": "data-access",
2452
+ "devise": "middleware",
2453
+ "pundit": "middleware",
2454
+ "sidekiq": "services",
2455
+ "rspec": "testing",
2456
+ "rspec-rails": "testing",
2457
+ "minitest": "testing",
2458
+ "puma": "infrastructure",
2459
+ "faraday": "infrastructure",
2460
+ // ── PHP (Composer vendor/package) ──
2461
+ "laravel/framework": "routing",
2462
+ "symfony/http-kernel": "routing",
2463
+ "slim/slim": "routing",
2464
+ "doctrine/orm": "data-access",
2465
+ "illuminate/database": "data-access",
2466
+ "phpunit/phpunit": "testing",
2467
+ "pestphp/pest": "testing",
2468
+ "guzzlehttp/guzzle": "infrastructure",
2469
+ "monolog/monolog": "infrastructure",
2470
+ // ── Swift (SPM) ──
2471
+ "Alamofire": "infrastructure",
2472
+ "vapor": "routing",
2473
+ "Vapor": "routing",
2474
+ // ── Dart (pub) ──
2475
+ "dio": "infrastructure",
2476
+ "sqflite": "data-access",
2477
+ "flutter_bloc": "services",
2478
+ "riverpod": "services",
2479
+ "flutter_riverpod": "services",
2480
+ "go_router": "routing",
2481
+ "auto_route": "routing",
2482
+ "flutter_test": "testing",
2483
+ "mockito": "testing",
2484
+ // ── Elixir (Hex) ──
2485
+ "phoenix": "routing",
2486
+ "phoenix_live_view": "presentation",
2487
+ "ecto": "data-access",
2488
+ "ecto_sql": "data-access",
2489
+ "postgrex": "data-access",
2490
+ "oban": "services",
2491
+ "ex_machina": "testing",
2492
+ "tesla": "infrastructure",
2493
+ "httpoison": "infrastructure",
2494
+ "finch": "infrastructure",
2495
+ "jason": "shared"
2255
2496
  };
2256
- var SOURCE_EXTENSIONS = /* @__PURE__ */ new Set([".ts", ".tsx", ".js", ".jsx", ".mts", ".mjs", ".cts", ".cjs", ".svelte", ".vue"]);
2257
- var IGNORE_DIRS = /* @__PURE__ */ new Set(["node_modules", ".git", ".wrangler", "dist", "build", ".next", ".nuxt", ".output", ".svelte-kit", "coverage", ".vibgrate"]);
2497
+ var SOURCE_EXTENSIONS = /* @__PURE__ */ new Set([
2498
+ ".ts",
2499
+ ".tsx",
2500
+ ".js",
2501
+ ".jsx",
2502
+ ".mts",
2503
+ ".mjs",
2504
+ ".cts",
2505
+ ".cjs",
2506
+ ".svelte",
2507
+ ".vue",
2508
+ // .NET — layer detection works off the same directory/suffix conventions
2509
+ ".cs",
2510
+ ".vb",
2511
+ ".fs",
2512
+ ".cshtml",
2513
+ ".razor",
2514
+ // JVM
2515
+ ".java",
2516
+ ".kt",
2517
+ ".kts",
2518
+ ".scala",
2519
+ ".groovy",
2520
+ // Python
2521
+ ".py",
2522
+ ".pyi",
2523
+ // Go / Rust
2524
+ ".go",
2525
+ ".rs",
2526
+ // Ruby (incl. ERB view templates)
2527
+ ".rb",
2528
+ ".rake",
2529
+ ".erb",
2530
+ // PHP (incl. Blade — extname is still .php)
2531
+ ".php",
2532
+ // Swift / Dart
2533
+ ".swift",
2534
+ ".dart",
2535
+ // Elixir (incl. EEx/HEEx view templates)
2536
+ ".ex",
2537
+ ".exs",
2538
+ ".eex",
2539
+ ".heex"
2540
+ ]);
2258
2541
  async function walkSourceFiles(rootDir, cache) {
2259
2542
  if (cache) {
2260
2543
  const entries = await cache.walkDir(rootDir);
@@ -2278,7 +2561,7 @@ async function walkSourceFiles(rootDir, cache) {
2278
2561
  if (entry.name.startsWith(".") && entry.name !== ".") continue;
2279
2562
  const fullPath = path3.join(dir, entry.name);
2280
2563
  if (entry.isDirectory()) {
2281
- if (!IGNORE_DIRS.has(entry.name)) {
2564
+ if (!isSkippedDirName(entry.name)) {
2282
2565
  await walk(fullPath);
2283
2566
  }
2284
2567
  } else if (entry.isFile()) {
@@ -2293,13 +2576,14 @@ async function walkSourceFiles(rootDir, cache) {
2293
2576
  return files;
2294
2577
  }
2295
2578
  function classifyFile(filePath, archetype) {
2296
- const normalised = filePath.replace(/\\/g, "/");
2579
+ const normalised = "/" + filePath.replace(/\\/g, "/").replace(/^\/+/, "");
2580
+ const lowered = normalised.toLowerCase();
2297
2581
  let bestMatch = null;
2298
2582
  for (const rule of PATH_RULES) {
2299
2583
  if (rule.archetypes && rule.archetypes.length > 0 && !rule.archetypes.includes(archetype)) {
2300
2584
  continue;
2301
2585
  }
2302
- if (rule.pattern.test(normalised)) {
2586
+ if (rule.pattern.test(lowered)) {
2303
2587
  const boost = rule.archetypes ? 0.05 : 0;
2304
2588
  const adjustedConfidence = Math.min(rule.confidence + boost, 1);
2305
2589
  if (!bestMatch || adjustedConfidence > bestMatch.confidence) {
@@ -2317,6 +2601,13 @@ function classifyFile(filePath, archetype) {
2317
2601
  }
2318
2602
  }
2319
2603
  }
2604
+ for (const rule of PASCAL_SUFFIX_RULES) {
2605
+ if (cleanBase.endsWith(rule.suffix)) {
2606
+ if (!bestMatch || rule.confidence > bestMatch.confidence) {
2607
+ bestMatch = { layer: rule.layer, confidence: rule.confidence, signal: rule.signal };
2608
+ }
2609
+ }
2610
+ }
2320
2611
  }
2321
2612
  if (bestMatch) {
2322
2613
  return {
@@ -4373,5 +4664,5 @@ var baselineCommand = new Command("baseline").description("Create a drift baseli
4373
4664
  });
4374
4665
 
4375
4666
  export { baselineCommand, loadAdvancedScanHook, runBaseline };
4376
- //# sourceMappingURL=chunk-Y4JO6LYP.js.map
4377
- //# sourceMappingURL=chunk-Y4JO6LYP.js.map
4667
+ //# sourceMappingURL=chunk-5ROZODMW.js.map
4668
+ //# sourceMappingURL=chunk-5ROZODMW.js.map