@fairfox/polly 0.82.0 → 0.83.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/cli/polly.js +22 -1
  2. package/dist/cli/polly.js.map +3 -3
  3. package/dist/tools/bdd/src/args.d.ts +21 -0
  4. package/dist/tools/bdd/src/bus-driver.d.ts +36 -0
  5. package/dist/tools/bdd/src/check-verify.d.ts +15 -0
  6. package/dist/tools/bdd/src/cli.d.ts +2 -0
  7. package/dist/tools/bdd/src/cli.js +701 -0
  8. package/dist/tools/bdd/src/cli.js.map +19 -0
  9. package/dist/tools/bdd/src/config.d.ts +9 -0
  10. package/dist/tools/bdd/src/extract.d.ts +2 -0
  11. package/dist/tools/bdd/src/index.d.ts +19 -0
  12. package/dist/tools/bdd/src/index.js +540 -0
  13. package/dist/tools/bdd/src/index.js.map +17 -0
  14. package/dist/tools/bdd/src/parse.d.ts +3 -0
  15. package/dist/tools/bdd/src/report.d.ts +6 -0
  16. package/dist/tools/bdd/src/run.d.ts +8 -0
  17. package/dist/tools/bdd/src/scaffold.d.ts +7 -0
  18. package/dist/tools/bdd/src/steps.d.ts +55 -0
  19. package/dist/tools/bdd/src/types.d.ts +145 -0
  20. package/dist/tools/bdd/src/witness.d.ts +23 -0
  21. package/dist/tools/gallery/src/cli.js +4 -3
  22. package/dist/tools/gallery/src/cli.js.map +3 -3
  23. package/dist/tools/mutate/src/cli.js +8 -1
  24. package/dist/tools/mutate/src/cli.js.map +3 -3
  25. package/dist/tools/quality/src/cli.js +304 -15
  26. package/dist/tools/quality/src/cli.js.map +6 -4
  27. package/dist/tools/quality/src/index.d.ts +2 -0
  28. package/dist/tools/quality/src/index.js +309 -15
  29. package/dist/tools/quality/src/index.js.map +6 -4
  30. package/dist/tools/quality/src/no-fixed-waits.d.ts +52 -0
  31. package/dist/tools/quality/src/no-tautology-ensures.d.ts +67 -0
  32. package/dist/tools/quality/src/plugins/core.d.ts +1 -1
  33. package/dist/tools/test/src/coverage-policy/cli.js +5 -1
  34. package/dist/tools/test/src/coverage-policy/cli.js.map +3 -3
  35. package/dist/tools/test/src/tiers/args.d.ts +5 -0
  36. package/dist/tools/test/src/tiers/cli.js +97 -23
  37. package/dist/tools/test/src/tiers/cli.js.map +9 -8
  38. package/dist/tools/test/src/tiers/index.d.ts +2 -1
  39. package/dist/tools/test/src/tiers/order.d.ts +25 -0
  40. package/dist/tools/test/src/tiers/types.d.ts +15 -0
  41. package/dist/tools/verify/src/cli.js +540 -15
  42. package/dist/tools/verify/src/cli.js.map +8 -4
  43. package/dist/tools/visualize/src/cli.js +17 -13
  44. package/dist/tools/visualize/src/cli.js.map +3 -3
  45. package/package.json +9 -16
@@ -3,7 +3,7 @@
3
3
  "sources": ["../tools/analysis/src/extract/project-detector.ts", "../tools/visualize/src/cli.ts", "../tools/analysis/src/extract/architecture.ts", "../tools/analysis/src/extract/adr.ts", "../tools/analysis/src/extract/contexts.ts", "../tools/analysis/src/extract/flows.ts", "../tools/analysis/src/extract/handlers.ts", "../tools/analysis/src/extract/relationships.ts", "../tools/analysis/src/extract/integrations.ts", "../tools/analysis/src/extract/manifest.ts", "../src/shared/lib/derive-document-id.ts", "../tools/visualize/src/mesh-snapshot.ts", "../tools/visualize/src/types/structurizr.ts", "../tools/visualize/src/codegen/structurizr.ts", "../tools/visualize/src/runner/export.ts"],
