@vibgrate/cli 2026.709.1 → 2026.710.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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/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","routeHints","path10","path11"],"mappings":"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","file":"chunk-IRZCYPFC.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 { 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 { 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 */\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 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 ...((!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.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.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/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","routeHints","path10","path11"],"mappings":"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","file":"chunk-OGRPKYRW.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 { 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 { 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 */\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 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 ...((!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.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.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"]}