@vibgrate/cli 2026.814.2 → 2026.817.2
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/DOCS.md +61 -0
- package/README.md +1 -0
- package/dist/agent-UQC7QN77.js +27 -0
- package/dist/{agent-5ANHRYEI.js.map → agent-UQC7QN77.js.map} +1 -1
- package/dist/{approvals-T2KXPJLV.js → approvals-ASPJQUZK.js} +6 -5
- package/dist/{approvals-T2KXPJLV.js.map → approvals-ASPJQUZK.js.map} +1 -1
- package/dist/baseline-FIV6PR2M.js +9 -0
- package/dist/{baseline-WVD6P5IO.js.map → baseline-FIV6PR2M.js.map} +1 -1
- package/dist/{chunk-FOW5IF73.js → chunk-2FEB5KJS.js} +11 -34
- package/dist/chunk-2FEB5KJS.js.map +1 -0
- package/dist/{chunk-WQLZSVNF.js → chunk-3FMRFECC.js} +7 -6
- package/dist/chunk-3FMRFECC.js.map +1 -0
- package/dist/{chunk-7QDHQLUS.js → chunk-3H3SVJUY.js} +13 -11
- package/dist/chunk-3H3SVJUY.js.map +1 -0
- package/dist/{chunk-REIGWTTH.js → chunk-3HNPVXUK.js} +3 -3
- package/dist/{chunk-REIGWTTH.js.map → chunk-3HNPVXUK.js.map} +1 -1
- package/dist/{chunk-YQNTIBKS.js → chunk-3NJUOIZQ.js} +6 -6
- package/dist/{chunk-YQNTIBKS.js.map → chunk-3NJUOIZQ.js.map} +1 -1
- package/dist/{chunk-BH54SLGZ.js → chunk-5OL2TSHK.js} +4 -4
- package/dist/{chunk-BH54SLGZ.js.map → chunk-5OL2TSHK.js.map} +1 -1
- package/dist/{chunk-TFAXW7VM.js → chunk-6K3XK7C5.js} +69 -976
- package/dist/chunk-6K3XK7C5.js.map +1 -0
- package/dist/{chunk-N3XFY3PX.js → chunk-74UBGF4P.js} +3 -3
- package/dist/{chunk-N3XFY3PX.js.map → chunk-74UBGF4P.js.map} +1 -1
- package/dist/{chunk-X76VPOYH.js → chunk-AXZZ5CCG.js} +4 -4
- package/dist/{chunk-X76VPOYH.js.map → chunk-AXZZ5CCG.js.map} +1 -1
- package/dist/{chunk-5GLQNMTI.js → chunk-C3LMWZKF.js} +6 -6
- package/dist/{chunk-5GLQNMTI.js.map → chunk-C3LMWZKF.js.map} +1 -1
- package/dist/{chunk-WWGLVF7D.js → chunk-DVW3SVCW.js} +9 -8
- package/dist/chunk-DVW3SVCW.js.map +1 -0
- package/dist/{chunk-TNROG5CO.js → chunk-E2FAQREZ.js} +1739 -116
- package/dist/chunk-E2FAQREZ.js.map +1 -0
- package/dist/{chunk-7NMXE6KG.js → chunk-EXV4QSAD.js} +4 -4
- package/dist/{chunk-7NMXE6KG.js.map → chunk-EXV4QSAD.js.map} +1 -1
- package/dist/{chunk-3LSG7Z4I.js → chunk-EZ7UC5Y5.js} +25 -4
- package/dist/chunk-EZ7UC5Y5.js.map +1 -0
- package/dist/{chunk-OWSFZQOP.js → chunk-FJG5AXKZ.js} +3 -3
- package/dist/{chunk-OWSFZQOP.js.map → chunk-FJG5AXKZ.js.map} +1 -1
- package/dist/{chunk-NKFXXP6W.js → chunk-GOGMS3ST.js} +8 -6
- package/dist/chunk-GOGMS3ST.js.map +1 -0
- package/dist/{chunk-WHJMS7XC.js → chunk-I5LP55B6.js} +3 -3
- package/dist/{chunk-WHJMS7XC.js.map → chunk-I5LP55B6.js.map} +1 -1
- package/dist/{chunk-IHXNOY3R.js → chunk-K6DXETMC.js} +12 -12
- package/dist/{chunk-IHXNOY3R.js.map → chunk-K6DXETMC.js.map} +1 -1
- package/dist/{chunk-DSUGC7F5.js → chunk-KJT2R6WW.js} +4 -4
- package/dist/{chunk-DSUGC7F5.js.map → chunk-KJT2R6WW.js.map} +1 -1
- package/dist/chunk-KNGAZDGF.js +467 -0
- package/dist/chunk-KNGAZDGF.js.map +1 -0
- package/dist/{chunk-JCN6MSXQ.js → chunk-LHKQGVRF.js} +17 -29
- package/dist/chunk-LHKQGVRF.js.map +1 -0
- package/dist/{chunk-YNV5M3JW.js → chunk-M7IO3DXH.js} +9 -8
- package/dist/chunk-M7IO3DXH.js.map +1 -0
- package/dist/chunk-MS6V5XKB.js +33 -0
- package/dist/chunk-MS6V5XKB.js.map +1 -0
- package/dist/{chunk-2U37PFB2.js → chunk-MVPRPSXU.js} +7 -4
- package/dist/chunk-MVPRPSXU.js.map +1 -0
- package/dist/{chunk-DT4KIVRI.js → chunk-NG4KIJW6.js} +34 -2
- package/dist/chunk-NG4KIJW6.js.map +1 -0
- package/dist/{chunk-IHLLWBZU.js → chunk-O2DL2Q55.js} +6 -6
- package/dist/{chunk-IHLLWBZU.js.map → chunk-O2DL2Q55.js.map} +1 -1
- package/dist/chunk-O3LABX6I.js +43 -0
- package/dist/chunk-O3LABX6I.js.map +1 -0
- package/dist/chunk-OZ3IFXRD.js +22 -0
- package/dist/chunk-OZ3IFXRD.js.map +1 -0
- package/dist/chunk-PRG2ULPK.js +6 -0
- package/dist/{chunk-2H2U3DC7.js.map → chunk-PRG2ULPK.js.map} +1 -1
- package/dist/{chunk-TVDYEHIM.js → chunk-Q3M6K3HY.js} +3 -3
- package/dist/{chunk-TVDYEHIM.js.map → chunk-Q3M6K3HY.js.map} +1 -1
- package/dist/{chunk-KGPX4EUN.js → chunk-Q4G2BWE3.js} +4 -4
- package/dist/{chunk-KGPX4EUN.js.map → chunk-Q4G2BWE3.js.map} +1 -1
- package/dist/chunk-T7RSQ5WD.js +227 -0
- package/dist/chunk-T7RSQ5WD.js.map +1 -0
- package/dist/{chunk-54RGT2T5.js → chunk-TVDMNIUT.js} +3 -3
- package/dist/{chunk-54RGT2T5.js.map → chunk-TVDMNIUT.js.map} +1 -1
- package/dist/{chunk-N6ZMZ5AI.js → chunk-WAKP7SK7.js} +4922 -1011
- package/dist/chunk-WAKP7SK7.js.map +1 -0
- package/dist/{chunk-75LJM5XD.js → chunk-WVMOGIPC.js} +9 -43
- package/dist/chunk-WVMOGIPC.js.map +1 -0
- package/dist/{chunk-UTNNGKKX.js → chunk-XLXJC7H3.js} +142 -14
- package/dist/chunk-XLXJC7H3.js.map +1 -0
- package/dist/cli.js +1727 -1127
- package/dist/cli.js.map +1 -1
- package/dist/daemon-FPTRHO5N.js +26 -0
- package/dist/daemon-FPTRHO5N.js.map +1 -0
- package/dist/embed-worker-main.js +5 -4
- package/dist/embed-worker-main.js.map +1 -1
- package/dist/ensure-map-342G2IV3.js +33 -0
- package/dist/{ensure-map-HQ7A5NDL.js.map → ensure-map-342G2IV3.js.map} +1 -1
- package/dist/{fs-NTQUFCXV.js → fs-TLPOWC2D.js} +3 -3
- package/dist/fs-TLPOWC2D.js.map +1 -0
- package/dist/graph-backend-RNWQBT3P.js +15 -0
- package/dist/{graph-backend-W2TNTMY7.js.map → graph-backend-RNWQBT3P.js.map} +1 -1
- package/dist/index.d.ts +28 -6
- package/dist/index.js +21 -18
- package/dist/index.js.map +1 -1
- package/dist/{interactive-EW2VJ3BZ.js → interactive-SR7TMF6M.js} +36 -33
- package/dist/interactive-SR7TMF6M.js.map +1 -0
- package/dist/load-AYFECIQB.js +11 -0
- package/dist/{load-64RK5O6C.js.map → load-AYFECIQB.js.map} +1 -1
- package/dist/local-runtime-6SNWKSA7.js +6 -0
- package/dist/{local-runtime-2ED33KK6.js.map → local-runtime-6SNWKSA7.js.map} +1 -1
- package/dist/model-manager-SXHZ5VD4.js +10 -0
- package/dist/{model-manager-GJ2YSTSK.js.map → model-manager-SXHZ5VD4.js.map} +1 -1
- package/dist/parse-worker.d.ts +1 -1
- package/dist/parse-worker.js +5 -2
- package/dist/parse-worker.js.map +1 -1
- package/dist/{run-outcome-6QNQIHPV.js → run-outcome-YQQJG3LW.js} +7 -6
- package/dist/run-outcome-YQQJG3LW.js.map +1 -0
- package/dist/runtime-session-CNJ4DAV5.js +22 -0
- package/dist/{runtime-session-RJHH3KMF.js.map → runtime-session-CNJ4DAV5.js.map} +1 -1
- package/dist/session-H34HUV2Y.js +17 -0
- package/dist/{session-4BGYASOH.js.map → session-H34HUV2Y.js.map} +1 -1
- package/dist/{stream-json-GY5N7WZT.js → stream-json-55YDNAFX.js} +18 -17
- package/dist/stream-json-55YDNAFX.js.map +1 -0
- package/dist/{types-DLH-Ritr.d.ts → types-DHqH0XIE.d.ts} +68 -6
- package/dist/version-WSE3QOPK.js +4 -0
- package/dist/{version-DPAMQW6M.js.map → version-WSE3QOPK.js.map} +1 -1
- package/dist/{vg-mcp-bridge-IGHJKKSL.js → vg-mcp-bridge-2CNLHNEL.js} +13 -12
- package/dist/vg-mcp-bridge-2CNLHNEL.js.map +1 -0
- package/dist/{vgd-ORPA5C2K.js → vgd-URUZQORN.js} +10 -9
- package/dist/vgd-URUZQORN.js.map +1 -0
- package/grammars/tree-sitter-hcl.wasm +0 -0
- package/package.json +9 -8
- package/dist/agent-5ANHRYEI.js +0 -26
- package/dist/baseline-WVD6P5IO.js +0 -9
- package/dist/chunk-2H2U3DC7.js +0 -6
- package/dist/chunk-2U37PFB2.js.map +0 -1
- package/dist/chunk-3LSG7Z4I.js.map +0 -1
- package/dist/chunk-75LJM5XD.js.map +0 -1
- package/dist/chunk-7QDHQLUS.js.map +0 -1
- package/dist/chunk-DT4KIVRI.js.map +0 -1
- package/dist/chunk-FOW5IF73.js.map +0 -1
- package/dist/chunk-JCN6MSXQ.js.map +0 -1
- package/dist/chunk-N6ZMZ5AI.js.map +0 -1
- package/dist/chunk-NKFXXP6W.js.map +0 -1
- package/dist/chunk-RXP66R2E.js +0 -39
- package/dist/chunk-RXP66R2E.js.map +0 -1
- package/dist/chunk-TFAXW7VM.js.map +0 -1
- package/dist/chunk-TNROG5CO.js.map +0 -1
- package/dist/chunk-UTNNGKKX.js.map +0 -1
- package/dist/chunk-WQLZSVNF.js.map +0 -1
- package/dist/chunk-WWGLVF7D.js.map +0 -1
- package/dist/chunk-YNV5M3JW.js.map +0 -1
- package/dist/ensure-map-HQ7A5NDL.js +0 -30
- package/dist/fs-NTQUFCXV.js.map +0 -1
- package/dist/graph-backend-W2TNTMY7.js +0 -14
- package/dist/interactive-EW2VJ3BZ.js.map +0 -1
- package/dist/load-64RK5O6C.js +0 -10
- package/dist/local-runtime-2ED33KK6.js +0 -6
- package/dist/model-manager-GJ2YSTSK.js +0 -10
- package/dist/run-outcome-6QNQIHPV.js.map +0 -1
- package/dist/runtime-session-RJHH3KMF.js +0 -21
- package/dist/session-4BGYASOH.js +0 -16
- package/dist/stream-json-GY5N7WZT.js.map +0 -1
- package/dist/version-DPAMQW6M.js +0 -4
- package/dist/vg-mcp-bridge-IGHJKKSL.js.map +0 -1
- package/dist/vgd-ORPA5C2K.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/reporting/scanners/platform-matrix.ts","../src/reporting/scanners/dependency-risk.ts","../src/reporting/scanners/dependency-graph.ts","../src/reporting/scanners/tooling-inventory.ts","../src/reporting/scanners/build-deploy.ts","../src/reporting/scanners/ts-modernity.ts","../src/reporting/scanners/breaking-change.ts","../src/reporting/scanners/file-hotspots.ts","../src/reporting/scanners/security-posture.ts","../src/reporting/scanners/service-dependencies.ts","../src/reporting/scanners/architecture.ts","../src/reporting/scanners/code-quality.ts","../src/reporting/scanners/database-schema-sql.ts","../src/reporting/scanners/database-schema-drizzle.ts","../src/reporting/scanners/database-schema-typeorm.ts","../src/reporting/scanners/database-schema.ts","../src/reporting/scanners/ui-purpose.ts","../src/reporting/data/standards-index.ts","../src/reporting/scanners/standards-mapper.ts","../src/reporting/advanced-analysis.ts","../src/reporting/advanced-hook.ts","../src/reporting/commands/baseline.ts"],"names":["path","NATIVE_MODULE_PACKAGES","walkDeps","path2","path4","DEPRECATED_PACKAGES","path5","path6","stat","path7","path8","fs2","SOURCE_EXTENSIONS","path9","ts","path10","models","enums","routeHints","path11","path12"],"mappings":"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","file":"chunk-TFAXW7VM.js","sourcesContent":["import * as path from 'node:path';\nimport { findFiles, findPackageJsonFiles, readJsonFile, readTextFile, pathExists, FileCache } from '../../core-open/index.js';\nimport type { PackageJson, PlatformMatrixResult } from '../../core-open/index.js';\n\n/** Packages known to require native compilation or be platform-specific */\nconst NATIVE_MODULE_PACKAGES = new Set([\n // Image / media processing\n 'sharp', // libvips native bindings\n 'canvas', // node-canvas (Cairo native)\n 'jimp', // pure JS but optionally uses native\n '@napi-rs/image', // NAPI-RS image processing\n 'imagemagick', // ImageMagick bindings\n 'gm', // GraphicsMagick\n 'fluent-ffmpeg', // FFmpeg bindings\n 'ffmpeg-static', // bundled FFmpeg binary\n 'puppeteer', // ships Chromium binary\n 'playwright', // ships browser binaries\n 'playwright-core', // browser binaries\n // Cryptography / security\n 'bcrypt', // native bcrypt\n 'argon2', // native argon2 hashing\n 'sodium-native', // libsodium bindings\n 'libsodium-wrappers', // libsodium WASM/native\n 'node-forge', // mostly JS but linked to native in some envs\n 'ssh2', // native SSH bindings (optional)\n 'keytar', // OS keychain native bindings\n // Database drivers\n 'better-sqlite3', // native SQLite\n 'sqlite3', // native SQLite\n 'pg-native', // PostgreSQL native bindings\n 'oracledb', // Oracle native client\n 'odbc', // native ODBC\n 'ibm_db', // IBM DB2 native\n 'couchbase', // native Couchbase SDK\n 'rocksdb', // native RocksDB store\n 'leveldown', // native LevelDB\n 'lmdb', // native LMDB bindings\n // Compilation & build tools\n 'node-gyp', // native build tool itself\n 'node-pre-gyp', // native binary distribution\n '@mapbox/node-pre-gyp', // native binary distribution\n 'prebuild', // prebuilt native bindings\n 'prebuild-install', // prebuilt native installer\n 'esbuild', // platform-specific Go binary\n '@swc/core', // platform-specific Rust binary\n '@rspack/core', // platform-specific Rust binary\n '@biomejs/biome', // platform-specific Rust binary\n 'node-sass', // deprecated, native libsass\n 'sass-embedded', // Dart Sass embedded binary\n 'turbo', // Turborepo Go/Rust binary\n '@vercel/nft', // native file tracing (optional)\n // System / hardware access\n 'fsevents', // macOS-only file watching\n 'cpu-features', // CPU instruction detection\n 'deasync', // native event loop control\n 'usb', // USB device access\n 'serialport', // serial port access\n 'node-hid', // HID device access\n 'i2c-bus', // I2C bus access\n 'spi-device', // SPI bus access\n 'node-bluetooth', // Bluetooth\n 'mdns', // mDNS/Bonjour\n // Compression\n 'snappy', // native Snappy compression\n 'zstd-napi', // native Zstandard\n 'lz4', // native LZ4\n 'brotli', // native Brotli (older, node has built-in)\n // Regex / text\n 're2', // native RE2 regex engine\n 'oniguruma', // native Oniguruma regex\n 'vscode-oniguruma', // native Oniguruma (VS Code)\n 'tree-sitter', // native parser generator\n 'node-tree-sitter', // native Tree-sitter\n // XML / HTML\n 'libxmljs', // native libxml2\n 'libxmljs2', // native libxml2\n 'node-expat', // native Expat XML parser\n 'htmlparser2', // mostly JS, optional native\n // Networking / IPC\n '@grpc/grpc-js', // gRPC (JS but has native dep for HTTP/2)\n 'grpc', // deprecated native gRPC\n 'zeromq', // native ZeroMQ\n 'nanomsg', // native nanomsg\n 'unix-dgram', // native Unix sockets\n // Observability\n 'dtrace-provider', // native DTrace\n 'v8-profiler-next', // native V8 profiler\n 'heapdump', // native V8 heap dump\n // Misc\n 'farmhash', // native FarmHash\n 'xxhash', // native xxHash\n 'xxhash-addon', // native xxHash\n 'iconv', // native iconv\n 'ref-napi', // native FFI\n 'ffi-napi', // native FFI\n 'node-pty', // native pseudo-terminal\n 'robotjs', // native desktop automation\n 'electron', // ships Chromium + Node binary\n 'xdg-open', // OS-specific\n 'windows-process-tree', // Windows-only\n]);\n\n/** Patterns in package.json scripts keys that suggest OS assumptions */\nconst OS_PATTERNS: { pattern: RegExp; label: string }[] = [\n { pattern: /\\bcmd\\.exe\\b|\\.bat\\b|\\.cmd\\b/i, label: 'windows-scripts' },\n { pattern: /\\bpowershell\\b|\\bpwsh\\b/i, label: 'powershell' },\n { pattern: /\\bbash\\b|#!\\/bin\\/bash/i, label: 'bash-scripts' },\n { pattern: /\\\\\\\\/g, label: 'backslash-paths' },\n];\n\nexport async function scanPlatformMatrix(rootDir: string, cache?: FileCache): Promise<PlatformMatrixResult> {\n const result: PlatformMatrixResult = {\n dotnetTargetFrameworks: [],\n nativeModules: [],\n osAssumptions: [],\n dockerBaseImages: [],\n nodeVersionFiles: [],\n };\n\n // Collect from all package.json files\n const pkgFiles = cache\n ? await cache.findPackageJsonFiles(rootDir)\n : await findPackageJsonFiles(rootDir);\n const allDeps = new Set<string>();\n const osAssumptions = new Set<string>();\n\n for (const pjPath of pkgFiles) {\n try {\n const pj = cache\n ? await cache.readJsonFile<PackageJson>(pjPath)\n : await readJsonFile<PackageJson>(pjPath);\n\n // engines\n if (pj.engines?.node && !result.nodeEngines) result.nodeEngines = pj.engines.node;\n if (pj.engines?.npm && !result.npmEngines) result.npmEngines = pj.engines.npm;\n if ((pj.engines as Record<string, string>)?.pnpm && !result.pnpmEngines) {\n result.pnpmEngines = (pj.engines as Record<string, string>).pnpm;\n }\n\n // Gather all dep names\n for (const section of ['dependencies', 'devDependencies', 'optionalDependencies'] as const) {\n const deps = pj[section];\n if (deps) {\n for (const name of Object.keys(deps)) {\n allDeps.add(name);\n }\n }\n }\n\n // OS assumptions from scripts (command names only, never values)\n const scripts = (pj as Record<string, unknown>).scripts;\n if (scripts && typeof scripts === 'object') {\n for (const val of Object.values(scripts as Record<string, string>)) {\n if (typeof val !== 'string') continue;\n // Only check command names (first token) to avoid leaking script content\n const firstToken = val.split(/\\s/)[0] ?? '';\n for (const { pattern, label } of OS_PATTERNS) {\n if (pattern.test(firstToken)) {\n osAssumptions.add(label);\n }\n }\n }\n }\n } catch { /* skip unreadable package.json */ }\n }\n\n // Native modules\n for (const dep of allDeps) {\n if (NATIVE_MODULE_PACKAGES.has(dep)) {\n result.nativeModules.push(dep);\n }\n }\n result.nativeModules.sort();\n\n // OS assumptions\n result.osAssumptions = [...osAssumptions].sort();\n\n // .NET target frameworks from .csproj/.vbproj files\n const csprojFiles = cache\n ? await cache.findFiles(rootDir, (name) => name.endsWith('.csproj') || name.endsWith('.vbproj'))\n : await findFiles(rootDir, (name) => name.endsWith('.csproj') || name.endsWith('.vbproj'));\n const tfms = new Set<string>();\n for (const csprojPath of csprojFiles) {\n try {\n const xml = cache\n ? await cache.readTextFile(csprojPath)\n : await readTextFile(csprojPath);\n const tfMatch = xml.match(/<TargetFramework>(.*?)<\\/TargetFramework>/);\n if (tfMatch?.[1]) tfms.add(tfMatch[1]);\n const tfsMatch = xml.match(/<TargetFrameworks>(.*?)<\\/TargetFrameworks>/);\n if (tfsMatch?.[1]) {\n for (const tfm of tfsMatch[1].split(';')) {\n if (tfm.trim()) tfms.add(tfm.trim());\n }\n }\n } catch { /* skip */ }\n }\n result.dotnetTargetFrameworks = [...tfms].sort();\n\n // Docker base images (FROM lines only)\n const dockerfiles = cache\n ? await cache.findFiles(rootDir, (name) =>\n name === 'Dockerfile' || name.startsWith('Dockerfile.'),\n )\n : await findFiles(rootDir, (name) =>\n name === 'Dockerfile' || name.startsWith('Dockerfile.'),\n );\n const baseImages = new Set<string>();\n for (const df of dockerfiles) {\n try {\n const content = cache\n ? await cache.readTextFile(df)\n : await readTextFile(df);\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (/^FROM\\s+/i.test(trimmed)) {\n const parts = trimmed.split(/\\s+/);\n if (parts[1] && !parts[1].startsWith('--')) {\n baseImages.add(parts[1]);\n } else if (parts[1]?.startsWith('--')) {\n // FROM --platform=linux/amd64 node:20 OR FROM --platform linux/amd64 node:20\n const imageIdx = parts[1].includes('=') ? 2 : 3;\n if (parts[imageIdx]) baseImages.add(parts[imageIdx]);\n }\n }\n }\n } catch { /* skip */ }\n }\n result.dockerBaseImages = [...baseImages].sort();\n\n // Node version files\n for (const file of ['.nvmrc', '.node-version', '.tool-versions']) {\n const exists = cache\n ? await cache.pathExists(path.join(rootDir, file))\n : await pathExists(path.join(rootDir, file));\n if (exists) {\n result.nodeVersionFiles.push(file);\n }\n }\n\n return result;\n}\n","import type { ProjectScan, DependencyRiskResult } from '../../core-open/index.js';\n\n/** Packages widely known to be deprecated */\nconst DEPRECATED_PACKAGES = new Set([\n 'request', 'node-sass', 'tslint', 'istanbul', 'popper.js',\n 'Left-pad', 'left-pad', 'bower', 'grunt', 'gulp',\n 'coffee-script', 'coffeescript', 'merge', 'nomnom', 'optimist',\n 'natives', 'querystring', 'domain-browser', 'sys', 'punycode',\n]);\n\n/** Packages that use node-gyp / native compilation */\nconst NATIVE_MODULE_PACKAGES = new Set([\n 'sharp', 'canvas', 'bcrypt', 'node-gyp', 'fsevents',\n 'better-sqlite3', 'sqlite3', 'leveldown', 'sodium-native',\n 'node-sass', 'argon2', 'usb', 'serialport', 're2',\n 'libxmljs', 'libxmljs2', 'cpu-features', 'deasync', 'farmhash',\n 'grpc', '@grpc/grpc-js',\n]);\n\nexport function scanDependencyRisk(projects: ProjectScan[]): DependencyRiskResult {\n const deprecated = new Set<string>();\n const nativeModules = new Set<string>();\n let totalDeps = 0;\n\n for (const project of projects) {\n for (const dep of project.dependencies) {\n totalDeps++;\n if (DEPRECATED_PACKAGES.has(dep.package)) {\n deprecated.add(dep.package);\n }\n if (NATIVE_MODULE_PACKAGES.has(dep.package)) {\n nativeModules.add(dep.package);\n }\n }\n }\n\n return {\n deprecatedPackages: [...deprecated].sort(),\n nativeModulePackages: [...nativeModules].sort(),\n totalDependencies: totalDeps,\n };\n}\n","import * as path from 'node:path';\nimport { readTextFile, pathExists, findPackageJsonFiles, readJsonFile, FileCache } from '../../core-open/index.js';\nimport type { PackageJson, DependencyGraphResult, DuplicatedPackage, PhantomDependency } from '../../core-open/index.js';\n\ninterface LockEntry {\n name: string;\n version: string;\n}\n\n/**\n * Parse pnpm-lock.yaml (v6/v9 format) by extracting package names and versions\n * from the `packages:` section. Lightweight regex-based — no YAML parser needed.\n */\nfunction parsePnpmLock(content: string): LockEntry[] {\n const entries: LockEntry[] = [];\n // Match lines like \" /lodash@4.17.21:\" or \" lodash@4.17.21:\" (pnpm v9)\n // Also handles scoped: \" /@scope/pkg@1.0.0:\"\n const regex = /^\\s+\\/?(@?[^@\\s][^@\\s]*?)@(\\d+\\.\\d+\\.\\d+[^:\\s]*)\\s*:/gm;\n let match;\n while ((match = regex.exec(content)) !== null) {\n if (match[1] && match[2]) {\n entries.push({ name: match[1], version: match[2] });\n }\n }\n return entries;\n}\n\n/**\n * Parse package-lock.json (v2/v3) by reading `packages` or `dependencies` keys.\n */\nfunction parseNpmLock(content: string): LockEntry[] {\n const entries: LockEntry[] = [];\n try {\n const lock = JSON.parse(content);\n\n // v2/v3 format: `packages` keyed by path like \"node_modules/lodash\"\n if (lock.packages && typeof lock.packages === 'object') {\n for (const [key, value] of Object.entries(lock.packages)) {\n if (key === '') continue; // root entry\n const v = value as { version?: string };\n if (v.version) {\n const name = key.replace(/^node_modules\\//, '').replace(/.*node_modules\\//, '');\n entries.push({ name, version: v.version });\n }\n }\n }\n // v1 fallback: `dependencies`\n else if (lock.dependencies && typeof lock.dependencies === 'object') {\n function walkDeps(deps: Record<string, { version?: string; dependencies?: Record<string, unknown> }>) {\n for (const [name, data] of Object.entries(deps)) {\n if (data.version) entries.push({ name, version: data.version });\n if (data.dependencies) walkDeps(data.dependencies as typeof deps);\n }\n }\n walkDeps(lock.dependencies);\n }\n } catch { /* invalid JSON */ }\n return entries;\n}\n\n/**\n * Parse yarn.lock by extracting package name + resolved version pairs.\n */\nfunction parseYarnLock(content: string): LockEntry[] {\n const entries: LockEntry[] = [];\n // Match blocks like: \"lodash@^4.17.0:\\n version \"4.17.21\"\"\n const regex = /^\"?(@?[^\\s\"@]+)@[^:]+:\\s*\\n\\s+version\\s+\"([^\"]+)\"/gm;\n let match;\n while ((match = regex.exec(content)) !== null) {\n if (match[1] && match[2]) {\n entries.push({ name: match[1], version: match[2] });\n }\n }\n return entries;\n}\n\nexport async function scanDependencyGraph(rootDir: string, cache?: FileCache): Promise<DependencyGraphResult> {\n const result: DependencyGraphResult = {\n lockfileType: null,\n totalUnique: 0,\n totalInstalled: 0,\n duplicatedPackages: [],\n phantomDependencies: [],\n };\n\n // Try lockfiles in order of preference\n let entries: LockEntry[] = [];\n\n const pnpmLock = path.join(rootDir, 'pnpm-lock.yaml');\n const npmLock = path.join(rootDir, 'package-lock.json');\n const yarnLock = path.join(rootDir, 'yarn.lock');\n\n const _pathExists = cache ? (p: string) => cache.pathExists(p) : pathExists;\n const _readTextFile = cache ? (p: string) => cache.readTextFile(p) : readTextFile;\n\n if (await _pathExists(pnpmLock)) {\n result.lockfileType = 'pnpm';\n const content = await _readTextFile(pnpmLock);\n entries = parsePnpmLock(content);\n } else if (await _pathExists(npmLock)) {\n result.lockfileType = 'npm';\n const content = await _readTextFile(npmLock);\n entries = parseNpmLock(content);\n } else if (await _pathExists(yarnLock)) {\n result.lockfileType = 'yarn';\n const content = await _readTextFile(yarnLock);\n entries = parseYarnLock(content);\n }\n\n if (entries.length === 0) return result;\n\n // Build version map\n const versionMap = new Map<string, Set<string>>();\n for (const entry of entries) {\n const existing = versionMap.get(entry.name);\n if (existing) {\n existing.add(entry.version);\n } else {\n versionMap.set(entry.name, new Set([entry.version]));\n }\n }\n\n result.totalInstalled = entries.length;\n result.totalUnique = versionMap.size;\n\n // Find duplicated packages (multiple versions)\n const duplicated: DuplicatedPackage[] = [];\n for (const [name, versions] of versionMap) {\n if (versions.size > 1) {\n duplicated.push({\n name,\n versions: [...versions].sort(),\n consumers: versions.size,\n });\n }\n }\n duplicated.sort((a, b) => b.versions.length - a.versions.length || a.name.localeCompare(b.name));\n result.duplicatedPackages = duplicated;\n\n // Detect phantom dependencies:\n // packages used in package.json deps that don't appear in the lockfile\n const lockedNames = new Set(versionMap.keys());\n const pkgFiles = cache\n ? await cache.findPackageJsonFiles(rootDir)\n : await findPackageJsonFiles(rootDir);\n const phantoms = new Set<string>();\n const phantomDetails: PhantomDependency[] = [];\n for (const pjPath of pkgFiles) {\n try {\n const pj = cache\n ? await cache.readJsonFile<PackageJson>(pjPath)\n : await readJsonFile<PackageJson>(pjPath);\n const relPath = path.relative(rootDir, pjPath);\n for (const section of ['dependencies', 'devDependencies'] as const) {\n const deps = pj[section];\n if (!deps) continue;\n for (const [name, version] of Object.entries(deps)) {\n const ver = typeof version === 'string' ? version : '';\n if (!lockedNames.has(name) && !ver.startsWith('workspace:')) {\n phantoms.add(name);\n phantomDetails.push({ package: name, spec: ver, sourcePath: relPath });\n }\n }\n }\n } catch { /* skip */ }\n }\n result.phantomDependencies = [...phantoms].sort();\n result.phantomDependencyDetails = phantomDetails.sort((a, b) => a.sourcePath.localeCompare(b.sourcePath) || a.package.localeCompare(b.package));\n\n return result;\n}\n","import type { ProjectScan, ToolingInventoryResult, InventoryItem } from '../../core-open/index.js';\n\n/** Maps package names to display names, grouped by category */\nconst CATEGORIES: Record<keyof ToolingInventoryResult, Record<string, string>> = {\n frontend: {\n 'react': 'React',\n 'react-dom': 'React DOM',\n 'vue': 'Vue',\n '@angular/core': 'Angular',\n 'svelte': 'Svelte',\n 'solid-js': 'Solid',\n 'qwik': 'Qwik',\n 'htmx.org': 'htmx',\n 'preact': 'Preact',\n 'lit': 'Lit',\n 'alpinejs': 'Alpine.js',\n 'stimulus': 'Stimulus',\n 'petite-vue': 'petite-vue',\n 'mithril': 'Mithril',\n 'inferno': 'Inferno',\n 'hyperapp': 'Hyperapp',\n 'marko': 'Marko',\n '@builder.io/qwik': 'Qwik (Builder)',\n 'million': 'Million',\n 'ember-source': 'Ember',\n },\n metaFrameworks: {\n 'next': 'Next.js',\n 'nuxt': 'Nuxt',\n '@analogjs/platform': 'Analog',\n 'astro': 'Astro',\n '@remix-run/react': 'Remix',\n 'gatsby': 'Gatsby',\n '@sveltejs/kit': 'SvelteKit',\n '@tanstack/start': 'TanStack Start',\n '@adonisjs/core': 'AdonisJS',\n '@redwoodjs/core': 'RedwoodJS',\n 'blitz': 'Blitz.js',\n '@solidjs/start': 'SolidStart',\n 'fresh': 'Fresh (Deno)',\n },\n bundlers: {\n 'vite': 'Vite',\n 'webpack': 'webpack',\n 'rollup': 'Rollup',\n 'esbuild': 'esbuild',\n 'parcel': 'Parcel',\n 'turbo': 'Turbo',\n 'tsup': 'tsup',\n 'unbuild': 'unbuild',\n '@swc/core': 'SWC',\n 'bun': 'Bun',\n 'pkg': 'pkg',\n 'ncc': 'ncc',\n '@vercel/ncc': 'Vercel ncc',\n 'microbundle': 'microbundle',\n 'tsc-watch': 'tsc-watch',\n 'ts-node': 'ts-node',\n 'tsx': 'tsx',\n 'jiti': 'jiti',\n '@rspack/core': 'Rspack',\n 'farm': 'Farm',\n },\n css: {\n 'tailwindcss': 'Tailwind CSS',\n '@mui/material': 'MUI',\n 'vuetify': 'Vuetify',\n 'bootstrap': 'Bootstrap',\n 'styled-components': 'styled-components',\n '@emotion/react': 'Emotion',\n '@chakra-ui/react': 'Chakra UI',\n 'sass': 'Sass',\n '@mantine/core': 'Mantine',\n 'antd': 'Ant Design',\n '@radix-ui/react-slot': 'Radix UI',\n '@headlessui/react': 'Headless UI',\n 'daisyui': 'DaisyUI',\n '@shadcn/ui': 'shadcn/ui',\n 'primereact': 'PrimeReact',\n 'primevue': 'PrimeVue',\n '@nextui-org/react': 'NextUI',\n '@ariakit/react': 'Ariakit',\n 'windstitch': 'Windstitch',\n 'vanilla-extract': 'vanilla-extract',\n '@vanilla-extract/css': 'vanilla-extract',\n 'linaria': 'Linaria',\n 'stylex': 'StyleX',\n '@stylexjs/stylex': 'StyleX',\n 'unocss': 'UnoCSS',\n 'postcss': 'PostCSS',\n 'autoprefixer': 'Autoprefixer',\n 'lightningcss': 'Lightning CSS',\n 'less': 'Less',\n 'stylus': 'Stylus',\n 'open-props': 'Open Props',\n '@ark-ui/react': 'Ark UI',\n },\n backend: {\n 'express': 'Express',\n 'fastify': 'Fastify',\n '@nestjs/core': 'NestJS',\n 'hono': 'Hono',\n 'koa': 'Koa',\n '@hapi/hapi': 'Hapi',\n 'restify': 'Restify',\n 'elysia': 'Elysia',\n '@elysiajs/eden': 'Elysia Eden',\n 'moleculer': 'Moleculer',\n '@feathersjs/feathers': 'Feathers',\n 'sails': 'Sails',\n 'micro': 'Micro',\n 'polka': 'Polka',\n 'h3': 'h3',\n 'nitro': 'Nitro',\n '@trpc/server': 'tRPC Server',\n '@trpc/client': 'tRPC Client',\n 'middy': 'Middy (Lambda)',\n 'serverless': 'Serverless Framework',\n 'aws-lambda': 'AWS Lambda',\n '@aws-sdk/client-lambda': 'AWS Lambda SDK',\n '@cloudflare/workers-types': 'Cloudflare Workers',\n 'wrangler': 'Wrangler',\n },\n orm: {\n 'prisma': 'Prisma',\n '@prisma/client': 'Prisma Client',\n 'drizzle-orm': 'Drizzle',\n 'typeorm': 'TypeORM',\n 'sequelize': 'Sequelize',\n 'knex': 'Knex',\n 'pg': 'pg (PostgreSQL)',\n 'mysql2': 'mysql2',\n 'mongodb': 'MongoDB',\n 'ioredis': 'ioredis',\n 'redis': 'Redis',\n 'better-sqlite3': 'better-sqlite3',\n '@mikro-orm/core': 'MikroORM',\n 'mongoose': 'Mongoose',\n 'mssql': 'mssql',\n 'kysely': 'Kysely',\n 'objection': 'Objection.js',\n '@planetscale/database': 'PlanetScale',\n '@neondatabase/serverless': 'Neon',\n '@libsql/client': 'libSQL (Turso)',\n '@electric-sql/pglite': 'PGlite',\n 'sql.js': 'sql.js',\n 'oracledb': 'Oracle DB',\n 'cassandra-driver': 'Cassandra',\n 'neo4j-driver': 'Neo4j',\n '@upstash/redis': 'Upstash Redis',\n '@upstash/kafka': 'Upstash Kafka',\n 'dynamoose': 'Dynamoose',\n 'fauna': 'Fauna',\n 'faunadb': 'FaunaDB',\n '@clickhouse/client': 'ClickHouse',\n 'influx': 'InfluxDB',\n 'slonik': 'Slonik',\n 'massive': 'Massive.js',\n },\n testing: {\n 'vitest': 'Vitest',\n 'jest': 'Jest',\n 'mocha': 'Mocha',\n '@playwright/test': 'Playwright',\n 'cypress': 'Cypress',\n '@testing-library/react': 'Testing Library (React)',\n '@testing-library/vue': 'Testing Library (Vue)',\n '@testing-library/svelte': 'Testing Library (Svelte)',\n '@testing-library/jest-dom': 'Testing Library DOM',\n '@testing-library/user-event': 'Testing Library User Event',\n 'chai': 'Chai',\n 'ava': 'AVA',\n 'tap': 'node-tap',\n 'supertest': 'Supertest',\n 'storybook': 'Storybook',\n '@storybook/react': 'Storybook (React)',\n '@storybook/vue3': 'Storybook (Vue)',\n 'msw': 'Mock Service Worker',\n 'nock': 'Nock',\n 'sinon': 'Sinon',\n 'faker': 'Faker',\n '@faker-js/faker': 'Faker.js',\n 'testcontainers': 'Testcontainers',\n 'pact': 'Pact',\n '@pact-foundation/pact': 'Pact',\n 'k6': 'k6',\n 'artillery': 'Artillery',\n 'autocannon': 'Autocannon',\n 'puppeteer': 'Puppeteer',\n 'webdriverio': 'WebdriverIO',\n 'nightwatch': 'Nightwatch',\n 'detox': 'Detox (Mobile)',\n 'jest-image-snapshot': 'Image Snapshot',\n 'happy-dom': 'happy-dom',\n 'jsdom': 'jsdom',\n 'c8': 'c8 (coverage)',\n 'nyc': 'nyc (coverage)',\n '@vitest/coverage-v8': 'Vitest Coverage',\n },\n lintFormat: {\n 'eslint': 'ESLint',\n 'prettier': 'Prettier',\n 'stylelint': 'Stylelint',\n '@biomejs/biome': 'Biome',\n 'oxlint': 'oxlint',\n 'tslint': 'TSLint',\n '@typescript-eslint/parser': 'typescript-eslint',\n 'eslint-config-next': 'ESLint Next.js',\n 'eslint-config-prettier': 'ESLint Prettier',\n 'eslint-plugin-react': 'ESLint React',\n 'eslint-plugin-vue': 'ESLint Vue',\n 'husky': 'Husky',\n 'lint-staged': 'lint-staged',\n 'commitlint': 'commitlint',\n '@commitlint/cli': 'commitlint',\n 'lefthook': 'Lefthook',\n 'cspell': 'CSpell',\n 'markdownlint': 'markdownlint',\n 'depcheck': 'depcheck',\n 'knip': 'Knip',\n 'madge': 'Madge',\n 'publint': 'publint',\n 'arethetypeswrong': 'Are the Types Wrong',\n 'sort-package-json': 'sort-package-json',\n },\n apiMessaging: {\n 'graphql': 'GraphQL',\n '@grpc/grpc-js': 'gRPC',\n '@trpc/server': 'tRPC',\n '@connectrpc/connect': 'Connect',\n 'socket.io': 'Socket.IO',\n 'ws': 'WebSocket (ws)',\n '@apollo/server': 'Apollo Server',\n '@apollo/client': 'Apollo Client',\n 'urql': 'URQL',\n 'graphql-yoga': 'GraphQL Yoga',\n 'mercurius': 'Mercurius',\n 'type-graphql': 'TypeGraphQL',\n 'nexus': 'Nexus',\n 'pothos': 'Pothos',\n '@graphql-codegen/cli': 'GraphQL Codegen',\n 'kafkajs': 'Kafka.js',\n 'amqplib': 'AMQP (RabbitMQ)',\n 'bullmq': 'BullMQ',\n 'bull': 'Bull',\n 'bee-queue': 'Bee Queue',\n 'agenda': 'Agenda',\n 'pg-boss': 'pg-boss',\n '@temporalio/client': 'Temporal',\n 'inngest': 'Inngest',\n 'trigger.dev': 'Trigger.dev',\n 'nats': 'NATS',\n 'mqtt': 'MQTT',\n 'zeromq': 'ZeroMQ',\n 'sse-channel': 'SSE Channel',\n },\n observability: {\n '@sentry/node': 'Sentry (Node)',\n '@sentry/browser': 'Sentry (Browser)',\n '@sentry/react': 'Sentry (React)',\n '@sentry/nextjs': 'Sentry (Next.js)',\n '@opentelemetry/api': 'OpenTelemetry API',\n '@opentelemetry/sdk-node': 'OpenTelemetry SDK',\n '@opentelemetry/auto-instrumentations-node': 'OpenTelemetry Auto',\n 'applicationinsights': 'Application Insights',\n 'pino': 'Pino',\n 'winston': 'Winston',\n 'dd-trace': 'Datadog',\n 'newrelic': 'New Relic',\n 'bunyan': 'Bunyan',\n '@axiomhq/pino': 'Axiom (Pino)',\n 'loglevel': 'loglevel',\n 'consola': 'consola',\n '@logtail/node': 'Logtail',\n 'elastic-apm-node': 'Elastic APM',\n 'prom-client': 'Prometheus Client',\n '@google-cloud/trace-agent': 'GCP Trace',\n '@google-cloud/logging': 'GCP Logging',\n 'lightstep-tracer': 'Lightstep',\n 'roarr': 'Roarr',\n 'cls-hooked': 'CLS Hooked',\n '@baselime/node-opentelemetry': 'Baselime',\n 'highlight.run': 'Highlight',\n 'posthog-node': 'PostHog',\n '@amplitude/node': 'Amplitude',\n 'mixpanel': 'Mixpanel',\n '@segment/analytics-node': 'Segment',\n },\n};\n\nexport function scanToolingInventory(projects: ProjectScan[]): ToolingInventoryResult {\n const result: ToolingInventoryResult = {\n frontend: [],\n metaFrameworks: [],\n bundlers: [],\n css: [],\n backend: [],\n orm: [],\n testing: [],\n lintFormat: [],\n apiMessaging: [],\n observability: [],\n };\n\n // Build a map of package -> { version, found } across all projects\n const packageVersions = new Map<string, string | null>();\n\n for (const project of projects) {\n for (const dep of project.dependencies) {\n if (!packageVersions.has(dep.package)) {\n packageVersions.set(dep.package, dep.resolvedVersion);\n }\n }\n }\n\n // Match against categories\n for (const [category, packages] of Object.entries(CATEGORIES)) {\n const items: InventoryItem[] = [];\n for (const [pkg, displayName] of Object.entries(packages)) {\n if (packageVersions.has(pkg)) {\n items.push({\n name: displayName,\n package: pkg,\n version: packageVersions.get(pkg) ?? null,\n });\n }\n }\n items.sort((a, b) => a.name.localeCompare(b.name));\n (result as unknown as Record<string, InventoryItem[]>)[category] = items;\n }\n\n return result;\n}\n","import * as path from 'node:path';\nimport { findFiles, findPackageJsonFiles, readJsonFile, readTextFile, pathExists, FileCache } from '../../core-open/index.js';\nimport type { PackageJson, BuildDeployResult } from '../../core-open/index.js';\n\n/** CI configuration files → system name */\nconst CI_FILES: Record<string, string> = {\n '.github/workflows': 'github-actions',\n '.gitlab-ci.yml': 'gitlab-ci',\n 'azure-pipelines.yml': 'azure-devops',\n 'bitbucket-pipelines.yml': 'bitbucket-pipelines',\n 'Jenkinsfile': 'jenkins',\n '.circleci/config.yml': 'circleci',\n '.travis.yml': 'travis-ci',\n};\n\n/** Release tooling — detected by package name or file existence */\nconst RELEASE_PACKAGES = new Set([\n 'semantic-release', '@changesets/cli', 'standard-version',\n 'release-it', 'auto', 'lerna',\n]);\n\nconst RELEASE_FILES: Record<string, string> = {\n '.changeset': 'changesets',\n '.releaserc': 'semantic-release',\n '.releaserc.json': 'semantic-release',\n '.releaserc.yml': 'semantic-release',\n 'release.config.js': 'semantic-release',\n 'release.config.cjs': 'semantic-release',\n 'GitVersion.yml': 'gitversion',\n};\n\n/** Monorepo tool detection */\nconst MONOREPO_FILES: Record<string, string> = {\n 'pnpm-workspace.yaml': 'pnpm-workspaces',\n 'lerna.json': 'lerna',\n 'nx.json': 'nx',\n 'turbo.json': 'turbo',\n 'rush.json': 'rush',\n};\n\n/** IaC file extensions */\nconst IAC_EXTENSIONS: Record<string, string> = {\n '.tf': 'terraform',\n '.bicep': 'bicep',\n};\n\nexport async function scanBuildDeploy(rootDir: string, cache?: FileCache): Promise<BuildDeployResult> {\n const result: BuildDeployResult = {\n ci: [],\n ciWorkflowCount: 0,\n docker: { dockerfileCount: 0, baseImages: [] },\n iac: [],\n releaseTooling: [],\n packageManagers: [],\n monorepoTools: [],\n };\n\n const _pathExists = cache ? (p: string) => cache.pathExists(p) : pathExists;\n const _findFiles = cache\n ? (dir: string, pred: (name: string) => boolean) => cache.findFiles(dir, pred)\n : findFiles;\n const _readTextFile = cache ? (p: string) => cache.readTextFile(p) : readTextFile;\n\n // Detect CI systems\n const ciSystems = new Set<string>();\n for (const [file, system] of Object.entries(CI_FILES)) {\n const fullPath = path.join(rootDir, file);\n if (await _pathExists(fullPath)) {\n ciSystems.add(system);\n }\n }\n\n // Count GitHub Actions workflows\n const ghWorkflowDir = path.join(rootDir, '.github', 'workflows');\n if (await _pathExists(ghWorkflowDir)) {\n try {\n // When using the cache, filter from the root walk instead of triggering\n // a separate sub-walk for .github/workflows\n if (cache) {\n const entries = await cache.walkDir(rootDir);\n const ghPrefix = path.relative(rootDir, ghWorkflowDir) + path.sep;\n result.ciWorkflowCount = entries.filter(\n (e) => e.isFile && e.relPath.startsWith(ghPrefix) &&\n (e.name.endsWith('.yml') || e.name.endsWith('.yaml')),\n ).length;\n } else {\n const files = await _findFiles(ghWorkflowDir, (name) =>\n name.endsWith('.yml') || name.endsWith('.yaml'),\n );\n result.ciWorkflowCount = files.length;\n }\n } catch { /* skip */ }\n }\n\n result.ci = [...ciSystems].sort();\n\n // Docker\n const dockerfiles = await _findFiles(rootDir, (name) =>\n name === 'Dockerfile' || name.startsWith('Dockerfile.'),\n );\n result.docker.dockerfileCount = dockerfiles.length;\n\n const baseImages = new Set<string>();\n for (const df of dockerfiles) {\n try {\n const content = await _readTextFile(df);\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (/^FROM\\s+/i.test(trimmed)) {\n const parts = trimmed.split(/\\s+/);\n let imageIdx = 1;\n if (parts[1]?.startsWith('--')) {\n imageIdx = parts[1].includes('=') ? 2 : 3;\n }\n if (parts[imageIdx]) {\n baseImages.add(parts[imageIdx]);\n }\n }\n }\n } catch { /* skip */ }\n }\n result.docker.baseImages = [...baseImages].sort();\n\n // IaC detection\n const iacSystems = new Set<string>();\n for (const [ext, system] of Object.entries(IAC_EXTENSIONS)) {\n const files = await _findFiles(rootDir, (name) => name.endsWith(ext));\n if (files.length > 0) iacSystems.add(system);\n }\n // CloudFormation\n const cfnFiles = await _findFiles(rootDir, (name) =>\n name.endsWith('.cfn.json') || name.endsWith('.cfn.yaml'),\n );\n if (cfnFiles.length > 0) iacSystems.add('cloudformation');\n // Pulumi\n if (await _pathExists(path.join(rootDir, 'Pulumi.yaml'))) iacSystems.add('pulumi');\n result.iac = [...iacSystems].sort();\n\n // Release tooling\n const releaseTools = new Set<string>();\n // From files\n for (const [file, tool] of Object.entries(RELEASE_FILES)) {\n if (await _pathExists(path.join(rootDir, file))) releaseTools.add(tool);\n }\n // From packages\n const pkgFiles = cache\n ? await cache.findPackageJsonFiles(rootDir)\n : await findPackageJsonFiles(rootDir);\n for (const pjPath of pkgFiles) {\n try {\n const pj = cache\n ? await cache.readJsonFile<PackageJson>(pjPath)\n : await readJsonFile<PackageJson>(pjPath);\n for (const section of ['dependencies', 'devDependencies'] as const) {\n const deps = pj[section];\n if (!deps) continue;\n for (const name of Object.keys(deps)) {\n if (RELEASE_PACKAGES.has(name)) releaseTools.add(name);\n }\n }\n } catch { /* skip */ }\n }\n result.releaseTooling = [...releaseTools].sort();\n\n // Package managers (by lockfile)\n const lockfileMap: Record<string, string> = {\n 'pnpm-lock.yaml': 'pnpm',\n 'package-lock.json': 'npm',\n 'yarn.lock': 'yarn',\n 'bun.lockb': 'bun',\n };\n const managers = new Set<string>();\n for (const [file, manager] of Object.entries(lockfileMap)) {\n if (await _pathExists(path.join(rootDir, file))) managers.add(manager);\n }\n\n // Read root package.json for corepack `packageManager` field and workspace config\n let rootPkg: PackageJson | null = null;\n const rootPkgPath = path.join(rootDir, 'package.json');\n if (await _pathExists(rootPkgPath)) {\n try {\n rootPkg = cache\n ? await cache.readJsonFile<PackageJson>(rootPkgPath)\n : await readJsonFile<PackageJson>(rootPkgPath);\n } catch { /* ignore unreadable root package.json */ }\n }\n\n // Corepack `packageManager` field supplements lockfile detection\n // e.g. \"packageManager\": \"pnpm@9.15.4\" or \"yarn@4.5.3\"\n if (rootPkg?.packageManager) {\n const pm = rootPkg.packageManager.split('@')[0]?.toLowerCase();\n if (pm && ['pnpm', 'yarn', 'npm', 'bun'].includes(pm)) {\n managers.add(pm);\n }\n }\n\n result.packageManagers = [...managers].sort();\n\n // Monorepo tools\n const monoTools = new Set<string>();\n for (const [file, tool] of Object.entries(MONOREPO_FILES)) {\n if (await _pathExists(path.join(rootDir, file))) monoTools.add(tool);\n }\n\n // npm/yarn workspaces: detected from `workspaces` field in root package.json\n // pnpm uses pnpm-workspace.yaml (handled above); npm and yarn share the same field\n if (rootPkg?.workspaces) {\n monoTools.add(managers.has('yarn') ? 'yarn-workspaces' : 'npm-workspaces');\n }\n\n result.monorepoTools = [...monoTools].sort();\n\n return result;\n}\n","import * as path from 'node:path';\nimport { findPackageJsonFiles, readJsonFile, readTextFile, pathExists, findFiles, FileCache } from '../../core-open/index.js';\nimport type { PackageJson, TsModernityResult } from '../../core-open/index.js';\n\nexport async function scanTsModernity(rootDir: string, cache?: FileCache): Promise<TsModernityResult> {\n const result: TsModernityResult = {\n typescriptVersion: null,\n strict: null,\n noImplicitAny: null,\n strictNullChecks: null,\n module: null,\n moduleResolution: null,\n target: null,\n moduleType: null,\n exportsField: false,\n };\n\n // Find TypeScript version from any package.json\n const pkgFiles = cache\n ? await cache.findPackageJsonFiles(rootDir)\n : await findPackageJsonFiles(rootDir);\n let hasEsm = false;\n let hasCjs = false;\n\n for (const pjPath of pkgFiles) {\n try {\n const pj = cache\n ? await cache.readJsonFile<PackageJson>(pjPath)\n : await readJsonFile<PackageJson>(pjPath);\n\n // TypeScript version (first found)\n if (!result.typescriptVersion) {\n const tsVer = pj.devDependencies?.['typescript'] ?? pj.dependencies?.['typescript'];\n if (tsVer) {\n result.typescriptVersion = tsVer.replace(/^[\\^~>=<\\s]+/, '');\n }\n }\n\n // Module type from package.json \"type\" field\n const typeField = (pj as Record<string, unknown>).type;\n if (typeField === 'module') hasEsm = true;\n else if (typeField === 'commonjs') hasCjs = true;\n else if (!typeField) hasCjs = true; // default is CJS\n\n // exports field presence\n if ((pj as Record<string, unknown>).exports) {\n result.exportsField = true;\n }\n } catch { /* skip */ }\n }\n\n // Determine module type\n if (hasEsm && hasCjs) result.moduleType = 'mixed';\n else if (hasEsm) result.moduleType = 'esm';\n else if (hasCjs) result.moduleType = 'cjs';\n\n // Read tsconfig.json (root-level first, then first found)\n let tsConfigPath = path.join(rootDir, 'tsconfig.json');\n const tsConfigExists = cache\n ? await cache.pathExists(tsConfigPath)\n : await pathExists(tsConfigPath);\n if (!tsConfigExists) {\n const tsConfigs = cache\n ? await cache.findFiles(rootDir, (name) => name === 'tsconfig.json')\n : await findFiles(rootDir, (name) => name === 'tsconfig.json');\n if (tsConfigs.length > 0) {\n tsConfigPath = tsConfigs[0]!;\n } else {\n return result;\n }\n }\n\n try {\n const raw = cache\n ? await cache.readTextFile(tsConfigPath)\n : await readTextFile(tsConfigPath);\n // Strip comments (tsconfig allows // and /* */ comments)\n const stripped = raw\n .replace(/\\/\\/.*$/gm, '')\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n // Remove trailing commas\n .replace(/,(\\s*[}\\]])/g, '$1');\n const tsConfig = JSON.parse(stripped);\n const co = tsConfig?.compilerOptions;\n if (co) {\n if (typeof co.strict === 'boolean') result.strict = co.strict;\n if (typeof co.noImplicitAny === 'boolean') result.noImplicitAny = co.noImplicitAny;\n if (typeof co.strictNullChecks === 'boolean') result.strictNullChecks = co.strictNullChecks;\n if (typeof co.module === 'string') result.module = co.module;\n if (typeof co.moduleResolution === 'string') result.moduleResolution = co.moduleResolution;\n if (typeof co.target === 'string') result.target = co.target;\n }\n } catch { /* malformed tsconfig */ }\n\n return result;\n}\n","import * as path from 'node:path';\nimport * as semver from 'semver';\nimport type { ProjectScan, BreakingChangeExposureResult } from '../../core-open/index.js';\nimport type { FileCache, DirEntry } from '../../core-open/index.js';\n\n/** Packages that are widely deprecated, abandoned, or known to cause upgrade pain */\nconst DEPRECATED_PACKAGES = new Set([\n 'request', 'request-promise', 'request-promise-native', 'moment', 'node-sass', 'tslint', 'aws-sdk',\n 'babel-core', 'babel-preset-env', 'babel-preset-react', 'babel-loader', 'core-js', 'istanbul',\n 'istanbul-instrumenter-loader', 'left-pad', 'popper.js', 'create-react-class',\n 'react-addons-css-transition-group', 'react-addons-test-utils', '@types/express-serve-static-core',\n 'enzyme', 'enzyme-adapter-react-16', 'enzyme-adapter-react-17', 'react-hot-loader', 'react-loadable',\n 'react-router-dom-v5-compat', 'redux-thunk', 'redux-saga', 'recompose', 'classnames', 'glamor',\n 'radium', 'material-ui', '@material-ui/core', 'bower', 'grunt', 'gulp', 'browserify', 'coffee-script',\n 'coffeescript', 'jade', 'nomnom', 'optimist', 'minimist', 'colors', 'faker', 'event-stream', 'ua-parser-js',\n 'caniuse-db', 'circular-json', 'mkdirp', 'rimraf', 'glob', 'swig', 'dustjs-linkedin', 'hogan.js',\n 'passport-local-mongoose', '@angular/http', 'rxjs-compat', 'protractor', 'karma', 'karma-jasmine', 'jasmine',\n]);\n\n/** Polyfills for APIs now built into Node 18+ or modern browsers */\nconst LEGACY_POLYFILLS = new Set([\n 'node-fetch', 'cross-fetch', 'isomorphic-fetch', 'whatwg-fetch', 'abort-controller', 'form-data',\n 'formdata-polyfill', 'web-streams-polyfill', 'whatwg-url', 'url-parse', 'domexception',\n 'abortcontroller-polyfill', 'querystring', 'string_decoder', 'buffer', 'events', 'path-browserify',\n 'stream-browserify', 'stream-http', 'https-browserify', 'os-browserify', 'crypto-browserify', 'assert',\n 'util', 'process', 'timers-browserify', 'tty-browserify', 'vm-browserify', 'domain-browser', 'punycode',\n 'readable-stream', 'es6-promise', 'promise-polyfill', 'es6-symbol', 'es6-map', 'es6-set', 'es6-weak-map',\n 'es6-iterator', 'object-assign', 'object.assign', 'array.prototype.find', 'array.prototype.findindex',\n 'array.prototype.flat', 'array.prototype.flatmap', 'array-includes', 'string.prototype.startswith',\n 'string.prototype.endswith', 'string.prototype.includes', 'string.prototype.padstart', 'string.prototype.padend',\n 'string.prototype.matchall', 'string.prototype.replaceall', 'string.prototype.trimstart',\n 'string.prototype.trimend', 'string.prototype.at', 'object.entries', 'object.values', 'object.fromentries',\n 'globalthis', 'symbol-observable', 'setimmediate', 'regenerator-runtime', '@babel/polyfill',\n 'whatwg-encoding', 'text-encoding', 'encoding', 'unorm', 'number.isnan', 'is-nan', 'has-symbols',\n 'has', 'hasown', 'safe-buffer', 'safer-buffer',\n]);\n\nconst BREAKING_SIGNAL_PHRASES = [\n 'BREAKING', 'Breaking Change', 'Removed', 'Deprecated', 'Migration', 'Rename', 'Drop support',\n] as const;\n\ntype AutomationLevel = 'codemod-available' | 'deterministic-recipe' | 'manual';\ntype UpgradeDecision = 'do-nothing' | 'upgrade-safely-now' | 'plan-major-upgrade' | 'codemod-available' | 'manual-hotspots';\n\ninterface PackagePlaybook {\n impactedFeatures: string[];\n usagePatterns: RegExp[];\n automation: AutomationLevel;\n codemod?: string;\n}\n\nconst PACKAGE_PLAYBOOKS: Record<string, PackagePlaybook> = {\n vue: {\n impactedFeatures: ['Options API-heavy components', 'Deprecated hooks', 'Template filters', '$listeners / $attrs merge behavior', 'Mixin-heavy architecture'],\n usagePatterns: [/\\bexport\\s+default\\s*\\{/, /\\bmixins\\s*:/, /\\bfilters\\s*:/, /\\$listeners\\b/, /beforeDestroy\\b/, /destroyed\\b/],\n automation: 'manual',\n },\n 'react-router-dom': {\n impactedFeatures: ['Switch/Route v5 patterns', 'history prop mutation flows', 'withRouter HOC usage'],\n usagePatterns: [/\\bSwitch\\b/, /\\bwithRouter\\b/, /\\bhistory\\./, /<Route\\s+component=/],\n automation: 'deterministic-recipe',\n },\n eslint: {\n impactedFeatures: ['Flat config migration', '.eslintrc plugin resolution', 'legacy parser/plugin options'],\n usagePatterns: [/\\.eslintrc/, /eslintConfig/, /module\\.exports\\s*=\\s*\\[/, /extends\\s*:/],\n automation: 'deterministic-recipe',\n },\n typescript: {\n impactedFeatures: ['Stricter type checks', 'tsconfig option removals', 'moduleResolution defaults changes'],\n usagePatterns: [/tsconfig\\.json/, /strictNullChecks/, /noImplicitAny/, /moduleResolution/],\n automation: 'manual',\n },\n '@angular/core': {\n impactedFeatures: ['NgModule bootstrap assumptions', 'Standalone component migration', 'Deprecated lifecycle signatures'],\n usagePatterns: [/@NgModule\\b/, /ngOnInit\\(/, /providers\\s*:/],\n automation: 'codemod-available',\n codemod: 'ng update',\n },\n};\n\n/** A serializable view of a package's upgrade playbook (no RegExp), for the hosted planner. */\nexport interface UpgradePlaybook {\n package: string;\n impactedFeatures: string[];\n automation: AutomationLevel;\n codemod?: string;\n}\n\n/** Look up the upgrade playbook for a package, or null when none is known. */\nexport function playbookFor(pkg: string): UpgradePlaybook | null {\n const p = PACKAGE_PLAYBOOKS[pkg];\n if (!p) return null;\n return {\n package: pkg,\n impactedFeatures: p.impactedFeatures,\n automation: p.automation,\n ...(p.codemod ? { codemod: p.codemod } : {}),\n };\n}\n\nfunction detectDecision(majorItems: number, manualHotspots: number, codemodItems: number): UpgradeDecision {\n if (majorItems === 0) return 'do-nothing';\n if (codemodItems > 0 && manualHotspots === 0) return 'codemod-available';\n if (manualHotspots > 0) return 'manual-hotspots';\n if (majorItems <= 2) return 'upgrade-safely-now';\n return 'plan-major-upgrade';\n}\n\nfunction normalizeMajor(version: string | null | undefined): number | null {\n if (!version) return null;\n const parsed = semver.coerce(version);\n return parsed?.major ?? null;\n}\n\nfunction resolveCurrentVersion(dep: { resolvedVersion: string | null; currentSpec: string }): string | null {\n if (dep.resolvedVersion && semver.valid(semver.coerce(dep.resolvedVersion))) return semver.coerce(dep.resolvedVersion)?.version ?? null;\n const min = semver.minVersion(dep.currentSpec);\n return min?.version ?? null;\n}\n\nfunction listInterimMajorTargets(current: number, target: number): string[] {\n if (target <= current + 1) return [];\n const out: string[] = [];\n for (let m = current + 1; m < target; m++) out.push(`${m}.x`);\n return out;\n}\n\nasync function buildProjectUsageIndex(project: ProjectScan, rootDir: string, fileCache: FileCache, candidatePackages: string[]): Promise<Map<string, { importSites: number; filesTouched: number; patternHits: number }>> {\n const index = new Map<string, { importSites: number; filesTouched: number; patternHits: number }>();\n for (const pkg of candidatePackages) index.set(pkg, { importSites: 0, filesTouched: 0, patternHits: 0 });\n\n const entries = await fileCache.walkDir(rootDir);\n const projectPrefix = project.path.replace(/\\\\/g, '/').replace(/^\\.\\//, '');\n const projectEntries = entries.filter((e) => e.isFile && e.relPath.replace(/\\\\/g, '/').startsWith(projectPrefix));\n\n const codeEntries = projectEntries.filter((e: DirEntry) => /\\.(ts|tsx|js|jsx|vue|mjs|cjs|json)$/.test(e.name));\n for (const file of codeEntries) {\n let content = '';\n try {\n content = await fileCache.readTextFile(path.join(rootDir, file.relPath));\n } catch {\n continue;\n }\n\n for (const pkg of candidatePackages) {\n const current = index.get(pkg);\n if (!current) continue;\n const escaped = pkg.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const importRegex = new RegExp(`(?:from\\\\s+['\\\"]${escaped}['\\\"]|require\\\\(\\\\s*['\\\"]${escaped}['\\\"]\\\\s*\\\\)|import\\\\(\\\\s*['\\\"]${escaped}['\\\"]\\\\s*\\\\))`, 'g');\n const importMatches = content.match(importRegex) ?? [];\n if (importMatches.length > 0) {\n current.importSites += importMatches.length;\n current.filesTouched += 1;\n }\n\n const playbook = PACKAGE_PLAYBOOKS[pkg];\n if (playbook) {\n for (const pattern of playbook.usagePatterns) {\n const matches = content.match(new RegExp(pattern.source, 'g'));\n if (matches) current.patternHits += matches.length;\n }\n }\n }\n }\n\n return index;\n}\n\nexport async function scanBreakingChangeExposure(\n projects: ProjectScan[],\n rootDir: string,\n fileCache: FileCache,\n): Promise<BreakingChangeExposureResult> {\n const deprecated = new Set<string>();\n const legacyPolyfills = new Set<string>();\n let peerConflictsDetected = false;\n\n for (const project of projects) {\n for (const dep of project.dependencies) {\n if (DEPRECATED_PACKAGES.has(dep.package)) deprecated.add(dep.package);\n if (LEGACY_POLYFILLS.has(dep.package)) legacyPolyfills.add(dep.package);\n if (dep.section === 'peerDependencies' && dep.majorsBehind !== null && dep.majorsBehind >= 2) peerConflictsDetected = true;\n }\n }\n\n let score = 0;\n score += Math.min(deprecated.size * 10, 40);\n score += Math.min(legacyPolyfills.size * 5, 30);\n score += peerConflictsDetected ? 20 : 0;\n score = Math.min(score, 100);\n\n const projectIntelligence: BreakingChangeExposureResult['projectIntelligence'] = [];\n const solutionRollup = new Map<string, BreakingChangeExposureResult['solutionIntelligence'][number]>();\n let majorPackageCount = 0;\n let manualHotspots = 0;\n let codemodCandidates = 0;\n\n for (const project of projects) {\n const majorDeps = project.dependencies.filter((d) => (d.majorsBehind ?? 0) >= 1 && d.latestStable);\n if (majorDeps.length === 0) {\n projectIntelligence.push({\n project: project.name,\n projectPath: project.path,\n packages: [],\n recommendation: 'do-nothing',\n });\n continue;\n }\n\n const usageIndex = await buildProjectUsageIndex(project, rootDir, fileCache, majorDeps.map((d) => d.package));\n const packages = majorDeps.map((dep) => {\n const currentVersion = resolveCurrentVersion(dep);\n const targetVersion = dep.latestStable;\n const currentMajor = normalizeMajor(currentVersion);\n const targetMajor = normalizeMajor(targetVersion);\n const interimMajors = currentMajor !== null && targetMajor !== null ? listInterimMajorTargets(currentMajor, targetMajor) : [];\n const usage = usageIndex.get(dep.package) ?? { importSites: 0, filesTouched: 0, patternHits: 0 };\n const fileCount = Math.max(1, project.fileCount ?? 1);\n const touchedPercent = Math.min(100, Math.round(((usage.filesTouched + usage.patternHits) / fileCount) * 100));\n\n const playbook = PACKAGE_PLAYBOOKS[dep.package];\n const impactedFeatures = playbook?.impactedFeatures ?? ['Public API usage patterns', 'Configuration surface', 'Runtime compatibility expectations'];\n const automatable: AutomationLevel = playbook?.automation ?? (usage.patternHits > 0 ? 'manual' : 'deterministic-recipe');\n\n majorPackageCount++;\n if (automatable === 'manual') manualHotspots++;\n if (automatable === 'codemod-available') codemodCandidates++;\n\n return {\n package: dep.package,\n currentVersion,\n targetVersion,\n majorJumpCount: dep.majorsBehind ?? 0,\n interimMajors,\n releaseNoteSources: ['GitHub Releases', 'Repository tags', 'CHANGELOG.md'],\n parsedSignals: [...BREAKING_SIGNAL_PHRASES],\n impactedFeatures,\n usage: {\n importSites: usage.importSites,\n filesTouchedEstimate: usage.filesTouched,\n functionsTouchedEstimate: usage.patternHits,\n touchedPercent,\n },\n automatable,\n codemod: playbook?.codemod,\n };\n });\n\n const rec = detectDecision(packages.length, packages.filter((p) => p.automatable === 'manual').length, packages.filter((p) => p.automatable === 'codemod-available').length);\n projectIntelligence.push({\n project: project.name,\n projectPath: project.path,\n packages,\n recommendation: rec,\n });\n\n if (project.solutionId) {\n const key = project.solutionId;\n const existing = solutionRollup.get(key) ?? {\n solutionId: key,\n solutionName: project.solutionName ?? key,\n projectCount: 0,\n majorPackages: 0,\n recommendation: 'do-nothing' as UpgradeDecision,\n };\n existing.projectCount += 1;\n existing.majorPackages += packages.length;\n existing.recommendation = detectDecision(existing.majorPackages, manualHotspots, codemodCandidates);\n solutionRollup.set(key, existing);\n }\n }\n\n const overallRecommendation = detectDecision(majorPackageCount, manualHotspots, codemodCandidates);\n\n return {\n deprecatedPackages: [...deprecated].sort(),\n legacyPolyfills: [...legacyPolyfills].sort(),\n peerConflictsDetected,\n exposureScore: score,\n projectIntelligence,\n solutionIntelligence: [...solutionRollup.values()],\n overallRecommendation,\n };\n}\n","import * as fs from 'node:fs/promises';\nimport * as path from 'node:path';\nimport type { ProjectScan, FileHotspotsResult, FileHotspot, PackageCentrality } from '../../core-open/index.js';\nimport { FileCache } from '../../core-open/index.js';\n\nconst SKIP_DIRS = new Set([\n 'node_modules', '.git', '.wrangler', '.next', 'dist', 'build', 'out',\n '.turbo', '.cache', 'coverage', 'bin', 'obj', '.vs',\n 'TestResults', '.nuxt', '.output', '.svelte-kit',\n]);\n\nconst SKIP_EXTENSIONS = new Set([\n '.map', '.lock', '.png', '.jpg', '.jpeg', '.gif', '.ico',\n '.svg', '.woff', '.woff2', '.ttf', '.otf', '.eot', '.mp4', '.webm',\n]);\n\nexport async function scanFileHotspots(rootDir: string, cache?: FileCache): Promise<FileHotspotsResult> {\n const extensionCounts: Record<string, number> = {};\n const allFiles: FileHotspot[] = [];\n let maxDepth = 0;\n\n if (cache) {\n // Use the cached walk (already walked by other scanners)\n const entries = await cache.walkDir(rootDir);\n\n for (const entry of entries) {\n if (!entry.isFile) continue;\n const ext = path.extname(entry.name).toLowerCase();\n if (SKIP_EXTENSIONS.has(ext)) continue;\n\n // Compute depth\n const depth = entry.relPath.split(path.sep).length - 1;\n if (depth > maxDepth) maxDepth = depth;\n\n // Count by extension\n extensionCounts[ext] = (extensionCounts[ext] ?? 0) + 1;\n\n // Stat inline — not cached, only file-hotspots needs sizes\n try {\n const stat = await fs.stat(entry.absPath);\n allFiles.push({\n path: entry.relPath,\n bytes: stat.size,\n });\n } catch { /* skip */ }\n }\n } else {\n // Fallback: original walk implementation\n async function walk(dir: string, depth: number) {\n if (depth > maxDepth) maxDepth = depth;\n\n let entries: { name: string; isDirectory: boolean; isFile: boolean }[];\n try {\n const dirents = await fs.readdir(dir, { withFileTypes: true });\n entries = dirents.map((d) => ({\n name: d.name,\n isDirectory: d.isDirectory(),\n isFile: d.isFile(),\n }));\n } catch {\n return;\n }\n\n for (const e of entries) {\n if (e.isDirectory) {\n if (SKIP_DIRS.has(e.name)) continue;\n await walk(path.join(dir, e.name), depth + 1);\n } else if (e.isFile) {\n const ext = path.extname(e.name).toLowerCase();\n if (SKIP_EXTENSIONS.has(ext)) continue;\n\n extensionCounts[ext] = (extensionCounts[ext] ?? 0) + 1;\n\n try {\n const stat = await fs.stat(path.join(dir, e.name));\n allFiles.push({\n path: path.relative(rootDir, path.join(dir, e.name)),\n bytes: stat.size,\n });\n } catch { /* skip */ }\n }\n }\n }\n\n await walk(rootDir, 0);\n }\n\n // Sort by size descending, take top 20\n allFiles.sort((a, b) => b.bytes - a.bytes);\n const largestFiles = allFiles.slice(0, 20);\n\n // Package centrality: count how many projects reference each package\n return {\n fileCountByExtension: extensionCounts,\n largestFiles,\n totalFiles: allFiles.length,\n maxDirectoryDepth: maxDepth,\n mostUsedPackages: [], // Filled in by caller with project data\n };\n}\n\n/** Compute package centrality across projects (which packages are used in most projects) */\nexport function computePackageCentrality(projects: ProjectScan[]): PackageCentrality[] {\n const packageProjects = new Map<string, Set<string>>();\n\n for (const project of projects) {\n for (const dep of project.dependencies) {\n const existing = packageProjects.get(dep.package);\n if (existing) {\n existing.add(project.name);\n } else {\n packageProjects.set(dep.package, new Set([project.name]));\n }\n }\n }\n\n const result: PackageCentrality[] = [];\n for (const [name, projectSet] of packageProjects) {\n if (projectSet.size >= 2) {\n result.push({ name, referencedInProjects: projectSet.size });\n }\n }\n\n result.sort((a, b) => b.referencedInProjects - a.referencedInProjects || a.name.localeCompare(b.name));\n return result.slice(0, 30);\n}\n","import * as path from 'node:path';\nimport { pathExists, readTextFile, FileCache } from '../../core-open/index.js';\nimport type { SecurityPostureResult } from '../../core-open/index.js';\n\nconst LOCKFILES: Record<string, string> = {\n 'pnpm-lock.yaml': 'pnpm',\n 'package-lock.json': 'npm',\n 'yarn.lock': 'yarn',\n 'bun.lockb': 'bun',\n 'packages.lock.json': 'nuget',\n};\n\n\nexport async function scanSecurityPosture(rootDir: string, cache?: FileCache): Promise<SecurityPostureResult> {\n const result: SecurityPostureResult = {\n lockfilePresent: false,\n multipleLockfileTypes: false,\n gitignoreCoversEnv: false,\n gitignoreCoversNodeModules: false,\n envFilesTracked: false,\n lockfileTypes: [],\n };\n\n const _pathExists = cache ? (p: string) => cache.pathExists(p) : pathExists;\n const _readTextFile = cache ? (p: string) => cache.readTextFile(p) : readTextFile;\n\n // Check lockfile presence\n const foundLockfiles: string[] = [];\n for (const [file, type] of Object.entries(LOCKFILES)) {\n if (await _pathExists(path.join(rootDir, file))) {\n foundLockfiles.push(type);\n }\n }\n result.lockfilePresent = foundLockfiles.length > 0;\n result.multipleLockfileTypes = foundLockfiles.length > 1;\n result.lockfileTypes = foundLockfiles.sort();\n\n // Parse .gitignore\n const gitignorePath = path.join(rootDir, '.gitignore');\n if (await _pathExists(gitignorePath)) {\n try {\n const content = await _readTextFile(gitignorePath);\n const lines = content.split('\\n').map((l) => l.trim());\n\n // Check for .env coverage\n result.gitignoreCoversEnv = lines.some((line) =>\n line === '.env' ||\n line === '.env*' ||\n line === '.env.*' ||\n line === '.env.local' ||\n line === '*.env',\n );\n\n // Check for node_modules coverage\n result.gitignoreCoversNodeModules = lines.some((line) =>\n line === 'node_modules' ||\n line === 'node_modules/' ||\n line === '/node_modules',\n );\n } catch { /* skip */ }\n }\n\n // Check if .env files exist (at root only — not recursive to avoid scanning too deep)\n for (const envFile of ['.env', '.env.local', '.env.development', '.env.production']) {\n if (await _pathExists(path.join(rootDir, envFile))) {\n // If .gitignore doesn't cover .env files, they're potentially tracked\n if (!result.gitignoreCoversEnv) {\n result.envFilesTracked = true;\n break;\n }\n }\n }\n\n return result;\n}\n","import type { ProjectScan, ServiceDependenciesResult, ServiceDependencyItem } from '../../core-open/index.js';\n\n/** Maps package names to service display names, grouped by category */\nconst SERVICE_CATEGORIES: Record<keyof ServiceDependenciesResult, Record<string, string>> = {\n payment: {\n 'stripe': 'Stripe',\n '@stripe/stripe-js': 'Stripe.js',\n '@stripe/react-stripe-js': 'Stripe React',\n 'braintree': 'Braintree',\n 'braintree-web': 'Braintree Web',\n '@paypal/checkout-server-sdk': 'PayPal',\n '@paypal/react-paypal-js': 'PayPal React',\n '@paypal/paypal-js': 'PayPal.js',\n 'square': 'Square',\n 'razorpay': 'Razorpay',\n 'adyen-api-library': 'Adyen',\n '@adyen/api-library': 'Adyen',\n '@adyen/adyen-web': 'Adyen Web',\n 'mollie-api-node': 'Mollie',\n '@lemonsqueezy/lemonsqueezy.js': 'Lemon Squeezy',\n 'paddle-sdk': 'Paddle',\n '@paddle/paddle-node-sdk': 'Paddle',\n 'coinbase-commerce-node': 'Coinbase Commerce',\n 'gocardless-nodejs': 'GoCardless',\n 'klarna-checkout': 'Klarna',\n '@recurly/recurly-js': 'Recurly',\n 'chargebee': 'Chargebee',\n },\n auth: {\n '@auth0/auth0-spa-js': 'Auth0 SPA',\n '@auth0/auth0-react': 'Auth0 React',\n '@auth0/nextjs-auth0': 'Auth0 Next.js',\n 'auth0': 'Auth0',\n '@clerk/clerk-js': 'Clerk.js',\n '@clerk/clerk-sdk-node': 'Clerk (Node)',\n '@clerk/nextjs': 'Clerk (Next.js)',\n '@clerk/react-router': 'Clerk (React Router)',\n '@clerk/tanstack-react-start': 'Clerk (TanStack Start)',\n '@clerk/expo': 'Clerk (Expo)',\n '@clerk/astro': 'Clerk (Astro)',\n '@clerk/chrome-extension': 'Clerk (Chrome Extension)',\n '@clerk/express': 'Clerk (Express)',\n '@clerk/fastify': 'Clerk (Fastify)',\n '@clerk/hono': 'Clerk (Hono)',\n '@clerk/nuxt': 'Clerk (Nuxt)',\n '@clerk/react': 'Clerk (React)',\n '@clerk/vue': 'Clerk (Vue)',\n '@clerk/clerk-react': 'Clerk (React)',\n 'firebase-admin': 'Firebase Admin',\n 'firebase': 'Firebase',\n '@firebase/auth': 'Firebase Auth',\n 'passport': 'Passport.js',\n 'passport-local': 'Passport Local',\n 'passport-google-oauth20': 'Passport Google',\n 'passport-github2': 'Passport GitHub',\n 'next-auth': 'NextAuth',\n '@auth/core': 'Auth.js',\n '@supabase/supabase-js': 'Supabase',\n '@supabase/auth-helpers-nextjs': 'Supabase Auth (Next.js)',\n '@supabase/ssr': 'Supabase SSR',\n 'jsonwebtoken': 'JWT',\n 'jose': 'JOSE',\n '@okta/okta-auth-js': 'Okta',\n '@okta/okta-react': 'Okta React',\n 'oidc-client-ts': 'OIDC Client',\n '@casl/ability': 'CASL',\n 'casbin': 'Casbin',\n 'keycloak-js': 'Keycloak',\n '@keycloak/keycloak-admin-client': 'Keycloak Admin',\n 'lucia': 'Lucia Auth',\n '@lucia-auth/adapter-prisma': 'Lucia (Prisma)',\n 'arctic': 'Arctic (OAuth)',\n 'better-auth': 'Better Auth',\n 'grant': 'Grant (OAuth)',\n '@workos-inc/node': 'WorkOS',\n 'stytch': 'Stytch',\n 'frontegg': 'Frontegg',\n '@descope/node-sdk': 'Descope',\n 'kinde-auth-nextjs': 'Kinde',\n },\n email: {\n '@sendgrid/mail': 'SendGrid',\n '@sendgrid/client': 'SendGrid Client',\n 'nodemailer': 'Nodemailer',\n 'twilio': 'Twilio',\n '@aws-sdk/client-ses': 'AWS SES',\n '@aws-sdk/client-sesv2': 'AWS SES v2',\n 'postmark': 'Postmark',\n 'mailgun.js': 'Mailgun',\n 'resend': 'Resend',\n '@react-email/components': 'React Email',\n 'react-email': 'React Email',\n 'mjml': 'MJML',\n 'email-templates': 'Email Templates',\n '@mailchimp/mailchimp_marketing': 'Mailchimp',\n '@mailchimp/mailchimp_transactional': 'Mailchimp Transactional',\n 'plunk-node': 'Plunk',\n 'brevo': 'Brevo (Sendinblue)',\n 'sib-api-v3-sdk': 'Brevo v3',\n '@customer.io/node': 'Customer.io',\n 'sparkpost': 'SparkPost',\n 'mandrill-api': 'Mandrill',\n 'mail-listener5': 'Mail Listener',\n '@azure/communication-email': 'Azure Email',\n },\n cloud: {\n // AWS\n 'aws-sdk': 'AWS SDK v2',\n '@aws-sdk/client-s3': 'AWS S3',\n '@aws-sdk/client-lambda': 'AWS Lambda',\n '@aws-sdk/client-dynamodb': 'AWS DynamoDB',\n '@aws-sdk/client-ec2': 'AWS EC2',\n '@aws-sdk/client-ecs': 'AWS ECS',\n '@aws-sdk/client-ecr': 'AWS ECR',\n '@aws-sdk/client-cloudformation': 'AWS CloudFormation',\n '@aws-sdk/client-cloudwatch': 'AWS CloudWatch',\n '@aws-sdk/client-cloudfront': 'AWS CloudFront',\n '@aws-sdk/client-iam': 'AWS IAM',\n '@aws-sdk/client-secrets-manager': 'AWS Secrets Manager',\n '@aws-sdk/client-ssm': 'AWS SSM',\n '@aws-sdk/client-sts': 'AWS STS',\n '@aws-sdk/client-cognito-identity-provider': 'AWS Cognito',\n '@aws-sdk/client-route-53': 'AWS Route 53',\n '@aws-sdk/client-step-functions': 'AWS Step Functions',\n '@aws-sdk/client-eventbridge': 'AWS EventBridge',\n '@aws-sdk/client-kinesis': 'AWS Kinesis',\n '@aws-sdk/client-kms': 'AWS KMS',\n '@aws-sdk/client-athena': 'AWS Athena',\n '@aws-sdk/client-bedrock-runtime': 'AWS Bedrock',\n '@aws-sdk/lib-dynamodb': 'AWS DynamoDB Doc',\n // Azure\n '@azure/storage-blob': 'Azure Blob',\n '@azure/identity': 'Azure Identity',\n '@azure/cosmos': 'Azure Cosmos DB',\n '@azure/keyvault-secrets': 'Azure Key Vault',\n '@azure/service-bus': 'Azure Service Bus',\n '@azure/event-hubs': 'Azure Event Hubs',\n '@azure/functions': 'Azure Functions',\n '@azure/ai-form-recognizer': 'Azure Form Recognizer',\n '@azure/openai': 'Azure OpenAI',\n '@azure/app-configuration': 'Azure App Config',\n '@azure/monitor-opentelemetry': 'Azure Monitor OTel',\n '@azure/container-registry': 'Azure Container Registry',\n // GCP\n '@google-cloud/storage': 'GCP Storage',\n '@google-cloud/functions-framework': 'GCP Functions',\n '@google-cloud/bigquery': 'GCP BigQuery',\n '@google-cloud/firestore': 'GCP Firestore',\n '@google-cloud/pubsub': 'GCP Pub/Sub',\n '@google-cloud/secret-manager': 'GCP Secret Manager',\n '@google-cloud/tasks': 'GCP Cloud Tasks',\n '@google-cloud/run': 'GCP Cloud Run',\n '@google-cloud/logging': 'GCP Logging',\n '@google-cloud/translate': 'GCP Translate',\n '@google-cloud/vertexai': 'GCP Vertex AI',\n // Multi-cloud / PaaS\n '@vercel/sdk': 'Vercel',\n '@vercel/kv': 'Vercel KV',\n '@vercel/blob': 'Vercel Blob',\n '@vercel/postgres': 'Vercel Postgres',\n '@vercel/edge-config': 'Vercel Edge Config',\n '@netlify/functions': 'Netlify Functions',\n '@cloudflare/workers-types': 'Cloudflare Workers',\n 'wrangler': 'Wrangler',\n '@railway/cli': 'Railway',\n '@fly/apps': 'Fly.io',\n 'heroku-client': 'Heroku',\n '@pulumi/pulumi': 'Pulumi',\n '@pulumi/aws': 'Pulumi AWS',\n 'cdktf': 'CDK for Terraform',\n 'aws-cdk-lib': 'AWS CDK',\n 'sst': 'SST',\n },\n databases: {\n 'pg': 'PostgreSQL',\n 'postgres': 'Postgres.js',\n 'mysql2': 'MySQL',\n 'mysql': 'MySQL (legacy)',\n 'mongodb': 'MongoDB',\n 'ioredis': 'Redis (ioredis)',\n 'redis': 'Redis',\n 'better-sqlite3': 'SQLite',\n 'sql.js': 'sql.js',\n '@prisma/client': 'Prisma',\n 'drizzle-orm': 'Drizzle',\n 'typeorm': 'TypeORM',\n 'sequelize': 'Sequelize',\n 'knex': 'Knex',\n 'kysely': 'Kysely',\n 'objection': 'Objection.js',\n 'slonik': 'Slonik',\n 'massive': 'Massive.js',\n 'mongoose': 'Mongoose',\n '@mikro-orm/core': 'MikroORM',\n 'mssql': 'SQL Server',\n 'oracledb': 'Oracle',\n 'cassandra-driver': 'Cassandra',\n 'neo4j-driver': 'Neo4j',\n 'arangojs': 'ArangoDB',\n '@clickhouse/client': 'ClickHouse',\n 'influx': 'InfluxDB',\n '@libsql/client': 'libSQL (Turso)',\n '@neondatabase/serverless': 'Neon',\n '@planetscale/database': 'PlanetScale',\n '@electric-sql/pglite': 'PGlite',\n '@upstash/redis': 'Upstash Redis',\n '@upstash/kafka': 'Upstash Kafka',\n '@upstash/qstash': 'Upstash QStash',\n '@upstash/vector': 'Upstash Vector',\n 'dynamoose': 'Dynamoose',\n 'fauna': 'Fauna',\n 'faunadb': 'FaunaDB',\n '@supabase/postgrest-js': 'Supabase PostgREST',\n 'couchbase': 'Couchbase',\n 'couchdb-nano': 'CouchDB',\n 'duckdb': 'DuckDB',\n '@tidbcloud/serverless': 'TiDB Serverless',\n },\n messaging: {\n '@aws-sdk/client-sqs': 'AWS SQS',\n '@aws-sdk/client-sns': 'AWS SNS',\n 'amqplib': 'RabbitMQ',\n 'kafkajs': 'Kafka',\n 'bullmq': 'BullMQ',\n 'bull': 'Bull',\n '@google-cloud/pubsub': 'GCP Pub/Sub',\n 'bee-queue': 'Bee Queue',\n 'pg-boss': 'pg-boss',\n 'agenda': 'Agenda',\n '@azure/service-bus': 'Azure Service Bus',\n '@azure/event-hubs': 'Azure Event Hubs',\n 'nats': 'NATS',\n 'mqtt': 'MQTT',\n 'zeromq': 'ZeroMQ',\n '@temporalio/client': 'Temporal Client',\n '@temporalio/worker': 'Temporal Worker',\n 'inngest': 'Inngest',\n '@trigger.dev/sdk': 'Trigger.dev',\n '@defer/client': 'Defer',\n 'graphile-worker': 'Graphile Worker',\n '@quirrel/quirrel': 'Quirrel',\n 'rhea': 'AMQP 1.0 (rhea)',\n 'stompit': 'STOMP',\n '@eventstore/db-client': 'EventStoreDB',\n '@aws-sdk/client-eventbridge': 'AWS EventBridge',\n '@aws-sdk/client-kinesis': 'AWS Kinesis',\n '@aws-sdk/client-firehose': 'AWS Firehose',\n },\n observability: {\n '@sentry/node': 'Sentry (Node)',\n '@sentry/browser': 'Sentry (Browser)',\n '@sentry/react': 'Sentry (React)',\n '@sentry/nextjs': 'Sentry (Next.js)',\n '@sentry/vue': 'Sentry (Vue)',\n '@sentry/angular': 'Sentry (Angular)',\n '@opentelemetry/api': 'OpenTelemetry API',\n '@opentelemetry/sdk-node': 'OpenTelemetry SDK',\n '@opentelemetry/auto-instrumentations-node': 'OpenTelemetry Auto',\n 'applicationinsights': 'App Insights',\n 'dd-trace': 'Datadog',\n '@datadog/browser-rum': 'Datadog RUM',\n 'newrelic': 'New Relic',\n '@newrelic/browser-agent': 'New Relic Browser',\n 'pino': 'Pino',\n 'winston': 'Winston',\n 'bunyan': 'Bunyan',\n 'consola': 'Consola',\n 'loglevel': 'loglevel',\n 'roarr': 'Roarr',\n 'prom-client': 'Prometheus',\n 'elastic-apm-node': 'Elastic APM',\n '@logtail/node': 'Logtail',\n '@axiomhq/pino': 'Axiom (Pino)',\n '@axiomhq/winston': 'Axiom (Winston)',\n '@baselime/node-opentelemetry': 'Baselime',\n 'highlight.run': 'Highlight',\n '@google-cloud/trace-agent': 'GCP Trace',\n '@google-cloud/logging': 'GCP Logging',\n '@azure/monitor-opentelemetry': 'Azure Monitor',\n 'lightstep-tracer': 'Lightstep',\n 'honeycomb-beeline': 'Honeycomb',\n '@honeycombio/opentelemetry-node': 'Honeycomb OTel',\n 'posthog-node': 'PostHog',\n '@amplitude/node': 'Amplitude',\n 'mixpanel': 'Mixpanel',\n '@segment/analytics-node': 'Segment',\n 'analytics-node': 'Segment (legacy)',\n '@rudderstack/rudder-sdk-node': 'RudderStack',\n 'heap-api': 'Heap',\n '@fullstory/browser': 'FullStory',\n '@logrocket/react': 'LogRocket',\n 'logrocket': 'LogRocket',\n 'hotjar-js': 'Hotjar',\n '@clarity-ai/clarity': 'Microsoft Clarity',\n },\n crm: {\n 'xero-node': 'Xero',\n 'hubspot-api-client': 'HubSpot',\n '@hubspot/api-client': 'HubSpot',\n '@slack/web-api': 'Slack Web API',\n '@slack/bolt': 'Slack Bolt',\n '@slack/events-api': 'Slack Events',\n 'discord.js': 'Discord',\n 'intercom-client': 'Intercom',\n 'salesforce-sdk': 'Salesforce',\n 'jsforce': 'JSforce (Salesforce)',\n '@zendesk/sell-client': 'Zendesk',\n 'node-zendesk': 'Zendesk',\n 'freshdesk-api': 'Freshdesk',\n 'pipedrive': 'Pipedrive',\n 'airtable': 'Airtable',\n '@notionhq/client': 'Notion',\n '@linear/sdk': 'Linear',\n 'jira-client': 'Jira',\n 'jira.js': 'Jira.js',\n '@octokit/rest': 'GitHub (Octokit)',\n '@octokit/core': 'GitHub (Octokit Core)',\n 'gitlab': 'GitLab',\n '@gitbeaker/rest': 'GitLab (Gitbeaker)',\n 'clickup.js': 'ClickUp',\n 'asana': 'Asana',\n 'monday-sdk-js': 'Monday.com',\n 'telegram-bot-api': 'Telegram',\n 'telegraf': 'Telegraf (Telegram)',\n '@microsoft/microsoft-graph-client': 'Microsoft Graph',\n 'googleapis': 'Google APIs',\n '@google-cloud/aiplatform': 'Google AI Platform',\n },\n storage: {\n '@aws-sdk/client-s3': 'AWS S3',\n '@aws-sdk/s3-request-presigner': 'AWS S3 Presigner',\n '@azure/storage-blob': 'Azure Blob',\n '@azure/storage-queue': 'Azure Storage Queue',\n '@azure/storage-file-share': 'Azure File Share',\n '@google-cloud/storage': 'GCP Storage',\n 'minio': 'MinIO',\n '@supabase/storage-js': 'Supabase Storage',\n 'cloudinary': 'Cloudinary',\n 'uploadthing': 'UploadThing',\n '@uploadthing/react': 'UploadThing React',\n 'multer': 'Multer',\n 'multer-s3': 'Multer S3',\n 'formidable': 'Formidable',\n 'busboy': 'Busboy',\n '@vercel/blob': 'Vercel Blob',\n 'imagekit': 'ImageKit',\n 'sharp': 'Sharp (image)',\n 'jimp': 'Jimp (image)',\n 'fluent-ffmpeg': 'FFmpeg',\n '@google-cloud/vision': 'GCP Vision',\n '@aws-sdk/client-rekognition': 'AWS Rekognition',\n 'file-type': 'file-type',\n '@backblaze-b2/sdk': 'Backblaze B2',\n 'wasabi-sdk': 'Wasabi',\n },\n search: {\n '@elastic/elasticsearch': 'Elasticsearch',\n 'algoliasearch': 'Algolia',\n '@algolia/client-search': 'Algolia Client',\n 'react-instantsearch': 'Algolia InstantSearch',\n 'meilisearch': 'Meilisearch',\n 'typesense': 'Typesense',\n '@opensearch-project/opensearch': 'OpenSearch',\n 'solr-client': 'Solr',\n 'lunr': 'Lunr',\n 'flexsearch': 'FlexSearch',\n 'fuse.js': 'Fuse.js',\n 'minisearch': 'MiniSearch',\n 'orama': 'Orama',\n '@orama/orama': 'Orama',\n '@trieve/trieve-ts-sdk': 'Trieve',\n 'pagefind': 'Pagefind',\n // Vector / AI search\n '@pinecone-database/pinecone': 'Pinecone',\n 'chromadb': 'Chroma',\n '@qdrant/js-client-rest': 'Qdrant',\n 'weaviate-ts-client': 'Weaviate',\n '@zilliz/milvus2-sdk-node': 'Milvus',\n 'openai': 'OpenAI',\n '@anthropic-ai/sdk': 'Anthropic',\n '@langchain/core': 'LangChain',\n 'langchain': 'LangChain',\n '@google/generative-ai': 'Google Gemini',\n 'cohere-ai': 'Cohere',\n 'replicate': 'Replicate',\n '@huggingface/inference': 'Hugging Face',\n 'ai': 'Vercel AI SDK',\n '@ai-sdk/openai': 'AI SDK (OpenAI)',\n },\n};\n\nexport function scanServiceDependencies(projects: ProjectScan[]): ServiceDependenciesResult {\n // Build package → version map from all projects\n const packageVersions = new Map<string, string | null>();\n\n for (const project of projects) {\n for (const dep of project.dependencies) {\n if (!packageVersions.has(dep.package)) {\n packageVersions.set(dep.package, dep.resolvedVersion);\n }\n }\n }\n\n const result: ServiceDependenciesResult = {\n payment: [],\n auth: [],\n email: [],\n cloud: [],\n databases: [],\n messaging: [],\n observability: [],\n crm: [],\n storage: [],\n search: [],\n };\n\n for (const [category, packages] of Object.entries(SERVICE_CATEGORIES)) {\n const items: ServiceDependencyItem[] = [];\n for (const [pkg, displayName] of Object.entries(packages)) {\n if (packageVersions.has(pkg)) {\n items.push({\n name: displayName,\n package: pkg,\n version: packageVersions.get(pkg) ?? null,\n });\n }\n }\n items.sort((a, b) => a.name.localeCompare(b.name));\n (result as unknown as Record<string, ServiceDependencyItem[]>)[category] = items;\n }\n\n return result;\n}\n","import * as path from 'node:path';\nimport * as fs from 'node:fs/promises';\nimport { FileCache, isSkippedDirName } from '../../core-open/index.js';\nimport type {\n ProjectScan,\n DependencyRow,\n ArchitectureResult,\n ArchitectureLayer,\n LayerSummary,\n LayerClassification,\n LayerPackageRef,\n ProjectArchetype,\n InventoryItem,\n ServiceDependencyItem,\n ToolingInventoryResult,\n ServiceDependenciesResult,\n RiskLevel,\n} from '../../core-open/index.js';\n\n// ── Archetype fingerprinting ──\n\n/** Detect project archetype from dependency list */\nconst ARCHETYPE_SIGNALS: Array<{ packages: string[]; archetype: ProjectArchetype; weight: number }> = [\n // Meta-frameworks (highest priority — they imply routing patterns)\n { packages: ['next', '@next/core'], archetype: 'nextjs', weight: 10 },\n { packages: ['@remix-run/react', '@remix-run/node', '@remix-run/dev'], archetype: 'remix', weight: 10 },\n { packages: ['@sveltejs/kit'], archetype: 'sveltekit', weight: 10 },\n { packages: ['nuxt'], archetype: 'nuxt', weight: 10 },\n\n // Backend frameworks\n { packages: ['@nestjs/core', '@nestjs/common'], archetype: 'nestjs', weight: 9 },\n { packages: ['fastify'], archetype: 'fastify', weight: 8 },\n { packages: ['hono'], archetype: 'hono', weight: 8 },\n { packages: ['koa'], archetype: 'koa', weight: 8 },\n { packages: ['express'], archetype: 'express', weight: 7 },\n\n // Serverless\n { packages: ['serverless', 'aws-lambda', '@aws-sdk/client-lambda', 'middy', '@cloudflare/workers-types'], archetype: 'serverless', weight: 6 },\n\n // CLI\n { packages: ['commander', 'yargs', 'meow', 'cac', 'clipanion', 'oclif'], archetype: 'cli', weight: 5 },\n];\n\nfunction detectArchetype(projects: ProjectScan[]): { archetype: ProjectArchetype; confidence: number } {\n const allPackages = new Set<string>();\n for (const p of projects) {\n for (const d of p.dependencies) {\n allPackages.add(d.package);\n }\n }\n\n // Check for monorepo first (multiple projects = likely monorepo)\n if (projects.length > 2) {\n return { archetype: 'monorepo', confidence: 0.8 };\n }\n\n // Score each archetype\n let bestArchetype: ProjectArchetype = 'unknown';\n let bestScore = 0;\n\n for (const signal of ARCHETYPE_SIGNALS) {\n const matched = signal.packages.filter((p) => allPackages.has(p)).length;\n if (matched > 0) {\n const score = matched * signal.weight;\n if (score > bestScore) {\n bestScore = score;\n bestArchetype = signal.archetype;\n }\n }\n }\n\n // Check library archetype: has exports/main in package.json but no backend/frontend framework\n if (bestArchetype === 'unknown') {\n // If project has no recognisable framework, it's likely a library\n bestArchetype = 'library';\n bestScore = 3;\n }\n\n // Confidence is normalised — max possible score for a single match is ~20\n const confidence = Math.min(bestScore / 15, 1);\n return { archetype: bestArchetype, confidence: Math.round(confidence * 100) / 100 };\n}\n\n// ── File classification rules ──\n\n/** Path-based classification rules, ordered by specificity */\ninterface PathRule {\n /** Regex to match against the relative file path */\n pattern: RegExp;\n /** Assigned layer */\n layer: ArchitectureLayer;\n /** Base confidence for this rule */\n confidence: number;\n /** Human-readable signal description */\n signal: string;\n /** Only apply for these archetypes (empty = all) */\n archetypes?: ProjectArchetype[];\n}\n\nconst PATH_RULES: PathRule[] = [\n // ── Testing (high precision) ──\n { pattern: /\\/__tests__\\//, layer: 'testing', confidence: 0.95, signal: '__tests__ directory' },\n { pattern: /\\.test\\.[jt]sx?$/, layer: 'testing', confidence: 0.95, signal: '.test.* file' },\n { pattern: /\\.spec\\.[jt]sx?$/, layer: 'testing', confidence: 0.95, signal: '.spec.* file' },\n { pattern: /\\/test\\//, layer: 'testing', confidence: 0.85, signal: 'test/ directory' },\n { pattern: /\\/tests\\//, layer: 'testing', confidence: 0.85, signal: 'tests/ directory' },\n { pattern: /\\/__mocks__\\//, layer: 'testing', confidence: 0.9, signal: '__mocks__ directory' },\n { pattern: /\\/fixtures\\//, layer: 'testing', confidence: 0.8, signal: 'fixtures/ directory' },\n\n // ── Config/Infrastructure (high precision) ──\n { pattern: /\\/config\\.[jt]sx?$/, layer: 'config', confidence: 0.85, signal: 'config.* file' },\n { pattern: /\\/config\\//, layer: 'config', confidence: 0.8, signal: 'config/ directory' },\n { pattern: /\\.config\\.[jt]sx?$/, layer: 'config', confidence: 0.9, signal: '.config.* file' },\n { pattern: /\\/env\\.[jt]sx?$/, layer: 'config', confidence: 0.85, signal: 'env.* file' },\n { pattern: /\\/bootstrap\\.[jt]sx?$/, layer: 'config', confidence: 0.85, signal: 'bootstrap file' },\n { pattern: /\\/setup\\.[jt]sx?$/, layer: 'config', confidence: 0.8, signal: 'setup file' },\n\n // ── Next.js (archetype-specific) ──\n { pattern: /(^|\\/)app\\/.*\\/route\\.[jt]sx?$/, layer: 'routing', confidence: 0.95, signal: 'Next.js App Router route', archetypes: ['nextjs'] },\n { pattern: /(^|\\/)pages\\/api\\//, layer: 'routing', confidence: 0.95, signal: 'Next.js Pages API route', archetypes: ['nextjs'] },\n { pattern: /(^|\\/)app\\/.*page\\.[jt]sx?$/, layer: 'presentation', confidence: 0.9, signal: 'Next.js page component', archetypes: ['nextjs'] },\n { pattern: /(^|\\/)app\\/.*layout\\.[jt]sx?$/, layer: 'presentation', confidence: 0.9, signal: 'Next.js layout component', archetypes: ['nextjs'] },\n { pattern: /(^|\\/)app\\/.*loading\\.[jt]sx?$/, layer: 'presentation', confidence: 0.85, signal: 'Next.js loading component', archetypes: ['nextjs'] },\n { pattern: /(^|\\/)app\\/.*error\\.[jt]sx?$/, layer: 'presentation', confidence: 0.85, signal: 'Next.js error component', archetypes: ['nextjs'] },\n { pattern: /(^|\\/)middleware\\.[jt]sx?$/, layer: 'middleware', confidence: 0.9, signal: 'Next.js middleware', archetypes: ['nextjs'] },\n\n // ── Remix (archetype-specific) ──\n { pattern: /\\/app\\/routes\\//, layer: 'routing', confidence: 0.95, signal: 'Remix route file', archetypes: ['remix'] },\n { pattern: /\\/app\\/root\\.[jt]sx?$/, layer: 'presentation', confidence: 0.9, signal: 'Remix root', archetypes: ['remix'] },\n\n // ── SvelteKit (archetype-specific) ──\n { pattern: /\\/src\\/routes\\/.*\\+server\\.[jt]s$/, layer: 'routing', confidence: 0.95, signal: 'SvelteKit API route', archetypes: ['sveltekit'] },\n { pattern: /\\/src\\/routes\\/.*\\+page\\.svelte$/, layer: 'presentation', confidence: 0.9, signal: 'SvelteKit page', archetypes: ['sveltekit'] },\n { pattern: /\\/src\\/routes\\/.*\\+layout\\.svelte$/, layer: 'presentation', confidence: 0.9, signal: 'SvelteKit layout', archetypes: ['sveltekit'] },\n { pattern: /\\/src\\/hooks\\.server\\.[jt]s$/, layer: 'middleware', confidence: 0.9, signal: 'SvelteKit server hooks', archetypes: ['sveltekit'] },\n\n // ── Nuxt (archetype-specific) ──\n { pattern: /\\/server\\/api\\//, layer: 'routing', confidence: 0.95, signal: 'Nuxt server API', archetypes: ['nuxt'] },\n { pattern: /\\/server\\/routes\\//, layer: 'routing', confidence: 0.95, signal: 'Nuxt server route', archetypes: ['nuxt'] },\n { pattern: /\\/server\\/middleware\\//, layer: 'middleware', confidence: 0.95, signal: 'Nuxt server middleware', archetypes: ['nuxt'] },\n { pattern: /\\/pages\\//, layer: 'presentation', confidence: 0.85, signal: 'Nuxt pages directory', archetypes: ['nuxt'] },\n\n // ── NestJS (archetype-specific) ──\n { pattern: /\\.controller\\.[jt]sx?$/, layer: 'routing', confidence: 0.95, signal: 'NestJS controller', archetypes: ['nestjs'] },\n { pattern: /\\.service\\.[jt]sx?$/, layer: 'services', confidence: 0.95, signal: 'NestJS service', archetypes: ['nestjs'] },\n { pattern: /\\.module\\.[jt]sx?$/, layer: 'config', confidence: 0.9, signal: 'NestJS module', archetypes: ['nestjs'] },\n { pattern: /\\.guard\\.[jt]sx?$/, layer: 'middleware', confidence: 0.9, signal: 'NestJS guard', archetypes: ['nestjs'] },\n { pattern: /\\.interceptor\\.[jt]sx?$/, layer: 'middleware', confidence: 0.9, signal: 'NestJS interceptor', archetypes: ['nestjs'] },\n { pattern: /\\.pipe\\.[jt]sx?$/, layer: 'middleware', confidence: 0.85, signal: 'NestJS pipe', archetypes: ['nestjs'] },\n { pattern: /\\.middleware\\.[jt]sx?$/, layer: 'middleware', confidence: 0.9, signal: 'NestJS middleware', archetypes: ['nestjs'] },\n { pattern: /\\.entity\\.[jt]sx?$/, layer: 'domain', confidence: 0.9, signal: 'NestJS entity', archetypes: ['nestjs'] },\n { pattern: /\\.dto\\.[jt]sx?$/, layer: 'domain', confidence: 0.85, signal: 'NestJS DTO', archetypes: ['nestjs'] },\n { pattern: /\\.repository\\.[jt]sx?$/, layer: 'data-access', confidence: 0.9, signal: 'NestJS repository', archetypes: ['nestjs'] },\n\n // ── Generic routing patterns ──\n { pattern: /\\/routes\\//, layer: 'routing', confidence: 0.8, signal: 'routes/ directory' },\n { pattern: /\\/router\\//, layer: 'routing', confidence: 0.8, signal: 'router/ directory' },\n { pattern: /\\/controllers\\//, layer: 'routing', confidence: 0.8, signal: 'controllers/ directory' },\n { pattern: /\\/handlers\\//, layer: 'routing', confidence: 0.75, signal: 'handlers/ directory' },\n { pattern: /\\/api\\//, layer: 'routing', confidence: 0.7, signal: 'api/ directory' },\n { pattern: /\\/endpoints\\//, layer: 'routing', confidence: 0.8, signal: 'endpoints/ directory' },\n\n // ── Middleware ──\n { pattern: /\\/middleware\\//, layer: 'middleware', confidence: 0.85, signal: 'middleware/ directory' },\n { pattern: /\\/middlewares\\//, layer: 'middleware', confidence: 0.85, signal: 'middlewares/ directory' },\n { pattern: /\\/hooks\\//, layer: 'middleware', confidence: 0.6, signal: 'hooks/ directory' },\n { pattern: /\\/plugins\\//, layer: 'middleware', confidence: 0.6, signal: 'plugins/ directory' },\n { pattern: /\\/guards\\//, layer: 'middleware', confidence: 0.85, signal: 'guards/ directory' },\n { pattern: /\\/interceptors\\//, layer: 'middleware', confidence: 0.85, signal: 'interceptors/ directory' },\n\n // ── Services / application layer ──\n { pattern: /\\/services\\//, layer: 'services', confidence: 0.85, signal: 'services/ directory' },\n { pattern: /\\/service\\//, layer: 'services', confidence: 0.8, signal: 'service/ directory' },\n { pattern: /\\/usecases\\//, layer: 'services', confidence: 0.85, signal: 'usecases/ directory' },\n { pattern: /\\/use-cases\\//, layer: 'services', confidence: 0.85, signal: 'use-cases/ directory' },\n { pattern: /\\/application\\//, layer: 'services', confidence: 0.7, signal: 'application/ directory' },\n { pattern: /\\/actions\\//, layer: 'services', confidence: 0.65, signal: 'actions/ directory' },\n\n // ── Domain / models ──\n { pattern: /\\/domain\\//, layer: 'domain', confidence: 0.85, signal: 'domain/ directory' },\n { pattern: /\\/models\\//, layer: 'domain', confidence: 0.8, signal: 'models/ directory' },\n { pattern: /\\/entities\\//, layer: 'domain', confidence: 0.85, signal: 'entities/ directory' },\n { pattern: /\\/types\\//, layer: 'domain', confidence: 0.7, signal: 'types/ directory' },\n { pattern: /\\/schemas\\//, layer: 'domain', confidence: 0.7, signal: 'schemas/ directory' },\n { pattern: /\\/validators\\//, layer: 'domain', confidence: 0.7, signal: 'validators/ directory' },\n\n // ── Data access ──\n { pattern: /\\/repositories\\//, layer: 'data-access', confidence: 0.9, signal: 'repositories/ directory' },\n { pattern: /\\/repository\\//, layer: 'data-access', confidence: 0.85, signal: 'repository/ directory' },\n { pattern: /\\/dao\\//, layer: 'data-access', confidence: 0.9, signal: 'dao/ directory' },\n { pattern: /\\/db\\//, layer: 'data-access', confidence: 0.8, signal: 'db/ directory' },\n { pattern: /\\/database\\//, layer: 'data-access', confidence: 0.8, signal: 'database/ directory' },\n { pattern: /\\/persistence\\//, layer: 'data-access', confidence: 0.85, signal: 'persistence/ directory' },\n { pattern: /\\/migrations\\//, layer: 'data-access', confidence: 0.9, signal: 'migrations/ directory' },\n { pattern: /\\/seeds\\//, layer: 'data-access', confidence: 0.85, signal: 'seeds/ directory' },\n { pattern: /\\/prisma\\//, layer: 'data-access', confidence: 0.85, signal: 'prisma/ directory' },\n { pattern: /\\/drizzle\\//, layer: 'data-access', confidence: 0.85, signal: 'drizzle/ directory' },\n\n // ── Infrastructure ──\n { pattern: /\\/infra\\//, layer: 'infrastructure', confidence: 0.85, signal: 'infra/ directory' },\n { pattern: /\\/infrastructure\\//, layer: 'infrastructure', confidence: 0.85, signal: 'infrastructure/ directory' },\n { pattern: /\\/adapters\\//, layer: 'infrastructure', confidence: 0.8, signal: 'adapters/ directory' },\n { pattern: /\\/clients\\//, layer: 'infrastructure', confidence: 0.75, signal: 'clients/ directory' },\n { pattern: /\\/integrations\\//, layer: 'infrastructure', confidence: 0.8, signal: 'integrations/ directory' },\n { pattern: /\\/external\\//, layer: 'infrastructure', confidence: 0.75, signal: 'external/ directory' },\n { pattern: /\\/queue\\//, layer: 'infrastructure', confidence: 0.8, signal: 'queue/ directory' },\n { pattern: /\\/jobs\\//, layer: 'infrastructure', confidence: 0.75, signal: 'jobs/ directory' },\n { pattern: /\\/workers\\//, layer: 'infrastructure', confidence: 0.75, signal: 'workers/ directory' },\n { pattern: /\\/cron\\//, layer: 'infrastructure', confidence: 0.8, signal: 'cron/ directory' },\n\n // ── Presentation (UI layer) ──\n { pattern: /\\/components\\//, layer: 'presentation', confidence: 0.85, signal: 'components/ directory' },\n { pattern: /\\/views\\//, layer: 'presentation', confidence: 0.85, signal: 'views/ directory' },\n { pattern: /\\/pages\\//, layer: 'presentation', confidence: 0.8, signal: 'pages/ directory' },\n { pattern: /\\/layouts\\//, layer: 'presentation', confidence: 0.85, signal: 'layouts/ directory' },\n { pattern: /\\/templates\\//, layer: 'presentation', confidence: 0.8, signal: 'templates/ directory' },\n { pattern: /\\/widgets\\//, layer: 'presentation', confidence: 0.8, signal: 'widgets/ directory' },\n { pattern: /\\/ui\\//, layer: 'presentation', confidence: 0.75, signal: 'ui/ directory' },\n\n // ── Shared / utils ──\n { pattern: /\\/utils\\//, layer: 'shared', confidence: 0.7, signal: 'utils/ directory' },\n { pattern: /\\/helpers\\//, layer: 'shared', confidence: 0.7, signal: 'helpers/ directory' },\n { pattern: /\\/lib\\//, layer: 'shared', confidence: 0.6, signal: 'lib/ directory' },\n { pattern: /\\/common\\//, layer: 'shared', confidence: 0.65, signal: 'common/ directory' },\n { pattern: /\\/shared\\//, layer: 'shared', confidence: 0.75, signal: 'shared/ directory' },\n { pattern: /\\/constants\\//, layer: 'shared', confidence: 0.7, signal: 'constants/ directory' },\n\n // ── CLI-specific (command layer → routing) ──\n { pattern: /\\/commands\\//, layer: 'routing', confidence: 0.8, signal: 'commands/ directory', archetypes: ['cli'] },\n { pattern: /\\/formatters\\//, layer: 'presentation', confidence: 0.8, signal: 'formatters/ directory', archetypes: ['cli'] },\n { pattern: /\\/scanners\\//, layer: 'services', confidence: 0.8, signal: 'scanners/ directory', archetypes: ['cli'] },\n { pattern: /\\/scoring\\//, layer: 'domain', confidence: 0.8, signal: 'scoring/ directory', archetypes: ['cli'] },\n\n // ── Serverless-specific ──\n { pattern: /\\/functions\\//, layer: 'routing', confidence: 0.8, signal: 'functions/ directory', archetypes: ['serverless'] },\n { pattern: /\\/lambdas\\//, layer: 'routing', confidence: 0.85, signal: 'lambdas/ directory', archetypes: ['serverless'] },\n { pattern: /\\/layers\\//, layer: 'shared', confidence: 0.7, signal: 'Lambda layers/ directory', archetypes: ['serverless'] },\n\n // ── .NET conventions ──\n // Directory rules above already cover Controllers/, Services/, Models/,\n // Views/, Migrations/, Middleware/ … because matching is case-insensitive.\n { pattern: /\\.tests?\\//, layer: 'testing', confidence: 0.9, signal: '*.Tests project directory' },\n // Layer-named project directories (`Company.Product.Domain/`,\n // `Company.Product.Database/`) — the dotted segment carries the layer.\n { pattern: /\\.domain\\//, layer: 'domain', confidence: 0.85, signal: '*.Domain project' },\n { pattern: /\\.(database|data|persistence)\\//, layer: 'data-access', confidence: 0.85, signal: '*.Database project' },\n { pattern: /\\.(infrastructure|infra)\\//, layer: 'infrastructure', confidence: 0.85, signal: '*.Infrastructure project' },\n { pattern: /\\.worker\\//, layer: 'infrastructure', confidence: 0.8, signal: '*.Worker project' },\n { pattern: /\\.(webapi|api)\\//, layer: 'routing', confidence: 0.8, signal: '*.WebApi project' },\n { pattern: /\\.(webapp|web|ui)\\//, layer: 'presentation', confidence: 0.75, signal: '*.WebApp project' },\n { pattern: /\\.(services?|application)\\//, layer: 'services', confidence: 0.8, signal: '*.Services project' },\n { pattern: /\\/wwwroot\\//, layer: 'presentation', confidence: 0.85, signal: 'wwwroot/ static assets' },\n { pattern: /\\/properties\\//, layer: 'config', confidence: 0.85, signal: 'Properties/ directory' },\n { pattern: /\\/program\\.cs$/, layer: 'config', confidence: 0.9, signal: 'Program.cs entry point' },\n { pattern: /\\/startup\\.cs$/, layer: 'config', confidence: 0.9, signal: 'Startup.cs' },\n { pattern: /\\.(cshtml|razor)$/, layer: 'presentation', confidence: 0.9, signal: 'Razor view' },\n\n // ── JVM (Maven/Gradle standard layout + Spring package conventions) ──\n { pattern: /\\/src\\/(test|androidtest|integrationtest)\\//, layer: 'testing', confidence: 0.95, signal: 'src/test source set' },\n { pattern: /\\/controller\\//, layer: 'routing', confidence: 0.8, signal: 'controller/ package' },\n { pattern: /\\/resource\\//, layer: 'routing', confidence: 0.7, signal: 'resource/ package (JAX-RS)' },\n { pattern: /\\/model\\//, layer: 'domain', confidence: 0.75, signal: 'model/ package' },\n { pattern: /\\/entity\\//, layer: 'domain', confidence: 0.85, signal: 'entity/ package' },\n { pattern: /\\/dto\\//, layer: 'domain', confidence: 0.85, signal: 'dto/ package' },\n { pattern: /\\/mappers?\\//, layer: 'data-access', confidence: 0.75, signal: 'mapper/ package' },\n\n // ── Python (Django/Flask/FastAPI module conventions) ──\n { pattern: /\\/(test_[^/]*|conftest)\\.py$/, layer: 'testing', confidence: 0.95, signal: 'pytest test module' },\n { pattern: /\\/urls\\.py$/, layer: 'routing', confidence: 0.95, signal: 'Django urls.py' },\n { pattern: /\\/views\\.py$/, layer: 'routing', confidence: 0.9, signal: 'Django views.py (request handlers)' },\n { pattern: /\\/models\\.py$/, layer: 'domain', confidence: 0.9, signal: 'Django models.py' },\n { pattern: /\\/serializers\\.py$/, layer: 'domain', confidence: 0.85, signal: 'DRF serializers.py' },\n { pattern: /\\/forms\\.py$/, layer: 'presentation', confidence: 0.8, signal: 'Django forms.py' },\n { pattern: /\\/(settings|admin)\\.py$/, layer: 'config', confidence: 0.85, signal: 'Django settings/admin module' },\n { pattern: /\\/middleware\\.py$/, layer: 'middleware', confidence: 0.9, signal: 'middleware.py' },\n { pattern: /\\/(tasks|celery)\\.py$/, layer: 'services', confidence: 0.8, signal: 'task queue module' },\n\n // ── Go / Rust / Dart / Ruby / Elixir test conventions ──\n { pattern: /_(test|spec)\\.[a-z]+$/, layer: 'testing', confidence: 0.95, signal: '_test/_spec file' },\n { pattern: /\\/spec\\//, layer: 'testing', confidence: 0.85, signal: 'spec/ directory (RSpec)' },\n { pattern: /\\/cmd\\//, layer: 'routing', confidence: 0.7, signal: 'cmd/ entry points (Go)' },\n\n // ── Ruby on Rails ──\n { pattern: /\\/migrate\\//, layer: 'data-access', confidence: 0.9, signal: 'db/migrate/ directory' },\n { pattern: /\\/mailers\\//, layer: 'infrastructure', confidence: 0.8, signal: 'mailers/ directory' },\n { pattern: /\\.erb$/, layer: 'presentation', confidence: 0.85, signal: 'ERB view template' },\n\n // ── PHP (Laravel/Symfony) ──\n { pattern: /\\.blade\\.php$/, layer: 'presentation', confidence: 0.9, signal: 'Blade view template' },\n\n // ── Elixir (Phoenix) ──\n { pattern: /\\/channels\\//, layer: 'routing', confidence: 0.7, signal: 'channels/ directory' },\n { pattern: /_controller\\.exs?$/, layer: 'routing', confidence: 0.9, signal: 'Phoenix controller' },\n { pattern: /_(view|live|html|component)\\.exs?$/, layer: 'presentation', confidence: 0.85, signal: 'Phoenix view module' },\n { pattern: /\\/repo\\.exs?$/, layer: 'data-access', confidence: 0.9, signal: 'Ecto repo' },\n { pattern: /\\.(eex|heex)$/, layer: 'presentation', confidence: 0.85, signal: 'EEx/HEEx template' },\n\n // ── Flutter / mobile ──\n { pattern: /\\/screens\\//, layer: 'presentation', confidence: 0.85, signal: 'screens/ directory' },\n];\n\n// ── File name suffix classification (lower-priority fallback) ──\n\nconst SUFFIX_RULES: Array<{ suffix: string; layer: ArchitectureLayer; confidence: number; signal: string }> = [\n { suffix: '.controller', layer: 'routing', confidence: 0.85, signal: 'controller suffix' },\n { suffix: '.route', layer: 'routing', confidence: 0.85, signal: 'route suffix' },\n { suffix: '.router', layer: 'routing', confidence: 0.85, signal: 'router suffix' },\n { suffix: '.handler', layer: 'routing', confidence: 0.8, signal: 'handler suffix' },\n { suffix: '.middleware', layer: 'middleware', confidence: 0.85, signal: 'middleware suffix' },\n { suffix: '.guard', layer: 'middleware', confidence: 0.85, signal: 'guard suffix' },\n { suffix: '.interceptor', layer: 'middleware', confidence: 0.85, signal: 'interceptor suffix' },\n { suffix: '.service', layer: 'services', confidence: 0.85, signal: 'service suffix' },\n { suffix: '.usecase', layer: 'services', confidence: 0.85, signal: 'usecase suffix' },\n { suffix: '.model', layer: 'domain', confidence: 0.8, signal: 'model suffix' },\n { suffix: '.entity', layer: 'domain', confidence: 0.85, signal: 'entity suffix' },\n { suffix: '.dto', layer: 'domain', confidence: 0.8, signal: 'DTO suffix' },\n { suffix: '.schema', layer: 'domain', confidence: 0.75, signal: 'schema suffix' },\n { suffix: '.validator', layer: 'domain', confidence: 0.75, signal: 'validator suffix' },\n { suffix: '.repository', layer: 'data-access', confidence: 0.9, signal: 'repository suffix' },\n { suffix: '.repo', layer: 'data-access', confidence: 0.85, signal: 'repo suffix' },\n { suffix: '.dao', layer: 'data-access', confidence: 0.9, signal: 'dao suffix' },\n { suffix: '.migration', layer: 'data-access', confidence: 0.85, signal: 'migration suffix' },\n { suffix: '.adapter', layer: 'infrastructure', confidence: 0.8, signal: 'adapter suffix' },\n { suffix: '.client', layer: 'infrastructure', confidence: 0.75, signal: 'client suffix' },\n { suffix: '.provider', layer: 'infrastructure', confidence: 0.7, signal: 'provider suffix' },\n { suffix: '.config', layer: 'config', confidence: 0.8, signal: 'config suffix' },\n { suffix: '.component', layer: 'presentation', confidence: 0.8, signal: 'component suffix' },\n { suffix: '.page', layer: 'presentation', confidence: 0.85, signal: 'page suffix' },\n { suffix: '.view', layer: 'presentation', confidence: 0.8, signal: 'view suffix' },\n { suffix: '.layout', layer: 'presentation', confidence: 0.85, signal: 'layout suffix' },\n { suffix: '.util', layer: 'shared', confidence: 0.7, signal: 'util suffix' },\n { suffix: '.helper', layer: 'shared', confidence: 0.7, signal: 'helper suffix' },\n { suffix: '.constant', layer: 'shared', confidence: 0.7, signal: 'constant suffix' },\n];\n\n/**\n * PascalCase class-name suffixes — the .NET/Java convention (`UsersController.cs`,\n * `OrderRepository.cs`) where the dot-suffix rules above are the JS/TS one.\n * Matched case-sensitively so `usercontroller.ts` style names don't false-hit.\n */\nconst PASCAL_SUFFIX_RULES: Array<{ suffix: string; layer: ArchitectureLayer; confidence: number; signal: string }> = [\n { suffix: 'Controller', layer: 'routing', confidence: 0.9, signal: 'Controller class' },\n { suffix: 'Endpoint', layer: 'routing', confidence: 0.85, signal: 'Endpoint class' },\n { suffix: 'Middleware', layer: 'middleware', confidence: 0.9, signal: 'Middleware class' },\n { suffix: 'Filter', layer: 'middleware', confidence: 0.75, signal: 'Filter class' },\n { suffix: 'Service', layer: 'services', confidence: 0.85, signal: 'Service class' },\n { suffix: 'Handler', layer: 'services', confidence: 0.75, signal: 'Handler class' },\n { suffix: 'UseCase', layer: 'services', confidence: 0.85, signal: 'UseCase class' },\n { suffix: 'Entity', layer: 'domain', confidence: 0.85, signal: 'Entity class' },\n { suffix: 'Dto', layer: 'domain', confidence: 0.8, signal: 'DTO class' },\n { suffix: 'Validator', layer: 'domain', confidence: 0.75, signal: 'Validator class' },\n { suffix: 'ViewModel', layer: 'presentation', confidence: 0.85, signal: 'ViewModel class' },\n { suffix: 'Repository', layer: 'data-access', confidence: 0.9, signal: 'Repository class' },\n { suffix: 'DbContext', layer: 'data-access', confidence: 0.95, signal: 'EF Core DbContext' },\n { suffix: 'Migration', layer: 'data-access', confidence: 0.85, signal: 'Migration class' },\n { suffix: 'Client', layer: 'infrastructure', confidence: 0.7, signal: 'Client class' },\n { suffix: 'Tests', layer: 'testing', confidence: 0.95, signal: 'Tests class' },\n { suffix: 'Test', layer: 'testing', confidence: 0.9, signal: 'Test class' },\n // JVM (Spring/JEE/Android)\n { suffix: 'ServiceImpl', layer: 'services', confidence: 0.9, signal: 'ServiceImpl class' },\n { suffix: 'Dao', layer: 'data-access', confidence: 0.9, signal: 'DAO class' },\n { suffix: 'Mapper', layer: 'data-access', confidence: 0.75, signal: 'Mapper class' },\n { suffix: 'Resource', layer: 'routing', confidence: 0.75, signal: 'JAX-RS resource class' },\n { suffix: 'Configuration', layer: 'config', confidence: 0.85, signal: 'Configuration class' },\n { suffix: 'Config', layer: 'config', confidence: 0.8, signal: 'Config class' },\n { suffix: 'Interceptor', layer: 'middleware', confidence: 0.85, signal: 'Interceptor class' },\n { suffix: 'Activity', layer: 'presentation', confidence: 0.85, signal: 'Android Activity' },\n { suffix: 'Fragment', layer: 'presentation', confidence: 0.85, signal: 'Android Fragment' },\n // Swift / iOS — higher confidence than the generic Controller→routing rule\n // so FooViewController lands in presentation, not routing.\n { suffix: 'ViewController', layer: 'presentation', confidence: 0.95, signal: 'UIKit ViewController' },\n // Flutter\n { suffix: 'Screen', layer: 'presentation', confidence: 0.85, signal: 'Screen widget' },\n { suffix: 'Widget', layer: 'presentation', confidence: 0.75, signal: 'Widget class' },\n];\n\n// ── Dependency → layer mapping (which packages indicate which layers) ──\n\nconst PACKAGE_LAYER_MAP: Record<string, ArchitectureLayer> = {\n // Routing/controllers\n 'express': 'routing',\n 'fastify': 'routing',\n '@nestjs/core': 'routing',\n 'hono': 'routing',\n 'koa': 'routing',\n 'koa-router': 'routing',\n '@hapi/hapi': 'routing',\n 'h3': 'routing',\n\n // Middleware\n 'cors': 'middleware',\n 'helmet': 'middleware',\n 'passport': 'middleware',\n 'express-rate-limit': 'middleware',\n 'cookie-parser': 'middleware',\n 'body-parser': 'middleware',\n 'multer': 'middleware',\n 'morgan': 'middleware',\n 'compression': 'middleware',\n 'express-session': 'middleware',\n\n // Services / application\n 'bullmq': 'services',\n 'bull': 'services',\n 'agenda': 'services',\n 'pg-boss': 'services',\n 'inngest': 'services',\n\n // Domain / validation\n 'zod': 'domain',\n 'joi': 'domain',\n 'yup': 'domain',\n 'class-validator': 'domain',\n 'class-transformer': 'domain',\n 'superstruct': 'domain',\n 'valibot': 'domain',\n\n // Data access / ORM\n 'prisma': 'data-access',\n '@prisma/client': 'data-access',\n 'drizzle-orm': 'data-access',\n 'typeorm': 'data-access',\n 'sequelize': 'data-access',\n 'knex': 'data-access',\n 'pg': 'data-access',\n 'mysql2': 'data-access',\n 'mongodb': 'data-access',\n 'mongoose': 'data-access',\n 'ioredis': 'data-access',\n 'redis': 'data-access',\n 'better-sqlite3': 'data-access',\n 'kysely': 'data-access',\n '@mikro-orm/core': 'data-access',\n\n // Infrastructure\n '@aws-sdk/client-s3': 'infrastructure',\n '@aws-sdk/client-sqs': 'infrastructure',\n '@aws-sdk/client-sns': 'infrastructure',\n '@aws-sdk/client-ses': 'infrastructure',\n '@aws-sdk/client-lambda': 'infrastructure',\n '@google-cloud/storage': 'infrastructure',\n '@azure/storage-blob': 'infrastructure',\n 'nodemailer': 'infrastructure',\n '@sendgrid/mail': 'infrastructure',\n 'stripe': 'infrastructure',\n 'kafkajs': 'infrastructure',\n 'amqplib': 'infrastructure',\n\n // Presentation\n 'react': 'presentation',\n 'react-dom': 'presentation',\n 'vue': 'presentation',\n '@angular/core': 'presentation',\n 'svelte': 'presentation',\n\n // Shared\n 'lodash': 'shared',\n 'dayjs': 'shared',\n 'date-fns': 'shared',\n 'uuid': 'shared',\n 'nanoid': 'shared',\n\n // Testing\n 'vitest': 'testing',\n 'jest': 'testing',\n 'mocha': 'testing',\n '@playwright/test': 'testing',\n 'cypress': 'testing',\n 'supertest': 'testing',\n\n // Observability → infrastructure\n '@sentry/node': 'infrastructure',\n '@opentelemetry/api': 'infrastructure',\n 'pino': 'infrastructure',\n 'winston': 'infrastructure',\n 'dd-trace': 'infrastructure',\n\n // ── .NET (NuGet package ids) ──\n 'Microsoft.EntityFrameworkCore': 'data-access',\n 'Dapper': 'data-access',\n 'Npgsql': 'data-access',\n 'Microsoft.Data.SqlClient': 'data-access',\n 'System.Data.SqlClient': 'data-access',\n 'MongoDB.Driver': 'data-access',\n 'StackExchange.Redis': 'data-access',\n 'MediatR': 'services',\n 'Hangfire': 'services',\n 'Quartz': 'services',\n 'FluentValidation': 'domain',\n 'AutoMapper': 'domain',\n 'Microsoft.AspNetCore.Authentication.JwtBearer': 'middleware',\n 'Swashbuckle.AspNetCore': 'routing',\n 'Serilog': 'infrastructure',\n 'NLog': 'infrastructure',\n 'Polly': 'infrastructure',\n 'RabbitMQ.Client': 'infrastructure',\n 'MassTransit': 'infrastructure',\n 'Confluent.Kafka': 'infrastructure',\n 'Azure.Storage.Blobs': 'infrastructure',\n 'AWSSDK.S3': 'infrastructure',\n 'Newtonsoft.Json': 'shared',\n 'xunit': 'testing',\n 'NUnit': 'testing',\n 'MSTest.TestFramework': 'testing',\n 'Moq': 'testing',\n 'NSubstitute': 'testing',\n 'FluentAssertions': 'testing',\n\n // ── Python (PyPI) ──\n 'django': 'routing',\n 'flask': 'routing',\n 'fastapi': 'routing',\n 'starlette': 'routing',\n 'sqlalchemy': 'data-access',\n 'alembic': 'data-access',\n 'psycopg2': 'data-access',\n 'psycopg2-binary': 'data-access',\n 'pymongo': 'data-access',\n 'pydantic': 'domain',\n 'marshmallow': 'domain',\n 'celery': 'services',\n 'pytest': 'testing',\n 'boto3': 'infrastructure',\n 'httpx': 'infrastructure',\n 'requests': 'infrastructure',\n 'gunicorn': 'infrastructure',\n 'uvicorn': 'infrastructure',\n 'structlog': 'infrastructure',\n\n // ── JVM (Maven groupId:artifactId, as the Java scanner keys them) ──\n 'org.springframework.boot:spring-boot-starter-web': 'routing',\n 'org.springframework:spring-webmvc': 'routing',\n 'io.ktor:ktor-server-core': 'routing',\n 'io.quarkus:quarkus-resteasy': 'routing',\n 'org.springframework.boot:spring-boot-starter-data-jpa': 'data-access',\n 'org.hibernate:hibernate-core': 'data-access',\n 'org.hibernate.orm:hibernate-core': 'data-access',\n 'org.mybatis:mybatis': 'data-access',\n 'com.zaxxer:HikariCP': 'data-access',\n 'org.jetbrains.exposed:exposed-core': 'data-access',\n 'org.springframework.boot:spring-boot-starter-security': 'middleware',\n 'jakarta.validation:jakarta.validation-api': 'domain',\n 'com.fasterxml.jackson.core:jackson-databind': 'shared',\n 'org.projectlombok:lombok': 'shared',\n 'junit:junit': 'testing',\n 'org.junit.jupiter:junit-jupiter': 'testing',\n 'org.mockito:mockito-core': 'testing',\n 'org.testng:testng': 'testing',\n 'ch.qos.logback:logback-classic': 'infrastructure',\n 'org.slf4j:slf4j-api': 'infrastructure',\n 'org.apache.kafka:kafka-clients': 'infrastructure',\n 'com.squareup.okhttp3:okhttp': 'infrastructure',\n\n // ── Go (module paths) ──\n 'github.com/gin-gonic/gin': 'routing',\n 'github.com/labstack/echo/v4': 'routing',\n 'github.com/gorilla/mux': 'routing',\n 'github.com/go-chi/chi/v5': 'routing',\n 'github.com/gofiber/fiber/v2': 'routing',\n 'github.com/spf13/cobra': 'routing',\n 'gorm.io/gorm': 'data-access',\n 'github.com/jmoiron/sqlx': 'data-access',\n 'github.com/jackc/pgx/v5': 'data-access',\n 'go.mongodb.org/mongo-driver': 'data-access',\n 'github.com/redis/go-redis/v9': 'data-access',\n 'github.com/spf13/viper': 'config',\n 'github.com/stretchr/testify': 'testing',\n 'go.uber.org/zap': 'infrastructure',\n 'github.com/sirupsen/logrus': 'infrastructure',\n 'google.golang.org/grpc': 'infrastructure',\n\n // ── Rust (crates) ──\n 'actix-web': 'routing',\n 'axum': 'routing',\n 'rocket': 'routing',\n 'warp': 'routing',\n 'clap': 'routing',\n 'diesel': 'data-access',\n 'sqlx': 'data-access',\n 'sea-orm': 'data-access',\n 'serde': 'domain',\n 'tokio': 'infrastructure',\n 'reqwest': 'infrastructure',\n 'tracing': 'infrastructure',\n\n // ── Ruby (gems) ──\n 'rails': 'routing',\n 'sinatra': 'routing',\n 'activerecord': 'data-access',\n 'sequel': 'data-access',\n 'devise': 'middleware',\n 'pundit': 'middleware',\n 'sidekiq': 'services',\n 'rspec': 'testing',\n 'rspec-rails': 'testing',\n 'minitest': 'testing',\n 'puma': 'infrastructure',\n 'faraday': 'infrastructure',\n\n // ── PHP (Composer vendor/package) ──\n 'laravel/framework': 'routing',\n 'symfony/http-kernel': 'routing',\n 'slim/slim': 'routing',\n 'doctrine/orm': 'data-access',\n 'illuminate/database': 'data-access',\n 'phpunit/phpunit': 'testing',\n 'pestphp/pest': 'testing',\n 'guzzlehttp/guzzle': 'infrastructure',\n 'monolog/monolog': 'infrastructure',\n\n // ── Swift (SPM) ──\n 'Alamofire': 'infrastructure',\n 'vapor': 'routing',\n 'Vapor': 'routing',\n\n // ── Dart (pub) ──\n 'dio': 'infrastructure',\n 'sqflite': 'data-access',\n 'flutter_bloc': 'services',\n 'riverpod': 'services',\n 'flutter_riverpod': 'services',\n 'go_router': 'routing',\n 'auto_route': 'routing',\n 'flutter_test': 'testing',\n 'mockito': 'testing',\n\n // ── Elixir (Hex) ──\n 'phoenix': 'routing',\n 'phoenix_live_view': 'presentation',\n 'ecto': 'data-access',\n 'ecto_sql': 'data-access',\n 'postgrex': 'data-access',\n 'oban': 'services',\n 'ex_machina': 'testing',\n 'tesla': 'infrastructure',\n 'httpoison': 'infrastructure',\n 'finch': 'infrastructure',\n 'jason': 'shared',\n};\n\n// ── Source file walker ──\n\nconst SOURCE_EXTENSIONS = new Set([\n '.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs', '.cts', '.cjs', '.svelte', '.vue',\n // .NET — layer detection works off the same directory/suffix conventions\n '.cs', '.vb', '.fs', '.cshtml', '.razor',\n // JVM\n '.java', '.kt', '.kts', '.scala', '.groovy',\n // Python\n '.py', '.pyi',\n // Go / Rust\n '.go', '.rs',\n // Ruby (incl. ERB view templates)\n '.rb', '.rake', '.erb',\n // PHP (incl. Blade — extname is still .php)\n '.php',\n // Swift / Dart\n '.swift', '.dart',\n // Elixir (incl. EEx/HEEx view templates)\n '.ex', '.exs', '.eex', '.heex',\n]);\n\nasync function walkSourceFiles(rootDir: string, cache?: FileCache): Promise<string[]> {\n if (cache) {\n // Use the cached walk — framework output dirs already excluded\n const entries = await cache.walkDir(rootDir);\n return entries\n .filter((e) => {\n if (!e.isFile) return false;\n // Architecture scanner also skips dotfiles\n const name = path.basename(e.absPath);\n if (name.startsWith('.') && name !== '.') return false;\n const ext = path.extname(name);\n return SOURCE_EXTENSIONS.has(ext);\n })\n .map((e) => e.relPath);\n }\n\n const files: string[] = [];\n\n async function walk(dir: string): Promise<void> {\n let entries: import('node:fs').Dirent[];\n try {\n entries = await fs.readdir(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n if (entry.name.startsWith('.') && entry.name !== '.') continue;\n const fullPath = path.join(dir, entry.name);\n\n if (entry.isDirectory()) {\n // Same skip list as every other scanner (SKIP_DIRS + virtualenv\n // variants) so build output, vendored deps and caches never classify.\n if (!isSkippedDirName(entry.name)) {\n await walk(fullPath);\n }\n } else if (entry.isFile()) {\n const ext = path.extname(entry.name);\n if (SOURCE_EXTENSIONS.has(ext)) {\n files.push(path.relative(rootDir, fullPath));\n }\n }\n }\n }\n\n await walk(rootDir);\n return files;\n}\n\n// ── File classifier ──\n\nfunction classifyFile(\n filePath: string,\n archetype: ProjectArchetype,\n): LayerClassification | null {\n // Leading `/` so `/dir/` patterns also match a top-level directory\n // (`tests/Foo.Tests/Bar.cs`); lowercased so PascalCase conventions\n // (.NET `Controllers/`, `Views/`…) hit the same rules as JS lowercase dirs.\n const normalised = '/' + filePath.replace(/\\\\/g, '/').replace(/^\\/+/, '');\n const lowered = normalised.toLowerCase();\n\n // Try path rules first (highest priority — archetype-specific first)\n let bestMatch: { layer: ArchitectureLayer; confidence: number; signal: string } | null = null;\n\n for (const rule of PATH_RULES) {\n // Skip rules for other archetypes\n if (rule.archetypes && rule.archetypes.length > 0 && !rule.archetypes.includes(archetype)) {\n continue;\n }\n\n if (rule.pattern.test(lowered)) {\n // Archetype-specific rules get a boost\n const boost = rule.archetypes ? 0.05 : 0;\n const adjustedConfidence = Math.min(rule.confidence + boost, 1);\n\n if (!bestMatch || adjustedConfidence > bestMatch.confidence) {\n bestMatch = { layer: rule.layer, confidence: adjustedConfidence, signal: rule.signal };\n }\n }\n }\n\n // Try suffix rules as fallback\n if (!bestMatch || bestMatch.confidence < 0.7) {\n const baseName = path.basename(filePath, path.extname(filePath));\n // Also strip test suffixes\n const cleanBase = baseName.replace(/\\.(test|spec)$/, '');\n\n for (const rule of SUFFIX_RULES) {\n if (cleanBase.endsWith(rule.suffix)) {\n if (!bestMatch || rule.confidence > bestMatch.confidence) {\n bestMatch = { layer: rule.layer, confidence: rule.confidence, signal: rule.signal };\n }\n }\n }\n\n for (const rule of PASCAL_SUFFIX_RULES) {\n if (cleanBase.endsWith(rule.suffix)) {\n if (!bestMatch || rule.confidence > bestMatch.confidence) {\n bestMatch = { layer: rule.layer, confidence: rule.confidence, signal: rule.signal };\n }\n }\n }\n }\n\n if (bestMatch) {\n return {\n filePath,\n layer: bestMatch.layer,\n confidence: bestMatch.confidence,\n signals: [bestMatch.signal],\n };\n }\n\n return null;\n}\n\n// ── Per-layer drift scoring ──\n\nfunction computeLayerDrift(packages: LayerPackageRef[]): { score: number; riskLevel: RiskLevel } {\n if (packages.length === 0) {\n return { score: 0, riskLevel: 'none' };\n }\n\n let current = 0;\n let oneBehind = 0;\n let twoPlusBehind = 0;\n\n for (const pkg of packages) {\n if (pkg.majorsBehind === null) {\n // Unknown currency — excluded from the drift ratio below.\n } else if (pkg.majorsBehind === 0) {\n current++;\n } else if (pkg.majorsBehind === 1) {\n oneBehind++;\n } else {\n twoPlusBehind++;\n }\n }\n\n const known = current + oneBehind + twoPlusBehind;\n if (known === 0) return { score: 0, riskLevel: 'none' };\n\n const currentPct = current / known;\n const onePct = oneBehind / known;\n const twoPct = twoPlusBehind / known;\n\n // Health (higher = fresher), inverted to drift (0 = no drift, 100 = worst).\n const health = Math.round(Math.max(0, Math.min(100, currentPct * 100 - onePct * 10 - twoPct * 40)));\n const score = 100 - health;\n // Drift 100 with known packages means everything is severely outdated → high risk\n const riskLevel: RiskLevel = score <= 30 ? 'low' : score <= 60 ? 'moderate' : 'high';\n\n return { score, riskLevel };\n}\n\n// ── Tooling/service attribution to layers ──\n\nfunction mapToolingToLayers(\n tooling: ToolingInventoryResult | undefined,\n services: ServiceDependenciesResult | undefined,\n depsByLayer: Map<ArchitectureLayer, Set<string>>,\n): {\n layerTooling: Map<ArchitectureLayer, InventoryItem[]>;\n layerServices: Map<ArchitectureLayer, ServiceDependencyItem[]>;\n} {\n const layerTooling = new Map<ArchitectureLayer, InventoryItem[]>();\n const layerServices = new Map<ArchitectureLayer, ServiceDependencyItem[]>();\n\n // Build a quick package→layer lookup from the classified dependency data\n const pkgLayerLookup = new Map<string, ArchitectureLayer>();\n for (const [layer, packages] of depsByLayer) {\n for (const pkg of packages) {\n pkgLayerLookup.set(pkg, layer);\n }\n }\n\n // Map tooling items\n if (tooling) {\n for (const [, items] of Object.entries(tooling)) {\n for (const item of items as InventoryItem[]) {\n const layer = pkgLayerLookup.get(item.package) ?? PACKAGE_LAYER_MAP[item.package] ?? 'shared';\n if (!layerTooling.has(layer)) layerTooling.set(layer, []);\n // Avoid duplication\n const existing = layerTooling.get(layer)!;\n if (!existing.some((t) => t.package === item.package)) {\n existing.push(item);\n }\n }\n }\n }\n\n // Map service items\n if (services) {\n for (const [, items] of Object.entries(services)) {\n for (const item of items as ServiceDependencyItem[]) {\n const layer = pkgLayerLookup.get(item.package) ?? PACKAGE_LAYER_MAP[item.package] ?? 'infrastructure';\n if (!layerServices.has(layer)) layerServices.set(layer, []);\n const existing = layerServices.get(layer)!;\n if (!existing.some((s) => s.package === item.package)) {\n existing.push(item);\n }\n }\n }\n }\n\n return { layerTooling, layerServices };\n}\n\n\nfunction generateLayerFlowMermaid(layers: ArchitectureLayer[]): string {\n const labels: Record<ArchitectureLayer, string> = {\n presentation: 'Presentation',\n routing: 'Routing',\n middleware: 'Middleware',\n services: 'Services',\n domain: 'Domain',\n 'data-access': 'Data Access',\n infrastructure: 'Infrastructure',\n config: 'Config',\n shared: 'Shared',\n testing: 'Testing',\n };\n\n if (layers.length === 0) {\n return 'flowchart TD\\n APP[\"Project\"]';\n }\n\n const ordered = [...layers];\n const lines: string[] = ['flowchart TD'];\n for (let i = 0; i < ordered.length; i++) {\n const layer = ordered[i];\n lines.push(` L${i}[\"${labels[layer]}\"]`);\n if (i > 0) lines.push(` L${i-1} --> L${i}`);\n }\n return lines.join('\\n');\n}\n\nexport async function buildProjectArchitectureMermaid(\n rootDir: string,\n project: ProjectScan,\n archetype: ProjectArchetype,\n cache?: FileCache,\n): Promise<string> {\n const projectRoot = path.resolve(rootDir, project.path || '.');\n const allFiles = await walkSourceFiles(projectRoot, cache);\n const layerSet = new Set<ArchitectureLayer>();\n\n for (const rel of allFiles) {\n const classification = classifyFile(rel, archetype);\n if (classification) {\n layerSet.add(classification.layer);\n }\n }\n\n const layerOrder: ArchitectureLayer[] = [\n 'presentation', 'routing', 'middleware', 'services', 'domain',\n 'data-access', 'infrastructure', 'config', 'shared', 'testing',\n ];\n const orderedLayers = layerOrder.filter((l) => layerSet.has(l));\n return generateLayerFlowMermaid(orderedLayers);\n}\n\n/**\n * Run architecture detection scoped to a single project directory.\n * Same logic as scanArchitecture but with rootDir = project directory.\n */\nexport async function scanProjectArchitecture(\n rootDir: string,\n project: ProjectScan,\n cache?: FileCache,\n): Promise<ArchitectureResult> {\n const projectRoot = path.resolve(rootDir, project.path || '.');\n return scanArchitecture(projectRoot, [project], undefined, undefined, cache);\n}\n\n/**\n * Aggregate per-project ArchitectureResults into a single solution-level result.\n * Merges layer summaries (summing file counts, merging packages/tech/services),\n * picks the most-confident archetype across member projects.\n */\nexport function aggregateSolutionArchitecture(\n projectResults: ArchitectureResult[],\n): ArchitectureResult {\n if (projectResults.length === 0) {\n return { archetype: 'unknown', archetypeConfidence: 0, layers: [], totalClassified: 0, unclassified: 0 };\n }\n if (projectResults.length === 1) {\n return projectResults[0];\n }\n\n // Pick the archetype with highest confidence; break ties by favouring non-monorepo\n let bestArchetype: ProjectArchetype = 'unknown';\n let bestConfidence = 0;\n for (const r of projectResults) {\n if (\n r.archetypeConfidence > bestConfidence ||\n (r.archetypeConfidence === bestConfidence && r.archetype !== 'monorepo')\n ) {\n bestArchetype = r.archetype;\n bestConfidence = r.archetypeConfidence;\n }\n }\n\n // Merge layer summaries\n const layerMap = new Map<ArchitectureLayer, LayerSummary>();\n for (const r of projectResults) {\n for (const ls of r.layers) {\n const existing = layerMap.get(ls.layer);\n if (!existing) {\n layerMap.set(ls.layer, { ...ls, packages: [...ls.packages], techStack: [...ls.techStack], services: [...ls.services], files: [...ls.files] });\n } else {\n existing.fileCount += ls.fileCount;\n // Merge packages (dedup by name)\n const pkgNames = new Set(existing.packages.map((p) => p.name));\n for (const pkg of ls.packages) {\n if (!pkgNames.has(pkg.name)) {\n existing.packages.push(pkg);\n pkgNames.add(pkg.name);\n }\n }\n // Merge tech stack (dedup by package)\n const techPkgs = new Set(existing.techStack.map((t) => t.package));\n for (const t of ls.techStack) {\n if (!techPkgs.has(t.package)) {\n existing.techStack.push(t);\n techPkgs.add(t.package);\n }\n }\n // Merge services (dedup by package)\n const svcPkgs = new Set(existing.services.map((s) => s.package));\n for (const s of ls.services) {\n if (!svcPkgs.has(s.package)) {\n existing.services.push(s);\n svcPkgs.add(s.package);\n }\n }\n // Merge files (dedup, capped — cross-project paths so no collision risk)\n const seenFiles = new Set(existing.files);\n for (const f of ls.files) {\n if (existing.files.length >= 40) break;\n if (!seenFiles.has(f)) {\n existing.files.push(f);\n seenFiles.add(f);\n }\n }\n // Recompute drift for merged packages\n const { score, riskLevel } = computeLayerDrift(existing.packages);\n existing.driftScore = score;\n existing.riskLevel = riskLevel;\n }\n }\n }\n\n // Sort layers in architectural order\n const LAYER_ORDER: Record<ArchitectureLayer, number> = {\n 'presentation': 0, 'routing': 1, 'middleware': 2, 'services': 3, 'domain': 4,\n 'data-access': 5, 'infrastructure': 6, 'config': 7, 'shared': 8, 'testing': 9,\n };\n const layers = [...layerMap.values()].sort((a, b) => (LAYER_ORDER[a.layer] ?? 99) - (LAYER_ORDER[b.layer] ?? 99));\n\n const totalClassified = projectResults.reduce((s, r) => s + r.totalClassified, 0);\n const unclassified = projectResults.reduce((s, r) => s + r.unclassified, 0);\n\n return { archetype: bestArchetype, archetypeConfidence: bestConfidence, layers, totalClassified, unclassified };\n}\n\n// ── Main scanner entry point ──\n\nexport async function scanArchitecture(\n rootDir: string,\n projects: ProjectScan[],\n tooling?: ToolingInventoryResult,\n services?: ServiceDependenciesResult,\n cache?: FileCache,\n): Promise<ArchitectureResult> {\n // 1. Detect project archetype\n const { archetype, confidence: archetypeConfidence } = detectArchetype(projects);\n\n // 2. Walk source files\n const sourceFiles = await walkSourceFiles(rootDir, cache);\n\n // 3. Classify each file into a layer\n const classifications: LayerClassification[] = [];\n let unclassified = 0;\n\n for (const file of sourceFiles) {\n const classification = classifyFile(file, archetype);\n if (classification) {\n classifications.push(classification);\n } else {\n unclassified++;\n }\n }\n\n // 4. Build dependency map: collect all packages used across projects\n const allDeps = new Map<string, DependencyRow>();\n for (const p of projects) {\n for (const d of p.dependencies) {\n if (!allDeps.has(d.package)) {\n allDeps.set(d.package, d);\n }\n }\n }\n\n // 5. Assign packages to layers using PACKAGE_LAYER_MAP\n const depsByLayer = new Map<ArchitectureLayer, Set<string>>();\n for (const [pkg] of allDeps) {\n const layer = PACKAGE_LAYER_MAP[pkg];\n if (layer) {\n if (!depsByLayer.has(layer)) depsByLayer.set(layer, new Set());\n depsByLayer.get(layer)!.add(pkg);\n }\n }\n\n // 6. Map tooling and services to layers\n const { layerTooling, layerServices } = mapToolingToLayers(tooling, services, depsByLayer);\n\n // 7. Aggregate into layer summaries\n const ALL_LAYERS: ArchitectureLayer[] = [\n 'routing', 'middleware', 'services', 'domain',\n 'data-access', 'infrastructure', 'presentation',\n 'config', 'testing', 'shared',\n ];\n\n const LAYER_FILES_CAP = 40;\n const layerFileCounts = new Map<ArchitectureLayer, number>();\n const layerFiles = new Map<ArchitectureLayer, string[]>();\n for (const c of classifications) {\n layerFileCounts.set(c.layer, (layerFileCounts.get(c.layer) ?? 0) + 1);\n const existing = layerFiles.get(c.layer);\n if (existing) {\n if (existing.length < LAYER_FILES_CAP) existing.push(c.filePath);\n } else {\n layerFiles.set(c.layer, [c.filePath]);\n }\n }\n\n const layers: LayerSummary[] = [];\n\n for (const layer of ALL_LAYERS) {\n const fileCount = layerFileCounts.get(layer) ?? 0;\n const layerPkgs = depsByLayer.get(layer) ?? new Set<string>();\n const tech = layerTooling.get(layer) ?? [];\n const svc = layerServices.get(layer) ?? [];\n\n // Skip layers with no files and no dependencies\n if (fileCount === 0 && layerPkgs.size === 0 && tech.length === 0 && svc.length === 0) {\n continue;\n }\n\n // Build package refs for this layer\n const packages: LayerPackageRef[] = [];\n for (const pkg of layerPkgs) {\n const dep = allDeps.get(pkg);\n if (dep) {\n packages.push({\n name: dep.package,\n version: dep.resolvedVersion,\n latestStable: dep.latestStable,\n majorsBehind: dep.majorsBehind,\n drift: dep.drift,\n });\n }\n }\n\n // Compute per-layer drift\n const { score, riskLevel } = computeLayerDrift(packages);\n\n layers.push({\n layer,\n fileCount,\n driftScore: score,\n riskLevel,\n techStack: tech,\n services: svc,\n packages,\n files: layerFiles.get(layer) ?? [],\n });\n }\n\n // Sort layers by architectural order (top → bottom)\n const LAYER_ORDER: Record<ArchitectureLayer, number> = {\n 'presentation': 0,\n 'routing': 1,\n 'middleware': 2,\n 'services': 3,\n 'domain': 4,\n 'data-access': 5,\n 'infrastructure': 6,\n 'config': 7,\n 'shared': 8,\n 'testing': 9,\n };\n\n layers.sort((a, b) => (LAYER_ORDER[a.layer] ?? 99) - (LAYER_ORDER[b.layer] ?? 99));\n\n return {\n archetype,\n archetypeConfidence,\n layers,\n totalClassified: classifications.length,\n unclassified,\n };\n}\n","import * as path from 'node:path';\nimport type * as TS from 'typescript';\nimport type { CodeQualityResult, GodFile } from '../../core-open/index.js';\nimport { FileCache, findFiles, readTextFile } from '../../core-open/index.js';\n\n// TypeScript is loaded LAZILY, only when we actually parse source for the\n// code-quality scan. A static `import * as ts from 'typescript'` is evaluated at\n// module-init and drags TS's Node system probe (getNodeSystem →\n// isFileSystemCaseSensitive, which touches `__filename`) into startup. In a\n// bundled/Worker-style host (no `__filename`) that crashes with\n// \"ReferenceError: __filename is not defined\". Deferring the import keeps that\n// code path off module-init entirely — it runs only on a real filesystem when\n// this scanner is invoked. Mirrors the same guard in core-open/config.ts.\nlet ts!: typeof import('typescript');\nlet tsLoading: Promise<void> | null = null;\nasync function ensureTypeScript(): Promise<void> {\n if (ts) return;\n tsLoading ??= import('typescript').then((m) => {\n const mod = m as unknown as { default?: typeof import('typescript') };\n ts = mod.default ?? (m as unknown as typeof import('typescript'));\n });\n await tsLoading;\n}\n\nconst SOURCE_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']);\nconst DEFAULT_RESULT: CodeQualityResult = {\n filesAnalyzed: 0,\n functionsAnalyzed: 0,\n avgCyclomaticComplexity: 0,\n avgFunctionLength: 0,\n maxNestingDepth: 0,\n godFiles: [],\n circularDependencies: 0,\n deadCodePercent: 0,\n};\n\nexport async function scanCodeQuality(rootDir: string, cache?: FileCache): Promise<CodeQualityResult> {\n const filePaths = await findSourceFiles(rootDir, cache);\n if (filePaths.length === 0) return { ...DEFAULT_RESULT };\n\n await ensureTypeScript();\n\n let totalFunctions = 0;\n let totalComplexity = 0;\n let totalFunctionLength = 0;\n let maxNestingDepth = 0;\n let deadFunctions = 0;\n const godFiles: GodFile[] = [];\n const depGraph = new Map<string, string[]>();\n\n for (const filePath of filePaths) {\n let raw = '';\n try {\n raw = cache ? await cache.readTextFile(filePath) : await readTextFile(filePath);\n } catch {\n continue;\n }\n if (!raw.trim()) continue;\n\n const rel = normalizeModuleId(path.relative(rootDir, filePath));\n const source = ts.createSourceFile(filePath, raw, ts.ScriptTarget.Latest, true);\n\n const imports = collectLocalImports(source, path.dirname(filePath), rootDir);\n depGraph.set(rel, imports);\n\n const fileMetrics = computeFileMetrics(source, raw);\n totalFunctions += fileMetrics.functionsAnalyzed;\n totalComplexity += fileMetrics.totalComplexity;\n totalFunctionLength += fileMetrics.totalFunctionLength;\n maxNestingDepth = Math.max(maxNestingDepth, fileMetrics.maxNestingDepth);\n deadFunctions += fileMetrics.deadFunctionCount;\n\n const fileAvgComplexity = fileMetrics.functionsAnalyzed > 0\n ? fileMetrics.totalComplexity / fileMetrics.functionsAnalyzed\n : 0;\n\n if (\n fileMetrics.lines >= 450\n || fileMetrics.functionsAnalyzed >= 25\n || (fileMetrics.functionsAnalyzed >= 10 && fileAvgComplexity >= 8)\n ) {\n godFiles.push({\n path: rel,\n lines: fileMetrics.lines,\n functionCount: fileMetrics.functionsAnalyzed,\n averageComplexity: round2(fileAvgComplexity),\n });\n }\n }\n\n const circularDependencies = countCircularDependencyChains(depGraph);\n const deadCodePercent = totalFunctions > 0 ? (deadFunctions / totalFunctions) * 100 : 0;\n\n return {\n filesAnalyzed: depGraph.size,\n functionsAnalyzed: totalFunctions,\n avgCyclomaticComplexity: totalFunctions > 0 ? round2(totalComplexity / totalFunctions) : 0,\n avgFunctionLength: totalFunctions > 0 ? round2(totalFunctionLength / totalFunctions) : 0,\n maxNestingDepth,\n godFiles: godFiles\n .sort((a, b) => b.lines - a.lines || b.functionCount - a.functionCount)\n .slice(0, 10),\n circularDependencies,\n deadCodePercent: round2(deadCodePercent),\n };\n}\n\nasync function findSourceFiles(rootDir: string, cache?: FileCache): Promise<string[]> {\n if (cache) {\n const entries = await cache.walkDir(rootDir);\n return entries\n .filter((entry) => entry.isFile && SOURCE_EXTENSIONS.has(path.extname(entry.name).toLowerCase()))\n .map((entry) => entry.absPath);\n }\n\n const files = await findFiles(rootDir, (name) => SOURCE_EXTENSIONS.has(path.extname(name).toLowerCase()));\n return files;\n}\n\nfunction collectLocalImports(source: TS.SourceFile, fileDir: string, rootDir: string): string[] {\n const deps = new Set<string>();\n\n const visit = (node: TS.Node): void => {\n if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) {\n const target = resolveLocalImport(node.moduleSpecifier.text, fileDir, rootDir);\n if (target) deps.add(target);\n }\n if (ts.isCallExpression(node)\n && node.expression.kind === ts.SyntaxKind.ImportKeyword\n && node.arguments[0]\n && ts.isStringLiteral(node.arguments[0])) {\n const target = resolveLocalImport(node.arguments[0].text, fileDir, rootDir);\n if (target) deps.add(target);\n }\n visitEach(node, visit);\n };\n\n visit(source);\n return [...deps];\n}\n\nfunction resolveLocalImport(specifier: string, fileDir: string, rootDir: string): string | null {\n if (!specifier.startsWith('.')) return null;\n\n const rawTarget = path.resolve(fileDir, specifier);\n const normalized = path.relative(rootDir, rawTarget).replace(/\\\\/g, '/');\n if (!normalized || normalized.startsWith('..')) return null;\n\n return normalizeModuleId(normalized);\n}\n\nfunction normalizeModuleId(relPath: string): string {\n return relPath\n .replace(/\\\\/g, '/')\n .replace(/\\.(ts|tsx|js|jsx|mjs|cjs)$/, '')\n .replace(/\\/index$/, '');\n}\n\ntype FileMetrics = {\n lines: number;\n functionsAnalyzed: number;\n totalComplexity: number;\n totalFunctionLength: number;\n maxNestingDepth: number;\n deadFunctionCount: number;\n};\n\nfunction computeFileMetrics(source: TS.SourceFile, raw: string): FileMetrics {\n let functionsAnalyzed = 0;\n let totalComplexity = 0;\n let totalFunctionLength = 0;\n let maxNestingDepth = 0;\n let deadFunctionCount = 0;\n\n const functionDecls: TS.FunctionDeclaration[] = [];\n\n const visit = (node: TS.Node): void => {\n if (isFunctionLike(node)) {\n const complexity = computeCyclomatic(node);\n const lineLength = computeNodeLineLength(source, node);\n const nestingDepth = computeMaxNestingDepth(node);\n\n functionsAnalyzed++;\n totalComplexity += complexity;\n totalFunctionLength += lineLength;\n maxNestingDepth = Math.max(maxNestingDepth, nestingDepth);\n }\n\n if (ts.isFunctionDeclaration(node) && node.name) {\n functionDecls.push(node);\n }\n\n visitEach(node, visit);\n };\n\n visit(source);\n\n const functionBodies = raw;\n for (const fn of functionDecls) {\n if (isExported(fn)) continue;\n const name = fn.name?.text;\n if (!name) continue;\n const refs = countWholeWord(functionBodies, name);\n if (refs <= 1) deadFunctionCount++;\n }\n\n return {\n lines: raw.split(/\\r?\\n/).length,\n functionsAnalyzed,\n totalComplexity,\n totalFunctionLength,\n maxNestingDepth,\n deadFunctionCount,\n };\n}\n\nfunction computeCyclomatic(fn: TS.Node): number {\n let complexity = 1;\n\n const visit = (node: TS.Node): void => {\n switch (node.kind) {\n case ts.SyntaxKind.IfStatement:\n case ts.SyntaxKind.ForStatement:\n case ts.SyntaxKind.ForOfStatement:\n case ts.SyntaxKind.ForInStatement:\n case ts.SyntaxKind.WhileStatement:\n case ts.SyntaxKind.DoStatement:\n case ts.SyntaxKind.CaseClause:\n case ts.SyntaxKind.CatchClause:\n case ts.SyntaxKind.ConditionalExpression:\n complexity++;\n break;\n case ts.SyntaxKind.BinaryExpression: {\n const be = node as TS.BinaryExpression;\n if (\n be.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken\n || be.operatorToken.kind === ts.SyntaxKind.BarBarToken\n || be.operatorToken.kind === ts.SyntaxKind.QuestionQuestionToken\n ) {\n complexity++;\n }\n break;\n }\n default:\n break;\n }\n visitEach(node, visit);\n };\n\n visit(fn);\n return complexity;\n}\n\nfunction computeMaxNestingDepth(node: TS.Node): number {\n let maxDepth = 0;\n\n const walk = (current: TS.Node, depth: number): void => {\n const nextDepth = isNestingNode(current) ? depth + 1 : depth;\n maxDepth = Math.max(maxDepth, nextDepth);\n visitEach(current, (child) => walk(child, nextDepth));\n };\n\n walk(node, 0);\n return Math.max(0, maxDepth - 1);\n}\n\nfunction countCircularDependencyChains(graph: Map<string, string[]>): number {\n let cycles = 0;\n const visited = new Set<string>();\n const inStack = new Set<string>();\n\n const dfs = (node: string): void => {\n visited.add(node);\n inStack.add(node);\n\n const deps = graph.get(node) ?? [];\n for (const dep of deps) {\n if (!graph.has(dep)) continue;\n if (!visited.has(dep)) {\n dfs(dep);\n } else if (inStack.has(dep)) {\n cycles++;\n }\n }\n\n inStack.delete(node);\n };\n\n for (const node of graph.keys()) {\n if (!visited.has(node)) dfs(node);\n }\n\n return cycles;\n}\n\nfunction computeNodeLineLength(source: TS.SourceFile, node: TS.Node): number {\n const start = source.getLineAndCharacterOfPosition(node.getStart(source)).line;\n const end = source.getLineAndCharacterOfPosition(node.getEnd()).line;\n return end - start + 1;\n}\n\nfunction isFunctionLike(node: TS.Node): boolean {\n return ts.isFunctionDeclaration(node)\n || ts.isMethodDeclaration(node)\n || ts.isFunctionExpression(node)\n || ts.isArrowFunction(node)\n || ts.isConstructorDeclaration(node);\n}\n\nfunction isNestingNode(node: TS.Node): boolean {\n return node.kind === ts.SyntaxKind.IfStatement\n || node.kind === ts.SyntaxKind.ForStatement\n || node.kind === ts.SyntaxKind.ForOfStatement\n || node.kind === ts.SyntaxKind.ForInStatement\n || node.kind === ts.SyntaxKind.WhileStatement\n || node.kind === ts.SyntaxKind.DoStatement\n || node.kind === ts.SyntaxKind.SwitchStatement\n || node.kind === ts.SyntaxKind.TryStatement\n || node.kind === ts.SyntaxKind.CatchClause;\n}\n\nfunction isExported(node: TS.Node): boolean {\n if (!ts.canHaveModifiers(node)) return false;\n const modifiers = ts.getModifiers(node);\n return !!modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword);\n}\n\nfunction countWholeWord(input: string, word: string): number {\n const re = new RegExp(`\\\\b${escapeRegExp(word)}\\\\b`, 'g');\n return input.match(re)?.length ?? 0;\n}\n\nfunction escapeRegExp(input: string): string {\n return input.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction round2(n: number): number {\n return Math.round(n * 100) / 100;\n}\n\nfunction visitEach(node: TS.Node, cb: (child: TS.Node) => void): void {\n node.forEachChild(cb);\n}\n","import type { DatabaseField } from '../../core-open/index.js';\n\n/**\n * Best-effort structural parser for `CREATE TABLE <name> (...)` statements in\n * raw SQL text. Shared by the raw-SQL-migrations source and the SQL Server\n * Database Project (`.sqlproj`) source in `database-schema.ts` — both hand it\n * whole-file text and get back structured table facts only: table name,\n * column name + a best-effort type string, and PRIMARY KEY/NOT NULL/\n * UNIQUE/REFERENCES flags detected via keyword matching.\n *\n * This is deliberately not a full SQL parser. `ALTER TABLE` statements are\n * never parsed (the first `CREATE TABLE` per table name wins), and any\n * top-level item inside the parens that isn't cleanly a `<name> <type> ...`\n * column definition (composite `PRIMARY KEY (...)`, `FOREIGN KEY (...)`,\n * `CONSTRAINT ...`, `CHECK (...)`, table-level `UNIQUE (...)`/`INDEX (...)`)\n * is skipped rather than guessed at.\n *\n * Defense in depth: even though hand-written SQL files don't normally embed\n * credentials, any line that looks like a URL with embedded credentials\n * (`scheme://user:pass@host`) is stripped before parsing, so one can never\n * propagate into the result — see the doc comment at the top of\n * `advanced-analysis.ts` for why that discipline matters here.\n */\n\nexport interface ParsedSqlTable {\n name: string;\n fields: DatabaseField[];\n}\n\n/** Matches `scheme://user:pass@host` — a URL with embedded credentials. */\nconst CREDENTIAL_URL_RE = /:\\/\\/[^/\\s'\"]*:[^/\\s'\"]*@/;\n\nexport function stripCredentialLines(sql: string): string {\n return sql\n .split('\\n')\n .map((line) => (CREDENTIAL_URL_RE.test(line) ? '' : line))\n .join('\\n');\n}\n\n/** Table-level constraint keywords — a top-level item starting with one of\n * these is a constraint clause, not a column definition. */\nconst TABLE_LEVEL_KEYWORDS = new Set(['PRIMARY', 'FOREIGN', 'CONSTRAINT', 'UNIQUE', 'CHECK', 'INDEX', 'KEY']);\n\n/** Keywords that end the \"type\" portion of a column definition and begin its\n * constraint/modifier clauses. */\nconst CONSTRAINT_KEYWORDS = new Set([\n 'NOT', 'NULL', 'DEFAULT', 'PRIMARY', 'UNIQUE', 'REFERENCES', 'CHECK', 'CONSTRAINT',\n 'GENERATED', 'IDENTITY', 'AUTO_INCREMENT', 'AUTOINCREMENT', 'COLLATE', 'ON', 'COMMENT',\n 'ENCODE', 'DISTKEY', 'SORTKEY', 'WITH',\n]);\n\n/** Strip surrounding quoting (`` ` ``/`\"`/`[]`) and a schema qualifier\n * (`dbo.Users` → `Users`) from a raw SQL identifier. */\nfunction cleanIdentifier(raw: string): string {\n const parts = raw.split('.');\n const last = (parts[parts.length - 1] ?? raw).trim();\n return last.replace(/^[[\"'`]+/, '').replace(/[\\]\"'`;]+$/, '').trim();\n}\n\n/** Extract the text between a `(` at `openParenIdx` and its matching `)`,\n * respecting nesting (e.g. `DECIMAL(10, 2)`). Returns `null` if unbalanced. */\nfunction extractBalanced(sql: string, openParenIdx: number): string | null {\n let depth = 0;\n for (let i = openParenIdx; i < sql.length; i++) {\n if (sql[i] === '(') depth++;\n else if (sql[i] === ')') {\n depth--;\n if (depth === 0) return sql.slice(openParenIdx + 1, i);\n }\n }\n return null;\n}\n\n/** Split a column-list body on top-level commas only (commas nested inside\n * `(...)`, e.g. `DECIMAL(10, 2)`, are not split points). */\nfunction splitTopLevel(body: string): string[] {\n const parts: string[] = [];\n let depth = 0;\n let current = '';\n for (const ch of body) {\n if (ch === '(') depth++;\n if (ch === ')') depth--;\n if (ch === ',' && depth === 0) {\n parts.push(current);\n current = '';\n } else {\n current += ch;\n }\n }\n if (current.trim()) parts.push(current);\n return parts.map((s) => s.trim()).filter(Boolean);\n}\n\n/** Tokenize a single column definition, treating a `word(...)` group (e.g.\n * `DECIMAL(10, 2)`, `VARCHAR(255)`) as one token even though it contains\n * whitespace/commas internally. */\nfunction tokenize(def: string): string[] {\n const tokens: string[] = [];\n const re = /[^\\s(]+\\([^)]*\\)|[^\\s]+/g;\n let m: RegExpExecArray | null;\n while ((m = re.exec(def)) !== null) tokens.push(m[0]);\n return tokens;\n}\n\nfunction containsSeq(tokens: string[], seq: string[]): boolean {\n for (let i = 0; i + seq.length <= tokens.length; i++) {\n if (seq.every((s, j) => tokens[i + j] === s)) return true;\n }\n return false;\n}\n\nfunction parseColumnDef(def: string): DatabaseField | null {\n const tokens = tokenize(def);\n if (tokens.length < 2) return null;\n const first = tokens[0]!.toUpperCase();\n if (TABLE_LEVEL_KEYWORDS.has(first)) return null; // table-level constraint, not a column\n\n const name = cleanIdentifier(tokens[0]!);\n if (!name) return null;\n\n const rest = tokens.slice(1);\n const typeTokens: string[] = [];\n for (const t of rest) {\n if (CONSTRAINT_KEYWORDS.has(t.toUpperCase())) break;\n typeTokens.push(t);\n }\n const type = typeTokens.join(' ').trim();\n if (!type) return null; // couldn't cleanly separate a type — skip rather than guess\n\n const upperRest = rest.map((t) => t.toUpperCase());\n const isPrimaryKey = containsSeq(upperRest, ['PRIMARY', 'KEY']);\n const isNotNull = containsSeq(upperRest, ['NOT', 'NULL']);\n const isUnique = upperRest.includes('UNIQUE');\n const isReference = upperRest.includes('REFERENCES');\n\n return {\n name,\n type,\n isList: false,\n isOptional: !isNotNull && !isPrimaryKey,\n isRelation: isReference,\n isId: isPrimaryKey,\n isUnique,\n };\n}\n\n/**\n * Parse all `CREATE TABLE <name> (...)` statements out of raw SQL text.\n * `ALTER TABLE` is never parsed. When the same table name appears in more\n * than one `CREATE TABLE` within the same text, the first one wins.\n */\nexport function parseCreateTableStatements(rawSql: string): ParsedSqlTable[] {\n const sql = stripCredentialLines(rawSql);\n const results: ParsedSqlTable[] = [];\n const seen = new Set<string>();\n const re = /CREATE\\s+TABLE\\s+(?:IF\\s+NOT\\s+EXISTS\\s+)?([A-Za-z0-9_.\"[\\]`]+)\\s*\\(/gi;\n let m: RegExpExecArray | null;\n while ((m = re.exec(sql)) !== null) {\n const openParenIdx = re.lastIndex - 1;\n const body = extractBalanced(sql, openParenIdx);\n if (body === null) continue;\n re.lastIndex = openParenIdx + body.length + 2;\n\n const name = cleanIdentifier(m[1]!);\n if (!name || seen.has(name)) continue; // first CREATE TABLE per table wins\n seen.add(name);\n\n const fields: DatabaseField[] = [];\n const fieldNames = new Set<string>();\n for (const part of splitTopLevel(body)) {\n const field = parseColumnDef(part);\n if (field && !fieldNames.has(field.name)) {\n fields.push(field);\n fieldNames.add(field.name);\n }\n }\n results.push({ name, fields });\n }\n return results;\n}\n","import ts from 'typescript';\nimport type { DatabaseField } from '../../core-open/index.js';\n\n/**\n * Structural parser for Drizzle ORM table definitions\n * (`pgTable`/`mysqlTable`/`sqliteTable` calls imported from `drizzle-orm`),\n * via the TypeScript compiler API's syntactic parser (same tool as\n * `engine/ts-resolver.ts`, but no `ts.Program`/type-checker needed — this is\n * a pure per-file AST walk, so it stays fast even over a large repo).\n *\n * Extracts only: the table name (the first string-literal argument), and per\n * column — the object-literal key as the column name, the column-builder\n * function name (e.g. `text`, `integer`, `varchar`) as its \"type\", and\n * whether `.primaryKey()`/`.notNull()`/`.unique()`/`.references(...)` are\n * chained on it (presence-only — a `.references(...)` argument's contents are\n * never inspected, only that a relation was declared).\n */\n\nexport interface ParsedDrizzleTable {\n name: string;\n fields: DatabaseField[];\n}\n\nconst DRIZZLE_TABLE_FUNCS = new Set(['pgTable', 'mysqlTable', 'sqliteTable']);\n\n/** Local identifiers bound to a drizzle-orm table-builder import in this file\n * (handles `import { pgTable as table } from 'drizzle-orm/pg-core'`-style aliasing). */\nfunction collectDrizzleTableImportNames(sf: ts.SourceFile): Set<string> {\n const names = new Set<string>();\n for (const stmt of sf.statements) {\n if (!ts.isImportDeclaration(stmt)) continue;\n const spec = stmt.moduleSpecifier;\n if (!ts.isStringLiteral(spec) || !spec.text.startsWith('drizzle-orm')) continue;\n const clause = stmt.importClause;\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) continue;\n for (const el of clause.namedBindings.elements) {\n const imported = (el.propertyName ?? el.name).text;\n if (DRIZZLE_TABLE_FUNCS.has(imported)) names.add(el.name.text);\n }\n }\n return names;\n}\n\nfunction propertyKeyName(name: ts.PropertyName): string | null {\n if (ts.isIdentifier(name) || ts.isStringLiteral(name)) return name.text;\n return null;\n}\n\n/** Walk a column-builder call chain, e.g. `integer('id').primaryKey().notNull()`,\n * to find the base builder function name and which modifiers are chained on it. */\nfunction parseColumnBuilderExpr(colName: string, expr: ts.Expression): DatabaseField | null {\n let node: ts.Expression = expr;\n let builderName: string | null = null;\n let isPrimaryKey = false;\n let isNotNull = false;\n let isUnique = false;\n let isReference = false;\n\n while (ts.isCallExpression(node)) {\n const callee = node.expression;\n if (ts.isIdentifier(callee)) {\n builderName = callee.text;\n break;\n }\n if (ts.isPropertyAccessExpression(callee)) {\n switch (callee.name.text) {\n case 'primaryKey': isPrimaryKey = true; break;\n case 'notNull': isNotNull = true; break;\n case 'unique': isUnique = true; break;\n case 'references': isReference = true; break;\n default: break;\n }\n node = callee.expression;\n continue;\n }\n break;\n }\n if (!builderName) return null;\n\n return {\n name: colName,\n type: builderName,\n isList: false,\n isOptional: !isNotNull && !isPrimaryKey,\n isRelation: isReference,\n isId: isPrimaryKey,\n isUnique,\n };\n}\n\nfunction parseDrizzleTableCall(call: ts.CallExpression): ParsedDrizzleTable | null {\n const [nameArg, columnsArg] = call.arguments;\n if (!nameArg || !ts.isStringLiteral(nameArg)) return null;\n\n const fields: DatabaseField[] = [];\n if (columnsArg && ts.isObjectLiteralExpression(columnsArg)) {\n for (const prop of columnsArg.properties) {\n if (!ts.isPropertyAssignment(prop)) continue;\n const colName = propertyKeyName(prop.name);\n if (!colName) continue;\n const field = parseColumnBuilderExpr(colName, prop.initializer);\n if (field) fields.push(field);\n }\n }\n return { name: nameArg.text, fields };\n}\n\n/** Parse one TS/TSX source file's text for Drizzle table definitions. */\nexport function parseDrizzleFile(sourceText: string, fileName: string): ParsedDrizzleTable[] {\n const sf = ts.createSourceFile(fileName, sourceText, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TSX);\n const tableImportNames = collectDrizzleTableImportNames(sf);\n if (tableImportNames.size === 0) return [];\n\n const tables: ParsedDrizzleTable[] = [];\n const visit = (node: ts.Node): void => {\n if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && tableImportNames.has(node.expression.text)) {\n const table = parseDrizzleTableCall(node);\n if (table) tables.push(table);\n }\n ts.forEachChild(node, visit);\n };\n visit(sf);\n return tables;\n}\n","import ts from 'typescript';\nimport type { DatabaseField } from '../../core-open/index.js';\n\n/**\n * Structural parser for TypeORM `@Entity()`-decorated classes, via the\n * TypeScript compiler API's syntactic parser (same tool as\n * `engine/ts-resolver.ts`, no `ts.Program`/type-checker required for a\n * per-file decorator/property walk).\n *\n * Extracts only: the table name (the decorator's string arg, or its `name`\n * option, or else the class name), and per property carrying a recognized\n * column/relation decorator — the property name, its declared TS type\n * (never evaluated), and which decorator flags apply. It never reads a\n * decorator argument's contents beyond a literal `name`/table-name string —\n * see `packages/vibgrate-hcs/node/src/extractors/entities.ts` for a design\n * reference (a different package's TypeORM-facing extractor); this is a\n * fresh implementation using this package's TS-compiler-API conventions.\n */\n\nexport interface ParsedTypeOrmEntity {\n name: string;\n fields: DatabaseField[];\n}\n\nconst COLUMN_DECORATORS = new Set(['Column', 'PrimaryColumn', 'PrimaryGeneratedColumn']);\nconst RELATION_DECORATORS = new Set(['OneToMany', 'ManyToOne', 'ManyToMany', 'OneToOne', 'JoinColumn']);\nconst MANY_RELATION_DECORATORS = new Set(['OneToMany', 'ManyToMany']);\nconst ID_DECORATORS = new Set(['PrimaryColumn', 'PrimaryGeneratedColumn']);\n\ninterface DecoratorInfo {\n name: string;\n args: readonly ts.Expression[];\n}\n\nfunction decoratorInfo(dec: ts.Decorator): DecoratorInfo | null {\n const expr = dec.expression;\n if (ts.isCallExpression(expr) && ts.isIdentifier(expr.expression)) {\n return { name: expr.expression.text, args: expr.arguments };\n }\n if (ts.isIdentifier(expr)) return { name: expr.text, args: [] };\n return null;\n}\n\nfunction decoratorsOf(node: ts.HasDecorators): DecoratorInfo[] {\n const decs = ts.getDecorators(node) ?? [];\n const out: DecoratorInfo[] = [];\n for (const d of decs) {\n const info = decoratorInfo(d);\n if (info) out.push(info);\n }\n return out;\n}\n\n/** Read a string literal from either the decorator's first positional arg\n * (`@Entity('users')`) or a named option on an object-literal first arg\n * (`@Entity({ name: 'users' })`) — never anything beyond that literal. */\nfunction stringOrNamedArg(args: readonly ts.Expression[], propName: string): string | null {\n const first = args[0];\n if (!first) return null;\n if (ts.isStringLiteral(first)) return first.text;\n if (ts.isObjectLiteralExpression(first)) {\n for (const prop of first.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === propName &&\n ts.isStringLiteral(prop.initializer)\n ) {\n return prop.initializer.text;\n }\n }\n }\n return null;\n}\n\nfunction parseEntity(cls: ts.ClassDeclaration, entityDec: DecoratorInfo): ParsedTypeOrmEntity {\n const tableName = stringOrNamedArg(entityDec.args, 'name') ?? cls.name!.text;\n const fields: DatabaseField[] = [];\n\n for (const member of cls.members) {\n if (!ts.isPropertyDeclaration(member) || !ts.isIdentifier(member.name)) continue;\n const decNames = new Set(decoratorsOf(member).map((d) => d.name));\n const isColumn = [...decNames].some((n) => COLUMN_DECORATORS.has(n));\n const isRelation = [...decNames].some((n) => RELATION_DECORATORS.has(n));\n if (!isColumn && !isRelation) continue; // not a recognized column/relation property\n\n fields.push({\n name: member.name.text,\n type: member.type ? member.type.getText() : 'unknown',\n isList: [...decNames].some((n) => MANY_RELATION_DECORATORS.has(n)),\n isOptional: member.questionToken !== undefined,\n isRelation,\n isId: [...decNames].some((n) => ID_DECORATORS.has(n)),\n isUnique: false,\n });\n }\n\n return { name: tableName, fields: fields.sort((a, b) => a.name.localeCompare(b.name)) };\n}\n\n/** Parse one TS source file's text for TypeORM `@Entity()` classes. */\nexport function parseTypeOrmFile(sourceText: string, fileName: string): ParsedTypeOrmEntity[] {\n const sf = ts.createSourceFile(fileName, sourceText, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);\n const entities: ParsedTypeOrmEntity[] = [];\n\n const visit = (node: ts.Node): void => {\n if (ts.isClassDeclaration(node) && node.name) {\n const entityDec = decoratorsOf(node).find((d) => d.name === 'Entity');\n if (entityDec) entities.push(parseEntity(node, entityDec));\n }\n ts.forEachChild(node, visit);\n };\n visit(sf);\n return entities;\n}\n","import * as path from 'node:path';\nimport type {\n ProjectScan,\n DatabaseSchemaResult,\n DatabaseSchemaProjectSummary,\n DatabaseModel,\n DatabaseModelSource,\n DatabaseField,\n DatabaseEnum,\n} from '../../core-open/index.js';\nimport { FileCache, findFiles, readTextFile } from '../../core-open/index.js';\nimport { parseCreateTableStatements } from './database-schema-sql.js';\nimport { parseDrizzleFile } from './database-schema-drizzle.js';\nimport { parseTypeOrmFile } from './database-schema-typeorm.js';\n\n/**\n * Structured database-schema scanner, merging facts from five sources into\n * one `DatabaseSchemaResult`:\n *\n * 1. **Prisma** — `schema.prisma` / `*.prisma` files (a small, well-defined DSL).\n * 2. **Raw SQL migrations** — `CREATE TABLE` statements in `.sql` files.\n * 3. **SQL Server Database Projects** — `.sql` table scripts under a `.sqlproj`'s\n * directory tree, parsed with the same SQL parser as (2).\n * 4. **Drizzle ORM** — `pgTable`/`mysqlTable`/`sqliteTable` calls.\n * 5. **TypeORM** — `@Entity()`-decorated classes.\n *\n * Every source extracts structured schema facts only — table/model/column\n * names, types, relation/key flags — never raw source lines, connection\n * strings, or attribute/annotation *values* beyond what's documented per\n * source. This intentionally never reads or stores the `url` line of a\n * Prisma `datasource` block (a credential/connection string, even when it's\n * `env(\"DATABASE_URL\")`), and the raw-SQL sources additionally strip any line\n * that looks like a URL with embedded credentials as defense in depth. See\n * the doc comment at the top of `advanced-analysis.ts` for why the removed\n * `dataStores` scanner (which regex-scraped raw source lines) was removed and\n * why this discipline matters.\n *\n * Models are tagged with a `source` (`DatabaseModelSource`) and the file(s)\n * they came from, and are **never merged/deduped by name across sources** —\n * a `users` table found in a SQL migration and a `User` Prisma model are not\n * assumed to be the same thing just because their names are similar.\n */\n\nconst SCALAR_TYPES = new Set([\n 'String', 'Int', 'Float', 'Boolean', 'DateTime', 'Json', 'Bytes', 'Decimal', 'BigInt',\n]);\n\ninterface RawField {\n name: string;\n /** Raw type token as written, e.g. `Post[]`, `String?`, `User` */\n rawType: string;\n attrs: string[];\n}\n\ninterface RawModel {\n name: string;\n fields: RawField[];\n}\n\n/** Find all .prisma files under rootDir (respecting the shared file cache / ignore rules). */\nasync function findPrismaFiles(rootDir: string, cache?: FileCache): Promise<string[]> {\n if (cache) {\n const entries = await cache.walkDir(rootDir);\n return entries.filter((e) => e.isFile && e.name.endsWith('.prisma')).map((e) => e.absPath);\n }\n return findFiles(rootDir, (name) => name.endsWith('.prisma'));\n}\n\nfunction normalizeRel(relPath: string): string {\n return relPath.replace(/\\\\/g, '/');\n}\n\n/** Extract top-level `keyword Name { ... }` blocks (Prisma blocks never nest braces). */\nfunction extractBlocks(raw: string, keyword: string): Array<{ name: string; body: string }> {\n const re = new RegExp(`${keyword}\\\\s+(\\\\w+)\\\\s*\\\\{([^}]*)\\\\}`, 'gs');\n const blocks: Array<{ name: string; body: string }> = [];\n let match: RegExpExecArray | null;\n while ((match = re.exec(raw)) !== null) {\n blocks.push({ name: match[1], body: match[2] });\n }\n return blocks;\n}\n\n/**\n * Datasource provider only — the `url` line (a connection string / credential,\n * even in its usual `env(\"DATABASE_URL\")` form) is never inspected or captured.\n */\nfunction extractDatasourceProviders(raw: string): string[] {\n const providers: string[] = [];\n for (const block of extractBlocks(raw, 'datasource')) {\n const m = block.body.match(/(?:^|\\n)\\s*provider\\s*=\\s*\"([^\"]+)\"/);\n if (m) providers.push(m[1]);\n }\n return providers;\n}\n\nfunction extractModels(raw: string): RawModel[] {\n return extractBlocks(raw, 'model').map((block) => ({\n name: block.name,\n fields: parseFieldLines(block.body),\n }));\n}\n\nfunction extractEnums(raw: string): DatabaseEnum[] {\n return extractBlocks(raw, 'enum').map((block) => {\n const values: string[] = [];\n for (const line of block.body.split('\\n')) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('@@')) continue;\n const token = trimmed.split(/\\s+/)[0];\n if (token) values.push(token);\n }\n return { name: block.name, values: [...new Set(values)].sort() };\n });\n}\n\nfunction parseFieldLines(body: string): RawField[] {\n const fields: RawField[] = [];\n for (const rawLine of body.split('\\n')) {\n const trimmed = rawLine.trim();\n if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('@@') || trimmed.startsWith('/*')) continue;\n\n const tokens = trimmed.split(/\\s+/);\n if (tokens.length < 2) continue;\n const [name, rawType] = tokens;\n // Field names/types in Prisma are plain identifiers; skip anything that\n // doesn't look like one (defensive against malformed/partial lines).\n if (!/^\\w+$/.test(name)) continue;\n\n const attrs = [...trimmed.matchAll(/@(\\w+)/g)].map((m) => m[1]);\n fields.push({ name, rawType, attrs });\n }\n return fields;\n}\n\nfunction finalizeField(field: RawField, modelNames: Set<string>): DatabaseField {\n const isList = field.rawType.includes('[]');\n const isOptional = field.rawType.includes('?');\n const baseType = field.rawType.replace(/\\[\\]/g, '').replace(/\\?/g, '');\n const isRelation = field.attrs.includes('relation') || (!SCALAR_TYPES.has(baseType) && modelNames.has(baseType));\n\n return {\n name: field.name,\n type: baseType,\n isList,\n isOptional,\n isRelation,\n isId: field.attrs.includes('id'),\n isUnique: field.attrs.includes('unique'),\n };\n}\n\nfunction findOwningProject(fileRel: string, projects: ProjectScan[]): ProjectScan | undefined {\n let best: ProjectScan | undefined;\n let bestLen = -1;\n for (const project of projects) {\n const projPath = project.path === '.' ? '' : normalizeRel(project.path).replace(/\\/$/, '');\n const matches = projPath === '' || fileRel === projPath || fileRel.startsWith(`${projPath}/`);\n if (matches && projPath.length > bestLen) {\n best = project;\n bestLen = projPath.length;\n }\n }\n return best;\n}\n\nfunction buildProjectBreakdown(\n projects: ProjectScan[],\n filesScanned: string[],\n modelNamesByFile: Map<string, Set<string>>,\n enumNamesByFile: Map<string, Set<string>>,\n): DatabaseSchemaProjectSummary[] {\n const byProject = new Map<string, { files: Set<string>; models: Set<string>; enums: Set<string> }>();\n\n for (const fileRel of filesScanned) {\n const owner = findOwningProject(fileRel, projects);\n const key = owner?.path ?? '.';\n if (!byProject.has(key)) byProject.set(key, { files: new Set(), models: new Set(), enums: new Set() });\n const bucket = byProject.get(key)!;\n bucket.files.add(fileRel);\n for (const name of modelNamesByFile.get(fileRel) ?? []) bucket.models.add(name);\n for (const name of enumNamesByFile.get(fileRel) ?? []) bucket.enums.add(name);\n }\n\n return [...byProject.entries()]\n .map(([project, bucket]) => ({\n project,\n filesScanned: [...bucket.files].sort(),\n models: [...bucket.models].sort(),\n enums: [...bucket.enums].sort(),\n }))\n .sort((a, b) => a.project.localeCompare(b.project));\n}\n\ninterface PrismaSourceResult {\n models: DatabaseModel[];\n enums: DatabaseEnum[];\n providers: string[];\n filesScanned: string[];\n enumNamesByFile: Map<string, Set<string>>;\n}\n\n/** Scan a repository tree for Prisma schema files and extract structured facts. */\nasync function scanPrismaSource(rootDir: string, cache?: FileCache): Promise<PrismaSourceResult> {\n const filePaths = await findPrismaFiles(rootDir, cache);\n\n const providers = new Set<string>();\n const modelsByFile = new Map<string, RawModel[]>();\n const enumsByFile = new Map<string, DatabaseEnum[]>();\n const filesScanned: string[] = [];\n\n for (const filePath of filePaths) {\n let raw = '';\n try {\n raw = cache ? await cache.readTextFile(filePath) : await readTextFile(filePath);\n } catch {\n continue;\n }\n if (!raw.trim()) continue;\n\n const rel = normalizeRel(path.relative(rootDir, filePath));\n filesScanned.push(rel);\n\n for (const provider of extractDatasourceProviders(raw)) providers.add(provider);\n modelsByFile.set(rel, extractModels(raw));\n enumsByFile.set(rel, extractEnums(raw));\n }\n\n const modelNameSet = new Set<string>();\n for (const models of modelsByFile.values()) {\n for (const m of models) modelNameSet.add(m.name);\n }\n\n const modelMap = new Map<string, { name: string; fields: DatabaseField[]; files: Set<string> }>();\n for (const [fileRel, rawModels] of modelsByFile.entries()) {\n for (const rawModel of rawModels) {\n const fields = rawModel.fields.map((f) => finalizeField(f, modelNameSet));\n const existing = modelMap.get(rawModel.name);\n if (!existing) {\n modelMap.set(rawModel.name, { name: rawModel.name, fields, files: new Set([fileRel]) });\n continue;\n }\n existing.files.add(fileRel);\n const seen = new Set(existing.fields.map((f) => f.name));\n for (const field of fields) {\n if (!seen.has(field.name)) {\n existing.fields.push(field);\n seen.add(field.name);\n }\n }\n }\n }\n\n const models: DatabaseModel[] = [...modelMap.values()]\n .map((m) => ({\n name: m.name,\n fields: [...m.fields].sort((a, b) => a.name.localeCompare(b.name)),\n source: 'prisma' as const,\n files: [...m.files].sort(),\n }))\n .sort((a, b) => a.name.localeCompare(b.name));\n\n const enumMap = new Map<string, DatabaseEnum>();\n for (const enums of enumsByFile.values()) {\n for (const e of enums) {\n if (!enumMap.has(e.name)) enumMap.set(e.name, e);\n }\n }\n const enums = [...enumMap.values()]\n .map((e) => ({ name: e.name, values: [...e.values].sort() }))\n .sort((a, b) => a.name.localeCompare(b.name));\n\n const enumNamesByFile = new Map<string, Set<string>>();\n for (const [fileRel, es] of enumsByFile.entries()) {\n enumNamesByFile.set(fileRel, new Set(es.map((e) => e.name)));\n }\n\n return { models, enums, providers: [...providers].sort(), filesScanned: filesScanned.sort(), enumNamesByFile };\n}\n\ninterface SourceScanResult {\n models: DatabaseModel[];\n filesScanned: string[];\n}\n\nfunction isSqlFile(name: string): boolean {\n return name.endsWith('.sql');\n}\n\nasync function readFileSafely(filePath: string, cache?: FileCache): Promise<string | null> {\n try {\n return cache ? await cache.readTextFile(filePath) : await readTextFile(filePath);\n } catch {\n return null;\n }\n}\n\n/**\n * Parse `CREATE TABLE` statements out of a set of `.sql` files and turn them\n * into `DatabaseModel`s for the given source. Shared by the raw-SQL-migrations\n * source and the `.sqlproj` source. The first `CREATE TABLE` for a given\n * table name wins — across files too (files are processed in sorted, i.e.\n * deterministic, order) — matching `parseCreateTableStatements`'s\n * within-a-file behaviour.\n */\nasync function scanSqlSource(\n rootDir: string,\n filePaths: string[],\n source: DatabaseModelSource,\n cache?: FileCache,\n): Promise<SourceScanResult> {\n const sortedPaths = [...filePaths].sort((a, b) => a.localeCompare(b));\n const seenTables = new Set<string>();\n const models: DatabaseModel[] = [];\n const filesScanned: string[] = [];\n\n for (const filePath of sortedPaths) {\n const raw = await readFileSafely(filePath, cache);\n if (raw == null || !raw.trim()) continue;\n\n const tables = parseCreateTableStatements(raw);\n if (tables.length === 0) continue;\n\n const rel = normalizeRel(path.relative(rootDir, filePath));\n filesScanned.push(rel);\n for (const t of tables) {\n if (seenTables.has(t.name)) continue;\n seenTables.add(t.name);\n models.push({\n name: t.name,\n fields: [...t.fields].sort((a, b) => a.name.localeCompare(b.name)),\n source,\n files: [rel],\n });\n }\n }\n\n return { models: models.sort((a, b) => a.name.localeCompare(b.name)), filesScanned: filesScanned.sort() };\n}\n\nasync function findSqlprojFiles(rootDir: string, cache?: FileCache): Promise<string[]> {\n return cache ? cache.findFiles(rootDir, (name) => name.endsWith('.sqlproj')) : findFiles(rootDir, (name) => name.endsWith('.sqlproj'));\n}\n\n/**\n * `.sqlproj` (SQL Server Database Project) table scripts, discovered by\n * globbing for `.sql` files anywhere under a `.sqlproj`'s directory tree\n * (commonly `dbo/Tables/*.sql`, but not assumed — any layout is scanned) and\n * parsed with the same `CREATE TABLE` parser as raw SQL migrations.\n */\nasync function scanSqlprojSource(rootDir: string, cache?: FileCache): Promise<SourceScanResult & { sqlAbsPaths: Set<string> }> {\n const sqlprojPaths = await findSqlprojFiles(rootDir, cache);\n const sqlAbsPaths = new Set<string>();\n for (const sqlprojPath of sqlprojPaths) {\n const dir = path.dirname(sqlprojPath);\n const files = cache ? await cache.findFiles(dir, isSqlFile) : await findFiles(dir, isSqlFile);\n for (const f of files) sqlAbsPaths.add(f);\n }\n const result = await scanSqlSource(rootDir, [...sqlAbsPaths], 'sqlproj', cache);\n return { ...result, sqlAbsPaths };\n}\n\n/**\n * Raw SQL migrations — every other `.sql` file in the repo (commonly under\n * `migrations/`, `db/migrate/`, `sql/`, but scanned repo-wide), excluding any\n * already attributed to a `.sqlproj`'s table scripts so the same file is\n * never double-counted under two sources.\n */\nasync function scanSqlMigrationsSource(rootDir: string, excludeAbsPaths: Set<string>, cache?: FileCache): Promise<SourceScanResult> {\n const allSqlFiles = cache ? await cache.findFiles(rootDir, isSqlFile) : await findFiles(rootDir, isSqlFile);\n const migrationFiles = allSqlFiles.filter((f) => !excludeAbsPaths.has(f));\n return scanSqlSource(rootDir, migrationFiles, 'sql-migration', cache);\n}\n\nfunction isTsSourceFile(name: string): boolean {\n return (name.endsWith('.ts') || name.endsWith('.tsx')) && !name.endsWith('.d.ts');\n}\n\nasync function findTsSourceFiles(rootDir: string, cache?: FileCache): Promise<string[]> {\n return cache ? cache.findFiles(rootDir, isTsSourceFile) : findFiles(rootDir, isTsSourceFile);\n}\n\n/** Drizzle ORM table definitions (`pgTable`/`mysqlTable`/`sqliteTable`). */\nasync function scanDrizzleSource(rootDir: string, cache?: FileCache): Promise<SourceScanResult> {\n const filePaths = (await findTsSourceFiles(rootDir, cache)).sort((a, b) => a.localeCompare(b));\n const seenTables = new Set<string>();\n const models: DatabaseModel[] = [];\n const filesScanned: string[] = [];\n\n for (const filePath of filePaths) {\n const raw = await readFileSafely(filePath, cache);\n // Cheap pre-filter before parsing: a Drizzle table file must import from\n // 'drizzle-orm'.\n if (raw == null || !raw.includes('drizzle-orm')) continue;\n\n const tables = parseDrizzleFile(raw, filePath);\n if (tables.length === 0) continue;\n\n const rel = normalizeRel(path.relative(rootDir, filePath));\n filesScanned.push(rel);\n for (const t of tables) {\n if (seenTables.has(t.name)) continue;\n seenTables.add(t.name);\n models.push({\n name: t.name,\n fields: [...t.fields].sort((a, b) => a.name.localeCompare(b.name)),\n source: 'drizzle',\n files: [rel],\n });\n }\n }\n\n return { models: models.sort((a, b) => a.name.localeCompare(b.name)), filesScanned: filesScanned.sort() };\n}\n\n/** TypeORM `@Entity()`-decorated classes. */\nasync function scanTypeOrmSource(rootDir: string, cache?: FileCache): Promise<SourceScanResult> {\n const filePaths = (await findTsSourceFiles(rootDir, cache)).sort((a, b) => a.localeCompare(b));\n const seenTables = new Set<string>();\n const models: DatabaseModel[] = [];\n const filesScanned: string[] = [];\n\n for (const filePath of filePaths) {\n const raw = await readFileSafely(filePath, cache);\n // Cheap pre-filter before parsing: a TypeORM entity file must use @Entity.\n if (raw == null || !raw.includes('@Entity')) continue;\n\n const entities = parseTypeOrmFile(raw, filePath);\n if (entities.length === 0) continue;\n\n const rel = normalizeRel(path.relative(rootDir, filePath));\n filesScanned.push(rel);\n for (const e of entities) {\n if (seenTables.has(e.name)) continue;\n seenTables.add(e.name);\n models.push({ name: e.name, fields: e.fields, source: 'typeorm', files: [rel] });\n }\n }\n\n return { models: models.sort((a, b) => a.name.localeCompare(b.name)), filesScanned: filesScanned.sort() };\n}\n\n/**\n * Scan a repository tree for database schema facts across all supported\n * sources (Prisma, raw SQL migrations, `.sqlproj` table scripts, Drizzle,\n * TypeORM) and merge them into one `DatabaseSchemaResult`. Returns\n * `undefined` when nothing was found in any source (distinct from \"scanned\n * and found nothing\").\n */\nexport async function scanDatabaseSchema(\n rootDir: string,\n projects: ProjectScan[],\n cache?: FileCache,\n): Promise<DatabaseSchemaResult | undefined> {\n const prisma = await scanPrismaSource(rootDir, cache);\n const sqlproj = await scanSqlprojSource(rootDir, cache);\n const sqlMigrations = await scanSqlMigrationsSource(rootDir, sqlproj.sqlAbsPaths, cache);\n const drizzle = await scanDrizzleSource(rootDir, cache);\n const typeorm = await scanTypeOrmSource(rootDir, cache);\n\n const models = [...prisma.models, ...sqlMigrations.models, ...sqlproj.models, ...drizzle.models, ...typeorm.models].sort(\n (a, b) => a.name.localeCompare(b.name) || a.source.localeCompare(b.source),\n );\n\n if (models.length === 0 && prisma.enums.length === 0) return undefined;\n\n const filesScanned = [\n ...new Set([...prisma.filesScanned, ...sqlMigrations.filesScanned, ...sqlproj.filesScanned, ...drizzle.filesScanned, ...typeorm.filesScanned]),\n ].sort();\n\n const modelNamesByFile = new Map<string, Set<string>>();\n for (const m of models) {\n for (const f of m.files) {\n if (!modelNamesByFile.has(f)) modelNamesByFile.set(f, new Set());\n modelNamesByFile.get(f)!.add(m.name);\n }\n }\n\n return {\n providers: prisma.providers,\n models,\n enums: prisma.enums,\n filesScanned,\n projects: buildProjectBreakdown(projects, filesScanned, modelNamesByFile, prisma.enumNamesByFile),\n };\n}\n","import type { FileCache } from '../../core-open/index.js';\n\nconst UI_EXTENSIONS = new Set([\n '.tsx', '.jsx', '.ts', '.js', '.vue', '.svelte', '.html', '.mdx', '.json', '.yml', '.yaml',\n]);\n\nconst HIGH_SIGNAL_DEPENDENCIES = new Set([\n 'stripe',\n 'posthog-js',\n 'posthog-node',\n '@sentry/node',\n '@sentry/browser',\n '@sentry/react',\n 'next-auth',\n 'firebase',\n 'auth0',\n '@auth0/auth0-react',\n '@supabase/supabase-js',\n 'supabase',\n 'clerk',\n '@clerk/clerk-js',\n '@clerk/react',\n]);\n\nconst GENERIC_LOW_SIGNAL = new Set(['welcome', 'home', 'click here', 'learn more', 'submit', 'cancel']);\n\nexport type UiEvidenceKind =\n | 'route'\n | 'nav'\n | 'title'\n | 'heading'\n | 'cta'\n | 'copy'\n | 'dependency'\n | 'feature_flag';\n\nexport interface UiEvidenceItem {\n kind: UiEvidenceKind;\n value: string;\n file: string;\n weight: number;\n}\n\nexport interface UiPurposeResult {\n enabled: boolean;\n detectedFrameworks: string[];\n evidenceCount: number;\n capped: boolean;\n topEvidence: UiEvidenceItem[];\n unknownSignals: string[];\n}\n\nexport async function scanUiPurpose(rootDir: string, fileCache: FileCache, maxItems = 300): Promise<UiPurposeResult> {\n const entries = await fileCache.walkDir(rootDir);\n const files = entries.filter((e) => e.isFile);\n\n // Collect all package.json files (not inside node_modules) to detect frameworks\n const packageJsonEntries = files.filter(\n (e) => e.relPath.endsWith('package.json') && !e.relPath.includes('node_modules'),\n );\n const allPkgJsons: Record<string, unknown>[] = [];\n for (const entry of packageJsonEntries) {\n try {\n allPkgJsons.push(JSON.parse(await fileCache.readTextFile(entry.absPath)) as Record<string, unknown>);\n } catch {\n // skip malformed package.json\n }\n }\n\n const frameworks = detectFrameworksFromAll(allPkgJsons);\n const items: UiEvidenceItem[] = [];\n\n for (const entry of files) {\n const ext = extension(entry.relPath);\n if (!UI_EXTENSIONS.has(ext)) continue;\n\n if (!isLikelyUiPath(entry.relPath)) {\n // keep route hints even for backend/router paths\n const routeHints = extractRouteHints(entry.relPath, frameworks);\n if (routeHints.length > 0) {\n items.push(...routeHints.map((r) => ({ ...r, file: entry.relPath })));\n }\n continue;\n }\n\n const routeHints = extractRouteHints(entry.relPath, frameworks);\n if (routeHints.length > 0) {\n items.push(...routeHints.map((r) => ({ ...r, file: entry.relPath })));\n }\n\n const src = await fileCache.readTextFile(entry.absPath);\n if (!src || src.length > 512_000) continue;\n\n const strings = extractUiStrings(src);\n for (const text of strings) {\n const kind = classifyString(text);\n const weight = scoreString(kind, text);\n items.push({ kind, value: text, file: entry.relPath, weight });\n }\n\n if (/(featureFlag|FEATURE_FLAG|launchDarkly|isFeatureEnabled|flags\\.)/.test(src)) {\n items.push({ kind: 'feature_flag', value: `flags in ${entry.relPath}`, file: entry.relPath, weight: 2 });\n }\n }\n\n for (const pkg of allPkgJsons) {\n const deps = getDependencies(pkg);\n for (const [name, version] of deps) {\n if (HIGH_SIGNAL_DEPENDENCIES.has(name)) {\n items.push({ kind: 'dependency', value: `${name}@${version}`, file: 'package.json', weight: 4 });\n }\n }\n }\n\n const deduped = dedupeByKindValue(items).sort((a, b) => b.weight - a.weight || a.value.localeCompare(b.value));\n const cappedItems = deduped.slice(0, maxItems);\n\n const unknownSignals = buildUnknowns(cappedItems);\n\n return {\n enabled: true,\n detectedFrameworks: frameworks,\n evidenceCount: deduped.length,\n capped: deduped.length > cappedItems.length,\n topEvidence: cappedItems,\n unknownSignals,\n };\n}\n\nfunction extension(relPath: string): string {\n const i = relPath.lastIndexOf('.');\n return i === -1 ? '' : relPath.slice(i).toLowerCase();\n}\n\nfunction isLikelyUiPath(relPath: string): boolean {\n const lower = relPath.toLowerCase();\n return (\n lower.startsWith('pages/') || lower.includes('/pages/') ||\n lower.startsWith('app/') || lower.includes('/app/') ||\n lower.startsWith('components/') || lower.includes('/components/') ||\n lower.startsWith('ui/') || lower.includes('/ui/') ||\n lower.startsWith('views/') || lower.includes('/views/') ||\n lower.includes('/routes') || lower.startsWith('routes') ||\n lower.includes('/router') || lower.startsWith('router') ||\n lower.startsWith('locales/') || lower.includes('/locales/') ||\n lower.startsWith('i18n/') || lower.includes('/i18n/') ||\n lower.endsWith('.html') ||\n lower.endsWith('.mdx')\n );\n}\n\nfunction detectFrameworksFromAll(pkgJsons: Record<string, unknown>[]): string[] {\n const hits = new Set<string>();\n for (const pkgJson of pkgJsons) {\n const deps = {\n ...(asRecord(pkgJson.dependencies)),\n ...(asRecord(pkgJson.devDependencies)),\n };\n if (deps.next) hits.add('nextjs');\n if (deps.nuxt || deps.nuxt3) hits.add('nuxt');\n if (deps.react) hits.add('react');\n if (deps.vue) hits.add('vue');\n if (deps.svelte) hits.add('svelte');\n if (deps['@angular/core']) hits.add('angular');\n }\n return Array.from(hits);\n}\n\nfunction extractRouteHints(relPath: string, frameworks: string[]): Array<Omit<UiEvidenceItem, 'file'>> {\n const items: Array<Omit<UiEvidenceItem, 'file'>> = [];\n\n if (frameworks.includes('nextjs')) {\n const m = relPath.match(/^(?:src\\/)?(pages|app)\\/(.+)\\.(tsx|jsx|ts|js)$/);\n if (m) {\n let route = '/' + m[2]\n .replace(/(^|\\/)page$/i, '')\n .replace(/(^|\\/)route$/i, '')\n .replace(/index$/i, '')\n .replace(/\\[(?:\\.\\.\\.)?(.+?)\\]/g, ':$1')\n .replace(/\\/+/g, '/');\n if (route !== '/' && route.endsWith('/')) route = route.slice(0, -1);\n items.push({ kind: 'route', value: route || '/', weight: 5 });\n }\n }\n\n if (/(^|\\/)(routes?|router)\\.(ts|js|json)$/.test(relPath) || relPath.includes('/router/')) {\n items.push({ kind: 'route', value: `route config: ${relPath}`, weight: 3 });\n }\n\n return items;\n}\n\nfunction extractUiStrings(src: string): string[] {\n const out: string[] = [];\n\n const textNodeRegex = />\\s*([A-Za-z0-9][^<>]{2,120}?)\\s*</g;\n for (const m of src.matchAll(textNodeRegex)) {\n const s = normaliseText(m[1] ?? '');\n if (isUsefulString(s)) out.push(s);\n }\n\n const titleRegex = /<title>\\s*([^<]{2,120})\\s*<\\/title>|title\\s*[:=]\\s*[\"'`](.{2,120}?)[\"'`]/g;\n for (const m of src.matchAll(titleRegex)) {\n const s = normaliseText((m[1] ?? m[2] ?? '').trim());\n if (isUsefulString(s)) out.push(s);\n }\n\n const attrRegex = /(?:aria-label|label|placeholder|alt)\\s*=\\s*[\"'`](.{2,120}?)[\"'`]/g;\n for (const m of src.matchAll(attrRegex)) {\n const s = normaliseText(m[1] ?? '');\n if (isUsefulString(s)) out.push(s);\n }\n\n const jsonValueRegex = /:\\s*[\"'`](.{2,140}?)[\"'`]\\s*[,\\n]/g;\n for (const m of src.matchAll(jsonValueRegex)) {\n const s = normaliseText(m[1] ?? '');\n if (isUsefulString(s)) out.push(s);\n }\n\n return out;\n}\n\nfunction classifyString(s: string): UiEvidenceKind {\n const lower = s.toLowerCase();\n if (/(pricing|plan|billing|subscription|trial|credit)/.test(lower)) return 'copy';\n if (/(sign in|sign up|log in|register|invite|workspace|organization|sso|oauth)/.test(lower)) return 'copy';\n if (/(dashboard|reports|settings|integrations|users|roles|permissions)/.test(lower)) return 'heading';\n if (/(get started|start|scan|generate|export|run|deploy|upgrade|analy[sz]e)/.test(lower)) return 'cta';\n if (/(overview|features|about|documentation|docs)/.test(lower)) return 'title';\n if (/(menu|navigation|sidebar|breadcrumb)/.test(lower)) return 'nav';\n return 'copy';\n}\n\nfunction scoreString(kind: UiEvidenceKind, value: string): number {\n const lower = value.toLowerCase();\n if (GENERIC_LOW_SIGNAL.has(lower)) return 0;\n\n let score = 1;\n if (kind === 'route') score += 4;\n if (kind === 'nav') score += 3;\n if (kind === 'title') score += 2;\n if (kind === 'heading') score += 2;\n if (kind === 'cta') score += 2;\n\n if (/(pricing|billing|subscription|auth|security|integration)/.test(lower)) score += 2;\n if (/(dashboard|report|scan|workspace|project|repository)/.test(lower)) score += 1;\n\n return score;\n}\n\nfunction dedupeByKindValue(items: UiEvidenceItem[]): UiEvidenceItem[] {\n const seen = new Map<string, UiEvidenceItem>();\n for (const item of items) {\n const key = `${item.kind}::${item.value.toLowerCase()}`;\n const prev = seen.get(key);\n if (!prev || item.weight > prev.weight) {\n seen.set(key, item);\n }\n }\n return Array.from(seen.values()).filter((i) => i.weight > 0);\n}\n\nfunction buildUnknowns(items: UiEvidenceItem[]): string[] {\n const unknowns: string[] = [];\n const hasPricing = items.some((i) => /pricing|billing|subscription|trial|credit/i.test(i.value));\n const hasAuth = items.some((i) => /sign in|sign up|login|auth|sso|oauth|invite/i.test(i.value));\n const hasIntegrations = items.some((i) => /integration|webhook|api key|connector/i.test(i.value));\n const hasRoutes = items.some((i) => i.kind === 'route');\n\n if (!hasPricing) unknowns.push('No pricing or billing evidence found.');\n if (!hasAuth) unknowns.push('No authentication or user access flow evidence found.');\n if (!hasIntegrations) unknowns.push('No integrations/connectors evidence found.');\n if (!hasRoutes) unknowns.push('No route structure evidence found.');\n\n return unknowns;\n}\n\nfunction asRecord(value: unknown): Record<string, string> {\n if (!value || typeof value !== 'object') return {};\n return value as Record<string, string>;\n}\n\nfunction getDependencies(pkgJson: Record<string, unknown>): Array<[string, string]> {\n return Object.entries(asRecord(pkgJson.dependencies));\n}\n\nfunction normaliseText(s: string): string {\n return s.replace(/\\s+/g, ' ').trim();\n}\n\nfunction isUsefulString(s: string): boolean {\n if (!s || s.length < 3 || s.length > 160) return false;\n if (/^[0-9_./-]+$/.test(s)) return false;\n if (/^(true|false|null|undefined)$/i.test(s)) return false;\n if (/[<>{}]/.test(s)) return false;\n if (/function\\s*\\(|=>|console\\.|import\\s+|export\\s+/.test(s)) return false;\n return true;\n}\n","// AUTO-GENERATED by scripts/build-standards-index.mjs. Do not edit by hand.\n// Source: ../vibgrate-website/data/json/standards-*.json + compliance-frameworks.json\n// Regenerate: node scripts/build-standards-index.mjs\n\nexport interface StandardIndexEntry {\n slug: string;\n name: string;\n category: string;\n domains: string[];\n frameworks: string[];\n projectTypes: string[];\n complianceRelevant: boolean;\n officialUrl: string | null;\n}\n\nexport interface ComplianceControlEntry {\n id: string;\n name: string;\n domain: string;\n}\n\nexport interface ComplianceFrameworkEntry {\n id: string;\n name: string;\n memberStandards: string[];\n controls: ComplianceControlEntry[];\n}\n\nexport const standardsIndex: StandardIndexEntry[] = [{\"slug\":\"adonet-4-8\",\"name\":\"ADO.NET 4.8 Specification\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"aicpa-soc-2-tsc\",\"name\":\"AICPA SOC 2 (Trust Services Criteria 2017, rev. 2022)\",\"category\":\"compliance\",\"domains\":[\"security\",\"governance\",\"privacy\"],\"frameworks\":[\"soc2\"],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":\"https://www.aicpa-cima.com/resources/landing/system-and-organization-controls-soc-suite-of-services\"},{\"slug\":\"amqp-1-0\",\"name\":\"AMQP 1.0 (OASIS)\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"archimate-3-2\",\"name\":\"Archimate 3.2\",\"category\":\"modeling\",\"domains\":[\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"argo-cd-appspec-v1\",\"name\":\"Argo CD AppSpec v1\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"aria-1-3\",\"name\":\"W3C ARIA 1.3\",\"category\":\"accessibility\",\"domains\":[\"accessibility\",\"frontend\"],\"frameworks\":[],\"projectTypes\":[\"web-app\",\"mobile\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"asyncapi-2-6\",\"name\":\"AsyncAPI 2.6\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"avro-1-11\",\"name\":\"Apache Avro 1.11\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"aws-well-architected-2023\",\"name\":\"AWS Well-Architected Framework 2023\",\"category\":\"cloud-architecture\",\"domains\":[\"cloud\",\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"azure-waf-2024\",\"name\":\"Azure Well-Architected Framework 2024\",\"category\":\"cloud-architecture\",\"domains\":[\"cloud\",\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"backstage-catalog-1-3\",\"name\":\"Backstage Software Catalog 1.3\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"bgp-4\",\"name\":\"BGP-4 (RFC 4271)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"bian-v10\",\"name\":\"BIAN Service Landscape v10\",\"category\":\"cloud-architecture\",\"domains\":[\"cloud\",\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"bpmn-2-0-2\",\"name\":\"BPMN 2.0.2\",\"category\":\"modeling\",\"domains\":[\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"bsimm-13\",\"name\":\"BSIMM13\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"c11\",\"name\":\"ISO/IEC 9899:2011 (C11)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"c18\",\"name\":\"ISO/IEC 9899:2018 (C18)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"capec-3-9\",\"name\":\"CAPEC v3.9\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"capnproto-0-9\",\"name\":\"Cap’n Proto 0.9\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"cbl-mariner-2-0\",\"name\":\"CBL-Mariner OS Spec 2.0\",\"category\":\"cloud-architecture\",\"domains\":[\"cloud\",\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"cbor-rfc-8949\",\"name\":\"CBOR (RFC 8949)\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ccpa\",\"name\":\"CCPA (AB 375)\",\"category\":\"compliance\",\"domains\":[\"security\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"cis-kubernetes-1-7\",\"name\":\"CIS Benchmarks Kubernetes v1.7\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"cloudevents-1-0\",\"name\":\"CloudEvents 1.0\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"cmmi-v2-0\",\"name\":\"CMMI v2.0\",\"category\":\"software-process\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"cmmn-1-1\",\"name\":\"CMMN 1.1\",\"category\":\"modeling\",\"domains\":[\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"cncf-cloud-native-v1\",\"name\":\"CNCF Cloud-Native Definition v1\",\"category\":\"cloud-architecture\",\"domains\":[\"cloud\",\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"commonmark-0-30\",\"name\":\"CommonMark 0.30\",\"category\":\"documentation\",\"domains\":[\"documentation\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"cpp-14\",\"name\":\"ISO/IEC 14882:2014 (C++14)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"cpp-17\",\"name\":\"ISO/IEC 14882:2017 (C++17)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"cpp-20\",\"name\":\"ISO/IEC 14882:2020 (C++20)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"cpp-23\",\"name\":\"ISO/IEC 14882:2023 (C++23)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"csharp-11\",\"name\":\"ECMA-334 6th (C# 11)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"csharp-2-0\",\"name\":\"ISO/IEC 23270:2006 (C# 2.0)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"csv-rfc-4180\",\"name\":\"CSV (RFC 4180)\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"cwe-4-11\",\"name\":\"MITRE CWE 4.11\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"cwt-rfc-8392\",\"name\":\"CBOR Web Token (RFC 8392)\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"cyclonedx-1-6\",\"name\":\"CycloneDX 1.6 (SBOM)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[\"nist-csf\"],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"dicom-2024a\",\"name\":\"DICOM PS3.0 2024a\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"did-core-1-0\",\"name\":\"W3C DID Core 1.0\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"dmn-1-4\",\"name\":\"DMN 1.4\",\"category\":\"modeling\",\"domains\":[\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"dns-rfc-1035\",\"name\":\"DNS (RFC 1035)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"docker-compose-v3\",\"name\":\"Docker Compose v3\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"dtd-1-2\",\"name\":\"DTD 1.2\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"elixir-1-17\",\"name\":\"Elixir 1.17\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"envoy-xds-v3\",\"name\":\"Envoy xDS v3\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"erlang-26\",\"name\":\"Erlang/OTP 26\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"eu-ai-act-2024\",\"name\":\"EU AI Act Proposal 2024\",\"category\":\"ai-governance\",\"domains\":[\"ai\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"ml\",\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"fedramp-moderate\",\"name\":\"FedRAMP Moderate Rev 5\",\"category\":\"compliance\",\"domains\":[\"security\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"fido2-webauthn-l2\",\"name\":\"FIDO2 WebAuthn Level 2\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"fix-5-0-sp2\",\"name\":\"FIX Protocol 5.0 SP2\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"flatbuffers-23-5\",\"name\":\"FlatBuffers 23.5\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ftps-rfc-4217\",\"name\":\"FTPS (RFC 4217)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"gcp-architecture-2023\",\"name\":\"Google Cloud Architecture Framework 2023\",\"category\":\"cloud-architecture\",\"domains\":[\"cloud\",\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"gdpr-eu-2016-679\",\"name\":\"GDPR (EU 2016/679)\",\"category\":\"compliance\",\"domains\":[\"security\",\"governance\"],\"frameworks\":[\"gdpr\"],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"git-spec\",\"name\":\"Git Spec (Distributed VC)\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"gitops-principles-v1\",\"name\":\"GitOps Principles v1\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"go-1-22\",\"name\":\"Go 1.22 Spec\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"graphql-2023\",\"name\":\"GraphQL July-2023 Spec\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"grpc-v1\",\"name\":\"gRPC Protocol v1\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"haskell-2010\",\"name\":\"Haskell 2010 Report\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"helm-chart-3-10\",\"name\":\"Helm Chart Spec v3.10\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"hipaa-security-rule\",\"name\":\"HIPAA Security Rule\",\"category\":\"compliance\",\"domains\":[\"security\",\"governance\"],\"frameworks\":[\"hipaa\"],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"hl7-fhir-r5\",\"name\":\"HL7 FHIR R5\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"http-1-0\",\"name\":\"HTTP/1.0 (RFC 1945)\",\"category\":\"web-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"web-app\",\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"http-1-1\",\"name\":\"HTTP/1.1 (RFC 7230–7235)\",\"category\":\"web-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"web-app\",\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"http-2\",\"name\":\"HTTP/2 (RFC 7540)\",\"category\":\"web-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"web-app\",\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"http-3\",\"name\":\"HTTP/3 (RFC 9114)\",\"category\":\"web-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"web-app\",\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"http-3-rfc-9114\",\"name\":\"HTTP/3 (RFC 9114)\",\"category\":\"web-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"web-app\",\"api\"],\"complianceRelevant\":false,\"officialUrl\":\"https://www.rfc-editor.org/rfc/rfc9114\"},{\"slug\":\"iec-61850-ed2-1\",\"name\":\"IEC 61850 Edition 2.1\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ieee-1012-2016\",\"name\":\"IEEE 1012-2016 (Verification & Validation)\",\"category\":\"software-process\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ieee-11073-20702\",\"name\":\"IEEE 11073-20702\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ieee-14764-2006\",\"name\":\"IEEE 14764-2006 (Software Maintenance)\",\"category\":\"software-process\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ieee-2410-2019\",\"name\":\"IEEE 2410-2019 (Bio-Open ID)\",\"category\":\"biometric\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"ieee-7001-2021\",\"name\":\"IEEE 7001-2021 (AI Transparency)\",\"category\":\"ai-governance\",\"domains\":[\"ai\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"ml\",\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"ieee-7002-2022\",\"name\":\"IEEE 7002-2022 (AI Privacy Data)\",\"category\":\"ai-governance\",\"domains\":[\"ai\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"ml\",\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"ieee-730-2014\",\"name\":\"IEEE 730-2014 (Software Quality)\",\"category\":\"software-process\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ieee-802-11ax\",\"name\":\"IEEE 802.11ax (Wi-Fi 6)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ieee-802-15-4-2020\",\"name\":\"IEEE 802.15.4-2020 (IoT WPAN)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ieee-802-1q-2018\",\"name\":\"IEEE 802.1Q-2018 (VLAN)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ieee-802-3-2022\",\"name\":\"IEEE 802.3-2022 (Ethernet)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ieee-829-2008\",\"name\":\"IEEE 829-2008 (Test Docs)\",\"category\":\"software-process\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"incits-459-2011\",\"name\":\"ANSI INCITS 459-2011 (JSON)\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ipv4\",\"name\":\"IPv4 (RFC 791)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ipv6\",\"name\":\"IPv6 (RFC 8200)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-12207-2017\",\"name\":\"ISO/IEC 12207:2017\",\"category\":\"software-process\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-15288-2015\",\"name\":\"ISO/IEC 15288:2015\",\"category\":\"software-process\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-15408-1-2022\",\"name\":\"ISO/IEC 15408-1:2022 (Common Criteria)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-15504\",\"name\":\"ISO/IEC 15504 (SPICE)\",\"category\":\"software-process\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-15926-2\",\"name\":\"ISO 15926 Part 2\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-18013-5-2021\",\"name\":\"ISO/IEC 18013-5:2021 (Mobile DL)\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-19770-1-2017\",\"name\":\"ISO/IEC 19770-1:2017 (IT Asset)\",\"category\":\"quality-management\",\"domains\":[\"process\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-19794-5-2011\",\"name\":\"ISO/IEC 19794-5:2011 (Face Images)\",\"category\":\"biometric\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-20022\",\"name\":\"ISO 20022 (Financial Messaging)\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-20922-2016\",\"name\":\"ISO/IEC 20922:2016 (AMQP 1.0)\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-21502-2020\",\"name\":\"ISO 21502:2020 (Project Management)\",\"category\":\"project-management\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-21504-2022\",\"name\":\"ISO 21504:2022 (Portfolio Management)\",\"category\":\"project-management\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-21511-2018\",\"name\":\"ISO 21511:2018 (Work Breakdown Structure)\",\"category\":\"project-management\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-22989-2022\",\"name\":\"ISO/IEC 22989:2022 (AI Concepts)\",\"category\":\"ai-governance\",\"domains\":[\"ai\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"ml\",\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-23053-2022\",\"name\":\"ISO/IEC 23053:2022 (AI Lifecycle)\",\"category\":\"ai-governance\",\"domains\":[\"ai\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"ml\",\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-23659-2024\",\"name\":\"ISO/IEC 23659:2024 (AI Risk Mgmt)\",\"category\":\"ai-governance\",\"domains\":[\"ai\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"ml\",\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-2382\",\"name\":\"ISO/IEC 2382 (IT Vocabulary)\",\"category\":\"software-process\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-24772-2-2023\",\"name\":\"ISO/IEC TR 24772-2:2023 (Safer Programming)\",\"category\":\"software-process\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-25010-2023\",\"name\":\"ISO/IEC 25010:2023 (Quality Model)\",\"category\":\"software-process\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-27001-2022\",\"name\":\"ISO/IEC 27001:2022\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-27002-2022\",\"name\":\"ISO/IEC 27002:2022\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-27017-2015\",\"name\":\"ISO/IEC 27017:2015 (Cloud Controls)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-27018-2019\",\"name\":\"ISO/IEC 27018:2019 (Cloud PII)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-27701-2019\",\"name\":\"ISO/IEC 27701:2019 (Privacy)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-29119-1-2022\",\"name\":\"ISO/IEC 29119-1:2022 (Software Testing)\",\"category\":\"software-process\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-29134-2017\",\"name\":\"ISO/IEC 29134:2017 (PIA)\",\"category\":\"compliance\",\"domains\":[\"security\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-29147-2018\",\"name\":\"ISO/IEC 29147:2018 (Vuln Disclosure)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-30107-3-2017\",\"name\":\"ISO/IEC 30107-3:2017 (PAD)\",\"category\":\"biometric\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-30111-2019\",\"name\":\"ISO/IEC 30111:2019 (Vulnerability Handling)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-38500-2015\",\"name\":\"ISO/IEC 38500:2015 (IT Governance)\",\"category\":\"quality-management\",\"domains\":[\"process\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-38505-1-2017\",\"name\":\"ISO/IEC 38505-1:2017 (Data Governance)\",\"category\":\"compliance\",\"domains\":[\"security\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-40500-2012\",\"name\":\"ISO/IEC 40500:2012 (WCAG 2.0)\",\"category\":\"accessibility\",\"domains\":[\"accessibility\",\"frontend\"],\"frameworks\":[],\"projectTypes\":[\"web-app\",\"mobile\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-7816-4-2020\",\"name\":\"ISO/IEC 7816-4:2020 (Smart Cards)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-8601-2019\",\"name\":\"ISO 8601:2019 (Date/Time)\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-9001-2015\",\"name\":\"ISO 9001:2015\",\"category\":\"quality-management\",\"domains\":[\"process\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-9126\",\"name\":\"ISO 9126 (Quality Model – Superseded)\",\"category\":\"quality-management\",\"domains\":[\"process\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"iso-9798-3-2014\",\"name\":\"ISO/IEC 9798-3:2014\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"iso-iec-27001-2022\",\"name\":\"ISO/IEC 27001:2022\",\"category\":\"compliance\",\"domains\":[\"security\",\"governance\"],\"frameworks\":[\"gdpr\",\"hipaa\",\"iso-27001\",\"soc2\"],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":\"https://www.iso.org/standard/27001\"},{\"slug\":\"iso-iec-27002-2022\",\"name\":\"ISO/IEC 27002:2022\",\"category\":\"compliance\",\"domains\":[\"security\"],\"frameworks\":[\"iso-27001\"],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":\"https://www.iso.org/standard/75652.html\"},{\"slug\":\"iso-iec-42001-2023\",\"name\":\"ISO/IEC 42001:2023 (AI management system)\",\"category\":\"ai-governance\",\"domains\":[\"ai\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"ml\",\"any\"],\"complianceRelevant\":true,\"officialUrl\":\"https://www.iso.org/standard/81230.html\"},{\"slug\":\"istio-api-1-21\",\"name\":\"Istio API v1.21\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"jaeger-trace-v1\",\"name\":\"Jaeger Trace Spec v1\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"java-se-17\",\"name\":\"Java SE 17 (JSR 392)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"java-se-8\",\"name\":\"Java SE 8 (JSR 337)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"javascript-es2024\",\"name\":\"ECMA-262 2024 (ES2024)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"javascript-es6\",\"name\":\"ECMA-262 2015 (ES6)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"jdbc-4-3\",\"name\":\"JDBC 4.3\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"json-api-1-1\",\"name\":\"JSON:API 1.1\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"json-rfc-8259\",\"name\":\"JSON (RFC 8259)\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"json-rpc-2-0\",\"name\":\"JSON-RPC 2.0\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"json-schema-2020-12\",\"name\":\"JSON Schema 2020-12\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"jws-rfc-7515\",\"name\":\"RFC 7515 (JWS)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"jwt-rfc-7519\",\"name\":\"JWT (RFC 7519)\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"kafka-protocol-3-7\",\"name\":\"Kafka Protocol 3.7\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"kotlin-2-0\",\"name\":\"Kotlin 2.0 Spec\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"kubernetes-1-28\",\"name\":\"Kubernetes API v1.28\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"matter-1-3\",\"name\":\"Matter 1.3\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"messagepack-2-3\",\"name\":\"MessagePack 2.3\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"mitre-attack-v14\",\"name\":\"MITRE ATT&CK v14\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"modbus-tcp-1-1b\",\"name\":\"Modbus TCP 1.1b\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"mqtt-5-0\",\"name\":\"MQTT 5.0 (OASIS)\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"nats-2-9\",\"name\":\"NATS Protocol 2.9\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"nfs-4-1\",\"name\":\"NFS 4.1 (RFC 8881)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"nist-800-171-r3\",\"name\":\"NIST SP 800-171 Rev 3\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"nist-800-53-r5\",\"name\":\"NIST SP 800-53 Rev 5\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[\"nist-csf\"],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"nist-ai-rmf-1-0\",\"name\":\"NIST AI RMF 1.0\",\"category\":\"ai-governance\",\"domains\":[\"ai\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"ml\",\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"nist-ccra\",\"name\":\"NIST Cloud Computing Ref Arch SP 500-292\",\"category\":\"cloud-architecture\",\"domains\":[\"cloud\",\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"nist-csf-2-0\",\"name\":\"NIST Cybersecurity Framework (CSF) 2.0\",\"category\":\"security\",\"domains\":[\"security\",\"governance\"],\"frameworks\":[\"nist-csf\"],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":\"https://www.nist.gov/cyberframework\"},{\"slug\":\"oas-json-schema-2020-12\",\"name\":\"OpenAPI JSON Schema Dialect 2020-12\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"oauth-1-0a\",\"name\":\"OAuth 1.0a (RFC 5849)\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"oauth-2-0\",\"name\":\"OAuth 2.0 (RFC 6749)\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"oauth-2-1\",\"name\":\"OAuth 2.1 (Draft)\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[\"iso-27001\",\"soc2\"],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"ocaml-5-2\",\"name\":\"OCaml 5.2 Spec\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"oci-image-1-1\",\"name\":\"OCI Image Spec 1.1\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"oci-runtime-1-1\",\"name\":\"OCI Runtime Spec 1.1\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"odata-4-01\",\"name\":\"OData 4.01\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"odbc-3-8\",\"name\":\"ODBC 3.8\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"odf-1-3\",\"name\":\"OpenDocument 1.3 (ISO/IEC 26300-1)\",\"category\":\"document-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"omg-mda-1-1\",\"name\":\"OMG MDA Guide v1.1\",\"category\":\"cloud-architecture\",\"domains\":[\"cloud\",\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ooxml-ecma-376-4\",\"name\":\"Office Open XML (ECMA-376 4th)\",\"category\":\"document-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"opc-ua-1-05\",\"name\":\"OPC UA 1.05\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"openapi-2-0\",\"name\":\"OpenAPI Specification 2.0 (Swagger)\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"openapi-3-0\",\"name\":\"OpenAPI Specification 3.0\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"openapi-3-1\",\"name\":\"OpenAPI Specification 3.1\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"openapi-specification-3-1-0\",\"name\":\"OpenAPI Specification 3.1.0\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":\"https://spec.openapis.org/oas/v3.1.0\"},{\"slug\":\"openflow-1-5\",\"name\":\"OpenFlow 1.5\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"openid-connect-1-0\",\"name\":\"OpenID Connect 1.0\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"openssf-scorecard-4-10\",\"name\":\"OpenSSF Scorecard 4.10\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"opentelemetry-1-0-0\",\"name\":\"OpenTelemetry 1.0.0\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"opentracing-1-3\",\"name\":\"OpenTracing 1.3\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"orc-1-8\",\"name\":\"Apache ORC 1.8\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"owasp-api-top-10-2023\",\"name\":\"OWASP API Security Top 10 (2023)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[\"pci-dss\",\"soc2\"],\"projectTypes\":[\"api\"],\"complianceRelevant\":true,\"officialUrl\":\"https://owasp.org/API-Security/editions/2023/en/0x11-t10/\"},{\"slug\":\"owasp-asvs-4-0\",\"name\":\"OWASP ASVS 4.0\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"owasp-asvs-5-0\",\"name\":\"OWASP Application Security Verification Standard (ASVS) 5.0\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[\"hipaa\",\"iso-27001\",\"pci-dss\",\"soc2\"],\"projectTypes\":[\"web-app\",\"api\"],\"complianceRelevant\":true,\"officialUrl\":\"https://owasp.org/www-project-application-security-verification-standard/\"},{\"slug\":\"owasp-top10-2023\",\"name\":\"OWASP Top 10 2023\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[\"pci-dss\"],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"parquet-2-0\",\"name\":\"Apache Parquet 2.0\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"pci-dss-4-0\",\"name\":\"PCI-DSS 4.0\",\"category\":\"compliance\",\"domains\":[\"security\",\"governance\"],\"frameworks\":[\"pci-dss\"],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"pdf-1-7\",\"name\":\"PDF 1.7 (ISO 32000-1)\",\"category\":\"document-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"pdfa-4\",\"name\":\"PDF/A-4 (ISO 19005-4:2020)\",\"category\":\"document-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"pep-8\",\"name\":\"Python PEP 8 (Style Guide)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"perl-5-38\",\"name\":\"Perl 5.38 Syntax\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"php-8-3\",\"name\":\"PHP 8.3 Spec\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"pkcs12-v1-1\",\"name\":\"PKCS #12 v1.1\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"pkcs7-rfc-5652\",\"name\":\"PKCS #7 / CMS (RFC 5652)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"pmi-pmbok-7\",\"name\":\"PMI PMBOK 7th Edition\",\"category\":\"project-management\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"prince2-7\",\"name\":\"PRINCE2 7\",\"category\":\"project-management\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"prolog-1995\",\"name\":\"ISO/IEC 13211-1:1995 (Prolog)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"prometheus-expo-0-0-4\",\"name\":\"Prometheus Exposition Format 0.0.4\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"protobuf-v3\",\"name\":\"Protocol Buffers v3\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"python-3-12\",\"name\":\"Python 3.12 (PEP 693)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"restructuredtext-1-0\",\"name\":\"reStructuredText 1.0\",\"category\":\"documentation\",\"domains\":[\"documentation\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"rfc-2119\",\"name\":\"RFC 2119 (Keyword Conventions)\",\"category\":\"documentation\",\"domains\":[\"documentation\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"rfc-3339\",\"name\":\"RFC 3339 (Date/Time Format)\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"rfc-5280\",\"name\":\"RFC 5280 (PKIX)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"rfc-6962\",\"name\":\"RFC 6962 (Cert Transparency)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"rfc-7636\",\"name\":\"RFC 7636 (PKCE)\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"rfc-9081\",\"name\":\"RFC 9081 (IPFS HTTP Gateway)\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"rfc-9193\",\"name\":\"RFC 9193 (SFrame Media Encryption)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"ruby-3-1\",\"name\":\"ISO/IEC 30170:2022 (Ruby 3.1)\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"rust-2024\",\"name\":\"Rust 1.78 Edition 2024\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"safe-6-0\",\"name\":\"SAFe 6.0\",\"category\":\"project-management\",\"domains\":[\"process\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"saml-2-0\",\"name\":\"SAML 2.0 (OASIS)\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"sbvr-1-5\",\"name\":\"SBVR 1.5\",\"category\":\"modeling\",\"domains\":[\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"scala-3-4\",\"name\":\"Scala 3.4 Reference\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"scim-2-0\",\"name\":\"SCIM 2.0 (RFC 7644)\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"section-508-2017\",\"name\":\"Section 508 Refresh (2017)\",\"category\":\"accessibility\",\"domains\":[\"accessibility\",\"frontend\"],\"frameworks\":[],\"projectTypes\":[\"web-app\",\"mobile\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"semver-2-0-0\",\"name\":\"SemVer 2.0.0\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sftp-rfc-9134\",\"name\":\"SFTP (RFC 9134)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"slsa-v1\",\"name\":\"SLSA v1 (Supply-Chain Levels)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[\"iso-27001\",\"nist-csf\"],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"smb-3-1-1\",\"name\":\"SMB 3.1.1\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"snmp-v3\",\"name\":\"SNMP v3 (RFC 3411-3418)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"soap-1-2\",\"name\":\"SOAP 1.2\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"spdx-3-0\",\"name\":\"SPDX 3.0\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"spinnaker-spec\",\"name\":\"Spinnaker Deployment Spec\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-1986\",\"name\":\"ANSI SQL-86\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-1987\",\"name\":\"ISO/IEC 9075:1987 (SQL-87)\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-1989\",\"name\":\"ANSI SQL-89\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-1992\",\"name\":\"ISO/IEC 9075:1992 (SQL-92)\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-1999\",\"name\":\"ISO/IEC 9075:1999 (SQL:1999)\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-2003\",\"name\":\"ISO/IEC 9075:2003 (SQL:2003)\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-2006\",\"name\":\"ISO/IEC 9075:2006 (SQL:2006)\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-2008\",\"name\":\"ISO/IEC 9075:2008 (SQL:2008)\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-2011\",\"name\":\"ISO/IEC 9075:2011 (SQL:2011)\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-2016\",\"name\":\"ISO/IEC 9075:2016 (SQL:2016)\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-2019\",\"name\":\"ISO/IEC 9075:2019 (SQL:2019)\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-2023\",\"name\":\"SQL:2023 (ISO/IEC 9075:2023)\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":\"https://www.iso.org/standard/76583.html\"},{\"slug\":\"sql-foundation-2016\",\"name\":\"SQL Foundation Part 2:2016\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-json-2019\",\"name\":\"SQL/JSON Part 15:2019\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-object-2023\",\"name\":\"SQL/Object Language Part 10:2023\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-psm-2016\",\"name\":\"SQL/PSM Part 4:2016\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sql-xml-2011\",\"name\":\"SQL/XML Part 14:2011\",\"category\":\"database-sql\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ssh-2-0\",\"name\":\"SSH 2.0 (RFC 4251)\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"stomp-1-2\",\"name\":\"STOMP 1.2\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"swagger-1-2\",\"name\":\"Swagger 1.2\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"swift-5-9\",\"name\":\"Swift 5.9 Language Guide\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"sysml-1-6\",\"name\":\"SysML 1.6\",\"category\":\"modeling\",\"domains\":[\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"terraform-hcl-2-0\",\"name\":\"Terraform HCL 2.0\",\"category\":\"devops\",\"domains\":[\"devops\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"thrift-0-16\",\"name\":\"Apache Thrift 0.16\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"tls-1-0\",\"name\":\"TLS 1.0 (RFC 2246)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"tls-1-1\",\"name\":\"TLS 1.1 (RFC 4346)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"tls-1-2\",\"name\":\"TLS 1.2 (RFC 5246)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"tls-1-3\",\"name\":\"TLS 1.3 (RFC 8446)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"togaf-10\",\"name\":\"TOGAF 10\",\"category\":\"cloud-architecture\",\"domains\":[\"cloud\",\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"infra\",\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"typescript-5-4\",\"name\":\"TypeScript 5.4 Spec\",\"category\":\"programming-language\",\"domains\":[\"language\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"uk-gdpr-2021\",\"name\":\"UK GDPR 2021\",\"category\":\"compliance\",\"domains\":[\"security\",\"governance\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"uml-2-5-1\",\"name\":\"UML 2.5.1\",\"category\":\"modeling\",\"domains\":[\"architecture\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"unicode-15-1\",\"name\":\"Unicode 15.1\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"utf8-rfc-3629\",\"name\":\"UTF-8 (RFC 3629)\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"vc-data-2-0\",\"name\":\"VC Data Model 2.0\",\"category\":\"identity-auth\",\"domains\":[\"security\",\"identity\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"web-app\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"wcag-2-2\",\"name\":\"W3C WCAG 2.2\",\"category\":\"accessibility\",\"domains\":[\"accessibility\",\"frontend\"],\"frameworks\":[],\"projectTypes\":[\"web-app\",\"mobile\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"websocket-rfc-6455\",\"name\":\"WebSocket (RFC 6455)\",\"category\":\"web-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"web-app\",\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"ws-security-1-2\",\"name\":\"WS-Security 1.2\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"wsdl-2-0\",\"name\":\"WSDL 2.0\",\"category\":\"api-spec\",\"domains\":[\"api\"],\"frameworks\":[],\"projectTypes\":[\"api\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"x509-2017\",\"name\":\"ISO/IEC 9594-8:2017 (X.509)\",\"category\":\"security\",\"domains\":[\"security\"],\"frameworks\":[],\"projectTypes\":[\"any\"],\"complianceRelevant\":true,\"officialUrl\":null},{\"slug\":\"xml-1-0\",\"name\":\"XML 1.0 (Fifth Edition)\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"xml-namespaces-1-1\",\"name\":\"XML Namespaces 1.1\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"xsd-1-0\",\"name\":\"XML Schema Definition 1.0\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"xsd-1-1\",\"name\":\"XML Schema Definition 1.1\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"xslt-1-0\",\"name\":\"XSLT 1.0\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"xslt-2-0\",\"name\":\"XSLT 2.0\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"xslt-3-0\",\"name\":\"XSLT 3.0\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"yaml-1-2\",\"name\":\"YAML 1.2\",\"category\":\"data-format\",\"domains\":[\"data\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"data\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"zigbee-3-0\",\"name\":\"Zigbee 3.0\",\"category\":\"network-protocol\",\"domains\":[\"networking\"],\"frameworks\":[],\"projectTypes\":[\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null},{\"slug\":\"zmtp-3-1\",\"name\":\"ZeroMQ ZMTP 3.1\",\"category\":\"messaging-protocol\",\"domains\":[\"integration\"],\"frameworks\":[],\"projectTypes\":[\"api\",\"infra\"],\"complianceRelevant\":false,\"officialUrl\":null}];\n\nexport const complianceFrameworks: ComplianceFrameworkEntry[] = [{\"id\":\"iso-27001\",\"name\":\"ISO/IEC 27001:2022\",\"memberStandards\":[\"iso-iec-27001-2022\",\"iso-iec-27002-2022\",\"owasp-asvs-5-0\",\"oauth-2-1\",\"slsa-v1\"],\"controls\":[{\"id\":\"A.5.15\",\"name\":\"Access control\",\"domain\":\"access\"},{\"id\":\"A.5.16\",\"name\":\"Identity management\",\"domain\":\"identity\"},{\"id\":\"A.8.5\",\"name\":\"Secure authentication\",\"domain\":\"identity\"},{\"id\":\"A.8.8\",\"name\":\"Management of technical vulnerabilities\",\"domain\":\"supply-chain\"},{\"id\":\"A.8.23\",\"name\":\"Web filtering / network controls\",\"domain\":\"transport\"},{\"id\":\"A.8.24\",\"name\":\"Use of cryptography\",\"domain\":\"crypto\"},{\"id\":\"A.8.15\",\"name\":\"Logging\",\"domain\":\"logging\"},{\"id\":\"A.8.28\",\"name\":\"Secure coding\",\"domain\":\"appsec\"}]},{\"id\":\"soc2\",\"name\":\"SOC 2 (Trust Services Criteria)\",\"memberStandards\":[\"aicpa-soc-2-tsc\",\"iso-iec-27001-2022\",\"owasp-asvs-5-0\",\"owasp-api-top-10-2023\",\"oauth-2-1\"],\"controls\":[{\"id\":\"CC6.1\",\"name\":\"Logical access security\",\"domain\":\"identity\"},{\"id\":\"CC6.3\",\"name\":\"Role-based access / least privilege\",\"domain\":\"access\"},{\"id\":\"CC6.6\",\"name\":\"Boundary protection / abuse control\",\"domain\":\"transport\"},{\"id\":\"CC6.7\",\"name\":\"Encryption in transit and at rest\",\"domain\":\"crypto\"},{\"id\":\"CC7.1\",\"name\":\"Vulnerability detection\",\"domain\":\"supply-chain\"},{\"id\":\"CC7.2\",\"name\":\"Security event monitoring\",\"domain\":\"logging\"},{\"id\":\"CC8.1\",\"name\":\"Change management / secure SDLC\",\"domain\":\"appsec\"}]},{\"id\":\"pci-dss\",\"name\":\"PCI DSS 4.0\",\"memberStandards\":[\"pci-dss-4-0\",\"owasp-asvs-5-0\",\"owasp-api-top-10-2023\",\"owasp-top10-2023\"],\"controls\":[{\"id\":\"Req.3\",\"name\":\"Protect stored account data\",\"domain\":\"crypto\"},{\"id\":\"Req.4\",\"name\":\"Protect data in transit\",\"domain\":\"transport\"},{\"id\":\"Req.6\",\"name\":\"Secure systems and software\",\"domain\":\"appsec\"},{\"id\":\"Req.8\",\"name\":\"Identify users and authenticate access\",\"domain\":\"identity\"},{\"id\":\"Req.10\",\"name\":\"Log and monitor access\",\"domain\":\"logging\"}]},{\"id\":\"nist-csf\",\"name\":\"NIST Cybersecurity Framework 2.0\",\"memberStandards\":[\"nist-csf-2-0\",\"nist-800-53-r5\",\"slsa-v1\",\"cyclonedx-1-6\"],\"controls\":[{\"id\":\"GV\",\"name\":\"Govern\",\"domain\":\"governance\"},{\"id\":\"ID.RA\",\"name\":\"Risk assessment\",\"domain\":\"supply-chain\"},{\"id\":\"PR.AA\",\"name\":\"Identity management & access control\",\"domain\":\"identity\"},{\"id\":\"PR.DS\",\"name\":\"Data security\",\"domain\":\"crypto\"},{\"id\":\"DE.CM\",\"name\":\"Continuous monitoring\",\"domain\":\"logging\"}]},{\"id\":\"hipaa\",\"name\":\"HIPAA Security Rule\",\"memberStandards\":[\"hipaa-security-rule\",\"iso-iec-27001-2022\",\"owasp-asvs-5-0\"],\"controls\":[{\"id\":\"164.312(a)\",\"name\":\"Access control\",\"domain\":\"access\"},{\"id\":\"164.312(e)\",\"name\":\"Transmission security\",\"domain\":\"transport\"},{\"id\":\"164.312(b)\",\"name\":\"Audit controls\",\"domain\":\"logging\"}]},{\"id\":\"gdpr\",\"name\":\"GDPR (EU 2016/679)\",\"memberStandards\":[\"gdpr-eu-2016-679\",\"iso-iec-27001-2022\"],\"controls\":[{\"id\":\"Art.32\",\"name\":\"Security of processing\",\"domain\":\"crypto\"},{\"id\":\"Art.30\",\"name\":\"Records of processing activities\",\"domain\":\"governance\"},{\"id\":\"Art.17\",\"name\":\"Right to erasure\",\"domain\":\"privacy\"}]}];\n","/**\n * Offline purpose -> standards matcher.\n *\n * Infers each project's coarse purpose from signals the scan already collected\n * (project type, detected frameworks, architecture archetype, UI evidence,\n * service/API surface) and maps that purpose onto the recommended set of\n * standards from the bundled catalog index. No network, no LLM — deterministic\n * and safe to run on every scan. Deep LLM-backed compliance analysis is a\n * separate opt-in command (see the compliance-scan plan).\n */\nimport type {\n ProjectScan,\n ExtendedScanResults,\n ProjectPurpose,\n RecommendedStandard,\n StandardsRecommendations,\n CompactUiPurpose,\n} from '../../core-open/index.js';\nimport { standardsIndex, complianceFrameworks, type StandardIndexEntry } from '../data/standards-index.js';\n\n// Framework detection must cover ALL languages Vibgrate scans (Node/TS, .NET,\n// Java/Kotlin/Scala, Python, Go, Rust, Ruby, PHP, Elixir, Swift, Dart), not just\n// JavaScript. Matched (word-bounded) against detected framework names, which are\n// short canonical strings, so boundaries keep short tokens (gin/chi/echo) safe.\n\n// Frontend / web-UI frameworks → 'web-app'.\nconst WEB_FRAMEWORK_RE = new RegExp(\n '\\\\b(' +\n [\n // JS/TS UI\n 'react', 'preact', 'next(?:\\\\.?js)?', 'remix', 'gatsby', 'vue', 'nuxt', 'angular',\n 'svelte(?:kit)?', 'solid(?:js|start)?', 'qwik', 'astro', 'ember', 'backbone', 'alpine',\n 'htmx', 'hotwire', 'turbo', 'stimulus', 'inertia',\n // .NET UI\n 'blazor', 'razor', 'maui', 'wpf', 'winforms', 'xamarin', 'uno',\n // Java/Kotlin/Scala UI\n 'jsf', 'thymeleaf', 'vaadin', 'wicket', 'gwt', 'compose(?: multiplatform)?',\n // PHP UI\n 'livewire', 'filament', 'blade',\n // Mobile / cross-platform UI\n 'flutter', 'swiftui', 'jetpack', 'react native',\n ].join('|') +\n ')\\\\b',\n);\n\n// Backend / server / API frameworks → 'api'.\nconst API_FRAMEWORK_RE = new RegExp(\n '\\\\b(' +\n [\n // Node/TS\n 'express', 'fastify', 'nest(?:js)?', 'koa', 'hapi', 'hono', 'adonis', 'sails',\n 'loopback', 'restify', 'feathers', 'h3', 'nitro', 'trpc',\n // Python\n 'django', 'flask', 'fastapi', 'starlette', 'tornado', 'pyramid', 'sanic', 'aiohttp',\n 'bottle', 'falcon', 'cherrypy', 'quart', 'litestar', 'connexion',\n // Java / Kotlin / Scala\n 'spring(?:boot)?', 'quarkus', 'micronaut', 'vert\\\\.?x', 'dropwizard', 'jersey',\n 'jax-?rs', 'struts', 'javalin', 'helidon', 'jhipster', 'ktor', 'http4s', 'finatra',\n 'scalatra', 'lagom', 'play', 'akka(?: ?http)?', 'spark java', 'ratpack',\n // .NET\n 'asp\\\\.?net(?: ?core)?', 'signalr', 'nancy', 'servicestack', 'carter', 'minimal ?api',\n 'web ?api', 'mvc',\n // Go\n 'gin', 'echo', 'fiber', 'chi', 'gorilla', 'beego', 'revel', 'buffalo', 'iris',\n 'gqlgen', 'mux', 'fasthttp',\n // Ruby\n 'rails', 'sinatra', 'hanami', 'grape', 'padrino', 'roda', 'rack',\n // PHP\n 'laravel', 'symfony', 'codeigniter', 'slim', 'lumen', 'yii', 'cakephp', 'phalcon',\n 'laminas', 'zend', 'fuel',\n // Rust\n 'actix', 'axum', 'rocket', 'warp', 'tide', 'poem', 'salvo', 'hyper',\n // Elixir\n 'phoenix', 'plug', 'cowboy',\n // Swift / Dart\n 'vapor', 'kitura', 'hummingbird', 'perfect', 'shelf', 'aqueduct', 'conduit',\n ].join('|') +\n ')\\\\b',\n);\n\n// Non-JS frameworks usually appear inside dependency/package names in compound\n// form (e.g. \"spring-boot-starter-web\", \"django-rest-framework\",\n// \"Microsoft.AspNetCore.App\", \"springdoc-openapi-starter-webmvc-ui\"), so we also\n// substring-match a curated set of *distinctive* framework stems against the\n// dependency list. Only unambiguous stems (>=5 chars / clearly framework-y) go\n// here; short/ambiguous names (gin, echo, chi, play, rack, iris…) are matched\n// word-bounded against detected framework names above, where they are safe.\nconst API_DEP_STEMS = [\n 'springframework', 'spring-boot', 'springdoc', 'webflux', 'webmvc', 'quarkus', 'micronaut',\n 'dropwizard', 'jersey', 'resteasy', 'javalin', 'helidon', 'vertx', 'ratpack', 'restlet',\n 'django', 'fastapi', 'starlette', 'tornado', 'pyramid', 'sanic', 'aiohttp', 'litestar', 'falcon-', 'flask',\n 'express', 'fastify', 'nestjs', '@nestjs', 'adonis', 'loopback', 'feathers', 'restify',\n 'aspnetcore', 'asp.net', 'servicestack', 'signalr',\n 'gin-gonic', 'gorilla/mux', 'gofiber', 'beego', 'buffalo', 'gqlgen',\n 'laravel', 'symfony', 'codeigniter', 'cakephp', 'phalcon', 'laminas', 'lumen',\n 'sinatra', 'hanami', 'grape',\n 'actix', 'axum', 'rocket', 'salvo', 'warp-',\n 'phoenix', 'cowboy',\n 'vapor', 'kitura', 'hummingbird', 'perfect-', 'aqueduct', 'conduit',\n 'rails', 'railties', 'actionpack',\n];\nconst WEB_DEP_STEMS = [\n 'react', 'preact', 'next', 'nuxt', 'remix', 'gatsby', 'vue', 'angular', '@angular', 'svelte',\n 'solid-js', 'qwik', 'astro', 'ember', 'backbone',\n 'blazor', 'razor', 'vaadin', 'thymeleaf', 'wicket',\n 'livewire', 'filament', 'inertia',\n 'flutter', 'jetpack', 'swiftui',\n];\n\nfunction matchesStem(haystack: string, stems: string[]): boolean {\n return stems.some((s) => haystack.includes(s));\n}\n\n// Data / analytics signals.\nconst ML_RE = /\\b(tensorflow|pytorch|torch|keras|jax|sklearn|scikit-?learn|pandas|numpy|scipy|xgboost|lightgbm|catboost|mxnet|spacy|transformers|huggingface|langchain|llama|onnx|mlflow|kubeflow|sagemaker|spark ?ml|mllib)\\b/;\nconst INFRA_RE = /\\b(terraform|pulumi|kubernetes|\\bk8s\\b|helm|ansible|cdktf|aws cdk|\\bcdk\\b|bicep|crossplane|serverless framework|\\bsst\\b|cloudformation|packer|nomad)\\b/;\n\nfunction archetypeCategory(archetype?: string): { category: string; signal: string } | null {\n switch (archetype) {\n case 'nextjs':\n case 'remix':\n case 'sveltekit':\n case 'nuxt':\n return { category: 'web-app', signal: `archetype:${archetype}` };\n case 'nestjs':\n case 'express':\n case 'fastify':\n case 'hono':\n case 'koa':\n case 'serverless':\n return { category: 'api', signal: `archetype:${archetype}` };\n case 'library':\n return { category: 'library', signal: 'archetype:library' };\n case 'cli':\n return { category: 'cli', signal: 'archetype:cli' };\n default:\n return null;\n }\n}\n\n/**\n * Infer a project's coarse purpose. Combines the strongest available signals;\n * confidence rises when multiple signals agree.\n */\nexport function inferProjectPurpose(\n project: ProjectScan,\n uiPurpose?: CompactUiPurpose,\n): ProjectPurpose {\n const signals: string[] = [];\n const votes: Record<string, number> = {};\n const vote = (category: string, weight: number, signal: string) => {\n votes[category] = (votes[category] ?? 0) + weight;\n signals.push(signal);\n };\n\n // The archetype fingerprint is a Node/TS concept — only trust it for those.\n if (project.type === 'node' || project.type === 'typescript') {\n const arch = archetypeCategory(project.architecture?.archetype);\n if (arch) vote(arch.category, 3, arch.signal);\n }\n\n const fwNames = (project.frameworks ?? []).map((f) => f.name.toLowerCase());\n const uiFw = (uiPurpose?.detectedFrameworks ?? []).map((f) => f.toLowerCase());\n const fwText = [...fwNames, ...uiFw].join(' ');\n if (WEB_FRAMEWORK_RE.test(fwText)) vote('web-app', 2, 'web-framework');\n if (API_FRAMEWORK_RE.test(fwText)) vote('api', 2, 'api-framework');\n\n // Cross-language: frameworks usually appear inside dependency package names.\n const depText = (project.dependencies ?? []).map((d) => d.package.toLowerCase()).join(' ');\n if (matchesStem(depText, WEB_DEP_STEMS)) vote('web-app', 1, 'web-dependency');\n if (matchesStem(depText, API_DEP_STEMS)) vote('api', 1, 'api-dependency');\n\n if (uiPurpose && (uiPurpose.routes?.length || uiPurpose.samples?.length)) {\n vote('web-app', 1, 'ui-evidence');\n }\n\n // Domain-specific signals from dependency + framework names (language-agnostic).\n const haystack = `${fwText} ${depText}`;\n if (ML_RE.test(haystack)) vote('ml', 2, 'ml-libs');\n if (INFRA_RE.test(haystack)) vote('infra', 2, 'infra-tooling');\n\n const entries = Object.entries(votes).sort((a, b) => b[1] - a[1]);\n if (entries.length === 0) {\n return { project: project.name, category: 'any', confidence: 0.3, signals: ['no-strong-signal'] };\n }\n const [topCategory, topWeight] = entries[0];\n const total = entries.reduce((s, [, w]) => s + w, 0);\n const confidence = Math.min(0.95, 0.4 + (topWeight / total) * 0.55);\n return {\n project: project.name,\n category: topCategory,\n confidence: Number(confidence.toFixed(2)),\n signals: [...new Set(signals)],\n };\n}\n\nfunction appliesToPurpose(entry: StandardIndexEntry, category: string): boolean {\n if (!entry.projectTypes || entry.projectTypes.length === 0) return false;\n return entry.projectTypes.includes('any') || entry.projectTypes.includes(category);\n}\n\n/** Categories/domains most relevant to each purpose, used to float the obvious picks up. */\n// Ordered most→least relevant; earlier categories get a larger bonus so the\n// obvious picks (e.g. OWASP API Top 10, OpenAPI for an API) float above generic\n// compliance-relevant standards that merely also apply.\nconst AFFINITY: Record<string, { categories: string[]; domains: string[] }> = {\n api: { categories: ['security', 'api-spec'], domains: ['api', 'security'] },\n 'web-app': { categories: ['security', 'accessibility'], domains: ['security', 'accessibility', 'frontend'] },\n library: { categories: ['software-process', 'programming-language'], domains: ['process', 'language'] },\n cli: { categories: ['software-process'], domains: ['process'] },\n data: { categories: ['database-sql', 'data-format'], domains: ['data'] },\n ml: { categories: ['ai-governance'], domains: ['ai'] },\n infra: { categories: ['devops', 'cloud-architecture'], domains: ['devops', 'cloud'] },\n};\n\n/**\n * Rank standards for a purpose category. Affinity (category/domain match to the\n * purpose) floats the obvious picks up; compliance-relevance and a tight\n * (non-'any') project-type match break further ties.\n */\nfunction rankStandardsForCategory(category: string): Array<{ rec: RecommendedStandard; score: number }> {\n const affinity = AFFINITY[category] ?? { categories: [], domains: [] };\n const ranked = standardsIndex\n .filter((e) => appliesToPurpose(e, category))\n .map((e) => {\n const tight = e.projectTypes.includes(category) && !e.projectTypes.includes('any');\n const catIdx = affinity.categories.indexOf(e.category);\n const categoryAffinity = catIdx >= 0 ? (affinity.categories.length - catIdx) * 2 : 0;\n const domainAffinity = e.domains.some((d) => affinity.domains.includes(d)) ? 1 : 0;\n const score = categoryAffinity + domainAffinity + (e.complianceRelevant ? 2 : 0) + (tight ? 1 : 0);\n return { e, score, tight };\n })\n .sort((a, b) => b.score - a.score || a.e.slug.localeCompare(b.e.slug));\n\n return ranked.map(({ e, score, tight }) => ({\n score,\n rec: {\n slug: e.slug,\n name: e.name,\n category: e.category,\n reason: tight\n ? `Applies specifically to ${category} projects`\n : e.complianceRelevant\n ? 'Compliance-relevant standard applicable to this stack'\n : 'Generally applicable standard',\n matchedProjectTypes: [category],\n frameworks: e.frameworks,\n complianceRelevant: e.complianceRelevant,\n officialUrl: e.officialUrl,\n },\n }));\n}\n\nexport interface MatcherOptions {\n /** Max recommended standards to retain per purpose category (default 10). */\n perCategoryLimit?: number;\n /** Overall cap on the recommended set (default 40). */\n totalLimit?: number;\n}\n\n/**\n * Match a scanned repository (its projects + extended results) onto a recommended\n * set of standards and compliance-framework coverage.\n */\nexport function recommendStandards(\n projects: ProjectScan[],\n extended?: ExtendedScanResults,\n options: MatcherOptions = {},\n): StandardsRecommendations {\n const perCategoryLimit = options.perCategoryLimit ?? 10;\n const totalLimit = options.totalLimit ?? 40;\n // Workspace-level UI frameworks (UiPurposeResult) as a fallback when a project\n // has no per-project CompactUiPurpose of its own.\n const fallbackUi: CompactUiPurpose | undefined = extended?.uiPurpose\n ? {\n samples: [],\n categoryCounts: {},\n originalCount: 0,\n dependencies: [],\n routes: [],\n detectedFrameworks: extended.uiPurpose.detectedFrameworks ?? [],\n }\n : undefined;\n\n const projectPurposes = projects.map((p) => inferProjectPurpose(p, p.uiPurpose ?? fallbackUi));\n const categories = [...new Set(projectPurposes.map((p) => p.category))];\n\n // Merge recommendations across all purpose categories present in the repo,\n // keeping the best relevance score seen for each standard.\n const bySlug = new Map<string, RecommendedStandard>();\n const scoreBySlug = new Map<string, number>();\n for (const category of categories) {\n const ranked = rankStandardsForCategory(category).slice(0, perCategoryLimit);\n for (const { rec, score } of ranked) {\n const existing = bySlug.get(rec.slug);\n if (existing) {\n if (!existing.matchedProjectTypes.includes(category)) existing.matchedProjectTypes.push(category);\n scoreBySlug.set(rec.slug, Math.max(scoreBySlug.get(rec.slug) ?? 0, score));\n } else {\n bySlug.set(rec.slug, { ...rec });\n scoreBySlug.set(rec.slug, score);\n }\n }\n }\n\n const recommended = [...bySlug.values()]\n .sort(\n (a, b) =>\n (scoreBySlug.get(b.slug) ?? 0) - (scoreBySlug.get(a.slug) ?? 0) ||\n b.matchedProjectTypes.length - a.matchedProjectTypes.length ||\n a.slug.localeCompare(b.slug),\n )\n .slice(0, totalLimit);\n\n const recommendedSlugs = new Set(recommended.map((r) => r.slug));\n const frameworks = complianceFrameworks\n .map((fw) => ({\n id: fw.id,\n name: fw.name,\n recommendedMembers: fw.memberStandards.filter((s) => recommendedSlugs.has(s)).length,\n totalMembers: fw.memberStandards.length,\n }))\n .filter((f) => f.recommendedMembers > 0)\n .sort((a, b) => b.recommendedMembers - a.recommendedMembers);\n\n return { projectPurposes, recommended, frameworks };\n}\n","import * as path from 'node:path';\nimport type {\n CoreScanContext,\n AdvancedScanHook,\n ProjectScan,\n ArchitectureResult,\n} from '../core-open/index.js';\nimport { compactUiPurpose } from '../core-open/index.js';\n\nimport { scanPlatformMatrix } from './scanners/platform-matrix.js';\nimport { scanDependencyRisk } from './scanners/dependency-risk.js';\nimport { scanDependencyGraph } from './scanners/dependency-graph.js';\nimport { scanToolingInventory } from './scanners/tooling-inventory.js';\nimport { scanBuildDeploy } from './scanners/build-deploy.js';\nimport { scanTsModernity } from './scanners/ts-modernity.js';\nimport { scanBreakingChangeExposure } from './scanners/breaking-change.js';\nimport { scanFileHotspots } from './scanners/file-hotspots.js';\nimport { scanSecurityPosture } from './scanners/security-posture.js';\nimport { scanServiceDependencies } from './scanners/service-dependencies.js';\nimport {\n scanArchitecture,\n buildProjectArchitectureMermaid,\n scanProjectArchitecture,\n aggregateSolutionArchitecture,\n} from './scanners/architecture.js';\nimport { scanCodeQuality } from './scanners/code-quality.js';\nimport { scanDatabaseSchema } from './scanners/database-schema.js';\nimport { scanUiPurpose } from './scanners/ui-purpose.js';\nimport { recommendStandards } from './scanners/standards-mapper.js';\n\n/**\n * Advanced-analysis pass layered on top of the open base scan.\n *\n * Runs the structured, deterministic scanners (tech-stack tooling, service\n * integrations, build/deploy, security posture, dependency graph/risk,\n * TypeScript modernity, file hotspots, breaking-change exposure, architecture,\n * code quality, UI purpose) and writes their typed results back through the\n * {@link CoreScanContext} so {@link runCoreScan} folds them into the artifact's\n * `extended` block.\n *\n * Every scanner here emits structured facts — package names, versions, counts,\n * booleans, file paths — and never uploads raw source-line text. The former\n * `requirements-scanners` family (runtimeConfiguration / dataStores / apiSurface\n * / operationalResilience / ossGovernance / assetBranding) is deliberately\n * excluded: it regex-scraped whole source lines (auth hints, tokens, connection\n * strings, license text) into the artifact, a data-quality and secret-exposure\n * risk. Do not re-introduce raw-line `extract()` scanning here.\n *\n * The `databaseSchema` scanner follows the same discipline across all five of\n * its sources (Prisma, raw SQL migrations, SQL Server Database Projects,\n * Drizzle, TypeORM): it parses each into structured facts only — model/table\n * names, field/column names, types, and relation/list/optional/id/unique\n * flags, plus the Prisma datasource `provider` name. It never captures a\n * Prisma datasource's `url` line (a connection string/credential), and the\n * raw-SQL sources additionally strip any line that looks like a URL with\n * embedded credentials before parsing — belt-and-suspenders, since SQL files\n * don't normally contain these. No source captures any other raw source\n * text. See `scanners/database-schema.ts` for the per-source detail.\n */\nexport async function runAdvancedAnalysis(ctx: CoreScanContext): Promise<void> {\n const { rootDir, opts, scanners, maxPrivacyMode, allProjects, solutions, projectsByPath, fileCache, progress, extended } = ctx;\n\n if (scanners === false) {\n // Scanners disabled wholesale: project categorisation + billing already ran\n // in the open base scan; only the standards recommendation remains.\n extended.standards = recommendStandards(allProjects, extended);\n return;\n }\n\n const scannerPolicy = {\n platformMatrix: !maxPrivacyMode,\n toolingInventory: true,\n serviceDependencies: !maxPrivacyMode,\n breakingChangeExposure: !maxPrivacyMode,\n securityPosture: true,\n buildDeploy: !maxPrivacyMode,\n tsModernity: !maxPrivacyMode,\n fileHotspots: !maxPrivacyMode,\n dependencyGraph: true,\n dependencyRisk: true,\n architecture: !maxPrivacyMode,\n codeQuality: !maxPrivacyMode,\n databaseSchema: !maxPrivacyMode,\n uiPurpose: !maxPrivacyMode,\n } as const;\n\n // Register advanced progress steps just-in-time before the drift step (the\n // same dynamic-insertion pattern the base runner uses for project steps).\n const advancedSteps: Array<{ id: string; label: string }> = [\n ...(scannerPolicy.platformMatrix && scanners?.platformMatrix?.enabled !== false ? [{ id: 'platform', label: 'Platform matrix' }] : []),\n ...(scannerPolicy.toolingInventory && scanners?.toolingInventory?.enabled !== false ? [{ id: 'tooling', label: 'Tooling inventory' }] : []),\n ...(scannerPolicy.serviceDependencies && scanners?.serviceDependencies?.enabled !== false ? [{ id: 'services', label: 'Service dependencies' }] : []),\n ...(scannerPolicy.breakingChangeExposure && scanners?.breakingChangeExposure?.enabled !== false ? [{ id: 'breaking', label: 'Breaking change exposure' }] : []),\n ...(scannerPolicy.securityPosture && scanners?.securityPosture?.enabled !== false ? [{ id: 'security', label: 'Security posture' }] : []),\n ...(scannerPolicy.buildDeploy && scanners?.buildDeploy?.enabled !== false ? [{ id: 'build', label: 'Build & deploy analysis' }] : []),\n ...(scannerPolicy.tsModernity && scanners?.tsModernity?.enabled !== false ? [{ id: 'ts', label: 'TypeScript modernity' }] : []),\n ...(scannerPolicy.fileHotspots && scanners?.fileHotspots?.enabled !== false ? [{ id: 'hotspots', label: 'File hotspots' }] : []),\n ...(scannerPolicy.dependencyGraph && scanners?.dependencyGraph?.enabled !== false ? [{ id: 'depgraph', label: 'Dependency graph' }] : []),\n ...(scannerPolicy.dependencyRisk && scanners?.dependencyRisk?.enabled !== false ? [{ id: 'deprisk', label: 'Dependency risk' }] : []),\n ...(scannerPolicy.architecture && scanners?.architecture?.enabled !== false ? [{ id: 'architecture', label: 'Architecture layers' }] : []),\n ...(scannerPolicy.codeQuality && scanners?.codeQuality?.enabled !== false ? [{ id: 'codequality', label: 'Code quality metrics' }] : []),\n ...(scannerPolicy.databaseSchema && scanners?.databaseSchema?.enabled !== false ? [{ id: 'databaseschema', label: 'Database schema' }] : []),\n ...((!maxPrivacyMode && (opts.uiPurpose || scanners?.uiPurpose?.enabled === true)) ? [{ id: 'uipurpose', label: 'UI purpose evidence' }] : []),\n ];\n for (const step of advancedSteps) {\n progress.insertStepBefore('drift', step);\n }\n\n // ── Extended scanners (run in parallel) ──\n const scannerTasks: Array<Promise<void>> = [];\n\n if (scannerPolicy.platformMatrix && scanners?.platformMatrix?.enabled !== false) {\n progress.startStep('platform');\n scannerTasks.push(\n scanPlatformMatrix(rootDir, fileCache).then((result) => {\n extended.platformMatrix = result;\n const nativeCount = result.nativeModules.length;\n const dockerCount = result.dockerBaseImages.length;\n const parts: string[] = [];\n if (nativeCount > 0) parts.push(`${nativeCount} native`);\n if (dockerCount > 0) parts.push(`${dockerCount} docker`);\n progress.completeStep('platform', parts.join(', ') || 'clean', nativeCount + dockerCount);\n }),\n );\n }\n\n if (scannerPolicy.toolingInventory && scanners?.toolingInventory?.enabled !== false) {\n progress.startStep('tooling');\n scannerTasks.push(\n Promise.resolve().then(() => {\n extended.toolingInventory = scanToolingInventory(allProjects);\n const toolCount = Object.values(extended.toolingInventory).reduce((sum, arr) => sum + arr.length, 0);\n progress.completeStep('tooling', `${toolCount} tool${toolCount !== 1 ? 's' : ''} mapped`, toolCount);\n }),\n );\n }\n\n if (scannerPolicy.serviceDependencies && scanners?.serviceDependencies?.enabled !== false) {\n progress.startStep('services');\n scannerTasks.push(\n Promise.resolve().then(() => {\n extended.serviceDependencies = scanServiceDependencies(allProjects);\n const svcCount = Object.values(extended.serviceDependencies).reduce((sum, arr) => sum + arr.length, 0);\n progress.completeStep('services', `${svcCount} service${svcCount !== 1 ? 's' : ''} detected`, svcCount);\n }),\n );\n }\n\n if (scannerPolicy.breakingChangeExposure && scanners?.breakingChangeExposure?.enabled !== false) {\n progress.startStep('breaking');\n scannerTasks.push(\n Promise.resolve().then(async () => {\n extended.breakingChangeExposure = await scanBreakingChangeExposure(allProjects, rootDir, fileCache);\n const bc = extended.breakingChangeExposure;\n const bcTotal = bc.deprecatedPackages.length + bc.legacyPolyfills.length;\n progress.completeStep(\n 'breaking',\n bcTotal > 0 ? `${bc.deprecatedPackages.length} deprecated, ${bc.legacyPolyfills.length} polyfills` : 'none found',\n bcTotal,\n );\n }),\n );\n }\n\n if (scannerPolicy.securityPosture && scanners?.securityPosture?.enabled !== false) {\n progress.startStep('security');\n scannerTasks.push(\n scanSecurityPosture(rootDir, fileCache).then((result) => {\n extended.securityPosture = result;\n const secDetail = result.lockfilePresent\n ? `lockfile ✔${result.gitignoreCoversEnv ? ' · .env ✔' : ' · .env ✖'}`\n : 'no lockfile';\n progress.completeStep('security', secDetail);\n }),\n );\n }\n\n if (scannerPolicy.buildDeploy && scanners?.buildDeploy?.enabled !== false) {\n progress.startStep('build');\n scannerTasks.push(\n scanBuildDeploy(rootDir, fileCache).then((result) => {\n extended.buildDeploy = result;\n const bdParts: string[] = [];\n if (result.ci.length > 0) bdParts.push(result.ci.join(', '));\n if (result.docker.dockerfileCount > 0) bdParts.push(`${result.docker.dockerfileCount} Dockerfile${result.docker.dockerfileCount !== 1 ? 's' : ''}`);\n progress.completeStep('build', bdParts.join(' · ') || 'none detected');\n }),\n );\n }\n\n if (scannerPolicy.tsModernity && scanners?.tsModernity?.enabled !== false) {\n progress.startStep('ts');\n scannerTasks.push(\n scanTsModernity(rootDir, fileCache).then((result) => {\n extended.tsModernity = result;\n const tsParts: string[] = [];\n if (result.typescriptVersion) tsParts.push(`v${result.typescriptVersion}`);\n if (result.strict === true) tsParts.push('strict');\n if (result.moduleType) tsParts.push(result.moduleType.toUpperCase());\n progress.completeStep('ts', tsParts.join(' · ') || 'no tsconfig');\n }),\n );\n }\n\n if (scannerPolicy.fileHotspots && scanners?.fileHotspots?.enabled !== false) {\n progress.startStep('hotspots');\n scannerTasks.push(\n scanFileHotspots(rootDir, fileCache).then((result) => {\n extended.fileHotspots = result;\n progress.completeStep('hotspots', `${result.totalFiles} files`, result.totalFiles);\n }),\n );\n }\n\n if (scannerPolicy.dependencyGraph && scanners?.dependencyGraph?.enabled !== false) {\n progress.startStep('depgraph');\n scannerTasks.push(\n scanDependencyGraph(rootDir, fileCache).then((result) => {\n extended.dependencyGraph = result;\n const dgDetail = result.lockfileType\n ? `${result.lockfileType} · ${result.totalUnique} unique`\n : 'no lockfile';\n progress.completeStep('depgraph', dgDetail, result.totalUnique);\n }),\n );\n }\n\n if (scannerPolicy.codeQuality && scanners?.codeQuality?.enabled !== false) {\n progress.startStep('codequality');\n scannerTasks.push(\n scanCodeQuality(rootDir, fileCache).then((result) => {\n extended.codeQuality = result;\n const cqParts: string[] = [];\n cqParts.push(`${result.filesAnalyzed} files`);\n cqParts.push(`${result.functionsAnalyzed} functions`);\n if (result.circularDependencies > 0) cqParts.push(`${result.circularDependencies} cycles`);\n progress.completeStep('codequality', cqParts.join(' · '), result.functionsAnalyzed);\n }),\n );\n }\n\n if (scannerPolicy.databaseSchema && scanners?.databaseSchema?.enabled !== false) {\n progress.startStep('databaseschema');\n scannerTasks.push(\n scanDatabaseSchema(rootDir, allProjects, fileCache).then((result) => {\n extended.databaseSchema = result;\n const modelCount = result?.models.length ?? 0;\n const enumCount = result?.enums.length ?? 0;\n const dsParts: string[] = [];\n if (modelCount > 0) dsParts.push(`${modelCount} model${modelCount !== 1 ? 's' : ''}`);\n if (enumCount > 0) dsParts.push(`${enumCount} enum${enumCount !== 1 ? 's' : ''}`);\n progress.completeStep('databaseschema', dsParts.join(', ') || 'none found', modelCount);\n }),\n );\n }\n\n if (scannerPolicy.dependencyRisk && scanners?.dependencyRisk?.enabled !== false) {\n progress.startStep('deprisk');\n scannerTasks.push(\n Promise.resolve().then(() => {\n extended.dependencyRisk = scanDependencyRisk(allProjects);\n const dr = extended.dependencyRisk;\n const drParts: string[] = [];\n if (dr.deprecatedPackages.length > 0) drParts.push(`${dr.deprecatedPackages.length} deprecated`);\n if (dr.nativeModulePackages.length > 0) drParts.push(`${dr.nativeModulePackages.length} native`);\n progress.completeStep('deprisk', drParts.join(', ') || 'low risk');\n }),\n );\n }\n\n await Promise.all(scannerTasks);\n\n if (!maxPrivacyMode && scanners?.uiPurpose?.enabled !== false) {\n progress.startStep('uipurpose');\n extended.uiPurpose = await scanUiPurpose(rootDir, fileCache);\n const up = extended.uiPurpose;\n const summary = [`${up.topEvidence.length} evidence`, ...(up.capped ? ['capped'] : [])].join(' · ');\n progress.completeStep('uipurpose', summary, up.topEvidence.length);\n\n await Promise.all(allProjects.map(async (project) => {\n const projectDir = path.join(rootDir, project.path);\n const projectResult = await scanUiPurpose(projectDir, fileCache, 150);\n if (projectResult.topEvidence.length > 0) {\n project.uiPurpose = compactUiPurpose(projectResult);\n }\n }));\n }\n\n if (scannerPolicy.architecture && scanners?.architecture?.enabled !== false) {\n progress.startStep('architecture');\n extended.architecture = await scanArchitecture(\n rootDir,\n allProjects,\n extended.toolingInventory,\n extended.serviceDependencies,\n fileCache,\n );\n const arch = extended.architecture;\n const layerCount = arch.layers.filter((l) => l.fileCount > 0).length;\n\n await Promise.all(allProjects.map(async (project) => {\n project.architectureMermaid = await buildProjectArchitectureMermaid(\n rootDir,\n project,\n arch.archetype,\n fileCache,\n );\n project.architecture = await scanProjectArchitecture(rootDir, project, fileCache);\n }));\n\n for (const solution of solutions) {\n const memberProjects = solution.projectPaths\n .map((pp) => projectsByPath.get(pp) ?? projectsByPath.get(path.dirname(pp).replace(/\\\\/g, '/')))\n .filter((p): p is ProjectScan => Boolean(p));\n const memberArchResults = memberProjects\n .map((p) => p.architecture)\n .filter((a): a is ArchitectureResult => Boolean(a));\n if (memberArchResults.length > 0) {\n solution.architecture = aggregateSolutionArchitecture(memberArchResults);\n }\n }\n\n progress.completeStep(\n 'architecture',\n `${arch.archetype} · ${layerCount} layer${layerCount !== 1 ? 's' : ''} · ${arch.totalClassified} files`,\n layerCount,\n );\n }\n\n // ── Standards matching (offline): map detected purpose -> recommended standards ──\n extended.standards = recommendStandards(allProjects, extended);\n\n // ── filesScanned contributions from the advanced scanners ──\n let advancedFiles = 0;\n if (extended.fileHotspots) advancedFiles += extended.fileHotspots.totalFiles;\n if (extended.securityPosture) advancedFiles += 1;\n if (extended.tsModernity?.typescriptVersion) advancedFiles += 1;\n if (extended.dependencyGraph?.lockfileType) advancedFiles += 1;\n if (extended.buildDeploy) {\n advancedFiles += extended.buildDeploy.docker.dockerfileCount;\n advancedFiles += extended.buildDeploy.ci.length;\n }\n if (extended.codeQuality) advancedFiles += extended.codeQuality.filesAnalyzed;\n if (extended.databaseSchema) advancedFiles += extended.databaseSchema.filesScanned.length;\n if (extended.uiPurpose) advancedFiles += extended.uiPurpose.topEvidence.length;\n if (advancedFiles > 0) ctx.addFilesScanned(advancedFiles);\n}\n\n/**\n * The advanced-analysis hook, exported so the reporting commands can inject it\n * into {@link runCoreScan}.\n */\nexport const advancedScanHook: AdvancedScanHook = runAdvancedAnalysis;\n","import type { AdvancedScanHook } from '../core-open/index.js';\nimport { advancedScanHook } from './advanced-analysis.js';\n\n/**\n * Resolve the advanced-analysis hook that populates the artifact's `extended`\n * block (tech stack, service integrations, build/deploy, security posture,\n * dependency graph/risk, TypeScript modernity, file hotspots, breaking-change\n * exposure, architecture, code quality, UI purpose).\n *\n * These are the structured, deterministic scanners — they emit typed facts\n * (names, versions, counts, booleans, paths) and never upload raw source text.\n * See {@link advancedScanHook} for the deliberate exclusion of the former\n * raw-line `requirements-scanners` family.\n */\nexport async function loadAdvancedScanHook(): Promise<AdvancedScanHook | undefined> {\n return advancedScanHook;\n}\n","import * as path from 'node:path';\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { runCoreScan } from '../../core-open/index.js';\nimport { writeJsonFile } from '../utils/fs.js';\nimport { loadAdvancedScanHook } from '../advanced-hook.js';\n\nexport async function runBaseline(rootDir: string): Promise<void> {\n console.log(chalk.dim('Creating baseline...'));\n\n const advanced = await loadAdvancedScanHook();\n const artifact = await runCoreScan(rootDir, {\n format: 'text',\n concurrency: 8,\n }, advanced);\n\n const baselinePath = path.join(rootDir, '.vibgrate', 'baseline.json');\n await writeJsonFile(baselinePath, artifact);\n console.log(chalk.green('✔') + ` Baseline saved to ${chalk.bold('.vibgrate/baseline.json')}`);\n console.log(chalk.dim(` Baseline score: ${artifact.drift.score}/100`));\n}\n\nexport const baselineCommand = new Command('baseline')\n .description('Create a drift baseline snapshot')\n .argument('[path]', 'Path to baseline', '.')\n .action(async (targetPath: string) => {\n const rootDir = path.resolve(targetPath);\n await runBaseline(rootDir);\n });\n"]}
|