4
4
  "sourcesContent": [
5
5
  "// Project type detection and configuration\n// Detects project type and infers entry points from tsconfig.json, package.json, etc.\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { ProjectConfig } from \"../types/architecture\";\n\n/**\n * Detect project type and generate configuration\n * Falls back to tsconfig.json when manifest.json is not available\n */\nexport class ProjectDetector {\n private projectRoot: string;\n\n constructor(projectRoot: string) {\n this.projectRoot = projectRoot;\n }\n\n /**\n * Detect project type and return configuration\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Project detection requires checking many project types\n detect(): ProjectConfig {\n // Check for Chrome extension manifest\n const manifestPath = path.join(this.projectRoot, \"manifest.json\");\n if (fs.existsSync(manifestPath)) {\n return this.detectChromeExtension(manifestPath);\n }\n\n // Check for PWA manifest\n const pwaManifestPath = path.join(this.projectRoot, \"public\", \"manifest.json\");\n if (fs.existsSync(pwaManifestPath)) {\n return this.detectPWA(pwaManifestPath);\n }\n\n // Check for Electron and monorepo\n const packageJsonPath = path.join(this.projectRoot, \"package.json\");\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\"));\n\n // Check for monorepo (workspaces field)\n if (packageJson.workspaces) {\n const monorepoConfig = this.detectMonorepo(packageJson);\n if (monorepoConfig) {\n return monorepoConfig;\n }\n }\n\n if (packageJson.dependencies?.electron || packageJson.devDependencies?.electron) {\n return this.detectElectron(packageJson);\n }\n\n // Check for WebSocket/server patterns in dependencies\n const deps = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n };\n\n if (\n deps?.ws ||\n deps?.[\"socket.io\"] ||\n deps?.elysia ||\n deps?.express ||\n deps?.fastify ||\n deps?.hono ||\n deps?.koa\n ) {\n return this.detectWebSocketApp(packageJson);\n }\n\n // Also check with content analysis even without explicit dependencies\n // (Bun has built-in WebSocket support, no dependencies needed)\n const serverResult = this.detectWebSocketApp(packageJson);\n if (Object.keys(serverResult.entryPoints).length > 0) {\n return serverResult;\n }\n } else {\n // No package.json - try WebSocket/server detection anyway\n const serverResult = this.detectWebSocketApp({});\n if (Object.keys(serverResult.entryPoints).length > 0) {\n return serverResult;\n }\n }\n\n // Fallback: Generic TypeScript project\n return this.detectGenericProject();\n }\n\n /**\n * Detect Chrome extension from manifest.json\n */\n private detectChromeExtension(manifestPath: string): ProjectConfig {\n const manifest = JSON.parse(fs.readFileSync(manifestPath, \"utf-8\"));\n const entryPoints: Record<string, string> = {};\n\n this.detectBackgroundEntry(manifest, entryPoints);\n this.detectContentScriptEntry(manifest, entryPoints);\n this.detectPopupEntry(manifest, entryPoints);\n this.detectOptionsEntry(manifest, entryPoints);\n\n return {\n type: \"chrome-extension\",\n entryPoints,\n metadata: {\n name: manifest.name,\n version: manifest.version,\n description: manifest.description,\n },\n };\n }\n\n /**\n * Detect background script entry point\n */\n private detectBackgroundEntry(\n manifest: Record<string, unknown>,\n entryPoints: Record<string, string>\n ): void {\n const background = manifest[\"background\"] as unknown as Record<string, unknown> | undefined;\n if (!background) return;\n\n const file =\n (background[\"service_worker\"] as unknown as string | undefined) ||\n ((background[\"scripts\"] as unknown as string[] | undefined)?.[0] as unknown as\n | string\n | undefined) ||\n (background[\"page\"] as unknown as string | undefined);\n if (file) {\n entryPoints[\"background\"] = this.findSourceFile(file);\n }\n }\n\n /**\n * Detect content script entry point\n */\n private detectContentScriptEntry(\n manifest: Record<string, unknown>,\n entryPoints: Record<string, string>\n ): void {\n const contentScripts = manifest[\"content_scripts\"] as unknown as\n | Record<string, unknown>[]\n | undefined;\n if (!contentScripts || contentScripts.length === 0) return;\n\n const firstScriptObj = contentScripts[0];\n if (!firstScriptObj) return;\n\n const firstScript = (firstScriptObj[\"js\"] as unknown as string[] | undefined)?.[0] as unknown as\n | string\n | undefined;\n if (firstScript) {\n entryPoints[\"content\"] = this.findSourceFile(firstScript);\n }\n }\n\n /**\n * Detect popup entry point\n */\n private detectPopupEntry(\n manifest: Record<string, unknown>,\n entryPoints: Record<string, string>\n ): void {\n const action = manifest[\"action\"] as unknown as Record<string, unknown> | undefined;\n const browserAction = manifest[\"browser_action\"] as unknown as\n | Record<string, unknown>\n | undefined;\n const popup =\n (action?.[\"default_popup\"] as unknown as string | undefined) ||\n (browserAction?.[\"default_popup\"] as unknown as string | undefined);\n if (!popup) return;\n\n const jsFile = this.findAssociatedJS(path.join(this.projectRoot, popup));\n if (jsFile) {\n entryPoints[\"popup\"] = jsFile;\n }\n }\n\n /**\n * Detect options page entry point\n */\n private detectOptionsEntry(\n manifest: Record<string, unknown>,\n entryPoints: Record<string, string>\n ): void {\n const optionsUi = manifest[\"options_ui\"] as unknown as Record<string, unknown> | undefined;\n const options =\n (optionsUi?.[\"page\"] as unknown as string | undefined) ||\n (manifest[\"options_page\"] as unknown as string | undefined);\n if (!options) return;\n\n const jsFile = this.findAssociatedJS(path.join(this.projectRoot, options));\n if (jsFile) {\n entryPoints[\"options\"] = jsFile;\n }\n }\n\n /**\n * Detect PWA from manifest.json\n */\n private detectPWA(manifestPath: string): ProjectConfig {\n const manifest = JSON.parse(fs.readFileSync(manifestPath, \"utf-8\"));\n const entryPoints: Record<string, string> = {};\n\n // Look for service worker\n const swCandidates = [\n \"src/service-worker.ts\",\n \"src/sw.ts\",\n \"public/service-worker.js\",\n \"public/sw.js\",\n ];\n\n for (const candidate of swCandidates) {\n const fullPath = path.join(this.projectRoot, candidate);\n if (fs.existsSync(fullPath)) {\n entryPoints[\"worker\"] = fullPath;\n break;\n }\n }\n\n // Look for main client entry\n const clientCandidates = [\n \"src/main.ts\",\n \"src/index.ts\",\n \"src/app.ts\",\n \"src/main.tsx\",\n \"src/index.tsx\",\n ];\n\n for (const candidate of clientCandidates) {\n const fullPath = path.join(this.projectRoot, candidate);\n if (fs.existsSync(fullPath)) {\n entryPoints[\"client\"] = fullPath;\n break;\n }\n }\n\n return {\n type: \"pwa\",\n entryPoints,\n contextMapping: {\n worker: \"Service Worker\",\n client: \"Client App\",\n },\n metadata: {\n name: manifest.name || manifest.short_name,\n version: \"1.0.0\",\n description: manifest.description,\n },\n };\n }\n\n /**\n * Detect Electron app\n */\n private detectElectron(packageJson: Record<string, unknown>): ProjectConfig {\n const entryPoints: Record<string, string> = {};\n\n // Main process\n const mainCandidates = [\n packageJson[\"main\"] as unknown as string | undefined,\n \"src/main/index.ts\",\n \"src/electron/main.ts\",\n \"electron/main.ts\",\n \"main.ts\",\n ].filter((x): x is string => Boolean(x));\n\n for (const candidate of mainCandidates) {\n const fullPath = path.join(this.projectRoot, candidate);\n if (fs.existsSync(fullPath) || fs.existsSync(fullPath.replace(/\\.js$/, \".ts\"))) {\n entryPoints[\"main\"] = fs.existsSync(fullPath) ? fullPath : fullPath.replace(/\\.js$/, \".ts\");\n break;\n }\n }\n\n // Renderer process\n const rendererCandidates = [\n \"src/renderer/index.tsx\",\n \"src/renderer/index.ts\",\n \"src/index.tsx\",\n \"src/index.ts\",\n ];\n\n for (const candidate of rendererCandidates) {\n const fullPath = path.join(this.projectRoot, candidate);\n if (fs.existsSync(fullPath)) {\n entryPoints[\"renderer\"] = fullPath;\n break;\n }\n }\n\n return {\n type: \"electron\",\n entryPoints,\n contextMapping: {\n main: \"Main Process\",\n renderer: \"Renderer Process\",\n },\n metadata: {\n name: packageJson[\"name\"] as unknown as string | undefined,\n version: packageJson[\"version\"] as unknown as string | undefined,\n description: packageJson[\"description\"] as unknown as string | undefined,\n },\n };\n }\n\n /**\n * Detect WebSocket/server app with content analysis and confidence scoring\n */\n private detectWebSocketApp(packageJson: Record<string, unknown>): ProjectConfig {\n const entryPoints: Record<string, string> = {};\n const contextMapping: Record<string, string> = {};\n\n // Server entry point with content analysis\n const serverCandidates = [\n \"src/server.ts\",\n \"src/server.js\",\n \"src/index.ts\",\n \"src/index.js\",\n \"src/main.ts\",\n \"src/main.js\",\n \"src/app.ts\",\n \"src/app.js\",\n \"server.ts\",\n \"server.js\",\n \"index.ts\",\n \"index.js\",\n ];\n\n const scoredServers = this.scoreServerCandidates(serverCandidates);\n if (scoredServers.length > 0) {\n const best = scoredServers[0];\n if (best) {\n entryPoints[\"server\"] = best.path;\n\n // Add context based on detected frameworks\n if (best.hasWebSocket) {\n contextMapping[\"server\"] = \"WebSocket Server\";\n } else if (best.hasHTTP) {\n contextMapping[\"server\"] = \"HTTP Server\";\n } else {\n contextMapping[\"server\"] = \"Server\";\n }\n }\n }\n\n // Client entry point (if exists)\n const clientCandidates = [\n \"src/client/index.ts\",\n \"src/client/index.js\",\n \"src/client.ts\",\n \"src/client.js\",\n \"client/index.ts\",\n \"client/index.js\",\n ];\n\n for (const candidate of clientCandidates) {\n const fullPath = path.join(this.projectRoot, candidate);\n if (fs.existsSync(fullPath)) {\n entryPoints[\"client\"] = fullPath;\n contextMapping[\"client\"] = \"Client\";\n break;\n }\n }\n\n return {\n type: \"websocket-app\",\n entryPoints,\n contextMapping:\n Object.keys(contextMapping).length > 0\n ? contextMapping\n : {\n server: \"Server\",\n client: \"Client\",\n },\n metadata: {\n name: packageJson[\"name\"] as unknown as string | undefined,\n version: packageJson[\"version\"] as unknown as string | undefined,\n description: packageJson[\"description\"] as unknown as string | undefined,\n },\n };\n }\n\n /**\n * Score server candidates based on content analysis\n * Returns sorted array with highest confidence first\n */\n private scoreServerCandidates(\n candidates: string[],\n baseDir?: string\n ): Array<{\n path: string;\n score: number;\n hasWebSocket: boolean;\n hasHTTP: boolean;\n framework: string | null;\n }> {\n const root = baseDir || this.projectRoot;\n const scored: Array<{\n path: string;\n score: number;\n hasWebSocket: boolean;\n hasHTTP: boolean;\n framework: string | null;\n }> = [];\n\n for (const candidate of candidates) {\n const fullPath = path.join(root, candidate);\n if (!fs.existsSync(fullPath)) continue;\n\n try {\n const content = fs.readFileSync(fullPath, \"utf-8\");\n const analysis = this.analyzeServerCandidate(content, candidate);\n\n if (analysis.score > 0) {\n scored.push({\n path: fullPath,\n score: analysis.score,\n hasWebSocket: analysis.hasWebSocket,\n hasHTTP: analysis.hasHTTP,\n framework: analysis.framework,\n });\n }\n } catch (_error) {\n // Ignore file read errors for candidates that don't exist\n }\n }\n\n // Sort by score descending\n return scored.sort((a, b) => b.score - a.score);\n }\n\n /**\n * Analyze server candidate content and return scoring details\n */\n private analyzeServerCandidate(\n content: string,\n candidate: string\n ): {\n score: number;\n hasWebSocket: boolean;\n hasHTTP: boolean;\n framework: string | null;\n } {\n const patterns = this.getServerPatterns();\n const frameworkAnalysis = this.detectFrameworksInContent(content, patterns);\n\n const entryPointScore = this.scoreEntryPointIndicators(content);\n const fileNameScore = this.scoreFileName(candidate);\n\n return {\n score: frameworkAnalysis.score + entryPointScore + fileNameScore,\n hasWebSocket: frameworkAnalysis.hasWebSocket,\n hasHTTP: frameworkAnalysis.hasHTTP,\n framework: frameworkAnalysis.framework,\n };\n }\n\n /**\n * Get regex patterns for server framework detection\n */\n private getServerPatterns() {\n return {\n // Bun WebSocket server\n bunWebSocket: /Bun\\.serve\\s*\\([^)]*websocket\\s*:/i,\n bunHTTP: /Bun\\.serve\\s*\\(/i,\n\n // Node ws library\n wsServer: /new\\s+WebSocket\\.Server/i,\n wsImport: /from\\s+['\"]ws['\"]/,\n\n // Socket.io\n socketIO: /io\\s*\\(|require\\s*\\(\\s*['\"]socket\\.io['\"]\\s*\\)/i,\n\n // Elysia\n elysia: /new\\s+Elysia\\s*\\(|\\.ws\\s*\\(/i,\n elysiaImport: /from\\s+['\"]elysia['\"]/,\n\n // Express\n express: /express\\s*\\(\\)|app\\.listen/i,\n expressWs: /expressWs\\s*\\(/i,\n\n // Generic HTTP server\n httpServer: /createServer|app\\.listen|server\\.listen/i,\n\n // Generic WebSocket patterns\n webSocket: /WebSocket|websocket|\\.ws\\s*\\(|wss\\s*:/i,\n };\n }\n\n /**\n * Detect frameworks in content and calculate score\n */\n private detectFrameworksInContent(\n content: string,\n patterns: ReturnType<typeof this.getServerPatterns>\n ): {\n score: number;\n hasWebSocket: boolean;\n hasHTTP: boolean;\n framework: string | null;\n } {\n let score = 0;\n let hasWebSocket = false;\n let hasHTTP = false;\n let framework: string | null = null;\n\n const bunScore = this.scoreBunFramework(content, patterns);\n score += bunScore.score;\n hasWebSocket = hasWebSocket || bunScore.hasWebSocket;\n hasHTTP = hasHTTP || bunScore.hasHTTP;\n framework = framework || bunScore.framework;\n\n const wsScore = this.scoreWebSocketLibraries(content, patterns);\n score += wsScore.score;\n hasWebSocket = hasWebSocket || wsScore.hasWebSocket;\n framework = framework || wsScore.framework;\n\n const httpScore = this.scoreHTTPFrameworks(content, patterns);\n score += httpScore.score;\n hasWebSocket = hasWebSocket || httpScore.hasWebSocket;\n hasHTTP = hasHTTP || httpScore.hasHTTP;\n framework = framework || httpScore.framework;\n\n const genericScore = this.scoreGenericPatterns(content, patterns, hasWebSocket, hasHTTP);\n score += genericScore.score;\n hasWebSocket = hasWebSocket || genericScore.hasWebSocket;\n hasHTTP = hasHTTP || genericScore.hasHTTP;\n\n return { score, hasWebSocket, hasHTTP, framework };\n }\n\n /**\n * Score Bun framework patterns\n */\n private scoreBunFramework(\n content: string,\n patterns: ReturnType<typeof this.getServerPatterns>\n ): {\n score: number;\n hasWebSocket: boolean;\n hasHTTP: boolean;\n framework: string | null;\n } {\n if (patterns.bunWebSocket.test(content)) {\n return { score: 15, hasWebSocket: true, hasHTTP: true, framework: \"Bun\" };\n }\n\n if (patterns.bunHTTP.test(content)) {\n return { score: 10, hasWebSocket: false, hasHTTP: true, framework: \"Bun\" };\n }\n\n return { score: 0, hasWebSocket: false, hasHTTP: false, framework: null };\n }\n\n /**\n * Score WebSocket library patterns\n */\n private scoreWebSocketLibraries(\n content: string,\n patterns: ReturnType<typeof this.getServerPatterns>\n ): {\n score: number;\n hasWebSocket: boolean;\n framework: string | null;\n } {\n let score = 0;\n let hasWebSocket = false;\n let framework: string | null = null;\n\n if (patterns.wsServer.test(content) || patterns.wsImport.test(content)) {\n score += 12;\n hasWebSocket = true;\n framework = \"ws\";\n }\n\n if (patterns.socketIO.test(content)) {\n score += 12;\n hasWebSocket = true;\n framework = framework || \"socket.io\";\n }\n\n return { score, hasWebSocket, framework };\n }\n\n /**\n * Score HTTP framework patterns\n */\n private scoreHTTPFrameworks(\n content: string,\n patterns: ReturnType<typeof this.getServerPatterns>\n ): {\n score: number;\n hasWebSocket: boolean;\n hasHTTP: boolean;\n framework: string | null;\n } {\n let score = 0;\n let hasWebSocket = false;\n let hasHTTP = false;\n let framework: string | null = null;\n\n if (patterns.elysia.test(content) || patterns.elysiaImport.test(content)) {\n score += 10;\n hasHTTP = true;\n framework = \"Elysia\";\n }\n\n if (patterns.elysiaImport.test(content) && patterns.webSocket.test(content)) {\n score += 8;\n hasWebSocket = true;\n }\n\n if (patterns.express.test(content)) {\n score += 8;\n hasHTTP = true;\n framework = framework || \"Express\";\n }\n\n if (patterns.expressWs.test(content)) {\n score += 5;\n hasWebSocket = true;\n }\n\n return { score, hasWebSocket, hasHTTP, framework };\n }\n\n /**\n * Score generic server patterns\n */\n private scoreGenericPatterns(\n content: string,\n patterns: ReturnType<typeof this.getServerPatterns>,\n hasWebSocket: boolean,\n hasHTTP: boolean\n ): {\n score: number;\n hasWebSocket: boolean;\n hasHTTP: boolean;\n } {\n let score = 0;\n let newHasWebSocket = hasWebSocket;\n let newHasHTTP = hasHTTP;\n\n if (patterns.httpServer.test(content) && !hasHTTP) {\n score += 5;\n newHasHTTP = true;\n }\n\n if (patterns.webSocket.test(content) && !hasWebSocket) {\n score += 3;\n newHasWebSocket = true;\n }\n\n return { score, hasWebSocket: newHasWebSocket, hasHTTP: newHasHTTP };\n }\n\n /**\n * Score entry point indicators in content\n */\n private scoreEntryPointIndicators(content: string): number {\n let score = 0;\n\n if (/\\.listen\\s*\\(/.test(content)) {\n score += 5;\n }\n\n if (/export\\s+default/.test(content)) {\n score += 3;\n }\n\n return score;\n }\n\n /**\n * Score based on file name patterns\n */\n private scoreFileName(candidate: string): number {\n let score = 0;\n\n if (candidate.includes(\"server\")) {\n score += 3;\n }\n\n if (candidate === \"src/index.ts\" || candidate === \"src/index.js\") {\n score += 2;\n }\n\n return score;\n }\n\n /**\n * Detect monorepo from workspaces field in package.json\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Monorepo detection requires iterating workspaces and scoring candidates\n private detectMonorepo(packageJson: Record<string, unknown>): ProjectConfig | null {\n const workspacesRaw = packageJson[\"workspaces\"];\n const patterns: string[] = Array.isArray(workspacesRaw)\n ? workspacesRaw\n : Array.isArray((workspacesRaw as unknown as Record<string, unknown>)?.[\"packages\"])\n ? ((workspacesRaw as unknown as Record<string, unknown>)[\"packages\"] as unknown as string[])\n : [];\n\n if (patterns.length === 0) return null;\n\n const workspaceDirs = this.resolveWorkspaceGlobs(patterns);\n if (workspaceDirs.length === 0) return null;\n\n const entryPoints: Record<string, string> = {};\n const contextMapping: Record<string, string> = {};\n const workspacePackages: Array<{\n name: string;\n path: string;\n context: string;\n }> = [];\n\n for (const wsDir of workspaceDirs) {\n const wsPkgPath = path.join(wsDir, \"package.json\");\n if (!fs.existsSync(wsPkgPath)) continue;\n\n let wsPkg: Record<string, unknown>;\n try {\n wsPkg = JSON.parse(fs.readFileSync(wsPkgPath, \"utf-8\"));\n } catch {\n continue;\n }\n\n const pkgName = (wsPkg[\"name\"] as unknown as string) || path.basename(wsDir);\n const context = this.inferContextFromPackageName(pkgName);\n\n // Score server candidates relative to this workspace\n const serverCandidates = [\n \"src/server.ts\",\n \"src/server.js\",\n \"src/index.ts\",\n \"src/index.js\",\n \"src/main.ts\",\n \"src/main.js\",\n \"src/app.ts\",\n \"src/app.js\",\n \"server.ts\",\n \"server.js\",\n \"index.ts\",\n \"index.js\",\n ];\n\n const scoredServers = this.scoreServerCandidates(serverCandidates, wsDir);\n\n if (scoredServers.length > 0) {\n const best = scoredServers[0];\n if (best) {\n entryPoints[context] = best.path;\n\n if (best.hasWebSocket) {\n contextMapping[context] = \"WebSocket Server\";\n } else if (best.hasHTTP) {\n contextMapping[context] = \"HTTP Server\";\n } else {\n contextMapping[context] = this.capitalize(context);\n }\n }\n } else {\n // Try common entry points even without server patterns\n const commonEntries = [\n \"src/index.ts\",\n \"src/index.tsx\",\n \"src/main.ts\",\n \"src/main.tsx\",\n \"src/app.ts\",\n \"src/app.tsx\",\n \"index.ts\",\n \"index.tsx\",\n ];\n for (const candidate of commonEntries) {\n const fullPath = path.join(wsDir, candidate);\n if (fs.existsSync(fullPath)) {\n entryPoints[context] = fullPath;\n contextMapping[context] = this.capitalize(context);\n break;\n }\n }\n }\n\n workspacePackages.push({ name: pkgName, path: wsDir, context });\n }\n\n if (Object.keys(entryPoints).length === 0) return null;\n\n return {\n type: \"monorepo\",\n entryPoints,\n contextMapping,\n workspacePackages,\n metadata: {\n name: packageJson[\"name\"] as unknown as string | undefined,\n version: packageJson[\"version\"] as unknown as string | undefined,\n description: packageJson[\"description\"] as unknown as string | undefined,\n },\n };\n }\n\n /**\n * Resolve workspace glob patterns to actual directories\n */\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: glob resolution with error handling\n private resolveWorkspaceGlobs(patterns: string[]): string[] {\n const dirs: string[] = [];\n\n for (const pattern of patterns) {\n if (pattern.includes(\"*\")) {\n // Expand glob: \"packages/*\" → list subdirectories of \"packages/\"\n const base = pattern.replace(/\\/?\\*.*$/, \"\");\n const baseDir = path.join(this.projectRoot, base);\n\n if (fs.existsSync(baseDir) && fs.statSync(baseDir).isDirectory()) {\n try {\n const entries = fs.readdirSync(baseDir, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.isDirectory() && !entry.name.startsWith(\".\")) {\n dirs.push(path.join(baseDir, entry.name));\n }\n }\n } catch {\n // Ignore read errors\n }\n }\n } else {\n // Direct path: \"packages/shared\"\n const fullPath = path.join(this.projectRoot, pattern);\n if (fs.existsSync(fullPath) && fs.statSync(fullPath).isDirectory()) {\n dirs.push(fullPath);\n }\n }\n }\n\n return dirs;\n }\n\n /**\n * Infer context name from a package name\n */\n private inferContextFromPackageName(name: string): string {\n // Strip scope: \"@myorg/api\" → \"api\"\n const parts = name.split(\"/\");\n const baseName = name.includes(\"/\") ? parts[parts.length - 1] || name : name;\n const lower = baseName.toLowerCase();\n\n const serverAliases = [\"api\", \"server\", \"backend\"];\n if (serverAliases.includes(lower)) return \"server\";\n\n const clientAliases = [\"web\", \"app\", \"frontend\", \"client\", \"ui\"];\n if (clientAliases.includes(lower)) return \"client\";\n\n const sharedAliases = [\"shared\", \"common\", \"lib\", \"core\", \"utils\"];\n if (sharedAliases.includes(lower)) return \"shared\";\n\n return lower;\n }\n\n /**\n * Capitalize first letter\n */\n private capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n /**\n * Fallback: Generic TypeScript project\n * Uses tsconfig.json to find entry points\n */\n private detectGenericProject(): ProjectConfig {\n const entryPoints: Record<string, string> = {};\n\n // Try to find tsconfig.json\n const tsConfigPath = path.join(this.projectRoot, \"tsconfig.json\");\n if (fs.existsSync(tsConfigPath)) {\n try {\n const tsConfig = JSON.parse(fs.readFileSync(tsConfigPath, \"utf-8\"));\n\n // Check for entry points in various locations\n if (tsConfig.files && Array.isArray(tsConfig.files)) {\n tsConfig.files.forEach((file: string, idx: number) => {\n const fullPath = path.join(this.projectRoot, file);\n if (fs.existsSync(fullPath)) {\n entryPoints[`module${idx + 1}`] = fullPath;\n }\n });\n }\n } catch (_error) {\n // Ignore tsconfig.json parse errors\n }\n }\n\n // If no entry points found, scan src directory\n if (Object.keys(entryPoints).length === 0) {\n const commonEntries = [\"src/index.ts\", \"src/main.ts\", \"src/app.ts\", \"index.ts\", \"main.ts\"];\n\n for (const candidate of commonEntries) {\n const fullPath = path.join(this.projectRoot, candidate);\n if (fs.existsSync(fullPath)) {\n entryPoints[\"main\"] = fullPath;\n break;\n }\n }\n }\n\n // Get metadata from package.json\n const packageJsonPath = path.join(this.projectRoot, \"package.json\");\n let metadata: ProjectConfig[\"metadata\"] = { name: \"Unknown Project\" };\n\n if (fs.existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\"));\n metadata = {\n name: packageJson.name,\n version: packageJson.version,\n description: packageJson.description,\n };\n } catch (_error) {\n // Ignore package.json parse errors\n }\n }\n\n return {\n type: \"generic\",\n entryPoints,\n metadata,\n };\n }\n\n /**\n * Find source file from manifest reference\n */\n private findSourceFile(manifestPath: string): string {\n const candidates = [\n path.join(this.projectRoot, manifestPath),\n path.join(this.projectRoot, manifestPath.replace(/\\.js$/, \".ts\")),\n path.join(this.projectRoot, \"src\", manifestPath),\n path.join(this.projectRoot, \"src\", manifestPath.replace(/\\.js$/, \".ts\")),\n path.join(this.projectRoot, \"src\", manifestPath.replace(/\\.js$/, \".tsx\")),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n }\n\n return path.join(this.projectRoot, manifestPath);\n }\n\n /**\n * Find associated JavaScript/TypeScript file for an HTML file\n */\n private findAssociatedJS(htmlPath: string): string | null {\n if (!fs.existsSync(htmlPath)) {\n return null;\n }\n\n // Read HTML and look for script tags\n const html = fs.readFileSync(htmlPath, \"utf-8\");\n const scriptMatch = html.match(/<script[^>]+src=[\"']([^\"']+)[\"']/i);\n\n if (scriptMatch?.[1]) {\n const scriptPath = scriptMatch[1];\n const fullPath = path.resolve(path.dirname(htmlPath), scriptPath);\n\n if (fs.existsSync(fullPath)) return fullPath;\n if (fs.existsSync(fullPath.replace(/\\.js$/, \".ts\"))) {\n return fullPath.replace(/\\.js$/, \".ts\");\n }\n if (fs.existsSync(fullPath.replace(/\\.js$/, \".tsx\"))) {\n return fullPath.replace(/\\.js$/, \".tsx\");\n }\n }\n\n // Fallback: convention-based files\n const baseName = path.basename(htmlPath, \".html\");\n const dir = path.dirname(htmlPath);\n\n const candidates = [\n path.join(dir, `${baseName}.ts`),\n path.join(dir, `${baseName}.tsx`),\n path.join(dir, `${baseName}.js`),\n path.join(dir, \"index.ts\"),\n path.join(dir, \"index.tsx\"),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n }\n\n return null;\n }\n}\n\n/**\n * Detect project configuration from project root\n */\nexport function detectProjectConfig(projectRoot: string): ProjectConfig {\n const detector = new ProjectDetector(projectRoot);\n return detector.detect();\n}\n",
6
- "#!/usr/bin/env bun\n// CLI for visualization system\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { MeshClientPeerStateSnapshot } from \"../../../src/shared/lib/mesh-client\";\nimport { analyzeArchitecture } from \"../../analysis/src/extract/architecture\";\nimport type { ArchitectureAnalysis } from \"../../analysis/src/types/architecture\";\nimport { generateStructurizrDSL } from \"./codegen/structurizr\";\nimport { collectSnapshotPeerIds, loadMeshSnapshot, MeshSnapshotError } from \"./mesh-snapshot\";\nimport { exportDiagrams } from \"./runner/export\";\n\nconst COLORS = {\n reset: \"\\x1b[0m\",\n red: \"\\x1b[31m\",\n green: \"\\x1b[32m\",\n yellow: \"\\x1b[33m\",\n blue: \"\\x1b[34m\",\n gray: \"\\x1b[90m\",\n};\n\nfunction color(text: string, colorCode: string): string {\n return `${colorCode}${text}${COLORS.reset}`;\n}\n\nasync function main() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n switch (command) {\n case \"--generate\":\n case \"generate\":\n await generateCommand(args.slice(1));\n break;\n\n case \"--export\":\n case \"export\":\n await exportCommand(args.slice(1));\n break;\n\n case \"--serve\":\n case \"serve\":\n case \"--view\":\n case \"view\":\n await serveCommand(args.slice(1));\n break;\n\n case \"--help\":\n case \"help\":\n showHelp();\n break;\n\n default:\n await generateCommand(args);\n }\n}\n\nasync function generateCommand(args: string[]) {\n console.log(color(\"\\n📊 Analyzing architecture...\\n\", COLORS.blue));\n\n try {\n const { snapshotPath } = parseGenerateArgs(args);\n const snapshot = snapshotPath ? loadAndReportSnapshot(snapshotPath) : undefined;\n const { tsConfigPath, projectRoot } = findAndDisplayProjectConfig();\n const analysis = await analyzeAndDisplayResults(tsConfigPath, projectRoot);\n const dslPath = generateAndWriteDSL(analysis, snapshot);\n displayNextSteps(dslPath);\n } catch (_error) {\n // Error details logged by underlying functions\n process.exit(1);\n }\n}\n\n/** Parse the options `polly visualize generate` accepts. */\nfunction parseGenerateArgs(args: string[]): { snapshotPath?: string } {\n const result: { snapshotPath?: string } = {};\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--snapshot\") {\n const next = args[i + 1];\n if (!next || next.startsWith(\"--\")) {\n console.log(color(\"\\n✗ --snapshot requires a file path\\n\", COLORS.red));\n process.exit(1);\n }\n result.snapshotPath = next;\n i++;\n } else if (arg?.startsWith(\"--snapshot=\")) {\n result.snapshotPath = arg.slice(\"--snapshot=\".length);\n }\n }\n\n return result;\n}\n\n/**\n * polly#127: load a captured `MeshClientPeerStateSnapshot`. A malformed\n * file is a clear error and a non-zero exit with no partial DSL. An\n * empty snapshot (no peers beyond the local node) falls back to the\n * static diagram with a warning.\n */\nfunction loadAndReportSnapshot(snapshotPath: string): MeshClientPeerStateSnapshot | undefined {\n let snapshot: MeshClientPeerStateSnapshot;\n try {\n snapshot = loadMeshSnapshot(snapshotPath);\n } catch (error) {\n const message = error instanceof MeshSnapshotError ? error.message : String(error);\n console.log(color(`\\n✗ Snapshot error: ${message}\\n`, COLORS.red));\n process.exit(1);\n }\n\n const isEmpty =\n snapshot.knownPeerIds.length === 0 &&\n snapshot.presentPeerIds.length === 0 &&\n snapshot.peers.length === 0;\n if (isEmpty) {\n console.log(\n color(\"⚠ Snapshot has no peers — generating the static diagram only.\", COLORS.yellow)\n );\n return undefined;\n }\n\n const peerCount = collectSnapshotPeerIds(snapshot).length;\n console.log(color(`✓ Loaded runtime snapshot: ${peerCount} peer(s)`, COLORS.green));\n return snapshot;\n}\n\nfunction findAndDisplayProjectConfig(): { tsConfigPath: string; projectRoot: string } {\n const tsConfigPath = findTsConfig();\n if (!tsConfigPath) {\n process.exit(1);\n }\n console.log(color(` Using: ${tsConfigPath}`, COLORS.gray));\n\n const projectRoot = findProjectRoot();\n if (!projectRoot) {\n process.exit(1);\n }\n console.log(color(` Project: ${projectRoot}`, COLORS.gray));\n\n displayProjectType(projectRoot);\n\n return { tsConfigPath, projectRoot };\n}\n\nfunction displayProjectType(projectRoot: string): void {\n const hasManifest = fs.existsSync(path.join(projectRoot, \"manifest.json\"));\n const projectType = hasManifest ? \"Chrome Extension\" : \"Detecting from project structure...\";\n console.log(color(` Type: ${projectType}`, COLORS.gray));\n}\n\nasync function analyzeAndDisplayResults(\n tsConfigPath: string,\n projectRoot: string\n): Promise<ArchitectureAnalysis> {\n const analysis = await analyzeArchitecture({ tsConfigPath, projectRoot });\n\n console.log(color(`\\n✓ Found ${Object.keys(analysis.contexts).length} context(s)`, COLORS.green));\n console.log(color(`✓ Found ${analysis.messageFlows.length} message flow(s)`, COLORS.green));\n console.log(color(`✓ Found ${analysis.integrations.length} integration(s)`, COLORS.green));\n\n displayArchitectureSummary(analysis);\n\n return analysis;\n}\n\nfunction displayArchitectureSummary(analysis: ArchitectureAnalysis): void {\n console.log(color(\"\\n📋 Architecture Summary:\\n\", COLORS.blue));\n\n console.log(color(\" Contexts:\", COLORS.blue));\n for (const [contextType, contextInfo] of Object.entries(analysis.contexts)) {\n console.log(color(` • ${contextType}`, COLORS.gray));\n console.log(color(` - ${contextInfo.handlers.length} handler(s)`, COLORS.gray));\n console.log(color(` - ${contextInfo.chromeAPIs.length} Chrome API(s)`, COLORS.gray));\n if (contextInfo.components) {\n console.log(color(` - ${contextInfo.components.length} component(s)`, COLORS.gray));\n }\n }\n\n if (analysis.integrations.length > 0) {\n console.log(color(\"\\n External Integrations:\", COLORS.blue));\n for (const integration of analysis.integrations) {\n console.log(color(` • ${integration.name} (${integration.type})`, COLORS.gray));\n }\n }\n}\n\nfunction generateAndWriteDSL(\n analysis: ArchitectureAnalysis,\n snapshot?: MeshClientPeerStateSnapshot\n): string {\n console.log(color(\"\\n📝 Generating Structurizr DSL...\\n\", COLORS.blue));\n\n const contextTypes = Object.keys(analysis.contexts);\n const dsl = generateStructurizrDSL(analysis, {\n includeDynamicDiagrams: true,\n includeComponentDiagrams: true,\n componentDiagramContexts: contextTypes.length > 0 ? contextTypes : [\"background\"],\n snapshot,\n });\n\n const outputDir = path.join(process.cwd(), \"docs\");\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n const dslPath = path.join(outputDir, \"architecture.dsl\");\n fs.writeFileSync(dslPath, dsl, \"utf-8\");\n\n return dslPath;\n}\n\nfunction displayNextSteps(dslPath: string): void {\n const outputDir = path.join(process.cwd(), \"docs\");\n\n console.log(color(\"✅ Architecture documentation generated!\\n\", COLORS.green));\n console.log(` File: ${color(dslPath, COLORS.blue)}`);\n console.log();\n console.log(color(\"📝 Next steps:\", COLORS.blue));\n console.log();\n console.log(\" 1. Export diagrams:\");\n console.log(\" bun visualize --export\");\n console.log();\n console.log(\" 2. View in browser:\");\n console.log(\" bun visualize --serve\");\n console.log();\n console.log(color(\"💡 Alternative: Structurizr Lite\", COLORS.gray));\n console.log(color(\" docker run -it --rm -p 8080:8080 \\\\\", COLORS.gray));\n console.log(color(` -v ${outputDir}:/usr/local/structurizr \\\\`, COLORS.gray));\n console.log(color(\" structurizr/lite\", COLORS.gray));\n console.log();\n console.log(color(\"💡 Upload to Structurizr Cloud:\", COLORS.gray));\n console.log(color(\" 1. Sign up at https://structurizr.com\", COLORS.gray));\n console.log(color(\" 2. Create a workspace and get API credentials\", COLORS.gray));\n console.log(\n color(\" 3. docker run -it --rm -v $(pwd)/docs:/usr/local/structurizr \\\\\", COLORS.gray)\n );\n console.log(\n color(\" structurizr/cli push -id WORKSPACE_ID -key KEY -secret SECRET \\\\\", COLORS.gray)\n );\n console.log(color(\" -workspace /usr/local/structurizr/architecture.dsl\", COLORS.gray));\n console.log();\n}\n\nasync function exportCommand(_args: string[]) {\n console.log(color(\"\\n📤 Generating static site...\\n\", COLORS.blue));\n\n try {\n // Find DSL file\n const dslPath = path.join(process.cwd(), \"docs\", \"architecture.dsl\");\n if (!fs.existsSync(dslPath)) {\n process.exit(1);\n }\n\n const outputDir = path.join(process.cwd(), \"docs\", \"site\");\n\n console.log(color(` DSL: ${dslPath}`, COLORS.gray));\n console.log(color(` Output: ${outputDir}`, COLORS.gray));\n console.log();\n\n // Export static site\n const result = await exportDiagrams({\n dslPath,\n outputDir,\n onProgress: (message) => {\n console.log(color(` ${message}`, COLORS.gray));\n },\n });\n\n if (!result.success) {\n process.exit(1);\n }\n\n // Show results\n console.log(color(\"\\n✅ Static site generated!\\n\", COLORS.green));\n console.log(color(\"📁 Location:\", COLORS.blue));\n console.log(` ${outputDir}`);\n console.log();\n console.log(color(\"💡 Next steps:\", COLORS.gray));\n console.log(color(\" • View: bun visualize --serve\", COLORS.gray));\n console.log(color(\" • Or open: docs/site/index.html\", COLORS.gray));\n console.log();\n } catch (_error) {\n // Error details logged by underlying functions\n process.exit(1);\n }\n}\n\nasync function serveCommand(args: string[]) {\n console.log(color(\"\\n🌐 Starting static site server...\\n\", COLORS.blue));\n\n try {\n const siteDir = path.join(process.cwd(), \"docs\", \"site\");\n const indexPath = path.join(siteDir, \"index.html\");\n\n if (!fs.existsSync(indexPath)) {\n process.exit(1);\n }\n\n // Parse port argument\n const portArg = args.find((arg) => arg.startsWith(\"--port=\"));\n const port = portArg ? Number.parseInt(portArg.replace(\"--port=\", \"\"), 10) : 3000;\n\n console.log(color(` Site: ${siteDir}`, COLORS.gray));\n console.log(color(` Port: ${port}`, COLORS.gray));\n console.log();\n\n // Start Bun's static file server\n const BunGlobal = (globalThis as unknown as { Bun?: typeof Bun }).Bun;\n if (!BunGlobal) {\n throw new Error(\"Bun runtime is required to run the server\");\n }\n\n void BunGlobal.serve({\n port,\n fetch(req: Request) {\n const url = new URL(req.url);\n const filePath = path.join(siteDir, url.pathname === \"/\" ? \"index.html\" : url.pathname);\n\n if (fs.existsSync(filePath) && fs.statSync(filePath).isFile()) {\n const file = BunGlobal.file(filePath);\n return new Response(file);\n }\n\n return new Response(\"Not found\", { status: 404 });\n },\n });\n\n console.log(color(\"\\n✅ Server started!\\n\", COLORS.green));\n console.log(` ${color(`http://localhost:${port}`, COLORS.blue)}`);\n console.log();\n console.log(color(\"Press Ctrl+C to stop the server\", COLORS.gray));\n console.log();\n\n // Auto-open browser\n if (process.platform === \"darwin\") {\n await BunGlobal.spawn([\"open\", `http://localhost:${port}`]);\n } else if (process.platform === \"linux\") {\n await BunGlobal.spawn([\"xdg-open\", `http://localhost:${port}`]);\n } else if (process.platform === \"win32\") {\n await BunGlobal.spawn([\"cmd\", \"/c\", \"start\", `http://localhost:${port}`]);\n }\n\n // Keep process alive indefinitely\n await new Promise(() => {\n // Intentionally empty - keeps the server running\n });\n } catch (_error) {\n process.exit(1);\n }\n}\n\nfunction showHelp() {\n console.log(`\n${color(\"bun visualize\", COLORS.blue)} - Architecture visualization tool\n\n${color(\"Supports:\", COLORS.blue)}\n\n • Chrome Extensions (manifest.json)\n • PWAs (public/manifest.json)\n • WebSocket/Server Apps (ws, socket.io, elysia)\n • Electron Apps\n • Generic TypeScript Projects\n\n${color(\"Commands:\", COLORS.blue)}\n\n ${color(\"bun visualize\", COLORS.green)}\n ${color(\"bun visualize --generate\", COLORS.green)}\n Analyze codebase and generate Structurizr DSL\n\n ${color(\"bun visualize generate --snapshot <path>\", COLORS.green)}\n Overlay a captured MeshClientPeerStateSnapshot — runtime mesh peers\n and sync-state-coloured replication edges — onto the diagram\n\n ${color(\"bun visualize --export\", COLORS.green)}\n Generate static HTML site with interactive diagrams (requires Docker)\n\n ${color(\"bun visualize --serve\", COLORS.green)}\n ${color(\"bun visualize --serve --port=3000\", COLORS.green)}\n Serve the static site in browser\n\n ${color(\"bun visualize --help\", COLORS.green)}\n Show this help message\n\n${color(\"Getting Started:\", COLORS.blue)}\n\n 1. Run ${color(\"bun visualize\", COLORS.green)} from your project root\n 2. Find generated ${color(\"docs/architecture.dsl\", COLORS.blue)}\n 3. View with Structurizr Lite (see instructions after generation)\n\n${color(\"What gets generated:\", COLORS.blue)}\n\n • System Context diagram - Your app + external systems\n • Container diagram - App contexts (background, content, server, client, etc.)\n • Component diagrams - Internal components within contexts\n • Dynamic diagrams - Message flows between contexts\n\n${color(\"Learn More:\", COLORS.blue)}\n\n Documentation: https://github.com/fairfox/web-ext\n Structurizr: https://structurizr.com\n C4 Model: https://c4model.com\n`);\n}\n\nfunction findTsConfig(): string | null {\n const locations = [\n path.join(process.cwd(), \"tsconfig.json\"),\n path.join(process.cwd(), \"..\", \"tsconfig.json\"),\n ];\n\n for (const loc of locations) {\n if (fs.existsSync(loc)) {\n return loc;\n }\n }\n\n return null;\n}\n\nfunction findProjectRoot(): string | null {\n const locations = [process.cwd(), path.join(process.cwd(), \"..\")];\n\n for (const loc of locations) {\n // Check for any project marker file\n if (\n fs.existsSync(path.join(loc, \"manifest.json\")) ||\n fs.existsSync(path.join(loc, \"package.json\")) ||\n fs.existsSync(path.join(loc, \"tsconfig.json\"))\n ) {\n return loc;\n }\n }\n\n return null;\n}\n\nmain().catch((_error) => {\n // Error details logged by underlying functions\n process.exit(1);\n});\n",
6
+ "#!/usr/bin/env bun\n// CLI for visualization system\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { MeshClientPeerStateSnapshot } from \"../../../src/shared/lib/mesh-client\";\nimport { analyzeArchitecture } from \"../../analysis/src/extract/architecture\";\nimport type { ArchitectureAnalysis } from \"../../analysis/src/types/architecture\";\nimport { generateStructurizrDSL } from \"./codegen/structurizr\";\nimport { collectSnapshotPeerIds, loadMeshSnapshot, MeshSnapshotError } from \"./mesh-snapshot\";\nimport { exportDiagrams } from \"./runner/export\";\n\nconst COLORS = {\n reset: \"\\x1b[0m\",\n red: \"\\x1b[31m\",\n green: \"\\x1b[32m\",\n yellow: \"\\x1b[33m\",\n blue: \"\\x1b[34m\",\n gray: \"\\x1b[90m\",\n};\n\nfunction color(text: string, colorCode: string): string {\n return `${colorCode}${text}${COLORS.reset}`;\n}\n\nasync function main() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n switch (command) {\n case \"--generate\":\n case \"generate\":\n await generateCommand(args.slice(1));\n break;\n\n case \"--export\":\n case \"export\":\n await exportCommand(args.slice(1));\n break;\n\n case \"--serve\":\n case \"serve\":\n case \"--view\":\n case \"view\":\n await serveCommand(args.slice(1));\n break;\n\n case \"--help\":\n case \"help\":\n showHelp();\n break;\n\n default:\n await generateCommand(args);\n }\n}\n\nasync function generateCommand(args: string[]) {\n console.log(color(\"\\n📊 Analyzing architecture...\\n\", COLORS.blue));\n\n try {\n const { snapshotPath } = parseGenerateArgs(args);\n const snapshot = snapshotPath ? loadAndReportSnapshot(snapshotPath) : undefined;\n const { tsConfigPath, projectRoot } = findAndDisplayProjectConfig();\n const analysis = await analyzeAndDisplayResults(tsConfigPath, projectRoot);\n const dslPath = generateAndWriteDSL(analysis, snapshot);\n displayNextSteps(dslPath);\n } catch (_error) {\n // Error details logged by underlying functions\n process.exit(1);\n }\n}\n\n/** Parse the options `polly visualize generate` accepts. */\nfunction parseGenerateArgs(args: string[]): { snapshotPath?: string } {\n const result: { snapshotPath?: string } = {};\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--snapshot\") {\n const next = args[i + 1];\n if (!next || next.startsWith(\"--\")) {\n console.log(color(\"\\n✗ --snapshot requires a file path\\n\", COLORS.red));\n process.exit(1);\n }\n result.snapshotPath = next;\n i++;\n } else if (arg?.startsWith(\"--snapshot=\")) {\n result.snapshotPath = arg.slice(\"--snapshot=\".length);\n }\n }\n\n return result;\n}\n\n/**\n * polly#127: load a captured `MeshClientPeerStateSnapshot`. A malformed\n * file is a clear error and a non-zero exit with no partial DSL. An\n * empty snapshot (no peers beyond the local node) falls back to the\n * static diagram with a warning.\n */\nfunction loadAndReportSnapshot(snapshotPath: string): MeshClientPeerStateSnapshot | undefined {\n let snapshot: MeshClientPeerStateSnapshot;\n try {\n snapshot = loadMeshSnapshot(snapshotPath);\n } catch (error) {\n const message = error instanceof MeshSnapshotError ? error.message : String(error);\n console.log(color(`\\n✗ Snapshot error: ${message}\\n`, COLORS.red));\n process.exit(1);\n }\n\n const isEmpty =\n snapshot.knownPeerIds.length === 0 &&\n snapshot.presentPeerIds.length === 0 &&\n snapshot.peers.length === 0;\n if (isEmpty) {\n console.log(\n color(\"⚠ Snapshot has no peers — generating the static diagram only.\", COLORS.yellow)\n );\n return undefined;\n }\n\n const peerCount = collectSnapshotPeerIds(snapshot).length;\n console.log(color(`✓ Loaded runtime snapshot: ${peerCount} peer(s)`, COLORS.green));\n return snapshot;\n}\n\nfunction findAndDisplayProjectConfig(): { tsConfigPath: string; projectRoot: string } {\n const tsConfigPath = findTsConfig();\n if (!tsConfigPath) {\n process.exit(1);\n }\n console.log(color(` Using: ${tsConfigPath}`, COLORS.gray));\n\n const projectRoot = findProjectRoot();\n if (!projectRoot) {\n process.exit(1);\n }\n console.log(color(` Project: ${projectRoot}`, COLORS.gray));\n\n displayProjectType(projectRoot);\n\n return { tsConfigPath, projectRoot };\n}\n\nfunction displayProjectType(projectRoot: string): void {\n const hasManifest = fs.existsSync(path.join(projectRoot, \"manifest.json\"));\n const projectType = hasManifest ? \"Chrome Extension\" : \"Detecting from project structure...\";\n console.log(color(` Type: ${projectType}`, COLORS.gray));\n}\n\nasync function analyzeAndDisplayResults(\n tsConfigPath: string,\n projectRoot: string\n): Promise<ArchitectureAnalysis> {\n const analysis = await analyzeArchitecture({ tsConfigPath, projectRoot });\n\n console.log(color(`\\n✓ Found ${Object.keys(analysis.contexts).length} context(s)`, COLORS.green));\n console.log(color(`✓ Found ${analysis.messageFlows.length} message flow(s)`, COLORS.green));\n console.log(color(`✓ Found ${analysis.integrations.length} integration(s)`, COLORS.green));\n\n displayArchitectureSummary(analysis);\n\n return analysis;\n}\n\nfunction displayArchitectureSummary(analysis: ArchitectureAnalysis): void {\n console.log(color(\"\\n📋 Architecture Summary:\\n\", COLORS.blue));\n\n console.log(color(\" Contexts:\", COLORS.blue));\n for (const [contextType, contextInfo] of Object.entries(analysis.contexts)) {\n console.log(color(` • ${contextType}`, COLORS.gray));\n console.log(color(` - ${contextInfo.handlers.length} handler(s)`, COLORS.gray));\n console.log(color(` - ${contextInfo.chromeAPIs.length} Chrome API(s)`, COLORS.gray));\n if (contextInfo.components) {\n console.log(color(` - ${contextInfo.components.length} component(s)`, COLORS.gray));\n }\n }\n\n if (analysis.integrations.length > 0) {\n console.log(color(\"\\n External Integrations:\", COLORS.blue));\n for (const integration of analysis.integrations) {\n console.log(color(` • ${integration.name} (${integration.type})`, COLORS.gray));\n }\n }\n}\n\nfunction generateAndWriteDSL(\n analysis: ArchitectureAnalysis,\n snapshot?: MeshClientPeerStateSnapshot\n): string {\n console.log(color(\"\\n📝 Generating Structurizr DSL...\\n\", COLORS.blue));\n\n const contextTypes = Object.keys(analysis.contexts);\n const dsl = generateStructurizrDSL(analysis, {\n includeDynamicDiagrams: true,\n includeComponentDiagrams: true,\n componentDiagramContexts: contextTypes.length > 0 ? contextTypes : [\"background\"],\n snapshot,\n });\n\n const outputDir = path.join(process.cwd(), \"docs\");\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n const dslPath = path.join(outputDir, \"architecture.dsl\");\n fs.writeFileSync(dslPath, dsl, \"utf-8\");\n\n return dslPath;\n}\n\nfunction displayNextSteps(dslPath: string): void {\n const outputDir = path.join(process.cwd(), \"docs\");\n\n console.log(color(\"✅ Architecture documentation generated!\\n\", COLORS.green));\n console.log(` File: ${color(dslPath, COLORS.blue)}`);\n console.log();\n console.log(color(\"📝 Next steps:\", COLORS.blue));\n console.log();\n console.log(\" 1. Export diagrams:\");\n console.log(\" polly visualize --export\");\n console.log();\n console.log(\" 2. View in browser:\");\n console.log(\" polly visualize --serve\");\n console.log();\n console.log(color(\"💡 Alternative: Structurizr Lite\", COLORS.gray));\n console.log(color(\" docker run -it --rm -p 8080:8080 \\\\\", COLORS.gray));\n console.log(color(` -v ${outputDir}:/usr/local/structurizr \\\\`, COLORS.gray));\n console.log(color(\" structurizr/lite\", COLORS.gray));\n console.log();\n console.log(color(\"💡 Upload to Structurizr Cloud:\", COLORS.gray));\n console.log(color(\" 1. Sign up at https://structurizr.com\", COLORS.gray));\n console.log(color(\" 2. Create a workspace and get API credentials\", COLORS.gray));\n console.log(\n color(\" 3. docker run -it --rm -v $(pwd)/docs:/usr/local/structurizr \\\\\", COLORS.gray)\n );\n console.log(\n color(\" structurizr/cli push -id WORKSPACE_ID -key KEY -secret SECRET \\\\\", COLORS.gray)\n );\n console.log(color(\" -workspace /usr/local/structurizr/architecture.dsl\", COLORS.gray));\n console.log();\n}\n\nasync function exportCommand(_args: string[]) {\n console.log(color(\"\\n📤 Generating static site...\\n\", COLORS.blue));\n\n try {\n // Find DSL file\n const dslPath = path.join(process.cwd(), \"docs\", \"architecture.dsl\");\n if (!fs.existsSync(dslPath)) {\n process.exit(1);\n }\n\n const outputDir = path.join(process.cwd(), \"docs\", \"site\");\n\n console.log(color(` DSL: ${dslPath}`, COLORS.gray));\n console.log(color(` Output: ${outputDir}`, COLORS.gray));\n console.log();\n\n // Export static site\n const result = await exportDiagrams({\n dslPath,\n outputDir,\n onProgress: (message) => {\n console.log(color(` ${message}`, COLORS.gray));\n },\n });\n\n if (!result.success) {\n process.exit(1);\n }\n\n // Show results\n console.log(color(\"\\n✅ Static site generated!\\n\", COLORS.green));\n console.log(color(\"📁 Location:\", COLORS.blue));\n console.log(` ${outputDir}`);\n console.log();\n console.log(color(\"💡 Next steps:\", COLORS.gray));\n console.log(color(\" • View: polly visualize --serve\", COLORS.gray));\n console.log(color(\" • Or open: docs/site/index.html\", COLORS.gray));\n console.log();\n } catch (_error) {\n // Error details logged by underlying functions\n process.exit(1);\n }\n}\n\nasync function serveCommand(args: string[]) {\n console.log(color(\"\\n🌐 Starting static site server...\\n\", COLORS.blue));\n\n try {\n const siteDir = path.join(process.cwd(), \"docs\", \"site\");\n const indexPath = path.join(siteDir, \"index.html\");\n\n if (!fs.existsSync(indexPath)) {\n process.exit(1);\n }\n\n // Parse port argument\n const portArg = args.find((arg) => arg.startsWith(\"--port=\"));\n const port = portArg ? Number.parseInt(portArg.replace(\"--port=\", \"\"), 10) : 3000;\n\n console.log(color(` Site: ${siteDir}`, COLORS.gray));\n console.log(color(` Port: ${port}`, COLORS.gray));\n console.log();\n\n // Start Bun's static file server\n const BunGlobal = (globalThis as unknown as { Bun?: typeof Bun }).Bun;\n if (!BunGlobal) {\n throw new Error(\"Bun runtime is required to run the server\");\n }\n\n void BunGlobal.serve({\n port,\n fetch(req: Request) {\n const url = new URL(req.url);\n const filePath = path.join(siteDir, url.pathname === \"/\" ? \"index.html\" : url.pathname);\n\n if (fs.existsSync(filePath) && fs.statSync(filePath).isFile()) {\n const file = BunGlobal.file(filePath);\n return new Response(file);\n }\n\n return new Response(\"Not found\", { status: 404 });\n },\n });\n\n console.log(color(\"\\n✅ Server started!\\n\", COLORS.green));\n console.log(` ${color(`http://localhost:${port}`, COLORS.blue)}`);\n console.log();\n console.log(color(\"Press Ctrl+C to stop the server\", COLORS.gray));\n console.log();\n\n // Auto-open browser\n if (process.platform === \"darwin\") {\n await BunGlobal.spawn([\"open\", `http://localhost:${port}`]);\n } else if (process.platform === \"linux\") {\n await BunGlobal.spawn([\"xdg-open\", `http://localhost:${port}`]);\n } else if (process.platform === \"win32\") {\n await BunGlobal.spawn([\"cmd\", \"/c\", \"start\", `http://localhost:${port}`]);\n }\n\n // Keep process alive indefinitely\n await new Promise(() => {\n // Intentionally empty - keeps the server running\n });\n } catch (_error) {\n process.exit(1);\n }\n}\n\nfunction showHelp() {\n console.log(`\n${color(\"polly visualize\", COLORS.blue)} - Architecture visualization tool\n\nHand-drawn architecture diagrams rot the moment the code moves. This reads the\nreal handlers, message flows and execution contexts straight from source, so the\npicture always matches what actually ships.\n\n${color(\"Supports:\", COLORS.blue)}\n\n • Chrome Extensions (manifest.json)\n • PWAs (public/manifest.json)\n • WebSocket/Server Apps (ws, socket.io, elysia)\n • Electron Apps\n • Generic TypeScript Projects\n\n${color(\"Commands:\", COLORS.blue)}\n\n ${color(\"polly visualize\", COLORS.green)}\n ${color(\"polly visualize --generate\", COLORS.green)}\n Analyze codebase and generate Structurizr DSL\n\n ${color(\"polly visualize generate --snapshot <path>\", COLORS.green)}\n Overlay a captured MeshClientPeerStateSnapshot — runtime mesh peers\n and sync-state-coloured replication edges — onto the diagram\n\n ${color(\"polly visualize --export\", COLORS.green)}\n Generate static HTML site with interactive diagrams (requires Docker)\n\n ${color(\"polly visualize --serve\", COLORS.green)}\n ${color(\"polly visualize --serve --port=3000\", COLORS.green)}\n Serve the static site in browser\n\n ${color(\"polly visualize --help\", COLORS.green)}\n Show this help message\n\n${color(\"Getting Started:\", COLORS.blue)}\n\n 1. Run ${color(\"polly visualize\", COLORS.green)} from your project root\n 2. Find generated ${color(\"docs/architecture.dsl\", COLORS.blue)}\n 3. View with Structurizr Lite (see instructions after generation)\n\n${color(\"What gets generated:\", COLORS.blue)}\n\n • System Context diagram - Your app + external systems\n • Container diagram - App contexts (background, content, server, client, etc.)\n • Component diagrams - Internal components within contexts\n • Dynamic diagrams - Message flows between contexts\n\n${color(\"Learn More:\", COLORS.blue)}\n\n Documentation: https://github.com/fairfox/web-ext\n Structurizr: https://structurizr.com\n C4 Model: https://c4model.com\n`);\n}\n\nfunction findTsConfig(): string | null {\n const locations = [\n path.join(process.cwd(), \"tsconfig.json\"),\n path.join(process.cwd(), \"..\", \"tsconfig.json\"),\n ];\n\n for (const loc of locations) {\n if (fs.existsSync(loc)) {\n return loc;\n }\n }\n\n return null;\n}\n\nfunction findProjectRoot(): string | null {\n const locations = [process.cwd(), path.join(process.cwd(), \"..\")];\n\n for (const loc of locations) {\n // Check for any project marker file\n if (\n fs.existsSync(path.join(loc, \"manifest.json\")) ||\n fs.existsSync(path.join(loc, \"package.json\")) ||\n fs.existsSync(path.join(loc, \"tsconfig.json\"))\n ) {\n return loc;\n }\n }\n\n return null;\n}\n\nmain().catch((_error) => {\n // Error details logged by underlying functions\n process.exit(1);\n});\n",
7
7
  "// Architecture analysis - main orchestrator\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type {\n ArchitectureAnalysis,\n ContextInfo,\n ManifestInfo,\n ProjectConfig,\n} from \"../types/architecture\";\nimport type { MessageHandler } from \"../types/core\";\nimport { extractADRs } from \"./adr\";\nimport { ContextAnalyzer } from \"./contexts\";\nimport { FlowAnalyzer } from \"./flows\";\nimport { HandlerExtractor } from \"./handlers\";\nimport { IntegrationAnalyzer } from \"./integrations\";\nimport { ManifestParser } from \"./manifest\";\n\nexport interface ArchitectureAnalysisOptions {\n /** Path to tsconfig.json */\n tsConfigPath: string;\n\n /** Project root directory */\n projectRoot: string;\n\n /** Optional: Override detected contexts */\n contexts?: string[];\n\n /** Optional: Use generic project detection (non-extension) */\n useProjectDetector?: boolean;\n}\n\nexport class ArchitectureAnalyzer {\n private options: ArchitectureAnalysisOptions;\n\n constructor(options: ArchitectureAnalysisOptions) {\n this.options = options;\n }\n\n /**\n * Perform complete architecture analysis\n */\n async analyze(): Promise<ArchitectureAnalysis> {\n // 1. Initialize system info and entry points\n const { manifest, projectConfig, entryPoints, systemInfo } = await this.initializeSystemInfo();\n\n // Build context overrides from monorepo workspace packages\n const contextOverrides = new Map<string, string>();\n if (projectConfig?.workspacePackages) {\n for (const pkg of projectConfig.workspacePackages) {\n // Map workspace path prefix to its context name\n contextOverrides.set(pkg.path, pkg.context);\n }\n }\n\n // 2. Extract message handlers\n const handlerExtractor = new HandlerExtractor(\n this.options.tsConfigPath,\n contextOverrides.size > 0 ? contextOverrides : undefined\n );\n const { handlers, meshOrPeerSignals } = handlerExtractor.extractHandlers();\n\n // 3. Analyze each context\n const contexts = this.analyzeContexts(entryPoints, handlers);\n\n // 4. Analyze message flows\n const flowAnalyzer = new FlowAnalyzer(\n this.options.tsConfigPath,\n handlers,\n contextOverrides.size > 0 ? contextOverrides : undefined\n );\n const messageFlows = flowAnalyzer.analyzeFlows();\n\n // 5. Analyze external integrations\n const integrationAnalyzer = new IntegrationAnalyzer(this.options.tsConfigPath);\n const integrations = integrationAnalyzer.analyzeIntegrations();\n\n // 6. Merge external API calls into context info\n this.mergeExternalAPIsIntoContexts(contexts, integrations);\n\n // 7. Extract ADRs (Architecture Decision Records)\n const adrs = extractADRs(this.options.projectRoot);\n\n // 8. Extract repository info\n const repository = this.extractRepositoryInfo();\n\n return {\n projectRoot: this.options.projectRoot,\n system: systemInfo,\n ...(manifest ? { manifest } : {}),\n ...(projectConfig ? { projectConfig } : {}),\n contexts,\n messageFlows,\n integrations,\n ...(meshOrPeerSignals.length > 0 ? { meshOrPeerSignals } : {}),\n ...(adrs.adrs.length > 0 ? { adrs } : {}),\n ...(repository ? { repository } : {}),\n };\n }\n\n /**\n * Initialize system information and entry points\n */\n private async initializeSystemInfo(): Promise<{\n manifest?: ManifestInfo;\n projectConfig?: ProjectConfig;\n entryPoints: Record<string, string>;\n systemInfo: { name: string; version: string; description?: string };\n }> {\n const manifestParser = new ManifestParser(this.options.projectRoot, true);\n\n if (manifestParser.hasManifest() && !this.options.useProjectDetector) {\n // Parse manifest.json (Chrome extension)\n const manifest = manifestParser.parse();\n const entryPoints = manifestParser.getContextEntryPoints();\n\n return {\n manifest,\n entryPoints,\n systemInfo: {\n name: manifest.name,\n version: manifest.version,\n ...(manifest.description ? { description: manifest.description } : {}),\n },\n };\n }\n\n // Use project detector for generic projects\n const { detectProjectConfig } = await import(\"./project-detector\");\n const projectConfig = detectProjectConfig(this.options.projectRoot);\n\n return {\n projectConfig,\n entryPoints: projectConfig.entryPoints,\n systemInfo: {\n name: projectConfig.metadata?.name || \"Unknown Project\",\n version: projectConfig.metadata?.version || \"0.0.0\",\n ...(projectConfig.metadata?.description\n ? { description: projectConfig.metadata.description }\n : {}),\n },\n };\n }\n\n /**\n * Analyze all contexts from entry points\n */\n private analyzeContexts(\n entryPoints: Record<string, string>,\n handlers: MessageHandler[]\n ): Record<string, ContextInfo> {\n const contextAnalyzer = new ContextAnalyzer(this.options.tsConfigPath);\n const contexts: Record<string, ContextInfo> = {};\n\n for (const [contextType, entryPoint] of Object.entries(entryPoints)) {\n try {\n const contextInfo = contextAnalyzer.analyzeContext(contextType, entryPoint, handlers);\n contexts[contextType] = contextInfo;\n } catch (error) {\n // Skip contexts that fail to analyze\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Failed to analyze context ${contextType}: ${error}`);\n }\n }\n }\n\n return contexts;\n }\n\n /**\n * Merge external API calls into their respective contexts\n */\n private mergeExternalAPIsIntoContexts(\n contexts: Record<string, ContextInfo>,\n integrations: ExternalIntegration[]\n ): void {\n for (const integration of integrations) {\n if (integration.calls) {\n for (const call of integration.calls) {\n // Find which context this call belongs to\n for (const [contextType, contextInfo] of Object.entries(contexts)) {\n if (call.location.file.includes(`/${contextType}/`)) {\n contextInfo.externalAPIs.push(call);\n break;\n }\n }\n }\n }\n }\n }\n\n /**\n * Extract repository information from package.json\n */\n private extractRepositoryInfo(): ArchitectureAnalysis[\"repository\"] {\n const packageJsonPath = path.join(this.options.projectRoot, \"package.json\");\n\n if (!fs.existsSync(packageJsonPath)) {\n return undefined;\n }\n\n try {\n const content = fs.readFileSync(packageJsonPath, \"utf-8\");\n const packageJson = JSON.parse(content);\n\n if (packageJson.repository) {\n if (typeof packageJson.repository === \"string\") {\n return {\n url: packageJson.repository,\n type: \"git\",\n };\n }\n\n return {\n url: packageJson.repository.url || packageJson.repository,\n type: packageJson.repository.type || \"git\",\n };\n }\n } catch (error) {\n // Skip if package.json is malformed or unreadable\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Failed to extract repository info from package.json: ${error}`);\n }\n }\n\n return undefined;\n }\n}\n\n/**\n * Convenience function to analyze architecture\n */\nexport async function analyzeArchitecture(\n options: ArchitectureAnalysisOptions\n): Promise<ArchitectureAnalysis> {\n const analyzer = new ArchitectureAnalyzer(options);\n return analyzer.analyze();\n}\n\n// Fix: Import ExternalIntegration type\nimport type { ExternalIntegration } from \"../types/architecture\";\n",
8
8
  "// ADR (Architecture Decision Record) extractor\n// Parses ADRs from markdown files following Michael Nygard's format\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { ADR, ADRCollection, ADRLink, ADRStatus } from \"../types/adr\";\n\nexport class ADRExtractor {\n private projectRoot: string;\n\n constructor(projectRoot: string) {\n this.projectRoot = projectRoot;\n }\n\n /**\n * Extract ADRs from docs/adr directory\n */\n extract(): ADRCollection {\n const adrDir = this.findADRDirectory();\n\n if (!adrDir || !fs.existsSync(adrDir)) {\n return {\n adrs: [],\n directory: adrDir || path.join(this.projectRoot, \"docs\", \"adr\"),\n };\n }\n\n const files = fs\n .readdirSync(adrDir)\n .filter((file) => file.endsWith(\".md\"))\n .map((file) => path.join(adrDir, file));\n\n const adrs: ADR[] = [];\n\n for (const file of files) {\n try {\n const adr = this.parseADR(file);\n if (adr) {\n adrs.push(adr);\n }\n } catch (error) {\n // Skip malformed ADR files\n if (process.env[\"POLLY_DEBUG\"]) {\n console.log(`[DEBUG] Failed to parse ADR file ${file}: ${error}`);\n }\n }\n }\n\n // Sort by ID\n adrs.sort((a, b) => a.id.localeCompare(b.id));\n\n return {\n adrs,\n directory: adrDir,\n };\n }\n\n /**\n * Find ADR directory\n */\n private findADRDirectory(): string | null {\n const candidates = [\n path.join(this.projectRoot, \"docs\", \"adr\"),\n path.join(this.projectRoot, \"docs\", \"architecture\", \"decisions\"),\n path.join(this.projectRoot, \"adr\"),\n path.join(this.projectRoot, \"architecture\", \"decisions\"),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n }\n\n return null;\n }\n\n /**\n * Parse ADR from markdown file\n */\n private parseADR(filePath: string): ADR | null {\n const content = fs.readFileSync(filePath, \"utf-8\");\n const fileName = path.basename(filePath, \".md\");\n\n // Extract ID from filename (e.g., \"0001-use-preact.md\" → \"0001\")\n const idMatch = fileName.match(/^(\\d+)/);\n const id = idMatch?.[1] ?? fileName;\n\n // Extract title from first heading\n const titleMatch = content.match(/^#\\s+(.+)$/m);\n const title = titleMatch?.[1]?.trim() ?? fileName;\n\n // Extract status\n const status = this.extractStatus(content);\n\n // Extract date\n const date = this.extractDate(content);\n\n // Extract sections\n const context = this.extractSection(content, \"Context\");\n const decision = this.extractSection(content, \"Decision\");\n const consequences = this.extractSection(content, \"Consequences\");\n\n // Extract alternatives (if present)\n const alternativesSection = this.extractSection(content, \"Alternatives\");\n const alternatives = alternativesSection\n ? alternativesSection\n .split(\"\\n\")\n .filter((line) => line.trim().startsWith(\"-\"))\n .map((line) => line.replace(/^-\\s*/, \"\").trim())\n : undefined;\n\n // Extract links\n const links = this.extractLinks(content);\n\n if (!context || !decision || !consequences) {\n // Not a valid ADR format\n return null;\n }\n\n return {\n id,\n title,\n status,\n date,\n context,\n decision,\n consequences,\n ...(alternatives && alternatives.length > 0 ? { alternatives } : {}),\n ...(links.length > 0 ? { links } : {}),\n source: filePath,\n };\n }\n\n /**\n * Extract status from content\n */\n private extractStatus(content: string): ADRStatus {\n const statusMatch = content.match(/Status:\\s*(\\w+)/i);\n if (!statusMatch) return \"accepted\";\n\n const status = statusMatch[1]?.toLowerCase();\n if (status && [\"proposed\", \"accepted\", \"deprecated\", \"superseded\"].includes(status)) {\n return status as unknown as ADRStatus;\n }\n\n return \"accepted\";\n }\n\n /**\n * Extract date from content\n */\n private extractDate(content: string): string {\n // Try to find date in various formats\n const dateMatch =\n content.match(/Date:\\s*(\\d{4}-\\d{2}-\\d{2})/i) || content.match(/(\\d{4}-\\d{2}-\\d{2})/i);\n\n if (dateMatch?.[1]) {\n return dateMatch[1];\n }\n\n const isoDate = new Date().toISOString().split(\"T\")[0];\n return isoDate || new Date().toLocaleDateString(\"en-CA\");\n }\n\n /**\n * Extract section content\n */\n private extractSection(content: string, sectionName: string): string {\n // Match section heading and capture content until next heading or end\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp — sectionName is a hardcoded callsite literal, not user input.\n const regex = new RegExp(`##\\\\s+${sectionName}\\\\s*\\\\n([\\\\s\\\\S]*?)(?=\\\\n##|$)`, \"i\");\n const match = content.match(regex);\n\n return match?.[1]?.trim() ?? \"\";\n }\n\n /**\n * Extract links to other ADRs\n */\n private extractLinks(content: string): ADRLink[] {\n const links: ADRLink[] = [];\n\n // Look for supersedes/superseded-by links\n const supersedesMatch = content.match(/Supersedes:\\s*ADR-(\\d+)/gi);\n if (supersedesMatch) {\n for (const match of supersedesMatch) {\n const idMatch = match.match(/ADR-(\\d+)/);\n const id = idMatch?.[1];\n if (id) {\n links.push({\n type: \"supersedes\",\n adrId: id,\n });\n }\n }\n }\n\n const supersededByMatch = content.match(/Superseded by:\\s*ADR-(\\d+)/gi);\n if (supersededByMatch) {\n for (const match of supersededByMatch) {\n const idMatch = match.match(/ADR-(\\d+)/);\n const id = idMatch?.[1];\n if (id) {\n links.push({\n type: \"superseded-by\",\n adrId: id,\n });\n }\n }\n }\n\n return links;\n }\n}\n\n/**\n * Extract ADRs from project\n */\nexport function extractADRs(projectRoot: string): ADRCollection {\n const extractor = new ADRExtractor(projectRoot);\n return extractor.extract();\n}\n",
9
9
  "// Context analysis - analyze individual execution contexts\n\nimport {\n type ArrowFunction,\n type ClassDeclaration,\n type FunctionDeclaration,\n type FunctionExpression,\n Node,\n Project,\n type SourceFile,\n} from \"ts-morph\";\nimport type { ComponentInfo, ContextInfo } from \"../types/architecture\";\nimport type { MessageHandler } from \"../types/core\";\n\nexport class ContextAnalyzer {\n private project: Project;\n\n constructor(tsConfigPath: string) {\n this.project = new Project({\n tsConfigFilePath: tsConfigPath,\n });\n }\n\n /**\n * Analyze a specific context given its entry point\n */\n analyzeContext(contextType: string, entryPoint: string, handlers: MessageHandler[]): ContextInfo {\n const sourceFile = this.project.getSourceFile(entryPoint);\n\n if (!sourceFile) {\n throw new Error(`Could not find source file: ${entryPoint}`);\n }\n\n // Extract Chrome API usage\n const chromeAPIs = this.extractChromeAPIs(sourceFile);\n\n // Extract dependencies\n const dependencies = this.extractDependencies(sourceFile);\n\n // Extract JSDoc description\n const description = this.extractDescription(sourceFile);\n\n // Extract components (for UI contexts)\n const components = this.isUIContext(contextType)\n ? this.extractComponents(sourceFile)\n : undefined;\n\n // Filter handlers for this context\n const contextHandlers = handlers.filter((h) => h.node === contextType);\n\n return {\n type: contextType,\n entryPoint,\n handlers: contextHandlers,\n chromeAPIs,\n externalAPIs: [], // Will be filled by integration analyzer\n ...(components ? { components } : {}),\n dependencies,\n ...(description ? { description } : {}),\n };\n }\n\n /**\n * Extract Chrome API usage from source file\n */\n private extractChromeAPIs(sourceFile: SourceFile): string[] {\n const apis = new Set<string>();\n\n sourceFile.forEachDescendant((node: Node) => {\n if (Node.isPropertyAccessExpression(node)) {\n const text = node.getText();\n this.detectAPIPattern(text, apis);\n }\n });\n\n return Array.from(apis).sort();\n }\n\n /**\n * Detect and extract API from text using various patterns\n */\n private detectAPIPattern(text: string, apis: Set<string>): void {\n // Match chrome.* API calls\n if (text.startsWith(\"chrome.\")) {\n const api = this.extractAPIFromPrefix(text, \"chrome\");\n if (api) apis.add(api);\n return;\n }\n\n // Match browser.* for Firefox compatibility\n if (text.startsWith(\"browser.\")) {\n const api = this.extractAPIFromPrefix(text, \"browser\");\n if (api) apis.add(api);\n return;\n }\n\n // Match bus.adapters.* pattern (framework abstraction)\n if (text.includes(\"bus.adapters.\")) {\n const api = this.extractAPIFromBusAdapter(text);\n if (api) apis.add(api);\n }\n }\n\n /**\n * Extract API namespace from chrome.* or browser.* prefix\n */\n private extractAPIFromPrefix(text: string, prefix: string): string | null {\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp — prefix is a fixed identifier (\"chrome\" / \"browser\"), not user input.\n const pattern = new RegExp(`^${prefix}\\\\.([^.(]+(?:\\\\.[^.(]+)?)`);\n const match = text.match(pattern);\n return match?.[1] || null;\n }\n\n /**\n * Extract API from bus.adapters.* pattern\n */\n private extractAPIFromBusAdapter(text: string): string | null {\n const match = text.match(/bus\\.adapters\\.([^.(]+)/);\n return match?.[1] || null;\n }\n\n /**\n * Extract import dependencies\n */\n private extractDependencies(sourceFile: SourceFile): string[] {\n const deps: string[] = [];\n\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const moduleSpecifier = importDecl.getModuleSpecifierValue();\n deps.push(moduleSpecifier);\n }\n\n return deps;\n }\n\n /**\n * Extract JSDoc description from file\n */\n private extractDescription(sourceFile: SourceFile): string | undefined {\n // Look for file-level JSDoc comment\n const firstStatement = sourceFile.getStatements()[0];\n if (!firstStatement) return undefined;\n\n const leadingComments = firstStatement.getLeadingCommentRanges();\n if (leadingComments.length === 0) return undefined;\n\n const firstComment = leadingComments[0];\n if (!firstComment) return undefined;\n\n const comment = firstComment.getText();\n\n // Extract description from JSDoc\n const descMatch = comment.match(/@description\\s+(.+?)(?:\\n|$)/s);\n if (descMatch?.[1]) {\n return descMatch[1].trim();\n }\n\n // Or just take the first line of the comment\n const lines = comment\n .split(\"\\n\")\n .map((l: string) => l.replace(/^[\\s*]+/, \"\").trim())\n .filter((l: string) => l && !l.startsWith(\"@\"));\n\n return lines[0] || undefined;\n }\n\n /**\n * Extract React/Preact components from source file\n */\n private extractComponents(sourceFile: SourceFile): ComponentInfo[] {\n const components: ComponentInfo[] = [];\n\n sourceFile.forEachDescendant((node: Node) => {\n this.extractFunctionComponent(node, sourceFile, components);\n this.extractArrowFunctionComponent(node, sourceFile, components);\n this.extractClassComponent(node, sourceFile, components);\n });\n\n return components;\n }\n\n /**\n * Extract function component from node if applicable\n */\n private extractFunctionComponent(\n node: Node,\n sourceFile: SourceFile,\n components: ComponentInfo[]\n ): void {\n if (!Node.isFunctionDeclaration(node)) return;\n\n const name = node.getName();\n if (!name || !this.looksLikeComponent(name, node)) return;\n\n const description = this.extractJSDocDescription(node);\n components.push({\n name,\n type: \"function\",\n filePath: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n props: this.extractProps(node),\n ...(description ? { description } : {}),\n });\n }\n\n /**\n * Extract arrow function component from node if applicable\n */\n private extractArrowFunctionComponent(\n node: Node,\n sourceFile: SourceFile,\n components: ComponentInfo[]\n ): void {\n if (!Node.isVariableDeclaration(node)) return;\n\n const name = node.getName();\n const initializer = node.getInitializer();\n\n if (!name || !initializer) return;\n if (!Node.isArrowFunction(initializer) && !Node.isFunctionExpression(initializer)) return;\n if (!this.looksLikeComponent(name, initializer)) return;\n\n const description = this.extractJSDocDescription(node);\n components.push({\n name,\n type: \"function\",\n filePath: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n props: this.extractProps(initializer),\n ...(description ? { description } : {}),\n });\n }\n\n /**\n * Extract class component from node if applicable\n */\n private extractClassComponent(\n node: Node,\n sourceFile: SourceFile,\n components: ComponentInfo[]\n ): void {\n if (!Node.isClassDeclaration(node)) return;\n\n const name = node.getName();\n if (!name || !this.looksLikeClassComponent(node)) return;\n\n const description = this.extractJSDocDescription(node);\n components.push({\n name,\n type: \"class\",\n filePath: sourceFile.getFilePath(),\n line: node.getStartLineNumber(),\n props: this.extractPropsFromClass(node),\n ...(description ? { description } : {}),\n });\n }\n\n /**\n * Check if a function looks like a React/Preact component\n */\n private looksLikeComponent(\n name: string,\n node: FunctionDeclaration | ArrowFunction | FunctionExpression\n ): boolean {\n // Component names should start with uppercase\n if (!/^[A-Z]/.test(name)) return false;\n\n // Check if it returns JSX\n const body = node.getBody();\n if (!body) return false;\n\n let hasJSX = false;\n\n if (Node.isBlock(body)) {\n body.forEachDescendant((child: Node) => {\n if (Node.isJsxElement(child) || Node.isJsxSelfClosingElement(child)) {\n hasJSX = true;\n }\n });\n } else if (Node.isJsxElement(body) || Node.isJsxSelfClosingElement(body)) {\n // Arrow function with implicit return\n hasJSX = true;\n }\n\n return hasJSX;\n }\n\n /**\n * Check if a class looks like a React component\n */\n private looksLikeClassComponent(node: ClassDeclaration): boolean {\n const extendedTypes = node.getExtends();\n if (!extendedTypes) return false;\n\n const extendsText = extendedTypes.getText();\n return /Component|PureComponent/.test(extendsText);\n }\n\n /**\n * Extract props from function component\n */\n private extractProps(node: FunctionDeclaration | ArrowFunction | FunctionExpression): string[] {\n const params = node.getParameters();\n if (params.length === 0) return [];\n\n const propsParam = params[0];\n if (!propsParam) return [];\n\n const type = propsParam.getType();\n\n const props: string[] = [];\n for (const prop of type.getProperties()) {\n props.push(prop.getName());\n }\n\n return props;\n }\n\n /**\n * Extract props from class component\n */\n private extractPropsFromClass(node: ClassDeclaration): string[] {\n const extendedTypes = node.getExtends();\n if (!extendedTypes) return [];\n\n const typeArgs = extendedTypes.getType().getTypeArguments();\n if (typeArgs.length === 0) return [];\n\n const propsType = typeArgs[0];\n if (!propsType) return [];\n\n const props: string[] = [];\n\n for (const prop of propsType.getProperties()) {\n props.push(prop.getName());\n }\n\n return props;\n }\n\n /**\n * Extract JSDoc description from node\n */\n private extractJSDocDescription(node: Node): string | undefined {\n if (!Node.isJSDocable(node)) return undefined;\n\n const jsDocs = node.getJsDocs();\n if (jsDocs.length === 0) return undefined;\n\n const firstDoc = jsDocs[0];\n if (!firstDoc) return undefined;\n\n const description = firstDoc.getDescription().trim();\n return description || undefined;\n }\n\n /**\n * Check if context is a UI context\n */\n private isUIContext(contextType: string): boolean {\n return [\"popup\", \"options\", \"devtools\"].includes(contextType);\n }\n}\n",
@@ -18,7 +18,7 @@
18
18
  "// Structurizr DSL generator\n\nimport { deriveDocumentId } from \"../../../../src/shared/lib/derive-document-id\";\nimport type {\n MeshClientHandleSnapshot,\n MeshClientPeerStateSnapshot,\n} from \"../../../../src/shared/lib/mesh-client\";\nimport type {\n ArchitectureAnalysis,\n ContextInfo,\n MessageFlow,\n MessageHandler,\n} from \"../../../analysis/src\";\nimport { collectSnapshotPeerIds } from \"../mesh-snapshot\";\nimport type {\n ComponentGroup,\n ComponentProperties,\n DeploymentNode,\n DynamicDiagram,\n ElementStyle,\n StructurizrDSLOptions as EnhancedDSLOptions,\n RelationshipStyle,\n} from \"../types/structurizr\";\nimport {\n DEFAULT_ELEMENT_STYLES,\n DEFAULT_RELATIONSHIP_STYLES,\n DEFAULT_THEME,\n MESH_OVERLAY_ELEMENT_STYLES,\n MESH_OVERLAY_RELATIONSHIP_STYLES,\n} from \"../types/structurizr\";\n\n// Re-export the enhanced type\nexport type StructurizrDSLOptions = EnhancedDSLOptions;\n\n/**\n * polly#114: polly's fixed mesh transport stack. A consumer calls\n * createMeshClient and the adapter chain is wired internally, so the\n * stack is a known template rendered whenever the project uses\n * $meshState — not something extracted from consumer code.\n */\nconst MESH_TRANSPORT_NODES = [\n {\n id: \"mesh_net_adapter\",\n name: \"MeshNetworkAdapter\",\n description: \"Signs and encrypts every mesh operation\",\n },\n {\n id: \"mesh_webrtc_adapter\",\n name: \"MeshWebRTCAdapter\",\n description: \"Peer-to-peer WebRTC data channels\",\n },\n {\n id: \"mesh_signaling_client\",\n name: \"MeshSignalingClient\",\n description: \"WebRTC offer/answer signalling\",\n },\n {\n id: \"mesh_signaling_endpoint\",\n name: \"Signalling endpoint\",\n description: \"The rendezvous server peers exchange WebRTC offers through\",\n },\n] as const;\n\n/**\n * polly#127: the four `peerDocumentStatus` buckets the overlay colours\n * by. Automerge reports `\"has\"`, `\"wants\"`, `\"unavailable\"`, and\n * `\"unknown\"`; an absent status (handle exists but the synchronizer\n * has not learned the peer's state yet) also folds into `\"unknown\"`.\n */\ntype SyncStatus = \"has\" | \"wants\" | \"unavailable\" | \"unknown\";\n\n/** Reduce a handle snapshot to its overlay status bucket. */\nfunction syncStatusOf(handle: MeshClientHandleSnapshot): SyncStatus {\n const status = handle.peerDocumentStatus;\n if (status === \"has\" || status === \"wants\" || status === \"unavailable\") {\n return status;\n }\n return \"unknown\";\n}\n\n/** A runtime peer node synthesised from the snapshot. */\ninterface OverlayPeer {\n /** DSL identifier (`peer_<id>`). */\n id: string;\n /** Raw peer id from the snapshot. */\n peerId: string;\n /** True for the peer whose snapshot this is. */\n isLocal: boolean;\n}\n\n/** A status-coloured replication edge from a peer to a mesh document. */\ninterface OverlayEdge {\n /** Source peer DSL identifier. */\n fromId: string;\n /** Fully-qualified target document reference. */\n toRef: string;\n /** The `peerDocumentStatus` bucket — drives the `sync:<status>` tag. */\n status: SyncStatus;\n /** Edge label, reflecting the #112 synchronizer diagnostics. */\n label: string;\n}\n\n/** A mesh document the snapshot references but static analysis missed. */\ninterface SnapshotOnlyDoc {\n /** DSL identifier (`mesh_doc_<id>`). */\n id: string;\n /** The resolved document id. */\n docId: string;\n}\n\n/** Everything the snapshot contributes to the diagram. */\ninterface OverlayPlan {\n peers: OverlayPeer[];\n edges: OverlayEdge[];\n snapshotOnlyDocs: SnapshotOnlyDoc[];\n}\n\nexport class StructurizrDSLGenerator {\n private analysis: ArchitectureAnalysis;\n private options: StructurizrDSLOptions;\n /** polly#127: memoised runtime-snapshot overlay plan. */\n private overlayPlanCache: OverlayPlan | undefined;\n\n constructor(analysis: ArchitectureAnalysis, options: StructurizrDSLOptions = {}) {\n this.analysis = analysis;\n this.options = {\n includeDynamicDiagrams: true,\n includeComponentDiagrams: true,\n componentDiagramContexts: [\"background\"],\n includeDefaultStyles: true,\n relationships: [],\n properties: {},\n groups: [],\n dynamicDiagrams: [],\n perspectives: {},\n deploymentNodes: [],\n ...options,\n styles: {\n theme: options.styles?.theme || DEFAULT_THEME,\n elements: {\n ...DEFAULT_ELEMENT_STYLES,\n // polly#127: overlay element styles only join the set when a\n // snapshot is supplied, keeping the static diagram unchanged.\n ...(options.snapshot ? MESH_OVERLAY_ELEMENT_STYLES : {}),\n ...options.styles?.elements,\n },\n relationships: {\n ...DEFAULT_RELATIONSHIP_STYLES,\n ...(options.snapshot ? MESH_OVERLAY_RELATIONSHIP_STYLES : {}),\n ...options.styles?.relationships,\n },\n },\n };\n }\n\n /**\n * Generate complete Structurizr DSL\n */\n generate(): string {\n const parts: string[] = [];\n\n parts.push(this.generateWorkspaceHeader());\n parts.push(this.generateModel());\n parts.push(this.generateViews());\n parts.push(this.generateWorkspaceFooter());\n\n return parts.join(\"\\n\\n\");\n }\n\n /**\n * Generate workspace header\n */\n private generateWorkspaceHeader(): string {\n const { name, description } = this.analysis.system;\n\n const parts = [`workspace \"${this.escape(name)}\" \"${this.escape(description || \"\")}\" {`];\n parts.push(\"\");\n parts.push(\" !identifiers hierarchical\");\n\n // Add ADRs if present\n if (this.analysis.adrs && this.analysis.adrs.adrs.length > 0) {\n parts.push(` !adrs ${this.analysis.adrs.directory}`);\n }\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Generate workspace footer\n */\n private generateWorkspaceFooter(): string {\n return \"}\";\n }\n\n /**\n * Generate model section\n */\n private generateModel(): string {\n const parts: string[] = [];\n\n parts.push(\" model {\");\n parts.push(this.generatePeople());\n\n // polly#127: runtime mesh peers synthesised from a captured snapshot\n const meshPeers = this.generateMeshPeers();\n if (meshPeers) parts.push(meshPeers);\n\n parts.push(this.generateExternalSystems());\n parts.push(this.generateMainSystem());\n\n // Add deployment environments if configured\n if (this.options.deploymentNodes && this.options.deploymentNodes.length > 0) {\n parts.push(this.generateDeploymentEnvironments());\n }\n\n parts.push(\" }\");\n\n return parts.join(\"\\n\\n\");\n }\n\n /**\n * Generate people/actors\n */\n private generatePeople(): string {\n return ` user = person \"User\" \"Extension user\"`;\n }\n\n /**\n * Generate external systems\n */\n private generateExternalSystems(): string {\n const parts: string[] = [];\n\n for (const integration of this.analysis.integrations) {\n if (integration.type === \"api\" || integration.type === \"websocket\") {\n let desc = integration.description || \"\";\n\n // Generate better description from API calls if available\n if (!desc && integration.calls && integration.calls.length > 0) {\n const endpoints = integration.calls\n .slice(0, 3)\n .map((c) => c.endpoint)\n .join(\", \");\n const methods = [...new Set(integration.calls.map((c) => c.method))].join(\", \");\n desc = `External API with endpoints: ${endpoints}. Methods: ${methods}`;\n }\n\n parts.push(\n ` ${this.toId(integration.name)} = softwareSystem \"${this.escape(integration.name)}\" \"${this.escape(desc)}\" {`\n );\n parts.push(\n ` tags \"External System\" \"${integration.type === \"websocket\" ? \"WebSocket\" : \"REST API\"}\"`\n );\n parts.push(\" }\");\n }\n }\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Generate main system (the extension)\n */\n private generateMainSystem(): string {\n const parts: string[] = [];\n\n parts.push(` extension = softwareSystem \"${this.escape(this.analysis.system.name)}\" {`);\n\n // Generate containers (contexts)\n for (const [contextType, contextInfo] of Object.entries(this.analysis.contexts)) {\n parts.push(this.generateContainer(contextType, contextInfo));\n }\n\n // polly#114: mesh/peer documents as first-class nodes\n const meshDocs = this.generateMeshDocuments();\n if (meshDocs) parts.push(meshDocs);\n\n // polly#127: documents the runtime snapshot references but static\n // analysis never found\n const snapshotDocs = this.generateSnapshotOnlyDocuments();\n if (snapshotDocs) parts.push(snapshotDocs);\n\n // polly#114: the transport stack mesh documents sync through\n const meshTransport = this.generateMeshTransport();\n if (meshTransport) parts.push(meshTransport);\n\n // Generate relationships between containers\n parts.push(this.generateContainerRelationships());\n\n parts.push(\" }\");\n\n return parts.join(\"\\n\\n\");\n }\n\n /**\n * Generate container (context)\n */\n private generateContainer(contextType: string, contextInfo: ContextInfo): string {\n const parts: string[] = [];\n\n const technology = this.getContextTechnology(contextType);\n const description = contextInfo.description || `${this.capitalize(contextType)} context`;\n\n parts.push(\n ` ${contextType} = container \"${this.capitalize(contextType)}\" \"${this.escape(description)}\" \"${technology}\" {`\n );\n\n // Generate components if enabled\n if (\n this.options.includeComponentDiagrams &&\n this.options.componentDiagramContexts?.includes(contextType)\n ) {\n parts.push(this.generateComponents(contextType, contextInfo));\n parts.push(\"\");\n parts.push(this.generateComponentRelationships(contextType, contextInfo));\n }\n\n parts.push(\" }\");\n\n return parts.join(\"\\n\");\n }\n\n /**\n * polly#114: emit each declared $meshState / $peerState document as a\n * first-class container — a distributed data store the contexts sync\n * against. Deduplicated by key: the same logical document may be\n * declared in more than one file (one copy per device).\n */\n private generateMeshDocuments(): string {\n const signals = this.analysis.meshOrPeerSignals ?? [];\n if (signals.length === 0) return \"\";\n\n const parts: string[] = [];\n const seen = new Set<string>();\n for (const sig of signals) {\n if (seen.has(sig.key)) continue;\n seen.add(sig.key);\n\n const kindLabel = sig.kind === \"mesh\" ? \"Mesh Document\" : \"Peer Document\";\n // polly#114: the access predicates gate the document; show them on\n // the label when declared (the runtime access set is not static).\n const access = sig.access\n ? ` · access read=${this.clip(sig.access.read)} write=${this.clip(sig.access.write)}`\n : \"\";\n const description = `${kindLabel} — deriveDocumentId('${sig.key}')${access}`;\n parts.push(\n ` ${this.meshDocId(sig.key)} = container \"${this.escape(sig.key)}\" \"${this.escape(description)}\" \"$${sig.kind}State\" {`\n );\n parts.push(` tags \"${kindLabel}\"`);\n parts.push(\" }\");\n }\n return parts.join(\"\\n\");\n }\n\n /** Stable DSL identifier for a mesh/peer document, namespaced away\n * from the context container ids. */\n private meshDocId(key: string): string {\n return `mesh_doc_${this.toId(key)}`;\n }\n\n /** Clip predicate text so a mesh-document label stays readable. */\n private clip(text: string, max = 32): string {\n return text.length > max ? `${text.slice(0, max - 1)}…` : text;\n }\n\n /**\n * Best-effort map from a source file to the context that owns it, used\n * to draw the edge from a context to the mesh document it declares.\n * With a single context every file belongs to it; otherwise the\n * context whose entry-point directory most specifically contains the\n * file wins. No match leaves the document a node with no edge.\n */\n private contextForFilePath(filePath: string): string | undefined {\n const contextKeys = Object.keys(this.analysis.contexts);\n if (contextKeys.length === 1) return contextKeys[0];\n let best: { context: string; length: number } | undefined;\n for (const [context, info] of Object.entries(this.analysis.contexts)) {\n const entry = info.entryPoint;\n if (!entry) continue;\n const dir = entry.slice(0, entry.lastIndexOf(\"/\") + 1);\n if (dir.length > 0 && filePath.includes(dir)) {\n if (!best || dir.length > best.length) best = { context, length: dir.length };\n }\n }\n return best?.context;\n }\n\n /**\n * Generate components within a container\n */\n private generateComponents(contextType: string, contextInfo: ContextInfo): string {\n const parts: string[] = [];\n\n // Build component definitions from handlers\n const componentDefs = this.buildComponentDefinitionsFromHandlers(contextInfo, contextType);\n\n // Apply grouping if configured, otherwise use automatic grouping\n this.addGroupedOrDirectComponents(parts, componentDefs);\n\n // Collect and generate service components\n const serviceComponents = this.collectServiceComponents(contextInfo, componentDefs);\n this.addServiceComponents(parts, serviceComponents);\n\n // Generate UI components\n this.addUIComponents(parts, contextInfo);\n\n // Add Chrome API components\n this.addChromeAPIComponents(parts, contextInfo);\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Build component definitions from message handlers\n */\n private buildComponentDefinitionsFromHandlers(\n contextInfo: ContextInfo,\n contextType: string\n ): Array<{\n id: string;\n name: string;\n description: string;\n tags: string[];\n properties: ComponentProperties;\n messageType: string;\n }> {\n const componentDefs: Array<{\n id: string;\n name: string;\n description: string;\n tags: string[];\n properties: ComponentProperties;\n messageType: string;\n }> = [];\n\n const handlersByType = new Map<string, MessageHandler[]>();\n for (const handler of contextInfo.handlers) {\n if (!handlersByType.has(handler.messageType)) {\n handlersByType.set(handler.messageType, []);\n }\n handlersByType.get(handler.messageType)?.push(handler);\n }\n\n for (const [messageType, handlers] of handlersByType) {\n const firstHandler = handlers[0];\n if (!firstHandler) continue;\n\n const isRest = firstHandler.handlerKind === \"rest\";\n const componentName = isRest ? messageType : this.toComponentName(messageType);\n const description = this.generateComponentDescription(messageType, firstHandler);\n const tags = this.getComponentTags(messageType, firstHandler);\n if (isRest) {\n tags.push(\"REST Endpoint\");\n }\n const properties = this.getComponentProperties(messageType, firstHandler, contextType);\n\n componentDefs.push({\n id: this.componentIdForMessageType(messageType, handlers),\n name: componentName,\n description,\n tags,\n properties,\n messageType,\n });\n }\n\n return componentDefs;\n }\n\n /**\n * Add grouped or direct components to parts\n */\n private addGroupedOrDirectComponents(\n parts: string[],\n componentDefs: Array<{\n id: string;\n name: string;\n description: string;\n tags: string[];\n properties: ComponentProperties;\n messageType: string;\n }>\n ): void {\n if (this.options.groups && this.options.groups.length > 0) {\n parts.push(...this.generateGroupedComponents(componentDefs, this.options.groups));\n } else {\n const autoGroups = this.generateAutomaticGroups(componentDefs);\n if (autoGroups.length > 0) {\n parts.push(...this.generateGroupedComponents(componentDefs, autoGroups));\n } else {\n for (const comp of componentDefs) {\n parts.push(this.generateComponentDefinition(comp, \" \"));\n }\n }\n }\n }\n\n /**\n * Collect service components from relationships\n */\n private collectServiceComponents(\n contextInfo: ContextInfo,\n componentDefs: Array<{ id: string }>\n ): Set<string> {\n const serviceComponents = new Set<string>();\n for (const handler of contextInfo.handlers) {\n if (handler.relationships) {\n for (const rel of handler.relationships) {\n const targetId = this.toId(rel.to);\n const isHandler = componentDefs.some((c) => c.id === targetId);\n if (!isHandler) {\n serviceComponents.add(rel.to);\n }\n }\n }\n }\n return serviceComponents;\n }\n\n /**\n * Add service component definitions\n */\n private addServiceComponents(parts: string[], serviceComponents: Set<string>): void {\n for (const serviceId of serviceComponents) {\n const serviceName = serviceId\n .split(\"_\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n\n parts.push(\n ` ${this.toId(serviceId)} = component \"${serviceName}\" \"Business logic service\" {`\n );\n parts.push(` tags \"Service\" \"Auto-detected\"`);\n parts.push(\" }\");\n }\n }\n\n /**\n * Add UI components\n */\n private addUIComponents(parts: string[], contextInfo: ContextInfo): void {\n if (!contextInfo.components) return;\n\n for (const comp of contextInfo.components) {\n parts.push(\n ` ${this.toId(comp.name)} = component \"${comp.name}\" \"${this.escape(comp.description || \"UI component\")}\" {`\n );\n parts.push(` tags \"UI Component\"`);\n parts.push(\" }\");\n }\n }\n\n /**\n * Add Chrome API components\n */\n private addChromeAPIComponents(parts: string[], contextInfo: ContextInfo): void {\n if (!contextInfo.chromeAPIs || contextInfo.chromeAPIs.length === 0) return;\n\n for (const api of contextInfo.chromeAPIs) {\n const apiId = this.toId(`chrome_${api}`);\n parts.push(\n ` ${apiId} = component \"Chrome ${this.capitalize(api)} API\" \"Browser API for ${api}\" {`\n );\n parts.push(` tags \"Chrome API\" \"External\"`);\n parts.push(\" }\");\n }\n }\n\n /**\n * Generate better component descriptions based on message type\n */\n private generateComponentDescription(messageType: string, _handler: MessageHandler): string {\n const type = messageType.toLowerCase();\n\n // Authentication related\n if (type.includes(\"login\")) {\n return \"Authenticates users and establishes sessions\";\n }\n if (type.includes(\"logout\")) {\n return \"Terminates user sessions and clears credentials\";\n }\n\n // CRUD operations\n if (type.includes(\"add\") || type.includes(\"create\")) {\n const entity = type.replace(/_(add|create)/, \"\").replace(/_/g, \" \");\n return `Creates new ${entity} items and persists to storage`;\n }\n if (type.includes(\"remove\") || type.includes(\"delete\")) {\n const entity = type.replace(/_(remove|delete)/, \"\").replace(/_/g, \" \");\n return `Removes ${entity} items from storage`;\n }\n if (type.includes(\"update\") || type.includes(\"toggle\")) {\n const entity = type.replace(/_(update|toggle)/, \"\").replace(/_/g, \" \");\n return `Updates ${entity} item state and syncs with storage`;\n }\n if (type.includes(\"clear\")) {\n const entity = type.replace(/_clear.*/, \"\").replace(/_/g, \" \");\n return `Clears all ${entity} items matching criteria`;\n }\n\n // Query operations\n if (type.includes(\"get\") || type.includes(\"fetch\") || type.includes(\"load\")) {\n const entity = type.replace(/_(get|fetch|load)/, \"\").replace(/_/g, \" \");\n return `Retrieves ${entity} data from storage`;\n }\n\n // Default\n return `Processes ${messageType} messages and coordinates business logic`;\n }\n\n /**\n * Determine appropriate tags for a component\n */\n private getComponentTags(messageType: string, _handler: MessageHandler): string[] {\n const tags: string[] = [\"Message Handler\"];\n const type = messageType.toLowerCase();\n\n // Add functional tags\n if (type.includes(\"login\") || type.includes(\"logout\") || type.includes(\"auth\")) {\n tags.push(\"Authentication\");\n } else if (\n type.includes(\"add\") ||\n type.includes(\"create\") ||\n type.includes(\"update\") ||\n type.includes(\"delete\") ||\n type.includes(\"remove\") ||\n type.includes(\"toggle\")\n ) {\n tags.push(\"CRUD\");\n } else if (type.includes(\"get\") || type.includes(\"fetch\") || type.includes(\"load\")) {\n tags.push(\"Query\");\n }\n\n // Add domain tags\n if (type.includes(\"user\")) {\n tags.push(\"User Management\");\n }\n if (type.includes(\"todo\")) {\n tags.push(\"Todo Management\");\n }\n if (type.includes(\"state\")) {\n tags.push(\"State Management\");\n }\n\n return tags;\n }\n\n /**\n * Get component properties for traceability\n */\n private getComponentProperties(\n messageType: string,\n handler: MessageHandler,\n contextType: string\n ): ComponentProperties {\n const properties: ComponentProperties = {};\n\n // Add source file and line number\n if (handler.location) {\n const relativePath = handler.location.file.replace(`${this.analysis.projectRoot}/`, \"\");\n properties[\"Source\"] = `${relativePath}:${handler.location.line}`;\n }\n\n // Add technology stack\n const technologies: string[] = [\"TypeScript\"];\n\n // Detect framework/library from file path or context\n if (handler.location?.file.includes(\"ws\") || contextType === \"server\") {\n technologies.push(\"WebSocket\");\n }\n if (handler.location?.file.includes(\"socket.io\")) {\n technologies.push(\"Socket.IO\");\n }\n if (handler.location?.file.includes(\"elysia\")) {\n technologies.push(\"Elysia\");\n }\n\n properties[\"Technology\"] = technologies.join(\", \");\n\n // Add pattern/type\n const type = messageType.toLowerCase();\n let pattern = \"Message Handler\";\n\n if (\n type.includes(\"query\") ||\n type.includes(\"get\") ||\n type.includes(\"fetch\") ||\n type.includes(\"load\")\n ) {\n pattern = \"Query Handler\";\n properties[\"Message Type\"] = \"Query\";\n } else if (\n type.includes(\"command\") ||\n type.includes(\"add\") ||\n type.includes(\"create\") ||\n type.includes(\"update\") ||\n type.includes(\"delete\") ||\n type.includes(\"remove\")\n ) {\n pattern = \"Command Handler\";\n properties[\"Message Type\"] = \"Command\";\n } else if (type.includes(\"auth\") || type.includes(\"login\") || type.includes(\"logout\")) {\n pattern = \"Authentication Handler\";\n properties[\"Message Type\"] = \"Authentication\";\n } else if (type.includes(\"subscribe\") || type.includes(\"watch\") || type.includes(\"listen\")) {\n pattern = \"Subscription Handler\";\n properties[\"Message Type\"] = \"Subscription\";\n }\n\n properties[\"Pattern\"] = pattern;\n\n // Merge with user-provided properties\n if (this.options.properties?.[messageType]) {\n Object.assign(properties, this.options.properties[messageType]);\n }\n\n return properties;\n }\n\n /**\n * Generate relationships between components within a container\n */\n private generateComponentRelationships(_contextType: string, contextInfo: ContextInfo): string {\n const parts: string[] = [];\n const handlersByType = this.buildHandlersByTypeMap(contextInfo.handlers);\n\n parts.push(...this.generateChromeAPIRelationships(contextInfo, handlersByType));\n parts.push(...this.generateUserProvidedRelationships());\n parts.push(...this.generateAutoDetectedRelationships(contextInfo));\n parts.push(...this.generateStateManagementRelationships(handlersByType));\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Build a map of handlers by message type\n */\n private buildHandlersByTypeMap(handlers: MessageHandler[]): Map<string, MessageHandler[]> {\n const handlersByType = new Map<string, MessageHandler[]>();\n\n for (const handler of handlers) {\n if (!handlersByType.has(handler.messageType)) {\n handlersByType.set(handler.messageType, []);\n }\n handlersByType.get(handler.messageType)?.push(handler);\n }\n\n return handlersByType;\n }\n\n /**\n * Generate Chrome API relationships\n */\n private generateChromeAPIRelationships(\n contextInfo: ContextInfo,\n handlersByType: Map<string, MessageHandler[]>\n ): string[] {\n const parts: string[] = [];\n\n if (!contextInfo.chromeAPIs || contextInfo.chromeAPIs.length === 0) {\n return parts;\n }\n\n for (const api of contextInfo.chromeAPIs) {\n const apiId = this.toId(`chrome_${api}`);\n\n for (const [messageType, handlers] of handlersByType) {\n const componentId = this.componentIdForMessageType(messageType, handlers);\n const description = this.inferChromeAPIDescription(api, messageType);\n parts.push(` ${componentId} -> ${apiId} \"${description}\"`);\n }\n }\n\n return parts;\n }\n\n /**\n * Infer relationship description based on Chrome API\n */\n private inferChromeAPIDescription(api: string, messageType: string): string {\n if (api === \"storage\") {\n return this.inferStorageDescription(messageType);\n }\n\n if (api === \"tabs\") {\n return \"Manages browser tabs\";\n }\n\n if (api === \"runtime\") {\n return \"Sends messages\";\n }\n\n return `Uses ${api}`;\n }\n\n /**\n * Infer storage description based on message type\n */\n private inferStorageDescription(messageType: string): string {\n const type = messageType.toLowerCase();\n\n if (type.includes(\"get\") || type.includes(\"load\")) {\n return \"Reads from storage\";\n }\n\n return \"Writes to storage\";\n }\n\n /**\n * Generate user-provided explicit relationships\n */\n private generateUserProvidedRelationships(): string[] {\n const parts: string[] = [];\n\n if (!this.options.relationships || this.options.relationships.length === 0) {\n return parts;\n }\n\n for (const rel of this.options.relationships) {\n const fromId = this.toId(rel.from);\n const toId = this.toId(rel.to);\n const description = this.escape(rel.description);\n const technology = rel.technology ? ` \"${this.escape(rel.technology)}\"` : \"\";\n\n parts.push(` ${fromId} -> ${toId} \"${description}\"${technology} {`);\n\n if (rel.tags && rel.tags.length > 0) {\n parts.push(` tags \"${rel.tags.join('\" \"')}\"`);\n }\n\n parts.push(\" }\");\n }\n\n return parts;\n }\n\n /**\n * Generate automatically detected relationships\n */\n private generateAutoDetectedRelationships(contextInfo: ContextInfo): string[] {\n const parts: string[] = [];\n\n for (const handler of contextInfo.handlers) {\n if (!handler.relationships || handler.relationships.length === 0) {\n continue;\n }\n\n for (const rel of handler.relationships) {\n const fromId = this.toId(rel.from);\n const toId = this.toId(rel.to);\n const description = this.escape(rel.description);\n const technology = rel.technology ? ` \"${this.escape(rel.technology)}\"` : \"\";\n\n parts.push(` ${fromId} -> ${toId} \"${description}\"${technology} {`);\n parts.push(` tags \"Auto-detected\"`);\n parts.push(\" }\");\n }\n }\n\n return parts;\n }\n\n /**\n * Generate state management relationships\n */\n private generateStateManagementRelationships(\n handlersByType: Map<string, MessageHandler[]>\n ): string[] {\n const parts: string[] = [];\n const { stateHandlers, queryHandlers } = this.classifyHandlersByType(handlersByType);\n\n if (stateHandlers.length === 0 || queryHandlers.length === 0) {\n return parts;\n }\n\n for (const queryHandler of queryHandlers) {\n for (const stateHandler of stateHandlers) {\n if (queryHandler !== stateHandler) {\n parts.push(` ${stateHandler} -> ${queryHandler} \"Updates state\" {`);\n parts.push(` tags \"Implicit\"`);\n parts.push(\" }\");\n }\n }\n }\n\n return parts;\n }\n\n /**\n * Classify handlers into state and query handlers\n */\n private classifyHandlersByType(handlersByType: Map<string, MessageHandler[]>): {\n stateHandlers: string[];\n queryHandlers: string[];\n } {\n const stateHandlers: string[] = [];\n const queryHandlers: string[] = [];\n\n for (const [messageType, handlers] of handlersByType) {\n const type = messageType.toLowerCase();\n const componentId = this.componentIdForMessageType(messageType, handlers);\n\n if (this.isStateHandler(type)) {\n stateHandlers.push(componentId);\n } else if (this.isQueryHandler(type)) {\n queryHandlers.push(componentId);\n }\n }\n\n return { stateHandlers, queryHandlers };\n }\n\n /**\n * Check if handler is a state mutation handler\n */\n private isStateHandler(type: string): boolean {\n return (\n type.includes(\"add\") ||\n type.includes(\"create\") ||\n type.includes(\"update\") ||\n type.includes(\"delete\") ||\n type.includes(\"remove\") ||\n type.includes(\"toggle\") ||\n type.includes(\"clear\") ||\n type.includes(\"login\") ||\n type.includes(\"logout\")\n );\n }\n\n /**\n * Check if handler is a query handler\n */\n private isQueryHandler(type: string): boolean {\n return type.includes(\"get\") || type.includes(\"fetch\") || type.includes(\"load\");\n }\n\n /**\n * Generate relationships between containers\n */\n private generateContainerRelationships(): string {\n const parts: string[] = [];\n\n parts.push(...this.generateUserRelationships());\n parts.push(...this.generateMessageFlowRelationships());\n parts.push(...this.generateExternalAPIRelationships());\n parts.push(...this.generateMeshRelationships());\n parts.push(...this.generateMeshTransportRelationships());\n parts.push(...this.generateMeshOverlayRelationships());\n\n return parts.join(\"\\n\");\n }\n\n /**\n * polly#114: edge from each context to the mesh / peer documents it\n * declares — the static replication surface.\n */\n private generateMeshRelationships(): string[] {\n const signals = this.analysis.meshOrPeerSignals ?? [];\n const parts: string[] = [];\n const seen = new Set<string>();\n for (const sig of signals) {\n const context = this.contextForFilePath(sig.filePath);\n if (!context) continue;\n const edgeKey = `${context}->${sig.key}`;\n if (seen.has(edgeKey)) continue;\n seen.add(edgeKey);\n parts.push(\n ` extension.${context} -> extension.${this.meshDocId(sig.key)} \"syncs ${this.escape(sig.key)}\"`\n );\n }\n return parts;\n }\n\n /** Whether the project declares mesh and/or peer documents. */\n private meshSignalKinds(): { mesh: boolean; peer: boolean } {\n const signals = this.analysis.meshOrPeerSignals ?? [];\n return {\n mesh: signals.some((s) => s.kind === \"mesh\"),\n peer: signals.some((s) => s.kind === \"peer\"),\n };\n }\n\n /**\n * polly#114: emit polly's mesh transport stack as a dependency chain.\n * Rendered whenever the project uses $meshState —\n * MeshNetworkAdapter → MeshWebRTCAdapter → MeshSignalingClient → the\n * signalling endpoint. $peerState adds the always-on relay as its own\n * hop. The chain is fixed: consumers call createMeshClient, which\n * wires the adapters internally.\n */\n private generateMeshTransport(): string {\n const { mesh, peer } = this.meshSignalKinds();\n if (!mesh && !peer) return \"\";\n\n const parts: string[] = [];\n if (mesh) {\n for (const node of MESH_TRANSPORT_NODES) {\n parts.push(\n ` ${node.id} = container \"${node.name}\" \"${this.escape(node.description)}\" \"Mesh Transport\" {`\n );\n parts.push(' tags \"Mesh Transport\"');\n parts.push(\" }\");\n }\n }\n if (peer) {\n parts.push(\n ` peer_relay = container \"Peer relay\" \"${this.escape(\"The always-on relay $peerState syncs through\")}\" \"Peer Transport\" {`\n );\n parts.push(' tags \"Mesh Transport\"');\n parts.push(\" }\");\n }\n return parts.join(\"\\n\");\n }\n\n /**\n * polly#114: chain the transport stack and route every mesh / peer\n * document through it.\n */\n private generateMeshTransportRelationships(): string[] {\n const { mesh, peer } = this.meshSignalKinds();\n const parts: string[] = [];\n\n if (mesh) {\n parts.push(' extension.mesh_net_adapter -> extension.mesh_webrtc_adapter \"wraps\"');\n parts.push(\n ' extension.mesh_webrtc_adapter -> extension.mesh_signaling_client \"negotiates via\"'\n );\n parts.push(\n ' extension.mesh_signaling_client -> extension.mesh_signaling_endpoint \"connects to\"'\n );\n }\n if (!mesh && !peer) return parts;\n\n const seen = new Set<string>();\n for (const sig of this.analysis.meshOrPeerSignals ?? []) {\n if (seen.has(sig.key)) continue;\n seen.add(sig.key);\n const target = sig.kind === \"mesh\" ? \"mesh_net_adapter\" : \"peer_relay\";\n parts.push(\n ` extension.${this.meshDocId(sig.key)} -> extension.${target} \"syncs through\"`\n );\n }\n return parts;\n }\n\n /**\n * polly#127: resolve the captured snapshot into the peers, edges, and\n * snapshot-only documents it contributes. Memoised — the result is\n * read by the model, system, and relationship passes.\n */\n private getOverlayPlan(): OverlayPlan | undefined {\n const snapshot = this.options.snapshot;\n if (!snapshot) return undefined;\n if (!this.overlayPlanCache) {\n this.overlayPlanCache = this.buildOverlayPlan(snapshot);\n }\n return this.overlayPlanCache;\n }\n\n /** Build the overlay plan from a validated snapshot. */\n private buildOverlayPlan(snapshot: MeshClientPeerStateSnapshot): OverlayPlan {\n const docIdToNode = this.buildDocIdNodeMap();\n const { peers, peerDslById } = this.buildOverlayPeers(snapshot);\n const { edges, snapshotOnlyDocs } = this.buildOverlayEdges(snapshot, docIdToNode, peerDslById);\n return { peers, edges, snapshotOnlyDocs };\n }\n\n /**\n * Resolve each static mesh/peer signal's logical key to its Automerge\n * document id, so a snapshot handle (keyed by document id) can be\n * matched back to the static `mesh_doc_*` node.\n */\n private buildDocIdNodeMap(): Map<string, string> {\n const docIdToNode = new Map<string, string>();\n const seenKeys = new Set<string>();\n for (const sig of this.analysis.meshOrPeerSignals ?? []) {\n if (seenKeys.has(sig.key)) continue;\n seenKeys.add(sig.key);\n docIdToNode.set(String(deriveDocumentId(sig.key)), this.meshDocId(sig.key));\n }\n return docIdToNode;\n }\n\n /** Synthesise one peer node per distinct peer id, with collision-safe\n * DSL identifiers. */\n private buildOverlayPeers(snapshot: MeshClientPeerStateSnapshot): {\n peers: OverlayPeer[];\n peerDslById: Map<string, string>;\n } {\n const peers: OverlayPeer[] = [];\n const peerDslById = new Map<string, string>();\n const usedPeerIds = new Set<string>();\n for (const peerId of collectSnapshotPeerIds(snapshot)) {\n const base = `peer_${this.toId(peerId)}`;\n let id = base;\n let suffix = 2;\n while (usedPeerIds.has(id)) id = `${base}_${suffix++}`;\n usedPeerIds.add(id);\n peerDslById.set(peerId, id);\n peers.push({ id, peerId, isLocal: peerId === snapshot.localPeerId });\n }\n return { peers, peerDslById };\n }\n\n /** Walk every peer's handles into status edges, collecting any\n * document the snapshot mentions that static analysis never found. */\n private buildOverlayEdges(\n snapshot: MeshClientPeerStateSnapshot,\n docIdToNode: Map<string, string>,\n peerDslById: Map<string, string>\n ): { edges: OverlayEdge[]; snapshotOnlyDocs: SnapshotOnlyDoc[] } {\n const edges: OverlayEdge[] = [];\n const snapshotOnlyDocs: SnapshotOnlyDoc[] = [];\n const snapshotOnlyById = new Map<string, string>();\n for (const peer of snapshot.peers) {\n const handles = peer.slot?.handles;\n const fromId = peerDslById.get(peer.peerId);\n if (!handles || !fromId) continue;\n for (const [docId, handle] of Object.entries(handles)) {\n const nodeId = this.resolveOverlayDocNode(\n docId,\n docIdToNode,\n snapshotOnlyById,\n snapshotOnlyDocs\n );\n const status = syncStatusOf(handle);\n edges.push({\n fromId,\n toRef: `extension.${nodeId}`,\n status,\n label: this.overlayEdgeLabel(status, handle),\n });\n }\n }\n return { edges, snapshotOnlyDocs };\n }\n\n /** Map a snapshot handle's document id onto a diagram node: a static\n * `mesh_doc_*` node when one matches, otherwise a snapshot-only node\n * registered on first sight. */\n private resolveOverlayDocNode(\n docId: string,\n docIdToNode: Map<string, string>,\n snapshotOnlyById: Map<string, string>,\n snapshotOnlyDocs: SnapshotOnlyDoc[]\n ): string {\n const staticNode = docIdToNode.get(docId);\n if (staticNode) return staticNode;\n const existing = snapshotOnlyById.get(docId);\n if (existing) return existing;\n const nodeId = `mesh_doc_${this.toId(docId)}`;\n snapshotOnlyById.set(docId, nodeId);\n snapshotOnlyDocs.push({ id: nodeId, docId });\n return nodeId;\n }\n\n /**\n * polly#127: the edge label carries the status and, when the #112\n * synchronizer diagnostics show a degraded handle, the fingerprint —\n * a missing docSynchronizer or a synchronizer that never learned the\n * peer.\n */\n private overlayEdgeLabel(status: SyncStatus, handle: MeshClientHandleSnapshot): string {\n if (!handle.docSynchronizerExists) return `${status} · no synchronizer`;\n if (handle.docSynchronizerKnowsPeer === false) return `${status} · peer not added`;\n return status;\n }\n\n /**\n * polly#127: emit each runtime peer as a `person` at model scope. The\n * local peer is tagged distinctly from the remote peers.\n */\n private generateMeshPeers(): string {\n const plan = this.getOverlayPlan();\n if (!plan || plan.peers.length === 0) return \"\";\n\n const parts: string[] = [];\n for (const peer of plan.peers) {\n const tag = peer.isLocal ? \"Local Mesh Peer\" : \"Mesh Peer\";\n const description = peer.isLocal ? \"Local mesh peer (this node)\" : \"Runtime mesh peer\";\n parts.push(` ${peer.id} = person \"${this.escape(peer.peerId)}\" \"${description}\" {`);\n parts.push(` tags \"${tag}\"`);\n parts.push(\" }\");\n }\n return parts.join(\"\\n\");\n }\n\n /**\n * polly#127: emit a container for each document the snapshot\n * references that the static analysis did not find — drawn distinctly\n * so it reads as runtime-only rather than dropped.\n */\n private generateSnapshotOnlyDocuments(): string {\n const plan = this.getOverlayPlan();\n if (!plan || plan.snapshotOnlyDocs.length === 0) return \"\";\n\n const parts: string[] = [];\n for (const doc of plan.snapshotOnlyDocs) {\n const description = `Mesh document seen only in the runtime snapshot — docId ${doc.docId}`;\n parts.push(\n ` ${doc.id} = container \"${this.escape(doc.docId)}\" \"${this.escape(description)}\" \"snapshot\" {`\n );\n parts.push(' tags \"Snapshot Document\"');\n parts.push(\" }\");\n }\n return parts.join(\"\\n\");\n }\n\n /**\n * polly#127: emit a `sync:<status>`-tagged edge from each peer to the\n * mesh document it holds a handle for, colour-coded by the live\n * `peerDocumentStatus`.\n */\n private generateMeshOverlayRelationships(): string[] {\n const plan = this.getOverlayPlan();\n if (!plan) return [];\n\n const parts: string[] = [];\n for (const edge of plan.edges) {\n parts.push(` ${edge.fromId} -> ${edge.toRef} \"${this.escape(edge.label)}\" {`);\n parts.push(` tags \"sync:${edge.status}\"`);\n parts.push(\" }\");\n }\n return parts;\n }\n\n /**\n * Generate user-to-UI relationships\n */\n private generateUserRelationships(): string[] {\n const parts: string[] = [];\n const uiContexts = [\"popup\", \"options\", \"devtools\"];\n\n for (const contextType of Object.keys(this.analysis.contexts)) {\n if (uiContexts.includes(contextType)) {\n parts.push(` user -> extension.${contextType} \"Uses\"`);\n }\n }\n\n return parts;\n }\n\n /**\n * Generate message flow relationships\n */\n private generateMessageFlowRelationships(): string[] {\n const parts: string[] = [];\n\n for (const flow of this.analysis.messageFlows) {\n const tech = `Sends ${flow.messageType}`;\n for (const to of flow.to) {\n parts.push(` extension.${flow.from} -> extension.${to} \"${tech}\"`);\n }\n }\n\n return parts;\n }\n\n /**\n * Generate external API relationships\n */\n private generateExternalAPIRelationships(): string[] {\n const parts: string[] = [];\n\n for (const integration of this.analysis.integrations) {\n if (integration.type !== \"api\" && integration.type !== \"websocket\") {\n continue;\n }\n\n // Find which contexts use this integration\n for (const [contextType, contextInfo] of Object.entries(this.analysis.contexts)) {\n const usesIntegration = contextInfo.externalAPIs.some((api) =>\n integration.calls?.some((call) => call.endpoint === api.endpoint)\n );\n\n if (usesIntegration) {\n const method = integration.type === \"websocket\" ? \"Connects to\" : \"Calls\";\n parts.push(\n ` extension.${contextType} -> ${this.toId(integration.name)} \"${method}\"`\n );\n }\n }\n }\n\n return parts;\n }\n\n /**\n * Generate views section\n */\n private generateViews(): string {\n const parts: string[] = [];\n\n parts.push(\" views {\");\n parts.push(this.generateSystemContextView());\n parts.push(this.generateContainerView());\n\n if (this.options.includeComponentDiagrams) {\n for (const contextType of this.options.componentDiagramContexts || []) {\n if (this.analysis.contexts[contextType]) {\n parts.push(this.generateComponentView(contextType));\n }\n }\n }\n\n if (this.options.includeDynamicDiagrams) {\n parts.push(this.generateDynamicViews());\n }\n\n // Add deployment views if configured\n if (this.options.deploymentNodes && this.options.deploymentNodes.length > 0) {\n parts.push(this.generateDeploymentViews());\n }\n\n parts.push(this.generateStyles());\n parts.push(\" }\");\n\n // Add documentation section if ADRs exist\n if (this.analysis.adrs && this.analysis.adrs.adrs.length > 0) {\n parts.push(\"\");\n parts.push(this.generateDocumentation());\n }\n\n return parts.join(\"\\n\\n\");\n }\n\n /**\n * Generate documentation section for ADRs\n */\n private generateDocumentation(): string {\n if (!this.analysis.adrs || this.analysis.adrs.adrs.length === 0) {\n return \"\";\n }\n\n const parts: string[] = [];\n parts.push(\" documentation {\");\n\n for (const adr of this.analysis.adrs.adrs) {\n parts.push(` decision \"${adr.id}\" {`);\n parts.push(` title \"${this.escape(adr.title)}\"`);\n parts.push(` status \"${adr.status}\"`);\n parts.push(` date \"${adr.date}\"`);\n parts.push(` content \"${this.escape(adr.context)}\"`);\n parts.push(\" }\");\n }\n\n parts.push(\" }\");\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Generate system context view\n */\n private generateSystemContextView(): string {\n return ` systemContext extension \"SystemContext\" {\n include *\n autoLayout lr\n }`;\n }\n\n /**\n * Generate container view\n */\n private generateContainerView(): string {\n return ` container extension \"Containers\" {\n include *\n autoLayout lr\n }`;\n }\n\n /**\n * Generate component view\n */\n private generateComponentView(contextType: string): string {\n return ` component extension.${contextType} \"Components_${this.capitalize(contextType)}\" {\n include *\n autoLayout tb\n }`;\n }\n\n /**\n * Generate dynamic views for message flows\n */\n private generateDynamicViews(): string {\n const parts: string[] = [];\n\n // Generate user-provided dynamic diagrams first\n if (this.options.dynamicDiagrams && this.options.dynamicDiagrams.length > 0) {\n for (const diagram of this.options.dynamicDiagrams) {\n parts.push(this.generateUserDynamicDiagram(diagram));\n }\n }\n\n // Auto-generate diagrams from handler relationships (Priority 5)\n const autoDiagrams = this.generateAutomaticDynamicDiagrams();\n if (autoDiagrams.length > 0) {\n parts.push(...autoDiagrams);\n }\n\n // Group flows by domain/feature for inter-context flow diagrams\n const flowsByDomain = this.groupFlowsByDomain(this.analysis.messageFlows);\n\n // Generate a dynamic view for each domain\n let count = 0;\n for (const [domain, flows] of flowsByDomain) {\n if (count >= 5) break; // Limit to avoid too many diagrams\n\n const viewName = `${this.capitalize(domain)} Flow`;\n parts.push(this.generateDynamicView(viewName, flows, domain));\n count++;\n }\n\n return parts.join(\"\\n\\n\");\n }\n\n /**\n * Group message flows by domain/feature\n */\n private groupFlowsByDomain(flows: MessageFlow[]): Map<string, MessageFlow[]> {\n const flowsByDomain = new Map<string, MessageFlow[]>();\n\n for (const flow of flows) {\n const domain = this.extractDomainFromMessageType(flow.messageType);\n\n if (!flowsByDomain.has(domain)) {\n flowsByDomain.set(domain, []);\n }\n flowsByDomain.get(domain)?.push(flow);\n }\n\n return flowsByDomain;\n }\n\n /**\n * Extract domain from message type\n */\n private extractDomainFromMessageType(messageType: string): string {\n const lowerType = messageType.toLowerCase();\n\n if (\n lowerType.includes(\"user\") ||\n lowerType.includes(\"login\") ||\n lowerType.includes(\"logout\") ||\n lowerType.includes(\"auth\")\n ) {\n return \"authentication\";\n }\n\n if (lowerType.includes(\"todo\")) {\n return \"todo\";\n }\n\n if (lowerType.includes(\"state\")) {\n return \"state\";\n }\n\n return \"general\";\n }\n\n /**\n * Automatically generate dynamic diagrams from handler relationships\n */\n private generateAutomaticDynamicDiagrams(): string[] {\n const handlersWithRelationships = this.collectHandlersWithRelationships();\n const handlerGroups = this.categorizeHandlers(handlersWithRelationships);\n return this.generateCategoryDiagrams(handlerGroups, handlersWithRelationships.length);\n }\n\n /**\n * Collect all handlers with relationships from all contexts\n */\n private collectHandlersWithRelationships(): Array<{\n handler: MessageHandler;\n contextType: string;\n contextName: string;\n }> {\n const handlers: Array<{\n handler: MessageHandler;\n contextType: string;\n contextName: string;\n }> = [];\n\n for (const [contextType, contextInfo] of Object.entries(this.analysis.contexts)) {\n for (const handler of contextInfo.handlers) {\n if (handler.relationships && handler.relationships.length > 0) {\n handlers.push({\n handler,\n contextType,\n contextName: this.toId(contextType),\n });\n }\n }\n }\n\n return handlers;\n }\n\n /**\n * Categorize handlers by message type patterns\n */\n private categorizeHandlers(\n handlers: Array<{ handler: MessageHandler; contextType: string; contextName: string }>\n ): Map<string, Array<{ handler: MessageHandler; contextType: string; contextName: string }>> {\n const groups = new Map<\n string,\n Array<{ handler: MessageHandler; contextType: string; contextName: string }>\n >();\n\n for (const hwc of handlers) {\n const category = this.inferHandlerCategory(hwc.handler.messageType);\n\n if (!groups.has(category)) {\n groups.set(category, []);\n }\n groups.get(category)?.push(hwc);\n }\n\n return groups;\n }\n\n /**\n * Infer handler category from message type\n */\n private inferHandlerCategory(messageType: string): string {\n const lowerType = messageType.toLowerCase();\n\n if (\n lowerType.includes(\"auth\") ||\n lowerType.includes(\"login\") ||\n lowerType.includes(\"logout\") ||\n lowerType.includes(\"verify\") ||\n lowerType.includes(\"register\")\n ) {\n return \"authentication\";\n }\n\n if (lowerType.includes(\"user\")) {\n return \"user\";\n }\n\n if (lowerType.includes(\"todo\")) {\n return \"todo\";\n }\n\n if (\n lowerType.includes(\"query\") ||\n lowerType.includes(\"get\") ||\n lowerType.includes(\"fetch\") ||\n lowerType.includes(\"list\")\n ) {\n return \"query\";\n }\n\n if (\n lowerType.includes(\"command\") ||\n lowerType.includes(\"create\") ||\n lowerType.includes(\"update\") ||\n lowerType.includes(\"delete\") ||\n lowerType.includes(\"add\") ||\n lowerType.includes(\"remove\")\n ) {\n return \"command\";\n }\n\n return \"general\";\n }\n\n /**\n * Generate diagrams based on categorized handlers\n */\n private generateCategoryDiagrams(\n handlerGroups: Map<\n string,\n Array<{ handler: MessageHandler; contextType: string; contextName: string }>\n >,\n totalHandlers: number\n ): string[] {\n if (totalHandlers <= 5 && handlerGroups.size <= 3) {\n return this.generateCombinedDiagram(handlerGroups);\n }\n return this.generateSeparateDiagrams(handlerGroups);\n }\n\n /**\n * Generate a single combined diagram for small handler sets\n */\n private generateCombinedDiagram(\n handlerGroups: Map<\n string,\n Array<{ handler: MessageHandler; contextType: string; contextName: string }>\n >\n ): string[] {\n const diagrams: string[] = [];\n const allHandlers = Array.from(handlerGroups.values()).flat();\n const diagram = this.generateHandlerFlowDiagram(\"general\", allHandlers);\n if (diagram) {\n diagrams.push(diagram);\n }\n return diagrams;\n }\n\n /**\n * Generate separate diagrams per category\n */\n private generateSeparateDiagrams(\n handlerGroups: Map<\n string,\n Array<{ handler: MessageHandler; contextType: string; contextName: string }>\n >\n ): string[] {\n const diagrams: string[] = [];\n const maxDiagrams = 5;\n let diagramCount = 0;\n\n for (const [category, handlers] of handlerGroups) {\n if (diagramCount >= maxDiagrams) break;\n if (handlers.length === 0) continue;\n\n const diagram = this.generateHandlerFlowDiagram(category, handlers);\n if (diagram) {\n diagrams.push(diagram);\n diagramCount++;\n }\n }\n\n return diagrams;\n }\n\n /**\n * Generate a single dynamic diagram for a handler category\n */\n private generateHandlerFlowDiagram(\n category: string,\n handlers: Array<{ handler: MessageHandler; contextType: string; contextName: string }>\n ): string | null {\n const parts: string[] = [];\n\n // Create title and description\n const title = this.getCategoryTitle(category);\n const description = this.getCategoryDescription(category);\n\n // Use container scope (most common for component flows)\n const scope = handlers[0]?.contextName ? `extension.${handlers[0].contextName}` : \"extension\";\n\n parts.push(` dynamic ${scope} \"${title}\" \"${description}\" {`);\n\n let stepCount = 0;\n\n // For each handler, show its flow through services\n for (const { handler, contextName: _contextName } of handlers) {\n const handlerComponentId = this.componentIdForMessageType(handler.messageType, [handler]);\n\n // Show flow for each relationship\n const relationships = handler.relationships || [];\n for (const rel of relationships) {\n const toComponent = this.toId(rel.to);\n\n // Add flow step\n parts.push(` ${handlerComponentId} -> ${toComponent} \"${rel.description}\"`);\n stepCount++;\n }\n }\n\n // Only generate diagram if there are actual flows\n if (stepCount === 0) {\n return null;\n }\n\n parts.push(\" autoLayout lr\");\n parts.push(\" }\");\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Get display title for category\n */\n private getCategoryTitle(category: string): string {\n const titles: Record<string, string> = {\n authentication: \"Authentication Flow\",\n user: \"User Management Flow\",\n todo: \"Todo Management Flow\",\n query: \"Query Processing Flow\",\n command: \"Command Processing Flow\",\n general: \"Message Processing Flow\",\n };\n return titles[category] || `${this.capitalize(category)} Flow`;\n }\n\n /**\n * Get description for category\n */\n private getCategoryDescription(category: string): string {\n const descriptions: Record<string, string> = {\n authentication: \"Shows authentication request processing and service interactions\",\n user: \"Shows user management operations and service dependencies\",\n todo: \"Shows todo item operations and service dependencies\",\n query: \"Shows read operations flow through query handlers and services\",\n command: \"Shows write operations flow through command handlers and services\",\n general: \"Shows message processing flow through handlers and services\",\n };\n return descriptions[category] || \"Shows message flow through system components\";\n }\n\n /**\n * Generate a user-provided dynamic diagram\n */\n private generateUserDynamicDiagram(diagram: DynamicDiagram): string {\n const parts: string[] = [];\n\n parts.push(\n ` dynamic ${diagram.scope || \"extension\"} \"${this.escape(diagram.title)}\" \"${this.escape(diagram.description || \"\")}\" {`\n );\n\n for (const step of diagram.steps) {\n const from = step.from;\n const to = step.to;\n const description = this.escape(step.description);\n\n parts.push(` ${from} -> ${to} \"${description}\"`);\n }\n\n parts.push(\" autoLayout lr\");\n parts.push(\" }\");\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Generate single dynamic view\n */\n private generateDynamicView(flowName: string, flows: MessageFlow[], domain: string): string {\n const parts: string[] = [];\n\n // Create a user-centric description\n const description = this.getDynamicViewDescription(domain);\n parts.push(` dynamic extension \"${flowName}\" \"${description}\" {`);\n\n // Add user interaction if this is a UI flow\n const uiContexts = [\"popup\", \"options\", \"devtools\"];\n const hasUIFlow = flows.some((f) => uiContexts.includes(f.from));\n\n if (hasUIFlow) {\n // Start with user interaction\n const firstFlow = flows.find((f) => uiContexts.includes(f.from));\n if (firstFlow) {\n const action = this.getUserAction(domain);\n parts.push(` user -> extension.${firstFlow.from} \"${action}\"`);\n }\n }\n\n // Generate message flows\n for (const flow of flows) {\n const messageDesc = this.getMessageDescription(flow.messageType);\n\n for (const to of flow.to) {\n parts.push(` extension.${flow.from} -> extension.${to} \"${messageDesc}\"`);\n }\n }\n\n parts.push(\" autoLayout lr\");\n parts.push(\" }\");\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Get description for dynamic view based on domain\n */\n private getDynamicViewDescription(domain: string): string {\n const descriptions: Record<string, string> = {\n authentication: \"User authentication and session management\",\n todo: \"Todo item creation, updates, and retrieval\",\n state: \"Application state synchronization\",\n general: \"Message flow through the system\",\n };\n return descriptions[domain] || descriptions[\"general\"] || \"Message flow through the system\";\n }\n\n /**\n * Get user action description for domain\n */\n private getUserAction(domain: string): string {\n const actions: Record<string, string> = {\n authentication: \"Initiates login\",\n todo: \"Manages todo items\",\n state: \"Requests state\",\n general: \"Interacts\",\n };\n return actions[domain] || actions[\"general\"] || \"Interacts\";\n }\n\n /**\n * Get message description based on type\n */\n private getMessageDescription(messageType: string): string {\n const type = messageType.toLowerCase();\n\n if (type.includes(\"login\")) return \"Authenticate user\";\n if (type.includes(\"logout\")) return \"End session\";\n if (type.includes(\"add\") || type.includes(\"create\")) return \"Create item\";\n if (type.includes(\"remove\") || type.includes(\"delete\")) return \"Delete item\";\n if (type.includes(\"update\") || type.includes(\"toggle\")) return \"Update item\";\n if (type.includes(\"get\") || type.includes(\"fetch\")) return \"Retrieve data\";\n if (type.includes(\"clear\")) return \"Clear items\";\n\n return messageType;\n }\n\n /**\n * Generate deployment environments (for model section)\n */\n private generateDeploymentEnvironments(): string {\n const parts: string[] = [];\n\n // Group deployment nodes by environment\n const nodesByEnvironment = new Map<string, DeploymentNode[]>();\n\n for (const node of this.options.deploymentNodes || []) {\n const env =\n node.tags?.find((tag) => tag.toLowerCase().includes(\"environment:\"))?.split(\":\")[1] ||\n \"Production\";\n\n if (!nodesByEnvironment.has(env)) {\n nodesByEnvironment.set(env, []);\n }\n nodesByEnvironment.get(env)?.push(node);\n }\n\n // Generate deployment environment for each environment\n for (const [envName, nodes] of nodesByEnvironment) {\n parts.push(` deploymentEnvironment \"${envName}\" {`);\n\n for (const node of nodes) {\n parts.push(this.generateDeploymentNode(node, \" \"));\n }\n\n parts.push(\" }\");\n }\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Generate a single deployment node\n */\n private generateDeploymentNode(node: DeploymentNode, indent: string): string {\n const parts: string[] = [];\n\n const description = node.description ? ` \"${this.escape(node.description)}\"` : \"\";\n const technology = node.technology ? ` \"${this.escape(node.technology)}\"` : \"\";\n\n parts.push(`${indent}deploymentNode \"${this.escape(node.name)}\"${description}${technology} {`);\n\n this.addDeploymentNodeTags(node, indent, parts);\n this.addDeploymentNodeProperties(node, indent, parts);\n this.addDeploymentNodeChildren(node, indent, parts);\n this.addDeploymentNodeContainerInstances(node, indent, parts);\n\n parts.push(`${indent}}`);\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Add tags to deployment node\n */\n private addDeploymentNodeTags(node: DeploymentNode, indent: string, parts: string[]): void {\n if (!node.tags || node.tags.length === 0) return;\n\n const filteredTags = node.tags.filter((tag) => !tag.toLowerCase().includes(\"environment:\"));\n if (filteredTags.length > 0) {\n parts.push(`${indent} tags \"${filteredTags.join('\" \"')}\"`);\n }\n }\n\n /**\n * Add properties to deployment node\n */\n private addDeploymentNodeProperties(node: DeploymentNode, indent: string, parts: string[]): void {\n if (!node.properties || Object.keys(node.properties).length === 0) return;\n\n parts.push(`${indent} properties {`);\n for (const [key, value] of Object.entries(node.properties)) {\n parts.push(`${indent} \"${this.escape(key)}\" \"${this.escape(value)}\"`);\n }\n parts.push(`${indent} }`);\n }\n\n /**\n * Add child deployment nodes\n */\n private addDeploymentNodeChildren(node: DeploymentNode, indent: string, parts: string[]): void {\n if (!node.children || node.children.length === 0) return;\n\n for (const child of node.children) {\n parts.push(this.generateDeploymentNode(child, `${indent} `));\n }\n }\n\n /**\n * Add container instances to deployment node\n */\n private addDeploymentNodeContainerInstances(\n node: DeploymentNode,\n indent: string,\n parts: string[]\n ): void {\n if (node.containerInstances && node.containerInstances.length > 0) {\n for (const containerInstance of node.containerInstances) {\n const instancesStr =\n containerInstance.instances && containerInstance.instances > 1\n ? ` ${containerInstance.instances}`\n : \"\";\n parts.push(\n `${indent} containerInstance extension.${containerInstance.container}${instancesStr}`\n );\n }\n } else if (!node.children || node.children.length === 0) {\n // If no container instances specified and no children, deploy all containers as fallback\n const contexts = Object.keys(this.analysis.contexts);\n for (const contextType of contexts) {\n parts.push(`${indent} containerInstance extension.${contextType}`);\n }\n }\n }\n\n /**\n * Generate deployment views\n */\n private generateDeploymentViews(): string {\n const parts: string[] = [];\n\n // Group deployment nodes by environment\n const nodesByEnvironment = new Map<string, DeploymentNode[]>();\n\n for (const node of this.options.deploymentNodes || []) {\n const env =\n node.tags?.find((tag) => tag.toLowerCase().includes(\"environment:\"))?.split(\":\")[1] ||\n \"Production\";\n\n if (!nodesByEnvironment.has(env)) {\n nodesByEnvironment.set(env, []);\n }\n nodesByEnvironment.get(env)?.push(node);\n }\n\n // Generate deployment view for each environment\n for (const [envName] of nodesByEnvironment) {\n const description = `${envName} environment deployment architecture`;\n\n parts.push(` deployment extension \"${envName}\" \"${description}\" {`);\n parts.push(\" include *\");\n parts.push(\" autoLayout lr\");\n parts.push(\" }\");\n }\n\n return parts.join(\"\\n\\n\");\n }\n\n /**\n * Generate styles\n */\n /**\n * Generate styles section with element and relationship styles\n */\n private generateStyles(): string {\n const parts: string[] = [];\n\n parts.push(\" styles {\");\n\n // Generate element styles\n if (this.options.includeDefaultStyles && this.options.styles?.elements) {\n for (const [tag, style] of Object.entries(this.options.styles.elements)) {\n parts.push(this.generateElementStyle(tag, style));\n }\n }\n\n // Generate relationship styles\n if (this.options.includeDefaultStyles && this.options.styles?.relationships) {\n for (const [tag, style] of Object.entries(this.options.styles.relationships)) {\n parts.push(this.generateRelationshipStyle(tag, style));\n }\n }\n\n // Add theme if specified\n if (this.options.styles?.theme) {\n parts.push(` theme ${this.options.styles.theme}`);\n }\n\n parts.push(\" }\");\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Generate style block for an element tag\n */\n private generateElementStyle(tag: string, style: ElementStyle): string {\n const parts: string[] = [];\n\n parts.push(` element \"${tag}\" {`);\n\n if (style.shape) {\n parts.push(` shape ${style.shape}`);\n }\n if (style.icon) {\n parts.push(` icon ${style.icon}`);\n }\n if (style.width) {\n parts.push(` width ${style.width}`);\n }\n if (style.height) {\n parts.push(` height ${style.height}`);\n }\n if (style.background) {\n parts.push(` background ${style.background}`);\n }\n if (style.color) {\n parts.push(` color ${style.color}`);\n }\n if (style.fontSize) {\n parts.push(` fontSize ${style.fontSize}`);\n }\n if (style.border) {\n parts.push(` border ${style.border}`);\n }\n if (style.opacity !== undefined) {\n parts.push(` opacity ${style.opacity}`);\n }\n if (style.metadata !== undefined) {\n parts.push(` metadata ${style.metadata}`);\n }\n if (style.description !== undefined) {\n parts.push(` description ${style.description}`);\n }\n\n parts.push(\" }\");\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Generate style block for a relationship tag\n */\n private generateRelationshipStyle(tag: string, style: RelationshipStyle): string {\n const parts: string[] = [];\n\n parts.push(` relationship \"${tag}\" {`);\n\n if (style.thickness) {\n parts.push(` thickness ${style.thickness}`);\n }\n if (style.color) {\n parts.push(` color ${style.color}`);\n }\n if (style.style) {\n parts.push(` style ${style.style}`);\n }\n if (style.routing) {\n parts.push(` routing ${style.routing}`);\n }\n if (style.fontSize) {\n parts.push(` fontSize ${style.fontSize}`);\n }\n if (style.width) {\n parts.push(` width ${style.width}`);\n }\n if (style.position) {\n parts.push(` position ${style.position}`);\n }\n if (style.opacity !== undefined) {\n parts.push(` opacity ${style.opacity}`);\n }\n\n parts.push(\" }\");\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Get technology label for context\n */\n private getContextTechnology(contextType: string): string {\n const technologies: Record<string, string> = {\n background: \"Service Worker / Background Script\",\n content: \"Content Script\",\n popup: \"Browser Action Popup\",\n devtools: \"DevTools Panel\",\n options: \"Options Page\",\n offscreen: \"Offscreen Document\",\n server: \"Server Application\",\n client: \"Client Application\",\n shared: \"Shared Library\",\n };\n\n return technologies[contextType] || \"Application Context\";\n }\n\n /**\n * Convert message type to component name\n */\n private toComponentName(messageType: string): string {\n return `${messageType\n .split(\"_\")\n .map((part) => this.capitalize(part.toLowerCase()))\n .join(\" \")} Handler`;\n }\n\n // Canonical component identifier for a (messageType, handlers) pair.\n // REST handlers keep the raw messageType (e.g. \"POST /todos\" -> \"post_todos\");\n // others use the \"Foo Handler\" form (-> \"foo_handler\"). Must stay in sync with\n // buildComponentDefinitionsFromHandlers, otherwise relationship sources/targets\n // refer to identifiers that the model never declares.\n private componentIdForMessageType(messageType: string, handlers: MessageHandler[]): string {\n const isRest = handlers[0]?.handlerKind === \"rest\";\n return this.toId(isRest ? messageType : this.toComponentName(messageType));\n }\n\n /**\n * Convert name to identifier\n */\n private toId(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"_\")\n .replace(/^_|_$/g, \"\");\n }\n\n /**\n * Capitalize first letter\n */\n private capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n /**\n * Escape string for DSL\n */\n /**\n * Generate a single component definition\n */\n private generateComponentDefinition(\n comp: {\n id: string;\n name: string;\n description: string;\n tags: string[];\n properties: ComponentProperties;\n },\n indent: string\n ): string {\n const parts: string[] = [];\n\n parts.push(\n `${indent}${comp.id} = component \"${comp.name}\" \"${this.escape(comp.description)}\" {`\n );\n\n if (comp.tags.length > 0) {\n parts.push(`${indent} tags \"${comp.tags.join('\" \"')}\"`);\n }\n\n if (comp.properties && Object.keys(comp.properties).length > 0) {\n parts.push(`${indent} properties {`);\n for (const [key, value] of Object.entries(comp.properties)) {\n if (value) {\n parts.push(`${indent} \"${key}\" \"${this.escape(value)}\"`);\n }\n }\n parts.push(`${indent} }`);\n }\n\n // Add perspectives if configured for this component\n if (this.options.perspectives?.[comp.id]) {\n const perspectives = this.options.perspectives[comp.id];\n if (perspectives) {\n parts.push(`${indent} perspectives {`);\n for (const perspective of perspectives) {\n parts.push(\n `${indent} \"${this.escape(perspective.name)}\" \"${this.escape(perspective.description)}\"`\n );\n }\n parts.push(`${indent} }`);\n }\n }\n\n parts.push(`${indent}}`);\n\n return parts.join(\"\\n\");\n }\n\n /**\n * Automatically generate groups based on message type patterns\n */\n private generateAutomaticGroups(\n componentDefs: Array<{\n id: string;\n name: string;\n description: string;\n tags: string[];\n properties: ComponentProperties;\n messageType: string;\n }>\n ): ComponentGroup[] {\n const groups: ComponentGroup[] = [];\n const assigned = new Set<string>();\n\n this.addAuthenticationGroup(componentDefs, groups, assigned);\n this.addSubscriptionGroup(componentDefs, groups, assigned);\n this.addEntityBasedGroups(componentDefs, groups, assigned);\n this.addQueryCommandGroups(componentDefs, groups, assigned);\n\n return this.shouldReturnGroups(groups, assigned.size, componentDefs.length) ? groups : [];\n }\n\n /**\n * Add authentication handlers group\n */\n private addAuthenticationGroup(\n componentDefs: Array<{ id: string; messageType: string }>,\n groups: ComponentGroup[],\n assigned: Set<string>\n ): void {\n const authHandlers = componentDefs.filter((comp) => {\n const type = comp.messageType.toLowerCase();\n return (\n type.includes(\"login\") ||\n type.includes(\"logout\") ||\n type.includes(\"auth\") ||\n type.includes(\"verify\") ||\n type.includes(\"register\") ||\n type.includes(\"signup\")\n );\n });\n\n if (authHandlers.length > 0) {\n groups.push({\n name: \"Authentication\",\n components: authHandlers.map((c) => c.id),\n });\n for (const h of authHandlers) {\n assigned.add(h.id);\n }\n }\n }\n\n /**\n * Add subscription handlers group\n */\n private addSubscriptionGroup(\n componentDefs: Array<{ id: string; messageType: string }>,\n groups: ComponentGroup[],\n assigned: Set<string>\n ): void {\n const subscriptionHandlers = componentDefs.filter((comp) => {\n const type = comp.messageType.toLowerCase();\n return type.includes(\"subscribe\") || type.includes(\"unsubscribe\");\n });\n\n if (subscriptionHandlers.length > 0) {\n groups.push({\n name: \"Subscriptions\",\n components: subscriptionHandlers.map((c) => c.id),\n });\n for (const h of subscriptionHandlers) {\n assigned.add(h.id);\n }\n }\n }\n\n /**\n * Add entity-based groups\n */\n private addEntityBasedGroups(\n componentDefs: Array<{ id: string; messageType: string }>,\n groups: ComponentGroup[],\n assigned: Set<string>\n ): void {\n const entityGroups = this.collectEntityGroups(componentDefs, assigned);\n this.addValidEntityGroups(entityGroups, groups, assigned);\n }\n\n /**\n * Collect components into entity groups\n */\n private collectEntityGroups(\n componentDefs: Array<{ id: string; messageType: string }>,\n assigned: Set<string>\n ): Map<string, string[]> {\n const entityGroups = new Map<string, string[]>();\n\n for (const comp of componentDefs) {\n if (assigned.has(comp.id)) continue;\n\n const type = comp.messageType.toLowerCase();\n\n // Skip WebSocket lifecycle handlers\n if (type === \"connection\" || type === \"message\" || type === \"close\" || type === \"error\") {\n continue;\n }\n\n const entity = this.extractEntityName(type);\n\n if (entity) {\n if (!entityGroups.has(entity)) {\n entityGroups.set(entity, []);\n }\n entityGroups.get(entity)?.push(comp.id);\n assigned.add(comp.id);\n }\n }\n\n return entityGroups;\n }\n\n /**\n * Add valid entity groups (with at least 2 components)\n */\n private addValidEntityGroups(\n entityGroups: Map<string, string[]>,\n groups: ComponentGroup[],\n assigned: Set<string>\n ): void {\n for (const [entity, componentIds] of entityGroups) {\n if (componentIds.length >= 2) {\n const entityName = entity.charAt(0).toUpperCase() + entity.slice(1);\n groups.push({\n name: `${entityName} Management`,\n components: componentIds,\n });\n } else {\n // Remove from assigned if not enough for a group\n for (const id of componentIds) {\n assigned.delete(id);\n }\n }\n }\n }\n\n /**\n * Extract entity name from message type\n */\n private extractEntityName(type: string): string | null {\n // Pattern 1: entity_action (e.g., \"user_add\", \"todo_remove\")\n const underscoreMatch = type.match(\n /^([a-z]+)_(add|create|update|delete|remove|get|fetch|load|list|query)/\n );\n if (underscoreMatch) {\n return underscoreMatch[1] ?? null;\n }\n\n // Pattern 2: actionEntity (e.g., \"addUser\", \"removeTask\")\n const camelMatch = type.match(\n /(add|create|update|delete|remove|get|fetch|load|list|query)([a-z]+)/i\n );\n if (camelMatch) {\n return camelMatch[2]?.toLowerCase() ?? null;\n }\n\n // Pattern 3: plain entity name (e.g., \"user\", \"todo\")\n if (type.match(/^[a-z]+$/)) {\n return type;\n }\n\n return null;\n }\n\n /**\n * Add query and command handler groups\n */\n private addQueryCommandGroups(\n componentDefs: Array<{ id: string; messageType: string }>,\n groups: ComponentGroup[],\n assigned: Set<string>\n ): void {\n const queryHandlers = componentDefs.filter((comp) => {\n if (assigned.has(comp.id)) return false;\n const type = comp.messageType.toLowerCase();\n return (\n type.includes(\"query\") ||\n type.includes(\"get\") ||\n type.includes(\"fetch\") ||\n type.includes(\"load\") ||\n type.includes(\"list\") ||\n type.includes(\"read\")\n );\n });\n\n const commandHandlers = componentDefs.filter((comp) => {\n if (assigned.has(comp.id)) return false;\n const type = comp.messageType.toLowerCase();\n return (\n type.includes(\"command\") ||\n type.includes(\"add\") ||\n type.includes(\"create\") ||\n type.includes(\"update\") ||\n type.includes(\"delete\") ||\n type.includes(\"remove\") ||\n type.includes(\"set\") ||\n type.includes(\"clear\")\n );\n });\n\n if (queryHandlers.length >= 2) {\n groups.push({\n name: \"Query Handlers\",\n components: queryHandlers.map((c) => c.id),\n });\n for (const h of queryHandlers) {\n assigned.add(h.id);\n }\n }\n\n if (commandHandlers.length >= 2) {\n groups.push({\n name: \"Command Handlers\",\n components: commandHandlers.map((c) => c.id),\n });\n for (const h of commandHandlers) {\n assigned.add(h.id);\n }\n }\n }\n\n /**\n * Determine if groups should be returned based on coverage\n */\n private shouldReturnGroups(\n groups: ComponentGroup[],\n groupedCount: number,\n totalCount: number\n ): boolean {\n // Return groups if at least 50% are grouped OR we have at least 2 groups\n return groupedCount >= totalCount * 0.5 || groups.length >= 2;\n }\n\n /**\n * Generate components organized into groups\n */\n private generateGroupedComponents(\n componentDefs: Array<{\n id: string;\n name: string;\n description: string;\n tags: string[];\n properties: ComponentProperties;\n messageType: string;\n }>,\n groups: ComponentGroup[]\n ): string[] {\n const parts: string[] = [];\n const assignedComponents = new Set<string>();\n\n for (const group of groups) {\n const groupComponents = componentDefs.filter((comp) => group.components.includes(comp.id));\n\n if (groupComponents.length === 0) continue;\n\n parts.push(` group \"${this.escape(group.name)}\" {`);\n\n for (const comp of groupComponents) {\n parts.push(this.generateComponentDefinition(comp, \" \"));\n assignedComponents.add(comp.id);\n }\n\n parts.push(\" }\");\n parts.push(\"\");\n }\n\n // Add ungrouped components\n const ungroupedComponents = componentDefs.filter((comp) => !assignedComponents.has(comp.id));\n\n for (const comp of ungroupedComponents) {\n parts.push(this.generateComponentDefinition(comp, \" \"));\n }\n\n return parts;\n }\n\n private escape(str: string): string {\n return str.replace(/\"/g, '\\\\\"');\n }\n}\n\n/**\n * Generate Structurizr DSL from architecture analysis\n */\nexport function generateStructurizrDSL(\n analysis: ArchitectureAnalysis,\n options?: StructurizrDSLOptions\n): string {\n const generator = new StructurizrDSLGenerator(analysis, options);\n return generator.generate();\n}\n",
19
19
  "// Export static site using Structurizr CLI\n// Uses Docker to run Structurizr CLI for generating a static HTML site\n\nimport { spawn } from \"node:child_process\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nexport interface ExportOptions {\n /** DSL file path */\n dslPath: string;\n\n /** Output directory for static site */\n outputDir: string;\n\n /** Timeout in milliseconds */\n timeout?: number;\n\n /** Callback for progress updates */\n onProgress?: (message: string) => void;\n}\n\nexport interface ExportResult {\n success: boolean;\n siteDir: string;\n error?: string;\n}\n\nexport class DiagramExporter {\n // The consolidated `structurizr/structurizr` image, not the deprecated\n // `structurizr/cli`: only the successor implements the `static` export\n // format. `structurizr/cli` accepts `-format static` but silently writes\n // nothing and still exits 0 — the \"claims success, produces an empty\n // docs/site\" bug this image switch fixes.\n private static readonly DOCKER_IMAGE = \"structurizr/structurizr:latest\";\n private static readonly DEFAULT_TIMEOUT = 120000; // 2 minutes\n\n /**\n * Export static site using Structurizr CLI via Docker\n */\n async export(options: ExportOptions): Promise<ExportResult> {\n const { dslPath, outputDir, timeout = DiagramExporter.DEFAULT_TIMEOUT } = options;\n\n // Validate DSL file exists\n if (!fs.existsSync(dslPath)) {\n return {\n success: false,\n siteDir: \"\",\n error: `DSL file not found: ${dslPath}`,\n };\n }\n\n // Ensure output directory exists\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n // Check if Docker is available\n const dockerAvailable = await this.isDockerAvailable();\n if (!dockerAvailable) {\n return {\n success: false,\n siteDir: \"\",\n error: \"Docker is not available. Please install Docker to export the site.\",\n };\n }\n\n // Pull image if needed\n options.onProgress?.(\"Checking Structurizr CLI image...\");\n const hasImage = await this.hasImage();\n if (!hasImage) {\n options.onProgress?.(\"Pulling Structurizr CLI image (this may take a moment)...\");\n await this.pullImage((line) => options.onProgress?.(line));\n }\n\n // Export static site\n options.onProgress?.(\"Generating static site...\");\n\n try {\n await this.exportStaticSite(dslPath, outputDir, timeout);\n options.onProgress?.(\"✓ Static site generated successfully\");\n\n return {\n success: true,\n siteDir: outputDir,\n };\n } catch (error) {\n return {\n success: false,\n siteDir: \"\",\n error: `Failed to export static site: ${error}`,\n };\n }\n }\n\n /**\n * Export static HTML site using Structurizr CLI\n */\n private async exportStaticSite(\n dslPath: string,\n outputDir: string,\n timeout: number\n ): Promise<void> {\n const dslDir = path.dirname(dslPath);\n const dslFileName = path.basename(dslPath);\n\n // Docker volume mounts\n const workspaceMount = `${dslDir}:/usr/local/structurizr`;\n const outputMount = `${outputDir}:/output`;\n\n // Structurizr CLI command for static site export\n const args = [\n \"run\",\n \"--rm\",\n \"-v\",\n workspaceMount,\n \"-v\",\n outputMount,\n DiagramExporter.DOCKER_IMAGE,\n \"export\",\n \"-workspace\",\n `/usr/local/structurizr/${dslFileName}`,\n \"-f\",\n \"static\",\n \"-o\",\n \"/output\",\n ];\n\n await this.runDocker(args, timeout);\n }\n\n /**\n * Check if Docker is available\n */\n async isDockerAvailable(): Promise<boolean> {\n try {\n await this.runCommand(\"docker\", [\"--version\"], 5000);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Check if Structurizr CLI image is available\n */\n async hasImage(): Promise<boolean> {\n try {\n const output = await this.runCommand(\n \"docker\",\n [\"images\", \"-q\", DiagramExporter.DOCKER_IMAGE],\n 5000\n );\n return output.trim().length > 0;\n } catch {\n return false;\n }\n }\n\n /**\n * Pull Structurizr CLI image\n */\n async pullImage(onProgress?: (line: string) => void): Promise<void> {\n return new Promise((resolve, reject) => {\n const proc = spawn(\"docker\", [\"pull\", DiagramExporter.DOCKER_IMAGE]);\n\n proc.stdout.on(\"data\", (data) => {\n onProgress?.(data.toString().trim());\n });\n\n proc.stderr.on(\"data\", (data) => {\n onProgress?.(data.toString().trim());\n });\n\n proc.on(\"close\", (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`Failed to pull image, exit code: ${code}`));\n }\n });\n\n proc.on(\"error\", (error) => {\n reject(error);\n });\n });\n }\n\n /**\n * Run Docker command\n */\n private async runDocker(args: string[], timeout: number): Promise<string> {\n return this.runCommand(\"docker\", args, timeout);\n }\n\n /**\n * Run shell command\n */\n private async runCommand(command: string, args: string[], timeout: number): Promise<string> {\n return new Promise((resolve, reject) => {\n const proc = spawn(command, args);\n let stdout = \"\";\n let stderr = \"\";\n\n const timer = setTimeout(() => {\n proc.kill();\n reject(new Error(`Command timed out after ${timeout}ms`));\n }, timeout);\n\n proc.stdout.on(\"data\", (data) => {\n stdout += data.toString();\n });\n\n proc.stderr.on(\"data\", (data) => {\n stderr += data.toString();\n });\n\n proc.on(\"close\", (code) => {\n clearTimeout(timer);\n if (code === 0) {\n resolve(stdout);\n } else {\n reject(new Error(`Command failed with exit code ${code}: ${stderr}`));\n }\n });\n\n proc.on(\"error\", (error) => {\n clearTimeout(timer);\n reject(error);\n });\n });\n }\n}\n\n/**\n * Export diagrams\n */\nexport async function exportDiagrams(options: ExportOptions): Promise<ExportResult> {\n const exporter = new DiagramExporter();\n return exporter.export(options);\n}\n"
20
20
  ],
21
- "mappings": "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",
22
- "debugId": "BC2B5CC50AAEB9A464756E2164756E21",
21
+ "mappings": "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",
22
+ "debugId": "FB3F999DCFFB1CAD64756E2164756E21",
23
23
  "names": []
24
24
  }