@vibgrate/cli 2026.721.2 → 2026.721.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/baseline-37G4TINM.js +6 -0
- package/dist/{baseline-KK7ZLRZB.js.map → baseline-37G4TINM.js.map} +1 -1
- package/dist/{chunk-MUMBLIDO.js → chunk-5PLKADD6.js} +3 -3
- package/dist/{chunk-MUMBLIDO.js.map → chunk-5PLKADD6.js.map} +1 -1
- package/dist/{chunk-3DPZQS2Q.js → chunk-ELUFCQDR.js} +123 -20
- package/dist/chunk-ELUFCQDR.js.map +1 -0
- package/dist/{chunk-JWBS5GS6.js → chunk-IKJBELUV.js} +92 -7
- package/dist/chunk-IKJBELUV.js.map +1 -0
- package/dist/{chunk-NHLSAZ6N.js → chunk-JLRF5TFA.js} +3 -3
- package/dist/{chunk-NHLSAZ6N.js.map → chunk-JLRF5TFA.js.map} +1 -1
- package/dist/cli.js +5 -5
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/parse-worker.d.ts +1 -1
- package/dist/parse-worker.js +1 -1
- package/dist/{types-BgNa-FZQ.d.ts → types-Jl6RJ175.d.ts} +8 -0
- package/package.json +3 -2
- package/dist/baseline-KK7ZLRZB.js +0 -6
- package/dist/chunk-3DPZQS2Q.js.map +0 -1
- package/dist/chunk-JWBS5GS6.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
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-MUMBLIDO.js","sourcesContent":["import * as path from 'node:path';\nimport * as fs from 'node:fs/promises';\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/** Patterns that .gitignore should cover for security hygiene */\nconst HYGIENE_PATTERNS = {\n env: ['.env', '.env.*', '.env.local', '.env.*.local'],\n nodeModules: ['node_modules', 'node_modules/'],\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 } 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\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// ── 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\n// ── Source file walker ──\n\nconst SOURCE_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs', '.cts', '.cjs', '.svelte', '.vue']);\nconst IGNORE_DIRS = new Set(['node_modules', '.git', '.wrangler', 'dist', 'build', '.next', '.nuxt', '.output', '.svelte-kit', 'coverage', '.vibgrate']);\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 if (!IGNORE_DIRS.has(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 const normalised = filePath.replace(/\\\\/g, '/');\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(normalised)) {\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\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 let unknown = 0;\n\n for (const pkg of packages) {\n if (pkg.majorsBehind === null) {\n unknown++;\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] });\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 // 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 layerFileCounts = new Map<ArchitectureLayer, number>();\n for (const c of classifications) {\n layerFileCounts.set(c.layer, (layerFileCounts.get(c.layer) ?? 0) + 1);\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 });\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"]}
|
|
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-5PLKADD6.js","sourcesContent":["import * as path from 'node:path';\nimport * as fs from 'node:fs/promises';\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/** Patterns that .gitignore should cover for security hygiene */\nconst HYGIENE_PATTERNS = {\n env: ['.env', '.env.*', '.env.local', '.env.*.local'],\n nodeModules: ['node_modules', 'node_modules/'],\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 } 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\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// ── 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\n// ── Source file walker ──\n\nconst SOURCE_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs', '.cts', '.cjs', '.svelte', '.vue']);\nconst IGNORE_DIRS = new Set(['node_modules', '.git', '.wrangler', 'dist', 'build', '.next', '.nuxt', '.output', '.svelte-kit', 'coverage', '.vibgrate']);\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 if (!IGNORE_DIRS.has(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 const normalised = filePath.replace(/\\\\/g, '/');\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(normalised)) {\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\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 let unknown = 0;\n\n for (const pkg of packages) {\n if (pkg.majorsBehind === null) {\n unknown++;\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] });\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 // 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 layerFileCounts = new Map<ArchitectureLayer, number>();\n for (const c of classifications) {\n layerFileCounts.set(c.layer, (layerFileCounts.get(c.layer) ?? 0) + 1);\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 });\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"]}
|